<?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>219708</bug_id>
          
          <creation_ts>2020-12-09 14:56:20 -0800</creation_ts>
          <short_desc>[WebAuthn] Adopt new UI for the Security Key makeCredential flow</short_desc>
          <delta_ts>2020-12-10 03:33:38 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1713310</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-09 14:56:20 -0800</bug_when>
    <thetext>Adopt new UI for the Security Key makeCredential flow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713311</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-09 14:56:40 -0800</bug_when>
    <thetext>&lt;rdar://problem/72154735&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713348</commentid>
    <comment_count>2</comment_count>
      <attachid>415807</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-09 16:07:37 -0800</bug_when>
    <thetext>Created attachment 415807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713367</commentid>
    <comment_count>3</comment_count>
      <attachid>415807</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-12-09 16:34:46 -0800</bug_when>
    <thetext>Comment on attachment 415807
Patch

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

It looks like the bots aren&apos;t happy with this yet, but I think the overall approach is fine. Please answer my questions about whether it is okay to remove the USB-related code for existing WebAuthn flows. r=me if you fix the EWS failures.

&gt; Source/WebKit/Scripts/process-entitlements.sh:264
&gt; +    plistbuddy Add :com.apple.frontboard.launchapplications bool YES

Do we need this for Catalyst apps, too?

&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:-345
&gt; -            continue;

Why is it okay to remove this code now? If we aren&apos;t using the new UI, don&apos;t we still need to do this?

&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:-392
&gt; -        m_pendingRequestData.panelResult = result;

Ditto.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:76
&gt; +#endif // PLATFORM(IOS)

Is there ever going to be a macOS version of this? If we do intend to implement it, maybe we should add a &apos;notImplemented()&apos; call in an #else clause?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713406</commentid>
    <comment_count>4</comment_count>
      <attachid>415807</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-09 19:37:43 -0800</bug_when>
    <thetext>Comment on attachment 415807
Patch

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

Thanks Brent for r+ this patch.

&gt;&gt; Source/WebKit/Scripts/process-entitlements.sh:264
&gt;&gt; +    plistbuddy Add :com.apple.frontboard.launchapplications bool YES
&gt; 
&gt; Do we need this for Catalyst apps, too?

We have a separate radar for that.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:-345
&gt;&gt; -            continue;
&gt; 
&gt; Why is it okay to remove this code now? If we aren&apos;t using the new UI, don&apos;t we still need to do this?

Yes, the code was there because there was this period when we only supported USB security keys and there wasn&apos;t any UI in Safari. Now that all Safari should have UI.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:76
&gt;&gt; +#endif // PLATFORM(IOS)
&gt; 
&gt; Is there ever going to be a macOS version of this? If we do intend to implement it, maybe we should add a &apos;notImplemented()&apos; call in an #else clause?

Fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713409</commentid>
    <comment_count>5</comment_count>
      <attachid>415825</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-09 19:49:26 -0800</bug_when>
    <thetext>Created attachment 415825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713440</commentid>
    <comment_count>6</comment_count>
      <attachid>415838</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-09 23:11:29 -0800</bug_when>
    <thetext>Created attachment 415838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713458</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-10 00:42:08 -0800</bug_when>
    <thetext>Committed r270616: &lt;https://trac.webkit.org/changeset/270616&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415838.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713478</commentid>
    <comment_count>8</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-10 03:27:28 -0800</bug_when>
    <thetext>A build fix:
Committed r270619: &lt;https://trac.webkit.org/changeset/270619&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415807</attachid>
            <date>2020-12-09 16:07:37 -0800</date>
            <delta_ts>2020-12-09 19:49:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219708-20201209160736.patch</filename>
            <type>text/plain</type>
            <size>54458</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJkYmIzNTVhMWM0YjI0Nzhm
