<?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>50191</bug_id>
          
          <creation_ts>2010-11-29 16:53:18 -0800</creation_ts>
          <short_desc>WebKit2 authentication support</short_desc>
          <delta_ts>2010-12-09 08:55:59 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>314735</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-29 16:53:18 -0800</bug_when>
    <thetext>The WebKit2 API needs to handle authentication challenges.

In radar as &lt;rdar://problem/7660733&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314747</commentid>
    <comment_count>1</comment_count>
      <attachid>75085</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-29 17:09:52 -0800</bug_when>
    <thetext>Created attachment 75085
Skeleton files v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314753</commentid>
    <comment_count>2</comment_count>
      <attachid>75087</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-29 17:13:54 -0800</bug_when>
    <thetext>Created attachment 75087
Skeleton files v2 (build works now)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314757</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-11-29 17:21:54 -0800</bug_when>
    <thetext>Attachment 75085 did not build on qt:
Build output: http://queues.webkit.org/results/6343099</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314773</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-29 17:42:27 -0800</bug_when>
    <thetext>Attachment 75085 did not build on mac:
Build output: http://queues.webkit.org/results/6332089</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314802</commentid>
    <comment_count>5</comment_count>
      <attachid>75087</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-11-29 18:38:15 -0800</bug_when>
    <thetext>Comment on attachment 75087
Skeleton files v2 (build works now)

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

Why is AuthenticationChallenge in the UIProcess and the others are in Shared. Can you explain how they will be used?

&gt; WebKit2/ChangeLog:7
&gt; +	Add new-file-skeletons to the projects as a first step before filling in the code.

Weird spacing.

&gt; WebKit2/ChangeLog:49
&gt; +        * Shared/API/c/WKBase.h:
&gt; +
&gt; +        * Shared/API/c/WKCredential.cpp: Added.
&gt; +        (WKCredentialGetTypeID):
&gt; +        * Shared/API/c/WKCredential.h: Added.
&gt; +        * Shared/API/c/WKCredentialTypes.h: Added.
&gt; +
&gt; +        * Shared/API/c/WKProtectionSpace.cpp: Added.
&gt; +        (WKProtectionSpaceGetTypeID):
&gt; +        * Shared/API/c/WKProtectionSpace.h: Added.
&gt; +        * Shared/API/c/WKProtectionSpaceTypes.h: Added.
&gt; +
&gt; +        * Shared/API/c/WKSharedAPICast.h:
&gt; +
&gt; +        * Shared/APIObject.h:
&gt; +
&gt; +        * Shared/WebCredential.cpp: Added.
&gt; +        * Shared/WebCredential.h: Added.
&gt; +        (WebKit::WebCredential::create):
&gt; +        (WebKit::WebCredential::type):
&gt; +
&gt; +        * Shared/WebProtectionSpace.cpp: Added.
&gt; +        * Shared/WebProtectionSpace.h: Added.
&gt; +        (WebKit::WebProtectionSpace::create):
&gt; +        (WebKit::WebProtectionSpace::type):
&gt; +
&gt; +        * UIProcess/API/C/WKAPICast.h:
&gt; +
&gt; +        * UIProcess/API/C/WKAuthenticationChallenge.cpp: Added.
&gt; +        (WKAuthenticationChallengeGetTypeID):
&gt; +        * UIProcess/API/C/WKAuthenticationChallenge.h: Added.
&gt; +
&gt; +        * UIProcess/WebAuthenticationChallenge.cpp: Added.
&gt; +        * UIProcess/WebAuthenticationChallenge.h: Added.
&gt; +        (WebKit::WebAuthenticationChallenge::create):
&gt; +        (WebKit::WebAuthenticationChallenge::type):
&gt; +
&gt; +        * WebKit2.pro:
&gt; +        * WebKit2.xcodeproj/project.pbxproj:
&gt; +        * win/WebKit2.vcproj:
&gt; +

The paragraphing is weird here. How about some comments.

&gt; WebKit2/Shared/API/c/WKProtectionSpaceTypes.h:27
&gt; +#ifndef WKCredentialTypes_h
&gt; +#define WKCredentialTypes_h

This should be WKProtectionSpaceTypes_h

&gt; WebKit2/Shared/API/c/WKProtectionSpaceTypes.h:62
&gt; +#endif /* WKCredentialTypes_h */

This one should also be WKProtectionSpaceTypes_h

&gt; WebKit2/UIProcess/WebAuthenticationChallenge.h:36
&gt; +class WebAuthenticationChallenge : public APIObject
&gt; +{
&gt; +public:

The { is in the wrong place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314811</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-29 18:58:27 -0800</bug_when>
    <thetext>Discussed this with Sam in person.  Taking a different approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316585</commentid>
    <comment_count>7</comment_count>
      <attachid>75448</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-12-02 18:21:09 -0800</bug_when>
    <thetext>Created attachment 75448
First stage v1

This patch gets all the API objects and clients in place, and does IPC to tell the UIProcess a challenge has occurred, and allows the UIProcess to respond.

After this infrastructure is in place, filling in the following holes will commence:
1 - Actually shipping Challenge, ProtectionSpace, and Credential data across the IPC boundary instead of empty representations of them.
2 - Provide the proper WK2 API for apps to actually be able to work with those 3 objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316597</commentid>
    <comment_count>8</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-02 18:39:20 -0800</bug_when>
    <thetext>Attachment 75448 did not build on qt:
Build output: http://queues.webkit.org/results/6746022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316619</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-12-02 19:26:52 -0800</bug_when>
    <thetext>Attachment 75448 did not build on win:
Build output: http://queues.webkit.org/results/6825019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316837</commentid>
    <comment_count>10</comment_count>
      <attachid>75500</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-12-03 08:56:47 -0800</bug_when>
    <thetext>Created attachment 75500
First stage v2

Attempt at Windows and Qt build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316838</commentid>
    <comment_count>11</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-03 09:08:36 -0800</bug_when>
    <thetext>Attachment 75500 did not build on qt:
Build output: http://queues.webkit.org/results/6728028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316839</commentid>
    <comment_count>12</comment_count>
      <attachid>75501</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-12-03 09:15:01 -0800</bug_when>
    <thetext>Created attachment 75501
First stage v3 - More build fixes all around</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316933</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-12-03 11:43:33 -0800</bug_when>
    <thetext>Landed in r73281.

More coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319035</commentid>
    <comment_count>14</comment_count>
      <attachid>75962</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-12-08 14:24:50 -0800</bug_when>
    <thetext>Created attachment 75962
Stage 2 - Fill out necessary API and cross-process encoding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319158</commentid>
    <comment_count>15</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-12-08 17:33:17 -0800</bug_when>
    <thetext>Attachment 75962 did not build on win:
Build output: http://queues.webkit.org/results/6789125</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319162</commentid>
    <comment_count>16</comment_count>
      <attachid>75993</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-12-08 17:41:48 -0800</bug_when>
    <thetext>Created attachment 75993
Stage 2 v2 - Now with more Windows building!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319164</commentid>
    <comment_count>17</comment_count>
      <attachid>75995</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-12-08 17:48:14 -0800</bug_when>
    <thetext>Created attachment 75995
Stage 2 v3 - Now with more building all around

Forgot WebCore changes in the v2 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319302</commentid>
    <comment_count>18</comment_count>
      <attachid>75995</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-12-09 00:26:16 -0800</bug_when>
    <thetext>Comment on attachment 75995
Stage 2 v3 - Now with more building all around

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319488</commentid>
    <comment_count>19</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-12-09 08:55:59 -0800</bug_when>
    <thetext>Landed in r73614</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75085</attachid>
            <date>2010-11-29 17:09:52 -0800</date>
            <delta_ts>2010-11-29 17:13:54 -0800</delta_ts>
            <desc>Skeleton files v1</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>52147</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mjg1MSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTIgQEAKKzIwMTAtMTEtMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NjYwNzMzPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUwMTkxCisKKwlBZGQgbmV3LWZpbGUtc2tlbGV0b25zIHRvIHRoZSBwcm9qZWN0
cyBhcyBhIGZpcnN0IHN0ZXAgYmVmb3JlIGZpbGxpbmcgaW4gdGhlIGNvZGUuCisKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDcmVk
ZW50aWFsLmNwcDogQWRkZWQuCisgICAgICAgIChXS0NyZWRlbnRpYWxHZXRUeXBlSUQpOgorICAg
ICAgICAqIFNoYXJlZC9BUEkvYy9XS0NyZWRlbnRpYWwuaDogQWRkZWQuCisgICAgICAgICogU2hh
cmVkL0FQSS9jL1dLQ3JlZGVudGlhbFR5cGVzLmg6IEFkZGVkLgorCisgICAgICAgICogU2hhcmVk
L0FQSS9jL1dLUHJvdGVjdGlvblNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXS1Byb3RlY3Rp
b25TcGFjZUdldFR5cGVJRCk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLUHJvdGVjdGlvblNw
YWNlLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1Byb3RlY3Rpb25TcGFjZVR5
cGVzLmg6IEFkZGVkLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5o
OgorCisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgorCisgICAgICAgICogU2hhcmVkL1dl
YkNyZWRlbnRpYWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ3JlZGVudGlhbC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ3JlZGVudGlhbDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ3JlZGVudGlhbDo6dHlwZSk6CisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UHJvdGVjdGlvblNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL1dlYlByb3RlY3Rp
b25TcGFjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvdGVjdGlvblNwYWNlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2U6OnR5cGUpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VHZXRUeXBlSUQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg6IEFkZGVkLgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnR5cGUpOgorCisgICAgICAgICog
V2ViS2l0Mi5wcm86CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKwogMjAxMC0xMS0yOSAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBX
ZWluaWcuCkluZGV4OiBXZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
V2ViS2l0Mi5wcm8JKHJldmlzaW9uIDcyODI5KQorKysgV2ViS2l0Mi9XZWJLaXQyLnBybwkod29y
a2luZyBjb3B5KQpAQCAtMjEyLDggKzIxMiwxMiBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQv
QVBJL2MvV0tDZXJ0aWZpY2F0ZUluZm8uaCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1l
bnVJdGVtLmggXAogICAgIFNoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbVR5cGVzLmggXAor
ICAgIFNoYXJlZC9BUEkvYy9XS0NyZWRlbnRpYWwuaCBcCisgICAgU2hhcmVkL0FQSS9jL1dLQ3Jl
ZGVudGlhbFR5cGVzLmggXAogICAgIFNoYXJlZC9BUEkvYy9XS0dlb21ldHJ5LmggXAogICAgIFNo
YXJlZC9BUEkvYy9XS051bWJlci5oIFwKKyAgICBTaGFyZWQvQVBJL2MvV0tQcm90ZWN0aW9uU3Bh
Y2UuaCBcCisgICAgU2hhcmVkL0FQSS9jL1dLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCBcCiAgICAg
U2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggXAogICAgIFNoYXJlZC9BUEkv
Yy9XS1NoYXJlZEFQSUNhc3QuaCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmggXApAQCAt
MjQyLDYgKzI0Niw3IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9XZWJDZXJ0aWZpY2F0ZUlu
Zm8uaCBcCiAgICAgU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oIFwKICAgICBTaGFyZWQvV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YS5oIFwKKyAgICBTaGFyZWQvV2ViQ3JlZGVudGlhbC5oIFwKICAg
ICBTaGFyZWQvV2ViRXJyb3IuaCBcCiAgICAgU2hhcmVkL1dlYkV2ZW50LmggXAogICAgIFNoYXJl
ZC9XZWJFdmVudENvbnZlcnNpb24uaCBcCkBAIC0yNTEsNiArMjU2LDcgQEAgSEVBREVSUyArPSBc
CiAgICAgU2hhcmVkL1dlYlBvcHVwSXRlbS5oIFwKICAgICBTaGFyZWQvV2ViUHJlZmVyZW5jZXNT
dG9yZS5oIFwKICAgICBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIFwKKyAg
ICBTaGFyZWQvV2ViUHJvdGVjdGlvblNwYWNlLmggXAogICAgIFNoYXJlZC9XZWJVUkxSZXF1ZXN0
LmggXAogICAgIFNoYXJlZC9XZWJVUkxSZXNwb25zZS5oIFwKICAgICBTaGFyZWQvV2ViVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmggXApAQCAtMjU5LDYgKzI2NSw3IEBAIEhFQURFUlMgKz0gXAogICAg
IFNoYXJlZC9xdC9VcGRhdGVDaHVuay5oIFwKICAgICBTaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5
UXQuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIFwKKyAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tCYWNrRm9yd2FyZExpc3QuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRM
aXN0SXRlbS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmggXApAQCAtMjk4LDYg
KzMwNSw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVy
LmggXAogICAgIFVJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuaCBcCiAgICAgVUlQcm9j
ZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuaCBcCisgICAgVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmggXAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmggXAogICAgIFVJUHJv
Y2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dl
YkNvbnRleHRNZW51UHJveHkuaCBcCkBAIC0zOTksNyArNDA3LDkgQEAgU09VUkNFUyArPSBcCiAg
ICAgU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3BwIFwKICAgICBTaGFyZWQvQVBJL2MvV0tDZXJ0aWZp
Y2F0ZUluZm8uY3BwIFwKICAgICBTaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwIFwK
KyAgICBTaGFyZWQvQVBJL2MvV0tDcmVkZW50aWFsLmNwcCBcCiAgICAgU2hhcmVkL0FQSS9jL1dL
TnVtYmVyLmNwcCBcCisgICAgU2hhcmVkL0FQSS9jL1dLUHJvdGVjdGlvblNwYWNlLmNwcCBcCiAg
ICAgU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBcCiAgICAgU2hhcmVk
L0FQSS9jL1dLU3RyaW5nLmNwcCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLVHlwZS5jcHAgXApAQCAt
NDE3LDYgKzQyNyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFNoYXJlZC9WaXNpdGVkTGlua1RhYmxl
LmNwcCBcCiAgICAgU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAgXAogICAgIFNoYXJlZC9X
ZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCBcCisgICAgU2hhcmVkL1dlYkNyZWRlbnRpYWwuY3Bw
IFwKICAgICBTaGFyZWQvV2ViRXJyb3IuY3BwIFwKICAgICBTaGFyZWQvV2ViRXZlbnQuY3BwIFwK
ICAgICBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcCBcCkBAIC00MjcsNiArNDM4LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAgXAogICAgIFNoYXJlZC9X
ZWJQcmVmZXJlbmNlc1N0b3JlLmNwcCBcCiAgICAgU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwIFwKKyAgICBTaGFyZWQvV2ViUHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAg
U2hhcmVkL1dlYlRvdWNoRXZlbnQuY3BwIFwKICAgICBTaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAg
XAogICAgIFNoYXJlZC9XZWJVUkxSZXNwb25zZS5jcHAgXApAQCAtNDM5LDYgKzQ1MSw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIFNoYXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5jcHAgXAogICAgIFNo
YXJlZC9xdC9XZWJVUkxSZXF1ZXN0UXQuY3BwIFwKICAgICBTaGFyZWQvcXQvV2ViVVJMUmVzcG9u
c2VRdC5jcHAgXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmNwcCBcCiAgICAg
VUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwIFwKQEAgLTQ3MCw2ICs0ODMsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBVSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgXAogICAgIFVJUHJvY2Vzcy9U
aWxlZERyYXdpbmdBcmVhUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvVmlzaXRlZExpbmtQcm92
aWRlci5jcHAgXAorICAgIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAg
XAogICAgIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwIFwKICAgICBVSVByb2Nlc3Mv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cCBcCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAkocmV2aXNpb24gNzI4MjkpCisrKyBXZWJLaXQyL1NoYXJl
ZC9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsMTEgQEAgcHVibGljOgog
ICAgICAgICBUeXBlQXJyYXksCiAgICAgICAgIFR5cGVDZXJ0aWZpY2F0ZUluZm8sCiAgICAgICAg
IFR5cGVDb250ZXh0TWVudUl0ZW0sCisgICAgICAgIFR5cGVDcmVkZW50aWFsLAogICAgICAgICBU
eXBlRGF0YSwKICAgICAgICAgVHlwZURpY3Rpb25hcnksCiAgICAgICAgIFR5cGVFcnJvciwKKyAg
ICAgICAgVHlwZVByb3RlY3Rpb25TcGFjZSwKICAgICAgICAgVHlwZVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSwKICAgICAgICAgVHlwZVN0cmluZywKICAgICAgICAgVHlwZVVSTCwKQEAgLTU0LDYgKzU2
LDcgQEAgcHVibGljOgogICAgICAgICBUeXBlVUludDY0LAogICAgICAgICAKICAgICAgICAgLy8g
VUlQcm9jZXNzIHR5cGVzCisgICAgICAgIFR5cGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKICAg
ICAgICAgVHlwZUJhY2tGb3J3YXJkTGlzdCwKICAgICAgICAgVHlwZUJhY2tGb3J3YXJkTGlzdEl0
ZW0sCiAgICAgICAgIFR5cGVDb250ZXh0LApJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViQ3JlZGVu
dGlhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViQ3JlZGVudGlhbC5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJDcmVkZW50aWFsLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJDcmVkZW50
aWFsLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFdlYktpdDIvU2hhcmVkL1dlYkNyZWRlbnRpYWwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1NoYXJlZC9XZWJDcmVkZW50aWFsLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1NoYXJlZC9X
ZWJDcmVkZW50aWFsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYkNyZWRlbnRpYWxfaAorI2RlZmluZSBXZWJDcmVkZW50aWFsX2gKKworI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDcmVkZW50aWFsIDogcHVibGljIEFQSU9iamVjdCB7
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVDcmVkZW50aWFs
OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ3JlZGVudGlhbD4gY3JlYXRlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ3JlZGVudGlhbCgpKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIH5XZWJDcmVkZW50aWFsKCk7CisgICAgCitwcml2YXRlOgorICAgIFdlYkNy
ZWRlbnRpYWwoKTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJ
VHlwZTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJDcmVk
ZW50aWFsX2gKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYlByb3RlY3Rpb25TcGFjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViUHJvdGVjdGlvblNwYWNlLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYktpdDIvU2hhcmVkL1dlYlByb3RlY3Rpb25TcGFjZS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViUHJvdGVjdGlv
blNwYWNlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYlByb3RlY3Rpb25TcGFjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvU2hhcmVkL1dlYlByb3RlY3Rpb25TcGFjZS5oCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJvdGVjdGlvblNwYWNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlByb3RlY3Rpb25TcGFjZV9oCisjZGVmaW5l
IFdlYlByb3RlY3Rpb25TcGFjZV9oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUHJv
dGVjdGlvblNwYWNlIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNv
bnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVQcm90ZWN0aW9uU3BhY2U7CisKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJQcm90ZWN0aW9uU3BhY2U+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYlByb3RlY3Rpb25TcGFjZSgpKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIH5XZWJDcmVkZW50aWFsKCk7CisKK3ByaXZhdGU6CisgICAgV2ViUHJvdGVjdGlvblNwYWNl
KCk7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0K
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUHJvdGVjdGlvblNw
YWNlX2gKSW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCShyZXZpc2lvbiA3MjgyOSkKKysrIFdlYktp
dDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMSArNDQsMTMg
QEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tEaWN0aW9uYXJ5KgogdHlwZWRlZiBzdHJ1
Y3QgT3BhcXVlV0tEaWN0aW9uYXJ5KiBXS011dGFibGVEaWN0aW9uYXJ5UmVmOwogCiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVXS0Jvb2xlYW4qIFdLQm9vbGVhblJlZjsKK3R5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZVdLQ2VydGlmaWNhdGVJbmZvKiBXS0NlcnRpZmljYXRlSW5mb1JlZjsK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQ29udGV4dE1lbnVJdGVtKiBXS0NvbnRleHRN
ZW51SXRlbVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQ3JlZGVudGlhbCogV0tD
cmVkZW50aWFsUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tEYXRhKiBXS0RhdGFS
ZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0RvdWJsZSogV0tEb3VibGVSZWY7CiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0Vycm9yKiBXS0Vycm9yUmVmOwotdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tDZXJ0aWZpY2F0ZUluZm8qIFdLQ2VydGlmaWNhdGVJbmZvUmVm
OwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcm90ZWN0aW9uU3BhY2UqIFdLUHJvdGVj
dGlvblNwYWNlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tTdHJpbmcqIFdLU3RyaW5nUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tVSW50NjQqIFdLVUludDY0UmVmOwpAQCAtNTksNiArNjEsNyBAQCB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1VzZXJDb250ZW50CiAKIC8qIFdlYktpdDIgbWFpbiBBUEkgdHlwZXMg
Ki8KIAordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSogV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLQmFja0ZvcndhcmRMaXN0KiBXS0JhY2tGb3J3YXJkTGlzdFJlZjsKIHR5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZVdLQmFja0ZvcndhcmRMaXN0SXRlbSogV0tCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tDb250ZXh0KiBXS0NvbnRleHRS
ZWY7CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NyZWRlbnRpYWwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ3JlZGVudGlhbC5jcHAJKHJldmlzaW9uIDAp
CisrKyBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NyZWRlbnRpYWwuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldLQ3JlZGVudGlhbC5oIgor
CisjaW5jbHVkZSAiV2ViQ3JlZGVudGlhbC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0NyZWRlbnRpYWxHZXRUeXBlSUQo
KQoreworICAgIHJldHVybiB0b0FQSShXZWJDcmVkZW50aWFsOjpBUElUeXBlKTsKK30KSW5kZXg6
IFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ3JlZGVudGlhbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvU2hhcmVkL0FQSS9jL1dLQ3JlZGVudGlhbC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tDcmVkZW50aWFsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdLQ3JlZGVudGlhbF9oCisjZGVmaW5lIFdLQ3JlZGVudGlh
bF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tD
cmVkZW50aWFsVHlwZXMuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNl
bmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tDcmVkZW50aWFsR2V0VHlwZUlEKCk7CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBXS0NyZWRlbnRpYWxfaApJ
bmRleDogV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDcmVkZW50aWFsVHlwZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NyZWRlbnRpYWxUeXBlcy5oCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDcmVkZW50aWFsVHlwZXMuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tDcmVkZW50aWFsVHlw
ZXNfaAorI2RlZmluZSBXS0NyZWRlbnRpYWxUeXBlc19oCisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
ZXh0ZXJuICJDIiB7CisjZW5kaWYKKworZW51bSB7CisgICAga1dLQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlTm9uZSwKKyAgICBrV0tDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uLAorICAgIGtX
S0NyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudAorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tD
cmVkZW50aWFsUGVyc2lzaXRlbmNlOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgor
CisjZW5kaWYgLyogV0tDcmVkZW50aWFsVHlwZXNfaCAqLwpJbmRleDogV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVk
L0FQSS9jL1dLUHJvdGVjdGlvblNwYWNlLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hh
cmVkL0FQSS9jL1dLUHJvdGVjdGlvblNwYWNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXS1Byb3RlY3Rpb25TcGFjZS5oIgorCisjaW5j
bHVkZSAiV2ViUHJvdGVjdGlvblNwYWNlLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLUHJvdGVjdGlvblNwYWNlR2V0VHlw
ZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2ViUHJvdGVjdGlvblNwYWNlOjpBUElUeXBlKTsK
K30KSW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLUHJvdGVjdGlvblNwYWNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQcm90ZWN0aW9uU3BhY2UuaAkocmV2aXNp
b24gMCkKKysrIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLUHJvdGVjdGlvblNwYWNlLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLUHJvdGVjdGlv
blNwYWNlX2gKKyNkZWZpbmUgV0tQcm90ZWN0aW9uU3BhY2VfaAorCisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUHJvdGVjdGlvblNwYWNlVHlwZXMuaD4K
KworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQg
V0tUeXBlSUQgV0tQcm90ZWN0aW9uU3BhY2VHZXRUeXBlSUQoKTsKKworI2lmZGVmIF9fY3BsdXNw
bHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLUHJvdGVjdGlvblNwYWNlX2gKSW5kZXg6IFdl
YktpdDIvU2hhcmVkL0FQSS9jL1dLUHJvdGVjdGlvblNwYWNlVHlwZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQ3JlZGVu
dGlhbFR5cGVzX2gKKyNkZWZpbmUgV0tDcmVkZW50aWFsVHlwZXNfaAorCisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2VudW0geworICAgIGtXS1Byb3RlY3Rpb25T
cGFjZVNlcnZlckhUVFAgPSAxLAorICAgIGtXS1Byb3RlY3Rpb25TcGFjZVNlcnZlckhUVFBTID0g
MiwKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJGVFAgPSAzLAorICAgIGtXS1Byb3RlY3Rp
b25TcGFjZVNlcnZlckZUUFMgPSA0LAorICAgIGtXS1Byb3RlY3Rpb25TcGFjZVByb3h5SFRUUCA9
IDUsCisgICAga1dLUHJvdGVjdGlvblNwYWNlUHJveHlIVFRQUyA9IDYsCisgICAga1dLUHJvdGVj
dGlvblNwYWNlUHJveHlGVFAgPSA3LAorICAgIGtXS1Byb3RlY3Rpb25TcGFjZVByb3h5U09DS1Mg
PSA4Cit9OwordHlwZWRlZiB1aW50MzJfdCBXS1Byb3RlY3Rpb25TcGFjZVNlcnZlclR5cGU7CisK
K2VudW0geworICAgIGtXS1Byb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lRGVmYXVs
dCA9IDEsCisgICAga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVFRQQmFz
aWMgPSAyLAorICAgIGtXS1Byb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRUUERp
Z2VzdCA9IDMsCisgICAga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVE1M
Rm9ybSA9IDQsCisgICAga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVOVExN
ID0gNSwKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZU5lZ290aWF0
ZSA9IDYsCisgICAga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVDbGllbnRD
ZXJ0aWZpY2F0ZVJlcXVlc3RlZCA9IDcsCisgICAga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGlj
YXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1YXRpb25SZXF1ZXN0ZWQgPSA4LAorICAgIGtXS1By
b3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lVW5rbm93biA9IDEwMCwKK307Cit0eXBl
ZGVmIHVpbnQzMl90IFdLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWU7CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0NyZWRlbnRpYWxUeXBl
c19oICovCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkocmV2aXNp
b24gNzI4MjkpCisrKyBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNyArNDksOSBAQCBjbGFzcyBNdXRhYmxlQXJyYXk7CiBjbGFzcyBN
dXRhYmxlRGljdGlvbmFyeTsKIGNsYXNzIFdlYkNlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFdlYkNv
bnRleHRNZW51SXRlbTsKK2NsYXNzIFdlYkNyZWRlbnRpYWw7CiBjbGFzcyBXZWJEYXRhOworY2xh
c3MgV2ViUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOwog
Y2xhc3MgV2ViVVJMUmVxdWVzdDsKIGNsYXNzIFdlYlVSTFJlc3BvbnNlOwpAQCAtNjYsMTIgKzY4
LDE0IEBAIFdLX0FERF9BUElfTUFQUElORyhXS0FycmF5UmVmLCBJbW11dGFibGUKIFdLX0FERF9B
UElfTUFQUElORyhXS0Jvb2xlYW5SZWYsIFdlYkJvb2xlYW4pCiBXS19BRERfQVBJX01BUFBJTkco
V0tDZXJ0aWZpY2F0ZUluZm9SZWYsIFdlYkNlcnRpZmljYXRlSW5mbykKIFdLX0FERF9BUElfTUFQ
UElORyhXS0NvbnRleHRNZW51SXRlbVJlZiwgV2ViQ29udGV4dE1lbnVJdGVtKQorV0tfQUREX0FQ
SV9NQVBQSU5HKFdLQ3JlZGVudGlhbFJlZiwgV2ViQ3JlZGVudGlhbCkKIFdLX0FERF9BUElfTUFQ
UElORyhXS0RhdGFSZWYsIFdlYkRhdGEpCiBXS19BRERfQVBJX01BUFBJTkcoV0tEaWN0aW9uYXJ5
UmVmLCBJbW11dGFibGVEaWN0aW9uYXJ5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLRG91YmxlUmVm
LCBXZWJEb3VibGUpCiBXS19BRERfQVBJX01BUFBJTkcoV0tFcnJvclJlZiwgV2ViRXJyb3IpCiBX
S19BRERfQVBJX01BUFBJTkcoV0tNdXRhYmxlQXJyYXlSZWYsIE11dGFibGVBcnJheSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS011dGFibGVEaWN0aW9uYXJ5UmVmLCBNdXRhYmxlRGljdGlvbmFyeSkK
K1dLX0FERF9BUElfTUFQUElORyhXS1Byb3RlY3Rpb25TcGFjZVJlZiwgV2ViUHJvdGVjdGlvblNw
YWNlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmLCBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUpCiBXS19BRERfQVBJX01BUFBJTkcoV0tTdHJpbmdSZWYsIFdl
YlN0cmluZykKIFdLX0FERF9BUElfTUFQUElORyhXS1R5cGVSZWYsIEFQSU9iamVjdCkKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiV2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2Vf
aAorI2RlZmluZSBXZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCisKKyNpbmNsdWRlICJBUElP
YmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgOiBwdWJsaWMgQVBJT2JqZWN0
Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5X
ZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOworCitwcml2YXRlOgorICAgIFdlYkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKCk7CisgICAgCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBBUElUeXBlOyB9CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaApJbmRleDogV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDcyODI5KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBEb3dubG9hZFByb3h5OworY2xhc3MgV2ViQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtOwogY2xhc3MgV2ViQ29udGV4dDsKQEAgLTUwLDYgKzUxLDcgQEAgY2xhc3Mg
V2ViUGFnZU5hbWVzcGFjZTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByZWZlcmVu
Y2VzOwogCitXS19BRERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiwg
V2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCYWNrRm9y
d2FyZExpc3RJdGVtUmVmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLQmFja0ZvcndhcmRMaXN0UmVmLCBXZWJCYWNrRm9yd2FyZExpc3QpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tDb250ZXh0UmVmLCBXZWJDb250ZXh0KQpJbmRleDogV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCisKKyNpbmNsdWRlICJXZWJBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0VHlw
ZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkFQ
SVR5cGUpOworfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisgCisjaWZuZGVmIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2Vf
aAorI2RlZmluZSBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKKworI2luY2x1ZGUgPFdlYktp
dDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYK
KworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VHZXRUeXBlSUQo
KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VfaApJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDcyODI5KQorKysgV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcsMjAgQEAKIAkJ
NTFBQ0JCQTExMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQkI5RjEyN0E4
RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSAqLzsgfTsKIAkJNTFCMzAw
NTAxMjUyOUQwRTAwMEI1Q0EwIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjMwMDRFMTI1MjlEMEUwMDBC
NUNBMCAvKiBXZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAgKi87IH07CiAJCTUxQjMwMDUxMTI1MjlE
MEUwMDBCNUNBMCAvKiBXZWJQYWdlUHJveHlDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIzMDA0RjEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFn
ZVByb3h5Q0YuY3BwICovOyB9OworCQk1MUY1RjI0RjEyQTQ3MTczMDA3RUQ0NEEgLyogV2ViQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFGNUYyNEQxMkE0NzE3MzAwN0VENDRBIC8qIFdlYkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmNwcCAqLzsgfTsKKwkJNTFGNUYyNTAxMkE0NzE3MzAwN0VENDRBIC8qIFdl
YkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUY1RjI0RTEyQTQ3MTczMDA3RUQ0NEEgLyogV2ViQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaCAqLzsgfTsKKwkJNTFGNUYyNTkxMkE0NzQwNTAwN0VENDRBIC8qIFdL
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFGNUYyNTcxMkE0NzQwNTAwN0VENDRBIC8qIFdLQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuY3BwICovOyB9OworCQk1MUY1RjI1QTEyQTQ3NDA1MDA3RUQ0NEEgLyog
V0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFGNUYyNTgxMkE0NzQwNTAwN0VENDRBIC8qIFdLQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaCAqLzsgfTsKKwkJNTFGNUYyN0UxMkE0Nzg2MjAwN0VENDRBIC8qIFdl
YkNyZWRlbnRpYWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFGNUYyN0MxMkE0Nzg2MjAwN0VENDRBIC8qIFdlYkNyZWRlbnRpYWwuY3BwICovOyB9
OworCQk1MUY1RjI3RjEyQTQ3ODYyMDA3RUQ0NEEgLyogV2ViQ3JlZGVudGlhbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGNUYyN0QxMkE0Nzg2MjAw
N0VENDRBIC8qIFdlYkNyZWRlbnRpYWwuaCAqLzsgfTsKKwkJNTFGNUYyODIxMkE0Nzg3NDAwN0VE
NDRBIC8qIFdLQ3JlZGVudGlhbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUY1RjI4MDEyQTQ3ODc0MDA3RUQ0NEEgLyogV0tDcmVkZW50aWFsLmNw
cCAqLzsgfTsKKwkJNTFGNUYyODMxMkE0Nzg3NDAwN0VENDRBIC8qIFdLQ3JlZGVudGlhbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGNUYyODExMkE0
Nzg3NDAwN0VENDRBIC8qIFdLQ3JlZGVudGlhbC5oICovOyB9OworCQk1MUY1RjJBRjEyQTQ3REQ4
MDA3RUQ0NEEgLyogV0tDcmVkZW50aWFsVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjVGMkFCMTJBNDdERDgwMDdFRDQ0QSAvKiBXS0NyZWRl
bnRpYWxUeXBlcy5oICovOyB9OworCQk1MUY1RjJCMDEyQTQ3REQ4MDA3RUQ0NEEgLyogV0tQcm90
ZWN0aW9uU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFGNUYyQUMxMkE0N0REODAwN0VENDRBIC8qIFdLUHJvdGVjdGlvblNwYWNlLmNwcCAq
LzsgfTsKKwkJNTFGNUYyQjExMkE0N0REODAwN0VENDRBIC8qIFdLUHJvdGVjdGlvblNwYWNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY1RjJBRDEy
QTQ3REQ4MDA3RUQ0NEEgLyogV0tQcm90ZWN0aW9uU3BhY2UuaCAqLzsgfTsKKwkJNTFGNUYyQjIx
MkE0N0REODAwN0VENDRBIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjVGMkFFMTJBNDdERDgwMDdFRDQ0
QSAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi87IH07CisJCTUxRjVGMkI1MTJBNDdGNjYw
MDdFRDQ0QSAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGNUYyQjMxMkE0N0Y2NjAwN0VENDRBIC8qIFdlYlBy
b3RlY3Rpb25TcGFjZS5jcHAgKi87IH07CisJCTUxRjVGMkI2MTJBNDdGNjYwMDdFRDQ0QSAvKiBX
ZWJQcm90ZWN0aW9uU3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRjVGMkI0MTJBNDdGNjYwMDdFRDQ0QSAvKiBXZWJQcm90ZWN0aW9uU3BhY2Uu
aCAqLzsgfTsKIAkJNkQ4QTkxQTYxMUYwRUZEMTAwREQwMUZFIC8qIGNvbS5hcHBsZS5XZWJQcm9j
ZXNzLnNiIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RDhBOTFBNTExRjBFRkQxMDBERDAxRkUgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2IgKi87IH07
CiAJCTc2MkI3NDhEMTIwQkM3NUMwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYyQjc0ODQxMjBC
QkEyRDAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOERDMkVGNTMwNDg2QTY5NDAwOThCMjE2
IC8qIEluZm9QbGlzdC5zdHJpbmdzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODlDMTY2NkZFODQxMTU4QzAyQUFDMDcgLyogSW5mb1BsaXN0LnN0cmlu
Z3MgKi87IH07CkBAIC03ODMsNiArNzk3LDIwIEBACiAJCTUxQUNCQjlGMTI3QThGMkMwMEQyMDNC
OSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFCMzAwNEUxMjUyOUQwRTAwMEI1Q0EwIC8qIFdlYkJhY2tGb3J3YXJk
TGlzdENGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkJhY2tG
b3J3YXJkTGlzdENGLmNwcDsgcGF0aCA9IGNmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMzAwNEYxMjUyOUQwRTAwMEI1Q0EwIC8qIFdl
YlBhZ2VQcm94eUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdl
YlBhZ2VQcm94eUNGLmNwcDsgcGF0aCA9IGNmL1dlYlBhZ2VQcm94eUNGLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGNUYyNEQxMkE0NzE3MzAwN0VENDRBIC8qIFdlYkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTFGNUYyNEUxMkE0NzE3MzAwN0VENDRBIC8qIFdlYkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRjVGMjU3MTJB
NDc0MDUwMDdFRDQ0QSAvKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUY1RjI1ODEyQTQ3NDA1MDA3RUQ0NEEg
LyogV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxRjVGMjdDMTJBNDc4NjIwMDdFRDQ0QSAvKiBXZWJDcmVkZW50aWFsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNyZWRlbnRpYWwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUY1RjI3RDEyQTQ3ODYyMDA3RUQ0NEEgLyog
V2ViQ3JlZGVudGlhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDcmVk
ZW50aWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRjVGMjgwMTJBNDc4NzQw
MDdFRDQ0QSAvKiBXS0NyZWRlbnRpYWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0tDcmVkZW50aWFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTFGNUYyODExMkE0Nzg3NDAwN0VENDRBIC8qIFdLQ3JlZGVudGlhbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0NyZWRlbnRpYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTFGNUYyQUIxMkE0N0REODAwN0VENDRBIC8qIFdLQ3JlZGVudGlhbFR5cGVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ3JlZGVudGlhbFR5cGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRjVGMkFDMTJBNDdERDgwMDdFRDQ0QSAvKiBX
S1Byb3RlY3Rpb25TcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXS1Byb3RlY3Rpb25TcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
RjVGMkFEMTJBNDdERDgwMDdFRDQ0QSAvKiBXS1Byb3RlY3Rpb25TcGFjZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb3RlY3Rpb25TcGFjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MUY1RjJBRTEyQTQ3REQ4MDA3RUQ0NEEgLyogV0tQcm90ZWN0aW9u
U3BhY2VUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb3RlY3Rp
b25TcGFjZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRjVGMkIzMTJB
NDdGNjYwMDdFRDQ0QSAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUHJvdGVjdGlvblNwYWNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTFGNUYyQjQxMkE0N0Y2NjAwN0VENDRBIC8qIFdlYlByb3RlY3Rp
b25TcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQcm90ZWN0aW9u
U3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURBRDcyOTQxMTZGRjcwQjAw
RUU1Mzk2IC8qIFdlYlByb2Nlc3MueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gV2ViUHJvY2Vzcy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NURBRDczRjExMTZGRjkwQzAwRUU1Mzk2IC8qIEJhc2VUYXJnZXQueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkQ4QTkxQTUxMUYwRUZEMTAwREQwMUZFIC8qIGNvbS5hcHBsZS5X
ZWJQcm9jZXNzLnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNvbS5hcHBsZS5XZWJQcm9jZXNz
LnNiOyBwYXRoID0gV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MTAsNiArMTQzOCw4IEBACiAJCQkJNTEyOTM1RDYxMjg4
RDE5NDAwQTRCNjk1IC8qIFdlYkNvbnRleHRNZW51SXRlbS5oICovLAogCQkJCTUxMEZCQjk4MTI4
OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCAqLywKIAkJCQk1MTBG
QkI5OTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oICovLAorCQkJ
CTUxRjVGMjdDMTJBNDc4NjIwMDdFRDQ0QSAvKiBXZWJDcmVkZW50aWFsLmNwcCAqLywKKwkJCQk1
MUY1RjI3RDEyQTQ3ODYyMDA3RUQ0NEEgLyogV2ViQ3JlZGVudGlhbC5oICovLAogCQkJCTUxNTc4
QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggKi8sCiAJCQkJQkM1NzU2MTIxMjZFMDEz
ODAwNkYwRjEyIC8qIFdlYkVycm9yLmNwcCAqLywKIAkJCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVC
N0YgLyogV2ViRXJyb3IuaCAqLywKQEAgLTE0MjYsMTAgKzE0NTYsMTIgQEAKIAkJCQlDMDZDNjA5
MzEyNEMxNDQzMDAwMTY4MkYgLyogV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8sCiAJ
CQkJQzA2QzYwOTQxMjRDMTQ0MzAwMDE2ODJGIC8qIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aCAqLywKIAkJCQlDMDMzN0REQzEyN0E1MjFDMDA4RkY0RjQgLyogV2ViUGxhdGZvcm1Ub3VjaFBv
aW50LmNwcCAqLywKLQkJCQlCQzMwNjgyMzEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8sCi0JCQkJQkMzMDY4MjIxMjVBNkI5NDAwRTcxMjc4IC8q
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAqLywKIAkJCQlCQ0Q1OThBQjExMkI3RkRG
MDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAgKi8sCiAJCQkJQkNENTk4QUExMTJC
N0ZERjAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzU3RvcmUuaCAqLywKKwkJCQlCQzMwNjgyMzEy
NUE2Qjk0MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8sCisJ
CQkJQkMzMDY4MjIxMjVBNkI5NDAwRTcxMjc4IC8qIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCAqLywKKwkJCQk1MUY1RjJCMzEyQTQ3RjY2MDA3RUQ0NEEgLyogV2ViUHJvdGVjdGlvblNw
YWNlLmNwcCAqLywKKwkJCQk1MUY1RjJCNDEyQTQ3RjY2MDA3RUQ0NEEgLyogV2ViUHJvdGVjdGlv
blNwYWNlLmggKi8sCiAJCQkJQTcyRDVEN0YxMjM2Q0JBODAwQTg4QjE1IC8qIFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oICovLAogCQkJCUJDRjA0QzhFMTFGRjlGNkUwMEY4NkE1OCAvKiBXZWJT
dHJpbmcuaCAqLywKIAkJCQlDMDMzN0RENzEyN0E1MUI2MDA4RkY0RjQgLyogV2ViVG91Y2hFdmVu
dC5jcHAgKi8sCkBAIC0xNjUyLDYgKzE2ODQsOCBAQAogCQkJCTFBMzAwNjZDMTExMEY0RjcwMDMx
OTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8sCiAJCQkJMUEwRjI5RTExMjBCNDQ0MjAw
NTNEMUI5IC8qIFZpc2l0ZWRMaW5rUHJvdmlkZXIuY3BwICovLAogCQkJCTFBMEYyOUUyMTIwQjQ0
NDIwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1Byb3ZpZGVyLmggKi8sCisJCQkJNTFGNUYyNEQxMkE0
NzE3MzAwN0VENDRBIC8qIFdlYkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCAqLywKKwkJCQk1
MUY1RjI0RTEyQTQ3MTczMDA3RUQ0NEEgLyogV2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAq
LywKIAkJCQlCQzcyQkExQjExRTY0OTA3MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0LmNw
cCAqLywKIAkJCQlCQzcyQkExQzExRTY0OTA3MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0
LmggKi8sCiAJCQkJQkM2NDZCRjUxMUREMzc3QjAwNjQ1NUIwIC8qIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwICovLApAQCAtMTcyOSw2ICsxNzYzLDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CUJDQjYzNDc3MTE2QkYxMDYwMDYwMzIxNSAvKiBXZWJLaXQyLmggKi8sCiAJCQkJQkNEREIzMkMx
MjRFQzJFMTAwNDhEMTNDIC8qIFdLQVBJQ2FzdC5oICovLAorCQkJCTUxRjVGMjU3MTJBNDc0MDUw
MDdFRDQ0QSAvKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCAqLywKKwkJCQk1MUY1RjI1
ODEyQTQ3NDA1MDA3RUQ0NEEgLyogV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovLAogCQkJ
CUJDNjQ2QzE2MTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdC5jcHAgKi8sCiAJ
CQkJQkM2NDZDMTcxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0LmggKi8sCiAJ
CQkJQkM2NDZDMTgxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAg
Ki8sCkBAIC0yMDYwLDYgKzIwOTYsOSBAQAogCQkJCTUxQTU1NUYzMTI4QzZDNDcwMDlBQkNFQyAv
KiBXS0NvbnRleHRNZW51SXRlbS5jcHAgKi8sCiAJCQkJNTFBNTU1RjQxMjhDNkM0NzAwOUFCQ0VD
IC8qIFdLQ29udGV4dE1lbnVJdGVtLmggKi8sCiAJCQkJNTFBNTU2MDAxMjhDNkQ5MjAwOUFCQ0VD
IC8qIFdLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCAqLywKKwkJCQk1MUY1RjI4MDEyQTQ3ODc0MDA3
RUQ0NEEgLyogV0tDcmVkZW50aWFsLmNwcCAqLywKKwkJCQk1MUY1RjI4MTEyQTQ3ODc0MDA3RUQ0
NEEgLyogV0tDcmVkZW50aWFsLmggKi8sCisJCQkJNTFGNUYyQUIxMkE0N0REODAwN0VENDRBIC8q
IFdLQ3JlZGVudGlhbFR5cGVzLmggKi8sCiAJCQkJQkM0MDc1REIxMjRGRjAyNzAwNjhGMjBBIC8q
IFdLRGF0YS5jcHAgKi8sCiAJCQkJQkM0MDc1REMxMjRGRjAyNzAwNjhGMjBBIC8qIFdLRGF0YS5o
ICovLAogCQkJCUJDNDA3NUREMTI0RkYwMjcwMDY4RjIwQSAvKiBXS0RpY3Rpb25hcnkuY3BwICov
LApAQCAtMjA3NCw2ICsyMTEzLDkgQEAKIAkJCQlCQzQwNzVFNDEyNEZGMDI3MDA2OEYyMEEgLyog
V0tNdXRhYmxlRGljdGlvbmFyeS5oICovLAogCQkJCUJDNDA3NUU1MTI0RkYwMjcwMDY4RjIwQSAv
KiBXS051bWJlci5jcHAgKi8sCiAJCQkJQkM0MDc1RTYxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTnVt
YmVyLmggKi8sCisJCQkJNTFGNUYyQUMxMkE0N0REODAwN0VENDRBIC8qIFdLUHJvdGVjdGlvblNw
YWNlLmNwcCAqLywKKwkJCQk1MUY1RjJBRDEyQTQ3REQ4MDA3RUQ0NEEgLyogV0tQcm90ZWN0aW9u
U3BhY2UuaCAqLywKKwkJCQk1MUY1RjJBRTEyQTQ3REQ4MDA3RUQ0NEEgLyogV0tQcm90ZWN0aW9u
U3BhY2VUeXBlcy5oICovLAogCQkJCUJDNDA3NUU3MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi8sCiAJCQkJQkM0MDc1RTgxMjRGRjAyNzAwNjhGMjBBIC8q
IFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8sCiAJCQkJRjY3REQ3QjkxMjVFNDBEOTAwN0JE
Q0I4IC8qIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUHJpdmF0ZS5oICovLApAQCAtMjQyNyw2ICsy
NDY5LDE0IEBACiAJCQkJMUNBOEI5NDYxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNTM1NjlEMTI5MUIxRDIwMDA3NDlE
QyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUI0
QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MUY1RjI1MDEyQTQ3MTczMDA3RUQ0NEEgLyogV2ViQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRjVGMjVBMTJBNDc0MDUwMDdFRDQ0QSAvKiBXS0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUY1RjI3RjEyQTQ3
ODYyMDA3RUQ0NEEgLyogV2ViQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFGNUYy
ODMxMkE0Nzg3NDAwN0VENDRBIC8qIFdLQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTFGNUYyQUYxMkE0N0REODAwN0VENDRBIC8qIFdLQ3JlZGVudGlhbFR5cGVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1MUY1RjJCMTEyQTQ3REQ4MDA3RUQ0NEEgLyogV0tQcm90ZWN0aW9uU3BhY2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUxRjVGMkIyMTJBNDdERDgwMDdFRDQ0QSAvKiBXS1Byb3Rl
Y3Rpb25TcGFjZVR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUY1RjJCNjEyQTQ3RjY2MDA3
RUQ0NEEgLyogV2ViUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3ODYsNiAr
MjgzNiwxMiBAQAogCQkJCUVEQ0E3MUI3MTI4RERBOEMwMDIwMUIyNiAvKiBXS0J1bmRsZVBhZ2VP
dmVybGF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNTM1NjlDMTI5MUIxRDIwMDA3NDlEQyAv
KiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBQjRB
QUExMjk2RjE1NDAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb25NYWMubW0gaW4gU291cmNlcyAq
LywKKwkJCQk1MUY1RjI0RjEyQTQ3MTczMDA3RUQ0NEEgLyogV2ViQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFGNUYyNTkxMkE0NzQwNTAwN0VENDRBIC8q
IFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFGNUYy
N0UxMkE0Nzg2MjAwN0VENDRBIC8qIFdlYkNyZWRlbnRpYWwuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTFGNUYyODIxMkE0Nzg3NDAwN0VENDRBIC8qIFdLQ3JlZGVudGlhbC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MUY1RjJCMDEyQTQ3REQ4MDA3RUQ0NEEgLyogV0tQcm90ZWN0aW9uU3BhY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFGNUYyQjUxMkE0N0Y2NjAwN0VENDRBIC8qIFdlYlBy
b3RlY3Rpb25TcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdDIvd2luL1dlYktp
dDIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShyZXZp
c2lvbiA3MjgyOSkKKysrIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC01MjQsNiArNTI0LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJDcmVkZW50aWFsLmNwcCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJDcmVk
ZW50aWFsLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxTaGFyZWRcV2ViRGF0YS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTYwNCw2
ICs2MTIsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cU2hhcmVkXFdlYlByb3RlY3Rpb25TcGFjZS5jcHAiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcV2ViUHJvdGVjdGlv
blNwYWNlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxTaGFyZWRcV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiDQogCQkJCT4NCiAJCQk8
L0ZpbGU+DQpAQCAtNjg3LDYgKzcwMywxOCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJ
PEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEFQSVxjXFdLQ3JlZGVudGlhbC5j
cHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cU2hhcmVkXEFQSVxjXFdLQ3JlZGVudGlhbC5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+
DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxBUElcY1xXS0NyZWRl
bnRpYWxUeXBlcy5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxBUElcY1xXS0RhdGEuY3BwIg0KIAkJCQkJPg0KIAkJCQk8
L0ZpbGU+DQpAQCAtNzQzLDYgKzc3MSwxOCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJ
PEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEFQSVxjXFdLUHJvdGVjdGlvblNw
YWNlLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxTaGFyZWRcQVBJXGNcV0tQcm90ZWN0aW9uU3BhY2UuaCINCisJCQkJCT4NCisJ
CQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcQVBJ
XGNcV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJ
CTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxBUElcY1xXS1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkBAIC0xNzUyLDYgKzE3OTIs
MTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cVUlQcm9jZXNzXFdlYkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXFdlYkJhY2tGb3J3YXJkTGlzdC5jcHAi
DQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTk4Miw2ICsyMDMwLDE0IEBACiAJCQkJCQk+DQog
CQkJCQk8L0ZpbGU+DQogCQkJCQk8RmlsZQ0KKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9j
ZXNzXEFQSVxDXFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIg0KKwkJCQkJCT4NCisJCQkJ
CTwvRmlsZT4NCisJCQkJCTxGaWxlDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3Nc
QVBJXENcV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIg0KKwkJCQkJCT4NCisJCQkJCTwvRmls
ZT4NCisJCQkJCTxGaWxlDQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENc
V0tCYWNrRm9yd2FyZExpc3QuY3BwIg0KIAkJCQkJCT4NCiAJCQkJCTwvRmlsZT4NCg==
</data>
<flag name="commit-queue"
          id="65815"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75087</attachid>
            <date>2010-11-29 17:13:54 -0800</date>
            <delta_ts>2010-12-02 18:21:09 -0800</delta_ts>
            <desc>Skeleton files v2 (build works now)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>52152</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mjg1MSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTIgQEAKKzIwMTAtMTEtMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NjYwNzMzPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUwMTkxCisKKwlBZGQgbmV3LWZpbGUtc2tlbGV0b25zIHRvIHRoZSBwcm9qZWN0
cyBhcyBhIGZpcnN0IHN0ZXAgYmVmb3JlIGZpbGxpbmcgaW4gdGhlIGNvZGUuCisKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDcmVk
ZW50aWFsLmNwcDogQWRkZWQuCisgICAgICAgIChXS0NyZWRlbnRpYWxHZXRUeXBlSUQpOgorICAg
ICAgICAqIFNoYXJlZC9BUEkvYy9XS0NyZWRlbnRpYWwuaDogQWRkZWQuCisgICAgICAgICogU2hh
cmVkL0FQSS9jL1dLQ3JlZGVudGlhbFR5cGVzLmg6IEFkZGVkLgorCisgICAgICAgICogU2hhcmVk
L0FQSS9jL1dLUHJvdGVjdGlvblNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXS1Byb3RlY3Rp
b25TcGFjZUdldFR5cGVJRCk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLUHJvdGVjdGlvblNw
YWNlLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1Byb3RlY3Rpb25TcGFjZVR5
cGVzLmg6IEFkZGVkLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5o
OgorCisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgorCisgICAgICAgICogU2hhcmVkL1dl
YkNyZWRlbnRpYWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ3JlZGVudGlhbC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ3JlZGVudGlhbDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ3JlZGVudGlhbDo6dHlwZSk6CisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UHJvdGVjdGlvblNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL1dlYlByb3RlY3Rp
b25TcGFjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvdGVjdGlvblNwYWNlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2U6OnR5cGUpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VHZXRUeXBlSUQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg6IEFkZGVkLgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnR5cGUpOgorCisgICAgICAgICog
V2ViS2l0Mi5wcm86CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKwogMjAxMC0xMS0yOSAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBX
ZWluaWcuCkluZGV4OiBXZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
V2ViS2l0Mi5wcm8JKHJldmlzaW9uIDcyODI5KQorKysgV2ViS2l0Mi9XZWJLaXQyLnBybwkod29y
a2luZyBjb3B5KQpAQCAtMjEyLDggKzIxMiwxMiBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQv
QVBJL2MvV0tDZXJ0aWZpY2F0ZUluZm8uaCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1l
bnVJdGVtLmggXAogICAgIFNoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbVR5cGVzLmggXAor
ICAgIFNoYXJlZC9BUEkvYy9XS0NyZWRlbnRpYWwuaCBcCisgICAgU2hhcmVkL0FQSS9jL1dLQ3Jl
ZGVudGlhbFR5cGVzLmggXAogICAgIFNoYXJlZC9BUEkvYy9XS0dlb21ldHJ5LmggXAogICAgIFNo
YXJlZC9BUEkvYy9XS051bWJlci5oIFwKKyAgICBTaGFyZWQvQVBJL2MvV0tQcm90ZWN0aW9uU3Bh
Y2UuaCBcCisgICAgU2hhcmVkL0FQSS9jL1dLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCBcCiAgICAg
U2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggXAogICAgIFNoYXJlZC9BUEkv
Yy9XS1NoYXJlZEFQSUNhc3QuaCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmggXApAQCAt
MjQyLDYgKzI0Niw3IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9XZWJDZXJ0aWZpY2F0ZUlu
Zm8uaCBcCiAgICAgU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oIFwKICAgICBTaGFyZWQvV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YS5oIFwKKyAgICBTaGFyZWQvV2ViQ3JlZGVudGlhbC5oIFwKICAg
ICBTaGFyZWQvV2ViRXJyb3IuaCBcCiAgICAgU2hhcmVkL1dlYkV2ZW50LmggXAogICAgIFNoYXJl
ZC9XZWJFdmVudENvbnZlcnNpb24uaCBcCkBAIC0yNTEsNiArMjU2LDcgQEAgSEVBREVSUyArPSBc
CiAgICAgU2hhcmVkL1dlYlBvcHVwSXRlbS5oIFwKICAgICBTaGFyZWQvV2ViUHJlZmVyZW5jZXNT
dG9yZS5oIFwKICAgICBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIFwKKyAg
ICBTaGFyZWQvV2ViUHJvdGVjdGlvblNwYWNlLmggXAogICAgIFNoYXJlZC9XZWJVUkxSZXF1ZXN0
LmggXAogICAgIFNoYXJlZC9XZWJVUkxSZXNwb25zZS5oIFwKICAgICBTaGFyZWQvV2ViVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmggXApAQCAtMjU5LDYgKzI2NSw3IEBAIEhFQURFUlMgKz0gXAogICAg
IFNoYXJlZC9xdC9VcGRhdGVDaHVuay5oIFwKICAgICBTaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5
UXQuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIFwKKyAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tCYWNrRm9yd2FyZExpc3QuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRM
aXN0SXRlbS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmggXApAQCAtMjk4LDYg
KzMwNSw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVy
LmggXAogICAgIFVJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuaCBcCiAgICAgVUlQcm9j
ZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuaCBcCisgICAgVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmggXAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmggXAogICAgIFVJUHJv
Y2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dl
YkNvbnRleHRNZW51UHJveHkuaCBcCkBAIC0zOTksNyArNDA3LDkgQEAgU09VUkNFUyArPSBcCiAg
ICAgU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3BwIFwKICAgICBTaGFyZWQvQVBJL2MvV0tDZXJ0aWZp
Y2F0ZUluZm8uY3BwIFwKICAgICBTaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwIFwK
KyAgICBTaGFyZWQvQVBJL2MvV0tDcmVkZW50aWFsLmNwcCBcCiAgICAgU2hhcmVkL0FQSS9jL1dL
TnVtYmVyLmNwcCBcCisgICAgU2hhcmVkL0FQSS9jL1dLUHJvdGVjdGlvblNwYWNlLmNwcCBcCiAg
ICAgU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBcCiAgICAgU2hhcmVk
L0FQSS9jL1dLU3RyaW5nLmNwcCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLVHlwZS5jcHAgXApAQCAt
NDE3LDYgKzQyNyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFNoYXJlZC9WaXNpdGVkTGlua1RhYmxl
LmNwcCBcCiAgICAgU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAgXAogICAgIFNoYXJlZC9X
ZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCBcCisgICAgU2hhcmVkL1dlYkNyZWRlbnRpYWwuY3Bw
IFwKICAgICBTaGFyZWQvV2ViRXJyb3IuY3BwIFwKICAgICBTaGFyZWQvV2ViRXZlbnQuY3BwIFwK
ICAgICBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcCBcCkBAIC00MjcsNiArNDM4LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAgXAogICAgIFNoYXJlZC9X
ZWJQcmVmZXJlbmNlc1N0b3JlLmNwcCBcCiAgICAgU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwIFwKKyAgICBTaGFyZWQvV2ViUHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAg
U2hhcmVkL1dlYlRvdWNoRXZlbnQuY3BwIFwKICAgICBTaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAg
XAogICAgIFNoYXJlZC9XZWJVUkxSZXNwb25zZS5jcHAgXApAQCAtNDM5LDYgKzQ1MSw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIFNoYXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5jcHAgXAogICAgIFNo
YXJlZC9xdC9XZWJVUkxSZXF1ZXN0UXQuY3BwIFwKICAgICBTaGFyZWQvcXQvV2ViVVJMUmVzcG9u
c2VRdC5jcHAgXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmNwcCBcCiAgICAg
VUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwIFwKQEAgLTQ3MCw2ICs0ODMsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBVSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgXAogICAgIFVJUHJvY2Vzcy9U
aWxlZERyYXdpbmdBcmVhUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvVmlzaXRlZExpbmtQcm92
aWRlci5jcHAgXAorICAgIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAg
XAogICAgIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwIFwKICAgICBVSVByb2Nlc3Mv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cCBcCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAkocmV2aXNpb24gNzI4MjkpCisrKyBXZWJLaXQyL1NoYXJl
ZC9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsMTEgQEAgcHVibGljOgog
ICAgICAgICBUeXBlQXJyYXksCiAgICAgICAgIFR5cGVDZXJ0aWZpY2F0ZUluZm8sCiAgICAgICAg
IFR5cGVDb250ZXh0TWVudUl0ZW0sCisgICAgICAgIFR5cGVDcmVkZW50aWFsLAogICAgICAgICBU
eXBlRGF0YSwKICAgICAgICAgVHlwZURpY3Rpb25hcnksCiAgICAgICAgIFR5cGVFcnJvciwKKyAg
ICAgICAgVHlwZVByb3RlY3Rpb25TcGFjZSwKICAgICAgICAgVHlwZVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSwKICAgICAgICAgVHlwZVN0cmluZywKICAgICAgICAgVHlwZVVSTCwKQEAgLTU0LDYgKzU2
LDcgQEAgcHVibGljOgogICAgICAgICBUeXBlVUludDY0LAogICAgICAgICAKICAgICAgICAgLy8g
VUlQcm9jZXNzIHR5cGVzCisgICAgICAgIFR5cGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKICAg
ICAgICAgVHlwZUJhY2tGb3J3YXJkTGlzdCwKICAgICAgICAgVHlwZUJhY2tGb3J3YXJkTGlzdEl0
ZW0sCiAgICAgICAgIFR5cGVDb250ZXh0LApJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViQ3JlZGVu
dGlhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViQ3JlZGVudGlhbC5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJDcmVkZW50aWFsLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJDcmVkZW50
aWFsLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFdlYktpdDIvU2hhcmVkL1dlYkNyZWRlbnRpYWwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1NoYXJlZC9XZWJDcmVkZW50aWFsLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1NoYXJlZC9X
ZWJDcmVkZW50aWFsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYkNyZWRlbnRpYWxfaAorI2RlZmluZSBXZWJDcmVkZW50aWFsX2gKKworI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDcmVkZW50aWFsIDogcHVibGljIEFQSU9iamVjdCB7
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVDcmVkZW50aWFs
OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ3JlZGVudGlhbD4gY3JlYXRlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ3JlZGVudGlhbCgpKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIH5XZWJDcmVkZW50aWFsKCk7CisgICAgCitwcml2YXRlOgorICAgIFdlYkNy
ZWRlbnRpYWwoKTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJ
VHlwZTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJDcmVk
ZW50aWFsX2gKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYlByb3RlY3Rpb25TcGFjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViUHJvdGVjdGlvblNwYWNlLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYktpdDIvU2hhcmVkL1dlYlByb3RlY3Rpb25TcGFjZS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViUHJvdGVjdGlv
blNwYWNlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYlByb3RlY3Rpb25TcGFjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvU2hhcmVkL1dlYlByb3RlY3Rpb25TcGFjZS5oCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJvdGVjdGlvblNwYWNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlByb3RlY3Rpb25TcGFjZV9oCisjZGVmaW5l
IFdlYlByb3RlY3Rpb25TcGFjZV9oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUHJv
dGVjdGlvblNwYWNlIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNv
bnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVQcm90ZWN0aW9uU3BhY2U7CisKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJQcm90ZWN0aW9uU3BhY2U+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYlByb3RlY3Rpb25TcGFjZSgpKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIH5XZWJQcm90ZWN0aW9uU3BhY2UoKTsKKworcHJpdmF0ZToKKyAgICBXZWJQcm90ZWN0aW9u
U3BhY2UoKTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlw
ZTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQcm90ZWN0
aW9uU3BhY2VfaApJbmRleDogV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlzaW9uIDcyODI5KQorKysg
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDExICs0
NCwxMyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0RpY3Rpb25hcnkqCiB0eXBlZGVm
IHN0cnVjdCBPcGFxdWVXS0RpY3Rpb25hcnkqIFdLTXV0YWJsZURpY3Rpb25hcnlSZWY7CiAKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQm9vbGVhbiogV0tCb29sZWFuUmVmOwordHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tDZXJ0aWZpY2F0ZUluZm8qIFdLQ2VydGlmaWNhdGVJbmZv
UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tDb250ZXh0TWVudUl0ZW0qIFdLQ29u
dGV4dE1lbnVJdGVtUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tDcmVkZW50aWFs
KiBXS0NyZWRlbnRpYWxSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0RhdGEqIFdL
RGF0YVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLRG91YmxlKiBXS0RvdWJsZVJl
ZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLRXJyb3IqIFdLRXJyb3JSZWY7Ci10eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0NlcnRpZmljYXRlSW5mbyogV0tDZXJ0aWZpY2F0ZUlu
Zm9SZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Byb3RlY3Rpb25TcGFjZSogV0tQ
cm90ZWN0aW9uU3BhY2VSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1N0cmluZyogV0tTdHJpbmdSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS1VJbnQ2NCogV0tVSW50NjRSZWY7CkBAIC01OSw2ICs2MSw3IEBAIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLVXNlckNvbnRlbnQKIAogLyogV2ViS2l0MiBtYWluIEFQSSB0
eXBlcyAqLwogCit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tCYWNrRm9yd2FyZExpc3QqIFdLQmFja0ZvcndhcmRMaXN0UmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCYWNrRm9yd2FyZExpc3RJdGVtKiBXS0JhY2tGb3J3YXJk
TGlzdEl0ZW1SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0NvbnRleHQqIFdLQ29u
dGV4dFJlZjsKSW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ3JlZGVudGlhbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDcmVkZW50aWFsLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ3JlZGVudGlhbC5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV0tDcmVkZW50aWFs
LmgiCisKKyNpbmNsdWRlICJXZWJDcmVkZW50aWFsLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLQ3JlZGVudGlhbEdldFR5
cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYkNyZWRlbnRpYWw6OkFQSVR5cGUpOworfQpJ
bmRleDogV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDcmVkZW50aWFsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDcmVkZW50aWFsLmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS0NyZWRlbnRpYWwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tDcmVkZW50aWFsX2gKKyNkZWZpbmUgV0tDcmVk
ZW50aWFsX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0NyZWRlbnRpYWxUeXBlcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIg
eworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS0NyZWRlbnRpYWxHZXRUeXBlSUQoKTsK
KworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLQ3JlZGVudGlh
bF9oCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NyZWRlbnRpYWxUeXBlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ3JlZGVudGlhbFR5cGVzLmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NyZWRlbnRpYWxUeXBlcy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NyZWRlbnRp
YWxUeXBlc19oCisjZGVmaW5lIFdLQ3JlZGVudGlhbFR5cGVzX2gKKworI2lmZGVmIF9fY3BsdXNw
bHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitlbnVtIHsKKyAgICBrV0tDcmVkZW50aWFsUGVy
c2lzdGVuY2VOb25lLAorICAgIGtXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24sCisg
ICAga1dLQ3JlZGVudGlhbFBlcnNpc3RlbmNlUGVybWFuZW50Cit9OwordHlwZWRlZiB1aW50MzJf
dCBXS0NyZWRlbnRpYWxQZXJzaXNpdGVuY2U7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2Vu
ZGlmCisKKyNlbmRpZiAvKiBXS0NyZWRlbnRpYWxUeXBlc19oICovCkluZGV4OiBXZWJLaXQyL1No
YXJlZC9BUEkvYy9XS1Byb3RlY3Rpb25TcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldLUHJvdGVjdGlvblNwYWNlLmgiCisK
KyNpbmNsdWRlICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIK
KwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tQcm90ZWN0aW9uU3BhY2VH
ZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShXZWJQcm90ZWN0aW9uU3BhY2U6OkFQSVR5
cGUpOworfQpJbmRleDogV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQcm90ZWN0aW9uU3BhY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1Byb3RlY3Rpb25TcGFjZS5oCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQcm90ZWN0aW9uU3BhY2UuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tQcm90
ZWN0aW9uU3BhY2VfaAorI2RlZmluZSBXS1Byb3RlY3Rpb25TcGFjZV9oCisKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQcm90ZWN0aW9uU3BhY2VUeXBl
cy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VY
UE9SVCBXS1R5cGVJRCBXS1Byb3RlY3Rpb25TcGFjZUdldFR5cGVJRCgpOworCisjaWZkZWYgX19j
cGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tQcm90ZWN0aW9uU3BhY2VfaApJbmRl
eDogV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLUHJvdGVjdGlvblNwYWNlVHlwZXMuaAkocmV2
aXNpb24gMCkKKysrIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLUHJvdGVjdGlvblNwYWNlVHlwZXMu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tD
cmVkZW50aWFsVHlwZXNfaAorI2RlZmluZSBXS0NyZWRlbnRpYWxUeXBlc19oCisKKyNpZmRlZiBf
X2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworZW51bSB7CisgICAga1dLUHJvdGVj
dGlvblNwYWNlU2VydmVySFRUUCA9IDEsCisgICAga1dLUHJvdGVjdGlvblNwYWNlU2VydmVySFRU
UFMgPSAyLAorICAgIGtXS1Byb3RlY3Rpb25TcGFjZVNlcnZlckZUUCA9IDMsCisgICAga1dLUHJv
dGVjdGlvblNwYWNlU2VydmVyRlRQUyA9IDQsCisgICAga1dLUHJvdGVjdGlvblNwYWNlUHJveHlI
VFRQID0gNSwKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VQcm94eUhUVFBTID0gNiwKKyAgICBrV0tQ
cm90ZWN0aW9uU3BhY2VQcm94eUZUUCA9IDcsCisgICAga1dLUHJvdGVjdGlvblNwYWNlUHJveHlT
T0NLUyA9IDgKK307Cit0eXBlZGVmIHVpbnQzMl90IFdLUHJvdGVjdGlvblNwYWNlU2VydmVyVHlw
ZTsKKworZW51bSB7CisgICAga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVE
ZWZhdWx0ID0gMSwKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhU
VFBCYXNpYyA9IDIsCisgICAga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVI
VFRQRGlnZXN0ID0gMywKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVt
ZUhUTUxGb3JtID0gNCwKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVt
ZU5UTE0gPSA1LAorICAgIGtXS1Byb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lTmVn
b3RpYXRlID0gNiwKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUNs
aWVudENlcnRpZmljYXRlUmVxdWVzdGVkID0gNywKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VBdXRo
ZW50aWNhdGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZCA9IDgsCisgICAg
a1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duID0gMTAwLAorfTsK
K3R5cGVkZWYgdWludDMyX3QgV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZTsK
KworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLQ3JlZGVudGlh
bFR5cGVzX2ggKi8KSW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCShy
ZXZpc2lvbiA3MjgyOSkKKysrIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw5IEBAIGNsYXNzIE11dGFibGVBcnJheTsKIGNs
YXNzIE11dGFibGVEaWN0aW9uYXJ5OwogY2xhc3MgV2ViQ2VydGlmaWNhdGVJbmZvOwogY2xhc3Mg
V2ViQ29udGV4dE1lbnVJdGVtOworY2xhc3MgV2ViQ3JlZGVudGlhbDsKIGNsYXNzIFdlYkRhdGE7
CitjbGFzcyBXZWJQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWU7CiBjbGFzcyBXZWJVUkxSZXF1ZXN0OwogY2xhc3MgV2ViVVJMUmVzcG9uc2U7CkBAIC02Niwx
MiArNjgsMTQgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLQXJyYXlSZWYsIEltbXV0YWJsZQogV0tf
QUREX0FQSV9NQVBQSU5HKFdLQm9vbGVhblJlZiwgV2ViQm9vbGVhbikKIFdLX0FERF9BUElfTUFQ
UElORyhXS0NlcnRpZmljYXRlSW5mb1JlZiwgV2ViQ2VydGlmaWNhdGVJbmZvKQogV0tfQUREX0FQ
SV9NQVBQSU5HKFdLQ29udGV4dE1lbnVJdGVtUmVmLCBXZWJDb250ZXh0TWVudUl0ZW0pCitXS19B
RERfQVBJX01BUFBJTkcoV0tDcmVkZW50aWFsUmVmLCBXZWJDcmVkZW50aWFsKQogV0tfQUREX0FQ
SV9NQVBQSU5HKFdLRGF0YVJlZiwgV2ViRGF0YSkKIFdLX0FERF9BUElfTUFQUElORyhXS0RpY3Rp
b25hcnlSZWYsIEltbXV0YWJsZURpY3Rpb25hcnkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tEb3Vi
bGVSZWYsIFdlYkRvdWJsZSkKIFdLX0FERF9BUElfTUFQUElORyhXS0Vycm9yUmVmLCBXZWJFcnJv
cikKIFdLX0FERF9BUElfTUFQUElORyhXS011dGFibGVBcnJheVJlZiwgTXV0YWJsZUFycmF5KQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLTXV0YWJsZURpY3Rpb25hcnlSZWYsIE11dGFibGVEaWN0aW9u
YXJ5KQorV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJvdGVjdGlvblNwYWNlUmVmLCBXZWJQcm90ZWN0
aW9uU3BhY2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYs
IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1N0cmluZ1Jl
ZiwgV2ViU3RyaW5nKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVHlwZVJlZiwgQVBJT2JqZWN0KQpJ
bmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZV9oCisjZGVmaW5lIFdlYkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKKworI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IHB1YmxpYyBBUElP
YmplY3QKK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkpOworICAgIH0KKworICAgIHZpcnR1
YWwgfldlYkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CisKK3ByaXZhdGU6CisgICAgV2ViQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKTsKKyAgICAKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBXZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCkluZGV4OiBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gNzI4MjkpCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIERvd25sb2FkUHJveHk7CitjbGFzcyBXZWJBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKIGNsYXNzIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJDb250ZXh0OwpAQCAtNTAsNiArNTEsNyBAQCBj
bGFzcyBXZWJQYWdlTmFtZXNwYWNlOwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJl
ZmVyZW5jZXM7CiAKK1dLX0FERF9BUElfTUFQUElORyhXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UmVmLCBXZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIFdLX0FERF9BUElfTUFQUElORyhXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1SZWYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0pCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tCYWNrRm9yd2FyZExpc3RSZWYsIFdlYkJhY2tGb3J3YXJkTGlzdCkKIFdLX0FE
RF9BUElfTUFQUElORyhXS0NvbnRleHRSZWYsIFdlYkNvbnRleHQpCkluZGV4OiBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgIldLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKworI2luY2x1ZGUgIldlYkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VH
ZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShXZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTo6QVBJVHlwZSk7Cit9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNpZm5kZWYgV0tBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZV9oCisjZGVmaW5lIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAorCisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNl
bmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUdldFR5
cGVJRCgpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCkluZGV4OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzI4MjkpCisrKyBXZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjE3LDYgKzIxNywyMCBA
QAogCQk1MUFDQkJBMTEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUNCQjlG
MTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tICovOyB9OwogCQk1
MUIzMDA1MDEyNTI5RDBFMDAwQjVDQTAgLyogV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMzAwNEUxMjUyOUQw
RTAwMEI1Q0EwIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCAqLzsgfTsKIAkJNTFCMzAwNTEx
MjUyOUQwRTAwMEI1Q0EwIC8qIFdlYlBhZ2VQcm94eUNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjMwMDRGMTI1MjlEMEUwMDBCNUNBMCAvKiBX
ZWJQYWdlUHJveHlDRi5jcHAgKi87IH07CisJCTUxRjVGMjRGMTJBNDcxNzMwMDdFRDQ0QSAvKiBX
ZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY1RjI0RDEyQTQ3MTczMDA3RUQ0NEEgLyogV2ViQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuY3BwICovOyB9OworCQk1MUY1RjI1MDEyQTQ3MTczMDA3RUQ0NEEg
LyogV2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjVGMjRFMTJBNDcxNzMwMDdFRDQ0QSAvKiBXZWJBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oICovOyB9OworCQk1MUY1RjI1OTEyQTQ3NDA1MDA3RUQ0NEEg
LyogV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY1RjI1NzEyQTQ3NDA1MDA3RUQ0NEEgLyogV0tBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgKi87IH07CisJCTUxRjVGMjVBMTJBNDc0MDUwMDdFRDQ0
QSAvKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY1RjI1ODEyQTQ3NDA1MDA3RUQ0NEEgLyogV0tBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oICovOyB9OworCQk1MUY1RjI3RTEyQTQ3ODYyMDA3RUQ0NEEg
LyogV2ViQ3JlZGVudGlhbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUY1RjI3QzEyQTQ3ODYyMDA3RUQ0NEEgLyogV2ViQ3JlZGVudGlhbC5jcHAg
Ki87IH07CisJCTUxRjVGMjdGMTJBNDc4NjIwMDdFRDQ0QSAvKiBXZWJDcmVkZW50aWFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY1RjI3RDEyQTQ3
ODYyMDA3RUQ0NEEgLyogV2ViQ3JlZGVudGlhbC5oICovOyB9OworCQk1MUY1RjI4MjEyQTQ3ODc0
MDA3RUQ0NEEgLyogV0tDcmVkZW50aWFsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjVGMjgwMTJBNDc4NzQwMDdFRDQ0QSAvKiBXS0NyZWRlbnRp
YWwuY3BwICovOyB9OworCQk1MUY1RjI4MzEyQTQ3ODc0MDA3RUQ0NEEgLyogV0tDcmVkZW50aWFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY1RjI4
MTEyQTQ3ODc0MDA3RUQ0NEEgLyogV0tDcmVkZW50aWFsLmggKi87IH07CisJCTUxRjVGMkFGMTJB
NDdERDgwMDdFRDQ0QSAvKiBXS0NyZWRlbnRpYWxUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGNUYyQUIxMkE0N0REODAwN0VENDRBIC8qIFdL
Q3JlZGVudGlhbFR5cGVzLmggKi87IH07CisJCTUxRjVGMkIwMTJBNDdERDgwMDdFRDQ0QSAvKiBX
S1Byb3RlY3Rpb25TcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUY1RjJBQzEyQTQ3REQ4MDA3RUQ0NEEgLyogV0tQcm90ZWN0aW9uU3BhY2Uu
Y3BwICovOyB9OworCQk1MUY1RjJCMTEyQTQ3REQ4MDA3RUQ0NEEgLyogV0tQcm90ZWN0aW9uU3Bh
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjVG
MkFEMTJBNDdERDgwMDdFRDQ0QSAvKiBXS1Byb3RlY3Rpb25TcGFjZS5oICovOyB9OworCQk1MUY1
RjJCMjEyQTQ3REQ4MDA3RUQ0NEEgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGNUYyQUUxMkE0N0REODAw
N0VENDRBIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCAqLzsgfTsKKwkJNTFGNUYyQjUxMkE0
N0Y2NjAwN0VENDRBIC8qIFdlYlByb3RlY3Rpb25TcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY1RjJCMzEyQTQ3RjY2MDA3RUQ0NEEgLyog
V2ViUHJvdGVjdGlvblNwYWNlLmNwcCAqLzsgfTsKKwkJNTFGNUYyQjYxMkE0N0Y2NjAwN0VENDRB
IC8qIFdlYlByb3RlY3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFGNUYyQjQxMkE0N0Y2NjAwN0VENDRBIC8qIFdlYlByb3RlY3Rpb25T
cGFjZS5oICovOyB9OwogCQk2RDhBOTFBNjExRjBFRkQxMDBERDAxRkUgLyogY29tLmFwcGxlLldl
YlByb2Nlc3Muc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZEOEE5MUE1MTFGMEVGRDEwMEREMDFGRSAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYiAq
LzsgfTsKIAkJNzYyQjc0OEQxMjBCQzc1QzAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjJCNzQ4
NDEyMEJCQTJEMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4REMyRUY1MzA0ODZBNjk0MDA5
OEIyMTYgLyogSW5mb1BsaXN0LnN0cmluZ3MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4OUMxNjY2RkU4NDExNThDMDJBQUMwNyAvKiBJbmZvUGxpc3Qu
c3RyaW5ncyAqLzsgfTsKQEAgLTc4Myw2ICs3OTcsMjAgQEAKIAkJNTFBQ0JCOUYxMjdBOEYyQzAw
RDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUIzMDA0RTEyNTI5RDBFMDAwQjVDQTAgLyogV2ViQmFja0Zv
cndhcmRMaXN0Q0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2Vi
QmFja0ZvcndhcmRMaXN0Q0YuY3BwOyBwYXRoID0gY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIzMDA0RjEyNTI5RDBFMDAwQjVDQTAg
LyogV2ViUGFnZVByb3h5Q0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViUGFnZVByb3h5Q0YuY3BwOyBwYXRoID0gY2YvV2ViUGFnZVByb3h5Q0YuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUY1RjI0RDEyQTQ3MTczMDA3RUQ0NEEgLyogV2Vi
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MUY1RjI0RTEyQTQ3MTczMDA3RUQ0NEEgLyogV2ViQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGNUYy
NTcxMkE0NzQwNTAwN0VENDRBIC8qIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRjVGMjU4MTJBNDc0MDUwMDdF
RDQ0QSAvKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFGNUYyN0MxMkE0Nzg2MjAwN0VENDRBIC8qIFdlYkNyZWRlbnRpYWwu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ3JlZGVudGlhbC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRjVGMjdEMTJBNDc4NjIwMDdFRDQ0
QSAvKiBXZWJDcmVkZW50aWFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNyZWRlbnRpYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGNUYyODAxMkE0
Nzg3NDAwN0VENDRBIC8qIFdLQ3JlZGVudGlhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXS0NyZWRlbnRpYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MUY1RjI4MTEyQTQ3ODc0MDA3RUQ0NEEgLyogV0tDcmVkZW50aWFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ3JlZGVudGlhbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MUY1RjJBQjEyQTQ3REQ4MDA3RUQ0NEEgLyogV0tDcmVkZW50aWFsVHlw
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDcmVkZW50aWFsVHlwZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGNUYyQUMxMkE0N0REODAwN0VENDRB
IC8qIFdLUHJvdGVjdGlvblNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdLUHJvdGVjdGlvblNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTFGNUYyQUQxMkE0N0REODAwN0VENDRBIC8qIFdLUHJvdGVjdGlvblNwYWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJvdGVjdGlvblNwYWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRjVGMkFFMTJBNDdERDgwMDdFRDQ0QSAvKiBXS1Byb3Rl
Y3Rpb25TcGFjZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJv
dGVjdGlvblNwYWNlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGNUYy
QjMxMkE0N0Y2NjAwN0VENDRBIC8qIFdlYlByb3RlY3Rpb25TcGFjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQcm90ZWN0aW9uU3BhY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUY1RjJCNDEyQTQ3RjY2MDA3RUQ0NEEgLyogV2ViUHJv
dGVjdGlvblNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByb3Rl
Y3Rpb25TcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REFENzI5NDExNkZG
NzBCMDBFRTUzOTYgLyogV2ViUHJvY2Vzcy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBXZWJQcm9jZXNzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1REFENzNGMTExNkZGOTBDMDBFRTUzOTYgLyogQmFzZVRhcmdldC54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlVGFyZ2V0LnhjY29uZmlnOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2RDhBOTFBNTExRjBFRkQxMDBERDAxRkUgLyogY29tLmFw
cGxlLldlYlByb2Nlc3Muc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFwcGxlLldlYlBy
b2Nlc3Muc2I7IHBhdGggPSBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQxMCw2ICsxNDM4LDggQEAKIAkJCQk1MTI5MzVE
NjEyODhEMTk0MDBBNEI2OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggKi8sCiAJCQkJNTEwRkJC
OTgxMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwICovLAogCQkJ
CTUxMEZCQjk5MTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmggKi8s
CisJCQkJNTFGNUYyN0MxMkE0Nzg2MjAwN0VENDRBIC8qIFdlYkNyZWRlbnRpYWwuY3BwICovLAor
CQkJCTUxRjVGMjdEMTJBNDc4NjIwMDdFRDQ0QSAvKiBXZWJDcmVkZW50aWFsLmggKi8sCiAJCQkJ
NTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEuaCAqLywKIAkJCQlCQzU3NTYxMjEy
NkUwMTM4MDA2RjBGMTIgLyogV2ViRXJyb3IuY3BwICovLAogCQkJCTUxNkE0QTVCMTIwQTJDQ0Qw
MEMwNUI3RiAvKiBXZWJFcnJvci5oICovLApAQCAtMTQyNiwxMCArMTQ1NiwxMiBAQAogCQkJCUMw
NkM2MDkzMTI0QzE0NDMwMDAxNjgyRiAvKiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAq
LywKIAkJCQlDMDZDNjA5NDEyNEMxNDQzMDAwMTY4MkYgLyogV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oICovLAogCQkJCUMwMzM3RERDMTI3QTUyMUMwMDhGRjRGNCAvKiBXZWJQbGF0Zm9ybVRv
dWNoUG9pbnQuY3BwICovLAotCQkJCUJDMzA2ODIzMTI1QTZCOTQwMEU3MTI3OCAvKiBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAqLywKLQkJCQlCQzMwNjgyMjEyNUE2Qjk0MDBFNzEy
NzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oICovLAogCQkJCUJDRDU5OEFCMTEy
QjdGREYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlLmNwcCAqLywKIAkJCQlCQ0Q1OThB
QTExMkI3RkRGMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXNTdG9yZS5oICovLAorCQkJCUJDMzA2
ODIzMTI1QTZCOTQwMEU3MTI3OCAvKiBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAq
LywKKwkJCQlCQzMwNjgyMjEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oICovLAorCQkJCTUxRjVGMkIzMTJBNDdGNjYwMDdFRDQ0QSAvKiBXZWJQcm90ZWN0
aW9uU3BhY2UuY3BwICovLAorCQkJCTUxRjVGMkI0MTJBNDdGNjYwMDdFRDQ0QSAvKiBXZWJQcm90
ZWN0aW9uU3BhY2UuaCAqLywKIAkJCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyogV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmggKi8sCiAJCQkJQkNGMDRDOEUxMUZGOUY2RTAwRjg2QTU4IC8q
IFdlYlN0cmluZy5oICovLAogCQkJCUMwMzM3REQ3MTI3QTUxQjYwMDhGRjRGNCAvKiBXZWJUb3Vj
aEV2ZW50LmNwcCAqLywKQEAgLTE2NTIsNiArMTY4NCw4IEBACiAJCQkJMUEzMDA2NkMxMTEwRjRG
NzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywKIAkJCQkxQTBGMjlFMTEyMEI0
NDQyMDA1M0QxQjkgLyogVmlzaXRlZExpbmtQcm92aWRlci5jcHAgKi8sCiAJCQkJMUEwRjI5RTIx
MjBCNDQ0MjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rUHJvdmlkZXIuaCAqLywKKwkJCQk1MUY1RjI0
RDEyQTQ3MTczMDA3RUQ0NEEgLyogV2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwICovLAor
CQkJCTUxRjVGMjRFMTJBNDcxNzMwMDdFRDQ0QSAvKiBXZWJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oICovLAogCQkJCUJDNzJCQTFCMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExp
c3QuY3BwICovLAogCQkJCUJDNzJCQTFDMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2Fy
ZExpc3QuaCAqLywKIAkJCQlCQzY0NkJGNTExREQzNzdCMDA2NDU1QjAgLyogV2ViQmFja0Zvcndh
cmRMaXN0SXRlbS5jcHAgKi8sCkBAIC0xNzI5LDYgKzE3NjMsOCBAQAogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJQkNCNjM0NzcxMTZCRjEwNjAwNjAzMjE1IC8qIFdlYktpdDIuaCAqLywKIAkJCQlCQ0RE
QjMyQzEyNEVDMkUxMDA0OEQxM0MgLyogV0tBUElDYXN0LmggKi8sCisJCQkJNTFGNUYyNTcxMkE0
NzQwNTAwN0VENDRBIC8qIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwICovLAorCQkJCTUx
RjVGMjU4MTJBNDc0MDUwMDdFRDQ0QSAvKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8s
CiAJCQkJQkM2NDZDMTYxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0LmNwcCAq
LywKIAkJCQlCQzY0NkMxNzExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3QuaCAq
LywKIAkJCQlCQzY0NkMxODExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVt
LmNwcCAqLywKQEAgLTIwNjAsNiArMjA5Niw5IEBACiAJCQkJNTFBNTU1RjMxMjhDNkM0NzAwOUFC
Q0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmNwcCAqLywKIAkJCQk1MUE1NTVGNDEyOEM2QzQ3MDA5
QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uaCAqLywKIAkJCQk1MUE1NTYwMDEyOEM2RDkyMDA5
QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oICovLAorCQkJCTUxRjVGMjgwMTJBNDc4
NzQwMDdFRDQ0QSAvKiBXS0NyZWRlbnRpYWwuY3BwICovLAorCQkJCTUxRjVGMjgxMTJBNDc4NzQw
MDdFRDQ0QSAvKiBXS0NyZWRlbnRpYWwuaCAqLywKKwkJCQk1MUY1RjJBQjEyQTQ3REQ4MDA3RUQ0
NEEgLyogV0tDcmVkZW50aWFsVHlwZXMuaCAqLywKIAkJCQlCQzQwNzVEQjEyNEZGMDI3MDA2OEYy
MEEgLyogV0tEYXRhLmNwcCAqLywKIAkJCQlCQzQwNzVEQzEyNEZGMDI3MDA2OEYyMEEgLyogV0tE
YXRhLmggKi8sCiAJCQkJQkM0MDc1REQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLRGljdGlvbmFyeS5j
cHAgKi8sCkBAIC0yMDc0LDYgKzIxMTMsOSBAQAogCQkJCUJDNDA3NUU0MTI0RkYwMjcwMDY4RjIw
QSAvKiBXS011dGFibGVEaWN0aW9uYXJ5LmggKi8sCiAJCQkJQkM0MDc1RTUxMjRGRjAyNzAwNjhG
MjBBIC8qIFdLTnVtYmVyLmNwcCAqLywKIAkJCQlCQzQwNzVFNjEyNEZGMDI3MDA2OEYyMEEgLyog
V0tOdW1iZXIuaCAqLywKKwkJCQk1MUY1RjJBQzEyQTQ3REQ4MDA3RUQ0NEEgLyogV0tQcm90ZWN0
aW9uU3BhY2UuY3BwICovLAorCQkJCTUxRjVGMkFEMTJBNDdERDgwMDdFRDQ0QSAvKiBXS1Byb3Rl
Y3Rpb25TcGFjZS5oICovLAorCQkJCTUxRjVGMkFFMTJBNDdERDgwMDdFRDQ0QSAvKiBXS1Byb3Rl
Y3Rpb25TcGFjZVR5cGVzLmggKi8sCiAJCQkJQkM0MDc1RTcxMjRGRjAyNzAwNjhGMjBBIC8qIFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLywKIAkJCQlCQzQwNzVFODEyNEZGMDI3MDA2OEYy
MEEgLyogV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCAqLywKIAkJCQlGNjdERDdCOTEyNUU0MEQ5
MDA3QkRDQjggLyogV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVQcml2YXRlLmggKi8sCkBAIC0yNDI3
LDYgKzI0NjksMTQgQEAKIAkJCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVj
dG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1MzU2OUQxMjkxQjFEMjAw
MDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFBQjRBOEQxMjk2RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxRjVGMjUwMTJBNDcxNzMwMDdFRDQ0QSAvKiBXZWJBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFGNUYyNUExMkE0NzQwNTAwN0VENDRBIC8q
IFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRjVGMjdG
MTJBNDc4NjIwMDdFRDQ0QSAvKiBXZWJDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MUY1RjI4MzEyQTQ3ODc0MDA3RUQ0NEEgLyogV0tDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MUY1RjJBRjEyQTQ3REQ4MDA3RUQ0NEEgLyogV0tDcmVkZW50aWFsVHlwZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxRjVGMkIxMTJBNDdERDgwMDdFRDQ0QSAvKiBXS1Byb3RlY3Rpb25T
cGFjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFGNUYyQjIxMkE0N0REODAwN0VENDRBIC8qIFdL
UHJvdGVjdGlvblNwYWNlVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRjVGMkI2MTJBNDdG
NjYwMDdFRDQ0QSAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc4
Niw2ICsyODM2LDEyIEBACiAJCQkJRURDQTcxQjcxMjhEREE4QzAwMjAxQjI2IC8qIFdLQnVuZGxl
UGFnZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1MzU2OUMxMjkxQjFEMjAwMDc0
OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QUFCNEFBQTEyOTZGMTU0MDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lvbk1hYy5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTUxRjVGMjRGMTJBNDcxNzMwMDdFRDQ0QSAvKiBXZWJBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUY1RjI1OTEyQTQ3NDA1MDA3RUQ0
NEEgLyogV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MUY1RjI3RTEyQTQ3ODYyMDA3RUQ0NEEgLyogV2ViQ3JlZGVudGlhbC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MUY1RjI4MjEyQTQ3ODc0MDA3RUQ0NEEgLyogV0tDcmVkZW50aWFsLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTUxRjVGMkIwMTJBNDdERDgwMDdFRDQ0QSAvKiBXS1Byb3RlY3Rpb25T
cGFjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUY1RjJCNTEyQTQ3RjY2MDA3RUQ0NEEgLyog
V2ViUHJvdGVjdGlvblNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViS2l0Mi93aW4v
V2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJ
KHJldmlzaW9uIDcyODI5KQorKysgV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTUyNCw2ICs1MjQsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYkNyZWRlbnRpYWwuY3BwIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdl
YkNyZWRlbnRpYWwuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJEYXRhLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAt
NjA0LDYgKzYxMiwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxTaGFyZWRcV2ViUHJvdGVjdGlvblNwYWNlLmNwcCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJQcm90
ZWN0aW9uU3BhY2UuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCINCiAJCQkJPg0K
IAkJCTwvRmlsZT4NCkBAIC02ODcsNiArNzAzLDE4IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
IAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcQVBJXGNcV0tDcmVkZW50
aWFsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxTaGFyZWRcQVBJXGNcV0tDcmVkZW50aWFsLmgiDQorCQkJCQk+DQorCQkJCTwv
RmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEFQSVxjXFdL
Q3JlZGVudGlhbFR5cGVzLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEFQSVxjXFdLRGF0YS5jcHAiDQogCQkJCQk+DQog
CQkJCTwvRmlsZT4NCkBAIC03NDMsNiArNzcxLDE4IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
IAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcQVBJXGNcV0tQcm90ZWN0
aW9uU3BhY2UuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxBUElcY1xXS1Byb3RlY3Rpb25TcGFjZS5oIg0KKwkJCQkJ
Pg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJl
ZFxBUElcY1xXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4N
CisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEFQSVxjXFdLU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KQEAgLTE3NTIsNiAr
MTc5MiwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxVSVByb2Nlc3NcV2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNz
XFdlYkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcV2ViQmFja0ZvcndhcmRMaXN0
LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0xOTgyLDYgKzIwMzAsMTQgQEAKIAkJCQkJ
CT4NCiAJCQkJCTwvRmlsZT4NCiAJCQkJCTxGaWxlDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxV
SVByb2Nlc3NcQVBJXENcV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAiDQorCQkJCQkJPg0K
KwkJCQkJPC9GaWxlPg0KKwkJCQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJv
Y2Vzc1xBUElcQ1xXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiDQorCQkJCQkJPg0KKwkJCQkJ
PC9GaWxlPg0KKwkJCQkJPEZpbGUNCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xB
UElcQ1xXS0JhY2tGb3J3YXJkTGlzdC5jcHAiDQogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75448</attachid>
            <date>2010-12-02 18:21:09 -0800</date>
            <delta_ts>2010-12-03 08:56:47 -0800</delta_ts>
            <desc>First stage v1</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>102142</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzIyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMTItMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdy
b3VuZHdvcmsgZm9yIDxyZGFyOi8vcHJvYmxlbS83NjYwNzMzPiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMTkxCisgICAgICAgIFdlYktpdDIgQXV0aGVudGlj
YXRpb24gU3VwcG9ydAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisKKyAgICAgICAgRXhw
b3NlIHRoZSBBdXRoZW50aWNhdGlvbkNsaWVudCBmb3IgV0syIHBsYXRmb3JtcyAoV2luZG93cyBh
bHJlYWR5IGRvZXMgdGhpcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRo
ZW50aWNhdGlvbk1hYy5tbToKKyAgICAgICAgKC1bV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50
QXNDaGFsbGVuZ2VTZW5kZXIgY2xpZW50XSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTo6YXV0aGVudGljYXRpb25DbGllbnQpOgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9xdC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmF1dGhlbnRpY2F0aW9uQ2xpZW50KToKKwogMjAx
MC0xMi0wMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhdmUgSHlhdHQuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDczMjI0KQorKysgV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw3IEBAIF9fWk4z
SlNDOEJpbmRpbmdzOEluc3RhbmNlMTZuZXdSdW50aW1lT2IKIF9fWk4zV1RGMTBTdHJpbmdJbXBs
Y3ZQOE5TU3RyaW5nRXYKIF9fWk4zV1RGNlN0cmluZ0MxRVA4TlNTdHJpbmcKIF9fWk4zV1RGNlN0
cmluZ0MxRVBLMTBfX0NGU3RyaW5nCitfX1pON1dlYkNvcmUxMENyZWRlbnRpYWxDMUV2CiBfX1pO
N1dlYkNvcmUxMEpTRG9jdW1lbnQ2c19pbmZvRQogX19aTjdXZWJDb3JlMTBNb3VzZUV2ZW50QzFF
UktOM1dURjEyQXRvbWljU3RyaW5nRWJiTlMxXzEwUGFzc1JlZlB0cklOU185RE9NV2luZG93RUVF
aWlpaWliYmJidE5TNV9JTlNfMTFFdmVudFRhcmdldEVFRU5TNV9JTlNfOUNsaXBib2FyZEVFRWIK
IF9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIwc2V0Q2FuSGF2ZVNjcm9sbGJhcnNFYgpAQCAtMzY3
LDYgKzM2OCw3IEBAIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OXRyYW5zbGF0ZUUKIF9f
Wk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0QzFFUDlDR0NvbnRleHQKIF9fWk43V2ViQ29yZTE1
R3JhcGhpY3NDb250ZXh0RDFFdgogX19aTjdXZWJDb3JlMTVKU0RPTVdpbmRvd0Jhc2UxOGNvbW1v
bkpTR2xvYmFsRGF0YUV2CitfX1pON1dlYkNvcmUxNVByb3RlY3Rpb25TcGFjZUMxRXYKIF9fWk43
V2ViQ29yZTE1U2Nyb2xsQWxpZ25tZW50MTdhbGlnbkNlbnRlckFsd2F5c0UKIF9fWk43V2ViQ29y
ZTE1U2Nyb2xsQWxpZ25tZW50MTlhbGlnblRvRWRnZUlmTmVlZGVkRQogX19aTjdXZWJDb3JlMTVT
dHJpbmdUcnVuY2F0b3IxM3JpZ2h0VHJ1bmNhdGVFUktOM1dURjZTdHJpbmdFZlJLTlNfNEZvbnRF
YgpAQCAtNTMzLDYgKzUzNSw3IEBAIF9fWk43V2ViQ29yZTI2VXNlclR5cGluZ0dlc3R1cmVJbmRp
Y2F0b3IKIF9fWk43V2ViQ29yZTI2Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnVFdgogX19aTjdX
ZWJDb3JlMjZjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0V2CiBfX1pON1dlYkNvcmUyNnVzZXNU
ZXN0TW9kZUZvY3VzUmluZ0NvbG9yRXYKK19fWk43V2ViQ29yZTI3QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlQzJFdgogX19aTjdXZWJDb3JlMjdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb25D
MUVOM1dURjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRWJSS05TMV82U3RyaW5nRQogX19aTjdXZWJD
b3JlMjdEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sxNHNldE9yaWVudGF0aW9uRU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzE3RGV2aWNlT3JpZW50YXRpb25FRUUKIF9fWk43V2ViQ29yZTI3RGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgpAQCAtMTA0Niw5ICsxMDQ5LDExIEBAIF9fWk5LN1dl
YkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlOG1pbWUKIF9fWk5LN1dlYkNvcmUyMUJhY2tGb3J3
YXJkQ29udHJvbGxlcjEyZm9yd2FyZENvdW50RXYKIF9fWk5LN1dlYkNvcmUyMUJhY2tGb3J3YXJk
Q29udHJvbGxlcjliYWNrQ291bnRFdgogX19aTks3V2ViQ29yZTIxVXNlckNvbnRlbnRVUkxQYXR0
ZXJuN21hdGNoZXNFUktOU180S1VSTEUKK19fWk5LN1dlYkNvcmUyM0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlMjBhdXRoZW50aWNhdGlvbkNsaWVudEV2CiBfX1pOSzdXZWJDb3JlMjNGcmFtZUxvYWRl
clN0YXRlTWFjaGluZTE1Zmlyc3RMYXlvdXREb25lRXYKIF9fWk5LN1dlYkNvcmUyM0ZyYW1lTG9h
ZGVyU3RhdGVNYWNoaW5lMjNjb21taXR0aW5nRmlyc3RSZWFsTG9hZEV2CiBfX1pOSzdXZWJDb3Jl
MjZOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjZpc0RvbmVFdgorX19aTks3V2ViQ29yZTI3QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlNmlzTnVsbEV2CiBfX1pOSzdXZWJDb3JlNEZvbnQxMGZs
b2F0V2lkdGhFUktOU183VGV4dFJ1bkVQTjNXVEY3SGFzaFNldElQS05TXzE0U2ltcGxlRm9udERh
dGFFTlM0XzdQdHJIYXNoSVM4X0VFTlM0XzEwSGFzaFRyYWl0c0lTOF9FRUVFUE5TXzEzR2x5cGhP
dmVyZmxvd0UKIF9fWk5LN1dlYkNvcmU0Rm9udDhkcmF3VGV4dEVQTlNfMTVHcmFwaGljc0NvbnRl
eHRFUktOU183VGV4dFJ1bkVSS05TXzEwRmxvYXRQb2ludEVpaQogX19aTks3V2ViQ29yZTRLVVJM
MTFjcmVhdGVDRlVSTEV2CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZpc2lvbiA3MzIyNCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqbnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbnNDaGFsbGVuZ2UuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0QXV0aGVudGljYXRpb25D
bGllbnQoQXV0aGVudGljYXRpb25DbGllbnQqKTsgLy8gQ2hhbmdlcyBzZW5kZXIgdG8gb25lIHRo
YXQgaW52b2tlcyBjbGllbnQgbWV0aG9kcy4KKyAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0
aGVudGljYXRpb25DbGllbnQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCShyZXZpc2lvbiA3MzIyNCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgQGludGVyZmFjZSBXZWJDb3JlQXV0aGVudGljYXRp
b25DbGllbnRBcwogICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKIH0KIC0gKGlk
KWluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6KEF1dGhlbnRpY2F0aW9uQ2xpZW50KiljbGll
bnQ7CistIChBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwogLSAodm9pZClkZXRhY2hDbGll
bnQ7CiBAZW5kCiAKQEAgLTU1LDYgKzU2LDExIEBAIC0gKGlkKWluaXRXaXRoQXV0aGVudGljYXRp
b25DbGllbnQ6KEF1dGgKICAgICByZXR1cm4gc2VsZjsKIH0KIAorLSAoQXV0aGVudGljYXRpb25D
bGllbnQqKWNsaWVudAoreworICAgIHJldHVybiBtX2NsaWVudDsKK30KKwogLSAodm9pZClkZXRh
Y2hDbGllbnQKIHsKICAgICBtX2NsaWVudCA9IDA7CkBAIC0xMjMsNiArMTI5LDE0IEBAIHZvaWQg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnNldEF1dGhlbnQKICAgICB9CiB9CiAKK0F1dGhlbnRp
Y2F0aW9uQ2xpZW50KiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6YXV0aGVudGljYXRpb25DbGll
bnQoKSBjb25zdAoreworICAgIGlmIChbbV9zZW5kZXIuZ2V0KCkgaXNNZW1iZXJPZkNsYXNzOltX
ZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBjbGFzc11dKQorICAg
ICAgICByZXR1cm4gW3N0YXRpY19jYXN0PFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hh
bGxlbmdlU2VuZGVyKj4obV9zZW5kZXIuZ2V0KCkpIGNsaWVudF07CisgICAgCisgICAgcmV0dXJu
IDA7Cit9CisKIGJvb2wgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnBsYXRmb3JtQ29tcGFyZShj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGIpCiB7CiAgICAgaWYgKGEuc2VuZGVyKCkgIT0gYi5zZW5kZXIoKSkKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oCShyZXZpc2lvbiA3MzIyNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXV0aGVudGljYXRpb25DbGllbnQ7CisK
IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGljIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQmFzZSB7CiBwdWJsaWM6CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQpAQCAt
MzksNiArNDEsOSBAQCBwdWJsaWM6CiAgICAgICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VC
YXNlKHByb3RlY3Rpb25TcGFjZSwgcHJvcG9zZWRDcmVkZW50aWFsLCBwcmV2aW91c0ZhaWx1cmVD
b3VudCwgcmVzcG9uc2UsIGVycm9yKQogICAgIHsKICAgICB9CisKKyAgICBBdXRoZW50aWNhdGlv
bkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQoKSBjb25zdCB7IHJldHVybiAwOyB9IC8vIEZJ
WE1FOiBJbXBsZW1lbnQhCisKIH07CiAKIH0KSW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzIyNikKKysrIFdlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE3IEBACisyMDEwLTEyLTAyICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcm91bmR3b3JrIGZvciA8cmRhcjovL3Byb2JsZW0v
NzY2MDczMz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDE5
MQorICAgICAgICBXZWJLaXQyIEF1dGhlbnRpY2F0aW9uIFN1cHBvcnQKKworICAgICAgICBXaXRo
IHRoaXMgcGF0Y2ggaW4gcGxhY2UsIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZXMgYXJlIHNlbnQg
dXAgZnJvbSBXZWJDb3JlIGFuZCBzaGlwcGVkIG92ZXIgdGhlIElQQyBsYXllci4KKyAgICAgICAg
Q2xpZW50IGFwcHMgY2FuIGltcGxlbWVudCB0aGUgcmVsYXRlZCBjbGllbnQgbWV0aG9kcyB0byBh
dHRlbXB0IHRvIGNvbnRpbnVlIHdpdGhvdXQgY3JlZGVudGlhbHMgb3IgY2FuY2VsIGEKKyAgICAg
ICAgY2hhbGxlbmdlLgorCisgICAgICAgIFRoZXJlJ3Mgbm90IHlldCBBUEkgdG8gaW5zcGVjdCBh
IGNoYWxsZW5nZSBvciBjcmVhdGUgYSBjcmVkZW50aWFsIHRvIHVzZSBpbiByZXBseSAtIHRoYXQg
d2lsbCBjb21lIGxhdGVyLgorCisgICAgICAgIEJ1aWxkLXN5c3RlbSBjaGFuZ2VzOgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJvOgor
ICAgICAgICAqIFdlYktpdDIucHJvOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKKyAgICAgICAgTWVz
c2FnZXMgYW5kIGNhc3RzIGZvciBJUEMgYW5kIEFQSXM6CisgICAgICAgICogUGxhdGZvcm0vQ29y
ZUlQQy9NZXNzYWdlSUQuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAg
ICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorCisgICAgICAgIFN0dWIgb3V0IHRoZSBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSBjbGFzcyBmYW1pbHk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VHZXRUeXBlSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NyZWRlbnRpYWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLQ3JlZGVudGlhbEdldFR5
cGVJRCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdLUHJvdGVjdGlvblNwYWNlR2V0VHlwZUlEKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuaDogQWRkZWQuCisKKyAgICAgICAgQWRkIGFuIEF1
dGhlbnRpY2F0aW9uIGxpc3RlbmVyIGZvciB0aGUgY2xpZW50IGFwcCB0byByZXNwb25kIHRvOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJH
ZXRUeXBlSUQpOgorICAgICAgICAoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJVc2VD
cmVkZW50aWFsKToKKyAgICAgICAgKFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyQ2Fu
Y2VsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXIuaDogQWRkZWQuCisKKyAgICAgICAgQWRkIEF1dGhlbnRpY2F0aW9uIHJlbGF0ZWQg
bWV0aG9kcyB0byB0aGUgcGFnZSBsb2FkZXIgY2xpZW50OgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuaDoKKworICAgICAgICBBZGQgZW1wdHkgaW1wbGVtZW50YXRpb25zIG9mIHRo
ZSBuZXcgQVBJIG9iamVjdHM6CisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6fkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5Ojp1c2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eTo6Y2FuY2VsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6bGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Ojp0eXBlKToKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkNyZWRlbnRpYWw6OmNvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50
aWNhdGlvbi9XZWJDcmVkZW50aWFsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDcmVk
ZW50aWFsOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDcmVkZW50aWFsOjp0eXBlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZTo6V2ViUHJvdGVj
dGlvblNwYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVj
dGlvblNwYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZTo6dHlwZSk6CisK
KyAgICAgICAgQWRkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBBdXRoZW50aWNhdGlvbiBkZWNpc2lv
biBsaXN0ZW5lcjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVy
KToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjp1c2VD
cmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXI6OmRldGFjaENoYWxsZW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OnR5cGUpOgorCisgICAgICAg
IFdlYlBhZ2UgYW5kIFBhZ2VMb2FkZXJDbGllbnQgZ2x1ZToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50Ojpj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
SW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgIEFkZCBhIG1hbmFn
ZXIgdG8gbWFwIHRoZSBhY3R1YWwgcGxhdGZvcm0gYXV0aGVudGljYXRpb24gY2hhbGxlbmdlcyB0
byBhIGNoYWxsZW5nZSBJRCwKKyAgICAgICAgYXMgYXQgbGVhc3Qgc29tZSBwbGF0Zm9ybXMgcmVx
dWlyZSB0aGUgb2JqZWN0IGlkZW50aXR5IHRvIHBlcnNpc3Q6CisgICAgICAgICogV2ViUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
Z2VuZXJhdGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUlEKToKKyAgICAgICAgKFdlYktpdDo6QXV0
aGVudGljYXRpb25NYW5hZ2VyOjpzaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNh
dGlvbk1hbmFnZXI6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dXNlQ3JlZGVudGlh
bEZvckNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
Y29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsQ2hhbGxlbmdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5t
ZXNzYWdlcy5pbjogQWRkZWQuCisKKyAgICAgICAgSGFuZCBvZmYgQXV0aGVudGljYXRpb24gY2hh
bGxlbmdlcyB0byB0aGUgbWFuYWdlciB0byBiZSBzZW50IG92ZXIgSVBDOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisKIDIwMTAtMTItMDIg
IExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KSW5kZXg6IFdlYktpdDIvRGVyaXZlZFNvdXJj
ZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlz
aW9uIDczMjI0KQorKysgV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw2ICsyMyw3IEBACiBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1BsdWdpblByb2Nl
c3MgXAogICAgICQoV2ViS2l0MikvU2hhcmVkL1BsdWdpbnMgXAorICAgICQoV2ViS2l0MikvV2Vi
UHJvY2Vzcy9BdXRoZW50aWNhdGlvbiBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL1BsdWdp
bnMgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9XZWJQYWdlIFwKICAgICAkKFdlYktpdDIp
L1dlYlByb2Nlc3MgXApAQCAtMzIsNiArMzMsNyBAQCBWUEFUSCA9IFwKICMKIAogTUVTU0FHRV9S
RUNFSVZFUlMgPSBcCisgICAgQXV0aGVudGljYXRpb25NYW5hZ2VyIFwKICAgICBEb3dubG9hZFBy
b3h5IFwKICAgICBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlciBcCiAgICAgUGx1Z2luQ29udHJvbGxl
clByb3h5IFwKSW5kZXg6IFdlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJvCShyZXZpc2lvbiA3MzIyNCkKKysrIFdlYktpdDIv
RGVyaXZlZFNvdXJjZXMucHJvCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3IEBAIGRlZmlu
ZVJlcGxhY2UobWVzc2FnZV9yZWNlaXZlcl9nZW5lcmF0b3IKIAogVlBBVEggPSBcCiAgICAgUGx1
Z2luUHJvY2VzcyBcCisgICAgV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbiBcCiAgICAgV2ViUHJv
Y2Vzcy9QbHVnaW5zIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UgXAogICAgIFdlYlByb2Nlc3Mg
XApAQCAtOTMsNiArOTQsNyBAQCBWUEFUSCA9IFwKICAgICBVSVByb2Nlc3MvUGx1Z2lucwogCiBN
RVNTQUdFX1JFQ0VJVkVSUyA9IFwKKyAgICBBdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMu
aW4gXAogICAgIERvd25sb2FkUHJveHkubWVzc2FnZXMuaW4gXAogICAgIFBsdWdpbkNvbnRyb2xs
ZXJQcm94eS5tZXNzYWdlcy5pbiBcCiAgICAgUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbiBcCklu
ZGV4OiBXZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi5w
cm8JKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9XZWJLaXQyLnBybwkod29ya2luZyBjb3B5
KQpAQCAtMTU5LDYgKzE1OSw3IEBAIFFNQUtFX0NYWEZMQUdTICs9ICItaW5jbHVkZSAkJFBSRUZJ
WF9IRUEKIERFRklORVMgKz0gQlVJTERJTkdfUVRfXwogCiBXRUJLSVQyX0dFTkVSQVRFRF9IRUFE
RVJTID0gXAorICAgICQkV0VCS0lUMl9HRU5FUkFURURfU09VUkNFU19ESVIvQXV0aGVudGljYXRp
b25NYW5hZ2VyTWVzc2FnZXMuaCBcCiAgICAgJCRXRUJLSVQyX0dFTkVSQVRFRF9TT1VSQ0VTX0RJ
Ui9Eb3dubG9hZFByb3h5TWVzc2FnZXMuaCBcCiAgICAgJCRXRUJLSVQyX0dFTkVSQVRFRF9TT1VS
Q0VTX0RJUi9QbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlcy5oIFwKICAgICAkJFdFQktJVDJf
R0VORVJBVEVEX1NPVVJDRVNfRElSL1BsdWdpblByb2Nlc3NNZXNzYWdlcy5oIFwKQEAgLTE3NCw2
ICsxNzUsNyBAQCBXRUJLSVQyX0dFTkVSQVRFRF9IRUFERVJTID0gXAogICAgICQkV0VCS0lUMl9H
RU5FUkFURURfU09VUkNFU19ESVIvV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaAogCiBXRUJLSVQy
X0dFTkVSQVRFRF9TT1VSQ0VTID0gXAorICAgICQkV0VCS0lUMl9HRU5FUkFURURfU09VUkNFU19E
SVIvQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBcCiAgICAgJCRXRUJL
SVQyX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUi9Eb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCBcCiAgICAgJCRXRUJLSVQyX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUi9QbHVnaW5Db250cm9sbGVy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKICAgICAkJFdFQktJVDJfR0VORVJBVEVEX1NPVVJD
RVNfRElSL1BsdWdpblByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKQEAgLTI2MSwxMCArMjYz
LDEzIEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9xdC9VcGRhdGVDaHVuay5oIFwKICAgICBT
aGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQVBJ
Q2FzdC5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
IFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIu
aCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmggXAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oIFwK
KyAgICBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmggXAogICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS0Rvd25sb2FkLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmggXAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCBcCkBAIC0yNzYsNiArMjgxLDcg
QEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaCBcCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXNQcml2YXRlLmggXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rp
b25TcGFjZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV2ViS2l0Mi5oIFwKICAgICBVSVByb2Nl
c3MvQVBJL0MvcXQvV0tOYXRpdmVFdmVudC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9XS1Jl
dGFpblB0ci5oIFwKQEAgLTI4OCw2ICsyOTQsMTAgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9xdC9xd2twYWdlLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgg
XAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcHJlZmVyZW5jZXMuaCBcCisgICAgVUlQcm9jZXNz
L0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBcCisgICAgVUlQ
cm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIFwK
KyAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5oIFwKKyAgICBVSVBy
b2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmggXAogICAgIFVJUHJvY2Vz
cy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eS5oIFwKICAgICBVSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBc
CkBAIC0zMjgsNiArMzM4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYlVJQ2xp
ZW50LmggXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJDb250ZXh0TWVudVByb3h5UXQuaCBcCiAgICAg
VUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaCBcCisgICAgV2ViUHJvY2Vzcy9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWQuaCBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNr
Rm9yd2FyZExpc3QuaCBcCkBAIC00NDYsOSArNDU3LDEyIEBAIFNPVVJDRVMgKz0gXAogICAgIFNo
YXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5jcHAgXAogICAgIFNoYXJlZC9xdC9XZWJVUkxSZXF1
ZXN0UXQuY3BwIFwKICAgICBTaGFyZWQvcXQvV2ViVVJMUmVzcG9uc2VRdC5jcHAgXAorICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCBcCisgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuY3BwIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFt
ZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIFwK
QEAgLTQ1OCw2ICs0NzIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlR3JvdXAuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmFtZXNwYWNlLmNwcCBc
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIFwKKyAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9X
S1N0cmluZ1F0LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9BUEkvcXQvQ2xpZW50SW1wbC5jcHAgXApAQCAtNDY1LDYgKzQ4MCwxMCBA
QCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3a2hpc3RvcnkuY3BwIFwKICAg
ICBVSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3
a3ByZWZlcmVuY2VzLmNwcCBcCisgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwIFwKKyAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcCBcCisgICAgVUlQcm9jZXNzL0F1dGhl
bnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuY3BwIFwKKyAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRp
b24vV2ViUHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwIFwKQEAgLTUxMiw2
ICs1MzEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJv
eHlRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmNwcCBcCiAg
ICAgVUlQcm9jZXNzL3F0L1dlYlByZWZlcmVuY2VzUXQuY3BwIFwKKyAgICBXZWJQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgXAogICAgIFdlYlByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5j
cHAgXApJbmRleDogV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaAkocmV2aXNpb24gNzMy
MjQpCisrKyBXZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDYgKzM1LDcgQEAgZW51bSBNZXNzYWdlQ2xhc3MgewogICAgIE1lc3NhZ2VDbGFz
c0NvcmVJUEMsCiAKICAgICAvLyBNZXNzYWdlcyBzZW50IGJ5IHRoZSBVSSBwcm9jZXNzIHRvIHRo
ZSB3ZWIgcHJvY2Vzcy4KKyAgICBNZXNzYWdlQ2xhc3NBdXRoZW50aWNhdGlvbk1hbmFnZXIsCiAg
ICAgTWVzc2FnZUNsYXNzRHJhd2luZ0FyZWEsCiAgICAgTWVzc2FnZUNsYXNzSW5qZWN0ZWRCdW5k
bGUsCiAgICAgTWVzc2FnZUNsYXNzV2ViSW5zcGVjdG9yLApJbmRleDogV2ViS2l0Mi9TaGFyZWQv
QVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHJl
dmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDExICszNiwxNSBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEJhc2UgdHlwZXMKICAg
ICAgICAgVHlwZU51bGwgPSAwLAogICAgICAgICBUeXBlQXJyYXksCisgICAgICAgIFR5cGVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSwKKyAgICAgICAgVHlwZUF1dGhlbnRpY2F0aW9uRGVjaXNpb25M
aXN0ZW5lciwKICAgICAgICAgVHlwZUNlcnRpZmljYXRlSW5mbywKICAgICAgICAgVHlwZUNvbnRl
eHRNZW51SXRlbSwKKyAgICAgICAgVHlwZUNyZWRlbnRpYWwsCiAgICAgICAgIFR5cGVEYXRhLAog
ICAgICAgICBUeXBlRGljdGlvbmFyeSwKICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICBUeXBl
UHJvdGVjdGlvblNwYWNlLAogICAgICAgICBUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVlLAogICAg
ICAgICBUeXBlU3RyaW5nLAogICAgICAgICBUeXBlVVJMLApJbmRleDogV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwxNCBA
QAogI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgogI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rl
ci5oIgogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0N1cnNvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Vmlld3BvcnRBcmd1bWVudHMuaD4KQEAgLTEwOSw2ICsxMTIsNDUgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOgogICAgIH0KIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQorICAgIHsKKyAgICAgICAgLy8g
RklYTUU6IEltcGxlbWVudAorICAgIH0KKworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjcmVk
ZW50aWFsKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlByb3RlY3Rpb25TcGFjZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVu
dEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYgY2hhbGxl
bmdlKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIH0KKworICAgIHN0
YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OlByb3Rl
Y3Rpb25TcGFjZSYgY3JlZGVudGlhbCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDcmVkZW50aWFsPiB7CisgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYg
Y3JlZGVudGlhbCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICB9CisK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3Jl
OjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxl
bWVudAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCiAjaWYgVVNFKExBWllfTkFU
SVZFX0NVUlNPUikKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3Vy
c29yPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJzb3IpCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAko
cmV2aXNpb24gNzMyMjQpCisrKyBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTksOSArNTksMTIgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tV
c2VyQ29udGVudAogCiAvKiBXZWJLaXQyIG1haW4gQVBJIHR5cGVzICovCiAKK3R5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZVdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIFdLQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0F1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lciogV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJSZWY7
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0JhY2tGb3J3YXJkTGlzdCogV0tCYWNrRm9y
d2FyZExpc3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0JhY2tGb3J3YXJkTGlz
dEl0ZW0qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLQ29udGV4dCogV0tDb250ZXh0UmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tDcmVkZW50aWFsKiBXS0NyZWRlbnRpYWxSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS0Rvd25sb2FkKiBXS0Rvd25sb2FkUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyKiBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXJSZWY7CiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0ZyYW1lKiBXS0ZyYW1lUmVmOwpAQCAtNzIsNiAr
NzUsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2UqIFdLUGFnCiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2VHcm91cCogV0tQYWdlR3JvdXBSZWY7CiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2VOYW1lc3BhY2UqIFdLUGFnZU5hbWVzcGFjZVJlZjsK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUHJlZmVyZW5jZXMqIFdLUHJlZmVyZW5jZXNS
ZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Byb3RlY3Rpb25TcGFjZSogV0tQcm90
ZWN0aW9uU3BhY2VSZWY7CiAKIC8qIFdlYktpdDIgQnVuZGxlIHR5cGVzICovCiAKSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gNzMyMjQpCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYs
NiArMTM2LDIyIEBAIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnQKICAg
ICBtX2NsaWVudC5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9B
UEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCiti
b29sIFdlYkxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZUluRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViUHJv
dGVjdGlvblNwYWNlKiBwcm90ZWN0aW9uU3BhY2UpCit7CisgICAgaWYgKCFtX2NsaWVudC5jYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIG1fY2xpZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2VJbkZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHByb3Rl
Y3Rpb25TcGFjZSksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCit2b2lkIFdlYkxvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJQYWdlUHJv
eHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyKiBsaXN0ZW5lcikKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUluRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUodG9BUEkocGFnZSksIHRvQVBJ
KGZyYW1lKSwgdG9BUEkoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpLCB0b0FQSShsaXN0ZW5lciks
IG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCiB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkU3Rh
cnRQcm9ncmVzcyhXZWJQYWdlUHJveHkqIHBhZ2UpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5kaWRT
dGFydFByb2dyZXNzKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgJKHJldmlz
aW9uIDczMjI0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDggKzM3LDExIEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgQVBJT2JqZWN0OwotY2xhc3MgV2ViUGFnZVByb3h5OworY2xh
c3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKK2NsYXNzIEF1dGhlbnRpY2F0aW9uRGVj
aXNpb25MaXN0ZW5lcjsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CitjbGFzcyBXZWJQYWdlUHJveHk7
CitjbGFzcyBXZWJQcm90ZWN0aW9uU3BhY2U7CiAKIGNsYXNzIFdlYkxvYWRlckNsaWVudCA6IHB1
YmxpYyBBUElDbGllbnQ8V0tQYWdlTG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CkBAIC01NSw2ICs1
OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeShXZWJQ
YWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7CiAgICAgdm9pZCBkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSos
IEFQSU9iamVjdCopOwogICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2Vi
UGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCopOworICAgIAorICAgIGJvb2wg
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUoV2ViUGFnZVByb3h5
KiwgV2ViRnJhbWVQcm94eSosIFdlYlByb3RlY3Rpb25TcGFjZSopOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFt
ZVByb3h5KiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSosIEF1dGhlbnRpY2F0aW9uRGVj
aXNpb25MaXN0ZW5lciopOwogCiAgICAgdm9pZCBkaWRTdGFydFByb2dyZXNzKFdlYlBhZ2VQcm94
eSopOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoV2ViUGFnZVByb3h5Kik7CkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBA
QAogCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIkZpbmRJbmRp
Y2F0b3IuaCIKICNpbmNsdWRlICJNZXNzYWdlSUQuaCIKQEAgLTU1LDYgKzU3LDcgQEAKICNpbmNs
dWRlICJXZWJQcm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb3RlY3Rpb25T
cGFjZS5oIgogI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zs
b2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgpAQCAtMTUy
OSw0ICsxNTMyLDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZENsZWFyKCkKICAg
ICBtX2JhY2tGb3J3YXJkTGlzdC0+Y2xlYXIoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYgY29yZVByb3RlY3Rpb25TcGFjZSwg
Ym9vbCYgY2FuQXV0aGVudGljYXRlKQoreworICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJv
Y2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBSZWZQdHI8V2ViUHJvdGVjdGlvblNwYWNl
PiBwcm90ZWN0aW9uU3BhY2UgPSBXZWJQcm90ZWN0aW9uU3BhY2U6OmNyZWF0ZShjb3JlUHJvdGVj
dGlvblNwYWNlKTsKKyAgICAKKyAgICBjYW5BdXRoZW50aWNhdGUgPSBtX2xvYWRlckNsaWVudC5j
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZSh0aGlzLCBmcmFtZSwg
cHJvdGVjdGlvblNwYWNlLmdldCgpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxl
bmdlSUQpCit7CisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1l
KGZyYW1lSUQpOworICAgIFJlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNyZWF0
ZShjb3JlQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCwgdGhpcyk7CisgICAgCisgICAgbV9sb2FkZXJD
bGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSh0aGlzLCBmcmFt
ZSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCksIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LT5saXN0ZW5lcigpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gNzMyMjQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsOSArNjEsMTEgQEAgbmFtZXNwYWNl
IENvcmVJUEMgewogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U7CiAgICAgY2xhc3MgQ3Vyc29yOwogICAgIGNsYXNzIEZsb2F0UmVjdDsK
ICAgICBjbGFzcyBJbnRTaXplOworICAgIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKICAgICBzdHJ1
Y3QgVmlld3BvcnRBcmd1bWVudHM7CiAgICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogfQpAQCAt
Mzc3LDYgKzM3OSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKGJvb2wgY29tcG9zaXRpbmcsIERyYXdpbmdBcmVhSW5mbyYpOwogI2VuZGlmCiAK
KyAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIGJvb2wmIGNh
bkF1dGhlbnRpY2F0ZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CisKICAgICBQYWdlQ2xpZW50KiBtX3BhZ2VDbGll
bnQ7CiAgICAgV2ViTG9hZGVyQ2xpZW50IG1fbG9hZGVyQ2xpZW50OwogICAgIFdlYlBvbGljeUNs
aWVudCBtX3BvbGljeUNsaWVudDsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNCArMTM1LDggQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAjIEFjY2VsZXJhdGVkIGNvbXBzaXRpbmcg
bWVzc2FnZXMuCiAgICAgRGlkQ2hhbmdlQWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGNvbXBv
c2l0aW5nKSAtPiAoV2ViS2l0OjpEcmF3aW5nQXJlYUluZm8gbmV3RHJhd2luZ0FyZWEpCiAjZW5k
aWYKKworICAgICMgQXV0aGVudGljYXRpb24KKyAgICBDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlSW5GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQcm90ZWN0aW9u
U3BhY2UgcHJvdGVjdGlvblNwYWNlKSAtPiAoYm9vbCBjYW5BdXRoZW50aWNhdGUpCisgICAgRGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQp
CiB9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gNzMyMjQp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMzYsMTAgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5OworY2xhc3MgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyOwogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKIGNs
YXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJDb250ZXh0OworY2xhc3MgV2Vi
Q3JlZGVudGlhbDsKIGNsYXNzIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eTsKIGNsYXNz
IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CkBAIC00
OSwxMCArNTIsMTQgQEAgY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZU5hbWVzcGFj
ZTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByZWZlcmVuY2VzOworY2xhc3MgV2Vi
UHJvdGVjdGlvblNwYWNlOwogCitXS19BRERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVJlZiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSkKK1dLX0FERF9BUElfTUFQ
UElORyhXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiwgQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQmFja0ZvcndhcmRMaXN0SXRl
bVJlZiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSkKIFdLX0FERF9BUElfTUFQUElORyhXS0JhY2tG
b3J3YXJkTGlzdFJlZiwgV2ViQmFja0ZvcndhcmRMaXN0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdL
Q29udGV4dFJlZiwgV2ViQ29udGV4dCkKK1dLX0FERF9BUElfTUFQUElORyhXS0NyZWRlbnRpYWxS
ZWYsIFdlYkNyZWRlbnRpYWwpCiBXS19BRERfQVBJX01BUFBJTkcoV0tEb3dubG9hZFJlZiwgRG93
bmxvYWRQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXJS
ZWYsIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhX
S0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSkKQEAg
LTY1LDYgKzcyLDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLUGFnZUdyb3VwUmVmLCBXZWJQYQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLUGFnZU5hbWVzcGFjZVJlZiwgV2ViUGFnZU5hbWVzcGFjZSkK
IFdLX0FERF9BUElfTUFQUElORyhXS1BhZ2VSZWYsIFdlYlBhZ2VQcm94eSkKIFdLX0FERF9BUElf
TUFQUElORyhXS1ByZWZlcmVuY2VzUmVmLCBXZWJQcmVmZXJlbmNlcykKK1dLX0FERF9BUElfTUFQ
UElORyhXS1Byb3RlY3Rpb25TcGFjZVJlZiwgV2ViUHJvdGVjdGlvblNwYWNlKQogCiAvKiBFbnVt
IGNvbnZlcnNpb25zICovCiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV0tBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oIgorCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
CitXS1R5cGVJRCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0VHlwZUlEKCkKK3sKKyAgICBy
ZXR1cm4gdG9BUEkoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6QVBJVHlwZSk7Cit9Cklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKyAKKyNpZm5kZWYgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCisjZGVmaW5lIFdL
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4K
KworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQg
V0tUeXBlSUQgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUdldFR5cGVJRCgpOworCisjaWZkZWYg
X19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZV9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVj
aXNpb25MaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldL
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKwordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXJHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShBdXRoZW50aWNhdGlvbkRlY2lz
aW9uTGlzdGVuZXI6OkFQSVR5cGUpOworfQorCit2b2lkIFdLQXV0aGVudGljYXRpb25EZWNpc2lv
bkxpc3RlbmVyVXNlQ3JlZGVudGlhbChXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJl
ZiBhdXRoZW50aWNhdGlvbkxpc3RlbmVyLCBXS0NyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCkKK3sK
KyAgICB0b0ltcGwoYXV0aGVudGljYXRpb25MaXN0ZW5lciktPnVzZUNyZWRlbnRpYWwodG9JbXBs
KGNyZWRlbnRpYWwpKTsKK30KKwordm9pZCBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
ckNhbmNlbChXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBhdXRoZW50aWNhdGlv
bkxpc3RlbmVyKQoreworICAgIHRvSW1wbChhdXRoZW50aWNhdGlvbkxpc3RlbmVyKS0+Y2FuY2Vs
KCk7Cit9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVj
aXNpb25MaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0F1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lcl9oCisjZGVmaW5lIFdLQXV0aGVudGljYXRpb25EZWNpc2lv
bkxpc3RlbmVyX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQXV0
aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyR2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCB2b2lk
IFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyVXNlQ3JlZGVudGlhbChXS0F1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBhdXRoZW50aWNhdGlvbkxpc3RlbmVyLCBXS0NyZWRl
bnRpYWxSZWYgY3JlZGVudGlhbCk7CitXS19FWFBPUlQgdm9pZCBXS0F1dGhlbnRpY2F0aW9uRGVj
aXNpb25MaXN0ZW5lckNhbmNlbChXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBh
dXRoZW50aWNhdGlvbkxpc3RlbmVyKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYK
KworI2VuZGlmIC8qIFdLRnJhbWVQb2xpY3lMaXN0ZW5lcl9oICovCkluZGV4OiBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldLQ3JlZGVudGlhbC5oIgorCisjaW5jbHVkZSAi
V2ViQ3JlZGVudGlhbC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0NyZWRlbnRpYWxHZXRUeXBlSUQoKQoreworICAgIHJl
dHVybiB0b0FQSShXZWJDcmVkZW50aWFsOjpBUElUeXBlKTsKK30KSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tDcmVkZW50aWFsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdLQ3JlZGVudGlhbF9oCisjZGVmaW5lIFdLQ3JlZGVudGlhbF9o
CisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS0NyZWRlbnRpYWxHZXRU
eXBlSUQoKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdL
Q3JlZGVudGlhbF9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkocmV2aXNpb24gNzMy
MjQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNjQsNiArNjQsOCBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRGaXJzdFZpc3VhbGx5Tm9u
CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHlDYWxsYmFj
aykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWREaXNwbGF5
SW5zZWN1cmVDb250ZW50Rm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVS
ZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0
eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZUNhbGxiYWNr
KShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgYm9vbCAoKldLUGFnZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdl
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1Byb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2Us
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiBhdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSwgV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJSZWYgbGlzdGVu
ZXIsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiAvLyBQcm9ncmVzcyBDbGllbnQKIHR5cGVk
ZWYgdm9pZCAoKldLUGFnZURpZFN0YXJ0UHJvZ3Jlc3NDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2Us
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtOTQsNiArOTYsOCBAQCBzdHJ1Y3QgV0tQYWdl
TG9hZGVyQ2xpZW50IHsKICAgICBXS1BhZ2VEaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHlDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNo
eTsKICAgICBXS1BhZ2VEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWVDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZTsKICAg
ICBXS1BhZ2VEaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lOworICAgIFdLUGFnZUNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lQ2FsbGJhY2sgICAgICAg
ICAgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWU7CisgICAgV0tQ
YWdlRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZUNhbGxiYWNrICAgICAg
ICAgICAgICBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lOwogCiAgICAg
Ly8gRklYTUU6IE1vdmUgdG8gcHJvZ3Jlc3MgY2xpZW50LgogICAgIFdLUGFnZURpZFN0YXJ0UHJv
Z3Jlc3NDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkU3Rh
cnRQcm9ncmVzczsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNw
YWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rp
b25TcGFjZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1By
b3RlY3Rpb25TcGFjZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiV0tQcm90ZWN0aW9uU3BhY2UuaCIKKworI2luY2x1ZGUgIldlYlByb3Rl
Y3Rpb25TcGFjZS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OworCitXS1R5cGVJRCBXS1Byb3RlY3Rpb25TcGFjZUdldFR5cGVJRCgpCit7CisgICAg
cmV0dXJuIHRvQVBJKFdlYlByb3RlY3Rpb25TcGFjZTo6QVBJVHlwZSk7Cit9CkluZGV4OiBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlLmgJKHJldmlzaW9uIDApCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1Byb3RlY3Rpb25TcGFj
ZV9oCisjZGVmaW5lIFdLUHJvdGVjdGlvblNwYWNlX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tC
YXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tf
RVhQT1JUIFdLVHlwZUlEIFdLUHJvdGVjdGlvblNwYWNlR2V0VHlwZUlEKCk7CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBXS1Byb3RlY3Rpb25TcGFjZV9oCklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAkocmV2aXNpb24gMCkKKysrIFdl
YktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKKworI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiV2ViQ3JlZGVudGlhbC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3NQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShjb25zdCBXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIHVp
bnQ2NF90IGNoYWxsZW5nZUlELCBXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX2NvcmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAsIG1fY2hh
bGxlbmdlSUQoY2hhbGxlbmdlSUQpCisgICAgLCBtX3BhZ2UocGFnZSkKK3sKKyAgICBBU1NFUlQo
bV9jaGFsbGVuZ2VJRCk7CisgICAgbV9saXN0ZW5lciA9IEF1dGhlbnRpY2F0aW9uRGVjaXNpb25M
aXN0ZW5lcjo6Y3JlYXRlKHRoaXMpOworfQorCitBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
Ojp+QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSgpCit7CisgICAgLy8gSWYgYW4gb3V0c3Rh
bmRpbmcgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSBpcyBiZWluZyBkZXN0cm95ZWQgZXZl
biB0aG91Z2ggaXQgaGFzbid0IGJlZW4gcmVzcG9uZGVkIHRvIHlldCwKKyAgICAvLyB3ZSBjYW5j
ZWwgaXQgaGVyZSBzbyB0aGUgV2ViUHJvY2VzcyBpc24ndCB3YWl0aW5nIGZvciBhbiBhbnN3ZXIg
Zm9yZXZlci4KKyAgICBpZiAobV9jaGFsbGVuZ2VJRCkKKyAgICAgICAgbV9wYWdlLT5wcm9jZXNz
KCktPnNlbmQoTWVzc2FnZXM6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Q2FuY2VsQ2hhbGxlbmdl
KG1fY2hhbGxlbmdlSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKworICAgIGlmIChtX2xpc3RlbmVy
KQorICAgICAgICBtX2xpc3RlbmVyLT5kZXRhY2hDaGFsbGVuZ2UoKTsKK30KKwordm9pZCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Ojp1c2VDcmVkZW50aWFsKFdlYkNyZWRlbnRpYWwqIGNy
ZWRlbnRpYWwpCit7CisgICAgaWYgKCFtX2NoYWxsZW5nZUlEKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIWNyZWRlbnRpYWwpCisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxG
b3JDaGFsbGVuZ2UobV9jaGFsbGVuZ2VJRCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIGVsc2Ug
CisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpBdXRoZW50aWNhdGlv
bk1hbmFnZXI6OlVzZUNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UobV9jaGFsbGVuZ2VJRCwgY3JlZGVu
dGlhbC0+Y29yZSgpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisKKyAgICBtX2NoYWxsZW5nZUlEID0g
MDsKK30KKwordm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjYW5jZWwoKQorewor
ICAgIGlmICghbV9jaGFsbGVuZ2VJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5w
cm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Q2FuY2VsQ2hh
bGxlbmdlKG1fY2hhbGxlbmdlSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKworICAgIG1fY2hhbGxl
bmdlSUQgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHlfaAorI2RlZmluZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5X2gKKworI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgQ29yZUlQ
QyB7CisgICAgY2xhc3MgQXJndW1lbnREZWNvZGVyOworICAgIGNsYXNzIENvbm5lY3Rpb247Cisg
ICAgY2xhc3MgTWVzc2FnZUlEOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQXV0
aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOworY2xhc3MgV2ViQ3JlZGVudGlhbDsKK2NsYXNz
IFdlYlBhZ2VQcm94eTsKKworY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSA6IHB1
YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUg
PSBUeXBlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFs
bGVuZ2VJRCwgV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLCBjaGFsbGVuZ2VJRCwgcGFnZSkpOworICAgIH0KKyAgICAKKyAgICB+QXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSgpOworICAgIAorICAgIHZvaWQgdXNlQ3JlZGVudGlhbChXZWJDcmVk
ZW50aWFsKik7CisgICAgdm9pZCBjYW5jZWwoKTsKKworICAgIEF1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lciogbGlzdGVuZXIoKSBjb25zdCB7IHJldHVybiBtX2xpc3RlbmVyLmdldCgpOyB9
CisKK3ByaXZhdGU6CisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShjb25zdCBXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIHVpbnQ2NF90IGNoYWxsZW5nZUlELCBXZWJQ
YWdlUHJveHkqIHBhZ2UpOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBBUElUeXBlOyB9CisgICAgCisgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
bV9jb3JlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAgdWludDY0X3QgbV9jaGFsbGVuZ2VJ
RDsKKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBtX3BhZ2U7CisgICAgUmVmUHRyPEF1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lcj4gbV9saXN0ZW5lcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gV2ViQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eV9oCklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lz
aW9uTGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAJKHJldmlzaW9uIDApCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAK
KyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlv
bk1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNyZWRlbnRpYWwuaCIKKyNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6QXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgIDogbV9jaGFsbGVuZ2VQcm94eShhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSkKK3sKK30KKwordm9pZCBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6
OnVzZUNyZWRlbnRpYWwoV2ViQ3JlZGVudGlhbCogY3JlZGVudGlhbCkKK3sKKyAgICBpZiAobV9j
aGFsbGVuZ2VQcm94eSkKKyAgICAgICAgbV9jaGFsbGVuZ2VQcm94eS0+dXNlQ3JlZGVudGlhbChj
cmVkZW50aWFsKTsKK30KKwordm9pZCBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OmNh
bmNlbCgpCit7CisgICAgaWYgKG1fY2hhbGxlbmdlUHJveHkpCisgICAgICAgIG1fY2hhbGxlbmdl
UHJveHktPmNhbmNlbCgpOworfQorCit2b2lkIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
cjo6ZGV0YWNoQ2hhbGxlbmdlKCkKK3sKKyAgICBtX2NoYWxsZW5nZVByb3h5ID0gMDsKK30KKyAg
ICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyX2gKKyNkZWZpbmUgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyX2gKKworI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKK2NsYXNzIFdl
YkNyZWRlbnRpYWw7CisKK2NsYXNzIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lciA6IHB1
YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUg
PSBUeXBlQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOworCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyPiBjcmVhdGUoQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcihhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHVzZUNyZWRlbnRp
YWwoV2ViQ3JlZGVudGlhbCopOworICAgIHZvaWQgY2FuY2VsKCk7CisgICAgCisgICAgdm9pZCBk
ZXRhY2hDaGFsbGVuZ2UoKTsKKworcHJpdmF0ZToKKyAgICBBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBl
OyB9CisgICAgCisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSogbV9jaGFsbGVuZ2VQ
cm94eTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViQXV0aGVu
dGljYXRpb25EZWNpc2lvbkxpc3RlbmVyX2gKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0F1dGhl
bnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViQ3JlZGVudGlh
bC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYg
V2ViQ3JlZGVudGlhbDo6Y29yZSgpCit7CisgICAgcmV0dXJuIG1fY29yZUNyZWRlbnRpYWw7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVu
dGljYXRpb24vV2ViQ3JlZGVudGlhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIv
VUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ3JlZGVudGlhbF9oCisjZGVm
aW5lIFdlYkNyZWRlbnRpYWxfaAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9DcmVkZW50aWFsLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ3JlZGVudGlhbCA6IHB1YmxpYyBBUElPYmpl
Y3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlQ3JlZGVu
dGlhbDsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNyZWRlbnRpYWw+IGNyZWF0ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNyZWRlbnRpYWwoKSk7CisgICAg
fQorICAgIAorICAgIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNvcmUoKTsKKworcHJpdmF0
ZToKKyAgICBXZWJDcmVkZW50aWFsKCk7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIFdlYkNvcmU6OkNyZWRlbnRpYWwgbV9jb3JlQ3Jl
ZGVudGlhbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViQ3Jl
ZGVudGlhbF9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90
ZWN0aW9uU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRp
Y2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYlByb3RlY3Rpb25T
cGFjZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViUHJvdGVjdGlvblNwYWNlOjpXZWJQ
cm90ZWN0aW9uU3BhY2UoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiBjb3JlUHJvdGVj
dGlvblNwYWNlKQorICAgIDogbV9jb3JlUHJvdGVjdGlvblNwYWNlKGNvcmVQcm90ZWN0aW9uU3Bh
Y2UpCit7CisKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuaAkocmV2
aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rp
b25TcGFjZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJQcm90ZWN0aW9uU3BhY2VfaAorI2RlZmluZSBXZWJQcm90ZWN0aW9uU3BhY2VfaAor
CisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3Bh
Y2UuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViUHJvdGVjdGlvblNwYWNlIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6
CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVQcm90ZWN0aW9uU3BhY2U7CisK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQcm90ZWN0aW9uU3BhY2U+IGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViUHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJQcm90ZWN0aW9uU3BhY2UoY29uc3QgV2ViQ29y
ZTo6UHJvdGVjdGlvblNwYWNlJik7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIEFQSVR5cGU7IH0KKyAgICAKKyAgICBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UgbV9j
b3JlUHJvdGVjdGlvblNwYWNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBXZWJQcm90ZWN0aW9uU3BhY2VfaApJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw2ICsyMDUsMjcg
QEAKIAkJNTEyOTM1RDgxMjg4RDE5NDAwQTRCNjk1IC8qIFdlYkNvbnRleHRNZW51SXRlbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyOTM1RDYxMjg4
RDE5NDAwQTRCNjk1IC8qIFdlYkNvbnRleHRNZW51SXRlbS5oICovOyB9OwogCQk1MTI5MzVFMzEy
ODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyOTM1RTEx
Mjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNw
cCAqLzsgfTsKIAkJNTEyOTM1RTQxMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxlUGFn
ZUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTI5MzVFMjEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQYWdl
Q29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKKwkJNTEyRjU4OEExMkE4ODM2NjAwNjI5NTMwIC8q
IEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTJGNTg4NzEyQTg4MzY2MDA2Mjk1MzAgLyogQXV0aGVudGljYXRp
b25NYW5hZ2VyLmNwcCAqLzsgfTsKKwkJNTEyRjU4OEIxMkE4ODM2NjAwNjI5NTMwIC8qIEF1dGhl
bnRpY2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEyRjU4ODgxMkE4ODM2NjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdl
ci5oICovOyB9OworCQk1MTJGNTg4QzEyQTg4MzY2MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25N
YW5hZ2VyLm1lc3NhZ2VzLmluIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTJGNTg4OTEyQTg4MzY2MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5h
Z2VyLm1lc3NhZ2VzLmluICovOyB9OworCQk1MTJGNTg5NjEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJGNTg4RTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eS5jcHAgKi87IH07CisJCTUxMkY1ODk3MTJBODgzODgwMDYyOTUz
MCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJGNTg4RjEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oICovOyB9OworCQk1MTJGNTg5ODEyQTg4Mzg4MDA2
Mjk1MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1ODkwMTJBODgzODgwMDYyOTUz
MCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwICovOyB9OworCQk1MTJGNTg5
OTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJGNTg5MTEyQTg4
Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmggKi87IH07CisJ
CTUxMkY1ODlBMTJBODgzODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1ODkyMTJBODgzODgwMDYy
OTUzMCAvKiBXZWJDcmVkZW50aWFsLmNwcCAqLzsgfTsKKwkJNTEyRjU4OUIxMkE4ODM4ODAwNjI5
NTMwIC8qIFdlYkNyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMkY1ODkzMTJBODgzODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmgg
Ki87IH07CisJCTUxMkY1ODlDMTJBODgzODgwMDYyOTUzMCAvKiBXZWJQcm90ZWN0aW9uU3BhY2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRjU4
OTQxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYlByb3RlY3Rpb25TcGFjZS5jcHAgKi87IH07CisJCTUx
MkY1ODlEMTJBODgzODgwMDYyOTUzMCAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1ODk1MTJBODgzODgwMDYy
OTUzMCAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuaCAqLzsgfTsKKwkJNTEyRjU4QTIxMkE4ODNBRDAw
NjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJGNThBMDEyQTg4M0FE
MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKKwkJNTEyRjU4QTMxMkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTJGNThBMTEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXMu
aCAqLzsgfTsKKwkJNTEyRjU4RjUxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEyRjU4RUQxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
Y3BwICovOyB9OworCQk1MTJGNThGNjEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEyRjU4RUUxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCAqLzsgfTsKKwkJNTEyRjU4RjcxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMkY1OEVGMTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uRGVj
aXNpb25MaXN0ZW5lci5jcHAgKi87IH07CisJCTUxMkY1OEY4MTJBODhBNTQwMDYyOTUzMCAvKiBX
S0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRjU4RjAxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0
aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmggKi87IH07CisJCTUxMkY1OEY5MTJBODhBNTQw
MDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEyRjU4RjExMkE4OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlh
bC5jcHAgKi87IH07CisJCTUxMkY1OEZBMTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1OEYy
MTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuaCAqLzsgfTsKKwkJNTEyRjU4RkIxMkE4
OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1OEYzMTJBODhBNTQwMDYyOTUzMCAvKiBX
S1Byb3RlY3Rpb25TcGFjZS5jcHAgKi87IH07CisJCTUxMkY1OEZDMTJBODhBNTQwMDYyOTUzMCAv
KiBXS1Byb3RlY3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEyRjU4RjQxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNl
LmggKi87IH07CiAJCTUxNTM1NjlDMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE1MzU2OUExMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5j
cHAgKi87IH07CiAJCTUxNTM1NjlEMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNTM1NjlCMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAq
LzsgfTsKIAkJNTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTc4QjgyMTIwOUVDRUYwMEEz
N0M0QSAvKiBXZWJEYXRhLmggKi87IH07CkBAIC04MDcsNiArODI4LDI3IEBACiAJCTUxMjkzNUQ2
MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lbnVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxMjkzNUUxMTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBh
Z2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxMjkzNUUyMTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1
bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MTJGNTg4NzEyQTg4MzY2MDA2Mjk1MzAgLyogQXV0aGVudGljYXRp
b25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhl
bnRpY2F0aW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1
ODg4MTJBODgzNjYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25NYW5hZ2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1ODg5MTJBODgzNjYwMDYyOTUzMCAvKiBBdXRoZW50
aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXV0aGVu
dGljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTJGNTg4RTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4
OEYxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJGNTg5MDEyQTg4Mzg4MDA2Mjk1
MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1ODkxMTJBODgzODgwMDYyOTUzMCAv
KiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxMkY1ODkyMTJBODgzODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50
aWFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNyZWRlbnRp
YWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJGNTg5MzEyQTg4Mzg4MDA2
Mjk1MzAgLyogV2ViQ3JlZGVudGlhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDcmVkZW50aWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1ODk0
MTJBODgzODgwMDYyOTUzMCAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUHJvdGVjdGlvblNwYWNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4OTUxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYlByb3Rl
Y3Rpb25TcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQcm90ZWN0
aW9uU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4QTAxMkE4ODNB
RDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRoZW50aWNhdGlvbk1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJGNThB
MTEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2Fn
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4RUQxMkE4OEE1NDAwNjI5
NTMwIC8qIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1OEVFMTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTEyRjU4RUYxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTEyRjU4RjAxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1OEYx
MTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0tDcmVkZW50aWFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTEyRjU4RjIxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NyZWRlbnRpYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4RjMxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlv
blNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUHJvdGVj
dGlvblNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4RjQxMkE4
OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLUHJvdGVjdGlvblNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNTM1NjlBMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGll
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGFnZUNvbnRl
eHRNZW51Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1MzU2OUIx
MjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIFdlYkRh
dGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYwNiw2ICsxNjQ4LDMxIEBACiAJCQl0YWJXaWR0aCA9
IDg7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCTUxMkY1ODg2MTJBODgzNDcwMDYyOTUzMCAv
KiBBdXRoZW50aWNhdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJNTEyRjU4ODcxMkE4ODM2NjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdl
ci5jcHAgKi8sCisJCQkJNTEyRjU4ODgxMkE4ODM2NjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9u
TWFuYWdlci5oICovLAorCQkJCTUxMkY1ODg5MTJBODgzNjYwMDYyOTUzMCAvKiBBdXRoZW50aWNh
dGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCisJCQkpOworCQkJcGF0aCA9IEF1dGhlbnRpY2F0
aW9uOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNTEyRjU4OEQxMkE4ODM2
RjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQk1MTJGNTg4RTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eS5jcHAgKi8sCisJCQkJNTEyRjU4OEYxMkE4ODM4ODAwNjI5NTMw
IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCAqLywKKwkJCQk1MTJGNTg5MDEyQTg4
Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcCAqLywKKwkJ
CQk1MTJGNTg5MTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyLmggKi8sCisJCQkJNTEyRjU4OTIxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYkNyZWRlbnRpYWwu
Y3BwICovLAorCQkJCTUxMkY1ODkzMTJBODgzODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmgg
Ki8sCisJCQkJNTEyRjU4OTQxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYlByb3RlY3Rpb25TcGFjZS5j
cHAgKi8sCisJCQkJNTEyRjU4OTUxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYlByb3RlY3Rpb25TcGFj
ZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBBdXRoZW50aWNhdGlvbjsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAJCTUxQjMwMDREMTI1MjlDRjUwMDBCNUNBMCAvKiBjZiAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNjE5LDYgKzE2ODYs
NyBAQAogCQlCQzAzMkQ1QzEwRjQzNkQ1MDA1OEMxNUEgLyogV2ViUHJvY2VzcyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTEyRjU4ODYxMkE4ODM0NzAw
NjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uICovLAogCQkJCTFBNjE2MTRDMTI3Nzk4QjUwMDNBQ0Q4
NiAvKiBEb3dubG9hZHMgKi8sCiAJCQkJQkMyMDRFREYxMUM4M0U3MjAwOEYzMzc1IC8qIEluamVj
dGVkQnVuZGxlICovLAogCQkJCTFBNkZBMDFDMTFFMTUyNjMwMERCMTM3MSAvKiBtYWMgKi8sCkBA
IC0xNzAzLDYgKzE3NzEsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
IAkJCQlCQzAzMkRDNDEwRjQzODdDMDA1OEMxNUEgLyogQVBJICovLAorCQkJCTUxMkY1ODhEMTJB
ODgzNkYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbiAqLywKIAkJCQk1MUIzMDA0RDEyNTI5Q0Y1
MDAwQjVDQTAgLyogY2YgKi8sCiAJCQkJMUFCN0Q0QzcxMjg4QUE5QTAwQ0ZEMDhDIC8qIERvd25s
b2FkcyAqLywKIAkJCQlCQzExMUIxODExMkY1RkI0MDAzMzdCQUIgLyogTGF1bmNoZXIgKi8sCkBA
IC0xODAyLDYgKzE4NzEsMTAgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUJDQjYzNDc3MTE2QkYx
MDYwMDYwMzIxNSAvKiBXZWJLaXQyLmggKi8sCiAJCQkJQkNEREIzMkMxMjRFQzJFMTAwNDhEMTND
IC8qIFdLQVBJQ2FzdC5oICovLAorCQkJCTUxMkY1OEVEMTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCAqLywKKwkJCQk1MTJGNThFRTEyQTg4QTU0MDA2Mjk1
MzAgLyogV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovLAorCQkJCTUxMkY1OEVGMTJBODhB
NTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAgKi8sCisJ
CQkJNTEyRjU4RjAxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyLmggKi8sCiAJCQkJQkM2NDZDMTYxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0Zvcndh
cmRMaXN0LmNwcCAqLywKIAkJCQlCQzY0NkMxNzExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9y
d2FyZExpc3QuaCAqLywKIAkJCQlCQzY0NkMxODExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcCAqLywKQEAgLTE4MDksNiArMTg4Miw4IEBACiAJCQkJQkNCOUUyNEEx
MTIwRTE1QzAwQTEzN0UwIC8qIFdLQ29udGV4dC5jcHAgKi8sCiAJCQkJQkNCOUUyNDkxMTIwRTE1
QzAwQTEzN0UwIC8qIFdLQ29udGV4dC5oICovLAogCQkJCUJDQzkzOEUwMTE4MERFNDQwMDg1RTVG
RSAvKiBXS0NvbnRleHRQcml2YXRlLmggKi8sCisJCQkJNTEyRjU4RjExMkE4OEE1NDAwNjI5NTMw
IC8qIFdLQ3JlZGVudGlhbC5jcHAgKi8sCisJCQkJNTEyRjU4RjIxMkE4OEE1NDAwNjI5NTMwIC8q
IFdLQ3JlZGVudGlhbC5oICovLAogCQkJCTFBQjdENzhDMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rv
d25sb2FkLmNwcCAqLywKIAkJCQkxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9h
ZC5oICovLAogCQkJCUJDRTQ2OTU3MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9u
TGlzdGVuZXIuY3BwICovLApAQCAtMTgzMiw2ICsxOTA3LDggQEAKIAkJCQlCQ0Q1OTdDRjExMkI1
NkFDMDBFQzhDMjMgLyogV0tQcmVmZXJlbmNlcy5jcHAgKi8sCiAJCQkJQkNENTk3Q0UxMTJCNTZB
QzAwRUM4QzIzIC8qIFdLUHJlZmVyZW5jZXMuaCAqLywKIAkJCQk3NjJCNzQ4NDEyMEJCQTJEMDA4
MTkzMzkgLyogV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCAqLywKKwkJCQk1MTJGNThGMzEyQTg4QTU0
MDA2Mjk1MzAgLyogV0tQcm90ZWN0aW9uU3BhY2UuY3BwICovLAorCQkJCTUxMkY1OEY0MTJBODhB
NTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rpb25TcGFjZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBD
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIxODYsNiArMjI2Myw4IEBACiAJCUMw
Q0U3MjlEMTI0N0U3MUQwMEJDMEVDNCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxMkY1OEEwMTJBODgzQUQwMDYyOTUz
MCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTUx
MkY1OEExMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5o
ICovLAogCQkJCTFBQjdENjE3MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQUI3RDYxODEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxv
YWRQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUEyRDg0MzcxMjdGNjVENTAwMUVCOTYyIC8qIE5Q
T2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTI1MTksNiAr
MjU5OCwxNiBAQAogCQkJCUJDN0I2MzM3MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3QjYzM0QxMkE0NUQxMjAwRDE3NEE0IC8qIFdLQnVuZGxl
UGFnZUdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0Y2MjNCODEyQTU3QjYyMDBFM0ZERjYg
LyogV0tGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEyRjU4OEIxMkE4ODM2NjAw
NjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEy
RjU4OTcxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBp
biBIZWFkZXJzICovLAorCQkJCTUxMkY1ODk5MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNh
dGlvbkRlY2lzaW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMkY1ODlCMTJBODgz
ODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTJGNTg5
RDEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MTJGNThBMzEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMkY1OEY2MTJBODhBNTQwMDYyOTUzMCAvKiBX
S0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTJGNThGODEy
QTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxMkY1OEZBMTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUxMkY1OEZDMTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3Rl
Y3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjI0LDYgKzI3MTMsNyBAQAogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCThEQzJFRjUzMDQ4
NkE2OTQwMDk4QjIxNiAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJ
NTEyRjU4OEMxMkE4ODM2NjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdl
cy5pbiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yOTE0LDYgKzMwMDQsMTYgQEAKIAkJCQkxQUE0Nzky
MzEyQTU5RkQ5MDA4MjM2QzMgLyogUGx1Z2luUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUJDODRFQjE4MTJBNzEwMEMwMDgzRjJEQSAvKiBXZWJQcmVmZXJlbmNlc01hYy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUJDMkRGQkEzMTJBNzYxQTUwMEU3MzJBMyAvKiBXZWJQcmVmZXJlbmNl
c0NGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMkY1ODhBMTJBODgzNjYwMDYyOTUzMCAvKiBB
dXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEyRjU4OTYxMkE4
ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTEyRjU4OTgxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uRGVj
aXNpb25MaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTJGNTg5QTEyQTg4Mzg4MDA2
Mjk1MzAgLyogV2ViQ3JlZGVudGlhbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTJGNTg5QzEy
QTg4Mzg4MDA2Mjk1MzAgLyogV2ViUHJvdGVjdGlvblNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUxMkY1OEEyMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEyRjU4RjUxMkE4OEE1NDAwNjI5
NTMwIC8qIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTEyRjU4RjcxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMkY1OEY5MTJBODhBNTQwMDYyOTUzMCAvKiBX
S0NyZWRlbnRpYWwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEyRjU4RkIxMkE4OEE1NDAwNjI5
NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gNzMyMjQpCisrKyBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5o
IgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxl
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVNZXNzYWdlS2luZHMuaCIKQEAgLTQ1OCw2ICs0
NTksMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdl
Q2xhc3NBdXRoZW50aWNhdGlvbk1hbmFnZXI+KCkpIHsKKyAgICAgICAgQXV0aGVudGljYXRpb25N
YW5hZ2VyOjpzaGFyZWQoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQs
IGFyZ3VtZW50cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAobWVzc2FnZUlE
LmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc0luamVjdGVkQnVuZGxlPigpKSB7CiAgICAgICAgIGlm
ICghbV9pbmplY3RlZEJ1bmRsZSkKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYktpdDIv
V2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgor
CisjaW5jbHVkZSAiTWVzc2FnZUlELmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQXV0aGVudGljYXRpb25DbGllbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRp
YyB1aW50NjRfdCBnZW5lcmF0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSUQoKQoreworICAgIHN0
YXRpYyB1aW50NjRfdCB1bmlxdWVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUlEID0gMTsKKyAgICBy
ZXR1cm4gdW5pcXVlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJRCsrOworfQorCitBdXRoZW50aWNh
dGlvbk1hbmFnZXImIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6c2hhcmVkKCkKK3sKKyAgICBzdGF0
aWMgQXV0aGVudGljYXRpb25NYW5hZ2VyJiBtYW5hZ2VyID0gKm5ldyBBdXRoZW50aWNhdGlvbk1h
bmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXI7Cit9CisKK0F1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
QXV0aGVudGljYXRpb25NYW5hZ2VyKCkKK3sKK30KKwordm9pZCBBdXRoZW50aWNhdGlvbk1hbmFn
ZXI6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENv
cmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJn
dW1lbnRzKQoreworICAgIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlKGNv
bm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKK30KKwordm9pZCBBdXRoZW50aWNhdGlv
bk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJGcmFtZSogZnJh
bWUsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSkKK3sKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIEFTU0VSVChmcmFtZS0+cGFn
ZSgpKTsKKworICAgIHVpbnQ2NF90IGlkID0gZ2VuZXJhdGVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUlEKCk7CisgICAgbV9jaGFsbGVuZ2VzLnNldChpZCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
OyAgICAKKyAgICAKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGZyYW1lLT5mcmFtZUlEKCksIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBpZCksIGZyYW1lLT5w
YWdlKCktPnBhZ2VJRCgpKTsKK30KKwordm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnVzZUNy
ZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFdlYkNvcmU6
OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCit7CisgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgY2hhbGxlbmdlID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hhbGxlbmdlSUQpOworICAg
IEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKKyAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNsaWVudCogY29yZUNsaWVudCA9IGNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpOwor
ICAgIGlmICghY29yZUNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29yZUNsaWVudC0+
cmVjZWl2ZWRDcmVkZW50aWFsKGNoYWxsZW5nZSwgY3JlZGVudGlhbCk7Cit9CisKK3ZvaWQgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdl
KHVpbnQ2NF90IGNoYWxsZW5nZUlEKQoreworICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlIGNoYWxsZW5nZSA9IG1fY2hhbGxlbmdlcy50YWtlKGNoYWxsZW5nZUlEKTsKKyAgICBB
U1NFUlQoIWNoYWxsZW5nZS5pc051bGwoKSk7CisgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
bGllbnQqIGNvcmVDbGllbnQgPSBjaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKKyAg
ICBpZiAoIWNvcmVDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGNvcmVDbGllbnQtPnJl
Y2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2UpOworfQor
Cit2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNo
YWxsZW5nZUlEKQoreworICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxs
ZW5nZSA9IG1fY2hhbGxlbmdlcy50YWtlKGNoYWxsZW5nZUlEKTsKKyAgICBBU1NFUlQoIWNoYWxs
ZW5nZS5pc051bGwoKSk7CisgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVD
bGllbnQgPSBjaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKKyAgICBpZiAoIWNvcmVD
bGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGNvcmVDbGllbnQtPnJlY2VpdmVkQ2FuY2Vs
bGF0aW9uKGNoYWxsZW5nZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2Vi
S2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXV0aGVudGljYXRpb25NYW5hZ2VyX2gKKyNkZWZp
bmUgQXV0aGVudGljYXRpb25NYW5hZ2VyX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisK
K25hbWVzcGFjZSBDb3JlSVBDIHsKKyAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7CisgICAgY2xh
c3MgQ29ubmVjdGlvbjsKKyAgICBjbGFzcyBNZXNzYWdlSUQ7Cit9CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKKyAgICBjbGFzcyBDcmVk
ZW50aWFsOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRnJhbWU7CisKK2Ns
YXNzIEF1dGhlbnRpY2F0aW9uTWFuYWdlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0
aGVudGljYXRpb25NYW5hZ2VyKTsKKworcHVibGljOgorICAgIHN0YXRpYyBBdXRoZW50aWNhdGlv
bk1hbmFnZXImIHNoYXJlZCgpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkZy
YW1lKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKworICAgIHZv
aWQgdXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3Qg
V2ViQ29yZTo6Q3JlZGVudGlhbCYpOworICAgIHZvaWQgY29udGludWVXaXRob3V0Q3JlZGVudGlh
bEZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CisgICAgdm9pZCBjYW5jZWxDaGFs
bGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpOworCitwcml2YXRlOgorICAgIEF1dGhlbnRpY2F0
aW9uTWFuYWdlcigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25NYW5hZ2Vy
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqKTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFw
OworICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFwIG1fY2hhbGxlbmdlczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gQXV0aGVudGljYXRpb25NYW5hZ2VyX2gK
SW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMCkK
KysrIFdlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gQXV0aGVudGljYXRpb25N
YW5hZ2VyIHsKKyAgICB2b2lkIFVzZUNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hh
bGxlbmdlSUQsIFdlYkNvcmU6OkNyZWRlbnRpYWwgY3JlZGVudGlhbCk7CisgICAgdm9pZCBDb250
aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsK
KyAgICB2b2lkIENhbmNlbENoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCk7Cit9CkluZGV4
OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogI2RlZmluZSBESVNBQkxFX05PVF9JTVBMRU1FTlRFRF9XQVJO
SU5HUyAxCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAorI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2Rl
cnMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIlBs
dWdpblZpZXcuaCIKQEAgLTE1NSw5ICsxNTYsMTYgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6c2hvdWxkVXNlQ3JlZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZywgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIC8vIEZJWE1FOiBBdXRoZW50aWNhdGlvbiBpcyBhIHBlci1yZXNv
dXJjZSBjb25jZXB0LCBidXQgd2UgZG9uJ3QgZG8gcGVyLXJlc291cmNlIGhhbmRsaW5nIGluIHRo
ZSBVSVByb2Nlc3MgYXQgdGhlIEFQSSBsZXZlbCBxdWl0ZSB5ZXQuCisgICAgLy8gT25jZSB3ZSBk
bywgd2UgbWlnaHQgbmVlZCB0byBtYWtlIHN1cmUgYXV0aGVudGljYXRpb24gZml0cyB3aXRoIG91
ciBzb2x1dGlvbi4KKworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Cisg
ICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OnNoYXJlZCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX2ZyYW1l
LCBjaGFsbGVuZ2UpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpICAgIApAQCAt
MTY2LDEwICsxNzQsMjAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRD
YQogfQogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLWJvb2wgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYpCitib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gRklYTUU6IEF1dGhlbnRpY2F0aW9uIGlzIGEg
cGVyLXJlc291cmNlIGNvbmNlcHQsIGJ1dCB3ZSBkb24ndCBkbyBwZXItcmVzb3VyY2UgaGFuZGxp
bmcgaW4gdGhlIFVJUHJvY2VzcyBhdCB0aGUgQVBJIGxldmVsIHF1aXRlIHlldC4KKyAgICAvLyBP
bmNlIHdlIGRvLCB3ZSBtaWdodCBuZWVkIHRvIG1ha2Ugc3VyZSBhdXRoZW50aWNhdGlvbiBmaXRz
IHdpdGggb3VyIHNvbHV0aW9uLgorICAgIAorICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIAorICAgIGJvb2wgY2FuQXV0aGVudGljYXRlOworICAgIGlmICghd2ViUGFnZS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZUluRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBwcm90ZWN0aW9uU3BhY2UpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
SW5GcmFtZTo6UmVwbHkoY2FuQXV0aGVudGljYXRlKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICByZXR1cm4gY2FuQXV0aGVudGljYXRlOwogfQogI2VuZGlmCiAKSW5kZXg6IFdl
YktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktp
dDIudmNwcm9qCShyZXZpc2lvbiA3MzIyNCkKKysrIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDg3LDYgKzEwODcsMjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsdGVyCisJCQkJTmFtZT0iQXV0aGVudGljYXRpb24iCisJCQkJPgorCQkJCTxGaWxl
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xBdXRoZW50aWNhdGlvblxBdXRoZW50
aWNhdGlvbk1hbmFnZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xBdXRoZW50aWNhdGlvblxBdXRoZW50aWNhdGlv
bk1hbmFnZXIuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcQXV0aGVudGljYXRpb25cQXV0aGVudGljYXRpb25NYW5hZ2Vy
Lm1lc3NhZ2VzLmluIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJPC9GaWx0ZXI+CisJCQk8Rmls
dGVyCiAJCQkJTmFtZT0iV2ViQ29yZVN1cHBvcnQiCiAJCQkJPgogCQkJCTxGaWxlCkBAIC0yMDE3
LDYgKzIwMzMsMjIgQEAKIAkJCQkJCT4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQorCQkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5jcHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cVUlQcm9jZXNzXEFQSVxDXFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKwkJ
CQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxV
SVByb2Nlc3NcQVBJXENcV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwIgorCQkJ
CQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJ
UHJvY2Vzc1xBUElcQ1xXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgorCQkJCQkJ
PgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJv
Y2Vzc1xBUElcQ1xXS0JhY2tGb3J3YXJkTGlzdC5jcHAiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4K
QEAgLTIwNTMsNiArMjA4NSwxNCBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxGaWxl
CisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS0NyZWRlbnRpYWwuY3Bw
IgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS0NyZWRlbnRpYWwuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxl
PgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tE
b3dubG9hZC5jcHAiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KQEAgLTIxNDQsNiArMjE4NCwxNCBA
QAogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tQcmVmZXJlbmNlc1By
aXZhdGUuaCIKIAkJCQkJCT4KIAkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tQcm90ZWN0aW9uU3BhY2UuY3BwIgorCQkJCQkJ
PgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJv
Y2Vzc1xBUElcQ1xXS1Byb3RlY3Rpb25TcGFjZS5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CiAJ
CQkJCTxGaWx0ZXIKIAkJCQkJCU5hbWU9IndpbiIKIAkJCQkJCT4KQEAgLTIxODMsNiArMjIzMSw0
MiBAQAogCQkJCTwvRmlsdGVyPgogCQkJPC9GaWx0ZXI+CiAJCQk8RmlsdGVyCisJCQkJTmFtZT0i
QXV0aGVudGljYXRpb24iCisJCQkJPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
VUlQcm9jZXNzXEF1dGhlbnRpY2F0aW9uXEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3Bw
IgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
VUlQcm9jZXNzXEF1dGhlbnRpY2F0aW9uXEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJ
UHJvY2Vzc1xBdXRoZW50aWNhdGlvblxBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3Bw
IgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
VUlQcm9jZXNzXEF1dGhlbnRpY2F0aW9uXEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5o
IgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
VUlQcm9jZXNzXEF1dGhlbnRpY2F0aW9uXFdlYkNyZWRlbnRpYWwuY3BwIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEF1dGhl
bnRpY2F0aW9uXFdlYkNyZWRlbnRpYWwuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBdXRoZW50aWNhdGlvblxXZWJQcm90
ZWN0aW9uU3BhY2UuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEF1dGhlbnRpY2F0aW9uXFdlYlByb3RlY3Rpb25TcGFj
ZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJPC9GaWx0ZXI+CisJCQk8RmlsdGVyCiAJCQkJ
TmFtZT0iY2YiCiAJCQkJPgogCQkJCTxGaWxlCkBAIC0yNTgzLDYgKzI2NjcsMTQgQEAKIAkJCU5h
bWU9IkRlcml2ZWQgU291cmNlcyIKIAkJCT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIk
KFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEF1dGhl
bnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRP
dXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xEb3dubG9hZFByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBXZWJLaXRUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA3MzIyNikKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDEwLTEyLTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcm91bmR3
b3JrIGZvciA8cmRhcjovL3Byb2JsZW0vNzY2MDczMz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MDE5MQorICAgICAgICBXZWJLaXQyIEF1dGhlbnRpY2F0aW9u
IFN1cHBvcnQKKworICAgICAgICBLZWVwIHRoZXNlIGJ1aWxkcyB3b3JraW5nOgorICAgICAgICAq
IE1pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtC
cm93c2VyV2luZG93Q29udHJvbGxlciBhd2FrZUZyb21OaWJdKToKKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6aW5pdGlhbGl6ZSk6CisKIDIwMTAtMTItMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJ
bmRleDogV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVy
Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm0JKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0VG9vbHMvTWluaUJyb3dz
ZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTU1NCw2
ICs1NTQsOCBAQCAtICh2b2lkKWF3YWtlRnJvbU5pYgogICAgICAgICBkaWRSZW1vdmVGcmFtZUZy
b21IaWVyYXJjaHksCiAgICAgICAgIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSwK
ICAgICAgICAgZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUsCisgICAgICAgIDAsIC8vIGNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lCisgICAgICAgIDAsIC8v
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUKICAgICAgICAgZGlkU3Rh
cnRQcm9ncmVzcywKICAgICAgICAgZGlkQ2hhbmdlUHJvZ3Jlc3MsCiAgICAgICAgIGRpZEZpbmlz
aFByb2dyZXNzLApJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw2ICsyNTcs
OCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKGludCBhcmdjCiAgICAgICAgIDAs
IC8vIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeQogICAgICAgICAwLCAvLyBkaWREaXNwbGF5
SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUKICAgICAgICAgMCwgLy8gZGlkUnVuSW5zZWN1cmVDb250
ZW50Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8gY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZUluRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlSW5GcmFtZQogICAgICAgICAwLCAvLyBkaWRTdGFydFByb2dyZXNzCiAgICAgICAgIDAs
IC8vIGRpZENoYW5nZVByb2dyZXNzCiAgICAgICAgIDAsIC8vIGRpZEZpbmlzaFByb2dyZXNzCg==
</data>
<flag name="commit-queue"
          id="66252"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75500</attachid>
            <date>2010-12-03 08:56:47 -0800</date>
            <delta_ts>2010-12-03 09:15:01 -0800</delta_ts>
            <desc>First stage v2</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>107593</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzIyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMTItMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdy
b3VuZHdvcmsgZm9yIDxyZGFyOi8vcHJvYmxlbS83NjYwNzMzPiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMTkxCisgICAgICAgIFdlYktpdDIgQXV0aGVudGlj
YXRpb24gU3VwcG9ydAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisKKyAgICAgICAgRXhw
b3NlIHRoZSBBdXRoZW50aWNhdGlvbkNsaWVudCBmb3IgV0syIHBsYXRmb3JtcyAoV2luZG93cyBh
bHJlYWR5IGRvZXMgdGhpcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRo
ZW50aWNhdGlvbk1hYy5tbToKKyAgICAgICAgKC1bV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50
QXNDaGFsbGVuZ2VTZW5kZXIgY2xpZW50XSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTo6YXV0aGVudGljYXRpb25DbGllbnQpOgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9xdC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmF1dGhlbnRpY2F0aW9uQ2xpZW50KToKKwogMjAx
MC0xMi0wMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhdmUgSHlhdHQuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDczMjI0KQorKysgV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw3IEBAIF9fWk4z
SlNDOEJpbmRpbmdzOEluc3RhbmNlMTZuZXdSdW50aW1lT2IKIF9fWk4zV1RGMTBTdHJpbmdJbXBs
Y3ZQOE5TU3RyaW5nRXYKIF9fWk4zV1RGNlN0cmluZ0MxRVA4TlNTdHJpbmcKIF9fWk4zV1RGNlN0
cmluZ0MxRVBLMTBfX0NGU3RyaW5nCitfX1pON1dlYkNvcmUxMENyZWRlbnRpYWxDMUV2CiBfX1pO
N1dlYkNvcmUxMEpTRG9jdW1lbnQ2c19pbmZvRQogX19aTjdXZWJDb3JlMTBNb3VzZUV2ZW50QzFF
UktOM1dURjEyQXRvbWljU3RyaW5nRWJiTlMxXzEwUGFzc1JlZlB0cklOU185RE9NV2luZG93RUVF
aWlpaWliYmJidE5TNV9JTlNfMTFFdmVudFRhcmdldEVFRU5TNV9JTlNfOUNsaXBib2FyZEVFRWIK
IF9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIwc2V0Q2FuSGF2ZVNjcm9sbGJhcnNFYgpAQCAtMzY3
LDYgKzM2OCw3IEBAIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OXRyYW5zbGF0ZUUKIF9f
Wk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0QzFFUDlDR0NvbnRleHQKIF9fWk43V2ViQ29yZTE1
R3JhcGhpY3NDb250ZXh0RDFFdgogX19aTjdXZWJDb3JlMTVKU0RPTVdpbmRvd0Jhc2UxOGNvbW1v
bkpTR2xvYmFsRGF0YUV2CitfX1pON1dlYkNvcmUxNVByb3RlY3Rpb25TcGFjZUMxRXYKIF9fWk43
V2ViQ29yZTE1U2Nyb2xsQWxpZ25tZW50MTdhbGlnbkNlbnRlckFsd2F5c0UKIF9fWk43V2ViQ29y
ZTE1U2Nyb2xsQWxpZ25tZW50MTlhbGlnblRvRWRnZUlmTmVlZGVkRQogX19aTjdXZWJDb3JlMTVT
dHJpbmdUcnVuY2F0b3IxM3JpZ2h0VHJ1bmNhdGVFUktOM1dURjZTdHJpbmdFZlJLTlNfNEZvbnRF
YgpAQCAtNTMzLDYgKzUzNSw3IEBAIF9fWk43V2ViQ29yZTI2VXNlclR5cGluZ0dlc3R1cmVJbmRp
Y2F0b3IKIF9fWk43V2ViQ29yZTI2Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnVFdgogX19aTjdX
ZWJDb3JlMjZjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0V2CiBfX1pON1dlYkNvcmUyNnVzZXNU
ZXN0TW9kZUZvY3VzUmluZ0NvbG9yRXYKK19fWk43V2ViQ29yZTI3QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlQzJFdgogX19aTjdXZWJDb3JlMjdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb25D
MUVOM1dURjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRWJSS05TMV82U3RyaW5nRQogX19aTjdXZWJD
b3JlMjdEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sxNHNldE9yaWVudGF0aW9uRU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzE3RGV2aWNlT3JpZW50YXRpb25FRUUKIF9fWk43V2ViQ29yZTI3RGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgpAQCAtMTA0Niw5ICsxMDQ5LDExIEBAIF9fWk5LN1dl
YkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlOG1pbWUKIF9fWk5LN1dlYkNvcmUyMUJhY2tGb3J3
YXJkQ29udHJvbGxlcjEyZm9yd2FyZENvdW50RXYKIF9fWk5LN1dlYkNvcmUyMUJhY2tGb3J3YXJk
Q29udHJvbGxlcjliYWNrQ291bnRFdgogX19aTks3V2ViQ29yZTIxVXNlckNvbnRlbnRVUkxQYXR0
ZXJuN21hdGNoZXNFUktOU180S1VSTEUKK19fWk5LN1dlYkNvcmUyM0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlMjBhdXRoZW50aWNhdGlvbkNsaWVudEV2CiBfX1pOSzdXZWJDb3JlMjNGcmFtZUxvYWRl
clN0YXRlTWFjaGluZTE1Zmlyc3RMYXlvdXREb25lRXYKIF9fWk5LN1dlYkNvcmUyM0ZyYW1lTG9h
ZGVyU3RhdGVNYWNoaW5lMjNjb21taXR0aW5nRmlyc3RSZWFsTG9hZEV2CiBfX1pOSzdXZWJDb3Jl
MjZOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjZpc0RvbmVFdgorX19aTks3V2ViQ29yZTI3QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlNmlzTnVsbEV2CiBfX1pOSzdXZWJDb3JlNEZvbnQxMGZs
b2F0V2lkdGhFUktOU183VGV4dFJ1bkVQTjNXVEY3SGFzaFNldElQS05TXzE0U2ltcGxlRm9udERh
dGFFTlM0XzdQdHJIYXNoSVM4X0VFTlM0XzEwSGFzaFRyYWl0c0lTOF9FRUVFUE5TXzEzR2x5cGhP
dmVyZmxvd0UKIF9fWk5LN1dlYkNvcmU0Rm9udDhkcmF3VGV4dEVQTlNfMTVHcmFwaGljc0NvbnRl
eHRFUktOU183VGV4dFJ1bkVSS05TXzEwRmxvYXRQb2ludEVpaQogX19aTks3V2ViQ29yZTRLVVJM
MTFjcmVhdGVDRlVSTEV2CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZpc2lvbiA3MzIyNCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqbnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbnNDaGFsbGVuZ2UuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0QXV0aGVudGljYXRpb25D
bGllbnQoQXV0aGVudGljYXRpb25DbGllbnQqKTsgLy8gQ2hhbmdlcyBzZW5kZXIgdG8gb25lIHRo
YXQgaW52b2tlcyBjbGllbnQgbWV0aG9kcy4KKyAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0
aGVudGljYXRpb25DbGllbnQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCShyZXZpc2lvbiA3MzIyNCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgQGludGVyZmFjZSBXZWJDb3JlQXV0aGVudGljYXRp
b25DbGllbnRBcwogICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKIH0KIC0gKGlk
KWluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6KEF1dGhlbnRpY2F0aW9uQ2xpZW50KiljbGll
bnQ7CistIChBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwogLSAodm9pZClkZXRhY2hDbGll
bnQ7CiBAZW5kCiAKQEAgLTU1LDYgKzU2LDExIEBAIC0gKGlkKWluaXRXaXRoQXV0aGVudGljYXRp
b25DbGllbnQ6KEF1dGgKICAgICByZXR1cm4gc2VsZjsKIH0KIAorLSAoQXV0aGVudGljYXRpb25D
bGllbnQqKWNsaWVudAoreworICAgIHJldHVybiBtX2NsaWVudDsKK30KKwogLSAodm9pZClkZXRh
Y2hDbGllbnQKIHsKICAgICBtX2NsaWVudCA9IDA7CkBAIC0xMjMsNiArMTI5LDE0IEBAIHZvaWQg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnNldEF1dGhlbnQKICAgICB9CiB9CiAKK0F1dGhlbnRp
Y2F0aW9uQ2xpZW50KiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6YXV0aGVudGljYXRpb25DbGll
bnQoKSBjb25zdAoreworICAgIGlmIChbbV9zZW5kZXIuZ2V0KCkgaXNNZW1iZXJPZkNsYXNzOltX
ZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBjbGFzc11dKQorICAg
ICAgICByZXR1cm4gW3N0YXRpY19jYXN0PFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hh
bGxlbmdlU2VuZGVyKj4obV9zZW5kZXIuZ2V0KCkpIGNsaWVudF07CisgICAgCisgICAgcmV0dXJu
IDA7Cit9CisKIGJvb2wgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnBsYXRmb3JtQ29tcGFyZShj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGIpCiB7CiAgICAgaWYgKGEuc2VuZGVyKCkgIT0gYi5zZW5kZXIoKSkKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oCShyZXZpc2lvbiA3MzIyNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXV0aGVudGljYXRpb25DbGllbnQ7CisK
IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGljIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQmFzZSB7CiBwdWJsaWM6CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQpAQCAt
MzksNiArNDEsOSBAQCBwdWJsaWM6CiAgICAgICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VC
YXNlKHByb3RlY3Rpb25TcGFjZSwgcHJvcG9zZWRDcmVkZW50aWFsLCBwcmV2aW91c0ZhaWx1cmVD
b3VudCwgcmVzcG9uc2UsIGVycm9yKQogICAgIHsKICAgICB9CisKKyAgICBBdXRoZW50aWNhdGlv
bkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQoKSBjb25zdCB7IHJldHVybiAwOyB9IC8vIEZJ
WE1FOiBJbXBsZW1lbnQhCisKIH07CiAKIH0KSW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzI2NikKKysrIFdlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE4IEBACisyMDEwLTEyLTAyICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcm91bmR3b3JrIGZvciA8cmRhcjovL3Byb2JsZW0v
NzY2MDczMz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDE5
MQorICAgICAgICBXZWJLaXQyIEF1dGhlbnRpY2F0aW9uIFN1cHBvcnQKKworICAgICAgICBXaXRo
IHRoaXMgcGF0Y2ggaW4gcGxhY2UsIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZXMgYXJlIHNlbnQg
dXAgZnJvbSBXZWJDb3JlIGFuZCBzaGlwcGVkIG92ZXIgdGhlIElQQyBsYXllci4KKyAgICAgICAg
Q2xpZW50IGFwcHMgY2FuIGltcGxlbWVudCB0aGUgcmVsYXRlZCBjbGllbnQgbWV0aG9kcyB0byBh
dHRlbXB0IHRvIGNvbnRpbnVlIHdpdGhvdXQgY3JlZGVudGlhbHMgb3IgY2FuY2VsIGEKKyAgICAg
ICAgY2hhbGxlbmdlLgorCisgICAgICAgIFRoZXJlJ3Mgbm90IHlldCBBUEkgdG8gaW5zcGVjdCBh
IGNoYWxsZW5nZSBvciBjcmVhdGUgYSBjcmVkZW50aWFsIHRvIHVzZSBpbiByZXBseSAtIHRoYXQg
d2lsbCBjb21lIGxhdGVyLgorCisgICAgICAgIEJ1aWxkLXN5c3RlbSBjaGFuZ2VzOgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJvOgor
ICAgICAgICAqIFdlYktpdDIucHJvOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisgICAgICAgICogd2lu
L1dlYktpdDJDb21tb24udnNwcm9wczoKKworICAgICAgICBNZXNzYWdlcyBhbmQgY2FzdHMgZm9y
IElQQyBhbmQgQVBJczoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2Jq
ZWN0Lmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZSk6CisKKyAgICAgICAgU3R1YiBvdXQgdGhlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNs
YXNzIGZhbWlseToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5jcHA6IEFkZGVkLgorICAgICAgICAoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUdl
dFR5cGVJRCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5j
cHA6IEFkZGVkLgorICAgICAgICAoV0tDcmVkZW50aWFsR2V0VHlwZUlEKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV0tQcm90ZWN0
aW9uU3BhY2VHZXRUeXBlSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rp
b25TcGFjZS5oOiBBZGRlZC4KKworICAgICAgICBBZGQgYW4gQXV0aGVudGljYXRpb24gbGlzdGVu
ZXIgZm9yIHRoZSBjbGllbnQgYXBwIHRvIHJlc3BvbmQgdG86CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lckdldFR5cGVJRCk6CisgICAgICAg
IChXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclVzZUNyZWRlbnRpYWwpOgorICAgICAg
ICAoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJDYW5jZWwpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oOiBBZGRlZC4K
KworICAgICAgICBBZGQgQXV0aGVudGljYXRpb24gcmVsYXRlZCBtZXRob2RzIHRvIHRoZSBwYWdl
IGxvYWRlciBjbGllbnQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oOgorCisg
ICAgICAgIEFkZCBlbXB0eSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIG5ldyBBUEkgb2JqZWN0czoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb246IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5Ojp+QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OnVzZUNyZWRlbnRpYWwp
OgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjYW5jZWwp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5OjpsaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk6OnR5cGUpOgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L1dlYkNyZWRlbnRpYWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ3JlZGVudGlh
bDo6Y29yZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRp
YWwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNyZWRlbnRpYWw6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNyZWRlbnRpYWw6OnR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvdGVjdGlvblNwYWNlOjpXZWJQcm90ZWN0aW9uU3BhY2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvdGVjdGlvblNwYWNlOjp0eXBlKToKKworICAgICAgICBBZGQgaW1wbGVt
ZW50YXRpb24gb2YgdGhlIEF1dGhlbnRpY2F0aW9uIGRlY2lzaW9uIGxpc3RlbmVyOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVu
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyOjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OnVzZUNyZWRlbnRpYWwpOgorICAgICAg
ICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OmNhbmNlbCk6CisgICAg
ICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6ZGV0YWNoQ2hhbGxl
bmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkRlY2lzaW9uTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lcjo6dHlwZSk6CisKKyAgICAgICAgV2ViUGFnZSBhbmQgUGFnZUxv
YWRlckNsaWVudCBnbHVlOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJDbGllbnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgQWRkIGEgbWFuYWdlciB0byBtYXAgdGhlIGFjdHVh
bCBwbGF0Zm9ybSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2VzIHRvIGEgY2hhbGxlbmdlIElELAor
ICAgICAgICBhcyBhdCBsZWFzdCBzb21lIHBsYXRmb3JtcyByZXF1aXJlIHRoZSBvYmplY3QgaWRl
bnRpdHkgdG8gcGVyc2lzdDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlSUQpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6
OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6QXV0aGVu
dGljYXRpb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktp
dDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKToKKyAg
ICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb250aW51ZVdpdGhvdXRDcmVk
ZW50aWFsRm9yQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5h
Z2VyOjpjYW5jZWxDaGFsbGVuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRlZC4K
KworICAgICAgICBIYW5kIG9mZiBBdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2VzIHRvIHRoZSBtYW5h
Z2VyIHRvIGJlIHNlbnQgb3ZlciBJUEM6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKToKKwogMjAxMC0xMi0wMiAgTGFzemxvIEdvbWJvcyAgPGxh
c3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6
dHJvZ29uw6FjLgpJbmRleDogV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNzMyMjQpCisrKyBXZWJL
aXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAK
IFZQQVRIID0gXAogICAgICQoV2ViS2l0MikvUGx1Z2luUHJvY2VzcyBcCiAgICAgJChXZWJLaXQy
KS9TaGFyZWQvUGx1Z2lucyBcCisgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0
aW9uIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvUGx1Z2lucyBcCiAgICAgJChXZWJLaXQy
KS9XZWJQcm9jZXNzL1dlYlBhZ2UgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2VzcyBcCkBAIC0z
Miw2ICszMyw3IEBAIFZQQVRIID0gXAogIwogCiBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKKyAgICBB
dXRoZW50aWNhdGlvbk1hbmFnZXIgXAogICAgIERvd25sb2FkUHJveHkgXAogICAgIE5QT2JqZWN0
TWVzc2FnZVJlY2VpdmVyIFwKICAgICBQbHVnaW5Db250cm9sbGVyUHJveHkgXApJbmRleDogV2Vi
S2l0Mi9EZXJpdmVkU291cmNlcy5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9EZXJpdmVkU291
cmNlcy5wcm8JKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5wcm8J
KHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDcgQEAgZGVmaW5lUmVwbGFjZShtZXNzYWdlX3Jl
Y2VpdmVyX2dlbmVyYXRvcgogCiBWUEFUSCA9IFwKICAgICBQbHVnaW5Qcm9jZXNzIFwKKyAgICBX
ZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uIFwKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMgXAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZSBcCiAgICAgV2ViUHJvY2VzcyBcCkBAIC05Myw2ICs5NCw3IEBA
IFZQQVRIID0gXAogICAgIFVJUHJvY2Vzcy9QbHVnaW5zCiAKIE1FU1NBR0VfUkVDRUlWRVJTID0g
XAorICAgIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBcCiAgICAgRG93bmxvYWRQ
cm94eS5tZXNzYWdlcy5pbiBcCiAgICAgUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmlu
IFwKICAgICBQbHVnaW5Qcm9jZXNzLm1lc3NhZ2VzLmluIFwKSW5kZXg6IFdlYktpdDIvV2ViS2l0
Mi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnBybwkocmV2aXNpb24gNzMyMjQp
CisrKyBXZWJLaXQyL1dlYktpdDIucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsMTEgKzEzMCwx
MyBAQCBJTkNMVURFUEFUSCA9IFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcCBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9jcHAvcXQgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQgXAorICAgIFVJUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbiBcCiAgICAgVUlQcm9jZXNzL0Rvd25sb2FkcyBcCiAgICAgVUlQcm9jZXNz
L0xhdW5jaGVyIFwKICAgICBVSVByb2Nlc3MvUGx1Z2lucyBcCiAgICAgVUlQcm9jZXNzL3F0IFwK
ICAgICBXZWJQcm9jZXNzIFwKKyAgICBXZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uIFwKICAgICBX
ZWJQcm9jZXNzL0Rvd25sb2FkcyBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQgXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUgXApAQCAtMTU5LDYgKzE2MSw3IEBAIFFNQUtFX0NY
WEZMQUdTICs9ICItaW5jbHVkZSAkJFBSRUZJWF9IRUEKIERFRklORVMgKz0gQlVJTERJTkdfUVRf
XwogCiBXRUJLSVQyX0dFTkVSQVRFRF9IRUFERVJTID0gXAorICAgICQkV0VCS0lUMl9HRU5FUkFU
RURfU09VUkNFU19ESVIvQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCBcCiAgICAgJCRX
RUJLSVQyX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUi9Eb3dubG9hZFByb3h5TWVzc2FnZXMuaCBcCiAg
ICAgJCRXRUJLSVQyX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUi9QbHVnaW5Db250cm9sbGVyUHJveHlN
ZXNzYWdlcy5oIFwKICAgICAkJFdFQktJVDJfR0VORVJBVEVEX1NPVVJDRVNfRElSL1BsdWdpblBy
b2Nlc3NNZXNzYWdlcy5oIFwKQEAgLTE3NCw2ICsxNzcsNyBAQCBXRUJLSVQyX0dFTkVSQVRFRF9I
RUFERVJTID0gXAogICAgICQkV0VCS0lUMl9HRU5FUkFURURfU09VUkNFU19ESVIvV2ViUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaAogCiBXRUJLSVQyX0dFTkVSQVRFRF9TT1VSQ0VTID0gXAorICAgICQk
V0VCS0lUMl9HRU5FUkFURURfU09VUkNFU19ESVIvQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBcCiAgICAgJCRXRUJLSVQyX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUi9Eb3du
bG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBcCiAgICAgJCRXRUJLSVQyX0dFTkVSQVRFRF9T
T1VSQ0VTX0RJUi9QbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKICAg
ICAkJFdFQktJVDJfR0VORVJBVEVEX1NPVVJDRVNfRElSL1BsdWdpblByb2Nlc3NNZXNzYWdlUmVj
ZWl2ZXIuY3BwIFwKQEAgLTI2MSwxMCArMjY1LDEzIEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJl
ZC9xdC9VcGRhdGVDaHVuay5oIFwKICAgICBTaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuaCBc
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tBdXRo
ZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQmFj
a0ZvcndhcmRMaXN0LmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0
ZW0uaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oIFwKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50
aWFsLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmggXAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS0ZyYW1lLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlz
dGVuZXIuaCBcCkBAIC0yNzYsNiArMjgzLDcgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZVByaXZhdGUuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5j
ZXMuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmggXAorICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJ
L0MvV2ViS2l0Mi5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvcXQvV0tOYXRpdmVFdmVudC5oIFwK
ICAgICBVSVByb2Nlc3MvQVBJL2NwcC9XS1JldGFpblB0ci5oIFwKQEAgLTI4OCw2ICsyOTYsMTAg
QEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmggXAogICAgIFVJ
UHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcHJl
ZmVyZW5jZXMuaCBcCisgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkuaCBcCisgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIFwKKyAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24v
V2ViQ3JlZGVudGlhbC5oIFwKKyAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVj
dGlvblNwYWNlLmggXAogICAgIFVJUHJvY2Vzcy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94
eS5oIFwKICAgICBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBcCiAgICAgVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBcCkBAIC0zMjgsNiArMzQwLDcgQEAgSEVBREVSUyAr
PSBcCiAgICAgVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmggXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJD
b250ZXh0TWVudVByb3h5UXQuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5
UXQuaCBcCisgICAgV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCBcCiAgICAgV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCBcCkBAIC00NDYsOSArNDU5
LDEyIEBAIFNPVVJDRVMgKz0gXAogICAgIFNoYXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5jcHAg
XAogICAgIFNoYXJlZC9xdC9XZWJVUkxSZXF1ZXN0UXQuY3BwIFwKICAgICBTaGFyZWQvcXQvV2Vi
VVJMUmVzcG9uc2VRdC5jcHAgXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmNwcCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25EZWNp
c2lvbkxpc3RlbmVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0
LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIFwKKyAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tDcmVkZW50aWFsLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwIFwK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIFwKQEAgLTQ1OCw2ICs0NzQsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwIFwKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlTmFtZXNwYWNlLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVy
ZW5jZXMuY3BwIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwIFwK
ICAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1N0cmluZ1F0LmNwcCBcCiAgICAgVUlQcm9jZXNz
L0FQSS9jcHAvcXQvV0tVUkxRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvQ2xpZW50SW1w
bC5jcHAgXApAQCAtNDY1LDYgKzQ4MiwxMCBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3Mv
QVBJL3F0L3F3a2hpc3RvcnkuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3Bw
IFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3a3ByZWZlcmVuY2VzLmNwcCBcCisgICAgVUlQcm9j
ZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwIFwKKyAg
ICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVy
LmNwcCBcCisgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuY3BwIFwK
KyAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmNwcCBcCiAg
ICAgVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmNwcCBcCiAgICAgVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHkuY3BwIFwKQEAgLTUxMiw2ICs1MzMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBV
SVByb2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9X
ZWJQb3B1cE1lbnVQcm94eVF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYlByZWZlcmVuY2Vz
UXQuY3BwIFwKKyAgICBXZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFu
YWdlci5jcHAgXAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcCBcCiAgICAg
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBcCiAgICAgV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAgXApJbmRleDogV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL01lc3NhZ2VJRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlSUQuaAkocmV2aXNpb24gNzMyMjQpCisrKyBXZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvTWVzc2FnZUlELmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgZW51bSBNZXNz
YWdlQ2xhc3MgewogICAgIE1lc3NhZ2VDbGFzc0NvcmVJUEMsCiAKICAgICAvLyBNZXNzYWdlcyBz
ZW50IGJ5IHRoZSBVSSBwcm9jZXNzIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICBNZXNzYWdlQ2xh
c3NBdXRoZW50aWNhdGlvbk1hbmFnZXIsCiAgICAgTWVzc2FnZUNsYXNzRHJhd2luZ0FyZWEsCiAg
ICAgTWVzc2FnZUNsYXNzSW5qZWN0ZWRCdW5kbGUsCiAgICAgTWVzc2FnZUNsYXNzV2ViSW5zcGVj
dG9yLApJbmRleDogV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9TaGFy
ZWQvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDExICszNiwxNSBAQCBwdWJsaWM6
CiAgICAgICAgIC8vIEJhc2UgdHlwZXMKICAgICAgICAgVHlwZU51bGwgPSAwLAogICAgICAgICBU
eXBlQXJyYXksCisgICAgICAgIFR5cGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKKyAgICAgICAg
VHlwZUF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lciwKICAgICAgICAgVHlwZUNlcnRpZmlj
YXRlSW5mbywKICAgICAgICAgVHlwZUNvbnRleHRNZW51SXRlbSwKKyAgICAgICAgVHlwZUNyZWRl
bnRpYWwsCiAgICAgICAgIFR5cGVEYXRhLAogICAgICAgICBUeXBlRGljdGlvbmFyeSwKICAgICAg
ICAgVHlwZUVycm9yLAorICAgICAgICBUeXBlUHJvdGVjdGlvblNwYWNlLAogICAgICAgICBUeXBl
U2VyaWFsaXplZFNjcmlwdFZhbHVlLAogICAgICAgICBUeXBlU3RyaW5nLAogICAgICAgICBUeXBl
VVJMLApJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9u
IDczMjI0KQorKysgV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDExICszMCwxNCBAQAogI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5o
IgogI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0NyZWRlbnRpYWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVn
aW5EYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KQEAgLTEwOSw2
ICsxMTIsNDUgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOgogICAg
IH0KIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNv
ZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hh
bGxlbmdlKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIH0KKworICAg
IHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjcmVkZW50aWFsKQorICAgIHsKKyAgICAgICAgLy8gRklY
TUU6IEltcGxlbWVudAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZT4geworICAg
IHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNv
cmU6OlByb3RlY3Rpb25TcGFjZSYgY2hhbGxlbmdlKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudAorICAgIH0KKworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYgY3JlZGVudGlhbCkKKyAgICB7
CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDcmVkZW50
aWFsPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKKyAgICB7CisgICAgICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1l
bnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKQorICAg
IHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9Cit9OworCiAjaWYgVVNFKExBWllfTkFUSVZFX0NVUlNPUikKIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3Vyc29yPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJzb3Ip
CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkocmV2aXNpb24gNzMyMjQpCisrKyBXZWJLaXQyL1No
YXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTksOSArNTksMTIgQEAgdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tVc2VyQ29udGVudAogCiAvKiBXZWJLaXQyIG1haW4g
QVBJIHR5cGVzICovCiAKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UqIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWY7Cit0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lciogV0tBdXRoZW50
aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S0JhY2tGb3J3YXJkTGlzdCogV0tCYWNrRm9yd2FyZExpc3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS0JhY2tGb3J3YXJkTGlzdEl0ZW0qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJl
ZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQ29udGV4dCogV0tDb250ZXh0UmVmOwor
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tDcmVkZW50aWFsKiBXS0NyZWRlbnRpYWxSZWY7
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0Rvd25sb2FkKiBXS0Rvd25sb2FkUmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyKiBXS0Zv
cm1TdWJtaXNzaW9uTGlzdGVuZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0Zy
YW1lKiBXS0ZyYW1lUmVmOwpAQCAtNzIsNiArNzUsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBP
cGFxdWVXS1BhZ2UqIFdLUGFnCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2VHcm91
cCogV0tQYWdlR3JvdXBSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2VOYW1l
c3BhY2UqIFdLUGFnZU5hbWVzcGFjZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
UHJlZmVyZW5jZXMqIFdLUHJlZmVyZW5jZXNSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS1Byb3RlY3Rpb25TcGFjZSogV0tQcm90ZWN0aW9uU3BhY2VSZWY7CiAKIC8qIFdlYktpdDIg
QnVuZGxlIHR5cGVzICovCiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNw
cAkocmV2aXNpb24gNzMyMjQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDIyIEBAIHZvaWQgV2ViTG9hZGVyQ2xp
ZW50OjpkaWRSdW5JbnNlY3VyZUNvbnQKICAgICBtX2NsaWVudC5kaWRSdW5JbnNlY3VyZUNvbnRl
bnRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1f
Y2xpZW50LmNsaWVudEluZm8pOwogfQogCitib29sIFdlYkxvYWRlckNsaWVudDo6Y2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViUHJvdGVjdGlvblNwYWNlKiBwcm90ZWN0aW9uU3BhY2Up
Cit7CisgICAgaWYgKCFtX2NsaWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlSW5GcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fY2xpZW50
LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKHRvQVBJKHBhZ2Up
LCB0b0FQSShmcmFtZSksIHRvQVBJKHByb3RlY3Rpb25TcGFjZSksIG1fY2xpZW50LmNsaWVudElu
Zm8pOworfQorCit2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlSW5GcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1l
LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwg
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKiBsaXN0ZW5lcikKK3sKKyAgICBpZiAoIW1f
Y2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUluRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpLCB0b0FQSShsaXN0ZW5lciksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCiB2
b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkU3RhcnRQcm9ncmVzcyhXZWJQYWdlUHJveHkqIHBhZ2Up
CiB7CiAgICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydFByb2dyZXNzKQpJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDExIEBAIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQVBJT2JqZWN0
OwotY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eTsKK2NsYXNzIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjsKIGNsYXNzIFdlYkZyYW1l
UHJveHk7CitjbGFzcyBXZWJQYWdlUHJveHk7CitjbGFzcyBXZWJQcm90ZWN0aW9uU3BhY2U7CiAK
IGNsYXNzIFdlYkxvYWRlckNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tQYWdlTG9hZGVyQ2xp
ZW50PiB7CiBwdWJsaWM6CkBAIC01NSw2ICs1OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJl
bW92ZUZyYW1lRnJvbUhpZXJhcmNoeShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJ
T2JqZWN0Kik7CiAgICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2Vi
UGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCopOwogICAgIHZvaWQgZGlkUnVu
SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQ
SU9iamVjdCopOworICAgIAorICAgIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZUluRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIFdlYlByb3RlY3Rp
b25TcGFjZSopOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5G
cmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eSosIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lciopOwogCiAgICAgdm9pZCBk
aWRTdGFydFByb2dyZXNzKFdlYlBhZ2VQcm94eSopOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jl
c3MoV2ViUGFnZVByb3h5Kik7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJl
dmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBAQAogCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSAi
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQ
cm94eS5oIgogI2luY2x1ZGUgIkZpbmRJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJNZXNzYWdlSUQu
aCIKQEAgLTU1LDYgKzU3LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5o
IgorI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgogI2luY2x1ZGUgIldlYlVSTFJlcXVl
c3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TUlNRVR5cGVSZWdpc3RyeS5oPgpAQCAtMTUyOSw0ICsxNTMyLDIwIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpiYWNrRm9yd2FyZENsZWFyKCkKICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+Y2xlYXIoKTsK
IH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2VJbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25T
cGFjZSYgY29yZVByb3RlY3Rpb25TcGFjZSwgYm9vbCYgY2FuQXV0aGVudGljYXRlKQoreworICAg
IFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAg
ICBSZWZQdHI8V2ViUHJvdGVjdGlvblNwYWNlPiBwcm90ZWN0aW9uU3BhY2UgPSBXZWJQcm90ZWN0
aW9uU3BhY2U6OmNyZWF0ZShjb3JlUHJvdGVjdGlvblNwYWNlKTsKKyAgICAKKyAgICBjYW5BdXRo
ZW50aWNhdGUgPSBtX2xvYWRlckNsaWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlSW5GcmFtZSh0aGlzLCBmcmFtZSwgcHJvdGVjdGlvblNwYWNlLmdldCgpKTsKK30KKwor
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29y
ZUNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCit7CisgICAgV2ViRnJhbWVQcm94eSog
ZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpOworICAgIFJlZlB0cjxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5PiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNyZWF0ZShjb3JlQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCwg
dGhpcyk7CisgICAgCisgICAgbV9sb2FkZXJDbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlSW5GcmFtZSh0aGlzLCBmcmFtZSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0
KCksIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT5saXN0ZW5lcigpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gNzMy
MjQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtNjEsOSArNjEsMTEgQEAgbmFtZXNwYWNlIENvcmVJUEMgewogfQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CisgICAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiAgICAgY2xhc3MgQ3Vy
c29yOwogICAgIGNsYXNzIEZsb2F0UmVjdDsKICAgICBjbGFzcyBJbnRTaXplOworICAgIGNsYXNz
IFByb3RlY3Rpb25TcGFjZTsKICAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiAgICAgc3Ry
dWN0IFdpbmRvd0ZlYXR1cmVzOwogfQpAQCAtMzc3LDYgKzM3OSw5IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRDaGFuZ2VBY2NlbGVyYXRlZENvbXBvc2l0aW5nKGJvb2wgY29tcG9zaXRpbmcsIERy
YXdpbmdBcmVhSW5mbyYpOwogI2VuZGlmCiAKKyAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6
OlByb3RlY3Rpb25TcGFjZSYsIGJvb2wmIGNhbkF1dGhlbnRpY2F0ZSk7CisgICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CisK
ICAgICBQYWdlQ2xpZW50KiBtX3BhZ2VDbGllbnQ7CiAgICAgV2ViTG9hZGVyQ2xpZW50IG1fbG9h
ZGVyQ2xpZW50OwogICAgIFdlYlBvbGljeUNsaWVudCBtX3BvbGljeUNsaWVudDsKSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDczMjI0
KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzUsNCArMTM1LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAg
ICAjIEFjY2VsZXJhdGVkIGNvbXBzaXRpbmcgbWVzc2FnZXMuCiAgICAgRGlkQ2hhbmdlQWNjZWxl
cmF0ZWRDb21wb3NpdGluZyhib29sIGNvbXBvc2l0aW5nKSAtPiAoV2ViS2l0OjpEcmF3aW5nQXJl
YUluZm8gbmV3RHJhd2luZ0FyZWEpCiAjZW5kaWYKKworICAgICMgQXV0aGVudGljYXRpb24KKyAg
ICBDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZSh1aW50NjRfdCBm
cmFtZUlELCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlvblNwYWNlKSAtPiAoYm9v
bCBjYW5BdXRoZW50aWNhdGUpCisgICAgRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxs
ZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCiB9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaAkocmV2aXNpb24gNzMyMjQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDEzIEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OworY2xhc3Mg
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOwogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNs
YXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBj
bGFzcyBXZWJDb250ZXh0OworY2xhc3MgV2ViQ3JlZGVudGlhbDsKIGNsYXNzIFdlYkZvcm1TdWJt
aXNzaW9uTGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTsK
IGNsYXNzIFdlYkZyYW1lUHJveHk7CkBAIC00OSwxMCArNTIsMTQgQEAgY2xhc3MgV2ViUGFnZUdy
b3VwOwogY2xhc3MgV2ViUGFnZU5hbWVzcGFjZTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNz
IFdlYlByZWZlcmVuY2VzOworY2xhc3MgV2ViUHJvdGVjdGlvblNwYWNlOwogCitXS19BRERfQVBJ
X01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiwgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSkKK1dLX0FERF9BUElfTUFQUElORyhXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25M
aXN0ZW5lclJlZiwgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKQogV0tfQUREX0FQSV9N
QVBQSU5HKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSkK
IFdLX0FERF9BUElfTUFQUElORyhXS0JhY2tGb3J3YXJkTGlzdFJlZiwgV2ViQmFja0ZvcndhcmRM
aXN0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQ29udGV4dFJlZiwgV2ViQ29udGV4dCkKK1dLX0FE
RF9BUElfTUFQUElORyhXS0NyZWRlbnRpYWxSZWYsIFdlYkNyZWRlbnRpYWwpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tEb3dubG9hZFJlZiwgRG93bmxvYWRQcm94eSkKIFdLX0FERF9BUElfTUFQUElO
RyhXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXJSZWYsIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQ
cm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYsIFdlYkZy
YW1lUG9saWN5TGlzdGVuZXJQcm94eSkKQEAgLTY1LDYgKzcyLDcgQEAgV0tfQUREX0FQSV9NQVBQ
SU5HKFdLUGFnZUdyb3VwUmVmLCBXZWJQYQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUGFnZU5hbWVz
cGFjZVJlZiwgV2ViUGFnZU5hbWVzcGFjZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1BhZ2VSZWYs
IFdlYlBhZ2VQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1ByZWZlcmVuY2VzUmVmLCBXZWJQ
cmVmZXJlbmNlcykKK1dLX0FERF9BUElfTUFQUElORyhXS1Byb3RlY3Rpb25TcGFjZVJlZiwgV2Vi
UHJvdGVjdGlvblNwYWNlKQogCiAvKiBFbnVtIGNvbnZlcnNpb25zICovCiAKSW5kZXg6IFdlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
Y3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgorCisjaW5jbHVkZSAi
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eTo6QVBJVHlwZSk7Cit9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNpZm5kZWYgV0tBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZV9oCisjZGVmaW5lIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAorCisj
aW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4g
IkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUdldFR5cGVJRCgpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5k
aWYgLy8gV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVu
ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50
aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVy
LmgiCisKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKKyNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQg
V0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJHZXRUeXBlSUQoKQoreworICAgIHJldHVy
biB0b0FQSShBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OkFQSVR5cGUpOworfQorCit2
b2lkIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyVXNlQ3JlZGVudGlhbChXS0F1dGhl
bnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBhdXRoZW50aWNhdGlvbkxpc3RlbmVyLCBXS0Ny
ZWRlbnRpYWxSZWYgY3JlZGVudGlhbCkKK3sKKyAgICB0b0ltcGwoYXV0aGVudGljYXRpb25MaXN0
ZW5lciktPnVzZUNyZWRlbnRpYWwodG9JbXBsKGNyZWRlbnRpYWwpKTsKK30KKwordm9pZCBXS0F1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lckNhbmNlbChXS0F1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lclJlZiBhdXRoZW50aWNhdGlvbkxpc3RlbmVyKQoreworICAgIHRvSW1wbChhdXRo
ZW50aWNhdGlvbkxpc3RlbmVyKS0+Y2FuY2VsKCk7Cit9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVy
LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcl9oCisjZGVm
aW5lIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyX2gKKworI2luY2x1ZGUgPFdlYktp
dDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYK
KworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyR2V0
VHlwZUlEKCk7CisKK1dLX0VYUE9SVCB2b2lkIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyVXNlQ3JlZGVudGlhbChXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBhdXRo
ZW50aWNhdGlvbkxpc3RlbmVyLCBXS0NyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCk7CitXS19FWFBP
UlQgdm9pZCBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lckNhbmNlbChXS0F1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBhdXRoZW50aWNhdGlvbkxpc3RlbmVyKTsKKworI2lm
ZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLRnJhbWVQb2xpY3lMaXN0
ZW5lcl9oICovCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldL
Q3JlZGVudGlhbC5oIgorCisjaW5jbHVkZSAiV2ViQ3JlZGVudGlhbC5oIgorI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0NyZWRl
bnRpYWxHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShXZWJDcmVkZW50aWFsOjpBUElU
eXBlKTsKK30KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5oCShyZXZp
c2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQ3JlZGVudGlh
bF9oCisjZGVmaW5lIFdLQ3JlZGVudGlhbF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5o
PgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9S
VCBXS1R5cGVJRCBXS0NyZWRlbnRpYWxHZXRUeXBlSUQoKTsKKworI2lmZGVmIF9fY3BsdXNwbHVz
Cit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLQ3JlZGVudGlhbF9oCkluZGV4OiBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuaAkocmV2aXNpb24gNzMyMjQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsOCBAQCB0eXBlZGVmIHZvaWQg
KCpXS1BhZ2VEaWRGaXJzdFZpc3VhbGx5Tm9uCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZW1v
dmVGcmFtZUZyb21IaWVyYXJjaHlDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBl
ZGVmIHZvaWQgKCpXS1BhZ2VEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWVDYWxsYmFj
aykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSdW5JbnNl
Y3VyZUNvbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBm
cmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVk
ZWYgYm9vbCAoKldLUGFnZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZy
YW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1Byb3RlY3Rp
b25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlw
ZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFt
ZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVJlZiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgV0tBdXRoZW50aWNhdGlv
bkRlY2lzaW9uTGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwog
CiAvLyBQcm9ncmVzcyBDbGllbnQKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZFN0YXJ0UHJvZ3Jl
c3NDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAt
OTQsNiArOTYsOCBAQCBzdHJ1Y3QgV0tQYWdlTG9hZGVyQ2xpZW50IHsKICAgICBXS1BhZ2VEaWRS
ZW1vdmVGcmFtZUZyb21IaWVyYXJjaHlDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeTsKICAgICBXS1BhZ2VEaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgIGRpZERpc3BsYXlJ
bnNlY3VyZUNvbnRlbnRGb3JGcmFtZTsKICAgICBXS1BhZ2VEaWRSdW5JbnNlY3VyZUNvbnRlbnRG
b3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJ1bkluc2VjdXJlQ29u
dGVudEZvckZyYW1lOworICAgIFdLUGFnZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2VJbkZyYW1lQ2FsbGJhY2sgICAgICAgICAgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZUluRnJhbWU7CisgICAgV0tQYWdlRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlSW5GcmFtZUNhbGxiYWNrICAgICAgICAgICAgICBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VJbkZyYW1lOwogCiAgICAgLy8gRklYTUU6IE1vdmUgdG8gcHJvZ3Jlc3MgY2xp
ZW50LgogICAgIFdLUGFnZURpZFN0YXJ0UHJvZ3Jlc3NDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlkU3RhcnRQcm9ncmVzczsKSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV0tQcm90ZWN0aW9uU3Bh
Y2UuaCIKKworI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgorI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1Byb3RlY3Rp
b25TcGFjZUdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYlByb3RlY3Rpb25TcGFj
ZTo6QVBJVHlwZSk7Cit9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rp
b25TcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVj
dGlvblNwYWNlLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1By
b3RlY3Rpb25TcGFjZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXS1Byb3RlY3Rpb25TcGFjZV9oCisjZGVmaW5lIFdLUHJvdGVjdGlvblNwYWNl
X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
ZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLUHJvdGVjdGlvblNw
YWNlR2V0VHlwZUlEKCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRp
ZiAvLyBXS1Byb3RlY3Rpb25TcGFjZV9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuaCIKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgorI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViQ3JlZGVudGlhbC5oIgorI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlELCBXZWJQYWdlUHJv
eHkqIHBhZ2UpCisgICAgOiBtX2NvcmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShhdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSkKKyAgICAsIG1fY2hhbGxlbmdlSUQoY2hhbGxlbmdlSUQpCisgICAgLCBt
X3BhZ2UocGFnZSkKK3sKKyAgICBBU1NFUlQobV9jaGFsbGVuZ2VJRCk7CisgICAgbV9saXN0ZW5l
ciA9IEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6Y3JlYXRlKHRoaXMpOworfQorCitB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Ojp+QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eSgpCit7CisgICAgLy8gSWYgYW4gb3V0c3RhbmRpbmcgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eSBpcyBiZWluZyBkZXN0cm95ZWQgZXZlbiB0aG91Z2ggaXQgaGFzbid0IGJlZW4gcmVzcG9u
ZGVkIHRvIHlldCwKKyAgICAvLyB3ZSBjYW5jZWwgaXQgaGVyZSBzbyB0aGUgV2ViUHJvY2VzcyBp
c24ndCB3YWl0aW5nIGZvciBhbiBhbnN3ZXIgZm9yZXZlci4KKyAgICBpZiAobV9jaGFsbGVuZ2VJ
RCkKKyAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkF1dGhlbnRpY2F0
aW9uTWFuYWdlcjo6Q2FuY2VsQ2hhbGxlbmdlKG1fY2hhbGxlbmdlSUQpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKworICAgIGlmIChtX2xpc3RlbmVyKQorICAgICAgICBtX2xpc3RlbmVyLT5kZXRhY2hD
aGFsbGVuZ2UoKTsKK30KKwordm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Ojp1c2VD
cmVkZW50aWFsKFdlYkNyZWRlbnRpYWwqIGNyZWRlbnRpYWwpCit7CisgICAgaWYgKCFtX2NoYWxs
ZW5nZUlEKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWNyZWRlbnRpYWwpCisgICAgICAg
IG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6
OkNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JDaGFsbGVuZ2UobV9jaGFsbGVuZ2VJRCksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIGVsc2UgCisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLT5z
ZW5kKE1lc3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OlVzZUNyZWRlbnRpYWxGb3JDaGFs
bGVuZ2UobV9jaGFsbGVuZ2VJRCwgY3JlZGVudGlhbC0+Y29yZSgpKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisKKyAgICBtX2NoYWxsZW5nZUlEID0gMDsKK30KKwordm9pZCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5OjpjYW5jZWwoKQoreworICAgIGlmICghbV9jaGFsbGVuZ2VJRCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6Q2FuY2VsQ2hhbGxlbmdlKG1fY2hhbGxlbmdlSUQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKworICAgIG1fY2hhbGxlbmdlSUQgPSAwOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgJKHJldmlzaW9uIDAp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHlfaAorI2RlZmluZSBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5X2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgQ29yZUlQQyB7CisgICAgY2xhc3MgQXJndW1lbnREZWNvZGVy
OworICAgIGNsYXNzIENvbm5lY3Rpb247CisgICAgY2xhc3MgTWVzc2FnZUlEOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOwor
Y2xhc3MgV2ViQ3JlZGVudGlhbDsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eSA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAg
IHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7
CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgV2ViUGFnZVByb3h5KiBwYWdlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5KGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCwgcGFnZSkpOworICAg
IH0KKyAgICAKKyAgICB+QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSgpOworICAgIAorICAg
IHZvaWQgdXNlQ3JlZGVudGlhbChXZWJDcmVkZW50aWFsKik7CisgICAgdm9pZCBjYW5jZWwoKTsK
KworICAgIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lciogbGlzdGVuZXIoKSBjb25zdCB7
IHJldHVybiBtX2xpc3RlbmVyLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYs
IHVpbnQ2NF90IGNoYWxsZW5nZUlELCBXZWJQYWdlUHJveHkqIHBhZ2UpOworCisgICAgdmlydHVh
bCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisgICAgCisgICAgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgbV9jb3JlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7
CisgICAgdWludDY0X3QgbV9jaGFsbGVuZ2VJRDsKKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBt
X3BhZ2U7CisgICAgUmVmUHRyPEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcj4gbV9saXN0
ZW5lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eV9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25M
aXN0ZW5lci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRlY2lz
aW9uTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHku
aCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYkNyZWRlbnRpYWwuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0F1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lcjo6QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkqIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgIDogbV9j
aGFsbGVuZ2VQcm94eShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKK3sKK30KKwordm9pZCBBdXRo
ZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OnVzZUNyZWRlbnRpYWwoV2ViQ3JlZGVudGlhbCog
Y3JlZGVudGlhbCkKK3sKKyAgICBpZiAobV9jaGFsbGVuZ2VQcm94eSkKKyAgICAgICAgbV9jaGFs
bGVuZ2VQcm94eS0+dXNlQ3JlZGVudGlhbChjcmVkZW50aWFsKTsKK30KKwordm9pZCBBdXRoZW50
aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OmNhbmNlbCgpCit7CisgICAgaWYgKG1fY2hhbGxlbmdl
UHJveHkpCisgICAgICAgIG1fY2hhbGxlbmdlUHJveHktPmNhbmNlbCgpOworfQorCit2b2lkIEF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6ZGV0YWNoQ2hhbGxlbmdlKCkKK3sKKyAgICBt
X2NoYWxsZW5nZVByb3h5ID0gMDsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lv
bkxpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVu
ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyX2gKKyNkZWZpbmUgQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyX2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorCisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eTsKK2NsYXNzIFdlYkNyZWRlbnRpYWw7CisKK2NsYXNzIEF1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lciA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAg
IHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyPiBjcmVhdGUoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHVzZUNyZWRlbnRpYWwoV2ViQ3JlZGVudGlhbCopOworICAgIHZvaWQg
Y2FuY2VsKCk7CisgICAgCisgICAgdm9pZCBkZXRhY2hDaGFsbGVuZ2UoKTsKKworcHJpdmF0ZToK
KyAgICBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIoQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eSogYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOworCisgICAgdmlydHVhbCBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisgICAgCisgICAgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSogbV9jaGFsbGVuZ2VQcm94eTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyX2gKSW5k
ZXg6IFdlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRp
YWwuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24v
V2ViQ3JlZGVudGlhbC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiV2ViQ3JlZGVudGlhbC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgV2ViQ3JlZGVudGlhbDo6Y29yZSgpCit7CisgICAg
cmV0dXJuIG1fY29yZUNyZWRlbnRpYWw7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwu
aAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNy
ZWRlbnRpYWwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViQ3JlZGVudGlhbF9oCisjZGVmaW5lIFdlYkNyZWRlbnRpYWxfaAorCisjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
Q3JlZGVudGlhbCA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25z
dCBUeXBlIEFQSVR5cGUgPSBUeXBlQ3JlZGVudGlhbDsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYkNyZWRlbnRpYWw+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkNyZWRlbnRpYWwoKSk7CisgICAgfQorICAgIAorICAgIGNvbnN0IFdlYkNvcmU6OkNy
ZWRlbnRpYWwmIGNvcmUoKTsKKworcHJpdmF0ZToKKyAgICBXZWJDcmVkZW50aWFsKCk7CisKKyAg
ICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIFdl
YkNvcmU6OkNyZWRlbnRpYWwgbV9jb3JlQ3JlZGVudGlhbDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gV2ViQ3JlZGVudGlhbF9oCkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90
ZWN0aW9uU3BhY2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViUHJvdGVjdGlvblNwYWNlOjpXZWJQcm90ZWN0aW9uU3BhY2UoY29uc3QgV2ViQ29yZTo6
UHJvdGVjdGlvblNwYWNlJiBjb3JlUHJvdGVjdGlvblNwYWNlKQorICAgIDogbV9jb3JlUHJvdGVj
dGlvblNwYWNlKGNvcmVQcm90ZWN0aW9uU3BhY2UpCit7CisKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0
aW9uU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlv
bi9XZWJQcm90ZWN0aW9uU3BhY2UuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNz
L0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQcm90ZWN0aW9uU3BhY2VfaAorI2Rl
ZmluZSBXZWJQcm90ZWN0aW9uU3BhY2VfaAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUHJvdGVjdGlvblNwYWNlIDog
cHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlw
ZSA9IFR5cGVQcm90ZWN0aW9uU3BhY2U7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQcm90
ZWN0aW9uU3BhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIHByb3Rl
Y3Rpb25TcGFjZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUHJvdGVj
dGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJQ
cm90ZWN0aW9uU3BhY2UoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJik7CisKKyAgICB2
aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKyAgICAKKyAgICBX
ZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UgbV9jb3JlUHJvdGVjdGlvblNwYWNlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQcm90ZWN0aW9uU3BhY2VfaApJbmRl
eDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDcz
MjI0KQorKysgV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTIwNSw2ICsyMDUsMjcgQEAKIAkJNTEyOTM1RDgxMjg4RDE5NDAwQTRCNjk1
IC8qIFdlYkNvbnRleHRNZW51SXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEyOTM1RDYxMjg4RDE5NDAwQTRCNjk1IC8qIFdlYkNvbnRleHRNZW51
SXRlbS5oICovOyB9OwogCQk1MTI5MzVFMzEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5k
bGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEyOTM1RTExMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVu
ZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLzsgfTsKIAkJNTEyOTM1RTQxMjg4RDk3ODAw
QTRCNjk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTI5MzVFMjEyODhEOTc4MDBB
NEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKKwkJ
NTEyRjU4OEExMkE4ODM2NjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJGNTg4NzEyQTg4
MzY2MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcCAqLzsgfTsKKwkJNTEyRjU4
OEIxMkE4ODM2NjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRjU4ODgxMkE4ODM2NjAwNjI5
NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5oICovOyB9OworCQk1MTJGNTg4QzEyQTg4MzY2
MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJGNTg4OTEyQTg4MzY2MDA2
Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluICovOyB9OworCQk1MTJG
NTg5NjEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJGNTg4RTEy
QTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAgKi87IH07
CisJCTUxMkY1ODk3MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJG
NTg4RjEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oICov
OyB9OworCQk1MTJGNTg5ODEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lv
bkxpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMkY1ODkwMTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXIuY3BwICovOyB9OworCQk1MTJGNTg5OTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTJGNTg5MTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmggKi87IH07CisJCTUxMkY1ODlBMTJBODgzODgwMDYyOTUzMCAvKiBX
ZWJDcmVkZW50aWFsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMkY1ODkyMTJBODgzODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmNwcCAqLzsg
fTsKKwkJNTEyRjU4OUIxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYkNyZWRlbnRpYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1ODkzMTJBODgzODgw
MDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmggKi87IH07CisJCTUxMkY1ODlDMTJBODgzODgwMDYy
OTUzMCAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRjU4OTQxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYlByb3Rl
Y3Rpb25TcGFjZS5jcHAgKi87IH07CisJCTUxMkY1ODlEMTJBODgzODgwMDYyOTUzMCAvKiBXZWJQ
cm90ZWN0aW9uU3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMkY1ODk1MTJBODgzODgwMDYyOTUzMCAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuaCAq
LzsgfTsKKwkJNTEyRjU4QTIxMkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTJGNThBMDEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNTEyRjU4QTMxMkE4ODNBRDAwNjI5NTMw
IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJGNThBMTEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0
aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKKwkJNTEyRjU4RjUxMkE4OEE1NDAw
NjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRjU4RUQxMkE4OEE1NDAwNjI5NTMwIC8q
IFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwICovOyB9OworCQk1MTJGNThGNjEyQTg4QTU0
MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRjU4RUUxMkE4OEE1NDAwNjI5NTMwIC8q
IFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLzsgfTsKKwkJNTEyRjU4RjcxMkE4OEE1NDAw
NjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1OEVGMTJBODhBNTQwMDYy
OTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAgKi87IH07CisJCTUx
MkY1OEY4MTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRjU4
RjAxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgg
Ki87IH07CisJCTUxMkY1OEY5MTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRjU4RjExMkE4
OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5jcHAgKi87IH07CisJCTUxMkY1OEZBMTJBODhB
NTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1OEYyMTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRp
YWwuaCAqLzsgfTsKKwkJNTEyRjU4RkIxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNw
YWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MkY1OEYzMTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rpb25TcGFjZS5jcHAgKi87IH07CisJ
CTUxMkY1OEZDMTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rpb25TcGFjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRjU4RjQxMkE4OEE1NDAw
NjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmggKi87IH07CiAJCTUxNTM1NjlDMTI5MUIxRDIw
MDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1MzU2OUExMjkxQjFEMjAwMDc0OURDIC8q
IFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi87IH07CiAJCTUxNTM1NjlEMTI5MUIxRDIw
MDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTM1NjlCMTI5MUIxRDIwMDA3NDlEQyAvKiBX
ZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJNTE1NzhCODMxMjA5RUNFRjAwQTM3
QzRBIC8qIFdlYkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggKi87IH07CkBAIC04
MDcsNiArODI4LDI3IEBACiAJCTUxMjkzNUQ2MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0
TWVudUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1l
bnVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjkzNUUxMTI4OEQ5Nzgw
MEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjkzNUUyMTI4
OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJGNTg4NzEyQTg4
MzY2MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1ODg4MTJBODgzNjYwMDYyOTUzMCAvKiBBdXRoZW50
aWNhdGlvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1ODg5
MTJBODgzNjYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXV0aGVudGljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJGNTg4RTEyQTg4Mzg4MDA2Mjk1MzAgLyog
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4OEYxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTJGNTg5MDEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxMkY1ODkxMTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVu
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25EZWNp
c2lvbkxpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1ODkyMTJB
ODgzODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkNyZWRlbnRpYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MTJGNTg5MzEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViQ3JlZGVudGlhbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDcmVkZW50aWFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxMkY1ODk0MTJBODgzODgwMDYyOTUzMCAvKiBXZWJQcm90ZWN0
aW9uU3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUHJv
dGVjdGlvblNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4OTUx
MkE4ODM4ODAwNjI5NTMwIC8qIFdlYlByb3RlY3Rpb25TcGFjZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJQcm90ZWN0aW9uU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTEyRjU4QTAxMkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTJGNThBMTEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGlj
YXRpb25NYW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTEyRjU4RUQxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1OEVF
MTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4RUYxMkE4OEE1NDAwNjI5NTMwIC8qIFdL
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4RjAxMkE4OEE1NDAwNjI5NTMwIC8qIFdL
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxMkY1OEYxMTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRp
YWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tDcmVkZW50aWFs
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4RjIxMkE4OEE1NDAwNjI5
NTMwIC8qIFdLQ3JlZGVudGlhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S0NyZWRlbnRpYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4RjMxMkE4
OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLUHJvdGVjdGlvblNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTEyRjU4RjQxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNw
YWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJvdGVjdGlvblNwYWNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNTM1NjlBMTI5MUIxRDIwMDA3NDlE
QyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE1MzU2OUIxMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250
ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdl
Q29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1NzhC
ODIxMjA5RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYwNiw2
ICsxNjQ4LDMxIEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJ
CTUxMkY1ODg2MTJBODgzNDcwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbiAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTEyRjU4ODcxMkE4ODM2NjAwNjI5
NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgKi8sCisJCQkJNTEyRjU4ODgxMkE4ODM2
NjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5oICovLAorCQkJCTUxMkY1ODg5MTJB
ODgzNjYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCisJ
CQkpOworCQkJcGF0aCA9IEF1dGhlbnRpY2F0aW9uOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKKwkJNTEyRjU4OEQxMkE4ODM2RjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTJGNTg4RTEy
QTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAgKi8sCisJ
CQkJNTEyRjU4OEYxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuaCAqLywKKwkJCQk1MTJGNTg5MDEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmNwcCAqLywKKwkJCQk1MTJGNTg5MTEyQTg4Mzg4MDA2Mjk1MzAgLyog
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmggKi8sCisJCQkJNTEyRjU4OTIxMkE4ODM4
ODAwNjI5NTMwIC8qIFdlYkNyZWRlbnRpYWwuY3BwICovLAorCQkJCTUxMkY1ODkzMTJBODgzODgw
MDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmggKi8sCisJCQkJNTEyRjU4OTQxMkE4ODM4ODAwNjI5
NTMwIC8qIFdlYlByb3RlY3Rpb25TcGFjZS5jcHAgKi8sCisJCQkJNTEyRjU4OTUxMkE4ODM4ODAw
NjI5NTMwIC8qIFdlYlByb3RlY3Rpb25TcGFjZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBBdXRo
ZW50aWNhdGlvbjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTUxQjMwMDRE
MTI1MjlDRjUwMDBCNUNBMCAvKiBjZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCkBAIC0xNjE5LDYgKzE2ODYsNyBAQAogCQlCQzAzMkQ1QzEwRjQzNkQ1MDA1OEMx
NUEgLyogV2ViUHJvY2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJNTEyRjU4ODYxMkE4ODM0NzAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uICovLAog
CQkJCTFBNjE2MTRDMTI3Nzk4QjUwMDNBQ0Q4NiAvKiBEb3dubG9hZHMgKi8sCiAJCQkJQkMyMDRF
REYxMUM4M0U3MjAwOEYzMzc1IC8qIEluamVjdGVkQnVuZGxlICovLAogCQkJCTFBNkZBMDFDMTFF
MTUyNjMwMERCMTM3MSAvKiBtYWMgKi8sCkBAIC0xNzAzLDYgKzE3NzEsNyBAQAogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlCQzAzMkRDNDEwRjQzODdDMDA1OEMxNUEg
LyogQVBJICovLAorCQkJCTUxMkY1ODhEMTJBODgzNkYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlv
biAqLywKIAkJCQk1MUIzMDA0RDEyNTI5Q0Y1MDAwQjVDQTAgLyogY2YgKi8sCiAJCQkJMUFCN0Q0
QzcxMjg4QUE5QTAwQ0ZEMDhDIC8qIERvd25sb2FkcyAqLywKIAkJCQlCQzExMUIxODExMkY1RkI0
MDAzMzdCQUIgLyogTGF1bmNoZXIgKi8sCkBAIC0xODAyLDYgKzE4NzEsMTAgQEAKIAkJCWNoaWxk
cmVuID0gKAogCQkJCUJDQjYzNDc3MTE2QkYxMDYwMDYwMzIxNSAvKiBXZWJLaXQyLmggKi8sCiAJ
CQkJQkNEREIzMkMxMjRFQzJFMTAwNDhEMTNDIC8qIFdLQVBJQ2FzdC5oICovLAorCQkJCTUxMkY1
OEVEMTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCAqLywK
KwkJCQk1MTJGNThFRTEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oICovLAorCQkJCTUxMkY1OEVGMTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lci5jcHAgKi8sCisJCQkJNTEyRjU4RjAxMkE4OEE1NDAwNjI5NTMwIC8q
IFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmggKi8sCiAJCQkJQkM2NDZDMTYxMURE
Mzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0LmNwcCAqLywKIAkJCQlCQzY0NkMxNzEx
REQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3QuaCAqLywKIAkJCQlCQzY0NkMxODEx
REQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCAqLywKQEAgLTE4MDks
NiArMTg4Miw4IEBACiAJCQkJQkNCOUUyNEExMTIwRTE1QzAwQTEzN0UwIC8qIFdLQ29udGV4dC5j
cHAgKi8sCiAJCQkJQkNCOUUyNDkxMTIwRTE1QzAwQTEzN0UwIC8qIFdLQ29udGV4dC5oICovLAog
CQkJCUJDQzkzOEUwMTE4MERFNDQwMDg1RTVGRSAvKiBXS0NvbnRleHRQcml2YXRlLmggKi8sCisJ
CQkJNTEyRjU4RjExMkE4OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5jcHAgKi8sCisJCQkJ
NTEyRjU4RjIxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5oICovLAogCQkJCTFBQjdE
NzhDMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmNwcCAqLywKIAkJCQkxQUI3RDc4QjEy
ODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oICovLAogCQkJCUJDRTQ2OTU3MTIxNEVERjQw
MDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuY3BwICovLApAQCAtMTgzMiw2ICsx
OTA3LDggQEAKIAkJCQlCQ0Q1OTdDRjExMkI1NkFDMDBFQzhDMjMgLyogV0tQcmVmZXJlbmNlcy5j
cHAgKi8sCiAJCQkJQkNENTk3Q0UxMTJCNTZBQzAwRUM4QzIzIC8qIFdLUHJlZmVyZW5jZXMuaCAq
LywKIAkJCQk3NjJCNzQ4NDEyMEJCQTJEMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNlc1ByaXZhdGUu
aCAqLywKKwkJCQk1MTJGNThGMzEyQTg4QTU0MDA2Mjk1MzAgLyogV0tQcm90ZWN0aW9uU3BhY2Uu
Y3BwICovLAorCQkJCTUxMkY1OEY0MTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rpb25TcGFj
ZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTIxODYsNiArMjI2Myw4IEBACiAJCUMwQ0U3MjlEMTI0N0U3MUQwMEJDMEVDNCAvKiBEZXJp
dmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTUxMkY1OEEwMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTUxMkY1OEExMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRo
ZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCTFBQjdENjE3MTI4OEI5RDkwMENG
RDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQUI3RDYx
ODEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUEy
RDg0MzcxMjdGNjVENTAwMUVCOTYyIC8qIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKQEAgLTI1MTksNiArMjU5OCwxNiBAQAogCQkJCUJDN0I2MzM3MTJBNDVB
QkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3QjYzM0Qx
MkE0NUQxMjAwRDE3NEE0IC8qIFdLQnVuZGxlUGFnZUdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzN0Y2MjNCODEyQTU3QjYyMDBFM0ZERjYgLyogV0tGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTEyRjU4OEIxMkE4ODM2NjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEyRjU4OTcxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMkY1ODk5MTJB
ODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUxMkY1ODlCMTJBODgzODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTJGNTg5RDEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViUHJvdGVj
dGlvblNwYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTJGNThBMzEyQTg4M0FEMDA2Mjk1MzAg
LyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
MkY1OEY2MTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTJGNThGODEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNh
dGlvbkRlY2lzaW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMkY1OEZBMTJBODhB
NTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMkY1OEZD
MTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yNjI0LDYgKzI3MTMsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJ
CWZpbGVzID0gKAogCQkJCThEQzJFRjUzMDQ4NkE2OTQwMDk4QjIxNiAvKiBJbmZvUGxpc3Quc3Ry
aW5ncyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNTEyRjU4OEMxMkE4ODM2NjAwNjI5NTMwIC8qIEF1
dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yOTE0
LDYgKzMwMDQsMTYgQEAKIAkJCQkxQUE0NzkyMzEyQTU5RkQ5MDA4MjM2QzMgLyogUGx1Z2luUHJv
Y2Vzc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDODRFQjE4MTJBNzEwMEMwMDgzRjJEQSAv
KiBXZWJQcmVmZXJlbmNlc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMkRGQkEzMTJBNzYx
QTUwMEU3MzJBMyAvKiBXZWJQcmVmZXJlbmNlc0NGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUx
MkY1ODhBMTJBODgzNjYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTEyRjU4OTYxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEyRjU4OTgxMkE4ODM4ODAw
NjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MTJGNTg5QTEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViQ3JlZGVudGlhbC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1MTJGNTg5QzEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViUHJvdGVjdGlv
blNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMkY1OEEyMTJBODgzQUQwMDYyOTUzMCAv
KiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTEyRjU4RjUxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEyRjU4RjcxMkE4OEE1NDAwNjI5NTMwIC8qIFdL
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUx
MkY1OEY5MTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTEyRjU4RkIxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24g
NzMyMjQpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKIAorI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5o
IgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVN
ZXNzYWdlS2luZHMuaCIKQEAgLTQ1OCw2ICs0NTksMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1l
c3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NBdXRoZW50aWNhdGlvbk1hbmFnZXI+KCkp
IHsKKyAgICAgICAgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpzaGFyZWQoKS5kaWRSZWNlaXZlTWVz
c2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc0luamVj
dGVkQnVuZGxlPigpKSB7CiAgICAgICAgIGlmICghbV9pbmplY3RlZEJ1bmRsZSkKICAgICAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgorCisjaW5jbHVkZSAiTWVzc2FnZUlELmgiCisjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNp
bmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DbGllbnQuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlSUQoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUlEID0gMTsKKyAgICByZXR1cm4gdW5pcXVlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VJRCsrOworfQorCitBdXRoZW50aWNhdGlvbk1hbmFnZXImIEF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6c2hhcmVkKCkKK3sKKyAgICBzdGF0aWMgQXV0aGVudGljYXRpb25NYW5hZ2VyJiBtYW5h
Z2VyID0gKm5ldyBBdXRoZW50aWNhdGlvbk1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXI7Cit9
CisKK0F1dGhlbnRpY2F0aW9uTWFuYWdlcjo6QXV0aGVudGljYXRpb25NYW5hZ2VyKCkKK3sKK30K
Kwordm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQoreworICAgIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRz
KTsKK30KKwordm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKK3sKKyAgICBBU1NFUlQoZnJh
bWUpOworICAgIEFTU0VSVChmcmFtZS0+cGFnZSgpKTsKKworICAgIHVpbnQ2NF90IGlkID0gZ2Vu
ZXJhdGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUlEKCk7CisgICAgbV9jaGFsbGVuZ2VzLnNldChp
ZCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOyAgICAKKyAgICAKKyAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGZyYW1lLT5mcmFtZUlEKCksIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLCBpZCksIGZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpKTsKK30KKwordm9pZCBB
dXRoZW50aWNhdGlvbk1hbmFnZXI6OnVzZUNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3Qg
Y2hhbGxlbmdlSUQsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCit7Cisg
ICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlID0gbV9jaGFsbGVu
Z2VzLnRha2UoY2hhbGxlbmdlSUQpOworICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsK
KyAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNsaWVudCogY29yZUNsaWVudCA9IGNoYWxsZW5n
ZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpOworICAgIGlmICghY29yZUNsaWVudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgY29yZUNsaWVudC0+cmVjZWl2ZWRDcmVkZW50aWFsKGNoYWxsZW5nZSwg
Y3JlZGVudGlhbCk7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb250aW51ZVdp
dGhvdXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKQoreworICAg
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSA9IG1fY2hhbGxlbmdl
cy50YWtlKGNoYWxsZW5nZUlEKTsKKyAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwoKSk7Cisg
ICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGllbnQgPSBjaGFsbGVuZ2Uu
YXV0aGVudGljYXRpb25DbGllbnQoKTsKKyAgICBpZiAoIWNvcmVDbGllbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGNvcmVDbGllbnQtPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0
Q3JlZGVudGlhbChjaGFsbGVuZ2UpOworfQorCit2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
Y2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKQoreworICAgIFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSA9IG1fY2hhbGxlbmdlcy50YWtlKGNoYWxs
ZW5nZUlEKTsKKyAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwoKSk7CisgICAgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGllbnQgPSBjaGFsbGVuZ2UuYXV0aGVudGljYXRp
b25DbGllbnQoKTsKKyAgICBpZiAoIWNvcmVDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IGNvcmVDbGllbnQtPnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNoYWxsZW5nZSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAkocmV2aXNpb24gMCkKKysr
IFdlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXV0
aGVudGljYXRpb25NYW5hZ2VyX2gKKyNkZWZpbmUgQXV0aGVudGljYXRpb25NYW5hZ2VyX2gKKwor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKyAgICBjbGFz
cyBBcmd1bWVudERlY29kZXI7CisgICAgY2xhc3MgQ29ubmVjdGlvbjsKKyAgICBjbGFzcyBNZXNz
YWdlSUQ7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTsKKyAgICBjbGFzcyBDcmVkZW50aWFsOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViRnJhbWU7CisKK2NsYXNzIEF1dGhlbnRpY2F0aW9uTWFuYWdlciB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRpb25NYW5hZ2VyKTsKKworcHVibGlj
OgorICAgIHN0YXRpYyBBdXRoZW50aWNhdGlvbk1hbmFnZXImIHNoYXJlZCgpOworCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2Fn
ZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKTsKKworICAgIHZvaWQgdXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZSh1
aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpOworICAgIHZv
aWQgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVu
Z2VJRCk7CisgICAgdm9pZCBjYW5jZWxDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpOwor
Citwcml2YXRlOgorICAgIEF1dGhlbnRpY2F0aW9uTWFuYWdlcigpOworCisgICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKKworICAgIHR5
cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U+
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFwOworICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
TWFwIG1fY2hhbGxlbmdlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gQXV0aGVudGljYXRpb25NYW5hZ2VyX2gKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
bWVzc2FnZXMgLT4gQXV0aGVudGljYXRpb25NYW5hZ2VyIHsKKyAgICB2b2lkIFVzZUNyZWRlbnRp
YWxGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIFdlYkNvcmU6OkNyZWRlbnRpYWwg
Y3JlZGVudGlhbCk7CisgICAgdm9pZCBDb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQ2hhbGxl
bmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKKyAgICB2b2lkIENhbmNlbENoYWxsZW5nZSh1aW50
NjRfdCBjaGFsbGVuZ2VJRCk7Cit9CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9u
IDczMjI0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2RlZmluZSBE
SVNBQkxFX05PVF9JTVBMRU1FTlRFRF9XQVJOSU5HUyAxCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNlcnRp
ZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKQEAgLTE1NSw5ICsxNTYsMTYg
QEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkVXNlQ3JlZAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNoYWxsZW5nZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIC8vIEZJWE1FOiBB
dXRoZW50aWNhdGlvbiBpcyBhIHBlci1yZXNvdXJjZSBjb25jZXB0LCBidXQgd2UgZG9uJ3QgZG8g
cGVyLXJlc291cmNlIGhhbmRsaW5nIGluIHRoZSBVSVByb2Nlc3MgYXQgdGhlIEFQSSBsZXZlbCBx
dWl0ZSB5ZXQuCisgICAgLy8gT25jZSB3ZSBkbywgd2UgbWlnaHQgbmVlZCB0byBtYWtlIHN1cmUg
YXV0aGVudGljYXRpb24gZml0cyB3aXRoIG91ciBzb2x1dGlvbi4KKworICAgIFdlYlBhZ2UqIHdl
YlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1
cm47CisKKyAgICBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnNoYXJlZCgpLmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShtX2ZyYW1lLCBjaGFsbGVuZ2UpOwogfQogCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpICAgIApAQCAtMTY2LDEwICsxNzQsMjAgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYQogfQogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BB
Q0VfQVVUSF9DQUxMQkFDSykKLWJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpCitib29sIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3Bh
Y2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8g
RklYTUU6IEF1dGhlbnRpY2F0aW9uIGlzIGEgcGVyLXJlc291cmNlIGNvbmNlcHQsIGJ1dCB3ZSBk
b24ndCBkbyBwZXItcmVzb3VyY2UgaGFuZGxpbmcgaW4gdGhlIFVJUHJvY2VzcyBhdCB0aGUgQVBJ
IGxldmVsIHF1aXRlIHlldC4KKyAgICAvLyBPbmNlIHdlIGRvLCB3ZSBtaWdodCBuZWVkIHRvIG1h
a2Ugc3VyZSBhdXRoZW50aWNhdGlvbiBmaXRzIHdpdGggb3VyIHNvbHV0aW9uLgorICAgIAorICAg
IFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIGJvb2wgY2FuQXV0aGVudGljYXRl
OworICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUobV9mcmFtZS0+ZnJhbWVJ
RCgpLCBwcm90ZWN0aW9uU3BhY2UpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZTo6UmVwbHkoY2FuQXV0aGVudGljYXRl
KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gY2FuQXV0aGVudGlj
YXRlOwogfQogI2VuZGlmCiAKSW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShyZXZpc2lvbiA3MzIyNCkKKysr
IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg3LDYgKzEw
ODcsMjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsdGVyCisJCQkJTmFtZT0iQXV0aGVu
dGljYXRpb24iCisJCQkJPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJv
Y2Vzc1xBdXRoZW50aWNhdGlvblxBdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xB
dXRoZW50aWNhdGlvblxBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKKwkJCQkJPgorCQkJCTwvRmls
ZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcQXV0aGVudGlj
YXRpb25cQXV0aGVudGljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJPC9GaWx0ZXI+CisJCQk8RmlsdGVyCiAJCQkJTmFtZT0iV2ViQ29yZVN1cHBvcnQi
CiAJCQkJPgogCQkJCTxGaWxlCkBAIC0yMDE3LDYgKzIwMzMsMjIgQEAKIAkJCQkJCT4KIAkJCQkJ
PC9GaWxlPgogCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJ
XENcV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4K
KwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEFQSVxDXFdLQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8Rmls
ZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tBdXRoZW50aWNhdGlv
bkRlY2lzaW9uTGlzdGVuZXIuY3BwIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxl
CisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS0F1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lci5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCiAJ
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS0JhY2tGb3J3YXJkTGlzdC5j
cHAiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KQEAgLTIwNTMsNiArMjA4NSwxNCBAQAogCQkJCQkJ
PgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJv
Y2Vzc1xBUElcQ1xXS0NyZWRlbnRpYWwuY3BwIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJ
CTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS0NyZWRlbnRp
YWwuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tEb3dubG9hZC5jcHAiCiAJCQkJCQk+CiAJCQkJCTwv
RmlsZT4KQEAgLTIxNDQsNiArMjE4NCwxNCBAQAogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVBy
b2Nlc3NcQVBJXENcV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCIKIAkJCQkJCT4KIAkJCQkJPC9GaWxl
PgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tQ
cm90ZWN0aW9uU3BhY2UuY3BwIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJ
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS1Byb3RlY3Rpb25TcGFjZS5o
IgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CiAJCQkJCTxGaWx0ZXIKIAkJCQkJCU5hbWU9IndpbiIK
IAkJCQkJCT4KQEAgLTIxODMsNiArMjIzMSw0MiBAQAogCQkJCTwvRmlsdGVyPgogCQkJPC9GaWx0
ZXI+CiAJCQk8RmlsdGVyCisJCQkJTmFtZT0iQXV0aGVudGljYXRpb24iCisJCQkJPgorCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEF1dGhlbnRpY2F0aW9uXEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEF1dGhlbnRpY2F0aW9uXEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBdXRoZW50aWNhdGlvblxBdXRoZW50
aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEF1dGhlbnRpY2F0aW9uXEF1dGhl
bnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEF1dGhlbnRpY2F0aW9uXFdlYkNy
ZWRlbnRpYWwuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEF1dGhlbnRpY2F0aW9uXFdlYkNyZWRlbnRpYWwuaCIKKwkJ
CQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJv
Y2Vzc1xBdXRoZW50aWNhdGlvblxXZWJQcm90ZWN0aW9uU3BhY2UuY3BwIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEF1dGhl
bnRpY2F0aW9uXFdlYlByb3RlY3Rpb25TcGFjZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
PC9GaWx0ZXI+CisJCQk8RmlsdGVyCiAJCQkJTmFtZT0iY2YiCiAJCQkJPgogCQkJCTxGaWxlCkBA
IC0yNTgzLDYgKzI2NjcsMTQgQEAKIAkJCU5hbWU9IkRlcml2ZWQgU291cmNlcyIKIAkJCT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQo
V2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXV0aGVu
dGljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQog
CQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xEb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCIKIAkJCQk+CiAJ
CQk8L0ZpbGU+CkluZGV4OiBXZWJLaXQyL3dpbi9XZWJLaXQyQ29tbW9uLnZzcHJvcHMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0MkNvbW1vbi52c3Byb3BzCShyZXZpc2lvbiA3MzIy
NCkKKysrIFdlYktpdDIvd2luL1dlYktpdDJDb21tb24udnNwcm9wcwkod29ya2luZyBjb3B5KQpA
QCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wKIAkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJ
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxQbGF0
Zm9ybSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFBsYXRmb3JtXENvcmVJUEMmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxQbHVnaW5Qcm9jZXNzJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcilcLi5cU2hhcmVkJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cU2hhcmVkXHdpbiZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFNoYXJlZFxBUElcYyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpXC4uXFNoYXJlZFxBUElcY1xjZiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFNoYXJlZFxBUElcY1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWRcQ29y
ZUlQQ1N1cHBvcnQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3MmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcQVBJXEMmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxVSVByb2Nlc3NcQVBJXENcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilc
Li5cVUlQcm9jZXNzXEFQSVxjcHAmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nl
c3NcQVBJXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xEb3dubG9h
ZHMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcTGF1bmNoZXImcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcUGx1Z2lucyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpXC4uXFVJUHJvY2Vzc1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxX
ZWJQcm9jZXNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJDb3Jl
U3VwcG9ydCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcV2ViQ29yZVN1
cHBvcnRcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJQYWdl
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJQYWdlXHdpbiZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGUmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxET00m
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXHdp
biZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcUGx1Z2lucyZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcUGx1Z2luc1xOZXRzY2FwZSZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcilcLi5cV2ViUHJvY2Vzc1xEb3dubG9hZHMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxXZWJQcm9jZXNzXERvd25sb2Fkc1xjZiZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXHBy
aXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGUmcXVvdDs7JnF1
b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxwdGhyZWFkcyZxdW90OzsmcXVvdDskKFdlYktpdE91
dHB1dERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1
dERpcilcSW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0
TGlicmFyaWVzRGlyKVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0
TGlicmFyaWVzRGlyKVxJbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90
OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzJnF1b3Q7IgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFBy
b2plY3REaXIpXC4uXFBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cUGxhdGZv
cm1cQ29yZUlQQyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFBsdWdpblByb2Nlc3MmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxTaGFyZWRcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cU2hhcmVkXEFQSVxj
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cU2hhcmVkXEFQSVxjXGNmJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcilcLi5cU2hhcmVkXEFQSVxjXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpXC4uXFNoYXJlZFxDb3JlSVBDU3VwcG9ydCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFVJUHJvY2VzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xBUElcQyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xBUElcQ1x3aW4mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcQVBJXGNwcCZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpXC4uXFVJUHJvY2Vzc1xBUElcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5c
VUlQcm9jZXNzXEF1dGhlbnRpY2F0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQ
cm9jZXNzXERvd25sb2FkcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xM
YXVuY2hlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xQbHVnaW5zJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXHdpbiZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpXC4uXFdlYlByb2Nlc3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQ
cm9jZXNzXFdlYkNvcmVTdXBwb3J0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJv
Y2Vzc1xXZWJDb3JlU3VwcG9ydFx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQ
cm9jZXNzXFdlYlBhZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXFdl
YlBhZ2Vcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xJbmplY3Rl
ZEJ1bmRsZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRC
dW5kbGVcQVBJXGMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXEluamVj
dGVkQnVuZGxlXERPTSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcSW5q
ZWN0ZWRCdW5kbGVcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xQ
bHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xQbHVnaW5zXE5l
dHNjYXBlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1x3aW4mcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXEF1dGhlbnRpY2F0aW9uJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xEb3dubG9hZHMmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXERvd25sb2Fkc1xjZiZxdW90OzsmcXVvdDskKFdlYktp
dE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzJnF1b3Q7OyZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxJbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1
ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVccHJpdmF0ZSZxdW90
OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxwdGhyZWFkcyZxdW90OzsmcXVv
dDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUm
cXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7IgogCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VT
UkRMTDtXRUJLSVRfRVhQT1JUUztGUkFNRVdPUktfTkFNRT1XZWJLaXQ7QlVJTERJTkdfV0VCS0lU
IgogCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKIAkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdo
PSJXZWJLaXQyUHJlZml4LmgiCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzIyNikKKysrIFdlYktpdFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTEyLTAy
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcm91bmR3b3JrIGZvciA8cmRhcjovL3Byb2Js
ZW0vNzY2MDczMz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDE5MQorICAgICAgICBXZWJLaXQyIEF1dGhlbnRpY2F0aW9uIFN1cHBvcnQKKworICAgICAgICBL
ZWVwIHRoZXNlIGJ1aWxkcyB3b3JraW5nOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93
c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtCcm93c2VyV2luZG93Q29udHJvbGxl
ciBhd2FrZUZyb21OaWJdKToKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisK
IDIwMTAtMTItMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0VG9vbHMvTWlu
aUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHJldmlz
aW9uIDczMjI0KQorKysgV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dD
b250cm9sbGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTU1NCw2ICs1NTQsOCBAQCAtICh2b2lkKWF3
YWtlRnJvbU5pYgogICAgICAgICBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHksCiAgICAgICAg
IGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSwKICAgICAgICAgZGlkUnVuSW5zZWN1
cmVDb250ZW50Rm9yRnJhbWUsCisgICAgICAgIDAsIC8vIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2VJbkZyYW1lCisgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUluRnJhbWUKICAgICAgICAgZGlkU3RhcnRQcm9ncmVzcywKICAgICAgICAg
ZGlkQ2hhbmdlUHJvZ3Jlc3MsCiAgICAgICAgIGRpZEZpbmlzaFByb2dyZXNzLApJbmRleDogV2Vi
S2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDczMjI0KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw2ICsyNTcsOCBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjppbml0aWFsaXplKGludCBhcmdjCiAgICAgICAgIDAsIC8vIGRpZFJlbW92ZUZyYW1lRnJv
bUhpZXJhcmNoeQogICAgICAgICAwLCAvLyBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJh
bWUKICAgICAgICAgMCwgLy8gZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUKKyAgICAgICAg
MCwgLy8gY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUKKyAgICAg
ICAgMCwgLy8gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZQogICAgICAg
ICAwLCAvLyBkaWRTdGFydFByb2dyZXNzCiAgICAgICAgIDAsIC8vIGRpZENoYW5nZVByb2dyZXNz
CiAgICAgICAgIDAsIC8vIGRpZEZpbmlzaFByb2dyZXNzCg==
</data>
<flag name="commit-queue"
          id="66316"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75501</attachid>
            <date>2010-12-03 09:15:01 -0800</date>
            <delta_ts>2010-12-08 14:24:50 -0800</delta_ts>
            <desc>First stage v3 - More build fixes all around</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>108290</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzIyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMTItMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdy
b3VuZHdvcmsgZm9yIDxyZGFyOi8vcHJvYmxlbS83NjYwNzMzPiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMTkxCisgICAgICAgIFdlYktpdDIgQXV0aGVudGlj
YXRpb24gU3VwcG9ydAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisKKyAgICAgICAgRXhw
b3NlIHRoZSBBdXRoZW50aWNhdGlvbkNsaWVudCBmb3IgV0syIHBsYXRmb3JtcyAoV2luZG93cyBh
bHJlYWR5IGRvZXMgdGhpcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRo
ZW50aWNhdGlvbk1hYy5tbToKKyAgICAgICAgKC1bV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50
QXNDaGFsbGVuZ2VTZW5kZXIgY2xpZW50XSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTo6YXV0aGVudGljYXRpb25DbGllbnQpOgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9xdC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmF1dGhlbnRpY2F0aW9uQ2xpZW50KToKKwogMjAx
MC0xMi0wMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhdmUgSHlhdHQuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDczMjI0KQorKysgV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw3IEBAIF9fWk4z
SlNDOEJpbmRpbmdzOEluc3RhbmNlMTZuZXdSdW50aW1lT2IKIF9fWk4zV1RGMTBTdHJpbmdJbXBs
Y3ZQOE5TU3RyaW5nRXYKIF9fWk4zV1RGNlN0cmluZ0MxRVA4TlNTdHJpbmcKIF9fWk4zV1RGNlN0
cmluZ0MxRVBLMTBfX0NGU3RyaW5nCitfX1pON1dlYkNvcmUxMENyZWRlbnRpYWxDMUV2CiBfX1pO
N1dlYkNvcmUxMEpTRG9jdW1lbnQ2c19pbmZvRQogX19aTjdXZWJDb3JlMTBNb3VzZUV2ZW50QzFF
UktOM1dURjEyQXRvbWljU3RyaW5nRWJiTlMxXzEwUGFzc1JlZlB0cklOU185RE9NV2luZG93RUVF
aWlpaWliYmJidE5TNV9JTlNfMTFFdmVudFRhcmdldEVFRU5TNV9JTlNfOUNsaXBib2FyZEVFRWIK
IF9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIwc2V0Q2FuSGF2ZVNjcm9sbGJhcnNFYgpAQCAtMzY3
LDYgKzM2OCw3IEBAIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OXRyYW5zbGF0ZUUKIF9f
Wk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0QzFFUDlDR0NvbnRleHQKIF9fWk43V2ViQ29yZTE1
R3JhcGhpY3NDb250ZXh0RDFFdgogX19aTjdXZWJDb3JlMTVKU0RPTVdpbmRvd0Jhc2UxOGNvbW1v
bkpTR2xvYmFsRGF0YUV2CitfX1pON1dlYkNvcmUxNVByb3RlY3Rpb25TcGFjZUMxRXYKIF9fWk43
V2ViQ29yZTE1U2Nyb2xsQWxpZ25tZW50MTdhbGlnbkNlbnRlckFsd2F5c0UKIF9fWk43V2ViQ29y
ZTE1U2Nyb2xsQWxpZ25tZW50MTlhbGlnblRvRWRnZUlmTmVlZGVkRQogX19aTjdXZWJDb3JlMTVT
dHJpbmdUcnVuY2F0b3IxM3JpZ2h0VHJ1bmNhdGVFUktOM1dURjZTdHJpbmdFZlJLTlNfNEZvbnRF
YgpAQCAtNTMzLDYgKzUzNSw3IEBAIF9fWk43V2ViQ29yZTI2VXNlclR5cGluZ0dlc3R1cmVJbmRp
Y2F0b3IKIF9fWk43V2ViQ29yZTI2Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnVFdgogX19aTjdX
ZWJDb3JlMjZjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0V2CiBfX1pON1dlYkNvcmUyNnVzZXNU
ZXN0TW9kZUZvY3VzUmluZ0NvbG9yRXYKK19fWk43V2ViQ29yZTI3QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlQzJFdgogX19aTjdXZWJDb3JlMjdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb25D
MUVOM1dURjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRWJSS05TMV82U3RyaW5nRQogX19aTjdXZWJD
b3JlMjdEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sxNHNldE9yaWVudGF0aW9uRU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzE3RGV2aWNlT3JpZW50YXRpb25FRUUKIF9fWk43V2ViQ29yZTI3RGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgpAQCAtMTA0Niw5ICsxMDQ5LDExIEBAIF9fWk5LN1dl
YkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlOG1pbWUKIF9fWk5LN1dlYkNvcmUyMUJhY2tGb3J3
YXJkQ29udHJvbGxlcjEyZm9yd2FyZENvdW50RXYKIF9fWk5LN1dlYkNvcmUyMUJhY2tGb3J3YXJk
Q29udHJvbGxlcjliYWNrQ291bnRFdgogX19aTks3V2ViQ29yZTIxVXNlckNvbnRlbnRVUkxQYXR0
ZXJuN21hdGNoZXNFUktOU180S1VSTEUKK19fWk5LN1dlYkNvcmUyM0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlMjBhdXRoZW50aWNhdGlvbkNsaWVudEV2CiBfX1pOSzdXZWJDb3JlMjNGcmFtZUxvYWRl
clN0YXRlTWFjaGluZTE1Zmlyc3RMYXlvdXREb25lRXYKIF9fWk5LN1dlYkNvcmUyM0ZyYW1lTG9h
ZGVyU3RhdGVNYWNoaW5lMjNjb21taXR0aW5nRmlyc3RSZWFsTG9hZEV2CiBfX1pOSzdXZWJDb3Jl
MjZOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjZpc0RvbmVFdgorX19aTks3V2ViQ29yZTI3QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlNmlzTnVsbEV2CiBfX1pOSzdXZWJDb3JlNEZvbnQxMGZs
b2F0V2lkdGhFUktOU183VGV4dFJ1bkVQTjNXVEY3SGFzaFNldElQS05TXzE0U2ltcGxlRm9udERh
dGFFTlM0XzdQdHJIYXNoSVM4X0VFTlM0XzEwSGFzaFRyYWl0c0lTOF9FRUVFUE5TXzEzR2x5cGhP
dmVyZmxvd0UKIF9fWk5LN1dlYkNvcmU0Rm9udDhkcmF3VGV4dEVQTlNfMTVHcmFwaGljc0NvbnRl
eHRFUktOU183VGV4dFJ1bkVSS05TXzEwRmxvYXRQb2ludEVpaQogX19aTks3V2ViQ29yZTRLVVJM
MTFjcmVhdGVDRlVSTEV2CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZpc2lvbiA3MzIyNCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqbnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbnNDaGFsbGVuZ2UuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0QXV0aGVudGljYXRpb25D
bGllbnQoQXV0aGVudGljYXRpb25DbGllbnQqKTsgLy8gQ2hhbmdlcyBzZW5kZXIgdG8gb25lIHRo
YXQgaW52b2tlcyBjbGllbnQgbWV0aG9kcy4KKyAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0
aGVudGljYXRpb25DbGllbnQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCShyZXZpc2lvbiA3MzIyNCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgQGludGVyZmFjZSBXZWJDb3JlQXV0aGVudGljYXRp
b25DbGllbnRBcwogICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKIH0KIC0gKGlk
KWluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6KEF1dGhlbnRpY2F0aW9uQ2xpZW50KiljbGll
bnQ7CistIChBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwogLSAodm9pZClkZXRhY2hDbGll
bnQ7CiBAZW5kCiAKQEAgLTU1LDYgKzU2LDExIEBAIC0gKGlkKWluaXRXaXRoQXV0aGVudGljYXRp
b25DbGllbnQ6KEF1dGgKICAgICByZXR1cm4gc2VsZjsKIH0KIAorLSAoQXV0aGVudGljYXRpb25D
bGllbnQqKWNsaWVudAoreworICAgIHJldHVybiBtX2NsaWVudDsKK30KKwogLSAodm9pZClkZXRh
Y2hDbGllbnQKIHsKICAgICBtX2NsaWVudCA9IDA7CkBAIC0xMjMsNiArMTI5LDE0IEBAIHZvaWQg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnNldEF1dGhlbnQKICAgICB9CiB9CiAKK0F1dGhlbnRp
Y2F0aW9uQ2xpZW50KiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6YXV0aGVudGljYXRpb25DbGll
bnQoKSBjb25zdAoreworICAgIGlmIChbbV9zZW5kZXIuZ2V0KCkgaXNNZW1iZXJPZkNsYXNzOltX
ZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBjbGFzc11dKQorICAg
ICAgICByZXR1cm4gW3N0YXRpY19jYXN0PFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hh
bGxlbmdlU2VuZGVyKj4obV9zZW5kZXIuZ2V0KCkpIGNsaWVudF07CisgICAgCisgICAgcmV0dXJu
IDA7Cit9CisKIGJvb2wgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnBsYXRmb3JtQ29tcGFyZShj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGIpCiB7CiAgICAgaWYgKGEuc2VuZGVyKCkgIT0gYi5zZW5kZXIoKSkKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oCShyZXZpc2lvbiA3MzIyNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXV0aGVudGljYXRpb25DbGllbnQ7CisK
IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGljIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQmFzZSB7CiBwdWJsaWM6CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQpAQCAt
MzksNiArNDEsOSBAQCBwdWJsaWM6CiAgICAgICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VC
YXNlKHByb3RlY3Rpb25TcGFjZSwgcHJvcG9zZWRDcmVkZW50aWFsLCBwcmV2aW91c0ZhaWx1cmVD
b3VudCwgcmVzcG9uc2UsIGVycm9yKQogICAgIHsKICAgICB9CisKKyAgICBBdXRoZW50aWNhdGlv
bkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQoKSBjb25zdCB7IHJldHVybiAwOyB9IC8vIEZJ
WE1FOiBJbXBsZW1lbnQhCisKIH07CiAKIH0KSW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzI2NikKKysrIFdlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIwIEBACisyMDEwLTEyLTAyICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcm91bmR3b3JrIGZvciA8cmRhcjovL3Byb2JsZW0v
NzY2MDczMz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDE5
MQorICAgICAgICBXZWJLaXQyIEF1dGhlbnRpY2F0aW9uIFN1cHBvcnQKKworICAgICAgICBXaXRo
IHRoaXMgcGF0Y2ggaW4gcGxhY2UsIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZXMgYXJlIHNlbnQg
dXAgZnJvbSBXZWJDb3JlIGFuZCBzaGlwcGVkIG92ZXIgdGhlIElQQyBsYXllci4KKyAgICAgICAg
Q2xpZW50IGFwcHMgY2FuIGltcGxlbWVudCB0aGUgcmVsYXRlZCBjbGllbnQgbWV0aG9kcyB0byBh
dHRlbXB0IHRvIGNvbnRpbnVlIHdpdGhvdXQgY3JlZGVudGlhbHMgb3IgY2FuY2VsIGEKKyAgICAg
ICAgY2hhbGxlbmdlLgorCisgICAgICAgIFRoZXJlJ3Mgbm90IHlldCBBUEkgdG8gaW5zcGVjdCBh
IGNoYWxsZW5nZSBvciBjcmVhdGUgYSBjcmVkZW50aWFsIHRvIHVzZSBpbiByZXBseSAtIHRoYXQg
d2lsbCBjb21lIGxhdGVyLgorCisgICAgICAgIEJ1aWxkLXN5c3RlbSBjaGFuZ2VzOgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJvOgor
ICAgICAgICAqIFdlYktpdDIucHJvOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisgICAgICAgICogd2lu
L1dlYktpdDJDb21tb24udnNwcm9wczoKKworICAgICAgICBNZXNzYWdlcyBhbmQgY2FzdHMgZm9y
IElQQyBhbmQgQVBJczoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2Jq
ZWN0Lmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZSk6CisKKyAgICAgICAgU3R1YiBvdXQgdGhlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNs
YXNzIGZhbWlseToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5jcHA6IEFkZGVkLgorICAgICAgICAoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUdl
dFR5cGVJRCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5j
cHA6IEFkZGVkLgorICAgICAgICAoV0tDcmVkZW50aWFsR2V0VHlwZUlEKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV0tQcm90ZWN0
aW9uU3BhY2VHZXRUeXBlSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rp
b25TcGFjZS5oOiBBZGRlZC4KKworICAgICAgICBBZGQgYW4gQXV0aGVudGljYXRpb24gbGlzdGVu
ZXIgZm9yIHRoZSBjbGllbnQgYXBwIHRvIHJlc3BvbmQgdG86CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lckdldFR5cGVJRCk6CisgICAgICAg
IChXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclVzZUNyZWRlbnRpYWwpOgorICAgICAg
ICAoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJDYW5jZWwpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oOiBBZGRlZC4K
KworICAgICAgICBBZGQgQXV0aGVudGljYXRpb24gcmVsYXRlZCBtZXRob2RzIHRvIHRoZSBwYWdl
IGxvYWRlciBjbGllbnQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oOgorCisg
ICAgICAgIEFkZCBlbXB0eSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIG5ldyBBUEkgb2JqZWN0czoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb246IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5Ojp+QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OnVzZUNyZWRlbnRpYWwp
OgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjYW5jZWwp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5OjpsaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk6OnR5cGUpOgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L1dlYkNyZWRlbnRpYWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ3JlZGVudGlh
bDo6Y29yZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRp
YWwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNyZWRlbnRpYWw6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNyZWRlbnRpYWw6OnR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvdGVjdGlvblNwYWNlOjpXZWJQcm90ZWN0aW9uU3BhY2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvdGVjdGlvblNwYWNlOjp0eXBlKToKKworICAgICAgICBBZGQgaW1wbGVt
ZW50YXRpb24gb2YgdGhlIEF1dGhlbnRpY2F0aW9uIGRlY2lzaW9uIGxpc3RlbmVyOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVu
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyOjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OnVzZUNyZWRlbnRpYWwpOgorICAgICAg
ICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OmNhbmNlbCk6CisgICAg
ICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6ZGV0YWNoQ2hhbGxl
bmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkRlY2lzaW9uTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lcjo6dHlwZSk6CisKKyAgICAgICAgV2ViUGFnZSBhbmQgUGFnZUxv
YWRlckNsaWVudCBnbHVlOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJDbGllbnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgQWRkIGEgbWFuYWdlciB0byBtYXAgdGhlIGFjdHVh
bCBwbGF0Zm9ybSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2VzIHRvIGEgY2hhbGxlbmdlIElELAor
ICAgICAgICBhcyBhdCBsZWFzdCBzb21lIHBsYXRmb3JtcyByZXF1aXJlIHRoZSBvYmplY3QgaWRl
bnRpdHkgdG8gcGVyc2lzdDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlSUQpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6
OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6QXV0aGVu
dGljYXRpb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktp
dDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKToKKyAg
ICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb250aW51ZVdpdGhvdXRDcmVk
ZW50aWFsRm9yQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5h
Z2VyOjpjYW5jZWxDaGFsbGVuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRlZC4K
KworICAgICAgICBIYW5kIG9mZiBBdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2VzIHRvIHRoZSBtYW5h
Z2VyIHRvIGJlIHNlbnQgb3ZlciBJUEM6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdr
cGFnZS5jcHA6CisKIDIwMTAtMTItMDIgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NA
bm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KSW5k
ZXg6IFdlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0Rl
cml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9EZXJpdmVkU291
cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiBWUEFUSCA9IFwKICAg
ICAkKFdlYktpdDIpL1BsdWdpblByb2Nlc3MgXAogICAgICQoV2ViS2l0MikvU2hhcmVkL1BsdWdp
bnMgXAorICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbiBcCiAgICAgJChX
ZWJLaXQyKS9XZWJQcm9jZXNzL1BsdWdpbnMgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9X
ZWJQYWdlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MgXApAQCAtMzIsNiArMzMsNyBAQCBW
UEFUSCA9IFwKICMKIAogTUVTU0FHRV9SRUNFSVZFUlMgPSBcCisgICAgQXV0aGVudGljYXRpb25N
YW5hZ2VyIFwKICAgICBEb3dubG9hZFByb3h5IFwKICAgICBOUE9iamVjdE1lc3NhZ2VSZWNlaXZl
ciBcCiAgICAgUGx1Z2luQ29udHJvbGxlclByb3h5IFwKSW5kZXg6IFdlYktpdDIvRGVyaXZlZFNv
dXJjZXMucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJvCShyZXZp
c2lvbiA3MzIyNCkKKysrIFdlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJvCSh3b3JraW5nIGNvcHkp
CkBAIC04NSw2ICs4NSw3IEBAIGRlZmluZVJlcGxhY2UobWVzc2FnZV9yZWNlaXZlcl9nZW5lcmF0
b3IKIAogVlBBVEggPSBcCiAgICAgUGx1Z2luUHJvY2VzcyBcCisgICAgV2ViUHJvY2Vzcy9BdXRo
ZW50aWNhdGlvbiBcCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zIFwKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UgXAogICAgIFdlYlByb2Nlc3MgXApAQCAtOTMsNiArOTQsNyBAQCBWUEFUSCA9IFwKICAg
ICBVSVByb2Nlc3MvUGx1Z2lucwogCiBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKKyAgICBBdXRoZW50
aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gXAogICAgIERvd25sb2FkUHJveHkubWVzc2FnZXMu
aW4gXAogICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiBcCiAgICAgUGx1Z2lu
UHJvY2Vzcy5tZXNzYWdlcy5pbiBcCkluZGV4OiBXZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9X
ZWJLaXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTMwLDExICsxMzAsMTMgQEAgSU5DTFVERVBB
VEggPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL3F0
IFwKICAgICBVSVByb2Nlc3MvQVBJL3F0IFwKKyAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24g
XAogICAgIFVJUHJvY2Vzcy9Eb3dubG9hZHMgXAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlciBcCiAg
ICAgVUlQcm9jZXNzL1BsdWdpbnMgXAogICAgIFVJUHJvY2Vzcy9xdCBcCiAgICAgV2ViUHJvY2Vz
cyBcCisgICAgV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbiBcCiAgICAgV2ViUHJvY2Vzcy9Eb3du
bG9hZHMgXAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0IFwKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlIFwKQEAgLTE1OSw2ICsxNjEsNyBAQCBRTUFLRV9DWFhGTEFHUyArPSAiLWlu
Y2x1ZGUgJCRQUkVGSVhfSEVBCiBERUZJTkVTICs9IEJVSUxESU5HX1FUX18KIAogV0VCS0lUMl9H
RU5FUkFURURfSEVBREVSUyA9IFwKKyAgICAkJFdFQktJVDJfR0VORVJBVEVEX1NPVVJDRVNfRElS
L0F1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggXAogICAgICQkV0VCS0lUMl9HRU5FUkFU
RURfU09VUkNFU19ESVIvRG93bmxvYWRQcm94eU1lc3NhZ2VzLmggXAogICAgICQkV0VCS0lUMl9H
RU5FUkFURURfU09VUkNFU19ESVIvUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaCBcCiAg
ICAgJCRXRUJLSVQyX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUi9QbHVnaW5Qcm9jZXNzTWVzc2FnZXMu
aCBcCkBAIC0xNzQsNiArMTc3LDcgQEAgV0VCS0lUMl9HRU5FUkFURURfSEVBREVSUyA9IFwKICAg
ICAkJFdFQktJVDJfR0VORVJBVEVEX1NPVVJDRVNfRElSL1dlYlByb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgKIAogV0VCS0lUMl9HRU5FUkFURURfU09VUkNFUyA9IFwKKyAgICAkJFdFQktJVDJfR0VORVJB
VEVEX1NPVVJDRVNfRElSL0F1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAg
XAogICAgICQkV0VCS0lUMl9HRU5FUkFURURfU09VUkNFU19ESVIvRG93bmxvYWRQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgXAogICAgICQkV0VCS0lUMl9HRU5FUkFURURfU09VUkNFU19ESVIvUGx1
Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBcCiAgICAgJCRXRUJLSVQyX0dF
TkVSQVRFRF9TT1VSQ0VTX0RJUi9QbHVnaW5Qcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBcCkBA
IC0yNjEsMTAgKzI2NSwxMyBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQvcXQvVXBkYXRlQ2h1
bmsuaCBcCiAgICAgU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmggXAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25EZWNp
c2lvbkxpc3RlbmVyLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdC5o
IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmggXAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dFByaXZhdGUuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5oIFwKICAgICBV
SVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFt
ZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmggXApAQCAt
Mjc2LDYgKzI4Myw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQ
cml2YXRlLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmggXAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIFwKKyAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tQcm90ZWN0aW9uU3BhY2UuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dlYktpdDIuaCBc
CiAgICAgVUlQcm9jZXNzL0FQSS9DL3F0L1dLTmF0aXZlRXZlbnQuaCBcCiAgICAgVUlQcm9jZXNz
L0FQSS9jcHAvV0tSZXRhaW5QdHIuaCBcCkBAIC0yODgsNiArMjk2LDEwIEBAIEhFQURFUlMgKz0g
XAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0
L3F3a3BhZ2VfcC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3a3ByZWZlcmVuY2VzLmggXAor
ICAgIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
LmggXAorICAgIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXIuaCBcCisgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwu
aCBcCisgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5oIFwK
ICAgICBVSVByb2Nlc3MvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuaCBcCiAgICAgVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5LmggXApAQCAtMzI4LDYgKzM0MCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJv
Y2Vzcy9XZWJVSUNsaWVudC5oIFwKICAgICBVSVByb2Nlc3MvcXQvV2ViQ29udGV4dE1lbnVQcm94
eVF0LmggXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmggXAorICAgIFdl
YlByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggXAogICAgIFdl
YlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggXAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggXApAQCAtNDQ2LDkgKzQ1OSwxMiBAQCBTT1VSQ0VT
ICs9IFwKICAgICBTaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuY3BwIFwKICAgICBTaGFyZWQv
cXQvV2ViVVJMUmVxdWVzdFF0LmNwcCBcCiAgICAgU2hhcmVkL3F0L1dlYlVSTFJlc3BvbnNlUXQu
Y3BwIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAg
XAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5j
cHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdC5jcHAgXAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmNwcCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5j
cHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcCBcCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLRnJhbWUuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxp
c3RlbmVyLmNwcCBcCkBAIC00NTgsNiArNDc0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5h
bWVzcGFjZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBcCisg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgVUlQcm9jZXNz
L0FQSS9jcHAvcXQvV0tTdHJpbmdRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dL
VVJMUXQuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L0NsaWVudEltcGwuY3BwIFwKQEAgLTQ2
NSw2ICs0ODIsMTAgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2toaXN0
b3J5LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcCBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9xdC9xd2twcmVmZXJlbmNlcy5jcHAgXAorICAgIFVJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcCBcCisgICAgVUlQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAgXAorICAgIFVJ
UHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmNwcCBcCisgICAgVUlQcm9jZXNz
L0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9D
aHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNw
cCBcCkBAIC01MTIsNiArNTMzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L1dl
Ykluc3BlY3RvclByb3h5UXQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJv
eHlRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJQcmVmZXJlbmNlc1F0LmNwcCBcCisgICAg
V2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwIFwKICAg
ICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAgXAogICAgIFdlYlByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgXAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0
L0Rvd25sb2FkUXQuY3BwIFwKSW5kZXg6IFdlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
SUQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmgJ
KHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIGVudW0gTWVzc2FnZUNsYXNzIHsKICAg
ICBNZXNzYWdlQ2xhc3NDb3JlSVBDLAogCiAgICAgLy8gTWVzc2FnZXMgc2VudCBieSB0aGUgVUkg
cHJvY2VzcyB0byB0aGUgd2ViIHByb2Nlc3MuCisgICAgTWVzc2FnZUNsYXNzQXV0aGVudGljYXRp
b25NYW5hZ2VyLAogICAgIE1lc3NhZ2VDbGFzc0RyYXdpbmdBcmVhLAogICAgIE1lc3NhZ2VDbGFz
c0luamVjdGVkQnVuZGxlLAogICAgIE1lc3NhZ2VDbGFzc1dlYkluc3BlY3RvciwKSW5kZXg6IFdl
YktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQ
SU9iamVjdC5oCShyZXZpc2lvbiA3MzIyNCkKKysrIFdlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMSArMzYsMTUgQEAgcHVibGljOgogICAgICAgICAvLyBC
YXNlIHR5cGVzCiAgICAgICAgIFR5cGVOdWxsID0gMCwKICAgICAgICAgVHlwZUFycmF5LAorICAg
ICAgICBUeXBlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCisgICAgICAgIFR5cGVBdXRoZW50aWNh
dGlvbkRlY2lzaW9uTGlzdGVuZXIsCiAgICAgICAgIFR5cGVDZXJ0aWZpY2F0ZUluZm8sCiAgICAg
ICAgIFR5cGVDb250ZXh0TWVudUl0ZW0sCisgICAgICAgIFR5cGVDcmVkZW50aWFsLAogICAgICAg
ICBUeXBlRGF0YSwKICAgICAgICAgVHlwZURpY3Rpb25hcnksCiAgICAgICAgIFR5cGVFcnJvciwK
KyAgICAgICAgVHlwZVByb3RlY3Rpb25TcGFjZSwKICAgICAgICAgVHlwZVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSwKICAgICAgICAgVHlwZVN0cmluZywKICAgICAgICAgVHlwZVVSTCwKSW5kZXg6IFdl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiA3MzIyNCkKKysrIFdl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCwxMSArMzAsMTQgQEAKICNpbmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIKICNpbmNsdWRlICJB
cmd1bWVudEVuY29kZXIuaCIKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50
aWFsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zs
b2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvS2V5Ym9hcmRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CkBAIC0xMDksNiArMTEyLDQ1IEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKICAgICB9CiB9OwogCit0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKKyAgICB7
CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgY3JlZGVudGlhbCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2U+IHsKKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9u
U3BhY2UmIGNoYWxsZW5nZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBX
ZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIGNyZWRlbnRpYWwpCisgICAgeworICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK307CisKK3RlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3JlZGVudGlhbD4geworICAgIHN0
YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6
OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCisgICAgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVj
b2RlciwgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKKyAgICB7CisgICAgICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfTsKKwogI2lm
IFVTRShMQVpZX05BVElWRV9DVVJTT1IpCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkN1cnNvcj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29k
ZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY3Vyc29yKQpJbmRleDogV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgJKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tC
YXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDkgKzU5LDEyIEBAIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLVXNlckNvbnRlbnQKIAogLyogV2ViS2l0MiBtYWluIEFQSSB0eXBlcyAqLwog
Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBX
S0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIqIFdLQXV0aGVudGljYXRpb25EZWNpc2lv
bkxpc3RlbmVyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCYWNrRm9yd2FyZExp
c3QqIFdLQmFja0ZvcndhcmRMaXN0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tC
YWNrRm9yd2FyZExpc3RJdGVtKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY7CiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS0NvbnRleHQqIFdLQ29udGV4dFJlZjsKK3R5cGVkZWYgY29uc3Qg
c3RydWN0IE9wYXF1ZVdLQ3JlZGVudGlhbCogV0tDcmVkZW50aWFsUmVmOwogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tEb3dubG9hZCogV0tEb3dubG9hZFJlZjsKIHR5cGVkZWYgY29uc3Qg
c3RydWN0IE9wYXF1ZVdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lciogV0tGb3JtU3VibWlzc2lvbkxp
c3RlbmVyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tGcmFtZSogV0tGcmFtZVJl
ZjsKQEAgLTcyLDYgKzc1LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdlKiBX
S1BhZwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdlR3JvdXAqIFdLUGFnZUdyb3Vw
UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdlTmFtZXNwYWNlKiBXS1BhZ2VO
YW1lc3BhY2VSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ByZWZlcmVuY2VzKiBX
S1ByZWZlcmVuY2VzUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcm90ZWN0aW9u
U3BhY2UqIFdLUHJvdGVjdGlvblNwYWNlUmVmOwogCiAvKiBXZWJLaXQyIEJ1bmRsZSB0eXBlcyAq
LwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDcz
MjI0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM2LDYgKzEzNiwyMiBAQCB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkUnVuSW5z
ZWN1cmVDb250CiAgICAgbV9jbGllbnQuZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodG9B
UEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKIH0KIAorYm9vbCBXZWJMb2FkZXJDbGllbnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2VJbkZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSog
ZnJhbWUsIFdlYlByb3RlY3Rpb25TcGFjZSogcHJvdGVjdGlvblNwYWNlKQoreworICAgIGlmICgh
bV9jbGllbnQuY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2NsaWVudC5jYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUp
LCB0b0FQSShwcm90ZWN0aW9uU3BhY2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwordm9p
ZCBXZWJMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJh
bWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIEF1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKHRvQVBJ
KHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgdG9B
UEkobGlzdGVuZXIpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwogdm9pZCBXZWJMb2FkZXJD
bGllbnQ6OmRpZFN0YXJ0UHJvZ3Jlc3MoV2ViUGFnZVByb3h5KiBwYWdlKQogewogICAgIGlmICgh
bV9jbGllbnQuZGlkU3RhcnRQcm9ncmVzcykKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkxv
YWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNs
aWVudC5oCShyZXZpc2lvbiA3MzIyNCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNywxMSBAQCBjbGFzcyBSZXNvdXJjZUVy
cm9yOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEFQSU9iamVjdDsKLWNsYXNzIFdlYlBh
Z2VQcm94eTsKK2NsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CitjbGFzcyBBdXRo
ZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CiBjbGFzcyBXZWJGcmFtZVByb3h5OworY2xhc3Mg
V2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJvdGVjdGlvblNwYWNlOwogCiBjbGFzcyBXZWJMb2Fk
ZXJDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLUGFnZUxvYWRlckNsaWVudD4gewogcHVibGlj
OgpAQCAtNTUsNiArNTgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZW1vdmVGcmFtZUZyb21I
aWVyYXJjaHkoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCopOwogICAg
IHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdl
YkZyYW1lUHJveHkqLCBBUElPYmplY3QqKTsKICAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVu
dEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUElPYmplY3QqKTsKKyAg
ICAKKyAgICBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1l
KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJQcm90ZWN0aW9uU3BhY2UqKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV2ViUGFnZVBy
b3h5KiwgV2ViRnJhbWVQcm94eSosIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqLCBBdXRo
ZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIqKTsKIAogICAgIHZvaWQgZGlkU3RhcnRQcm9ncmVz
cyhXZWJQYWdlUHJveHkqKTsKICAgICB2b2lkIGRpZENoYW5nZVByb2dyZXNzKFdlYlBhZ2VQcm94
eSopOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiA3MzIyNCkK
KysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDYgKzI1LDggQEAKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogCisjaW5jbHVkZSAi
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNs
dWRlICJGaW5kSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUlELmgiCkBAIC01NSw2ICs1
Nyw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJX
ZWJQcm90ZWN0aW9uU3BhY2UuaCIKICNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0
cnkuaD4KQEAgLTE1MjksNCArMTUzMiwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0Zvcndh
cmRDbGVhcigpCiAgICAgbV9iYWNrRm9yd2FyZExpc3QtPmNsZWFyKCk7CiB9CiAKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIGNvcmVQcm90
ZWN0aW9uU3BhY2UsIGJvb2wmIGNhbkF1dGhlbnRpY2F0ZSkKK3sKKyAgICBXZWJGcmFtZVByb3h5
KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgUmVmUHRyPFdlYlBy
b3RlY3Rpb25TcGFjZT4gcHJvdGVjdGlvblNwYWNlID0gV2ViUHJvdGVjdGlvblNwYWNlOjpjcmVh
dGUoY29yZVByb3RlY3Rpb25TcGFjZSk7CisgICAgCisgICAgY2FuQXV0aGVudGljYXRlID0gbV9s
b2FkZXJDbGllbnQuY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUo
dGhpcywgZnJhbWUsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UsIHVp
bnQ2NF90IGNoYWxsZW5nZUlEKQoreworICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2Vz
cygpLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBSZWZQdHI8QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eT4gYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5OjpjcmVhdGUoY29yZUNoYWxsZW5nZSwgY2hhbGxlbmdlSUQsIHRoaXMpOworICAgIAor
ICAgIG1fbG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJh
bWUodGhpcywgZnJhbWUsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmdldCgpLCBhdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS0+bGlzdGVuZXIoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkgKzYxLDEx
IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNs
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogICAgIGNsYXNzIEN1cnNvcjsKICAgICBjbGFz
cyBGbG9hdFJlY3Q7CiAgICAgY2xhc3MgSW50U2l6ZTsKKyAgICBjbGFzcyBQcm90ZWN0aW9uU3Bh
Y2U7CiAgICAgc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzOwogICAgIHN0cnVjdCBXaW5kb3dGZWF0
dXJlczsKIH0KQEAgLTM3Nyw2ICszNzksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdl
QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGNvbXBvc2l0aW5nLCBEcmF3aW5nQXJlYUluZm8m
KTsKICNlbmRpZgogCisgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlSW5GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3Bh
Y2UmLCBib29sJiBjYW5BdXRoZW50aWNhdGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiwgdWludDY0X3QgY2hhbGxlbmdlSUQpOworCiAgICAgUGFnZUNsaWVu
dCogbV9wYWdlQ2xpZW50OwogICAgIFdlYkxvYWRlckNsaWVudCBtX2xvYWRlckNsaWVudDsKICAg
ICBXZWJQb2xpY3lDbGllbnQgbV9wb2xpY3lDbGllbnQ7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiA3MzIyNCkKKysrIFdlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTM1
LDQgKzEzNSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBBY2NlbGVyYXRl
ZCBjb21wc2l0aW5nIG1lc3NhZ2VzLgogICAgIERpZENoYW5nZUFjY2VsZXJhdGVkQ29tcG9zaXRp
bmcoYm9vbCBjb21wb3NpdGluZykgLT4gKFdlYktpdDo6RHJhd2luZ0FyZWFJbmZvIG5ld0RyYXdp
bmdBcmVhKQogI2VuZGlmCisKKyAgICAjIEF1dGhlbnRpY2F0aW9uCisgICAgQ2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViQ29y
ZTo6UHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZSkgLT4gKGJvb2wgY2FuQXV0aGVudGlj
YXRlKQorICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UsIHVpbnQ2NF90
IGNoYWxsZW5nZUlEKQogfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJl
dmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDEwICszNiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
Y2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKK2NsYXNzIEF1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lcjsKIGNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9y
d2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViQ29udGV4
dDsKK2NsYXNzIFdlYkNyZWRlbnRpYWw7CiBjbGFzcyBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVy
UHJveHk7CiBjbGFzcyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJGcmFt
ZVByb3h5OwpAQCAtNDksMTAgKzUyLDE0IEBAIGNsYXNzIFdlYlBhZ2VHcm91cDsKIGNsYXNzIFdl
YlBhZ2VOYW1lc3BhY2U7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcmVmZXJlbmNl
czsKK2NsYXNzIFdlYlByb3RlY3Rpb25TcGFjZTsKIAorV0tfQUREX0FQSV9NQVBQSU5HKFdLQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VSZWYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpCitX
S19BRERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJSZWYsIEF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcikKIFdLX0FERF9BUElfTUFQUElORyhXS0JhY2tG
b3J3YXJkTGlzdEl0ZW1SZWYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0pCiBXS19BRERfQVBJX01B
UFBJTkcoV0tCYWNrRm9yd2FyZExpc3RSZWYsIFdlYkJhY2tGb3J3YXJkTGlzdCkKIFdLX0FERF9B
UElfTUFQUElORyhXS0NvbnRleHRSZWYsIFdlYkNvbnRleHQpCitXS19BRERfQVBJX01BUFBJTkco
V0tDcmVkZW50aWFsUmVmLCBXZWJDcmVkZW50aWFsKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLRG93
bmxvYWRSZWYsIERvd25sb2FkUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tGb3JtU3VibWlz
c2lvbkxpc3RlbmVyUmVmLCBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkpCiBXS19BRERf
QVBJX01BUFBJTkcoV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmLCBXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkpCkBAIC02NSw2ICs3Miw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS1BhZ2VHcm91
cFJlZiwgV2ViUGEKIFdLX0FERF9BUElfTUFQUElORyhXS1BhZ2VOYW1lc3BhY2VSZWYsIFdlYlBh
Z2VOYW1lc3BhY2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQYWdlUmVmLCBXZWJQYWdlUHJveHkp
CiBXS19BRERfQVBJX01BUFBJTkcoV0tQcmVmZXJlbmNlc1JlZiwgV2ViUHJlZmVyZW5jZXMpCitX
S19BRERfQVBJX01BUFBJTkcoV0tQcm90ZWN0aW9uU3BhY2VSZWYsIFdlYlByb3RlY3Rpb25TcGFj
ZSkKIAogLyogRW51bSBjb252ZXJzaW9ucyAqLwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkocmV2aXNpb24g
MCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
IldLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUdldFR5cGVJ
RCgpCit7CisgICAgcmV0dXJuIHRvQVBJKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OkFQ
SVR5cGUpOworfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisgCisjaWZuZGVmIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2Vf
aAorI2RlZmluZSBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKKworI2luY2x1ZGUgPFdlYktp
dDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYK
KworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VHZXRUeXBlSUQo
KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VfaApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRo
ZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25EZWNpc2lv
bkxpc3RlbmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgorCisjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoQXV0aGVu
dGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpBUElUeXBlKTsKK30KKwordm9pZCBXS0F1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lclVzZUNyZWRlbnRpYWwoV0tBdXRoZW50aWNhdGlvbkRlY2lz
aW9uTGlzdGVuZXJSZWYgYXV0aGVudGljYXRpb25MaXN0ZW5lciwgV0tDcmVkZW50aWFsUmVmIGNy
ZWRlbnRpYWwpCit7CisgICAgdG9JbXBsKGF1dGhlbnRpY2F0aW9uTGlzdGVuZXIpLT51c2VDcmVk
ZW50aWFsKHRvSW1wbChjcmVkZW50aWFsKSk7Cit9CisKK3ZvaWQgV0tBdXRoZW50aWNhdGlvbkRl
Y2lzaW9uTGlzdGVuZXJDYW5jZWwoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJSZWYg
YXV0aGVudGljYXRpb25MaXN0ZW5lcikKK3sKKyAgICB0b0ltcGwoYXV0aGVudGljYXRpb25MaXN0
ZW5lciktPmNhbmNlbCgpOworfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRo
ZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJfaAorI2RlZmluZSBXS0F1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lcl9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgor
CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBX
S1R5cGVJRCBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lckdldFR5cGVJRCgpOworCitX
S19FWFBPUlQgdm9pZCBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclVzZUNyZWRlbnRp
YWwoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJSZWYgYXV0aGVudGljYXRpb25MaXN0
ZW5lciwgV0tDcmVkZW50aWFsUmVmIGNyZWRlbnRpYWwpOworV0tfRVhQT1JUIHZvaWQgV0tBdXRo
ZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJDYW5jZWwoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXJSZWYgYXV0aGVudGljYXRpb25MaXN0ZW5lcik7CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJfaCAqLwpJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuY3BwCShyZXZpc2lvbiAwKQor
KysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXS0NyZWRlbnRpYWwuaCIK
KworI2luY2x1ZGUgIldlYkNyZWRlbnRpYWwuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tDcmVkZW50aWFsR2V0VHlwZUlE
KCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2ViQ3JlZGVudGlhbDo6QVBJVHlwZSk7Cit9CkluZGV4
OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuaAkocmV2aXNpb24gMCkKKysrIFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NyZWRlbnRpYWxfaAorI2RlZmluZSBX
S0NyZWRlbnRpYWxfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tD
cmVkZW50aWFsR2V0VHlwZUlEKCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisK
KyNlbmRpZiAvLyBXS0NyZWRlbnRpYWxfaApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJ
KHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDggQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkRmly
c3RWaXN1YWxseU5vbgogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVtb3ZlRnJhbWVGcm9tSGll
cmFyY2h5Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVS
ZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQ
YWdlRGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkUnVuSW5zZWN1cmVDb250ZW50Rm9y
RnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJl
ZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIGJvb2wgKCpXS1Bh
Z2VDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZUNhbGxiYWNrKShX
S1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQcm90ZWN0aW9uU3BhY2VSZWYgcHJv
dGVjdGlvblNwYWNlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldL
UGFnZURpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWVDYWxsYmFjaykoV0tQ
YWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VS
ZWYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAogLy8gUHJvZ3Jlc3Mg
Q2xpZW50CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRTdGFydFByb2dyZXNzQ2FsbGJhY2spKFdL
UGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTk0LDYgKzk2LDggQEAg
c3RydWN0IFdLUGFnZUxvYWRlckNsaWVudCB7CiAgICAgV0tQYWdlRGlkUmVtb3ZlRnJhbWVGcm9t
SGllcmFyY2h5Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZW1vdmVGcmFt
ZUZyb21IaWVyYXJjaHk7CiAgICAgV0tQYWdlRGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZy
YW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50
Rm9yRnJhbWU7CiAgICAgV0tQYWdlRGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWVDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZTsK
KyAgICBXS1BhZ2VDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZUNh
bGxiYWNrICAgICAgICAgIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZy
YW1lOworICAgIFdLUGFnZURpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWVD
YWxsYmFjayAgICAgICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5G
cmFtZTsKIAogICAgIC8vIEZJWE1FOiBNb3ZlIHRvIHByb2dyZXNzIGNsaWVudC4KICAgICBXS1Bh
Z2VEaWRTdGFydFByb2dyZXNzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZFN0YXJ0UHJvZ3Jlc3M7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1Byb3RlY3Rpb25TcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldLUHJvdGVjdGlvblNwYWNlLmgiCisKKyNpbmNs
dWRlICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tQcm90ZWN0aW9uU3BhY2VHZXRUeXBl
SUQoKQoreworICAgIHJldHVybiB0b0FQSShXZWJQcm90ZWN0aW9uU3BhY2U6OkFQSVR5cGUpOwor
fQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5oCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2Uu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tQ
cm90ZWN0aW9uU3BhY2VfaAorI2RlZmluZSBXS1Byb3RlY3Rpb25TcGFjZV9oCisKKyNpbmNsdWRl
IDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1Byb3RlY3Rpb25TcGFjZUdldFR5cGVJRCgp
OworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tQcm90ZWN0
aW9uU3BhY2VfaApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAkocmV2aXNp
b24gNzMyMjQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyMyw2ICszMjMsOCBAQCBRV0tQYWdlOjpRV0tQYWdlKFdLUGFnZU5hbWVz
cGFjZVJlZiBuYW1lCiAgICAgICAgIHF0X3drX2RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSwK
ICAgICAgICAgMCwgLyogZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lICovCiAgICAg
ICAgIDAsIC8qIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lICovCisgICAgICAgIDAsIC8q
IGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lICovCisgICAgICAg
IDAsIC8qIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUgKi8KICAgICAg
ICAgcXRfd2tfZGlkU3RhcnRQcm9ncmVzcywKICAgICAgICAgcXRfd2tfZGlkQ2hhbmdlUHJvZ3Jl
c3MsCiAgICAgICAgIHF0X3drX2RpZEZpbmlzaFByb2dyZXNzLApJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5LmgiCisKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXIuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYkNyZWRlbnRpYWwu
aCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHku
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJ
RCwgV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIDogbV9jb3JlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgLCBtX2NoYWxsZW5nZUlEKGNoYWxsZW5n
ZUlEKQorICAgICwgbV9wYWdlKHBhZ2UpCit7CisgICAgQVNTRVJUKG1fY2hhbGxlbmdlSUQpOwor
ICAgIG1fbGlzdGVuZXIgPSBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OmNyZWF0ZSh0
aGlzKTsKK30KKworQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6fkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkoKQoreworICAgIC8vIElmIGFuIG91dHN0YW5kaW5nIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkgaXMgYmVpbmcgZGVzdHJveWVkIGV2ZW4gdGhvdWdoIGl0IGhhc24n
dCBiZWVuIHJlc3BvbmRlZCB0byB5ZXQsCisgICAgLy8gd2UgY2FuY2VsIGl0IGhlcmUgc28gdGhl
IFdlYlByb2Nlc3MgaXNuJ3Qgd2FpdGluZyBmb3IgYW4gYW5zd2VyIGZvcmV2ZXIuCisgICAgaWYg
KG1fY2hhbGxlbmdlSUQpCisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkNhbmNlbENoYWxsZW5nZShtX2NoYWxsZW5nZUlEKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisKKyAgICBpZiAobV9saXN0ZW5lcikKKyAgICAgICAgbV9saXN0
ZW5lci0+ZGV0YWNoQ2hhbGxlbmdlKCk7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eTo6dXNlQ3JlZGVudGlhbChXZWJDcmVkZW50aWFsKiBjcmVkZW50aWFsKQoreworICAg
IGlmICghbV9jaGFsbGVuZ2VJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFjcmVkZW50
aWFsKQorICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6QXV0aGVudGlj
YXRpb25NYW5hZ2VyOjpDb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKG1fY2hh
bGxlbmdlSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBlbHNlIAorICAgICAgICBtX3BhZ2Ut
PnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpVc2VDcmVk
ZW50aWFsRm9yQ2hhbGxlbmdlKG1fY2hhbGxlbmdlSUQsIGNyZWRlbnRpYWwtPmNvcmUoKSksIG1f
cGFnZS0+cGFnZUlEKCkpOworCisgICAgbV9jaGFsbGVuZ2VJRCA9IDA7Cit9CisKK3ZvaWQgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y2FuY2VsKCkKK3sKKyAgICBpZiAoIW1fY2hhbGxl
bmdlSUQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkNhbmNlbENoYWxsZW5nZShtX2NoYWxsZW5n
ZUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisKKyAgICBtX2NoYWxsZW5nZUlEID0gMDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5X2gKKyNkZWZp
bmUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eV9oCisKKyNpbmNsdWRlICJBUElPYmplY3Qu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworICAgIGNsYXNzIEFy
Z3VtZW50RGVjb2RlcjsKKyAgICBjbGFzcyBDb25uZWN0aW9uOworICAgIGNsYXNzIE1lc3NhZ2VJ
RDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEF1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lcjsKK2NsYXNzIFdlYkNyZWRlbnRpYWw7CitjbGFzcyBXZWJQYWdlUHJveHk7CisK
K2NsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQsIFdlYlBhZ2VQ
cm94eSogcGFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQs
IHBhZ2UpKTsKKyAgICB9CisgICAgCisgICAgfkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHko
KTsKKyAgICAKKyAgICB2b2lkIHVzZUNyZWRlbnRpYWwoV2ViQ3JlZGVudGlhbCopOworICAgIHZv
aWQgY2FuY2VsKCk7CisKKyAgICBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIqIGxpc3Rl
bmVyKCkgY29uc3QgeyByZXR1cm4gbV9saXN0ZW5lci5nZXQoKTsgfQorCitwcml2YXRlOgorICAg
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgV2ViUGFnZVByb3h5KiBwYWdlKTsK
KworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorICAg
IAorICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIG1fY29yZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOworICAgIHVpbnQ2NF90IG1fY2hhbGxlbmdlSUQ7CisgICAgUmVmUHRyPFdl
YlBhZ2VQcm94eT4gbV9wYWdlOworICAgIFJlZlB0cjxBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXI+IG1fbGlzdGVuZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFdlYkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHlfaApJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJDcmVkZW50aWFsLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkKKyAgICA6IG1fY2hhbGxlbmdlUHJveHkoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCit7Cit9
CisKK3ZvaWQgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjp1c2VDcmVkZW50aWFsKFdl
YkNyZWRlbnRpYWwqIGNyZWRlbnRpYWwpCit7CisgICAgaWYgKG1fY2hhbGxlbmdlUHJveHkpCisg
ICAgICAgIG1fY2hhbGxlbmdlUHJveHktPnVzZUNyZWRlbnRpYWwoY3JlZGVudGlhbCk7Cit9CisK
K3ZvaWQgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjpjYW5jZWwoKQoreworICAgIGlm
IChtX2NoYWxsZW5nZVByb3h5KQorICAgICAgICBtX2NoYWxsZW5nZVByb3h5LT5jYW5jZWwoKTsK
K30KKwordm9pZCBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI6OmRldGFjaENoYWxsZW5n
ZSgpCit7CisgICAgbV9jaGFsbGVuZ2VQcm94eSA9IDA7Cit9CisgICAgCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oCShyZXZpc2lv
biAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcl9oCisjZGVmaW5lIEF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcl9oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIK
KworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CitjbGFzcyBXZWJDcmVkZW50aWFsOworCitj
bGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIgOiBwdWJsaWMgQVBJT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUF1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lcjsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lcj4gY3JlYXRlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkq
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIoYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB1c2VDcmVkZW50aWFsKFdlYkNyZWRlbnRpYWwq
KTsKKyAgICB2b2lkIGNhbmNlbCgpOworICAgIAorICAgIHZvaWQgZGV0YWNoQ2hhbGxlbmdlKCk7
CisKK3ByaXZhdGU6CisgICAgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkqIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKKworICAgIHZp
cnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorICAgIAorICAgIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqIG1fY2hhbGxlbmdlUHJveHk7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkF1dGhlbnRpY2F0aW9uRGVjaXNpb25M
aXN0ZW5lcl9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVk
ZW50aWFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlv
bi9XZWJDcmVkZW50aWFsLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYkNyZWRlbnRpYWwuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIFdlYkNyZWRlbnRpYWw6OmNv
cmUoKQoreworICAgIHJldHVybiBtX2NvcmVDcmVkZW50aWFsOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRl
bnRpYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9X
ZWJDcmVkZW50aWFsLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50
aWNhdGlvbi9XZWJDcmVkZW50aWFsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYkNyZWRlbnRpYWxfaAorI2RlZmluZSBXZWJDcmVkZW50aWFs
X2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlh
bC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYkNyZWRlbnRpYWwgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUNyZWRlbnRpYWw7CisKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJDcmVkZW50aWFsPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJDcmVkZW50aWFsKCkpOworICAgIH0KKyAgICAKKyAgICBjb25z
dCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjb3JlKCk7CisKK3ByaXZhdGU6CisgICAgV2ViQ3JlZGVu
dGlhbCgpOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBl
OyB9CisKKyAgICBXZWJDb3JlOjpDcmVkZW50aWFsIG1fY29yZUNyZWRlbnRpYWw7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkNyZWRlbnRpYWxfaApJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0
aW9uU3BhY2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGlj
YXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYlByb3RlY3Rpb25TcGFjZTo6V2ViUHJvdGVjdGlvblNwYWNlKGNv
bnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYgY29yZVByb3RlY3Rpb25TcGFjZSkKKyAgICA6
IG1fY29yZVByb3RlY3Rpb25TcGFjZShjb3JlUHJvdGVjdGlvblNwYWNlKQoreworCit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRp
b24vV2ViUHJvdGVjdGlvblNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUHJvdGVjdGlv
blNwYWNlX2gKKyNkZWZpbmUgV2ViUHJvdGVjdGlvblNwYWNlX2gKKworI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlByb3Rl
Y3Rpb25TcGFjZSA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25z
dCBUeXBlIEFQSVR5cGUgPSBUeXBlUHJvdGVjdGlvblNwYWNlOworCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViUHJvdGVjdGlvblNwYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlv
blNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYlByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgV2ViUHJvdGVjdGlvblNwYWNlKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFj
ZSYpOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9
CisgICAgCisgICAgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlIG1fY29yZVByb3RlY3Rpb25TcGFj
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUHJvdGVjdGlv
blNwYWNlX2gKSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiA3MzIyNCkKKysrIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNiArMjA1LDI3IEBACiAJCTUxMjkzNUQ4MTI4
OEQxOTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjkzNUQ2MTI4OEQxOTQwMEE0QjY5NSAvKiBX
ZWJDb250ZXh0TWVudUl0ZW0uaCAqLzsgfTsKIAkJNTEyOTM1RTMxMjg4RDk3ODAwQTRCNjk1IC8q
IEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjkzNUUxMTI4OEQ5NzgwMEE0QjY5NSAv
KiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi87IH07CiAJCTUxMjkz
NUU0MTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyOTM1
RTIxMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
LmggKi87IH07CisJCTUxMkY1ODhBMTJBODgzNjYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEyRjU4ODcxMkE4ODM2NjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgKi87
IH07CisJCTUxMkY1ODhCMTJBODgzNjYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1ODg4
MTJBODgzNjYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCAqLzsgfTsKKwkJNTEy
RjU4OEMxMkE4ODM2NjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5p
biBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRjU4
ODkxMkE4ODM2NjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiAq
LzsgfTsKKwkJNTEyRjU4OTYxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEyRjU4OEUxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuY3BwICovOyB9OworCQk1MTJGNTg5NzEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEyRjU4OEYxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkuaCAqLzsgfTsKKwkJNTEyRjU4OTgxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTJGNTg5MDEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyLmNwcCAqLzsgfTsKKwkJNTEyRjU4OTkxMkE4ODM4ODAwNjI5NTMw
IC8qIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRjU4OTExMkE4ODM4ODAwNjI5NTMwIC8qIEF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oICovOyB9OworCQk1MTJGNTg5QTEyQTg4Mzg4
MDA2Mjk1MzAgLyogV2ViQ3JlZGVudGlhbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJGNTg5MjEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViQ3JlZGVu
dGlhbC5jcHAgKi87IH07CisJCTUxMkY1ODlCMTJBODgzODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50
aWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJG
NTg5MzEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViQ3JlZGVudGlhbC5oICovOyB9OworCQk1MTJGNTg5
QzEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViUHJvdGVjdGlvblNwYWNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1ODk0MTJBODgzODgwMDYyOTUz
MCAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuY3BwICovOyB9OworCQk1MTJGNTg5RDEyQTg4Mzg4MDA2
Mjk1MzAgLyogV2ViUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJGNTg5NTEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViUHJvdGVj
dGlvblNwYWNlLmggKi87IH07CisJCTUxMkY1OEEyMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRoZW50
aWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRjU4QTAxMkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhl
bnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTUxMkY1OEEzMTJB
ODgzQUQwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRjU4QTExMkE4ODNBRDAw
NjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggKi87IH07CisJCTUxMkY1
OEY1MTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1OEVEMTJBODhB
NTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCAqLzsgfTsKKwkJNTEy
RjU4RjYxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1OEVFMTJBODhB
NTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi87IH07CisJCTUxMkY1
OEY3MTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJGNThF
RjEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3Bw
ICovOyB9OworCQk1MTJGNThGODEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkRl
Y2lzaW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMkY1OEYwMTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lci5oICovOyB9OworCQk1MTJGNThGOTEyQTg4QTU0MDA2Mjk1MzAgLyogV0tDcmVk
ZW50aWFsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMkY1OEYxMTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuY3BwICovOyB9OworCQk1
MTJGNThGQTEyQTg4QTU0MDA2Mjk1MzAgLyogV0tDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJGNThGMjEyQTg4QTU0MDA2Mjk1MzAg
LyogV0tDcmVkZW50aWFsLmggKi87IH07CisJCTUxMkY1OEZCMTJBODhBNTQwMDYyOTUzMCAvKiBX
S1Byb3RlY3Rpb25TcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTJGNThGMzEyQTg4QTU0MDA2Mjk1MzAgLyogV0tQcm90ZWN0aW9uU3BhY2Uu
Y3BwICovOyB9OworCQk1MTJGNThGQzEyQTg4QTU0MDA2Mjk1MzAgLyogV0tQcm90ZWN0aW9uU3Bh
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1
OEY0MTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rpb25TcGFjZS5oICovOyB9OwogCQk1MTUz
NTY5QzEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTM1NjlBMTI5MUIx
RDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwICovOyB9OwogCQk1MTUz
NTY5RDEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTUzNTY5QjEyOTFCMUQy
MDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTUxNTc4Qjgz
MTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyogV2ViRGF0YS5o
ICovOyB9OwpAQCAtODA3LDYgKzgyOCwyNyBAQAogCQk1MTI5MzVENjEyODhEMTk0MDBBNEI2OTUg
LyogV2ViQ29udGV4dE1lbnVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkNvbnRleHRNZW51SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTI5
MzVFMTEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGll
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5k
bGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTI5MzVFMjEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1l
bnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5k
bGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTEyRjU4ODcxMkE4ODM2NjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRoZW50aWNhdGlvbk1hbmFnZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJGNTg4ODEyQTg4MzY2MDA2Mjk1
MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEF1dGhlbnRpY2F0aW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTJGNTg4OTEyQTg4MzY2MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uTWFuYWdlci5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4OEUxMkE4ODM4
ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1ODhGMTJBODgzODgwMDYyOTUz
MCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4OTAxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MTJGNTg5MTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dGhl
bnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTJGNTg5MjEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViQ3JlZGVudGlhbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDcmVkZW50aWFsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4OTMxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYkNyZWRl
bnRpYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ3JlZGVudGlhbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJGNTg5NDEyQTg4Mzg4MDA2Mjk1MzAg
LyogV2ViUHJvdGVjdGlvblNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlByb3RlY3Rpb25TcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxMkY1ODk1MTJBODgzODgwMDYyOTUzMCAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvdGVjdGlvblNwYWNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1OEEwMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRo
ZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRjU4QTExMkE4ODNBRDAwNjI5NTMw
IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxMkY1OEVEMTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTJGNThFRTEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1OEVGMTJBODhBNTQw
MDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1OEYwMTJBODhBNTQw
MDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJGNThGMTEyQTg4QTU0MDA2Mjk1MzAg
LyogV0tDcmVkZW50aWFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdLQ3JlZGVudGlhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1OEYy
MTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tDcmVkZW50aWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxMkY1OEYzMTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rpb25TcGFjZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1Byb3RlY3Rpb25TcGFjZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkY1OEY0MTJBODhBNTQwMDYyOTUzMCAvKiBX
S1Byb3RlY3Rpb25TcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1By
b3RlY3Rpb25TcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTUzNTY5QTEy
OTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNTM1NjlCMTI5MUIxRDIwMDA3NDlEQyAv
KiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE2MDYsNiArMTY0OCwzMSBAQAogCQkJdGFiV2lkdGggPSA4OwogCQkJdXNlc1RhYnMg
PSAwOwogCQl9OworCQk1MTJGNTg4NjEyQTg4MzQ3MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb24g
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUxMkY1ODg3
MTJBODgzNjYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwICovLAorCQkJCTUx
MkY1ODg4MTJBODgzNjYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCAqLywKKwkJ
CQk1MTJGNTg4OTEyQTg4MzY2MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLm1lc3Nh
Z2VzLmluICovLAorCQkJKTsKKwkJCXBhdGggPSBBdXRoZW50aWNhdGlvbjsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTUxMkY1ODhEMTJBODgzNkYwMDYyOTUzMCAvKiBBdXRo
ZW50aWNhdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJNTEyRjU4OEUxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuY3BwICovLAorCQkJCTUxMkY1ODhGMTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5LmggKi8sCisJCQkJNTEyRjU4OTAxMkE4ODM4ODAwNjI5NTMwIC8qIEF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAgKi8sCisJCQkJNTEyRjU4OTExMkE4ODM4
ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oICovLAorCQkJCTUx
MkY1ODkyMTJBODgzODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmNwcCAqLywKKwkJCQk1MTJG
NTg5MzEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViQ3JlZGVudGlhbC5oICovLAorCQkJCTUxMkY1ODk0
MTJBODgzODgwMDYyOTUzMCAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuY3BwICovLAorCQkJCTUxMkY1
ODk1MTJBODgzODgwMDYyOTUzMCAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuaCAqLywKKwkJCSk7CisJ
CQlwYXRoID0gQXV0aGVudGljYXRpb247CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogCQk1MUIzMDA0RDEyNTI5Q0Y1MDAwQjVDQTAgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTYxOSw2ICsxNjg2LDcgQEAKIAkJQkMwMzJENUMx
MEY0MzZENTAwNThDMTVBIC8qIFdlYlByb2Nlc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTUxMkY1ODg2MTJBODgzNDcwMDYyOTUzMCAvKiBBdXRoZW50
aWNhdGlvbiAqLywKIAkJCQkxQTYxNjE0QzEyNzc5OEI1MDAzQUNEODYgLyogRG93bmxvYWRzICov
LAogCQkJCUJDMjA0RURGMTFDODNFNzIwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZSAqLywKIAkJ
CQkxQTZGQTAxQzExRTE1MjYzMDBEQjEzNzEgLyogbWFjICovLApAQCAtMTcwMyw2ICsxNzcxLDcg
QEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkMwMzJEQzQxMEY0
Mzg3QzAwNThDMTVBIC8qIEFQSSAqLywKKwkJCQk1MTJGNTg4RDEyQTg4MzZGMDA2Mjk1MzAgLyog
QXV0aGVudGljYXRpb24gKi8sCiAJCQkJNTFCMzAwNEQxMjUyOUNGNTAwMEI1Q0EwIC8qIGNmICov
LAogCQkJCTFBQjdENEM3MTI4OEFBOUEwMENGRDA4QyAvKiBEb3dubG9hZHMgKi8sCiAJCQkJQkMx
MTFCMTgxMTJGNUZCNDAwMzM3QkFCIC8qIExhdW5jaGVyICovLApAQCAtMTgwMiw2ICsxODcxLDEw
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlCQ0I2MzQ3NzExNkJGMTA2MDA2MDMyMTUgLyogV2Vi
S2l0Mi5oICovLAogCQkJCUJDRERCMzJDMTI0RUMyRTEwMDQ4RDEzQyAvKiBXS0FQSUNhc3QuaCAq
LywKKwkJCQk1MTJGNThFRDEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5jcHAgKi8sCisJCQkJNTEyRjU4RUUxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaCAqLywKKwkJCQk1MTJGNThFRjEyQTg4QTU0MDA2Mjk1MzAgLyogV0tB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwICovLAorCQkJCTUxMkY1OEYwMTJBODhB
NTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oICovLAogCQkJ
CUJDNjQ2QzE2MTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdC5jcHAgKi8sCiAJ
CQkJQkM2NDZDMTcxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0LmggKi8sCiAJ
CQkJQkM2NDZDMTgxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAg
Ki8sCkBAIC0xODA5LDYgKzE4ODIsOCBAQAogCQkJCUJDQjlFMjRBMTEyMEUxNUMwMEExMzdFMCAv
KiBXS0NvbnRleHQuY3BwICovLAogCQkJCUJDQjlFMjQ5MTEyMEUxNUMwMEExMzdFMCAvKiBXS0Nv
bnRleHQuaCAqLywKIAkJCQlCQ0M5MzhFMDExODBERTQ0MDA4NUU1RkUgLyogV0tDb250ZXh0UHJp
dmF0ZS5oICovLAorCQkJCTUxMkY1OEYxMTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwu
Y3BwICovLAorCQkJCTUxMkY1OEYyMTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuaCAq
LywKIAkJCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5jcHAgKi8sCiAJ
CQkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCAqLywKIAkJCQlCQ0U0
Njk1NzEyMTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmNwcCAqLywK
QEAgLTE4MzIsNiArMTkwNyw4IEBACiAJCQkJQkNENTk3Q0YxMTJCNTZBQzAwRUM4QzIzIC8qIFdL
UHJlZmVyZW5jZXMuY3BwICovLAogCQkJCUJDRDU5N0NFMTEyQjU2QUMwMEVDOEMyMyAvKiBXS1By
ZWZlcmVuY2VzLmggKi8sCiAJCQkJNzYyQjc0ODQxMjBCQkEyRDAwODE5MzM5IC8qIFdLUHJlZmVy
ZW5jZXNQcml2YXRlLmggKi8sCisJCQkJNTEyRjU4RjMxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJv
dGVjdGlvblNwYWNlLmNwcCAqLywKKwkJCQk1MTJGNThGNDEyQTg4QTU0MDA2Mjk1MzAgLyogV0tQ
cm90ZWN0aW9uU3BhY2UuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQzsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0yMTg2LDYgKzIyNjMsOCBAQAogCQlDMENFNzI5RDEyNDdFNzFEMDBC
QzBFQzQgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk1MTJGNThBMDEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRp
b25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQk1MTJGNThBMTEyQTg4M0FEMDA2
Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQkxQUI3RDYx
NzEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CiAJCQkJMUFCN0Q2MTgxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlcy5o
ICovLAogCQkJCTFBMkQ4NDM3MTI3RjY1RDUwMDFFQjk2MiAvKiBOUE9iamVjdE1lc3NhZ2VSZWNl
aXZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC0yNTE5LDYgKzI1OTgsMTYgQEAKIAkJCQlC
QzdCNjMzNzEyQTQ1QUJBMDBEMTc0QTQgLyogV0tQYWdlR3JvdXAuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDN0I2MzNEMTJBNDVEMTIwMEQxNzRBNCAvKiBXS0J1bmRsZVBhZ2VHcm91cC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzdGNjIzQjgxMkE1N0I2MjAwRTNGREY2IC8qIFdLRmluZE9wdGlvbnMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUxMkY1ODhCMTJBODgzNjYwMDYyOTUzMCAvKiBBdXRoZW50
aWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMkY1ODk3MTJBODgzODgwMDYy
OTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTJGNTg5OTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTJGNTg5QjEyQTg4Mzg4MDA2Mjk1MzAgLyogV2Vi
Q3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEyRjU4OUQxMkE4ODM4ODAwNjI5NTMw
IC8qIFdlYlByb3RlY3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEyRjU4QTMxMkE4
ODNBRDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1MTJGNThGNjEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEyRjU4RjgxMkE4OEE1NDAwNjI5NTMwIC8q
IFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MTJGNThGQTEyQTg4QTU0MDA2Mjk1MzAgLyogV0tDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MTJGNThGQzEyQTg4QTU0MDA2Mjk1MzAgLyogV0tQcm90ZWN0aW9uU3BhY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjYyNCw2ICsyNzEzLDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQk4REMyRUY1MzA0ODZBNjk0MDA5OEIyMTYgLyog
SW5mb1BsaXN0LnN0cmluZ3MgaW4gUmVzb3VyY2VzICovLAorCQkJCTUxMkY1ODhDMTJBODgzNjYw
MDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gaW4gUmVzb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMjkxNCw2ICszMDA0LDE2IEBACiAJCQkJMUFBNDc5MjMxMkE1OUZEOTAwODIzNkMz
IC8qIFBsdWdpblByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzg0RUIxODEyQTcx
MDBDMDA4M0YyREEgLyogV2ViUHJlZmVyZW5jZXNNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlC
QzJERkJBMzEyQTc2MUE1MDBFNzMyQTMgLyogV2ViUHJlZmVyZW5jZXNDRi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MTJGNTg4QTEyQTg4MzY2MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5h
Z2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMkY1ODk2MTJBODgzODgwMDYyOTUzMCAvKiBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMkY1
ODk4MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTEyRjU4OUExMkE4ODM4ODAwNjI5NTMwIC8qIFdlYkNyZWRl
bnRpYWwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEyRjU4OUMxMkE4ODM4ODAwNjI5NTMwIC8q
IFdlYlByb3RlY3Rpb25TcGFjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTJGNThBMjEyQTg4
M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTUxMkY1OEY1MTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMkY1OEY3MTJBODhBNTQw
MDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MTJGNThGOTEyQTg4QTU0MDA2Mjk1MzAgLyogV0tDcmVkZW50aWFsLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTUxMkY1OEZCMTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rp
b25TcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDczMjI0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJEb3du
bG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlTWVzc2FnZUtpbmRzLmgiCkBAIC00NTgsNiArNDU5LDExIEBAIHZvaWQgV2Vi
UHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzQXV0aGVudGljYXRp
b25NYW5hZ2VyPigpKSB7CisgICAgICAgIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6c2hhcmVkKCku
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNz
YWdlQ2xhc3NJbmplY3RlZEJ1bmRsZT4oKSkgewogICAgICAgICBpZiAoIW1faW5qZWN0ZWRCdW5k
bGUpCiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1dlYlByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAkocmV2
aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKKworI2luY2x1ZGUgIk1lc3Nh
Z2VJRC5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldl
YkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9u
Q2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdWludDY0X3QgZ2VuZXJh
dGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUlEKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgdW5p
cXVlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJRCA9IDE7CisgICAgcmV0dXJuIHVuaXF1ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlSUQrKzsKK30KKworQXV0aGVudGljYXRpb25NYW5hZ2VyJiBBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OnNoYXJlZCgpCit7CisgICAgc3RhdGljIEF1dGhlbnRpY2F0aW9u
TWFuYWdlciYgbWFuYWdlciA9ICpuZXcgQXV0aGVudGljYXRpb25NYW5hZ2VyOworICAgIHJldHVy
biBtYW5hZ2VyOworfQorCitBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkF1dGhlbnRpY2F0aW9uTWFu
YWdlcigpCit7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQg
bWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKK3sKKyAgICBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdl
SUQsIGFyZ3VtZW50cyk7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCit7Cisg
ICAgQVNTRVJUKGZyYW1lKTsKKyAgICBBU1NFUlQoZnJhbWUtPnBhZ2UoKSk7CisKKyAgICB1aW50
NjRfdCBpZCA9IGdlbmVyYXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJRCgpOworICAgIG1fY2hh
bGxlbmdlcy5zZXQoaWQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsgICAgCisgICAgCisgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShmcmFtZS0+ZnJhbWVJRCgp
LCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgaWQpLCBmcmFtZS0+cGFnZSgpLT5wYWdlSUQoKSk7
Cit9CisKK3ZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWFsRm9yQ2hhbGxl
bmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKQoreworICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5n
ZSA9IG1fY2hhbGxlbmdlcy50YWtlKGNoYWxsZW5nZUlEKTsKKyAgICBBU1NFUlQoIWNoYWxsZW5n
ZS5pc051bGwoKSk7CisgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGll
bnQgPSBjaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKKyAgICBpZiAoIWNvcmVDbGll
bnQpCisgICAgICAgIHJldHVybjsKKworICAgIGNvcmVDbGllbnQtPnJlY2VpdmVkQ3JlZGVudGlh
bChjaGFsbGVuZ2UsIGNyZWRlbnRpYWwpOworfQorCit2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6Y29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVu
Z2VJRCkKK3sKKyAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2Ug
PSBtX2NoYWxsZW5nZXMudGFrZShjaGFsbGVuZ2VJRCk7CisgICAgQVNTRVJUKCFjaGFsbGVuZ2Uu
aXNOdWxsKCkpOworICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50KiBjb3JlQ2xpZW50
ID0gY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7CisgICAgaWYgKCFjb3JlQ2xpZW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBjb3JlQ2xpZW50LT5yZWNlaXZlZFJlcXVlc3RUb0Nv
bnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY2hhbGxlbmdlKTsKK30KKwordm9pZCBBdXRoZW50aWNh
dGlvbk1hbmFnZXI6OmNhbmNlbENoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCkKK3sKKyAg
ICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UgPSBtX2NoYWxsZW5n
ZXMudGFrZShjaGFsbGVuZ2VJRCk7CisgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwor
ICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50KiBjb3JlQ2xpZW50ID0gY2hhbGxlbmdl
LmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7CisgICAgaWYgKCFjb3JlQ2xpZW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBjb3JlQ2xpZW50LT5yZWNlaXZlZENhbmNlbGxhdGlvbihjaGFsbGVuZ2Up
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1dlYlByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEF1dGhlbnRpY2F0aW9uTWFuYWdlcl9oCisjZGVmaW5lIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcl9oCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgQ29yZUlQ
QyB7CisgICAgY2xhc3MgQXJndW1lbnREZWNvZGVyOworICAgIGNsYXNzIENvbm5lY3Rpb247Cisg
ICAgY2xhc3MgTWVzc2FnZUlEOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3Mg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAgY2xhc3MgQ3JlZGVudGlhbDsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZyYW1lOworCitjbGFzcyBBdXRoZW50aWNhdGlv
bk1hbmFnZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0aW9uTWFuYWdl
cik7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgQXV0aGVudGljYXRpb25NYW5hZ2VyJiBzaGFyZWQo
KTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisKKyAgICB2b2lk
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJGcmFtZSosIGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisKKyAgICB2b2lkIHVzZUNyZWRlbnRpYWxG
b3JDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRp
YWwmKTsKKyAgICB2b2lkIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWlu
dDY0X3QgY2hhbGxlbmdlSUQpOworICAgIHZvaWQgY2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNo
YWxsZW5nZUlEKTsKKworcHJpdmF0ZToKKyAgICBBdXRoZW50aWNhdGlvbk1hbmFnZXIoKTsKKwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
Kik7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlPiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hcDsKKyAgICBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZU1hcCBtX2NoYWxsZW5nZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEF1dGhlbnRpY2F0aW9uTWFuYWdlcl9oCkluZGV4OiBXZWJLaXQyL1dl
YlByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlBy
b2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IEF1dGhlbnRpY2F0aW9uTWFuYWdlciB7CisgICAgdm9p
ZCBVc2VDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlELCBXZWJDb3Jl
OjpDcmVkZW50aWFsIGNyZWRlbnRpYWwpOworICAgIHZvaWQgQ29udGludWVXaXRob3V0Q3JlZGVu
dGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CisgICAgdm9pZCBDYW5jZWxD
aGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpOworfQpJbmRleDogV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCShyZXZpc2lvbiA3MzIyNCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcg
QEAKICNkZWZpbmUgRElTQUJMRV9OT1RfSU1QTEVNRU5URURfV0FSTklOR1MgMQogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIK
ICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCkBAIC0x
NTUsOSArMTU2LDE2IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFVzZUNyZWQK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICAvLyBGSVhNRTogQXV0aGVudGljYXRpb24gaXMgYSBwZXItcmVzb3VyY2UgY29uY2VwdCwgYnV0
IHdlIGRvbid0IGRvIHBlci1yZXNvdXJjZSBoYW5kbGluZyBpbiB0aGUgVUlQcm9jZXNzIGF0IHRo
ZSBBUEkgbGV2ZWwgcXVpdGUgeWV0LgorICAgIC8vIE9uY2Ugd2UgZG8sIHdlIG1pZ2h0IG5lZWQg
dG8gbWFrZSBzdXJlIGF1dGhlbnRpY2F0aW9uIGZpdHMgd2l0aCBvdXIgc29sdXRpb24uCisKKyAg
ICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghd2ViUGFnZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpzaGFyZWQoKS5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV9mcmFtZSwgY2hhbGxlbmdlKTsKIH0K
IAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSAgICAKQEAgLTE2NiwxMCArMTc0LDIwIEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2EKIH0KIAogI2lmIFVTRShQ
Uk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi1ib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKQorYm9vbCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYg
cHJvdGVjdGlvblNwYWNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIC8vIEZJWE1FOiBBdXRoZW50aWNhdGlvbiBpcyBhIHBlci1yZXNvdXJjZSBjb25j
ZXB0LCBidXQgd2UgZG9uJ3QgZG8gcGVyLXJlc291cmNlIGhhbmRsaW5nIGluIHRoZSBVSVByb2Nl
c3MgYXQgdGhlIEFQSSBsZXZlbCBxdWl0ZSB5ZXQuCisgICAgLy8gT25jZSB3ZSBkbywgd2UgbWln
aHQgbmVlZCB0byBtYWtlIHN1cmUgYXV0aGVudGljYXRpb24gZml0cyB3aXRoIG91ciBzb2x1dGlv
bi4KKyAgICAKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlm
ICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICBib29sIGNh
bkF1dGhlbnRpY2F0ZTsKKyAgICBpZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgcHJvdGVjdGlvblNwYWNlKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWU6OlJlcGx5KGNh
bkF1dGhlbnRpY2F0ZSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJu
IGNhbkF1dGhlbnRpY2F0ZTsKIH0KICNlbmRpZgogCkluZGV4OiBXZWJLaXQyL3dpbi9XZWJLaXQy
LnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkocmV2aXNp
b24gNzMyMjQpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTA4Nyw2ICsxMDg3LDIyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbHRlcgorCQkJ
CU5hbWU9IkF1dGhlbnRpY2F0aW9uIgorCQkJCT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXFdlYlByb2Nlc3NcQXV0aGVudGljYXRpb25cQXV0aGVudGljYXRpb25NYW5hZ2VyLmNw
cCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFdlYlByb2Nlc3NcQXV0aGVudGljYXRpb25cQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCisJCQkJ
CT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9j
ZXNzXEF1dGhlbnRpY2F0aW9uXEF1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiIKKwkJ
CQkJPgorCQkJCTwvRmlsZT4KKwkJCTwvRmlsdGVyPgorCQkJPEZpbHRlcgogCQkJCU5hbWU9Ildl
YkNvcmVTdXBwb3J0IgogCQkJCT4KIAkJCQk8RmlsZQpAQCAtMjAxNyw2ICsyMDMzLDIyIEBACiAJ
CQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
VUlQcm9jZXNzXEFQSVxDXFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIgorCQkJCQkJPgor
CQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vz
c1xBUElcQ1xXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCisJCQkJCQk+CisJCQkJCTwvRmls
ZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEFQSVxDXFdL
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxl
PgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgor
CQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tCYWNr
Rm9yd2FyZExpc3QuY3BwIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CkBAIC0yMDUzLDYgKzIwODUs
MTQgQEAKIAkJCQkJCT4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tDcmVkZW50aWFsLmNwcCIKKwkJCQkJCT4KKwkJCQkJ
PC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJ
XENcV0tDcmVkZW50aWFsLmgiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEFQSVxDXFdLRG93bmxvYWQuY3BwIgogCQkJ
CQkJPgogCQkJCQk8L0ZpbGU+CkBAIC0yMTQ0LDYgKzIxODQsMTQgQEAKIAkJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cVUlQcm9jZXNzXEFQSVxDXFdLUHJlZmVyZW5jZXNQcml2YXRlLmgiCiAJCQkJCQk+
CiAJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9j
ZXNzXEFQSVxDXFdLUHJvdGVjdGlvblNwYWNlLmNwcCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgor
CQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tQcm90
ZWN0aW9uU3BhY2UuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgogCQkJCQk8RmlsdGVyCiAJCQkJ
CQlOYW1lPSJ3aW4iCiAJCQkJCQk+CkBAIC0yMTgzLDYgKzIyMzEsNDIgQEAKIAkJCQk8L0ZpbHRl
cj4KIAkJCTwvRmlsdGVyPgogCQkJPEZpbHRlcgorCQkJCU5hbWU9IkF1dGhlbnRpY2F0aW9uIgor
CQkJCT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBdXRoZW50
aWNhdGlvblxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBdXRoZW50
aWNhdGlvblxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQXV0aGVudGlj
YXRpb25cQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBdXRoZW50
aWNhdGlvblxBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBdXRoZW50
aWNhdGlvblxXZWJDcmVkZW50aWFsLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBdXRoZW50aWNhdGlvblxXZWJDcmVk
ZW50aWFsLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxVSVByb2Nlc3NcQXV0aGVudGljYXRpb25cV2ViUHJvdGVjdGlvblNwYWNlLmNwcCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJ
UHJvY2Vzc1xBdXRoZW50aWNhdGlvblxXZWJQcm90ZWN0aW9uU3BhY2UuaCIKKwkJCQkJPgorCQkJ
CTwvRmlsZT4KKwkJCTwvRmlsdGVyPgorCQkJPEZpbHRlcgogCQkJCU5hbWU9ImNmIgogCQkJCT4K
IAkJCQk8RmlsZQpAQCAtMjU4Myw2ICsyNjY3LDE0IEBACiAJCQlOYW1lPSJEZXJpdmVkIFNvdXJj
ZXMiCiAJCQk+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIp
XG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xBdXRoZW50aWNhdGlvbk1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0MkNvbW1vbi52
c3Byb3BzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDJDb21tb24udnNwcm9wcwko
cmV2aXNpb24gNzMyMjQpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyQ29tbW9uLnZzcHJvcHMJKHdv
cmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBACiAJPgogCTxUb29sCiAJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoUHJvamVj
dERpcilcLi5cUGxhdGZvcm0mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxQbGF0Zm9ybVxD
b3JlSVBDJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cUGx1Z2luUHJvY2VzcyZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpXC4uXFNoYXJlZCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFNoYXJlZFx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWRcQVBJXGMmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWRcQVBJXGNcY2YmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKVwuLlxTaGFyZWRcQVBJXGNcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilc
Li5cU2hhcmVkXENvcmVJUENTdXBwb3J0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQ
cm9jZXNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXEFQSVxDJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXEFQSVxDXHdpbiZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xBUElcY3BwJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cilcLi5cVUlQcm9jZXNzXEFQSVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVBy
b2Nlc3NcRG93bmxvYWRzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXExh
dW5jaGVyJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXFBsdWdpbnMmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcilcLi5cV2ViUHJvY2VzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlBy
b2Nlc3NcV2ViQ29yZVN1cHBvcnQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9j
ZXNzXFdlYkNvcmVTdXBwb3J0XHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlBy
b2Nlc3NcV2ViUGFnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcV2Vi
UGFnZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXEluamVjdGVk
QnVuZGxlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1
bmRsZVxBUElcYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcSW5qZWN0
ZWRCdW5kbGVcRE9NJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xJbmpl
Y3RlZEJ1bmRsZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXFBs
dWdpbnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXFBsdWdpbnNcTmV0
c2NhcGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXHdpbiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcRG93bmxvYWRzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xEb3dubG9hZHNcY2YmcXVvdDs7JnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlcyZxdW90OzsmcXVv
dDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERp
cilcSW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNs
dWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXHByaXZhdGUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZSZxdW90Ozsm
cXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90Ozsm
cXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3Jl
JnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OyIKKwkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz0iJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxQbGF0Zm9ybSZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpXC4uXFBsYXRmb3JtXENvcmVJUEMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxQbHVn
aW5Qcm9jZXNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cU2hhcmVkJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcilcLi5cU2hhcmVkXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFNoYXJlZFxBUElcYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFNoYXJlZFxBUElcY1xj
ZiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFNoYXJlZFxBUElcY1x3aW4mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWRcQ29yZUlQQ1N1cHBvcnQmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKVwuLlxVSVByb2Nlc3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVBy
b2Nlc3NcQVBJXEMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcQVBJXENc
d2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXEFQSVxjcHAmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcQVBJXHdpbiZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpXC4uXFVJUHJvY2Vzc1xBdXRoZW50aWNhdGlvbiZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpXC4uXFVJUHJvY2Vzc1xEb3dubG9hZHMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxVSVByb2Nlc3NcTGF1bmNoZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nl
c3NcUGx1Z2lucyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1x3aW4mcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcilcLi5cV2ViUHJvY2Vzc1xXZWJDb3JlU3VwcG9ydCZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpXC4uXFdlYlByb2Nlc3NcV2ViQ29yZVN1cHBvcnRcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcilcLi5cV2ViUHJvY2Vzc1xXZWJQYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5c
V2ViUHJvY2Vzc1xXZWJQYWdlXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlBy
b2Nlc3NcSW5qZWN0ZWRCdW5kbGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9j
ZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2Vi
UHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxET00mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxX
ZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFdlYlByb2Nlc3NcUGx1Z2lucyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nl
c3NcUGx1Z2luc1xOZXRzY2FwZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nl
c3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xBdXRoZW50aWNh
dGlvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcRG93bmxvYWRzJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xEb3dubG9hZHNcY2YmcXVvdDs7
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
cyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdl
YktpdE91dHB1dERpcilcSW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRl
XHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVccHRocmVh
ZHMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcSmF2YVNjcmlwdENvcmUm
cXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0
Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxKYXZhU2NyaXB0
Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxwcml2YXRlXEph
dmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXElu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OyIKIAkJUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM9Il9VU1JETEw7V0VCS0lUX0VYUE9SVFM7RlJBTUVXT1JLX05BTUU9V2ViS2l0O0JV
SUxESU5HX1dFQktJVCIKIAkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCiAJCVByZWNvbXBpbGVk
SGVhZGVyVGhyb3VnaD0iV2ViS2l0MlByZWZpeC5oIgpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNzMyMjYp
CisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBA
QAorMjAxMC0xMi0wMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR3JvdW5kd29yayBmb3Ig
PHJkYXI6Ly9wcm9ibGVtLzc2NjA3MzM+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTAxOTEKKyAgICAgICAgV2ViS2l0MiBBdXRoZW50aWNhdGlvbiBTdXBwb3J0
CisKKyAgICAgICAgS2VlcCB0aGVzZSBidWlsZHMgd29ya2luZzoKKyAgICAgICAgKiBNaW5pQnJv
d3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIgYXdha2VGcm9tTmliXSk6CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Omlu
aXRpYWxpemUpOgorCiAyMDEwLTEyLTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdl
YktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJv
bGxlci5tCShyZXZpc2lvbiA3MzIyNCkKKysrIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9C
cm93c2VyV2luZG93Q29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC01NTQsNiArNTU0LDgg
QEAgLSAodm9pZClhd2FrZUZyb21OaWIKICAgICAgICAgZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFy
Y2h5LAogICAgICAgICBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUsCiAgICAgICAg
IGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lLAorICAgICAgICAwLCAvLyBjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZQorICAgICAgICAwLCAvLyBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lCiAgICAgICAgIGRpZFN0YXJ0UHJvZ3Jl
c3MsCiAgICAgICAgIGRpZENoYW5nZVByb2dyZXNzLAogICAgICAgICBkaWRGaW5pc2hQcm9ncmVz
cywKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiA3MzIyNCkKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcsNiArMjU3LDggQEAgdm9p
ZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYwogICAgICAgICAwLCAvLyBkaWRS
ZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkKICAgICAgICAgMCwgLy8gZGlkRGlzcGxheUluc2VjdXJl
Q29udGVudEZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZy
YW1lCisgICAgICAgIDAsIC8vIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJ
bkZyYW1lCisgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUlu
RnJhbWUKICAgICAgICAgMCwgLy8gZGlkU3RhcnRQcm9ncmVzcwogICAgICAgICAwLCAvLyBkaWRD
aGFuZ2VQcm9ncmVzcwogICAgICAgICAwLCAvLyBkaWRGaW5pc2hQcm9ncmVzcwo=
</data>
<flag name="review"
          id="66317"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="66318"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75962</attachid>
            <date>2010-12-08 14:24:50 -0800</date>
            <delta_ts>2010-12-08 17:41:48 -0800</delta_ts>
            <desc>Stage 2 - Fill out necessary API and cross-process encoding</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>44726</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzU0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTAtMTItMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NjYwNzMzPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUwMTkxCisgICAgICAgIFdlYktpdDIgQXV0aGVudGljYXRpb24gU3VwcG9ydAor
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisKIDIwMTAtMTItMDggIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNzM1NDEpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNiArMTM3LDcgQEAgX19aTjNKU0M4QmluZGluZ3M4SW5z
dGFuY2UxNm5ld1J1bnRpbWVPYgogX19aTjNXVEYxMFN0cmluZ0ltcGxjdlA4TlNTdHJpbmdFdgog
X19aTjNXVEY2U3RyaW5nQzFFUDhOU1N0cmluZwogX19aTjNXVEY2U3RyaW5nQzFFUEsxMF9fQ0ZT
dHJpbmcKK19fWk43V2ViQ29yZTEwQ3JlZGVudGlhbEMxRVJLTjNXVEY2U3RyaW5nRVM0X05TXzIx
Q3JlZGVudGlhbFBlcnNpc3RlbmNlRQogX19aTjdXZWJDb3JlMTBDcmVkZW50aWFsQzFFdgogX19a
TjdXZWJDb3JlMTBKU0RvY3VtZW50NnNfaW5mb0UKIF9fWk43V2ViQ29yZTEwTW91c2VFdmVudEMx
RVJLTjNXVEYxMkF0b21pY1N0cmluZ0ViYk5TMV8xMFBhc3NSZWZQdHJJTlNfOURPTVdpbmRvd0VF
RWlpaWlpYmJiYnROUzVfSU5TXzExRXZlbnRUYXJnZXRFRUVOUzVfSU5TXzlDbGlwYm9hcmRFRUVi
CkBAIC0zNzEsNiArMzcyLDcgQEAgX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ5dHJhbnNs
YXRlRQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHRDMUVQOUNHQ29udGV4dAogX19aTjdX
ZWJDb3JlMTVHcmFwaGljc0NvbnRleHREMUV2CiBfX1pON1dlYkNvcmUxNUpTRE9NV2luZG93QmFz
ZTE4Y29tbW9uSlNHbG9iYWxEYXRhRXYKK19fWk43V2ViQ29yZTE1UHJvdGVjdGlvblNwYWNlQzFF
UktOM1dURjZTdHJpbmdFaU5TXzI1UHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZUVTNF9OU18zNVBy
b3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lRQogX19aTjdXZWJDb3JlMTVQcm90ZWN0
aW9uU3BhY2VDMUV2CiBfX1pON1dlYkNvcmUxNVNjcm9sbEFsaWdubWVudDE3YWxpZ25DZW50ZXJB
bHdheXNFCiBfX1pON1dlYkNvcmUxNVNjcm9sbEFsaWdubWVudDE5YWxpZ25Ub0VkZ2VJZk5lZWRl
ZEUKQEAgLTUwNyw2ICs1MDksNyBAQCBfX1pON1dlYkNvcmUyMmNvbnRleHRNZW51SXRlbVRhZ0Jv
bGRFdgogX19aTjdXZWJDb3JlMjJjb3VudGVyVmFsdWVGb3JFbGVtZW50RVBOU183RWxlbWVudEUK
IF9fWk43V2ViQ29yZTIyY3JlYXRlRnJhZ21lbnRGcm9tVGV4dEVQTlNfNVJhbmdlRVJLTjNXVEY2
U3RyaW5nRQogX19aTjdXZWJDb3JlMjJleHRlcm5hbFJlcHJlc2VudGF0aW9uRVBOU181RnJhbWVF
agorX19aTjdXZWJDb3JlMjNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUMxRVJLTlNfMTVQcm90ZWN0
aW9uU3BhY2VFUktOU18xMENyZWRlbnRpYWxFalJLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRVJLTlNf
MTNSZXNvdXJjZUVycm9yRQogX19aTjdXZWJDb3JlMjNSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZEMx
RVBOU184RG9jdW1lbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTZEb2N1bWVudEZyYWdtZW50RUVF
YmJiYmJOU18xMEVkaXRBY3Rpb25FCiBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5v
ZGVzRVBOU184RG9jdW1lbnRFUktOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRQogX19aTjdX
ZWJDb3JlMjNvdmVycmlkZURlZmF1bHRMYW5ndWFnZUVSS04zV1RGNlN0cmluZ0UKQEAgLTkxNCw2
ICs5MTcsOSBAQCBfX1pON1dlYkNvcmU5cGxhaW5UZXh0RVBLTlNfNVJhbmdlRU5TXzIwCiBfX1pO
N1dlYkNvcmU5dG9FbGVtZW50RU4zSlNDN0pTVmFsdWVFCiBfX1pOSzNKU0M4QmluZGluZ3MxMFJv
b3RPYmplY3QxMmdsb2JhbE9iamVjdEV2CiBfX1pOSzNXVEY2U3RyaW5nMTRjcmVhdGVDRlN0cmlu
Z0V2CitfX1pOSzdXZWJDb3JlMTBDcmVkZW50aWFsMTFwZXJzaXN0ZW5jZUV2CitfX1pOSzdXZWJD
b3JlMTBDcmVkZW50aWFsNHVzZXJFdgorX19aTks3V2ViQ29yZTEwQ3JlZGVudGlhbDhwYXNzd29y
ZEV2CiBfX1pOSzdXZWJDb3JlMTBGbG9hdFBvaW50Y3Y4X05TUG9pbnRFdgogX19aTks3V2ViQ29y
ZTEwUGx1Z2luRGF0YTE2c3VwcG9ydHNNaW1lVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dl
YkNvcmUxMFJlbmRlclRleHQxNmxpbmVzQm91bmRpbmdCb3hFdgpAQCAtMTAxMyw2ICsxMDE5LDEy
IEBAIF9fWk5LN1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjE4Zm9jdXNlZE8KIF9fWk5LN1dlYkNv
cmUxNUdyYXBoaWNzQ29udGV4dDE1cGxhdGZvcm1Db250ZXh0RXYKIF9fWk5LN1dlYkNvcmUxNUdy
YXBoaWNzQ29udGV4dDE2cGFpbnRpbmdEaXNhYmxlZEV2CiBfX1pOSzdXZWJDb3JlMTVQcm9ncmVz
c1RyYWNrZXIxN2VzdGltYXRlZFByb2dyZXNzRXYKK19fWk5LN1dlYkNvcmUxNVByb3RlY3Rpb25T
cGFjZTEwc2VydmVyVHlwZUV2CitfX1pOSzdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2UyNnJlY2Vp
dmVzQ3JlZGVudGlhbFNlY3VyZWx5RXYKK19fWk5LN1dlYkNvcmUxNVByb3RlY3Rpb25TcGFjZTRo
b3N0RXYKK19fWk5LN1dlYkNvcmUxNVByb3RlY3Rpb25TcGFjZTRwb3J0RXYKK19fWk5LN1dlYkNv
cmUxNVByb3RlY3Rpb25TcGFjZTVyZWFsbUV2CitfX1pOSzdXZWJDb3JlMTVQcm90ZWN0aW9uU3Bh
Y2U3aXNQcm94eUV2CiBfX1pOSzdXZWJDb3JlMTVSZXNvdXJjZVJlcXVlc3QxMm5zVVJMUmVxdWVz
dEV2CiBfX1pOSzdXZWJDb3JlMTVWaXNpYmxlUG9zaXRpb24xNGNoYXJhY3RlckFmdGVyRXYKIF9f
Wk5LN1dlYkNvcmUxNVZpc2libGVQb3NpdGlvbjE0bG9jYWxDYXJldFJlY3RFUlBOU18xMlJlbmRl
ck9iamVjdEUKQEAgLTEwNTgsNiArMTA3MCwxMSBAQCBfX1pOSzdXZWJDb3JlMjNBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTIwCiBfX1pOSzdXZWJDb3JlMjNGcmFtZUxvYWRlclN0YXRlTWFjaGluZTE1
Zmlyc3RMYXlvdXREb25lRXYKIF9fWk5LN1dlYkNvcmUyM0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5l
MjNjb21taXR0aW5nRmlyc3RSZWFsTG9hZEV2CiBfX1pOSzdXZWJDb3JlMjZOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlcjZpc0RvbmVFdgorX19aTks3V2ViQ29yZTI3QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlMTVmYWlsdXJlUmVzcG9uc2VFdgorX19aTks3V2ViQ29yZTI3QXV0aGVudGljYXRp
b25DaGFsbGVuZ2VCYXNlMTVwcm90ZWN0aW9uU3BhY2VFdgorX19aTks3V2ViQ29yZTI3QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VCYXNlMThwcm9wb3NlZENyZWRlbnRpYWxFdgorX19aTks3V2ViQ29y
ZTI3QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlMjBwcmV2aW91c0ZhaWx1cmVDb3VudEV2Citf
X1pOSzdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U1ZXJyb3JFdgogX19aTks3
V2ViQ29yZTI3QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlNmlzTnVsbEV2CiBfX1pOSzdXZWJD
b3JlNEZvbnQxMGZsb2F0V2lkdGhFUktOU183VGV4dFJ1bkVQTjNXVEY3SGFzaFNldElQS05TXzE0
U2ltcGxlRm9udERhdGFFTlM0XzdQdHJIYXNoSVM4X0VFTlM0XzEwSGFzaFRyYWl0c0lTOF9FRUVF
UE5TXzEzR2x5cGhPdmVyZmxvd0UKIF9fWk5LN1dlYkNvcmU0Rm9udDhkcmF3VGV4dEVQTlNfMTVH
cmFwaGljc0NvbnRleHRFUktOU183VGV4dFJ1bkVSS05TXzEwRmxvYXRQb2ludEVpaQpJbmRleDog
V2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDczNTQ3KQorKysgV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw4NSBAQAorMjAxMC0xMi0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc2NjA3MzM+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTAxOTEKKyAgICAgICAgV2ViS2l0MiBBdXRoZW50aWNhdGlvbiBTdXBwb3J0CisKKyAgICAg
ICAgSW1wbGVtZW50IGF1dGhlbnRpY2F0aW9uLXJlbGF0ZWQgY29kZXJzOgorICAgICAgICAqIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKworICAgICAgICBBbGxvdyB0aGUgUmVzb3Vy
Y2VSZXNwb25zZSBjb2RlcnMgdG8gaGFuZGxlIG51bGwgcmVzcG9uc2VzOgorICAgICAgICAqIFNo
YXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoQ29yZUlQQzo6
ZW5jb2RlUmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgIChDb3JlSVBDOjpkZWNvZGVSZXNvdXJj
ZVJlc3BvbnNlKToKKworICAgICAgICBBZGQgbmV3IEFQSSBhbmQgSW1wbCBjYXN0cyBmb3IgUHJv
dGVjdGlvblNwYWNlIGFuZCBDcmVkZW50aWFsIGVudW1zOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6dG9BUEkpOgorICAgICAgICAoV2Vi
S2l0Ojp0b0NyZWRlbnRpYWxQZXJzaXN0ZW5jZSk6CisKKyAgICAgICAgTW92ZSB0aGUgRGVjaXNp
b25MaXN0ZW5lciB0byBiZSBhY2Nlc3NlZCBvZmYgdGhlIGNoYWxsZW5nZSBpdHNlbGYsIGFuZCBm
aWxsIGluIG90aGVyCisgICAgICAgIG5lY2Vzc2FyeSBBUEk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwOgorICAgICAgICAoV0tBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUdldERlY2lzaW9uTGlzdGVuZXIpOgorICAgICAgICAoV0tBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXS0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFsKToKKyAgICAgICAgKFdLQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVDb3VudCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6On5BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eTo6cHJvcG9zZWRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eTo6cHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpwcmV2aW91c0ZhaWx1
cmVDb3VudCk6CisKKyAgICAgICAgRmlsbCBpbiBzb21lIGNyZWRlbnRpYWwgQVBJOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuY3BwOgorICAgICAgICAoV0tDcmVkZW50
aWFsQ3JlYXRlKToKKyAgICAgICAgKFdLQ3JlZGVudGlhbENvcHlVc2VyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLQ3JlZGVudGlhbFR5cGVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50
aWNhdGlvbi9XZWJDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ3JlZGVudGlh
bDo6V2ViQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNyZWRlbnRpYWw6OnVzZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNyZWRlbnRpYWw6OmNyZWF0ZSk6CisKKyAgICAgICAgRmlsbCBp
biBzb21lIHByb3RlY3Rpb24gc3BhY2UgQVBJOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1Byb3RlY3Rpb25TcGFjZS5jcHA6CisgICAgICAgIChXS1Byb3RlY3Rpb25TcGFjZUNvcHlIb3N0
KToKKyAgICAgICAgKFdLUHJvdGVjdGlvblNwYWNlR2V0UG9ydCk6CisgICAgICAgIChXS1Byb3Rl
Y3Rpb25TcGFjZUNvcHlSZWFsbSk6CisgICAgICAgIChXS1Byb3RlY3Rpb25TcGFjZUdldElzUHJv
eHkpOgorICAgICAgICAoV0tQcm90ZWN0aW9uU3BhY2VHZXRTZXJ2ZXJUeXBlKToKKyAgICAgICAg
KFdLUHJvdGVjdGlvblNwYWNlR2V0UmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHkpOgorICAgICAg
ICAoV0tQcm90ZWN0aW9uU3BhY2VHZXRBdXRoZW50aWNhdGlvblNjaGVtZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlVHlwZXMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb3RlY3Rpb25TcGFjZTo6V2ViUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvdGVjdGlvblNwYWNlOjpob3N0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
dGVjdGlvblNwYWNlOjpwb3J0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvdGVjdGlvblNwYWNl
OjpyZWFsbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZTo6aXNQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZTo6c2VydmVyVHlwZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZTo6cmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJl
bHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2U6OmF1dGhlbnRpY2F0aW9u
U2NoZW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlv
blNwYWNlLmg6CisKKyAgICAgICAgQ2hhbmdlIHRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2Ug
Y2FsbGJhY2sgdG8gcmVmbGVjdCB0aGUgbmV3IG93bmVyc2hpcCBvZgorICAgICAgICB0aGUgRGVj
aXNpb25MaXN0ZW5lcjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisKKyAgICAgICAgKiBXZWJLaXQyLnBy
bzoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogd2luL1dlYktpdDIudmNwcm9qOgorCiAyMDEwLTEyLTA4ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBXZWJL
aXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHJldmlz
aW9uIDczNTQxKQorKysgV2ViS2l0Mi9XZWJLaXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjc1
LDYgKzI3NSw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
aCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaCBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50
aWFsVHlwZXMuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLRnJhbWUuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xp
Y3lMaXN0ZW5lci5oIFwKQEAgLTI4Nyw2ICsyODgsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNl
LmggXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggXAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9xdC9XS05h
dGl2ZUV2ZW50LmggXAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmggXApJbmRl
eDogV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDczNTQxKQor
KysgV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTExNSwyNSArMTE1LDQ1IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZToKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgICAgICBlbmNvZGVy
LT5lbmNvZGUoQ29yZUlQQzo6SW4oY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBjaGFsbGVu
Z2UucHJvcG9zZWRDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgp
LCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCksIGNoYWxsZW5nZS5lcnJvcigpKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNyZWRlbnRpYWwpCi0gICAgewotICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5n
ZSkKKyAgICB7ICAgIAorICAgICAgICBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlv
blNwYWNlOworICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFsIHByb3Bvc2VkQ3JlZGVudGlhbDsK
KyAgICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQ7CisgICAgICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgZmFpbHVyZVJlc3BvbnNlOworICAgICAgICBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGVycm9yOworCisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6
Ok91dChwcm90ZWN0aW9uU3BhY2UsIHByb3Bvc2VkQ3JlZGVudGlhbCwgcHJldmlvdXNGYWlsdXJl
Q291bnQsIGZhaWx1cmVSZXNwb25zZSwgZXJyb3IpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgCisgICAgICAgIGNoYWxsZW5nZSA9IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKHByb3RlY3Rpb25TcGFjZSwgcHJvcG9zZWRDcmVkZW50aWFsLCBwcmV2aW91c0Zh
aWx1cmVDb3VudCwgZmFpbHVyZVJlc3BvbnNlLCBlcnJvcik7CisKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpQcm90ZWN0aW9uU3BhY2U+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNv
ZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIGNoYWxsZW5nZSkK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBX
ZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIHNwYWNlKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudAorICAgICAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4oc3BhY2UuaG9z
dCgpLCBzcGFjZS5wb3J0KCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihzcGFjZS5zZXJ2ZXJUeXBl
KCkpLCBzcGFjZS5yZWFsbSgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3BhY2UuYXV0aGVudGlj
YXRpb25TY2hlbWUoKSkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1l
bnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIGNyZWRlbnRpYWwp
CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29y
ZTo6UHJvdGVjdGlvblNwYWNlJiBzcGFjZSkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQKKyAgICAgICAgU3RyaW5nIGhvc3Q7CisgICAgICAgIGludCBwb3J0OworICAgICAgICB1
aW50MzJfdCBzZXJ2ZXJUeXBlOworICAgICAgICBTdHJpbmcgcmVhbG07CisgICAgICAgIHVpbnQz
Ml90IGF1dGhlbnRpY2F0aW9uU2NoZW1lOworCisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KENvcmVJUEM6Ok91dChob3N0LCBwb3J0LCBzZXJ2ZXJUeXBlLCByZWFsbSwgYXV0aGVudGljYXRp
b25TY2hlbWUpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAgICAgc3Bh
Y2UgPSBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UoaG9zdCwgcG9ydCwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6UHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZT4oc2VydmVyVHlwZSksIHJlYWxtLCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZT4oYXV0
aGVudGljYXRpb25TY2hlbWUpKTsKKwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9OwpA
QCAtMTQxLDEyICsxNjEsMTggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOgogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDcmVkZW50aWFs
PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29u
c3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKICAgICB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKGNyZWRl
bnRpYWwudXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIHN0YXRpY19jYXN0PHVpbnQzMl90
PihjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkpKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wg
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3Jl
ZGVudGlhbCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICAgICAgU3Ry
aW5nIHVzZXI7CisgICAgICAgIFN0cmluZyBwYXNzd29yZDsKKyAgICAgICAgaW50IHBlcnNpc3Rl
bmNlOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQodXNlciwgcGFz
c3dvcmQsIHBlcnNpc3RlbmNlKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IAorICAgICAgICBjcmVkZW50aWFsID0gV2ViQ29yZTo6Q3JlZGVudGlhbCh1c2VyLCBwYXNzd29y
ZCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlPihwZXJzaXN0ZW5j
ZSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9OwpJbmRleDogV2ViS2l0Mi9TaGFy
ZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiA3MzU0MSkK
KysrIFdlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTYwLDE2ICs2MCwyNiBAQCBib29sIGRlY29kZVJlc291cmNlUmVxdWVzdChB
cmd1bWVudERlY29kCiAKIHZvaWQgZW5jb2RlUmVzb3VyY2VSZXNwb25zZShBcmd1bWVudEVuY29k
ZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVz
cG9uc2UpCiB7CisgICAgYm9vbCByZXNwb25zZUlzUHJlc2VudCA9IHJlc291cmNlUmVzcG9uc2Uu
bnNVUkxSZXNwb25zZSgpOworICAgIGVuY29kZXItPmVuY29kZShyZXNwb25zZUlzUHJlc2VudCk7
CisgICAgCisgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS84NzQxNzk5PiAtIFdlIGNhbid0
IHVzZSBOU0tleWVkQXJjaGl2ZXIgaGVyZS4KICAgICBlbmNvZGVXaXRoTlNLZXllZEFyY2hpdmVy
KGVuY29kZXIsIHJlc291cmNlUmVzcG9uc2UubnNVUkxSZXNwb25zZSgpKTsKIH0KIAogYm9vbCBk
ZWNvZGVSZXNvdXJjZVJlc3BvbnNlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKKyAgICBib29sIHJlc3BvbnNl
SXNQcmVzZW50OworICAgIGRlY29kZXItPmRlY29kZShyZXNwb25zZUlzUHJlc2VudCk7CisgICAg
CisgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS84NzQxNzk5PiAtIFdlIGNhbid0IHVzZSBO
U0tleWVkQXJjaGl2ZXIgaGVyZS4KICAgICBOU1VSTFJlc3BvbnNlICpuc1VSTFJlc3BvbnNlID0g
ZGVjb2RlV2l0aE5TS2V5ZWRBcmNoaXZlcihkZWNvZGVyKTsKLSAgICBpZiAoIW5zVVJMUmVzcG9u
c2UpCisgICAgaWYgKHJlc3BvbnNlSXNQcmVzZW50ICYmICFuc1VSTFJlc3BvbnNlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXNvdXJjZVJlc3BvbnNlID0gV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZShuc1VSTFJlc3BvbnNlKTsKKyAgICBpZiAocmVzcG9uc2VJc1ByZXNlbnQpCisg
ICAgICAgIHJlc291cmNlUmVzcG9uc2UgPSBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlKG5zVVJM
UmVzcG9uc2UpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9j
ZXNzL1dlYkxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gNzM1NDEpCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsMTIgKzE1MiwxMiBA
QCBib29sIFdlYkxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhCiAgICAgcmV0dXJuIG1f
Y2xpZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKHRvQVBJ
KHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHByb3RlY3Rpb25TcGFjZSksIG1fY2xpZW50LmNs
aWVudEluZm8pOwogfQogCi12b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkq
IGZyYW1lLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSwgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKiBsaXN0ZW5lcikKK3ZvaWQgV2Vi
TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdl
YlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkqIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewogICAgIGlmICghbV9jbGll
bnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5G
cmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSksIHRvQVBJKGxpc3RlbmVyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSh0b0FQSShwYWdlKSwg
dG9BUEkoZnJhbWUpLCB0b0FQSShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIG1fY2xpZW50LmNs
aWVudEluZm8pOwogfQogCiB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkU3RhcnRQcm9ncmVzcyhX
ZWJQYWdlUHJveHkqIHBhZ2UpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAko
cmV2aXNpb24gNzM1NDEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSdW5J
bnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJ
T2JqZWN0Kik7CiAgICAgCiAgICAgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlSW5GcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViUHJvdGVjdGlv
blNwYWNlKik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZy
YW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5KiwgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKik7CisgICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZy
YW1lUHJveHkqLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Kik7CiAKICAgICB2b2lkIGRp
ZFN0YXJ0UHJvZ3Jlc3MoV2ViUGFnZVByb3h5Kik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm9ncmVz
cyhXZWJQYWdlUHJveHkqKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gNzM1NDEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTU5LDcgKzE1NTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndl
YkZyYW1lKGZyYW1lSUQpOwogICAgIFJlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
PiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6
OmNyZWF0ZShjb3JlQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCwgdGhpcyk7CiAgICAgCi0gICAgbV9s
b2FkZXJDbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSh0aGlz
LCBmcmFtZSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCksIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLT5saXN0ZW5lcigpKTsKKyAgICBtX2xvYWRlckNsaWVudC5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKHRoaXMsIGZyYW1lLCBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVv
dGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0
X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50VXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVk
VXNhZ2UsIHVpbnQ2NF90JiBuZXdRdW90YSkKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJ
Q2FzdC5oCShyZXZpc2lvbiA3MzU0MSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJ
Q2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwxNCBAQAogI2luY2x1ZGUgIkNhY2hl
TW9kZWwuaCIKICNpbmNsdWRlICJGb250U21vb3RoaW5nTGV2ZWwuaCIKICNpbmNsdWRlICJXS0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJXS0NyZWRlbnRpYWxUeXBlcy5oIgogI2luY2x1ZGUgIldLUGFn
ZS5oIgogI2luY2x1ZGUgIldLUHJlZmVyZW5jZXNQcml2YXRlLmgiCisjaW5jbHVkZSAiV0tQcm90
ZWN0aW9uU3BhY2VUeXBlcy5oIgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJU
eXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCkBAIC0xNDcsNiArMTUyLDY3IEBAIGlubGluZSBXS0ZvbnRTbW9vdGhpbmdM
ZXZlbCB0b0FQSShGb250U20KICAgICByZXR1cm4ga1dLRm9udFNtb290aGluZ0xldmVsTWVkaXVt
OwogfQogCitpbmxpbmUgV0tQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlIHRvQVBJKFdlYkNvcmU6
OlByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICBjYXNlIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA6CisgICAgICAgIHJl
dHVybiBrV0tQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlSFRUUDsKKyAgICBjYXNlIFdlYkNvcmU6
OlByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFBTOgorICAgICAgICByZXR1cm4ga1dLUHJvdGVjdGlv
blNwYWNlU2VydmVyVHlwZUhUVFBTOworICAgIGNhc2UgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
U2VydmVyRlRQOgorICAgICAgICByZXR1cm4ga1dLUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZUZU
UDsKKyAgICBjYXNlIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZVNlcnZlckZUUFM6CisgICAgICAg
IHJldHVybiBrV0tQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRlRQUzsKKyAgICBjYXNlIFdlYkNv
cmU6OlByb3RlY3Rpb25TcGFjZVByb3h5SFRUUDoKKyAgICAgICAgcmV0dXJuIGtXS1Byb3RlY3Rp
b25TcGFjZVByb3h5VHlwZUhUVFA7CisgICAgY2FzZSBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VQ
cm94eUhUVFBTOgorICAgICAgICByZXR1cm4ga1dLUHJvdGVjdGlvblNwYWNlUHJveHlUeXBlSFRU
UFM7CisgICAgY2FzZSBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VQcm94eUZUUDoKKyAgICAgICAg
cmV0dXJuIGtXS1Byb3RlY3Rpb25TcGFjZVByb3h5VHlwZUZUUDsKKyAgICBjYXNlIFdlYkNvcmU6
OlByb3RlY3Rpb25TcGFjZVByb3h5U09DS1M6CisgICAgICAgIHJldHVybiBrV0tQcm90ZWN0aW9u
U3BhY2VQcm94eVR5cGVTT0NLUzsKKyAgICB9CisgICAgcmV0dXJuIGtXS1Byb3RlY3Rpb25TcGFj
ZVNlcnZlclR5cGVIVFRQOworfQorCitpbmxpbmUgV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNh
dGlvblNjaGVtZSB0b0FQSShXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNj
aGVtZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6UHJv
dGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVEZWZhdWx0OgorICAgICAgICByZXR1cm4g
a1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVEZWZhdWx0OworICAgIGNhc2Ug
V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVFRQQmFzaWM6Cisg
ICAgICAgIHJldHVybiBrV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBC
YXNpYzsKKyAgICBjYXNlIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2No
ZW1lSFRUUERpZ2VzdDoKKyAgICAgICAgcmV0dXJuIGtXS1Byb3RlY3Rpb25TcGFjZUF1dGhlbnRp
Y2F0aW9uU2NoZW1lSFRUUERpZ2VzdDsKKyAgICBjYXNlIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFj
ZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRNTEZvcm06CisgICAgICAgIHJldHVybiBrV0tQcm90ZWN0
aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUTUxGb3JtOworICAgIGNhc2UgV2ViQ29yZTo6
UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVOVExNOgorICAgICAgICByZXR1cm4g
a1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVOVExNOworICAgIGNhc2UgV2Vi
Q29yZTo6UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVOZWdvdGlhdGU6CisgICAg
ICAgIHJldHVybiBrV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZU5lZ290aWF0
ZTsKKyAgICBjYXNlIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1l
Q2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0ZWQ6CisgICAgICAgIHJldHVybiBrV0tQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUNsaWVudENlcnRpZmljYXRlUmVxdWVzdGVkOworICAg
IGNhc2UgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJU
cnVzdEV2YWx1YXRpb25SZXF1ZXN0ZWQ6CisgICAgICAgIHJldHVybiBrV0tQcm90ZWN0aW9uU3Bh
Y2VBdXRoZW50aWNhdGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZDsKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4ga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRp
b25TY2hlbWVVbmtub3duOworICAgIH0KK30KKworaW5saW5lIFdlYkNvcmU6OkNyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZSB0b0NyZWRlbnRpYWxQZXJzaXN0ZW5jZShXS0NyZWRlbnRpYWxQZXJzaXN0ZW5j
ZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Uga1dLQ3JlZGVudGlhbFBl
cnNpc3RlbmNlTm9uZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0
ZW5jZU5vbmU7CisgICAgY2FzZSBrV0tDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uOgor
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbjsK
KyAgICBjYXNlIGtXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudDoKKyAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudDsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZTsKKyAg
ICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjaWYgZGVmaW5lZChXSU4zMikgfHwg
ZGVmaW5lZChfV0lOMzIpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkocmV2aXNpb24gNzM1NDEpCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgIldLQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaCIKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKKyNp
bmNsdWRlICJXZWJDcmVkZW50aWFsLmgiCisjaW5jbHVkZSAiV2ViUHJvdGVjdGlvblNwYWNlLmgi
CiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0z
NCwzICszNiwyMyBAQCBXS1R5cGVJRCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0VHlwCiB7
CiAgICAgcmV0dXJuIHRvQVBJKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OkFQSVR5cGUp
OwogfQorCitXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBXS0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlR2V0RGVjaXNpb25MaXN0ZW5lcihXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UmVmIGNoYWxsZW5nZSkKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNoYWxsZW5nZSktPmxp
c3RlbmVyKCkpOworfQorCitXS1Byb3RlY3Rpb25TcGFjZVJlZiBXS0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYgY2hh
bGxlbmdlKQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY2hhbGxlbmdlKS0+cHJvdGVjdGlv
blNwYWNlKCkpOworfQorCitXS0NyZWRlbnRpYWxSZWYgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUdldFByb3Bvc2VkQ3JlZGVudGlhbChXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGNoYWxs
ZW5nZSkKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNoYWxsZW5nZSktPnByb3Bvc2VkQ3Jl
ZGVudGlhbCgpKTsKK30KKworaW50IFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VHZXRQcmV2aW91
c0ZhaWx1cmVDb3VudChXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGNoYWxsZW5nZSkKK3sK
KyAgICByZXR1cm4gdG9JbXBsKGNoYWxsZW5nZSktPnByZXZpb3VzRmFpbHVyZUNvdW50KCk7Cit9
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oCShyZXZpc2lvbiA3MzU0MSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQs
MTEgQEAgZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlR2V0VHlwZUlEKCk7CiAKK1dLX0VYUE9SVCBXS0F1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lclJlZiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0RGVjaXNpb25MaXN0ZW5l
cihXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmKTsKK1dLX0VYUE9SVCBXS1Byb3RlY3Rpb25T
cGFjZVJlZiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKFdLQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VSZWYpOworV0tfRVhQT1JUIFdLQ3JlZGVudGlhbFJlZiBXS0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFsKFdLQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VSZWYpOworV0tfRVhQT1JUIGludCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
R2V0UHJldmlvdXNGYWlsdXJlQ291bnQoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZik7CisK
ICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0NyZWRlbnRpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQ3JlZGVudGlhbC5jcHAJKHJldmlzaW9uIDczNTQxKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgIldLQ3JlZGVudGlhbC5oIgogCiAjaW5jbHVkZSAiV2ViQ3JlZGVudGlhbC5o
IgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMzQsMyArMzUsMTUgQEAgV0tUeXBlSUQgV0tDcmVkZW50
aWFsR2V0VHlwZUlEKCkKIHsKICAgICByZXR1cm4gdG9BUEkoV2ViQ3JlZGVudGlhbDo6QVBJVHlw
ZSk7CiB9CisKK1dLQ3JlZGVudGlhbFJlZiBXS0NyZWRlbnRpYWxDcmVhdGUoV0tTdHJpbmdSZWYg
dXNlcm5hbWUsIFdLU3RyaW5nUmVmIHBhc3N3b3JkLCBXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZSBw
ZXJzaXN0ZW5jZSkKK3sKKyAgICBSZWZQdHI8V2ViQ3JlZGVudGlhbD4gY3JlZGVudGlhbCA9IFdl
YkNyZWRlbnRpYWw6OmNyZWF0ZSh0b0ltcGwodXNlcm5hbWUpLCB0b0ltcGwocGFzc3dvcmQpLCB0
b0NyZWRlbnRpYWxQZXJzaXN0ZW5jZShwZXJzaXN0ZW5jZSkpOworICAgIHJldHVybiB0b0FQSShj
cmVkZW50aWFsLnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworfQorCitXS1N0cmluZ1JlZiBXS0Ny
ZWRlbnRpYWxDb3B5VXNlcihXS0NyZWRlbnRpYWxSZWYgY3JlZGVudGlhbFJlZikKK3sKKyAgICBy
ZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGNyZWRlbnRpYWxSZWYpLT51c2VyKCkpOworfQorCklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuaAkocmV2aXNpb24gNzM1NDEp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXS0NyZWRlbnRpYWxfaAogCiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ3JlZGVudGlhbFR5cGVzLmg+
CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0zNCw2ICszNSw5IEBAIGV4
dGVybiAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tDcmVkZW50aWFsR2V0VHlwZUlEKCk7
CiAKK1dLX0VYUE9SVCBXS0NyZWRlbnRpYWxSZWYgV0tDcmVkZW50aWFsQ3JlYXRlKFdLU3RyaW5n
UmVmIHVzZXJuYW1lLCBXS1N0cmluZ1JlZiBwYXNzd29yZCwgV0tDcmVkZW50aWFsUGVyc2lzdGVu
Y2UpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQ3JlZGVudGlhbENvcHlVc2VyKFdLQ3JlZGVu
dGlhbFJlZik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWxUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbFR5cGVzLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWxUeXBlcy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NyZWRlbnRpYWxUeXBlc19o
CisjZGVmaW5lIFdLQ3JlZGVudGlhbFR5cGVzX2gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRl
cm4gIkMiIHsKKyNlbmRpZgorCitlbnVtIHsKKyAgICBrV0tDcmVkZW50aWFsUGVyc2lzdGVuY2VO
b25lLAorICAgIGtXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24sCisgICAga1dLQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlUGVybWFuZW50Cit9OwordHlwZWRlZiB1aW50MzJfdCBXS0NyZWRl
bnRpYWxQZXJzaXN0ZW5jZTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8qIFdLQ3JlZGVudGlhbFR5cGVzX2ggKi8KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5oCShyZXZpc2lvbiA3MzU0MSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHR5cGVkZWYgdm9pZCAoKldLUGFnZURp
ZFJlbW92ZUZyYW1lRnJvbUgKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYg
dm9pZCAoKldLUGFnZURpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lQ2FsbGJhY2spKFdLUGFn
ZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiBib29sICgqV0tQYWdlQ2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1l
UmVmIGZyYW1lLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLCBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAogLy8gUHJvZ3Jlc3MgQ2xpZW50
CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRTdGFydFByb2dyZXNzQ2FsbGJhY2spKFdLUGFnZVJl
ZiBwYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5jcHAJKHJldmlzaW9uIDczNTQxKQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCwzICszNCwzOCBAQCBXS1R5cGVJRCBXS1Byb3RlY3Rpb25TcGFjZUdldFR5cGVJRCgp
CiB7CiAgICAgcmV0dXJuIHRvQVBJKFdlYlByb3RlY3Rpb25TcGFjZTo6QVBJVHlwZSk7CiB9CisK
K1dLU3RyaW5nUmVmIFdLUHJvdGVjdGlvblNwYWNlQ29weUhvc3QoV0tQcm90ZWN0aW9uU3BhY2VS
ZWYgcHJvdGVjdGlvblNwYWNlUmVmKQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwo
cHJvdGVjdGlvblNwYWNlUmVmKS0+aG9zdCgpKTsKK30KKworaW50IFdLUHJvdGVjdGlvblNwYWNl
R2V0UG9ydChXS1Byb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2VSZWYpCit7CisgICAg
cmV0dXJuIHRvSW1wbChwcm90ZWN0aW9uU3BhY2VSZWYpLT5wb3J0KCk7Cit9CisKK1dLU3RyaW5n
UmVmIFdLUHJvdGVjdGlvblNwYWNlQ29weVJlYWxtKFdLUHJvdGVjdGlvblNwYWNlUmVmIHByb3Rl
Y3Rpb25TcGFjZVJlZikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHByb3RlY3Rp
b25TcGFjZVJlZiktPnJlYWxtKCkpOworfQorCitib29sIFdLUHJvdGVjdGlvblNwYWNlR2V0SXNQ
cm94eShXS1Byb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2VSZWYpCit7CisgICAgcmV0
dXJuIHRvSW1wbChwcm90ZWN0aW9uU3BhY2VSZWYpLT5pc1Byb3h5KCk7Cit9CisKK1dLUHJvdGVj
dGlvblNwYWNlU2VydmVyVHlwZSBXS1Byb3RlY3Rpb25TcGFjZUdldFNlcnZlclR5cGUoV0tQcm90
ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlUmVmKQoreworICAgIHJldHVybiB0b0FQSSh0
b0ltcGwocHJvdGVjdGlvblNwYWNlUmVmKS0+c2VydmVyVHlwZSgpKTsKK30KKworYm9vbCBXS1By
b3RlY3Rpb25TcGFjZUdldFJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KFdLUHJvdGVjdGlvblNw
YWNlUmVmIHByb3RlY3Rpb25TcGFjZVJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByb3RlY3Rp
b25TcGFjZVJlZiktPnJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCk7Cit9CisKK1dLUHJvdGVj
dGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWUgV0tQcm90ZWN0aW9uU3BhY2VHZXRBdXRoZW50
aWNhdGlvblNjaGVtZShXS1Byb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2VSZWYpCit7
CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChwcm90ZWN0aW9uU3BhY2VSZWYpLT5hdXRoZW50aWNh
dGlvblNjaGVtZSgpKTsKK30KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVj
dGlvblNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcm90
ZWN0aW9uU3BhY2UuaAkocmV2aXNpb24gNzM1NDEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1Byb3RlY3Rpb25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAj
ZGVmaW5lIFdLUHJvdGVjdGlvblNwYWNlX2gKIAogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmg+CiAKICNpZmRlZiBf
X2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0zNCw2ICszNSwxNCBAQCBleHRlcm4gIkMiIHsK
IAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLUHJvdGVjdGlvblNwYWNlR2V0VHlwZUlEKCk7CiAKK1dL
X0VYUE9SVCBXS1N0cmluZ1JlZiBXS1Byb3RlY3Rpb25TcGFjZUNvcHlIb3N0KFdLUHJvdGVjdGlv
blNwYWNlUmVmKTsKK1dLX0VYUE9SVCBpbnQgV0tQcm90ZWN0aW9uU3BhY2VHZXRQb3J0KFdLUHJv
dGVjdGlvblNwYWNlUmVmKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1Byb3RlY3Rpb25TcGFj
ZUNvcHlSZWFsbShXS1Byb3RlY3Rpb25TcGFjZVJlZik7CitXS19FWFBPUlQgYm9vbCBXS1Byb3Rl
Y3Rpb25TcGFjZUdldElzUHJveHkoV0tQcm90ZWN0aW9uU3BhY2VSZWYpOworV0tfRVhQT1JUIFdL
UHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZSBXS1Byb3RlY3Rpb25TcGFjZUdldFNlcnZlclR5cGUo
V0tQcm90ZWN0aW9uU3BhY2VSZWYpOworV0tfRVhQT1JUIGJvb2wgV0tQcm90ZWN0aW9uU3BhY2VH
ZXRSZWNlaXZlc0NyZWRlbnRpYWxTZWN1cmVseShXS1Byb3RlY3Rpb25TcGFjZVJlZik7CitXS19F
WFBPUlQgV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBXS1Byb3RlY3Rpb25T
cGFjZUdldEF1dGhlbnRpY2F0aW9uU2NoZW1lKFdLUHJvdGVjdGlvblNwYWNlUmVmKTsKKwogI2lm
ZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUHJvdGVjdGlvblNwYWNlVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLUHJvdGVjdGlvblNwYWNlVHlw
ZXNfaAorI2RlZmluZSBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzX2gKKworI2luY2x1ZGUgPFdlYktp
dDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYK
KworZW51bSB7CisgICAga1dLUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZUhUVFAgPSAxLAorICAg
IGtXS1Byb3RlY3Rpb25TcGFjZVNlcnZlclR5cGVIVFRQUywKKyAgICBrV0tQcm90ZWN0aW9uU3Bh
Y2VTZXJ2ZXJUeXBlRlRQLAorICAgIGtXS1Byb3RlY3Rpb25TcGFjZVNlcnZlclR5cGVGVFBTLAor
ICAgIGtXS1Byb3RlY3Rpb25TcGFjZVByb3h5VHlwZUhUVFAsCisgICAga1dLUHJvdGVjdGlvblNw
YWNlUHJveHlUeXBlSFRUUFMsCisgICAga1dLUHJvdGVjdGlvblNwYWNlUHJveHlUeXBlRlRQLAor
ICAgIGtXS1Byb3RlY3Rpb25TcGFjZVByb3h5VHlwZVNPQ0tTLAorfTsKK3R5cGVkZWYgdWludDMy
X3QgV0tQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlOworCitlbnVtICB7CisgICAga1dLUHJvdGVj
dGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVEZWZhdWx0ID0gMSwKKyAgICBrV0tQcm90ZWN0
aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBCYXNpYywKKyAgICBrV0tQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBEaWdlc3QsCisgICAga1dLUHJvdGVjdGlvblNw
YWNlQXV0aGVudGljYXRpb25TY2hlbWVIVE1MRm9ybSwKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VB
dXRoZW50aWNhdGlvblNjaGVtZU5UTE0sCisgICAga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGlj
YXRpb25TY2hlbWVOZWdvdGlhdGUsCisgICAga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRp
b25TY2hlbWVDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3RlZCwKKyAgICBrV0tQcm90ZWN0aW9uU3Bh
Y2VBdXRoZW50aWNhdGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZCwKKyAg
ICBrV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVVua25vd24gPSAxMDAsCit9
OwordHlwZWRlZiB1aW50MzJfdCBXS1Byb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1l
OworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tQcm90ZWN0
aW9uU3BhY2VUeXBlc19oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAko
cmV2aXNpb24gNzM1NDEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIldlYkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm90ZWN0aW9u
U3BhY2UuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ3LDcgKzQ4LDcgQEAgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eTo6fkF1dGhlbnRpYwogewogICAgIC8vIElmIGFuIG91dHN0
YW5kaW5nIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkgaXMgYmVpbmcgZGVzdHJveWVkIGV2
ZW4gdGhvdWdoIGl0IGhhc24ndCBiZWVuIHJlc3BvbmRlZCB0byB5ZXQsCiAgICAgLy8gd2UgY2Fu
Y2VsIGl0IGhlcmUgc28gdGhlIFdlYlByb2Nlc3MgaXNuJ3Qgd2FpdGluZyBmb3IgYW4gYW5zd2Vy
IGZvcmV2ZXIuCi0gICAgaWYgKG1fY2hhbGxlbmdlSUQpCisgICAgaWYgKG1fY2hhbGxlbmdlSUQg
JiYgbV9wYWdlLT5wcm9jZXNzKCkpCiAgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkNhbmNlbENoYWxsZW5nZShtX2NoYWxsZW5n
ZUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAKICAgICBpZiAobV9saXN0ZW5lcikKQEAgLTc3LDQg
Kzc4LDIwIEBAIHZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y2FuY2UKICAgICBt
X2NoYWxsZW5nZUlEID0gMDsKIH0KIAorV2ViQ3JlZGVudGlhbCogQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eTo6cHJvcG9zZWRDcmVkZW50aWFsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fd2Vi
Q3JlZGVudGlhbCkKKyAgICAgICAgbV93ZWJDcmVkZW50aWFsID0gV2ViQ3JlZGVudGlhbDo6Y3Jl
YXRlKG1fY29yZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKTsK
KyAgICAgICAgCisgICAgcmV0dXJuIG1fd2ViQ3JlZGVudGlhbC5nZXQoKTsKK30KKworV2ViUHJv
dGVjdGlvblNwYWNlKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Ojpwcm90ZWN0aW9uU3Bh
Y2UoKSBjb25zdAoreworICAgIGlmICghbV93ZWJQcm90ZWN0aW9uU3BhY2UpCisgICAgICAgIG1f
d2ViUHJvdGVjdGlvblNwYWNlID0gV2ViUHJvdGVjdGlvblNwYWNlOjpjcmVhdGUobV9jb3JlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAgICAKKyAgICBy
ZXR1cm4gbV93ZWJQcm90ZWN0aW9uU3BhY2UuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaAkocmV2aXNpb24gNzM1NDEp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CiBjbGFzcyBXZWJD
cmVkZW50aWFsOwogY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJvdGVjdGlvblNwYWNl
OwogCiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5IDogcHVibGljIEFQSU9iamVj
dCB7CiBwdWJsaWM6CkBAIC01Nyw2ICs1OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbCgp
OwogCiAgICAgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKiBsaXN0ZW5lcigpIGNvbnN0
IHsgcmV0dXJuIG1fbGlzdGVuZXIuZ2V0KCk7IH0KKyAgICBXZWJDcmVkZW50aWFsKiBwcm9wb3Nl
ZENyZWRlbnRpYWwoKSBjb25zdDsKKyAgICBXZWJQcm90ZWN0aW9uU3BhY2UqIHByb3RlY3Rpb25T
cGFjZSgpIGNvbnN0OworICAgIGludCBwcmV2aW91c0ZhaWx1cmVDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29yZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCk7
IH0KIAogcHJpdmF0ZToKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgdWludDY0X3QgY2hhbGxlbmdlSUQsIFdl
YlBhZ2VQcm94eSogcGFnZSk7CkBAIC02Nyw2ICs3MSw4IEBAIHByaXZhdGU6CiAgICAgdWludDY0
X3QgbV9jaGFsbGVuZ2VJRDsKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBtX3BhZ2U7CiAgICAg
UmVmUHRyPEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcj4gbV9saXN0ZW5lcjsKKyAgICBt
dXRhYmxlIFJlZlB0cjxXZWJDcmVkZW50aWFsPiBtX3dlYkNyZWRlbnRpYWw7CisgICAgbXV0YWJs
ZSBSZWZQdHI8V2ViUHJvdGVjdGlvblNwYWNlPiBtX3dlYlByb3RlY3Rpb25TcGFjZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGlj
YXRpb24vV2ViQ3JlZGVudGlhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHAJKHJldmlzaW9uIDczNTQxKQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDkgKzI3LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitXZWJDcmVk
ZW50aWFsOjpXZWJDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRp
YWwpCisgICAgOiBtX2NvcmVDcmVkZW50aWFsKGNyZWRlbnRpYWwpCit7Cit9CisKIGNvbnN0IFdl
YkNvcmU6OkNyZWRlbnRpYWwmIFdlYkNyZWRlbnRpYWw6OmNvcmUoKQogewogICAgIHJldHVybiBt
X2NvcmVDcmVkZW50aWFsOwogfQogCitjb25zdCBTdHJpbmcmIFdlYkNyZWRlbnRpYWw6OnVzZXIo
KSBjb25zdAoreworICAgIHJldHVybiBtX2NvcmVDcmVkZW50aWFsLnVzZXIoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlv
bi9XZWJDcmVkZW50aWFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVu
dGljYXRpb24vV2ViQ3JlZGVudGlhbC5oCShyZXZpc2lvbiA3MzU0MSkKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNiArMjcsOCBAQAogI2RlZmluZSBXZWJDcmVkZW50aWFsX2gKIAogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVk
ZW50aWFsLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtMzcsMTUgKzM5LDIy
IEBAIGNsYXNzIFdlYkNyZWRlbnRpYWwgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUNyZWRlbnRpYWw7CiAKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJDcmVkZW50aWFsPiBjcmVhdGUoKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYkNyZWRlbnRpYWw+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDcmVkZW50aWFs
KCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNyZWRlbnRpYWwoY3JlZGVudGlh
bCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDcmVkZW50aWFsPiBj
cmVhdGUoV2ViU3RyaW5nKiB1c2VybmFtZSwgV2ViU3RyaW5nKiBwYXNzd29yZCwgV2ViQ29yZTo6
Q3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJDcmVkZW50aWFsKFdlYkNvcmU6OkNyZWRlbnRpYWwodXNlcm5hbWUt
PnN0cmluZygpLCBwYXNzd29yZC0+c3RyaW5nKCksIHBlcnNpc3RlbmNlKSkpOwogICAgIH0KICAg
ICAKICAgICBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjb3JlKCk7CiAKKyAgICBjb25zdCBT
dHJpbmcmIHVzZXIoKSBjb25zdDsKKyAgICAKIHByaXZhdGU6Ci0gICAgV2ViQ3JlZGVudGlhbCgp
OworICAgIFdlYkNyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpOwogCiAgICAg
dmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CiAKSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlv
blNwYWNlLmNwcAkocmV2aXNpb24gNzM1NDEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50
aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMiAr
MjUsNDggQEAKIAogI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgogCisjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYlByb3Rl
Y3Rpb25TcGFjZTo6V2ViUHJvdGVjdGlvblNwYWNlKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25T
cGFjZSYgY29yZVByb3RlY3Rpb25TcGFjZSkKICAgICA6IG1fY29yZVByb3RlY3Rpb25TcGFjZShj
b3JlUHJvdGVjdGlvblNwYWNlKQogeworfQorCitjb25zdCBTdHJpbmcmIFdlYlByb3RlY3Rpb25T
cGFjZTo6aG9zdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29yZVByb3RlY3Rpb25TcGFjZS5o
b3N0KCk7Cit9CisKK2ludCBXZWJQcm90ZWN0aW9uU3BhY2U6OnBvcnQoKSBjb25zdAoreworICAg
IHJldHVybiBtX2NvcmVQcm90ZWN0aW9uU3BhY2UucG9ydCgpOworfQorCitjb25zdCBTdHJpbmcm
IFdlYlByb3RlY3Rpb25TcGFjZTo6cmVhbG0oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvcmVQ
cm90ZWN0aW9uU3BhY2UucmVhbG0oKTsKK30KIAorYm9vbCBXZWJQcm90ZWN0aW9uU3BhY2U6Omlz
UHJveHkoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvcmVQcm90ZWN0aW9uU3BhY2UuaXNQcm94
eSgpOworfQorCitXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlIFdlYlByb3RlY3Rp
b25TcGFjZTo6c2VydmVyVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29yZVByb3RlY3Rp
b25TcGFjZS5zZXJ2ZXJUeXBlKCk7Cit9CisKK2Jvb2wgV2ViUHJvdGVjdGlvblNwYWNlOjpyZWNl
aXZlc0NyZWRlbnRpYWxTZWN1cmVseSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29yZVByb3Rl
Y3Rpb25TcGFjZS5yZWNlaXZlc0NyZWRlbnRpYWxTZWN1cmVseSgpOworfQorCitXZWJDb3JlOjpQ
cm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBXZWJQcm90ZWN0aW9uU3BhY2U6OmF1
dGhlbnRpY2F0aW9uU2NoZW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb3JlUHJvdGVjdGlv
blNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNw
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2Vi
UHJvdGVjdGlvblNwYWNlLmgJKHJldmlzaW9uIDczNTQxKQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDYgKzQwLDE1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViUHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkpOwogICAgIH0KKyAgICAKKyAgICBj
b25zdCBTdHJpbmcmIHByb3RvY29sKCkgY29uc3Q7CisgICAgY29uc3QgU3RyaW5nJiBob3N0KCkg
Y29uc3Q7CisgICAgaW50IHBvcnQoKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIHJlYWxtKCkg
Y29uc3Q7CisgICAgYm9vbCBpc1Byb3h5KCkgY29uc3Q7CisgICAgV2ViQ29yZTo6UHJvdGVjdGlv
blNwYWNlU2VydmVyVHlwZSBzZXJ2ZXJUeXBlKCkgY29uc3Q7CisgICAgYm9vbCByZWNlaXZlc0Ny
ZWRlbnRpYWxTZWN1cmVseSgpIGNvbnN0OworICAgIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1
dGhlbnRpY2F0aW9uU2NoZW1lIGF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgV2ViUHJvdGVjdGlvblNwYWNlKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFj
ZSYpOwpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDczNTQxKQorKysgV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsOCBAQAogCQk1MTZBNEE1RDEyMEEyQ0NE
MDBDMDVCN0YgLyogV2ViRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oICovOyB9
OwogCQk1MTg3MUI1QjEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NzFCNTkxMjdDQjg5
RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCAqLzsgfTsKIAkJNTE4NzFCNUMxMjdDQjg5
RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4
dE1lbnUuaCAqLzsgfTsKKwkJNTE4QUNBRUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlv
blNwYWNlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxOEFDQUU5MTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk1MThBQ0Yx
MTEyQjAxNUY4MDBCMDRCODMgLyogV0tDcmVkZW50aWFsVHlwZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEFDRjEwMTJCMDE1RjgwMEIwNEI4MyAv
KiBXS0NyZWRlbnRpYWxUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKIAkJNTFBNTU1RjUxMjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJ
dGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
QTU1NUYzMTI4QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5jcHAgKi87IH07CiAJ
CTUxQTU1NUY2MTI4QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNTU1RjQxMjhDNkM0NzAw
OUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHVibGljLCApOyB9OyB9OwogCQk1MUE1NTYwMTEyOEM2RDkyMDA5QUJDRUMgLyogV0tDb250
ZXh0TWVudUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFBNTU2MDAxMjhDNkQ5MjAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtVHlw
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC04
NjMsNiArODY1LDggQEAKIAkJNTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIFdlYkVycm9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkVycm9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0
TWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0
TWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjVBMTI3Q0I4OUQw
MEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MThB
Q0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxOEFDRjEwMTJCMDE1RjgwMEIwNEI4MyAvKiBXS0Ny
ZWRlbnRpYWxUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NyZWRl
bnRpYWxUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE1NTVGMzEyOEM2
QzQ3MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0tDb250ZXh0TWVudUl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUE1NTVGNDEyOEM2QzQ3MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0
ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0TWVudUl0ZW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNTU2MDAxMjhDNkQ5MjAwOUFCQ0VD
IC8qIFdLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTkwNCw2ICsxOTA4LDcgQEAKIAkJCQlCQ0M5MzhFMDExODBERTQ0MDA4NUU1RkUgLyog
V0tDb250ZXh0UHJpdmF0ZS5oICovLAogCQkJCTUxMkY1OEYxMTJBODhBNTQwMDYyOTUzMCAvKiBX
S0NyZWRlbnRpYWwuY3BwICovLAogCQkJCTUxMkY1OEYyMTJBODhBNTQwMDYyOTUzMCAvKiBXS0Ny
ZWRlbnRpYWwuaCAqLywKKwkJCQk1MThBQ0YxMDEyQjAxNUY4MDBCMDRCODMgLyogV0tDcmVkZW50
aWFsVHlwZXMuaCAqLywKIAkJCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9h
ZC5jcHAgKi8sCiAJCQkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCAq
LywKIAkJCQlCQ0U0Njk1NzEyMTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3Rl
bmVyLmNwcCAqLywKQEAgLTE5MjksNiArMTkzNCw3IEBACiAJCQkJNzYyQjc0ODQxMjBCQkEyRDAw
ODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmggKi8sCiAJCQkJNTEyRjU4RjMxMkE4OEE1
NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmNwcCAqLywKIAkJCQk1MTJGNThGNDEyQTg4
QTU0MDA2Mjk1MzAgLyogV0tQcm90ZWN0aW9uU3BhY2UuaCAqLywKKwkJCQk1MThBQ0FFOTEyQUVF
NkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBDOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI2MzQsNiArMjY0MCw4IEBA
CiAJCQkJNTEyRjU4RkMxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNjM0NDQ1NjEyQTg4NUM4MDAwNjEyRDggLyogV2ViU2VjdXJpdHlP
cmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MzQ0NDVEMTJBODg1RTkwMDA2MTJEOCAvKiBX
S1NlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MThBQ0FFQTEyQUVFNkJCMDBC
MDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4
QUNGMTExMkIwMTVGODAwQjA0QjgzIC8qIFdLQ3JlZGVudGlhbFR5cGVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzJEMDIxNzEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlv
blR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMkQwMjE5MTJBQzQyNkMwMEU3MzJBMyAvKiBX
S1BhZ2VMb2FkVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2QTI1RkREMTJBREM2Q0MwMERD
NDBDQyAvKiBXZWJEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogV2ViS2l0
Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0Mi52
Y3Byb2oJKHJldmlzaW9uIDczNTQxKQorKysgV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTIxMjUsNiArMjEyNSwxMCBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+
CiAJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS0Ny
ZWRlbnRpYWxUeXBlcy5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCiAJCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS0Rvd25sb2FkLmNwcCIKIAkJCQkJ
CT4KIAkJCQkJPC9GaWxlPgpAQCAtMjIyNCw2ICsyMjI4LDEwIEBACiAJCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS1Byb3RlY3Rpb25TcGFjZS5oIgogCQkJCQkJPgogCQkJ
CQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xB
UElcQ1xXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmgiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KIAkJ
CQkJPEZpbHRlcgogCQkJCQkJTmFtZT0id2luIgogCQkJCQkJPgo=
</data>
<flag name="commit-queue"
          id="66820"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75993</attachid>
            <date>2010-12-08 17:41:48 -0800</date>
            <delta_ts>2010-12-08 17:48:14 -0800</delta_ts>
            <desc>Stage 2 v2 - Now with more Windows building!</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>42191</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzU3MykKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODYgQEAKKzIwMTAtMTItMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NjYwNzMzPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUwMTkxCisgICAgICAgIFdlYktpdDIgQXV0aGVudGljYXRpb24gU3VwcG9ydAor
CisgICAgICAgIEltcGxlbWVudCBhdXRoZW50aWNhdGlvbi1yZWxhdGVkIGNvZGVyczoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisKKyAgICAgICAgQWxsb3cgdGhl
IFJlc291cmNlUmVzcG9uc2UgY29kZXJzIHRvIGhhbmRsZSBudWxsIHJlc3BvbnNlczoKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKENv
cmVJUEM6OmVuY29kZVJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAoQ29yZUlQQzo6ZGVjb2Rl
UmVzb3VyY2VSZXNwb25zZSk6CisKKyAgICAgICAgQWRkIG5ldyBBUEkgYW5kIEltcGwgY2FzdHMg
Zm9yIFByb3RlY3Rpb25TcGFjZSBhbmQgQ3JlZGVudGlhbCBlbnVtczoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAg
ICAgKFdlYktpdDo6dG9DcmVkZW50aWFsUGVyc2lzdGVuY2UpOgorCisgICAgICAgIE1vdmUgdGhl
IERlY2lzaW9uTGlzdGVuZXIgdG8gYmUgYWNjZXNzZWQgb2ZmIHRoZSBjaGFsbGVuZ2UgaXRzZWxm
LCBhbmQgZmlsbCBpbiBvdGhlcgorICAgICAgICBuZWNlc3NhcnkgQVBJOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcDoKKyAgICAgICAgKFdL
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VHZXREZWNpc2lvbkxpc3RlbmVyKToKKyAgICAgICAgKFdL
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV0tB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbCk6CisgICAgICAgIChX
S0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0UHJldmlvdXNGYWlsdXJlQ291bnQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Ojp+QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHk6OnByb3Bvc2VkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OnByb3RlY3Rpb25TcGFjZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHku
aDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6cHJldmlv
dXNGYWlsdXJlQ291bnQpOgorCisgICAgICAgIEZpbGwgaW4gc29tZSBjcmVkZW50aWFsIEFQSToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdL
Q3JlZGVudGlhbENyZWF0ZSk6CisgICAgICAgIChXS0NyZWRlbnRpYWxDb3B5VXNlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0NyZWRlbnRpYWxUeXBlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNy
ZWRlbnRpYWw6OldlYkNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDcmVkZW50aWFs
Ojp1c2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlh
bC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJDcmVkZW50aWFsOjpjcmVhdGUpOgorCisgICAgICAg
IEZpbGwgaW4gc29tZSBwcm90ZWN0aW9uIHNwYWNlIEFQSToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwOgorICAgICAgICAoV0tQcm90ZWN0aW9uU3BhY2VD
b3B5SG9zdCk6CisgICAgICAgIChXS1Byb3RlY3Rpb25TcGFjZUdldFBvcnQpOgorICAgICAgICAo
V0tQcm90ZWN0aW9uU3BhY2VDb3B5UmVhbG0pOgorICAgICAgICAoV0tQcm90ZWN0aW9uU3BhY2VH
ZXRJc1Byb3h5KToKKyAgICAgICAgKFdLUHJvdGVjdGlvblNwYWNlR2V0U2VydmVyVHlwZSk6Cisg
ICAgICAgIChXS1Byb3RlY3Rpb25TcGFjZUdldFJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KToK
KyAgICAgICAgKFdLUHJvdGVjdGlvblNwYWNlR2V0QXV0aGVudGljYXRpb25TY2hlbWUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2U6OldlYlByb3RlY3Rpb25TcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZTo6aG9zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb3RlY3Rpb25TcGFjZTo6cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb3RlY3Rp
b25TcGFjZTo6cmVhbG0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2U6Omlz
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2U6OnNlcnZlclR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2U6OnJlY2VpdmVzQ3JlZGVudGlh
bFNlY3VyZWx5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvdGVjdGlvblNwYWNlOjphdXRoZW50
aWNhdGlvblNjaGVtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlBy
b3RlY3Rpb25TcGFjZS5oOgorCisgICAgICAgIENoYW5nZSB0aGUgYXV0aGVudGljYXRpb24gY2hh
bGxlbmdlIGNhbGxiYWNrIHRvIHJlZmxlY3QgdGhlIG5ldyBvd25lcnNoaXAgb2YKKyAgICAgICAg
dGhlIERlY2lzaW9uTGlzdGVuZXI6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUlu
RnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorCisgICAgICAgICogV2Vi
S2l0Mi5wcm86CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkdlbmVy
YXRlZC5tYWtlOgorCiAyMDEwLTEyLTA4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQy
L1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHJldmlzaW9u
IDczNTY5KQorKysgV2ViS2l0Mi9XZWJLaXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjc1LDYg
KzI3NSw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaCBc
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaCBcCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLQ3JlZGVudGlhbC5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFs
VHlwZXMuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaCBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLRnJhbWUuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lM
aXN0ZW5lci5oIFwKQEAgLTI4Nyw2ICsyODgsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nl
c3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlLmgg
XAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggXAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XZWJLaXQyLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9xdC9XS05hdGl2
ZUV2ZW50LmggXAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmggXApJbmRleDog
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDczNTY5KQorKysg
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExNSwyNSArMTE1LDQ1IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZToKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2U+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdl
KQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgICAgICBlbmNvZGVyLT5l
bmNvZGUoQ29yZUlQQzo6SW4oY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2Uu
cHJvcG9zZWRDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLCBj
aGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCksIGNoYWxsZW5nZS5lcnJvcigpKSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNyZWRlbnRpYWwpCi0gICAgewotICAgICAgICAv
LyBGSVhNRTogSW1wbGVtZW50CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciogZGVjb2RlciwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkK
KyAgICB7ICAgIAorICAgICAgICBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlvblNw
YWNlOworICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFsIHByb3Bvc2VkQ3JlZGVudGlhbDsKKyAg
ICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQ7CisgICAgICAgIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgZmFpbHVyZVJlc3BvbnNlOworICAgICAgICBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGVycm9yOworCisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91
dChwcm90ZWN0aW9uU3BhY2UsIHByb3Bvc2VkQ3JlZGVudGlhbCwgcHJldmlvdXNGYWlsdXJlQ291
bnQsIGZhaWx1cmVSZXNwb25zZSwgZXJyb3IpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgCisgICAgICAgIGNoYWxsZW5nZSA9IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKHByb3RlY3Rpb25TcGFjZSwgcHJvcG9zZWRDcmVkZW50aWFsLCBwcmV2aW91c0ZhaWx1
cmVDb3VudCwgZmFpbHVyZVJlc3BvbnNlLCBlcnJvcik7CisKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQ
cm90ZWN0aW9uU3BhY2U+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIGNoYWxsZW5nZSkKKyAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJD
b3JlOjpQcm90ZWN0aW9uU3BhY2UmIHNwYWNlKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IElt
cGxlbWVudAorICAgICAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4oc3BhY2UuaG9zdCgp
LCBzcGFjZS5wb3J0KCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihzcGFjZS5zZXJ2ZXJUeXBlKCkp
LCBzcGFjZS5yZWFsbSgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3BhY2UuYXV0aGVudGljYXRp
b25TY2hlbWUoKSkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIGNyZWRlbnRpYWwpCisg
ICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6
UHJvdGVjdGlvblNwYWNlJiBzcGFjZSkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQKKyAgICAgICAgU3RyaW5nIGhvc3Q7CisgICAgICAgIGludCBwb3J0OworICAgICAgICB1aW50
MzJfdCBzZXJ2ZXJUeXBlOworICAgICAgICBTdHJpbmcgcmVhbG07CisgICAgICAgIHVpbnQzMl90
IGF1dGhlbnRpY2F0aW9uU2NoZW1lOworCisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENv
cmVJUEM6Ok91dChob3N0LCBwb3J0LCBzZXJ2ZXJUeXBlLCByZWFsbSwgYXV0aGVudGljYXRpb25T
Y2hlbWUpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAgICAgc3BhY2Ug
PSBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UoaG9zdCwgcG9ydCwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6UHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZT4oc2VydmVyVHlwZSksIHJlYWxtLCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZT4oYXV0aGVu
dGljYXRpb25TY2hlbWUpKTsKKwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9OwpAQCAt
MTQxLDEyICsxNjEsMTggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OgogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDcmVkZW50aWFsPiB7
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3Qg
V2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKGNyZWRlbnRp
YWwudXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIHN0YXRpY19jYXN0PHVpbnQzMl90Pihj
cmVkZW50aWFsLnBlcnNpc3RlbmNlKCkpKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVu
dGlhbCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICAgICAgU3RyaW5n
IHVzZXI7CisgICAgICAgIFN0cmluZyBwYXNzd29yZDsKKyAgICAgICAgaW50IHBlcnNpc3RlbmNl
OworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQodXNlciwgcGFzc3dv
cmQsIHBlcnNpc3RlbmNlKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAor
ICAgICAgICBjcmVkZW50aWFsID0gV2ViQ29yZTo6Q3JlZGVudGlhbCh1c2VyLCBwYXNzd29yZCwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlPihwZXJzaXN0ZW5jZSkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9OwpJbmRleDogV2ViS2l0Mi9TaGFyZWQv
bWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1No
YXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiA3MzU2OSkKKysr
IFdlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDE2ICs2MCwyNiBAQCBib29sIGRlY29kZVJlc291cmNlUmVxdWVzdChBcmd1
bWVudERlY29kCiAKIHZvaWQgZW5jb2RlUmVzb3VyY2VSZXNwb25zZShBcmd1bWVudEVuY29kZXIq
IGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9u
c2UpCiB7CisgICAgYm9vbCByZXNwb25zZUlzUHJlc2VudCA9IHJlc291cmNlUmVzcG9uc2UubnNV
UkxSZXNwb25zZSgpOworICAgIGVuY29kZXItPmVuY29kZShyZXNwb25zZUlzUHJlc2VudCk7Cisg
ICAgCisgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS84NzQxNzk5PiAtIFdlIGNhbid0IHVz
ZSBOU0tleWVkQXJjaGl2ZXIgaGVyZS4KICAgICBlbmNvZGVXaXRoTlNLZXllZEFyY2hpdmVyKGVu
Y29kZXIsIHJlc291cmNlUmVzcG9uc2UubnNVUkxSZXNwb25zZSgpKTsKIH0KIAogYm9vbCBkZWNv
ZGVSZXNvdXJjZVJlc3BvbnNlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKKyAgICBib29sIHJlc3BvbnNlSXNQ
cmVzZW50OworICAgIGRlY29kZXItPmRlY29kZShyZXNwb25zZUlzUHJlc2VudCk7CisgICAgCisg
ICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS84NzQxNzk5PiAtIFdlIGNhbid0IHVzZSBOU0tl
eWVkQXJjaGl2ZXIgaGVyZS4KICAgICBOU1VSTFJlc3BvbnNlICpuc1VSTFJlc3BvbnNlID0gZGVj
b2RlV2l0aE5TS2V5ZWRBcmNoaXZlcihkZWNvZGVyKTsKLSAgICBpZiAoIW5zVVJMUmVzcG9uc2Up
CisgICAgaWYgKHJlc3BvbnNlSXNQcmVzZW50ICYmICFuc1VSTFJlc3BvbnNlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXNvdXJjZVJlc3BvbnNlID0gV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZShuc1VSTFJlc3BvbnNlKTsKKyAgICBpZiAocmVzcG9uc2VJc1ByZXNlbnQpCisgICAg
ICAgIHJlc291cmNlUmVzcG9uc2UgPSBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlKG5zVVJMUmVz
cG9uc2UpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L1dlYkxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
TG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsMTIgKzE1MiwxMiBAQCBi
b29sIFdlYkxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhCiAgICAgcmV0dXJuIG1fY2xp
ZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKHRvQVBJKHBh
Z2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHByb3RlY3Rpb25TcGFjZSksIG1fY2xpZW50LmNsaWVu
dEluZm8pOwogfQogCi12b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZy
YW1lLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSwgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKiBsaXN0ZW5lcikKK3ZvaWQgV2ViTG9h
ZGVyQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdlYlBh
Z2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkqIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewogICAgIGlmICghbV9jbGllbnQu
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFt
ZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSksIHRvQVBJKGxpc3RlbmVyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSh0b0FQSShwYWdlKSwgdG9B
UEkoZnJhbWUpLCB0b0FQSShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIG1fY2xpZW50LmNsaWVu
dEluZm8pOwogfQogCiB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkU3RhcnRQcm9ncmVzcyhXZWJQ
YWdlUHJveHkqIHBhZ2UpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAkocmV2
aXNpb24gNzM1NjkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSdW5JbnNl
Y3VyZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJT2Jq
ZWN0Kik7CiAgICAgCiAgICAgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlSW5GcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViUHJvdGVjdGlvblNw
YWNlKik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1l
KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5KiwgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKik7CisgICAgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1l
UHJveHkqLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Kik7CiAKICAgICB2b2lkIGRpZFN0
YXJ0UHJvZ3Jlc3MoV2ViUGFnZVByb3h5Kik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhX
ZWJQYWdlUHJveHkqKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNp
b24gNzM1NjkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTU5LDcgKzE1NTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZy
YW1lKGZyYW1lSUQpOwogICAgIFJlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNy
ZWF0ZShjb3JlQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCwgdGhpcyk7CiAgICAgCi0gICAgbV9sb2Fk
ZXJDbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSh0aGlzLCBm
cmFtZSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCksIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLT5saXN0ZW5lcigpKTsKKyAgICBtX2xvYWRlckNsaWVudC5kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VJbkZyYW1lKHRoaXMsIGZyYW1lLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3Qg
Y3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50VXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNh
Z2UsIHVpbnQ2NF90JiBuZXdRdW90YSkKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
QVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2Fz
dC5oCShyZXZpc2lvbiA3MzU2OSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2Fz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwxNCBAQAogI2luY2x1ZGUgIkNhY2hlTW9k
ZWwuaCIKICNpbmNsdWRlICJGb250U21vb3RoaW5nTGV2ZWwuaCIKICNpbmNsdWRlICJXS0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJXS0NyZWRlbnRpYWxUeXBlcy5oIgogI2luY2x1ZGUgIldLUGFnZS5o
IgogI2luY2x1ZGUgIldLUHJlZmVyZW5jZXNQcml2YXRlLmgiCisjaW5jbHVkZSAiV0tQcm90ZWN0
aW9uU3BhY2VUeXBlcy5oIgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQ3JlZGVudGlhbC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBl
cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCkBAIC0xNDcsNiArMTUyLDY3IEBAIGlubGluZSBXS0ZvbnRTbW9vdGhpbmdMZXZl
bCB0b0FQSShGb250U20KICAgICByZXR1cm4ga1dLRm9udFNtb290aGluZ0xldmVsTWVkaXVtOwog
fQogCitpbmxpbmUgV0tQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlIHRvQVBJKFdlYkNvcmU6OlBy
b3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAg
ICBjYXNlIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA6CisgICAgICAgIHJldHVy
biBrV0tQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlSFRUUDsKKyAgICBjYXNlIFdlYkNvcmU6OlBy
b3RlY3Rpb25TcGFjZVNlcnZlckhUVFBTOgorICAgICAgICByZXR1cm4ga1dLUHJvdGVjdGlvblNw
YWNlU2VydmVyVHlwZUhUVFBTOworICAgIGNhc2UgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlU2Vy
dmVyRlRQOgorICAgICAgICByZXR1cm4ga1dLUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZUZUUDsK
KyAgICBjYXNlIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZVNlcnZlckZUUFM6CisgICAgICAgIHJl
dHVybiBrV0tQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRlRQUzsKKyAgICBjYXNlIFdlYkNvcmU6
OlByb3RlY3Rpb25TcGFjZVByb3h5SFRUUDoKKyAgICAgICAgcmV0dXJuIGtXS1Byb3RlY3Rpb25T
cGFjZVByb3h5VHlwZUhUVFA7CisgICAgY2FzZSBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VQcm94
eUhUVFBTOgorICAgICAgICByZXR1cm4ga1dLUHJvdGVjdGlvblNwYWNlUHJveHlUeXBlSFRUUFM7
CisgICAgY2FzZSBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VQcm94eUZUUDoKKyAgICAgICAgcmV0
dXJuIGtXS1Byb3RlY3Rpb25TcGFjZVByb3h5VHlwZUZUUDsKKyAgICBjYXNlIFdlYkNvcmU6OlBy
b3RlY3Rpb25TcGFjZVByb3h5U09DS1M6CisgICAgICAgIHJldHVybiBrV0tQcm90ZWN0aW9uU3Bh
Y2VQcm94eVR5cGVTT0NLUzsKKyAgICB9CisgICAgcmV0dXJuIGtXS1Byb3RlY3Rpb25TcGFjZVNl
cnZlclR5cGVIVFRQOworfQorCitpbmxpbmUgV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlv
blNjaGVtZSB0b0FQSShXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVt
ZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6UHJvdGVj
dGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVEZWZhdWx0OgorICAgICAgICByZXR1cm4ga1dL
UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVEZWZhdWx0OworICAgIGNhc2UgV2Vi
Q29yZTo6UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVFRQQmFzaWM6CisgICAg
ICAgIHJldHVybiBrV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBCYXNp
YzsKKyAgICBjYXNlIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1l
SFRUUERpZ2VzdDoKKyAgICAgICAgcmV0dXJuIGtXS1Byb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0
aW9uU2NoZW1lSFRUUERpZ2VzdDsKKyAgICBjYXNlIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1
dGhlbnRpY2F0aW9uU2NoZW1lSFRNTEZvcm06CisgICAgICAgIHJldHVybiBrV0tQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUTUxGb3JtOworICAgIGNhc2UgV2ViQ29yZTo6UHJv
dGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVOVExNOgorICAgICAgICByZXR1cm4ga1dL
UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVOVExNOworICAgIGNhc2UgV2ViQ29y
ZTo6UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVOZWdvdGlhdGU6CisgICAgICAg
IHJldHVybiBrV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZU5lZ290aWF0ZTsK
KyAgICBjYXNlIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lQ2xp
ZW50Q2VydGlmaWNhdGVSZXF1ZXN0ZWQ6CisgICAgICAgIHJldHVybiBrV0tQcm90ZWN0aW9uU3Bh
Y2VBdXRoZW50aWNhdGlvblNjaGVtZUNsaWVudENlcnRpZmljYXRlUmVxdWVzdGVkOworICAgIGNh
c2UgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVz
dEV2YWx1YXRpb25SZXF1ZXN0ZWQ6CisgICAgICAgIHJldHVybiBrV0tQcm90ZWN0aW9uU3BhY2VB
dXRoZW50aWNhdGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZDsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4ga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25T
Y2hlbWVVbmtub3duOworICAgIH0KK30KKworaW5saW5lIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJz
aXN0ZW5jZSB0b0NyZWRlbnRpYWxQZXJzaXN0ZW5jZShXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZSB0
eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Uga1dLQ3JlZGVudGlhbFBlcnNp
c3RlbmNlTm9uZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5j
ZU5vbmU7CisgICAgY2FzZSBrV0tDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uOgorICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbjsKKyAg
ICBjYXNlIGtXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudDoKKyAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudDsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZTsKKyAgICB9
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjaWYgZGVmaW5lZChXSU4zMikgfHwgZGVm
aW5lZChfV0lOMzIpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgIldLQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaCIKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKKyNpbmNs
dWRlICJXZWJDcmVkZW50aWFsLmgiCisjaW5jbHVkZSAiV2ViUHJvdGVjdGlvblNwYWNlLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0zNCwz
ICszNiwyMyBAQCBXS1R5cGVJRCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0VHlwCiB7CiAg
ICAgcmV0dXJuIHRvQVBJKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OkFQSVR5cGUpOwog
fQorCitXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBXS0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlR2V0RGVjaXNpb25MaXN0ZW5lcihXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVm
IGNoYWxsZW5nZSkKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNoYWxsZW5nZSktPmxpc3Rl
bmVyKCkpOworfQorCitXS1Byb3RlY3Rpb25TcGFjZVJlZiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlR2V0UHJvdGVjdGlvblNwYWNlKFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYgY2hhbGxl
bmdlKQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY2hhbGxlbmdlKS0+cHJvdGVjdGlvblNw
YWNlKCkpOworfQorCitXS0NyZWRlbnRpYWxSZWYgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUdl
dFByb3Bvc2VkQ3JlZGVudGlhbChXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGNoYWxsZW5n
ZSkKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNoYWxsZW5nZSktPnByb3Bvc2VkQ3JlZGVu
dGlhbCgpKTsKK30KKworaW50IFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VHZXRQcmV2aW91c0Zh
aWx1cmVDb3VudChXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGNoYWxsZW5nZSkKK3sKKyAg
ICByZXR1cm4gdG9JbXBsKGNoYWxsZW5nZSktPnByZXZpb3VzRmFpbHVyZUNvdW50KCk7Cit9Cklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oCShyZXZpc2lvbiA3MzU2OSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMTEg
QEAgZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlR2V0VHlwZUlEKCk7CiAKK1dLX0VYUE9SVCBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25M
aXN0ZW5lclJlZiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0RGVjaXNpb25MaXN0ZW5lcihX
S0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmKTsKK1dLX0VYUE9SVCBXS1Byb3RlY3Rpb25TcGFj
ZVJlZiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKFdLQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VSZWYpOworV0tfRVhQT1JUIFdLQ3JlZGVudGlhbFJlZiBXS0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFsKFdLQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VSZWYpOworV0tfRVhQT1JUIGludCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0
UHJldmlvdXNGYWlsdXJlQ291bnQoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZik7CisKICNp
ZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0NyZWRlbnRpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ3JlZGVudGlhbC5jcHAJKHJldmlzaW9uIDczNTY5KQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tDcmVkZW50aWFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgIldLQ3JlZGVudGlhbC5oIgogCiAjaW5jbHVkZSAiV2ViQ3JlZGVudGlhbC5oIgor
I2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwpAQCAtMzQsMyArMzUsMTUgQEAgV0tUeXBlSUQgV0tDcmVkZW50aWFs
R2V0VHlwZUlEKCkKIHsKICAgICByZXR1cm4gdG9BUEkoV2ViQ3JlZGVudGlhbDo6QVBJVHlwZSk7
CiB9CisKK1dLQ3JlZGVudGlhbFJlZiBXS0NyZWRlbnRpYWxDcmVhdGUoV0tTdHJpbmdSZWYgdXNl
cm5hbWUsIFdLU3RyaW5nUmVmIHBhc3N3b3JkLCBXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJz
aXN0ZW5jZSkKK3sKKyAgICBSZWZQdHI8V2ViQ3JlZGVudGlhbD4gY3JlZGVudGlhbCA9IFdlYkNy
ZWRlbnRpYWw6OmNyZWF0ZSh0b0ltcGwodXNlcm5hbWUpLCB0b0ltcGwocGFzc3dvcmQpLCB0b0Ny
ZWRlbnRpYWxQZXJzaXN0ZW5jZShwZXJzaXN0ZW5jZSkpOworICAgIHJldHVybiB0b0FQSShjcmVk
ZW50aWFsLnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworfQorCitXS1N0cmluZ1JlZiBXS0NyZWRl
bnRpYWxDb3B5VXNlcihXS0NyZWRlbnRpYWxSZWYgY3JlZGVudGlhbFJlZikKK3sKKyAgICByZXR1
cm4gdG9Db3BpZWRBUEkodG9JbXBsKGNyZWRlbnRpYWxSZWYpLT51c2VyKCkpOworfQorCkluZGV4
OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuaAkocmV2aXNpb24gNzM1NjkpCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXS0NyZWRlbnRpYWxfaAogCiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ3JlZGVudGlhbFR5cGVzLmg+CiAK
ICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0zNCw2ICszNSw5IEBAIGV4dGVy
biAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tDcmVkZW50aWFsR2V0VHlwZUlEKCk7CiAK
K1dLX0VYUE9SVCBXS0NyZWRlbnRpYWxSZWYgV0tDcmVkZW50aWFsQ3JlYXRlKFdLU3RyaW5nUmVm
IHVzZXJuYW1lLCBXS1N0cmluZ1JlZiBwYXNzd29yZCwgV0tDcmVkZW50aWFsUGVyc2lzdGVuY2Up
OworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQ3JlZGVudGlhbENvcHlVc2VyKFdLQ3JlZGVudGlh
bFJlZik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWxUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbFR5cGVzLmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWxUeXBlcy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NyZWRlbnRpYWxUeXBlc19oCisj
ZGVmaW5lIFdLQ3JlZGVudGlhbFR5cGVzX2gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4g
IkMiIHsKKyNlbmRpZgorCitlbnVtIHsKKyAgICBrV0tDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25l
LAorICAgIGtXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24sCisgICAga1dLQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlUGVybWFuZW50Cit9OwordHlwZWRlZiB1aW50MzJfdCBXS0NyZWRlbnRp
YWxQZXJzaXN0ZW5jZTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlm
IC8qIFdLQ3JlZGVudGlhbFR5cGVzX2ggKi8KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
CShyZXZpc2lvbiA3MzU2OSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZFJl
bW92ZUZyYW1lRnJvbUgKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwg
V0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9p
ZCAoKldLUGFnZURpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJl
ZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pOwogdHlwZWRlZiBib29sICgqV0tQYWdlQ2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZUluRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVS
ZWYgZnJhbWUsIFdLUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VJbkZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVm
IGZyYW1lLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLCBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1l
UmVmIGZyYW1lLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAogLy8gUHJvZ3Jlc3MgQ2xpZW50CiB0
eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRTdGFydFByb2dyZXNzQ2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJvdGVjdGlvblNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5jcHAJKHJldmlzaW9uIDczNTY5KQorKysgV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCwzICszNCwzOCBAQCBXS1R5cGVJRCBXS1Byb3RlY3Rpb25TcGFjZUdldFR5cGVJRCgpCiB7
CiAgICAgcmV0dXJuIHRvQVBJKFdlYlByb3RlY3Rpb25TcGFjZTo6QVBJVHlwZSk7CiB9CisKK1dL
U3RyaW5nUmVmIFdLUHJvdGVjdGlvblNwYWNlQ29weUhvc3QoV0tQcm90ZWN0aW9uU3BhY2VSZWYg
cHJvdGVjdGlvblNwYWNlUmVmKQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwocHJv
dGVjdGlvblNwYWNlUmVmKS0+aG9zdCgpKTsKK30KKworaW50IFdLUHJvdGVjdGlvblNwYWNlR2V0
UG9ydChXS1Byb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2VSZWYpCit7CisgICAgcmV0
dXJuIHRvSW1wbChwcm90ZWN0aW9uU3BhY2VSZWYpLT5wb3J0KCk7Cit9CisKK1dLU3RyaW5nUmVm
IFdLUHJvdGVjdGlvblNwYWNlQ29weVJlYWxtKFdLUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rp
b25TcGFjZVJlZikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHByb3RlY3Rpb25T
cGFjZVJlZiktPnJlYWxtKCkpOworfQorCitib29sIFdLUHJvdGVjdGlvblNwYWNlR2V0SXNQcm94
eShXS1Byb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2VSZWYpCit7CisgICAgcmV0dXJu
IHRvSW1wbChwcm90ZWN0aW9uU3BhY2VSZWYpLT5pc1Byb3h5KCk7Cit9CisKK1dLUHJvdGVjdGlv
blNwYWNlU2VydmVyVHlwZSBXS1Byb3RlY3Rpb25TcGFjZUdldFNlcnZlclR5cGUoV0tQcm90ZWN0
aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlUmVmKQoreworICAgIHJldHVybiB0b0FQSSh0b0lt
cGwocHJvdGVjdGlvblNwYWNlUmVmKS0+c2VydmVyVHlwZSgpKTsKK30KKworYm9vbCBXS1Byb3Rl
Y3Rpb25TcGFjZUdldFJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KFdLUHJvdGVjdGlvblNwYWNl
UmVmIHByb3RlY3Rpb25TcGFjZVJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByb3RlY3Rpb25T
cGFjZVJlZiktPnJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCk7Cit9CisKK1dLUHJvdGVjdGlv
blNwYWNlQXV0aGVudGljYXRpb25TY2hlbWUgV0tQcm90ZWN0aW9uU3BhY2VHZXRBdXRoZW50aWNh
dGlvblNjaGVtZShXS1Byb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2VSZWYpCit7Cisg
ICAgcmV0dXJuIHRvQVBJKHRvSW1wbChwcm90ZWN0aW9uU3BhY2VSZWYpLT5hdXRoZW50aWNhdGlv
blNjaGVtZSgpKTsKK30KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlv
blNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0
aW9uU3BhY2UuaAkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1Byb3RlY3Rpb25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVm
aW5lIFdLUHJvdGVjdGlvblNwYWNlX2gKIAogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+Cisj
aW5jbHVkZSA8V2ViS2l0Mi9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmg+CiAKICNpZmRlZiBfX2Nw
bHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0zNCw2ICszNSwxNCBAQCBleHRlcm4gIkMiIHsKIAog
V0tfRVhQT1JUIFdLVHlwZUlEIFdLUHJvdGVjdGlvblNwYWNlR2V0VHlwZUlEKCk7CiAKK1dLX0VY
UE9SVCBXS1N0cmluZ1JlZiBXS1Byb3RlY3Rpb25TcGFjZUNvcHlIb3N0KFdLUHJvdGVjdGlvblNw
YWNlUmVmKTsKK1dLX0VYUE9SVCBpbnQgV0tQcm90ZWN0aW9uU3BhY2VHZXRQb3J0KFdLUHJvdGVj
dGlvblNwYWNlUmVmKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1Byb3RlY3Rpb25TcGFjZUNv
cHlSZWFsbShXS1Byb3RlY3Rpb25TcGFjZVJlZik7CitXS19FWFBPUlQgYm9vbCBXS1Byb3RlY3Rp
b25TcGFjZUdldElzUHJveHkoV0tQcm90ZWN0aW9uU3BhY2VSZWYpOworV0tfRVhQT1JUIFdLUHJv
dGVjdGlvblNwYWNlU2VydmVyVHlwZSBXS1Byb3RlY3Rpb25TcGFjZUdldFNlcnZlclR5cGUoV0tQ
cm90ZWN0aW9uU3BhY2VSZWYpOworV0tfRVhQT1JUIGJvb2wgV0tQcm90ZWN0aW9uU3BhY2VHZXRS
ZWNlaXZlc0NyZWRlbnRpYWxTZWN1cmVseShXS1Byb3RlY3Rpb25TcGFjZVJlZik7CitXS19FWFBP
UlQgV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBXS1Byb3RlY3Rpb25TcGFj
ZUdldEF1dGhlbnRpY2F0aW9uU2NoZW1lKFdLUHJvdGVjdGlvblNwYWNlUmVmKTsKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UHJvdGVjdGlvblNwYWNlVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLUHJvdGVjdGlvblNwYWNlVHlwZXNf
aAorI2RlZmluZSBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzX2gKKworI2luY2x1ZGUgPFdlYktpdDIv
V0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwor
ZW51bSB7CisgICAga1dLUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZUhUVFAgPSAxLAorICAgIGtX
S1Byb3RlY3Rpb25TcGFjZVNlcnZlclR5cGVIVFRQUywKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VT
ZXJ2ZXJUeXBlRlRQLAorICAgIGtXS1Byb3RlY3Rpb25TcGFjZVNlcnZlclR5cGVGVFBTLAorICAg
IGtXS1Byb3RlY3Rpb25TcGFjZVByb3h5VHlwZUhUVFAsCisgICAga1dLUHJvdGVjdGlvblNwYWNl
UHJveHlUeXBlSFRUUFMsCisgICAga1dLUHJvdGVjdGlvblNwYWNlUHJveHlUeXBlRlRQLAorICAg
IGtXS1Byb3RlY3Rpb25TcGFjZVByb3h5VHlwZVNPQ0tTLAorfTsKK3R5cGVkZWYgdWludDMyX3Qg
V0tQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlOworCitlbnVtICB7CisgICAga1dLUHJvdGVjdGlv
blNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVEZWZhdWx0ID0gMSwKKyAgICBrV0tQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBCYXNpYywKKyAgICBrV0tQcm90ZWN0aW9uU3Bh
Y2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBEaWdlc3QsCisgICAga1dLUHJvdGVjdGlvblNwYWNl
QXV0aGVudGljYXRpb25TY2hlbWVIVE1MRm9ybSwKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VBdXRo
ZW50aWNhdGlvblNjaGVtZU5UTE0sCisgICAga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRp
b25TY2hlbWVOZWdvdGlhdGUsCisgICAga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25T
Y2hlbWVDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3RlZCwKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VB
dXRoZW50aWNhdGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZCwKKyAgICBr
V0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVVua25vd24gPSAxMDAsCit9Owor
dHlwZWRlZiB1aW50MzJfdCBXS1Byb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lOwor
CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tQcm90ZWN0aW9u
U3BhY2VUeXBlc19oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAkocmV2
aXNpb24gNzM1NjkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIldlYkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm90ZWN0aW9uU3Bh
Y2UuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ3LDcgKzQ4LDcgQEAgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eTo6fkF1dGhlbnRpYwogewogICAgIC8vIElmIGFuIG91dHN0YW5k
aW5nIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkgaXMgYmVpbmcgZGVzdHJveWVkIGV2ZW4g
dGhvdWdoIGl0IGhhc24ndCBiZWVuIHJlc3BvbmRlZCB0byB5ZXQsCiAgICAgLy8gd2UgY2FuY2Vs
IGl0IGhlcmUgc28gdGhlIFdlYlByb2Nlc3MgaXNuJ3Qgd2FpdGluZyBmb3IgYW4gYW5zd2VyIGZv
cmV2ZXIuCi0gICAgaWYgKG1fY2hhbGxlbmdlSUQpCisgICAgaWYgKG1fY2hhbGxlbmdlSUQgJiYg
bV9wYWdlLT5wcm9jZXNzKCkpCiAgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkNhbmNlbENoYWxsZW5nZShtX2NoYWxsZW5nZUlE
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAKICAgICBpZiAobV9saXN0ZW5lcikKQEAgLTc3LDQgKzc4
LDIwIEBAIHZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y2FuY2UKICAgICBtX2No
YWxsZW5nZUlEID0gMDsKIH0KIAorV2ViQ3JlZGVudGlhbCogQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eTo6cHJvcG9zZWRDcmVkZW50aWFsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fd2ViQ3Jl
ZGVudGlhbCkKKyAgICAgICAgbV93ZWJDcmVkZW50aWFsID0gV2ViQ3JlZGVudGlhbDo6Y3JlYXRl
KG1fY29yZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKTsKKyAg
ICAgICAgCisgICAgcmV0dXJuIG1fd2ViQ3JlZGVudGlhbC5nZXQoKTsKK30KKworV2ViUHJvdGVj
dGlvblNwYWNlKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Ojpwcm90ZWN0aW9uU3BhY2Uo
KSBjb25zdAoreworICAgIGlmICghbV93ZWJQcm90ZWN0aW9uU3BhY2UpCisgICAgICAgIG1fd2Vi
UHJvdGVjdGlvblNwYWNlID0gV2ViUHJvdGVjdGlvblNwYWNlOjpjcmVhdGUobV9jb3JlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAgICAKKyAgICByZXR1
cm4gbV93ZWJQcm90ZWN0aW9uU3BhY2UuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaAkocmV2aXNpb24gNzM1NjkpCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CiBjbGFzcyBXZWJDcmVk
ZW50aWFsOwogY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJvdGVjdGlvblNwYWNlOwog
CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5IDogcHVibGljIEFQSU9iamVjdCB7
CiBwdWJsaWM6CkBAIC01Nyw2ICs1OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbCgpOwog
CiAgICAgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKiBsaXN0ZW5lcigpIGNvbnN0IHsg
cmV0dXJuIG1fbGlzdGVuZXIuZ2V0KCk7IH0KKyAgICBXZWJDcmVkZW50aWFsKiBwcm9wb3NlZENy
ZWRlbnRpYWwoKSBjb25zdDsKKyAgICBXZWJQcm90ZWN0aW9uU3BhY2UqIHByb3RlY3Rpb25TcGFj
ZSgpIGNvbnN0OworICAgIGludCBwcmV2aW91c0ZhaWx1cmVDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29yZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCk7IH0K
IAogcHJpdmF0ZToKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgdWludDY0X3QgY2hhbGxlbmdlSUQsIFdlYlBh
Z2VQcm94eSogcGFnZSk7CkBAIC02Nyw2ICs3MSw4IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3Qg
bV9jaGFsbGVuZ2VJRDsKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBtX3BhZ2U7CiAgICAgUmVm
UHRyPEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcj4gbV9saXN0ZW5lcjsKKyAgICBtdXRh
YmxlIFJlZlB0cjxXZWJDcmVkZW50aWFsPiBtX3dlYkNyZWRlbnRpYWw7CisgICAgbXV0YWJsZSBS
ZWZQdHI8V2ViUHJvdGVjdGlvblNwYWNlPiBtX3dlYlByb3RlY3Rpb25TcGFjZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRp
b24vV2ViQ3JlZGVudGlhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHAJKHJldmlzaW9uIDczNTY5KQorKysgV2ViS2l0
Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDkgKzI3LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitXZWJDcmVkZW50
aWFsOjpXZWJDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwp
CisgICAgOiBtX2NvcmVDcmVkZW50aWFsKGNyZWRlbnRpYWwpCit7Cit9CisKIGNvbnN0IFdlYkNv
cmU6OkNyZWRlbnRpYWwmIFdlYkNyZWRlbnRpYWw6OmNvcmUoKQogewogICAgIHJldHVybiBtX2Nv
cmVDcmVkZW50aWFsOwogfQogCitjb25zdCBTdHJpbmcmIFdlYkNyZWRlbnRpYWw6OnVzZXIoKSBj
b25zdAoreworICAgIHJldHVybiBtX2NvcmVDcmVkZW50aWFsLnVzZXIoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9X
ZWJDcmVkZW50aWFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGlj
YXRpb24vV2ViQ3JlZGVudGlhbC5oCShyZXZpc2lvbiA3MzU2OSkKKysrIFdlYktpdDIvVUlQcm9j
ZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsOCBAQAogI2RlZmluZSBXZWJDcmVkZW50aWFsX2gKIAogI2luY2x1ZGUgIkFQSU9iamVj
dC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50
aWFsLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtMzcsMTUgKzM5LDIyIEBA
IGNsYXNzIFdlYkNyZWRlbnRpYWwgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUNyZWRlbnRpYWw7CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJDcmVkZW50aWFsPiBjcmVhdGUoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYkNyZWRlbnRpYWw+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50
aWFsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDcmVkZW50aWFsKCkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNyZWRlbnRpYWwoY3JlZGVudGlhbCkp
OworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDcmVkZW50aWFsPiBjcmVh
dGUoV2ViU3RyaW5nKiB1c2VybmFtZSwgV2ViU3RyaW5nKiBwYXNzd29yZCwgV2ViQ29yZTo6Q3Jl
ZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJDcmVkZW50aWFsKFdlYkNvcmU6OkNyZWRlbnRpYWwodXNlcm5hbWUtPnN0
cmluZygpLCBwYXNzd29yZC0+c3RyaW5nKCksIHBlcnNpc3RlbmNlKSkpOwogICAgIH0KICAgICAK
ICAgICBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjb3JlKCk7CiAKKyAgICBjb25zdCBTdHJp
bmcmIHVzZXIoKSBjb25zdDsKKyAgICAKIHByaXZhdGU6Ci0gICAgV2ViQ3JlZGVudGlhbCgpOwor
ICAgIFdlYkNyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpOwogCiAgICAgdmly
dHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CiAKSW5kZXg6IFdlYktp
dDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNw
YWNlLmNwcAkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMiArMjUs
NDggQEAKIAogI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgogCisjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYlByb3RlY3Rp
b25TcGFjZTo6V2ViUHJvdGVjdGlvblNwYWNlKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFj
ZSYgY29yZVByb3RlY3Rpb25TcGFjZSkKICAgICA6IG1fY29yZVByb3RlY3Rpb25TcGFjZShjb3Jl
UHJvdGVjdGlvblNwYWNlKQogeworfQorCitjb25zdCBTdHJpbmcmIFdlYlByb3RlY3Rpb25TcGFj
ZTo6aG9zdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29yZVByb3RlY3Rpb25TcGFjZS5ob3N0
KCk7Cit9CisKK2ludCBXZWJQcm90ZWN0aW9uU3BhY2U6OnBvcnQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvcmVQcm90ZWN0aW9uU3BhY2UucG9ydCgpOworfQorCitjb25zdCBTdHJpbmcmIFdl
YlByb3RlY3Rpb25TcGFjZTo6cmVhbG0oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvcmVQcm90
ZWN0aW9uU3BhY2UucmVhbG0oKTsKK30KIAorYm9vbCBXZWJQcm90ZWN0aW9uU3BhY2U6OmlzUHJv
eHkoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvcmVQcm90ZWN0aW9uU3BhY2UuaXNQcm94eSgp
OworfQorCitXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlIFdlYlByb3RlY3Rpb25T
cGFjZTo6c2VydmVyVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29yZVByb3RlY3Rpb25T
cGFjZS5zZXJ2ZXJUeXBlKCk7Cit9CisKK2Jvb2wgV2ViUHJvdGVjdGlvblNwYWNlOjpyZWNlaXZl
c0NyZWRlbnRpYWxTZWN1cmVseSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29yZVByb3RlY3Rp
b25TcGFjZS5yZWNlaXZlc0NyZWRlbnRpYWxTZWN1cmVseSgpOworfQorCitXZWJDb3JlOjpQcm90
ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBXZWJQcm90ZWN0aW9uU3BhY2U6OmF1dGhl
bnRpY2F0aW9uU2NoZW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb3JlUHJvdGVjdGlvblNw
YWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJv
dGVjdGlvblNwYWNlLmgJKHJldmlzaW9uIDczNTY5KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYg
KzQwLDE1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
UHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkpOwogICAgIH0KKyAgICAKKyAgICBjb25z
dCBTdHJpbmcmIHByb3RvY29sKCkgY29uc3Q7CisgICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29u
c3Q7CisgICAgaW50IHBvcnQoKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIHJlYWxtKCkgY29u
c3Q7CisgICAgYm9vbCBpc1Byb3h5KCkgY29uc3Q7CisgICAgV2ViQ29yZTo6UHJvdGVjdGlvblNw
YWNlU2VydmVyVHlwZSBzZXJ2ZXJUeXBlKCkgY29uc3Q7CisgICAgYm9vbCByZWNlaXZlc0NyZWRl
bnRpYWxTZWN1cmVseSgpIGNvbnN0OworICAgIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1dGhl
bnRpY2F0aW9uU2NoZW1lIGF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgV2ViUHJvdGVjdGlvblNwYWNlKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYp
OwpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDczNTY5KQorKysgV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsOCBAQAogCQk1MTZBNEE1RDEyMEEyQ0NEMDBD
MDVCN0YgLyogV2ViRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oICovOyB9Owog
CQk1MTg3MUI1QjEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NzFCNTkxMjdDQjg5RDAw
Rjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCAqLzsgfTsKIAkJNTE4NzFCNUMxMjdDQjg5RDAw
Rjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1l
bnUuaCAqLzsgfTsKKwkJNTE4QUNBRUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNw
YWNlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxOEFDQUU5MTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk1MThBQ0YxMTEy
QjAxNUY4MDBCMDRCODMgLyogV0tDcmVkZW50aWFsVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEFDRjEwMTJCMDE1RjgwMEIwNEI4MyAvKiBX
S0NyZWRlbnRpYWxUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywg
KTsgfTsgfTsKIAkJNTFBNTU1RjUxMjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVt
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTU1
NUYzMTI4QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5jcHAgKi87IH07CiAJCTUx
QTU1NUY2MTI4QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNTU1RjQxMjhDNkM0NzAwOUFC
Q0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHVibGljLCApOyB9OyB9OwogCQk1MUE1NTYwMTEyOEM2RDkyMDA5QUJDRUMgLyogV0tDb250ZXh0
TWVudUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFBNTU2MDAxMjhDNkQ5MjAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtVHlwZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC04NjMs
NiArODY1LDggQEAKIAkJNTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIFdlYkVycm9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkVycm9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVu
dS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVu
dS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjVBMTI3Q0I4OUQwMEY3
NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MThBQ0FF
OTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxOEFDRjEwMTJCMDE1RjgwMEIwNEI4MyAvKiBXS0NyZWRl
bnRpYWxUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NyZWRlbnRp
YWxUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE1NTVGMzEyOEM2QzQ3
MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0tDb250ZXh0TWVudUl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUE1NTVGNDEyOEM2QzQ3MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0TWVudUl0ZW0uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNTU2MDAxMjhDNkQ5MjAwOUFCQ0VDIC8q
IFdLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTkwNCw2ICsxOTA4LDcgQEAKIAkJCQlCQ0M5MzhFMDExODBERTQ0MDA4NUU1RkUgLyogV0tD
b250ZXh0UHJpdmF0ZS5oICovLAogCQkJCTUxMkY1OEYxMTJBODhBNTQwMDYyOTUzMCAvKiBXS0Ny
ZWRlbnRpYWwuY3BwICovLAogCQkJCTUxMkY1OEYyMTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRl
bnRpYWwuaCAqLywKKwkJCQk1MThBQ0YxMDEyQjAxNUY4MDBCMDRCODMgLyogV0tDcmVkZW50aWFs
VHlwZXMuaCAqLywKIAkJCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5j
cHAgKi8sCiAJCQkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCAqLywK
IAkJCQlCQ0U0Njk1NzEyMTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVy
LmNwcCAqLywKQEAgLTE5MjksNiArMTkzNCw3IEBACiAJCQkJNzYyQjc0ODQxMjBCQkEyRDAwODE5
MzM5IC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmggKi8sCiAJCQkJNTEyRjU4RjMxMkE4OEE1NDAw
NjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmNwcCAqLywKIAkJCQk1MTJGNThGNDEyQTg4QTU0
MDA2Mjk1MzAgLyogV0tQcm90ZWN0aW9uU3BhY2UuaCAqLywKKwkJCQk1MThBQ0FFOTEyQUVFNkJC
MDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBDOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI2MzQsNiArMjY0MCw4IEBACiAJ
CQkJNTEyRjU4RkMxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNjM0NDQ1NjEyQTg4NUM4MDAwNjEyRDggLyogV2ViU2VjdXJpdHlPcmln
aW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MzQ0NDVEMTJBODg1RTkwMDA2MTJEOCAvKiBXS1Nl
Y3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MThBQ0FFQTEyQUVFNkJCMDBCMDRC
ODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4QUNG
MTExMkIwMTVGODAwQjA0QjgzIC8qIFdLQ3JlZGVudGlhbFR5cGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzJEMDIxNzEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMkQwMjE5MTJBQzQyNkMwMEU3MzJBMyAvKiBXS1Bh
Z2VMb2FkVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2QTI1RkREMTJBREM2Q0MwMERDNDBD
QyAvKiBXZWJEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogV2ViS2l0Mi93
aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3By
b2oJKHJldmlzaW9uIDczNTY5KQorKysgV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtp
bmcgY29weSkKQEAgLTIxMjUsNiArMjEyNSwxMCBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJ
CQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS0NyZWRl
bnRpYWxUeXBlcy5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCiAJCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS0Rvd25sb2FkLmNwcCIKIAkJCQkJCT4K
IAkJCQkJPC9GaWxlPgpAQCAtMjIyNCw2ICsyMjI4LDEwIEBACiAJCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS1Byb3RlY3Rpb25TcGFjZS5oIgogCQkJCQkJPgogCQkJCQk8
L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElc
Q1xXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmgiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KIAkJCQkJ
PEZpbHRlcgogCQkJCQkJTmFtZT0id2luIgogCQkJCQkJPgpJbmRleDogV2ViS2l0Mi93aW4vV2Vi
S2l0MkdlbmVyYXRlZC5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDJHZW5l
cmF0ZWQubWFrZQkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyR2VuZXJh
dGVkLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgYWxsOgogICAgIHhjb3B5
IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tDb250ZXh0LmgiICIkKFdFQktJVE9VVFBVVERJ
UilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENc
V0tDb250ZXh0UHJpdmF0ZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIK
ICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLQ3JlZGVudGlhbC5oIiAiJChX
RUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKKyAgICB4Y29weSAveSAvZCAiLi5cVUlQ
cm9jZXNzXEFQSVxDXFdLQ3JlZGVudGlhbFR5cGVzLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5j
bHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tEb3du
bG9hZC5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAv
eSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oIiAiJChX
RUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cVUlQ
cm9jZXNzXEFQSVxDXFdLRnJhbWUuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktp
dDIiCkBAIC01Myw2ICs1NCw3IEBAIGFsbDoKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNz
XEFQSVxDXFdLUHJlZmVyZW5jZXMuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktp
dDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAv
eSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLUHJvdGVjdGlvblNwYWNlLmgiICIkKFdFQktJVE9V
VFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgorICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3Nc
QVBJXENcV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1
ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXHdpblxXS0Nv
bnRleHRQcml2YXRlV2luLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgog
ICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcd2luXFdLVmlldy5oIiAiJChXRUJL
SVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9j
ZXNzXEFQSVxDXHdpblxXS1ZpZXdQcml2YXRlLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVk
ZVxXZWJLaXQyIgo=
</data>
<flag name="commit-queue"
          id="66856"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75995</attachid>
            <date>2010-12-08 17:48:14 -0800</date>
            <delta_ts>2010-12-09 00:26:15 -0800</delta_ts>
            <desc>Stage 2 v3 - Now with more building all around</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>46346</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzU2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTAtMTItMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NjYwNzMzPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUwMTkxCisgICAgICAgIFdlYktpdDIgQXV0aGVudGljYXRpb24gU3VwcG9ydAor
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisKIDIwMTAtMTItMDggIENocmlzIFJvZ2VycyAg
PGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3Nl
bGwuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDczNTY5KQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw3IEBAIF9fWk4zSlNDOEJpbmRpbmdzOElu
c3RhbmNlMTZuZXdSdW50aW1lT2IKIF9fWk4zV1RGMTBTdHJpbmdJbXBsY3ZQOE5TU3RyaW5nRXYK
IF9fWk4zV1RGNlN0cmluZ0MxRVA4TlNTdHJpbmcKIF9fWk4zV1RGNlN0cmluZ0MxRVBLMTBfX0NG
U3RyaW5nCitfX1pON1dlYkNvcmUxMENyZWRlbnRpYWxDMUVSS04zV1RGNlN0cmluZ0VTNF9OU18y
MUNyZWRlbnRpYWxQZXJzaXN0ZW5jZUUKIF9fWk43V2ViQ29yZTEwQ3JlZGVudGlhbEMxRXYKIF9f
Wk43V2ViQ29yZTEwSlNEb2N1bWVudDZzX2luZm9FCiBfX1pON1dlYkNvcmUxME1vdXNlRXZlbnRD
MUVSS04zV1RGMTJBdG9taWNTdHJpbmdFYmJOUzFfMTBQYXNzUmVmUHRySU5TXzlET01XaW5kb3dF
RUVpaWlpaWJiYmJ0TlM1X0lOU18xMUV2ZW50VGFyZ2V0RUVFTlM1X0lOU185Q2xpcGJvYXJkRUVF
YgpAQCAtMzcxLDYgKzM3Miw3IEBAIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OXRyYW5z
bGF0ZUUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0QzFFUDlDR0NvbnRleHQKIF9fWk43
V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0RDFFdgogX19aTjdXZWJDb3JlMTVKU0RPTVdpbmRvd0Jh
c2UxOGNvbW1vbkpTR2xvYmFsRGF0YUV2CitfX1pON1dlYkNvcmUxNVByb3RlY3Rpb25TcGFjZUMx
RVJLTjNXVEY2U3RyaW5nRWlOU18yNVByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGVFUzRfTlNfMzVQ
cm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUUKIF9fWk43V2ViQ29yZTE1UHJvdGVj
dGlvblNwYWNlQzFFdgogX19aTjdXZWJDb3JlMTVTY3JvbGxBbGlnbm1lbnQxN2FsaWduQ2VudGVy
QWx3YXlzRQogX19aTjdXZWJDb3JlMTVTY3JvbGxBbGlnbm1lbnQxOWFsaWduVG9FZGdlSWZOZWVk
ZWRFCkBAIC01MDcsNiArNTA5LDcgQEAgX19aTjdXZWJDb3JlMjJjb250ZXh0TWVudUl0ZW1UYWdC
b2xkRXYKIF9fWk43V2ViQ29yZTIyY291bnRlclZhbHVlRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRF
CiBfX1pON1dlYkNvcmUyMmNyZWF0ZUZyYWdtZW50RnJvbVRleHRFUE5TXzVSYW5nZUVSS04zV1RG
NlN0cmluZ0UKIF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfNUZyYW1l
RWoKK19fWk43V2ViQ29yZTIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDMUVSS05TXzE1UHJvdGVj
dGlvblNwYWNlRVJLTlNfMTBDcmVkZW50aWFsRWpSS05TXzE2UmVzb3VyY2VSZXNwb25zZUVSS05T
XzEzUmVzb3VyY2VFcnJvckUKIF9fWk43V2ViQ29yZTIzUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmRD
MUVQTlNfOERvY3VtZW50RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE2RG9jdW1lbnRGcmFnbWVudEVF
RWJiYmJiTlNfMTBFZGl0QWN0aW9uRQogX19aTjdXZWJDb3JlMjNjcmVhdGVGcmFnbWVudEZyb21O
b2Rlc0VQTlNfOERvY3VtZW50RVJLTjNXVEY2VmVjdG9ySVBOU180Tm9kZUVMbTBFRUUKIF9fWk43
V2ViQ29yZTIzb3ZlcnJpZGVEZWZhdWx0TGFuZ3VhZ2VFUktOM1dURjZTdHJpbmdFCkBAIC05MTQs
NiArOTE3LDkgQEAgX19aTjdXZWJDb3JlOXBsYWluVGV4dEVQS05TXzVSYW5nZUVOU18yMAogX19a
TjdXZWJDb3JlOXRvRWxlbWVudEVOM0pTQzdKU1ZhbHVlRQogX19aTkszSlNDOEJpbmRpbmdzMTBS
b290T2JqZWN0MTJnbG9iYWxPYmplY3RFdgogX19aTkszV1RGNlN0cmluZzE0Y3JlYXRlQ0ZTdHJp
bmdFdgorX19aTks3V2ViQ29yZTEwQ3JlZGVudGlhbDExcGVyc2lzdGVuY2VFdgorX19aTks3V2Vi
Q29yZTEwQ3JlZGVudGlhbDR1c2VyRXYKK19fWk5LN1dlYkNvcmUxMENyZWRlbnRpYWw4cGFzc3dv
cmRFdgogX19aTks3V2ViQ29yZTEwRmxvYXRQb2ludGN2OF9OU1BvaW50RXYKIF9fWk5LN1dlYkNv
cmUxMFBsdWdpbkRhdGExNnN1cHBvcnRzTWltZVR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdX
ZWJDb3JlMTBSZW5kZXJUZXh0MTZsaW5lc0JvdW5kaW5nQm94RXYKQEAgLTEwMTMsNiArMTAxOSwx
MiBAQCBfX1pOSzdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxOGZvY3VzZWRPCiBfX1pOSzdXZWJD
b3JlMTVHcmFwaGljc0NvbnRleHQxNXBsYXRmb3JtQ29udGV4dEV2CiBfX1pOSzdXZWJDb3JlMTVH
cmFwaGljc0NvbnRleHQxNnBhaW50aW5nRGlzYWJsZWRFdgogX19aTks3V2ViQ29yZTE1UHJvZ3Jl
c3NUcmFja2VyMTdlc3RpbWF0ZWRQcm9ncmVzc0V2CitfX1pOSzdXZWJDb3JlMTVQcm90ZWN0aW9u
U3BhY2UxMHNlcnZlclR5cGVFdgorX19aTks3V2ViQ29yZTE1UHJvdGVjdGlvblNwYWNlMjZyZWNl
aXZlc0NyZWRlbnRpYWxTZWN1cmVseUV2CitfX1pOSzdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2U0
aG9zdEV2CitfX1pOSzdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2U0cG9ydEV2CitfX1pOSzdXZWJD
b3JlMTVQcm90ZWN0aW9uU3BhY2U1cmVhbG1FdgorX19aTks3V2ViQ29yZTE1UHJvdGVjdGlvblNw
YWNlN2lzUHJveHlFdgogX19aTks3V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0MTJuc1VSTFJlcXVl
c3RFdgogX19aTks3V2ViQ29yZTE1VmlzaWJsZVBvc2l0aW9uMTRjaGFyYWN0ZXJBZnRlckV2CiBf
X1pOSzdXZWJDb3JlMTVWaXNpYmxlUG9zaXRpb24xNGxvY2FsQ2FyZXRSZWN0RVJQTlNfMTJSZW5k
ZXJPYmplY3RFCkBAIC0xMDU4LDYgKzEwNzAsMTEgQEAgX19aTks3V2ViQ29yZTIzQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UyMAogX19aTks3V2ViQ29yZTIzRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUx
NWZpcnN0TGF5b3V0RG9uZUV2CiBfX1pOSzdXZWJDb3JlMjNGcmFtZUxvYWRlclN0YXRlTWFjaGlu
ZTIzY29tbWl0dGluZ0ZpcnN0UmVhbExvYWRFdgogX19aTks3V2ViQ29yZTI2TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXI2aXNEb25lRXYKK19fWk5LN1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQmFzZTE1ZmFpbHVyZVJlc3BvbnNlRXYKK19fWk5LN1dlYkNvcmUyN0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQmFzZTE1cHJvdGVjdGlvblNwYWNlRXYKK19fWk5LN1dlYkNvcmUyN0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTE4cHJvcG9zZWRDcmVkZW50aWFsRXYKK19fWk5LN1dlYkNv
cmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTIwcHJldmlvdXNGYWlsdXJlQ291bnRFdgor
X19aTks3V2ViQ29yZTI3QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlNWVycm9yRXYKIF9fWk5L
N1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTZpc051bGxFdgogX19aTks3V2Vi
Q29yZTRGb250MTBmbG9hdFdpZHRoRVJLTlNfN1RleHRSdW5FUE4zV1RGN0hhc2hTZXRJUEtOU18x
NFNpbXBsZUZvbnREYXRhRU5TNF83UHRySGFzaElTOF9FRU5TNF8xMEhhc2hUcmFpdHNJUzhfRUVF
RVBOU18xM0dseXBoT3ZlcmZsb3dFCiBfX1pOSzdXZWJDb3JlNEZvbnQ4ZHJhd1RleHRFUE5TXzE1
R3JhcGhpY3NDb250ZXh0RVJLTlNfN1RleHRSdW5FUktOU18xMEZsb2F0UG9pbnRFaWkKSW5kZXg6
IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiA3MzU3MykKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsODYgQEAKKzIwMTAtMTItMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83NjYwNzMzPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTUwMTkxCisgICAgICAgIFdlYktpdDIgQXV0aGVudGljYXRpb24gU3VwcG9ydAorCisgICAg
ICAgIEltcGxlbWVudCBhdXRoZW50aWNhdGlvbi1yZWxhdGVkIGNvZGVyczoKKyAgICAgICAgKiBT
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisKKyAgICAgICAgQWxsb3cgdGhlIFJlc291
cmNlUmVzcG9uc2UgY29kZXJzIHRvIGhhbmRsZSBudWxsIHJlc3BvbnNlczoKKyAgICAgICAgKiBT
aGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKENvcmVJUEM6
OmVuY29kZVJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAoQ29yZUlQQzo6ZGVjb2RlUmVzb3Vy
Y2VSZXNwb25zZSk6CisKKyAgICAgICAgQWRkIG5ldyBBUEkgYW5kIEltcGwgY2FzdHMgZm9yIFBy
b3RlY3Rpb25TcGFjZSBhbmQgQ3JlZGVudGlhbCBlbnVtczoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKFdl
YktpdDo6dG9DcmVkZW50aWFsUGVyc2lzdGVuY2UpOgorCisgICAgICAgIE1vdmUgdGhlIERlY2lz
aW9uTGlzdGVuZXIgdG8gYmUgYWNjZXNzZWQgb2ZmIHRoZSBjaGFsbGVuZ2UgaXRzZWxmLCBhbmQg
ZmlsbCBpbiBvdGhlcgorICAgICAgICBuZWNlc3NhcnkgQVBJOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcDoKKyAgICAgICAgKFdLQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VHZXREZWNpc2lvbkxpc3RlbmVyKToKKyAgICAgICAgKFdLQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV0tBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbCk6CisgICAgICAgIChXS0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlR2V0UHJldmlvdXNGYWlsdXJlQ291bnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Ojp+QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk6OnByb3Bvc2VkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OnByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6cHJldmlvdXNGYWls
dXJlQ291bnQpOgorCisgICAgICAgIEZpbGwgaW4gc29tZSBjcmVkZW50aWFsIEFQSToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdLQ3JlZGVu
dGlhbENyZWF0ZSk6CisgICAgICAgIChXS0NyZWRlbnRpYWxDb3B5VXNlcik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NyZWRlbnRpYWxUeXBlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVu
dGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNyZWRlbnRp
YWw6OldlYkNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDcmVkZW50aWFsOjp1c2Vy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDcmVkZW50aWFsOjpjcmVhdGUpOgorCisgICAgICAgIEZpbGwg
aW4gc29tZSBwcm90ZWN0aW9uIHNwYWNlIEFQSToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tQcm90ZWN0aW9uU3BhY2UuY3BwOgorICAgICAgICAoV0tQcm90ZWN0aW9uU3BhY2VDb3B5SG9z
dCk6CisgICAgICAgIChXS1Byb3RlY3Rpb25TcGFjZUdldFBvcnQpOgorICAgICAgICAoV0tQcm90
ZWN0aW9uU3BhY2VDb3B5UmVhbG0pOgorICAgICAgICAoV0tQcm90ZWN0aW9uU3BhY2VHZXRJc1By
b3h5KToKKyAgICAgICAgKFdLUHJvdGVjdGlvblNwYWNlR2V0U2VydmVyVHlwZSk6CisgICAgICAg
IChXS1Byb3RlY3Rpb25TcGFjZUdldFJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KToKKyAgICAg
ICAgKFdLUHJvdGVjdGlvblNwYWNlR2V0QXV0aGVudGljYXRpb25TY2hlbWUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm90ZWN0aW9uU3BhY2U6OldlYlByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZTo6aG9zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b3RlY3Rpb25TcGFjZTo6cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFj
ZTo6cmVhbG0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2U6OmlzUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2U6OnNlcnZlclR5cGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2U6OnJlY2VpdmVzQ3JlZGVudGlhbFNlY3Vy
ZWx5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvdGVjdGlvblNwYWNlOjphdXRoZW50aWNhdGlv
blNjaGVtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rp
b25TcGFjZS5oOgorCisgICAgICAgIENoYW5nZSB0aGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdl
IGNhbGxiYWNrIHRvIHJlZmxlY3QgdGhlIG5ldyBvd25lcnNoaXAgb2YKKyAgICAgICAgdGhlIERl
Y2lzaW9uTGlzdGVuZXI6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorCisgICAgICAgICogV2ViS2l0Mi5w
cm86CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkdlbmVyYXRlZC5t
YWtlOgorCiAyMDEwLTEyLTA4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQyL1dlYktp
dDIucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHJldmlzaW9uIDczNTY5
KQorKysgV2ViS2l0Mi9XZWJLaXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjc1LDYgKzI3NSw3
IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaCBcCiAgICAg
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLQ3JlZGVudGlhbC5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsVHlwZXMu
aCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaCBcCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLRnJhbWUuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5l
ci5oIFwKQEAgLTI4Nyw2ICsyODgsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tQcmVmZXJlbmNlcy5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1By
aXZhdGUuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlLmggXAorICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggXAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XZWJLaXQyLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9xdC9XS05hdGl2ZUV2ZW50
LmggXAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmggXApJbmRleDogV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDczNTY5KQorKysgV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNSwy
NSArMTE1LDQ1IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2U+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVy
LCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogICAg
IHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
Q29yZUlQQzo6SW4oY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2UucHJvcG9z
ZWRDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLCBjaGFsbGVu
Z2UuZmFpbHVyZVJlc3BvbnNlKCksIGNoYWxsZW5nZS5lcnJvcigpKSk7CiAgICAgfQogCi0gICAg
c3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGNyZWRlbnRpYWwpCi0gICAgewotICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVj
b2RlciwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKKyAgICB7
ICAgIAorICAgICAgICBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlvblNwYWNlOwor
ICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFsIHByb3Bvc2VkQ3JlZGVudGlhbDsKKyAgICAgICAg
dW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQ7CisgICAgICAgIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgZmFpbHVyZVJlc3BvbnNlOworICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yOworCisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChwcm90
ZWN0aW9uU3BhY2UsIHByb3Bvc2VkQ3JlZGVudGlhbCwgcHJldmlvdXNGYWlsdXJlQ291bnQsIGZh
aWx1cmVSZXNwb25zZSwgZXJyb3IpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIGNoYWxsZW5nZSA9IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KHByb3RlY3Rpb25TcGFjZSwgcHJvcG9zZWRDcmVkZW50aWFsLCBwcmV2aW91c0ZhaWx1cmVDb3Vu
dCwgZmFpbHVyZVJlc3BvbnNlLCBlcnJvcik7CisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQcm90ZWN0
aW9uU3BhY2U+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNv
ZGVyLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIGNoYWxsZW5nZSkKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQ
cm90ZWN0aW9uU3BhY2UmIHNwYWNlKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVu
dAorICAgICAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4oc3BhY2UuaG9zdCgpLCBzcGFj
ZS5wb3J0KCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihzcGFjZS5zZXJ2ZXJUeXBlKCkpLCBzcGFj
ZS5yZWFsbSgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3BhY2UuYXV0aGVudGljYXRpb25TY2hl
bWUoKSkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIGNyZWRlbnRpYWwpCisgICAgc3Rh
dGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6UHJvdGVj
dGlvblNwYWNlJiBzcGFjZSkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAg
ICAgICAgU3RyaW5nIGhvc3Q7CisgICAgICAgIGludCBwb3J0OworICAgICAgICB1aW50MzJfdCBz
ZXJ2ZXJUeXBlOworICAgICAgICBTdHJpbmcgcmVhbG07CisgICAgICAgIHVpbnQzMl90IGF1dGhl
bnRpY2F0aW9uU2NoZW1lOworCisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6
Ok91dChob3N0LCBwb3J0LCBzZXJ2ZXJUeXBlLCByZWFsbSwgYXV0aGVudGljYXRpb25TY2hlbWUp
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAgICAgc3BhY2UgPSBXZWJD
b3JlOjpQcm90ZWN0aW9uU3BhY2UoaG9zdCwgcG9ydCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UHJv
dGVjdGlvblNwYWNlU2VydmVyVHlwZT4oc2VydmVyVHlwZSksIHJlYWxtLCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZT4oYXV0aGVudGljYXRp
b25TY2hlbWUpKTsKKwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9OwpAQCAtMTQxLDEy
ICsxNjEsMTggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOgogdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDcmVkZW50aWFsPiB7CiAgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2ViQ29y
ZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKGNyZWRlbnRpYWwudXNl
cigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihjcmVkZW50
aWFsLnBlcnNpc3RlbmNlKCkpKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFy
Z3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkK
ICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICAgICAgU3RyaW5nIHVzZXI7
CisgICAgICAgIFN0cmluZyBwYXNzd29yZDsKKyAgICAgICAgaW50IHBlcnNpc3RlbmNlOworICAg
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQodXNlciwgcGFzc3dvcmQsIHBl
cnNpc3RlbmNlKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAg
ICBjcmVkZW50aWFsID0gV2ViQ29yZTo6Q3JlZGVudGlhbCh1c2VyLCBwYXNzd29yZCwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlPihwZXJzaXN0ZW5jZSkpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9OwpJbmRleDogV2ViS2l0Mi9TaGFyZWQvbWFjL1dl
YkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9t
YWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiA3MzU2OSkKKysrIFdlYktp
dDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTYwLDE2ICs2MCwyNiBAQCBib29sIGRlY29kZVJlc291cmNlUmVxdWVzdChBcmd1bWVudERl
Y29kCiAKIHZvaWQgZW5jb2RlUmVzb3VyY2VSZXNwb25zZShBcmd1bWVudEVuY29kZXIqIGVuY29k
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCiB7
CisgICAgYm9vbCByZXNwb25zZUlzUHJlc2VudCA9IHJlc291cmNlUmVzcG9uc2UubnNVUkxSZXNw
b25zZSgpOworICAgIGVuY29kZXItPmVuY29kZShyZXNwb25zZUlzUHJlc2VudCk7CisgICAgCisg
ICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS84NzQxNzk5PiAtIFdlIGNhbid0IHVzZSBOU0tl
eWVkQXJjaGl2ZXIgaGVyZS4KICAgICBlbmNvZGVXaXRoTlNLZXllZEFyY2hpdmVyKGVuY29kZXIs
IHJlc291cmNlUmVzcG9uc2UubnNVUkxSZXNwb25zZSgpKTsKIH0KIAogYm9vbCBkZWNvZGVSZXNv
dXJjZVJlc3BvbnNlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKKyAgICBib29sIHJlc3BvbnNlSXNQcmVzZW50
OworICAgIGRlY29kZXItPmRlY29kZShyZXNwb25zZUlzUHJlc2VudCk7CisgICAgCisgICAgLy8g
RklYTUU6IDxyZGFyOi8vcHJvYmxlbS84NzQxNzk5PiAtIFdlIGNhbid0IHVzZSBOU0tleWVkQXJj
aGl2ZXIgaGVyZS4KICAgICBOU1VSTFJlc3BvbnNlICpuc1VSTFJlc3BvbnNlID0gZGVjb2RlV2l0
aE5TS2V5ZWRBcmNoaXZlcihkZWNvZGVyKTsKLSAgICBpZiAoIW5zVVJMUmVzcG9uc2UpCisgICAg
aWYgKHJlc3BvbnNlSXNQcmVzZW50ICYmICFuc1VSTFJlc3BvbnNlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICByZXNvdXJjZVJlc3BvbnNlID0gV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZShuc1VSTFJlc3BvbnNlKTsKKyAgICBpZiAocmVzcG9uc2VJc1ByZXNlbnQpCisgICAgICAgIHJl
c291cmNlUmVzcG9uc2UgPSBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlKG5zVVJMUmVzcG9uc2Up
OworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkxv
YWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVy
Q2xpZW50LmNwcAkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2Fk
ZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsMTIgKzE1MiwxMiBAQCBib29sIFdl
YkxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhCiAgICAgcmV0dXJuIG1fY2xpZW50LmNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKHRvQVBJKHBhZ2UpLCB0
b0FQSShmcmFtZSksIHRvQVBJKHByb3RlY3Rpb25TcGFjZSksIG1fY2xpZW50LmNsaWVudEluZm8p
OwogfQogCi12b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlSW5GcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQXV0
aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKiBsaXN0ZW5lcikKK3ZvaWQgV2ViTG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdlYlBhZ2VQcm94
eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkqIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewogICAgIGlmICghbV9jbGllbnQuZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSh0b0FQ
SShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIHRv
QVBJKGxpc3RlbmVyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJh
bWUpLCB0b0FQSShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIG1fY2xpZW50LmNsaWVudEluZm8p
OwogfQogCiB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkU3RhcnRQcm9ncmVzcyhXZWJQYWdlUHJv
eHkqIHBhZ2UpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAkocmV2aXNpb24g
NzM1NjkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7
CiAgICAgCiAgICAgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5G
cmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViUHJvdGVjdGlvblNwYWNlKik7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdlYlBh
Z2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Kiwg
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKik7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkq
LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Kik7CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJv
Z3Jlc3MoV2ViUGFnZVByb3h5Kik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhXZWJQYWdl
UHJveHkqKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gNzM1
NjkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTU5LDcgKzE1NTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZy
YW1lSUQpOwogICAgIFJlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNyZWF0ZShj
b3JlQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCwgdGhpcyk7CiAgICAgCi0gICAgbV9sb2FkZXJDbGll
bnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSh0aGlzLCBmcmFtZSwg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCksIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT5s
aXN0ZW5lcigpKTsKKyAgICBtX2xvYWRlckNsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VJbkZyYW1lKHRoaXMsIGZyYW1lLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQo
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVu
dFF1b3RhLCB1aW50NjRfdCBjdXJyZW50VXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIHVp
bnQ2NF90JiBuZXdRdW90YSkKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2Fz
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShy
ZXZpc2lvbiA3MzU2OSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwxNCBAQAogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIK
ICNpbmNsdWRlICJGb250U21vb3RoaW5nTGV2ZWwuaCIKICNpbmNsdWRlICJXS0NvbnRleHQuaCIK
KyNpbmNsdWRlICJXS0NyZWRlbnRpYWxUeXBlcy5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgogI2lu
Y2x1ZGUgIldLUHJlZmVyZW5jZXNQcml2YXRlLmgiCisjaW5jbHVkZSAiV0tQcm90ZWN0aW9uU3Bh
Y2VUeXBlcy5oIgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ3JlZGVudGlhbC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCkBAIC0xNDcsNiArMTUyLDY3IEBAIGlubGluZSBXS0ZvbnRTbW9vdGhpbmdMZXZlbCB0b0FQ
SShGb250U20KICAgICByZXR1cm4ga1dLRm9udFNtb290aGluZ0xldmVsTWVkaXVtOwogfQogCitp
bmxpbmUgV0tQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlIHRvQVBJKFdlYkNvcmU6OlByb3RlY3Rp
b25TcGFjZVNlcnZlclR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA6CisgICAgICAgIHJldHVybiBrV0tQ
cm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlSFRUUDsKKyAgICBjYXNlIFdlYkNvcmU6OlByb3RlY3Rp
b25TcGFjZVNlcnZlckhUVFBTOgorICAgICAgICByZXR1cm4ga1dLUHJvdGVjdGlvblNwYWNlU2Vy
dmVyVHlwZUhUVFBTOworICAgIGNhc2UgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlU2VydmVyRlRQ
OgorICAgICAgICByZXR1cm4ga1dLUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZUZUUDsKKyAgICBj
YXNlIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZVNlcnZlckZUUFM6CisgICAgICAgIHJldHVybiBr
V0tQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRlRQUzsKKyAgICBjYXNlIFdlYkNvcmU6OlByb3Rl
Y3Rpb25TcGFjZVByb3h5SFRUUDoKKyAgICAgICAgcmV0dXJuIGtXS1Byb3RlY3Rpb25TcGFjZVBy
b3h5VHlwZUhUVFA7CisgICAgY2FzZSBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VQcm94eUhUVFBT
OgorICAgICAgICByZXR1cm4ga1dLUHJvdGVjdGlvblNwYWNlUHJveHlUeXBlSFRUUFM7CisgICAg
Y2FzZSBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VQcm94eUZUUDoKKyAgICAgICAgcmV0dXJuIGtX
S1Byb3RlY3Rpb25TcGFjZVByb3h5VHlwZUZUUDsKKyAgICBjYXNlIFdlYkNvcmU6OlByb3RlY3Rp
b25TcGFjZVByb3h5U09DS1M6CisgICAgICAgIHJldHVybiBrV0tQcm90ZWN0aW9uU3BhY2VQcm94
eVR5cGVTT0NLUzsKKyAgICB9CisgICAgcmV0dXJuIGtXS1Byb3RlY3Rpb25TcGFjZVNlcnZlclR5
cGVIVFRQOworfQorCitpbmxpbmUgV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVt
ZSB0b0FQSShXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSB0eXBl
KQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6UHJvdGVjdGlvblNw
YWNlQXV0aGVudGljYXRpb25TY2hlbWVEZWZhdWx0OgorICAgICAgICByZXR1cm4ga1dLUHJvdGVj
dGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVEZWZhdWx0OworICAgIGNhc2UgV2ViQ29yZTo6
UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVFRQQmFzaWM6CisgICAgICAgIHJl
dHVybiBrV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBCYXNpYzsKKyAg
ICBjYXNlIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRUUERp
Z2VzdDoKKyAgICAgICAgcmV0dXJuIGtXS1Byb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2No
ZW1lSFRUUERpZ2VzdDsKKyAgICBjYXNlIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1dGhlbnRp
Y2F0aW9uU2NoZW1lSFRNTEZvcm06CisgICAgICAgIHJldHVybiBrV0tQcm90ZWN0aW9uU3BhY2VB
dXRoZW50aWNhdGlvblNjaGVtZUhUTUxGb3JtOworICAgIGNhc2UgV2ViQ29yZTo6UHJvdGVjdGlv
blNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVOVExNOgorICAgICAgICByZXR1cm4ga1dLUHJvdGVj
dGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVOVExNOworICAgIGNhc2UgV2ViQ29yZTo6UHJv
dGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVOZWdvdGlhdGU6CisgICAgICAgIHJldHVy
biBrV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZU5lZ290aWF0ZTsKKyAgICBj
YXNlIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lQ2xpZW50Q2Vy
dGlmaWNhdGVSZXF1ZXN0ZWQ6CisgICAgICAgIHJldHVybiBrV0tQcm90ZWN0aW9uU3BhY2VBdXRo
ZW50aWNhdGlvblNjaGVtZUNsaWVudENlcnRpZmljYXRlUmVxdWVzdGVkOworICAgIGNhc2UgV2Vi
Q29yZTo6UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1
YXRpb25SZXF1ZXN0ZWQ6CisgICAgICAgIHJldHVybiBrV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50
aWNhdGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZDsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4ga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVV
bmtub3duOworICAgIH0KK30KKworaW5saW5lIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5j
ZSB0b0NyZWRlbnRpYWxQZXJzaXN0ZW5jZShXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZSB0eXBlKQor
eworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Uga1dLQ3JlZGVudGlhbFBlcnNpc3RlbmNl
Tm9uZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU7
CisgICAgY2FzZSBrV0tDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uOgorICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbjsKKyAgICBjYXNl
IGtXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudDoKKyAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudDsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZTsKKyAgICB9Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChf
V0lOMzIpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgIldLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIK
IAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKKyNpbmNsdWRlICJX
ZWJDcmVkZW50aWFsLmgiCisjaW5jbHVkZSAiV2ViUHJvdGVjdGlvblNwYWNlLmgiCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0zNCwzICszNiwy
MyBAQCBXS1R5cGVJRCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0VHlwCiB7CiAgICAgcmV0
dXJuIHRvQVBJKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OkFQSVR5cGUpOwogfQorCitX
S0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlR2V0RGVjaXNpb25MaXN0ZW5lcihXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGNoYWxs
ZW5nZSkKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNoYWxsZW5nZSktPmxpc3RlbmVyKCkp
OworfQorCitXS1Byb3RlY3Rpb25TcGFjZVJlZiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0
UHJvdGVjdGlvblNwYWNlKFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYgY2hhbGxlbmdlKQor
eworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY2hhbGxlbmdlKS0+cHJvdGVjdGlvblNwYWNlKCkp
OworfQorCitXS0NyZWRlbnRpYWxSZWYgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUdldFByb3Bv
c2VkQ3JlZGVudGlhbChXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGNoYWxsZW5nZSkKK3sK
KyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNoYWxsZW5nZSktPnByb3Bvc2VkQ3JlZGVudGlhbCgp
KTsKK30KKworaW50IFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVD
b3VudChXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGNoYWxsZW5nZSkKK3sKKyAgICByZXR1
cm4gdG9JbXBsKGNoYWxsZW5nZSktPnByZXZpb3VzRmFpbHVyZUNvdW50KCk7Cit9CkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oCShyZXZpc2lvbiA3MzU2OSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMTEgQEAgZXh0
ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
R2V0VHlwZUlEKCk7CiAKK1dLX0VYUE9SVCBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
clJlZiBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0RGVjaXNpb25MaXN0ZW5lcihXS0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUmVmKTsKK1dLX0VYUE9SVCBXS1Byb3RlY3Rpb25TcGFjZVJlZiBX
S0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKFdLQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VSZWYpOworV0tfRVhQT1JUIFdLQ3JlZGVudGlhbFJlZiBXS0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFsKFdLQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VSZWYpOworV0tfRVhQT1JUIGludCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlR2V0UHJldmlv
dXNGYWlsdXJlQ291bnQoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZik7CisKICNpZmRlZiBf
X2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Ny
ZWRlbnRpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ3Jl
ZGVudGlhbC5jcHAJKHJldmlzaW9uIDczNTY5KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tDcmVkZW50aWFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgIldLQ3JlZGVudGlhbC5oIgogCiAjaW5jbHVkZSAiV2ViQ3JlZGVudGlhbC5oIgorI2luY2x1
ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwpAQCAtMzQsMyArMzUsMTUgQEAgV0tUeXBlSUQgV0tDcmVkZW50aWFsR2V0VHlw
ZUlEKCkKIHsKICAgICByZXR1cm4gdG9BUEkoV2ViQ3JlZGVudGlhbDo6QVBJVHlwZSk7CiB9CisK
K1dLQ3JlZGVudGlhbFJlZiBXS0NyZWRlbnRpYWxDcmVhdGUoV0tTdHJpbmdSZWYgdXNlcm5hbWUs
IFdLU3RyaW5nUmVmIHBhc3N3b3JkLCBXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5j
ZSkKK3sKKyAgICBSZWZQdHI8V2ViQ3JlZGVudGlhbD4gY3JlZGVudGlhbCA9IFdlYkNyZWRlbnRp
YWw6OmNyZWF0ZSh0b0ltcGwodXNlcm5hbWUpLCB0b0ltcGwocGFzc3dvcmQpLCB0b0NyZWRlbnRp
YWxQZXJzaXN0ZW5jZShwZXJzaXN0ZW5jZSkpOworICAgIHJldHVybiB0b0FQSShjcmVkZW50aWFs
LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworfQorCitXS1N0cmluZ1JlZiBXS0NyZWRlbnRpYWxD
b3B5VXNlcihXS0NyZWRlbnRpYWxSZWYgY3JlZGVudGlhbFJlZikKK3sKKyAgICByZXR1cm4gdG9D
b3BpZWRBUEkodG9JbXBsKGNyZWRlbnRpYWxSZWYpLT51c2VyKCkpOworfQorCkluZGV4OiBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuaAkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBXS0NyZWRlbnRpYWxfaAogCiAjaW5jbHVkZSA8V2ViS2l0Mi9X
S0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ3JlZGVudGlhbFR5cGVzLmg+CiAKICNpZmRl
ZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0zNCw2ICszNSw5IEBAIGV4dGVybiAiQyIg
ewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tDcmVkZW50aWFsR2V0VHlwZUlEKCk7CiAKK1dLX0VY
UE9SVCBXS0NyZWRlbnRpYWxSZWYgV0tDcmVkZW50aWFsQ3JlYXRlKFdLU3RyaW5nUmVmIHVzZXJu
YW1lLCBXS1N0cmluZ1JlZiBwYXNzd29yZCwgV0tDcmVkZW50aWFsUGVyc2lzdGVuY2UpOworV0tf
RVhQT1JUIFdLU3RyaW5nUmVmIFdLQ3JlZGVudGlhbENvcHlVc2VyKFdLQ3JlZGVudGlhbFJlZik7
CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NyZWRlbnRpYWxUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQ3JlZGVudGlhbFR5cGVzLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWxUeXBlcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NyZWRlbnRpYWxUeXBlc19oCisjZGVmaW5l
IFdLQ3JlZGVudGlhbFR5cGVzX2gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsK
KyNlbmRpZgorCitlbnVtIHsKKyAgICBrV0tDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lLAorICAg
IGtXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24sCisgICAga1dLQ3JlZGVudGlhbFBl
cnNpc3RlbmNlUGVybWFuZW50Cit9OwordHlwZWRlZiB1aW50MzJfdCBXS0NyZWRlbnRpYWxQZXJz
aXN0ZW5jZTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdL
Q3JlZGVudGlhbFR5cGVzX2ggKi8KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZp
c2lvbiA3MzU2OSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZFJlbW92ZUZy
YW1lRnJvbUgKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRG
b3JGcmFtZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBl
UmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldL
UGFnZURpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdl
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwogdHlwZWRlZiBib29sICgqV0tQYWdlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZUluRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VJbkZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1l
LCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBX
S0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VJbkZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAogLy8gUHJvZ3Jlc3MgQ2xpZW50CiB0eXBlZGVm
IHZvaWQgKCpXS1BhZ2VEaWRTdGFydFByb2dyZXNzQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UHJvdGVjdGlvblNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1Byb3RlY3Rpb25TcGFjZS5jcHAJKHJldmlzaW9uIDczNTY5KQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwz
ICszNCwzOCBAQCBXS1R5cGVJRCBXS1Byb3RlY3Rpb25TcGFjZUdldFR5cGVJRCgpCiB7CiAgICAg
cmV0dXJuIHRvQVBJKFdlYlByb3RlY3Rpb25TcGFjZTo6QVBJVHlwZSk7CiB9CisKK1dLU3RyaW5n
UmVmIFdLUHJvdGVjdGlvblNwYWNlQ29weUhvc3QoV0tQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVj
dGlvblNwYWNlUmVmKQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwocHJvdGVjdGlv
blNwYWNlUmVmKS0+aG9zdCgpKTsKK30KKworaW50IFdLUHJvdGVjdGlvblNwYWNlR2V0UG9ydChX
S1Byb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2VSZWYpCit7CisgICAgcmV0dXJuIHRv
SW1wbChwcm90ZWN0aW9uU3BhY2VSZWYpLT5wb3J0KCk7Cit9CisKK1dLU3RyaW5nUmVmIFdLUHJv
dGVjdGlvblNwYWNlQ29weVJlYWxtKFdLUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFj
ZVJlZikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHByb3RlY3Rpb25TcGFjZVJl
ZiktPnJlYWxtKCkpOworfQorCitib29sIFdLUHJvdGVjdGlvblNwYWNlR2V0SXNQcm94eShXS1By
b3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2VSZWYpCit7CisgICAgcmV0dXJuIHRvSW1w
bChwcm90ZWN0aW9uU3BhY2VSZWYpLT5pc1Byb3h5KCk7Cit9CisKK1dLUHJvdGVjdGlvblNwYWNl
U2VydmVyVHlwZSBXS1Byb3RlY3Rpb25TcGFjZUdldFNlcnZlclR5cGUoV0tQcm90ZWN0aW9uU3Bh
Y2VSZWYgcHJvdGVjdGlvblNwYWNlUmVmKQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwocHJv
dGVjdGlvblNwYWNlUmVmKS0+c2VydmVyVHlwZSgpKTsKK30KKworYm9vbCBXS1Byb3RlY3Rpb25T
cGFjZUdldFJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KFdLUHJvdGVjdGlvblNwYWNlUmVmIHBy
b3RlY3Rpb25TcGFjZVJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByb3RlY3Rpb25TcGFjZVJl
ZiktPnJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCk7Cit9CisKK1dLUHJvdGVjdGlvblNwYWNl
QXV0aGVudGljYXRpb25TY2hlbWUgV0tQcm90ZWN0aW9uU3BhY2VHZXRBdXRoZW50aWNhdGlvblNj
aGVtZShXS1Byb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2VSZWYpCit7CisgICAgcmV0
dXJuIHRvQVBJKHRvSW1wbChwcm90ZWN0aW9uU3BhY2VSZWYpLT5hdXRoZW50aWNhdGlvblNjaGVt
ZSgpKTsKK30KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3Bh
Y2UuaAkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Byb3Rl
Y3Rpb25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdL
UHJvdGVjdGlvblNwYWNlX2gKIAogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVk
ZSA8V2ViS2l0Mi9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1
cwogZXh0ZXJuICJDIiB7CkBAIC0zNCw2ICszNSwxNCBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQ
T1JUIFdLVHlwZUlEIFdLUHJvdGVjdGlvblNwYWNlR2V0VHlwZUlEKCk7CiAKK1dLX0VYUE9SVCBX
S1N0cmluZ1JlZiBXS1Byb3RlY3Rpb25TcGFjZUNvcHlIb3N0KFdLUHJvdGVjdGlvblNwYWNlUmVm
KTsKK1dLX0VYUE9SVCBpbnQgV0tQcm90ZWN0aW9uU3BhY2VHZXRQb3J0KFdLUHJvdGVjdGlvblNw
YWNlUmVmKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1Byb3RlY3Rpb25TcGFjZUNvcHlSZWFs
bShXS1Byb3RlY3Rpb25TcGFjZVJlZik7CitXS19FWFBPUlQgYm9vbCBXS1Byb3RlY3Rpb25TcGFj
ZUdldElzUHJveHkoV0tQcm90ZWN0aW9uU3BhY2VSZWYpOworV0tfRVhQT1JUIFdLUHJvdGVjdGlv
blNwYWNlU2VydmVyVHlwZSBXS1Byb3RlY3Rpb25TcGFjZUdldFNlcnZlclR5cGUoV0tQcm90ZWN0
aW9uU3BhY2VSZWYpOworV0tfRVhQT1JUIGJvb2wgV0tQcm90ZWN0aW9uU3BhY2VHZXRSZWNlaXZl
c0NyZWRlbnRpYWxTZWN1cmVseShXS1Byb3RlY3Rpb25TcGFjZVJlZik7CitXS19FWFBPUlQgV0tQ
cm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBXS1Byb3RlY3Rpb25TcGFjZUdldEF1
dGhlbnRpY2F0aW9uU2NoZW1lKFdLUHJvdGVjdGlvblNwYWNlUmVmKTsKKwogI2lmZGVmIF9fY3Bs
dXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVj
dGlvblNwYWNlVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1Byb3RlY3Rpb25TcGFjZVR5cGVzLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLUHJvdGVjdGlvblNwYWNlVHlwZXNfaAorI2Rl
ZmluZSBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNl
Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworZW51bSB7
CisgICAga1dLUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZUhUVFAgPSAxLAorICAgIGtXS1Byb3Rl
Y3Rpb25TcGFjZVNlcnZlclR5cGVIVFRQUywKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJU
eXBlRlRQLAorICAgIGtXS1Byb3RlY3Rpb25TcGFjZVNlcnZlclR5cGVGVFBTLAorICAgIGtXS1By
b3RlY3Rpb25TcGFjZVByb3h5VHlwZUhUVFAsCisgICAga1dLUHJvdGVjdGlvblNwYWNlUHJveHlU
eXBlSFRUUFMsCisgICAga1dLUHJvdGVjdGlvblNwYWNlUHJveHlUeXBlRlRQLAorICAgIGtXS1By
b3RlY3Rpb25TcGFjZVByb3h5VHlwZVNPQ0tTLAorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tQcm90
ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlOworCitlbnVtICB7CisgICAga1dLUHJvdGVjdGlvblNwYWNl
QXV0aGVudGljYXRpb25TY2hlbWVEZWZhdWx0ID0gMSwKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VB
dXRoZW50aWNhdGlvblNjaGVtZUhUVFBCYXNpYywKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VBdXRo
ZW50aWNhdGlvblNjaGVtZUhUVFBEaWdlc3QsCisgICAga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVu
dGljYXRpb25TY2hlbWVIVE1MRm9ybSwKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNh
dGlvblNjaGVtZU5UTE0sCisgICAga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hl
bWVOZWdvdGlhdGUsCisgICAga1dLUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVD
bGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3RlZCwKKyAgICBrV0tQcm90ZWN0aW9uU3BhY2VBdXRoZW50
aWNhdGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZCwKKyAgICBrV0tQcm90
ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVVua25vd24gPSAxMDAsCit9OwordHlwZWRl
ZiB1aW50MzJfdCBXS1Byb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lOworCisjaWZk
ZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tQcm90ZWN0aW9uU3BhY2VU
eXBlc19oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAkocmV2aXNpb24g
NzM1NjkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIldlYkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ3LDcgKzQ4LDcgQEAgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eTo6fkF1dGhlbnRpYwogewogICAgIC8vIElmIGFuIG91dHN0YW5kaW5nIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkgaXMgYmVpbmcgZGVzdHJveWVkIGV2ZW4gdGhvdWdo
IGl0IGhhc24ndCBiZWVuIHJlc3BvbmRlZCB0byB5ZXQsCiAgICAgLy8gd2UgY2FuY2VsIGl0IGhl
cmUgc28gdGhlIFdlYlByb2Nlc3MgaXNuJ3Qgd2FpdGluZyBmb3IgYW4gYW5zd2VyIGZvcmV2ZXIu
Ci0gICAgaWYgKG1fY2hhbGxlbmdlSUQpCisgICAgaWYgKG1fY2hhbGxlbmdlSUQgJiYgbV9wYWdl
LT5wcm9jZXNzKCkpCiAgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpB
dXRoZW50aWNhdGlvbk1hbmFnZXI6OkNhbmNlbENoYWxsZW5nZShtX2NoYWxsZW5nZUlEKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CiAKICAgICBpZiAobV9saXN0ZW5lcikKQEAgLTc3LDQgKzc4LDIwIEBA
IHZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y2FuY2UKICAgICBtX2NoYWxsZW5n
ZUlEID0gMDsKIH0KIAorV2ViQ3JlZGVudGlhbCogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eTo6cHJvcG9zZWRDcmVkZW50aWFsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fd2ViQ3JlZGVudGlh
bCkKKyAgICAgICAgbV93ZWJDcmVkZW50aWFsID0gV2ViQ3JlZGVudGlhbDo6Y3JlYXRlKG1fY29y
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKTsKKyAgICAgICAg
CisgICAgcmV0dXJuIG1fd2ViQ3JlZGVudGlhbC5nZXQoKTsKK30KKworV2ViUHJvdGVjdGlvblNw
YWNlKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Ojpwcm90ZWN0aW9uU3BhY2UoKSBjb25z
dAoreworICAgIGlmICghbV93ZWJQcm90ZWN0aW9uU3BhY2UpCisgICAgICAgIG1fd2ViUHJvdGVj
dGlvblNwYWNlID0gV2ViUHJvdGVjdGlvblNwYWNlOjpjcmVhdGUobV9jb3JlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAgICAKKyAgICByZXR1cm4gbV93
ZWJQcm90ZWN0aW9uU3BhY2UuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaAkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CiBjbGFzcyBXZWJDcmVkZW50aWFs
OwogY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJvdGVjdGlvblNwYWNlOwogCiBjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5IDogcHVibGljIEFQSU9iamVjdCB7CiBwdWJs
aWM6CkBAIC01Nyw2ICs1OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbCgpOwogCiAgICAg
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKiBsaXN0ZW5lcigpIGNvbnN0IHsgcmV0dXJu
IG1fbGlzdGVuZXIuZ2V0KCk7IH0KKyAgICBXZWJDcmVkZW50aWFsKiBwcm9wb3NlZENyZWRlbnRp
YWwoKSBjb25zdDsKKyAgICBXZWJQcm90ZWN0aW9uU3BhY2UqIHByb3RlY3Rpb25TcGFjZSgpIGNv
bnN0OworICAgIGludCBwcmV2aW91c0ZhaWx1cmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29y
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCk7IH0KIAogcHJp
dmF0ZToKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgdWludDY0X3QgY2hhbGxlbmdlSUQsIFdlYlBhZ2VQcm94
eSogcGFnZSk7CkBAIC02Nyw2ICs3MSw4IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9jaGFs
bGVuZ2VJRDsKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBtX3BhZ2U7CiAgICAgUmVmUHRyPEF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcj4gbV9saXN0ZW5lcjsKKyAgICBtdXRhYmxlIFJl
ZlB0cjxXZWJDcmVkZW50aWFsPiBtX3dlYkNyZWRlbnRpYWw7CisgICAgbXV0YWJsZSBSZWZQdHI8
V2ViUHJvdGVjdGlvblNwYWNlPiBtX3dlYlByb3RlY3Rpb25TcGFjZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2Vi
Q3JlZGVudGlhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGlj
YXRpb24vV2ViQ3JlZGVudGlhbC5jcHAJKHJldmlzaW9uIDczNTY5KQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDkgKzI3LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitXZWJDcmVkZW50aWFsOjpX
ZWJDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCisgICAg
OiBtX2NvcmVDcmVkZW50aWFsKGNyZWRlbnRpYWwpCit7Cit9CisKIGNvbnN0IFdlYkNvcmU6OkNy
ZWRlbnRpYWwmIFdlYkNyZWRlbnRpYWw6OmNvcmUoKQogewogICAgIHJldHVybiBtX2NvcmVDcmVk
ZW50aWFsOwogfQogCitjb25zdCBTdHJpbmcmIFdlYkNyZWRlbnRpYWw6OnVzZXIoKSBjb25zdAor
eworICAgIHJldHVybiBtX2NvcmVDcmVkZW50aWFsLnVzZXIoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVk
ZW50aWFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24v
V2ViQ3JlZGVudGlhbC5oCShyZXZpc2lvbiA3MzU2OSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
OCBAQAogI2RlZmluZSBXZWJDcmVkZW50aWFsX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgor
I2luY2x1ZGUgIldlYlN0cmluZy5oIgorCiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtMzcsMTUgKzM5LDIyIEBAIGNsYXNz
IFdlYkNyZWRlbnRpYWwgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUNyZWRlbnRpYWw7CiAKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJDcmVkZW50aWFsPiBjcmVhdGUoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNy
ZWRlbnRpYWw+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDcmVkZW50aWFsKCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNyZWRlbnRpYWwoY3JlZGVudGlhbCkpOworICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDcmVkZW50aWFsPiBjcmVhdGUoV2Vi
U3RyaW5nKiB1c2VybmFtZSwgV2ViU3RyaW5nKiBwYXNzd29yZCwgV2ViQ29yZTo6Q3JlZGVudGlh
bFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJDcmVkZW50aWFsKFdlYkNvcmU6OkNyZWRlbnRpYWwodXNlcm5hbWUtPnN0cmluZygp
LCBwYXNzd29yZC0+c3RyaW5nKCksIHBlcnNpc3RlbmNlKSkpOwogICAgIH0KICAgICAKICAgICBj
b25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjb3JlKCk7CiAKKyAgICBjb25zdCBTdHJpbmcmIHVz
ZXIoKSBjb25zdDsKKyAgICAKIHByaXZhdGU6Ci0gICAgV2ViQ3JlZGVudGlhbCgpOworICAgIFdl
YkNyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpOwogCiAgICAgdmlydHVhbCBU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CiAKSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmNw
cAkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9X
ZWJQcm90ZWN0aW9uU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMiArMjUsNDggQEAK
IAogI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgogCisjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYlByb3RlY3Rpb25TcGFj
ZTo6V2ViUHJvdGVjdGlvblNwYWNlKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYgY29y
ZVByb3RlY3Rpb25TcGFjZSkKICAgICA6IG1fY29yZVByb3RlY3Rpb25TcGFjZShjb3JlUHJvdGVj
dGlvblNwYWNlKQogeworfQorCitjb25zdCBTdHJpbmcmIFdlYlByb3RlY3Rpb25TcGFjZTo6aG9z
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29yZVByb3RlY3Rpb25TcGFjZS5ob3N0KCk7Cit9
CisKK2ludCBXZWJQcm90ZWN0aW9uU3BhY2U6OnBvcnQoKSBjb25zdAoreworICAgIHJldHVybiBt
X2NvcmVQcm90ZWN0aW9uU3BhY2UucG9ydCgpOworfQorCitjb25zdCBTdHJpbmcmIFdlYlByb3Rl
Y3Rpb25TcGFjZTo6cmVhbG0oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvcmVQcm90ZWN0aW9u
U3BhY2UucmVhbG0oKTsKK30KIAorYm9vbCBXZWJQcm90ZWN0aW9uU3BhY2U6OmlzUHJveHkoKSBj
b25zdAoreworICAgIHJldHVybiBtX2NvcmVQcm90ZWN0aW9uU3BhY2UuaXNQcm94eSgpOworfQor
CitXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlIFdlYlByb3RlY3Rpb25TcGFjZTo6
c2VydmVyVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29yZVByb3RlY3Rpb25TcGFjZS5z
ZXJ2ZXJUeXBlKCk7Cit9CisKK2Jvb2wgV2ViUHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRl
bnRpYWxTZWN1cmVseSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29yZVByb3RlY3Rpb25TcGFj
ZS5yZWNlaXZlc0NyZWRlbnRpYWxTZWN1cmVseSgpOworfQorCitXZWJDb3JlOjpQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBXZWJQcm90ZWN0aW9uU3BhY2U6OmF1dGhlbnRpY2F0
aW9uU2NoZW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb3JlUHJvdGVjdGlvblNwYWNlLmF1
dGhlbnRpY2F0aW9uU2NoZW1lKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViUHJvdGVjdGlv
blNwYWNlLmgJKHJldmlzaW9uIDczNTY5KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGlj
YXRpb24vV2ViUHJvdGVjdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDE1
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUHJvdGVj
dGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkpOwogICAgIH0KKyAgICAKKyAgICBjb25zdCBTdHJp
bmcmIHByb3RvY29sKCkgY29uc3Q7CisgICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29uc3Q7Cisg
ICAgaW50IHBvcnQoKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIHJlYWxtKCkgY29uc3Q7Cisg
ICAgYm9vbCBpc1Byb3h5KCkgY29uc3Q7CisgICAgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlU2Vy
dmVyVHlwZSBzZXJ2ZXJUeXBlKCkgY29uc3Q7CisgICAgYm9vbCByZWNlaXZlc0NyZWRlbnRpYWxT
ZWN1cmVseSgpIGNvbnN0OworICAgIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0
aW9uU2NoZW1lIGF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
V2ViUHJvdGVjdGlvblNwYWNlKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpOwpJbmRl
eDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDcz
NTY5KQorKysgV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTIzMiw2ICsyMzIsOCBAQAogCQk1MTZBNEE1RDEyMEEyQ0NEMDBDMDVCN0Yg
LyogV2ViRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oICovOyB9OwogCQk1MTg3
MUI1QjEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMy
IC8qIFdlYkNvbnRleHRNZW51LmNwcCAqLzsgfTsKIAkJNTE4NzFCNUMxMjdDQjg5RDAwRjc2MjMy
IC8qIFdlYkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAq
LzsgfTsKKwkJNTE4QUNBRUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlw
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEFD
QUU5MTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk1MThBQ0YxMTEyQjAxNUY4
MDBCMDRCODMgLyogV0tDcmVkZW50aWFsVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEFDRjEwMTJCMDE1RjgwMEIwNEI4MyAvKiBXS0NyZWRl
bnRpYWxUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsg
fTsKIAkJNTFBNTU1RjUxMjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTU1NUYzMTI4
QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5jcHAgKi87IH07CiAJCTUxQTU1NUY2
MTI4QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNTU1RjQxMjhDNkM0NzAwOUFCQ0VDIC8q
IFdLQ29udGV4dE1lbnVJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGlj
LCApOyB9OyB9OwogCQk1MUE1NTYwMTEyOEM2RDkyMDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0
ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFBNTU2MDAxMjhDNkQ5MjAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC04NjMsNiArODY1
LDggQEAKIAkJNTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIFdlYkVycm9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAv
KiBXZWJDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJD
b250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MThBQ0FFOTEyQUVF
NkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxOEFDRjEwMTJCMDE1RjgwMEIwNEI4MyAvKiBXS0NyZWRlbnRpYWxU
eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NyZWRlbnRpYWxUeXBl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE1NTVGMzEyOEM2QzQ3MDA5QUJD
RUMgLyogV0tDb250ZXh0TWVudUl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0tDb250ZXh0TWVudUl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUE1NTVGNDEyOEM2QzQ3MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0TWVudUl0ZW0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNTU2MDAxMjhDNkQ5MjAwOUFCQ0VDIC8qIFdLQ29u
dGV4dE1lbnVJdGVtVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tD
b250ZXh0TWVudUl0ZW1UeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkw
NCw2ICsxOTA4LDcgQEAKIAkJCQlCQ0M5MzhFMDExODBERTQ0MDA4NUU1RkUgLyogV0tDb250ZXh0
UHJpdmF0ZS5oICovLAogCQkJCTUxMkY1OEYxMTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRp
YWwuY3BwICovLAogCQkJCTUxMkY1OEYyMTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwu
aCAqLywKKwkJCQk1MThBQ0YxMDEyQjAxNUY4MDBCMDRCODMgLyogV0tDcmVkZW50aWFsVHlwZXMu
aCAqLywKIAkJCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5jcHAgKi8s
CiAJCQkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCAqLywKIAkJCQlC
Q0U0Njk1NzEyMTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmNwcCAq
LywKQEAgLTE5MjksNiArMTkzNCw3IEBACiAJCQkJNzYyQjc0ODQxMjBCQkEyRDAwODE5MzM5IC8q
IFdLUHJlZmVyZW5jZXNQcml2YXRlLmggKi8sCiAJCQkJNTEyRjU4RjMxMkE4OEE1NDAwNjI5NTMw
IC8qIFdLUHJvdGVjdGlvblNwYWNlLmNwcCAqLywKIAkJCQk1MTJGNThGNDEyQTg4QTU0MDA2Mjk1
MzAgLyogV0tQcm90ZWN0aW9uU3BhY2UuaCAqLywKKwkJCQk1MThBQ0FFOTEyQUVFNkJCMDBCMDRC
ODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI2MzQsNiArMjY0MCw4IEBACiAJCQkJNTEy
RjU4RkMxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNjM0NDQ1NjEyQTg4NUM4MDAwNjEyRDggLyogV2ViU2VjdXJpdHlPcmlnaW4uaCBp
biBIZWFkZXJzICovLAogCQkJCUY2MzQ0NDVEMTJBODg1RTkwMDA2MTJEOCAvKiBXS1NlY3VyaXR5
T3JpZ2luLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MThBQ0FFQTEyQUVFNkJCMDBCMDRCODMgLyog
V0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4QUNGMTExMkIw
MTVGODAwQjA0QjgzIC8qIFdLQ3JlZGVudGlhbFR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzJEMDIxNzEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMkQwMjE5MTJBQzQyNkMwMEU3MzJBMyAvKiBXS1BhZ2VMb2Fk
VHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2QTI1RkREMTJBREM2Q0MwMERDNDBDQyAvKiBX
ZWJEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogV2ViS2l0Mi93aW4vV2Vi
S2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJl
dmlzaW9uIDczNTY5KQorKysgV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTIxMjUsNiArMjEyNSwxMCBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxG
aWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS0NyZWRlbnRpYWxU
eXBlcy5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS0Rvd25sb2FkLmNwcCIKIAkJCQkJCT4KIAkJCQkJ
PC9GaWxlPgpAQCAtMjIyNCw2ICsyMjI4LDEwIEBACiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJ
UHJvY2Vzc1xBUElcQ1xXS1Byb3RlY3Rpb25TcGFjZS5oIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+
CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS1By
b3RlY3Rpb25TcGFjZVR5cGVzLmgiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbHRl
cgogCQkJCQkJTmFtZT0id2luIgogCQkJCQkJPgpJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0Mkdl
bmVyYXRlZC5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDJHZW5lcmF0ZWQu
bWFrZQkocmV2aXNpb24gNzM1NjkpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyR2VuZXJhdGVkLm1h
a2UJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgYWxsOgogICAgIHhjb3B5IC95IC9k
ICIuLlxVSVByb2Nlc3NcQVBJXENcV0tDb250ZXh0LmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5j
bHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tDb250
ZXh0UHJpdmF0ZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4
Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLQ3JlZGVudGlhbC5oIiAiJChXRUJLSVRP
VVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKKyAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNz
XEFQSVxDXFdLQ3JlZGVudGlhbFR5cGVzLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxX
ZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tEb3dubG9hZC5o
IiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAi
Li5cVUlQcm9jZXNzXEFQSVxDXFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oIiAiJChXRUJLSVRP
VVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNz
XEFQSVxDXFdLRnJhbWUuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCkBA
IC01Myw2ICs1NCw3IEBAIGFsbDoKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxD
XFdLUHJlZmVyZW5jZXMuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAg
ICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1ByZWZlcmVuY2VzUHJpdmF0ZS5o
IiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAi
Li5cVUlQcm9jZXNzXEFQSVxDXFdLUHJvdGVjdGlvblNwYWNlLmgiICIkKFdFQktJVE9VVFBVVERJ
UilcaW5jbHVkZVxXZWJLaXQyIgorICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENc
V0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2Vi
S2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXHdpblxXS0NvbnRleHRQ
cml2YXRlV2luLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhj
b3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcd2luXFdLVmlldy5oIiAiJChXRUJLSVRPVVRQ
VVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQ
SVxDXHdpblxXS1ZpZXdQcml2YXRlLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJL
aXQyIgo=
</data>
<flag name="review"
          id="66857"
          type_id="1"
          status="+"
          setter="mjs"
    />
    <flag name="commit-queue"
          id="66858"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>