<?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>150951</bug_id>
          
          <creation_ts>2015-11-05 14:46:39 -0800</creation_ts>
          <short_desc>[WK2][SpeculativeRevalidation] Save to disk cache relationship between resources</short_desc>
          <delta_ts>2015-11-09 04:14:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>150856</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>barraclough</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>koivisto</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1139772</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-05 14:46:39 -0800</bug_when>
    <thetext>This patch is a first step towards speculative revalidation support in the WebKit network cache. It maps sub resources to the main resource that caused them to be requested. We then write this information to the network cache.

&lt;rdar://problem/23092196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139792</commentid>
    <comment_count>1</comment_count>
      <attachid>264892</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-05 15:08:45 -0800</bug_when>
    <thetext>Created attachment 264892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139797</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-05 15:11:37 -0800</bug_when>
    <thetext>Attachment 264892 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoader.cpp:61:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:346:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:103:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139798</commentid>
    <comment_count>3</comment_count>
      <attachid>264893</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-05 15:12:19 -0800</bug_when>
    <thetext>Created attachment 264893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139802</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-05 15:14:53 -0800</bug_when>
    <thetext>Attachment 264893 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoader.cpp:61:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:346:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:103:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139804</commentid>
    <comment_count>5</comment_count>
      <attachid>264895</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-05 15:15:00 -0800</bug_when>
    <thetext>Created attachment 264895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139807</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-05 15:17:55 -0800</bug_when>
    <thetext>Attachment 264895 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoader.cpp:61:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:346:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:103:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139902</commentid>
    <comment_count>7</comment_count>
      <attachid>264895</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-06 00:05:00 -0800</bug_when>
    <thetext>Comment on attachment 264895
Patch

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

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheKey.h:93
&gt; +        return *reinterpret_cast&lt;const unsigned*&gt;(key.hash().data());

It might be nice to have a static_assert that key.hash().hashSize &gt;= sizeof(unsigned).
Also, do you need to call computeHash?

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoader.cpp:91
&gt; +        m_completionHandler();