YWRkZmNiOTcyOWMxYjc1M2M2M2RjMDMuLjVmYTMyZTA0ZGFlNTg2MzRmNzc1ODNiZDBmZDY5ZDEx
NWY3YzVkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjAtMTItMDkgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFkb3B0IG5l
dyBVSSBmb3IgdGhlIFNlY3VyaXR5IEtleSBtYWtlQ3JlZGVudGlhbCBmbG93CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3MDgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzcyMTU0NzM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRvcHRzIHRoZSBuZXcgQXV0aGVudGljYXRpb25T
ZXJ2aWNlcycgVUkuIFRoZSBpZGVhIGlzIHRvIHVzZSBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29v
cmRpbmF0b3IKKyAgICAgICAgYXMgdGhlIG1pZGRsZSBsYXllciB0byBjb25uZWN0IHRvIHRoZSBu
ZXcgVUkgd2hpbGUga2VlcGluZyB0aGUgZXhpc3RpbmcgaW50ZXJmYWNlcyB0aGUgc2FtZSBpbiB0
aGUgQXV0aGVudGljYXRvck1hbmFnZXIKKyAgICAgICAgdG8gaGFuZGxlIHRoZSBpbnRlcmFjdGlv
bnMgYmV0d2VlbiBVSSBhbmQgYXV0aGVudGljYXRvcnMuCisKKyAgICAgICAgQ292ZXJlZCBieSBt
YW51YWwgdGVzdHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRp
b25TZXJ2aWNlc0NvcmVTUEkuaDogQWRkZWQuCisgICAgICAgIFNQSSBmb3IgdGhlIG5ldyBVSS4K
KworICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJL
aXQuV2ViQXV0aG4uc2I6CisgICAgICAgICogU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5z
aDoKKyAgICAgICAgQWRkZWQgbmV3IHNhbmRib3ggcnVsZXMgZm9yIFJlbW90ZSBTcHJpbmdCb2Fy
ZCBzZXJ2aWNlcyB3aGljaCBhcmUgdXNlZCBieSB0aGUgbmV3IFVJLgorCisgICAgICAgICogU291
cmNlc0NvY29hLnR4dDoKKyAgICAgICAgUGFwZXJ3b3JrLgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6QXV0aGVudGljYXRvck1hbmFnZXI6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6QXV0
aGVudGljYXRvck1hbmFnZXI6OmVuYWJsZU1vZGVybldlYkF1dGhlbnRpY2F0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXI6OmNsZWFyU3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2VydmljZVN0YXR1c1VwZGF0ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6YXV0aGVudGljYXRvclN0YXR1c1Vw
ZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6cmVxdWVzdFBp
bik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzZWxlY3RBc3NlcnRp
b25SZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzdGFy
dERpc2NvdmVyeSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5Q
YW5lbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QcmVzZW50
ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6aW52b2tlUGVuZGlu
Z0NvbXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvck1hbmFnZXIuaDoKKyAgICAgICAgVGVhY2hlZCBBdXRoZW50aWNhdG9y
TWFuYWdlciB0byB1c2UgdGhlIG5ldyBVSSdzIHByZXNlbnRlciB3aGVuIGl0IGlzIGF2YWlsYWJs
ZS4gT3RoZXJ3aXNlLCBpdCBmYWxscyBiYWNrIHRvIHRoZSBvbGQgVUkuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0Nv
cmVTb2Z0TGluay5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5tbTogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQ
cmVzZW50ZXJDb29yZGluYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9y
OjpBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpB
dXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6OnVwZGF0ZVByZXNlbnRlcik6CisgICAg
ICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6cmVxdWVzdFBp
bik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6
c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9y
UHJlc2VudGVyQ29vcmRpbmF0b3I6OmRpbWlzc1ByZXNlbnRlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRl
bGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5tbTogQWRkZWQuCisgICAg
ICAgICgtW1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlIGluaXRXaXRoQ29vcmRp
bmF0b3I6XSk6CisgICAgICAgICgtW1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRl
IGF1dGhvcml6YXRpb25QcmVzZW50ZXI6Y3JlZGVudGlhbFJlcXVlc3RlZEZvckxvZ2luQ2hvaWNl
OmF1dGhlbnRpY2F0ZWRDb250ZXh0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtX
S0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZSBhdXRob3JpemF0aW9uUHJlc2VudGVy
OnZhbGlkYXRlVXNlckVudGVyZWRQSU46Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIElu
dHJvZHVjZWQgdGhlIEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvciB0byBoYW5kbGUg
dGhlIG5ldyBVSS4KKworICAgICAgICAqIFdlYkF1dGhuUHJvY2Vzcy9XZWJBdXRoblByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRoblByb2Nlc3M6OldlYkF1dGhuUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhuUHJvY2Vzczo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbik6CisgICAgICAgIFRlYWNoZWQgV2ViQXV0aG5Qcm9jZXNzIHRvIGlu
Zm9ybSBBdXRoZW50aWNhdG9yTWFuYWdlciBhYm91dCBpdHMgZXhpc3RlbmNlLgorCisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIFBhcGVyd29yay4K
KwogMjAyMC0xMi0wOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW21hY09TXSBEZW55IG1hY2gtbG9va3VwIHRvIHRoZSBzZXJ2aWNlICdjb20uYXBwbGUu
YXNzZXJ0aW9uZC5wcm9jZXNzYXNzZXJ0aW9uY29ubmVjdGlvbicgaW4gdGhlIFdlYkNvbnRlbnQg
cHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0
aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3Bp
L0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2VjZTgx
MDdiZjUyMDNlNGM3NDJjMGUyNDI3MDg3MWQzMTVmZjAwNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3Jl
U1BJLmgKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IFBMQVRGT1JNKElPUykKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQg
PEF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlL0FTQ0F1dGhvcml6YXRpb25QcmVzZW50YXRpb25D
b250ZXh0Lmg+CisjaW1wb3J0IDxBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZS9BU0NBdXRob3Jp
emF0aW9uUHJlc2VudGVyLmg+CisjaW1wb3J0IDxBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZS9B
U0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRpYWxMb2dpbkNob2ljZS5oPgorI2ltcG9ydCA8QXV0
aGVudGljYXRpb25TZXJ2aWNlc0NvcmUvQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFs
TG9naW5DaG9pY2UuaD4KKworI2Vsc2UKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGNs
YXNzIExBQ29udGV4dDsKKworQHByb3RvY29sIEFTQ0xvZ2luQ2hvaWNlUHJvdG9jb2w7CitAcHJv
dG9jb2wgQVNDQ3JlZGVudGlhbFByb3RvY29sOworCitAcHJvdG9jb2wgQVNDQXV0aG9yaXphdGlv
blByZXNlbnRlckhvc3RQcm90b2NvbCA8TlNPYmplY3Q+CisKKy0gKHZvaWQpYXV0aG9yaXphdGlv
blJlcXVlc3RJbml0aWF0ZWRXaXRoTG9naW5DaG9pY2U6KGlkIDxBU0NMb2dpbkNob2ljZVByb3Rv
Y29sPilsb2dpbkNob2ljZSBhdXRoZW50aWNhdGVkQ29udGV4dDoobnVsbGFibGUgTEFDb250ZXh0
ICopY29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQgPEFTQ0NyZWRlbnRpYWxQ
cm90b2NvbD4gY3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyOwor
CistICh2b2lkKWF1dGhvcml6YXRpb25SZXF1ZXN0RmluaXNoZWRXaXRoQ3JlZGVudGlhbDoobnVs
bGFibGUgaWQ8QVNDQ3JlZGVudGlhbFByb3RvY29sPiljcmVkZW50aWFsIGVycm9yOihudWxsYWJs
ZSBOU0Vycm9yICopZXJyb3IgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBs
ZXRpb25IYW5kbGVyOworCistICh2b2lkKXZhbGlkYXRlVXNlckVudGVyZWRQSU46KE5TU3RyaW5n
ICopcGluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCA8QVNDQ3JlZGVudGlhbFByb3Rv
Y29sPiBjcmVkZW50aWFsLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXI7CisKK0Bl
bmQKKworQGNsYXNzIEFTQ0F1dGhvcml6YXRpb25QcmVzZW50YXRpb25Db250ZXh0OworQGNsYXNz
IEFTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXI7CisKK0Bwcm90b2NvbCBBU0NBdXRob3JpemF0aW9u
UHJlc2VudGVyRGVsZWdhdGUgPE5TT2JqZWN0PgorCistICh2b2lkKWF1dGhvcml6YXRpb25QcmVz
ZW50ZXI6KEFTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXIgKilwcmVzZW50ZXIgY3JlZGVudGlhbFJl
cXVlc3RlZEZvckxvZ2luQ2hvaWNlOihpZCA8QVNDTG9naW5DaG9pY2VQcm90b2NvbD4pbG9naW5D
aG9pY2UgYXV0aGVudGljYXRlZENvbnRleHQ6KG51bGxhYmxlIExBQ29udGV4dCAqKWNvbnRleHQg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IF9O
dWxsYWJsZSBjcmVkZW50aWFsLCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSljb21wbGV0aW9u
SGFuZGxlcjsKKworLSAodm9pZClhdXRob3JpemF0aW9uUHJlc2VudGVyOihBU0NBdXRob3JpemF0
aW9uUHJlc2VudGVyICopcHJlc2VudGVyIHZhbGlkYXRlVXNlckVudGVyZWRQSU46KE5TU3RyaW5n
ICopcGluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCA8QVNDQ3JlZGVudGlhbFByb3Rv
Y29sPiBjcmVkZW50aWFsLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXI7CisKK0Bl
bmQKKworQGludGVyZmFjZSBBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyIDogTlNPYmplY3QgPEFT
Q0F1dGhvcml6YXRpb25QcmVzZW50ZXJIb3N0UHJvdG9jb2w+CisKKy0gKHZvaWQpcHJlc2VudEF1
dGhvcml6YXRpb25XaXRoQ29udGV4dDooQVNDQXV0aG9yaXphdGlvblByZXNlbnRhdGlvbkNvbnRl
eHQgKiljb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZDxBU0NDcmVkZW50aWFs
UHJvdG9jb2w+IF9OdWxsYWJsZSwgTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRs
ZXI7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8QVNDQXV0aG9yaXphdGlvblBy
ZXNlbnRlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKKworQGVuZAorCitAY2xhc3MgQVNDQ3JlZGVudGlh
bFJlcXVlc3RDb250ZXh0OworCitleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBBU0NBdXRob3JpemF0
aW9uUHJlc2VudGF0aW9uQ29udGV4dERhdGFLZXk7CisKK0BpbnRlcmZhY2UgQVNDQXV0aG9yaXph
dGlvblByZXNlbnRhdGlvbkNvbnRleHQgOiBOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+CisKKy0g
KGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworKyAoaW5zdGFuY2V0eXBlKW5ldyBO
U19VTkFWQUlMQUJMRTsKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVxdWVzdENvbnRleHQ6
KG51bGxhYmxlIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dCAqKXJlcXVlc3RDb250ZXh0IGFw
cElkZW50aWZpZXI6KG51bGxhYmxlIE5TU3RyaW5nICopYXBwSWRlbnRpZmllcjsKKworLSAodm9p
ZClhZGRMb2dpbkNob2ljZTooaWQ8QVNDTG9naW5DaG9pY2VQcm90b2NvbD4pbG9naW5DaG9pY2U7
CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmFwcElk
ZW50aWZpZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8
aWQ8QVNDTG9naW5DaG9pY2VQcm90b2NvbD4+ICpsb2dpbkNob2ljZXM7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICpyZWx5aW5nUGFydHlJZGVudGlmaWVy
OworCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKnByb3hpZWRBcHBOYW1l
OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnByb3hp
ZWRBc3NvY2lhdGVkRG9tYWluczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0RhdGEg
KnByb3hpZWRJY29uRGF0YTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU051bWJlciAq
cHJveGllZEljb25TY2FsZTsKKworQGVuZAorCitAcHJvdG9jb2wgQVNDTG9naW5DaG9pY2VQcm90
b2NvbCA8TlNPYmplY3QsIE5TU2VjdXJlQ29kaW5nPgorCitAZW5kCisKK0BpbnRlcmZhY2UgQVND
U2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2UgOiBOU09iamVjdCA8QVND
TG9naW5DaG9pY2VQcm90b2NvbD4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRSZWdpc3RyYXRpb25D
aG9pY2U7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUgZGlz
cGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgdXNlckhhbmRsZTooTlNEYXRhICopdXNl
ckhhbmRsZTsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmlu
ZyAqbmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcg
KmRpc3BsYXlOYW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0Rh
dGEgKnVzZXJIYW5kbGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgaXNS
ZWdpc3RyYXRpb25SZXF1ZXN0OworCisrIChpbnN0YW5jZXR5cGUpbmV3IE5TX1VOQVZBSUxBQkxF
OworLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CisKK0BlbmQKKworQGludGVy
ZmFjZSBBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRpYWxMb2dpbkNob2ljZSA6IE5TT2JqZWN0
IDxBU0NMb2dpbkNob2ljZVByb3RvY29sPgorCistIChpbnN0YW5jZXR5cGUpaW5pdFJlZ2lzdHJh
dGlvbkNob2ljZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFt
ZSBkaXNwbGF5TmFtZTooTlNTdHJpbmcgKilkaXNwbGF5TmFtZSB1c2VySGFuZGxlOihOU0RhdGEg
Kil1c2VySGFuZGxlOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5T
U3RyaW5nICpuYW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0
cmluZyAqZGlzcGxheU5hbWU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkp
IE5TRGF0YSAqdXNlckhhbmRsZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9P
TCBpc1JlZ2lzdHJhdGlvblJlcXVlc3Q7CisKKysgKGluc3RhbmNldHlwZSluZXcgTlNfVU5BVkFJ
TEFCTEU7CistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKworQGVuZAorCitO
U19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Jl
c291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQXV0aG4uc2Ig
Yi9Tb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5X
ZWJLaXQuV2ViQXV0aG4uc2IKaW5kZXggYjdhNTA1MGI3N2U3ZWU4ZTFjMjU0OTkwNjY1YjM5MzZm
NDRlMGYyNi4uODUyZWQ2YzBhNWY4Yzc1NjUxYjdhNmE3MTJkYjY1YjZmMjgzYWJiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBw
bGUuV2ViS2l0LldlYkF1dGhuLnNiCisrKyBiL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRi
b3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJBdXRobi5zYgpAQCAtNjQxLDMgKzY0
MSw3IEBACiA7OyBBbGxvdyBhY2Nlc3NlcyB0byBORkMKIChhbGxvdyBtYWNoLWxvb2t1cAogICAg
IChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLm5mY2QuaHdtYW5hZ2VyIikpCisKKzs7IEFsbG93IGFj
Y2Vzc2VzIHRvIHRoZSBTcHJpbmdib2FyZCB2aWV3IHNlcnZpY2VzLgorKGFsbG93IG1hY2gtbG9v
a3VwCisgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2
aWNlcyIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRs
ZW1lbnRzLnNoIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNo
CmluZGV4IGY0MGRiMjZiNTQ1YWVjY2M5NmI1OWE3Mjg4NTNlN2NjZWM3ZTM0NzMuLmE1MDdhOWI2
ZDFkNDBkZDQxODEyY2M1OGMyMjMzMWUzMGI5ODJjMmEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gKQEAgLTI2MCw2ICsyNjAsOSBAQCBmdW5jdGlv
biBpb3NfZmFtaWx5X3Byb2Nlc3Nfd2ViYXV0aG5fZW50aXRsZW1lbnRzKCkKICAgICBwbGlzdGJ1
ZGR5IEFkZCA6Y29tLmFwcGxlLmFwcGF0dGVzdC5zcGkgYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5
IEFkZCA6Y29tLmFwcGxlLm1vYmlsZWFjdGl2YXRpb25kLnNwaSBib29sIFlFUwogCisgICAgcGxp
c3RidWRkeSBBZGQgOmNvbS5hcHBsZS5zcHJpbmdib2FyZC5yZW1vdGUtYWxlcnQgYm9vbCBZRVMK
KyAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLmZyb250Ym9hcmQubGF1bmNoYXBwbGljYXRp
b25zIGJvb2wgWUVTCisKICAgICBwbGlzdGJ1ZGR5IEFkZCA6c2VhdGJlbHQtcHJvZmlsZXMgYXJy
YXkKICAgICBwbGlzdGJ1ZGR5IEFkZCA6c2VhdGJlbHQtcHJvZmlsZXM6MCBzdHJpbmcgY29tLmFw
cGxlLldlYktpdC5XZWJBdXRobgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDRlYThiNzgx
ZDIwYTgxYTA4ZTQ0YjQ0ZGJhMGI1OGYyMWJkNmY5NzMuLjdkNDU1NDNhZWYzZmRhY2I5ZTA1ZWFi
ZDRmZDc0NmM3YTk1NDI2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTUzNiw2ICs1MzYs
OCBAQCBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHkuY3BwCiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUu
Y3BwCiAKIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BcHBBdHRlc3RJbnRlcm5h
bFNvZnRMaW5rLm1tIEBuby11bmlmeQorVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsubW0gQG5vLXVuaWZ5CitVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5h
dG9yLm1tCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5t
bQogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsu
bW0gQG5vLXVuaWZ5CkBAIC01NDUsNiArNTQ3LDcgQEAgVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbQogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL05lYXJGaWVsZFNvZnRMaW5rLm1tIEBuby11bmlmeQogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24ubW0KIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9OZmNTZXJ2aWNlLm1tCitVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
V0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9XS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLm1tCiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggMjRhNzdjYmVhZDA5NDhm
OGUxMDZhNzcxMWFlZmRjNDc4Y2E0N2ZlMC4uMzZhMGExZmRjNmVmMjc0MGI5NmQ5YTYyNzJmZTY1
NGMyMDNmOGYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJV2ViQXV0
aGVudGljYXRpb25QYW5lbC5oIgogI2luY2x1ZGUgIkFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
bGllbnQuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IuaCIK
ICNpbmNsdWRlICJMb2NhbFNlcnZpY2UuaCIKICNpbmNsdWRlICJOZmNTZXJ2aWNlLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCkBAIC0xNjQsMTMgKzE2NSwxNCBAQCB2b2lkIEF1dGhlbnRp
Y2F0b3JNYW5hZ2VyOjpoYW5kbGVSZXF1ZXN0KFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEm
JiBkYXRhLCBDYQogICAgIC8vIDIuIEFzayBjbGllbnRzIHRvIHNob3cgYXBwcm9wcmlhdGUgVUkg
aWYgYW55IGFuZCB0aGVuIHN0YXJ0IHRoZSByZXF1ZXN0LgogICAgIGluaXRUaW1lT3V0VGltZXIo
KTsKIAotICAgIC8vIEZJWE1FPHJkYXI6Ly9wcm9ibGVtLzcwODIyODM0PjogVGhlIFdlYlBhZ2VQ
cm94eSBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB3ZSBhcmUgaW4gdGhlIFVJ
UHJvY2Vzcy4KKyAgICAvLyBGSVhNRTxyZGFyOi8vcHJvYmxlbS83MDgyMjgzND46IFRoZSBtX2lz
V2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkIGlzIHVzZWQgdG8gZGV0ZXJtaW5lCisgICAg
Ly8gd2hldGhlciBvciBub3Qgd2UgYXJlIGluIHRoZSBVSVByb2Nlc3MuCiAgICAgLy8gSWYgc28s
IGNvbnRpbnVlIHRvIHRoZSBvbGQgcm91dGUuIE90aGVyd2lzZSwgdXNlIHRoZSBtb2Rlcm4gV2Vi
QXV0aG4gcHJvY2VzcyB3YXkuCi0gICAgaWYgKG1fcGVuZGluZ1JlcXVlc3REYXRhLnBhZ2UpIHsK
KyAgICBpZiAoIW1faXNXZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQpIHsKICAgICAgICAg
cnVuUGFuZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzdGFydERpc2NvdmVyeShn
ZXRUcmFuc3BvcnRzKCkpOworICAgIHJ1blByZXNlbnRlcigpOwogfQogCiB2b2lkIEF1dGhlbnRp
Y2F0b3JNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0KGNvbnN0IFBhZ2VJZGVudGlmaWVyJiBwYWdlSUQs
IGNvbnN0IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4mIGZyYW1lSUQpCkBAIC0xOTcsNiArMTk5
LDE5IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoY29uc3QgQVBJ
OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lCiAgICAgY2FuY2VsUmVxdWVzdCgpOwogfQog
Cit2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjYW5jZWwoKQoreworICAgIFJFTEVBU0VfQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBpZiAoIW1fcGVuZGluZ0NvbXBsZXRpb25IYW5k
bGVyKQorICAgICAgICByZXR1cm47CisgICAgY2FuY2VsUmVxdWVzdCgpOworfQorCit2b2lkIEF1
dGhlbnRpY2F0b3JNYW5hZ2VyOjplbmFibGVNb2Rlcm5XZWJBdXRoZW50aWNhdGlvbigpCit7Cisg
ICAgbV9pc1dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCA9IHRydWU7Cit9CisKIHZvaWQg
QXV0aGVudGljYXRvck1hbmFnZXI6OmNsZWFyU3RhdGVBc3luYygpCiB7CiAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gewpAQCAtMjEz
LDYgKzIyOCw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmNsZWFyU3RhdGUoKQogICAg
IG1fYXV0aGVudGljYXRvcnMuY2xlYXIoKTsKICAgICBtX3NlcnZpY2VzLmNsZWFyKCk7CiAgICAg
bV9wZW5kaW5nUmVxdWVzdERhdGEgPSB7IH07CisgICAgbV9wcmVzZW50ZXIgPSBudWxscHRyOwog
fQogCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjphdXRoZW50aWNhdG9yQWRkZWQoUmVmPEF1
dGhlbnRpY2F0b3I+JiYgYXV0aGVudGljYXRvcikKQEAgLTIyNiw2ICsyNDIsMTIgQEAgdm9pZCBB
dXRoZW50aWNhdG9yTWFuYWdlcjo6YXV0aGVudGljYXRvckFkZGVkKFJlZjxBdXRoZW50aWNhdG9y
PiYmIGF1dGhlbnRpY2F0b3IKIAogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2VydmljZVN0
YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGljYXRpb25TdGF0dXMgc3RhdHVzKQogeworICAgIC8vIFRo
aXMgaXMgZm9yIHRoZSBuZXcgVUkuCisgICAgaWYgKG1fcHJlc2VudGVyKSB7CisgICAgICAgIG1f
cHJlc2VudGVyLT51cGRhdGVQcmVzZW50ZXIoc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIGRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKFtzdGF0dXNdIChjb25zdCBBUEk6Oldl
YkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsKSB7CiAgICAgICAgIHBhbmVsLmNsaWVudCgpLnVw
ZGF0ZVBhbmVsKHN0YXR1cyk7CiAgICAgfSk7CkBAIC0yNjgsNiArMjkwLDEyIEBAIHZvaWQgQXV0
aGVudGljYXRvck1hbmFnZXI6OmF1dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKFdlYkF1dGhlbnRp
Y2F0aW9uU3RhdHVzIHN0CiAgICAgLy8gYW4gZXJyb3IuIFdlIGRvbid0IHJlYWxseSBjYXJlIHdo
YXQga2luZCBvZiBlcnJvciBpdCByZWFsbHkgaXMuCiAgICAgbV9wZW5kaW5nUmVxdWVzdERhdGEu
Y2FjaGVkUGluID0gU3RyaW5nKCk7CiAKKyAgICAvLyBUaGlzIGlzIGZvciB0aGUgbmV3IFVJLgor
ICAgIGlmIChtX3ByZXNlbnRlcikgeworICAgICAgICBtX3ByZXNlbnRlci0+dXBkYXRlUHJlc2Vu
dGVyKHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBkaXNwYXRjaFBhbmVs
Q2xpZW50Q2FsbChbc3RhdHVzXSAoY29uc3QgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiBw
YW5lbCkgewogICAgICAgICBwYW5lbC5jbGllbnQoKS51cGRhdGVQYW5lbChzdGF0dXMpOwogICAg
IH0pOwpAQCAtMjkyLDYgKzMyMCwxMiBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1
ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYwogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihwaW4pOwogICAgIH07CiAKKyAgICAvLyBUaGlzIGlzIGZvciB0
aGUgbmV3IFVJLgorICAgIGlmIChtX3ByZXNlbnRlcikgeworICAgICAgICBtX3ByZXNlbnRlci0+
cmVxdWVzdFBpbihyZXRyaWVzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBkaXNwYXRjaFBhbmVsQ2xpZW50Q2FsbChbcmV0cmllcywgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNvbnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYg
cGFuZWwpIG11dGFibGUgewogICAgICAgICBwYW5lbC5jbGllbnQoKS5yZXF1ZXN0UGluKHJldHJp
ZXMsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9KTsKQEAgLTI5OSw2ICszMzMsMTIgQEAgdm9p
ZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cmVxdWVzdFBpbih1aW50NjRfdCByZXRyaWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGMKIAogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2VsZWN0
QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U+PiYmIHJlc3BvbnNlcywgV2ViQXV0aGVudGljYXRpb25Tb3VyY2Ugc291cmNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSop
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBuZXcgVUku
CisgICAgaWYgKG1fcHJlc2VudGVyKSB7CisgICAgICAgIG1fcHJlc2VudGVyLT5zZWxlY3RBc3Nl
cnRpb25SZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlcyksIHNvdXJjZSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgZGlzcGF0Y2hQYW5l
bENsaWVudENhbGwoW3Jlc3BvbnNlcyA9IFdURk1vdmUocmVzcG9uc2VzKSwgc291cmNlLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgQVBJOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCkgbXV0YWJsZSB7CiAgICAgICAgIHBhbmVsLmNs
aWVudCgpLnNlbGVjdEFzc2VydGlvblJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2VzKSwgc291cmNl
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CkBAIC0zNDAsOSArMzgwLDYg
QEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6c3RhcnREaXNjb3ZlcnkoY29uc3QgVHJhbnNw
b3J0U2V0JiB0cmFuc3BvcnRzKQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
QVNTRVJUKG1fc2VydmljZXMuaXNFbXB0eSgpICYmIHRyYW5zcG9ydHMuc2l6ZSgpIDw9IG1heFRy
YW5zcG9ydE51bWJlcik7CiAgICAgZm9yIChhdXRvJiB0cmFuc3BvcnQgOiB0cmFuc3BvcnRzKSB7
Ci0gICAgICAgIC8vIE9ubHkgYWxsb3cgVVNCIGF1dGhlbnRpY2F0b3JzIHdoZW4gY2xpZW50cyBk
b24ndCBoYXZlIGRlZGljYXRlZCBVSS4KLSAgICAgICAgaWYgKHRyYW5zcG9ydCAhPSBBdXRoZW50
aWNhdG9yVHJhbnNwb3J0OjpVc2IgJiYgKG1fcGVuZGluZ1JlcXVlc3REYXRhLnBhbmVsUmVzdWx0
ID09IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBhdXRvIHNlcnZpY2UgPSBjcmVhdGVTZXJ2aWNlKHRyYW5z
cG9ydCwgKnRoaXMpOwogICAgICAgICBzZXJ2aWNlLT5zdGFydERpc2NvdmVyeSgpOwogICAgICAg
ICBtX3NlcnZpY2VzLmFwcGVuZChXVEZNb3ZlKHNlcnZpY2UpKTsKQEAgLTM4OSwxNiArNDI2LDMx
IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnJ1blBhbmVsKCkKICAgICAgICAgICAgIHx8
IChyZXN1bHQgPT0gV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6RGlkTm90UHJlc2VudCkK
ICAgICAgICAgICAgIHx8ICh3ZWFrUGFuZWwuZ2V0KCkgIT0gbV9wZW5kaW5nUmVxdWVzdERhdGEu
cGFuZWwuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3BlbmRpbmdSZXF1
ZXN0RGF0YS5wYW5lbFJlc3VsdCA9IHJlc3VsdDsKICAgICAgICAgc3RhcnREaXNjb3ZlcnkodHJh
bnNwb3J0cyk7CiAgICAgfSk7CiB9CiAKK3ZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnJ1blBy
ZXNlbnRlcigpCit7CisgICAgLy8gR2V0IGF2YWlsYWJsZSB0cmFuc3BvcnRzIGFuZCBzdGFydCBk
aXNjb3ZlcmluZyBhdXRoZW50aWNhdG9ycyBvbiB0aGVtLgorICAgIGF1dG8mIG9wdGlvbnMgPSBt
X3BlbmRpbmdSZXF1ZXN0RGF0YS5vcHRpb25zOworICAgIGF1dG8gdHJhbnNwb3J0cyA9IGdldFRy
YW5zcG9ydHMoKTsKKyAgICBzdGFydERpc2NvdmVyeSh0cmFuc3BvcnRzKTsKKworICAgIG1fcHJl
c2VudGVyID0gbWFrZVVuaXF1ZTxBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I+KCp0
aGlzLCBnZXRScElkKG9wdGlvbnMpLCB0cmFuc3BvcnRzLCBnZXRDbGllbnREYXRhVHlwZShvcHRp
b25zKSk7Cit9CisKIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6Omludm9rZVBlbmRpbmdDb21w
bGV0aW9uSGFuZGxlcihSZXNwb25kJiYgcmVzcG9uZCkKIHsKLSAgICBkaXNwYXRjaFBhbmVsQ2xp
ZW50Q2FsbChbcmVzdWx0ID0gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QXV0aGVudGljYXRv
clJlc3BvbnNlPj4ocmVzcG9uZCkgPyBXZWJBdXRoZW50aWNhdGlvblJlc3VsdDo6U3VjY2VlZGVk
IDogV2ViQXV0aGVudGljYXRpb25SZXN1bHQ6OkZhaWxlZF0gKGNvbnN0IEFQSTo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbCYgcGFuZWwpIHsKLSAgICAgICAgcGFuZWwuY2xpZW50KCkuZGlzbWlzc1Bh
bmVsKHJlc3VsdCk7Ci0gICAgfSk7CisgICAgLy8gVGhpcyBpcyBmb3IgdGhlIG5ldyBVSS4KKyAg
ICBpZiAobV9wcmVzZW50ZXIpCisgICAgICAgIG1fcHJlc2VudGVyLT5kaW1pc3NQcmVzZW50ZXIo
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgZGlzcGF0Y2hQYW5lbENsaWVudENhbGwoW3Jlc3VsdCA9
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEF1dGhlbnRpY2F0b3JSZXNwb25zZT4+KHJlc3Bv
bmQpID8gV2ViQXV0aGVudGljYXRpb25SZXN1bHQ6OlN1Y2NlZWRlZCA6IFdlYkF1dGhlbnRpY2F0
aW9uUmVzdWx0OjpGYWlsZWRdIChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBh
bmVsKSB7CisgICAgICAgICAgICBwYW5lbC5jbGllbnQoKS5kaXNtaXNzUGFuZWwocmVzdWx0KTsK
KyAgICAgICAgfSk7CisgICAgfQorCiAgICAgbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShyZXNwb25kKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4
IDI3MGI4YmY0MzUxMzI5M2ZiZjQ0OWE0NzliYWJjOTdiZDA2MDk4NTYuLmI1YTEyYjQ5Njk5MmMy
MTM4NjcyYTE2YzdkOTE5MTI4YTRiMjkwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFn
ZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdG9yLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRvclByZXNlbnRlckNvb3Jk
aW5hdG9yLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2UuaCIKICNp
bmNsdWRlICJXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9BdXRoZW50aWNhdG9yUmVzcG9uc2UuaD4KQEAgLTYzLDkgKzY0LDEyIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmLCBDYWxs
YmFjayYmKTsKICAgICB2b2lkIGNhbmNlbFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXImLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+Jik7IC8vIENh
bGxlZCBmcm9tIFdlYlBhZ2VQcm94eS9XZWJQcm9jZXNzUHJveHkuCiAgICAgdm9pZCBjYW5jZWxS
ZXF1ZXN0KGNvbnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYpOyAvLyBDYWxsZWQgZnJv
bSBwYW5lbCBjbGllbnRzLgorICAgIHZvaWQgY2FuY2VsKCk7IC8vIENhbGxlZCBmcm9tIHRoZSBw
cmVzZW50ZXIuCiAKICAgICB2aXJ0dWFsIGJvb2wgaXNNb2NrKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAorICAgIHZvaWQgZW5hYmxlTW9kZXJuV2ViQXV0aGVudGljYXRpb24oKTsKKwogcHJv
dGVjdGVkOgogICAgIFJ1bkxvb3A6OlRpbWVyPEF1dGhlbnRpY2F0b3JNYW5hZ2VyPiYgcmVxdWVz
dFRpbWVPdXRUaW1lcigpIHsgcmV0dXJuIG1fcmVxdWVzdFRpbWVPdXRUaW1lcjsgfQogICAgIHZv
aWQgY2xlYXJTdGF0ZUFzeW5jKCk7IC8vIFRvIHZvaWQgY3ljbGljIGRlcGVuZGVuY2UuCkBAIC05
Niw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdFRpbWVPdXRUaW1lcigpOwogICAg
IHZvaWQgdGltZU91dFRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHJ1blBhbmVsKCk7CisgICAgdm9p
ZCBydW5QcmVzZW50ZXIoKTsKICAgICB2b2lkIHJlc3RhcnREaXNjb3ZlcnkoKTsKICAgICBUcmFu
c3BvcnRTZXQgZ2V0VHJhbnNwb3J0cygpIGNvbnN0OwogICAgIHZvaWQgZGlzcGF0Y2hQYW5lbENs
aWVudENhbGwoRnVuY3Rpb248dm9pZChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwm
KT4mJikgY29uc3Q7CkBAIC0xMDQsOSArMTA5LDEyIEBAIHByaXZhdGU6CiAgICAgV2ViQXV0aGVu
dGljYXRpb25SZXF1ZXN0RGF0YSBtX3BlbmRpbmdSZXF1ZXN0RGF0YTsKICAgICBDYWxsYmFjayBt
X3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcjsgLy8gU2hvdWxkIG5vdCBiZSBpbnZva2VkIGRpcmVj
dGx5LCB1c2UgaW52b2tlUGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyLgogICAgIFJ1bkxvb3A6OlRp
bWVyPEF1dGhlbnRpY2F0b3JNYW5hZ2VyPiBtX3JlcXVlc3RUaW1lT3V0VGltZXI7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcj4gbV9wcmVzZW50
ZXI7CiAKICAgICBWZWN0b3I8VW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNl
Pj4gbV9zZXJ2aWNlczsKICAgICBIYXNoU2V0PFJlZjxBdXRoZW50aWNhdG9yPj4gbV9hdXRoZW50
aWNhdG9yczsKKworICAgIGJvb2wgbV9pc1dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCB7
IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0aW9u
U2VydmljZXNDb3JlU29mdExpbmsuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lOGVlNGQyZTI1ZWNjYzVjN2VjZTc5N2ZkNzMxNTJjMDNlMzk2ODdkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5oCkBAIC0wLDAgKzEsNDAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiQXV0aGVudGljYXRpb25TZXJ2
aWNlc0NvcmVTUEkuaCIKKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCisjaWYgUExBVEZP
Uk0oSU9TKQorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoV2ViS2l0LCBBdXRoZW50
aWNhdGlvblNlcnZpY2VzQ29yZSk7CisKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFdlYktp
dCwgQVNDQXV0aG9yaXphdGlvblByZXNlbnRlcik7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURF
UihXZWJLaXQsIEFTQ0F1dGhvcml6YXRpb25QcmVzZW50YXRpb25Db250ZXh0KTsKK1NPRlRfTElO
S19DTEFTU19GT1JfSEVBREVSKFdlYktpdCwgQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50aWFs
TG9naW5DaG9pY2UpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViS2l0LCBBU0NTZWN1
cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxMb2dpbkNob2ljZSk7CisKKyNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRp
b25TZXJ2aWNlc0NvcmVTb2Z0TGluay5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmFiMzQzOGFhYzAyZjg2ZWNl
ZTEwODg5ZjViODM4YTYxMGM0NmY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0Nv
cmVTb2Z0TGluay5tbQpAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW1wb3J0ICJBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oIgorI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBQTEFURk9STShJT1MpCisKK1NPRlRfTElO
S19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFKFdlYktpdCwgQXV0aGVudGljYXRpb25TZXJ2
aWNlc0NvcmUpOworCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShXZWJLaXQsIEF1dGhlbnRp
Y2F0aW9uU2VydmljZXNDb3JlLCBBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyKTsKK1NPRlRfTElO
S19DTEFTU19GT1JfU09VUkNFKFdlYktpdCwgQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmUsIEFT
Q0F1dGhvcml6YXRpb25QcmVzZW50YXRpb25Db250ZXh0KTsKK1NPRlRfTElOS19DTEFTU19GT1Jf
U09VUkNFKFdlYktpdCwgQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmUsIEFTQ1BsYXRmb3JtUHVi
bGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlKTsKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNF
KFdlYktpdCwgQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmUsIEFTQ1NlY3VyaXR5S2V5UHVibGlj
S2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlKTsKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0F1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3Jk
aW5hdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTBhYzZmODg2MzUxNWUwMjk0ZWVmMzQ3YmFiNjBjNmY3ZGNh
MTEzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5oCkBAIC0w
LDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJf
QVVUSE4pCisKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdGlvbkZsYWdzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9BdXRoZW50aWNhdG9yVHJhbnNwb3J0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XZWJB
dXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK09CSkNf
Q0xBU1MgQVNDQXV0aG9yaXphdGlvblByZXNlbnRlcjsKK09CSkNfQ0xBU1MgV0tBU0NBdXRob3Jp
emF0aW9uUHJlc2VudGVyRGVsZWdhdGU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOworCitjbGFzcyBBdXRoZW50aWNhdG9yUHJlc2Vu
dGVyQ29vcmRpbmF0b3IgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXV0aGVudGljYXRvclByZXNl
bnRlckNvb3JkaW5hdG9yPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yKTsKK3B1
YmxpYzoKKyAgICB1c2luZyBUcmFuc3BvcnRTZXQgPSBIYXNoU2V0PFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQsIFdURjo6SW50SGFzaDxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNw
b3J0PiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJh
bnNwb3J0Pj47CisKKyAgICBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IoY29uc3Qg
QXV0aGVudGljYXRvck1hbmFnZXImLCBjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFRyYW5zcG9y
dFNldCYsIFdlYkNvcmU6OkNsaWVudERhdGFUeXBlKTsKKworICAgIHZvaWQgdXBkYXRlUHJlc2Vu
dGVyKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKTsKKyAgICB2b2lkIHJlcXVlc3RQaW4odWludDY0
X3QgcmV0cmllcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7Cisg
ICAgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiYsIFdlYkF1dGhlbnRpY2F0aW9uU291cmNlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZSopPiYmKTsKKyAgICB2b2lkIGRpbWlzc1ByZXNlbnRlcigpOworCitwcml2YXRlOgorICAg
IFdlYWtQdHI8QXV0aGVudGljYXRvck1hbmFnZXI+IG1fbWFuYWdlcjsKKyAgICBSZXRhaW5QdHI8
QVNDQXV0aG9yaXphdGlvblByZXNlbnRlcj4gbV9wcmVzZW50ZXI7CisgICAgUmV0YWluUHRyPFdL
QVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlPiBtX3ByZXNlbnRlckRlbGVnYXRlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRl
ckNvb3JkaW5hdG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ZTk3ZWQ4ZTI0MDhiNmRjNWVjNTBkNWFmNWFi
ODk3YWZkODYyMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3Iu
bW0KQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmgiCisKKyNpbXBvcnQg
IkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCisjaW1wb3J0ICJXS0FTQ0F1dGhvcml6YXRpb25QcmVz
ZW50ZXJEZWxlZ2F0ZS5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisKKyNpbXBvcnQgIkF1
dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQXV0aGVudGljYXRvclByZXNlbnRlckNvb3Jk
aW5hdG9yOjpBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IoY29uc3QgQXV0aGVudGlj
YXRvck1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVHJhbnNwb3J0
U2V0JiB0cmFuc3BvcnRzLCBDbGllbnREYXRhVHlwZSB0eXBlKQorICAgIDogbV9tYW5hZ2VyKG1h
a2VXZWFrUHRyKG1hbmFnZXIpKQoreworI2lmIFBMQVRGT1JNKElPUykKKyAgICBhdXRvIHByZXNl
bnRhdGlvbkNvbnRleHQgPSBhZG9wdE5TKFthbGxvY0FTQ0F1dGhvcml6YXRpb25QcmVzZW50YXRp
b25Db250ZXh0SW5zdGFuY2UoKSBpbml0V2l0aFJlcXVlc3RDb250ZXh0Om51bGxwdHIgYXBwSWRl
bnRpZmllcjpudWxscHRyXSk7CisgICAgW3ByZXNlbnRhdGlvbkNvbnRleHQgc2V0UmVseWluZ1Bh
cnR5SWRlbnRpZmllcjogcnBJZF07CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIENs
aWVudERhdGFUeXBlOjpDcmVhdGU6CisgICAgICAgIGlmICh0cmFuc3BvcnRzLmNvbnRhaW5zKEF1
dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsKSkKKyAgICAgICAgICAgIFtwcmVzZW50YXRp
b25Db250ZXh0IGFkZExvZ2luQ2hvaWNlOmFkb3B0TlMoW2FsbG9jQVNDUGxhdGZvcm1QdWJsaWNL
ZXlDcmVkZW50aWFsTG9naW5DaG9pY2VJbnN0YW5jZSgpIGluaXRSZWdpc3RyYXRpb25DaG9pY2Vd
KS5nZXQoKV07CisgICAgICAgIGlmICh0cmFuc3BvcnRzLmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JU
cmFuc3BvcnQ6OlVzYikgfHwgdHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50aWNhdG9yVHJhbnNw
b3J0OjpOZmMpKQorICAgICAgICAgICAgW3ByZXNlbnRhdGlvbkNvbnRleHQgYWRkTG9naW5DaG9p
Y2U6YWRvcHROUyhbYWxsb2NBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxMb2dpbkNo
b2ljZUluc3RhbmNlKCkgaW5pdFJlZ2lzdHJhdGlvbkNob2ljZV0pLmdldCgpXTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDbGllbnREYXRhVHlwZTo6R2V0OgorICAgICAgICAvLyBGSVhNRSgy
MTk3MTApOiBBZG9wdCBuZXcgVUkgZm9yIHRoZSBQbGF0Zm9ybSBBdXRoZW50aWNhdG9yIGdldEFz
c2VydGlvbiBmbG93LgorICAgICAgICAvLyBGSVhNRSgyMTk3MTEpOiBBZG9wdCBuZXcgVUkgZm9y
IHRoZSBTZWN1cml0eSBLZXkgZ2V0QXNzZXJ0aW9uIGZsb3cuCisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIG1f
cHJlc2VudGVyRGVsZWdhdGUgPSBbW1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aENvb3JkaW5hdG9yOip0aGlzXTsKKyAgICBtX3ByZXNlbnRlciA9IFth
bGxvY0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJJbnN0YW5jZSgpIGluaXRdOworICAgIFttX3By
ZXNlbnRlciBzZXREZWxlZ2F0ZTptX3ByZXNlbnRlckRlbGVnYXRlLmdldCgpXTsKKworICAgIGF1
dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW21hbmFnZXIgPSBtX21hbmFnZXJd
IChpZDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghZXJyb3IpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZG4ndCBjb21wbGV0ZSB0aGUgYXV0aGVudGljYXRvciBwcmVzZW50YXRpb24gY29u
dGV4dDogJUAiLCBlcnJvcik7CisgICAgICAgIC8vIFRoaXMgYmxvY2sgY2FuIGJlIGV4ZWN1dGVk
IGluIGFub3RoZXIgdGhyZWFkLgorICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW21h
bmFnZXJdICgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKG1hbmFnZXIpCisgICAgICAgICAg
ICAgICAgbWFuYWdlci0+Y2FuY2VsKCk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIFttX3By
ZXNlbnRlciBwcmVzZW50QXV0aG9yaXphdGlvbldpdGhDb250ZXh0OnByZXNlbnRhdGlvbkNvbnRl
eHQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXIuZ2V0KCldOworI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKK30KKwordm9pZCBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29v
cmRpbmF0b3I6OnVwZGF0ZVByZXNlbnRlcihXZWJBdXRoZW50aWNhdGlvblN0YXR1cykKK3sKKyAg
ICAvLyBGSVhNRSgyMTk3MTMpOiBBZG9wdCBuZXcgVUkgZm9yIHRoZSB1cGRhdGUgZmxvdy4KK30K
Kwordm9pZCBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6OnJlcXVlc3RQaW4odWlu
dDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpCit7CisgICAg
Ly8gRklYTUUoMjE5NzEyKTogQWRvcHQgbmV3IFVJIGZvciB0aGUgQ2xpZW50IFBJTiBmbG93Lgor
fQorCit2b2lkIEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6c2VsZWN0QXNzZXJ0
aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYm
LCBXZWJBdXRoZW50aWNhdGlvblNvdXJjZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UqKT4mJikKK3sKKyAgICAvLyBGSVhNRSgyMTk3MTApOiBB
ZG9wdCBuZXcgVUkgZm9yIHRoZSBQbGF0Zm9ybSBBdXRoZW50aWNhdG9yIGdldEFzc2VydGlvbiBm
bG93LgorICAgIC8vIEZJWE1FKDIxOTcxMSk6IEFkb3B0IG5ldyBVSSBmb3IgdGhlIFNlY3VyaXR5
IEtleSBnZXRBc3NlcnRpb24gZmxvdy4KK30KKwordm9pZCBBdXRoZW50aWNhdG9yUHJlc2VudGVy
Q29vcmRpbmF0b3I6OmRpbWlzc1ByZXNlbnRlcigpCit7CisgICAgLy8gRklYTUUoMjE5NzE2KTog
QWRvcHQgbmV3IFVJIGZvciB0aGUgZGlzbWlzcyBmbG93LgorfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS0FTQ0F1dGhvcml6YXRp
b25QcmVzZW50ZXJEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwYzZlNmM4MGQ3NDY4NjZmYThmNDhm
MjA0NDA5MTdlMmE4M2FiNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJE
ZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCAiQXV0aGVu
dGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBB
dXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I7Cit9CisKK05TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCisKK0BpbnRlcmZhY2UgV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUg
OiBOU09iamVjdCA8QVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlPgorCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhDb29yZGluYXRvcjooV2ViS2l0OjpBdXRoZW50aWNhdG9yUHJlc2Vu
dGVyQ29vcmRpbmF0b3ImKWNvb3JkaW5hdG9yOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxM
X0VORAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oSU9TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
V0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50
ZXJEZWxlZ2F0ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTVhMDc4YWI4OGUyNjBhZTc1ZmRmMWQ0NWU2YmVi
ZGZjMzM5ZTkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUu
bW0KQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUuaCIKKworI2lmIEVOQUJM
RShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCAiQXV0aGVudGljYXRvclBy
ZXNlbnRlckNvb3JkaW5hdG9yLmgiCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbXBs
ZW1lbnRhdGlvbiBXS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZSB7CisgICAgV2Vh
a1B0cjxXZWJLaXQ6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcj4gX2Nvb3JkaW5h
dG9yOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb29yZGluYXRvcjooV2ViS2l0OjpB
dXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3ImKWNvb3JkaW5hdG9yCit7CisgICAgaWYg
KChzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgX2Nvb3JkaW5hdG9yID0gbWFrZVdlYWtQ
dHIoY29vcmRpbmF0b3IpOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWF1dGhvcml6
YXRpb25QcmVzZW50ZXI6KEFTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXIgKilwcmVzZW50ZXIgY3Jl
ZGVudGlhbFJlcXVlc3RlZEZvckxvZ2luQ2hvaWNlOihpZCA8QVNDTG9naW5DaG9pY2VQcm90b2Nv
bD4pbG9naW5DaG9pY2UgYXV0aGVudGljYXRlZENvbnRleHQ6KG51bGxhYmxlIExBQ29udGV4dCAq
KWNvbnRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkIDxBU0NDcmVkZW50aWFsUHJv
dG9jb2w+IF9OdWxsYWJsZSBjcmVkZW50aWFsLCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSlj
b21wbGV0aW9uSGFuZGxlcgoreworICAgIC8vIEZJWE1FKDIxOTcwOSk6IEFkb3B0IG5ldyBVSSBm
b3IgdGhlIFBsYXRmb3JtIEF1dGhlbnRpY2F0b3IgbWFrZUNyZWRlbnRpYWwgZmxvdy4KK30KKwor
LSAodm9pZClhdXRob3JpemF0aW9uUHJlc2VudGVyOihBU0NBdXRob3JpemF0aW9uUHJlc2VudGVy
ICopcHJlc2VudGVyIHZhbGlkYXRlVXNlckVudGVyZWRQSU46KE5TU3RyaW5nICopcGluIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBjcmVkZW50
aWFsLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICAvLyBGSVhNRSgy
MTk3MTIpOiBBZG9wdCBuZXcgVUkgZm9yIHRoZSBDbGllbnQgUElOIGZsb3cuCit9CisKK0BlbmQK
KworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKSAm
JiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vz
cy9XZWJBdXRoblByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2Vi
QXV0aG5Qcm9jZXNzLmNwcAppbmRleCBhNWI1MDYyNmYwNTMzM2Y4YmZiNzQ4NmMwYjZjYTFiNGE2
ZWQzMWI4Li43N2YzODBkZjk4ZTAxNzhjMDczZjI2YTM5ZTQxZTI2YzNjY2IzZjQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRoblByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5jcHAKQEAg
LTQyLDYgKzQyLDcgQEAgV2ViQXV0aG5Qcm9jZXNzOjpXZWJBdXRoblByb2Nlc3MoQXV4aWxpYXJ5
UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmEKICAgICA6IG1fYXV0aGVudGlj
YXRvck1hbmFnZXIobWFrZVVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yTWFuYWdlcj4oKSkKIHsKICAg
ICBpbml0aWFsaXplKFdURk1vdmUocGFyYW1ldGVycykpOworICAgIG1fYXV0aGVudGljYXRvck1h
bmFnZXItPmVuYWJsZU1vZGVybldlYkF1dGhlbnRpY2F0aW9uKCk7CiB9CiAKIFdlYkF1dGhuUHJv
Y2Vzczo6fldlYkF1dGhuUHJvY2VzcygpCkBAIC0xMjksNiArMTMwLDcgQEAgdm9pZCBXZWJBdXRo
blByb2Nlc3M6OnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV2ViQ29yZTo6
TW9ja1dlYkF1dGgKIHsKICAgICBpZiAoIW1fYXV0aGVudGljYXRvck1hbmFnZXItPmlzTW9jaygp
KSB7CiAgICAgICAgIG1fYXV0aGVudGljYXRvck1hbmFnZXIgPSBtYWtlVW5pcXVlUmVmPE1vY2tB
dXRoZW50aWNhdG9yTWFuYWdlcj4oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgICAgIG1f
YXV0aGVudGljYXRvck1hbmFnZXItPmVuYWJsZU1vZGVybldlYkF1dGhlbnRpY2F0aW9uKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgc3RhdGljX2Nhc3Q8TW9ja0F1dGhlbnRpY2F0b3JN
YW5hZ2VyKj4oJm1fYXV0aGVudGljYXRvck1hbmFnZXIpLT5zZXRUZXN0Q29uZmlndXJhdGlvbihX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFlM2I0M2U1YzE3NDcxMDE0NDU1ODc5YTc1OWZkNDBk
NmMxNWRhMTQuLjg1YWIwZTRlZjc4NDVjZWRhMWQ1N2UyODljZmFkYmNiMTBkM2E3ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE0
NSw2ICsxMTQ1LDggQEAKIAkJNTc1QjFCQkEyM0NFOUMxMzAwMjA2MzlBIC8qIFdlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5NTVBNkVBMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAg
Ki87IH07CiAJCTU3NkNBOUQ3MjJCODYyMTgwMDMwMTQzQyAvKiBTT0F1dGhvcml6YXRpb25OU1VS
TEV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTdGRDMxNzMyMkIzNTE0ODAwOEQwRThCIC8qIFNPQXV0aG9yaXphdGlvbk5TVVJMRXh0cmFzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTc3MkYy
MDYyMTdEQkQ2QTAwNTZCRjJDIC8qIEhpZFNlcnZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NzJGMjA0MjE3REJENkEwMDU2QkYyQyAvKiBIaWRT
ZXJ2aWNlLmggKi87IH07CisJCTU3NzczOTkxMjU4MDM3NDMwMDU5MzQ4QiAvKiBBdXRoZW50aWNh
dG9yUHJlc2VudGVyQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3NzczOThGMjU4MDM3NDMwMDU5MzQ4QiAvKiBBdXRoZW50aWNhdG9y
UHJlc2VudGVyQ29vcmRpbmF0b3IuaCAqLzsgfTsKKwkJNTc3NzM5OTUyNTgwMzg4RjAwNTkzNDhC
IC8qIFdLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Nzc3Mzk5MzI1ODAzODhGMDA1OTM0OEIg
LyogV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUuaCAqLzsgfTsKIAkJNTc3RkY3
ODIyMzQ2RTgxQzAwNEVERkI5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3N0ZGNzgxMjM0
NkU4MUMwMDRFREZCOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggKi87IH07
CiAJCTU3N0ZGNzg1MjM0NkVDQUEwMDRFREZCOSAvKiBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzdG
Rjc4MzIzNDZFQ0FBMDA0RURGQjkgLyogV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oICov
OyB9OwogCQk1NzhEQzI5ODIxNTVBMDAyMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNv
ZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzhEQzI5NzIxNTVBMDAxMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmgg
Ki87IH07CkBAIC0xMjA4LDYgKzEyMTAsMTAgQEAKIAkJNTdFQjJFM0EyMUUxOTgzRTAwQjg5Q0RG
IC8qIFUyZkF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3RUIyRTM4MjFFMTk4M0UwMEI4OUNERiAvKiBVMmZBdXRoZW50aWNhdG9y
LmggKi87IH07CiAJCTU3RUJFMjZBMjM0Njc2QzUwMDhEOEFGOSAvKiBBUElXZWJBdXRoZW50aWNh
dGlvblBhbmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1N0VCRTI2ODIzNDY3NkM1MDA4RDhBRjkgLyogQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5o
ICovOyB9OwogCQk1N0VGQzc3RTI1NTBFQjg2MDBGOTQ3N0QgLyogY29tLmFwcGxlLldlYktpdC5X
ZWJBdXRobi5zYiBpbiBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTdFRkM3N0QyNTUwRUI4NTAwRjk0NzdEIC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQXV0aG4u
c2IgKi87IH07CisJCTU3RkFCQjBGMjU4MTdDRjAwMDU5REM5NSAvKiBBdXRoZW50aWNhdGlvblNl
cnZpY2VzQ29yZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTdGQUJCMEUyNTgxN0NGMDAwNTlEQzk1IC8qIEF1dGhlbnRpY2F0aW9uU2VydmljZXND
b3JlU1BJLmggKi87IH07CisJCTU3RkFCQjEyMjU4MTgyN0MwMDU5REM5NSAvKiBBdXRoZW50aWNh
dGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1N0ZBQkIxMDI1ODE4MjdDMDA1OURDOTUgLyogQXV0aGVudGljYXRp
b25TZXJ2aWNlc0NvcmVTb2Z0TGluay5oICovOyB9OworCQk1N0ZBQkIxMzI1ODE4MjdDMDA1OURD
OTUgLyogQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RkFCQjExMjU4MTgyN0MwMDU5REM5
NSAvKiBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLm1tICovOyB9OworCQk1N0ZB
QkIxNDI1ODE4ODIzMDA1OURDOTUgLyogU291cmNlc0NvY29hLnR4dCBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3REVCRTEyMTI2OUQ1RjAwQjlGNzND
IC8qIFNvdXJjZXNDb2NvYS50eHQgKi87IH07CiAJCTU3RkQzMTgwMjJCMzUxNTgwMDhEMEU4QiAv
KiBOYXZpZ2F0aW9uU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdGRDMxNzgyMkIzNTE0OTAwOEQwRThCIC8qIE5h
dmlnYXRpb25TT0F1dGhvcml6YXRpb25TZXNzaW9uLmggKi87IH07CiAJCTU3RkQzMTgxMjJCMzUx
NUIwMDhEMEU4QiAvKiBQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RkQzMTcwMjJCMzUxNDgwMDhEMEU4
QiAvKiBQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCAqLzsgfTsKIAkJNTdGRDMxODIyMkIz
NTE1RTAwOEQwRThCIC8qIFJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdGRDMxNzQyMkIzNTE0OTAw
OEQwRThCIC8qIFJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbi5oICovOyB9OwpAQCAtNDA3
Nyw2ICs0MDgzLDEwIEBACiAJCTU3NjA4Mjk5MjAyQkRBRTIwMDExNjY3OCAvKiBXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTc3MkYyMDQyMTdEQkQ2QTAwNTZCRjJDIC8qIEhpZFNlcnZpY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSGlkU2VydmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzcyRjIwNTIx
N0RCRDZBMDA1NkJGMkMgLyogSGlkU2VydmljZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhp
ZFNlcnZpY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3NzczOThGMjU4MDM3
NDMwMDU5MzQ4QiAvKiBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTU3NzczOTkwMjU4MDM3NDMwMDU5MzQ4QiAvKiBBdXRoZW50aWNh
dG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdXRoZW50
aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU3NzczOTkzMjU4MDM4OEYwMDU5MzQ4QiAvKiBXS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50
ZXJEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJE
ZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Nzc3Mzk5NDI1ODAzODhG
MDA1OTM0OEIgLyogV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc3RkY3ODEyMzQ2RTgxQzAwNEVERkI5IC8q
IEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJV2Vi
QXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NzdGRjc4MzIzNDZFQ0FBMDA0RURGQjkgLyogV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3N0ZGNzg0MjM0NkVDQUEwMDRFREZCOSAvKiBXZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQXV0
aGVudGljYXRpb25QYW5lbENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQxNjIsNiArNDE3Miw5IEBACiAJCTU3RUJFMjY4MjM0Njc2QzUwMDhEOEFGOSAvKiBBUElXZWJB
dXRoZW50aWNhdGlvblBhbmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVdlYkF1dGhlbnRpY2F0aW9u
UGFuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdFQkUyNjkyMzQ2NzZDNTAw
OEQ4QUY5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3RUZDNzdEMjU1MEVCODUwMEY5NDc3RCAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkF1
dGhuLnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5hcHBsZS5XZWJLaXQuV2ViQXV0aG4u
c2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3RkFCQjBFMjU4MTdDRjAwMDU5REM5
NSAvKiBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRo
ZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1N0ZBQkIxMDI1ODE4MjdDMDA1OURDOTUgLyogQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVT
b2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRM
aW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3RkFCQjExMjU4MTgyN0MwMDU5
REM5NSAvKiBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdGRDMxNzAyMkIzNTE0ODAwOEQwRThCIC8qIFBvcFVw
U09BdXRob3JpemF0aW9uU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTdGRDMxNzEyMkIzNTE0ODAwOEQwRThCIC8qIFdLU09BdXRob3JpemF0aW9uRGVsZWdh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTT0F1dGhvcml6YXRpb25E
ZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0ZEMzE3MjIyQjM1MTQ4
MDA4RDBFOEIgLyogU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0NzIsNiArNzQ4NSw3IEBACiAJCQljaGlsZHJlbiA9ICgK
IAkJCQlFM0NBQUE0MzI0MTMyNzhBMDBDRUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEku
aCAqLywKIAkJCQk1NzJFQkJEQzI1MzkyMTgxMDAwNTUyQjMgLyogQXBwQXR0ZXN0U1BJLmggKi8s
CisJCQkJNTdGQUJCMEUyNTgxN0NGMDAwNTlEQzk1IC8qIEF1dGhlbnRpY2F0aW9uU2VydmljZXND
b3JlU1BJLmggKi8sCiAJCQkJMUE1NzA1MTAxQkU0MTBFNTAwODc0QUYxIC8qIEJsb2NrU1BJLmgg
Ki8sCiAJCQkJRTUwNjIwOTEyNTQyMTAyMDAwQzQzMDkxIC8qIENvbnRhY3RzVUlTUEkuaCAqLywK
IAkJCQkzN0MyMUNBRDFFOTk0QzBDMDAyOUQ1RjkgLyogQ29yZVByZWRpY3Rpb25TUEkuaCAqLywK
QEAgLTg1ODgsNiArODYwMiwxMCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTcyRUJCRDkyNTM4
RjZBMTAwMDU1MkIzIC8qIEFwcEF0dGVzdEludGVybmFsU29mdExpbmsuaCAqLywKIAkJCQk1NzJF
QkJEODI1MzhGNkExMDAwNTUyQjMgLyogQXBwQXR0ZXN0SW50ZXJuYWxTb2Z0TGluay5tbSAqLywK
KwkJCQk1N0ZBQkIxMDI1ODE4MjdDMDA1OURDOTUgLyogQXV0aGVudGljYXRpb25TZXJ2aWNlc0Nv
cmVTb2Z0TGluay5oICovLAorCQkJCTU3RkFCQjExMjU4MTgyN0MwMDU5REM5NSAvKiBBdXRoZW50
aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLm1tICovLAorCQkJCTU3NzczOThGMjU4MDM3NDMw
MDU5MzQ4QiAvKiBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IuaCAqLywKKwkJCQk1
Nzc3Mzk5MDI1ODAzNzQzMDA1OTM0OEIgLyogQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5h
dG9yLm1tICovLAogCQkJCTU3QUM4RjRFMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0aW9u
LmggKi8sCiAJCQkJNTdBQzhGNEYyMTdGRUVEOTAwNTU0MzhDIC8qIEhpZENvbm5lY3Rpb24ubW0g
Ki8sCiAJCQkJNTc3MkYyMDQyMTdEQkQ2QTAwNTZCRjJDIC8qIEhpZFNlcnZpY2UuaCAqLywKQEAg
LTg2MDgsNiArODYyNiw4IEBACiAJCQkJNTcwREFBQUQyMzAyNkY1QzAwRThGQzA0IC8qIE5mY1Nl
cnZpY2UubW0gKi8sCiAJCQkJNTc3RkY3ODMyMzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxDbGllbnQuaCAqLywKIAkJCQk1NzdGRjc4NDIzNDZFQ0FBMDA0RURGQjkgLyog
V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbSAqLywKKwkJCQk1Nzc3Mzk5MzI1ODAzODhG
MDA1OTM0OEIgLyogV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUuaCAqLywKKwkJ
CQk1Nzc3Mzk5NDI1ODAzODhGMDA1OTM0OEIgLyogV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVy
RGVsZWdhdGUubW0gKi8sCiAJCQkJNTcwREFBQzQyMzAzN0Y3RTAwRThGQzA0IC8qIFdLTkZSZWFk
ZXJTZXNzaW9uRGVsZWdhdGUuaCAqLywKIAkJCQk1NzBEQUFDNTIzMDM3RjdFMDBFOEZDMDQgLyog
V0tORlJlYWRlclNlc3Npb25EZWxlZ2F0ZS5tbSAqLywKIAkJCSk7CkBAIC0xMTI0Myw4ICsxMTI2
MywxMSBAQAogCQkJCTUxMkY1ODk5MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkRl
Y2lzaW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOEU4RUY5MTZCMjA5MUMwMEU5
MTQyOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1
OEEzMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTdGQUJCMTIyNTgxODI3QzAwNTlEQzk1IC8qIEF1dGhlbnRpY2F0
aW9uU2VydmljZXNDb3JlU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3RkFCQjBGMjU4
MTdDRjAwMDU5REM5NSAvKiBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTdEQ0VEQjEyMTRDNjA0ODAwMTZCODQ3IC8qIEF1dGhlbnRpY2F0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3RENFREFGMjE0QzYwM0IwMDE2Qjg0NyAvKiBBdXRoZW50aWNh
dG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTc3NzM5OTEyNTgwMzc0MzAwNTkzNDhC
IC8qIEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdEQ0VEQjAyMTRDNjA0MjAwMTZCODQ3IC8qIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2
aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTU1QTZFRjFDNzk4MTA4MDBFQjZBOTMgLyogQXV0
b21hdGlvbi5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk1NUE2RjUxQzc5ODZFMDAwRUI2QTkz
IC8qIEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovLApAQCAtMTE5
NjMsNiArMTE5ODYsNyBAQAogCQkJCTUxMkUzNEU1MTMwQjREMDUwMEFCRDE5QSAvKiBXS0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTNEQzY4MjIwN0FBNkIy
MDA2NkVGNzIgLyogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzQwNzVGNDEyNEZGMDI3MDA2OEYyMEEgLyogV0tBcnJheS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTc3NzM5OTUyNTgwMzg4RjAwNTkzNDhCIC8qIFdLQVNDQXV0aG9yaXphdGlvblBy
ZXNlbnRlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNThGNjEyQTg4QTU0MDA2
Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEyRjU4RjgxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0M0QzA4RDE4MTRBQzVDMDAzNjg4QjkgLyogV0tC
YWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTI2NzIsNiArMTI2OTYsNyBAQAog
CQkJaXNhID0gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk1N0ZBQkIxNDI1ODE4ODIzMDA1OURDOTUgLyog
U291cmNlc0NvY29hLnR4dCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTFEMjZBNTMxNzU5NjREOTAw
OTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xMzMyMCw2ICsx
MzM0NSw3IEBACiAJCQkJQ0Q0NTcwRDQyNDQxMUQwRjAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENDU3MEQzMjQ0MTEzQjUw
MEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMkY1OEEyMTJBODgzQUQwMDYyOTUzMCAvKiBB
dXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTdGQUJCMTMyNTgxODI3QzAwNTlEQzk1IC8qIEF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3Jl
U29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQk5OTU1QTZGNDFDNzk4NkRDMDBFQjZBOTMg
LyogQXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
OTI0OUFENTFGMUYxRTU2MDBCNjJGQkIgLyogQXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTk1NUE2RjYxQzc5ODZFMzAwRUI2QTkzIC8qIEF1dG9t
YXRpb25Qcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDE2YjJkMWI2ZGE5YmZkODcxMjEy
M2Q1NjJkOTViOGEyOWJjMDZkMi4uMmIxNzc5MGI2YmIwZDQwYzhhZDc0YmZmOWU3ZDBjNjJjNjYz
MGY0MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDIwLTEyLTA5ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBBZG9wdCBuZXcgVUkgZm9yIHRoZSBTZWN1cml0
eSBLZXkgbWFrZUNyZWRlbnRpYWwgZmxvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NzA4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjE1NDcz
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBBZGp1c3RlZCB0byB0
aGUgbmV3IGJlaGF2aW9yLgorCiAyMDIwLTEyLTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb25jdXJyZW50IERpc3BsYXkgTGlzdHNdIEFkZCBh
IHdheSBmb3IgZGlzcGxheSBsaXN0IGNsaWVudHMgdG8gZ2V0IG1pc3NpbmcgY2FjaGVkIHJlc291
cmNlIGlkZW50aWZpZXJzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXgg
MDgxOTE3ZDMxMDgzNDJhZTRjOGFlYmY1NzgzOTQ3NTY3NTNhOGNkMi4uZGU4NmQ2MGVhMTlmZTU0
OTM2MGRjNDI1M2MwZDA1N2M1MDIzY2EzYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbQpAQCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgY2xlYW5VcEtleWNoYWluKGNvbnN0IFN0
cmluZyYgcnBJZCkKIAogfSAvLyBuYW1lc2FwY2U7CiAKLVRFU1QoV2ViQXV0aGVudGljYXRpb25Q
YW5lbCwgTm9QYW5lbFRpbWVvdXQpCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE5vUGFu
ZWxOZmNTdWNjZWVkKQogewogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFz
c2VydGlvbi1uZmMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC00MDAsNyArNDAwLDcgQEAgVEVTVChXZWJBdXRoZW50
aWNhdGlvblBhbmVsLCBOb1BhbmVsVGltZW91dCkKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl0pOwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07Ci0gICAgW3dlYlZpZXcgd2Fp
dEZvck1lc3NhZ2U6QCJPcGVyYXRpb24gdGltZWQgb3V0LiJdOworICAgIFt3ZWJWaWV3IHdhaXRG
b3JNZXNzYWdlOkAiU3VjY2VlZGVkISJdOwogfQogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwsIE5vUGFuZWxIaWRTdWNjZXNzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415825</attachid>
            <date>2020-12-09 19:49:26 -0800</date>
            <delta_ts>2020-12-09 23:11:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219708-20201209194925.patch</filename>
            <type>text/plain</type>
            <size>54578</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJkYmIzNTVhMWM0YjI0Nzhm
