<?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>131483</bug_id>
          
          <creation_ts>2014-04-10 01:08:58 -0700</creation_ts>
          <short_desc>[EFL][WK2] Implement web notification.</short_desc>
          <delta_ts>2014-06-23 21:32:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="SangYong Park">sy302.park</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>999467</commentid>
    <comment_count>0</comment_count>
    <who name="SangYong Park">sy302.park</who>
    <bug_when>2014-04-10 01:08:58 -0700</bug_when>
    <thetext>Implement webkit2 EFL APIs of web notification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999477</commentid>
    <comment_count>1</comment_count>
      <attachid>229033</attachid>
    <who name="SangYong Park">sy302.park</who>
    <bug_when>2014-04-10 01:53:12 -0700</bug_when>
    <thetext>Created attachment 229033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999778</commentid>
    <comment_count>2</comment_count>
      <attachid>229033</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2014-04-10 21:57:16 -0700</bug_when>
    <thetext>Comment on attachment 229033
Patch

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

API unit test should be added.(maybe in other bug.)

&gt; Source/WebKit2/UIProcess/API/efl/ewk_notification.cpp:55
&gt; +    m_ewkView = 0;

s/0/nullptr

&gt; Source/WebKit2/UIProcess/API/efl/ewk_notification_permission_request_private.h:51
&gt; +    explicit EwkNotificationPermissionRequest(WKNotificationPermissionRequestRef, WKSecurityOriginRef);

We do not need *explicit* keyword here.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_notification_private.h:64
&gt; +    explicit EwkNotification(WKNotificationRef, EwkView*);

We do not need *explicit* keyword here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999797</commentid>
    <comment_count>3</comment_count>
      <attachid>229033</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-04-10 22:42:02 -0700</bug_when>
    <thetext>Comment on attachment 229033
Patch

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

Good. I commented bit.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:83
&gt; +#if ENABLE(NOTIFICATIONS)
&gt; +    , m_notificationProvider(std::make_unique&lt;NotificationProvider&gt;(context))
&gt; +#endif

How about creating it as lazy as possible?

And, should we add it in not ewk_view but ewk_context ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_notification.cpp:51
&gt; +{ }

We use different line for }

&gt; Source/WebKit2/UIProcess/efl/NotificationProvider.h:39
&gt; +class NotificationProvider {

NotificationProviderEfl?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999817</commentid>
    <comment_count>4</comment_count>
      <attachid>229033</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-04-11 00:36:59 -0700</bug_when>
    <thetext>Comment on attachment 229033
Patch

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

I think this patch needs to be reviewed for a long time because patch is too huge. :(

&gt; Source/WebKit/efl/ChangeLog:3
&gt; +        [EFL][WK2] Implement web notification.

It would be good if you add [WK1] prefix as well.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_notification.h:58
&gt; + *         save yourself from cpu cycles and use eina_stringshare_ref()

I don&apos;t understand why this return type can be guaranteed by eina_stringshare. is the return char* protected by eina_stringshare_add() ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_notification.h:61
&gt; +EAPI const char *ewk_notification_title_get(const Ewk_Notification *notification);

Any unit test for this new APIs ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_notification.h:128
&gt; + * @return the security origin object or @c NULL if there is not security origin.

Do not use period at @return field.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_notification_permission_request.h:58
&gt; +EAPI Ewk_Security_Origin *ewk_notification_permission_request_security_origin_get(const Ewk_Notification_Permission_Request *permissionRequest);

Any unit test for this new APIs ?

permissionRequest -&gt; permission_request

&gt; Source/WebKit2/UIProcess/API/efl/ewk_notification_permission_request.h:66
&gt; +EAPI void ewk_notification_permission_request_allowed_set(Ewk_Notification_Permission_Request *permissionRequest, Eina_Bool allow);

ditto.

&gt; Source/WebKit2/UIProcess/efl/NotificationProvider.h:26
&gt; +#ifndef NotificationProvider_h

EFL port has used *Efl* post fix. Please use NotificaitonProviderEfl_h for file name as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002824</commentid>
    <comment_count>5</comment_count>
      <attachid>229867</attachid>
    <who name="SangYong Park">sy302.park</who>
    <bug_when>2014-04-21 23:34:56 -0700</bug_when>
    <thetext>Created attachment 229867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002834</commentid>
    <comment_count>6</comment_count>
    <who name="SangYong Park">sy302.park</who>
    <bug_when>2014-04-22 01:32:28 -0700</bug_when>
    <thetext>I will implement API and add unit test in additional patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009437</commentid>
    <comment_count>7</comment_count>
      <attachid>229867</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-05-14 21:14:43 -0700</bug_when>
    <thetext>Comment on attachment 229867
Patch

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

&gt; Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp:-451
&gt; -NotificationClient* ChromeClientEfl::notificationPresenter() const

Please remove this deprecated function in new bug.

&gt; Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.h:-117
&gt; -#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)

ditto.

&gt; Tools/Scripts/webkitperl/FeatureList.pm:351
&gt; +      define =&gt; &quot;ENABLE_NOTIFICATIONS&quot;, default =&gt; isEfl(), value =&gt; \$notificationsSupport },

I think we can enable this feature by default when implementation is finished.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009450</commentid>
    <comment_count>8</comment_count>
      <attachid>231491</attachid>
    <who name="SangYong Park">sy302.park</who>
    <bug_when>2014-05-14 22:27:40 -0700</bug_when>
    <thetext>Created attachment 231491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009451</commentid>
    <comment_count>9</comment_count>
      <attachid>229867</attachid>
    <who name="SangYong Park">sy302.park</who>
    <bug_when>2014-05-14 22:29:21 -0700</bug_when>
    <thetext>Comment on attachment 229867
Patch

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

&gt;&gt; Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp:-451
&gt;&gt; -NotificationClient* ChromeClientEfl::notificationPresenter() const
&gt; 
&gt; Please remove this deprecated function in new bug.

done

&gt;&gt; Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.h:-117
&gt;&gt; -#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
&gt; 
&gt; ditto.

done

&gt;&gt; Tools/Scripts/webkitperl/FeatureList.pm:351
&gt;&gt; +      define =&gt; &quot;ENABLE_NOTIFICATIONS&quot;, default =&gt; isEfl(), value =&gt; \$notificationsSupport },
&gt; 
&gt; I think we can enable this feature by default when implementation is finished.

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009457</commentid>
    <comment_count>10</comment_count>
      <attachid>231491</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-05-14 22:37:38 -0700</bug_when>
    <thetext>Comment on attachment 231491
Patch

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