Is the completion handler always called on the main thread?  I think it shouldn&apos;t be if we are going to call it and write to the disk before requesting a main resource.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoader.cpp:122
&gt; +    if (isMainResource) {
&gt; +        // Mark previous load in this frame as completed if necessary.
&gt; +        if (auto* pendingFrameLoad = m_pendingFrameLoads.get(frameKey))
&gt; +            pendingFrameLoad-&gt;markAsCompleted();

This could increase the time between requesting and receiving a main resource, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139981</commentid>
    <comment_count>8</comment_count>
      <attachid>264895</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-06 09:12:22 -0800</bug_when>
    <thetext>Comment on attachment 264895
Patch

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

&gt;&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheKey.h:93
&gt;&gt; +        return *reinterpret_cast&lt;const unsigned*&gt;(key.hash().data());
&gt; 
&gt; It might be nice to have a static_assert that key.hash().hashSize &gt;= sizeof(unsigned).
&gt; Also, do you need to call computeHash?

The static_assert() makes sense, I&apos;ll add it.

Regarding the other comment, I don&apos;t need to call computeHash() because key.hash() already returns the result of calling computeHash() (see m_hash init in Key constructor).

&gt;&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoader.cpp:91
&gt;&gt; +        m_completionHandler();
&gt; 
&gt; Is the completion handler always called on the main thread?  I think it shouldn&apos;t be if we are going to call it and write to the disk before requesting a main resource.

Yes, this is always called on the main thread. That said, I am not sure I see the problem. This will end up:
1. Removing this PendingFrameLoad object from the HashMap.
2. Calling Storage::store() which will do the i/o write *in a background priority thread*.
3. Destroy the PendingFrameLoad object.

&gt;&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoader.cpp:122
&gt;&gt; +            pendingFrameLoad-&gt;markAsCompleted();
&gt; 
&gt; This could increase the time between requesting and receiving a main resource, right?

I don&apos;t see why. The only expensive thing calling markAsCompleted() will do is the i/o write but this will happen in a background priority thread.

Resource retrievals happen in a high priority thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139984</commentid>
    <comment_count>9</comment_count>
      <attachid>264895</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-06 09:37:56 -0800</bug_when>
    <thetext>Comment on attachment 264895
Patch

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

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCache.h:92
&gt; +        bool enableEfficacyLogging;

These should have { false } after them.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCache.h:94
&gt; +        bool enableNetworkCacheSpeculativeRevalidation;

These should have { false } after them.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoader.cpp:50
&gt; +static inline Key makeSubResourcesKey(const Key&amp; resourceKey)

The word is “subresource” so it should not have a capital “R”.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoader.cpp:64
&gt; +    void registerSubResource(const Key&amp; subResourceKey)

The word is “subresource” so it should not have a capital “R”.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoader.cpp:70
&gt; +    Optional&lt;Storage::Record&gt; encodeAsSubResourcesRecord()

The word is “subresource” so it should not have a capital “R”.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoader.cpp:76
&gt; +        Vector&lt;Key&gt; subResourceKeys;

The word is “subresource” so it should not have a capital “R”.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoader.cpp:86
&gt; +        SubResourcesEntry subresourceEntry(subresourcesStorageKey, subResourceKeys);
&gt; +        return subresourceEntry.encodeAsStorageRecord();

Maybe write this without a local variable?

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoader.cpp:96
&gt; +    HashSet&lt;Key&gt; m_subResourceKeys;

The word is “subresource” so it should not have a capital “R”.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheSubResourcesEntry.cpp:51
&gt; +    std::unique_ptr&lt;SubResourcesEntry&gt; entry(new SubResourcesEntry(storageEntry));

Should use make_unique here, not new. Also use auto to avoid repeating the type twice.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheSubResourcesEntry.h:36
&gt; +class SubResourcesEntry {

The word is “subresources” and so it should not have a capital “R”.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheSubResourcesEntry.h:39
&gt; +    SubResourcesEntry(const Key&amp;, const Vector&lt;Key&gt;&amp; subresourceKeys);

Should take a Vector&lt;Key&gt;&amp;&amp; and move it in.

&gt; Source/WebKit2/NetworkProcess/cocoa/NetworkProcessCocoa.mm:107
&gt; +                RetainPtr&lt;NSURLCache&gt; urlCache(adoptNS([[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]));
&gt; +                [NSURLCache setSharedURLCache:urlCache.get()];

I think this would be nicer without the local variable. Or could use auto; no need to say NSURLCache twice or say RetainPtr explicitly in either case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139992</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-06 10:00:54 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; 2. Calling Storage::store() which will do the i/o write *in a background
&gt; priority thread*.
Ok, I see this in NetworkCacheStorage.cpp now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139993</commentid>
    <comment_count>11</comment_count>
      <attachid>264895</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-06 10:14:55 -0800</bug_when>
    <thetext>Comment on attachment 264895
Patch

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

&gt;&gt; Source/WebKit2/NetworkProcess/cache/NetworkCache.h:92
&gt;&gt; +        bool enableEfficacyLogging;
&gt; 
&gt; These should have { false } after them.

If I do this, then I will no longer be able to initialize this struct like so: { false, false } which is how I initialize it in NetworkProcessCocoa.mm. To maintain this initialization pattern while doing what you suggest, I would also need to add an explicit construct that takes 2 parameters in.
I don&apos;t think this is worth the extra code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139995</commentid>
    <comment_count>12</comment_count>
      <attachid>264895</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-06 10:16:59 -0800</bug_when>
    <thetext>Comment on attachment 264895
Patch

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

&gt;&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheSubResourcesEntry.cpp:51
&gt;&gt; +    std::unique_ptr&lt;SubResourcesEntry&gt; entry(new SubResourcesEntry(storageEntry));
&gt; 
&gt; Should use make_unique here, not new. Also use auto to avoid repeating the type twice.

Sadly, this means I need to make that constructor public I think, but OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139996</commentid>
    <comment_count>13</comment_count>
      <attachid>264942</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-06 10:17:24 -0800</bug_when>
    <thetext>Created attachment 264942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139997</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-06 10:18:29 -0800</bug_when>
    <thetext>Attachment 264942 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoader.cpp:61:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:346:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:103:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140012</commentid>
    <comment_count>15</comment_count>
      <attachid>264942</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-06 11:30:19 -0800</bug_when>
    <thetext>Comment on attachment 264942
Patch

Clearing flags on attachment: 264942

Committed r192111: &lt;http://trac.webkit.org/changeset/192111&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140013</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-06 11:30:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140217</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-07 16:36:05 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; If I do this, then I will no longer be able to initialize this struct like
&gt; so: { false, false } which is how I initialize it in NetworkProcessCocoa.mm.

Sure, but if you do it the structure will be initialized that way without the code in NetworkProcessCocoa.mm having to specify any initialization arguments at all. I think it would be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140326</commentid>
    <comment_count>18</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-09 04:14:41 -0800</bug_when>
    <thetext>Apple Mac CMake buildfix landed in https://trac.webkit.org/changeset/192150</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264892</attachid>
            <date>2015-11-05 15:08:45 -0800</date>
            <delta_ts>2015-11-05 15:12:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150951-20151105150746.patch</filename>
            <type>text/plain</type>
            <size>35750</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTZiNmZkZTljOWE4ODdl
YTg3YmU4NjU2NDI1MGY2MGU4MGMzNWNhMC4uNmNjNTNjNWVlNDM2MmM0Y2Q2ODI1MWRiM2M0NWYw
NGVlZGFkNWM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg0IEBACiAyMDE1LTExLTA1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW1dLMl1bU3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb25dIFNhdmUgdG8gZGlzayBjYWNoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiByZXNv
dXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MDk1MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMwOTIxOTY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhIGZpcnN0IHN0
ZXAgdG93YXJkcyBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb24gc3VwcG9ydCBpbgorICAgICAgICB0
aGUgV2ViS2l0IG5ldHdvcmsgY2FjaGUuIEl0IG1hcHMgc3ViLXJlc291cmNlcyB0byB0aGUgbWFp
biByZXNvdXJjZQorICAgICAgICB0aGF0IGNhdXNlZCB0aGVtIHRvIGJlIHJlcXVlc3RlZC4gV2Ug
dGhlbiB3cml0ZSB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZQorICAgICAgICBuZXR3b3JrIGNhY2hl
LCBhcyBhIGxpc3Qgb2Ygc3VicmVzb3VyY2Uga2V5cyBmb3IgZWFjaCBtYWluIHJlc291cmNlLgor
CisgICAgICAgIFRvIG1hcHMgc3ViLXJlc291cmNlcyB0byBtYWluIHJlc291cmNlcywgd2UgdHJh
Y2tzIHRoZSBsb2FkcyBoYXBwZW5pbmcKKyAgICAgICAgaW4gZWFjaCBmcmFtZSBhbmQgc3RvcmUg
dGhlIGtleSBvZiB0aGUgbWFpbiByZXNvdXJjZSBmb3IgdGhpcyBmcmFtZSwKKyAgICAgICAgYXMg
d2VsbCBhcyB0aGUga2V5IG9mIGVhY2ggc3ViLXJlc291cmNlIGxhdGVyIGxvYWRlZCBpbiB0aGlz
IGZyYW1lLiBXZQorICAgICAgICB1c2UgYSBIeXN0ZXJlc2lzQWN0aXZpdHkgdG8gZGV0ZWN0IHdo
ZW4gbG9hZHMgc2V0dGxlIGRvd24gaW4gZWFjaCBmcmFtZQorICAgICAgICAobm8gbG9hZHMgaGFw
cGVuIGZvciBhIHdoaWxlKSBhbmQgd2UgdGhlbiB3cml0ZSB0aGUgaW5mb3JtYXRpb24gdG8gdGhl
CisgICAgICAgIGRpc2suIElmIGEgbmV3IG1haW4gcmVzb3VyY2UgaXMgbG9hZGVkIGluIGEgZnJh
bWUgd2hlcmUgd2Ugd2VyZSBhbHJlYWR5CisgICAgICAgIHRyYWNraW5nIGEgbG9hZCwgd2Ugc2F2
ZSB0aGUgZGF0YSB0byBkaXNrIGJlZm9yZSB0cmFja2luZyB0aGUgbmV3IGxvYWQsCisgICAgICAg
IGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgdGhlIEh5c3RlcmVzaXNBY3Rpdml0eSB0byBkZXRlY3Qg
dGhlIGVuZCBvZiB0aGUKKyAgICAgICAgbG9hZC4KKworICAgICAgICBUaGUgZmVhdHVyZSBpcyBj
dXJyZW50bHkgYmVoaW5kIGEgY29tcGlsZS10aW1lIGZsYWcgdGhhdCBpdCBlbmFibGVkIG9uCisg
ICAgICAgIE1hYyBhbmQgaU9TIG9ubHkuIEl0IGlzIGFsc28gYmVoaW5kIGEgcnVudGltZSBmbGFn
IChOU1VzZXJEZWZhdWx0cykKKyAgICAgICAgdGhhdCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0Lgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCk6CisgICAgICAgIFBh
c3MgZnJhbWVJRCBpbiBhZGRpdGlvbiB0byB0aGUgcGFnZUlELiBXZSBuZWVkIHRvIGdsb2JhbGx5
IGlkZW50aWZ5CisgICAgICAgIGZyYW1lcyAodXNpbmcgPHBhZ2VJRCwgZnJhbWVJRD4gcGFpcikg
dG8gYmUgYWJsZSB0byB0cmFjayBsb2FkcyBpbgorICAgICAgICBlYWNoIGZyYW1lLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIE9ubHkgaW5p
dGlhbGl6ZSB0aGUgU3BlY3VsYXRpdmVMb2FkZXIgaWYgdGhlCisgICAgICAgIGVuYWJsZU5ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uIHJ1bi10aW1lIGZsYWcgaXMgc2V0LgorCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnJldHJpZXZlKToKKyAgICAgICAg
UmVnaXN0ZXIgdGhlIGxvYWQgd2l0aCB0aGUgU3BlY3VsYXRpdmVMb2FkZXIuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpLZXk6OktleSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6S2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6S2V5OjpyYW5nZSk6CisgICAgICAgIChXVEY6Ok5ldHdvcmtDYWNoZUtleUhhc2g6
Omhhc2gpOgorICAgICAgICAoV1RGOjpOZXR3b3JrQ2FjaGVLZXlIYXNoOjplcXVhbCk6CisgICAg
ICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OktleT46OmlzRW1wdHlW
YWx1ZSk6CisgICAgICAgIEFkZCBuZWVkZWQgSGFzaFRyYWl0cyBmb3IgTmV0d29ya0NhY2hlOjpL
ZXkgc28gaXQgY2FuIGJlIHVzZWQgYXMga2V5IGluCisgICAgICAgIEhhc2hNYXAgLyBIYXNoU2V0
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oOiBBZGRlZC4KKyAgICAgICAgQWRkIG5ldyBOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlciBjbGFzcyB0aGF0IHRha2VzIGNhcmUgb2YgdHJhY2tp
bmcKKyAgICAgICAgbG9hZHMgaW4gZWFjaCBmcmFtZSB0byBtYXAgc3VicmVzb3VyY2VzIHRvIG1h
aW4gcmVzb3VyY2VzIGFuZCB0aGVuIHdyaXRlCisgICAgICAgIHRoaXMgaW5mb3JtYXRpb24gdG8g
dGhlIG5ldHdvcmsgZGlzayBjYWNoZS4gSW4gdGhlIGZ1dHVyZSwgdGhpcyBjbGFzcyB3ZQorICAg
ICAgICBhbHNvIHRha2UgY2FyZSBvZiB0cmlnZ2VyaW5nIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlv
bnMsIHRodXMgdGhlIG5hbWluZy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpw
bGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAg
ICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3Jr
UHJvY2Vzcyk6CisgICAgICAgIEFkZCBuZXcgTmV0d29ya1Byb2Nlc3MgcGFyYW1ldGVyIHRvIGNv
bnRyb2wgYXQgcnVudGltZSBpZiBzcGVjdWxhdGl2ZSBsb2FkaW5nCisgICAgICAgIHNob3VsZCBi
ZSBlbmFibGVkIG9yIG5vdC4gSXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAgICAq
IFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxl
cyB0byBYQ29kZSBwcm9qZWN0LgorCisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgIEFkZCBF
TkFCTEVfTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04gYnVpbGQgZmxhZyBm
b3IgdGhlIG5ldworICAgICAgICBmZWF0dXJlIHRoYXQgaXMgZW5hYmxlIGJ5IGRlZmF1bHQgb24g
Q09DT0EuCisKKzIwMTUtMTEtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwog
ICAgICAgICBbV0syXSBDbGVhbiB1cCAvIE1vZGVybml6ZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDkyMgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAppbmRleCA0MDhmOGI2MmFmZDZmNzI2ZWJlZDYxZjI4OWRmNmMzNTdhZWVj
YWIzLi42MWQyNTU4Y2YzZDIxMmViZWE3YWY1NzA4YjI4NTBlZWU5YTYyM2JiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3Rh
cnQoKQogICAgIH0KIAogICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGxvYWRlcih0
aGlzKTsKLSAgICBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLnJldHJpZXZlKG9yaWdpbmFsUmVx
dWVzdCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBbbG9hZGVyXShzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NhY2hlOjpFbnRyeT4gZW50cnkpIHsKKyAgICBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRv
bigpLnJldHJpZXZlKG9yaWdpbmFsUmVxdWVzdCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgW2xvYWRlcl0oc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtD
YWNoZTo6RW50cnk+IGVudHJ5KSB7CiAgICAgICAgIGlmIChsb2FkZXItPmhhc09uZVJlZigpKSB7
CiAgICAgICAgICAgICAvLyBUaGUgbG9hZGVyIGhhcyBiZWVuIGFib3J0ZWQgYW5kIGlzIG9ubHkg
aGVsZCBhbGl2ZSBieSB0aGlzIGxhbWJkYS4KICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmlu
ZGV4IDQwNDMxN2IwZDY1Nzg0NjU5ODMxNWRhMGRmM2NmODA5YTU2OTE4ZjkuLmExMWJlMmUyYWUx
YWRhMmQ0NDRkOWEwOTM2YzZjMDA3YWJmYzQ0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMjksNiArMjksNyBA
QAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29y
a0NhY2hlU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NhY2hlVmFsaWRhdGlvbi5oPgpAQCAtNzEsMTEgKzcyLDE2IEBAIHN0
YXRpYyB2b2lkIGR1bXBGaWxlQ2hhbmdlZChDYWNoZSogY2FjaGUpCiB9CiAjZW5kaWYKIAotYm9v
bCBDYWNoZTo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGNhY2hlUGF0aCwgYm9vbCBlbmFibGVF
ZmZpY2FjeUxvZ2dpbmcpCitib29sIENhY2hlOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgY2Fj
aGVQYXRoLCBjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIG1fc3RvcmFnZSA9
IFN0b3JhZ2U6Om9wZW4oY2FjaGVQYXRoKTsKIAotICAgIGlmIChlbmFibGVFZmZpY2FjeUxvZ2dp
bmcpCisjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQor
ICAgIGlmIChwYXJhbWV0ZXJzLmVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0
aW9uKQorICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVj
dWxhdGl2ZUxvYWRlcj4oKm1fc3RvcmFnZSk7CisjZW5kaWYKKworICAgIGlmIChwYXJhbWV0ZXJz
LmVuYWJsZUVmZmljYWN5TG9nZ2luZykKICAgICAgICAgbV9zdGF0aXN0aWNzID0gU3RhdGlzdGlj
czo6b3BlbihjYWNoZVBhdGgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0zMzcsNyArMzQz
LDcgQEAgc3RhdGljIFN0b3JlRGVjaXNpb24gbWFrZVN0b3JlRGVjaXNpb24oY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFIKICAgICByZXR1cm4gU3RvcmVEZWNpc2lvbjo6
WWVzOwogfQogCi12b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgdWludDY0X3Qgd2ViUGFnZUlELCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4pPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
Q2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCB1aW50NjRfdCB3ZWJQYWdlSUQsIHVpbnQ2NF90IHdlYkZyYW1lSUQsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+IGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVChpc0VuYWJsZWQoKSk7CiAgICAgQVNTRVJUKG9yaWdpbmFsUmVxdWVzdC51
cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwpAQCAtMzQ4LDYgKzM1NCwxNCBAQCB2b2lk
IENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgdWludDY0X3QgdwogICAgICAgICBtX3N0YXRpc3RpY3MtPnJlY29yZFJldHJpZXZh
bFJlcXVlc3Qod2ViUGFnZUlEKTsKIAogICAgIEtleSBzdG9yYWdlS2V5ID0gbWFrZUNhY2hlS2V5
KG9yaWdpbmFsUmVxdWVzdCk7CisKKyNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElW
RV9SRVZBTElEQVRJT04pCisgICAgaWYgKG1fc3BlY3VsYXRpdmVMb2FkZXIpCisgICAgICAgIG1f
c3BlY3VsYXRpdmVMb2FkZXItPnJlZ2lzdGVyTG9hZCh3ZWJQYWdlSUQsIHdlYkZyYW1lSUQsIG9y
aWdpbmFsUmVxdWVzdCwgc3RvcmFnZUtleSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh3ZWJG
cmFtZUlEKTsKKyNlbmRpZgorCiAgICAgYXV0byByZXRyaWV2ZURlY2lzaW9uID0gbWFrZVJldHJp
ZXZlRGVjaXNpb24ob3JpZ2luYWxSZXF1ZXN0KTsKICAgICBpZiAocmV0cmlldmVEZWNpc2lvbiAh
PSBSZXRyaWV2ZURlY2lzaW9uOjpZZXMpIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgK
aW5kZXggZmI0ZjMyNjIxMjRlOTcxNzY3ZTFiZDBmNGUxMDMxYjgxNjQ3OWU3Zi4uNzgzODllMDUz
ODNiNzVkYzUzODlmYTFmYjJjMDI3YTIxMjZmNWM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAogY2xhc3MgQ2Fj
aGU7CitjbGFzcyBTcGVjdWxhdGl2ZUxvYWRlcjsKIGNsYXNzIFN0YXRpc3RpY3M7CiAKIENhY2hl
JiBzaW5nbGV0b24oKTsKQEAgLTg3LDEzICs4OCwxOSBAQCBjbGFzcyBDYWNoZSB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ2FjaGUpOwogICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVz
dHJveWVkPENhY2hlPjsKIHB1YmxpYzoKLSAgICBib29sIGluaXRpYWxpemUoY29uc3QgU3RyaW5n
JiBjYWNoZVBhdGgsIGJvb2wgZW5hYmxlRWZmaWNhY3lMb2dnaW5nKTsKKyAgICBzdHJ1Y3QgUGFy
YW1ldGVycyB7CisgICAgICAgIGJvb2wgZW5hYmxlRWZmaWNhY3lMb2dnaW5nOworI2lmIEVOQUJM
RShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKKyAgICAgICAgYm9vbCBl
bmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbjsKKyNlbmRpZgorICAgIH07
CisgICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgY2FjaGVQYXRoLCBjb25zdCBQYXJh
bWV0ZXJzJik7CiAgICAgdm9pZCBzZXRDYXBhY2l0eShzaXplX3QpOwogCiAgICAgYm9vbCBpc0Vu
YWJsZWQoKSBjb25zdCB7IHJldHVybiAhIW1fc3RvcmFnZTsgfQogCiAgICAgLy8gQ29tcGxldGlv
biBoYW5kbGVyIG1heSBnZXQgY2FsbGVkIGJhY2sgc3luY2hyb25vdXNseSBvbiBmYWlsdXJlLgot
ICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0
X3Qgd2ViUGFnZUlELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4p
Pik7CisgICAgdm9pZCByZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1
aW50NjRfdCB3ZWJQYWdlSUQsIHVpbnQ2NF90IHdlYkZyYW1lSUQsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+KTsKICAgICB2b2lkIHN0b3JlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKE1hcHBl
ZEJvZHkmKT4pOwogICAgIHZvaWQgdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2UpOwogCkBAIC0xMTYsNiArMTIzLDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZUR1bXBGaWxlKCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U3RvcmFnZT4gbV9zdG9yYWdlOworI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFU
SVZFX1JFVkFMSURBVElPTikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlY3VsYXRpdmVMb2FkZXI+
IG1fc3BlY3VsYXRpdmVMb2FkZXI7CisjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGlz
dGljcz4gbV9zdGF0aXN0aWNzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAKaW5kZXggYjgyOGQ0OTVjZTE4
MGViNmVjZTMyMjg3OWJhOWM1OTM3ZjFlMDU1ZS4uMWYwNmE2NWJiNmVmOGRkMzUwMTkyYzQ1ODY5
MWY4ODA5OGRkNWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCkBAIC01NCw2ICs1NCwxMSBAQCBLZXk6Oktl
eShjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIHJhbmdlLCBjb25zdAogewogfQogCitLZXk6OktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZVR5cGUpCisgICAgOiBtX2lkZW50aWZpZXIoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
Cit7Cit9CisKIEtleSYgS2V5OjpvcGVyYXRvcj0oY29uc3QgS2V5JiBvdGhlcikKIHsKICAgICBt
X3BhcnRpdGlvbiA9IG90aGVyLm1fcGFydGl0aW9uLmlzb2xhdGVkQ29weSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaApp
bmRleCBlNjMzYjY1MTQwZTRkY2IwN2Q4YmM3MDkwZTk4OGVhMDQ0NzIxYTI3Li5lNDFhMGVmNTky
M2NlMzM3MjMxZjBiZGM5ODA5ODNjMjM2NWIzYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaApAQCAtNDksMTEgKzQ5
LDE1IEBAIHB1YmxpYzoKICAgICBLZXkmIG9wZXJhdG9yPShjb25zdCBLZXkmKTsKICAgICBLZXkm
IG9wZXJhdG9yPShLZXkmJikgPSBkZWZhdWx0OwogCisgICAgS2V5KFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVHlwZSk7CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllci5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisKICAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllci5pc051bGwoKTsgfQog
CiAgICAgY29uc3QgU3RyaW5nJiBwYXJ0aXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcnRpdGlv
bjsgfQogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9
CiAKICAgICBIYXNoVHlwZSBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9CiAKQEAgLTgx
LDUgKzg1LDM1IEBAIHByaXZhdGU6CiB9CiB9CiAKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1Y3Qg
TmV0d29ya0NhY2hlS2V5SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OktleSYga2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkKj4oa2V5Lmhhc2goKS5kYXRhKCkpOworICAgIH0K
KworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpLZXkm
IGEsIGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpLZXkmIGIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYSA9PSBiOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgRGVmYXVsdEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6S2V5PiB7CisgICAgdHlwZWRlZiBOZXR3b3JrQ2FjaGVLZXlIYXNoIEhh
c2g7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpLZXk+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFdlYktpdDo6TmV0d29ya0NhY2hlOjpL
ZXk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CisK
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7Cisg
ICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpL
ZXkmIGtleSkgeyByZXR1cm4ga2V5LmlzTnVsbCgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wYThkNzU4YTIwZjYyMjcwZWIwM2I4NGIwZjlhYWU1MzllZTllZmFk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuY3BwCkBAIC0wLDAgKzEsMTQzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVf
U1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQorI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZGVyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nh
Y2hlU3ViUmVzb3VyY2VzRW50cnkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0h5c3RlcmVzaXNBY3Rp
dml0eS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgTmV0d29ya0NhY2hl
IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIHN1YnJlc291cmNlc1R5cGUoKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gcmVzb3VyY2Uo
InN1YnJlc291cmNlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IHJldHVybiByZXNvdXJjZTsKK30KKworc3RhdGljIGlubGluZSBLZXkgbWFrZVN1YlJlc291cmNl
c0tleShjb25zdCBLZXkmIHJlc291cmNlS2V5KQoreworICAgIHJldHVybiBLZXkocmVzb3VyY2VL
ZXkucGFydGl0aW9uKCksIHN1YnJlc291cmNlc1R5cGUoKSwgcmVzb3VyY2VLZXkucmFuZ2UoKSwg
cmVzb3VyY2VLZXkuaWRlbnRpZmllcigpKTsKK30KKworY2xhc3MgU3BlY3VsYXRpdmVMb2FkZXI6
OlBlbmRpbmdGcmFtZUxvYWQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIFBlbmRpbmdGcmFtZUxvYWQoY29uc3QgS2V5JiBtYWluUmVzb3VyY2VLZXksIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX21haW5SZXNv
dXJjZUtleShtYWluUmVzb3VyY2VLZXkpCisgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihj
b21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgLCBtX2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHkoW3Ro
aXNdKEh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gSHlzdGVyZXNpc1N0YXRl
OjpTdG9wcGVkKSBtX2NvbXBsZXRpb25IYW5kbGVyKCk7IH0pCisgICAgeyB9CisKKyAgICB2b2lk
IHJlZ2lzdGVyU3ViUmVzb3VyY2UoY29uc3QgS2V5JiBzdWJSZXNvdXJjZUtleSkKKyAgICB7Cisg
ICAgICAgIG1fc3ViUmVzb3VyY2VLZXlzLmFkZChzdWJSZXNvdXJjZUtleSk7CisgICAgICAgIG1f
bG9hZEh5c3RlcmVzaXNBY3Rpdml0eS5pbXB1bHNlKCk7CisgICAgfQorCisgICAgT3B0aW9uYWw8
U3RvcmFnZTo6UmVjb3JkPiBlbmNvZGVBc1N1YlJlc291cmNlc1JlY29yZCgpCisgICAgeworICAg
ICAgICBpZiAobV9zdWJSZXNvdXJjZUtleXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgICAgICBhdXRvIHN1YnJlc291cmNlc1N0b3JhZ2VLZXkgPSBtYWtlU3ViUmVz
b3VyY2VzS2V5KG1fbWFpblJlc291cmNlS2V5KTsKKyAgICAgICAgVmVjdG9yPEtleT4gc3ViUmVz
b3VyY2VLZXlzOworICAgICAgICBjb3B5VG9WZWN0b3IobV9zdWJSZXNvdXJjZUtleXMsIHN1YlJl
c291cmNlS2V5cyk7CisKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgICAgIExPRyhOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIFNhdmluZyB0byBkaXNr
IGxpc3Qgb2Ygc3VicmVzb3VyY2VzIGZvciAnJXMnOiIsIG1fbWFpblJlc291cmNlS2V5LmlkZW50
aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBzdWJSZXNvdXJjZUtl
eSA6IHN1YlJlc291cmNlS2V5cykKKyAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpICogU3VicmVzb3VyY2U6ICclcycuIiwg
c3ViUmVzb3VyY2VLZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlmCisKKyAg
ICAgICAgU3ViUmVzb3VyY2VzRW50cnkgc3VicmVzb3VyY2VFbnRyeShzdWJyZXNvdXJjZXNTdG9y
YWdlS2V5LCBzdWJSZXNvdXJjZUtleXMpOworICAgICAgICByZXR1cm4gc3VicmVzb3VyY2VFbnRy
eS5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKTsKKyAgICB9CisKKyAgICB2b2lkIG1hcmtBc0NvbXBs
ZXRlZCgpCisgICAgeworICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQorCitw
cml2YXRlOgorICAgIEtleSBtX21haW5SZXNvdXJjZUtleTsKKyAgICBIYXNoU2V0PEtleT4gbV9z
dWJSZXNvdXJjZUtleXM7CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fY29tcGxldGlvbkhh
bmRsZXI7CisgICAgSHlzdGVyZXNpc0FjdGl2aXR5IG1fbG9hZEh5c3RlcmVzaXNBY3Rpdml0eTsK
K307CisKK1NwZWN1bGF0aXZlTG9hZGVyOjpTcGVjdWxhdGl2ZUxvYWRlcihTdG9yYWdlJiBzdG9y
YWdlKQorICAgIDogbV9zdG9yYWdlKHN0b3JhZ2UpCit7Cit9CisKK1NwZWN1bGF0aXZlTG9hZGVy
Ojp+U3BlY3VsYXRpdmVMb2FkZXIoKQoreworfQorCit2b2lkIFNwZWN1bGF0aXZlTG9hZGVyOjpy
ZWdpc3RlckxvYWQodWludDY0X3Qgd2ViUGFnZUlELCB1aW50NjRfdCB3ZWJGcmFtZUlELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtleSYgcmVzb3VyY2VLZXkpCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmICghcmVxdWVzdC51cmwoKS5w
cm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgcmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkdFVCIp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZnJhbWVLZXkgPSBzdGQ6Om1ha2VfcGFpcih3
ZWJQYWdlSUQsIHdlYkZyYW1lSUQpOworICAgIGF1dG8gaXNNYWluUmVzb3VyY2UgPSByZXF1ZXN0
LnJlcXVlc3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluOworICAgIGlm
IChpc01haW5SZXNvdXJjZSkgeworICAgICAgICAvLyBNYXJrIHByZXZpb3VzIGxvYWQgaW4gdGhp
cyBmcmFtZSBhcyBjb21wbGV0ZWQgaWYgbmVjZXNzYXJ5LgorICAgICAgICBpZiAoYXV0byogcGVu
ZGluZ0ZyYW1lTG9hZCA9IG1fcGVuZGluZ0ZyYW1lTG9hZHMuZ2V0KGZyYW1lS2V5KSkKKyAgICAg
ICAgICAgIHBlbmRpbmdGcmFtZUxvYWQtPm1hcmtBc0NvbXBsZXRlZCgpOworCisgICAgICAgIC8v
IFN0YXJ0IHRyYWNraW5nIGxvYWRzIGluIHRoaXMgZnJhbWUuCisgICAgICAgIG1fcGVuZGluZ0Zy
YW1lTG9hZHMuYWRkKGZyYW1lS2V5LCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdGcmFtZUxvYWQ+
KHJlc291cmNlS2V5LCBbdGhpcywgZnJhbWVLZXldKCkgeworICAgICAgICAgICAgYXV0byBmcmFt
ZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLnRha2UoZnJhbWVLZXkpOworICAgICAgICAgICAg
YXV0byBvcHRpb25hbFJlY29yZCA9IGZyYW1lTG9hZC0+ZW5jb2RlQXNTdWJSZXNvdXJjZXNSZWNv
cmQoKTsKKyAgICAgICAgICAgIGlmICghb3B0aW9uYWxSZWNvcmQpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgbV9zdG9yYWdlLnN0b3JlKG9wdGlvbmFsUmVjb3JkLnZhbHVl
KCksIFtdKGNvbnN0IERhdGEmKSB7IH0pOworICAgICAgICB9KSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoYXV0byogcGVuZGluZ0ZyYW1lTG9hZCA9IG1fcGVuZGluZ0ZyYW1l
TG9hZHMuZ2V0KGZyYW1lS2V5KSkKKyAgICAgICAgcGVuZGluZ0ZyYW1lTG9hZC0+cmVnaXN0ZXJT
dWJSZXNvdXJjZShyZXNvdXJjZUtleSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIE5ldHdvcmtDYWNo
ZQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX0NB
Q0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiZGUzMzdlMTFiYjAwODk1MzIxZTgxNTk4NmUyMGZiZmFi
YjIxY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyX2gKKyNkZWZp
bmUgTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXJfaAorCisjaWYgRU5BQkxFKE5FVFdPUktf
Q0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQorCisjaW5jbHVkZSAiTmV0d29ya0NhY2hl
U3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBOZXR3
b3JrQ2FjaGUgeworCitjbGFzcyBTcGVjdWxhdGl2ZUxvYWRlciB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgU3BlY3VsYXRpdmVMb2FkZXIoU3RvcmFnZSYpOworICAgIH5TcGVjdWxhdGl2ZUxvYWRl
cigpOworCisgICAgdm9pZCByZWdpc3RlckxvYWQodWludDY0X3Qgd2ViUGFnZUlELCB1aW50NjRf
dCB3ZWJGcmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBLZXkm
IHJlc291cmNlS2V5KTsKKworcHJpdmF0ZToKKyAgICBTdG9yYWdlJiBtX3N0b3JhZ2U7CisKKyAg
ICBjbGFzcyBQZW5kaW5nRnJhbWVMb2FkOworICAgIHVzaW5nIEdsb2JhbEZyYW1lSUQgPSBzdGQ6
OnBhaXI8dWludDY0X3QgLyp3ZWJQYWdlSUQqLywgdWludDY0X3QgLyp3ZWJGcmFtZUlEKi8+Owor
ICAgIEhhc2hNYXA8R2xvYmFsRnJhbWVJRCwgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdGcmFtZUxv
YWQ+PiBtX3BlbmRpbmdGcmFtZUxvYWRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgTmV0d29ya0Nh
Y2hlCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
Q0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQorCisjZW5kaWYgLy8gTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KaW5kZXggY2QyMjA4NDQ4ZDVj
YWRkYjY0MzcxZGM2ZTVjYzVlMDBhOGI5MGRlOS4uNTQzZmVlNGRlMTJkZmQyM2VlMTJlNjU0MTlm
YTFjMjVjY2VkYmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCkBAIC05NSwxMCArOTUsMTggQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2Nv
YShjb25zdCBOZXR3b3JrUHJvY2Vzc0MKICAgICBpZiAoIW1fZGlza0NhY2hlRGlyZWN0b3J5Lmlz
TnVsbCgpKSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShw
YXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjaWYgRU5BQkxF
KE5FVFdPUktfQ0FDSEUpCi0gICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdv
cmtDYWNoZSAmJiBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLmluaXRpYWxpemUobV9kaXNrQ2Fj
aGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lM
b2dnaW5nKSkgewotICAgICAgICAgICAgUmV0YWluUHRyPE5TVVJMQ2FjaGU+IHVybENhY2hlKGFk
b3B0TlMoW1tOU1VSTENhY2hlIGFsbG9jXSBpbml0V2l0aE1lbW9yeUNhcGFjaXR5OjAgZGlza0Nh
cGFjaXR5OjAgZGlza1BhdGg6bmlsXSkpOwotICAgICAgICAgICAgW05TVVJMQ2FjaGUgc2V0U2hh
cmVkVVJMQ2FjaGU6dXJsQ2FjaGUuZ2V0KCldOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAocGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGUpIHsKKyAgICAgICAgICAg
IE5ldHdvcmtDYWNoZTo6Q2FjaGU6OlBhcmFtZXRlcnMgY2FjaGVQYXJhbWV0ZXJzID0geworICAg
ICAgICAgICAgICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lM
b2dnaW5nLAorI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElP
TikKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlUmV2YWxpZGF0aW9uCisjZW5kaWYKKyAgICAgICAgICAgIH07CisgICAgICAgICAg
ICBpZiAoTmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS5pbml0aWFsaXplKG1fZGlza0NhY2hlRGly
ZWN0b3J5LCBjYWNoZVBhcmFtZXRlcnMpKSB7CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPE5T
VVJMQ2FjaGU+IHVybENhY2hlKGFkb3B0TlMoW1tOU1VSTENhY2hlIGFsbG9jXSBpbml0V2l0aE1l
bW9yeUNhcGFjaXR5OjAgZGlza0NhcGFjaXR5OjAgZGlza1BhdGg6bmlsXSkpOworICAgICAgICAg
ICAgICAgIFtOU1VSTENhY2hlIHNldFNoYXJlZFVSTENhY2hlOnVybENhY2hlLmdldCgpXTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZgog
ICAgICAgICBTdHJpbmcgbnNVUkxDYWNoZURpcmVjdG9yeSA9IG1fZGlza0NhY2hlRGlyZWN0b3J5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
UHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDkxMGU2MTkzNDgxNjJjMjc0MGVmZjMxZWM5MzlkZDk4
YWM1Nzg3NWUuLmY5YTBmZjgwODI5Y2I2NWIyMTMwNzA4YzcxYmYzZjdjOTY2NGQ1MWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQ
cm9jZXNzU291cC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkK
ICAgICAvLyBDbGVhciB0aGUgb2xkIHNvdXAgY2FjaGUgaWYgaXQgZXhpc3RzLgogICAgIFNvdXBO
ZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5jbGVhckNhY2hlKFdlYkNvcmU6OmRpcmVj
dG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKIAotICAgIE5ldHdvcmtDYWNoZTo6c2lu
Z2xldG9uKCkuaW5pdGlhbGl6ZShtX2Rpc2tDYWNoZURpcmVjdG9yeSwgcGFyYW1ldGVycy5zaG91
bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcpOworICAgIE5ldHdvcmtDYWNoZTo6
c2luZ2xldG9uKCkuaW5pdGlhbGl6ZShtX2Rpc2tDYWNoZURpcmVjdG9yeSwgeyBwYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZyB9KTsKICNlbHNlCiAgICAg
Ly8gV2UgdXNlZCB0byB1c2UgdGhlIGdpdmVuIGNhY2hlIGRpcmVjdG9yeSBmb3IgdGhlIHNvdXAg
Y2FjaGUsIGJ1dCBub3cgd2UgdXNlIGEgc3ViZGlyZWN0b3J5IHRvIGF2b2lkCiAgICAgLy8gY29u
ZmxpY3RzIHdpdGggb3RoZXIgY2FjaGUgZmlsZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LiBSZW1v
dmUgdGhlIG9sZCBjYWNoZSBmaWxlcyBpZiB0aGV5IHN0aWxsIGV4aXN0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vTG9nZ2luZy5oCmluZGV4IDE5OTU5N2VmY2FkZmYyOWFjNTNkNDhlNDc3YzJlMGNjNDRmNTk5
OTEuLjliYjgzNDUwOGI4YzRmYjlhZmE5ZWFmNzAxODA1OGJlOTNmOWExN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAg
ICAgTShOZXR3b3JrKSBcCiAgICAgTShOZXR3b3JrQ2FjaGUpIFwKICAgICBNKE5ldHdvcmtDYWNo
ZVN0b3JhZ2UpIFwKKyAgICBNKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZykgXAog
ICAgIE0oTmV0d29ya1NjaGVkdWxpbmcpIFwKICAgICBNKFBsdWdpbnMpIFwKICAgICBNKFByaW50
aW5nKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggNWFhYTgyMGYw
Nzc1Y2UxODNjYzBkYjcxMDI0ZGUyN2IzNzMxYzFmOC4uYTM3YmJlM2UxOWM0ZWFhMDhmNTlkY2M1
NTNjYjczNjgyNGViYmRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApA
QCAtNTEsNiArNTEsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpl
bmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbgogI2lmIEVOQUJMRShORVRX
T1JLX0NBQ0hFKQogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlOwogICAg
IGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nOworI2lm
IEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKKyAgICBlbmNv
ZGVyIDw8IHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uOwor
I2VuZGlmCiAjZW5kaWYKICNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAgIGVuY29kZXIg
PDwgY29va2llU3RvcmFnZURpcmVjdG9yeTsKQEAgLTEwNCw2ICsxMDcsMTAgQEAgYm9vbCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLCBOZXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZykpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElW
RV9SRVZBTElEQVRJT04pCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvdWxkRW5h
YmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKICNlbmRpZgogI2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29va2llU3RvcmFnZURpcmVjdG9yeSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA4MGI2MWNhYWRlNmI1YTg3NTA1YzlkMjA0
N2I5YjBlMzk2ZmMwYmFlLi45MDg2OWMxOTVjNGQ3Nzg0MmFhOWM4Yjk1MzViZWMzNTY1NGE4YzM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTYwLDYgKzYwLDkgQEAgc3Ry
dWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoTkVUV09S
S19DQUNIRSkKICAgICBib29sIHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZTsKICAgICBib29sIHNo
b3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZzsKKyNpZiBFTkFCTEUoTkVUV09S
S19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCisgICAgYm9vbCBzaG91bGRFbmFibGVO
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbjsKKyNlbmRpZgogI2VuZGlmCiAjaWYg
RU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKICAgICBTdHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9y
eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0KaW5kZXggNDI0Yjk5NzE4ZGY0MDc3OGE0ZTY5ZTk4Yjg1NjJmOTVmNzdiMDJh
Yy4uZmQxMDgzZjZlNmZjNWUxZGFkYzZhMWVhMWNkMzRlMjAzM2Y3MmE1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0K
QEAgLTg0LDYgKzg0LDkgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0MkhUVFBTUHJv
eHlEZWZhdWx0c0tleSA9IEAiV2ViS2l0MkhUVFBTUHJveHkiOwogI2lmIEVOQUJMRShORVRXT1JL
X0NBQ0hFKQogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0TmV0d29ya0NhY2hlRW5hYmxl
ZERlZmF1bHRzS2V5ID0gQCJXZWJLaXROZXR3b3JrQ2FjaGVFbmFibGVkIjsKIHN0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IFdlYktpdE5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZ0VuYWJsZWREZWZh
dWx0c0tleSA9IEAiV2ViS2l0TmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nRW5hYmxlZCI7Cisj
aWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQorc3RhdGlj
IE5TU3RyaW5nICogY29uc3QgV2ViS2l0TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRp
b25FbmFibGVkRGVmYXVsdHNLZXkgPSBAIldlYktpdE5ldHdvcmtDYWNoZVJlc291cmNlUmV2YWxp
ZGF0aW9uRW5hYmxlZCI7CisjZW5kaWYKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTEwNiw2ICsxMDksOSBAQCBzdGF0aWMgdm9pZCByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVk
KCkKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBbcmVnaXN0cmF0aW9uRGljdGlvbmFy
eSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10gZm9yS2V5OldlYktpdE5l
dHdvcmtDYWNoZUVuYWJsZWREZWZhdWx0c0tleV07CiAgICAgW3JlZ2lzdHJhdGlvbkRpY3Rpb25h
cnkgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10gZm9yS2V5OldlYktpdE5l
dHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZ0VuYWJsZWREZWZhdWx0c0tleV07CisjaWYgRU5BQkxF
KE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQorICAgIFtyZWdpc3RyYXRp
b25EaWN0aW9uYXJ5IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dIGZvcktl
eTpXZWJLaXROZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbkVuYWJsZWREZWZhdWx0
c0tleV07CisjZW5kaWYKICNlbmRpZgogCiAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gcmVnaXN0ZXJEZWZhdWx0czpyZWdpc3RyYXRpb25EaWN0aW9uYXJ5XTsKQEAg
LTI1NCw2ICsyNjAsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVO
ZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYQogI2lmIEVOQUJMRShORVRX
T1JLX0NBQ0hFKQogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlID0gaXNO
ZXR3b3JrQ2FjaGVFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3Jr
Q2FjaGVFZmZpY2FjeUxvZ2dpbmcgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJLaXROZXR3b3Jr
Q2FjaGVFZmZpY2FjeUxvZ2dpbmdFbmFibGVkRGVmYXVsdHNLZXldOworI2lmIEVOQUJMRShORVRX
T1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKKyAgICBwYXJhbWV0ZXJzLnNob3Vs
ZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uID0gW2RlZmF1bHRzIGJv
b2xGb3JLZXk6V2ViS2l0TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb25FbmFibGVk
RGVmYXVsdHNLZXldOworI2VuZGlmCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNWQ5NzRmMWU2Njk1
ZDcxNjQyM2Y5MTA5YWNlOGZkZDI3Yjk2YTEwLi5kZTZhZjQyNGYxN2NhZDkxZDA4YThlNjk3Mzc4
MDhjY2MxNzY2YzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMTc2LDYgKzExNzYsMTAgQEAKIAkJN0NGNDdGRkYxNzI3NkFF
MzAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5lck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NGNDdGRkQxNzI3NkFFMzAwOEFDQjkxIC8qIFdL
QnVuZGxlUGFnZUJhbm5lck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTdFQzRGMEZCMThFNEFDQkIwMDgwNTZBRiAvKiBOZXR3b3JrUHJvY2Vz
c0NvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0VDNEYwRjkxOEU0QTk0NTAwODA1NkFGIC8qIE5ldHdvcmtQcm9jZXNzQ29jb2EubW0gKi87IH07
CiAJCTgzMDQ4QUU2MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzA0OEFFNTFB
Q0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oICovOyB9OworCQk4MzEw
NDI4QjFCRDZCNjZGMDBBNzE1RTQgLyogTmV0d29ya0NhY2hlU3ViUmVzb3VyY2VzRW50cnkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTA0Mjg5MUJE
NkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJSZXNvdXJjZXNFbnRyeS5oICovOyB9Owor
CQk4MzEwNDI4QzFCRDZCNjZGMDBBNzE1RTQgLyogTmV0d29ya0NhY2hlU3ViUmVzb3VyY2VzRW50
cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMx
MDQyOEExQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YlJlc291cmNlc0VudHJ5LmNw
cCAqLzsgfTsKKwkJODMyQUUyNTIxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzJBRTI1MDFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkZXIuaCAqLzsgfTsKKwkJODMyQUUyNTMxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzMkFFMjUxMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWRlci5jcHAgKi87IH07CiAJCTgzNEIyNTBGMUE4MzFBOEQwMENGQjE1MCAvKiBO
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzRCMjUwRTFBODMxQThEMDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmls
ZVN5c3RlbS5oICovOyB9OwogCQk4MzRCMjUxMjFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0Nh
Y2hlU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM0QjI1MTAxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3Mu
aCAqLzsgfTsKIAkJODM2MDM0OUYxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNl
VHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNw
cCAqLzsgfTsKQEAgLTM0MTAsNiArMzQxNCwxMCBAQAogCQk3Q0Y0N0ZGRDE3Mjc2QUUzMDA4QUNC
OTEgLyogV0tCdW5kbGVQYWdlQmFubmVyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLQnVuZGxlUGFnZUJhbm5lck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3RUM0RjBGOTE4RTRBOTQ1MDA4MDU2QUYgLyogTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29j
b2EubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzA0OEFFNTFBQ0E0NURDMDA4MkM4MzIg
LyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTgzMTA0Mjg5MUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJSZXNvdXJjZXNF
bnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVTdWJS
ZXNvdXJjZXNFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzEwNDI4QTFC
RDZCNjZGMDBBNzE1RTQgLyogTmV0d29ya0NhY2hlU3ViUmVzb3VyY2VzRW50cnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NhY2hlU3ViUmVzb3VyY2Vz
RW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzJBRTI1MDFCRTJFOENE
MDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMyQUUyNTExQkUyRThDRDAwRkFBRTEwIC8qIE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM0QjI1MEUxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtD
YWNoZUZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCMjUx
MDFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTc1NzMsMTAgKzc1ODEsMTQgQEAKIAkJCQlFNDJFMDYwRDFBQTc1MEU1MDBCMTE2OTkg
LyogTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0gKi8sCiAJCQkJRTQ0MzZFQzAxQTBDRkRC
MjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZUtleS5jcHAgKi8sCiAJCQkJRTQ0MzZFQzExQTBDRkRC
MjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZUtleS5oICovLAorCQkJCTgzMkFFMjUxMUJFMkU4Q0Qw
MEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5jcHAgKi8sCisJCQkJODMy
QUUyNTAxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmgg
Ki8sCiAJCQkJODNCRENDQjgxQUM1RkRCNjAwM0Y2NDQxIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3Rp
Y3MuY3BwICovLAogCQkJCTgzNEIyNTEwMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVT
dGF0aXN0aWNzLmggKi8sCiAJCQkJRTQ0MzZFQzMxQTBDRkRCMjAwRUFEMjA0IC8qIE5ldHdvcmtD
YWNoZVN0b3JhZ2UuY3BwICovLAogCQkJCUU0NDM2RUMyMUEwQ0ZEQjIwMEVBRDIwNCAvKiBOZXR3
b3JrQ2FjaGVTdG9yYWdlLmggKi8sCisJCQkJODMxMDQyOEExQkQ2QjY2RjAwQTcxNUU0IC8qIE5l
dHdvcmtDYWNoZVN1YlJlc291cmNlc0VudHJ5LmNwcCAqLywKKwkJCQk4MzEwNDI4OTFCRDZCNjZG
MDBBNzE1RTQgLyogTmV0d29ya0NhY2hlU3ViUmVzb3VyY2VzRW50cnkuaCAqLywKIAkJCSk7CiAJ
CQluYW1lID0gY2FjaGU7CiAJCQlwYXRoID0gTmV0d29ya1Byb2Nlc3MvY2FjaGU7CkBAIC03NzE0
LDYgKzc3MjYsNyBAQAogCQkJCTc1QThEMkUxMTg3REVDMUEwMEMzOUM5RSAvKiBBUElTZXNzaW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZERTY2MjE5NTRFOUIxMDBDNDhGRkEgLyogQVBJU2Vz
c2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRENjY0ODE4QTJEOTFBMDBEODJFMjEg
LyogQVBJVUlDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMkFFMjUyMUJFMkU4Q0QwMEZB
QUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNEQjg2QzExMjAwRkI5NzAwNzI1NEJFIC8qIEFQSVVSTC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNFMjMxNUQxMjJDMzBDQTAwRDVDMzVBIC8qIEFQSVVSTFJlcXVlc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDOTBBMUQyMTIyREQ1NUUwMENDOEM1MCAvKiBBUElVUkxSZXNwb25zZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04MzE1LDYgKzgzMjgsNyBAQAogCQkJCTI5M0VCRUFCMTYyN0Q5Qzkw
MDVGODlGMSAvKiBXS0RPTVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDE3RDIxMTYyNjMz
MDgwMDcwNTRGNSAvKiBXS0RPTVRleHRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFC
N0Q3OEQxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTgzMTA0MjhCMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJSZXNvdXJjZXNFbnRy
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGNDU5MkYxOTQ2NEIyMDAwRjlENEEyIC8qIFdLRXJy
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkQ1NDhDMTMyRDgyNjgwMDU1RDgxNiAvKiBXS0Vy
cm9yQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QjUwNDUyMTlFRUYzMTMwMENFMkNGOCAvKiBX
S0Vycm9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NTI1LDYgKzk1MzksNyBAQAogCQkJ
CTdDODlEMjk3MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTNBNzNDRjFBNDhDN0YxMDA3MjMxQjMgLyogQVBJUGFnZUdyb3Vw
SGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzEzMzZFMTg1NjVEMkIwMEYzRUMwNSAv
KiBBUElQYWdlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgzMkFFMjUzMUJFMkU4Q0Qw
MEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3Q0U0RDIxRjFBNDkxNENBMDBDN0YxNTIgLyogQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFRDNDMURDMUI0NDdFQUMwMEUwRUI3RiAv
KiBBUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUEx
ODJENUI0MUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLm1tIGluIFNvdXJjZXMg
Ki8sCkBAIC05NzU5LDYgKzk3NzQsNyBAQAogCQkJCTFBOEVGNENDMTI1MjQwMzcwMEY3MDY3RiAv
KiBQbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDkxQTYx
MjgxRDczOTAwMUVCOTYyIC8qIFBsdWdpbkNvbnRyb2xsZXJQcm94eU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBOEVGOTZFMTI1MkFGNkIwMEY3MDY3RiAvKiBQbHVnaW5Db250cm9sbGVyUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODMxMDQyOEMxQkQ2QjY2
RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YlJlc291cmNlc0VudHJ5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBMTc5NzdGMTM3RUU4MkMwMEY5N0Q0NSAvKiBQbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzRjhDOTAxNzNBRjUyRDAwN0I3RjM5IC8q
IFBsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDMTM1QUFDMTczQjBD
RkYwMDU4NkFFMiAvKiBQbHVnaW5JbmZvcm1hdGlvbk1hYy5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvY29uZmlnLmggYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcu
aAppbmRleCA2OGU3ZTRkN2EwMjFhNjkyMDkyOGE2NWI4MzM4YmI2MjZkMTIzMTg1Li4wZDY0MGM4
MGFiN2UxYjhlODRiYWFmZTEyODU0ZjdmNDUwMzU2MDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9jb25maWcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaApAQCAtOTgsNiArOTgs
MTQgQEAKICNlbmRpZgogI2VuZGlmCiAKKyNpZm5kZWYgRU5BQkxFX05FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OCisjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpICYmIFBMQVRG
T1JNKENPQ09BKQorI2RlZmluZSBFTkFCTEVfTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZB
TElEQVRJT04gMQorI2Vsc2UKKyNkZWZpbmUgRU5BQkxFX05FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJ
VkVfUkVWQUxJREFUSU9OIDAKKyNlbmRpZgorI2VuZGlmCisKICNpZm5kZWYgSEFWRV9TQUZBUklf
U0VSVklDRVNfRlJBTUVXT1JLCiAjaWYgUExBVEZPUk0oSU9TKSAmJiAoIWRlZmluZWQgVEFSR0VU
X09TX0lPUyB8fCBUQVJHRVRfT1NfSU9TKQogI2RlZmluZSBIQVZFX1NBRkFSSV9TRVJWSUNFU19G
UkFNRVdPUksgMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264893</attachid>
            <date>2015-11-05 15:12:19 -0800</date>
            <delta_ts>2015-11-05 15:14:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150951-20151105151120.patch</filename>
            <type>text/plain</type>
            <size>42042</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTZiNmZkZTljOWE4ODdl
YTg3YmU4NjU2NDI1MGY2MGU4MGMzNWNhMC4uNmNjNTNjNWVlNDM2MmM0Y2Q2ODI1MWRiM2M0NWYw
NGVlZGFkNWM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg0IEBACiAyMDE1LTExLTA1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW1dLMl1bU3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb25dIFNhdmUgdG8gZGlzayBjYWNoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiByZXNv
dXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MDk1MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMwOTIxOTY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhIGZpcnN0IHN0
ZXAgdG93YXJkcyBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb24gc3VwcG9ydCBpbgorICAgICAgICB0
aGUgV2ViS2l0IG5ldHdvcmsgY2FjaGUuIEl0IG1hcHMgc3ViLXJlc291cmNlcyB0byB0aGUgbWFp
biByZXNvdXJjZQorICAgICAgICB0aGF0IGNhdXNlZCB0aGVtIHRvIGJlIHJlcXVlc3RlZC4gV2Ug
dGhlbiB3cml0ZSB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZQorICAgICAgICBuZXR3b3JrIGNhY2hl
LCBhcyBhIGxpc3Qgb2Ygc3VicmVzb3VyY2Uga2V5cyBmb3IgZWFjaCBtYWluIHJlc291cmNlLgor
CisgICAgICAgIFRvIG1hcHMgc3ViLXJlc291cmNlcyB0byBtYWluIHJlc291cmNlcywgd2UgdHJh
Y2tzIHRoZSBsb2FkcyBoYXBwZW5pbmcKKyAgICAgICAgaW4gZWFjaCBmcmFtZSBhbmQgc3RvcmUg
dGhlIGtleSBvZiB0aGUgbWFpbiByZXNvdXJjZSBmb3IgdGhpcyBmcmFtZSwKKyAgICAgICAgYXMg
d2VsbCBhcyB0aGUga2V5IG9mIGVhY2ggc3ViLXJlc291cmNlIGxhdGVyIGxvYWRlZCBpbiB0aGlz
IGZyYW1lLiBXZQorICAgICAgICB1c2UgYSBIeXN0ZXJlc2lzQWN0aXZpdHkgdG8gZGV0ZWN0IHdo
ZW4gbG9hZHMgc2V0dGxlIGRvd24gaW4gZWFjaCBmcmFtZQorICAgICAgICAobm8gbG9hZHMgaGFw
cGVuIGZvciBhIHdoaWxlKSBhbmQgd2UgdGhlbiB3cml0ZSB0aGUgaW5mb3JtYXRpb24gdG8gdGhl
CisgICAgICAgIGRpc2suIElmIGEgbmV3IG1haW4gcmVzb3VyY2UgaXMgbG9hZGVkIGluIGEgZnJh
bWUgd2hlcmUgd2Ugd2VyZSBhbHJlYWR5CisgICAgICAgIHRyYWNraW5nIGEgbG9hZCwgd2Ugc2F2
ZSB0aGUgZGF0YSB0byBkaXNrIGJlZm9yZSB0cmFja2luZyB0aGUgbmV3IGxvYWQsCisgICAgICAg
IGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgdGhlIEh5c3RlcmVzaXNBY3Rpdml0eSB0byBkZXRlY3Qg
dGhlIGVuZCBvZiB0aGUKKyAgICAgICAgbG9hZC4KKworICAgICAgICBUaGUgZmVhdHVyZSBpcyBj
dXJyZW50bHkgYmVoaW5kIGEgY29tcGlsZS10aW1lIGZsYWcgdGhhdCBpdCBlbmFibGVkIG9uCisg
ICAgICAgIE1hYyBhbmQgaU9TIG9ubHkuIEl0IGlzIGFsc28gYmVoaW5kIGEgcnVudGltZSBmbGFn
IChOU1VzZXJEZWZhdWx0cykKKyAgICAgICAgdGhhdCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0Lgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCk6CisgICAgICAgIFBh
c3MgZnJhbWVJRCBpbiBhZGRpdGlvbiB0byB0aGUgcGFnZUlELiBXZSBuZWVkIHRvIGdsb2JhbGx5
IGlkZW50aWZ5CisgICAgICAgIGZyYW1lcyAodXNpbmcgPHBhZ2VJRCwgZnJhbWVJRD4gcGFpcikg
dG8gYmUgYWJsZSB0byB0cmFjayBsb2FkcyBpbgorICAgICAgICBlYWNoIGZyYW1lLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIE9ubHkgaW5p
dGlhbGl6ZSB0aGUgU3BlY3VsYXRpdmVMb2FkZXIgaWYgdGhlCisgICAgICAgIGVuYWJsZU5ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uIHJ1bi10aW1lIGZsYWcgaXMgc2V0LgorCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnJldHJpZXZlKToKKyAgICAgICAg
UmVnaXN0ZXIgdGhlIGxvYWQgd2l0aCB0aGUgU3BlY3VsYXRpdmVMb2FkZXIuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpLZXk6OktleSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6S2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6S2V5OjpyYW5nZSk6CisgICAgICAgIChXVEY6Ok5ldHdvcmtDYWNoZUtleUhhc2g6
Omhhc2gpOgorICAgICAgICAoV1RGOjpOZXR3b3JrQ2FjaGVLZXlIYXNoOjplcXVhbCk6CisgICAg
ICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OktleT46OmlzRW1wdHlW
YWx1ZSk6CisgICAgICAgIEFkZCBuZWVkZWQgSGFzaFRyYWl0cyBmb3IgTmV0d29ya0NhY2hlOjpL
ZXkgc28gaXQgY2FuIGJlIHVzZWQgYXMga2V5IGluCisgICAgICAgIEhhc2hNYXAgLyBIYXNoU2V0
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oOiBBZGRlZC4KKyAgICAgICAgQWRkIG5ldyBOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlciBjbGFzcyB0aGF0IHRha2VzIGNhcmUgb2YgdHJhY2tp
bmcKKyAgICAgICAgbG9hZHMgaW4gZWFjaCBmcmFtZSB0byBtYXAgc3VicmVzb3VyY2VzIHRvIG1h
aW4gcmVzb3VyY2VzIGFuZCB0aGVuIHdyaXRlCisgICAgICAgIHRoaXMgaW5mb3JtYXRpb24gdG8g
dGhlIG5ldHdvcmsgZGlzayBjYWNoZS4gSW4gdGhlIGZ1dHVyZSwgdGhpcyBjbGFzcyB3ZQorICAg
ICAgICBhbHNvIHRha2UgY2FyZSBvZiB0cmlnZ2VyaW5nIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlv
bnMsIHRodXMgdGhlIG5hbWluZy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpw
bGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAg
ICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3Jr
UHJvY2Vzcyk6CisgICAgICAgIEFkZCBuZXcgTmV0d29ya1Byb2Nlc3MgcGFyYW1ldGVyIHRvIGNv
bnRyb2wgYXQgcnVudGltZSBpZiBzcGVjdWxhdGl2ZSBsb2FkaW5nCisgICAgICAgIHNob3VsZCBi
ZSBlbmFibGVkIG9yIG5vdC4gSXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAgICAq
IFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxl
cyB0byBYQ29kZSBwcm9qZWN0LgorCisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgIEFkZCBF
TkFCTEVfTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04gYnVpbGQgZmxhZyBm
b3IgdGhlIG5ldworICAgICAgICBmZWF0dXJlIHRoYXQgaXMgZW5hYmxlIGJ5IGRlZmF1bHQgb24g
Q09DT0EuCisKKzIwMTUtMTEtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwog
ICAgICAgICBbV0syXSBDbGVhbiB1cCAvIE1vZGVybml6ZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDkyMgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAppbmRleCA0MDhmOGI2MmFmZDZmNzI2ZWJlZDYxZjI4OWRmNmMzNTdhZWVj
YWIzLi42MWQyNTU4Y2YzZDIxMmViZWE3YWY1NzA4YjI4NTBlZWU5YTYyM2JiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3Rh
cnQoKQogICAgIH0KIAogICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IGxvYWRlcih0
aGlzKTsKLSAgICBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLnJldHJpZXZlKG9yaWdpbmFsUmVx
dWVzdCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBbbG9hZGVyXShzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NhY2hlOjpFbnRyeT4gZW50cnkpIHsKKyAgICBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRv
bigpLnJldHJpZXZlKG9yaWdpbmFsUmVxdWVzdCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgW2xvYWRlcl0oc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtD
YWNoZTo6RW50cnk+IGVudHJ5KSB7CiAgICAgICAgIGlmIChsb2FkZXItPmhhc09uZVJlZigpKSB7
CiAgICAgICAgICAgICAvLyBUaGUgbG9hZGVyIGhhcyBiZWVuIGFib3J0ZWQgYW5kIGlzIG9ubHkg
aGVsZCBhbGl2ZSBieSB0aGlzIGxhbWJkYS4KICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmlu
ZGV4IDQwNDMxN2IwZDY1Nzg0NjU5ODMxNWRhMGRmM2NmODA5YTU2OTE4ZjkuLmExMWJlMmUyYWUx
YWRhMmQ0NDRkOWEwOTM2YzZjMDA3YWJmYzQ0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMjksNiArMjksNyBA
QAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29y
a0NhY2hlU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NhY2hlVmFsaWRhdGlvbi5oPgpAQCAtNzEsMTEgKzcyLDE2IEBAIHN0
YXRpYyB2b2lkIGR1bXBGaWxlQ2hhbmdlZChDYWNoZSogY2FjaGUpCiB9CiAjZW5kaWYKIAotYm9v
bCBDYWNoZTo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGNhY2hlUGF0aCwgYm9vbCBlbmFibGVF
ZmZpY2FjeUxvZ2dpbmcpCitib29sIENhY2hlOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgY2Fj
aGVQYXRoLCBjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIG1fc3RvcmFnZSA9
IFN0b3JhZ2U6Om9wZW4oY2FjaGVQYXRoKTsKIAotICAgIGlmIChlbmFibGVFZmZpY2FjeUxvZ2dp
bmcpCisjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQor
ICAgIGlmIChwYXJhbWV0ZXJzLmVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0
aW9uKQorICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVj
dWxhdGl2ZUxvYWRlcj4oKm1fc3RvcmFnZSk7CisjZW5kaWYKKworICAgIGlmIChwYXJhbWV0ZXJz
LmVuYWJsZUVmZmljYWN5TG9nZ2luZykKICAgICAgICAgbV9zdGF0aXN0aWNzID0gU3RhdGlzdGlj
czo6b3BlbihjYWNoZVBhdGgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0zMzcsNyArMzQz
LDcgQEAgc3RhdGljIFN0b3JlRGVjaXNpb24gbWFrZVN0b3JlRGVjaXNpb24oY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFIKICAgICByZXR1cm4gU3RvcmVEZWNpc2lvbjo6
WWVzOwogfQogCi12b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgdWludDY0X3Qgd2ViUGFnZUlELCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4pPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
Q2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCB1aW50NjRfdCB3ZWJQYWdlSUQsIHVpbnQ2NF90IHdlYkZyYW1lSUQsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+IGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVChpc0VuYWJsZWQoKSk7CiAgICAgQVNTRVJUKG9yaWdpbmFsUmVxdWVzdC51
cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwpAQCAtMzQ4LDYgKzM1NCwxNCBAQCB2b2lk
IENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgdWludDY0X3QgdwogICAgICAgICBtX3N0YXRpc3RpY3MtPnJlY29yZFJldHJpZXZh
bFJlcXVlc3Qod2ViUGFnZUlEKTsKIAogICAgIEtleSBzdG9yYWdlS2V5ID0gbWFrZUNhY2hlS2V5
KG9yaWdpbmFsUmVxdWVzdCk7CisKKyNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElW
RV9SRVZBTElEQVRJT04pCisgICAgaWYgKG1fc3BlY3VsYXRpdmVMb2FkZXIpCisgICAgICAgIG1f
c3BlY3VsYXRpdmVMb2FkZXItPnJlZ2lzdGVyTG9hZCh3ZWJQYWdlSUQsIHdlYkZyYW1lSUQsIG9y
aWdpbmFsUmVxdWVzdCwgc3RvcmFnZUtleSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh3ZWJG
cmFtZUlEKTsKKyNlbmRpZgorCiAgICAgYXV0byByZXRyaWV2ZURlY2lzaW9uID0gbWFrZVJldHJp
ZXZlRGVjaXNpb24ob3JpZ2luYWxSZXF1ZXN0KTsKICAgICBpZiAocmV0cmlldmVEZWNpc2lvbiAh
PSBSZXRyaWV2ZURlY2lzaW9uOjpZZXMpIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgK
aW5kZXggZmI0ZjMyNjIxMjRlOTcxNzY3ZTFiZDBmNGUxMDMxYjgxNjQ3OWU3Zi4uNzgzODllMDUz
ODNiNzVkYzUzODlmYTFmYjJjMDI3YTIxMjZmNWM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAogY2xhc3MgQ2Fj
aGU7CitjbGFzcyBTcGVjdWxhdGl2ZUxvYWRlcjsKIGNsYXNzIFN0YXRpc3RpY3M7CiAKIENhY2hl
JiBzaW5nbGV0b24oKTsKQEAgLTg3LDEzICs4OCwxOSBAQCBjbGFzcyBDYWNoZSB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ2FjaGUpOwogICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVz
dHJveWVkPENhY2hlPjsKIHB1YmxpYzoKLSAgICBib29sIGluaXRpYWxpemUoY29uc3QgU3RyaW5n
JiBjYWNoZVBhdGgsIGJvb2wgZW5hYmxlRWZmaWNhY3lMb2dnaW5nKTsKKyAgICBzdHJ1Y3QgUGFy
YW1ldGVycyB7CisgICAgICAgIGJvb2wgZW5hYmxlRWZmaWNhY3lMb2dnaW5nOworI2lmIEVOQUJM
RShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKKyAgICAgICAgYm9vbCBl
bmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbjsKKyNlbmRpZgorICAgIH07
CisgICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgY2FjaGVQYXRoLCBjb25zdCBQYXJh
bWV0ZXJzJik7CiAgICAgdm9pZCBzZXRDYXBhY2l0eShzaXplX3QpOwogCiAgICAgYm9vbCBpc0Vu
YWJsZWQoKSBjb25zdCB7IHJldHVybiAhIW1fc3RvcmFnZTsgfQogCiAgICAgLy8gQ29tcGxldGlv
biBoYW5kbGVyIG1heSBnZXQgY2FsbGVkIGJhY2sgc3luY2hyb25vdXNseSBvbiBmYWlsdXJlLgot
ICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0
X3Qgd2ViUGFnZUlELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4p
Pik7CisgICAgdm9pZCByZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1
aW50NjRfdCB3ZWJQYWdlSUQsIHVpbnQ2NF90IHdlYkZyYW1lSUQsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+KTsKICAgICB2b2lkIHN0b3JlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKE1hcHBl
ZEJvZHkmKT4pOwogICAgIHZvaWQgdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2UpOwogCkBAIC0xMTYsNiArMTIzLDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZUR1bXBGaWxlKCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U3RvcmFnZT4gbV9zdG9yYWdlOworI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFU
SVZFX1JFVkFMSURBVElPTikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlY3VsYXRpdmVMb2FkZXI+
IG1fc3BlY3VsYXRpdmVMb2FkZXI7CisjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGlz
dGljcz4gbV9zdGF0aXN0aWNzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAKaW5kZXggYjgyOGQ0OTVjZTE4
MGViNmVjZTMyMjg3OWJhOWM1OTM3ZjFlMDU1ZS4uMWYwNmE2NWJiNmVmOGRkMzUwMTkyYzQ1ODY5
MWY4ODA5OGRkNWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCkBAIC01NCw2ICs1NCwxMSBAQCBLZXk6Oktl
eShjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIHJhbmdlLCBjb25zdAogewogfQogCitLZXk6OktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZVR5cGUpCisgICAgOiBtX2lkZW50aWZpZXIoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
Cit7Cit9CisKIEtleSYgS2V5OjpvcGVyYXRvcj0oY29uc3QgS2V5JiBvdGhlcikKIHsKICAgICBt
X3BhcnRpdGlvbiA9IG90aGVyLm1fcGFydGl0aW9uLmlzb2xhdGVkQ29weSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaApp
bmRleCBlNjMzYjY1MTQwZTRkY2IwN2Q4YmM3MDkwZTk4OGVhMDQ0NzIxYTI3Li5lNDFhMGVmNTky
M2NlMzM3MjMxZjBiZGM5ODA5ODNjMjM2NWIzYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaApAQCAtNDksMTEgKzQ5
LDE1IEBAIHB1YmxpYzoKICAgICBLZXkmIG9wZXJhdG9yPShjb25zdCBLZXkmKTsKICAgICBLZXkm
IG9wZXJhdG9yPShLZXkmJikgPSBkZWZhdWx0OwogCisgICAgS2V5KFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVHlwZSk7CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllci5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisKICAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllci5pc051bGwoKTsgfQog
CiAgICAgY29uc3QgU3RyaW5nJiBwYXJ0aXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcnRpdGlv
bjsgfQogICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9
CiAKICAgICBIYXNoVHlwZSBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9CiAKQEAgLTgx
LDUgKzg1LDM1IEBAIHByaXZhdGU6CiB9CiB9CiAKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1Y3Qg
TmV0d29ya0NhY2hlS2V5SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OktleSYga2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkKj4oa2V5Lmhhc2goKS5kYXRhKCkpOworICAgIH0K
KworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpLZXkm
IGEsIGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpLZXkmIGIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYSA9PSBiOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgRGVmYXVsdEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6S2V5PiB7CisgICAgdHlwZWRlZiBOZXR3b3JrQ2FjaGVLZXlIYXNoIEhh
c2g7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpLZXk+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFdlYktpdDo6TmV0d29ya0NhY2hlOjpL
ZXk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CisK
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7Cisg
ICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpL
ZXkmIGtleSkgeyByZXR1cm4ga2V5LmlzTnVsbCgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wYThkNzU4YTIwZjYyMjcwZWIwM2I4NGIwZjlhYWU1MzllZTllZmFk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuY3BwCkBAIC0wLDAgKzEsMTQzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVf
U1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQorI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZGVyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nh
Y2hlU3ViUmVzb3VyY2VzRW50cnkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0h5c3RlcmVzaXNBY3Rp
dml0eS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgTmV0d29ya0NhY2hl
IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIHN1YnJlc291cmNlc1R5cGUoKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gcmVzb3VyY2Uo
InN1YnJlc291cmNlcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IHJldHVybiByZXNvdXJjZTsKK30KKworc3RhdGljIGlubGluZSBLZXkgbWFrZVN1YlJlc291cmNl
c0tleShjb25zdCBLZXkmIHJlc291cmNlS2V5KQoreworICAgIHJldHVybiBLZXkocmVzb3VyY2VL
ZXkucGFydGl0aW9uKCksIHN1YnJlc291cmNlc1R5cGUoKSwgcmVzb3VyY2VLZXkucmFuZ2UoKSwg
cmVzb3VyY2VLZXkuaWRlbnRpZmllcigpKTsKK30KKworY2xhc3MgU3BlY3VsYXRpdmVMb2FkZXI6
OlBlbmRpbmdGcmFtZUxvYWQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIFBlbmRpbmdGcmFtZUxvYWQoY29uc3QgS2V5JiBtYWluUmVzb3VyY2VLZXksIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX21haW5SZXNv
dXJjZUtleShtYWluUmVzb3VyY2VLZXkpCisgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihj
b21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgLCBtX2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHkoW3Ro
aXNdKEh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gSHlzdGVyZXNpc1N0YXRl
OjpTdG9wcGVkKSBtX2NvbXBsZXRpb25IYW5kbGVyKCk7IH0pCisgICAgeyB9CisKKyAgICB2b2lk
IHJlZ2lzdGVyU3ViUmVzb3VyY2UoY29uc3QgS2V5JiBzdWJSZXNvdXJjZUtleSkKKyAgICB7Cisg
ICAgICAgIG1fc3ViUmVzb3VyY2VLZXlzLmFkZChzdWJSZXNvdXJjZUtleSk7CisgICAgICAgIG1f
bG9hZEh5c3RlcmVzaXNBY3Rpdml0eS5pbXB1bHNlKCk7CisgICAgfQorCisgICAgT3B0aW9uYWw8
U3RvcmFnZTo6UmVjb3JkPiBlbmNvZGVBc1N1YlJlc291cmNlc1JlY29yZCgpCisgICAgeworICAg
ICAgICBpZiAobV9zdWJSZXNvdXJjZUtleXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgICAgICBhdXRvIHN1YnJlc291cmNlc1N0b3JhZ2VLZXkgPSBtYWtlU3ViUmVz
b3VyY2VzS2V5KG1fbWFpblJlc291cmNlS2V5KTsKKyAgICAgICAgVmVjdG9yPEtleT4gc3ViUmVz
b3VyY2VLZXlzOworICAgICAgICBjb3B5VG9WZWN0b3IobV9zdWJSZXNvdXJjZUtleXMsIHN1YlJl
c291cmNlS2V5cyk7CisKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgICAgIExPRyhOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIFNhdmluZyB0byBkaXNr
IGxpc3Qgb2Ygc3VicmVzb3VyY2VzIGZvciAnJXMnOiIsIG1fbWFpblJlc291cmNlS2V5LmlkZW50
aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBzdWJSZXNvdXJjZUtl
eSA6IHN1YlJlc291cmNlS2V5cykKKyAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpICogU3VicmVzb3VyY2U6ICclcycuIiwg
c3ViUmVzb3VyY2VLZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlmCisKKyAg
ICAgICAgU3ViUmVzb3VyY2VzRW50cnkgc3VicmVzb3VyY2VFbnRyeShzdWJyZXNvdXJjZXNTdG9y
YWdlS2V5LCBzdWJSZXNvdXJjZUtleXMpOworICAgICAgICByZXR1cm4gc3VicmVzb3VyY2VFbnRy
eS5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKTsKKyAgICB9CisKKyAgICB2b2lkIG1hcmtBc0NvbXBs
ZXRlZCgpCisgICAgeworICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQorCitw
cml2YXRlOgorICAgIEtleSBtX21haW5SZXNvdXJjZUtleTsKKyAgICBIYXNoU2V0PEtleT4gbV9z
dWJSZXNvdXJjZUtleXM7CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fY29tcGxldGlvbkhh
bmRsZXI7CisgICAgSHlzdGVyZXNpc0FjdGl2aXR5IG1fbG9hZEh5c3RlcmVzaXNBY3Rpdml0eTsK
K307CisKK1NwZWN1bGF0aXZlTG9hZGVyOjpTcGVjdWxhdGl2ZUxvYWRlcihTdG9yYWdlJiBzdG9y
YWdlKQorICAgIDogbV9zdG9yYWdlKHN0b3JhZ2UpCit7Cit9CisKK1NwZWN1bGF0aXZlTG9hZGVy
Ojp+U3BlY3VsYXRpdmVMb2FkZXIoKQoreworfQorCit2b2lkIFNwZWN1bGF0aXZlTG9hZGVyOjpy
ZWdpc3RlckxvYWQodWludDY0X3Qgd2ViUGFnZUlELCB1aW50NjRfdCB3ZWJGcmFtZUlELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtleSYgcmVzb3VyY2VLZXkpCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmICghcmVxdWVzdC51cmwoKS5w
cm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgcmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkdFVCIp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZnJhbWVLZXkgPSBzdGQ6Om1ha2VfcGFpcih3
ZWJQYWdlSUQsIHdlYkZyYW1lSUQpOworICAgIGF1dG8gaXNNYWluUmVzb3VyY2UgPSByZXF1ZXN0
LnJlcXVlc3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluOworICAgIGlm
IChpc01haW5SZXNvdXJjZSkgeworICAgICAgICAvLyBNYXJrIHByZXZpb3VzIGxvYWQgaW4gdGhp
cyBmcmFtZSBhcyBjb21wbGV0ZWQgaWYgbmVjZXNzYXJ5LgorICAgICAgICBpZiAoYXV0byogcGVu
ZGluZ0ZyYW1lTG9hZCA9IG1fcGVuZGluZ0ZyYW1lTG9hZHMuZ2V0KGZyYW1lS2V5KSkKKyAgICAg
ICAgICAgIHBlbmRpbmdGcmFtZUxvYWQtPm1hcmtBc0NvbXBsZXRlZCgpOworCisgICAgICAgIC8v
IFN0YXJ0IHRyYWNraW5nIGxvYWRzIGluIHRoaXMgZnJhbWUuCisgICAgICAgIG1fcGVuZGluZ0Zy
YW1lTG9hZHMuYWRkKGZyYW1lS2V5LCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdGcmFtZUxvYWQ+
KHJlc291cmNlS2V5LCBbdGhpcywgZnJhbWVLZXldKCkgeworICAgICAgICAgICAgYXV0byBmcmFt
ZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLnRha2UoZnJhbWVLZXkpOworICAgICAgICAgICAg
YXV0byBvcHRpb25hbFJlY29yZCA9IGZyYW1lTG9hZC0+ZW5jb2RlQXNTdWJSZXNvdXJjZXNSZWNv
cmQoKTsKKyAgICAgICAgICAgIGlmICghb3B0aW9uYWxSZWNvcmQpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgbV9zdG9yYWdlLnN0b3JlKG9wdGlvbmFsUmVjb3JkLnZhbHVl
KCksIFtdKGNvbnN0IERhdGEmKSB7IH0pOworICAgICAgICB9KSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoYXV0byogcGVuZGluZ0ZyYW1lTG9hZCA9IG1fcGVuZGluZ0ZyYW1l
TG9hZHMuZ2V0KGZyYW1lS2V5KSkKKyAgICAgICAgcGVuZGluZ0ZyYW1lTG9hZC0+cmVnaXN0ZXJT
dWJSZXNvdXJjZShyZXNvdXJjZUtleSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIE5ldHdvcmtDYWNo
ZQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX0NB
Q0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiZGUzMzdlMTFiYjAwODk1MzIxZTgxNTk4NmUyMGZiZmFi
YjIxY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyX2gKKyNkZWZp
bmUgTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXJfaAorCisjaWYgRU5BQkxFKE5FVFdPUktf
Q0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQorCisjaW5jbHVkZSAiTmV0d29ya0NhY2hl
U3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBOZXR3
b3JrQ2FjaGUgeworCitjbGFzcyBTcGVjdWxhdGl2ZUxvYWRlciB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgU3BlY3VsYXRpdmVMb2FkZXIoU3RvcmFnZSYpOworICAgIH5TcGVjdWxhdGl2ZUxvYWRl
cigpOworCisgICAgdm9pZCByZWdpc3RlckxvYWQodWludDY0X3Qgd2ViUGFnZUlELCB1aW50NjRf
dCB3ZWJGcmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBLZXkm
IHJlc291cmNlS2V5KTsKKworcHJpdmF0ZToKKyAgICBTdG9yYWdlJiBtX3N0b3JhZ2U7CisKKyAg
ICBjbGFzcyBQZW5kaW5nRnJhbWVMb2FkOworICAgIHVzaW5nIEdsb2JhbEZyYW1lSUQgPSBzdGQ6
OnBhaXI8dWludDY0X3QgLyp3ZWJQYWdlSUQqLywgdWludDY0X3QgLyp3ZWJGcmFtZUlEKi8+Owor
ICAgIEhhc2hNYXA8R2xvYmFsRnJhbWVJRCwgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdGcmFtZUxv
YWQ+PiBtX3BlbmRpbmdGcmFtZUxvYWRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgTmV0d29ya0Nh
Y2hlCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
Q0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQorCisjZW5kaWYgLy8gTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3ViUmVzb3VyY2VzRW50cnkuY3BwIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3ViUmVzb3VyY2VzRW50cnku
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY4OTkwYTVhZDNjZDFkNDE5YTUyYjA4NTQ2NzY5NTg1NTQ1YjdjYTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdWJSZXNvdXJjZXNFbnRyeS5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQ
RUNVTEFUSVZFX1JFVkFMSURBVElPTikKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdWJSZXNvdXJj
ZXNFbnRyeS5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDYWNo
ZUNvZGVycy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDYWNoZURlY29kZXIuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrQ2FjaGVFbmNvZGVyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIE5l
dHdvcmtDYWNoZSB7CisKK1N0b3JhZ2U6OlJlY29yZCBTdWJSZXNvdXJjZXNFbnRyeTo6ZW5jb2Rl
QXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKK3sKKyAgICBFbmNvZGVyIGVuY29kZXI7CisgICAgZW5j
b2RlciA8PCBtX3N1YnJlc291cmNlS2V5czsKKworICAgIGVuY29kZXIuZW5jb2RlQ2hlY2tzdW0o
KTsKKworICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgeyBlbmNvZGVyLmJ1ZmZlcigp
LCBlbmNvZGVyLmJ1ZmZlclNpemUoKSB9ICwgeyB9IH07Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxT
dWJSZXNvdXJjZXNFbnRyeT4gU3ViUmVzb3VyY2VzRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQo
Y29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50cnkpCit7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFN1YlJlc291cmNlc0VudHJ5PiBlbnRyeShuZXcgU3ViUmVzb3VyY2VzRW50cnkoc3RvcmFn
ZUVudHJ5KSk7CisKKyAgICBEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5kYXRh
KCksIHN0b3JhZ2VFbnRyeS5oZWFkZXIuc2l6ZSgpKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGVudHJ5LT5tX3N1YnJlc291cmNlS2V5cykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgaWYgKCFkZWNvZGVyLnZlcmlmeUNoZWNrc3VtKCkpIHsKKyAgICAgICAgTE9HKE5ldHdvcmtD
YWNoZSwgIihOZXR3b3JrUHJvY2VzcykgY2hlY2tzdW0gdmVyaWZpY2F0aW9uIGZhaWx1cmVcbiIp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gZW50cnk7Cit9
CisKK1N1YlJlc291cmNlc0VudHJ5OjpTdWJSZXNvdXJjZXNFbnRyeShjb25zdCBTdG9yYWdlOjpS
ZWNvcmQmIHN0b3JhZ2VFbnRyeSkKKyAgICA6IG1fa2V5KHN0b3JhZ2VFbnRyeS5rZXkpCisgICAg
LCBtX3RpbWVTdGFtcChzdG9yYWdlRW50cnkudGltZVN0YW1wKQoreworICAgIEFTU0VSVChtX2tl
eS50eXBlKCkgPT0gInN1YnJlc291cmNlcyIpOworfQorCitTdWJSZXNvdXJjZXNFbnRyeTo6U3Vi
UmVzb3VyY2VzRW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFZlY3RvcjxLZXk+JiBzdWJyZXNv
dXJjZUtleXMpCisgICAgOiBtX2tleShrZXkpCisgICAgLCBtX3RpbWVTdGFtcChzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjpub3coKSkKKyAgICAsIG1fc3VicmVzb3VyY2VLZXlzKHN1YnJlc291
cmNlS2V5cykKK3sKKyAgICBBU1NFUlQobV9rZXkudHlwZSgpID09ICJzdWJyZXNvdXJjZXMiKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUK
KworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN1YlJlc291cmNlc0VudHJ5LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJSZXNvdXJjZXNFbnRyeS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlNTE3
OWRlMDAwZTVlY2E0NzU0ODBiNTVmM2I0ZTJkOTkxOWI1MTcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJSZXNvdXJj
ZXNFbnRyeS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5ldHdvcmtD
YWNoZVN1YlJlc291cmNlc0VudHJ5X2gKKyNkZWZpbmUgTmV0d29ya0NhY2hlU3ViUmVzb3VyY2Vz
RW50cnlfaAorCisjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFU
SU9OKQorCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKK25hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgeworCitjbGFzcyBTdWJSZXNvdXJjZXNFbnRy
eSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3ViUmVzb3VyY2VzRW50cnkpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTdWJSZXNvdXJjZXNFbnRyeShjb25zdCBL
ZXkmLCBjb25zdCBWZWN0b3I8S2V5PiYgc3VicmVzb3VyY2VLZXlzKTsKKworICAgIFN0b3JhZ2U6
OlJlY29yZCBlbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdDsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFN1YlJlc291cmNlc0VudHJ5PiBkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0
b3JhZ2U6OlJlY29yZCYpOworCisgICAgY29uc3QgS2V5JiBrZXkoKSBjb25zdCB7IHJldHVybiBt
X2tleTsgfQorICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZVN0
YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lU3RhbXA7IH0KKyAgICBjb25zdCBWZWN0b3I8S2V5
PiYgc3VicmVzb3VyY2VLZXlzKCkgY29uc3QgeyByZXR1cm4gbV9zdWJyZXNvdXJjZUtleXM7IH0K
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBTdWJSZXNvdXJjZXNFbnRyeShjb25zdCBTdG9yYWdl
OjpSZWNvcmQmKTsKKworICAgIEtleSBtX2tleTsKKyAgICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IG1fdGltZVN0YW1wOworICAgIFN0b3JhZ2U6OlJlY29yZCBtX3NvdXJj
ZVN0b3JhZ2VSZWNvcmQ7CisgICAgVmVjdG9yPEtleT4gbV9zdWJyZXNvdXJjZUtleXM7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIE5ldHdvcmtDYWNoZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQor
I2VuZGlmIC8vIE5ldHdvcmtDYWNoZVN1YlJlc291cmNlc0VudHJ5X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29h
Lm1tCmluZGV4IGNkMjIwODQ0OGQ1Y2FkZGI2NDM3MWRjNmU1Y2M1ZTAwYThiOTBkZTkuLjU0M2Zl
ZTRkZTEyZGZkMjNlZTEyZTY1NDE5ZmExYzI1Y2NlZGJjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bQpAQCAtOTUsMTAgKzk1LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0d29ya1Byb2Nlc3NDCiAgICAgaWYgKCFt
X2Rpc2tDYWNoZURpcmVjdG9yeS5pc051bGwoKSkgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
Ojpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQotICAgICAgICBpZiAocGFyYW1l
dGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGUgJiYgTmV0d29ya0NhY2hlOjpzaW5nbGV0b24o
KS5pbml0aWFsaXplKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLnNob3VsZEVuYWJs
ZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZykpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxO
U1VSTENhY2hlPiB1cmxDYWNoZShhZG9wdE5TKFtbTlNVUkxDYWNoZSBhbGxvY10gaW5pdFdpdGhN
ZW1vcnlDYXBhY2l0eTowIGRpc2tDYXBhY2l0eTowIGRpc2tQYXRoOm5pbF0pKTsKLSAgICAgICAg
ICAgIFtOU1VSTENhY2hlIHNldFNoYXJlZFVSTENhY2hlOnVybENhY2hlLmdldCgpXTsKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29y
a0NhY2hlKSB7CisgICAgICAgICAgICBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpQYXJhbWV0ZXJzIGNh
Y2hlUGFyYW1ldGVycyA9IHsKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJs
ZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZywKKyNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9T
UEVDVUxBVElWRV9SRVZBTElEQVRJT04pCisgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5zaG91
bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbgorI2VuZGlmCisgICAg
ICAgICAgICB9OworICAgICAgICAgICAgaWYgKE5ldHdvcmtDYWNoZTo6c2luZ2xldG9uKCkuaW5p
dGlhbGl6ZShtX2Rpc2tDYWNoZURpcmVjdG9yeSwgY2FjaGVQYXJhbWV0ZXJzKSkgeworICAgICAg
ICAgICAgICAgIFJldGFpblB0cjxOU1VSTENhY2hlPiB1cmxDYWNoZShhZG9wdE5TKFtbTlNVUkxD
YWNoZSBhbGxvY10gaW5pdFdpdGhNZW1vcnlDYXBhY2l0eTowIGRpc2tDYXBhY2l0eTowIGRpc2tQ
YXRoOm5pbF0pKTsKKyAgICAgICAgICAgICAgICBbTlNVUkxDYWNoZSBzZXRTaGFyZWRVUkxDYWNo
ZTp1cmxDYWNoZS5nZXQoKV07CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgU3RyaW5nIG5zVVJMQ2FjaGVEaXJlY3Rvcnkg
PSBtX2Rpc2tDYWNoZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCA5MTBlNjE5MzQ4
MTYyYzI3NDBlZmYzMWVjOTM5ZGQ5OGFjNTc4NzVlLi5mOWEwZmY4MDgyOWNiNjViMjEzMDcwOGM3
MWJmM2Y3Yzk2NjRkNTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAgICAgLy8gQ2xlYXIgdGhlIG9sZCBzb3VwIGNhY2hlIGlm
IGl0IGV4aXN0cy4KICAgICBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2xl
YXJDYWNoZShXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKG1fZGlza0NhY2hlRGlyZWN0b3J5KSk7CiAK
LSAgICBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLmluaXRpYWxpemUobV9kaXNrQ2FjaGVEaXJl
Y3RvcnksIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5n
KTsKKyAgICBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLmluaXRpYWxpemUobV9kaXNrQ2FjaGVE
aXJlY3RvcnksIHsgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxv
Z2dpbmcgfSk7CiAjZWxzZQogICAgIC8vIFdlIHVzZWQgdG8gdXNlIHRoZSBnaXZlbiBjYWNoZSBk
aXJlY3RvcnkgZm9yIHRoZSBzb3VwIGNhY2hlLCBidXQgbm93IHdlIHVzZSBhIHN1YmRpcmVjdG9y
eSB0byBhdm9pZAogICAgIC8vIGNvbmZsaWN0cyB3aXRoIG90aGVyIGNhY2hlIGZpbGVzIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS4gUmVtb3ZlIHRoZSBvbGQgY2FjaGUgZmlsZXMgaWYgdGhleSBzdGls
bCBleGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaCBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCAxOTk1OTdlZmNhZGZmMjlh
YzUzZDQ4ZTQ3N2MyZTBjYzQ0ZjU5OTkxLi45YmI4MzQ1MDhiOGM0ZmI5YWZhOWVhZjcwMTgwNThi
ZTkzZjlhMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC00Niw2ICs0Niw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogICAgIE0oTmV0d29yaykgXAogICAgIE0oTmV0d29ya0NhY2hl
KSBcCiAgICAgTShOZXR3b3JrQ2FjaGVTdG9yYWdlKSBcCisgICAgTShOZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZVByZWxvYWRpbmcpIFwKICAgICBNKE5ldHdvcmtTY2hlZHVsaW5nKSBcCiAgICAgTShQ
bHVnaW5zKSBcCiAgICAgTShQcmludGluZykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCmluZGV4IDVhYWE4MjBmMDc3NWNlMTgzY2MwZGI3MTAyNGRlMjdiMzczMWMxZjguLmEz
N2JiZTNlMTljNGVhYTA4ZjU5ZGNjNTUzY2I3MzY4MjRlYmJkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTUxLDYgKzUxLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVy
KSBjb24KICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBlbmNvZGVyIDw8IHNob3VsZEVu
YWJsZU5ldHdvcmtDYWNoZTsKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZU5ldHdvcmtDYWNo
ZUVmZmljYWN5TG9nZ2luZzsKKyNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9S
RVZBTElEQVRJT04pCisgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZVJldmFsaWRhdGlvbjsKKyNlbmRpZgogI2VuZGlmCiAjaWYgRU5BQkxFKFNFQ0NPTVBf
RklMVEVSUykKICAgICBlbmNvZGVyIDw8IGNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnk7CkBAIC0xMDQs
NiArMTA3LDEwIEBAIGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgTmV0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRFbmFibGVOZXR3b3JrQ2Fj
aGVFZmZpY2FjeUxvZ2dpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYgRU5BQkxFKE5F
VFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQorICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0
aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAjZW5kaWYKICNpZiBFTkFCTEUo
U0VDQ09NUF9GSUxURVJTKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNvb2tpZVN0
b3JhZ2VEaXJlY3RvcnkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggODBi
NjFjYWFkZTZiNWE4NzUwNWM5ZDIwNDdiOWIwZTM5NmZjMGJhZS4uOTA4NjljMTk1YzRkNzc4NDJh
YTljOGI5NTM1YmVjMzU2NTRhOGMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
CkBAIC02MCw2ICs2MCw5IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyB7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCiAgICAgYm9vbCBzaG91bGRFbmFibGVOZXR3
b3JrQ2FjaGU7CiAgICAgYm9vbCBzaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dp
bmc7CisjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQor
ICAgIGJvb2wgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb247
CisjZW5kaWYKICNlbmRpZgogI2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAgU3RyaW5n
IGNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDQyNGI5OTcxOGRmNDA3Nzhh
NGU2OWU5OGI4NTYyZjk1Zjc3YjAyYWMuLmZkMTA4M2Y2ZTZmYzVlMWRhZGM2YTFlYTFjZDM0ZTIw
MzNmNzJhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC04NCw2ICs4NCw5IEBAIHN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IFdlYktpdDJIVFRQU1Byb3h5RGVmYXVsdHNLZXkgPSBAIldlYktpdDJIVFRQU1Byb3h5
IjsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdl
YktpdE5ldHdvcmtDYWNoZUVuYWJsZWREZWZhdWx0c0tleSA9IEAiV2ViS2l0TmV0d29ya0NhY2hl
RW5hYmxlZCI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJLaXROZXR3b3JrQ2FjaGVFZmZp
Y2FjeUxvZ2dpbmdFbmFibGVkRGVmYXVsdHNLZXkgPSBAIldlYktpdE5ldHdvcmtDYWNoZUVmZmlj
YWN5TG9nZ2luZ0VuYWJsZWQiOworI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZF
X1JFVkFMSURBVElPTikKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdE5ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uRW5hYmxlZERlZmF1bHRzS2V5ID0gQCJXZWJLaXROZXR3
b3JrQ2FjaGVSZXNvdXJjZVJldmFsaWRhdGlvbkVuYWJsZWQiOworI2VuZGlmCiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMDYsNiArMTA5LDkgQEAgc3RhdGljIHZvaWQgcmVnaXN0
ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCiAgICAg
W3JlZ2lzdHJhdGlvbkRpY3Rpb25hcnkgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9v
bDpZRVNdIGZvcktleTpXZWJLaXROZXR3b3JrQ2FjaGVFbmFibGVkRGVmYXVsdHNLZXldOwogICAg
IFtyZWdpc3RyYXRpb25EaWN0aW9uYXJ5IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJv
b2w6Tk9dIGZvcktleTpXZWJLaXROZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmdFbmFibGVkRGVm
YXVsdHNLZXldOworI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURB
VElPTikKKyAgICBbcmVnaXN0cmF0aW9uRGljdGlvbmFyeSBzZXRPYmplY3Q6W05TTnVtYmVyIG51
bWJlcldpdGhCb29sOk5PXSBmb3JLZXk6V2ViS2l0TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZh
bGlkYXRpb25FbmFibGVkRGVmYXVsdHNLZXldOworI2VuZGlmCiAjZW5kaWYKIAogICAgIFtbTlNV
c2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVsdHM6cmVnaXN0
cmF0aW9uRGljdGlvbmFyeV07CkBAIC0yNTQsNiArMjYwLDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmEKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVu
YWJsZU5ldHdvcmtDYWNoZSA9IGlzTmV0d29ya0NhY2hlRW5hYmxlZCgpOwogICAgIHBhcmFtZXRl
cnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nID0gW2RlZmF1bHRzIGJv
b2xGb3JLZXk6V2ViS2l0TmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nRW5hYmxlZERlZmF1bHRz
S2V5XTsKKyNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04p
CisgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFs
aWRhdGlvbiA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktpdE5ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlUmV2YWxpZGF0aW9uRW5hYmxlZERlZmF1bHRzS2V5XTsKKyNlbmRpZgogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMzVkOTc0ZjFlNjY5NWQ3MTY0MjNmOTEwOWFjZThmZGQyN2I5NmExMC4uZGU2YWY0
MjRmMTdjYWQ5MWQwOGE4ZTY5NzM3ODA4Y2NjMTc2NmM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE3Niw2ICsxMTc2LDEw
IEBACiAJCTdDRjQ3RkZGMTcyNzZBRTMwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXJNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRjQ3RkZE
MTcyNzZBRTMwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXJNYWMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUM0RjBGQjE4RTRBQ0JCMDA4
MDU2QUYgLyogTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFQzRGMEY5MThFNEE5NDUwMDgwNTZBRiAvKiBOZXR3b3Jr
UHJvY2Vzc0NvY29hLm1tICovOyB9OwogCQk4MzA0OEFFNjFBQ0E0NURDMDA4MkM4MzIgLyogUHJv
Y2Vzc1Rocm90dGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODMwNDhBRTUxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJD
bGllbnQuaCAqLzsgfTsKKwkJODMxMDQyOEIxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNo
ZVN1YlJlc291cmNlc0VudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzEwNDI4OTFCRDZCNjZGMDBBNzE1RTQgLyogTmV0d29ya0NhY2hlU3ViUmVz
b3VyY2VzRW50cnkuaCAqLzsgfTsKKwkJODMxMDQyOEMxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdv
cmtDYWNoZVN1YlJlc291cmNlc0VudHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTA0MjhBMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2Fj
aGVTdWJSZXNvdXJjZXNFbnRyeS5jcHAgKi87IH07CisJCTgzMkFFMjUyMUJFMkU4Q0QwMEZBQUUx
MCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQUUyNTAxQkUyRThDRDAwRkFBRTEwIC8qIE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmggKi87IH07CisJCTgzMkFFMjUzMUJFMkU4Q0Qw
MEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJBRTI1MTFCRTJFOENEMDBGQUFF
MTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuY3BwICovOyB9OwogCQk4MzRCMjUw
RjFBODMxQThEMDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0QjI1MEUxQTgzMUE4RDAwQ0ZC
MTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCAqLzsgfTsKIAkJODM0QjI1MTIxQTg0MkM4
NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEIyNTEwMUE4NDJDODcwMENGQjE1MCAvKiBO
ZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmggKi87IH07CiAJCTgzNjAzNDlGMUFDQjM0RDYwMDYyNjU0
OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2MDM0OUQxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNR
TGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgKi87IH07CkBAIC0zNDEwLDYgKzM0MTQsMTAgQEAKIAkJ
N0NGNDdGRkQxNzI3NkFFMzAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5lck1hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZVBhZ2VCYW5uZXJNYWMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VDNEYwRjkxOEU0QTk0NTAwODA1NkFGIC8qIE5l
dHdvcmtQcm9jZXNzQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBOZXR3b3JrUHJvY2Vzc0NvY29hLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Byb2Nlc3NDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMw
NDhBRTUxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzEwNDI4OTFCRDZCNjZGMDBBNzE1RTQgLyogTmV0
d29ya0NhY2hlU3ViUmVzb3VyY2VzRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTmV0d29ya0NhY2hlU3ViUmVzb3VyY2VzRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODMxMDQyOEExQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YlJl
c291cmNlc0VudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5l
dHdvcmtDYWNoZVN1YlJlc291cmNlc0VudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODMyQUUyNTAxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMkFFMjUx
MUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNEIyNTBFMUE4MzFB
OEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODM0QjI1MTAxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hl
U3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzYwMzQ5RDFBQ0Iz
NEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTczLDEwICs3NTgxLDE0IEBACiAJCQkJRTQy
RTA2MEQxQUE3NTBFNTAwQjExNjk5IC8qIE5ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tICov
LAogCQkJCUU0NDM2RUMwMUEwQ0ZEQjIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVLZXkuY3BwICov
LAogCQkJCUU0NDM2RUMxMUEwQ0ZEQjIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVLZXkuaCAqLywK
KwkJCQk4MzJBRTI1MTFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkZXIuY3BwICovLAorCQkJCTgzMkFFMjUwMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRlci5oICovLAogCQkJCTgzQkRDQ0I4MUFDNUZEQjYwMDNGNjQ0MSAv
KiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCAqLywKIAkJCQk4MzRCMjUxMDFBODQyQzg3MDBD
RkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovLAogCQkJCUU0NDM2RUMzMUEwQ0ZE
QjIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCAqLywKIAkJCQlFNDQzNkVDMjFB
MENGREIyMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlU3RvcmFnZS5oICovLAorCQkJCTgzMTA0MjhB
MUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJSZXNvdXJjZXNFbnRyeS5jcHAgKi8s
CisJCQkJODMxMDQyODkxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YlJlc291cmNl
c0VudHJ5LmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IGNhY2hlOwogCQkJcGF0aCA9IE5ldHdvcmtQ
cm9jZXNzL2NhY2hlOwpAQCAtNzcxNCw2ICs3NzI2LDcgQEAKIAkJCQk3NUE4RDJFMTE4N0RFQzFB
MDBDMzlDOUUgLyogQVBJU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NjIxOTU0
RTlCMTAwQzQ4RkZBIC8qIEFQSVNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0
RDY2NDgxOEEyRDkxQTAwRDgyRTIxIC8qIEFQSVVJQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4MzJBRTI1MjFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDREI4NkMxMTIwMEZCOTcwMDcyNTRCRSAvKiBBUElV
UkwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTIzMTVEMTIyQzMwQ0EwMEQ1QzM1QSAvKiBBUElV
UkxSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzkwQTFEMjEyMkRENTVFMDBDQzhDNTAg
LyogQVBJVVJMUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLApAQCAtODMxNSw2ICs4MzI4LDcgQEAK
IAkJCQkyOTNFQkVBQjE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzAxN0QyMTE2MjYzMzA4MDA3MDU0RjUgLyogV0tET01UZXh0SXRlcmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBQjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2Fk
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzEwNDI4QjFCRDZCNjZGMDBBNzE1RTQgLyogTmV0d29y
a0NhY2hlU3ViUmVzb3VyY2VzRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjQ1OTJGMTk0
NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0ZENTQ4QzEz
MkQ4MjY4MDA1NUQ4MTYgLyogV0tFcnJvckNGLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0I1MDQ1
MjE5RUVGMzEzMDBDRTJDRjggLyogV0tFcnJvclByaXZhdGUuaCBpbiBIZWFkZXJzICovLApAQCAt
OTUyNSw2ICs5NTM5LDcgQEAKIAkJCQk3Qzg5RDI5NzFBNjc1M0IyMDAzQTVGREUgLyogQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzQTczQ0YxQTQ4QzdGMTAw
NzIzMUIzIC8qIEFQSVBhZ2VHcm91cEhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUMx
MzM2RTE4NTY1RDJCMDBGM0VDMDUgLyogQVBJUGFnZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk4MzJBRTI1MzFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NFNEQyMUYxQTQ5MTRDQTAwQzdGMTUyIC8q
IEFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUQz
QzFEQzFCNDQ3RUFDMDBFMEVCN0YgLyogQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0g
aW4gU291cmNlcyAqLywKIAkJCQlBMTgyRDVCNDFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJp
bGl0eUlPUy5tbSBpbiBTb3VyY2VzICovLApAQCAtOTc1OSw2ICs5Nzc0LDcgQEAKIAkJCQkxQThF
RjRDQzEyNTI0MDM3MDBGNzA2N0YgLyogUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBMkQ5MUE2MTI4MUQ3MzkwMDFFQjk2MiAvKiBQbHVnaW5Db250cm9sbGVy
UHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQThFRjk2RTEyNTJBRjZCMDBGNzA2N0Yg
LyogUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTgzMTA0MjhDMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJSZXNvdXJj
ZXNFbnRyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTE3OTc3RjEzN0VFODJDMDBGOTdENDUg
LyogUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDM0Y4
QzkwMTczQUY1MkQwMDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QzEzNUFBQzE3M0IwQ0ZGMDA1ODZBRTIgLyogUGx1Z2luSW5mb3JtYXRpb25NYWMu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oIGIv
U291cmNlL1dlYktpdDIvY29uZmlnLmgKaW5kZXggNjhlN2U0ZDdhMDIxYTY5MjA5MjhhNjViODMz
OGJiNjI2ZDEyMzE4NS4uMGQ2NDBjODBhYjdlMWI4ZTg0YmFhZmUxMjg1NGY3ZjQ1MDM1NjAzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvY29uZmlnLmgKKysrIGIvU291cmNlL1dlYktpdDIv
Y29uZmlnLmgKQEAgLTk4LDYgKzk4LDE0IEBACiAjZW5kaWYKICNlbmRpZgogCisjaWZuZGVmIEVO
QUJMRV9ORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTgorI2lmIEVOQUJMRShO
RVRXT1JLX0NBQ0hFKSAmJiBQTEFURk9STShDT0NPQSkKKyNkZWZpbmUgRU5BQkxFX05FVFdPUktf
Q0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OIDEKKyNlbHNlCisjZGVmaW5lIEVOQUJMRV9O
RVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTiAwCisjZW5kaWYKKyNlbmRpZgor
CiAjaWZuZGVmIEhBVkVfU0FGQVJJX1NFUlZJQ0VTX0ZSQU1FV09SSwogI2lmIFBMQVRGT1JNKElP
UykgJiYgKCFkZWZpbmVkIFRBUkdFVF9PU19JT1MgfHwgVEFSR0VUX09TX0lPUykKICNkZWZpbmUg
SEFWRV9TQUZBUklfU0VSVklDRVNfRlJBTUVXT1JLIDEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264895</attachid>
            <date>2015-11-05 15:15:00 -0800</date>
            <delta_ts>2015-11-06 10:17:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150951-20151105151401.patch</filename>
            <type>text/plain</type>
            <size>42091</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTZiNmZkZTljOWE4ODdl
YTg3YmU4NjU2NDI1MGY2MGU4MGMzNWNhMC4uZjIxNzQ1MWJjZWJlMTI0YzcyN2I5ZWJmNzY2Y2M3
Nzc4MmYxMDBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg1IEBACiAyMDE1LTExLTA1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW1dLMl1bU3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb25dIFNhdmUgdG8gZGlzayBjYWNoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiByZXNv
dXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MDk1MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMwOTIxOTY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhIGZpcnN0IHN0
ZXAgdG93YXJkcyBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb24gc3VwcG9ydCBpbgorICAgICAgICB0
aGUgV2ViS2l0IG5ldHdvcmsgY2FjaGUuIEl0IG1hcHMgc3ViLXJlc291cmNlcyB0byB0aGUgbWFp
biByZXNvdXJjZQorICAgICAgICB0aGF0IGNhdXNlZCB0aGVtIHRvIGJlIHJlcXVlc3RlZC4gV2Ug
dGhlbiB3cml0ZSB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZQorICAgICAgICBuZXR3b3JrIGNhY2hl
LCBhcyBhIGxpc3Qgb2Ygc3VicmVzb3VyY2Uga2V5cyBmb3IgZWFjaCBtYWluIHJlc291cmNlLAor
ICAgICAgICBldmVuIGlmIHRoZSBtYWluIHJlc291cmNlIGlzIG5vdCBjYWNoZWFibGUuCisKKyAg
ICAgICAgVG8gbWFwIHN1Yi1yZXNvdXJjZXMgdG8gbWFpbiByZXNvdXJjZXMsIHdlIHRyYWNrIHRo
ZSBsb2FkcyBoYXBwZW5pbmcKKyAgICAgICAgaW4gZWFjaCBmcmFtZSBhbmQgc3RvcmUgdGhlIGtl
eSBvZiB0aGUgbWFpbiByZXNvdXJjZSBmb3IgdGhlIGZyYW1lLAorICAgICAgICBhcyB3ZWxsIGFz
IHRoZSBrZXkgb2YgZWFjaCBzdWItcmVzb3VyY2UgbGF0ZXIgbG9hZGVkIGluIHRoZSBmcmFtZS4g
V2UKKyAgICAgICAgdXNlIGEgSHlzdGVyZXNpc0FjdGl2aXR5IHRvIGRldGVjdCB3aGVuIGxvYWRz
IHNldHRsZSBkb3duIGluIGVhY2ggZnJhbWUKKyAgICAgICAgKG5vIGxvYWRzIGhhcHBlbiBmb3Ig
YSB3aGlsZSkgYW5kIHdlIHRoZW4gd3JpdGUgdGhlIGluZm9ybWF0aW9uIHRvIHRoZQorICAgICAg
ICBkaXNrLiBJZiBhIG5ldyBtYWluIHJlc291cmNlIGlzIGxvYWRlZCBpbiBhIGZyYW1lIHdoZXJl
IHdlIHdlcmUgYWxyZWFkeQorICAgICAgICB0cmFja2luZyBhIGxvYWQsIHdlIHNhdmUgdGhlIGRh
dGEgdG8gZGlzayBiZWZvcmUgdHJhY2tpbmcgdGhlIG5ldyBsb2FkLAorICAgICAgICBpbnN0ZWFk
IG9mIHdhaXRpbmcgZm9yIHRoZSBIeXN0ZXJlc2lzQWN0aXZpdHkgdG8gZGV0ZWN0IHRoZSBlbmQg
b2YgdGhlCisgICAgICAgIGxvYWQuCisKKyAgICAgICAgVGhlIGZlYXR1cmUgaXMgY3VycmVudGx5
IGJlaGluZCBhIGNvbXBpbGUtdGltZSBmbGFnIHRoYXQgaXMgZW5hYmxlZCBvbgorICAgICAgICBN
YWMgYW5kIGlPUyBvbmx5LiBJdCBpcyBhbHNvIGJlaGluZCBhIHJ1bnRpbWUgZmxhZyAoTlNVc2Vy
RGVmYXVsdHMpCisgICAgICAgIHRoYXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQpOgorICAgICAgICBQYXNzIGZyYW1l
SUQgaW4gYWRkaXRpb24gdG8gdGhlIHBhZ2VJRC4gV2UgbmVlZCB0byBnbG9iYWxseSBpZGVudGlm
eQorICAgICAgICBmcmFtZXMgKHVzaW5nIDxwYWdlSUQsIGZyYW1lSUQ+IHBhaXIpIHRvIGJlIGFi
bGUgdG8gdHJhY2sgbG9hZHMgaW4KKyAgICAgICAgZWFjaCBmcmFtZS4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6Q2FjaGU6OmluaXRpYWxpemUpOgorICAgICAgICBPbmx5IGluaXRpYWxpemUg
dGhlIFNwZWN1bGF0aXZlTG9hZGVyIGlmIHRoZQorICAgICAgICBlbmFibGVOZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZVJldmFsaWRhdGlvbiBydW4tdGltZSBmbGFnIGlzIHNldC4KKworICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpyZXRyaWV2ZSk6CisgICAgICAgIFJlZ2lzdGVy
IHRoZSBsb2FkIHdpdGggdGhlIFNwZWN1bGF0aXZlTG9hZGVyLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6S2V5OjpLZXkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OktleTo6
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OktleTo6cmFuZ2UpOgorICAgICAgICAoV1RGOjpOZXR3b3JrQ2FjaGVLZXlIYXNoOjpoYXNoKToK
KyAgICAgICAgKFdURjo6TmV0d29ya0NhY2hlS2V5SGFzaDo6ZXF1YWwpOgorICAgICAgICAoV1RG
OjpIYXNoVHJhaXRzPFdlYktpdDo6TmV0d29ya0NhY2hlOjpLZXk+Ojppc0VtcHR5VmFsdWUpOgor
ICAgICAgICBBZGQgbmVlZGVkIEhhc2hUcmFpdHMgZm9yIE5ldHdvcmtDYWNoZTo6S2V5IHNvIGl0
IGNhbiBiZSB1c2VkIGFzIGtleSBpbgorICAgICAgICBIYXNoTWFwIC8gSGFzaFNldC4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVy
LmNwcDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkZXIuaDogQWRkZWQuCisgICAgICAgIEFkZCBuZXcgTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkZXIgY2xhc3MgdGhhdCB0YWtlcyBjYXJlIG9mIHRyYWNraW5nCisgICAg
ICAgIGxvYWRzIGluIGVhY2ggZnJhbWUgdG8gbWFwIHN1YnJlc291cmNlcyB0byBtYWluIHJlc291
cmNlcyBhbmQgdGhlbiB3cml0ZQorICAgICAgICB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZSBuZXR3
b3JrIGRpc2sgY2FjaGUuIEluIHRoZSBmdXR1cmUsIHRoaXMgY2xhc3Mgd2UKKyAgICAgICAgYWxz
byB0YWtlIGNhcmUgb2YgdHJpZ2dlcmluZyBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb25zLCB0aHVz
IHRoZSBuYW1pbmcuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJv
Y2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFNoYXJl
ZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mp
OgorICAgICAgICBBZGQgbmV3IE5ldHdvcmtQcm9jZXNzIHBhcmFtZXRlciB0byBjb250cm9sIGF0
IHJ1bnRpbWUgaWYgc3BlY3VsYXRpdmUgbG9hZGluZworICAgICAgICBzaG91bGQgYmUgZW5hYmxl
ZCBvciBub3QuIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBXZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMgdG8gWENv
ZGUgcHJvamVjdC4KKworICAgICAgICAqIGNvbmZpZy5oOgorICAgICAgICBBZGQgRU5BQkxFX05F
VFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OIGJ1aWxkIGZsYWcgZm9yIHRoZSBu
ZXcKKyAgICAgICAgZmVhdHVyZSB0aGF0IGlzIGVuYWJsZSBieSBkZWZhdWx0IG9uIENPQ09BLgor
CisyMDE1LTExLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAg
W1dLMl0gQ2xlYW4gdXAgLyBNb2Rlcm5pemUgTmV0d29ya1Jlc291cmNlTG9hZGVyCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA5MjIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggNDA4ZjhiNjJhZmQ2ZjcyNmViZWQ2MWYyODlkZjZjMzU3YWVlY2FiMy4uNjFk
MjU1OGNmM2QyMTJlYmVhN2FmNTcwOGIyODUwZWVlOWE2MjNiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0xMjgsNyArMTI4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAg
ICB9CiAKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBsb2FkZXIodGhpcyk7Ci0g
ICAgTmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS5yZXRyaWV2ZShvcmlnaW5hbFJlcXVlc3QoKSwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgW2xvYWRlcl0oc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtD
YWNoZTo6RW50cnk+IGVudHJ5KSB7CisgICAgTmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS5yZXRy
aWV2ZShvcmlnaW5hbFJlcXVlc3QoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIFtsb2FkZXJdKHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVu
dHJ5PiBlbnRyeSkgewogICAgICAgICBpZiAobG9hZGVyLT5oYXNPbmVSZWYoKSkgewogICAgICAg
ICAgICAgLy8gVGhlIGxvYWRlciBoYXMgYmVlbiBhYm9ydGVkIGFuZCBpcyBvbmx5IGhlbGQgYWxp
dmUgYnkgdGhpcyBsYW1iZGEuCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCA0MDQz
MTdiMGQ2NTc4NDY1OTgzMTVkYTBkZjNjZjgwOWE1NjkxOGY5Li5hMTFiZTJlMmFlMWFkYTJkNDQ0
ZDlhMDkzNmM2YzAwN2FiZmM0NDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoTkVUV09SS19DQUNIRSkKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9DYWNoZVZhbGlkYXRpb24uaD4KQEAgLTcxLDExICs3MiwxNiBAQCBzdGF0aWMgdm9p
ZCBkdW1wRmlsZUNoYW5nZWQoQ2FjaGUqIGNhY2hlKQogfQogI2VuZGlmCiAKLWJvb2wgQ2FjaGU6
OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBjYWNoZVBhdGgsIGJvb2wgZW5hYmxlRWZmaWNhY3lM
b2dnaW5nKQorYm9vbCBDYWNoZTo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGNhY2hlUGF0aCwg
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX3N0b3JhZ2UgPSBTdG9yYWdl
OjpvcGVuKGNhY2hlUGF0aCk7CiAKLSAgICBpZiAoZW5hYmxlRWZmaWNhY3lMb2dnaW5nKQorI2lm
IEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKKyAgICBpZiAo
cGFyYW1ldGVycy5lbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbikKKyAg
ICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVM
b2FkZXI+KCptX3N0b3JhZ2UpOworI2VuZGlmCisKKyAgICBpZiAocGFyYW1ldGVycy5lbmFibGVF
ZmZpY2FjeUxvZ2dpbmcpCiAgICAgICAgIG1fc3RhdGlzdGljcyA9IFN0YXRpc3RpY3M6Om9wZW4o
Y2FjaGVQYXRoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMzM3LDcgKzM0Myw3IEBAIHN0
YXRpYyBTdG9yZURlY2lzaW9uIG1ha2VTdG9yZURlY2lzaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgb3JpZ2luYWxSCiAgICAgcmV0dXJuIFN0b3JlRGVjaXNpb246OlllczsKIH0K
IAotdm9pZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBv
cmlnaW5hbFJlcXVlc3QsIHVpbnQ2NF90IHdlYlBhZ2VJRCwgc3RkOjpmdW5jdGlvbjx2b2lkIChz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+KT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENhY2hlOjpy
ZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
dWludDY0X3Qgd2ViUGFnZUlELCB1aW50NjRfdCB3ZWJGcmFtZUlELCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4pPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoaXNFbmFibGVkKCkpOwogICAgIEFTU0VSVChvcmlnaW5hbFJlcXVlc3QudXJsKCkucHJv
dG9jb2xJc0luSFRUUEZhbWlseSgpKTsKQEAgLTM0OCw2ICszNTQsMTQgQEAgdm9pZCBDYWNoZTo6
cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IHVpbnQ2NF90IHcKICAgICAgICAgbV9zdGF0aXN0aWNzLT5yZWNvcmRSZXRyaWV2YWxSZXF1ZXN0
KHdlYlBhZ2VJRCk7CiAKICAgICBLZXkgc3RvcmFnZUtleSA9IG1ha2VDYWNoZUtleShvcmlnaW5h
bFJlcXVlc3QpOworCisjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJ
REFUSU9OKQorICAgIGlmIChtX3NwZWN1bGF0aXZlTG9hZGVyKQorICAgICAgICBtX3NwZWN1bGF0
aXZlTG9hZGVyLT5yZWdpc3RlckxvYWQod2ViUGFnZUlELCB3ZWJGcmFtZUlELCBvcmlnaW5hbFJl
cXVlc3QsIHN0b3JhZ2VLZXkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0od2ViRnJhbWVJRCk7
CisjZW5kaWYKKwogICAgIGF1dG8gcmV0cmlldmVEZWNpc2lvbiA9IG1ha2VSZXRyaWV2ZURlY2lz
aW9uKG9yaWdpbmFsUmVxdWVzdCk7CiAgICAgaWYgKHJldHJpZXZlRGVjaXNpb24gIT0gUmV0cmll
dmVEZWNpc2lvbjo6WWVzKSB7CiAgICAgICAgIGlmIChtX3N0YXRpc3RpY3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGZi
NGYzMjYyMTI0ZTk3MTc2N2UxYmQwZjRlMTAzMWI4MTY0NzllN2YuLjc4Mzg5ZTA1MzgzYjc1ZGM1
Mzg5ZmExZmIyYzAyN2EyMTI2ZjVjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKIGNsYXNzIENhY2hlOworY2xh
c3MgU3BlY3VsYXRpdmVMb2FkZXI7CiBjbGFzcyBTdGF0aXN0aWNzOwogCiBDYWNoZSYgc2luZ2xl
dG9uKCk7CkBAIC04NywxMyArODgsMTkgQEAgY2xhc3MgQ2FjaGUgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKENhY2hlKTsKICAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxD
YWNoZT47CiBwdWJsaWM6Ci0gICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgY2FjaGVQ
YXRoLCBib29sIGVuYWJsZUVmZmljYWN5TG9nZ2luZyk7CisgICAgc3RydWN0IFBhcmFtZXRlcnMg
eworICAgICAgICBib29sIGVuYWJsZUVmZmljYWN5TG9nZ2luZzsKKyNpZiBFTkFCTEUoTkVUV09S
S19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCisgICAgICAgIGJvb2wgZW5hYmxlTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb247CisjZW5kaWYKKyAgICB9OworICAgIGJv
b2wgaW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGNhY2hlUGF0aCwgY29uc3QgUGFyYW1ldGVycyYp
OwogICAgIHZvaWQgc2V0Q2FwYWNpdHkoc2l6ZV90KTsKIAogICAgIGJvb2wgaXNFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gISFtX3N0b3JhZ2U7IH0KIAogICAgIC8vIENvbXBsZXRpb24gaGFuZGxl
ciBtYXkgZ2V0IGNhbGxlZCBiYWNrIHN5bmNocm9ub3VzbHkgb24gZmFpbHVyZS4KLSAgICB2b2lk
IHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IHdlYlBh
Z2VJRCwgc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+KT4pOworICAg
IHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0X3Qg
d2ViUGFnZUlELCB1aW50NjRfdCB3ZWJGcmFtZUlELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHN0ZDo6
dW5pcXVlX3B0cjxFbnRyeT4pPik7CiAgICAgdm9pZCBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+
KTsKICAgICB2b2lkIHVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50
NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIApAQCAtMTE2LDYgKzEyMyw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkZWxldGVEdW1wRmlsZSgpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0b3Jh
Z2U+IG1fc3RvcmFnZTsKKyNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZB
TElEQVRJT04pCisgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWN1bGF0aXZlTG9hZGVyPiBtX3NwZWN1
bGF0aXZlTG9hZGVyOworI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0YXRpc3RpY3M+IG1f
c3RhdGlzdGljczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCmluZGV4IGI4MjhkNDk1Y2UxODBlYjZlY2Uz
MjI4NzliYTljNTkzN2YxZTA1NWUuLjFmMDZhNjViYjZlZjhkZDM1MDE5MmM0NTg2OTFmODgwOThk
ZDVmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUtleS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlS2V5LmNwcApAQCAtNTQsNiArNTQsMTEgQEAgS2V5OjpLZXkoY29uc3Qg
U3RyaW5nJiBwYXJ0aXRpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiByYW5n
ZSwgY29uc3QKIHsKIH0KIAorS2V5OjpLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBl
KQorICAgIDogbV9pZGVudGlmaWVyKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQoreworfQor
CiBLZXkmIEtleTo6b3BlcmF0b3I9KGNvbnN0IEtleSYgb3RoZXIpCiB7CiAgICAgbV9wYXJ0aXRp
b24gPSBvdGhlci5tX3BhcnRpdGlvbi5pc29sYXRlZENvcHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5oIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmgKaW5kZXggZTYz
M2I2NTE0MGU0ZGNiMDdkOGJjNzA5MGU5ODhlYTA0NDcyMWEyNy4uZTQxYTBlZjU5MjNjZTMzNzIz
MWYwYmRjOTgwOTgzYzIzNjViM2E5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmgKQEAgLTQ5LDExICs0OSwxNSBAQCBw
dWJsaWM6CiAgICAgS2V5JiBvcGVyYXRvcj0oY29uc3QgS2V5Jik7CiAgICAgS2V5JiBvcGVyYXRv
cj0oS2V5JiYpID0gZGVmYXVsdDsKIAorICAgIEtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVR5cGUpOworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXIuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorCiAgICAgYm9vbCBp
c051bGwoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXIuaXNOdWxsKCk7IH0KIAogICAgIGNv
bnN0IFN0cmluZyYgcGFydGl0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYXJ0aXRpb247IH0KICAg
ICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KICAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAg
ICBjb25zdCBTdHJpbmcmIHJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZTsgfQogCiAgICAg
SGFzaFR5cGUgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQogCkBAIC04MSw1ICs4NSwz
NSBAQCBwcml2YXRlOgogfQogfQogCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IE5ldHdvcmtD
YWNoZUtleUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYktpdDo6TmV0
d29ya0NhY2hlOjpLZXkmIGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCo+KGtleS5oYXNoKCkuZGF0YSgpKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6S2V5JiBhLCBjb25z
dCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6S2V5JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEg
PT0gYjsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0
eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERl
ZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OktleT4geworICAgIHR5cGVkZWYgTmV0d29ya0NhY2hlS2V5SGFzaCBIYXNoOworfTsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6S2V5
PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6S2V5PiB7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworCisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOworICAgIHN0YXRp
YyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6S2V5JiBrZXkp
IHsgcmV0dXJuIGtleS5pc051bGwoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNl
bmRpZgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGE4ZDc1OGEyMGY2MjI3MGViMDNiODRiMGY5YWFlNTM5ZWU5ZWZhZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcApAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFU
SVZFX1JFVkFMSURBVElPTikKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRl
ci5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN1YlJl
c291cmNlc0VudHJ5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4K
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdWJy
ZXNvdXJjZXNUeXBlKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHJlc291cmNlKCJzdWJyZXNv
dXJjZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4g
cmVzb3VyY2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgS2V5IG1ha2VTdWJSZXNvdXJjZXNLZXkoY29u
c3QgS2V5JiByZXNvdXJjZUtleSkKK3sKKyAgICByZXR1cm4gS2V5KHJlc291cmNlS2V5LnBhcnRp
dGlvbigpLCBzdWJyZXNvdXJjZXNUeXBlKCksIHJlc291cmNlS2V5LnJhbmdlKCksIHJlc291cmNl
S2V5LmlkZW50aWZpZXIoKSk7Cit9CisKK2NsYXNzIFNwZWN1bGF0aXZlTG9hZGVyOjpQZW5kaW5n
RnJhbWVMb2FkIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQ
ZW5kaW5nRnJhbWVMb2FkKGNvbnN0IEtleSYgbWFpblJlc291cmNlS2V5LCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogbV9tYWluUmVzb3VyY2VLZXko
bWFpblJlc291cmNlS2V5KQorICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoY29tcGxldGlv
bkhhbmRsZXIpCisgICAgICAgICwgbV9sb2FkSHlzdGVyZXNpc0FjdGl2aXR5KFt0aGlzXShIeXN0
ZXJlc2lzU3RhdGUgc3RhdGUpIHsgaWYgKHN0YXRlID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RvcHBl
ZCkgbV9jb21wbGV0aW9uSGFuZGxlcigpOyB9KQorICAgIHsgfQorCisgICAgdm9pZCByZWdpc3Rl
clN1YlJlc291cmNlKGNvbnN0IEtleSYgc3ViUmVzb3VyY2VLZXkpCisgICAgeworICAgICAgICBt
X3N1YlJlc291cmNlS2V5cy5hZGQoc3ViUmVzb3VyY2VLZXkpOworICAgICAgICBtX2xvYWRIeXN0
ZXJlc2lzQWN0aXZpdHkuaW1wdWxzZSgpOworICAgIH0KKworICAgIE9wdGlvbmFsPFN0b3JhZ2U6
OlJlY29yZD4gZW5jb2RlQXNTdWJSZXNvdXJjZXNSZWNvcmQoKQorICAgIHsKKyAgICAgICAgaWYg
KG1fc3ViUmVzb3VyY2VLZXlzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisK
KyAgICAgICAgYXV0byBzdWJyZXNvdXJjZXNTdG9yYWdlS2V5ID0gbWFrZVN1YlJlc291cmNlc0tl
eShtX21haW5SZXNvdXJjZUtleSk7CisgICAgICAgIFZlY3RvcjxLZXk+IHN1YlJlc291cmNlS2V5
czsKKyAgICAgICAgY29weVRvVmVjdG9yKG1fc3ViUmVzb3VyY2VLZXlzLCBzdWJSZXNvdXJjZUtl
eXMpOworCisjaWYgIUxPR19ESVNBQkxFRAorICAgICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBTYXZpbmcgdG8gZGlzayBsaXN0IG9m
IHN1YnJlc291cmNlcyBmb3IgJyVzJzoiLCBtX21haW5SZXNvdXJjZUtleS5pZGVudGlmaWVyKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGZvciAoYXV0byYgc3ViUmVzb3VyY2VLZXkgOiBzdWJS
ZXNvdXJjZUtleXMpCisgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVs
b2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSAqIFN1YnJlc291cmNlOiAnJXMnLiIsIHN1YlJlc291
cmNlS2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgorCisgICAgICAgIFN1
YlJlc291cmNlc0VudHJ5IHN1YnJlc291cmNlRW50cnkoc3VicmVzb3VyY2VzU3RvcmFnZUtleSwg
c3ViUmVzb3VyY2VLZXlzKTsKKyAgICAgICAgcmV0dXJuIHN1YnJlc291cmNlRW50cnkuZW5jb2Rl
QXNTdG9yYWdlUmVjb3JkKCk7CisgICAgfQorCisgICAgdm9pZCBtYXJrQXNDb21wbGV0ZWQoKQor
ICAgIHsKKyAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBLZXkgbV9tYWluUmVzb3VyY2VLZXk7CisgICAgSGFzaFNldDxLZXk+IG1fc3ViUmVzb3Vy
Y2VLZXlzOworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX2NvbXBsZXRpb25IYW5kbGVyOwor
ICAgIEh5c3RlcmVzaXNBY3Rpdml0eSBtX2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHk7Cit9OworCitT
cGVjdWxhdGl2ZUxvYWRlcjo6U3BlY3VsYXRpdmVMb2FkZXIoU3RvcmFnZSYgc3RvcmFnZSkKKyAg
ICA6IG1fc3RvcmFnZShzdG9yYWdlKQoreworfQorCitTcGVjdWxhdGl2ZUxvYWRlcjo6flNwZWN1
bGF0aXZlTG9hZGVyKCkKK3sKK30KKwordm9pZCBTcGVjdWxhdGl2ZUxvYWRlcjo6cmVnaXN0ZXJM
b2FkKHVpbnQ2NF90IHdlYlBhZ2VJRCwgdWludDY0X3Qgd2ViRnJhbWVJRCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBLZXkmIHJlc291cmNlS2V5KQoreworICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpIHx8IHJlcXVlc3QuaHR0cE1ldGhvZCgpICE9ICJHRVQiKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGZyYW1lS2V5ID0gc3RkOjptYWtlX3BhaXIod2ViUGFnZUlE
LCB3ZWJGcmFtZUlEKTsKKyAgICBhdXRvIGlzTWFpblJlc291cmNlID0gcmVxdWVzdC5yZXF1ZXN0
ZXIoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKKyAgICBpZiAoaXNNYWlu
UmVzb3VyY2UpIHsKKyAgICAgICAgLy8gTWFyayBwcmV2aW91cyBsb2FkIGluIHRoaXMgZnJhbWUg
YXMgY29tcGxldGVkIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKGF1dG8qIHBlbmRpbmdGcmFt
ZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmdldChmcmFtZUtleSkpCisgICAgICAgICAgICBw
ZW5kaW5nRnJhbWVMb2FkLT5tYXJrQXNDb21wbGV0ZWQoKTsKKworICAgICAgICAvLyBTdGFydCB0
cmFja2luZyBsb2FkcyBpbiB0aGlzIGZyYW1lLgorICAgICAgICBtX3BlbmRpbmdGcmFtZUxvYWRz
LmFkZChmcmFtZUtleSwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRnJhbWVMb2FkPihyZXNvdXJj
ZUtleSwgW3RoaXMsIGZyYW1lS2V5XSgpIHsKKyAgICAgICAgICAgIGF1dG8gZnJhbWVMb2FkID0g
bV9wZW5kaW5nRnJhbWVMb2Fkcy50YWtlKGZyYW1lS2V5KTsKKyAgICAgICAgICAgIGF1dG8gb3B0
aW9uYWxSZWNvcmQgPSBmcmFtZUxvYWQtPmVuY29kZUFzU3ViUmVzb3VyY2VzUmVjb3JkKCk7Cisg
ICAgICAgICAgICBpZiAoIW9wdGlvbmFsUmVjb3JkKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIG1fc3RvcmFnZS5zdG9yZShvcHRpb25hbFJlY29yZC52YWx1ZSgpLCBbXShj
b25zdCBEYXRhJikgeyB9KTsKKyAgICAgICAgfSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKGF1dG8qIHBlbmRpbmdGcmFtZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmdl
dChmcmFtZUtleSkpCisgICAgICAgIHBlbmRpbmdGcmFtZUxvYWQtPnJlZ2lzdGVyU3ViUmVzb3Vy
Y2UocmVzb3VyY2VLZXkpOworfQorCit9IC8vIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVD
VUxBVElWRV9SRVZBTElEQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yYmRlMzM3ZTExYmIwMDg5NTMyMWU4MTU5ODZlMjBmYmZhYmIyMWNhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlcl9oCisjZGVmaW5lIE5ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyX2gKKworI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQ
RUNVTEFUSVZFX1JFVkFMSURBVElPTikKKworI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2Uu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgTmV0d29ya0NhY2hl
IHsKKworY2xhc3MgU3BlY3VsYXRpdmVMb2FkZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNw
ZWN1bGF0aXZlTG9hZGVyKFN0b3JhZ2UmKTsKKyAgICB+U3BlY3VsYXRpdmVMb2FkZXIoKTsKKwor
ICAgIHZvaWQgcmVnaXN0ZXJMb2FkKHVpbnQ2NF90IHdlYlBhZ2VJRCwgdWludDY0X3Qgd2ViRnJh
bWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgS2V5JiByZXNvdXJj
ZUtleSk7CisKK3ByaXZhdGU6CisgICAgU3RvcmFnZSYgbV9zdG9yYWdlOworCisgICAgY2xhc3Mg
UGVuZGluZ0ZyYW1lTG9hZDsKKyAgICB1c2luZyBHbG9iYWxGcmFtZUlEID0gc3RkOjpwYWlyPHVp
bnQ2NF90IC8qd2ViUGFnZUlEKi8sIHVpbnQ2NF90IC8qd2ViRnJhbWVJRCovPjsKKyAgICBIYXNo
TWFwPEdsb2JhbEZyYW1lSUQsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRnJhbWVMb2FkPj4gbV9w
ZW5kaW5nRnJhbWVMb2FkczsKK307CisKK30gLy8gbmFtZXNwYWNlIE5ldHdvcmtDYWNoZQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQ
RUNVTEFUSVZFX1JFVkFMSURBVElPTikKKworI2VuZGlmIC8vIE5ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN1YlJlc291cmNlc0VudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YlJlc291cmNlc0VudHJ5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ODk5MGE1YWQzY2QxZDQxOWE1MmIwODU0Njc2OTU4NTU0NWI3Y2E2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3ViUmVzb3VyY2VzRW50cnkuY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElW
RV9SRVZBTElEQVRJT04pCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3ViUmVzb3VyY2VzRW50cnku
aCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVDb2RlcnMu
aCIKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVEZWNvZGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nh
Y2hlRW5jb2Rlci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBOZXR3b3JrQ2Fj
aGUgeworCitTdG9yYWdlOjpSZWNvcmQgU3ViUmVzb3VyY2VzRW50cnk6OmVuY29kZUFzU3RvcmFn
ZVJlY29yZCgpIGNvbnN0Cit7CisgICAgRW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIgPDwg
bV9zdWJyZXNvdXJjZUtleXM7CisKKyAgICBlbmNvZGVyLmVuY29kZUNoZWNrc3VtKCk7CisKKyAg
ICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rl
ci5idWZmZXJTaXplKCkgfSAsIHsgfSB9OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U3ViUmVzb3Vy
Y2VzRW50cnk+IFN1YlJlc291cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0
b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdWJS
ZXNvdXJjZXNFbnRyeT4gZW50cnkobmV3IFN1YlJlc291cmNlc0VudHJ5KHN0b3JhZ2VFbnRyeSkp
OworCisgICAgRGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuZGF0YSgpLCBzdG9y
YWdlRW50cnkuaGVhZGVyLnNpemUoKSk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbnRyeS0+
bV9zdWJyZXNvdXJjZUtleXMpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICgh
ZGVjb2Rlci52ZXJpZnlDaGVja3N1bSgpKSB7CisgICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIo
TmV0d29ya1Byb2Nlc3MpIGNoZWNrc3VtIHZlcmlmaWNhdGlvbiBmYWlsdXJlXG4iKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGVudHJ5OworfQorCitTdWJS
ZXNvdXJjZXNFbnRyeTo6U3ViUmVzb3VyY2VzRW50cnkoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBz
dG9yYWdlRW50cnkpCisgICAgOiBtX2tleShzdG9yYWdlRW50cnkua2V5KQorICAgICwgbV90aW1l
U3RhbXAoc3RvcmFnZUVudHJ5LnRpbWVTdGFtcCkKK3sKKyAgICBBU1NFUlQobV9rZXkudHlwZSgp
ID09ICJzdWJyZXNvdXJjZXMiKTsKK30KKworU3ViUmVzb3VyY2VzRW50cnk6OlN1YlJlc291cmNl
c0VudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBWZWN0b3I8S2V5PiYgc3VicmVzb3VyY2VLZXlz
KQorICAgIDogbV9rZXkoa2V5KQorICAgICwgbV90aW1lU3RhbXAoc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6bm93KCkpCisgICAgLCBtX3N1YnJlc291cmNlS2V5cyhzdWJyZXNvdXJjZUtleXMp
Cit7CisgICAgQVNTRVJUKG1fa2V5LnR5cGUoKSA9PSAic3VicmVzb3VyY2VzIik7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhY2hlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dWJSZXNvdXJjZXNFbnRyeS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3ViUmVzb3VyY2VzRW50cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTUxNzlkZTAwMGU1
ZWNhNDc1NDgwYjU1ZjNiNGUyZDk5MTliNTE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3ViUmVzb3VyY2VzRW50cnku
aApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrQ2FjaGVTdWJS
ZXNvdXJjZXNFbnRyeV9oCisjZGVmaW5lIE5ldHdvcmtDYWNoZVN1YlJlc291cmNlc0VudHJ5X2gK
KworI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKKwor
I2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7Citu
YW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKKworY2xhc3MgU3ViUmVzb3VyY2VzRW50cnkgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFN1YlJlc291cmNlc0VudHJ5KTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgU3ViUmVzb3VyY2VzRW50cnkoY29uc3QgS2V5JiwgY29u
c3QgVmVjdG9yPEtleT4mIHN1YnJlc291cmNlS2V5cyk7CisKKyAgICBTdG9yYWdlOjpSZWNvcmQg
ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3Q7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxTdWJSZXNvdXJjZXNFbnRyeT4gZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpS
ZWNvcmQmKTsKKworICAgIGNvbnN0IEtleSYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7IH0K
KyAgICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWVTdGFtcCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZVN0YW1wOyB9CisgICAgY29uc3QgVmVjdG9yPEtleT4mIHN1YnJl
c291cmNlS2V5cygpIGNvbnN0IHsgcmV0dXJuIG1fc3VicmVzb3VyY2VLZXlzOyB9CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgU3ViUmVzb3VyY2VzRW50cnkoY29uc3QgU3RvcmFnZTo6UmVjb3Jk
Jik7CisKKyAgICBLZXkgbV9rZXk7CisgICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtX3RpbWVTdGFtcDsKKyAgICBTdG9yYWdlOjpSZWNvcmQgbV9zb3VyY2VTdG9yYWdl
UmVjb3JkOworICAgIFZlY3RvcjxLZXk+IG1fc3VicmVzb3VyY2VLZXlzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUKKworI2VuZGlmIC8v
IEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKKyNlbmRpZiAv
LyBOZXR3b3JrQ2FjaGVTdWJSZXNvdXJjZXNFbnRyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQppbmRl
eCBjZDIyMDg0NDhkNWNhZGRiNjQzNzFkYzZlNWNjNWUwMGE4YjkwZGU5Li41NDNmZWU0ZGUxMmRm
ZDIzZWUxMmU2NTQxOWZhMWMyNWNjZWRiYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KQEAgLTk1
LDEwICs5NSwxOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3
b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNzQwogICAgIGlmICghbV9kaXNrQ2Fj
aGVEaXJlY3RvcnkuaXNOdWxsKCkpIHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3Vt
ZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKLSAgICAgICAgaWYgKHBhcmFtZXRlcnMuc2hv
dWxkRW5hYmxlTmV0d29ya0NhY2hlICYmIE5ldHdvcmtDYWNoZTo6c2luZ2xldG9uKCkuaW5pdGlh
bGl6ZShtX2Rpc2tDYWNoZURpcmVjdG9yeSwgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3Jr
Q2FjaGVFZmZpY2FjeUxvZ2dpbmcpKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8TlNVUkxDYWNo
ZT4gdXJsQ2FjaGUoYWRvcHROUyhbW05TVVJMQ2FjaGUgYWxsb2NdIGluaXRXaXRoTWVtb3J5Q2Fw
YWNpdHk6MCBkaXNrQ2FwYWNpdHk6MCBkaXNrUGF0aDpuaWxdKSk7Ci0gICAgICAgICAgICBbTlNV
UkxDYWNoZSBzZXRTaGFyZWRVUkxDYWNoZTp1cmxDYWNoZS5nZXQoKV07Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZSkg
eworICAgICAgICAgICAgTmV0d29ya0NhY2hlOjpDYWNoZTo6UGFyYW1ldGVycyBjYWNoZVBhcmFt
ZXRlcnMgPSB7CisgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3Jr
Q2FjaGVFZmZpY2FjeUxvZ2dpbmcsCisjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJ
VkVfUkVWQUxJREFUSU9OKQorICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxl
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24KKyNlbmRpZgorICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgIGlmIChOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLmluaXRpYWxpemUo
bV9kaXNrQ2FjaGVEaXJlY3RvcnksIGNhY2hlUGFyYW1ldGVycykpIHsKKyAgICAgICAgICAgICAg
ICBSZXRhaW5QdHI8TlNVUkxDYWNoZT4gdXJsQ2FjaGUoYWRvcHROUyhbW05TVVJMQ2FjaGUgYWxs
b2NdIGluaXRXaXRoTWVtb3J5Q2FwYWNpdHk6MCBkaXNrQ2FwYWNpdHk6MCBkaXNrUGF0aDpuaWxd
KSk7CisgICAgICAgICAgICAgICAgW05TVVJMQ2FjaGUgc2V0U2hhcmVkVVJMQ2FjaGU6dXJsQ2Fj
aGUuZ2V0KCldOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogI2VuZGlmCiAgICAgICAgIFN0cmluZyBuc1VSTENhY2hlRGlyZWN0b3J5ID0gbV9kaXNr
Q2FjaGVEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggOTEwZTYxOTM0ODE2MmMyNzQw
ZWZmMzFlYzkzOWRkOThhYzU3ODc1ZS4uZjlhMGZmODA4MjljYjY1YjIxMzA3MDhjNzFiZjNmN2M5
NjY0ZDUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3Jr
UHJvY2Vzc0NyZWF0aQogICAgIC8vIENsZWFyIHRoZSBvbGQgc291cCBjYWNoZSBpZiBpdCBleGlz
dHMuCiAgICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNsZWFyQ2FjaGUo
V2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShtX2Rpc2tDYWNoZURpcmVjdG9yeSkpOwogCi0gICAgTmV0
d29ya0NhY2hlOjpzaW5nbGV0b24oKS5pbml0aWFsaXplKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBw
YXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZyk7CisgICAg
TmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS5pbml0aWFsaXplKG1fZGlza0NhY2hlRGlyZWN0b3J5
LCB7IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nIH0p
OwogI2Vsc2UKICAgICAvLyBXZSB1c2VkIHRvIHVzZSB0aGUgZ2l2ZW4gY2FjaGUgZGlyZWN0b3J5
IGZvciB0aGUgc291cCBjYWNoZSwgYnV0IG5vdyB3ZSB1c2UgYSBzdWJkaXJlY3RvcnkgdG8gYXZv
aWQKICAgICAvLyBjb25mbGljdHMgd2l0aCBvdGhlciBjYWNoZSBmaWxlcyBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuIFJlbW92ZSB0aGUgb2xkIGNhY2hlIGZpbGVzIGlmIHRoZXkgc3RpbGwgZXhpc3Qu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggMTk5NTk3ZWZjYWRmZjI5YWM1M2Q0OGU0
NzdjMmUwY2M0NGY1OTk5MS4uOWJiODM0NTA4YjhjNGZiOWFmYTllYWY3MDE4MDU4YmU5M2Y5YTE3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKICAgICBNKE5ldHdvcmspIFwKICAgICBNKE5ldHdvcmtDYWNoZSkgXAogICAg
IE0oTmV0d29ya0NhY2hlU3RvcmFnZSkgXAorICAgIE0oTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQ
cmVsb2FkaW5nKSBcCiAgICAgTShOZXR3b3JrU2NoZWR1bGluZykgXAogICAgIE0oUGx1Z2lucykg
XAogICAgIE0oUHJpbnRpbmcpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApp
bmRleCA1YWFhODIwZjA3NzVjZTE4M2NjMGRiNzEwMjRkZTI3YjM3MzFjMWY4Li5hMzdiYmUzZTE5
YzRlYWEwOGY1OWRjYzU1M2NiNzM2ODI0ZWJiZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCkBAIC01MSw2ICs1MSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uCiAj
aWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVOZXR3
b3JrQ2FjaGU7CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2Fj
eUxvZ2dpbmc7CisjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFU
SU9OKQorICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb247CisjZW5kaWYKICNlbmRpZgogI2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMp
CiAgICAgZW5jb2RlciA8PCBjb29raWVTdG9yYWdlRGlyZWN0b3J5OwpAQCAtMTA0LDYgKzEwNywx
MCBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpB
cmd1bWVudERlY29kZXImIGRlY29kZXIsIE5ldAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNh
Y3lMb2dnaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIEVOQUJMRShORVRXT1JLX0NB
Q0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogI2VuZGlmCiAjaWYgRU5BQkxFKFNFQ0NPTVBf
RklMVEVSUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jb29raWVTdG9yYWdlRGly
ZWN0b3J5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDgwYjYxY2FhZGU2
YjVhODc1MDVjOWQyMDQ3YjliMGUzOTZmYzBiYWUuLjkwODY5YzE5NWM0ZDc3ODQyYWE5YzhiOTUz
NWJlYzM1NjU0YThjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNjAs
NiArNjAsOSBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogI2lm
IEVOQUJMRShORVRXT1JLX0NBQ0hFKQogICAgIGJvb2wgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hl
OwogICAgIGJvb2wgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nOworI2lm
IEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKKyAgICBib29s
IHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uOworI2VuZGlm
CiAjZW5kaWYKICNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAgIFN0cmluZyBjb29raWVT
dG9yYWdlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCA0MjRiOTk3MThkZjQwNzc4YTRlNjllOThi
ODU2MmY5NWY3N2IwMmFjLi5mZDEwODNmNmU2ZmM1ZTFkYWRjNmExZWExY2QzNGUyMDMzZjcyYTVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Bvb2xDb2NvYS5tbQpAQCAtODQsNiArODQsOSBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBX
ZWJLaXQySFRUUFNQcm94eURlZmF1bHRzS2V5ID0gQCJXZWJLaXQySFRUUFNQcm94eSI7CiAjaWYg
RU5BQkxFKE5FVFdPUktfQ0FDSEUpCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJLaXROZXR3
b3JrQ2FjaGVFbmFibGVkRGVmYXVsdHNLZXkgPSBAIldlYktpdE5ldHdvcmtDYWNoZUVuYWJsZWQi
Owogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0TmV0d29ya0NhY2hlRWZmaWNhY3lMb2dn
aW5nRW5hYmxlZERlZmF1bHRzS2V5ID0gQCJXZWJLaXROZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dp
bmdFbmFibGVkIjsKKyNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElE
QVRJT04pCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJLaXROZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZVJldmFsaWRhdGlvbkVuYWJsZWREZWZhdWx0c0tleSA9IEAiV2ViS2l0TmV0d29ya0NhY2hl
UmVzb3VyY2VSZXZhbGlkYXRpb25FbmFibGVkIjsKKyNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtMTA2LDYgKzEwOSw5IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVXNlckRl
ZmF1bHRzSWZOZWVkZWQoKQogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogICAgIFtyZWdpc3Ry
YXRpb25EaWN0aW9uYXJ5IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSBm
b3JLZXk6V2ViS2l0TmV0d29ya0NhY2hlRW5hYmxlZERlZmF1bHRzS2V5XTsKICAgICBbcmVnaXN0
cmF0aW9uRGljdGlvbmFyeSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSBm
b3JLZXk6V2ViS2l0TmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nRW5hYmxlZERlZmF1bHRzS2V5
XTsKKyNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCisg
ICAgW3JlZ2lzdHJhdGlvbkRpY3Rpb25hcnkgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpOT10gZm9yS2V5OldlYktpdE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9u
RW5hYmxlZERlZmF1bHRzS2V5XTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZWdpc3RlckRlZmF1bHRzOnJlZ2lzdHJhdGlvbkRp
Y3Rpb25hcnldOwpAQCAtMjU0LDYgKzI2MCw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhCiAj
aWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3
b3JrQ2FjaGUgPSBpc05ldHdvcmtDYWNoZUVuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3Vs
ZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZyA9IFtkZWZhdWx0cyBib29sRm9yS2V5
OldlYktpdE5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZ0VuYWJsZWREZWZhdWx0c0tleV07Cisj
aWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQorICAgIHBh
cmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24g
PSBbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJLaXROZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFs
aWRhdGlvbkVuYWJsZWREZWZhdWx0c0tleV07CisjZW5kaWYKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDM1ZDk3NGYxZTY2OTVkNzE2NDIzZjkxMDlhY2U4ZmRkMjdiOTZhMTAuLmRlNmFmNDI0ZjE3Y2Fk
OTFkMDhhOGU2OTczNzgwOGNjYzE3NjZjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzYsNiArMTE3NiwxMCBAQAogCQk3
Q0Y0N0ZGRjE3Mjc2QUUzMDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyTWFjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Y0N0ZGRDE3Mjc2QUUz
MDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VDNEYwRkIxOEU0QUNCQjAwODA1NkFGIC8q
IE5ldHdvcmtQcm9jZXNzQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3RUM0RjBGOTE4RTRBOTQ1MDA4MDU2QUYgLyogTmV0d29ya1Byb2Nlc3ND
b2NvYS5tbSAqLzsgfTsKIAkJODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJv
dHRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMDQ4QUU1MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50Lmgg
Ki87IH07CisJCTgzMTA0MjhCMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJSZXNv
dXJjZXNFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODMxMDQyODkxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YlJlc291cmNlc0Vu
dHJ5LmggKi87IH07CisJCTgzMTA0MjhDMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVT
dWJSZXNvdXJjZXNFbnRyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzEwNDI4QTFCRDZCNjZGMDBBNzE1RTQgLyogTmV0d29ya0NhY2hlU3ViUmVz
b3VyY2VzRW50cnkuY3BwICovOyB9OworCQk4MzJBRTI1MjFCRTJFOENEMDBGQUFFMTAgLyogTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkFFMjUwMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRlci5oICovOyB9OworCQk4MzJBRTI1MzFCRTJFOENEMDBGQUFFMTAg
LyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQUUyNTExQkUyRThDRDAwRkFBRTEwIC8qIE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcCAqLzsgfTsKIAkJODM0QjI1MEYxQTgzMUE4
RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEIyNTBFMUE4MzFBOEQwMENGQjE1MCAvKiBO
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggKi87IH07CiAJCTgzNEIyNTEyMUE4NDJDODcwMENGQjE1
MCAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCMjUxMDFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0Nh
Y2hlU3RhdGlzdGljcy5oICovOyB9OwogCQk4MzYwMzQ5RjFBQ0IzNEQ2MDA2MjY1NDkgLyogV2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzNjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRh
YmFzZVRyYWNrZXIuY3BwICovOyB9OwpAQCAtMzQxMCw2ICszNDE0LDEwIEBACiAJCTdDRjQ3RkZE
MTcyNzZBRTMwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXJNYWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVQYWdlQmFubmVyTWFjLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdFQzRGMEY5MThFNEE5NDUwMDgwNTZBRiAvKiBOZXR3b3JrUHJv
Y2Vzc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQ
cm9jZXNzQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDQ4QUU1MUFD
QTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODMxMDQyODkxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNo
ZVN1YlJlc291cmNlc0VudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5l
dHdvcmtDYWNoZVN1YlJlc291cmNlc0VudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTgzMTA0MjhBMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJSZXNvdXJjZXNF
bnRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ2Fj
aGVTdWJSZXNvdXJjZXNFbnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgz
MkFFMjUwMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzJBRTI1MTFCRTJFOENE
MDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCMjUwRTFBODMxQThEMDBDRkIx
NTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzNEIyNTEwMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZVN0YXRpc3Rp
Y3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM2MDM0OUQxQUNCMzRENjAwNjI2
NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNzU3MywxMCArNzU4MSwxNCBAQAogCQkJCUU0MkUwNjBEMUFB
NzUwRTUwMEIxMTY5OSAvKiBOZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbSAqLywKIAkJCQlF
NDQzNkVDMDFBMENGREIyMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlS2V5LmNwcCAqLywKIAkJCQlF
NDQzNkVDMTFBMENGREIyMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlS2V5LmggKi8sCisJCQkJODMy
QUUyNTExQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNw
cCAqLywKKwkJCQk4MzJBRTI1MDFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkZXIuaCAqLywKIAkJCQk4M0JEQ0NCODFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29y
a0NhY2hlU3RhdGlzdGljcy5jcHAgKi8sCiAJCQkJODM0QjI1MTAxQTg0MkM4NzAwQ0ZCMTUwIC8q
IE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCAqLywKIAkJCQlFNDQzNkVDMzFBMENGREIyMDBFQUQy
MDQgLyogTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgKi8sCiAJCQkJRTQ0MzZFQzIxQTBDRkRCMjAw
RUFEMjA0IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2UuaCAqLywKKwkJCQk4MzEwNDI4QTFCRDZCNjZG
MDBBNzE1RTQgLyogTmV0d29ya0NhY2hlU3ViUmVzb3VyY2VzRW50cnkuY3BwICovLAorCQkJCTgz
MTA0Mjg5MUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJSZXNvdXJjZXNFbnRyeS5o
ICovLAogCQkJKTsKIAkJCW5hbWUgPSBjYWNoZTsKIAkJCXBhdGggPSBOZXR3b3JrUHJvY2Vzcy9j
YWNoZTsKQEAgLTc3MTQsNiArNzcyNiw3IEBACiAJCQkJNzVBOEQyRTExODdERUMxQTAwQzM5QzlF
IC8qIEFQSVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkRFNjYyMTk1NEU5QjEwMEM0
OEZGQSAvKiBBUElTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNEQ2NjQ4MThB
MkQ5MUEwMEQ4MkUyMSAvKiBBUElVSUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMyQUUy
NTIxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0RCODZDMTEyMDBGQjk3MDA3MjU0QkUgLyogQVBJVVJMLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0UyMzE1RDEyMkMzMENBMDBENUMzNUEgLyogQVBJVVJMUmVxdWVz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5MEExRDIxMjJERDU1RTAwQ0M4QzUwIC8qIEFQSVVS
TFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKQEAgLTgzMTUsNiArODMyOCw3IEBACiAJCQkJMjkz
RUJFQUIxNjI3RDlDOTAwNUY4OUYxIC8qIFdLRE9NVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMwMTdEMjExNjI2MzMwODAwNzA1NEY1IC8qIFdLRE9NVGV4dEl0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUI3RDc4RDEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJODMxMDQyOEIxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1
YlJlc291cmNlc0VudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUY0NTkyRjE5NDY0QjIwMDBG
OUQ0QTIgLyogV0tFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGRDU0OEMxMzJEODI2ODAw
NTVEODE2IC8qIFdLRXJyb3JDRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdCNTA0NTIxOUVFRjMx
MzAwQ0UyQ0Y4IC8qIFdLRXJyb3JQcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTk1MjUsNiAr
OTUzOSw3IEBACiAJCQkJN0M4OUQyOTcxQTY3NTNCMjAwM0E1RkRFIC8qIEFQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBM0E3M0NGMUE0OEM3RjEwMDcyMzFCMyAv
KiBBUElQYWdlR3JvdXBIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDMTMzNkUxODU2
NUQyQjAwRjNFQzA1IC8qIEFQSVBhZ2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODMy
QUUyNTMxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDRTREMjFGMUE0OTE0Q0EwMEM3RjE1MiAvKiBBUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVEM0MxREMxQjQ0
N0VBQzAwRTBFQjdGIC8qIEFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTE4MkQ1QjQxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1Mu
bW0gaW4gU291cmNlcyAqLywKQEAgLTk3NTksNiArOTc3NCw3IEBACiAJCQkJMUE4RUY0Q0MxMjUy
NDAzNzAwRjcwNjdGIC8qIFBsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTJEOTFBNjEyODFENzM5MDAxRUI5NjIgLyogUGx1Z2luQ29udHJvbGxlclByb3h5TWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RUY5NkUxMjUyQUY2QjAwRjcwNjdGIC8qIFBsdWdp
bkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4
MzEwNDI4QzFCRDZCNjZGMDBBNzE1RTQgLyogTmV0d29ya0NhY2hlU3ViUmVzb3VyY2VzRW50cnku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExNzk3N0YxMzdFRTgyQzAwRjk3RDQ1IC8qIFBsdWdp
bkNyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzNGOEM5MDE3M0FG
NTJEMDA3QjdGMzkgLyogUGx1Z2luSW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0MxMzVBQUMxNzNCMENGRjAwNTg2QUUyIC8qIFBsdWdpbkluZm9ybWF0aW9uTWFjLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaCBiL1NvdXJjZS9X
ZWJLaXQyL2NvbmZpZy5oCmluZGV4IDY4ZTdlNGQ3YTAyMWE2OTIwOTI4YTY1YjgzMzhiYjYyNmQx
MjMxODUuLjBkNjQwYzgwYWI3ZTFiOGU4NGJhYWZlMTI4NTRmN2Y0NTAzNTYwMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5o
CkBAIC05OCw2ICs5OCwxNCBAQAogI2VuZGlmCiAjZW5kaWYKIAorI2lmbmRlZiBFTkFCTEVfTkVU
V09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04KKyNpZiBFTkFCTEUoTkVUV09SS19D
QUNIRSkgJiYgUExBVEZPUk0oQ09DT0EpCisjZGVmaW5lIEVOQUJMRV9ORVRXT1JLX0NBQ0hFX1NQ
RUNVTEFUSVZFX1JFVkFMSURBVElPTiAxCisjZWxzZQorI2RlZmluZSBFTkFCTEVfTkVUV09SS19D
QUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04gMAorI2VuZGlmCisjZW5kaWYKKwogI2lmbmRl
ZiBIQVZFX1NBRkFSSV9TRVJWSUNFU19GUkFNRVdPUksKICNpZiBQTEFURk9STShJT1MpICYmICgh
ZGVmaW5lZCBUQVJHRVRfT1NfSU9TIHx8IFRBUkdFVF9PU19JT1MpCiAjZGVmaW5lIEhBVkVfU0FG
QVJJX1NFUlZJQ0VTX0ZSQU1FV09SSyAxCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264942</attachid>
            <date>2015-11-06 10:17:24 -0800</date>
            <delta_ts>2015-11-06 11:30:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150951-20151106101625.patch</filename>
            <type>text/plain</type>
            <size>44045</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmI0ZDcwODM3OGM2NWRh
ZDM5MTI0YjAzODE4YzdiYmZiZmZmOTljNy4uNTU5NzNhMGE3MTAwYmY0YmNmOTBlY2Q3MjA4NGVm
MGEyMjY5ZGY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE1LTExLTA1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl1bU3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb25dIFNhdmUgdG8gZGlzayBjYWNoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiByZXNv
dXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MDk1MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMwOTIxOTY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhIGZpcnN0IHN0ZXAg
dG93YXJkcyBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb24gc3VwcG9ydCBpbgorICAgICAgICB0aGUg
V2ViS2l0IG5ldHdvcmsgY2FjaGUuIEl0IG1hcHMgc3ViLXJlc291cmNlcyB0byB0aGUgbWFpbiBy
ZXNvdXJjZQorICAgICAgICB0aGF0IGNhdXNlZCB0aGVtIHRvIGJlIHJlcXVlc3RlZC4gV2UgdGhl
biB3cml0ZSB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZQorICAgICAgICBuZXR3b3JrIGNhY2hlLCBh
cyBhIGxpc3Qgb2Ygc3VicmVzb3VyY2Uga2V5cyBmb3IgZWFjaCBtYWluIHJlc291cmNlLAorICAg
ICAgICBldmVuIGlmIHRoZSBtYWluIHJlc291cmNlIGlzIG5vdCBjYWNoZWFibGUuCisKKyAgICAg
ICAgVG8gbWFwIHN1Yi1yZXNvdXJjZXMgdG8gbWFpbiByZXNvdXJjZXMsIHdlIHRyYWNrIHRoZSBs
b2FkcyBoYXBwZW5pbmcKKyAgICAgICAgaW4gZWFjaCBmcmFtZSBhbmQgc3RvcmUgdGhlIGtleSBv
ZiB0aGUgbWFpbiByZXNvdXJjZSBmb3IgdGhlIGZyYW1lLAorICAgICAgICBhcyB3ZWxsIGFzIHRo
ZSBrZXkgb2YgZWFjaCBzdWItcmVzb3VyY2UgbGF0ZXIgbG9hZGVkIGluIHRoZSBmcmFtZS4gV2UK
KyAgICAgICAgdXNlIGEgSHlzdGVyZXNpc0FjdGl2aXR5IHRvIGRldGVjdCB3aGVuIGxvYWRzIHNl
dHRsZSBkb3duIGluIGVhY2ggZnJhbWUKKyAgICAgICAgKG5vIGxvYWRzIGhhcHBlbiBmb3IgYSB3
aGlsZSkgYW5kIHdlIHRoZW4gd3JpdGUgdGhlIGluZm9ybWF0aW9uIHRvIHRoZQorICAgICAgICBk
aXNrLiBJZiBhIG5ldyBtYWluIHJlc291cmNlIGlzIGxvYWRlZCBpbiBhIGZyYW1lIHdoZXJlIHdl
IHdlcmUgYWxyZWFkeQorICAgICAgICB0cmFja2luZyBhIGxvYWQsIHdlIHNhdmUgdGhlIGRhdGEg
dG8gZGlzayBiZWZvcmUgdHJhY2tpbmcgdGhlIG5ldyBsb2FkLAorICAgICAgICBpbnN0ZWFkIG9m
IHdhaXRpbmcgZm9yIHRoZSBIeXN0ZXJlc2lzQWN0aXZpdHkgdG8gZGV0ZWN0IHRoZSBlbmQgb2Yg
dGhlCisgICAgICAgIGxvYWQuCisKKyAgICAgICAgVGhlIGZlYXR1cmUgaXMgY3VycmVudGx5IGJl
aGluZCBhIGNvbXBpbGUtdGltZSBmbGFnIHRoYXQgaXMgZW5hYmxlZCBvbgorICAgICAgICBNYWMg
YW5kIGlPUyBvbmx5LiBJdCBpcyBhbHNvIGJlaGluZCBhIHJ1bnRpbWUgZmxhZyAoTlNVc2VyRGVm
YXVsdHMpCisgICAgICAgIHRoYXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQpOgorICAgICAgICBQYXNzIGZyYW1lSUQg
aW4gYWRkaXRpb24gdG8gdGhlIHBhZ2VJRC4gV2UgbmVlZCB0byBnbG9iYWxseSBpZGVudGlmeQor
ICAgICAgICBmcmFtZXMgKHVzaW5nIDxwYWdlSUQsIGZyYW1lSUQ+IHBhaXIpIHRvIGJlIGFibGUg
dG8gdHJhY2sgbG9hZHMgaW4KKyAgICAgICAgZWFjaCBmcmFtZS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6Q2FjaGU6OmluaXRpYWxpemUpOgorICAgICAgICBPbmx5IGluaXRpYWxpemUgdGhl
IFNwZWN1bGF0aXZlTG9hZGVyIGlmIHRoZQorICAgICAgICBlbmFibGVOZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZVJldmFsaWRhdGlvbiBydW4tdGltZSBmbGFnIGlzIHNldC4KKworICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpyZXRyaWV2ZSk6CisgICAgICAgIFJlZ2lzdGVyIHRo
ZSBsb2FkIHdpdGggdGhlIFNwZWN1bGF0aXZlTG9hZGVyLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6S2V5OjpLZXkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OktleTo6aXNI
YXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6Oktl
eTo6cmFuZ2UpOgorICAgICAgICAoV1RGOjpOZXR3b3JrQ2FjaGVLZXlIYXNoOjpoYXNoKToKKyAg
ICAgICAgKFdURjo6TmV0d29ya0NhY2hlS2V5SGFzaDo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPFdlYktpdDo6TmV0d29ya0NhY2hlOjpLZXk+Ojppc0VtcHR5VmFsdWUpOgorICAg
ICAgICBBZGQgbmVlZGVkIEhhc2hUcmFpdHMgZm9yIE5ldHdvcmtDYWNoZTo6S2V5IHNvIGl0IGNh
biBiZSB1c2VkIGFzIGtleSBpbgorICAgICAgICBIYXNoTWFwIC8gSGFzaFNldC4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNw
cDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkZXIuaDogQWRkZWQuCisgICAgICAgIEFkZCBuZXcgTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkZXIgY2xhc3MgdGhhdCB0YWtlcyBjYXJlIG9mIHRyYWNraW5nCisgICAgICAg
IGxvYWRzIGluIGVhY2ggZnJhbWUgdG8gbWFwIHN1YnJlc291cmNlcyB0byBtYWluIHJlc291cmNl
cyBhbmQgdGhlbiB3cml0ZQorICAgICAgICB0aGlzIGluZm9ybWF0aW9uIHRvIHRoZSBuZXR3b3Jr
IGRpc2sgY2FjaGUuIEluIHRoZSBmdXR1cmUsIHRoaXMgY2xhc3Mgd2UKKyAgICAgICAgYWxzbyB0
YWtlIGNhcmUgb2YgdHJpZ2dlcmluZyBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb25zLCB0aHVzIHRo
ZSBuYW1pbmcuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vz
c0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OnJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICBBZGQgbmV3IE5ldHdvcmtQcm9jZXNzIHBhcmFtZXRlciB0byBjb250cm9sIGF0IHJ1
bnRpbWUgaWYgc3BlY3VsYXRpdmUgbG9hZGluZworICAgICAgICBzaG91bGQgYmUgZW5hYmxlZCBv
ciBub3QuIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBXZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMgdG8gWENvZGUg
cHJvamVjdC4KKworICAgICAgICAqIGNvbmZpZy5oOgorICAgICAgICBBZGQgRU5BQkxFX05FVFdP
UktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OIGJ1aWxkIGZsYWcgZm9yIHRoZSBuZXcK
KyAgICAgICAgZmVhdHVyZSB0aGF0IGlzIGVuYWJsZSBieSBkZWZhdWx0IG9uIENPQ09BLgorCiAy
MDE1LTExLTA2ICBQaGlsaXAgQ2hpbWVudG8gIDxwaGlsaXAuY2hpbWVudG9AZ21haWwuY29tPgog
CiAgICAgICAgIFtHVEtdIEZhaWxzIHRvIGxpbmsgbGlid2Via2l0Mmd0a2luamVjdGVkYnVuZGxl
LnNvIG9uIE9TWApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDA4ZjhiNjJhZmQ2ZjcyNmViZWQ2MWYyODlk
ZjZjMzU3YWVlY2FiMy4uNjFkMjU1OGNmM2QyMTJlYmVhN2FmNTcwOGIyODUwZWVlOWE2MjNiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnN0YXJ0KCkKICAgICB9CiAKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVy
PiBsb2FkZXIodGhpcyk7Ci0gICAgTmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS5yZXRyaWV2ZShv
cmlnaW5hbFJlcXVlc3QoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgW2xvYWRlcl0oc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IGVudHJ5KSB7CisgICAgTmV0d29ya0NhY2hl
OjpzaW5nbGV0b24oKS5yZXRyaWV2ZShvcmlnaW5hbFJlcXVlc3QoKSwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIFtsb2FkZXJdKHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBlbnRyeSkgewogICAgICAgICBpZiAobG9hZGVyLT5oYXNP
bmVSZWYoKSkgewogICAgICAgICAgICAgLy8gVGhlIGxvYWRlciBoYXMgYmVlbiBhYm9ydGVkIGFu
ZCBpcyBvbmx5IGhlbGQgYWxpdmUgYnkgdGhpcyBsYW1iZGEuCiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcAppbmRleCA0MDQzMTdiMGQ2NTc4NDY1OTgzMTVkYTBkZjNjZjgwOWE1NjkxOGY5Li5h
MTFiZTJlMmFlMWFkYTJkNDQ0ZDlhMDkzNmM2YzAwN2FiZmM0NDA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKIAogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9y
YWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVZhbGlkYXRpb24uaD4KQEAgLTcxLDExICs3
MiwxNiBAQCBzdGF0aWMgdm9pZCBkdW1wRmlsZUNoYW5nZWQoQ2FjaGUqIGNhY2hlKQogfQogI2Vu
ZGlmCiAKLWJvb2wgQ2FjaGU6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBjYWNoZVBhdGgsIGJv
b2wgZW5hYmxlRWZmaWNhY3lMb2dnaW5nKQorYm9vbCBDYWNoZTo6aW5pdGlhbGl6ZShjb25zdCBT
dHJpbmcmIGNhY2hlUGF0aCwgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBt
X3N0b3JhZ2UgPSBTdG9yYWdlOjpvcGVuKGNhY2hlUGF0aCk7CiAKLSAgICBpZiAoZW5hYmxlRWZm
aWNhY3lMb2dnaW5nKQorI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFM
SURBVElPTikKKyAgICBpZiAocGFyYW1ldGVycy5lbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZVJldmFsaWRhdGlvbikKKyAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8U3BlY3VsYXRpdmVMb2FkZXI+KCptX3N0b3JhZ2UpOworI2VuZGlmCisKKyAgICBpZiAo
cGFyYW1ldGVycy5lbmFibGVFZmZpY2FjeUxvZ2dpbmcpCiAgICAgICAgIG1fc3RhdGlzdGljcyA9
IFN0YXRpc3RpY3M6Om9wZW4oY2FjaGVQYXRoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAt
MzM3LDcgKzM0Myw3IEBAIHN0YXRpYyBTdG9yZURlY2lzaW9uIG1ha2VTdG9yZURlY2lzaW9uKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSCiAgICAgcmV0dXJuIFN0b3Jl
RGVjaXNpb246OlllczsKIH0KIAotdm9pZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIHVpbnQ2NF90IHdlYlBhZ2VJRCwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+KT4gY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwgdWludDY0X3Qgd2ViUGFnZUlELCB1aW50NjRfdCB3ZWJGcmFtZUlE
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4pPiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNFbmFibGVkKCkpOwogICAgIEFTU0VSVChvcmlnaW5h
bFJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKTsKQEAgLTM0OCw2ICszNTQs
MTQgQEAgdm9pZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIHVpbnQ2NF90IHcKICAgICAgICAgbV9zdGF0aXN0aWNzLT5yZWNv
cmRSZXRyaWV2YWxSZXF1ZXN0KHdlYlBhZ2VJRCk7CiAKICAgICBLZXkgc3RvcmFnZUtleSA9IG1h
a2VDYWNoZUtleShvcmlnaW5hbFJlcXVlc3QpOworCisjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVf
U1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQorICAgIGlmIChtX3NwZWN1bGF0aXZlTG9hZGVyKQor
ICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZGVyLT5yZWdpc3RlckxvYWQod2ViUGFnZUlELCB3ZWJG
cmFtZUlELCBvcmlnaW5hbFJlcXVlc3QsIHN0b3JhZ2VLZXkpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0od2ViRnJhbWVJRCk7CisjZW5kaWYKKwogICAgIGF1dG8gcmV0cmlldmVEZWNpc2lvbiA9
IG1ha2VSZXRyaWV2ZURlY2lzaW9uKG9yaWdpbmFsUmVxdWVzdCk7CiAgICAgaWYgKHJldHJpZXZl
RGVjaXNpb24gIT0gUmV0cmlldmVEZWNpc2lvbjo6WWVzKSB7CiAgICAgICAgIGlmIChtX3N0YXRp
c3RpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5oCmluZGV4IGZiNGYzMjYyMTI0ZTk3MTc2N2UxYmQwZjRlMTAzMWI4MTY0NzllN2Yu
Ljc4Mzg5ZTA1MzgzYjc1ZGM1Mzg5ZmExZmIyYzAyN2EyMTI2ZjVjODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC00NCw2
ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAK
IGNsYXNzIENhY2hlOworY2xhc3MgU3BlY3VsYXRpdmVMb2FkZXI7CiBjbGFzcyBTdGF0aXN0aWNz
OwogCiBDYWNoZSYgc2luZ2xldG9uKCk7CkBAIC04NywxMyArODgsMTkgQEAgY2xhc3MgQ2FjaGUg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhY2hlKTsKICAgICBmcmllbmQgY2xhc3MgV1RG
OjpOZXZlckRlc3Ryb3llZDxDYWNoZT47CiBwdWJsaWM6Ci0gICAgYm9vbCBpbml0aWFsaXplKGNv
bnN0IFN0cmluZyYgY2FjaGVQYXRoLCBib29sIGVuYWJsZUVmZmljYWN5TG9nZ2luZyk7CisgICAg
c3RydWN0IFBhcmFtZXRlcnMgeworICAgICAgICBib29sIGVuYWJsZUVmZmljYWN5TG9nZ2luZzsK
KyNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCisgICAg
ICAgIGJvb2wgZW5hYmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb247CisjZW5k
aWYKKyAgICB9OworICAgIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGNhY2hlUGF0aCwg
Y29uc3QgUGFyYW1ldGVycyYpOwogICAgIHZvaWQgc2V0Q2FwYWNpdHkoc2l6ZV90KTsKIAogICAg
IGJvb2wgaXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gISFtX3N0b3JhZ2U7IH0KIAogICAgIC8v
IENvbXBsZXRpb24gaGFuZGxlciBtYXkgZ2V0IGNhbGxlZCBiYWNrIHN5bmNocm9ub3VzbHkgb24g
ZmFpbHVyZS4KLSAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIHVpbnQ2NF90IHdlYlBhZ2VJRCwgc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+KT4pOworICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgdWludDY0X3Qgd2ViUGFnZUlELCB1aW50NjRfdCB3ZWJGcmFtZUlELCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4pPik7CiAgICAgdm9pZCBzdG9yZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgc3RkOjpmdW5jdGlvbjx2
b2lkIChNYXBwZWRCb2R5Jik+KTsKICAgICB2b2lkIHVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCB1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IEVudHJ5JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIApAQCAtMTE2LDYg
KzEyMyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVEdW1wRmlsZSgpOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFN0b3JhZ2U+IG1fc3RvcmFnZTsKKyNpZiBFTkFCTEUoTkVUV09SS19DQUNI
RV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCisgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWN1bGF0
aXZlTG9hZGVyPiBtX3NwZWN1bGF0aXZlTG9hZGVyOworI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFN0YXRpc3RpY3M+IG1fc3RhdGlzdGljczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRl
eCBlNmQ4ZmM5NjQ5MTEyYmYzYjE5ZTNlZjJhMjM3Y2MwODhmMWFjMWUxLi5lNzE3NzdiM2RjNjBi
YzdkZjA3ZTUwNjA3NTg1MmY1ZDM4ZTRiMzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC03OSw3
ICs3OSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkg
Y29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29y
ZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2VFbnRyeSkKIHsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IGVudHJ5KG5ldyBFbnRyeShzdG9yYWdlRW50cnkpKTsKKyAgICBhdXRvIGVu
dHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAogICAgIERlY29k
ZXIgZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZUVudHJ5LmhlYWRl
ci5zaXplKCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fcmVzcG9uc2UpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRW50cnkuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmgKaW5kZXggZWZhNWU2ODBjOWQ5MTE4ZjE3ZGNkZjhlN2VhN2QxZGE2MWViMGQ3
NC4uOGRlMzkzZmE4ODkzMDE3ODM4ZTFmYzJhNDE5MjRhMzk0MjdjNGFkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIEVudHJ5IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShFbnRyeSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEVudHJ5
KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CisgICAgZXhwbGljaXQgRW50cnkoY29uc3Qg
U3RvcmFnZTo6UmVjb3JkJik7CiAKICAgICBTdG9yYWdlOjpSZWNvcmQgZW5jb2RlQXNTdG9yYWdl
UmVjb3JkKCkgY29uc3Q7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZGVjb2Rl
U3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmKTsKQEAgLTY4LDcgKzY5LDYgQEAg
cHVibGljOgogICAgIHZvaWQgYXNKU09OKFN0cmluZ0J1aWxkZXImLCBjb25zdCBTdG9yYWdlOjpS
ZWNvcmRJbmZvJikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgRW50cnkoY29uc3QgU3RvcmFnZTo6
UmVjb3JkJik7CiAgICAgdm9pZCBpbml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKSBj
b25zdDsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIHZvaWQgaW5pdGlhbGl6
ZVNoYXJlYWJsZVJlc291cmNlSGFuZGxlRnJvbVN0b3JhZ2VSZWNvcmQoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtl
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVL
ZXkuY3BwCmluZGV4IGI4MjhkNDk1Y2UxODBlYjZlY2UzMjI4NzliYTljNTkzN2YxZTA1NWUuLjFm
MDZhNjViYjZlZjhkZDM1MDE5MmM0NTg2OTFmODgwOThkZDVmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcApA
QCAtNTQsNiArNTQsMTEgQEAgS2V5OjpLZXkoY29uc3QgU3RyaW5nJiBwYXJ0aXRpb24sIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiByYW5nZSwgY29uc3QKIHsKIH0KIAorS2V5OjpL
ZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgIDogbV9pZGVudGlmaWVyKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQoreworfQorCiBLZXkmIEtleTo6b3BlcmF0b3I9KGNv
bnN0IEtleSYgb3RoZXIpCiB7CiAgICAgbV9wYXJ0aXRpb24gPSBvdGhlci5tX3BhcnRpdGlvbi5p
c29sYXRlZENvcHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUtleS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlS2V5LmgKaW5kZXggZTYzM2I2NTE0MGU0ZGNiMDdkOGJjNzA5MGU5
ODhlYTA0NDcyMWEyNy4uMTJhNzAwN2ZkMjFhZTM1NWExMjk2MTEzNDNhZDE4ZmExMWQxYmRjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlS2V5LmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlS2V5LmgKQEAgLTQ5LDExICs0OSwxNSBAQCBwdWJsaWM6CiAgICAgS2V5JiBvcGVyYXRv
cj0oY29uc3QgS2V5Jik7CiAgICAgS2V5JiBvcGVyYXRvcj0oS2V5JiYpID0gZGVmYXVsdDsKIAor
ICAgIEtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOworICAgIGJvb2wgaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXIuaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKTsgfQorCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXIuaXNOdWxsKCk7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgcGFydGl0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXJ0aXRpb247IH0KICAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJhbmdlKCkg
Y29uc3QgeyByZXR1cm4gbV9yYW5nZTsgfQogCiAgICAgSGFzaFR5cGUgaGFzaCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzaDsgfQogCkBAIC04MSw1ICs4NSwzNiBAQCBwcml2YXRlOgogfQogfQogCitu
YW1lc3BhY2UgV1RGIHsKKworc3RydWN0IE5ldHdvcmtDYWNoZUtleUhhc2ggeworICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpLZXkmIGtleSkKKyAg
ICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoU0hBMTo6aGFzaFNpemUgPj0gc2l6ZW9mKHVuc2ln
bmVkKSwgIkhhc2ggc2l6ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBzaXplb2YodW5zaWduZWQpIik7
CisgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCo+KGtleS5o
YXNoKCkuZGF0YSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6S2V5JiBhLCBjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6S2V5
JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICB9CisKKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1
Y3QgRGVmYXVsdEhhc2g8V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OktleT4geworICAgIHR5cGVkZWYg
TmV0d29ya0NhY2hlS2V5SGFzaCBIYXNoOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRy
YWl0czxXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6S2V5PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6S2V5PiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlW
YWx1ZUlzWmVybyA9IGZhbHNlOworCisgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZh
bHVlRnVuY3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6S2V5JiBrZXkpIHsgcmV0dXJuIGtleS5pc051bGwoKTsgfQor
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZgogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNmNWM5NWFjZWYzNDVkYTlk
NGRkNmVhZWQ2MmNlYzNhN2NmNTFkYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcApA
QCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKKyNpbmNsdWRl
ICJOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
bmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdWJyZXNvdXJjZXNUeXBlKCkKK3sKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9taWNTdHJpbmc+IHJlc291cmNlKCJzdWJyZXNvdXJjZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gcmVzb3VyY2U7Cit9CisKK3N0YXRpYyBpbmxp
bmUgS2V5IG1ha2VTdWJyZXNvdXJjZXNLZXkoY29uc3QgS2V5JiByZXNvdXJjZUtleSkKK3sKKyAg
ICByZXR1cm4gS2V5KHJlc291cmNlS2V5LnBhcnRpdGlvbigpLCBzdWJyZXNvdXJjZXNUeXBlKCks
IHJlc291cmNlS2V5LnJhbmdlKCksIHJlc291cmNlS2V5LmlkZW50aWZpZXIoKSk7Cit9CisKK2Ns
YXNzIFNwZWN1bGF0aXZlTG9hZGVyOjpQZW5kaW5nRnJhbWVMb2FkIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQZW5kaW5nRnJhbWVMb2FkKGNvbnN0IEtleSYg
bWFpblJlc291cmNlS2V5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIp
CisgICAgICAgIDogbV9tYWluUmVzb3VyY2VLZXkobWFpblJlc291cmNlS2V5KQorICAgICAgICAs
IG1fY29tcGxldGlvbkhhbmRsZXIoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICwgbV9sb2Fk
SHlzdGVyZXNpc0FjdGl2aXR5KFt0aGlzXShIeXN0ZXJlc2lzU3RhdGUgc3RhdGUpIHsgaWYgKHN0
YXRlID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCkgbV9jb21wbGV0aW9uSGFuZGxlcigpOyB9
KQorICAgIHsgfQorCisgICAgdm9pZCByZWdpc3RlclN1YnJlc291cmNlKGNvbnN0IEtleSYgc3Vi
cmVzb3VyY2VLZXkpCisgICAgeworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwor
ICAgICAgICBtX3N1YnJlc291cmNlS2V5cy5hZGQoc3VicmVzb3VyY2VLZXkpOworICAgICAgICBt
X2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHkuaW1wdWxzZSgpOworICAgIH0KKworICAgIE9wdGlvbmFs
PFN0b3JhZ2U6OlJlY29yZD4gZW5jb2RlQXNTdWJyZXNvdXJjZXNSZWNvcmQoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYgKG1fc3VicmVzb3Vy
Y2VLZXlzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgYXV0
byBzdWJyZXNvdXJjZXNTdG9yYWdlS2V5ID0gbWFrZVN1YnJlc291cmNlc0tleShtX21haW5SZXNv
dXJjZUtleSk7CisgICAgICAgIFZlY3RvcjxLZXk+IHN1YnJlc291cmNlS2V5czsKKyAgICAgICAg
Y29weVRvVmVjdG9yKG1fc3VicmVzb3VyY2VLZXlzLCBzdWJyZXNvdXJjZUtleXMpOworCisjaWYg
IUxPR19ESVNBQkxFRAorICAgICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2Fk
aW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBTYXZpbmcgdG8gZGlzayBsaXN0IG9mIHN1YnJlc291cmNl
cyBmb3IgJyVzJzoiLCBtX21haW5SZXNvdXJjZUtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIGZvciAoYXV0byYgc3VicmVzb3VyY2VLZXkgOiBzdWJyZXNvdXJjZUtleXMp
CisgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5l
dHdvcmtQcm9jZXNzKSAqIFN1YnJlc291cmNlOiAnJXMnLiIsIHN1YnJlc291cmNlS2V5LmlkZW50
aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgorCisgICAgICAgIHJldHVybiBTdWJyZXNv
dXJjZXNFbnRyeShzdWJyZXNvdXJjZXNTdG9yYWdlS2V5LCBXVEY6Om1vdmUoc3VicmVzb3VyY2VL
ZXlzKSkuZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7CisgICAgfQorCisgICAgdm9pZCBtYXJrQXND
b21wbGV0ZWQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAg
ICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBLZXkg
bV9tYWluUmVzb3VyY2VLZXk7CisgICAgSGFzaFNldDxLZXk+IG1fc3VicmVzb3VyY2VLZXlzOwor
ICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIEh5c3Rl
cmVzaXNBY3Rpdml0eSBtX2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHk7Cit9OworCitTcGVjdWxhdGl2
ZUxvYWRlcjo6U3BlY3VsYXRpdmVMb2FkZXIoU3RvcmFnZSYgc3RvcmFnZSkKKyAgICA6IG1fc3Rv
cmFnZShzdG9yYWdlKQoreworfQorCitTcGVjdWxhdGl2ZUxvYWRlcjo6flNwZWN1bGF0aXZlTG9h
ZGVyKCkKK3sKK30KKwordm9pZCBTcGVjdWxhdGl2ZUxvYWRlcjo6cmVnaXN0ZXJMb2FkKHVpbnQ2
NF90IHdlYlBhZ2VJRCwgdWludDY0X3Qgd2ViRnJhbWVJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBLZXkmIHJlc291cmNlS2V5KQoreworICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CisKKyAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpIHx8IHJlcXVlc3QuaHR0cE1ldGhvZCgpICE9ICJHRVQiKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGZyYW1lS2V5ID0gc3RkOjptYWtlX3BhaXIod2ViUGFnZUlELCB3ZWJGcmFt
ZUlEKTsKKyAgICBhdXRvIGlzTWFpblJlc291cmNlID0gcmVxdWVzdC5yZXF1ZXN0ZXIoKSA9PSBS
ZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKKyAgICBpZiAoaXNNYWluUmVzb3VyY2Up
IHsKKyAgICAgICAgLy8gTWFyayBwcmV2aW91cyBsb2FkIGluIHRoaXMgZnJhbWUgYXMgY29tcGxl
dGVkIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKGF1dG8qIHBlbmRpbmdGcmFtZUxvYWQgPSBt
X3BlbmRpbmdGcmFtZUxvYWRzLmdldChmcmFtZUtleSkpCisgICAgICAgICAgICBwZW5kaW5nRnJh
bWVMb2FkLT5tYXJrQXNDb21wbGV0ZWQoKTsKKworICAgICAgICAvLyBTdGFydCB0cmFja2luZyBs
b2FkcyBpbiB0aGlzIGZyYW1lLgorICAgICAgICBtX3BlbmRpbmdGcmFtZUxvYWRzLmFkZChmcmFt
ZUtleSwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRnJhbWVMb2FkPihyZXNvdXJjZUtleSwgW3Ro
aXMsIGZyYW1lS2V5XSgpIHsKKyAgICAgICAgICAgIGF1dG8gZnJhbWVMb2FkID0gbV9wZW5kaW5n
RnJhbWVMb2Fkcy50YWtlKGZyYW1lS2V5KTsKKyAgICAgICAgICAgIGF1dG8gb3B0aW9uYWxSZWNv
cmQgPSBmcmFtZUxvYWQtPmVuY29kZUFzU3VicmVzb3VyY2VzUmVjb3JkKCk7CisgICAgICAgICAg
ICBpZiAoIW9wdGlvbmFsUmVjb3JkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIG1fc3RvcmFnZS5zdG9yZShvcHRpb25hbFJlY29yZC52YWx1ZSgpLCBbXShjb25zdCBEYXRh
JikgeyB9KTsKKyAgICAgICAgfSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KGF1dG8qIHBlbmRpbmdGcmFtZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmdldChmcmFtZUtl
eSkpCisgICAgICAgIHBlbmRpbmdGcmFtZUxvYWQtPnJlZ2lzdGVyU3VicmVzb3VyY2UocmVzb3Vy
Y2VLZXkpOworfQorCit9IC8vIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9S
RVZBTElEQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yYmRlMzM3ZTExYmIwMDg5NTMyMWU4MTU5ODZlMjBmYmZhYmIyMWNhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlcl9oCisjZGVmaW5lIE5ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZGVyX2gKKworI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZF
X1JFVkFMSURBVElPTikKKworI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKKworY2xh
c3MgU3BlY3VsYXRpdmVMb2FkZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0aXZl
TG9hZGVyKFN0b3JhZ2UmKTsKKyAgICB+U3BlY3VsYXRpdmVMb2FkZXIoKTsKKworICAgIHZvaWQg
cmVnaXN0ZXJMb2FkKHVpbnQ2NF90IHdlYlBhZ2VJRCwgdWludDY0X3Qgd2ViRnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgS2V5JiByZXNvdXJjZUtleSk7CisK
K3ByaXZhdGU6CisgICAgU3RvcmFnZSYgbV9zdG9yYWdlOworCisgICAgY2xhc3MgUGVuZGluZ0Zy
YW1lTG9hZDsKKyAgICB1c2luZyBHbG9iYWxGcmFtZUlEID0gc3RkOjpwYWlyPHVpbnQ2NF90IC8q
d2ViUGFnZUlEKi8sIHVpbnQ2NF90IC8qd2ViRnJhbWVJRCovPjsKKyAgICBIYXNoTWFwPEdsb2Jh
bEZyYW1lSUQsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRnJhbWVMb2FkPj4gbV9wZW5kaW5nRnJh
bWVMb2FkczsKK307CisKK30gLy8gbmFtZXNwYWNlIE5ldHdvcmtDYWNoZQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZF
X1JFVkFMSURBVElPTikKKworI2VuZGlmIC8vIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
N2RkMDAwMjMyYzU0YWM1MzNmNTE0ZjRjZjMwNmE4MmU1ODc5YWNmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnkuY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElE
QVRJT04pCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaCIKKworI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVDb2RlcnMuaCIKKyNpbmNs
dWRlICJOZXR3b3JrQ2FjaGVEZWNvZGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlRW5jb2Rl
ci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgeworCitT
dG9yYWdlOjpSZWNvcmQgU3VicmVzb3VyY2VzRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgp
IGNvbnN0Cit7CisgICAgRW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIgPDwgbV9zdWJyZXNv
dXJjZUtleXM7CisKKyAgICBlbmNvZGVyLmVuY29kZUNoZWNrc3VtKCk7CisKKyAgICByZXR1cm4g
eyBtX2tleSwgbV90aW1lU3RhbXAsIHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJT
aXplKCkgfSAsIHsgfSB9OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+
IFN1YnJlc291cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJl
Y29yZCYgc3RvcmFnZUVudHJ5KQoreworICAgIGF1dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVl
PFN1YnJlc291cmNlc0VudHJ5PihzdG9yYWdlRW50cnkpOworCisgICAgRGVjb2RlciBkZWNvZGVy
KHN0b3JhZ2VFbnRyeS5oZWFkZXIuZGF0YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbnRyeS0+bV9zdWJyZXNvdXJjZUtleXMpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghZGVjb2Rlci52ZXJpZnlDaGVja3N1bSgp
KSB7CisgICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIGNoZWNrc3Vt
IHZlcmlmaWNhdGlvbiBmYWlsdXJlXG4iKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgcmV0dXJuIGVudHJ5OworfQorCitTdWJyZXNvdXJjZXNFbnRyeTo6U3VicmVzb3Vy
Y2VzRW50cnkoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50cnkpCisgICAgOiBtX2tl
eShzdG9yYWdlRW50cnkua2V5KQorICAgICwgbV90aW1lU3RhbXAoc3RvcmFnZUVudHJ5LnRpbWVT
dGFtcCkKK3sKKyAgICBBU1NFUlQobV9rZXkudHlwZSgpID09ICJzdWJyZXNvdXJjZXMiKTsKK30K
KworU3VicmVzb3VyY2VzRW50cnk6OlN1YnJlc291cmNlc0VudHJ5KGNvbnN0IEtleSYga2V5LCBW
ZWN0b3I8S2V5PiYmIHN1YnJlc291cmNlS2V5cykKKyAgICA6IG1fa2V5KGtleSkKKyAgICAsIG1f
dGltZVN0YW1wKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpKQorICAgICwgbV9zdWJy
ZXNvdXJjZUtleXMoV1RGOjptb3ZlKHN1YnJlc291cmNlS2V5cykpCit7CisgICAgQVNTRVJUKG1f
a2V5LnR5cGUoKSA9PSAic3VicmVzb3VyY2VzIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorfSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhY2hlCisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09S
S19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5o
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWFkYmQyZWZiODEyOWFjZWRmNGQxN2NmNDljZmMz
NDNjYmU4MDkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaApAQCAtMCwwICsxLDYwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeV9oCisj
ZGVmaW5lIE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5X2gKKworI2lmIEVOQUJMRShORVRX
T1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKKworI2luY2x1ZGUgIk5ldHdvcmtD
YWNoZVN0b3JhZ2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgTmV0d29ya0Nh
Y2hlIHsKKworY2xhc3MgU3VicmVzb3VyY2VzRW50cnkgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFN1YnJlc291cmNlc0VudHJ5KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgU3VicmVzb3VyY2VzRW50cnkoY29uc3QgS2V5JiwgVmVjdG9yPEtleT4mJiBzdWJyZXNv
dXJjZUtleXMpOworICAgIGV4cGxpY2l0IFN1YnJlc291cmNlc0VudHJ5KGNvbnN0IFN0b3JhZ2U6
OlJlY29yZCYpOworCisgICAgU3RvcmFnZTo6UmVjb3JkIGVuY29kZUFzU3RvcmFnZVJlY29yZCgp
IGNvbnN0OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+IGRl
Y29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJik7CisKKyAgICBjb25zdCBL
ZXkmIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9CisgICAgc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCB0aW1lU3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVTdGFt
cDsgfQorICAgIGNvbnN0IFZlY3RvcjxLZXk+JiBzdWJyZXNvdXJjZUtleXMoKSBjb25zdCB7IHJl
dHVybiBtX3N1YnJlc291cmNlS2V5czsgfQorCitwcml2YXRlOgorICAgIEtleSBtX2tleTsKKyAg
ICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1fdGltZVN0YW1wOworICAg
IFN0b3JhZ2U6OlJlY29yZCBtX3NvdXJjZVN0b3JhZ2VSZWNvcmQ7CisgICAgVmVjdG9yPEtleT4g
bV9zdWJyZXNvdXJjZUtleXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFt
ZXNwYWNlIE5ldHdvcmtDYWNoZQorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OKQorI2VuZGlmIC8vIE5ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4IGNkMjIwODQ0OGQ1Y2FkZGI2NDM3MWRj
NmU1Y2M1ZTAwYThiOTBkZTkuLjVkNTVjZWFiMDZkMjhhMzQyZjY2MWU3NGYwNjU4ZDA0MmE2YWU2
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQpAQCAtOTUsMTAgKzk1LDE4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0
d29ya1Byb2Nlc3NDCiAgICAgaWYgKCFtX2Rpc2tDYWNoZURpcmVjdG9yeS5pc051bGwoKSkgewog
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5k
aXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2lmIEVOQUJMRShORVRXT1JLX0NB
Q0hFKQotICAgICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGUgJiYg
TmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS5pbml0aWFsaXplKG1fZGlza0NhY2hlRGlyZWN0b3J5
LCBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZykpIHsK
LSAgICAgICAgICAgIFJldGFpblB0cjxOU1VSTENhY2hlPiB1cmxDYWNoZShhZG9wdE5TKFtbTlNV
UkxDYWNoZSBhbGxvY10gaW5pdFdpdGhNZW1vcnlDYXBhY2l0eTowIGRpc2tDYXBhY2l0eTowIGRp
c2tQYXRoOm5pbF0pKTsKLSAgICAgICAgICAgIFtOU1VSTENhY2hlIHNldFNoYXJlZFVSTENhY2hl
OnVybENhY2hlLmdldCgpXTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHBhcmFt
ZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlKSB7CisgICAgICAgICAgICBOZXR3b3JrQ2Fj
aGU6OkNhY2hlOjpQYXJhbWV0ZXJzIGNhY2hlUGFyYW1ldGVycyA9IHsKKyAgICAgICAgICAgICAg
ICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZworI2lm
IEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKKyAgICAgICAg
ICAgICAgICAsIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb24KKyNlbmRpZgorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGlmIChOZXR3
b3JrQ2FjaGU6OnNpbmdsZXRvbigpLmluaXRpYWxpemUobV9kaXNrQ2FjaGVEaXJlY3RvcnksIGNh
Y2hlUGFyYW1ldGVycykpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHVybENhY2hlKGFkb3B0TlMo
W1tOU1VSTENhY2hlIGFsbG9jXSBpbml0V2l0aE1lbW9yeUNhcGFjaXR5OjAgZGlza0NhcGFjaXR5
OjAgZGlza1BhdGg6bmlsXSkpOworICAgICAgICAgICAgICAgIFtOU1VSTENhY2hlIHNldFNoYXJl
ZFVSTENhY2hlOnVybENhY2hlLmdldCgpXTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZgogICAgICAgICBTdHJpbmcgbnNVUkxDYWNoZURp
cmVjdG9yeSA9IG1fZGlza0NhY2hlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDkx
MGU2MTkzNDgxNjJjMjc0MGVmZjMxZWM5MzlkZDk4YWM1Nzg3NWUuLmY5YTBmZjgwODI5Y2I2NWIy
MTMwNzA4YzcxYmYzZjdjOTY2NGQ1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTc0LDcgKzc0
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nl
c3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICAvLyBDbGVhciB0aGUgb2xkIHNvdXAg
Y2FjaGUgaWYgaXQgZXhpc3RzLgogICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Np
b24oKS5jbGVhckNhY2hlKFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3Rv
cnkpKTsKIAotICAgIE5ldHdvcmtDYWNoZTo6c2luZ2xldG9uKCkuaW5pdGlhbGl6ZShtX2Rpc2tD
YWNoZURpcmVjdG9yeSwgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2Fj
eUxvZ2dpbmcpOworICAgIE5ldHdvcmtDYWNoZTo6c2luZ2xldG9uKCkuaW5pdGlhbGl6ZShtX2Rp
c2tDYWNoZURpcmVjdG9yeSwgeyBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVm
ZmljYWN5TG9nZ2luZyB9KTsKICNlbHNlCiAgICAgLy8gV2UgdXNlZCB0byB1c2UgdGhlIGdpdmVu
IGNhY2hlIGRpcmVjdG9yeSBmb3IgdGhlIHNvdXAgY2FjaGUsIGJ1dCBub3cgd2UgdXNlIGEgc3Vi
ZGlyZWN0b3J5IHRvIGF2b2lkCiAgICAgLy8gY29uZmxpY3RzIHdpdGggb3RoZXIgY2FjaGUgZmls
ZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LiBSZW1vdmUgdGhlIG9sZCBjYWNoZSBmaWxlcyBpZiB0
aGV5IHN0aWxsIGV4aXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9n
Z2luZy5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDE5OTU5N2Vm
Y2FkZmYyOWFjNTNkNDhlNDc3YzJlMGNjNDRmNTk5OTEuLjliYjgzNDUwOGI4YzRmYjlhZmE5ZWFm
NzAxODA1OGJlOTNmOWExN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xv
Z2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTQ2LDYg
KzQ2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgTShOZXR3b3JrKSBcCiAgICAgTShOZXR3
b3JrQ2FjaGUpIFwKICAgICBNKE5ldHdvcmtDYWNoZVN0b3JhZ2UpIFwKKyAgICBNKE5ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZykgXAogICAgIE0oTmV0d29ya1NjaGVkdWxpbmcpIFwK
ICAgICBNKFBsdWdpbnMpIFwKICAgICBNKFByaW50aW5nKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAKaW5kZXggNWFhYTgyMGYwNzc1Y2UxODNjYzBkYjcxMDI0ZGUyN2IzNzMx
YzFmOC4uYTM3YmJlM2UxOWM0ZWFhMDhmNTlkY2M1NTNjYjczNjgyNGViYmRkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNTEsNiArNTEsOSBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIpIGNvbgogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogICAgIGVuY29kZXIgPDwg
c2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlOwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlTmV0
d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nOworI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNV
TEFUSVZFX1JFVkFMSURBVElPTikKKyAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZU5ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uOworI2VuZGlmCiAjZW5kaWYKICNpZiBFTkFCTEUo
U0VDQ09NUF9GSUxURVJTKQogICAgIGVuY29kZXIgPDwgY29va2llU3RvcmFnZURpcmVjdG9yeTsK
QEAgLTEwNCw2ICsxMDcsMTAgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBOZXQKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNob3VsZEVuYWJsZU5l
dHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBF
TkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICNlbmRpZgogI2lm
IEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
Y29va2llU3RvcmFnZURpcmVjdG9yeSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApp
bmRleCA4MGI2MWNhYWRlNmI1YTg3NTA1YzlkMjA0N2I5YjBlMzk2ZmMwYmFlLi45MDg2OWMxOTVj
NGQ3Nzg0MmFhOWM4Yjk1MzViZWMzNTY1NGE4YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKQEAgLTYwLDYgKzYwLDkgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBib29sIHNob3VsZEVu
YWJsZU5ldHdvcmtDYWNoZTsKICAgICBib29sIHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmlj
YWN5TG9nZ2luZzsKKyNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElE
QVRJT04pCisgICAgYm9vbCBzaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFs
aWRhdGlvbjsKKyNlbmRpZgogI2VuZGlmCiAjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKICAg
ICBTdHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggNDI0Yjk5NzE4
ZGY0MDc3OGE0ZTY5ZTk4Yjg1NjJmOTVmNzdiMDJhYy4uZmQxMDgzZjZlNmZjNWUxZGFkYzZhMWVh
MWNkMzRlMjAzM2Y3MmE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTg0LDYgKzg0LDkgQEAgc3RhdGljIE5T
U3RyaW5nICogY29uc3QgV2ViS2l0MkhUVFBTUHJveHlEZWZhdWx0c0tleSA9IEAiV2ViS2l0MkhU
VFBTUHJveHkiOwogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogc3RhdGljIE5TU3RyaW5nICog
Y29uc3QgV2ViS2l0TmV0d29ya0NhY2hlRW5hYmxlZERlZmF1bHRzS2V5ID0gQCJXZWJLaXROZXR3
b3JrQ2FjaGVFbmFibGVkIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdE5ldHdvcmtD
YWNoZUVmZmljYWN5TG9nZ2luZ0VuYWJsZWREZWZhdWx0c0tleSA9IEAiV2ViS2l0TmV0d29ya0Nh
Y2hlRWZmaWNhY3lMb2dnaW5nRW5hYmxlZCI7CisjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OKQorc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0TmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb25FbmFibGVkRGVmYXVsdHNLZXkgPSBAIldl
YktpdE5ldHdvcmtDYWNoZVJlc291cmNlUmV2YWxpZGF0aW9uRW5hYmxlZCI7CisjZW5kaWYKICNl
bmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEwNiw2ICsxMDksOSBAQCBzdGF0aWMgdm9p
ZCByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCkKICNpZiBFTkFCTEUoTkVUV09SS19DQUNI
RSkKICAgICBbcmVnaXN0cmF0aW9uRGljdGlvbmFyeSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJl
cldpdGhCb29sOllFU10gZm9yS2V5OldlYktpdE5ldHdvcmtDYWNoZUVuYWJsZWREZWZhdWx0c0tl
eV07CiAgICAgW3JlZ2lzdHJhdGlvbkRpY3Rpb25hcnkgc2V0T2JqZWN0OltOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpOT10gZm9yS2V5OldlYktpdE5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZ0Vu
YWJsZWREZWZhdWx0c0tleV07CisjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVf
UkVWQUxJREFUSU9OKQorICAgIFtyZWdpc3RyYXRpb25EaWN0aW9uYXJ5IHNldE9iamVjdDpbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dIGZvcktleTpXZWJLaXROZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZVJldmFsaWRhdGlvbkVuYWJsZWREZWZhdWx0c0tleV07CisjZW5kaWYKICNlbmRpZgogCiAg
ICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVnaXN0ZXJEZWZhdWx0
czpyZWdpc3RyYXRpb25EaWN0aW9uYXJ5XTsKQEAgLTI1NCw2ICsyNjAsOSBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYQogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogICAgIHBhcmFtZXRlcnMu
c2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlID0gaXNOZXR3b3JrQ2FjaGVFbmFibGVkKCk7CiAgICAg
cGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcgPSBbZGVm
YXVsdHMgYm9vbEZvcktleTpXZWJLaXROZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmdFbmFibGVk
RGVmYXVsdHNLZXldOworI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFM
SURBVElPTikKKyAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlUmV2YWxpZGF0aW9uID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViS2l0TmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVSZXZhbGlkYXRpb25FbmFibGVkRGVmYXVsdHNLZXldOworI2VuZGlmCiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDExMDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAzNWQ5NzRmMWU2Njk1ZDcxNjQyM2Y5MTA5YWNlOGZkZDI3Yjk2YTEw
Li5mZjI2OThmYzg3OWU4MGFjYmQ2M2IyNTBhNzVjNmQ0ODMzY2Q5NzkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTc2LDYg
KzExNzYsMTAgQEAKIAkJN0NGNDdGRkYxNzI3NkFFMzAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJh
bm5lck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0NGNDdGRkQxNzI3NkFFMzAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5lck1hYy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFQzRGMEZCMThF
NEFDQkIwMDgwNTZBRiAvKiBOZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VDNEYwRjkxOEU0QTk0NTAwODA1NkFGIC8q
IE5ldHdvcmtQcm9jZXNzQ29jb2EubW0gKi87IH07CiAJCTgzMDQ4QUU2MUFDQTQ1REMwMDgyQzgz
MiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzA0OEFFNTFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Ro
cm90dGxlckNsaWVudC5oICovOyB9OworCQk4MzEwNDI4QjFCRDZCNjZGMDBBNzE1RTQgLyogTmV0
d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTA0Mjg5MUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2Fj
aGVTdWJyZXNvdXJjZXNFbnRyeS5oICovOyB9OworCQk4MzEwNDI4QzFCRDZCNjZGMDBBNzE1RTQg
LyogTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxMDQyOEExQkQ2QjY2RjAwQTcxNUU0IC8qIE5l
dHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCAqLzsgfTsKKwkJODMyQUUyNTIxQkUyRThD
RDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJBRTI1MDFCRTJFOENEMDBGQUFF
MTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuaCAqLzsgfTsKKwkJODMyQUUyNTMx
QkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkFFMjUxMUJFMkU4
Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5jcHAgKi87IH07CiAJ
CTgzNEIyNTBGMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCMjUwRTFBODMx
QThEMDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oICovOyB9OwogCQk4MzRCMjUx
MjFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0QjI1MTAxQTg0MkM4NzAwQ0ZC
MTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCAqLzsgfTsKIAkJODM2MDM0OUYxQUNCMzRE
NjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkg
LyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLzsgfTsKQEAgLTM0MTAsNiArMzQxNCwx
MCBAQAogCQk3Q0Y0N0ZGRDE3Mjc2QUUzMDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyTWFj
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlUGFnZUJhbm5lck1h
Yy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUM0RjBGOTE4RTRBOTQ1MDA4MDU2
QUYgLyogTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29jb2EubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzA0OEFFNTFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMTA0Mjg5MUJENkI2NkYwMEE3MTVF
NCAvKiBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4MzEwNDI4QTFCRDZCNjZGMDBBNzE1RTQgLyogTmV0d29ya0Nh
Y2hlU3VicmVzb3VyY2VzRW50cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4MzJBRTI1MDFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODMyQUUyNTExQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM0QjI1
MEUxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCMjUxMDFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29y
a0NhY2hlU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3
b3JrQ2FjaGVTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNjAz
NDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1FMaXRlRGF0YWJhc2VUcmFja2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1NzMsMTAgKzc1ODEsMTQgQEAK
IAkJCQlFNDJFMDYwRDFBQTc1MEU1MDBCMTE2OTkgLyogTmV0d29ya0NhY2hlSU9DaGFubmVsQ29j
b2EubW0gKi8sCiAJCQkJRTQ0MzZFQzAxQTBDRkRCMjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZUtl
eS5jcHAgKi8sCiAJCQkJRTQ0MzZFQzExQTBDRkRCMjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZUtl
eS5oICovLAorCQkJCTgzMkFFMjUxMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWRlci5jcHAgKi8sCisJCQkJODMyQUUyNTAxQkUyRThDRDAwRkFBRTEwIC8qIE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmggKi8sCiAJCQkJODNCRENDQjgxQUM1RkRCNjAw
M0Y2NDQxIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwICovLAogCQkJCTgzNEIyNTEwMUE4
NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmggKi8sCiAJCQkJRTQ0MzZF
QzMxQTBDRkRCMjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwICovLAogCQkJCUU0
NDM2RUMyMUEwQ0ZEQjIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVTdG9yYWdlLmggKi8sCisJCQkJ
ODMxMDQyOEExQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5
LmNwcCAqLywKKwkJCQk4MzEwNDI4OTFCRDZCNjZGMDBBNzE1RTQgLyogTmV0d29ya0NhY2hlU3Vi
cmVzb3VyY2VzRW50cnkuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gY2FjaGU7CiAJCQlwYXRoID0g
TmV0d29ya1Byb2Nlc3MvY2FjaGU7CkBAIC03NzE0LDYgKzc3MjYsNyBAQAogCQkJCTc1QThEMkUx
MTg3REVDMUEwMEMzOUM5RSAvKiBBUElTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZE
RTY2MjE5NTRFOUIxMDBDNDhGRkEgLyogQVBJU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTRENjY0ODE4QTJEOTFBMDBEODJFMjEgLyogQVBJVUlDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTgzMkFFMjUyMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEQjg2QzExMjAwRkI5NzAwNzI1NEJF
IC8qIEFQSVVSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFMjMxNUQxMjJDMzBDQTAwRDVDMzVB
IC8qIEFQSVVSTFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTBBMUQyMTIyREQ1NUUw
MENDOEM1MCAvKiBBUElVUkxSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzE1LDYgKzgz
MjgsNyBAQAogCQkJCTI5M0VCRUFCMTYyN0Q5QzkwMDVGODlGMSAvKiBXS0RPTVRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMDE3RDIxMTYyNjMzMDgwMDcwNTRGNSAvKiBXS0RPTVRleHRJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCN0Q3OEQxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdL
RG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMTA0MjhCMUJENkI2NkYwMEE3MTVFNCAv
KiBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFG
NDU5MkYxOTQ2NEIyMDAwRjlENEEyIC8qIFdLRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RkQ1NDhDMTMyRDgyNjgwMDU1RDgxNiAvKiBXS0Vycm9yQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTM3QjUwNDUyMTlFRUYzMTMwMENFMkNGOCAvKiBXS0Vycm9yUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC05NTI1LDYgKzk1MzksNyBAQAogCQkJCTdDODlEMjk3MUE2NzUzQjIwMDNBNUZERSAv
KiBBUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTNBNzNDRjFB
NDhDN0YxMDA3MjMxQjMgLyogQVBJUGFnZUdyb3VwSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBQzEzMzZFMTg1NjVEMkIwMEYzRUMwNSAvKiBBUElQYWdlSGFuZGxlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTgzMkFFMjUzMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0U0RDIxRjFBNDkxNENBMDBD
N0YxNTIgLyogQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZFRDNDMURDMUI0NDdFQUMwMEUwRUI3RiAvKiBBUElTZXJpYWxpemVkU2NyaXB0VmFsdWVD
b2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExODJENUI0MUJFNkJEMjUwMDg3QTdDQyAvKiBB
Y2Nlc3NpYmlsaXR5SU9TLm1tIGluIFNvdXJjZXMgKi8sCkBAIC05NzU5LDYgKzk3NzQsNyBAQAog
CQkJCTFBOEVGNENDMTI1MjQwMzcwMEY3MDY3RiAvKiBQbHVnaW5Db250cm9sbGVyUHJveHkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDkxQTYxMjgxRDczOTAwMUVCOTYyIC8qIFBsdWdpbkNv
bnRyb2xsZXJQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBOEVGOTZFMTI1MkFGNkIw
MEY3MDY3RiAvKiBQbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJODMxMDQyOEMxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1
YnJlc291cmNlc0VudHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMTc5NzdGMTM3RUU4MkMw
MEY5N0Q0NSAvKiBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0MzRjhDOTAxNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDMTM1QUFDMTczQjBDRkYwMDU4NkFFMiAvKiBQbHVnaW5JbmZvcm1h
dGlvbk1hYy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvY29u
ZmlnLmggYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAppbmRleCA2OGU3ZTRkN2EwMjFhNjkyMDky
OGE2NWI4MzM4YmI2MjZkMTIzMTg1Li4wZDY0MGM4MGFiN2UxYjhlODRiYWFmZTEyODU0ZjdmNDUw
MzU2MDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9jb25maWcuaApAQCAtOTgsNiArOTgsMTQgQEAKICNlbmRpZgogI2VuZGlmCiAKKyNp
Zm5kZWYgRU5BQkxFX05FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OCisjaWYg
RU5BQkxFKE5FVFdPUktfQ0FDSEUpICYmIFBMQVRGT1JNKENPQ09BKQorI2RlZmluZSBFTkFCTEVf
TkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04gMQorI2Vsc2UKKyNkZWZpbmUg
RU5BQkxFX05FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OIDAKKyNlbmRpZgor
I2VuZGlmCisKICNpZm5kZWYgSEFWRV9TQUZBUklfU0VSVklDRVNfRlJBTUVXT1JLCiAjaWYgUExB
VEZPUk0oSU9TKSAmJiAoIWRlZmluZWQgVEFSR0VUX09TX0lPUyB8fCBUQVJHRVRfT1NfSU9TKQog
I2RlZmluZSBIQVZFX1NBRkFSSV9TRVJWSUNFU19GUkFNRVdPUksgMQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>