YWRkZmNiOTcyOWMxYjc1M2M2M2RjMDMuLjk1MjIxYzIyOTQ1YjMwNGRjYjM4NjEzNTQ2MWYwYjFk
NmNjMzlhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjAtMTItMDkgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFkb3B0IG5l
dyBVSSBmb3IgdGhlIFNlY3VyaXR5IEtleSBtYWtlQ3JlZGVudGlhbCBmbG93CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3MDgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzcyMTU0NzM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdo
YW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZG9wdHMgdGhlIG5ldyBBdXRoZW50aWNhdGlvblNl
cnZpY2VzJyBVSS4gVGhlIGlkZWEgaXMgdG8gdXNlIEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29y
ZGluYXRvcgorICAgICAgICBhcyB0aGUgbWlkZGxlIGxheWVyIHRvIGNvbm5lY3QgdG8gdGhlIG5l
dyBVSSB3aGlsZSBrZWVwaW5nIHRoZSBleGlzdGluZyBpbnRlcmZhY2VzIHRoZSBzYW1lIGluIHRo
ZSBBdXRoZW50aWNhdG9yTWFuYWdlcgorICAgICAgICB0byBoYW5kbGUgdGhlIGludGVyYWN0aW9u
cyBiZXR3ZWVuIFVJIGFuZCBhdXRoZW50aWNhdG9ycy4KKworICAgICAgICBDb3ZlcmVkIGJ5IG1h
bnVhbCB0ZXN0cy4KKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlv
blNlcnZpY2VzQ29yZVNQSS5oOiBBZGRlZC4KKyAgICAgICAgU1BJIGZvciB0aGUgbmV3IFVJLgor
CisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktp
dC5XZWJBdXRobi5zYjoKKyAgICAgICAgKiBTY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNo
OgorICAgICAgICBBZGRlZCBuZXcgc2FuZGJveCBydWxlcyBmb3IgUmVtb3RlIFNwcmluZ0JvYXJk
IHNlcnZpY2VzIHdoaWNoIGFyZSB1c2VkIGJ5IHRoZSBuZXcgVUkuCisKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICBQYXBlcndvcmsuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6ZW5hYmxlTW9kZXJuV2ViQXV0aGVudGljYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y2xlYXJTdGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzZXJ2aWNlU3RhdHVzVXBkYXRlZCk6CisgICAg
ICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjphdXRoZW50aWNhdG9yU3RhdHVzVXBk
YXRlZCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1ZXN0UGlu
KToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXI6OnNlbGVjdEFzc2VydGlv
blJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXI6OnN0YXJ0
RGlzY292ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXI6OnJ1blBh
bmVsKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXI6OnJ1blByZXNlbnRl
cik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjppbnZva2VQZW5kaW5n
Q29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5oOgorICAgICAgICBUZWFjaGVkIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyIHRvIHVzZSB0aGUgbmV3IFVJJ3MgcHJlc2VudGVyIHdoZW4gaXQgaXMgYXZhaWxhYmxl
LiBPdGhlcndpc2UsIGl0IGZhbGxzIGJhY2sgdG8gdGhlIG9sZCBVSS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29y
ZVNvZnRMaW5rLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLm1tOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclBy
ZXNlbnRlckNvb3JkaW5hdG9yLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW06IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6
OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcik6CisgICAgICAgIChXZWJLaXQ6OkF1
dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6dXBkYXRlUHJlc2VudGVyKToKKyAgICAg
ICAgKFdlYktpdDo6QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpyZXF1ZXN0UGlu
KToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpz
ZWxlY3RBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JQ
cmVzZW50ZXJDb29yZGluYXRvcjo6ZGltaXNzUHJlc2VudGVyKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVs
ZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlLm1tOiBBZGRlZC4KKyAgICAg
ICAgKC1bV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUgaW5pdFdpdGhDb29yZGlu
YXRvcjpdKToKKyAgICAgICAgKC1bV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUg
YXV0aG9yaXphdGlvblByZXNlbnRlcjpjcmVkZW50aWFsUmVxdWVzdGVkRm9yTG9naW5DaG9pY2U6
YXV0aGVudGljYXRlZENvbnRleHQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dL
QVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlIGF1dGhvcml6YXRpb25QcmVzZW50ZXI6
dmFsaWRhdGVVc2VyRW50ZXJlZFBJTjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgSW50
cm9kdWNlZCB0aGUgQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yIHRvIGhhbmRsZSB0
aGUgbmV3IFVJLgorCisgICAgICAgICogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhuUHJvY2Vzczo6V2ViQXV0aG5Qcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0aG5Qcm9jZXNzOjpzZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKToKKyAgICAgICAgVGVhY2hlZCBXZWJBdXRoblByb2Nlc3MgdG8gaW5m
b3JtIEF1dGhlbnRpY2F0b3JNYW5hZ2VyIGFib3V0IGl0cyBleGlzdGVuY2UuCisKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgUGFwZXJ3b3JrLgor
CiAyMDIwLTEyLTA4ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbbWFjT1NdIERlbnkgbWFjaC1sb29rdXAgdG8gdGhlIHNlcnZpY2UgJ2NvbS5hcHBsZS5h
c3NlcnRpb25kLnByb2Nlc3Nhc3NlcnRpb25jb25uZWN0aW9uJyBpbiB0aGUgV2ViQ29udGVudCBw
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9BdXRo
ZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
Q29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWNlODEw
N2JmNTIwM2U0Yzc0MmMwZTI0MjcwODcxZDMxNWZmMDA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVT
UEkuaApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
UExBVEZPUk0oSU9TKQorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2ltcG9ydCA8
QXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmUvQVNDQXV0aG9yaXphdGlvblByZXNlbnRhdGlvbkNv
bnRleHQuaD4KKyNpbXBvcnQgPEF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlL0FTQ0F1dGhvcml6
YXRpb25QcmVzZW50ZXIuaD4KKyNpbXBvcnQgPEF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlL0FT
Q1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlLmg+CisjaW1wb3J0IDxBdXRo
ZW50aWNhdGlvblNlcnZpY2VzQ29yZS9BU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxM
b2dpbkNob2ljZS5oPgorCisjZWxzZQorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAY2xh
c3MgTEFDb250ZXh0OworCitAcHJvdG9jb2wgQVNDTG9naW5DaG9pY2VQcm90b2NvbDsKK0Bwcm90
b2NvbCBBU0NDcmVkZW50aWFsUHJvdG9jb2w7CisKK0Bwcm90b2NvbCBBU0NBdXRob3JpemF0aW9u
UHJlc2VudGVySG9zdFByb3RvY29sIDxOU09iamVjdD4KKworLSAodm9pZClhdXRob3JpemF0aW9u
UmVxdWVzdEluaXRpYXRlZFdpdGhMb2dpbkNob2ljZTooaWQgPEFTQ0xvZ2luQ2hvaWNlUHJvdG9j
b2w+KWxvZ2luQ2hvaWNlIGF1dGhlbnRpY2F0ZWRDb250ZXh0OihudWxsYWJsZSBMQUNvbnRleHQg
Kiljb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCA8QVNDQ3JlZGVudGlhbFBy
b3RvY29sPiBjcmVkZW50aWFsLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXI7CisK
Ky0gKHZvaWQpYXV0aG9yaXphdGlvblJlcXVlc3RGaW5pc2hlZFdpdGhDcmVkZW50aWFsOihudWxs
YWJsZSBpZDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+KWNyZWRlbnRpYWwgZXJyb3I6KG51bGxhYmxl
IE5TRXJyb3IgKillcnJvciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxl
dGlvbkhhbmRsZXI7CisKKy0gKHZvaWQpdmFsaWRhdGVVc2VyRW50ZXJlZFBJTjooTlNTdHJpbmcg
KilwaW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9j
b2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcjsKKworQGVu
ZAorCitAY2xhc3MgQVNDQXV0aG9yaXphdGlvblByZXNlbnRhdGlvbkNvbnRleHQ7CitAY2xhc3Mg
QVNDQXV0aG9yaXphdGlvblByZXNlbnRlcjsKKworQHByb3RvY29sIEFTQ0F1dGhvcml6YXRpb25Q
cmVzZW50ZXJEZWxlZ2F0ZSA8TlNPYmplY3Q+CisKKy0gKHZvaWQpYXV0aG9yaXphdGlvblByZXNl
bnRlcjooQVNDQXV0aG9yaXphdGlvblByZXNlbnRlciAqKXByZXNlbnRlciBjcmVkZW50aWFsUmVx
dWVzdGVkRm9yTG9naW5DaG9pY2U6KGlkIDxBU0NMb2dpbkNob2ljZVByb3RvY29sPilsb2dpbkNo
b2ljZSBhdXRoZW50aWNhdGVkQ29udGV4dDoobnVsbGFibGUgTEFDb250ZXh0ICopY29udGV4dCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gX051
bGxhYmxlIGNyZWRlbnRpYWwsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpKWNvbXBsZXRpb25I
YW5kbGVyOworCistICh2b2lkKWF1dGhvcml6YXRpb25QcmVzZW50ZXI6KEFTQ0F1dGhvcml6YXRp
b25QcmVzZW50ZXIgKilwcmVzZW50ZXIgdmFsaWRhdGVVc2VyRW50ZXJlZFBJTjooTlNTdHJpbmcg
KilwaW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9j
b2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcjsKKworQGVu
ZAorCitAaW50ZXJmYWNlIEFTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXIgOiBOU09iamVjdCA8QVND
QXV0aG9yaXphdGlvblByZXNlbnRlckhvc3RQcm90b2NvbD4KKworLSAodm9pZClwcmVzZW50QXV0
aG9yaXphdGlvbldpdGhDb250ZXh0OihBU0NBdXRob3JpemF0aW9uUHJlc2VudGF0aW9uQ29udGV4
dCAqKWNvbnRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkPEFTQ0NyZWRlbnRpYWxQ
cm90b2NvbD4gX051bGxhYmxlLCBOU0Vycm9yICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxl
cjsKKworQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxBU0NBdXRob3JpemF0aW9uUHJl
c2VudGVyRGVsZWdhdGU+IGRlbGVnYXRlOworCitAZW5kCisKK0BjbGFzcyBBU0NDcmVkZW50aWFs
UmVxdWVzdENvbnRleHQ7CisKK2V4dGVybiBOU1N0cmluZyAqIGNvbnN0IEFTQ0F1dGhvcml6YXRp
b25QcmVzZW50YXRpb25Db250ZXh0RGF0YUtleTsKKworQGludGVyZmFjZSBBU0NBdXRob3JpemF0
aW9uUHJlc2VudGF0aW9uQ29udGV4dCA6IE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4KKworLSAo
aW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CisrIChpbnN0YW5jZXR5cGUpbmV3IE5T
X1VOQVZBSUxBQkxFOworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXF1ZXN0Q29udGV4dDoo
bnVsbGFibGUgQVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0ICopcmVxdWVzdENvbnRleHQgYXBw
SWRlbnRpZmllcjoobnVsbGFibGUgTlNTdHJpbmcgKilhcHBJZGVudGlmaWVyOworCistICh2b2lk
KWFkZExvZ2luQ2hvaWNlOihpZDxBU0NMb2dpbkNob2ljZVByb3RvY29sPilsb2dpbkNob2ljZTsK
KworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqYXBwSWRl
bnRpZmllcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxp
ZDxBU0NMb2dpbkNob2ljZVByb3RvY29sPj4gKmxvZ2luQ2hvaWNlczsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKnJlbHlpbmdQYXJ0eUlkZW50aWZpZXI7
CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqcHJveGllZEFwcE5hbWU7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqcHJveGll
ZEFzc29jaWF0ZWREb21haW5zOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TRGF0YSAq
cHJveGllZEljb25EYXRhOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TTnVtYmVyICpw
cm94aWVkSWNvblNjYWxlOworCitAZW5kCisKK0Bwcm90b2NvbCBBU0NMb2dpbkNob2ljZVByb3Rv
Y29sIDxOU09iamVjdCwgTlNTZWN1cmVDb2Rpbmc+CisKK0BlbmQKKworQGludGVyZmFjZSBBU0NT
ZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxMb2dpbkNob2ljZSA6IE5TT2JqZWN0IDxBU0NM
b2dpbkNob2ljZVByb3RvY29sPgorCistIChpbnN0YW5jZXR5cGUpaW5pdFJlZ2lzdHJhdGlvbkNo
b2ljZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZSBkaXNw
bGF5TmFtZTooTlNTdHJpbmcgKilkaXNwbGF5TmFtZSB1c2VySGFuZGxlOihOU0RhdGEgKil1c2Vy
SGFuZGxlOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5n
ICpuYW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAq
ZGlzcGxheU5hbWU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGF0
YSAqdXNlckhhbmRsZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBpc1Jl
Z2lzdHJhdGlvblJlcXVlc3Q7CisKKysgKGluc3RhbmNldHlwZSluZXcgTlNfVU5BVkFJTEFCTEU7
CistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKworQGVuZAorCitAaW50ZXJm
YWNlIEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlIDogTlNPYmplY3Qg
PEFTQ0xvZ2luQ2hvaWNlUHJvdG9jb2w+CisKKy0gKGluc3RhbmNldHlwZSlpbml0UmVnaXN0cmF0
aW9uQ2hvaWNlOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1l
IGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1lIHVzZXJIYW5kbGU6KE5TRGF0YSAq
KXVzZXJIYW5kbGU7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNT
dHJpbmcgKm5hbWU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3Ry
aW5nICpkaXNwbGF5TmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkg
TlNEYXRhICp1c2VySGFuZGxlOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09M
IGlzUmVnaXN0cmF0aW9uUmVxdWVzdDsKKworKyAoaW5zdGFuY2V0eXBlKW5ldyBOU19VTkFWQUlM
QUJMRTsKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworCitAZW5kCisKK05T
X0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUmVz
b3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJBdXRobi5zYiBi
L1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldl
YktpdC5XZWJBdXRobi5zYgppbmRleCBiN2E1MDUwYjc3ZTdlZThlMWMyNTQ5OTA2NjViMzkzNmY0
NGUwZjI2Li44NTJlZDZjMGE1ZjhjNzU2NTFiN2E2YTcxMmRiNjViNmYyODNhYmJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBs
ZS5XZWJLaXQuV2ViQXV0aG4uc2IKKysrIGIvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJv
eFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkF1dGhuLnNiCkBAIC02NDEsMyArNjQx
LDcgQEAKIDs7IEFsbG93IGFjY2Vzc2VzIHRvIE5GQwogKGFsbG93IG1hY2gtbG9va3VwCiAgICAg
KGdsb2JhbC1uYW1lICJjb20uYXBwbGUubmZjZC5od21hbmFnZXIiKSkKKworOzsgQWxsb3cgYWNj
ZXNzZXMgdG8gdGhlIFNwcmluZ2JvYXJkIHZpZXcgc2VydmljZXMuCisoYWxsb3cgbWFjaC1sb29r
dXAKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZp
Y2VzIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxl
bWVudHMuc2ggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gK
aW5kZXggZjQwZGIyNmI1NDVhZWNjYzk2YjU5YTcyODg1M2U3Y2NlYzdlMzQ3My4uYTUwN2E5YjZk
MWQ0MGRkNDE4MTJjYzU4YzIyMzMxZTMwYjk4MmMyYSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaApAQCAtMjYwLDYgKzI2MCw5IEBAIGZ1bmN0aW9u
IGlvc19mYW1pbHlfcHJvY2Vzc193ZWJhdXRobl9lbnRpdGxlbWVudHMoKQogICAgIHBsaXN0YnVk
ZHkgQWRkIDpjb20uYXBwbGUuYXBwYXR0ZXN0LnNwaSBib29sIFlFUwogICAgIHBsaXN0YnVkZHkg
QWRkIDpjb20uYXBwbGUubW9iaWxlYWN0aXZhdGlvbmQuc3BpIGJvb2wgWUVTCiAKKyAgICBwbGlz
dGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnNwcmluZ2JvYXJkLnJlbW90ZS1hbGVydCBib29sIFlFUwor
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUuZnJvbnRib2FyZC5sYXVuY2hhcHBsaWNhdGlv
bnMgYm9vbCBZRVMKKwogICAgIHBsaXN0YnVkZHkgQWRkIDpzZWF0YmVsdC1wcm9maWxlcyBhcnJh
eQogICAgIHBsaXN0YnVkZHkgQWRkIDpzZWF0YmVsdC1wcm9maWxlczowIHN0cmluZyBjb20uYXBw
bGUuV2ViS2l0LldlYkF1dGhuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNGVhOGI3ODFk
MjBhODFhMDhlNDRiNDRkYmEwYjU4ZjIxYmQ2Zjk3My4uN2Q0NTU0M2FlZjNmZGFjYjllMDVlYWJk
NGZkNzQ2YzdhOTU0MjZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNTM2LDYgKzUzNiw4
IEBAIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eS5jcHAKIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJlZS5j
cHAKIAogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0FwcEF0dGVzdEludGVybmFs
U29mdExpbmsubW0gQG5vLXVuaWZ5CitVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
QXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0
b3IubW0KIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLm1t
CiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5t
bSBAbm8tdW5pZnkKQEAgLTU0NSw2ICs1NDcsNyBAQCBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTmVhckZpZWxkU29mdExpbmsubW0gQG5vLXVuaWZ5CiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5tbQogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL05mY1NlcnZpY2UubW0KK1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
S0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCAyNGE3N2NiZWFkMDk0OGY4
ZTEwNmE3NzExYWVmZGM0NzhjYTQ3ZmUwLi4zNmEwYTFmZGM2ZWYyNzQwYjk2ZDlhNjI3MmZlNjU0
YzIwM2Y4ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKICNpbmNsdWRlICJBUElXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLmgiCiAjaW5jbHVkZSAiQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENs
aWVudC5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5oIgog
I2luY2x1ZGUgIkxvY2FsU2VydmljZS5oIgogI2luY2x1ZGUgIk5mY1NlcnZpY2UuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKQEAgLTE2NCwxMyArMTY1LDE0IEBAIHZvaWQgQXV0aGVudGlj
YXRvck1hbmFnZXI6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYm
IGRhdGEsIENhCiAgICAgLy8gMi4gQXNrIGNsaWVudHMgdG8gc2hvdyBhcHByb3ByaWF0ZSBVSSBp
ZiBhbnkgYW5kIHRoZW4gc3RhcnQgdGhlIHJlcXVlc3QuCiAgICAgaW5pdFRpbWVPdXRUaW1lcigp
OwogCi0gICAgLy8gRklYTUU8cmRhcjovL3Byb2JsZW0vNzA4MjI4MzQ+OiBUaGUgV2ViUGFnZVBy
b3h5IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHdlIGFyZSBpbiB0aGUgVUlQ
cm9jZXNzLgorICAgIC8vIEZJWE1FPHJkYXI6Ly9wcm9ibGVtLzcwODIyODM0PjogVGhlIG1faXNX
ZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQgaXMgdXNlZCB0byBkZXRlcm1pbmUKKyAgICAv
LyB3aGV0aGVyIG9yIG5vdCB3ZSBhcmUgaW4gdGhlIFVJUHJvY2Vzcy4KICAgICAvLyBJZiBzbywg
Y29udGludWUgdG8gdGhlIG9sZCByb3V0ZS4gT3RoZXJ3aXNlLCB1c2UgdGhlIG1vZGVybiBXZWJB
dXRobiBwcm9jZXNzIHdheS4KLSAgICBpZiAobV9wZW5kaW5nUmVxdWVzdERhdGEucGFnZSkgewor
ICAgIGlmICghbV9pc1dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCkgewogICAgICAgICBy
dW5QYW5lbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHN0YXJ0RGlzY292ZXJ5KGdl
dFRyYW5zcG9ydHMoKSk7CisgICAgcnVuUHJlc2VudGVyKCk7CiB9CiAKIHZvaWQgQXV0aGVudGlj
YXRvck1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoY29uc3QgUGFnZUlkZW50aWZpZXImIHBhZ2VJRCwg
Y29uc3QgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiYgZnJhbWVJRCkKQEAgLTE5Nyw2ICsxOTks
MTkgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y2FuY2VsUmVxdWVzdChjb25zdCBBUEk6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmUKICAgICBjYW5jZWxSZXF1ZXN0KCk7CiB9CiAK
K3ZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmNhbmNlbCgpCit7CisgICAgUkVMRUFTRV9BU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGlmICghbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRs
ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBjYW5jZWxSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQXV0
aGVudGljYXRvck1hbmFnZXI6OmVuYWJsZU1vZGVybldlYkF1dGhlbnRpY2F0aW9uKCkKK3sKKyAg
ICBtX2lzV2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkID0gdHJ1ZTsKK30KKwogdm9pZCBB
dXRoZW50aWNhdG9yTWFuYWdlcjo6Y2xlYXJTdGF0ZUFzeW5jKCkKIHsKICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CkBAIC0yMTMs
NiArMjI4LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y2xlYXJTdGF0ZSgpCiAgICAg
bV9hdXRoZW50aWNhdG9ycy5jbGVhcigpOwogICAgIG1fc2VydmljZXMuY2xlYXIoKTsKICAgICBt
X3BlbmRpbmdSZXF1ZXN0RGF0YSA9IHsgfTsKKyAgICBtX3ByZXNlbnRlciA9IG51bGxwdHI7CiB9
CiAKIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmF1dGhlbnRpY2F0b3JBZGRlZChSZWY8QXV0
aGVudGljYXRvcj4mJiBhdXRoZW50aWNhdG9yKQpAQCAtMjI2LDYgKzI0MiwxMiBAQCB2b2lkIEF1
dGhlbnRpY2F0b3JNYW5hZ2VyOjphdXRoZW50aWNhdG9yQWRkZWQoUmVmPEF1dGhlbnRpY2F0b3I+
JiYgYXV0aGVudGljYXRvcgogCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzZXJ2aWNlU3Rh
dHVzVXBkYXRlZChXZWJBdXRoZW50aWNhdGlvblN0YXR1cyBzdGF0dXMpCiB7CisgICAgLy8gVGhp
cyBpcyBmb3IgdGhlIG5ldyBVSS4KKyAgICBpZiAobV9wcmVzZW50ZXIpIHsKKyAgICAgICAgbV9w
cmVzZW50ZXItPnVwZGF0ZVByZXNlbnRlcihzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgZGlzcGF0Y2hQYW5lbENsaWVudENhbGwoW3N0YXR1c10gKGNvbnN0IEFQSTo6V2Vi
QXV0aGVudGljYXRpb25QYW5lbCYgcGFuZWwpIHsKICAgICAgICAgcGFuZWwuY2xpZW50KCkudXBk
YXRlUGFuZWwoc3RhdHVzKTsKICAgICB9KTsKQEAgLTI2OCw2ICsyOTAsMTIgQEAgdm9pZCBBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6YXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGlj
YXRpb25TdGF0dXMgc3QKICAgICAvLyBhbiBlcnJvci4gV2UgZG9uJ3QgcmVhbGx5IGNhcmUgd2hh
dCBraW5kIG9mIGVycm9yIGl0IHJlYWxseSBpcy4KICAgICBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5j
YWNoZWRQaW4gPSBTdHJpbmcoKTsKIAorICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBuZXcgVUkuCisg
ICAgaWYgKG1fcHJlc2VudGVyKSB7CisgICAgICAgIG1fcHJlc2VudGVyLT51cGRhdGVQcmVzZW50
ZXIoc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGRpc3BhdGNoUGFuZWxD
bGllbnRDYWxsKFtzdGF0dXNdIChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBh
bmVsKSB7CiAgICAgICAgIHBhbmVsLmNsaWVudCgpLnVwZGF0ZVBhbmVsKHN0YXR1cyk7CiAgICAg
fSk7CkBAIC0yOTIsNiArMzIwLDEyIEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnJlcXVl
c3RQaW4odWludDY0X3QgcmV0cmllcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjCiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHBpbik7CiAgICAgfTsKIAorICAgIC8vIFRoaXMgaXMgZm9yIHRo
ZSBuZXcgVUkuCisgICAgaWYgKG1fcHJlc2VudGVyKSB7CisgICAgICAgIG1fcHJlc2VudGVyLT5y
ZXF1ZXN0UGluKHJldHJpZXMsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIGRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKFtyZXRyaWVzLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3QgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiBw
YW5lbCkgbXV0YWJsZSB7CiAgICAgICAgIHBhbmVsLmNsaWVudCgpLnJlcXVlc3RQaW4ocmV0cmll
cywgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0pOwpAQCAtMjk5LDYgKzMzMywxMiBAQCB2b2lk
IEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYwogCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzZWxlY3RB
c3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZT4+JiYgcmVzcG9uc2VzLCBXZWJBdXRoZW50aWNhdGlvblNvdXJjZSBzb3VyY2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgLy8gVGhpcyBpcyBmb3IgdGhlIG5ldyBVSS4K
KyAgICBpZiAobV9wcmVzZW50ZXIpIHsKKyAgICAgICAgbV9wcmVzZW50ZXItPnNlbGVjdEFzc2Vy
dGlvblJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2VzKSwgc291cmNlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBkaXNwYXRjaFBhbmVs
Q2xpZW50Q2FsbChbcmVzcG9uc2VzID0gV1RGTW92ZShyZXNwb25zZXMpLCBzb3VyY2UsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBBUEk6Oldl
YkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsKSBtdXRhYmxlIHsKICAgICAgICAgcGFuZWwuY2xp
ZW50KCkuc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZXMpLCBzb3VyY2Us
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKQEAgLTM0MCw5ICszODAsNiBA
QCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzdGFydERpc2NvdmVyeShjb25zdCBUcmFuc3Bv
cnRTZXQmIHRyYW5zcG9ydHMpCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBB
U1NFUlQobV9zZXJ2aWNlcy5pc0VtcHR5KCkgJiYgdHJhbnNwb3J0cy5zaXplKCkgPD0gbWF4VHJh
bnNwb3J0TnVtYmVyKTsKICAgICBmb3IgKGF1dG8mIHRyYW5zcG9ydCA6IHRyYW5zcG9ydHMpIHsK
LSAgICAgICAgLy8gT25seSBhbGxvdyBVU0IgYXV0aGVudGljYXRvcnMgd2hlbiBjbGllbnRzIGRv
bid0IGhhdmUgZGVkaWNhdGVkIFVJLgotICAgICAgICBpZiAodHJhbnNwb3J0ICE9IEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQ6OlVzYiAmJiAobV9wZW5kaW5nUmVxdWVzdERhdGEucGFuZWxSZXN1bHQg
PT0gV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUpKQotICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGF1dG8gc2VydmljZSA9IGNyZWF0ZVNlcnZpY2UodHJhbnNw
b3J0LCAqdGhpcyk7CiAgICAgICAgIHNlcnZpY2UtPnN0YXJ0RGlzY292ZXJ5KCk7CiAgICAgICAg
IG1fc2VydmljZXMuYXBwZW5kKFdURk1vdmUoc2VydmljZSkpOwpAQCAtMzg5LDE2ICs0MjYsMzEg
QEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cnVuUGFuZWwoKQogICAgICAgICAgICAgfHwg
KHJlc3VsdCA9PSBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpEaWROb3RQcmVzZW50KQog
ICAgICAgICAgICAgfHwgKHdlYWtQYW5lbC5nZXQoKSAhPSBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5w
YW5lbC5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fcGVuZGluZ1JlcXVl
c3REYXRhLnBhbmVsUmVzdWx0ID0gcmVzdWx0OwogICAgICAgICBzdGFydERpc2NvdmVyeSh0cmFu
c3BvcnRzKTsKICAgICB9KTsKIH0KIAordm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cnVuUHJl
c2VudGVyKCkKK3sKKyAgICAvLyBHZXQgYXZhaWxhYmxlIHRyYW5zcG9ydHMgYW5kIHN0YXJ0IGRp
c2NvdmVyaW5nIGF1dGhlbnRpY2F0b3JzIG9uIHRoZW0uCisgICAgYXV0byYgb3B0aW9ucyA9IG1f
cGVuZGluZ1JlcXVlc3REYXRhLm9wdGlvbnM7CisgICAgYXV0byB0cmFuc3BvcnRzID0gZ2V0VHJh
bnNwb3J0cygpOworICAgIHN0YXJ0RGlzY292ZXJ5KHRyYW5zcG9ydHMpOworCisgICAgbV9wcmVz
ZW50ZXIgPSBtYWtlVW5pcXVlPEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcj4oKnRo
aXMsIGdldFJwSWQob3B0aW9ucyksIHRyYW5zcG9ydHMsIGdldENsaWVudERhdGFUeXBlKG9wdGlv
bnMpKTsKK30KKwogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6aW52b2tlUGVuZGluZ0NvbXBs
ZXRpb25IYW5kbGVyKFJlc3BvbmQmJiByZXNwb25kKQogewotICAgIGRpc3BhdGNoUGFuZWxDbGll
bnRDYWxsKFtyZXN1bHQgPSBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBdXRoZW50aWNhdG9y
UmVzcG9uc2U+PihyZXNwb25kKSA/IFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0OjpTdWNjZWVkZWQg
OiBXZWJBdXRoZW50aWNhdGlvblJlc3VsdDo6RmFpbGVkXSAoY29uc3QgQVBJOjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsJiBwYW5lbCkgewotICAgICAgICBwYW5lbC5jbGllbnQoKS5kaXNtaXNzUGFu
ZWwocmVzdWx0KTsKLSAgICB9KTsKKyAgICAvLyBUaGlzIGlzIGZvciB0aGUgbmV3IFVJLgorICAg
IGlmIChtX3ByZXNlbnRlcikKKyAgICAgICAgbV9wcmVzZW50ZXItPmRpbWlzc1ByZXNlbnRlcigp
OworICAgIGVsc2UgeworICAgICAgICBkaXNwYXRjaFBhbmVsQ2xpZW50Q2FsbChbcmVzdWx0ID0g
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPj4ocmVzcG9u
ZCkgPyBXZWJBdXRoZW50aWNhdGlvblJlc3VsdDo6U3VjY2VlZGVkIDogV2ViQXV0aGVudGljYXRp
b25SZXN1bHQ6OkZhaWxlZF0gKGNvbnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYgcGFu
ZWwpIHsKKyAgICAgICAgICAgIHBhbmVsLmNsaWVudCgpLmRpc21pc3NQYW5lbChyZXN1bHQpOwor
ICAgICAgICB9KTsKKyAgICB9CisKICAgICBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlc3BvbmQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKaW5kZXgg
MjcwYjhiZjQzNTEzMjkzZmJmNDQ5YTQ3OWJhYmM5N2JkMDYwOTg1Ni4uYjVhMTJiNDk2OTkyYzIx
Mzg2NzJhMTZjN2Q5MTkxMjhhNGIyOTBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0b3IuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRp
bmF0b3IuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oIgogI2lu
Y2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oPgpAQCAtNjMsOSArNjQsMTIgQEAgcHVibGljOgogICAg
IHZvaWQgaGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYsIENhbGxi
YWNrJiYpOwogICAgIHZvaWQgY2FuY2VsUmVxdWVzdChjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4mKTsgLy8gQ2Fs
bGVkIGZyb20gV2ViUGFnZVByb3h5L1dlYlByb2Nlc3NQcm94eS4KICAgICB2b2lkIGNhbmNlbFJl
cXVlc3QoY29uc3QgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJik7IC8vIENhbGxlZCBmcm9t
IHBhbmVsIGNsaWVudHMuCisgICAgdm9pZCBjYW5jZWwoKTsgLy8gQ2FsbGVkIGZyb20gdGhlIHBy
ZXNlbnRlci4KIAogICAgIHZpcnR1YWwgYm9vbCBpc01vY2soKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCisgICAgdm9pZCBlbmFibGVNb2Rlcm5XZWJBdXRoZW50aWNhdGlvbigpOworCiBwcm90
ZWN0ZWQ6CiAgICAgUnVuTG9vcDo6VGltZXI8QXV0aGVudGljYXRvck1hbmFnZXI+JiByZXF1ZXN0
VGltZU91dFRpbWVyKCkgeyByZXR1cm4gbV9yZXF1ZXN0VGltZU91dFRpbWVyOyB9CiAgICAgdm9p
ZCBjbGVhclN0YXRlQXN5bmMoKTsgLy8gVG8gdm9pZCBjeWNsaWMgZGVwZW5kZW5jZS4KQEAgLTk2
LDYgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0VGltZU91dFRpbWVyKCk7CiAgICAg
dm9pZCB0aW1lT3V0VGltZXJGaXJlZCgpOwogICAgIHZvaWQgcnVuUGFuZWwoKTsKKyAgICB2b2lk
IHJ1blByZXNlbnRlcigpOwogICAgIHZvaWQgcmVzdGFydERpc2NvdmVyeSgpOwogICAgIFRyYW5z
cG9ydFNldCBnZXRUcmFuc3BvcnRzKCkgY29uc3Q7CiAgICAgdm9pZCBkaXNwYXRjaFBhbmVsQ2xp
ZW50Q2FsbChGdW5jdGlvbjx2b2lkKGNvbnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYp
PiYmKSBjb25zdDsKQEAgLTEwNCw5ICsxMDksMTIgQEAgcHJpdmF0ZToKICAgICBXZWJBdXRoZW50
aWNhdGlvblJlcXVlc3REYXRhIG1fcGVuZGluZ1JlcXVlc3REYXRhOwogICAgIENhbGxiYWNrIG1f
cGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyOyAvLyBTaG91bGQgbm90IGJlIGludm9rZWQgZGlyZWN0
bHksIHVzZSBpbnZva2VQZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIuCiAgICAgUnVuTG9vcDo6VGlt
ZXI8QXV0aGVudGljYXRvck1hbmFnZXI+IG1fcmVxdWVzdFRpbWVPdXRUaW1lcjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yPiBtX3ByZXNlbnRl
cjsKIAogICAgIFZlY3RvcjxVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+
PiBtX3NlcnZpY2VzOwogICAgIEhhc2hTZXQ8UmVmPEF1dGhlbnRpY2F0b3I+PiBtX2F1dGhlbnRp
Y2F0b3JzOworCisgICAgYm9vbCBtX2lzV2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkIHsg
ZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRpb25T
ZXJ2aWNlc0NvcmVTb2Z0TGluay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU4ZWU0ZDJlMjVlY2NjNWM3ZWNlNzk3ZmQ3MzE1MmMwM2UzOTY4N2QKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLmgKQEAgLTAsMCArMSw0MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJBdXRoZW50aWNhdGlvblNlcnZp
Y2VzQ29yZVNQSS5oIgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBQTEFURk9S
TShJT1MpCisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihXZWJLaXQsIEF1dGhlbnRp
Y2F0aW9uU2VydmljZXNDb3JlKTsKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViS2l0
LCBBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVS
KFdlYktpdCwgQVNDQXV0aG9yaXphdGlvblByZXNlbnRhdGlvbkNvbnRleHQpOworU09GVF9MSU5L
X0NMQVNTX0ZPUl9IRUFERVIoV2ViS2l0LCBBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRpYWxM
b2dpbkNob2ljZSk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihXZWJLaXQsIEFTQ1NlY3Vy
aXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlKTsKKworI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdGlv
blNlcnZpY2VzQ29yZVNvZnRMaW5rLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmYWIzNDM4YWFjMDJmODZlY2Vl
MTA4ODlmNWI4MzhhNjEwYzQ2ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29y
ZVNvZnRMaW5rLm1tCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgiCisjaW1w
b3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworI2lmIFBMQVRGT1JNKElPUykKKworU09GVF9MSU5L
X1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoV2ViS2l0LCBBdXRoZW50aWNhdGlvblNlcnZp
Y2VzQ29yZSk7CisKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFdlYktpdCwgQXV0aGVudGlj
YXRpb25TZXJ2aWNlc0NvcmUsIEFTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXIpOworU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0UoV2ViS2l0LCBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZSwgQVND
QXV0aG9yaXphdGlvblByZXNlbnRhdGlvbkNvbnRleHQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9T
T1VSQ0UoV2ViS2l0LCBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZSwgQVNDUGxhdGZvcm1QdWJs
aWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2UpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0Uo
V2ViS2l0LCBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZSwgQVNDU2VjdXJpdHlLZXlQdWJsaWNL
ZXlDcmVkZW50aWFsTG9naW5DaG9pY2UpOworCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRp
bmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMGFjNmY4ODYzNTE1ZTAyOTRlZWYzNDdiYWI2MGM2ZjdkY2Ex
MTNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmgKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9B
VVRITikKKworI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1
dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworT0JKQ19D
TEFTUyBBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyOworT0JKQ19DTEFTUyBXS0FTQ0F1dGhvcml6
YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgQXV0aGVudGljYXRvck1hbmFnZXI7CisKK2NsYXNzIEF1dGhlbnRpY2F0b3JQcmVzZW50
ZXJDb29yZGluYXRvciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50aWNhdG9yUHJlc2Vu
dGVyQ29vcmRpbmF0b3I+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IpOworcHVi
bGljOgorICAgIHVzaW5nIFRyYW5zcG9ydFNldCA9IEhhc2hTZXQ8V2ViQ29yZTo6QXV0aGVudGlj
YXRvclRyYW5zcG9ydCwgV1RGOjpJbnRIYXNoPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQ+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFu
c3BvcnQ+PjsKKworICAgIEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcihjb25zdCBB
dXRoZW50aWNhdG9yTWFuYWdlciYsIGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVHJhbnNwb3J0
U2V0JiwgV2ViQ29yZTo6Q2xpZW50RGF0YVR5cGUpOworCisgICAgdm9pZCB1cGRhdGVQcmVzZW50
ZXIoV2ViQXV0aGVudGljYXRpb25TdGF0dXMpOworICAgIHZvaWQgcmVxdWVzdFBpbih1aW50NjRf
dCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKKyAg
ICB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mJiwgV2ViQXV0aGVudGljYXRpb25Tb3VyY2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlKik+JiYpOworICAgIHZvaWQgZGltaXNzUHJlc2VudGVyKCk7CisKK3ByaXZhdGU6CisgICAg
V2Vha1B0cjxBdXRoZW50aWNhdG9yTWFuYWdlcj4gbV9tYW5hZ2VyOworICAgIFJldGFpblB0cjxB
U0NBdXRob3JpemF0aW9uUHJlc2VudGVyPiBtX3ByZXNlbnRlcjsKKyAgICBSZXRhaW5QdHI8V0tB
U0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGU+IG1fcHJlc2VudGVyRGVsZWdhdGU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVy
Q29vcmRpbmF0b3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM3M2I3MmI2NzRlYTc5NGYwZmQ3M2QxMWI4MDlh
MzNiNmEyNTkxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5t
bQpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IuaCIKKworI2lmIEVOQUJM
RShXRUJfQVVUSE4pCisKKyNpbXBvcnQgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCisjaW1wb3J0
ICJXS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5oIgorI2ltcG9ydCA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisKKyNpbXBvcnQg
IkF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQXV0aGVudGljYXRvclByZXNlbnRlckNv
b3JkaW5hdG9yOjpBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IoY29uc3QgQXV0aGVu
dGljYXRvck1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVHJhbnNw
b3J0U2V0JiB0cmFuc3BvcnRzLCBDbGllbnREYXRhVHlwZSB0eXBlKQorICAgIDogbV9tYW5hZ2Vy
KG1ha2VXZWFrUHRyKG1hbmFnZXIpKQoreworI2lmIFBMQVRGT1JNKElPUykKKyAgICBhdXRvIHBy
ZXNlbnRhdGlvbkNvbnRleHQgPSBhZG9wdE5TKFthbGxvY0FTQ0F1dGhvcml6YXRpb25QcmVzZW50
YXRpb25Db250ZXh0SW5zdGFuY2UoKSBpbml0V2l0aFJlcXVlc3RDb250ZXh0Om51bGxwdHIgYXBw
SWRlbnRpZmllcjpudWxscHRyXSk7CisgICAgW3ByZXNlbnRhdGlvbkNvbnRleHQgc2V0UmVseWlu
Z1BhcnR5SWRlbnRpZmllcjogcnBJZF07CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IENsaWVudERhdGFUeXBlOjpDcmVhdGU6CisgICAgICAgIGlmICh0cmFuc3BvcnRzLmNvbnRhaW5z
KEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsKSkKKyAgICAgICAgICAgIFtwcmVzZW50
YXRpb25Db250ZXh0IGFkZExvZ2luQ2hvaWNlOmFkb3B0TlMoW2FsbG9jQVNDUGxhdGZvcm1QdWJs
aWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2VJbnN0YW5jZSgpIGluaXRSZWdpc3RyYXRpb25DaG9p
Y2VdKS5nZXQoKV07CisgICAgICAgIGlmICh0cmFuc3BvcnRzLmNvbnRhaW5zKEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnQ6OlVzYikgfHwgdHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50aWNhdG9yVHJh
bnNwb3J0OjpOZmMpKQorICAgICAgICAgICAgW3ByZXNlbnRhdGlvbkNvbnRleHQgYWRkTG9naW5D
aG9pY2U6YWRvcHROUyhbYWxsb2NBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxMb2dp
bkNob2ljZUluc3RhbmNlKCkgaW5pdFJlZ2lzdHJhdGlvbkNob2ljZV0pLmdldCgpXTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDbGllbnREYXRhVHlwZTo6R2V0OgorICAgICAgICAvLyBGSVhN
RSgyMTk3MTApOiBBZG9wdCBuZXcgVUkgZm9yIHRoZSBQbGF0Zm9ybSBBdXRoZW50aWNhdG9yIGdl
dEFzc2VydGlvbiBmbG93LgorICAgICAgICAvLyBGSVhNRSgyMTk3MTEpOiBBZG9wdCBuZXcgVUkg
Zm9yIHRoZSBTZWN1cml0eSBLZXkgZ2V0QXNzZXJ0aW9uIGZsb3cuCisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAg
IG1fcHJlc2VudGVyRGVsZWdhdGUgPSBbW1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aENvb3JkaW5hdG9yOip0aGlzXTsKKyAgICBtX3ByZXNlbnRlciA9
IFthbGxvY0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJJbnN0YW5jZSgpIGluaXRdOworICAgIFtt
X3ByZXNlbnRlciBzZXREZWxlZ2F0ZTptX3ByZXNlbnRlckRlbGVnYXRlLmdldCgpXTsKKworICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW21hbmFnZXIgPSBtX21hbmFn
ZXJdIChpZDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CisgICAgICAgIGlmICghZXJyb3IpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZG4ndCBjb21wbGV0ZSB0aGUgYXV0aGVudGljYXRvciBwcmVzZW50YXRpb24g
Y29udGV4dDogJUAiLCBlcnJvcik7CisgICAgICAgIC8vIFRoaXMgYmxvY2sgY2FuIGJlIGV4ZWN1
dGVkIGluIGFub3RoZXIgdGhyZWFkLgorICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W21hbmFnZXJdICgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKG1hbmFnZXIpCisgICAgICAg
ICAgICAgICAgbWFuYWdlci0+Y2FuY2VsKCk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIFtt
X3ByZXNlbnRlciBwcmVzZW50QXV0aG9yaXphdGlvbldpdGhDb250ZXh0OnByZXNlbnRhdGlvbkNv
bnRleHQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXIuZ2V0KCldOwor
I2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKK30K
Kwordm9pZCBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6OnVwZGF0ZVByZXNlbnRl
cihXZWJBdXRoZW50aWNhdGlvblN0YXR1cykKK3sKKyAgICAvLyBGSVhNRSgyMTk3MTMpOiBBZG9w
dCBuZXcgVUkgZm9yIHRoZSB1cGRhdGUgZmxvdy4KK30KKwordm9pZCBBdXRoZW50aWNhdG9yUHJl
c2VudGVyQ29vcmRpbmF0b3I6OnJlcXVlc3RQaW4odWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpCit7CisgICAgLy8gRklYTUUoMjE5NzEyKTogQWRvcHQg
bmV3IFVJIGZvciB0aGUgQ2xpZW50IFBJTiBmbG93LgorfQorCit2b2lkIEF1dGhlbnRpY2F0b3JQ
cmVzZW50ZXJDb29yZGluYXRvcjo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBXZWJBdXRoZW50aWNhdGlvblNvdXJj
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uq
KT4mJikKK3sKKyAgICAvLyBGSVhNRSgyMTk3MTApOiBBZG9wdCBuZXcgVUkgZm9yIHRoZSBQbGF0
Zm9ybSBBdXRoZW50aWNhdG9yIGdldEFzc2VydGlvbiBmbG93LgorICAgIC8vIEZJWE1FKDIxOTcx
MSk6IEFkb3B0IG5ldyBVSSBmb3IgdGhlIFNlY3VyaXR5IEtleSBnZXRBc3NlcnRpb24gZmxvdy4K
K30KKwordm9pZCBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6OmRpbWlzc1ByZXNl
bnRlcigpCit7CisgICAgLy8gRklYTUUoMjE5NzE2KTogQWRvcHQgbmV3IFVJIGZvciB0aGUgZGlz
bWlzcyBmbG93LgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9XS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tBU0NBdXRo
b3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGM2ZTZjODBkNzQ2ODY2
ZmE4ZjQ4ZjIwNDQwOTE3ZTJhODNhYjY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tBU0NBdXRob3JpemF0aW9uUHJl
c2VudGVyRGVsZWdhdGUuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQg
IkF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
Y2xhc3MgQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOworfQorCitOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRl
bGVnYXRlIDogTlNPYmplY3QgPEFTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZT4KKwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29vcmRpbmF0b3I6KFdlYktpdDo6QXV0aGVudGljYXRv
clByZXNlbnRlckNvb3JkaW5hdG9yJiljb29yZGluYXRvcjsKKworQGVuZAorCitOU19BU1NVTUVf
Tk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKElP
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tBU0NBdXRob3JpemF0aW9u
UHJlc2VudGVyRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2U1YTA3OGFiODhlMjYwYWU3NWZkZjFk
NDVlNmJlYmRmYzMzOWU5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRl
bGVnYXRlLm1tCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIldLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlLmgiCisKKyNp
ZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgIkF1dGhlbnRp
Y2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5oIgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgor
CitAaW1wbGVtZW50YXRpb24gV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUgewor
ICAgIFdlYWtQdHI8V2ViS2l0OjpBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I+IF9j
b29yZGluYXRvcjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29vcmRpbmF0b3I6KFdl
YktpdDo6QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yJiljb29yZGluYXRvcgorewor
ICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIF9jb29yZGluYXRvciA9IG1h
a2VXZWFrUHRyKGNvb3JkaW5hdG9yKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClh
dXRob3JpemF0aW9uUHJlc2VudGVyOihBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyICopcHJlc2Vu
dGVyIGNyZWRlbnRpYWxSZXF1ZXN0ZWRGb3JMb2dpbkNob2ljZTooaWQgPEFTQ0xvZ2luQ2hvaWNl
UHJvdG9jb2w+KWxvZ2luQ2hvaWNlIGF1dGhlbnRpY2F0ZWRDb250ZXh0OihudWxsYWJsZSBMQUNv
bnRleHQgKiljb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCA8QVNDQ3JlZGVu
dGlhbFByb3RvY29sPiBfTnVsbGFibGUgY3JlZGVudGlhbCwgTlNFcnJvciAqIF9OdWxsYWJsZSBl
cnJvcikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICAvLyBGSVhNRSgyMTk3MDkpOiBBZG9wdCBu
ZXcgVUkgZm9yIHRoZSBQbGF0Zm9ybSBBdXRoZW50aWNhdG9yIG1ha2VDcmVkZW50aWFsIGZsb3cu
Cit9CisKKy0gKHZvaWQpYXV0aG9yaXphdGlvblByZXNlbnRlcjooQVNDQXV0aG9yaXphdGlvblBy
ZXNlbnRlciAqKXByZXNlbnRlciB2YWxpZGF0ZVVzZXJFbnRlcmVkUElOOihOU1N0cmluZyAqKXBp
biBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4g
Y3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgLy8g
RklYTUUoMjE5NzEyKTogQWRvcHQgbmV3IFVJIGZvciB0aGUgQ2xpZW50IFBJTiBmbG93LgorfQor
CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VVRITikgJiYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJBdXRo
blByb2Nlc3MvV2ViQXV0aG5Qcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9j
ZXNzL1dlYkF1dGhuUHJvY2Vzcy5jcHAKaW5kZXggYTViNTA2MjZmMDUzMzNmOGJmYjc0ODZjMGI2
Y2ExYjRhNmVkMzFiOC4uNzdmMzgwZGY5OGUwMTc4YzA3M2YyNmEzOWU0MWUyNmMzY2NiM2Y0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Qcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRoblByb2Nlc3Mu
Y3BwCkBAIC00Miw2ICs0Miw3IEBAIFdlYkF1dGhuUHJvY2Vzczo6V2ViQXV0aG5Qcm9jZXNzKEF1
eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBwYXJhCiAgICAgOiBtX2F1
dGhlbnRpY2F0b3JNYW5hZ2VyKG1ha2VVbmlxdWVSZWY8QXV0aGVudGljYXRvck1hbmFnZXI+KCkp
CiB7CiAgICAgaW5pdGlhbGl6ZShXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICBtX2F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLT5lbmFibGVNb2Rlcm5XZWJBdXRoZW50aWNhdGlvbigpOwogfQogCiBXZWJB
dXRoblByb2Nlc3M6On5XZWJBdXRoblByb2Nlc3MoKQpAQCAtMTI5LDYgKzEzMCw3IEBAIHZvaWQg
V2ViQXV0aG5Qcm9jZXNzOjpzZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdl
YkNvcmU6Ok1vY2tXZWJBdXRoCiB7CiAgICAgaWYgKCFtX2F1dGhlbnRpY2F0b3JNYW5hZ2VyLT5p
c01vY2soKSkgewogICAgICAgICBtX2F1dGhlbnRpY2F0b3JNYW5hZ2VyID0gbWFrZVVuaXF1ZVJl
ZjxNb2NrQXV0aGVudGljYXRvck1hbmFnZXI+KFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAg
ICAgICBtX2F1dGhlbnRpY2F0b3JNYW5hZ2VyLT5lbmFibGVNb2Rlcm5XZWJBdXRoZW50aWNhdGlv
bigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHN0YXRpY19jYXN0PE1vY2tBdXRoZW50
aWNhdG9yTWFuYWdlcio+KCZtX2F1dGhlbnRpY2F0b3JNYW5hZ2VyKS0+c2V0VGVzdENvbmZpZ3Vy
YXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZTNiNDNlNWMxNzQ3MTAxNDQ1NTg3OWE3
NTlmZDQwZDZjMTVkYTE0Li44NWFiMGU0ZWY3ODQ1Y2VkYTFkNTdlMjg5Y2ZhZGJjYjEwZDNhN2U3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTExNDUsNiArMTE0NSw4IEBACiAJCTU3NUIxQkJBMjNDRTlDMTMwMDIwNjM5QSAvKiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTU1QTZFQTFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwICovOyB9OwogCQk1NzZDQTlENzIyQjg2MjE4MDAzMDE0M0MgLyogU09BdXRob3JpemF0
aW9uTlNVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3RkQzMTczMjJCMzUxNDgwMDhEMEU4QiAvKiBTT0F1dGhvcml6YXRpb25OU1VSTEV4
dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTU3NzJGMjA2MjE3REJENkEwMDU2QkYyQyAvKiBIaWRTZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzcyRjIwNDIxN0RCRDZBMDA1NkJGMkMg
LyogSGlkU2VydmljZS5oICovOyB9OworCQk1Nzc3Mzk5MTI1ODAzNzQzMDA1OTM0OEIgLyogQXV0
aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Nzc3Mzk4RjI1ODAzNzQzMDA1OTM0OEIgLyogQXV0aGVu
dGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmggKi87IH07CisJCTU3NzczOTk1MjU4MDM4OEYw
MDU5MzQ4QiAvKiBXS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc3NzM5OTMyNTgwMzg4RjAw
NTkzNDhCIC8qIFdLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlLmggKi87IH07CiAJ
CTU3N0ZGNzgyMjM0NkU4MUMwMDRFREZCOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzdG
Rjc4MTIzNDZFODFDMDA0RURGQjkgLyogQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5o
ICovOyB9OwogCQk1NzdGRjc4NTIzNDZFQ0FBMDA0RURGQjkgLyogV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTc3RkY3ODMyMzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQuaCAqLzsgfTsKIAkJNTc4REMyOTgyMTU1QTAwMjAwNzRFODE1IC8qIExvY2FsQXV0aGVudGlj
YXRpb25Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTc4REMyOTcyMTU1QTAwMTAwNzRFODE1IC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0
TGluay5oICovOyB9OwpAQCAtMTIwOCw2ICsxMjEwLDEwIEBACiAJCTU3RUIyRTNBMjFFMTk4M0Uw
MEI4OUNERiAvKiBVMmZBdXRoZW50aWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0VCMkUzODIxRTE5ODNFMDBCODlDREYgLyogVTJmQXV0aGVu
dGljYXRvci5oICovOyB9OwogCQk1N0VCRTI2QTIzNDY3NkM1MDA4RDhBRjkgLyogQVBJV2ViQXV0
aGVudGljYXRpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTdFQkUyNjgyMzQ2NzZDNTAwOEQ4QUY5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9u
UGFuZWwuaCAqLzsgfTsKIAkJNTdFRkM3N0UyNTUwRUI4NjAwRjk0NzdEIC8qIGNvbS5hcHBsZS5X
ZWJLaXQuV2ViQXV0aG4uc2IgaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3RUZDNzdEMjU1MEVCODUwMEY5NDc3RCAvKiBjb20uYXBwbGUuV2ViS2l0Lldl
YkF1dGhuLnNiICovOyB9OworCQk1N0ZBQkIwRjI1ODE3Q0YwMDA1OURDOTUgLyogQXV0aGVudGlj
YXRpb25TZXJ2aWNlc0NvcmVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3RkFCQjBFMjU4MTdDRjAwMDU5REM5NSAvKiBBdXRoZW50aWNhdGlvblNl
cnZpY2VzQ29yZVNQSS5oICovOyB9OworCQk1N0ZBQkIxMjI1ODE4MjdDMDA1OURDOTUgLyogQXV0
aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdGQUJCMTAyNTgxODI3QzAwNTlEQzk1IC8qIEF1dGhl
bnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsuaCAqLzsgfTsKKwkJNTdGQUJCMTMyNTgxODI3
QzAwNTlEQzk1IC8qIEF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0ZBQkIxMTI1ODE4MjdD
MDA1OURDOTUgLyogQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5tbSAqLzsgfTsK
KwkJNTdGQUJCMTQyNTgxODgyMzAwNTlEQzk1IC8qIFNvdXJjZXNDb2NvYS50eHQgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEN0RFQkUxMjEyNjlENUYw
MEI5RjczQyAvKiBTb3VyY2VzQ29jb2EudHh0ICovOyB9OwogCQk1N0ZEMzE4MDIyQjM1MTU4MDA4
RDBFOEIgLyogTmF2aWdhdGlvblNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RkQzMTc4MjJCMzUxNDkwMDhEMEU4
QiAvKiBOYXZpZ2F0aW9uU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oICovOyB9OwogCQk1N0ZEMzE4
MTIyQjM1MTVCMDA4RDBFOEIgLyogUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0ZEMzE3MDIyQjM1MTQ4
MDA4RDBFOEIgLyogUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggKi87IH07CiAJCTU3RkQz
MTgyMjJCMzUxNUUwMDhEMEU4QiAvKiBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RkQzMTc0MjJC
MzUxNDkwMDhEMEU4QiAvKiBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCAqLzsgfTsK
QEAgLTQwNzcsNiArNDA4MywxMCBAQAogCQk1NzYwODI5OTIwMkJEQUUyMDAxMTY2NzggLyogV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3NzJGMjA0MjE3REJENkEwMDU2QkYyQyAvKiBIaWRTZXJ2aWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhpZFNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc3
MkYyMDUyMTdEQkQ2QTAwNTZCRjJDIC8qIEhpZFNlcnZpY2UubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBIaWRTZXJ2aWNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Nzc3Mzk4
RjI1ODAzNzQzMDA1OTM0OEIgLyogQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Nzc3Mzk5MDI1ODAzNzQzMDA1OTM0OEIgLyogQXV0
aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Nzc3Mzk5MzI1ODAzODhGMDA1OTM0OEIgLyogV0tBU0NBdXRob3JpemF0aW9u
UHJlc2VudGVyRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tBU0NBdXRob3JpemF0aW9uUHJl
c2VudGVyRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc3NzM5OTQy
NTgwMzg4RjAwNTkzNDhCIC8qIFdLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdh
dGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3N0ZGNzgxMjM0NkU4MUMwMDRF
REZCOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTc3RkY3ODMyMzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzdGRjc4NDIzNDZFQ0FBMDA0RURGQjkg
LyogV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC00MTYyLDYgKzQxNzIsOSBAQAogCQk1N0VCRTI2ODIzNDY3NkM1MDA4RDhBRjkgLyog
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElXZWJBdXRoZW50
aWNhdGlvblBhbmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RUJFMjY5MjM0
Njc2QzUwMDhEOEFGOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1N0VGQzc3RDI1NTBFQjg1MDBGOTQ3N0QgLyogY29tLmFwcGxlLldlYktp
dC5XZWJBdXRobi5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0Lldl
YkF1dGhuLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0ZBQkIwRTI1ODE3Q0Yw
MDA1OURDOTUgLyogQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTdGQUJCMTAyNTgxODI3QzAwNTlEQzk1IC8qIEF1dGhlbnRpY2F0aW9uU2Vydmlj
ZXNDb3JlU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25TZXJ2aWNlc0Nv
cmVTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0ZBQkIxMTI1ODE4
MjdDMDA1OURDOTUgLyogQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RkQzMTcwMjJCMzUxNDgwMDhEMEU4QiAv
KiBQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU3RkQzMTcxMjJCMzUxNDgwMDhEMEU4QiAvKiBXS1NPQXV0aG9yaXphdGlv
bkRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU09BdXRob3Jp
emF0aW9uRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdGRDMxNzIy
MkIzNTE0ODAwOEQwRThCIC8qIFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NDcyLDYgKzc0ODUsNyBAQAogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJRTNDQUFBNDMyNDEzMjc4QTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBw
b3J0U1BJLmggKi8sCiAJCQkJNTcyRUJCREMyNTM5MjE4MTAwMDU1MkIzIC8qIEFwcEF0dGVzdFNQ
SS5oICovLAorCQkJCTU3RkFCQjBFMjU4MTdDRjAwMDU5REM5NSAvKiBBdXRoZW50aWNhdGlvblNl
cnZpY2VzQ29yZVNQSS5oICovLAogCQkJCTFBNTcwNTEwMUJFNDEwRTUwMDg3NEFGMSAvKiBCbG9j
a1NQSS5oICovLAogCQkJCUU1MDYyMDkxMjU0MjEwMjAwMEM0MzA5MSAvKiBDb250YWN0c1VJU1BJ
LmggKi8sCiAJCQkJMzdDMjFDQUQxRTk5NEMwQzAwMjlENUY5IC8qIENvcmVQcmVkaWN0aW9uU1BJ
LmggKi8sCkBAIC04NTg4LDYgKzg2MDIsMTAgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTU3MkVC
QkQ5MjUzOEY2QTEwMDA1NTJCMyAvKiBBcHBBdHRlc3RJbnRlcm5hbFNvZnRMaW5rLmggKi8sCiAJ
CQkJNTcyRUJCRDgyNTM4RjZBMTAwMDU1MkIzIC8qIEFwcEF0dGVzdEludGVybmFsU29mdExpbmsu
bW0gKi8sCisJCQkJNTdGQUJCMTAyNTgxODI3QzAwNTlEQzk1IC8qIEF1dGhlbnRpY2F0aW9uU2Vy
dmljZXNDb3JlU29mdExpbmsuaCAqLywKKwkJCQk1N0ZBQkIxMTI1ODE4MjdDMDA1OURDOTUgLyog
QXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5tbSAqLywKKwkJCQk1Nzc3Mzk4RjI1
ODAzNzQzMDA1OTM0OEIgLyogQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmggKi8s
CisJCQkJNTc3NzM5OTAyNTgwMzc0MzAwNTkzNDhCIC8qIEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJD
b29yZGluYXRvci5tbSAqLywKIAkJCQk1N0FDOEY0RTIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29u
bmVjdGlvbi5oICovLAogCQkJCTU3QUM4RjRGMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0
aW9uLm1tICovLAogCQkJCTU3NzJGMjA0MjE3REJENkEwMDU2QkYyQyAvKiBIaWRTZXJ2aWNlLmgg
Ki8sCkBAIC04NjA4LDYgKzg2MjYsOCBAQAogCQkJCTU3MERBQUFEMjMwMjZGNUMwMEU4RkMwNCAv
KiBOZmNTZXJ2aWNlLm1tICovLAogCQkJCTU3N0ZGNzgzMjM0NkVDQUEwMDRFREZCOSAvKiBXZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggKi8sCiAJCQkJNTc3RkY3ODQyMzQ2RUNBQTAwNEVE
RkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0gKi8sCisJCQkJNTc3NzM5OTMy
NTgwMzg4RjAwNTkzNDhCIC8qIFdLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlLmgg
Ki8sCisJCQkJNTc3NzM5OTQyNTgwMzg4RjAwNTkzNDhCIC8qIFdLQVNDQXV0aG9yaXphdGlvblBy
ZXNlbnRlckRlbGVnYXRlLm1tICovLAogCQkJCTU3MERBQUM0MjMwMzdGN0UwMEU4RkMwNCAvKiBX
S05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggKi8sCiAJCQkJNTcwREFBQzUyMzAzN0Y3RTAwRThG
QzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0gKi8sCiAJCQkpOwpAQCAtMTEyNDMs
OCArMTEyNjMsMTEgQEAKIAkJCQk1MTJGNTg5OTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThFOEVGOTE2QjIw
OTFDMDBFOTE0MjkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTJGNThBMzEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3RkFCQjEyMjU4MTgyN0MwMDU5REM5NSAvKiBBdXRo
ZW50aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0ZB
QkIwRjI1ODE3Q0YwMDA1OURDOTUgLyogQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3RENFREIxMjE0QzYwNDgwMDE2Qjg0NyAvKiBBdXRoZW50aWNh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURBRjIxNEM2MDNCMDAxNkI4NDcgLyogQXV0
aGVudGljYXRvck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3NzczOTkxMjU4MDM3NDMw
MDU5MzQ4QiAvKiBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3RENFREIwMjE0QzYwNDIwMDE2Qjg0NyAvKiBBdXRoZW50aWNhdG9yVHJhbnNw
b3J0U2VydmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk1NUE2RUYxQzc5ODEwODAwRUI2QTkz
IC8qIEF1dG9tYXRpb24uanNvbiBpbiBIZWFkZXJzICovLAogCQkJCTk5NTVBNkY1MUM3OTg2RTAw
MEVCNkE5MyAvKiBBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywK
QEAgLTExOTYzLDYgKzExOTg2LDcgQEAKIAkJCQk1MTJFMzRFNTEzMEI0RDA1MDBBQkQxOUEgLyog
V0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEzREM2ODIy
MDdBQTZCMjAwNjZFRjcyIC8qIFdLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM0MDc1RjQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLQXJyYXkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTU3NzczOTk1MjU4MDM4OEYwMDU5MzQ4QiAvKiBXS0FTQ0F1dGhvcml6
YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4RjYxMkE4
OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxMkY1OEY4MTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdDNEMwOEQxODE0QUM1QzAwMzY4OEI5
IC8qIFdLQmFja0ZvcndhcmRMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTEyNjcyLDYgKzEyNjk2
LDcgQEAKIAkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJNTdGQUJCMTQyNTgxODgyMzAwNTlE
Qzk1IC8qIFNvdXJjZXNDb2NvYS50eHQgaW4gUmVzb3VyY2VzICovLAogCQkJCUUxRDI2QTUzMTc1
OTY0RDkwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vzcy54aWIgaW4gUmVzb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTMz
MjAsNiArMTMzNDUsNyBAQAogCQkJCUNENDU3MEQ0MjQ0MTFEMEYwMEEzRENFQiAvKiBBdWRpb1Nl
c3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDQ1NzBEMzI0
NDExM0I1MDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJGNThBMjEyQTg4M0FEMDA2Mjk1
MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTU3RkFCQjEzMjU4MTgyN0MwMDU5REM5NSAvKiBBdXRoZW50aWNhdGlvblNlcnZp
Y2VzQ29yZVNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTk1NUE2RjQxQzc5ODZEQzAw
RUI2QTkzIC8qIEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTkyNDlBRDUxRjFGMUU1NjAwQjYyRkJCIC8qIEF1dG9tYXRpb25Gcm9udGVuZERpc3Bh
dGNoZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5NTVBNkY2MUM3OTg2RTMwMEVCNkE5MyAv
KiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQxNmIyZDFiNmRhOWJm
ZDg3MTIxMjNkNTYyZDk1YjhhMjliYzA2ZDIuLjk1ZmY2ZTBlODM0OTVhYzg1ZGRlODIwNTQxODUy
NzcyZDRlZGU5MjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0xMi0wOSAgSmlld2VuIFRhbiAgPGppZXdlbl90
YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gQWRvcHQgbmV3IFVJIGZvciB0aGUg
U2VjdXJpdHkgS2V5IG1ha2VDcmVkZW50aWFsIGZsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTcwOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzIxNTQ3MzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBBZGp1c3Rl
ZCB0byB0aGUgbmV3IGJlaGF2aW9yLgorCiAyMDIwLTEyLTA4ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb25jdXJyZW50IERpc3BsYXkgTGlzdHNd
IEFkZCBhIHdheSBmb3IgZGlzcGxheSBsaXN0IGNsaWVudHMgdG8gZ2V0IG1pc3NpbmcgY2FjaGVk
IHJlc291cmNlIGlkZW50aWZpZXJzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0K
aW5kZXggMDgxOTE3ZDMxMDgzNDJhZTRjOGFlYmY1NzgzOTQ3NTY3NTNhOGNkMi4uZGU4NmQ2MGVh
MTlmZTU0OTM2MGRjNDI1M2MwZDA1N2M1MDIzY2EzYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbQpAQCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgY2xlYW5VcEtleWNoYWluKGNv
bnN0IFN0cmluZyYgcnBJZCkKIAogfSAvLyBuYW1lc2FwY2U7CiAKLVRFU1QoV2ViQXV0aGVudGlj
YXRpb25QYW5lbCwgTm9QYW5lbFRpbWVvdXQpCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWws
IE5vUGFuZWxOZmNTdWNjZWVkKQogewogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1uZmMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC00MDAsNyArNDAwLDcgQEAgVEVTVChXZWJB
dXRoZW50aWNhdGlvblBhbmVsLCBOb1BhbmVsVGltZW91dCkKICAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07Ci0gICAgW3dlYlZp
ZXcgd2FpdEZvck1lc3NhZ2U6QCJPcGVyYXRpb24gdGltZWQgb3V0LiJdOworICAgIFt3ZWJWaWV3
IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVkISJdOwogfQogCiBURVNUKFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwsIE5vUGFuZWxIaWRTdWNjZXNzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415838</attachid>
            <date>2020-12-09 23:11:29 -0800</date>
            <delta_ts>2020-12-10 03:33:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219708-20201209231128.patch</filename>
            <type>text/plain</type>
            <size>54611</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJkYmIzNTVhMWM0YjI0Nzhm