&gt; Source/WebKit2/PlatformEfl.cmake:380
&gt; +    &quot;${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_notification.h&quot;

It would be good if you open this new API files when you finish the implementation.

&gt; Source/WebKit2/UIProcess/API/efl/EWebKit2.h:48
&gt; +#include &quot;ewk_notification.h&quot;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:78
&gt; +    , m_notificationProvider(std::make_unique&lt;NotificationProviderEfl&gt;(context))

Can I ask why you need to have ownership of m_notificationProvider ? If this is only for passing an pointer to WebCore side, I think we don&apos;t need to have this member variable and ownership.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017798</commentid>
    <comment_count>11</comment_count>
      <attachid>231491</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-06-23 18:33:46 -0700</bug_when>
    <thetext>Comment on attachment 231491
Patch

Cleared review? from attachment 231491 [details] so that this bug does not appear in http://webkit.org/pending-review. If you would like this patch reviewed, please attach it to a new bug or this bug again</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229033</attachid>
            <date>2014-04-10 01:53:12 -0700</date>
            <delta_ts>2014-04-21 23:34:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131483-20140410175248.patch</filename>
            <type>text/plain</type>
            <size>63716</size>
            <attacher name="SangYong Park">sy302.park</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggNTA0OTVmZmE2
ZDkzNjUwNWEwNWFiYjY0OGY4OGE1ZTc5OGQ3ZGMzYy4uMGZlZTYxZGMyYzEwZTdiNzNhMDk2NzE3
Mjg5MzViYzA2OWZjMzg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE0
LTA0LTEwICBTYW5nWW9uZyBQYXJrICA8c3kzMDIucGFya0BzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXVtXSzJdIEltcGxlbWVudCB3ZWIgbm90aWZpY2F0aW9uLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDgzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRFZmwuY3BwOiBCZWNhdXNlIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGlzIGRlbGV0ZWQg
ZnJvbSBDaHJvbWVDbGllbnQsIGRlbGV0ZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEVmbDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKKwogMjAxNC0wNC0wOCAgUnl1YW4gQ2hvaSAg
PHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwgYnVpbGQg
Zml4IGF0dGVtcHQgc2luY2UgcjE2Njk1NgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGEwNTY1MWFkMzJlY2YwMTI4
ZTY0ODI5MmVkNjY0NmFlNjM3ODAyZWQuLmY1N2M0Y2Q3NjZlZGU0NmI4N2M0Zjk2YmVkYzNiYmMy
MTk5NjhjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxNC0wNC0xMCAgU2FuZ1lv
bmcgUGFyayAgPHN5MzAyLnBhcmtAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJ
bXBsZW1lbnQgd2ViIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMTQ4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZCBuZXcgc291cmNlL2hl
YWRlciBmaWxlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOiBJbmNs
dWRlIGhlYWRlciBmaWxlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2Fs
bGJhY2tzLmg6IEFkZCBjYWxsYmFjayB0eXBlLiAocmVxdWVzdCBub3RpZmljYXRpb24gcGVybWlz
c2lvbiwgc2hvdy9jYW5jZWwgbm90aWZpY2F0aW9uKQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0LmNwcDogQWRkIG5vdGlmaWNhdGlvbiBwcm92aWRlci4KKyAgICAgICAg
KEV3a0NvbnRleHQ6OkV3a0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a0NvbnRleHQ6Om5vdGlmaWNhdGlvblBy
b3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uLmNw
cDogQWRkZWQuIChld2sgbm90aWZpY2F0aW9uIEFQSXMpCisgICAgICAgIChFd2tOb3RpZmljYXRp
b246OkV3a05vdGlmaWNhdGlvbik6CisgICAgICAgIChFd2tOb3RpZmljYXRpb246OmludmFsaWRh
dGUpOgorICAgICAgICAoRXdrTm90aWZpY2F0aW9uOjp0aXRsZSk6CisgICAgICAgIChFd2tOb3Rp
ZmljYXRpb246OmJvZHkpOgorICAgICAgICAoRXdrTm90aWZpY2F0aW9uOjppY29uVVJMKToKKyAg
ICAgICAgKEV3a05vdGlmaWNhdGlvbjo6dGFnKToKKyAgICAgICAgKEV3a05vdGlmaWNhdGlvbjo6
bGFuZyk6CisgICAgICAgIChFd2tOb3RpZmljYXRpb246OmRpcik6CisgICAgICAgIChFd2tOb3Rp
ZmljYXRpb246OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKEV3a05vdGlmaWNhdGlvbjo6aWQp
OgorICAgICAgICAoRXdrTm90aWZpY2F0aW9uOjp3YXNTaG93bik6CisgICAgICAgIChFd2tOb3Rp
ZmljYXRpb246Ondhc0NsaWNrZWQpOgorICAgICAgICAoRXdrTm90aWZpY2F0aW9uOjp3YXNDbG9z
ZWQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl90aXRsZV9nZXQpOgorICAgICAgICAoZXdr
X25vdGlmaWNhdGlvbl9ib2R5X2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2ljb25f
dXJsX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3RhZ19nZXQpOgorICAgICAgICAo
ZXdrX25vdGlmaWNhdGlvbl9sYW5nX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Rp
cl9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9zZWN1cml0eV9vcmlnaW5fZ2V0KToK
KyAgICAgICAgKGV3a19ub3RpZmljYXRpb25faWRfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmlj
YXRpb25fd2FzX3Nob3duKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fd2FzX2NsaWNrZWQp
OgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl93YXNfY2xvc2VkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0LmNwcDogQWRk
ZWQuIChld2sgbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdCBBUElzKQorICAgICAgICAo
RXdrTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkV3a05vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0KToKKyAgICAgICAgKEV3a05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Ojpz
ZWN1cml0eU9yaWdpbik6CisgICAgICAgIChFd2tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dDo6c2V0QWxsb3dlZCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVx
dWVzdF9zZWN1cml0eV9vcmlnaW5fZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcGVy
bWlzc2lvbl9yZXF1ZXN0X2FsbG93ZWRfc2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9w
cml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoRXdrTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3Q6OmNyZWF0ZSk6CisgICAgICAgIChFd2tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6
cGVybWlzc2lvblNlbGVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbm90
aWZpY2F0aW9uX3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChFd2tOb3RpZmljYXRpb246OmNy
ZWF0ZSk6CisgICAgICAgIChFd2tOb3RpZmljYXRpb246OmV3a1ZpZXcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwOiBBZGRlZC4gKEltcGxlbWVudCBu
b3RpZmljYXRpb24gcHJvdmlkZXIgZm9yIGVmbCkKKyAgICAgICAgKHRvTm90aWZpY2F0aW9uUHJv
dmlkZXIpOgorICAgICAgICAoTm90aWZpY2F0aW9uUHJvdmlkZXI6Ok5vdGlmaWNhdGlvblByb3Zp
ZGVyKToKKyAgICAgICAgKE5vdGlmaWNhdGlvblByb3ZpZGVyOjp+Tm90aWZpY2F0aW9uUHJvdmlk
ZXIpOgorICAgICAgICAoTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3cpOgorICAgICAgICAoTm90
aWZpY2F0aW9uUHJvdmlkZXI6OmNhbmNlbCk6CisgICAgICAgIChOb3RpZmljYXRpb25Qcm92aWRl
cjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbik6CisgICAgICAgIChOb3RpZmljYXRpb25Qcm92aWRl
cjo6Y2xlYXJOb3RpZmljYXRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL05vdGlmaWNh
dGlvblByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOb3RpZmljYXRpb25Qcm92
aWRlcjo6bm90aWZpY2F0aW9uTWFuYWdlcik6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdl
VUlDbGllbnRFZmwuY3BwOiBJbXBsZW1lbnQgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QgY2FsbGJhY2sgb2YgcGFnZSB1aSBjbGllbnQuCisgICAgICAgIChXZWJL
aXQ6OlBhZ2VVSUNsaWVudEVmbDo6UGFnZVVJQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZVVJQ2xpZW50RWZsOjpkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaDoKKwogMjAx
NC0wNC0wOSAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IGJ1aWxkIGZhaWx1cmUgd2hlbiAjaWYgVVNFKFhQQ19TRVJWSUNFUykgaXMgZmFsc2UuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNw
cAppbmRleCAxNGFiMTEzMDNkNTA3MzU3NGEzNDJjOGRiYzQ1ZDUzMDI1MDE5ZWNjLi43N2ZiYWMw
OTY5ZjRhZDE5OWMzNjRiNmJhMTVmYjFkM2I2MmQzNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTQ0NywxNCAr
NDQ3LDYgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFt
ZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2UKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLU5vdGlmaWNh
dGlvbkNsaWVudCogQ2hyb21lQ2xpZW50RWZsOjpub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25z
dAotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQog
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogUGFzc093blB0cjxDb2xvckNob29zZXI+IENo
cm9tZUNsaWVudEVmbDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCogY29s
b3JDaG9vc2VyQ2xpZW50LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmggYi9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAppbmRleCA2
NjJiNTkxNjdiN2Q5NzMwMTk2MjY5Zjk1NjUxMmIxZmQzYmNkYjUwLi5mN2NiZTUwYTdjMTZhZWJh
NjQ3YTcwYjdmMjgxZDk5YjRiNDkyYmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaApAQCAtMTE0LDEwICsxMTQsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSosIGNvbnN0
IFN0cmluZyYsIERhdGFiYXNlRGV0YWlscykgb3ZlcnJpZGU7CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgdmly
dHVhbCBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQqIG5vdGlmaWNhdGlvblByZXNlbnRlcigp
IGNvbnN0IG92ZXJyaWRlOwotI2VuZGlmCi0KICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFw
cENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGlu
dDY0X3QgdG90YWxTcGFjZU5lZWRlZCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UKaW5kZXggZjBkZTliYmE1ZDYyODkyM2QxYzY2NjA0MmM3MmIzZGFhNjgxYWE2ZS4uY2MyNDBh
MTlmM2QyOTVkNTZlOTAzNjg2ODc4ZGJmZGM0NWFmNTRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKQEAgLTk1LDYgKzk1LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X25hdmlnYXRpb25fZGF0YS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlv
bl9wb2xpY3lfZGVjaXNpb24uY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNh
dGlvbi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Np
b25fcmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0LmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wb3B1cF9tZW51LmNwcApAQCAtMTQyLDYgKzE0NCw3IEBAIGxpc3QoQVBQRU5EIFdl
YktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL0lucHV0TWV0aG9kQ29udGV4dEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZs
L05ldHdvcmtJbmZvUHJvdmlkZXIuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9Ob3RpZmljYXRpb25Q
cm92aWRlci5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcAogICAg
IFVJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZs
L1BhZ2VVSUNsaWVudEVmbC5jcHAKQEAgLTM3Niw2ICszNzksOCBAQCBzZXQoRVdlYktpdDJfSEVB
REVSUwogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX21haW4uaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19uYXZpZ2F0aW9uX2RhdGEuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5o
IgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X25vdGlmaWNhdGlvbi5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QuaCIKICAgICAi
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19vYmplY3Qu
aCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19wYWdlX2dyb3VwLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggYTljOGExNGU3OGIxZmVlNjkxOTU5Y2QyY2I3MmE1MDVl
ZmRiZTYzOS4uMmUxZTk5NjdhN2NjMDYxNGJlN2U5NmJmNTZiMjgwMmEyN2ZmYjE2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC00NSw2ICs0NSw4
IEBACiAjaW5jbHVkZSAiZXdrX21haW4uaCIKICNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9kYXRh
LmgiCiAjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCisjaW5jbHVk
ZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb25fcGVybWlz
c2lvbl9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX29iamVjdC5oIgogI2luY2x1ZGUgImV3a19w
YWdlX2dyb3VwLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnUuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaAppbmRleCA3OGMz
MDRkM2ZiMGU4ZGQ5MzFkODAxZjQ4MDEzMTc5MGJlOGY1ZWZhLi5mMTIzZDBlNzFlNTIzNDMxYjg5
ZmE4MmU4YmU5NTQxNjI0MmI4MWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oCkBAIC0zOSw2ICszOSw4IEBAIHR5cGVkZWYg
c3RydWN0IEV3a09iamVjdCBFd2tfRG93bmxvYWRfSm9iOwogdHlwZWRlZiBzdHJ1Y3QgRXdrT2Jq
ZWN0IEV3a19GaWxlX0Nob29zZXJfUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0IEV3a09iamVjdCBF
d2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3Q7CiB0eXBlZGVmIHN0cnVjdCBFd2tPYmplY3QgRXdr
X05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uOwordHlwZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3
a19Ob3RpZmljYXRpb247Cit0eXBlZGVmIHN0cnVjdCBFd2tPYmplY3QgRXdrX05vdGlmaWNhdGlv
bl9QZXJtaXNzaW9uX1JlcXVlc3Q7CiB0eXBlZGVmIHN0cnVjdCBFd2tFcnJvciBFd2tfRXJyb3I7
CiAKIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tzIHsKQEAgLTY1LDYgKzY3LDkgQEAgZW51bSBD
YWxsYmFja1R5cGUgewogICAgIFN0YXR1c0JhclZpc2libGUsCiAgICAgTmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uLAogICAgIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uLAorICAgIE5vdGlmaWNhdGlv
bkNhbmNlbCwKKyAgICBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKKyAgICBOb3RpZmlj
YXRpb25TaG93LAogICAgIFRleHRGb3VuZCwKICAgICBUaXRsZUNoYW5nZSwKICAgICBUb29sYmFy
VmlzaWJsZSwKQEAgLTE3NCw2ICsxNzksOSBAQCBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKFBy
b3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCB2bwogREVD
TEFSRV9FV0tfVklFV19DQUxMQkFDSyhNZW51QmFyVmlzaWJsZSwgIm1lbnViYXIsdmlzaWJsZSIs
IGJvb2wqKTsKIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uLCAicG9saWN5LGRlY2lzaW9uLG5hdmlnYXRpb24iLCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lf
RGVjaXNpb24qKTsKIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soTmV3V2luZG93UG9saWN5RGVj
aXNpb24sICJwb2xpY3ksZGVjaXNpb24sbmV3LHdpbmRvdyIsIEV3a19OYXZpZ2F0aW9uX1BvbGlj
eV9EZWNpc2lvbiopOworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhOb3RpZmljYXRpb25DYW5j
ZWwsICJub3RpZmljYXRpb24sY2FuY2VsIiwgRXdrX05vdGlmaWNhdGlvbiopOworREVDTEFSRV9F
V0tfVklFV19DQUxMQkFDSyhOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwgIm5vdGlmaWNh
dGlvbixwZXJtaXNzaW9uLHJlcXVlc3QiLCBFd2tfTm90aWZpY2F0aW9uX1Blcm1pc3Npb25fUmVx
dWVzdCopOworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhOb3RpZmljYXRpb25TaG93LCAibm90
aWZpY2F0aW9uLHNob3ciLCBFd2tfTm90aWZpY2F0aW9uKik7CiBERUNMQVJFX0VXS19WSUVXX0NB
TExCQUNLKFN0YXR1c0JhclZpc2libGUsICJzdGF0dXNiYXIsdmlzaWJsZSIsIGJvb2wqKTsKIERF
Q0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soVGV4dEZvdW5kLCAidGV4dCxmb3VuZCIsIHVuc2lnbmVk
Kik7CiBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKFRpdGxlQ2hhbmdlLCAidGl0bGUsY2hhbmdl
ZCIsIGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcAppbmRleCA4NzgxOGRkMjI3MWZjNDBjYTAzOTIwYjlhNDA4YTBmZjI2
ODVlZTAzLi5hOTQzNzExOGFmYzQzYjI2NzNiYjNmN2M2OGIxODhiNDRhOGVjZDI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC0y
NSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuaCIKICNpbmNs
dWRlICJEb3dubG9hZE1hbmFnZXJFZmwuaCIKICNpbmNsdWRlICJOZXR3b3JrSW5mb1Byb3ZpZGVy
LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJSZXF1ZXN0
TWFuYWdlckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldL
Q29udGV4dFByaXZhdGUuaCIKQEAgLTc3LDYgKzc4LDkgQEAgRXdrQ29udGV4dDo6RXdrQ29udGV4
dChXS0NvbnRleHRSZWYgY29udGV4dCkKICAgICAsIG1fZG93bmxvYWRNYW5hZ2VyKHN0ZDo6bWFr
ZV91bmlxdWU8RG93bmxvYWRNYW5hZ2VyRWZsPihjb250ZXh0KSkKICAgICAsIG1fcmVxdWVzdE1h
bmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxSZXF1ZXN0TWFuYWdlckNsaWVudEVmbD4oY29u
dGV4dCkpCiAgICAgLCBtX2hpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0SGlz
dG9yeUNsaWVudEVmbD4oY29udGV4dCkpCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAg
LCBtX25vdGlmaWNhdGlvblByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uUHJv
dmlkZXI+KGNvbnRleHQpKQorI2VuZGlmCiAgICAgLCBtX2pzR2xvYmFsQ29udGV4dChudWxscHRy
KQogewogICAgIENvbnRleHRNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBjb250ZXh0TWFwKCkuYWRk
KGNvbnRleHQsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCmluZGV4IGQwN2Y1YjUxNjViYWFmOTNiMGZhYWNi
YjY5Yjg5N2I5M2M1YjMxMTQuLjdiYWM2ZWUzNzlkZmZmYzJkNjg4NTU5NmM2NzgyMWUxODk0MGYw
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250
ZXh0X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dF9wcml2YXRlLmgKQEAgLTQ0LDYgKzQ0LDkgQEAgY2xhc3MgQmF0dGVyeVByb3ZpZGVy
OwogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiBjbGFzcyBOZXR3b3JrSW5mb1Byb3ZpZGVyOwog
I2VuZGlmCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitjbGFzcyBOb3RpZmljYXRpb25Qcm92
aWRlcjsKKyNlbmRpZgogfQogCiBjbGFzcyBFd2tDb250ZXh0IDogcHVibGljIEV3a09iamVjdCB7
CkBAIC0xMDIsNiArMTA1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGVDYWxsYmFjayhFd2tfQ29udGV4dF9NZXNzYWdlX0Zyb21fSW5qZWN0ZWRfQnVu
ZGxlX0NiLCB2b2lkKik7CiAgICAgdm9pZCBwcm9jZXNzUmVjZWl2ZWRNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHks
IFdLVHlwZVJlZiogcmV0dXJuRGF0YSk7CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAg
ICBXZWJLaXQ6Ok5vdGlmaWNhdGlvblByb3ZpZGVyKiBub3RpZmljYXRpb25Qcm92aWRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUHJvdmlkZXIuZ2V0KCk7IH0KKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IEV3a0NvbnRleHQoV0tDb250ZXh0UmVmKTsKIApAQCAtMTI1
LDYgKzEzMiwxMCBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6Q29u
dGV4dEhpc3RvcnlDbGllbnRFZmw+IG1faGlzdG9yeUNsaWVudDsKIAorI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6Ok5vdGlmaWNhdGlvblByb3Zp
ZGVyPiBtX25vdGlmaWNhdGlvblByb3ZpZGVyOworI2VuZGlmCisKICAgICBKU0dsb2JhbENvbnRl
eHRSZWYgbV9qc0dsb2JhbENvbnRleHQ7CiAKICAgICBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yYmUxMTA4ZDgwOWEwODM3OTA1YzA3ODJmNjA4ZjRiOWRiYzkyNmNiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlv
bi5jcHAKQEAgLTAsMCArMSwyMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3Vu
ZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKwor
I2luY2x1ZGUgIkV3a1ZpZXcuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25Qcm92aWRlci5oIgor
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLTm90aWZpY2F0aW9uLmgiCisjaW5j
bHVkZSAiV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNp
bmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlv
bl9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0V3a05vdGlmaWNhdGlvbjo6RXdrTm90aWZpY2F0
aW9uKFdLTm90aWZpY2F0aW9uUmVmIHdrTm90aWZpY2F0aW9uLCBFd2tWaWV3KiBld2tWaWV3KQor
ICAgIDogbV93a05vdGlmaWNhdGlvbih3a05vdGlmaWNhdGlvbikKKyAgICAsIG1fZXdrVmlldyhl
d2tWaWV3KQorICAgICwgbV90aXRsZShBZG9wdFdLLCBXS05vdGlmaWNhdGlvbkNvcHlUaXRsZSh3
a05vdGlmaWNhdGlvbikpCisgICAgLCBtX2JvZHkoQWRvcHRXSywgV0tOb3RpZmljYXRpb25Db3B5
Qm9keShtX3drTm90aWZpY2F0aW9uLmdldCgpKSkKKyAgICAsIG1faWNvblVSTChBZG9wdFdLLCBX
S05vdGlmaWNhdGlvbkNvcHlJY29uVVJMKG1fd2tOb3RpZmljYXRpb24uZ2V0KCkpKQorICAgICwg
bV90YWcoQWRvcHRXSywgV0tOb3RpZmljYXRpb25Db3B5VGFnKG1fd2tOb3RpZmljYXRpb24uZ2V0
KCkpKQorICAgICwgbV9sYW5nKEFkb3B0V0ssIFdLTm90aWZpY2F0aW9uQ29weUxhbmcobV93a05v
dGlmaWNhdGlvbi5nZXQoKSkpCisgICAgLCBtX2RpcihBZG9wdFdLLCBXS05vdGlmaWNhdGlvbkNv
cHlEaXIobV93a05vdGlmaWNhdGlvbi5nZXQoKSkpCisgICAgLCBtX3NlY3VyaXR5T3JpZ2luKEV3
a1NlY3VyaXR5T3JpZ2luOjpjcmVhdGUoV0tOb3RpZmljYXRpb25HZXRTZWN1cml0eU9yaWdpbiht
X3drTm90aWZpY2F0aW9uLmdldCgpKSkpCit7IH0KKwordm9pZCBFd2tOb3RpZmljYXRpb246Omlu
dmFsaWRhdGUoKQoreworICAgIG1fZXdrVmlldyA9IDA7Cit9CisKK2NvbnN0IGNoYXIqIEV3a05v
dGlmaWNhdGlvbjo6dGl0bGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3RpdGxlOworfQorCitj
b25zdCBjaGFyKiBFd2tOb3RpZmljYXRpb246OmJvZHkoKSBjb25zdAoreworICAgIHJldHVybiBt
X2JvZHk7Cit9CisKK2NvbnN0IGNoYXIqIEV3a05vdGlmaWNhdGlvbjo6aWNvblVSTCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faWNvblVSTDsKK30KKworY29uc3QgY2hhciogRXdrTm90aWZpY2F0
aW9uOjp0YWcoKSBjb25zdAoreworICAgIHJldHVybiBtX3RhZzsKK30KKworY29uc3QgY2hhciog
RXdrTm90aWZpY2F0aW9uOjpsYW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYW5nOworfQor
Citjb25zdCBjaGFyKiBFd2tOb3RpZmljYXRpb246OmRpcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZGlyOworfQorCitFd2tTZWN1cml0eU9yaWdpbiogRXdrTm90aWZpY2F0aW9uOjpzZWN1cml0
eU9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCk7Cit9
CisKK3VpbnQ2NF90IEV3a05vdGlmaWNhdGlvbjo6aWQoKSBjb25zdAoreworICAgIHJldHVybiBX
S05vdGlmaWNhdGlvbkdldElEKG1fd2tOb3RpZmljYXRpb24uZ2V0KCkpOworfQorCit2b2lkIEV3
a05vdGlmaWNhdGlvbjo6d2FzU2hvd24oKSBjb25zdAoreworICAgIGlmICghbV9ld2tWaWV3KQor
ICAgICAgICByZXR1cm47CisKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgd2tNYW5hZ2Vy
ID0gbV9ld2tWaWV3LT5ld2tDb250ZXh0KCktPm5vdGlmaWNhdGlvblByb3ZpZGVyKCktPm5vdGlm
aWNhdGlvbk1hbmFnZXIoKTsKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFNo
b3dOb3RpZmljYXRpb24od2tNYW5hZ2VyLCBXS05vdGlmaWNhdGlvbkdldElEKG1fd2tOb3RpZmlj
YXRpb24uZ2V0KCkpKTsKK30KKwordm9pZCBFd2tOb3RpZmljYXRpb246Ondhc0NsaWNrZWQoKSBj
b25zdAoreworICAgIGlmICghbV9ld2tWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBXS05v
dGlmaWNhdGlvbk1hbmFnZXJSZWYgd2tNYW5hZ2VyID0gbV9ld2tWaWV3LT5ld2tDb250ZXh0KCkt
Pm5vdGlmaWNhdGlvblByb3ZpZGVyKCktPm5vdGlmaWNhdGlvbk1hbmFnZXIoKTsKKyAgICBXS05v
dGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHdrTWFuYWdlciwg
V0tOb3RpZmljYXRpb25HZXRJRChtX3drTm90aWZpY2F0aW9uLmdldCgpKSk7Cit9CisKK3ZvaWQg
RXdrTm90aWZpY2F0aW9uOjp3YXNDbG9zZWQoKSBjb25zdAoreworICAgIGlmICghbV9ld2tWaWV3
KQorICAgICAgICByZXR1cm47CisKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgd2tNYW5h
Z2VyID0gbV9ld2tWaWV3LT5ld2tDb250ZXh0KCktPm5vdGlmaWNhdGlvblByb3ZpZGVyKCktPm5v
dGlmaWNhdGlvbk1hbmFnZXIoKTsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gYXJy
YXlJRHM7CisgICAgYXJyYXlJRHMuYXBwZW5kKEFQSTo6VUludDY0OjpjcmVhdGUoV0tOb3RpZmlj
YXRpb25HZXRJRChtX3drTm90aWZpY2F0aW9uLmdldCgpKSkpOworICAgIFdLTm90aWZpY2F0aW9u
TWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKHdrTWFuYWdlciwgdG9BUEkoQVBJ
OjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShhcnJheUlEcykpLmdldCgpKSk7Cit9CisKK2NvbnN0
IGNoYXIqIGV3a19ub3RpZmljYXRpb25fdGl0bGVfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbikKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihjb25zdCBF
d2tOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbiwgaW1wbCwgbnVsbHB0cik7CisKKyAgICByZXR1
cm4gaW1wbC0+dGl0bGUoKTsKK30KKworY29uc3QgY2hhciogZXdrX25vdGlmaWNhdGlvbl9ib2R5
X2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgRVdLX09C
Sl9HRVRfSU1QTF9PUl9SRVRVUk4oY29uc3QgRXdrTm90aWZpY2F0aW9uLCBub3RpZmljYXRpb24s
IGltcGwsIG51bGxwdHIpOworCisgICAgcmV0dXJuIGltcGwtPmJvZHkoKTsKK30KKworY29uc3Qg
Y2hhciogZXdrX25vdGlmaWNhdGlvbl9pY29uX3VybF9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uKQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0
IEV3a05vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLCBpbXBsLCBudWxscHRyKTsKKworICAgIHJl
dHVybiBpbXBsLT5pY29uVVJMKCk7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3RpZmljYXRpb25f
dGFnX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgRVdL
X09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oY29uc3QgRXdrTm90aWZpY2F0aW9uLCBub3RpZmljYXRp
b24sIGltcGwsIG51bGxwdHIpOworCisgICAgcmV0dXJuIGltcGwtPnRhZygpOworfQorCitjb25z
dCBjaGFyKiBld2tfbm90aWZpY2F0aW9uX2xhbmdfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbikKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihjb25zdCBF
d2tOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbiwgaW1wbCwgbnVsbHB0cik7CisKKyAgICByZXR1
cm4gaW1wbC0+bGFuZygpOworfQorCitjb25zdCBjaGFyKiBld2tfbm90aWZpY2F0aW9uX2Rpcl9n
ZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIEVXS19PQkpf
R0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a05vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLCBp
bXBsLCBudWxscHRyKTsKKworICAgIHJldHVybiBpbXBsLT5kaXIoKTsKK30KKworRXdrX1NlY3Vy
aXR5X09yaWdpbiogZXdrX25vdGlmaWNhdGlvbl9zZWN1cml0eV9vcmlnaW5fZ2V0KGNvbnN0IEV3
a19Ob3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBMX09S
X1JFVFVSTihjb25zdCBFd2tOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbiwgaW1wbCwgbnVsbHB0
cik7CisKKyAgICByZXR1cm4gaW1wbC0+c2VjdXJpdHlPcmlnaW4oKTsKK30KKwordWludDY0X3Qg
ZXdrX25vdGlmaWNhdGlvbl9pZF9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogbm90aWZpY2F0
aW9uKQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a05vdGlmaWNh
dGlvbiwgbm90aWZpY2F0aW9uLCBpbXBsLCAwKTsKKworICAgIHJldHVybiBpbXBsLT5pZCgpOwor
fQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fd2FzX3Nob3duKGNvbnN0IEV3a19Ob3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihjb25z
dCBFd2tOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbiwgaW1wbCk7CisKKyAgICBpbXBsLT53YXNT
aG93bigpOworfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fd2FzX2NsaWNrZWQoY29uc3QgRXdr
X05vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1Jf
UkVUVVJOKGNvbnN0IEV3a05vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLCBpbXBsKTsKKworICAg
IGltcGwtPndhc0NsaWNrZWQoKTsKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX3dhc19jbG9z
ZWQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIEVXS19PQkpf
R0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a05vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLCBp
bXBsKTsKKworICAgIGltcGwtPndhc0Nsb3NlZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2NzFi
Y2I4ZTJmM2MxNWYyNGIxZWRmMjE5ZGFhZGRkY2MwODc2OWIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uLmgKQEAgLTAs
MCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmlj
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBA
ZmlsZSAgICBld2tfbm90aWZpY2F0aW9uLmgKKyAqIEBicmllZiAgIFdlYiBOb3RpZmljYXRpb24g
QVBJLgorICoKKyAqIFdlYiBub3RpZmljYXRpb25zIGRlZmluZXMgYW4gQVBJIGZvciBlbmQtdXNl
ciBub3RpZmljYXRpb25zLgorICogQSBub3RpZmljYXRpb24gYWxsb3dzIGFsZXJ0aW5nIHRoZSB1
c2VyIG91dHNpZGUgdGhlIGNvbnRleHQgb2YgYSB3ZWIgcGFnZQorICogb2YgYW4gb2NjdXJyZW5j
ZSwgc3VjaCBhcyB0aGUgZGVsaXZlcnkgb2YgZW1haWwuCisgKi8KKworI2lmbmRlZiBld2tfbm90
aWZpY2F0aW9uX2gKKyNkZWZpbmUgZXdrX25vdGlmaWNhdGlvbl9oCisKKyNpbmNsdWRlICJld2tf
c2VjdXJpdHlfb3JpZ2luLmgiCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKworLyoqCisgKiBEZWNsYXJlIEV3a19Ob3RpZmljYXRpb24gYXMgRXdrX09iamVjdC4K
KyAqCisgKiBAc2VlIEV3a19PYmplY3QKKyAqLwordHlwZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3
a19Ob3RpZmljYXRpb247CisKKy8qKgorICogUmV0dXJucyB0aGUgdGl0bGUgb2YgdGhlIG5vdGlm
aWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gbm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiBvYmplY3QK
KyAqCisgKiBAcmV0dXJuIHRoZSB0aXRsZSBzdHJpbmcgcG9pbnRlciBvciBAYyBOVUxMIGlmIHRo
ZXJlIGlzIG5vdCBhIHRpdGxlLgorICogICAgICAgICBUaGlzIHBvaW50ZXIgaXMgZ3VhcmFudGVl
ZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAg
ICBzYXZlIHlvdXJzZWxmIGZyb20gY3B1IGN5Y2xlcyBhbmQgdXNlIGVpbmFfc3RyaW5nc2hhcmVf
cmVmKCkKKyAqICAgICAgICAgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yIHN0
cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19ub3RpZmljYXRpb25fdGl0bGVfZ2V0
KGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbik7CisKKy8qKgorICogUmV0dXJu
cyB0aGUgYm9keSBvZiB0aGUgbm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBub3RpZmljYXRp
b24gbm90aWZpY2F0aW9uIG9iamVjdAorICoKKyAqIEByZXR1cm4gdGhlIGJvZHkgc3RyaW5nIHBv
aW50ZXIgb3IgQGMgTlVMTCBpZiB0aGVyZSBpcyBub3QgYSBib2R5LgorICogICAgICAgICBUaGlz
IHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZl
ciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIGZyb20gY3B1IGN5Y2xlcyBhbmQg
dXNlIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkKKyAqICAgICAgICAgaW5zdGVhZCBvZiBlaW5hX3N0
cmluZ3NoYXJlX2FkZCgpIG9yIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19u
b3RpZmljYXRpb25fYm9keV9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9u
KTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBpY29uIFVSTCBvZiB0aGUgbm90aWZpY2F0aW9uLgor
ICoKKyAqIEBwYXJhbSBub3RpZmljYXRpb24gbm90aWZpY2F0aW9uIG9iamVjdAorICoKKyAqIEBy
ZXR1cm4gdGhlIGljb24gVVJMIHN0cmluZyBwb2ludGVyIG9yIEBjIE5VTEwgaWYgdGhlcmUgaXMg
bm90IGEgaWNvbiBVUkwuCisgKiAgICAgICAgIFRoaXMgcG9pbnRlciBpcyBndWFyYW50ZWVkIHRv
IGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisgKiAgICAgICAgIHNh
dmUgeW91cnNlbGYgZnJvbSBjcHUgY3ljbGVzIGFuZCB1c2UgZWluYV9zdHJpbmdzaGFyZV9yZWYo
KQorICogICAgICAgICBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3Igc3RyZHVw
KCkuCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX25vdGlmaWNhdGlvbl9pY29uX3VybF9nZXQo
Y29uc3QgRXdrX05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKTsKKworLyoqCisgKiBSZXR1cm5z
IHRoZSB0YWcgb2YgdGhlIG5vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gbm90aWZpY2F0aW9u
IG5vdGlmaWNhdGlvbiBvYmplY3QKKyAqCisgKiBAcmV0dXJuIHRoZSB0YWcgc3RyaW5nIHBvaW50
ZXIgb3IgQGMgTlVMTCBpZiB0aGVyZSBpcyBub3QgYSB0YWcuCisgKiAgICAgICAgIFRoaXMgcG9p
bnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBv
c3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91cnNlbGYgZnJvbSBjcHUgY3ljbGVzIGFuZCB1c2Ug
ZWluYV9zdHJpbmdzaGFyZV9yZWYoKQorICogICAgICAgICBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5n
c2hhcmVfYWRkKCkgb3Igc3RyZHVwKCkuCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX25vdGlm
aWNhdGlvbl90YWdfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbik7CisK
Ky8qKgorICogUmV0dXJucyB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIG5vdGlmaWNhdGlvbi4KKyAqCisg
KiBAcGFyYW0gbm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiBvYmplY3QKKyAqCisgKiBAcmV0dXJu
IHRoZSBsYW5ndWFnZSBzdHJpbmcgcG9pbnRlciBvciBAYyBOVUxMIGlmIHRoZXJlIGlzIG5vdCBh
IGxhbmd1YWdlLgorICogICAgICAgICBUaGlzIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBl
aW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlv
dXJzZWxmIGZyb20gY3B1IGN5Y2xlcyBhbmQgdXNlIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkKKyAq
ICAgICAgICAgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yIHN0cmR1cCgpLgor
ICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19ub3RpZmljYXRpb25fbGFuZ19nZXQoY29uc3QgRXdr
X05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBkaXJl
Y3Rpb24gb2YgdGhlIG5vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gbm90aWZpY2F0aW9uIG5v
dGlmaWNhdGlvbiBvYmplY3QKKyAqCisgKiBAcmV0dXJuIHRoZSBkaXJlY3Rpb24gc3RyaW5nIHBv
aW50ZXIgb3IgQGMgTlVMTCBpZiB0aGVyZSBpcyBub3QgYSBkaXJlY3Rpb24uCisgKiAgICAgICAg
IFRoaXMgcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdo
ZW5ldmVyIHBvc3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91cnNlbGYgZnJvbSBjcHUgY3ljbGVz
IGFuZCB1c2UgZWluYV9zdHJpbmdzaGFyZV9yZWYoKQorICogICAgICAgICBpbnN0ZWFkIG9mIGVp
bmFfc3RyaW5nc2hhcmVfYWRkKCkgb3Igc3RyZHVwKCkuCisgKi8KK0VBUEkgY29uc3QgY2hhciAq
ZXdrX25vdGlmaWNhdGlvbl9kaXJfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKm5vdGlmaWNh
dGlvbik7CisKKy8qKgorICogUmV0dXJucyB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBub3Rp
ZmljYXRpb24uCisgKgorICogQHBhcmFtIG5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gb2JqZWN0
CisgKgorICogQHJldHVybiB0aGUgc2VjdXJpdHkgb3JpZ2luIG9iamVjdCBvciBAYyBOVUxMIGlm
IHRoZXJlIGlzIG5vdCBzZWN1cml0eSBvcmlnaW4uCisgKi8KK0VBUEkgRXdrX1NlY3VyaXR5X09y
aWdpbiAqZXdrX25vdGlmaWNhdGlvbl9zZWN1cml0eV9vcmlnaW5fZ2V0KGNvbnN0IEV3a19Ob3Rp
ZmljYXRpb24gKm5vdGlmaWNhdGlvbik7CisKKy8qKgorICogUmV0dXJucyB0aGUgaWQgb2YgdGhl
IG5vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gbm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiBv
YmplY3QKKyAqCisgKiBAcmV0dXJuIHRoZSBpZCBvZiB0aGUgbm90aWZpY2F0aW9uLgorICovCitF
QVBJIHVpbnQ2NF90IGV3a19ub3RpZmljYXRpb25faWRfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRp
b24gKm5vdGlmaWNhdGlvbik7CisKKy8qKgorICogTm90aWZ5IHRoZSBub3RpZmljYXRpb24gdGhh
dCB3YXMgc2hvd24uCisgKgorICogQHBhcmFtIG5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gb2Jq
ZWN0CisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX3dhc19zaG93bihjb25zdCBFd2tf
Tm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pOworCisvKioKKyAqIE5vdGlmeSB0aGUgbm90aWZp
Y2F0aW9uIHRoYXQgd2FzIGNsaWNrZWQuCisgKgorICogQHBhcmFtIG5vdGlmaWNhdGlvbiBub3Rp
ZmljYXRpb24gb2JqZWN0CisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX3dhc19jbGlj
a2VkKGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbik7CisKKy8qKgorICogTm90
aWZ5IHRoZSBub3RpZmljYXRpb24gdGhhdCB3YXMgY2xvc2VkLgorICoKKyAqIEBwYXJhbSBub3Rp
ZmljYXRpb24gbm90aWZpY2F0aW9uIG9iamVjdAorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNh
dGlvbl93YXNfY2xvc2VkKGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbik7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfbm90aWZpY2F0
aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19u
b3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MGVlOGJkNTQ4ZWFiYjhiODY3ZGM5NWU3MDAzMzkyYzQ2M2RmNWU4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNh
dGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QuY3BwCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3
a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJXS05vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbl9w
ZXJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmln
aW5fcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitFd2tOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdDo6RXdrTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiB3a1Blcm1pc3Npb25SZXF1ZXN0LCBXS1Nl
Y3VyaXR5T3JpZ2luUmVmIHdrT3JpZ2luKQorICAgIDogbV93a1Blcm1pc3Npb25SZXF1ZXN0KHdr
UGVybWlzc2lvblJlcXVlc3QpCisgICAgLCBtX3NlY3VyaXR5T3JpZ2luKEV3a1NlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUod2tPcmlnaW4pKQoreyB9CisKK0V3a1NlY3VyaXR5T3JpZ2luKiBFd2tOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAoreworICAg
IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOworfQorCit2b2lkIEV3a05vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0OjpzZXRBbGxvd2VkKGJvb2wgYWxsb3cpCit7CisgICAgaWYgKCFt
X3drUGVybWlzc2lvblJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhbGxvdykK
KyAgICAgICAgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KG1fd2tQZXJtaXNz
aW9uUmVxdWVzdC5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBXS05vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0RGVueShtX3drUGVybWlzc2lvblJlcXVlc3QuZ2V0KCkpOworCisgICAgbV93
a1Blcm1pc3Npb25SZXF1ZXN0LmNsZWFyKCk7Cit9CisKK0V3a19TZWN1cml0eV9PcmlnaW4qIGV3
a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X3NlY3VyaXR5X29yaWdpbl9nZXQoY29u
c3QgRXdrX05vdGlmaWNhdGlvbl9QZXJtaXNzaW9uX1JlcXVlc3QqIHBlcm1pc3Npb25SZXF1ZXN0
KQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a05vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0LCBwZXJtaXNzaW9uUmVxdWVzdCwgaW1wbCwgbnVsbHB0cik7CisK
KyAgICByZXR1cm4gaW1wbC0+c2VjdXJpdHlPcmlnaW4oKTsKK30KKwordm9pZCBld2tfbm90aWZp
Y2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9hbGxvd2VkX3NldChFd2tfTm90aWZpY2F0aW9uX1Bl
cm1pc3Npb25fUmVxdWVzdCogcGVybWlzc2lvblJlcXVlc3QsIEVpbmFfQm9vbCBhbGxvdykKK3sK
KyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihFd2tOb3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdCwgcGVybWlzc2lvblJlcXVlc3QsIGltcGwpOworCisgICAgaW1wbC0+c2V0QWxsb3dl
ZChhbGxvdyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iOTYwMjU2YTcwYTVkYTg4YmI4OTc5NGMyYWY5MTE3ODA0ZjlmMTMwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlm
aWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX25vdGlmaWNhdGlv
bl9wZXJtaXNzaW9uX3JlcXVlc3QuaAorICogQGJyaWVmICAgUGVybWlzc2lvbiByZXF1ZXN0IEFQ
SSBmb3IgV2ViIE5vdGlmaWNhdGlvbi4KKyAqCisgKiBXZWIgbm90aWZpY2F0aW9ucyBkZWZpbmVz
IGFuIEFQSSBmb3IgZW5kLXVzZXIgbm90aWZpY2F0aW9ucy4KKyAqIEEgbm90aWZpY2F0aW9uIGFs
bG93cyBhbGVydGluZyB0aGUgdXNlciBvdXRzaWRlIHRoZSBjb250ZXh0IG9mIGEgd2ViIHBhZ2UK
KyAqIG9mIGFuIG9jY3VycmVuY2UsIHN1Y2ggYXMgdGhlIGRlbGl2ZXJ5IG9mIGVtYWlsLgorICov
CisKKyNpZm5kZWYgZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfaAorI2RlZmlu
ZSBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9oCisKKyNpbmNsdWRlICJld2tf
c2VjdXJpdHlfb3JpZ2luLmgiCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKworLyoqCisgKiBEZWNsYXJlIEV3a19Ob3RpZmljYXRpb25fUGVybWlzc2lvbl9SZXF1
ZXN0IGFzIEV3a19PYmplY3QuCisgKgorICogQHNlZSBFd2tfT2JqZWN0CisgKi8KK3R5cGVkZWYg
c3RydWN0IEV3a09iamVjdCBFd2tfTm90aWZpY2F0aW9uX1Blcm1pc3Npb25fUmVxdWVzdDsKKwor
LyoqCisgKiBSZXR1cm5zIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgdGhlIG5vdGlmaWNhdGlvbiBw
ZXJtaXNzaW9uIHJlcXVlc3QuCisgKgorICogQHBhcmFtIHBlcm1pc3Npb25SZXF1ZXN0IG5vdGlm
aWNhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3Qgb2JqZWN0CisgKgorICogQHJldHVybiB0aGUgc2Vj
dXJpdHkgb3JpZ2luIG9iamVjdCBvciBAYyBOVUxMIGlmIHRoZXJlIGlzIG5vdCBzZWN1cml0eSBv
cmlnaW4uCisgKi8KK0VBUEkgRXdrX1NlY3VyaXR5X09yaWdpbiAqZXdrX25vdGlmaWNhdGlvbl9w
ZXJtaXNzaW9uX3JlcXVlc3Rfc2VjdXJpdHlfb3JpZ2luX2dldChjb25zdCBFd2tfTm90aWZpY2F0
aW9uX1Blcm1pc3Npb25fUmVxdWVzdCAqcGVybWlzc2lvblJlcXVlc3QpOworCisvKioKKyAqIEFs
bG93IC8gRGVueSB0aGUgbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdC4KKyAqCisgKiBA
cGFyYW0gcGVybWlzc2lvblJlcXVlc3Qgbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdCBv
YmplY3QKKyAqIEBwYXJhbSBhbGxvdyBhbGxvdy9kZW55IG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9u
IHJlcXVlc3QKKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1
ZXN0X2FsbG93ZWRfc2V0KEV3a19Ob3RpZmljYXRpb25fUGVybWlzc2lvbl9SZXF1ZXN0ICpwZXJt
aXNzaW9uUmVxdWVzdCwgRWluYV9Cb29sIGFsbG93KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19ub3Rp
ZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X3ByaXZh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YzY2NTA3NDJhNzhmZmQ1OTc5MWEwNTNiNzkzNGFmZGE4MDhiMThm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfbm90aWZp
Y2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX25vdGlmaWNh
dGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJld2tfb2JqZWN0
X3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktp
dDIvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK2NsYXNzIEV3a1Nl
Y3VyaXR5T3JpZ2luOworCitjbGFzcyBFd2tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCA6
IHB1YmxpYyBFd2tPYmplY3QgeworcHVibGljOgorICAgIEVXS19PQkpFQ1RfREVDTEFSRShFd2tO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCkKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3
a05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGUoV0tOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFJlZiB3a1Blcm1pc3Npb25SZXF1ZXN0LCBXS1NlY3VyaXR5T3JpZ2luUmVm
IHdrT3JpZ2luKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdCh3a1Blcm1pc3Npb25SZXF1ZXN0LCB3a09yaWdpbikpOwor
ICAgIH0KKworICAgIGJvb2wgcGVybWlzc2lvblNlbGVjdGVkKCkgeyByZXR1cm4gIW1fd2tQZXJt
aXNzaW9uUmVxdWVzdDsgfQorICAgIEV3a1NlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigp
IGNvbnN0OworCisgICAgdm9pZCBzZXRBbGxvd2VkKGJvb2wpOworCitwcml2YXRlOgorICAgIGV4
cGxpY2l0IEV3a05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYpOworCisgICAgV0tSZXRhaW5Q
dHI8V0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZj4gbV93a1Blcm1pc3Npb25SZXF1
ZXN0OworICAgIFJlZlB0cjxFd2tTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKK307
CisKKyNlbmRpZiAvLyBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9wcml2YXRl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19ub3Rp
ZmljYXRpb25fcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X25vdGlmaWNhdGlvbl9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMzMDk0ZWU2NzdmMmMzNzQzYWU3
ZThkNGM2NGViNzljN2M3MmEyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb25fcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfbm90aWZp
Y2F0aW9uX3ByaXZhdGVfaAorI2RlZmluZSBld2tfbm90aWZpY2F0aW9uX3ByaXZhdGVfaAorCisj
aW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCisjaW5jbHVkZSAiZXdrX29iamVjdF9wcml2
YXRlLmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitjbGFzcyBFd2tTZWN1cml0
eU9yaWdpbjsKK2NsYXNzIEV3a1ZpZXc7CisKK2NsYXNzIEV3a05vdGlmaWNhdGlvbiA6IHB1Ymxp
YyBFd2tPYmplY3QgeworcHVibGljOgorICAgIEVXS19PQkpFQ1RfREVDTEFSRShFd2tOb3RpZmlj
YXRpb24pCisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tOb3RpZmljYXRpb24+IGNyZWF0ZShX
S05vdGlmaWNhdGlvblJlZiB3a05vdGlmaWNhdGlvbiwgRXdrVmlldyogZXdrVmlldykKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrTm90aWZpY2F0aW9uKHdrTm90aWZpY2F0
aW9uLCBld2tWaWV3KSk7CisgICAgfQorCisgICAgRXdrVmlldyogZXdrVmlldygpIGNvbnN0IHsg
cmV0dXJuIG1fZXdrVmlldzsgfQorICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCisgICAgY29uc3Qg
Y2hhciogdGl0bGUoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBib2R5KCkgY29uc3Q7CisgICAg
Y29uc3QgY2hhciogaWNvblVSTCgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIHRhZygpIGNvbnN0
OworICAgIGNvbnN0IGNoYXIqIGxhbmcoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBkaXIoKSBj
b25zdDsKKyAgICBFd2tTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKKyAg
ICB1aW50NjRfdCBpZCgpIGNvbnN0OworCisgICAgdm9pZCB3YXNTaG93bigpIGNvbnN0OworICAg
IHZvaWQgd2FzQ2xpY2tlZCgpIGNvbnN0OworICAgIHZvaWQgd2FzQ2xvc2VkKCkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgRXdrTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uUmVm
LCBFd2tWaWV3Kik7CisKKyAgICBXS1JldGFpblB0cjxXS05vdGlmaWNhdGlvblJlZj4gbV93a05v
dGlmaWNhdGlvbjsKKyAgICBFd2tWaWV3KiBtX2V3a1ZpZXc7CisgICAgV0tFaW5hU2hhcmVkU3Ry
aW5nIG1fdGl0bGU7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIG1fYm9keTsKKyAgICBXS0VpbmFT
aGFyZWRTdHJpbmcgbV9pY29uVVJMOworICAgIFdLRWluYVNoYXJlZFN0cmluZyBtX3RhZzsKKyAg
ICBXS0VpbmFTaGFyZWRTdHJpbmcgbV9sYW5nOworICAgIFdLRWluYVNoYXJlZFN0cmluZyBtX2Rp
cjsKKyAgICBSZWZQdHI8RXdrU2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47Cit9Owor
CisjZW5kaWYgLy8gZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Ob3RpZmljYXRpb25Qcm92aWRlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjA2NmFmMjVmZTdlYjFhMjU3Mjc0MDdkMWFkZTU0NDBkM2IxMzc4MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvTm90aWZpY2F0aW9uUHJvdmlkZXIu
Y3BwCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcg
RWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25Qcm92aWRlci5oIgorCisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJFd2tWaWV3LmgiCisjaW5jbHVkZSAiV0tOb3Rp
ZmljYXRpb24uaCIKKyNpbmNsdWRlICJXS05vdGlmaWNhdGlvbk1hbmFnZXIuaCIKKyNpbmNsdWRl
ICJXS05vdGlmaWNhdGlvblByb3ZpZGVyLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbl9w
cml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRpYyBpbmxpbmUgTm90
aWZpY2F0aW9uUHJvdmlkZXIqIHRvTm90aWZpY2F0aW9uUHJvdmlkZXIoY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uUHJvdmlkZXIq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Cit9CisKK05vdGlmaWNhdGlvblByb3Zp
ZGVyOjpOb3RpZmljYXRpb25Qcm92aWRlcihXS0NvbnRleHRSZWYgY29udGV4dCkKKyAgICA6IG1f
bm90aWZpY2F0aW9uTWFuYWdlcihXS0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKGNvbnRl
eHQpKQoreworICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbk1hbmFnZXIpOworCisgICAgV0tOb3Rp
ZmljYXRpb25Qcm92aWRlclYwIHdrTm90aWZpY2F0aW9uUHJvdmlkZXIgPSB7CisgICAgICAgIHsK
KyAgICAgICAgICAgIDAsIC8vIHZlcnNpb24KKyAgICAgICAgICAgIHRoaXMsIC8vIGNsaWVudElu
Zm8KKyAgICAgICAgfSwKKyAgICAgICAgc2hvdywKKyAgICAgICAgY2FuY2VsLAorICAgICAgICBk
aWREZXN0cm95Tm90aWZpY2F0aW9uLAorICAgICAgICAwLCAvLyBhZGROb3RpZmljYXRpb25NYW5h
Z2VyCisgICAgICAgIDAsIC8vIHJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIKKyAgICAgICAgMCwg
Ly8gbm90aWZpY2F0aW9uUGVybWlzc2lvbnMKKyAgICAgICAgY2xlYXJOb3RpZmljYXRpb25zCisg
ICAgfTsKKworICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKG1fbm90aWZpY2F0
aW9uTWFuYWdlci5nZXQoKSwgJndrTm90aWZpY2F0aW9uUHJvdmlkZXIuYmFzZSk7Cit9CisKK05v
dGlmaWNhdGlvblByb3ZpZGVyOjp+Tm90aWZpY2F0aW9uUHJvdmlkZXIoKQoreworICAgIFdLTm90
aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKG1fbm90aWZpY2F0aW9uTWFuYWdlci5nZXQoKSwg
MCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3coV0tQYWdlUmVmIHdrUGFn
ZSwgV0tOb3RpZmljYXRpb25SZWYgd2tOb3RpZmljYXRpb24sIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCit7CisgICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyID0gdG9Ob3RpZmljYXRp
b25Qcm92aWRlcihjbGllbnRJbmZvKTsKKyAgICBFdmFzX09iamVjdCogZXZhc09iamVjdCA9IEV3
a1ZpZXc6OnRvRXZhc09iamVjdCh3a1BhZ2UpOworICAgIEV3a1ZpZXcqIGV3a1ZpZXcgPSBzdGF0
aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQo
ZXZhc09iamVjdCkpLT5wcml2OworCisgICAgUmVmUHRyPEV3a05vdGlmaWNhdGlvbj4gbm90aWZp
Y2F0aW9uID0gRXdrTm90aWZpY2F0aW9uOjpjcmVhdGUod2tOb3RpZmljYXRpb24sIGV3a1ZpZXcp
OworICAgIHByb3ZpZGVyLT5tX25vdGlmaWNhdGlvbk1hcC5hZGQoV0tOb3RpZmljYXRpb25HZXRJ
RCh3a05vdGlmaWNhdGlvbiksIG5vdGlmaWNhdGlvbik7CisKKyAgICBld2tWaWV3LT5zbWFydENh
bGxiYWNrPEV3a1ZpZXdDYWxsYmFja3M6Ok5vdGlmaWNhdGlvblNob3c+KCkuY2FsbChub3RpZmlj
YXRpb24uZ2V0KCkpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByb3ZpZGVyOjpjYW5jZWwoV0tO
b3RpZmljYXRpb25SZWYgd2tOb3RpZmljYXRpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7
CisgICAgTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3ZpZGVyID0gdG9Ob3RpZmljYXRpb25Qcm92
aWRlcihjbGllbnRJbmZvKTsKKyAgICBSZWZQdHI8RXdrTm90aWZpY2F0aW9uPiBub3RpZmljYXRp
b24gPSBwcm92aWRlci0+bV9ub3RpZmljYXRpb25NYXAuZ2V0KFdLTm90aWZpY2F0aW9uR2V0SUQo
d2tOb3RpZmljYXRpb24pKTsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbiB8fCAhbm90aWZpY2F0aW9u
LT5ld2tWaWV3KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG5vdGlmaWNhdGlvbi0+ZXdrVmll
dygpLT5zbWFydENhbGxiYWNrPEV3a1ZpZXdDYWxsYmFja3M6Ok5vdGlmaWNhdGlvbkNhbmNlbD4o
KS5jYWxsKG5vdGlmaWNhdGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJvdmlk
ZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25SZWYgd2tOb3RpZmljYXRp
b24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgTm90aWZpY2F0aW9uUHJvdmlkZXIq
IHByb3ZpZGVyID0gdG9Ob3RpZmljYXRpb25Qcm92aWRlcihjbGllbnRJbmZvKTsKKyAgICBSZWZQ
dHI8RXdrTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBwcm92aWRlci0+bV9ub3RpZmljYXRp
b25NYXAuZ2V0KFdLTm90aWZpY2F0aW9uR2V0SUQod2tOb3RpZmljYXRpb24pKTsKKyAgICBpZiAo
IW5vdGlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJvdmlkZXItPm1fbm90aWZp
Y2F0aW9uTWFwLnJlbW92ZShXS05vdGlmaWNhdGlvbkdldElEKHdrTm90aWZpY2F0aW9uKSk7Cisg
ICAgbm90aWZpY2F0aW9uLT5pbnZhbGlkYXRlKCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJv
dmlkZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhXS0FycmF5UmVmIHdrTm90aWZpY2F0aW9uSURzLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIE5vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92
aWRlciA9IHRvTm90aWZpY2F0aW9uUHJvdmlkZXIoY2xpZW50SW5mbyk7CisgICAgQVBJOjpBcnJh
eSogbm90aWZpY2F0aW9uSURzID0gdG9JbXBsKHdrTm90aWZpY2F0aW9uSURzKTsKKyAgICBzaXpl
X3Qgc2l6ZSA9IG5vdGlmaWNhdGlvbklEcy0+c2l6ZSgpOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgdWludDY0X3QgaWQgPSBzdGF0aWNfY2FzdDxB
UEk6OlVJbnQ2NCo+KG5vdGlmaWNhdGlvbklEcy0+YXQoaSkpLT52YWx1ZSgpOworICAgICAgICBS
ZWZQdHI8RXdrTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBwcm92aWRlci0+bV9ub3RpZmlj
YXRpb25NYXAuZ2V0KGlkKTsKKyAgICAgICAgaWYgKG5vdGlmaWNhdGlvbikgeworICAgICAgICAg
ICAgcHJvdmlkZXItPm1fbm90aWZpY2F0aW9uTWFwLnJlbW92ZShpZCk7CisgICAgICAgICAgICBu
b3RpZmljYXRpb24tPmludmFsaWRhdGUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworI2VuZGlm
IC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9Ob3RpZmljYXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9Ob3RpZmljYXRpb25Qcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2YTg5ODRlMzg0Yzcx
Y2MxZTk2NDRiMjJmZWI2ZGRlNmYyODAyZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL05vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAgLTAsMCArMSw2MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvblByb3ZpZGVyX2gK
KyNkZWZpbmUgTm90aWZpY2F0aW9uUHJvdmlkZXJfaAorCisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYktpdDIv
V0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCitjbGFzcyBFd2tOb3Rp
ZmljYXRpb247CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOb3RpZmljYXRpb25Qcm92
aWRlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTm90aWZpY2F0aW9uUHJvdmlkZXIoV0tDb250
ZXh0UmVmKTsKKyAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25Qcm92aWRlcigpOworCisgICAgV0tO
b3RpZmljYXRpb25NYW5hZ2VyUmVmIG5vdGlmaWNhdGlvbk1hbmFnZXIoKSBjb25zdCB7IHJldHVy
biBtX25vdGlmaWNhdGlvbk1hbmFnZXIuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMg
dm9pZCBzaG93KFdLUGFnZVJlZiwgV0tOb3RpZmljYXRpb25SZWYsIGNvbnN0IHZvaWQqKTsKKyAg
ICBzdGF0aWMgdm9pZCBjYW5jZWwoV0tOb3RpZmljYXRpb25SZWYsIGNvbnN0IHZvaWQqKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uUmVmLCBj
b25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdLQXJyYXlS
ZWYsIGNvbnN0IHZvaWQqKTsKKworICAgIFdLUmV0YWluUHRyPFdLTm90aWZpY2F0aW9uTWFuYWdl
clJlZj4gbV9ub3RpZmljYXRpb25NYW5hZ2VyOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxFd2tOb3RpZmljYXRpb24+PiBtX25vdGlmaWNhdGlvbk1hcDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNlbmRpZiAv
LyBOb3RpZmljYXRpb25Qcm92aWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHAKaW5kZXggZmUxMTZlOTdkNjM5MmVkMzAyYWU0YTM0NDFk
OWY2YzE1YWViNDMyYy4uZGI3MzBhM2MxZWZhYmQ0OWUzZmM3YzI0YjQ2ZmFlZGIwODFiOWZiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNw
cApAQCAtMzYsNiArMzYsMTAgQEAKICNpbmNsdWRlICJld2tfd2luZG93X2ZlYXR1cmVzX3ByaXZh
dGUuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9wcml2YXRl
LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNzgsNiArODIsOSBAQCBQYWdlVUlDbGllbnRFZmw6OlBhZ2VVSUNs
aWVudEVmbChFd2tWaWV3KiB2aWV3KQogI2VuZGlmCiAgICAgdWlDbGllbnQucnVuT3BlblBhbmVs
ID0gcnVuT3BlblBhbmVsOwogICAgIHVpQ2xpZW50LmNyZWF0ZU5ld1BhZ2UgPSBjcmVhdGVOZXdQ
YWdlOworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHVpQ2xpZW50LmRlY2lkZVBvbGlj
eUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0ID0gZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisjZW5kaWYKIAogICAgIFdLUGFnZVNldFBhZ2VVSUNs
aWVudChwYWdlUmVmLCAmdWlDbGllbnQuYmFzZSk7CiAKQEAgLTIyMSw2ICsyMjgsMTggQEAgV0tQ
YWdlUmVmIFBhZ2VVSUNsaWVudEVmbDo6Y3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYsIFdLVVJMUmVx
dWVzdFJlZiB3a1JlcXVlc3QsIFcKICAgICByZXR1cm4gdG9QYWdlVUlDbGllbnRFZmwoY2xpZW50
SW5mbyktPm1fdmlldy0+Y3JlYXRlTmV3UGFnZShyZXF1ZXN0LCB3a1dpbmRvd0ZlYXR1cmVzKTsK
IH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQordm9pZCBQYWdlVUlDbGllbnRFZmw6OmRl
Y2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tT
ZWN1cml0eU9yaWdpblJlZiB3a09yaWdpbiwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dFJlZiB3a1Blcm1pc3Npb25SZXF1ZXN0LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAg
IEV3a1ZpZXcqIHZpZXcgPSB0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3Owor
ICAgIFJlZlB0cjxFd2tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gcGVybWlzc2lvblJl
cXVlc3QgPSBFd2tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKHdrUGVybWlz
c2lvblJlcXVlc3QsIHdrT3JpZ2luKTsKKyAgICB2aWV3LT5zbWFydENhbGxiYWNrPEV3a1ZpZXdD
YWxsYmFja3M6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0PigpLmNhbGwocGVybWlzc2lv
blJlcXVlc3QuZ2V0KCkpOworCisgICAgaWYgKCFwZXJtaXNzaW9uUmVxdWVzdC0+cGVybWlzc2lv
blNlbGVjdGVkKCkpCisgICAgICAgIHBlcm1pc3Npb25SZXF1ZXN0LT5zZXRBbGxvd2VkKGZhbHNl
KTsKK30KKyNlbmRpZgorCiB2b2lkIFBhZ2VVSUNsaWVudEVmbDo6c2hvd1BvcHVwTWVudShXS1Bh
Z2VSZWYsIFdLUG9wdXBNZW51TGlzdGVuZXJSZWYgbWVudUxpc3RlbmVyUmVmLCBXS1JlY3QgcmVj
dCwgV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2Nh
bGVGYWN0b3IsIFdLQXJyYXlSZWYgaXRlbXNSZWYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICByZXR1cm4gdG9QYWdlVUlDbGllbnRFZmwoY2xp
ZW50SW5mbyktPm1fdmlldy0+cmVxdWVzdFBvcHVwTWVudShtZW51TGlzdGVuZXJSZWYsIHJlY3Qs
IHRleHREaXJlY3Rpb24sIHBhZ2VTY2FsZUZhY3RvciwgaXRlbXNSZWYsIHNlbGVjdGVkSW5kZXgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRF
ZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmgKaW5k
ZXggYmYwNTA0ZGE2NmU1OWU2MmNhYjAyYjI0NzMxNTA2OGNjMWUyNmRlOC4uYWMxZTQ1ZTVkMDRi
NzFjMjk5MDcwYjVlNmRkZDMyMWExNWQ2ZmQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5oCkBAIC02Myw2ICs2Myw5IEBAIHByaXZhdGU6CiAj
ZW5kaWYKICAgICBzdGF0aWMgdm9pZCBydW5PcGVuUGFuZWwoV0tQYWdlUmVmLCBXS0ZyYW1lUmVm
LCBXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYsIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYs
IGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdl
UmVmLCBXS1VSTFJlcXVlc3RSZWYsIFdLRGljdGlvbmFyeVJlZiwgV0tFdmVudE1vZGlmaWVycywg
V0tFdmVudE1vdXNlQnV0dG9uLCBjb25zdCB2b2lkKik7CisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCisgICAgc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QoV0tQYWdlUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS05vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7CisjZW5kaWYKIAogICAgIHN0YXRpYyB2
b2lkIHNob3dQb3B1cE1lbnUoV0tQYWdlUmVmLCBXS1BvcHVwTWVudUxpc3RlbmVyUmVmLCBXS1Jl
Y3QsIFdLUG9wdXBJdGVtVGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgV0tB
cnJheVJlZiBpdGVtc1JlZiwgaW50MzJfdCBzZWxlY3RlZEluZGV4LCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBoaWRlUG9wdXBNZW51KFdLUGFnZVJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNGJhYzE5ZDllNzkwZTA1Zjg0ODQwOTE0MmU5OGIzZWYzNDYzMDg5OC4u
NzNmMTFjOWMzMzMyZDM4MzUzNzg4N2YxOGUzMjAxNTU0NGViNmZkZiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE0
LTA0LTEwICBTYW5nWW9uZyBQYXJrICA8c3kzMDIucGFya0BzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXVtXSzJdIEltcGxlbWVudCB3ZWIgbm90aWZpY2F0aW9uLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDgzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9lZmwvbWFpbi5j
OiBBZGQgYSBzaW1wbGUgd2ViIG5vdGlmaWNhdGlvbiBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
KG5vdGlmaWNhdGlvbl9jbG9zZSk6CisgICAgICAgIChvbl9ub3RpZmljYXRpb25fY2FuY2VsKToK
KyAgICAgICAgKG9uX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QpOgorICAgICAgICAo
c2hvdWxkX3JlcGxhY2Vfbm90aWZpY2F0aW9uKToKKyAgICAgICAgKG9uX25vdGlmaWNhdGlvbl9z
aG93KToKKyAgICAgICAgKHdpbmRvd19jcmVhdGUpOgorICAgICAgICAob25fbm90aWZpY2F0aW9u
X21vdXNlX3VwKToKKyAgICAgICAgKG9uX25vdGlmaWNhdGlvbl9jbG9zZV9idXR0b25fY2xpY2tl
ZCk6CisgICAgICAgIChub3RpZmljYXRpb25fY3JlYXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG06IEVuYWJsZSB0aGUgV2ViIE5vdGlmaWNhdGlvbnMgZmVh
dHVyZSBmb3IgdGhlIEVGTCBwb3J0LgorCiAyMDE0LTA0LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlICJTeXN0ZW0gRm9udCIgZnJv
bSB3aGl0ZWxpc3RlZCBEUlQgZm9udHMgYW5kIGNoYXIgd2lkdGggY2FsY3VsYXRpb25zCmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIv
ZWZsL21haW4uYwppbmRleCBiYjU0NDZlZTgzYmI4NzEzNzgwZGQ2YmFkNjJjZTM5MmJjYTlhN2Zm
Li45NTUxZmY0Yzc1MDA4Njk1OTNlNjc0MDJjYWVkM2VkZDcwMmE1ZDUyIDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9t
YWluLmMKQEAgLTM2LDYgKzM2LDggQEAgc3RhdGljIGNvbnN0IGludCBTRUFSQ0hfQlVUVE9OX1NJ
WkUgPSAyNTsKIHN0YXRpYyBjb25zdCBpbnQgTUFYX1NFQVJDSF9DT1VOVCA9IDEwMDsKIHN0YXRp
YyBjb25zdCBpbnQgREVGQVVMVF9TRUFSQ0hfRkxBR1MgPSBFV0tfRklORF9PUFRJT05TX1NIT1df
SElHSExJR0hUIHwgRVdLX0ZJTkRfT1BUSU9OU19DQVNFX0lOU0VOU0lUSVZFIHwgRVdLX0ZJTkRf
T1BUSU9OU19XUkFQX0FST1VORDsKIHN0YXRpYyBjb25zdCBkb3VibGUgVE9PTFRJUF9ERUxBWV9T
RUNPTkRTID0gMS4wOworc3RhdGljIGNvbnN0IGludCBNQVhfTk9USUZJQ0FUSU9OX0NPVU5UID0g
MzsKK3N0YXRpYyBjb25zdCBpbnQgTk9USUZJQ0FUSU9OX1dJTkRPV19XSURUSCA9IDQwMDsKIAog
I2RlZmluZSBpbmZvKGZvcm1hdCwgYXJncy4uLikgICAgICAgXAogICAgIGRvIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXApAQCAtNjIsNiArNjQsOCBAQCBzdGF0aWMgaW50IHdpbmRvd19o
ZWlnaHQgPSA2MDA7CiAgKiBzY2FsZSBmYWN0b3IgdW5sZXNzIGl0J3MgcmVxdWlyZWQgYnkgdGhl
IFVzZXIuICovCiBzdGF0aWMgZG91YmxlIGRldmljZV9waXhlbF9yYXRpbyA9IDA7CiBzdGF0aWMg
RWluYV9Cb29sIGxlZ2FjeV9iZWhhdmlvcl9lbmFibGVkID0gRUlOQV9GQUxTRTsKK3N0YXRpYyBF
aW5hX0hhc2ggKmFjdGl2ZV9ub3RpZmljYXRpb25zID0gTlVMTDsKK3N0YXRpYyBFaW5hX0xpc3Qg
KnBlbmRpbmdfbm90aWZpY2F0aW9ucyA9IE5VTEw7CiAKICNkZWZpbmUgREVGQVVMVF9aT09NX0xF
VkVMIDUgLy8gU2V0IGRlZmF1bHQgem9vbSBsZXZlbCB0byAxLjAgKGluZGV4IDUgb24gem9vbUxl
dmVscykuCiAvLyBUaGUgem9vbSB2YWx1ZXMgYXJlIGNob3NlbiB0byBiZSBsaWtlIGluIE1vemls
bGEgRmlyZWZveCAzLgpAQCAtMTg0LDYgKzE4OCw3IEBAIHN0YXRpYyBjb25zdCBFY29yZV9HZXRv
cHQgb3B0aW9ucyA9IHsKIAogc3RhdGljIEVpbmFfU3RyaW5nc2hhcmUgKnNob3dfZmlsZV9lbnRy
eV9kaWFsb2coQnJvd3Nlcl9XaW5kb3cgKndpbmRvdywgY29uc3QgY2hhciAqbGFiZWxfdGFnLCBj
b25zdCBjaGFyICpkZWZhdWx0X3RleHQpOwogc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3df
Y3JlYXRlKEV2YXNfT2JqZWN0KiBvcGVuZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCk7CitzdGF0
aWMgdm9pZCBub3RpZmljYXRpb25fY3JlYXRlKEV3a19Ob3RpZmljYXRpb24gKm5vdGlmaWNhdGlv
biwgRXZhc19PYmplY3QgKm5vdGlmaWNhdGlvbl93aW5kb3cpOwogCiBzdGF0aWMgQnJvd3Nlcl9X
aW5kb3cgKndpbmRvd19maW5kX3dpdGhfZWxtX3dpbmRvdyhFdmFzX09iamVjdCAqZWxtX3dpbmRv
dykKIHsKQEAgLTE2NDEsNiArMTY0NiwxMzMgQEAgb25fdG9vbHRpcF90ZXh0X3Vuc2V0KHZvaWQg
KnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKIH0KIAogc3Rh
dGljIHZvaWQKK25vdGlmaWNhdGlvbl9jbG9zZShFdmFzX09iamVjdCAqbm90aWZpY2F0aW9uX3dp
bmRvdywgRWluYV9Cb29sIHJlbW92ZSkKK3sKKyAgICBFd2tfTm90aWZpY2F0aW9uICpub3RpZmlj
YXRpb24gPSBlaW5hX2hhc2hfZmluZChhY3RpdmVfbm90aWZpY2F0aW9ucywgJm5vdGlmaWNhdGlv
bl93aW5kb3cpOworCisgICAgZXdrX25vdGlmaWNhdGlvbl93YXNfY2xvc2VkKG5vdGlmaWNhdGlv
bik7CisgICAgZXdrX29iamVjdF91bnJlZihub3RpZmljYXRpb24pOworCisgICAgaWYgKCFyZW1v
dmUpIHsKKyAgICAgICAgZWluYV9oYXNoX3NldChhY3RpdmVfbm90aWZpY2F0aW9ucywgJm5vdGlm
aWNhdGlvbl93aW5kb3csIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZWluYV9o
YXNoX2RlbF9ieV9rZXkoYWN0aXZlX25vdGlmaWNhdGlvbnMsICZub3RpZmljYXRpb25fd2luZG93
KTsKKyAgICBldmFzX29iamVjdF9kZWwobm90aWZpY2F0aW9uX3dpbmRvdyk7CisKKyAgICBpZiAo
cGVuZGluZ19ub3RpZmljYXRpb25zKSB7CisgICAgICAgIEV3a19Ob3RpZmljYXRpb24gKnBlbmRp
bmdfbm90aWZpY2F0aW9uID0gZWluYV9saXN0X2RhdGFfZ2V0KHBlbmRpbmdfbm90aWZpY2F0aW9u
cyk7CisgICAgICAgIHBlbmRpbmdfbm90aWZpY2F0aW9ucyA9IGVpbmFfbGlzdF9yZW1vdmVfbGlz
dChwZW5kaW5nX25vdGlmaWNhdGlvbnMsIHBlbmRpbmdfbm90aWZpY2F0aW9ucyk7CisKKyAgICAg
ICAgbm90aWZpY2F0aW9uX2NyZWF0ZShwZW5kaW5nX25vdGlmaWNhdGlvbiwgTlVMTCk7CisgICAg
fQorfQorCitzdGF0aWMgdm9pZAorb25fbm90aWZpY2F0aW9uX2NhbmNlbCh2b2lkICp1c2VyX2Rh
dGEsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50X2luZm8pCit7CisgICAgRXdrX05vdGlm
aWNhdGlvbiAqbm90aWZpY2F0aW9uID0gKEV3a19Ob3RpZmljYXRpb24gKilldmVudF9pbmZvOwor
ICAgIEVpbmFfTGlzdCAqbDsKKyAgICB2b2lkICpkYXRhOworCisgICAgRUlOQV9MSVNUX0ZPUkVB
Q0gocGVuZGluZ19ub3RpZmljYXRpb25zLCBsLCBkYXRhKSB7CisgICAgICAgIEV3a19Ob3RpZmlj
YXRpb24gKnBlbmRpbmdfbm90aWZpY2F0aW9uID0gKEV3a19Ob3RpZmljYXRpb24gKilkYXRhOwor
ICAgICAgICBpZiAoZXdrX25vdGlmaWNhdGlvbl9pZF9nZXQobm90aWZpY2F0aW9uKSA9PSBld2tf
bm90aWZpY2F0aW9uX2lkX2dldChwZW5kaW5nX25vdGlmaWNhdGlvbikpIHsKKyAgICAgICAgICAg
IHBlbmRpbmdfbm90aWZpY2F0aW9ucyA9IGVpbmFfbGlzdF9yZW1vdmVfbGlzdChwZW5kaW5nX25v
dGlmaWNhdGlvbnMsIGwpOworICAgICAgICAgICAgZXdrX25vdGlmaWNhdGlvbl93YXNfY2xvc2Vk
KHBlbmRpbmdfbm90aWZpY2F0aW9uKTsKKyAgICAgICAgICAgIGV3a19vYmplY3RfdW5yZWYocGVu
ZGluZ19ub3RpZmljYXRpb24pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCisgICAgRXZhc19PYmplY3QgKm5vdGlmaWNhdGlvbl93aW5kb3cgPSBOVUxMOworICAgIEVp
bmFfSXRlcmF0b3IgKml0ID0gZWluYV9oYXNoX2l0ZXJhdG9yX3R1cGxlX25ldyhhY3RpdmVfbm90
aWZpY2F0aW9ucyk7CisgICAgd2hpbGUgKGVpbmFfaXRlcmF0b3JfbmV4dChpdCwgJmRhdGEpKSB7
CisgICAgICAgIEVpbmFfSGFzaF9UdXBsZSAqdCA9IGRhdGE7CisgICAgICAgIEV3a19Ob3RpZmlj
YXRpb24gKm9sZF9ub3RpZmljYXRpb24gPSAoRXdrX05vdGlmaWNhdGlvbiAqKXQtPmRhdGE7Cisg
ICAgICAgIGlmIChld2tfbm90aWZpY2F0aW9uX2lkX2dldChub3RpZmljYXRpb24pID09IGV3a19u
b3RpZmljYXRpb25faWRfZ2V0KG9sZF9ub3RpZmljYXRpb24pKSB7CisgICAgICAgICAgICBub3Rp
ZmljYXRpb25fd2luZG93ID0gKigoRXZhc19PYmplY3QgKiopdC0+a2V5KTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGVpbmFfaXRlcmF0b3JfZnJlZShpdCk7CisK
KyAgICBpZiAobm90aWZpY2F0aW9uX3dpbmRvdykKKyAgICAgICAgbm90aWZpY2F0aW9uX2Nsb3Nl
KG5vdGlmaWNhdGlvbl93aW5kb3csIEVJTkFfVFJVRSk7Cit9CisKK3N0YXRpYyB2b2lkCitvbl9u
b3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmpl
Y3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKK3sKKyAgICBFd2tfTm90aWZpY2F0aW9uX1Blcm1p
c3Npb25fUmVxdWVzdCAqcmVxdWVzdCA9IChFd2tfTm90aWZpY2F0aW9uX1Blcm1pc3Npb25fUmVx
dWVzdCAqKWV2ZW50X2luZm87CisKKyAgICAvLyBGSVhNRTogVGhlIHBlcm1pc3Npb24gc2hvdWxk
IGJlIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLgorICAgIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lv
bl9yZXF1ZXN0X2FsbG93ZWRfc2V0KHJlcXVlc3QsIEVJTkFfVFJVRSk7Cit9CisKK3N0YXRpYyBF
aW5hX0Jvb2wKK3Nob3VsZF9yZXBsYWNlX25vdGlmaWNhdGlvbihFd2tfTm90aWZpY2F0aW9uICpu
b3RpZmljYXRpb24xLCBFd2tfTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24yKQoreworICAgIGNv
bnN0IGNoYXIgKnRhZzEgPSBld2tfbm90aWZpY2F0aW9uX3RhZ19nZXQobm90aWZpY2F0aW9uMSk7
CisgICAgY29uc3QgY2hhciAqdGFnMiA9IGV3a19ub3RpZmljYXRpb25fdGFnX2dldChub3RpZmlj
YXRpb24yKTsKKworICAgIGlmICghdGFnMSB8fCB0YWcxWzBdID09ICdcMCcgfHwgIXRhZzIgfHwg
dGFnMlswXSA9PSAnXDAnIHx8IHN0cmNtcCh0YWcxLCB0YWcyKSkKKyAgICAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CisKKyAgICBjb25zdCBjaGFyICpob3N0MSA9IGV3a19zZWN1cml0eV9vcmlnaW5f
aG9zdF9nZXQoZXdrX25vdGlmaWNhdGlvbl9zZWN1cml0eV9vcmlnaW5fZ2V0KG5vdGlmaWNhdGlv
bjEpKTsKKyAgICBjb25zdCBjaGFyICpob3N0MiA9IGV3a19zZWN1cml0eV9vcmlnaW5faG9zdF9n
ZXQoZXdrX25vdGlmaWNhdGlvbl9zZWN1cml0eV9vcmlnaW5fZ2V0KG5vdGlmaWNhdGlvbjIpKTsK
KworICAgIHJldHVybiAoaG9zdDEgJiYgaG9zdDIgJiYgIXN0cmNtcChob3N0MSwgaG9zdDIpKTsK
K30KKworc3RhdGljIHZvaWQKK29uX25vdGlmaWNhdGlvbl9zaG93KHZvaWQgKnVzZXJfZGF0YSwg
RXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKK3sKKyAgICBCcm93c2VyX1dpbmRv
dyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOworICAgIEV3a19Ob3RpZmlj
YXRpb24gKm5vdGlmaWNhdGlvbiA9IChFd2tfTm90aWZpY2F0aW9uICopZXZlbnRfaW5mbzsKKyAg
ICBFaW5hX0xpc3QgKmw7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGV3a19vYmplY3RfcmVmKG5v
dGlmaWNhdGlvbik7CisKKyAgICBpZiAoIWFjdGl2ZV9ub3RpZmljYXRpb25zKQorICAgICAgICBh
Y3RpdmVfbm90aWZpY2F0aW9ucyA9IGVpbmFfaGFzaF9wb2ludGVyX25ldygwKTsKKworICAgIEVJ
TkFfTElTVF9GT1JFQUNIKHBlbmRpbmdfbm90aWZpY2F0aW9ucywgbCwgZGF0YSkgeworICAgICAg
ICBFd2tfTm90aWZpY2F0aW9uICpwZW5kaW5nX25vdGlmaWNhdGlvbiA9IChFd2tfTm90aWZpY2F0
aW9uICopZGF0YTsKKyAgICAgICAgaWYgKHNob3VsZF9yZXBsYWNlX25vdGlmaWNhdGlvbihub3Rp
ZmljYXRpb24sIHBlbmRpbmdfbm90aWZpY2F0aW9uKSkgeworICAgICAgICAgICAgcGVuZGluZ19u
b3RpZmljYXRpb25zID0gZWluYV9saXN0X3JlbW92ZV9saXN0KHBlbmRpbmdfbm90aWZpY2F0aW9u
cywgbCk7CisgICAgICAgICAgICBld2tfbm90aWZpY2F0aW9uX3dhc19jbG9zZWQocGVuZGluZ19u
b3RpZmljYXRpb24pOworICAgICAgICAgICAgZXdrX29iamVjdF91bnJlZihwZW5kaW5nX25vdGlm
aWNhdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIEV2
YXNfT2JqZWN0ICpub3RpZmljYXRpb25fd2luZG93ID0gTlVMTDsKKyAgICBFaW5hX0l0ZXJhdG9y
ICppdCA9IGVpbmFfaGFzaF9pdGVyYXRvcl90dXBsZV9uZXcoYWN0aXZlX25vdGlmaWNhdGlvbnMp
OworICAgIHdoaWxlIChlaW5hX2l0ZXJhdG9yX25leHQoaXQsICZkYXRhKSkgeworICAgICAgICBF
aW5hX0hhc2hfVHVwbGUgKnQgPSBkYXRhOworICAgICAgICBFd2tfTm90aWZpY2F0aW9uICpvbGRf
bm90aWZpY2F0aW9uID0gKEV3a19Ob3RpZmljYXRpb24gKil0LT5kYXRhOworICAgICAgICBpZiAo
c2hvdWxkX3JlcGxhY2Vfbm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgb2xkX25vdGlmaWNhdGlv
bikpIHsKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbl93aW5kb3cgPSAqKChFdmFzX09iamVjdCAq
Kil0LT5rZXkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgZWlu
YV9pdGVyYXRvcl9mcmVlKGl0KTsKKworICAgIGlmIChub3RpZmljYXRpb25fd2luZG93KQorICAg
ICAgICBub3RpZmljYXRpb25fY2xvc2Uobm90aWZpY2F0aW9uX3dpbmRvdywgRUlOQV9GQUxTRSk7
CisKKyAgICBpZiAoZWluYV9oYXNoX3BvcHVsYXRpb24oYWN0aXZlX25vdGlmaWNhdGlvbnMpID49
IE1BWF9OT1RJRklDQVRJT05fQ09VTlQpIHsKKyAgICAgICAgcGVuZGluZ19ub3RpZmljYXRpb25z
ID0gZWluYV9saXN0X2FwcGVuZChwZW5kaW5nX25vdGlmaWNhdGlvbnMsIG5vdGlmaWNhdGlvbik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBub3RpZmljYXRpb25fY3JlYXRlKG5vdGlm
aWNhdGlvbiwgbm90aWZpY2F0aW9uX3dpbmRvdyk7Cit9CisKK3N0YXRpYyB2b2lkCiBvbl9ob21l
X2J1dHRvbl9jbGlja2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmhvbWVfYnV0dG9u
LCB2b2lkICpldmVudF9pbmZvKQogewogICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJv
d3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CkBAIC0xODY5LDYgKzIwMDEsOSBAQCBzdGF0aWMgQnJv
d3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoRXZhc19PYmplY3QgKm9wZW5lciwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KQogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ct
PmV3a192aWV3LCAiYmFjayxmb3J3YXJkLGxpc3QsY2hhbmdlZCIsIG9uX2JhY2tfZm9yd2FyZF9s
aXN0X2NoYW5nZWQsIHdpbmRvdyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KHdpbmRvdy0+ZXdrX3ZpZXcsICJ0b29sdGlwLHRleHQsc2V0Iiwgb25fdG9vbHRpcF90ZXh0X3Nl
dCwgd2luZG93KTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5l
d2tfdmlldywgInRvb2x0aXAsdGV4dCx1bnNldCIsIG9uX3Rvb2x0aXBfdGV4dF91bnNldCwgd2lu
ZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmll
dywgIm5vdGlmaWNhdGlvbixjYW5jZWwiLCBvbl9ub3RpZmljYXRpb25fY2FuY2VsLCB3aW5kb3cp
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAi
bm90aWZpY2F0aW9uLHBlcm1pc3Npb24scmVxdWVzdCIsIG9uX25vdGlmaWNhdGlvbl9wZXJtaXNz
aW9uX3JlcXVlc3QsIHdpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KHdpbmRvdy0+ZXdrX3ZpZXcsICJub3RpZmljYXRpb24sc2hvdyIsIG9uX25vdGlmaWNhdGlvbl9z
aG93LCB3aW5kb3cpOwogCiAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKHdpbmRv
dy0+ZXdrX3ZpZXcsIEVWQVNfQ0FMTEJBQ0tfS0VZX0RPV04sIG9uX2tleV9kb3duLCB3aW5kb3cp
OwogICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCBF
VkFTX0NBTExCQUNLX01PVVNFX0RPV04sIG9uX21vdXNlX2Rvd24sIHdpbmRvdyk7CkBAIC0xODky
LDYgKzIwMjcsOTUgQEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKEV2YXNf
T2JqZWN0ICpvcGVuZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICByZXR1cm4gd2luZG93
OwogfQogCitzdGF0aWMgdm9pZAorb25fbm90aWZpY2F0aW9uX21vdXNlX3VwKHZvaWQgKmRhdGEs
IEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50X2luZm8pCit7CisgICAgRXZh
c19PYmplY3QgKm5vdGlmaWNhdGlvbl93aW5kb3cgPSAoRXZhc19PYmplY3QgKilkYXRhOworICAg
IEV3a19Ob3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbiA9IGVpbmFfaGFzaF9maW5kKGFjdGl2ZV9u
b3RpZmljYXRpb25zLCAmbm90aWZpY2F0aW9uX3dpbmRvdyk7CisKKyAgICBld2tfbm90aWZpY2F0
aW9uX3dhc19jbGlja2VkKG5vdGlmaWNhdGlvbik7Cit9CisKK3N0YXRpYyB2b2lkCitvbl9ub3Rp
ZmljYXRpb25fY2xvc2VfYnV0dG9uX2NsaWNrZWQodm9pZCAqZGF0YSwgRXZhc19PYmplY3QgKm9i
aiwgdm9pZCAqZXZlbnRfaW5mbykKK3sKKyAgICBub3RpZmljYXRpb25fY2xvc2UoKEV2YXNfT2Jq
ZWN0ICopZGF0YSwgRUlOQV9UUlVFKTsKK30KKworc3RhdGljIHZvaWQKK25vdGlmaWNhdGlvbl9j
cmVhdGUoRXdrX05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uLCBFdmFzX09iamVjdCAqbm90aWZp
Y2F0aW9uX3dpbmRvdykKK3sKKyAgICBpZiAoIW5vdGlmaWNhdGlvbl93aW5kb3cpIHsKKyAgICAg
ICAgbm90aWZpY2F0aW9uX3dpbmRvdyA9IGVsbV93aW5fYWRkKE5VTEwsICJub3RpZmljYXRpb24t
d2luZG93IiwgRUxNX1dJTl9OT1RJRklDQVRJT04pOworICAgICAgICBldmFzX29iamVjdF9sYXll
cl9zZXQobm90aWZpY2F0aW9uX3dpbmRvdywgRVZBU19MQVlFUl9NQVgpOworICAgICAgICBlbG1f
d2luX3Byb3BfZm9jdXNfc2tpcF9zZXQobm90aWZpY2F0aW9uX3dpbmRvdywgRUlOQV9UUlVFKTsK
KyAgICAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQobm90aWZpY2F0aW9uX3dp
bmRvdywgMC4wLCBFVkFTX0hJTlRfRVhQQU5EKTsKKyAgICB9CisgICAgZWluYV9oYXNoX3NldChh
Y3RpdmVfbm90aWZpY2F0aW9ucywgJm5vdGlmaWNhdGlvbl93aW5kb3csIG5vdGlmaWNhdGlvbik7
CisKKyAgICBFdmFzX09iamVjdCAqYmcgPSBlbG1fYmdfYWRkKG5vdGlmaWNhdGlvbl93aW5kb3cp
OworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KGJnLCBFVkFTX0hJTlRfRVhQ
QU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25f
c2V0KGJnLCBFVkFTX0hJTlRfRklMTCwgRVZBU19ISU5UX0ZJTEwpOworICAgIGVsbV93aW5fcmVz
aXplX29iamVjdF9hZGQobm90aWZpY2F0aW9uX3dpbmRvdywgYmcpOworICAgIGV2YXNfb2JqZWN0
X3Nob3coYmcpOworCisgICAgRXZhc19PYmplY3QgKnZlcnRpY2FsX2xheW91dCA9IGVsbV9ib3hf
YWRkKG5vdGlmaWNhdGlvbl93aW5kb3cpOworICAgIGVsbV9ib3hfcGFkZGluZ19zZXQodmVydGlj
YWxfbGF5b3V0LCAwLCAyKTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldCh2
ZXJ0aWNhbF9sYXlvdXQsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOworICAg
IGVsbV93aW5fcmVzaXplX29iamVjdF9hZGQobm90aWZpY2F0aW9uX3dpbmRvdywgdmVydGljYWxf
bGF5b3V0KTsKKyAgICBldmFzX29iamVjdF9zaG93KHZlcnRpY2FsX2xheW91dCk7CisKKyAgICBF
dmFzX09iamVjdCAqaG9yaXpvbnRhbF9sYXlvdXQgPSBlbG1fYm94X2FkZChub3RpZmljYXRpb25f
d2luZG93KTsKKyAgICBlbG1fYm94X2hvcml6b250YWxfc2V0KGhvcml6b250YWxfbGF5b3V0LCBF
SU5BX1RSVUUpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQoaG9yaXpvbnRh
bF9sYXlvdXQsIEVWQVNfSElOVF9GSUxMLCBFVkFTX0hJTlRfRklMTCk7CisgICAgZWxtX2JveF9w
YWNrX2VuZCh2ZXJ0aWNhbF9sYXlvdXQsIGhvcml6b250YWxfbGF5b3V0KTsKKyAgICBldmFzX29i
amVjdF9zaG93KGhvcml6b250YWxfbGF5b3V0KTsKKworICAgIEVpbmFfU3RyYnVmICpidWZmZXIg
PSBlaW5hX3N0cmJ1Zl9uZXcoKTsKKworICAgIEV2YXNfT2JqZWN0ICpvcmlnaW5fbGFiZWwgPSBl
bG1fbGFiZWxfYWRkKG5vdGlmaWNhdGlvbl93aW5kb3cpOworICAgIGVpbmFfc3RyYnVmX2FwcGVu
ZF9wcmludGYoYnVmZmVyLCAiPGZvbnRfc2l6ZT0xMj48Y29sb3I9IzE3MmQ0MzhlPmZyb20gJXM8
L2NvbG9yPjwvZm9udF9zaXplPiIsIGV3a19zZWN1cml0eV9vcmlnaW5faG9zdF9nZXQoZXdrX25v
dGlmaWNhdGlvbl9zZWN1cml0eV9vcmlnaW5fZ2V0KG5vdGlmaWNhdGlvbikpKTsKKyAgICBlbG1f
b2JqZWN0X3RleHRfc2V0KG9yaWdpbl9sYWJlbCwgZWluYV9zdHJidWZfc3RyaW5nX2dldChidWZm
ZXIpKTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChvcmlnaW5fbGFiZWws
IEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOworICAgIGV2YXNfb2JqZWN0X3Np
emVfaGludF9hbGlnbl9zZXQob3JpZ2luX2xhYmVsLCBFVkFTX0hJTlRfRklMTCwgMC41KTsKKyAg
ICBlbG1fYm94X3BhY2tfZW5kKGhvcml6b250YWxfbGF5b3V0LCBvcmlnaW5fbGFiZWwpOworICAg
IGV2YXNfb2JqZWN0X3Nob3cob3JpZ2luX2xhYmVsKTsKKworICAgIEV2YXNfT2JqZWN0ICpjbG9z
ZV9idXR0b24gPSBjcmVhdGVfdG9vbGJhcl9idXR0b24obm90aWZpY2F0aW9uX3dpbmRvdywgImNs
b3NlIik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGNsb3NlX2J1dHRvbiwg
ImNsaWNrZWQiLCBvbl9ub3RpZmljYXRpb25fY2xvc2VfYnV0dG9uX2NsaWNrZWQsIG5vdGlmaWNh
dGlvbl93aW5kb3cpOworICAgIGVsbV9ib3hfcGFja19lbmQoaG9yaXpvbnRhbF9sYXlvdXQsIGNs
b3NlX2J1dHRvbik7CisgICAgZXZhc19vYmplY3Rfc2hvdyhjbG9zZV9idXR0b24pOworCisgICAg
RXZhc19PYmplY3QgKnRpdGxlX2xhYmVsID0gZWxtX2xhYmVsX2FkZChub3RpZmljYXRpb25fd2lu
ZG93KTsKKyAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQodGl0bGVfbGFiZWwsIEVW
QVNfQ0FMTEJBQ0tfTU9VU0VfVVAsIG9uX25vdGlmaWNhdGlvbl9tb3VzZV91cCwgbm90aWZpY2F0
aW9uX3dpbmRvdyk7CisgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X21pbl9zZXQodGl0bGVfbGFi
ZWwsIE5PVElGSUNBVElPTl9XSU5ET1dfV0lEVEgsIDApOworICAgIGVsbV9sYWJlbF9saW5lX3dy
YXBfc2V0KHRpdGxlX2xhYmVsLCBFTE1fV1JBUF9DSEFSKTsKKyAgICBlaW5hX3N0cmJ1Zl9yZXNl
dChidWZmZXIpOworICAgIGVpbmFfc3RyYnVmX2FwcGVuZF9wcmludGYoYnVmZmVyLCAiPGZvbnRf
c2l6ZT0xOD48Y29sb3I9IzAwMD4lczwvY29sb3I+PC9mb250X3NpemU+IiwgZXdrX25vdGlmaWNh
dGlvbl90aXRsZV9nZXQobm90aWZpY2F0aW9uKSk7CisgICAgZWxtX29iamVjdF90ZXh0X3NldCh0
aXRsZV9sYWJlbCwgZWluYV9zdHJidWZfc3RyaW5nX2dldChidWZmZXIpKTsKKyAgICBldmFzX29i
amVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHRpdGxlX2xhYmVsLCBFVkFTX0hJTlRfRklMTCwgMC4w
KTsKKyAgICBlbG1fYm94X3BhY2tfZW5kKHZlcnRpY2FsX2xheW91dCwgdGl0bGVfbGFiZWwpOwor
ICAgIGV2YXNfb2JqZWN0X3Nob3codGl0bGVfbGFiZWwpOworCisgICAgaWYgKGV3a19ub3RpZmlj
YXRpb25fYm9keV9nZXQobm90aWZpY2F0aW9uKSkgeworICAgICAgICBFdmFzX09iamVjdCAqYm9k
eV9sYWJlbCA9IGVsbV9sYWJlbF9hZGQobm90aWZpY2F0aW9uX3dpbmRvdyk7CisgICAgICAgIGV2
YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChib2R5X2xhYmVsLCBFVkFTX0NBTExCQUNLX01P
VVNFX1VQLCBvbl9ub3RpZmljYXRpb25fbW91c2VfdXAsIG5vdGlmaWNhdGlvbl93aW5kb3cpOwor
ICAgICAgICBlbG1fbGFiZWxfbGluZV93cmFwX3NldChib2R5X2xhYmVsLCBFTE1fV1JBUF9DSEFS
KTsKKyAgICAgICAgZWluYV9zdHJidWZfcmVzZXQoYnVmZmVyKTsKKyAgICAgICAgZWluYV9zdHJi
dWZfYXBwZW5kX3ByaW50ZihidWZmZXIsICI8YnI+PGZvbnRfc2l6ZT0xNT48Y29sb3I9IzE3MmQ0
MzhlPiVzPC9jb2xvcj48L2ZvbnRfc2l6ZT4iLCBld2tfbm90aWZpY2F0aW9uX2JvZHlfZ2V0KG5v
dGlmaWNhdGlvbikpOworICAgICAgICBlbG1fb2JqZWN0X3RleHRfc2V0KGJvZHlfbGFiZWwsIGVp
bmFfc3RyYnVmX3N0cmluZ19nZXQoYnVmZmVyKSk7CisgICAgICAgIGV2YXNfb2JqZWN0X3NpemVf
aGludF93ZWlnaHRfc2V0KGJvZHlfbGFiZWwsIDAuMCwgRVZBU19ISU5UX0VYUEFORCk7CisgICAg
ICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQoYm9keV9sYWJlbCwgRVZBU19ISU5U
X0ZJTEwsIDAuMCk7CisgICAgICAgIGVsbV9ib3hfcGFja19lbmQodmVydGljYWxfbGF5b3V0LCBi
b2R5X2xhYmVsKTsKKyAgICAgICAgZXZhc19vYmplY3Rfc2hvdyhib2R5X2xhYmVsKTsKKyAgICB9
CisKKyAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1ZmZlcik7CisKKyAgICBldmFzX29iamVjdF9zaG93
KG5vdGlmaWNhdGlvbl93aW5kb3cpOworICAgIGV3a19ub3RpZmljYXRpb25fd2FzX3Nob3duKG5v
dGlmaWNhdGlvbik7Cit9CisKIHN0YXRpYyBFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kKIHBhcnNl
X2Nvb2tpZXNfcG9saWN5KGNvbnN0IGNoYXIgKmlucHV0X3N0cmluZykKIHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCA5NDEyNjhkOTU4NDhlYmI0MjdhZWMyYmNl
MTZjM2VlYTJkNDliNmFkLi4yMDk5ZTc0ZWQ1Yjk1Njg2NjA5NjlmNmI1ODEyZDU2YjU0ZjQ1OTBi
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0zNTEsNyArMzUx
LDcgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTk9TTklGRiIs
IGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRub3NuaWZmU3VwcG9ydCB9LAogCiAgICAgeyBvcHRp
b24gPT4gIm5vdGlmaWNhdGlvbnMiLCBkZXNjID0+ICJUb2dnbGUgTm90aWZpY2F0aW9ucyBzdXBw
b3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+
IDAsIHZhbHVlID0+IFwkbm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAi
RU5BQkxFX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+IGlzRWZsKCksIHZhbHVlID0+IFwkbm90
aWZpY2F0aW9uc1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJvcmllbnRhdGlvbi1ldmVu
dHMiLCBkZXNjID0+ICJUb2dnbGUgT3JpZW50YXRpb24gRXZlbnRzIHN1cHBvcnQiLAogICAgICAg
ZGVmaW5lID0+ICJFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTIiwgZGVmYXVsdCA9PiBpc0lPU1dl
YktpdCgpLCB2YWx1ZSA9PiBcJG9yaWVudGF0aW9uRXZlbnRzU3VwcG9ydCB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229867</attachid>
            <date>2014-04-21 23:34:56 -0700</date>
            <delta_ts>2014-05-14 22:29:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131483-20140422153433.patch</filename>
            <type>text/plain</type>
            <size>43798</size>
            <attacher name="SangYong Park">sy302.park</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggNjhhNmU5M2Nl
YWU0NWE1MWEyMDZmNmJkZDJiOTJjNmY1NDVhMWVmNC4uZGQ4NGJmYjM3NThjMDAxNWJkNjg4ZTY4
NGFjZmU5NWMyMTA1ZDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE0
LTA0LTEwICBTYW5nWW9uZyBQYXJrICA8c3kzMDIucGFya0BzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXVtXSzJdIEltcGxlbWVudCB3ZWIgbm90aWZpY2F0aW9uLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDgzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRFZmwuY3BwOiBCZWNhdXNlIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGlzIGRlbGV0ZWQg
ZnJvbSBDaHJvbWVDbGllbnQsIGRlbGV0ZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEVmbDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKKwogMjAxNC0wNC0xOCAgUGhpbGlwcGUgTm9y
bWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVtb3ZlIE5FVFdPUktfSU5G
TyBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGNhNmJkMWI5NjZkMjY0MDUwYjcyNzEyNWIwMDA4NWU5
NDNmZjMzMC4uMmQ1ZTQyOWM4MzNiOTc3OWQ3ZDhhY2MyMjVkNDYxZjNkODg4MjhmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE0LTA0LTIxICBTYW5nWW9uZyBQYXJrICA8c3kzMDIu
cGFya0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudCB3ZWIgbm90
aWZpY2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMxNDgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkIG5ldyBzb3VyY2UvaGVhZGVyIGZpbGVzLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6IEluY2x1ZGUgaGVhZGVyIGZpbGVz
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaDogQWRkIGNh
bGxiYWNrIHR5cGUuIChyZXF1ZXN0IG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9uLCBzaG93L2NhbmNl
bCBub3RpZmljYXRpb24pCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQu
Y3BwOiBBZGQgbm90aWZpY2F0aW9uIHByb3ZpZGVyLgorICAgICAgICAoRXdrQ29udGV4dDo6RXdr
Q29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0
ZS5oOgorICAgICAgICAoRXdrQ29udGV4dDo6bm90aWZpY2F0aW9uUHJvdmlkZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb24uY3BwOiBBZGRlZC4gKGV3ayBu
b3RpZmljYXRpb24gQVBJcykKKyAgICAgICAgKEV3a05vdGlmaWNhdGlvbjo6RXdrTm90aWZpY2F0
aW9uKToKKyAgICAgICAgKEV3a05vdGlmaWNhdGlvbjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChl
d2tfbm90aWZpY2F0aW9uX3RpdGxlX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Jv
ZHlfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25faWNvbl91cmxfZ2V0KToKKyAgICAg
ICAgKGV3a19ub3RpZmljYXRpb25fdGFnX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9u
X2xhbmdfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGlyX2dldCk6CisgICAgICAg
IChld2tfbm90aWZpY2F0aW9uX3NlY3VyaXR5X29yaWdpbl9nZXQpOgorICAgICAgICAoZXdrX25v
dGlmaWNhdGlvbl9pZF9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl93YXNfc2hvd24p
OgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl93YXNfY2xpY2tlZCk6CisgICAgICAgIChld2tf
bm90aWZpY2F0aW9uX3dhc19jbG9zZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a19ub3RpZmljYXRpb24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QuY3BwOiBBZGRlZC4gKGV3ayBub3RpZmlj
YXRpb24gcGVybWlzc2lvbiByZXF1ZXN0IEFQSXMpCisgICAgICAgIChFd2tOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdDo6RXdrTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAg
ICAgICAoZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3Rfc2VjdXJpdHlfb3JpZ2lu
X2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9hbGxv
d2VkX3NldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlvbl9w
ZXJtaXNzaW9uX3JlcXVlc3QuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKEV3a05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb25fcHJpdmF0ZS5oOiBBZGRlZC4K
KyAgICAgICAgKEV3a05vdGlmaWNhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKEV3a05vdGlmaWNh
dGlvbjo6ZXdrVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9Ob3RpZmljYXRpb25Qcm92
aWRlckVmbC5jcHA6IEFkZGVkLiAoSW1wbGVtZW50IG5vdGlmaWNhdGlvbiBwcm92aWRlciBmb3Ig
ZWZsKQorICAgICAgICAodG9Ob3RpZmljYXRpb25Qcm92aWRlckVmbCk6CisgICAgICAgIChOb3Rp
ZmljYXRpb25Qcm92aWRlckVmbDo6Tm90aWZpY2F0aW9uUHJvdmlkZXJFZmwpOgorICAgICAgICAo
Tm90aWZpY2F0aW9uUHJvdmlkZXJFZmw6On5Ob3RpZmljYXRpb25Qcm92aWRlckVmbCk6CisgICAg
ICAgIChOb3RpZmljYXRpb25Qcm92aWRlckVmbDo6c2hvdyk6CisgICAgICAgIChOb3RpZmljYXRp
b25Qcm92aWRlckVmbDo6Y2FuY2VsKToKKyAgICAgICAgKE5vdGlmaWNhdGlvblByb3ZpZGVyRWZs
OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKE5vdGlmaWNhdGlvblByb3ZpZGVy
RWZsOjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvTm90aWZp
Y2F0aW9uUHJvdmlkZXJFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5vdGlmaWNhdGlv
blByb3ZpZGVyRWZsOjpub3RpZmljYXRpb25NYW5hZ2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
ZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHA6IEltcGxlbWVudCBkZWNpZGVQb2xpY3lGb3JOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdCBjYWxsYmFjayBvZiBwYWdlIHVpIGNsaWVudC4KKyAgICAg
ICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsOjpQYWdlVUlDbGllbnRFZmwpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlVUlDbGllbnRFZmw6OmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5o
OgorCiAyMDE0LTA0LTIwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0NvY29hXSBSZW1vdmUgaW50ZXJmYWNlcyBpbiB0aGUgVG8gQmUgUmVtb3ZlZCBncm91cHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuY3BwCmluZGV4IDYzZjI2YWQ0OGM2ODU1OWFiY2Y1YzczZTUxNmRmM2I5YjZiMmM3ZDcuLmMz
ZmNmMWU2ODJjMzY0OGQ0YWJhNDc4ZDgxODhmMDE4MmQ4MzE1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcApAQCAtNDQ3
LDE0ICs0NDcsNiBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6ZXhjZWVkZWREYXRhYmFzZVF1b3Rh
KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZQogfQogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotTm90
aWZpY2F0aW9uQ2xpZW50KiBDaHJvbWVDbGllbnRFZmw6Om5vdGlmaWNhdGlvblByZXNlbnRlcigp
IGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiBQYXNzT3duUHRyPENvbG9yQ2hvb3Nl
cj4gQ2hyb21lQ2xpZW50RWZsOjpjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50
KiBjb2xvckNob29zZXJDbGllbnQsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
aCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCmlu
ZGV4IDQ5ZWU4NDBhOGNhMmUxMzJmMTliMjVmMzMwOWViZjBlMGI5ODBmZjUuLmY3YWNkMmJiMWVi
OGY3MzgyOGNiOTIxZGJkMDNlZmMyNGUwZTQ3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCkBAIC0xMTQsMTAgKzExNCw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lKiwg
Y29uc3QgU3RyaW5nJiwgRGF0YWJhc2VEZXRhaWxzKSBvdmVycmlkZTsKICNlbmRpZgogCi0jaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLSAg
ICB2aXJ0dWFsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudCogbm90aWZpY2F0aW9uUHJlc2Vu
dGVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0jZW5kaWYKLQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVk
TWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2lu
KiwgaW50NjRfdCB0b3RhbFNwYWNlTmVlZGVkKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQppbmRleCA0OWMyMTQ5ZjE0MDU3MGU1NThiNTJmMjM3NWRjMTU3YWMwOWMwYTgxLi44
ZDc1Njk5ZDJjMDAxNjA0NmI5NTU3NzQ4ZjI1M2FhNjUwZmE0ZWI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtOTQsNiArOTQsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
ICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbWFpbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfbmF2aWdhdGlvbl9kYXRhLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZp
Z2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbm90
aWZpY2F0aW9uLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb25fcGVy
bWlzc2lvbl9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19vYmplY3QuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BhZ2VfZ3JvdXAuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3BvcHVwX21lbnUuY3BwCkBAIC0xNDAsNiArMTQyLDcgQEAgbGlzdChBUFBF
TkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmNwcAog
ICAgIFVJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0lu
cHV0TWV0aG9kQ29udGV4dEVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL05vdGlmaWNhdGlvblBy
b3ZpZGVyRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwCiAg
ICAgVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9l
ZmwvUGFnZVVJQ2xpZW50RWZsLmNwcApAQCAtMzc0LDYgKzM3Nyw4IEBAIHNldChFV2ViS2l0Ml9I
RUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfbWFpbi5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX25hdmlnYXRpb25fZGF0YS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9u
LmgiCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfbm90aWZpY2F0aW9uLmgiCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdC5oIgogICAg
ICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVj
dC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3BhZ2VfZ3JvdXAuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCBhOWM4YTE0ZTc4YjFmZWU2OTE5NTljZDJjYjcyYTUw
NWVmZGJlNjM5Li4yZTFlOTk2N2E3Y2MwNjE0YmU3ZTk2YmY1NmIyODAyYTI3ZmZiMTY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTQ1LDYgKzQ1
LDggQEAKICNpbmNsdWRlICJld2tfbWFpbi5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX2Rh
dGEuaCIKICNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKKyNpbmNs
dWRlICJld2tfbm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbl9wZXJt
aXNzaW9uX3JlcXVlc3QuaCIKICNpbmNsdWRlICJld2tfb2JqZWN0LmgiCiAjaW5jbHVkZSAiZXdr
X3BhZ2VfZ3JvdXAuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oCmluZGV4IDc4
YzMwNGQzZmIwZThkZDkzMWQ4MDFmNDgwMTMxNzkwYmU4ZjVlZmEuLmYxMjNkMGU3MWU1MjM0MzFi
ODlmYTgyZThiZTk1NDE2MjQyYjgxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmgKQEAgLTM5LDYgKzM5LDggQEAgdHlwZWRl
ZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3a19Eb3dubG9hZF9Kb2I7CiB0eXBlZGVmIHN0cnVjdCBFd2tP
YmplY3QgRXdrX0ZpbGVfQ2hvb3Nlcl9SZXF1ZXN0OwogdHlwZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0
IEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0IEV3a09iamVjdCBF
d2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb247Cit0eXBlZGVmIHN0cnVjdCBFd2tPYmplY3Qg
RXdrX05vdGlmaWNhdGlvbjsKK3R5cGVkZWYgc3RydWN0IEV3a09iamVjdCBFd2tfTm90aWZpY2F0
aW9uX1Blcm1pc3Npb25fUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0IEV3a0Vycm9yIEV3a19FcnJv
cjsKIAogbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3MgewpAQCAtNjUsNiArNjcsOSBAQCBlbnVt
IENhbGxiYWNrVHlwZSB7CiAgICAgU3RhdHVzQmFyVmlzaWJsZSwKICAgICBOYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24sCiAgICAgTmV3V2luZG93UG9saWN5RGVjaXNpb24sCisgICAgTm90aWZpY2F0
aW9uQ2FuY2VsLAorICAgIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LAorICAgIE5vdGlm
aWNhdGlvblNob3csCiAgICAgVGV4dEZvdW5kLAogICAgIFRpdGxlQ2hhbmdlLAogICAgIFRvb2xi
YXJWaXNpYmxlLApAQCAtMTc0LDYgKzE3OSw5IEBAIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0so
UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCwgImxvYWQscHJvdmlzaW9uYWwsc3RhcnRlZCIsIHZvCiBE
RUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKE1lbnVCYXJWaXNpYmxlLCAibWVudWJhcix2aXNpYmxl
IiwgYm9vbCopOwogREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhOYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24sICJwb2xpY3ksZGVjaXNpb24sbmF2aWdhdGlvbiIsIEV3a19OYXZpZ2F0aW9uX1BvbGlj
eV9EZWNpc2lvbiopOwogREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhOZXdXaW5kb3dQb2xpY3lE
ZWNpc2lvbiwgInBvbGljeSxkZWNpc2lvbixuZXcsd2luZG93IiwgRXdrX05hdmlnYXRpb25fUG9s
aWN5X0RlY2lzaW9uKik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKE5vdGlmaWNhdGlvbkNh
bmNlbCwgIm5vdGlmaWNhdGlvbixjYW5jZWwiLCBFd2tfTm90aWZpY2F0aW9uKik7CitERUNMQVJF
X0VXS19WSUVXX0NBTExCQUNLKE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LCAibm90aWZp
Y2F0aW9uLHBlcm1pc3Npb24scmVxdWVzdCIsIEV3a19Ob3RpZmljYXRpb25fUGVybWlzc2lvbl9S
ZXF1ZXN0Kik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKE5vdGlmaWNhdGlvblNob3csICJu
b3RpZmljYXRpb24sc2hvdyIsIEV3a19Ob3RpZmljYXRpb24qKTsKIERFQ0xBUkVfRVdLX1ZJRVdf
Q0FMTEJBQ0soU3RhdHVzQmFyVmlzaWJsZSwgInN0YXR1c2Jhcix2aXNpYmxlIiwgYm9vbCopOwog
REVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhUZXh0Rm91bmQsICJ0ZXh0LGZvdW5kIiwgdW5zaWdu
ZWQqKTsKIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soVGl0bGVDaGFuZ2UsICJ0aXRsZSxjaGFu
Z2VkIiwgY29uc3QgY2hhciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHQuY3BwCmluZGV4IDQ0OGM2YTQyYzI0MDUzYjY4ZmMzZTVlNjI3MWNjODYy
YmMzZDhlMGMuLjRmMzA2YWYwZmFjZTAzYzk4NjJiNWJmMzc2NTQ5N2ZjYmYwOTg2YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAg
LTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJCYXR0ZXJ5UHJvdmlkZXIuaCIKICNpbmNsdWRlICJD
b250ZXh0SGlzdG9yeUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlckVmbC5o
IgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByb3ZpZGVyRWZsLmgiCiAjaW5jbHVkZSAiUmVxdWVz
dE1hbmFnZXJDbGllbnRFZmwuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJX
S0NvbnRleHRQcml2YXRlLmgiCkBAIC03Myw2ICs3NCw5IEBAIEV3a0NvbnRleHQ6OkV3a0NvbnRl
eHQoV0tDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgLCBtX2Rvd25sb2FkTWFuYWdlcihzdGQ6Om1h
a2VfdW5pcXVlPERvd25sb2FkTWFuYWdlckVmbD4oY29udGV4dCkpCiAgICAgLCBtX3JlcXVlc3RN
YW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw+KGNv
bnRleHQpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dEhp
c3RvcnlDbGllbnRFZmw+KGNvbnRleHQpKQorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAg
ICwgbV9ub3RpZmljYXRpb25Qcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvblBy
b3ZpZGVyRWZsPihjb250ZXh0KSkKKyNlbmRpZgogICAgICwgbV9qc0dsb2JhbENvbnRleHQobnVs
bHB0cikKIHsKICAgICBDb250ZXh0TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gY29udGV4dE1hcCgp
LmFkZChjb250ZXh0LCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaAppbmRleCBjMjg5NWMwZjdjOThjOGJhOTZm
YjlmMThiZTFhZDRmOTEzOGI4MjMxLi4zNzMwM2IzNTFhNTA3MjdjZDAwMDRjZjQyZWM2YTQ0ZTM0
NThiZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dF9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHRfcHJpdmF0ZS5oCkBAIC00MSw2ICs0MSw5IEBAIGNsYXNzIFJlcXVlc3RNYW5h
Z2VyQ2xpZW50RWZsOwogI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKIGNsYXNzIEJhdHRlcnlQ
cm92aWRlcjsKICNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorY2xhc3MgTm90aWZp
Y2F0aW9uUHJvdmlkZXJFZmw7CisjZW5kaWYKIH0KIAogY2xhc3MgRXdrQ29udGV4dCA6IHB1Ymxp
YyBFd2tPYmplY3QgewpAQCAtOTksNiArMTAyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayhFd2tfQ29udGV4dF9NZXNzYWdlX0Zyb21f
SW5qZWN0ZWRfQnVuZGxlX0NiLCB2b2lkKik7CiAgICAgdm9pZCBwcm9jZXNzUmVjZWl2ZWRNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYg
bWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSk7CiAKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKKyAgICBXZWJLaXQ6Ok5vdGlmaWNhdGlvblByb3ZpZGVyRWZsKiBub3RpZmljYXRp
b25Qcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUHJvdmlkZXIuZ2V0KCk7
IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEV3a0NvbnRleHQoV0tDb250ZXh0
UmVmKTsKIApAQCAtMTE5LDYgKzEyNiwxMCBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYktpdDo6Q29udGV4dEhpc3RvcnlDbGllbnRFZmw+IG1faGlzdG9yeUNsaWVudDsKIAor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6Ok5v
dGlmaWNhdGlvblByb3ZpZGVyRWZsPiBtX25vdGlmaWNhdGlvblByb3ZpZGVyOworI2VuZGlmCisK
ICAgICBKU0dsb2JhbENvbnRleHRSZWYgbV9qc0dsb2JhbENvbnRleHQ7CiAKICAgICBzdHJ1Y3Qg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlm
aWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZp
Y2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWM5ODRjYTc0YWYxMTc1MTQ0ZjYxYzE3NzRkYWVlYjEw
NTM0N2E5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX25vdGlmaWNhdGlvbi5jcHAKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19u
b3RpZmljYXRpb24uaCIKKworI2luY2x1ZGUgIkV3a1ZpZXcuaCIKKyNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByb3ZpZGVyRWZsLmgiCisjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJX
S05vdGlmaWNhdGlvbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUg
ImV3a19jb250ZXh0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uX3ByaXZh
dGUuaCIKKyNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaCIKKwordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKworRXdrTm90aWZpY2F0aW9uOjpFd2tOb3RpZmljYXRpb24oV0tO
b3RpZmljYXRpb25SZWYgd2tOb3RpZmljYXRpb24sIEV3a1ZpZXcqIGV3a1ZpZXcpCisgICAgOiBt
X3drTm90aWZpY2F0aW9uKHdrTm90aWZpY2F0aW9uKQorICAgICwgbV9ld2tWaWV3KGV3a1ZpZXcp
Cit7Cit9CisKK3ZvaWQgRXdrTm90aWZpY2F0aW9uOjppbnZhbGlkYXRlKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCitjb25zdCBjaGFyKiBld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dl
dChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgRVdLX09CSl9H
RVRfSU1QTF9PUl9SRVRVUk4oY29uc3QgRXdrTm90aWZpY2F0aW9uLCBub3RpZmljYXRpb24sIGlt
cGwsIG51bGxwdHIpOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworY29uc3QgY2hhciogZXdrX25vdGlmaWNhdGlvbl9ib2R5X2dldChjb25zdCBFd2tf
Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9S
RVRVUk4oY29uc3QgRXdrTm90aWZpY2F0aW9uLCBub3RpZmljYXRpb24sIGltcGwsIG51bGxwdHIp
OworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworY29u
c3QgY2hhciogZXdrX25vdGlmaWNhdGlvbl9pY29uX3VybF9nZXQoY29uc3QgRXdrX05vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKGNv
bnN0IEV3a05vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLCBpbXBsLCBudWxscHRyKTsKKworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2NvbnN0IGNoYXIq
IGV3a19ub3RpZmljYXRpb25fdGFnX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pCit7CisgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oY29uc3QgRXdrTm90aWZp
Y2F0aW9uLCBub3RpZmljYXRpb24sIGltcGwsIG51bGxwdHIpOworCisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworY29uc3QgY2hhciogZXdrX25vdGlmaWNh
dGlvbl9sYW5nX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7Cisg
ICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oY29uc3QgRXdrTm90aWZpY2F0aW9uLCBub3Rp
ZmljYXRpb24sIGltcGwsIG51bGxwdHIpOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworY29uc3QgY2hhciogZXdrX25vdGlmaWNhdGlvbl9kaXJfZ2V0
KGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBFV0tfT0JKX0dF
VF9JTVBMX09SX1JFVFVSTihjb25zdCBFd2tOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbiwgaW1w
bCwgbnVsbHB0cik7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRy
OworfQorCitFd2tfU2VjdXJpdHlfT3JpZ2luKiBld2tfbm90aWZpY2F0aW9uX3NlY3VyaXR5X29y
aWdpbl9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIEVX
S19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a05vdGlmaWNhdGlvbiwgbm90aWZpY2F0
aW9uLCBpbXBsLCBudWxscHRyKTsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3VpbnQ2NF90IGV3a19ub3RpZmljYXRpb25faWRfZ2V0KGNvbnN0IEV3
a19Ob3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBMX09S
X1JFVFVSTihjb25zdCBFd2tOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbiwgaW1wbCwgMCk7CisK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIGV3a19ub3Rp
ZmljYXRpb25fd2FzX3Nob3duKGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikK
K3sKKyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihjb25zdCBFd2tOb3RpZmljYXRpb24s
IG5vdGlmaWNhdGlvbiwgaW1wbCk7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IGV3a19ub3RpZmljYXRpb25fd2FzX2NsaWNrZWQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogbm90
aWZpY2F0aW9uKQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a05v
dGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLCBpbXBsKTsKKworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl93YXNfY2xvc2VkKGNvbnN0IEV3a19Ob3RpZmlj
YXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihj
b25zdCBFd2tOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbiwgaW1wbCk7CisKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX25vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX25vdGlmaWNhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiZmVkODA5MjQ5YzY4YjEzNDY0YjU4Nzc5
OWQ2MTQ1MjFlYzIyMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uLmgKQEAgLTAsMCArMSwxNDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAq
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfbm90aWZpY2F0
aW9uLmgKKyAqIEBicmllZiAgIFdlYiBOb3RpZmljYXRpb24gQVBJLgorICoKKyAqIFdlYiBub3Rp
ZmljYXRpb25zIGRlZmluZXMgYW4gQVBJIGZvciBlbmQtdXNlciBub3RpZmljYXRpb25zLgorICog
QSBub3RpZmljYXRpb24gYWxsb3dzIGFsZXJ0aW5nIHRoZSB1c2VyIG91dHNpZGUgdGhlIGNvbnRl
eHQgb2YgYSB3ZWIgcGFnZQorICogb2YgYW4gb2NjdXJyZW5jZSwgc3VjaCBhcyB0aGUgZGVsaXZl
cnkgb2YgZW1haWwuCisgKi8KKworI2lmbmRlZiBld2tfbm90aWZpY2F0aW9uX2gKKyNkZWZpbmUg
ZXdrX25vdGlmaWNhdGlvbl9oCisKKyNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2luLmgiCisK
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBEZWNs
YXJlIEV3a19Ob3RpZmljYXRpb24gYXMgRXdrX09iamVjdC4KKyAqCisgKiBAc2VlIEV3a19PYmpl
Y3QKKyAqLwordHlwZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3a19Ob3RpZmljYXRpb247CisKKy8q
KgorICogUmV0dXJucyB0aGUgdGl0bGUgb2YgdGhlIG5vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFy
YW0gbm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiBvYmplY3QKKyAqCisgKiBAcmV0dXJuIHRoZSB0
aXRsZSBzdHJpbmcgcG9pbnRlciBvciBAYyBOVUxMIGlmIHRoZXJlIGlzIG5vdCBhIHRpdGxlCisg
Ki8KK0VBUEkgY29uc3QgY2hhciAqZXdrX25vdGlmaWNhdGlvbl90aXRsZV9nZXQoY29uc3QgRXdr
X05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBib2R5
IG9mIHRoZSBub3RpZmljYXRpb24uCisgKgorICogQHBhcmFtIG5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24gb2JqZWN0CisgKgorICogQHJldHVybiB0aGUgYm9keSBzdHJpbmcgcG9pbnRlciBvciBA
YyBOVUxMIGlmIHRoZXJlIGlzIG5vdCBhIGJvZHkKKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tf
bm90aWZpY2F0aW9uX2JvZHlfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKm5vdGlmaWNhdGlv
bik7CisKKy8qKgorICogUmV0dXJucyB0aGUgaWNvbiBVUkwgb2YgdGhlIG5vdGlmaWNhdGlvbi4K
KyAqCisgKiBAcGFyYW0gbm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiBvYmplY3QKKyAqCisgKiBA
cmV0dXJuIHRoZSBpY29uIFVSTCBzdHJpbmcgcG9pbnRlciBvciBAYyBOVUxMIGlmIHRoZXJlIGlz
IG5vdCBhIGljb24gVVJMCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX25vdGlmaWNhdGlvbl9p
Y29uX3VybF9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKTsKKworLyoq
CisgKiBSZXR1cm5zIHRoZSB0YWcgb2YgdGhlIG5vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0g
bm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiBvYmplY3QKKyAqCisgKiBAcmV0dXJuIHRoZSB0YWcg
c3RyaW5nIHBvaW50ZXIgb3IgQGMgTlVMTCBpZiB0aGVyZSBpcyBub3QgYSB0YWcKKyAqLworRUFQ
SSBjb25zdCBjaGFyICpld2tfbm90aWZpY2F0aW9uX3RhZ19nZXQoY29uc3QgRXdrX05vdGlmaWNh
dGlvbiAqbm90aWZpY2F0aW9uKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBsYW5ndWFnZSBvZiB0
aGUgbm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBub3RpZmljYXRpb24gbm90aWZpY2F0aW9u
IG9iamVjdAorICoKKyAqIEByZXR1cm4gdGhlIGxhbmd1YWdlIHN0cmluZyBwb2ludGVyIG9yIEBj
IE5VTEwgaWYgdGhlcmUgaXMgbm90IGEgbGFuZ3VhZ2UKKyAqLworRUFQSSBjb25zdCBjaGFyICpl
d2tfbm90aWZpY2F0aW9uX2xhbmdfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKm5vdGlmaWNh
dGlvbik7CisKKy8qKgorICogUmV0dXJucyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBub3RpZmljYXRp
b24uCisgKgorICogQHBhcmFtIG5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gb2JqZWN0CisgKgor
ICogQHJldHVybiB0aGUgZGlyZWN0aW9uIHN0cmluZyBwb2ludGVyIG9yIEBjIE5VTEwgaWYgdGhl
cmUgaXMgbm90IGEgZGlyZWN0aW9uCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX25vdGlmaWNh
dGlvbl9kaXJfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbik7CisKKy8q
KgorICogUmV0dXJucyB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBub3RpZmljYXRpb24uCisg
KgorICogQHBhcmFtIG5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gb2JqZWN0CisgKgorICogQHJl
dHVybiB0aGUgc2VjdXJpdHkgb3JpZ2luIG9iamVjdCBvciBAYyBOVUxMIGlmIHRoZXJlIGlzIG5v
dCBzZWN1cml0eSBvcmlnaW4KKyAqLworRUFQSSBFd2tfU2VjdXJpdHlfT3JpZ2luICpld2tfbm90
aWZpY2F0aW9uX3NlY3VyaXR5X29yaWdpbl9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiAqbm90
aWZpY2F0aW9uKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBpZCBvZiB0aGUgbm90aWZpY2F0aW9u
LgorICoKKyAqIEBwYXJhbSBub3RpZmljYXRpb24gbm90aWZpY2F0aW9uIG9iamVjdAorICoKKyAq
IEByZXR1cm4gdGhlIGlkIG9mIHRoZSBub3RpZmljYXRpb24KKyAqLworRUFQSSB1aW50NjRfdCBl
d2tfbm90aWZpY2F0aW9uX2lkX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uICpub3RpZmljYXRp
b24pOworCisvKioKKyAqIE5vdGlmeSB0aGUgbm90aWZpY2F0aW9uIHRoYXQgd2FzIHNob3duLgor
ICoKKyAqIEBwYXJhbSBub3RpZmljYXRpb24gbm90aWZpY2F0aW9uIG9iamVjdAorICovCitFQVBJ
IHZvaWQgZXdrX25vdGlmaWNhdGlvbl93YXNfc2hvd24oY29uc3QgRXdrX05vdGlmaWNhdGlvbiAq
bm90aWZpY2F0aW9uKTsKKworLyoqCisgKiBOb3RpZnkgdGhlIG5vdGlmaWNhdGlvbiB0aGF0IHdh
cyBjbGlja2VkLgorICoKKyAqIEBwYXJhbSBub3RpZmljYXRpb24gbm90aWZpY2F0aW9uIG9iamVj
dAorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl93YXNfY2xpY2tlZChjb25zdCBFd2tf
Tm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pOworCisvKioKKyAqIE5vdGlmeSB0aGUgbm90aWZp
Y2F0aW9uIHRoYXQgd2FzIGNsb3NlZC4KKyAqCisgKiBAcGFyYW0gbm90aWZpY2F0aW9uIG5vdGlm
aWNhdGlvbiBvYmplY3QKKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fd2FzX2Nsb3Nl
ZChjb25zdCBFd2tfTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pOworCisjaWZkZWYgX19jcGx1
c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX25vdGlmaWNhdGlvbl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uX3Bl
cm1pc3Npb25fcmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUwN2U5
ZmUzOGYyOTJhNzc2NmVkMjRhOTZiZmY0YmU3ODc5N2RhMgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb25fcGVybWlzc2lv
bl9yZXF1ZXN0LmNwcApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9u
X3Blcm1pc3Npb25fcmVxdWVzdC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNp
bmNsdWRlICJXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiZXdr
X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3
a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
CitFd2tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RXdrTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QoV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiB3a1Blcm1pc3Np
b25SZXF1ZXN0LCBXS1NlY3VyaXR5T3JpZ2luUmVmKQorICAgIDogbV93a1Blcm1pc3Npb25SZXF1
ZXN0KHdrUGVybWlzc2lvblJlcXVlc3QpCit7Cit9CisKK0V3a19TZWN1cml0eV9PcmlnaW4qIGV3
a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X3NlY3VyaXR5X29yaWdpbl9nZXQoY29u
c3QgRXdrX05vdGlmaWNhdGlvbl9QZXJtaXNzaW9uX1JlcXVlc3QqIHBlcm1pc3Npb25SZXF1ZXN0
KQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a05vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0LCBwZXJtaXNzaW9uUmVxdWVzdCwgaW1wbCwgbnVsbHB0cik7CisK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIGV3
a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X2FsbG93ZWRfc2V0KEV3a19Ob3RpZmlj
YXRpb25fUGVybWlzc2lvbl9SZXF1ZXN0KiBwZXJtaXNzaW9uUmVxdWVzdCwgRWluYV9Cb29sKQor
eworICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKEV3a05vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0LCBwZXJtaXNzaW9uUmVxdWVzdCwgaW1wbCk7CisKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTMxNDE5NjQyMWYyY2IzODgwY2I1NmEyMGIzMTQ4NDIyZTA5MTYzZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRp
b25fcGVybWlzc2lvbl9yZXF1ZXN0LmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19ub3RpZmljYXRpb25fcGVy
bWlzc2lvbl9yZXF1ZXN0LmgKKyAqIEBicmllZiAgIFBlcm1pc3Npb24gcmVxdWVzdCBBUEkgZm9y
IFdlYiBOb3RpZmljYXRpb24uCisgKgorICogV2ViIG5vdGlmaWNhdGlvbnMgZGVmaW5lcyBhbiBB
UEkgZm9yIGVuZC11c2VyIG5vdGlmaWNhdGlvbnMuCisgKiBBIG5vdGlmaWNhdGlvbiBhbGxvd3Mg
YWxlcnRpbmcgdGhlIHVzZXIgb3V0c2lkZSB0aGUgY29udGV4dCBvZiBhIHdlYiBwYWdlCisgKiBv
ZiBhbiBvY2N1cnJlbmNlLCBzdWNoIGFzIHRoZSBkZWxpdmVyeSBvZiBlbWFpbC4KKyAqLworCisj
aWZuZGVmIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X2gKKyNkZWZpbmUgZXdr
X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfaAorCisjaW5jbHVkZSAiZXdrX3NlY3Vy
aXR5X29yaWdpbi5oIgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlm
CisKKy8qKgorICogRGVjbGFyZSBFd2tfTm90aWZpY2F0aW9uX1Blcm1pc3Npb25fUmVxdWVzdCBh
cyBFd2tfT2JqZWN0LgorICoKKyAqIEBzZWUgRXdrX09iamVjdAorICovCit0eXBlZGVmIHN0cnVj
dCBFd2tPYmplY3QgRXdrX05vdGlmaWNhdGlvbl9QZXJtaXNzaW9uX1JlcXVlc3Q7CisKKy8qKgor
ICogUmV0dXJucyB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBub3RpZmljYXRpb24gcGVybWlz
c2lvbiByZXF1ZXN0LgorICoKKyAqIEBwYXJhbSBwZXJtaXNzaW9uX3JlcXVlc3Qgbm90aWZpY2F0
aW9uIHBlcm1pc3Npb24gcmVxdWVzdCBvYmplY3QKKyAqCisgKiBAcmV0dXJuIHRoZSBzZWN1cml0
eSBvcmlnaW4gb2JqZWN0IG9yIEBjIE5VTEwgaWYgdGhlcmUgaXMgbm90IHNlY3VyaXR5IG9yaWdp
bgorICovCitFQVBJIEV3a19TZWN1cml0eV9PcmlnaW4gKmV3a19ub3RpZmljYXRpb25fcGVybWlz
c2lvbl9yZXF1ZXN0X3NlY3VyaXR5X29yaWdpbl9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbl9Q
ZXJtaXNzaW9uX1JlcXVlc3QgKnBlcm1pc3Npb25fcmVxdWVzdCk7CisKKy8qKgorICogQWxsb3cg
LyBEZW55IHRoZSBub3RpZmljYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0LgorICoKKyAqIEBwYXJh
bSBwZXJtaXNzaW9uX3JlcXVlc3Qgbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdCBvYmpl
Y3QKKyAqIEBwYXJhbSBhbGxvdyBhbGxvdy9kZW55IG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9uIHJl
cXVlc3QKKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0
X2FsbG93ZWRfc2V0KEV3a19Ob3RpZmljYXRpb25fUGVybWlzc2lvbl9SZXF1ZXN0ICpwZXJtaXNz
aW9uX3JlcXVlc3QsIEVpbmFfQm9vbCBhbGxvdyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQor
I2VuZGlmCisKKyNlbmRpZiAvLyBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZp
Y2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9wcml2YXRl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDNlNGY1YmViNjQ3MTFlNTg0ODkzNjgxYTc1NTliZWMwNGVmNGQwOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19u
b3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X3ByaXZhdGUuaApAQCAtMCwwICsxLDUxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX25vdGlmaWNh
dGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19ub3RpZmljYXRp
b25fcGVybWlzc2lvbl9yZXF1ZXN0X3ByaXZhdGVfaAorCisjaW5jbHVkZSAiZXdrX29iamVjdF9w
cml2YXRlLmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQy
L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitjbGFzcyBFd2tTZWN1
cml0eU9yaWdpbjsKKworY2xhc3MgRXdrTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgOiBw
dWJsaWMgRXdrT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBFV0tfT0JKRUNUX0RFQ0xBUkUoRXdrTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpCisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gY3JlYXRlKFdLTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RSZWYgd2tQZXJtaXNzaW9uUmVxdWVzdCwgV0tTZWN1cml0eU9yaWdpblJlZiB3
a09yaWdpbikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3Qod2tQZXJtaXNzaW9uUmVxdWVzdCwgd2tPcmlnaW4pKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgRXdrTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiwgV0tTZWN1cml0eU9yaWdpblJlZik7CisK
KyAgICBXS1JldGFpblB0cjxXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmPiBtX3dr
UGVybWlzc2lvblJlcXVlc3Q7Cit9OworCisjZW5kaWYgLy8gZXdrX25vdGlmaWNhdGlvbl9wZXJt
aXNzaW9uX3JlcXVlc3RfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb25fcHJpdmF0ZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNlZWU4YjBjNDkyMGI1NWEwNTcwY2Y5OTA5ZTUzYmEzNjZjODY2N2IKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uX3By
aXZhdGUuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1
bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX25vdGlm
aWNhdGlvbl9wcml2YXRlX2gKKworI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgorI2lu
Y2x1ZGUgImV3a19vYmplY3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworY2xhc3MgRXdrU2VjdXJpdHlPcmlnaW47CitjbGFzcyBFd2tWaWV3OworCitjbGFzcyBF
d2tOb3RpZmljYXRpb24gOiBwdWJsaWMgRXdrT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBFV0tfT0JK
RUNUX0RFQ0xBUkUoRXdrTm90aWZpY2F0aW9uKQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RXdr
Tm90aWZpY2F0aW9uPiBjcmVhdGUoV0tOb3RpZmljYXRpb25SZWYgd2tOb3RpZmljYXRpb24sIEV3
a1ZpZXcqIGV3a1ZpZXcpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a05v
dGlmaWNhdGlvbih3a05vdGlmaWNhdGlvbiwgZXdrVmlldykpOworICAgIH0KKworICAgIEV3a1Zp
ZXcqIGV3a1ZpZXcoKSBjb25zdCB7IHJldHVybiBtX2V3a1ZpZXc7IH0KKyAgICB2b2lkIGludmFs
aWRhdGUoKTsKKworcHJpdmF0ZToKKyAgICBFd2tOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25S
ZWYsIEV3a1ZpZXcqKTsKKworICAgIFdLUmV0YWluUHRyPFdLTm90aWZpY2F0aW9uUmVmPiBtX3dr
Tm90aWZpY2F0aW9uOworICAgIEV3a1ZpZXcqIG1fZXdrVmlldzsKK307CisKKyNlbmRpZiAvLyBl
d2tfbm90aWZpY2F0aW9uX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9Ob3RpZmljYXRpb25Qcm92aWRlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL05vdGlmaWNhdGlvblByb3ZpZGVyRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGZi
MjlkMzRkMTVmMjU3NTFjM2JmOGUxN2E5ZmFjMmJmNDc2ZDBiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Ob3RpZmljYXRpb25Qcm92aWRlckVmbC5jcHAK
QEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0
cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJvdmlkZXJFZmwuaCIKKworI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQorCisjaW5jbHVkZSAiRXdrVmlldy5oIgorI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCisjaW5jbHVkZSAiV0tOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJXS05vdGlm
aWNhdGlvbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJXS05vdGlmaWNhdGlvblByb3ZpZGVyLmgiCisj
aW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK3N0YXRpYyBpbmxpbmUgTm90aWZpY2F0aW9uUHJvdmlkZXJFZmwqIHRvTm90aWZp
Y2F0aW9uUHJvdmlkZXJFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uUHJvdmlkZXJFZmwqPihjb25zdF9jYXN0PHZvaWQqPihj
bGllbnRJbmZvKSk7Cit9CisKK05vdGlmaWNhdGlvblByb3ZpZGVyRWZsOjpOb3RpZmljYXRpb25Q
cm92aWRlckVmbChXS0NvbnRleHRSZWYgY29udGV4dCkKKyAgICA6IG1fbm90aWZpY2F0aW9uTWFu
YWdlcihXS0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKGNvbnRleHQpKQoreworICAgIEFT
U0VSVChtX25vdGlmaWNhdGlvbk1hbmFnZXIpOworCisgICAgV0tOb3RpZmljYXRpb25Qcm92aWRl
clYwIHdrTm90aWZpY2F0aW9uUHJvdmlkZXIgPSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIDAs
IC8vIHZlcnNpb24KKyAgICAgICAgICAgIHRoaXMsIC8vIGNsaWVudEluZm8KKyAgICAgICAgfSwK
KyAgICAgICAgc2hvdywKKyAgICAgICAgY2FuY2VsLAorICAgICAgICBkaWREZXN0cm95Tm90aWZp
Y2F0aW9uLAorICAgICAgICAwLCAvLyBhZGROb3RpZmljYXRpb25NYW5hZ2VyCisgICAgICAgIDAs
IC8vIHJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIKKyAgICAgICAgMCwgLy8gbm90aWZpY2F0aW9u
UGVybWlzc2lvbnMKKyAgICAgICAgY2xlYXJOb3RpZmljYXRpb25zCisgICAgfTsKKworICAgIFdL
Tm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKG1fbm90aWZpY2F0aW9uTWFuYWdlci5nZXQo
KSwgJndrTm90aWZpY2F0aW9uUHJvdmlkZXIuYmFzZSk7Cit9CisKK05vdGlmaWNhdGlvblByb3Zp
ZGVyRWZsOjp+Tm90aWZpY2F0aW9uUHJvdmlkZXJFZmwoKQoreworICAgIFdLTm90aWZpY2F0aW9u
TWFuYWdlclNldFByb3ZpZGVyKG1fbm90aWZpY2F0aW9uTWFuYWdlci5nZXQoKSwgMCk7Cit9CisK
K3ZvaWQgTm90aWZpY2F0aW9uUHJvdmlkZXJFZmw6OnNob3coV0tQYWdlUmVmLCBXS05vdGlmaWNh
dGlvblJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBOb3RpZmljYXRpb25Qcm92aWRlckVmbDo6Y2FuY2VsKFdLTm90aWZpY2F0aW9uUmVmLCBjb25z
dCB2b2lkKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE5vdGlmaWNhdGlv
blByb3ZpZGVyRWZsOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uUmVmLCBj
b25zdCB2b2lkKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE5vdGlmaWNh
dGlvblByb3ZpZGVyRWZsOjpjbGVhck5vdGlmaWNhdGlvbnMoV0tBcnJheVJlZiwgY29uc3Qgdm9p
ZCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShOT1RJ
RklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Ob3Rp
ZmljYXRpb25Qcm92aWRlckVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Ob3Rp
ZmljYXRpb25Qcm92aWRlckVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmY2RhYTk0MzE4MTE2Yzg0M2YxZjFh
YTVkYzI0ZjI3MmYzMDZiNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL05vdGlmaWNhdGlvblByb3ZpZGVyRWZsLmgKQEAgLTAsMCArMSw2MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvblByb3ZpZGVyRWZsX2gKKyNk
ZWZpbmUgTm90aWZpY2F0aW9uUHJvdmlkZXJFZmxfaAorCisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYktpdDIv
V0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCitjbGFzcyBFd2tOb3Rp
ZmljYXRpb247CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOb3RpZmljYXRpb25Qcm92
aWRlckVmbCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTm90aWZpY2F0aW9uUHJvdmlkZXJFZmwo
V0tDb250ZXh0UmVmKTsKKyAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25Qcm92aWRlckVmbCgpOwor
CisgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG5vdGlmaWNhdGlvbk1hbmFnZXIoKSBjb25z
dCB7IHJldHVybiBtX25vdGlmaWNhdGlvbk1hbmFnZXIuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAg
ICBzdGF0aWMgdm9pZCBzaG93KFdLUGFnZVJlZiwgV0tOb3RpZmljYXRpb25SZWYsIGNvbnN0IHZv
aWQqKTsKKyAgICBzdGF0aWMgdm9pZCBjYW5jZWwoV0tOb3RpZmljYXRpb25SZWYsIGNvbnN0IHZv
aWQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdLTm90aWZpY2F0
aW9uUmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgY2xlYXJOb3RpZmljYXRpb25z
KFdLQXJyYXlSZWYsIGNvbnN0IHZvaWQqKTsKKworICAgIFdLUmV0YWluUHRyPFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZj4gbV9ub3RpZmljYXRpb25NYW5hZ2VyOworICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxFd2tOb3RpZmljYXRpb24+PiBtX25vdGlmaWNhdGlvbk1hcDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisK
KyNlbmRpZiAvLyBOb3RpZmljYXRpb25Qcm92aWRlckVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHAKaW5kZXggZmUxMTZlOTdkNjM5MmVk
MzAyYWU0YTM0NDFkOWY2YzE1YWViNDMyYy4uZDI2YTcxNjMyYTNiNTM0OTUwY2EwMDQ2NjU3ZTAw
ZTE5YTgyYTMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdl
VUlDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJ
Q2xpZW50RWZsLmNwcApAQCAtMzYsNiArMzYsMTAgQEAKICNpbmNsdWRlICJld2tfd2luZG93X2Zl
YXR1cmVzX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVx
dWVzdF9wcml2YXRlLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFj
a3M7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzgsNiArODIsOSBAQCBQYWdlVUlDbGllbnRF
Zmw6OlBhZ2VVSUNsaWVudEVmbChFd2tWaWV3KiB2aWV3KQogI2VuZGlmCiAgICAgdWlDbGllbnQu
cnVuT3BlblBhbmVsID0gcnVuT3BlblBhbmVsOwogICAgIHVpQ2xpZW50LmNyZWF0ZU5ld1BhZ2Ug
PSBjcmVhdGVOZXdQYWdlOworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHVpQ2xpZW50
LmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0ID0gZGVjaWRlUG9s
aWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisjZW5kaWYKIAogICAgIFdLUGFn
ZVNldFBhZ2VVSUNsaWVudChwYWdlUmVmLCAmdWlDbGllbnQuYmFzZSk7CiAKQEAgLTIyMSw2ICsy
MjgsMTUgQEAgV0tQYWdlUmVmIFBhZ2VVSUNsaWVudEVmbDo6Y3JlYXRlTmV3UGFnZShXS1BhZ2VS
ZWYsIFdLVVJMUmVxdWVzdFJlZiB3a1JlcXVlc3QsIFcKICAgICByZXR1cm4gdG9QYWdlVUlDbGll
bnRFZmwoY2xpZW50SW5mbyktPm1fdmlldy0+Y3JlYXRlTmV3UGFnZShyZXF1ZXN0LCB3a1dpbmRv
d0ZlYXR1cmVzKTsKIH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQordm9pZCBQYWdlVUlD
bGllbnRFZmw6OmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdL
UGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiB3a09yaWdpbiwgV0tOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFJlZiB3a1Blcm1pc3Npb25SZXF1ZXN0LCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQoreworICAgIEV3a1ZpZXcqIHZpZXcgPSB0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZv
KS0+bV92aWV3OworICAgIFJlZlB0cjxFd2tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4g
cGVybWlzc2lvblJlcXVlc3QgPSBFd2tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3Jl
YXRlKHdrUGVybWlzc2lvblJlcXVlc3QsIHdrT3JpZ2luKTsKKyAgICB2aWV3LT5zbWFydENhbGxi
YWNrPEV3a1ZpZXdDYWxsYmFja3M6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0PigpLmNh
bGwocGVybWlzc2lvblJlcXVlc3QuZ2V0KCkpOworfQorI2VuZGlmCisKIHZvaWQgUGFnZVVJQ2xp
ZW50RWZsOjpzaG93UG9wdXBNZW51KFdLUGFnZVJlZiwgV0tQb3B1cE1lbnVMaXN0ZW5lclJlZiBt
ZW51TGlzdGVuZXJSZWYsIFdLUmVjdCByZWN0LCBXS1BvcHVwSXRlbVRleHREaXJlY3Rpb24gdGV4
dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgV0tBcnJheVJlZiBpdGVtc1JlZiwg
aW50MzJfdCBzZWxlY3RlZEluZGV4LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIHJl
dHVybiB0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3LT5yZXF1ZXN0UG9wdXBN
ZW51KG1lbnVMaXN0ZW5lclJlZiwgcmVjdCwgdGV4dERpcmVjdGlvbiwgcGFnZVNjYWxlRmFjdG9y
LCBpdGVtc1JlZiwgc2VsZWN0ZWRJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlVUlDbGllbnRFZmwuaAppbmRleCBiZjA1MDRkYTY2ZTU5ZTYyY2FiMDJiMjQ3MzE1
MDY4Y2MxZTI2ZGU4Li5hYzFlNDVlNWQwNGI3MWMyOTkwNzBiNWU2ZGRkMzIxYTE1ZDZmZDMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmgKQEAg
LTYzLDYgKzYzLDkgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0YXRpYyB2b2lkIHJ1bk9wZW5Q
YW5lbChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiwgV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBXS1Bh
Z2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiwgV0tEaWN0aW9u
YXJ5UmVmLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24sIGNvbnN0IHZvaWQq
KTsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWMgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlP
cmlnaW5SZWYsIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYsIGNvbnN0IHZvaWQq
KTsKKyNlbmRpZgogCiAgICAgc3RhdGljIHZvaWQgc2hvd1BvcHVwTWVudShXS1BhZ2VSZWYsIFdL
UG9wdXBNZW51TGlzdGVuZXJSZWYsIFdLUmVjdCwgV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uLCBk
b3VibGUgcGFnZVNjYWxlRmFjdG9yLCBXS0FycmF5UmVmIGl0ZW1zUmVmLCBpbnQzMl90IHNlbGVj
dGVkSW5kZXgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIGhpZGVQ
b3B1cE1lbnUoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMmI1Njc5ZTA5OTM4M2Y4
NThkOTI1NzhlMjYxYzczYjYwMjY4MzIyLi5iNWEzMTE5OGVlMTc0ZWZlM2RkYzFjNzhlYTcxZDZk
ZWIwYTQwN2IwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDQtMjEgIFNhbmdZb25nIFBhcmsgIDxzeTMwMi5w
YXJrQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gSW1wbGVtZW50IHdlYiBub3Rp
ZmljYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzE0ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbTogRW5hYmxlIHRoZSBXZWIgTm90
aWZpY2F0aW9ucyBmZWF0dXJlIGZvciB0aGUgRUZMIHBvcnQuCisKIDIwMTQtMDQtMjAgIERhbiBC
ZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXhlZCBhIHRlc3QgdGltaW5n
IG91dCBhZnRlciByMTY3NTcyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBt
CmluZGV4IDFiYmZjNjRkZWU1YTE0YTFiMzRmOGE2NjU2NmQ2NmZjYWE5MjdjOTAuLmJjZDExZDQz
YTQyODdhNmJmMTBhZmVjMTI4YTFmODViYzI4Zjg2MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvRmVhdHVyZUxpc3QucG0KQEAgLTM0OCw3ICszNDgsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAg
ICAgICBkZWZpbmUgPT4gIkVOQUJMRV9OT1NOSUZGIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBc
JG5vc25pZmZTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibm90aWZpY2F0aW9ucyIsIGRl
c2MgPT4gIlRvZ2dsZSBOb3RpZmljYXRpb25zIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJF
TkFCTEVfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRub3RpZmljYXRp
b25zU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTk9USUZJQ0FUSU9OUyIsIGRl
ZmF1bHQgPT4gaXNFZmwoKSwgdmFsdWUgPT4gXCRub3RpZmljYXRpb25zU3VwcG9ydCB9LAogCiAg
ICAgeyBvcHRpb24gPT4gIm9yaWVudGF0aW9uLWV2ZW50cyIsIGRlc2MgPT4gIlRvZ2dsZSBPcmll
bnRhdGlvbiBFdmVudHMgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9PUklFTlRB
VElPTl9FVkVOVFMiLCBkZWZhdWx0ID0+IGlzSU9TV2ViS2l0KCksIHZhbHVlID0+IFwkb3JpZW50
YXRpb25FdmVudHNTdXBwb3J0IH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231491</attachid>
            <date>2014-05-14 22:27:40 -0700</date>
            <delta_ts>2014-06-23 18:33:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131483-20140515142715.patch</filename>
            <type>text/plain</type>
            <size>39979</size>
            <attacher name="SangYong Park">sy302.park</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGNhNmJkMWI5NjZkMjY0
MDUwYjcyNzEyNWIwMDA4NWU5NDNmZjMzMC4uMmQ1ZTQyOWM4MzNiOTc3OWQ3ZDhhY2MyMjVkNDYx
ZjNkODg4MjhmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE0LTA0LTIxICBTYW5n
WW9uZyBQYXJrICA8c3kzMDIucGFya0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJd
IEltcGxlbWVudCB3ZWIgbm90aWZpY2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkIG5ldyBzb3VyY2Uv
aGVhZGVyIGZpbGVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6IElu
Y2x1ZGUgaGVhZGVyIGZpbGVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdD
YWxsYmFja3MuaDogQWRkIGNhbGxiYWNrIHR5cGUuIChyZXF1ZXN0IG5vdGlmaWNhdGlvbiBwZXJt
aXNzaW9uLCBzaG93L2NhbmNlbCBub3RpZmljYXRpb24pCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHQuY3BwOiBBZGQgbm90aWZpY2F0aW9uIHByb3ZpZGVyLgorICAgICAg
ICAoRXdrQ29udGV4dDo6RXdrQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHRfcHJpdmF0ZS5oOgorICAgICAgICAoRXdrQ29udGV4dDo6bm90aWZpY2F0aW9u
UHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb24u
Y3BwOiBBZGRlZC4gKGV3ayBub3RpZmljYXRpb24gQVBJcykKKyAgICAgICAgKEV3a05vdGlmaWNh
dGlvbjo6RXdrTm90aWZpY2F0aW9uKToKKyAgICAgICAgKEV3a05vdGlmaWNhdGlvbjo6aW52YWxp
ZGF0ZSk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dldCk6CisgICAgICAgIChl
d2tfbm90aWZpY2F0aW9uX2JvZHlfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25faWNv
bl91cmxfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fdGFnX2dldCk6CisgICAgICAg
IChld2tfbm90aWZpY2F0aW9uX2xhbmdfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25f
ZGlyX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3NlY3VyaXR5X29yaWdpbl9nZXQp
OgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9pZF9nZXQpOgorICAgICAgICAoZXdrX25vdGlm
aWNhdGlvbl93YXNfc2hvd24pOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl93YXNfY2xpY2tl
ZCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3dhc19jbG9zZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb24uaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QuY3BwOiBB
ZGRlZC4gKGV3ayBub3RpZmljYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0IEFQSXMpCisgICAgICAg
IChFd2tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RXdrTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVl
c3Rfc2VjdXJpdHlfb3JpZ2luX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3Blcm1p
c3Npb25fcmVxdWVzdF9hbGxvd2VkX3NldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfcHJp
dmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKEV3a05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
OjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb25f
cHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKEV3a05vdGlmaWNhdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKEV3a05vdGlmaWNhdGlvbjo6ZXdrVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL2Vm
bC9Ob3RpZmljYXRpb25Qcm92aWRlckVmbC5jcHA6IEFkZGVkLiAoSW1wbGVtZW50IG5vdGlmaWNh
dGlvbiBwcm92aWRlciBmb3IgZWZsKQorICAgICAgICAodG9Ob3RpZmljYXRpb25Qcm92aWRlckVm
bCk6CisgICAgICAgIChOb3RpZmljYXRpb25Qcm92aWRlckVmbDo6Tm90aWZpY2F0aW9uUHJvdmlk
ZXJFZmwpOgorICAgICAgICAoTm90aWZpY2F0aW9uUHJvdmlkZXJFZmw6On5Ob3RpZmljYXRpb25Q
cm92aWRlckVmbCk6CisgICAgICAgIChOb3RpZmljYXRpb25Qcm92aWRlckVmbDo6c2hvdyk6Cisg
ICAgICAgIChOb3RpZmljYXRpb25Qcm92aWRlckVmbDo6Y2FuY2VsKToKKyAgICAgICAgKE5vdGlm
aWNhdGlvblByb3ZpZGVyRWZsOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKE5v
dGlmaWNhdGlvblByb3ZpZGVyRWZsOjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvTm90aWZpY2F0aW9uUHJvdmlkZXJFZmwuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6Ok5vdGlmaWNhdGlvblByb3ZpZGVyRWZsOjpub3RpZmljYXRpb25NYW5hZ2VyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHA6IEltcGxlbWVudCBkZWNp
ZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCBjYWxsYmFjayBvZiBwYWdl
IHVpIGNsaWVudC4KKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsOjpQYWdlVUlDbGll
bnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVUlDbGllbnRFZmw6OmRlY2lkZVBvbGljeUZv
ck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZs
L1BhZ2VVSUNsaWVudEVmbC5oOgorCiAyMDE0LTA0LTIwICBEYW4gQmVybnN0ZWluICA8bWl0ekBh
cHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBSZW1vdmUgaW50ZXJmYWNlcyBpbiB0aGUgVG8g
QmUgUmVtb3ZlZCBncm91cHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNDljMjE0OWYx
NDA1NzBlNTU4YjUyZjIzNzVkYzE1N2FjMDljMGE4MS4uOGQ3NTY5OWQyYzAwMTYwNDZiOTU1Nzc0
OGYyNTNhYTY1MGZhNGViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTk0LDYgKzk0
LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX21haW4uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fZGF0YS5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24u
Y3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlvbi5jcHAKKyAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdC5jcHAKICAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19wYWdlX2dyb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51
LmNwcApAQCAtMTQwLDYgKzE0Miw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAg
IFVJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0Zvcm1D
bGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9JbnB1dE1ldGhvZENvbnRleHRFZmwuY3Bw
CisgICAgVUlQcm9jZXNzL2VmbC9Ob3RpZmljYXRpb25Qcm92aWRlckVmbC5jcHAKICAgICBVSVBy
b2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvUGFnZVBv
bGljeUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHAK
QEAgLTM3NCw2ICszNzcsOCBAQCBzZXQoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uaCIKICAgICAiJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9u
X2RhdGEuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgorICAgICIke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlvbi5oIgorICAg
ICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlm
aWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19vYmplY3QuaCIKICAgICAiJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYWdlX2dyb3VwLmgiCiAgICAg
IiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBf
bWVudS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdl
YktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5k
ZXggYTljOGExNGU3OGIxZmVlNjkxOTU5Y2QyY2I3MmE1MDVlZmRiZTYzOS4uMmUxZTk5NjdhN2Nj
MDYxNGJlN2U5NmJmNTZiMjgwMmEyN2ZmYjE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC00NSw2ICs0NSw4IEBACiAjaW5jbHVkZSAiZXdrX21h
aW4uaCIKICNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9kYXRhLmgiCiAjaW5jbHVkZSAiZXdrX25h
dmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5o
IgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiZXdrX29iamVjdC5oIgogI2luY2x1ZGUgImV3a19wYWdlX2dyb3VwLmgiCiAjaW5jbHVk
ZSAiZXdrX3BvcHVwX21lbnUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaAppbmRleCA3OGMzMDRkM2ZiMGU4ZGQ5MzFkODAxZjQ4
MDEzMTc5MGJlOGY1ZWZhLi5mMTIzZDBlNzFlNTIzNDMxYjg5ZmE4MmU4YmU5NTQxNjI0MmI4MWMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2Fs
bGJhY2tzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0Nh
bGxiYWNrcy5oCkBAIC0zOSw2ICszOSw4IEBAIHR5cGVkZWYgc3RydWN0IEV3a09iamVjdCBFd2tf
RG93bmxvYWRfSm9iOwogdHlwZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3a19GaWxlX0Nob29zZXJf
UmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0IEV3a09iamVjdCBFd2tfRm9ybV9TdWJtaXNzaW9uX1Jl
cXVlc3Q7CiB0eXBlZGVmIHN0cnVjdCBFd2tPYmplY3QgRXdrX05hdmlnYXRpb25fUG9saWN5X0Rl
Y2lzaW9uOwordHlwZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3a19Ob3RpZmljYXRpb247Cit0eXBl
ZGVmIHN0cnVjdCBFd2tPYmplY3QgRXdrX05vdGlmaWNhdGlvbl9QZXJtaXNzaW9uX1JlcXVlc3Q7
CiB0eXBlZGVmIHN0cnVjdCBFd2tFcnJvciBFd2tfRXJyb3I7CiAKIG5hbWVzcGFjZSBFd2tWaWV3
Q2FsbGJhY2tzIHsKQEAgLTY1LDYgKzY3LDkgQEAgZW51bSBDYWxsYmFja1R5cGUgewogICAgIFN0
YXR1c0JhclZpc2libGUsCiAgICAgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uLAogICAgIE5ld1dp
bmRvd1BvbGljeURlY2lzaW9uLAorICAgIE5vdGlmaWNhdGlvbkNhbmNlbCwKKyAgICBOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKKyAgICBOb3RpZmljYXRpb25TaG93LAogICAgIFRleHRG
b3VuZCwKICAgICBUaXRsZUNoYW5nZSwKICAgICBUb29sYmFyVmlzaWJsZSwKQEAgLTE3NCw2ICsx
NzksOSBAQCBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKFByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQs
ICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCB2bwogREVDTEFSRV9FV0tfVklFV19DQUxMQkFD
SyhNZW51QmFyVmlzaWJsZSwgIm1lbnViYXIsdmlzaWJsZSIsIGJvb2wqKTsKIERFQ0xBUkVfRVdL
X1ZJRVdfQ0FMTEJBQ0soTmF2aWdhdGlvblBvbGljeURlY2lzaW9uLCAicG9saWN5LGRlY2lzaW9u
LG5hdmlnYXRpb24iLCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qKTsKIERFQ0xBUkVf
RVdLX1ZJRVdfQ0FMTEJBQ0soTmV3V2luZG93UG9saWN5RGVjaXNpb24sICJwb2xpY3ksZGVjaXNp
b24sbmV3LHdpbmRvdyIsIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiopOworREVDTEFS
RV9FV0tfVklFV19DQUxMQkFDSyhOb3RpZmljYXRpb25DYW5jZWwsICJub3RpZmljYXRpb24sY2Fu
Y2VsIiwgRXdrX05vdGlmaWNhdGlvbiopOworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwgIm5vdGlmaWNhdGlvbixwZXJtaXNzaW9uLHJlcXVl
c3QiLCBFd2tfTm90aWZpY2F0aW9uX1Blcm1pc3Npb25fUmVxdWVzdCopOworREVDTEFSRV9FV0tf
VklFV19DQUxMQkFDSyhOb3RpZmljYXRpb25TaG93LCAibm90aWZpY2F0aW9uLHNob3ciLCBFd2tf
Tm90aWZpY2F0aW9uKik7CiBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKFN0YXR1c0JhclZpc2li
bGUsICJzdGF0dXNiYXIsdmlzaWJsZSIsIGJvb2wqKTsKIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJB
Q0soVGV4dEZvdW5kLCAidGV4dCxmb3VuZCIsIHVuc2lnbmVkKik7CiBERUNMQVJFX0VXS19WSUVX
X0NBTExCQUNLKFRpdGxlQ2hhbmdlLCAidGl0bGUsY2hhbmdlZCIsIGNvbnN0IGNoYXIqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAppbmRl
eCA0NDhjNmE0MmMyNDA1M2I2OGZjM2U1ZTYyNzFjYzg2MmJjM2Q4ZTBjLi40ZjMwNmFmMGZhY2Uw
M2M5ODYyYjViZjM3NjU0OTdmY2JmMDk4NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVk
ZSAiQmF0dGVyeVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiQ29udGV4dEhpc3RvcnlDbGllbnRFZmwu
aCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXJFZmwuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRp
b25Qcm92aWRlckVmbC5oIgogI2luY2x1ZGUgIlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5oIgpAQCAt
NzMsNiArNzQsOSBAQCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0
KQogICAgICwgbV9kb3dubG9hZE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZE1hbmFn
ZXJFZmw+KGNvbnRleHQpKQogICAgICwgbV9yZXF1ZXN0TWFuYWdlckNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsPihjb250ZXh0KSkKICAgICAsIG1faGlzdG9y
eUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRIaXN0b3J5Q2xpZW50RWZsPihjb250ZXh0
KSkKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICAsIG1fbm90aWZpY2F0aW9uUHJvdmlk
ZXIoc3RkOjptYWtlX3VuaXF1ZTxOb3RpZmljYXRpb25Qcm92aWRlckVmbD4oY29udGV4dCkpCisj
ZW5kaWYKICAgICAsIG1fanNHbG9iYWxDb250ZXh0KG51bGxwdHIpCiB7CiAgICAgQ29udGV4dE1h
cDo6QWRkUmVzdWx0IHJlc3VsdCA9IGNvbnRleHRNYXAoKS5hZGQoY29udGV4dCwgdGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9w
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9w
cml2YXRlLmgKaW5kZXggYzI4OTVjMGY3Yzk4YzhiYTk2ZmI5ZjE4YmUxYWQ0ZjkxMzhiODIzMS4u
MzczMDNiMzUxYTUwNzI3Y2QwMDA0Y2Y0MmVjNmE0NGUzNDU4YmU2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaApA
QCAtNDEsNiArNDEsOSBAQCBjbGFzcyBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDsKICNpZiBFTkFC
TEUoQkFUVEVSWV9TVEFUVVMpCiBjbGFzcyBCYXR0ZXJ5UHJvdmlkZXI7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKK2NsYXNzIE5vdGlmaWNhdGlvblByb3ZpZGVyRWZsOworI2Vu
ZGlmCiB9CiAKIGNsYXNzIEV3a0NvbnRleHQgOiBwdWJsaWMgRXdrT2JqZWN0IHsKQEAgLTk5LDYg
KzEwMiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
Q2FsbGJhY2soRXdrX0NvbnRleHRfTWVzc2FnZV9Gcm9tX0luamVjdGVkX0J1bmRsZV9DYiwgdm9p
ZCopOwogICAgIHZvaWQgcHJvY2Vzc1JlY2VpdmVkTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShX
S1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVSZWYq
IHJldHVybkRhdGEpOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgV2ViS2l0OjpO
b3RpZmljYXRpb25Qcm92aWRlckVmbCogbm90aWZpY2F0aW9uUHJvdmlkZXIoKSBjb25zdCB7IHJl
dHVybiBtX25vdGlmaWNhdGlvblByb3ZpZGVyLmdldCgpOyB9CisjZW5kaWYKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBFd2tDb250ZXh0KFdLQ29udGV4dFJlZik7CiAKQEAgLTExOSw2ICsxMjYs
MTAgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkNvbnRleHRIaXN0
b3J5Q2xpZW50RWZsPiBtX2hpc3RvcnlDbGllbnQ7CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpOb3RpZmljYXRpb25Qcm92aWRlckVmbD4g
bV9ub3RpZmljYXRpb25Qcm92aWRlcjsKKyNlbmRpZgorCiAgICAgSlNHbG9iYWxDb250ZXh0UmVm
IG1fanNHbG9iYWxDb250ZXh0OwogCiAgICAgc3RydWN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlvbi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzFjOTg0Y2E3NGFmMTE3NTE0NGY2MWMxNzc0ZGFlZWIxMDUzNDdhOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb24uY3Bw
CkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxl
Y3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCisKKyNpbmNs
dWRlICJFd2tWaWV3LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJO
b3RpZmljYXRpb25Qcm92aWRlckVmbC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1
ZGUgIldLTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgi
CisjaW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgi
CisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3Nl
Y3VyaXR5X29yaWdpbl9wcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0V3
a05vdGlmaWNhdGlvbjo6RXdrTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uUmVmIHdrTm90aWZp
Y2F0aW9uLCBFd2tWaWV3KiBld2tWaWV3KQorICAgIDogbV93a05vdGlmaWNhdGlvbih3a05vdGlm
aWNhdGlvbikKKyAgICAsIG1fZXdrVmlldyhld2tWaWV3KQoreworfQorCit2b2lkIEV3a05vdGlm
aWNhdGlvbjo6aW52YWxpZGF0ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworY29u
c3QgY2hhciogZXdrX25vdGlmaWNhdGlvbl90aXRsZV9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uKQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0
IEV3a05vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLCBpbXBsLCBudWxscHRyKTsKKworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2NvbnN0IGNoYXIqIGV3
a19ub3RpZmljYXRpb25fYm9keV9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogbm90aWZpY2F0
aW9uKQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a05vdGlmaWNh
dGlvbiwgbm90aWZpY2F0aW9uLCBpbXBsLCBudWxscHRyKTsKKworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3RpZmljYXRp
b25faWNvbl91cmxfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sK
KyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihjb25zdCBFd2tOb3RpZmljYXRpb24sIG5v
dGlmaWNhdGlvbiwgaW1wbCwgbnVsbHB0cik7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitjb25zdCBjaGFyKiBld2tfbm90aWZpY2F0aW9uX3RhZ19n
ZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIEVXS19PQkpf
R0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a05vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLCBp
bXBsLCBudWxscHRyKTsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3RpZmljYXRpb25fbGFuZ19nZXQoY29uc3QgRXdr
X05vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1Jf
UkVUVVJOKGNvbnN0IEV3a05vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLCBpbXBsLCBudWxscHRy
KTsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Nv
bnN0IGNoYXIqIGV3a19ub3RpZmljYXRpb25fZGlyX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9u
KiBub3RpZmljYXRpb24pCit7CisgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oY29uc3Qg
RXdrTm90aWZpY2F0aW9uLCBub3RpZmljYXRpb24sIGltcGwsIG51bGxwdHIpOworCisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworRXdrX1NlY3VyaXR5X09y
aWdpbiogZXdrX25vdGlmaWNhdGlvbl9zZWN1cml0eV9vcmlnaW5fZ2V0KGNvbnN0IEV3a19Ob3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVS
Tihjb25zdCBFd2tOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbiwgaW1wbCwgbnVsbHB0cik7CisK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit1aW50NjRf
dCBld2tfbm90aWZpY2F0aW9uX2lkX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pCit7CisgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oY29uc3QgRXdrTm90aWZp
Y2F0aW9uLCBub3RpZmljYXRpb24sIGltcGwsIDApOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gMDsKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX3dhc19zaG93bihjb25z
dCBFd2tfTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgRVdLX09CSl9HRVRfSU1Q
TF9PUl9SRVRVUk4oY29uc3QgRXdrTm90aWZpY2F0aW9uLCBub3RpZmljYXRpb24sIGltcGwpOwor
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX3dhc19j
bGlja2VkKGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBFV0tf
T0JKX0dFVF9JTVBMX09SX1JFVFVSTihjb25zdCBFd2tOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlv
biwgaW1wbCk7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIGV3a19ub3RpZmlj
YXRpb25fd2FzX2Nsb3NlZChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7
CisgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oY29uc3QgRXdrTm90aWZpY2F0aW9uLCBu
b3RpZmljYXRpb24sIGltcGwpOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wYmZlZDgwOTI0OWM2OGIxMzQ2NGI1ODc3OTlkNjE0NTIxZWMyMjEzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNh
dGlvbi5oCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1
bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKy8qKgorICogQGZpbGUgICAgZXdrX25vdGlmaWNhdGlvbi5oCisgKiBAYnJpZWYgICBXZWIg
Tm90aWZpY2F0aW9uIEFQSS4KKyAqCisgKiBXZWIgbm90aWZpY2F0aW9ucyBkZWZpbmVzIGFuIEFQ
SSBmb3IgZW5kLXVzZXIgbm90aWZpY2F0aW9ucy4KKyAqIEEgbm90aWZpY2F0aW9uIGFsbG93cyBh
bGVydGluZyB0aGUgdXNlciBvdXRzaWRlIHRoZSBjb250ZXh0IG9mIGEgd2ViIHBhZ2UKKyAqIG9m
IGFuIG9jY3VycmVuY2UsIHN1Y2ggYXMgdGhlIGRlbGl2ZXJ5IG9mIGVtYWlsLgorICovCisKKyNp
Zm5kZWYgZXdrX25vdGlmaWNhdGlvbl9oCisjZGVmaW5lIGV3a19ub3RpZmljYXRpb25faAorCisj
aW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKKy8qKgorICogRGVjbGFyZSBFd2tfTm90aWZpY2F0aW9uIGFz
IEV3a19PYmplY3QuCisgKgorICogQHNlZSBFd2tfT2JqZWN0CisgKi8KK3R5cGVkZWYgc3RydWN0
IEV3a09iamVjdCBFd2tfTm90aWZpY2F0aW9uOworCisvKioKKyAqIFJldHVybnMgdGhlIHRpdGxl
IG9mIHRoZSBub3RpZmljYXRpb24uCisgKgorICogQHBhcmFtIG5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24gb2JqZWN0CisgKgorICogQHJldHVybiB0aGUgdGl0bGUgc3RyaW5nIHBvaW50ZXIgb3Ig
QGMgTlVMTCBpZiB0aGVyZSBpcyBub3QgYSB0aXRsZQorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3
a19ub3RpZmljYXRpb25fdGl0bGVfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKm5vdGlmaWNh
dGlvbik7CisKKy8qKgorICogUmV0dXJucyB0aGUgYm9keSBvZiB0aGUgbm90aWZpY2F0aW9uLgor
ICoKKyAqIEBwYXJhbSBub3RpZmljYXRpb24gbm90aWZpY2F0aW9uIG9iamVjdAorICoKKyAqIEBy
ZXR1cm4gdGhlIGJvZHkgc3RyaW5nIHBvaW50ZXIgb3IgQGMgTlVMTCBpZiB0aGVyZSBpcyBub3Qg
YSBib2R5CisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX25vdGlmaWNhdGlvbl9ib2R5X2dldChj
b25zdCBFd2tfTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pOworCisvKioKKyAqIFJldHVybnMg
dGhlIGljb24gVVJMIG9mIHRoZSBub3RpZmljYXRpb24uCisgKgorICogQHBhcmFtIG5vdGlmaWNh
dGlvbiBub3RpZmljYXRpb24gb2JqZWN0CisgKgorICogQHJldHVybiB0aGUgaWNvbiBVUkwgc3Ry
aW5nIHBvaW50ZXIgb3IgQGMgTlVMTCBpZiB0aGVyZSBpcyBub3QgYSBpY29uIFVSTAorICovCitF
QVBJIGNvbnN0IGNoYXIgKmV3a19ub3RpZmljYXRpb25faWNvbl91cmxfZ2V0KGNvbnN0IEV3a19O
b3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbik7CisKKy8qKgorICogUmV0dXJucyB0aGUgdGFnIG9m
IHRoZSBub3RpZmljYXRpb24uCisgKgorICogQHBhcmFtIG5vdGlmaWNhdGlvbiBub3RpZmljYXRp
b24gb2JqZWN0CisgKgorICogQHJldHVybiB0aGUgdGFnIHN0cmluZyBwb2ludGVyIG9yIEBjIE5V
TEwgaWYgdGhlcmUgaXMgbm90IGEgdGFnCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX25vdGlm
aWNhdGlvbl90YWdfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbik7CisK
Ky8qKgorICogUmV0dXJucyB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIG5vdGlmaWNhdGlvbi4KKyAqCisg
KiBAcGFyYW0gbm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiBvYmplY3QKKyAqCisgKiBAcmV0dXJu
IHRoZSBsYW5ndWFnZSBzdHJpbmcgcG9pbnRlciBvciBAYyBOVUxMIGlmIHRoZXJlIGlzIG5vdCBh
IGxhbmd1YWdlCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX25vdGlmaWNhdGlvbl9sYW5nX2dl
dChjb25zdCBFd2tfTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pOworCisvKioKKyAqIFJldHVy
bnMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgbm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBub3Rp
ZmljYXRpb24gbm90aWZpY2F0aW9uIG9iamVjdAorICoKKyAqIEByZXR1cm4gdGhlIGRpcmVjdGlv
biBzdHJpbmcgcG9pbnRlciBvciBAYyBOVUxMIGlmIHRoZXJlIGlzIG5vdCBhIGRpcmVjdGlvbgor
ICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19ub3RpZmljYXRpb25fZGlyX2dldChjb25zdCBFd2tf
Tm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pOworCisvKioKKyAqIFJldHVybnMgdGhlIHNlY3Vy
aXR5IG9yaWdpbiBvZiB0aGUgbm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBub3RpZmljYXRp
b24gbm90aWZpY2F0aW9uIG9iamVjdAorICoKKyAqIEByZXR1cm4gdGhlIHNlY3VyaXR5IG9yaWdp
biBvYmplY3Qgb3IgQGMgTlVMTCBpZiB0aGVyZSBpcyBub3Qgc2VjdXJpdHkgb3JpZ2luCisgKi8K
K0VBUEkgRXdrX1NlY3VyaXR5X09yaWdpbiAqZXdrX25vdGlmaWNhdGlvbl9zZWN1cml0eV9vcmln
aW5fZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbik7CisKKy8qKgorICog
UmV0dXJucyB0aGUgaWQgb2YgdGhlIG5vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gbm90aWZp
Y2F0aW9uIG5vdGlmaWNhdGlvbiBvYmplY3QKKyAqCisgKiBAcmV0dXJuIHRoZSBpZCBvZiB0aGUg
bm90aWZpY2F0aW9uCisgKi8KK0VBUEkgdWludDY0X3QgZXdrX25vdGlmaWNhdGlvbl9pZF9nZXQo
Y29uc3QgRXdrX05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKTsKKworLyoqCisgKiBOb3RpZnkg
dGhlIG5vdGlmaWNhdGlvbiB0aGF0IHdhcyBzaG93bi4KKyAqCisgKiBAcGFyYW0gbm90aWZpY2F0
aW9uIG5vdGlmaWNhdGlvbiBvYmplY3QKKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25f
d2FzX3Nob3duKGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbik7CisKKy8qKgor
ICogTm90aWZ5IHRoZSBub3RpZmljYXRpb24gdGhhdCB3YXMgY2xpY2tlZC4KKyAqCisgKiBAcGFy
YW0gbm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiBvYmplY3QKKyAqLworRUFQSSB2b2lkIGV3a19u
b3RpZmljYXRpb25fd2FzX2NsaWNrZWQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiAqbm90aWZpY2F0
aW9uKTsKKworLyoqCisgKiBOb3RpZnkgdGhlIG5vdGlmaWNhdGlvbiB0aGF0IHdhcyBjbG9zZWQu
CisgKgorICogQHBhcmFtIG5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gb2JqZWN0CisgKi8KK0VB
UEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX3dhc19jbG9zZWQoY29uc3QgRXdrX05vdGlmaWNhdGlv
biAqbm90aWZpY2F0aW9uKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8vIGV3a19ub3RpZmljYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNz
aW9uX3JlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMDdlOWZlMzhmMjkyYTc3NjZlZDI0YTk2YmZm
NGJlNzg3OTdkYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdC5jcHAKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QuaCIK
KworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV0tOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb25fcGVybWlzc2lv
bl9yZXF1ZXN0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZh
dGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworRXdrTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3Q6OkV3a05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgd2tQZXJtaXNzaW9uUmVxdWVzdCwgV0tTZWN1cml0eU9y
aWdpblJlZikKKyAgICA6IG1fd2tQZXJtaXNzaW9uUmVxdWVzdCh3a1Blcm1pc3Npb25SZXF1ZXN0
KQoreworfQorCitFd2tfU2VjdXJpdHlfT3JpZ2luKiBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Np
b25fcmVxdWVzdF9zZWN1cml0eV9vcmlnaW5fZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb25fUGVy
bWlzc2lvbl9SZXF1ZXN0KiBwZXJtaXNzaW9uUmVxdWVzdCkKK3sKKyAgICBFV0tfT0JKX0dFVF9J
TVBMX09SX1JFVFVSTihjb25zdCBFd2tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwgcGVy
bWlzc2lvblJlcXVlc3QsIGltcGwsIG51bGxwdHIpOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Np
b25fcmVxdWVzdF9hbGxvd2VkX3NldChFd2tfTm90aWZpY2F0aW9uX1Blcm1pc3Npb25fUmVxdWVz
dCogcGVybWlzc2lvblJlcXVlc3QsIEVpbmFfQm9vbCkKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBM
X09SX1JFVFVSTihFd2tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwgcGVybWlzc2lvblJl
cXVlc3QsIGltcGwpOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19ub3RpZmljYXRpb25fcGVybWlzc2lv
bl9yZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZp
Y2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzMTQxOTY0MjFmMmNiMzg4
MGNiNTZhMjBiMzE0ODQyMmUwOTE2M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdC5o
CkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVj
dHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoq
CisgKiBAZmlsZSAgICBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdC5oCisgKiBA
YnJpZWYgICBQZXJtaXNzaW9uIHJlcXVlc3QgQVBJIGZvciBXZWIgTm90aWZpY2F0aW9uLgorICoK
KyAqIFdlYiBub3RpZmljYXRpb25zIGRlZmluZXMgYW4gQVBJIGZvciBlbmQtdXNlciBub3RpZmlj
YXRpb25zLgorICogQSBub3RpZmljYXRpb24gYWxsb3dzIGFsZXJ0aW5nIHRoZSB1c2VyIG91dHNp
ZGUgdGhlIGNvbnRleHQgb2YgYSB3ZWIgcGFnZQorICogb2YgYW4gb2NjdXJyZW5jZSwgc3VjaCBh
cyB0aGUgZGVsaXZlcnkgb2YgZW1haWwuCisgKi8KKworI2lmbmRlZiBld2tfbm90aWZpY2F0aW9u
X3Blcm1pc3Npb25fcmVxdWVzdF9oCisjZGVmaW5lIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lv
bl9yZXF1ZXN0X2gKKworI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW4uaCIKKworI2lmZGVm
IF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIERlY2xhcmUgRXdr
X05vdGlmaWNhdGlvbl9QZXJtaXNzaW9uX1JlcXVlc3QgYXMgRXdrX09iamVjdC4KKyAqCisgKiBA
c2VlIEV3a19PYmplY3QKKyAqLwordHlwZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3a19Ob3RpZmlj
YXRpb25fUGVybWlzc2lvbl9SZXF1ZXN0OworCisvKioKKyAqIFJldHVybnMgdGhlIHNlY3VyaXR5
IG9yaWdpbiBvZiB0aGUgbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gcmVxdWVzdC4KKyAqCisgKiBA
cGFyYW0gcGVybWlzc2lvbl9yZXF1ZXN0IG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3Qg
b2JqZWN0CisgKgorICogQHJldHVybiB0aGUgc2VjdXJpdHkgb3JpZ2luIG9iamVjdCBvciBAYyBO
VUxMIGlmIHRoZXJlIGlzIG5vdCBzZWN1cml0eSBvcmlnaW4KKyAqLworRUFQSSBFd2tfU2VjdXJp
dHlfT3JpZ2luICpld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9zZWN1cml0eV9v
cmlnaW5fZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb25fUGVybWlzc2lvbl9SZXF1ZXN0ICpwZXJt
aXNzaW9uX3JlcXVlc3QpOworCisvKioKKyAqIEFsbG93IC8gRGVueSB0aGUgbm90aWZpY2F0aW9u
IHBlcm1pc3Npb24gcmVxdWVzdC4KKyAqCisgKiBAcGFyYW0gcGVybWlzc2lvbl9yZXF1ZXN0IG5v
dGlmaWNhdGlvbiBwZXJtaXNzaW9uIHJlcXVlc3Qgb2JqZWN0CisgKiBAcGFyYW0gYWxsb3cgYWxs
b3cvZGVueSBub3RpZmljYXRpb24gcGVybWlzc2lvbiByZXF1ZXN0CisgKi8KK0VBUEkgdm9pZCBl
d2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9hbGxvd2VkX3NldChFd2tfTm90aWZp
Y2F0aW9uX1Blcm1pc3Npb25fUmVxdWVzdCAqcGVybWlzc2lvbl9yZXF1ZXN0LCBFaW5hX0Jvb2wg
YWxsb3cpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdr
X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVl
c3RfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlm
aWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZTRmNWJl
YjY0NzExZTU4NDg5MzY4MWE3NTU5YmVjMDRlZjRkMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25f
cmVxdWVzdF9wcml2YXRlLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0
X3ByaXZhdGVfaAorI2RlZmluZSBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9w
cml2YXRlX2gKKworI2luY2x1ZGUgImV3a19vYmplY3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdl
YktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKworY2xhc3MgRXdrU2VjdXJpdHlPcmlnaW47CisKK2NsYXNzIEV3
a05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0IDogcHVibGljIEV3a09iamVjdCB7CitwdWJs
aWM6CisgICAgRVdLX09CSkVDVF9ERUNMQVJFKEV3a05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RXdrTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3Q+IGNyZWF0ZShXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIHdrUGVybWlz
c2lvblJlcXVlc3QsIFdLU2VjdXJpdHlPcmlnaW5SZWYgd2tPcmlnaW4pCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KHdr
UGVybWlzc2lvblJlcXVlc3QsIHdrT3JpZ2luKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEV3
a05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYpOworCisgICAgV0tSZXRhaW5QdHI8V0tOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZj4gbV93a1Blcm1pc3Npb25SZXF1ZXN0OworfTsK
KworI2VuZGlmIC8vIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X3ByaXZhdGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25vdGlm
aWNhdGlvbl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
bm90aWZpY2F0aW9uX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWVlOGIwYzQ5MjBiNTVhMDU3MGNm
OTkwOWU1M2JhMzY2Yzg2NjdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlLmgKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19ub3RpZmlj
YXRpb25fcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19ub3RpZmljYXRpb25fcHJpdmF0ZV9oCisKKyNp
bmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJld2tfb2JqZWN0X3ByaXZh
dGUuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tS
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK2NsYXNzIEV3a1NlY3VyaXR5
T3JpZ2luOworY2xhc3MgRXdrVmlldzsKKworY2xhc3MgRXdrTm90aWZpY2F0aW9uIDogcHVibGlj
IEV3a09iamVjdCB7CitwdWJsaWM6CisgICAgRVdLX09CSkVDVF9ERUNMQVJFKEV3a05vdGlmaWNh
dGlvbikKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a05vdGlmaWNhdGlvbj4gY3JlYXRlKFdL
Tm90aWZpY2F0aW9uUmVmIHdrTm90aWZpY2F0aW9uLCBFd2tWaWV3KiBld2tWaWV3KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tOb3RpZmljYXRpb24od2tOb3RpZmljYXRp
b24sIGV3a1ZpZXcpKTsKKyAgICB9CisKKyAgICBFd2tWaWV3KiBld2tWaWV3KCkgY29uc3QgeyBy
ZXR1cm4gbV9ld2tWaWV3OyB9CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKK3ByaXZhdGU6Cisg
ICAgRXdrTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uUmVmLCBFd2tWaWV3Kik7CisKKyAgICBX
S1JldGFpblB0cjxXS05vdGlmaWNhdGlvblJlZj4gbV93a05vdGlmaWNhdGlvbjsKKyAgICBFd2tW
aWV3KiBtX2V3a1ZpZXc7Cit9OworCisjZW5kaWYgLy8gZXdrX25vdGlmaWNhdGlvbl9wcml2YXRl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvTm90aWZpY2F0aW9u
UHJvdmlkZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Ob3RpZmljYXRp
b25Qcm92aWRlckVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRmYjI5ZDM0ZDE1ZjI1NzUxYzNiZjhlMTdh
OWZhYzJiZjQ3NmQwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvTm90aWZpY2F0aW9uUHJvdmlkZXJFZmwuY3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5vdGlmaWNh
dGlvblByb3ZpZGVyRWZsLmgiCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2luY2x1
ZGUgIkV3a1ZpZXcuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldL
Tm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgiCisjaW5j
bHVkZSAiV0tOb3RpZmljYXRpb25Qcm92aWRlci5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRp
b25fcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMgaW5saW5l
IE5vdGlmaWNhdGlvblByb3ZpZGVyRWZsKiB0b05vdGlmaWNhdGlvblByb3ZpZGVyRWZsKGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5vdGlmaWNhdGlv
blByb3ZpZGVyRWZsKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworfQorCitOb3Rp
ZmljYXRpb25Qcm92aWRlckVmbDo6Tm90aWZpY2F0aW9uUHJvdmlkZXJFZmwoV0tDb250ZXh0UmVm
IGNvbnRleHQpCisgICAgOiBtX25vdGlmaWNhdGlvbk1hbmFnZXIoV0tDb250ZXh0R2V0Tm90aWZp
Y2F0aW9uTWFuYWdlcihjb250ZXh0KSkKK3sKKyAgICBBU1NFUlQobV9ub3RpZmljYXRpb25NYW5h
Z2VyKTsKKworICAgIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJWMCB3a05vdGlmaWNhdGlvblByb3Zp
ZGVyID0geworICAgICAgICB7CisgICAgICAgICAgICAwLCAvLyB2ZXJzaW9uCisgICAgICAgICAg
ICB0aGlzLCAvLyBjbGllbnRJbmZvCisgICAgICAgIH0sCisgICAgICAgIHNob3csCisgICAgICAg
IGNhbmNlbCwKKyAgICAgICAgZGlkRGVzdHJveU5vdGlmaWNhdGlvbiwKKyAgICAgICAgMCwgLy8g
YWRkTm90aWZpY2F0aW9uTWFuYWdlcgorICAgICAgICAwLCAvLyByZW1vdmVOb3RpZmljYXRpb25N
YW5hZ2VyCisgICAgICAgIDAsIC8vIG5vdGlmaWNhdGlvblBlcm1pc3Npb25zCisgICAgICAgIGNs
ZWFyTm90aWZpY2F0aW9ucworICAgIH07CisKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQ
cm92aWRlcihtX25vdGlmaWNhdGlvbk1hbmFnZXIuZ2V0KCksICZ3a05vdGlmaWNhdGlvblByb3Zp
ZGVyLmJhc2UpOworfQorCitOb3RpZmljYXRpb25Qcm92aWRlckVmbDo6fk5vdGlmaWNhdGlvblBy
b3ZpZGVyRWZsKCkKK3sKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihtX25v
dGlmaWNhdGlvbk1hbmFnZXIuZ2V0KCksIDApOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByb3Zp
ZGVyRWZsOjpzaG93KFdLUGFnZVJlZiwgV0tOb3RpZmljYXRpb25SZWYsIGNvbnN0IHZvaWQqKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJvdmlkZXJF
Zmw6OmNhbmNlbChXS05vdGlmaWNhdGlvblJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBOb3RpZmljYXRpb25Qcm92aWRlckVmbDo6ZGlkRGVzdHJv
eU5vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvblJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBOb3RpZmljYXRpb25Qcm92aWRlckVmbDo6Y2xlYXJO
b3RpZmljYXRpb25zKFdLQXJyYXlSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvTm90aWZpY2F0aW9uUHJvdmlkZXJFZmwuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvTm90aWZpY2F0aW9uUHJvdmlkZXJFZmwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wZmNkYWE5NDMxODExNmM4NDNmMWYxYWE1ZGMyNGYyNzJmMzA2YjQ0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Ob3RpZmljYXRpb25Q
cm92aWRlckVmbC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
U2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBOb3RpZmljYXRpb25Qcm92aWRlckVmbF9oCisjZGVmaW5lIE5vdGlmaWNhdGlvblByb3Zp
ZGVyRWZsX2gKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorCisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0NvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKworY2xhc3MgRXdrTm90aWZpY2F0aW9uOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXJFZmwgeworcHVibGljOgorICAg
IGV4cGxpY2l0IE5vdGlmaWNhdGlvblByb3ZpZGVyRWZsKFdLQ29udGV4dFJlZik7CisgICAgdmly
dHVhbCB+Tm90aWZpY2F0aW9uUHJvdmlkZXJFZmwoKTsKKworICAgIFdLTm90aWZpY2F0aW9uTWFu
YWdlclJlZiBub3RpZmljYXRpb25NYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRp
b25NYW5hZ2VyLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgc2hvdyhXS1Bh
Z2VSZWYsIFdLTm90aWZpY2F0aW9uUmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQg
Y2FuY2VsKFdLTm90aWZpY2F0aW9uUmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQg
ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvblJlZiwgY29uc3Qgdm9pZCopOwor
ICAgIHN0YXRpYyB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXS0FycmF5UmVmLCBjb25zdCB2b2lk
Kik7CisKKyAgICBXS1JldGFpblB0cjxXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+IG1fbm90aWZp
Y2F0aW9uTWFuYWdlcjsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8RXdrTm90aWZpY2F0
aW9uPj4gbV9ub3RpZmljYXRpb25NYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9u
UHJvdmlkZXJFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Q
YWdlVUlDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlD
bGllbnRFZmwuY3BwCmluZGV4IGZlMTE2ZTk3ZDYzOTJlZDMwMmFlNGEzNDQxZDlmNmMxNWFlYjQz
MmMuLmQyNmE3MTYzMmEzYjUzNDk1MGNhMDA0NjY1N2UwMGUxOWE4MmEzMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHAKQEAgLTM2LDYg
KzM2LDEwIEBACiAjaW5jbHVkZSAiZXdrX3dpbmRvd19mZWF0dXJlc19wcml2YXRlLmgiCiAjaW5j
bHVkZSA8RWNvcmVfRXZhcy5oPgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisjaW5jbHVk
ZSAiZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oIgorI2VuZGlm
CisKIHVzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tzOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTc4LDYgKzgyLDkgQEAgUGFnZVVJQ2xpZW50RWZsOjpQYWdlVUlDbGllbnRFZmwoRXdr
VmlldyogdmlldykKICNlbmRpZgogICAgIHVpQ2xpZW50LnJ1bk9wZW5QYW5lbCA9IHJ1bk9wZW5Q
YW5lbDsKICAgICB1aUNsaWVudC5jcmVhdGVOZXdQYWdlID0gY3JlYXRlTmV3UGFnZTsKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICB1aUNsaWVudC5kZWNpZGVQb2xpY3lGb3JOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdCA9IGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0OworI2VuZGlmCiAKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQocGFnZVJl
ZiwgJnVpQ2xpZW50LmJhc2UpOwogCkBAIC0yMjEsNiArMjI4LDE1IEBAIFdLUGFnZVJlZiBQYWdl
VUlDbGllbnRFZmw6OmNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmLCBXS1VSTFJlcXVlc3RSZWYgd2tS
ZXF1ZXN0LCBXCiAgICAgcmV0dXJuIHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3Zp
ZXctPmNyZWF0ZU5ld1BhZ2UocmVxdWVzdCwgd2tXaW5kb3dGZWF0dXJlcyk7CiB9CiAKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKK3ZvaWQgUGFnZVVJQ2xpZW50RWZsOjpkZWNpZGVQb2xpY3lG
b3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmln
aW5SZWYgd2tPcmlnaW4sIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgd2tQZXJt
aXNzaW9uUmVxdWVzdCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBFd2tWaWV3KiB2
aWV3ID0gdG9QYWdlVUlDbGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlldzsKKyAgICBSZWZQdHI8
RXdrTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q+IHBlcm1pc3Npb25SZXF1ZXN0ID0gRXdr
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSh3a1Blcm1pc3Npb25SZXF1ZXN0
LCB3a09yaWdpbik7CisgICAgdmlldy0+c21hcnRDYWxsYmFjazxFd2tWaWV3Q2FsbGJhY2tzOjpO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4oKS5jYWxsKHBlcm1pc3Npb25SZXF1ZXN0Lmdl
dCgpKTsKK30KKyNlbmRpZgorCiB2b2lkIFBhZ2VVSUNsaWVudEVmbDo6c2hvd1BvcHVwTWVudShX
S1BhZ2VSZWYsIFdLUG9wdXBNZW51TGlzdGVuZXJSZWYgbWVudUxpc3RlbmVyUmVmLCBXS1JlY3Qg
cmVjdCwgV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdl
U2NhbGVGYWN0b3IsIFdLQXJyYXlSZWYgaXRlbXNSZWYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICByZXR1cm4gdG9QYWdlVUlDbGllbnRFZmwo
Y2xpZW50SW5mbyktPm1fdmlldy0+cmVxdWVzdFBvcHVwTWVudShtZW51TGlzdGVuZXJSZWYsIHJl
Y3QsIHRleHREaXJlY3Rpb24sIHBhZ2VTY2FsZUZhY3RvciwgaXRlbXNSZWYsIHNlbGVjdGVkSW5k
ZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGll
bnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmgK
aW5kZXggYmYwNTA0ZGE2NmU1OWU2MmNhYjAyYjI0NzMxNTA2OGNjMWUyNmRlOC4uYWMxZTQ1ZTVk
MDRiNzFjMjk5MDcwYjVlNmRkZDMyMWExNWQ2ZmQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5oCkBAIC02Myw2ICs2Myw5IEBAIHByaXZhdGU6
CiAjZW5kaWYKICAgICBzdGF0aWMgdm9pZCBydW5PcGVuUGFuZWwoV0tQYWdlUmVmLCBXS0ZyYW1l
UmVmLCBXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYsIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJS
ZWYsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQ
YWdlUmVmLCBXS1VSTFJlcXVlc3RSZWYsIFdLRGljdGlvbmFyeVJlZiwgV0tFdmVudE1vZGlmaWVy
cywgV0tFdmVudE1vdXNlQnV0dG9uLCBjb25zdCB2b2lkKik7CisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCisgICAgc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QoV0tQYWdlUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS05vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7CisjZW5kaWYKIAogICAgIHN0YXRp
YyB2b2lkIHNob3dQb3B1cE1lbnUoV0tQYWdlUmVmLCBXS1BvcHVwTWVudUxpc3RlbmVyUmVmLCBX
S1JlY3QsIFdLUG9wdXBJdGVtVGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3Rvciwg
V0tBcnJheVJlZiBpdGVtc1JlZiwgaW50MzJfdCBzZWxlY3RlZEluZGV4LCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBoaWRlUG9wdXBNZW51KFdLUGFnZVJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>