YWRkZmNiOTcyOWMxYjc1M2M2M2RjMDMuLjk1MjIxYzIyOTQ1YjMwNGRjYjM4NjEzNTQ2MWYwYjFk
NmNjMzlhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjAtMTItMDkgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFkb3B0IG5l
dyBVSSBmb3IgdGhlIFNlY3VyaXR5IEtleSBtYWtlQ3JlZGVudGlhbCBmbG93CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3MDgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzcyMTU0NzM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdo
YW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZG9wdHMgdGhlIG5ldyBBdXRoZW50aWNhdGlvblNl
cnZpY2VzJyBVSS4gVGhlIGlkZWEgaXMgdG8gdXNlIEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29y
ZGluYXRvcgorICAgICAgICBhcyB0aGUgbWlkZGxlIGxheWVyIHRvIGNvbm5lY3QgdG8gdGhlIG5l
dyBVSSB3aGlsZSBrZWVwaW5nIHRoZSBleGlzdGluZyBpbnRlcmZhY2VzIHRoZSBzYW1lIGluIHRo
ZSBBdXRoZW50aWNhdG9yTWFuYWdlcgorICAgICAgICB0byBoYW5kbGUgdGhlIGludGVyYWN0aW9u
cyBiZXR3ZWVuIFVJIGFuZCBhdXRoZW50aWNhdG9ycy4KKworICAgICAgICBDb3ZlcmVkIGJ5IG1h
bnVhbCB0ZXN0cy4KKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlv
blNlcnZpY2VzQ29yZVNQSS5oOiBBZGRlZC4KKyAgICAgICAgU1BJIGZvciB0aGUgbmV3IFVJLgor
CisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktp
dC5XZWJBdXRobi5zYjoKKyAgICAgICAgKiBTY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNo
OgorICAgICAgICBBZGRlZCBuZXcgc2FuZGJveCBydWxlcyBmb3IgUmVtb3RlIFNwcmluZ0JvYXJk
IHNlcnZpY2VzIHdoaWNoIGFyZSB1c2VkIGJ5IHRoZSBuZXcgVUkuCisKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICBQYXBlcndvcmsuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6ZW5hYmxlTW9kZXJuV2ViQXV0aGVudGljYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y2xlYXJTdGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzZXJ2aWNlU3RhdHVzVXBkYXRlZCk6CisgICAg
ICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjphdXRoZW50aWNhdG9yU3RhdHVzVXBk
YXRlZCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1ZXN0UGlu
KToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXI6OnNlbGVjdEFzc2VydGlv
blJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXI6OnN0YXJ0
RGlzY292ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXI6OnJ1blBh
bmVsKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFnZXI6OnJ1blByZXNlbnRl
cik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjppbnZva2VQZW5kaW5n
Q29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5oOgorICAgICAgICBUZWFjaGVkIEF1dGhlbnRpY2F0b3JN
YW5hZ2VyIHRvIHVzZSB0aGUgbmV3IFVJJ3MgcHJlc2VudGVyIHdoZW4gaXQgaXMgYXZhaWxhYmxl
LiBPdGhlcndpc2UsIGl0IGZhbGxzIGJhY2sgdG8gdGhlIG9sZCBVSS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29y
ZVNvZnRMaW5rLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLm1tOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclBy
ZXNlbnRlckNvb3JkaW5hdG9yLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW06IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6
OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcik6CisgICAgICAgIChXZWJLaXQ6OkF1
dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6dXBkYXRlUHJlc2VudGVyKToKKyAgICAg
ICAgKFdlYktpdDo6QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpyZXF1ZXN0UGlu
KToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpz
ZWxlY3RBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JQ
cmVzZW50ZXJDb29yZGluYXRvcjo6ZGltaXNzUHJlc2VudGVyKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVs
ZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlLm1tOiBBZGRlZC4KKyAgICAg
ICAgKC1bV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUgaW5pdFdpdGhDb29yZGlu
YXRvcjpdKToKKyAgICAgICAgKC1bV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUg
YXV0aG9yaXphdGlvblByZXNlbnRlcjpjcmVkZW50aWFsUmVxdWVzdGVkRm9yTG9naW5DaG9pY2U6
YXV0aGVudGljYXRlZENvbnRleHQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dL
QVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlIGF1dGhvcml6YXRpb25QcmVzZW50ZXI6
dmFsaWRhdGVVc2VyRW50ZXJlZFBJTjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgSW50
cm9kdWNlZCB0aGUgQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yIHRvIGhhbmRsZSB0
aGUgbmV3IFVJLgorCisgICAgICAgICogV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhuUHJvY2Vzczo6V2ViQXV0aG5Qcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0aG5Qcm9jZXNzOjpzZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKToKKyAgICAgICAgVGVhY2hlZCBXZWJBdXRoblByb2Nlc3MgdG8gaW5m
b3JtIEF1dGhlbnRpY2F0b3JNYW5hZ2VyIGFib3V0IGl0cyBleGlzdGVuY2UuCisKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgUGFwZXJ3b3JrLgor
CiAyMDIwLTEyLTA4ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbbWFjT1NdIERlbnkgbWFjaC1sb29rdXAgdG8gdGhlIHNlcnZpY2UgJ2NvbS5hcHBsZS5h
c3NlcnRpb25kLnByb2Nlc3Nhc3NlcnRpb25jb25uZWN0aW9uJyBpbiB0aGUgV2ViQ29udGVudCBw
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9BdXRo
ZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
Q29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWNlODEw
N2JmNTIwM2U0Yzc0MmMwZTI0MjcwODcxZDMxNWZmMDA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVT
UEkuaApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
UExBVEZPUk0oSU9TKQorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2ltcG9ydCA8
QXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmUvQVNDQXV0aG9yaXphdGlvblByZXNlbnRhdGlvbkNv
bnRleHQuaD4KKyNpbXBvcnQgPEF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlL0FTQ0F1dGhvcml6
YXRpb25QcmVzZW50ZXIuaD4KKyNpbXBvcnQgPEF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlL0FT
Q1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlLmg+CisjaW1wb3J0IDxBdXRo
ZW50aWNhdGlvblNlcnZpY2VzQ29yZS9BU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxM
b2dpbkNob2ljZS5oPgorCisjZWxzZQorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAY2xh
c3MgTEFDb250ZXh0OworCitAcHJvdG9jb2wgQVNDTG9naW5DaG9pY2VQcm90b2NvbDsKK0Bwcm90
b2NvbCBBU0NDcmVkZW50aWFsUHJvdG9jb2w7CisKK0Bwcm90b2NvbCBBU0NBdXRob3JpemF0aW9u
UHJlc2VudGVySG9zdFByb3RvY29sIDxOU09iamVjdD4KKworLSAodm9pZClhdXRob3JpemF0aW9u
UmVxdWVzdEluaXRpYXRlZFdpdGhMb2dpbkNob2ljZTooaWQgPEFTQ0xvZ2luQ2hvaWNlUHJvdG9j
b2w+KWxvZ2luQ2hvaWNlIGF1dGhlbnRpY2F0ZWRDb250ZXh0OihudWxsYWJsZSBMQUNvbnRleHQg
Kiljb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCA8QVNDQ3JlZGVudGlhbFBy
b3RvY29sPiBjcmVkZW50aWFsLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXI7CisK
Ky0gKHZvaWQpYXV0aG9yaXphdGlvblJlcXVlc3RGaW5pc2hlZFdpdGhDcmVkZW50aWFsOihudWxs
YWJsZSBpZDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+KWNyZWRlbnRpYWwgZXJyb3I6KG51bGxhYmxl
IE5TRXJyb3IgKillcnJvciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxl
dGlvbkhhbmRsZXI7CisKKy0gKHZvaWQpdmFsaWRhdGVVc2VyRW50ZXJlZFBJTjooTlNTdHJpbmcg
KilwaW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9j
b2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcjsKKworQGVu
ZAorCitAY2xhc3MgQVNDQXV0aG9yaXphdGlvblByZXNlbnRhdGlvbkNvbnRleHQ7CitAY2xhc3Mg
QVNDQXV0aG9yaXphdGlvblByZXNlbnRlcjsKKworQHByb3RvY29sIEFTQ0F1dGhvcml6YXRpb25Q
cmVzZW50ZXJEZWxlZ2F0ZSA8TlNPYmplY3Q+CisKKy0gKHZvaWQpYXV0aG9yaXphdGlvblByZXNl
bnRlcjooQVNDQXV0aG9yaXphdGlvblByZXNlbnRlciAqKXByZXNlbnRlciBjcmVkZW50aWFsUmVx
dWVzdGVkRm9yTG9naW5DaG9pY2U6KGlkIDxBU0NMb2dpbkNob2ljZVByb3RvY29sPilsb2dpbkNo
b2ljZSBhdXRoZW50aWNhdGVkQ29udGV4dDoobnVsbGFibGUgTEFDb250ZXh0ICopY29udGV4dCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gX051
bGxhYmxlIGNyZWRlbnRpYWwsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpKWNvbXBsZXRpb25I
YW5kbGVyOworCistICh2b2lkKWF1dGhvcml6YXRpb25QcmVzZW50ZXI6KEFTQ0F1dGhvcml6YXRp
b25QcmVzZW50ZXIgKilwcmVzZW50ZXIgdmFsaWRhdGVVc2VyRW50ZXJlZFBJTjooTlNTdHJpbmcg
KilwaW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9j
b2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcjsKKworQGVu
ZAorCitAaW50ZXJmYWNlIEFTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXIgOiBOU09iamVjdCA8QVND
QXV0aG9yaXphdGlvblByZXNlbnRlckhvc3RQcm90b2NvbD4KKworLSAodm9pZClwcmVzZW50QXV0
aG9yaXphdGlvbldpdGhDb250ZXh0OihBU0NBdXRob3JpemF0aW9uUHJlc2VudGF0aW9uQ29udGV4
dCAqKWNvbnRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkPEFTQ0NyZWRlbnRpYWxQ
cm90b2NvbD4gX051bGxhYmxlLCBOU0Vycm9yICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxl
cjsKKworQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxBU0NBdXRob3JpemF0aW9uUHJl
c2VudGVyRGVsZWdhdGU+IGRlbGVnYXRlOworCitAZW5kCisKK0BjbGFzcyBBU0NDcmVkZW50aWFs
UmVxdWVzdENvbnRleHQ7CisKK2V4dGVybiBOU1N0cmluZyAqIGNvbnN0IEFTQ0F1dGhvcml6YXRp
b25QcmVzZW50YXRpb25Db250ZXh0RGF0YUtleTsKKworQGludGVyZmFjZSBBU0NBdXRob3JpemF0
aW9uUHJlc2VudGF0aW9uQ29udGV4dCA6IE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4KKworLSAo
aW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CisrIChpbnN0YW5jZXR5cGUpbmV3IE5T
X1VOQVZBSUxBQkxFOworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXF1ZXN0Q29udGV4dDoo
bnVsbGFibGUgQVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0ICopcmVxdWVzdENvbnRleHQgYXBw
SWRlbnRpZmllcjoobnVsbGFibGUgTlNTdHJpbmcgKilhcHBJZGVudGlmaWVyOworCistICh2b2lk
KWFkZExvZ2luQ2hvaWNlOihpZDxBU0NMb2dpbkNob2ljZVByb3RvY29sPilsb2dpbkNob2ljZTsK
KworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqYXBwSWRl
bnRpZmllcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxp
ZDxBU0NMb2dpbkNob2ljZVByb3RvY29sPj4gKmxvZ2luQ2hvaWNlczsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKnJlbHlpbmdQYXJ0eUlkZW50aWZpZXI7
CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqcHJveGllZEFwcE5hbWU7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqcHJveGll
ZEFzc29jaWF0ZWREb21haW5zOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TRGF0YSAq
cHJveGllZEljb25EYXRhOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TTnVtYmVyICpw
cm94aWVkSWNvblNjYWxlOworCitAZW5kCisKK0Bwcm90b2NvbCBBU0NMb2dpbkNob2ljZVByb3Rv
Y29sIDxOU09iamVjdCwgTlNTZWN1cmVDb2Rpbmc+CisKK0BlbmQKKworQGludGVyZmFjZSBBU0NT
ZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxMb2dpbkNob2ljZSA6IE5TT2JqZWN0IDxBU0NM
b2dpbkNob2ljZVByb3RvY29sPgorCistIChpbnN0YW5jZXR5cGUpaW5pdFJlZ2lzdHJhdGlvbkNo
b2ljZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZSBkaXNw
bGF5TmFtZTooTlNTdHJpbmcgKilkaXNwbGF5TmFtZSB1c2VySGFuZGxlOihOU0RhdGEgKil1c2Vy
SGFuZGxlOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5n
ICpuYW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAq
ZGlzcGxheU5hbWU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGF0
YSAqdXNlckhhbmRsZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBpc1Jl
Z2lzdHJhdGlvblJlcXVlc3Q7CisKKysgKGluc3RhbmNldHlwZSluZXcgTlNfVU5BVkFJTEFCTEU7
CistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKworQGVuZAorCitAaW50ZXJm
YWNlIEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlIDogTlNPYmplY3Qg
PEFTQ0xvZ2luQ2hvaWNlUHJvdG9jb2w+CisKKy0gKGluc3RhbmNldHlwZSlpbml0UmVnaXN0cmF0
aW9uQ2hvaWNlOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1l
IGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1lIHVzZXJIYW5kbGU6KE5TRGF0YSAq
KXVzZXJIYW5kbGU7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNT
dHJpbmcgKm5hbWU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3Ry
aW5nICpkaXNwbGF5TmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkg
TlNEYXRhICp1c2VySGFuZGxlOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09M
IGlzUmVnaXN0cmF0aW9uUmVxdWVzdDsKKworKyAoaW5zdGFuY2V0eXBlKW5ldyBOU19VTkFWQUlM
QUJMRTsKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworCitAZW5kCisKK05T
X0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUmVz
b3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJBdXRobi5zYiBi
L1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldl
YktpdC5XZWJBdXRobi5zYgppbmRleCBiN2E1MDUwYjc3ZTdlZThlMWMyNTQ5OTA2NjViMzkzNmY0
NGUwZjI2Li44NTJlZDZjMGE1ZjhjNzU2NTFiN2E2YTcxMmRiNjViNmYyODNhYmJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBs
ZS5XZWJLaXQuV2ViQXV0aG4uc2IKKysrIGIvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJv
eFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkF1dGhuLnNiCkBAIC02NDEsMyArNjQx
LDcgQEAKIDs7IEFsbG93IGFjY2Vzc2VzIHRvIE5GQwogKGFsbG93IG1hY2gtbG9va3VwCiAgICAg
KGdsb2JhbC1uYW1lICJjb20uYXBwbGUubmZjZC5od21hbmFnZXIiKSkKKworOzsgQWxsb3cgYWNj
ZXNzZXMgdG8gdGhlIFNwcmluZ2JvYXJkIHZpZXcgc2VydmljZXMuCisoYWxsb3cgbWFjaC1sb29r
dXAKKyAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZp
Y2VzIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxl
bWVudHMuc2ggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gK
aW5kZXggZjQwZGIyNmI1NDVhZWNjYzk2YjU5YTcyODg1M2U3Y2NlYzdlMzQ3My4uYTUwN2E5YjZk
MWQ0MGRkNDE4MTJjYzU4YzIyMzMxZTMwYjk4MmMyYSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaApAQCAtMjYwLDYgKzI2MCw5IEBAIGZ1bmN0aW9u
IGlvc19mYW1pbHlfcHJvY2Vzc193ZWJhdXRobl9lbnRpdGxlbWVudHMoKQogICAgIHBsaXN0YnVk
ZHkgQWRkIDpjb20uYXBwbGUuYXBwYXR0ZXN0LnNwaSBib29sIFlFUwogICAgIHBsaXN0YnVkZHkg
QWRkIDpjb20uYXBwbGUubW9iaWxlYWN0aXZhdGlvbmQuc3BpIGJvb2wgWUVTCiAKKyAgICBwbGlz
dGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnNwcmluZ2JvYXJkLnJlbW90ZS1hbGVydCBib29sIFlFUwor
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUuZnJvbnRib2FyZC5sYXVuY2hhcHBsaWNhdGlv
bnMgYm9vbCBZRVMKKwogICAgIHBsaXN0YnVkZHkgQWRkIDpzZWF0YmVsdC1wcm9maWxlcyBhcnJh
eQogICAgIHBsaXN0YnVkZHkgQWRkIDpzZWF0YmVsdC1wcm9maWxlczowIHN0cmluZyBjb20uYXBw
bGUuV2ViS2l0LldlYkF1dGhuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNGVhOGI3ODFk
MjBhODFhMDhlNDRiNDRkYmEwYjU4ZjIxYmQ2Zjk3My4uN2Q0NTU0M2FlZjNmZGFjYjllMDVlYWJk
NGZkNzQ2YzdhOTU0MjZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNTM2LDYgKzUzNiw4
IEBAIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eS5jcHAKIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJlZS5j
cHAKIAogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0FwcEF0dGVzdEludGVybmFs
U29mdExpbmsubW0gQG5vLXVuaWZ5CitVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
QXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0
b3IubW0KIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLm1t
CiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5t
bSBAbm8tdW5pZnkKQEAgLTU0NSw2ICs1NDcsNyBAQCBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTmVhckZpZWxkU29mdExpbmsubW0gQG5vLXVuaWZ5CiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5tbQogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL05mY1NlcnZpY2UubW0KK1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
S0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL1dLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCAyNGE3N2NiZWFkMDk0OGY4
ZTEwNmE3NzExYWVmZGM0NzhjYTQ3ZmUwLi4zNmEwYTFmZGM2ZWYyNzQwYjk2ZDlhNjI3MmZlNjU0
YzIwM2Y4ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKICNpbmNsdWRlICJBUElXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLmgiCiAjaW5jbHVkZSAiQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENs
aWVudC5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5oIgog
I2luY2x1ZGUgIkxvY2FsU2VydmljZS5oIgogI2luY2x1ZGUgIk5mY1NlcnZpY2UuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKQEAgLTE2NCwxMyArMTY1LDE0IEBAIHZvaWQgQXV0aGVudGlj
YXRvck1hbmFnZXI6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYm
IGRhdGEsIENhCiAgICAgLy8gMi4gQXNrIGNsaWVudHMgdG8gc2hvdyBhcHByb3ByaWF0ZSBVSSBp
ZiBhbnkgYW5kIHRoZW4gc3RhcnQgdGhlIHJlcXVlc3QuCiAgICAgaW5pdFRpbWVPdXRUaW1lcigp
OwogCi0gICAgLy8gRklYTUU8cmRhcjovL3Byb2JsZW0vNzA4MjI4MzQ+OiBUaGUgV2ViUGFnZVBy
b3h5IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHdlIGFyZSBpbiB0aGUgVUlQ
cm9jZXNzLgorICAgIC8vIEZJWE1FPHJkYXI6Ly9wcm9ibGVtLzcwODIyODM0PjogVGhlIG1faXNX
ZWJBdXRoZW50aWNhdGlvbk1vZGVybkVuYWJsZWQgaXMgdXNlZCB0byBkZXRlcm1pbmUKKyAgICAv
LyB3aGV0aGVyIG9yIG5vdCB3ZSBhcmUgaW4gdGhlIFVJUHJvY2Vzcy4KICAgICAvLyBJZiBzbywg
Y29udGludWUgdG8gdGhlIG9sZCByb3V0ZS4gT3RoZXJ3aXNlLCB1c2UgdGhlIG1vZGVybiBXZWJB
dXRobiBwcm9jZXNzIHdheS4KLSAgICBpZiAobV9wZW5kaW5nUmVxdWVzdERhdGEucGFnZSkgewor
ICAgIGlmICghbV9pc1dlYkF1dGhlbnRpY2F0aW9uTW9kZXJuRW5hYmxlZCkgewogICAgICAgICBy
dW5QYW5lbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHN0YXJ0RGlzY292ZXJ5KGdl
dFRyYW5zcG9ydHMoKSk7CisgICAgcnVuUHJlc2VudGVyKCk7CiB9CiAKIHZvaWQgQXV0aGVudGlj
YXRvck1hbmFnZXI6OmNhbmNlbFJlcXVlc3QoY29uc3QgUGFnZUlkZW50aWZpZXImIHBhZ2VJRCwg
Y29uc3QgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiYgZnJhbWVJRCkKQEAgLTE5Nyw2ICsxOTks
MTkgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y2FuY2VsUmVxdWVzdChjb25zdCBBUEk6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmUKICAgICBjYW5jZWxSZXF1ZXN0KCk7CiB9CiAK
K3ZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmNhbmNlbCgpCit7CisgICAgUkVMRUFTRV9BU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGlmICghbV9wZW5kaW5nQ29tcGxldGlvbkhhbmRs
ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBjYW5jZWxSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgQXV0
aGVudGljYXRvck1hbmFnZXI6OmVuYWJsZU1vZGVybldlYkF1dGhlbnRpY2F0aW9uKCkKK3sKKyAg
ICBtX2lzV2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkID0gdHJ1ZTsKK30KKwogdm9pZCBB
dXRoZW50aWNhdG9yTWFuYWdlcjo6Y2xlYXJTdGF0ZUFzeW5jKCkKIHsKICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CkBAIC0yMTMs
NiArMjI4LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y2xlYXJTdGF0ZSgpCiAgICAg
bV9hdXRoZW50aWNhdG9ycy5jbGVhcigpOwogICAgIG1fc2VydmljZXMuY2xlYXIoKTsKICAgICBt
X3BlbmRpbmdSZXF1ZXN0RGF0YSA9IHsgfTsKKyAgICBtX3ByZXNlbnRlciA9IG51bGxwdHI7CiB9
CiAKIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmF1dGhlbnRpY2F0b3JBZGRlZChSZWY8QXV0
aGVudGljYXRvcj4mJiBhdXRoZW50aWNhdG9yKQpAQCAtMjI2LDYgKzI0MiwxMiBAQCB2b2lkIEF1
dGhlbnRpY2F0b3JNYW5hZ2VyOjphdXRoZW50aWNhdG9yQWRkZWQoUmVmPEF1dGhlbnRpY2F0b3I+
JiYgYXV0aGVudGljYXRvcgogCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzZXJ2aWNlU3Rh
dHVzVXBkYXRlZChXZWJBdXRoZW50aWNhdGlvblN0YXR1cyBzdGF0dXMpCiB7CisgICAgLy8gVGhp
cyBpcyBmb3IgdGhlIG5ldyBVSS4KKyAgICBpZiAobV9wcmVzZW50ZXIpIHsKKyAgICAgICAgbV9w
cmVzZW50ZXItPnVwZGF0ZVByZXNlbnRlcihzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgZGlzcGF0Y2hQYW5lbENsaWVudENhbGwoW3N0YXR1c10gKGNvbnN0IEFQSTo6V2Vi
QXV0aGVudGljYXRpb25QYW5lbCYgcGFuZWwpIHsKICAgICAgICAgcGFuZWwuY2xpZW50KCkudXBk
YXRlUGFuZWwoc3RhdHVzKTsKICAgICB9KTsKQEAgLTI2OCw2ICsyOTAsMTIgQEAgdm9pZCBBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6YXV0aGVudGljYXRvclN0YXR1c1VwZGF0ZWQoV2ViQXV0aGVudGlj
YXRpb25TdGF0dXMgc3QKICAgICAvLyBhbiBlcnJvci4gV2UgZG9uJ3QgcmVhbGx5IGNhcmUgd2hh
dCBraW5kIG9mIGVycm9yIGl0IHJlYWxseSBpcy4KICAgICBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5j
YWNoZWRQaW4gPSBTdHJpbmcoKTsKIAorICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBuZXcgVUkuCisg
ICAgaWYgKG1fcHJlc2VudGVyKSB7CisgICAgICAgIG1fcHJlc2VudGVyLT51cGRhdGVQcmVzZW50
ZXIoc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGRpc3BhdGNoUGFuZWxD
bGllbnRDYWxsKFtzdGF0dXNdIChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBh
bmVsKSB7CiAgICAgICAgIHBhbmVsLmNsaWVudCgpLnVwZGF0ZVBhbmVsKHN0YXR1cyk7CiAgICAg
fSk7CkBAIC0yOTIsNiArMzIwLDEyIEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnJlcXVl
c3RQaW4odWludDY0X3QgcmV0cmllcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjCiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHBpbik7CiAgICAgfTsKIAorICAgIC8vIFRoaXMgaXMgZm9yIHRo
ZSBuZXcgVUkuCisgICAgaWYgKG1fcHJlc2VudGVyKSB7CisgICAgICAgIG1fcHJlc2VudGVyLT5y
ZXF1ZXN0UGluKHJldHJpZXMsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIGRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKFtyZXRyaWVzLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3QgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiBw
YW5lbCkgbXV0YWJsZSB7CiAgICAgICAgIHBhbmVsLmNsaWVudCgpLnJlcXVlc3RQaW4ocmV0cmll
cywgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0pOwpAQCAtMjk5LDYgKzMzMywxMiBAQCB2b2lk
IEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYwogCiB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzZWxlY3RB
c3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZT4+JiYgcmVzcG9uc2VzLCBXZWJBdXRoZW50aWNhdGlvblNvdXJjZSBzb3VyY2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgLy8gVGhpcyBpcyBmb3IgdGhlIG5ldyBVSS4K
KyAgICBpZiAobV9wcmVzZW50ZXIpIHsKKyAgICAgICAgbV9wcmVzZW50ZXItPnNlbGVjdEFzc2Vy
dGlvblJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2VzKSwgc291cmNlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBkaXNwYXRjaFBhbmVs
Q2xpZW50Q2FsbChbcmVzcG9uc2VzID0gV1RGTW92ZShyZXNwb25zZXMpLCBzb3VyY2UsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBBUEk6Oldl
YkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsKSBtdXRhYmxlIHsKICAgICAgICAgcGFuZWwuY2xp
ZW50KCkuc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZXMpLCBzb3VyY2Us
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKQEAgLTM0MCw5ICszODAsNiBA
QCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpzdGFydERpc2NvdmVyeShjb25zdCBUcmFuc3Bv
cnRTZXQmIHRyYW5zcG9ydHMpCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBB
U1NFUlQobV9zZXJ2aWNlcy5pc0VtcHR5KCkgJiYgdHJhbnNwb3J0cy5zaXplKCkgPD0gbWF4VHJh
bnNwb3J0TnVtYmVyKTsKICAgICBmb3IgKGF1dG8mIHRyYW5zcG9ydCA6IHRyYW5zcG9ydHMpIHsK
LSAgICAgICAgLy8gT25seSBhbGxvdyBVU0IgYXV0aGVudGljYXRvcnMgd2hlbiBjbGllbnRzIGRv
bid0IGhhdmUgZGVkaWNhdGVkIFVJLgotICAgICAgICBpZiAodHJhbnNwb3J0ICE9IEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnQ6OlVzYiAmJiAobV9wZW5kaW5nUmVxdWVzdERhdGEucGFuZWxSZXN1bHQg
PT0gV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUpKQotICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGF1dG8gc2VydmljZSA9IGNyZWF0ZVNlcnZpY2UodHJhbnNw
b3J0LCAqdGhpcyk7CiAgICAgICAgIHNlcnZpY2UtPnN0YXJ0RGlzY292ZXJ5KCk7CiAgICAgICAg
IG1fc2VydmljZXMuYXBwZW5kKFdURk1vdmUoc2VydmljZSkpOwpAQCAtMzg5LDE2ICs0MjYsMzEg
QEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cnVuUGFuZWwoKQogICAgICAgICAgICAgfHwg
KHJlc3VsdCA9PSBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpEaWROb3RQcmVzZW50KQog
ICAgICAgICAgICAgfHwgKHdlYWtQYW5lbC5nZXQoKSAhPSBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5w
YW5lbC5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fcGVuZGluZ1JlcXVl
c3REYXRhLnBhbmVsUmVzdWx0ID0gcmVzdWx0OwogICAgICAgICBzdGFydERpc2NvdmVyeSh0cmFu
c3BvcnRzKTsKICAgICB9KTsKIH0KIAordm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cnVuUHJl
c2VudGVyKCkKK3sKKyAgICAvLyBHZXQgYXZhaWxhYmxlIHRyYW5zcG9ydHMgYW5kIHN0YXJ0IGRp
c2NvdmVyaW5nIGF1dGhlbnRpY2F0b3JzIG9uIHRoZW0uCisgICAgYXV0byYgb3B0aW9ucyA9IG1f
cGVuZGluZ1JlcXVlc3REYXRhLm9wdGlvbnM7CisgICAgYXV0byB0cmFuc3BvcnRzID0gZ2V0VHJh
bnNwb3J0cygpOworICAgIHN0YXJ0RGlzY292ZXJ5KHRyYW5zcG9ydHMpOworCisgICAgbV9wcmVz
ZW50ZXIgPSBtYWtlVW5pcXVlPEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcj4oKnRo
aXMsIGdldFJwSWQob3B0aW9ucyksIHRyYW5zcG9ydHMsIGdldENsaWVudERhdGFUeXBlKG9wdGlv
bnMpKTsKK30KKwogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6aW52b2tlUGVuZGluZ0NvbXBs
ZXRpb25IYW5kbGVyKFJlc3BvbmQmJiByZXNwb25kKQogewotICAgIGRpc3BhdGNoUGFuZWxDbGll
bnRDYWxsKFtyZXN1bHQgPSBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBdXRoZW50aWNhdG9y
UmVzcG9uc2U+PihyZXNwb25kKSA/IFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0OjpTdWNjZWVkZWQg
OiBXZWJBdXRoZW50aWNhdGlvblJlc3VsdDo6RmFpbGVkXSAoY29uc3QgQVBJOjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsJiBwYW5lbCkgewotICAgICAgICBwYW5lbC5jbGllbnQoKS5kaXNtaXNzUGFu
ZWwocmVzdWx0KTsKLSAgICB9KTsKKyAgICAvLyBUaGlzIGlzIGZvciB0aGUgbmV3IFVJLgorICAg
IGlmIChtX3ByZXNlbnRlcikKKyAgICAgICAgbV9wcmVzZW50ZXItPmRpbWlzc1ByZXNlbnRlcigp
OworICAgIGVsc2UgeworICAgICAgICBkaXNwYXRjaFBhbmVsQ2xpZW50Q2FsbChbcmVzdWx0ID0g
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPj4ocmVzcG9u
ZCkgPyBXZWJBdXRoZW50aWNhdGlvblJlc3VsdDo6U3VjY2VlZGVkIDogV2ViQXV0aGVudGljYXRp
b25SZXN1bHQ6OkZhaWxlZF0gKGNvbnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYgcGFu
ZWwpIHsKKyAgICAgICAgICAgIHBhbmVsLmNsaWVudCgpLmRpc21pc3NQYW5lbChyZXN1bHQpOwor
ICAgICAgICB9KTsKKyAgICB9CisKICAgICBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlc3BvbmQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKaW5kZXgg
MjcwYjhiZjQzNTEzMjkzZmJmNDQ5YTQ3OWJhYmM5N2JkMDYwOTg1Ni4uYjVhMTJiNDk2OTkyYzIx
Mzg2NzJhMTZjN2Q5MTkxMjhhNGIyOTBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0b3IuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRp
bmF0b3IuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZS5oIgogI2lu
Y2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0F1dGhlbnRpY2F0b3JSZXNwb25zZS5oPgpAQCAtNjMsOSArNjQsMTIgQEAgcHVibGljOgogICAg
IHZvaWQgaGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYsIENhbGxi
YWNrJiYpOwogICAgIHZvaWQgY2FuY2VsUmVxdWVzdChjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4mKTsgLy8gQ2Fs
bGVkIGZyb20gV2ViUGFnZVByb3h5L1dlYlByb2Nlc3NQcm94eS4KICAgICB2b2lkIGNhbmNlbFJl
cXVlc3QoY29uc3QgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJik7IC8vIENhbGxlZCBmcm9t
IHBhbmVsIGNsaWVudHMuCisgICAgdm9pZCBjYW5jZWwoKTsgLy8gQ2FsbGVkIGZyb20gdGhlIHBy
ZXNlbnRlci4KIAogICAgIHZpcnR1YWwgYm9vbCBpc01vY2soKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCisgICAgdm9pZCBlbmFibGVNb2Rlcm5XZWJBdXRoZW50aWNhdGlvbigpOworCiBwcm90
ZWN0ZWQ6CiAgICAgUnVuTG9vcDo6VGltZXI8QXV0aGVudGljYXRvck1hbmFnZXI+JiByZXF1ZXN0
VGltZU91dFRpbWVyKCkgeyByZXR1cm4gbV9yZXF1ZXN0VGltZU91dFRpbWVyOyB9CiAgICAgdm9p
ZCBjbGVhclN0YXRlQXN5bmMoKTsgLy8gVG8gdm9pZCBjeWNsaWMgZGVwZW5kZW5jZS4KQEAgLTk2
LDYgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0VGltZU91dFRpbWVyKCk7CiAgICAg
dm9pZCB0aW1lT3V0VGltZXJGaXJlZCgpOwogICAgIHZvaWQgcnVuUGFuZWwoKTsKKyAgICB2b2lk
IHJ1blByZXNlbnRlcigpOwogICAgIHZvaWQgcmVzdGFydERpc2NvdmVyeSgpOwogICAgIFRyYW5z
cG9ydFNldCBnZXRUcmFuc3BvcnRzKCkgY29uc3Q7CiAgICAgdm9pZCBkaXNwYXRjaFBhbmVsQ2xp
ZW50Q2FsbChGdW5jdGlvbjx2b2lkKGNvbnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYp
PiYmKSBjb25zdDsKQEAgLTEwNCw5ICsxMDksMTIgQEAgcHJpdmF0ZToKICAgICBXZWJBdXRoZW50
aWNhdGlvblJlcXVlc3REYXRhIG1fcGVuZGluZ1JlcXVlc3REYXRhOwogICAgIENhbGxiYWNrIG1f
cGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyOyAvLyBTaG91bGQgbm90IGJlIGludm9rZWQgZGlyZWN0
bHksIHVzZSBpbnZva2VQZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIuCiAgICAgUnVuTG9vcDo6VGlt
ZXI8QXV0aGVudGljYXRvck1hbmFnZXI+IG1fcmVxdWVzdFRpbWVPdXRUaW1lcjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yPiBtX3ByZXNlbnRl
cjsKIAogICAgIFZlY3RvcjxVbmlxdWVSZWY8QXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U+
PiBtX3NlcnZpY2VzOwogICAgIEhhc2hTZXQ8UmVmPEF1dGhlbnRpY2F0b3I+PiBtX2F1dGhlbnRp
Y2F0b3JzOworCisgICAgYm9vbCBtX2lzV2ViQXV0aGVudGljYXRpb25Nb2Rlcm5FbmFibGVkIHsg
ZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRpb25T
ZXJ2aWNlc0NvcmVTb2Z0TGluay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU4ZWU0ZDJlMjVlY2NjNWM3ZWNlNzk3ZmQ3MzE1MmMwM2UzOTY4N2QKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLmgKQEAgLTAsMCArMSw0MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJBdXRoZW50aWNhdGlvblNlcnZp
Y2VzQ29yZVNQSS5oIgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBQTEFURk9S
TShJT1MpCisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihXZWJLaXQsIEF1dGhlbnRp
Y2F0aW9uU2VydmljZXNDb3JlKTsKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoV2ViS2l0
LCBBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVS
KFdlYktpdCwgQVNDQXV0aG9yaXphdGlvblByZXNlbnRhdGlvbkNvbnRleHQpOworU09GVF9MSU5L
X0NMQVNTX0ZPUl9IRUFERVIoV2ViS2l0LCBBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRpYWxM
b2dpbkNob2ljZSk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihXZWJLaXQsIEFTQ1NlY3Vy
aXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlKTsKKworI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdGlv
blNlcnZpY2VzQ29yZVNvZnRMaW5rLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmYWIzNDM4YWFjMDJmODZlY2Vl
MTA4ODlmNWI4MzhhNjEwYzQ2ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29y
ZVNvZnRMaW5rLm1tCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgiCisjaW1w
b3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworI2lmIFBMQVRGT1JNKElPUykKKworU09GVF9MSU5L
X1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoV2ViS2l0LCBBdXRoZW50aWNhdGlvblNlcnZp
Y2VzQ29yZSk7CisKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFdlYktpdCwgQXV0aGVudGlj
YXRpb25TZXJ2aWNlc0NvcmUsIEFTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXIpOworU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0UoV2ViS2l0LCBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZSwgQVND
QXV0aG9yaXphdGlvblByZXNlbnRhdGlvbkNvbnRleHQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9T
T1VSQ0UoV2ViS2l0LCBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZSwgQVNDUGxhdGZvcm1QdWJs
aWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2UpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0Uo
V2ViS2l0LCBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZSwgQVNDU2VjdXJpdHlLZXlQdWJsaWNL
ZXlDcmVkZW50aWFsTG9naW5DaG9pY2UpOworCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRp
bmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMGFjNmY4ODYzNTE1ZTAyOTRlZWYzNDdiYWI2MGM2ZjdkY2Ex
MTNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmgKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9B
VVRITikKKworI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1
dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworT0JKQ19D
TEFTUyBBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyOworT0JKQ19DTEFTUyBXS0FTQ0F1dGhvcml6
YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgQXV0aGVudGljYXRvck1hbmFnZXI7CisKK2NsYXNzIEF1dGhlbnRpY2F0b3JQcmVzZW50
ZXJDb29yZGluYXRvciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50aWNhdG9yUHJlc2Vu
dGVyQ29vcmRpbmF0b3I+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IpOworcHVi
bGljOgorICAgIHVzaW5nIFRyYW5zcG9ydFNldCA9IEhhc2hTZXQ8V2ViQ29yZTo6QXV0aGVudGlj
YXRvclRyYW5zcG9ydCwgV1RGOjpJbnRIYXNoPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQ+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFu
c3BvcnQ+PjsKKworICAgIEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcihjb25zdCBB
dXRoZW50aWNhdG9yTWFuYWdlciYsIGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVHJhbnNwb3J0
U2V0JiwgV2ViQ29yZTo6Q2xpZW50RGF0YVR5cGUpOworCisgICAgdm9pZCB1cGRhdGVQcmVzZW50
ZXIoV2ViQXV0aGVudGljYXRpb25TdGF0dXMpOworICAgIHZvaWQgcmVxdWVzdFBpbih1aW50NjRf
dCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKKyAg
ICB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mJiwgV2ViQXV0aGVudGljYXRpb25Tb3VyY2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlKik+JiYpOworICAgIHZvaWQgZGltaXNzUHJlc2VudGVyKCk7CisKK3ByaXZhdGU6CisgICAg
V2Vha1B0cjxBdXRoZW50aWNhdG9yTWFuYWdlcj4gbV9tYW5hZ2VyOworICAgIFJldGFpblB0cjxB
U0NBdXRob3JpemF0aW9uUHJlc2VudGVyPiBtX3ByZXNlbnRlcjsKKyAgICBSZXRhaW5QdHI8V0tB
U0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGU+IG1fcHJlc2VudGVyRGVsZWdhdGU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVy
Q29vcmRpbmF0b3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM3M2I3MmI2NzRlYTc5NGYwZmQ3M2QxMWI4MDlh
MzNiNmEyNTkxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5t
bQpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IuaCIKKworI2lmIEVOQUJM
RShXRUJfQVVUSE4pCisKKyNpbXBvcnQgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCisjaW1wb3J0
ICJXS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5oIgorI2ltcG9ydCA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisKKyNpbXBvcnQg
IkF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQXV0aGVudGljYXRvclByZXNlbnRlckNv
b3JkaW5hdG9yOjpBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IoY29uc3QgQXV0aGVu
dGljYXRvck1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVHJhbnNw
b3J0U2V0JiB0cmFuc3BvcnRzLCBDbGllbnREYXRhVHlwZSB0eXBlKQorICAgIDogbV9tYW5hZ2Vy
KG1ha2VXZWFrUHRyKG1hbmFnZXIpKQoreworI2lmIFBMQVRGT1JNKElPUykKKyAgICBhdXRvIHBy
ZXNlbnRhdGlvbkNvbnRleHQgPSBhZG9wdE5TKFthbGxvY0FTQ0F1dGhvcml6YXRpb25QcmVzZW50
YXRpb25Db250ZXh0SW5zdGFuY2UoKSBpbml0V2l0aFJlcXVlc3RDb250ZXh0Om51bGxwdHIgYXBw
SWRlbnRpZmllcjpudWxscHRyXSk7CisgICAgW3ByZXNlbnRhdGlvbkNvbnRleHQgc2V0UmVseWlu
Z1BhcnR5SWRlbnRpZmllcjogcnBJZF07CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IENsaWVudERhdGFUeXBlOjpDcmVhdGU6CisgICAgICAgIGlmICh0cmFuc3BvcnRzLmNvbnRhaW5z
KEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsKSkKKyAgICAgICAgICAgIFtwcmVzZW50
YXRpb25Db250ZXh0IGFkZExvZ2luQ2hvaWNlOmFkb3B0TlMoW2FsbG9jQVNDUGxhdGZvcm1QdWJs
aWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2VJbnN0YW5jZSgpIGluaXRSZWdpc3RyYXRpb25DaG9p
Y2VdKS5nZXQoKV07CisgICAgICAgIGlmICh0cmFuc3BvcnRzLmNvbnRhaW5zKEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnQ6OlVzYikgfHwgdHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50aWNhdG9yVHJh
bnNwb3J0OjpOZmMpKQorICAgICAgICAgICAgW3ByZXNlbnRhdGlvbkNvbnRleHQgYWRkTG9naW5D
aG9pY2U6YWRvcHROUyhbYWxsb2NBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxMb2dp
bkNob2ljZUluc3RhbmNlKCkgaW5pdFJlZ2lzdHJhdGlvbkNob2ljZV0pLmdldCgpXTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDbGllbnREYXRhVHlwZTo6R2V0OgorICAgICAgICAvLyBGSVhN
RSgyMTk3MTApOiBBZG9wdCBuZXcgVUkgZm9yIHRoZSBQbGF0Zm9ybSBBdXRoZW50aWNhdG9yIGdl
dEFzc2VydGlvbiBmbG93LgorICAgICAgICAvLyBGSVhNRSgyMTk3MTEpOiBBZG9wdCBuZXcgVUkg
Zm9yIHRoZSBTZWN1cml0eSBLZXkgZ2V0QXNzZXJ0aW9uIGZsb3cuCisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAg
IG1fcHJlc2VudGVyRGVsZWdhdGUgPSBbW1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aENvb3JkaW5hdG9yOip0aGlzXTsKKyAgICBtX3ByZXNlbnRlciA9
IFthbGxvY0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJJbnN0YW5jZSgpIGluaXRdOworICAgIFtt
X3ByZXNlbnRlciBzZXREZWxlZ2F0ZTptX3ByZXNlbnRlckRlbGVnYXRlLmdldCgpXTsKKworICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW21hbmFnZXIgPSBtX21hbmFn
ZXJdIChpZDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CisgICAgICAgIGlmICghZXJyb3IpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZG4ndCBjb21wbGV0ZSB0aGUgYXV0aGVudGljYXRvciBwcmVzZW50YXRpb24g
Y29udGV4dDogJUAiLCBlcnJvcik7CisgICAgICAgIC8vIFRoaXMgYmxvY2sgY2FuIGJlIGV4ZWN1
dGVkIGluIGFub3RoZXIgdGhyZWFkLgorICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W21hbmFnZXJdICgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKG1hbmFnZXIpCisgICAgICAg
ICAgICAgICAgbWFuYWdlci0+Y2FuY2VsKCk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIFtt
X3ByZXNlbnRlciBwcmVzZW50QXV0aG9yaXphdGlvbldpdGhDb250ZXh0OnByZXNlbnRhdGlvbkNv
bnRleHQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXIuZ2V0KCldOwor
I2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKK30K
Kwordm9pZCBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6OnVwZGF0ZVByZXNlbnRl
cihXZWJBdXRoZW50aWNhdGlvblN0YXR1cykKK3sKKyAgICAvLyBGSVhNRSgyMTk3MTMpOiBBZG9w
dCBuZXcgVUkgZm9yIHRoZSB1cGRhdGUgZmxvdy4KK30KKwordm9pZCBBdXRoZW50aWNhdG9yUHJl
c2VudGVyQ29vcmRpbmF0b3I6OnJlcXVlc3RQaW4odWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpCit7CisgICAgLy8gRklYTUUoMjE5NzEyKTogQWRvcHQg
bmV3IFVJIGZvciB0aGUgQ2xpZW50IFBJTiBmbG93LgorfQorCit2b2lkIEF1dGhlbnRpY2F0b3JQ
cmVzZW50ZXJDb29yZGluYXRvcjo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmLCBXZWJBdXRoZW50aWNhdGlvblNvdXJj
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uq
KT4mJikKK3sKKyAgICAvLyBGSVhNRSgyMTk3MTApOiBBZG9wdCBuZXcgVUkgZm9yIHRoZSBQbGF0
Zm9ybSBBdXRoZW50aWNhdG9yIGdldEFzc2VydGlvbiBmbG93LgorICAgIC8vIEZJWE1FKDIxOTcx
MSk6IEFkb3B0IG5ldyBVSSBmb3IgdGhlIFNlY3VyaXR5IEtleSBnZXRBc3NlcnRpb24gZmxvdy4K
K30KKwordm9pZCBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6OmRpbWlzc1ByZXNl
bnRlcigpCit7CisgICAgLy8gRklYTUUoMjE5NzE2KTogQWRvcHQgbmV3IFVJIGZvciB0aGUgZGlz
bWlzcyBmbG93LgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9XS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tBU0NBdXRo
b3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGM2ZTZjODBkNzQ2ODY2
ZmE4ZjQ4ZjIwNDQwOTE3ZTJhODNhYjY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tBU0NBdXRob3JpemF0aW9uUHJl
c2VudGVyRGVsZWdhdGUuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQg
IkF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
Y2xhc3MgQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOworfQorCitOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRl
bGVnYXRlIDogTlNPYmplY3QgPEFTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZT4KKwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29vcmRpbmF0b3I6KFdlYktpdDo6QXV0aGVudGljYXRv
clByZXNlbnRlckNvb3JkaW5hdG9yJiljb29yZGluYXRvcjsKKworQGVuZAorCitOU19BU1NVTUVf
Tk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKElP
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tBU0NBdXRob3JpemF0aW9u
UHJlc2VudGVyRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2U1YTA3OGFiODhlMjYwYWU3NWZkZjFk
NDVlNmJlYmRmYzMzOWU5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRl
bGVnYXRlLm1tCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIldLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlLmgiCisKKyNp
ZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgIkF1dGhlbnRp
Y2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5oIgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgor
CitAaW1wbGVtZW50YXRpb24gV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUgewor
ICAgIFdlYWtQdHI8V2ViS2l0OjpBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I+IF9j
b29yZGluYXRvcjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29vcmRpbmF0b3I6KFdl
YktpdDo6QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yJiljb29yZGluYXRvcgorewor
ICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIF9jb29yZGluYXRvciA9IG1h
a2VXZWFrUHRyKGNvb3JkaW5hdG9yKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClh
dXRob3JpemF0aW9uUHJlc2VudGVyOihBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyICopcHJlc2Vu
dGVyIGNyZWRlbnRpYWxSZXF1ZXN0ZWRGb3JMb2dpbkNob2ljZTooaWQgPEFTQ0xvZ2luQ2hvaWNl
UHJvdG9jb2w+KWxvZ2luQ2hvaWNlIGF1dGhlbnRpY2F0ZWRDb250ZXh0OihudWxsYWJsZSBMQUNv
bnRleHQgKiljb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCA8QVNDQ3JlZGVu
dGlhbFByb3RvY29sPiBfTnVsbGFibGUgY3JlZGVudGlhbCwgTlNFcnJvciAqIF9OdWxsYWJsZSBl
cnJvcikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICAvLyBGSVhNRSgyMTk3MDkpOiBBZG9wdCBu
ZXcgVUkgZm9yIHRoZSBQbGF0Zm9ybSBBdXRoZW50aWNhdG9yIG1ha2VDcmVkZW50aWFsIGZsb3cu
Cit9CisKKy0gKHZvaWQpYXV0aG9yaXphdGlvblByZXNlbnRlcjooQVNDQXV0aG9yaXphdGlvblBy
ZXNlbnRlciAqKXByZXNlbnRlciB2YWxpZGF0ZVVzZXJFbnRlcmVkUElOOihOU1N0cmluZyAqKXBp
biBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4g
Y3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgLy8g
RklYTUUoMjE5NzEyKTogQWRvcHQgbmV3IFVJIGZvciB0aGUgQ2xpZW50IFBJTiBmbG93LgorfQor
CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VVRITikgJiYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJBdXRo
blByb2Nlc3MvV2ViQXV0aG5Qcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9j
ZXNzL1dlYkF1dGhuUHJvY2Vzcy5jcHAKaW5kZXggYTViNTA2MjZmMDUzMzNmOGJmYjc0ODZjMGI2
Y2ExYjRhNmVkMzFiOC4uNzdmMzgwZGY5OGUwMTc4YzA3M2YyNmEzOWU0MWUyNmMzY2NiM2Y0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Qcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRoblByb2Nlc3Mu
Y3BwCkBAIC00Miw2ICs0Miw3IEBAIFdlYkF1dGhuUHJvY2Vzczo6V2ViQXV0aG5Qcm9jZXNzKEF1
eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBwYXJhCiAgICAgOiBtX2F1
dGhlbnRpY2F0b3JNYW5hZ2VyKG1ha2VVbmlxdWVSZWY8QXV0aGVudGljYXRvck1hbmFnZXI+KCkp
CiB7CiAgICAgaW5pdGlhbGl6ZShXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICBtX2F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLT5lbmFibGVNb2Rlcm5XZWJBdXRoZW50aWNhdGlvbigpOwogfQogCiBXZWJB
dXRoblByb2Nlc3M6On5XZWJBdXRoblByb2Nlc3MoKQpAQCAtMTI5LDYgKzEzMCw3IEBAIHZvaWQg
V2ViQXV0aG5Qcm9jZXNzOjpzZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdl
YkNvcmU6Ok1vY2tXZWJBdXRoCiB7CiAgICAgaWYgKCFtX2F1dGhlbnRpY2F0b3JNYW5hZ2VyLT5p
c01vY2soKSkgewogICAgICAgICBtX2F1dGhlbnRpY2F0b3JNYW5hZ2VyID0gbWFrZVVuaXF1ZVJl
ZjxNb2NrQXV0aGVudGljYXRvck1hbmFnZXI+KFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAg
ICAgICBtX2F1dGhlbnRpY2F0b3JNYW5hZ2VyLT5lbmFibGVNb2Rlcm5XZWJBdXRoZW50aWNhdGlv
bigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHN0YXRpY19jYXN0PE1vY2tBdXRoZW50
aWNhdG9yTWFuYWdlcio+KCZtX2F1dGhlbnRpY2F0b3JNYW5hZ2VyKS0+c2V0VGVzdENvbmZpZ3Vy
YXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZTNiNDNlNWMxNzQ3MTAxNDQ1NTg3OWE3
NTlmZDQwZDZjMTVkYTE0Li44NWFiMGU0ZWY3ODQ1Y2VkYTFkNTdlMjg5Y2ZhZGJjYjEwZDNhN2U3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTExNDUsNiArMTE0NSw4IEBACiAJCTU3NUIxQkJBMjNDRTlDMTMwMDIwNjM5QSAvKiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTU1QTZFQTFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwICovOyB9OwogCQk1NzZDQTlENzIyQjg2MjE4MDAzMDE0M0MgLyogU09BdXRob3JpemF0
aW9uTlNVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3RkQzMTczMjJCMzUxNDgwMDhEMEU4QiAvKiBTT0F1dGhvcml6YXRpb25OU1VSTEV4
dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTU3NzJGMjA2MjE3REJENkEwMDU2QkYyQyAvKiBIaWRTZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzcyRjIwNDIxN0RCRDZBMDA1NkJGMkMg
LyogSGlkU2VydmljZS5oICovOyB9OworCQk1Nzc3Mzk5MTI1ODAzNzQzMDA1OTM0OEIgLyogQXV0
aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Nzc3Mzk4RjI1ODAzNzQzMDA1OTM0OEIgLyogQXV0aGVu
dGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmggKi87IH07CisJCTU3NzczOTk1MjU4MDM4OEYw
MDU5MzQ4QiAvKiBXS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc3NzM5OTMyNTgwMzg4RjAw
NTkzNDhCIC8qIFdLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlLmggKi87IH07CiAJ
CTU3N0ZGNzgyMjM0NkU4MUMwMDRFREZCOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzdG
Rjc4MTIzNDZFODFDMDA0RURGQjkgLyogQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5o
ICovOyB9OwogCQk1NzdGRjc4NTIzNDZFQ0FBMDA0RURGQjkgLyogV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTc3RkY3ODMyMzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGll
bnQuaCAqLzsgfTsKIAkJNTc4REMyOTgyMTU1QTAwMjAwNzRFODE1IC8qIExvY2FsQXV0aGVudGlj
YXRpb25Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTc4REMyOTcyMTU1QTAwMTAwNzRFODE1IC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0
TGluay5oICovOyB9OwpAQCAtMTIwOCw2ICsxMjEwLDEwIEBACiAJCTU3RUIyRTNBMjFFMTk4M0Uw
MEI4OUNERiAvKiBVMmZBdXRoZW50aWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0VCMkUzODIxRTE5ODNFMDBCODlDREYgLyogVTJmQXV0aGVu
dGljYXRvci5oICovOyB9OwogCQk1N0VCRTI2QTIzNDY3NkM1MDA4RDhBRjkgLyogQVBJV2ViQXV0
aGVudGljYXRpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTdFQkUyNjgyMzQ2NzZDNTAwOEQ4QUY5IC8qIEFQSVdlYkF1dGhlbnRpY2F0aW9u
UGFuZWwuaCAqLzsgfTsKIAkJNTdFRkM3N0UyNTUwRUI4NjAwRjk0NzdEIC8qIGNvbS5hcHBsZS5X
ZWJLaXQuV2ViQXV0aG4uc2IgaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3RUZDNzdEMjU1MEVCODUwMEY5NDc3RCAvKiBjb20uYXBwbGUuV2ViS2l0Lldl
YkF1dGhuLnNiICovOyB9OworCQk1N0ZBQkIwRjI1ODE3Q0YwMDA1OURDOTUgLyogQXV0aGVudGlj
YXRpb25TZXJ2aWNlc0NvcmVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3RkFCQjBFMjU4MTdDRjAwMDU5REM5NSAvKiBBdXRoZW50aWNhdGlvblNl
cnZpY2VzQ29yZVNQSS5oICovOyB9OworCQk1N0ZBQkIxMjI1ODE4MjdDMDA1OURDOTUgLyogQXV0
aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdGQUJCMTAyNTgxODI3QzAwNTlEQzk1IC8qIEF1dGhl
bnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsuaCAqLzsgfTsKKwkJNTdGQUJCMTMyNTgxODI3
QzAwNTlEQzk1IC8qIEF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0ZBQkIxMTI1ODE4MjdD
MDA1OURDOTUgLyogQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5tbSAqLzsgfTsK
KwkJNTdGQUJCMTQyNTgxODgyMzAwNTlEQzk1IC8qIFNvdXJjZXNDb2NvYS50eHQgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEN0RFQkUxMjEyNjlENUYw
MEI5RjczQyAvKiBTb3VyY2VzQ29jb2EudHh0ICovOyB9OwogCQk1N0ZEMzE4MDIyQjM1MTU4MDA4
RDBFOEIgLyogTmF2aWdhdGlvblNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RkQzMTc4MjJCMzUxNDkwMDhEMEU4
QiAvKiBOYXZpZ2F0aW9uU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oICovOyB9OwogCQk1N0ZEMzE4
MTIyQjM1MTVCMDA4RDBFOEIgLyogUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0ZEMzE3MDIyQjM1MTQ4
MDA4RDBFOEIgLyogUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggKi87IH07CiAJCTU3RkQz
MTgyMjJCMzUxNUUwMDhEMEU4QiAvKiBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RkQzMTc0MjJC
MzUxNDkwMDhEMEU4QiAvKiBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCAqLzsgfTsK
QEAgLTQwNzcsNiArNDA4MywxMCBAQAogCQk1NzYwODI5OTIwMkJEQUUyMDAxMTY2NzggLyogV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3NzJGMjA0MjE3REJENkEwMDU2QkYyQyAvKiBIaWRTZXJ2aWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhpZFNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc3
MkYyMDUyMTdEQkQ2QTAwNTZCRjJDIC8qIEhpZFNlcnZpY2UubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBIaWRTZXJ2aWNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Nzc3Mzk4
RjI1ODAzNzQzMDA1OTM0OEIgLyogQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Nzc3Mzk5MDI1ODAzNzQzMDA1OTM0OEIgLyogQXV0
aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Nzc3Mzk5MzI1ODAzODhGMDA1OTM0OEIgLyogV0tBU0NBdXRob3JpemF0aW9u
UHJlc2VudGVyRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tBU0NBdXRob3JpemF0aW9uUHJl
c2VudGVyRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc3NzM5OTQy
NTgwMzg4RjAwNTkzNDhCIC8qIFdLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdh
dGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3N0ZGNzgxMjM0NkU4MUMwMDRF
REZCOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTc3RkY3ODMyMzQ2RUNBQTAwNEVERkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzdGRjc4NDIzNDZFQ0FBMDA0RURGQjkg
LyogV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC00MTYyLDYgKzQxNzIsOSBAQAogCQk1N0VCRTI2ODIzNDY3NkM1MDA4RDhBRjkgLyog
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElXZWJBdXRoZW50
aWNhdGlvblBhbmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RUJFMjY5MjM0
Njc2QzUwMDhEOEFGOSAvKiBBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1N0VGQzc3RDI1NTBFQjg1MDBGOTQ3N0QgLyogY29tLmFwcGxlLldlYktp
dC5XZWJBdXRobi5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0Lldl
YkF1dGhuLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0ZBQkIwRTI1ODE3Q0Yw
MDA1OURDOTUgLyogQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTdGQUJCMTAyNTgxODI3QzAwNTlEQzk1IC8qIEF1dGhlbnRpY2F0aW9uU2Vydmlj
ZXNDb3JlU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25TZXJ2aWNlc0Nv
cmVTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0ZBQkIxMTI1ODE4
MjdDMDA1OURDOTUgLyogQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RkQzMTcwMjJCMzUxNDgwMDhEMEU4QiAv
KiBQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU3RkQzMTcxMjJCMzUxNDgwMDhEMEU4QiAvKiBXS1NPQXV0aG9yaXphdGlv
bkRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU09BdXRob3Jp
emF0aW9uRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdGRDMxNzIy
MkIzNTE0ODAwOEQwRThCIC8qIFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NDcyLDYgKzc0ODUsNyBAQAogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJRTNDQUFBNDMyNDEzMjc4QTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBw
b3J0U1BJLmggKi8sCiAJCQkJNTcyRUJCREMyNTM5MjE4MTAwMDU1MkIzIC8qIEFwcEF0dGVzdFNQ
SS5oICovLAorCQkJCTU3RkFCQjBFMjU4MTdDRjAwMDU5REM5NSAvKiBBdXRoZW50aWNhdGlvblNl
cnZpY2VzQ29yZVNQSS5oICovLAogCQkJCTFBNTcwNTEwMUJFNDEwRTUwMDg3NEFGMSAvKiBCbG9j
a1NQSS5oICovLAogCQkJCUU1MDYyMDkxMjU0MjEwMjAwMEM0MzA5MSAvKiBDb250YWN0c1VJU1BJ
LmggKi8sCiAJCQkJMzdDMjFDQUQxRTk5NEMwQzAwMjlENUY5IC8qIENvcmVQcmVkaWN0aW9uU1BJ
LmggKi8sCkBAIC04NTg4LDYgKzg2MDIsMTAgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTU3MkVC
QkQ5MjUzOEY2QTEwMDA1NTJCMyAvKiBBcHBBdHRlc3RJbnRlcm5hbFNvZnRMaW5rLmggKi8sCiAJ
CQkJNTcyRUJCRDgyNTM4RjZBMTAwMDU1MkIzIC8qIEFwcEF0dGVzdEludGVybmFsU29mdExpbmsu
bW0gKi8sCisJCQkJNTdGQUJCMTAyNTgxODI3QzAwNTlEQzk1IC8qIEF1dGhlbnRpY2F0aW9uU2Vy
dmljZXNDb3JlU29mdExpbmsuaCAqLywKKwkJCQk1N0ZBQkIxMTI1ODE4MjdDMDA1OURDOTUgLyog
QXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5tbSAqLywKKwkJCQk1Nzc3Mzk4RjI1
ODAzNzQzMDA1OTM0OEIgLyogQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmggKi8s
CisJCQkJNTc3NzM5OTAyNTgwMzc0MzAwNTkzNDhCIC8qIEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJD
b29yZGluYXRvci5tbSAqLywKIAkJCQk1N0FDOEY0RTIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29u
bmVjdGlvbi5oICovLAogCQkJCTU3QUM4RjRGMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0
aW9uLm1tICovLAogCQkJCTU3NzJGMjA0MjE3REJENkEwMDU2QkYyQyAvKiBIaWRTZXJ2aWNlLmgg
Ki8sCkBAIC04NjA4LDYgKzg2MjYsOCBAQAogCQkJCTU3MERBQUFEMjMwMjZGNUMwMEU4RkMwNCAv
KiBOZmNTZXJ2aWNlLm1tICovLAogCQkJCTU3N0ZGNzgzMjM0NkVDQUEwMDRFREZCOSAvKiBXZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggKi8sCiAJCQkJNTc3RkY3ODQyMzQ2RUNBQTAwNEVE
RkI5IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0gKi8sCisJCQkJNTc3NzM5OTMy
NTgwMzg4RjAwNTkzNDhCIC8qIFdLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlLmgg
Ki8sCisJCQkJNTc3NzM5OTQyNTgwMzg4RjAwNTkzNDhCIC8qIFdLQVNDQXV0aG9yaXphdGlvblBy
ZXNlbnRlckRlbGVnYXRlLm1tICovLAogCQkJCTU3MERBQUM0MjMwMzdGN0UwMEU4RkMwNCAvKiBX
S05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggKi8sCiAJCQkJNTcwREFBQzUyMzAzN0Y3RTAwRThG
QzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0gKi8sCiAJCQkpOwpAQCAtMTEyNDMs
OCArMTEyNjMsMTEgQEAKIAkJCQk1MTJGNTg5OTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThFOEVGOTE2QjIw
OTFDMDBFOTE0MjkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTJGNThBMzEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3RkFCQjEyMjU4MTgyN0MwMDU5REM5NSAvKiBBdXRo
ZW50aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0ZB
QkIwRjI1ODE3Q0YwMDA1OURDOTUgLyogQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3RENFREIxMjE0QzYwNDgwMDE2Qjg0NyAvKiBBdXRoZW50aWNh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURBRjIxNEM2MDNCMDAxNkI4NDcgLyogQXV0
aGVudGljYXRvck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3NzczOTkxMjU4MDM3NDMw
MDU5MzQ4QiAvKiBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3RENFREIwMjE0QzYwNDIwMDE2Qjg0NyAvKiBBdXRoZW50aWNhdG9yVHJhbnNw
b3J0U2VydmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk1NUE2RUYxQzc5ODEwODAwRUI2QTkz
IC8qIEF1dG9tYXRpb24uanNvbiBpbiBIZWFkZXJzICovLAogCQkJCTk5NTVBNkY1MUM3OTg2RTAw
MEVCNkE5MyAvKiBBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywK
QEAgLTExOTYzLDYgKzExOTg2LDcgQEAKIAkJCQk1MTJFMzRFNTEzMEI0RDA1MDBBQkQxOUEgLyog
V0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEzREM2ODIy
MDdBQTZCMjAwNjZFRjcyIC8qIFdLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM0MDc1RjQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLQXJyYXkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTU3NzczOTk1MjU4MDM4OEYwMDU5MzQ4QiAvKiBXS0FTQ0F1dGhvcml6
YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4RjYxMkE4
OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxMkY1OEY4MTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdDNEMwOEQxODE0QUM1QzAwMzY4OEI5
IC8qIFdLQmFja0ZvcndhcmRMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTEyNjcyLDYgKzEyNjk2
LDcgQEAKIAkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJNTdGQUJCMTQyNTgxODgyMzAwNTlE
Qzk1IC8qIFNvdXJjZXNDb2NvYS50eHQgaW4gUmVzb3VyY2VzICovLAogCQkJCUUxRDI2QTUzMTc1
OTY0RDkwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vzcy54aWIgaW4gUmVzb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTMz
MjAsNiArMTMzNDUsNyBAQAogCQkJCUNENDU3MEQ0MjQ0MTFEMEYwMEEzRENFQiAvKiBBdWRpb1Nl
c3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDQ1NzBEMzI0
NDExM0I1MDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJGNThBMjEyQTg4M0FEMDA2Mjk1
MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTU3RkFCQjEzMjU4MTgyN0MwMDU5REM5NSAvKiBBdXRoZW50aWNhdGlvblNlcnZp
Y2VzQ29yZVNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTk1NUE2RjQxQzc5ODZEQzAw
RUI2QTkzIC8qIEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTkyNDlBRDUxRjFGMUU1NjAwQjYyRkJCIC8qIEF1dG9tYXRpb25Gcm9udGVuZERpc3Bh
dGNoZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5NTVBNkY2MUM3OTg2RTMwMEVCNkE5MyAv
KiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQxNmIyZDFiNmRhOWJm
ZDg3MTIxMjNkNTYyZDk1YjhhMjliYzA2ZDIuLjk1ZmY2ZTBlODM0OTVhYzg1ZGRlODIwNTQxODUy
NzcyZDRlZGU5MjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0xMi0wOSAgSmlld2VuIFRhbiAgPGppZXdlbl90
YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gQWRvcHQgbmV3IFVJIGZvciB0aGUg
U2VjdXJpdHkgS2V5IG1ha2VDcmVkZW50aWFsIGZsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTcwOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzIxNTQ3MzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBBZGp1c3Rl
ZCB0byB0aGUgbmV3IGJlaGF2aW9yLgorCiAyMDIwLTEyLTA4ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb25jdXJyZW50IERpc3BsYXkgTGlzdHNd
IEFkZCBhIHdheSBmb3IgZGlzcGxheSBsaXN0IGNsaWVudHMgdG8gZ2V0IG1pc3NpbmcgY2FjaGVk
IHJlc291cmNlIGlkZW50aWZpZXJzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0K
aW5kZXggMDgxOTE3ZDMxMDgzNDJhZTRjOGFlYmY1NzgzOTQ3NTY3NTNhOGNkMi4uYTcwZjNkYWJk
Y2YwODJmY2MwNWU1NDA0NTllNGJiZWU5YmIxY2QyMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbQpAQCAtMzkwLDcgKzM5MCw4IEBAIHZvaWQgY2xlYW5VcEtleWNoYWluKGNv
bnN0IFN0cmluZyYgcnBJZCkKIAogfSAvLyBuYW1lc2FwY2U7CiAKLVRFU1QoV2ViQXV0aGVudGlj
YXRpb25QYW5lbCwgTm9QYW5lbFRpbWVvdXQpCisjaWYgSEFWRShORUFSX0ZJRUxEKQorVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBOb1BhbmVsTmZjU3VjY2VlZCkKIHsKICAgICBSZXRhaW5Q
dHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtNDAw
LDggKzQwMSw5IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTm9QYW5lbFRpbWVvdXQp
CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKIAogICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVS
TC5nZXQoKV1dOwotICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiT3BlcmF0aW9uIHRpbWVk
IG91dC4iXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKIH0K
KyNlbmRpZgogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE5vUGFuZWxIaWRTdWNjZXNz
KQogewo=
</data>
<flag name="commit-queue"
          id="433166"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>