<?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>96171</bug_id>
          
          <creation_ts>2012-09-07 19:01:09 -0700</creation_ts>
          <short_desc>[Qt] Implement WebNotification in WebKit2 port</short_desc>
          <delta_ts>2013-12-04 10:42:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</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>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Olivier Crête">olivier.crete</reporter>
          <assigned_to name="José Dapena Paz">jdapena</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>hausmann</cc>
    
    <cc>hepaajan</cc>
    
    <cc>jdapena</cc>
    
    <cc>lokesh.kumar.goel</cc>
    
    <cc>menard</cc>
    
    <cc>pnormand</cc>
    
    <cc>savagobr</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>715217</commentid>
    <comment_count>0</comment_count>
    <who name="Olivier Crête">olivier.crete</who>
    <bug_when>2012-09-07 19:01:09 -0700</bug_when>
    <thetext>The WebKit2 port is lacking support for WebNotifications.

There are 2 parts of this patch:

1. Inform the NotificationManager of the application/user&apos;s decision.
1.1 Verify that the permission was really granted
2. Implement a NotificationProvider</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715219</commentid>
    <comment_count>1</comment_count>
      <attachid>162931</attachid>
    <who name="Olivier Crête">olivier.crete</who>
    <bug_when>2012-09-07 19:04:56 -0700</bug_when>
    <thetext>Created attachment 162931
Patch to implement web notifications on the WebKit2/qt port

I also exposed the allowFileAccessFromFileURLs preference so that Notifications permissions can be tested from a file:/// URL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715231</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 19:23:14 -0700</bug_when>
    <thetext>Attachment 162931 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/qt/QtWebPageUIClient.cpp:170:  Declaration has space between type name and * in QQuickWebView *webView  [whitespace/declaration] [3]
Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest_p.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715236</commentid>
    <comment_count>3</comment_count>
      <attachid>162931</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-07 19:44:06 -0700</bug_when>
    <thetext>Comment on attachment 162931
Patch to implement web notifications on the WebKit2/qt port

Attachment 162931 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13772981</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715541</commentid>
    <comment_count>4</comment_count>
      <attachid>162931</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-09-09 11:31:20 -0700</bug_when>
    <thetext>Comment on attachment 162931
Patch to implement web notifications on the WebKit2/qt port

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

A few comments.

    1) The patch doesn&apos;t compile (see EWS) and has coding style issues.
    2) QSystemTrayIcon is part of QtWidgets, which we choose not to use in the WebKit2 API.
    3) Conceptually I&apos;m not sure if QSystemTrayIcon is the right choice in a QML based environment. I&apos;d much rather prefer an API that permits convenient delegation to the application or platform layer, given that the notifications are most likely use-case specific.
    4) For myself I&apos;m trying to focus on getting everything in shape for the Qt 5.0 release, and since we&apos;re past the feature freeze I will down-prioritize time for API/new-feature reviews on my TODO list. So you might have to find somebody else who is willing to review the API.

&gt; Source/WebKit2/UIProcess/API/qt/qwebpermissionrequest.cpp:56
&gt; +    WKNotificationManagerRef notificationManager;

This should be in a RetainPtr, otherwise it will leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716121</commentid>
    <comment_count>5</comment_count>
      <attachid>163140</attachid>
    <who name="Olivier Crête">olivier.crete</who>
    <bug_when>2012-09-10 08:45:14 -0700</bug_when>
    <thetext>Created attachment 163140
better patch

Thanks for the quick review, here is a patch that fixes the style/etc issues. As for the issue of using QSystemTrayIcon, it&apos;s use was suggested by Thiago. I&apos;m really unconvinced that forcing every app to re-implement notifications is a good idea as it&apos;s really a platform thing. I have  a couple possible proposals on how to implement it:

1. Move QSystemTrayIcon out of QtWidgets, it&apos;s not a QWidget and only the Unix implementation uses a QWidget I believe. Maybe that could be replaced with using the libnotify dbus API? That would only depend on QtCore. My goal was to implement the platform specific bits in the QPA instead of spreading them into QtWebKit.
2. We could use weak linking for the QSystemTrayIcon to use it if it&apos;s linked against QtWidget and do nothing if it&apos;s not there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808216</commentid>
    <comment_count>6</comment_count>
    <who name="José Dapena Paz">jdapena</who>
    <bug_when>2013-01-16 02:56:59 -0800</bug_when>
    <thetext>(In reply to comment #4)

&gt;     2) QSystemTrayIcon is part of QtWidgets, which we choose not to use in the WebKit2 API.
&gt;     3) Conceptually I&apos;m not sure if QSystemTrayIcon is the right choice in a QML based environment. I&apos;d much rather prefer an API that permits convenient delegation to the application or platform layer, given that the notifications are most likely use-case specific.

I am working now on a new implementation of this. We want to avoid dependency on QtWidgets, and, as QSystemTrayIcon doesn&apos;t seem to move out of it any time soon, we need a different approach.

My new approach is exposing it to application level. We&apos;d have QWebNotification objects with methods click, close, show, to allow app to notify webkit about the changes in current notification status. My main doubt is how to expose the notifications the first time to application.

My initial idea was adding signals &quot;showNotification&quot; and &quot;cancelNotification&quot; to QQuickWebView, following an approach similar to Gtk and EFL WK1 port implementation proposals. These signals would have as parameter the QWebNotification object, and indicate the life cycle of it (app would be able to handle notifications between show and cancel). The problem is, on WebKit2 there&apos;s no reference to PageUIClient on the notification provider. We only have a WKPageRef, so I don&apos;t have a way to associate the notification to a QQuickWebView.

So my current idea is somehow expose the notifications using a global object (i.e. signals of the webkit shared object I am proposing for https://bugs.webkit.org/show_bug.cgi?id=105034 ).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812023</commentid>
    <comment_count>7</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-01-21 04:01:45 -0800</bug_when>
    <thetext>*** Bug 88899 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956442</commentid>
    <comment_count>8</comment_count>
    <who name="José Dapena Paz">jdapena</who>
    <bug_when>2013-12-04 10:42:57 -0800</bug_when>
    <thetext>Qt port is not in WebKit anymore. Won&apos;t fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162931</attachid>
            <date>2012-09-07 19:04:56 -0700</date>
            <delta_ts>2012-09-10 08:45:14 -0700</delta_ts>
            <desc>Patch to implement web notifications on the WebKit2/qt port</desc>
            <filename>WebKit2-notifications.patch</filename>
            <type>text/plain</type>
            <size>29052</size>
            <attacher name="Olivier Crête">olivier.crete</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwZDYyMWVlLi4xZmNlN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTItMDktMDcgIE9saXZpZXIgQ3LDqnRlICA8b2xpdmllci5jcmV0ZUBwYWxtLmNvbT4K
KworICAgICAgICBbUXRdIEltcGxlbWVudCBXZWJOb3RpZmljYXRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjE3MQorCisgICAgICAgIEltcGxl
bWVudCBXZWJOb3RpZmljYXRpb25zIHVzaW5nIFFTeXN0ZW1UcmF5SWNvbgorICAgICAgICBFeHBv
c2UgdGhlIGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyBwcmVmZXJlbmNlIHNvIHRoYXQgTm90
aWZpY2F0aW9ucyBwZXJtaXNzaW9ucyBjYW4gYmUgdGVzdGVkIGZyb20gYSBmaWxlOi8vLyBVUkwK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRhcmdl
dC5wcmk6IEFkZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlclF0LmNwcC8uaAorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6IEV4cG9ydCB0aGUgTm90aXRpZmljYXRp
b25NYW5hZ2VyIG9iamVjdAorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmdldE5vdGlm
aWNhdGlvbk1hbmFnZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
d19wX3AuaDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlKTogQWRkIFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpnZXROb3RpZmljYXRpb25NYW5hZ2VyKCkKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdC5jcHA6IFN0b3JlIHRoZSBOb3RpZmljYXRpb25N
YW5hZ2VyIG9iamVjdCBpbiB0aGUgUmVxdWVzdAorICAgICAgICAoUVdlYlBlcm1pc3Npb25SZXF1
ZXN0UHJpdmF0ZTo6UVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSk6CisgICAgICAgIChRV2Vi
UGVybWlzc2lvblJlcXVlc3RQcml2YXRlKToKKyAgICAgICAgKFFXZWJQZXJtaXNzaW9uUmVxdWVz
dDo6Y3JlYXRlKToKKyAgICAgICAgKFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6UVdlYlBlcm1pc3Np
b25SZXF1ZXN0KToKKyAgICAgICAgKFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6c2V0QWxsb3cpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0X3AuaDogU3Rv
cmUgdGhlIE5vdGlmaWNhdGlvbk1hbmFnZXIgb2JqZWN0IGluIHRoZSBSZXF1ZXN0CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXMuY3BwOiBBZGQgYWxsb3dGaWxlQWNj
ZXNzRnJvbUZpbGVVUkxzCisgICAgICAgIChRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjp0ZXN0QXR0
cmlidXRlKToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OnNldEF0dHJpYnV0ZSk6
CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OmFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyk6
CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJM
cyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXNfcC5oOiBBZGQg
YWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9x
d2VicHJlZmVyZW5jZXNfcF9wLmg6IEFkZCBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X25vdGlm
aWNhdGlvbi5xbWw6IEFkZCB0ZXN0IHRvIGNoZWNrIGlmIG5vdGlmaWNhdGlvbnMgcmVhbGx5IGFs
bG93ZWQKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9u
b3RpZmljYXRpb24uaHRtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpRdFdlYlBhZ2VVSUNsaWVudDo6cG9saWN5Rm9yTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOiBHaXZlIHRoZSBub3RpZmljYXRpb25NYW5hZ2Vy
IHRvIHRoZSBQZXJtaXNzaW9uUmVxdWVzdAorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJDb250
ZXh0UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKTogSW5pdGlhbGlzZSB0aGUgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdAor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJOb3RpZmljYXRpb25Qcm92aWRlclF0LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojp0b05vdGlmaWNhdGlvblBy
b3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6bm90aWZpY2F0aW9uUHJvdmlkZXJTaG93Q2FsbGJhY2sp
OgorICAgICAgICAoV2ViS2l0Ojpub3RpZmljYXRpb25Qcm92aWRlckNhbmNlbENhbGxiYWNrKToK
KyAgICAgICAgKFdlYktpdDo6bm90aWZpY2F0aW9uUHJvdmlkZXJEaWREZXN0cm95Tm90aWZpY2F0
aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0Ojpub3RpZmljYXRpb25Qcm92aWRlckNsZWFy
Tm90aWZpY2F0aW9uc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9u
UHJvdmlkZXJRdDo6cHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25Q
cm92aWRlclF0OjpXZWJOb3RpZmljYXRpb25Qcm92aWRlclF0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdDo6fldlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25Qcm92aWRlclF0OjpzaG93KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdDo6Y2FuY2VsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdDo6ZGlkRGVzdHJveSk6CisgICAgICAg
IChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQ6OmNsZWFyTm90aWZpY2F0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OlF0V2ViTm90aWZpY2F0aW9uOjpRdFdlYk5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlF0V2ViTm90aWZpY2F0aW9uOjp+UXRXZWJOb3RpZmljYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpRdFdlYk5vdGlmaWNhdGlvbjo6bWVzc2FnZUNsaWNrZWQpOiBJ
bmZvcm0gV2ViS2l0IGFib3V0IGNsaWNrcyBmcm9tIFF0CisgICAgICAgICogVUlQcm9jZXNzL3F0
L1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoUXRXZWJOb3RpZmljYXRpb24pOiBXcmFwcyBhIFdlYk5vdGlmaWNhdGlvbiBhbmQg
aXRzIFFTeXN0ZW1UcmF5SWNvbgorICAgICAgICAoV2ViS2l0OjpRdFdlYk5vdGlmaWNhdGlvbjo6
bm90aWZpY2F0aW9uSUQpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdCk6CisK
IDIwMTItMDktMDcgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51
eC5pbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gW1dLMl0gU2V0IHRoZW1lIGZvciB0aGUgaW5z
cGVjdG9yIHZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDczOTQxMzAuLmQyMzJkYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnBy
aQpAQCAtNzg3LDYgKzc4Nyw3IEBAIGNvbnRhaW5zKERFRklORVMsIEhBVkVfUVRRVUlDSz0xKSB7
CiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYkljb25EYXRhYmFzZUNsaWVudC5oIFwKICAgICAg
ICAgVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRNZW51UHJveHlRdC5oIFwKICAgICAgICAgVUlQcm9j
ZXNzL3F0L1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJRdC5oIFwKKyAgICAgICAgVUlQcm9jZXNzL3F0
L1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQuaCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9XZWJQ
b3B1cE1lbnVQcm94eVF0LmgKIAogICAgIFNPVVJDRVMgKz0gXApAQCAtODE5LDYgKzgyMCw3IEBA
IGNvbnRhaW5zKERFRklORVMsIEhBVkVfUVRRVUlDSz0xKSB7CiAgICAgICAgIFVJUHJvY2Vzcy9x
dC9RdFRhcEdlc3R1cmVSZWNvZ25pemVyLmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9XZWJD
b250ZXh0TWVudVByb3h5UXQuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1dlYkdlb2xvY2F0
aW9uUHJvdmlkZXJRdC5jcHAgXAorICAgICAgICBVSVByb2Nlc3MvcXQvV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXJRdC5jcHAgXAogICAgICAgICBVSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlR
dC5jcHAgXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJJY29uRGF0YWJhc2VDbGllbnQuY3Bw
IFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKaW5kZXggNDkw
YjliYS4uNGE4OGE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXcuY3BwCkBAIC0yMjY3LDQgKzIyNjcsMTAgQEAgdm9pZCBRUXVpY2tXZWJW
aWV3OjpzZXRBbGxvd0FueUhUVFBTQ2VydGlmaWNhdGVGb3JMb2NhbEhvc3QoYm9vbCBhbGxvdykK
ICAgICBcZW5kdGFibGUKICovCiAKK1dLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBRUXVpY2tXZWJW
aWV3UHJpdmF0ZTo6Z2V0Tm90aWZpY2F0aW9uTWFuYWdlcigpCit7CisgICAgcmV0dXJuIFdLQ29u
dGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIodG9BUEkoY29udGV4dC5nZXQoKS0+Y29udGV4dCgp
KSk7Cit9CisKKwogI2luY2x1ZGUgIm1vY19xcXVpY2t3ZWJ2aWV3X3AuY3BwIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4
IGI5Yzg5ZWMuLjU2NTMxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKQEAgLTEzMyw2ICsxMzMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKTsKICAgICBQYXNzT3duUHRyPFdlYktpdDo6RHJh
d2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpOwogICAgIHZvaWQgaGFuZGxl
RG93bmxvYWRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94eSopOworICAgIFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZiBnZXROb3RpZmljYXRpb25NYW5hZ2VyKCk7CiAKIHByb3RlY3RlZDoKICAg
ICBjbGFzcyBGbGlja2FibGVBeGlzTG9ja2VyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0LmNwcAppbmRleCA0NTY5
N2EyLi4xNTAyZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2VicGVybWlzc2lvbnJlcXVlc3QuY3BwCkBAIC0yNywxMSArMjcsMTIgQEAKIAog
Y2xhc3MgUVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSA6IHB1YmxpYyBRU2hhcmVkRGF0YSB7
CiBwdWJsaWM6Ci0gICAgUVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZShXS1NlY3VyaXR5T3Jp
Z2luUmVmIHNlY3VyaXR5T3JpZ2luLCBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYg
Z2VvID0gMCwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiBub3RpZnkgPSAwLCBR
V2ViUGVybWlzc2lvblJlcXVlc3Q6OlJlcXVlc3RUeXBlIHJlcVR5cGUgPSBRV2ViUGVybWlzc2lv
blJlcXVlc3Q6Okdlb2xvY2F0aW9uKQorICAgIFFXZWJQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUo
V0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgV0tHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UmVmIGdlbyA9IDAsIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYg
bm90aWZ5ID0gMCwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1ZXN0VHlwZSByZXFUeXBlID0g
UVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpHZW9sb2NhdGlvbiwgV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UmVmIG5vdGlmbWFuID0gMCkKICAgICAgICAgOiBvcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiAgICAg
ICAgICwgZ2VvbG9jYXRpb25SZXF1ZXN0KGdlbykKICAgICAgICAgLCBub3RpZmljYXRpb25SZXF1
ZXN0KG5vdGlmeSkKICAgICAgICAgLCB0eXBlKHJlcVR5cGUpCisgICAgICAgICwgbm90aWZpY2F0
aW9uTWFuYWdlcihub3RpZm1hbikKICAgICAgICAgLCBhbGxvdyhmYWxzZSkKICAgICB7CiAgICAg
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1cmwgPSBhZG9wdFdLKFdLU2VjdXJpdHlPcmln
aW5Db3B5UHJvdG9jb2wob3JpZ2luLmdldCgpKSk7CkBAIC01MiwyNiArNTMsMzAgQEAgcHVibGlj
OgogICAgIFdLUmV0YWluUHRyPFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWY+IG5v
dGlmaWNhdGlvblJlcXVlc3Q7CiAgICAgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1ZXN0VHlw
ZSB0eXBlOwogICAgIFF0V2ViU2VjdXJpdHlPcmlnaW4gc2VjdXJpdHlJbmZvOworICAgIFdLTm90
aWZpY2F0aW9uTWFuYWdlclJlZiBub3RpZmljYXRpb25NYW5hZ2VyOwogICAgIGJvb2wgYWxsb3c7
CiB9OwogCisKIFFXZWJQZXJtaXNzaW9uUmVxdWVzdCogUVdlYlBlcm1pc3Npb25SZXF1ZXN0Ojpj
cmVhdGUoV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFJlZiByZXF1ZXN0KQogewotICAgIHJldHVybiBuZXcgUVdlYlBlcm1pc3Npb25SZXF1
ZXN0KG9yaWdpbiwgcmVxdWVzdCk7CisgICAgcmV0dXJuIG5ldyBRV2ViUGVybWlzc2lvblJlcXVl
c3Qob3JpZ2luLCByZXF1ZXN0LCAwLCBRV2ViUGVybWlzc2lvblJlcXVlc3Q6Okdlb2xvY2F0aW9u
KTsKIH0KIAotUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OmNy
ZWF0ZShXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFJlZiByZXF1ZXN0KQorUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiBRV2ViUGVybWlzc2lv
blJlcXVlc3Q6OmNyZWF0ZShXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFJlZiByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbm90
aWZpY2F0aW9uTWFuYWdlcikKIHsKLSAgICByZXR1cm4gbmV3IFFXZWJQZXJtaXNzaW9uUmVxdWVz
dChvcmlnaW4sIDAsIHJlcXVlc3QsIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6Tm90aWZpY2F0aW9u
KTsKKyAgICByZXR1cm4gbmV3IFFXZWJQZXJtaXNzaW9uUmVxdWVzdChvcmlnaW4sIDAsIHJlcXVl
c3QsIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6Tm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25NYW5h
Z2VyKTsKIH0KIAogUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpRV2ViUGVybWlzc2lvblJlcXVlc3Qo
V0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLCBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RS
ZWYgZ2VvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFdL
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgbm90aWZ5CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6UmVx
dWVzdFR5cGUgdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbm90aWZpY2F0aW9uTWFuYWdlcgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBRT2JqZWN0KiBwYXJlbnQp
CiAgICAgOiBRT2JqZWN0KHBhcmVudCkKLSAgICAsIGQobmV3IFFXZWJQZXJtaXNzaW9uUmVxdWVz
dFByaXZhdGUoc2VjdXJpdHlPcmlnaW4sIGdlbywgbm90aWZ5LCB0eXBlKSkKKyAgICAsIGQobmV3
IFFXZWJQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUoc2VjdXJpdHlPcmlnaW4sIGdlbywgbm90aWZ5
LCB0eXBlLCBub3RpZmljYXRpb25NYW5hZ2VyKSkKIHsKIH0KIApAQCAtOTYsNiArMTAxLDggQEAg
dm9pZCBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OnNldEFsbG93KGJvb2wgYWNjZXB0ZWQpCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE5vdGlmaWNhdGlvbjogeworICAgICAgICBXS05v
dGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShkLT5u
b3RpZmljYXRpb25NYW5hZ2VyLCBkLT5vcmlnaW4uZ2V0KCksIGFjY2VwdGVkKTsKKwogICAgICAg
ICBpZiAoYWNjZXB0ZWQpCiAgICAgICAgICAgICBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0QWxsb3coZC0+bm90aWZpY2F0aW9uUmVxdWVzdC5nZXQoKSk7CiAgICAgICAgIGVsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25y
ZXF1ZXN0X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Np
b25yZXF1ZXN0X3AuaAppbmRleCAwMDAyNTJiLi5hNmVkYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdF9wLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicGVybWlzc2lvbnJlcXVlc3RfcC5o
CkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSA8UXRDb3JlL3FzaGFyZWRkYXRhLmg+CiAjaW5j
bHVkZSA8V2ViS2l0Mi9XS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJLaXQyL1dLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgorCiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1Nl
Y3VyaXR5T3JpZ2luLmg+CiAKIGNsYXNzIFFXZWJQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGU7CkBA
IC00NSw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGljIFFXZWJQZXJtaXNz
aW9uUmVxdWVzdCogY3JlYXRlKFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFJlZik7Ci0gICAgc3RhdGljIFFXZWJQZXJtaXNzaW9uUmVxdWVzdCogY3Jl
YXRlKFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RS
ZWYpOworICAgIHN0YXRpYyBRV2ViUGVybWlzc2lvblJlcXVlc3QqIGNyZWF0ZShXS1NlY3VyaXR5
T3JpZ2luUmVmLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmLCBXS05vdGlmaWNh
dGlvbk1hbmFnZXJSZWYpOwogICAgIHZpcnR1YWwgflFXZWJQZXJtaXNzaW9uUmVxdWVzdCgpOwog
CiAgICAgUmVxdWVzdFR5cGUgdHlwZSgpIGNvbnN0OwpAQCAtNjEsNiArNjMsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAsIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFJlZiBnZW8gPSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICwgV0tOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFJlZiBub3RpZnkgPSAwCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1ZXN0VHlwZSB0eXBlID0gR2VvbG9jYXRp
b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYg
bm90aWZpY2F0aW9uTWFuYWdlciA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBRT2Jq
ZWN0KiBwYXJlbnQgPSAwKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmNwcAppbmRleCBlMjdmNTEyLi4yNWYwNGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJl
bmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVy
ZW5jZXMuY3BwCkBAIC03NSw2ICs3NSw5IEBAIGJvb2wgUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6
dGVzdEF0dHJpYnV0ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpXZWJBdHRyaWJ1dGUKICAgICBj
YXNlIFdlYkF1ZGlvRW5hYmxlZDoKICAgICAgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRXZWJB
dWRpb0VuYWJsZWQocHJlZmVyZW5jZXNSZWYoKSk7CiAjZW5kaWYKKyAgICBjYXNlIEFsbG93Rmls
ZUFjY2Vzc0Zyb21GaWxlVVJMc0VuYWJsZWQ6CisgICAgICAgIHJldHVybiBXS1ByZWZlcmVuY2Vz
R2V0RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc0FsbG93ZWQocHJlZmVyZW5jZXNSZWYoKSk7CisgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzIsNyArMTM1LDkgQEAgdm9pZCBRV2ViUHJlZmVy
ZW5jZXNQcml2YXRlOjpzZXRBdHRyaWJ1dGUoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6V2ViQXR0
cmlidXRlIGEKICAgICBjYXNlIFdlYkF1ZGlvRW5hYmxlZDoKICAgICAgICAgV0tQcmVmZXJlbmNl
c1NldFdlYkF1ZGlvRW5hYmxlZChwcmVmZXJlbmNlc1JlZigpLCBlbmFibGUpOwogICAgICAgICBi
cmVhazsKLSNlbmRpZgorICAgIGNhc2UgQWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzRW5hYmxl
ZDoKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldEZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNBbGxvd2Vk
KHByZWZlcmVuY2VzUmVmKCksIGVuYWJsZSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTU0MSw2ICs1NDYsMTgg
QEAgdm9pZCBRV2ViUHJlZmVyZW5jZXM6OnNldFdlYkF1ZGlvRW5hYmxlZChib29sIGVuYWJsZSkK
ICNlbmRpZgogfQogCisKK2Jvb2wgUVdlYlByZWZlcmVuY2VzOjphbGxvd0ZpbGVBY2Nlc3NGcm9t
RmlsZVVSTHMoKSBjb25zdAoreworICAgIHJldHVybiBkLT50ZXN0QXR0cmlidXRlKFFXZWJQcmVm
ZXJlbmNlc1ByaXZhdGU6OldlYkF1ZGlvRW5hYmxlZCk7Cit9CisKK3ZvaWQgUVdlYlByZWZlcmVu
Y2VzOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGUpCit7CisgICAg
ZC0+c2V0QXR0cmlidXRlKFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OkFsbG93RmlsZUFjY2Vzc0Zy
b21GaWxlVVJMc0VuYWJsZWQsIGVuYWJsZSk7CisgICAgZW1pdCBhbGxvd0ZpbGVBY2Nlc3NGcm9t
RmlsZVVSTHNDaGFuZ2VkKCk7Cit9CisKIFdLUHJlZmVyZW5jZXNSZWYgUVdlYlByZWZlcmVuY2Vz
UHJpdmF0ZTo6cHJlZmVyZW5jZXNSZWYoKSBjb25zdAogewogICAgIFdLUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cFJlZiA9IHRvQVBJKHdlYlZpZXdQcml2YXRlLT53ZWJQYWdlUHJveHktPnBhZ2VHcm91
cCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBy
ZWZlcmVuY2VzX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZl
cmVuY2VzX3AuaAppbmRleCAzNzNkZjc1Li43NDBjNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlc19wLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXNfcC5oCkBAIC01Niw2ICs1Niw3
IEBAIHB1YmxpYzoKICAgICBRX1BST1BFUlRZKHVuc2lnbmVkIG1pbmltdW1Gb250U2l6ZSBSRUFE
IG1pbmltdW1Gb250U2l6ZSBXUklURSBzZXRNaW5pbXVtRm9udFNpemUgTk9USUZZIG1pbmltdW1G
b250U2l6ZUNoYW5nZWQgRklOQUwpCiAgICAgUV9QUk9QRVJUWSh1bnNpZ25lZCBkZWZhdWx0Rm9u
dFNpemUgUkVBRCBkZWZhdWx0Rm9udFNpemUgV1JJVEUgc2V0RGVmYXVsdEZvbnRTaXplIE5PVElG
WSBkZWZhdWx0Rm9udFNpemVDaGFuZ2VkIEZJTkFMKQogICAgIFFfUFJPUEVSVFkodW5zaWduZWQg
ZGVmYXVsdEZpeGVkRm9udFNpemUgUkVBRCBkZWZhdWx0Rml4ZWRGb250U2l6ZSBXUklURSBzZXRE
ZWZhdWx0Rml4ZWRGb250U2l6ZSBOT1RJRlkgZGVmYXVsdEZpeGVkRm9udFNpemVDaGFuZ2VkIEZJ
TkFMKQorICAgIFFfUFJPUEVSVFkoYm9vbCBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMgUkVB
RCBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMgV1JJVEUgc2V0QWxsb3dGaWxlQWNjZXNzRnJv
bUZpbGVVUkxzIE5PVElGWSBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNDaGFuZ2VkIEZJTkFM
KQogCiAgICAgYm9vbCBhdXRvTG9hZEltYWdlcygpIGNvbnN0OwogICAgIHZvaWQgc2V0QXV0b0xv
YWRJbWFnZXMoYm9vbCBlbmFibGUpOwpAQCAtMTI2LDYgKzEyNyw5IEBAIHB1YmxpYzoKICAgICB1
bnNpZ25lZCBkZWZhdWx0Rml4ZWRGb250U2l6ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0RGVmYXVs
dEZpeGVkRm9udFNpemUodW5zaWduZWQgc2l6ZSk7CiAKKyAgICBib29sIGFsbG93RmlsZUFjY2Vz
c0Zyb21GaWxlVVJMcygpIGNvbnN0OworICAgIHZvaWQgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzKGJvb2wgZW5hYmxlKTsKKwogUV9TSUdOQUxTOgogICAgIHZvaWQgYXV0b0xvYWRJbWFn
ZXNDaGFuZ2VkKCk7CiAgICAgdm9pZCBwbHVnaW5zRW5hYmxlZENoYW5nZWQoKTsKQEAgLTE1Myw2
ICsxNTcsOCBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBkZWZhdWx0Rm9udFNpemVDaGFuZ2VkKCk7
CiAgICAgdm9pZCBkZWZhdWx0Rml4ZWRGb250U2l6ZUNoYW5nZWQoKTsKIAorICAgIHZvaWQgYWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2hhbmdlZCgpOworCiBwcml2YXRlOgogICAgIFFfRElT
QUJMRV9DT1BZKFFXZWJQcmVmZXJlbmNlcykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXNfcF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlc19wX3AuaAppbmRleCBjNjA2YmJlLi4yMjRl
NzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVm
ZXJlbmNlc19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJw
cmVmZXJlbmNlc19wX3AuaApAQCAtMjEsNiArMjEsNyBAQAogI2RlZmluZSBxd2VicHJlZmVyZW5j
ZXNfcF9wX2gKIAogI2luY2x1ZGUgIldLUHJlZmVyZW5jZXMuaCIKKyNpbmNsdWRlICJXS1ByZWZl
cmVuY2VzUHJpdmF0ZS5oIgogCiBjbGFzcyBRUXVpY2tXZWJWaWV3UHJpdmF0ZTsKIApAQCAtNDEs
NyArNDIsOCBAQCBwdWJsaWM6CiAgICAgICAgIERldmVsb3BlckV4dHJhc0VuYWJsZWQsCiAgICAg
ICAgIFdlYkdMRW5hYmxlZCwKICAgICAgICAgQ1NTQ3VzdG9tRmlsdGVyRW5hYmxlZCwKLSAgICAg
ICAgV2ViQXVkaW9FbmFibGVkCisgICAgICAgIFdlYkF1ZGlvRW5hYmxlZCwKKyAgICAgICAgQWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzRW5hYmxlZAogICAgIH07CiAKICAgICBlbnVtIEZvbnRG
YW1pbHkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9ub3RpZmljYXRpb24ucW1sIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9ub3RpZmljYXRpb24u
cW1sCmluZGV4IGFhNDMyZjYuLmVhZDM5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3Rfbm90aWZpY2F0aW9uLnFt
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dl
YlZpZXcvdHN0X25vdGlmaWNhdGlvbi5xbWwKQEAgLTgsMjggKzgsNDAgQEAgV2ViVmlldyB7CiAg
ICAgd2lkdGg6IDIwMAogICAgIGhlaWdodDogMjAwCiAKLSAgICBwcm9wZXJ0eSBib29sIGV4cGVj
dGVkUGVybWlzc2lvbjogZmFsc2UKKyAgICBwcm9wZXJ0eSBib29sIHBlcm1pc3Npb25HcmFudGVk
OiBmYWxzZQorCisgICAgZXhwZXJpbWVudGFsLnByZWZlcmVuY2VzLm5hdmlnYXRvclF0T2JqZWN0
RW5hYmxlZDogdHJ1ZQorICAgIGV4cGVyaW1lbnRhbC5wcmVmZXJlbmNlcy5hbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHM6IHRydWUKKyAgICBleHBlcmltZW50YWwub25NZXNzYWdlUmVjZWl2ZWQ6
IHsKKyAgICAgICAgcGVybWlzc2lvbkdyYW50ZWQgPSAobWVzc2FnZS5kYXRhID09ICJQZXJtaXNz
aW9uIGdyYW50ZWQiKQorICAgIH0KKworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlkOiBtZXNz
YWdlU3B5CisgICAgICAgIHRhcmdldDogd2ViVmlldy5leHBlcmltZW50YWwKKyAgICAgICAgc2ln
bmFsTmFtZTogIm1lc3NhZ2VSZWNlaXZlZCIKKyAgICB9CiAKICAgICBTaWduYWxTcHkgewotICAg
ICAgICBpZDogc3B5CisgICAgICAgIGlkOiBwZXJtaXNzaW9uU3B5CiAgICAgICAgIHRhcmdldDog
ZXhwZXJpbWVudGFsCiAgICAgICAgIHNpZ25hbE5hbWU6ICJwZXJtaXNzaW9uUmVxdWVzdGVkIgog
ICAgIH0KIAogICAgIGV4cGVyaW1lbnRhbC5vblBlcm1pc3Npb25SZXF1ZXN0ZWQ6IHsKLSAgICAg
ICAgLy8gTXVzdCBiZSBmYWxzZSBieSBkZWZhdWx0Ci0gICAgICAgIGlmICghcGVybWlzc2lvbi5h
bGxvdykgeworICAgICAgICBpZiAocGVybWlzc2lvbi50eXBlICE9IFBlcm1pc3Npb25SZXF1ZXN0
Lk5vdGlmaWNhdGlvbikgeworICAgICAgICAgICBjb25zb2xlLmxvZygiRmFpbDogcGVybWlzc2lv
biBpcyBub3QgTm90aWZpY2F0aW9uIik7CisgICAgICAgICAgIHBlcm1pc3Npb24uYWxsb3cgPSBm
YWxzZQorICAgICAgICB9IGVsc2UgaWYgKCFwZXJtaXNzaW9uLmFsbG93KSB7CisgICAgICAgICAg
IC8vIE11c3QgYmUgZmFsc2UgYnkgZGVmYXVsdAogICAgICAgICAgICBwZXJtaXNzaW9uLmFsbG93
ID0gdHJ1ZQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb25zb2xlLmxvZygiRmFpbDog
cGVybWlzc2lvbiBtdXN0IGJlIHNldCB0byBmYWxzZSIpCiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAocGVybWlzc2lvbi50eXBlID09IFBlcm1pc3Npb25SZXF1ZXN0Lk5vdGlmaWNhdGlvbikgewot
ICAgICAgICAgICAgY29uc29sZS5sb2coIlBlcm1pc3Npb24gaXMgRGVza3RvcCBOb3RpZmljYXRp
b24iKQotICAgICAgICB9CiAgICAgfQogCi0gICAgVGVzdENhc2UgeworICAgVGVzdENhc2Ugewog
ICAgICAgICBuYW1lOiAiV2ViVmlld0Rlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uIgogCiAg
ICAgICAgIC8vIERlbGF5ZWQgd2luZG93U2hvd24gdG8gd29ya2Fyb3VuZCBwcm9ibGVtcyB3aXRo
IFF0NSBpbiBkZWJ1ZyBtb2RlLgpAQCAtNDIsMTQgKzU0LDE3IEBAIFdlYlZpZXcgewogICAgICAg
ICB9CiAKICAgICAgICAgZnVuY3Rpb24gaW5pdCgpIHsKLSAgICAgICAgICAgIHNweS5jbGVhcigp
CisgICAgICAgICAgICBwZXJtaXNzaW9uU3B5LmNsZWFyKCkKKyAgICAgICAgICAgIG1lc3NhZ2VT
cHkuY2xlYXIoKQogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gdGVzdF9wZXJtaXNzaW9u
UmVxdWVzdCgpIHsKLSAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAwKQorICAgICAgICAg
ICAgY29tcGFyZShwZXJtaXNzaW9uU3B5LmNvdW50LCAwKQogICAgICAgICAgICAgd2ViVmlldy51
cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL25vdGlmaWNhdGlvbi5odG1sIikKLSAgICAg
ICAgICAgIHNweS53YWl0KCkKLSAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAxKQorICAg
ICAgICAgICAgbWVzc2FnZVNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUobWVzc2FnZVNw
eS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUocGVybWlzc2lvblNweS5jb3VudCwgMSkK
KyAgICAgICAgICAgIGNvbXBhcmUocGVybWlzc2lvbkdyYW50ZWQsIHRydWUpCiAgICAgICAgIH0K
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FtbHRlc3RzL2NvbW1vbi9ub3RpZmljYXRpb24uaHRtbCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL25vdGlmaWNhdGlvbi5odG1sCmlu
ZGV4IGI1MzUzM2UuLjQ2YTQwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL25vdGlmaWNhdGlvbi5odG1sCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL25vdGlm
aWNhdGlvbi5odG1sCkBAIC0yLDEzICsyLDE2IEBACiA8aGVhZD4KICAgPHRpdGxlPkRlc2t0b3Ag
Tm90aWZpY2F0aW9uIFBlcm1pc3Npb24gdGVzdDwvdGl0bGU+CiAgIDxzY3JpcHQ+Ci0gICAgcmVx
dWVzdFBlcm1pc3Npb24gPSBmdW5jdGlvbihjYikgewotICAgICAgd2luZG93LndlYmtpdE5vdGlm
aWNhdGlvbnMucmVxdWVzdFBlcm1pc3Npb24oZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChjYikK
LSAgICAgICAgICAgY2Iod2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMuY2hlY2tQZXJtaXNzaW9u
KCkgPT0gMCk7Ci0gICAgICB9KTsKLSAgICB9Ci0gICAgcmVxdWVzdFBlcm1pc3Npb24oKQorICBy
ZXF1ZXN0UGVybWlzc2lvbiA9IGZ1bmN0aW9uKCkgeworICAgIHdpbmRvdy53ZWJraXROb3RpZmlj
YXRpb25zLnJlcXVlc3RQZXJtaXNzaW9uKGZ1bmN0aW9uKCkgeworICAgICAgaWYgKHdpbmRvdy53
ZWJraXROb3RpZmljYXRpb25zLmNoZWNrUGVybWlzc2lvbigpID09IDApIHsKKyAgICAgICAgbmF2
aWdhdG9yLnF0LnBvc3RNZXNzYWdlKCJQZXJtaXNzaW9uIGdyYW50ZWQiKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIG5hdmlnYXRvci5xdC5wb3N0TWVzc2FnZSgiUGVybWlzc2lvbiBub3QgZ3Jh
bnRlZDogIiArIHdpbmRvdy53ZWJraXROb3RpZmljYXRpb25zLmNoZWNrUGVybWlzc2lvbigpKTsK
KyAgICAgIH0KKyAgICB9KTsKKyAgfQorICByZXF1ZXN0UGVybWlzc2lvbigpCiAgIDwvc2NyaXB0
PgogPC9oZWFkPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlVUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVVJQ2xpZW50LmNwcAppbmRleCAzOWUxZTNkLi45MjQ0MmY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5jcHAKQEAgLTE2Nyw3ICsxNjcs
MTAgQEAgdm9pZCBRdFdlYlBhZ2VVSUNsaWVudDo6cG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QoV0tQYWdlUmVmIHBhZ2UsIFcKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFFXZWJQZXJtaXNzaW9uUmVxdWVzdCogcmVxID0gUVdlYlBlcm1pc3Np
b25SZXF1ZXN0OjpjcmVhdGUob3JpZ2luLCByZXF1ZXN0KTsKKyAgICBRUXVpY2tXZWJWaWV3ICp3
ZWJWaWV3ID0gdG9RdFdlYlBhZ2VVSUNsaWVudChjbGllbnRJbmZvKS0+bV93ZWJWaWV3OworCisg
ICAgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiByZXEgPSBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OmNy
ZWF0ZShvcmlnaW4sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Z2V0KHdl
YlZpZXcpLT5nZXROb3RpZmljYXRpb25NYW5hZ2VyKCkpOwogICAgIHRvUXRXZWJQYWdlVUlDbGll
bnQoY2xpZW50SW5mbyktPnBlcm1pc3Npb25SZXF1ZXN0KHJlcSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKaW5kZXggZjZhZjg5ZC4uNmFhZDE4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKQEAg
LTM0LDYgKzM0LDkgQEAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAjaW5jbHVkZSAiV2ViR2Vv
bG9jYXRpb25Qcm92aWRlclF0LmgiCiAjZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykg
fHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlv
blByb3ZpZGVyUXQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgogI2luY2x1ZGUgPFFEaXI+CkBA
IC03NSw2ICs3OCwxMCBAQCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlBy
b2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogICAgIHN0YXRpYyBXZWJH
ZW9sb2NhdGlvblByb3ZpZGVyUXQqIGxvY2F0aW9uID0gV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0
OjpjcmVhdGUodG9BUEkoZ2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSkpOwogICAgIFdLR2VvbG9j
YXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoZ2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSks
IFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJRdDo6cHJvdmlkZXIobG9jYXRpb24pKTsKICNlbmRpZgor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMp
CisgICAgc3RhdGljIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQqIG5vdGlmaWNhdGlvbiA9IFdl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyUXQ6OmNyZWF0ZSh0b0FQSShub3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkoKSkpOworICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKHRvQVBJKG5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eSgpKSwgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdDo6cHJv
dmlkZXIobm90aWZpY2F0aW9uKSk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJDb250ZXh0OjpwbGF0
Zm9ybUludmFsaWRhdGVDb250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9XZWJOb3RpZmljYXRpb25Qcm92aWRlclF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9XZWJOb3RpZmljYXRpb25Qcm92aWRlclF0LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi41M2JiYjEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQuY3BwCkBAIC0wLDAg
KzEsMTgzIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBIUCBQYWxtCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdC5oIgor
CisjaW5jbHVkZSA8TXV0YWJsZUFycmF5Lmg+CisjaW5jbHVkZSA8Tm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb24uaD4KKyNpbmNsdWRlIDxOb3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5oPgorI2luY2x1ZGUgPFdLQVBJQ2FzdC5oPgorI2luY2x1ZGUgPFdLQXJyYXku
aD4KKyNpbmNsdWRlIDxXS05vdGlmaWNhdGlvbi5oPgorI2luY2x1ZGUgPFdLTm90aWZpY2F0aW9u
TWFuYWdlci5oPgorI2luY2x1ZGUgPFdLTnVtYmVyLmg+CisjaW5jbHVkZSA8V0tSZXRhaW5QdHIu
aD4KKyNpbmNsdWRlIDxXS1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8
fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
Kworc3RhdGljIGlubGluZSBjb25zdCBXZWJOb3RpZmljYXRpb25Qcm92aWRlclF0KiB0b05vdGlm
aWNhdGlvblByb3ZpZGVyKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQqPihjbGllbnRJbmZvKTsK
K30KKworV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdCogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJR
dDo6Y3JlYXRlKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyKQoreworICAgIHJldHVy
biBuZXcgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdChtYW5hZ2VyKTsKK30KKworc3RhdGljIHZv
aWQgbm90aWZpY2F0aW9uUHJvdmlkZXJTaG93Q2FsbGJhY2soV0tQYWdlUmVmIHBhZ2UsIFdLTm90
aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICB0b05vdGlmaWNhdGlvblByb3ZpZGVyKGNsaWVudEluZm8pLT5zaG93KHBhZ2UsIG5vdGlmaWNh
dGlvbik7Cit9CisKK3N0YXRpYyB2b2lkIG5vdGlmaWNhdGlvblByb3ZpZGVyQ2FuY2VsQ2FsbGJh
Y2soV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIHRvTm90aWZpY2F0aW9uUHJvdmlkZXIoY2xpZW50SW5mbyktPmNhbmNlbChub3Rp
ZmljYXRpb24pOworfQorCitzdGF0aWMgdm9pZCBub3RpZmljYXRpb25Qcm92aWRlckRpZERlc3Ry
b3lOb3RpZmljYXRpb25DYWxsYmFjayhXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24sIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdG9Ob3RpZmljYXRpb25Qcm92aWRlcihjbGll
bnRJbmZvKS0+ZGlkRGVzdHJveShub3RpZmljYXRpb24pOworfQorCitzdGF0aWMgdm9pZCBub3Rp
ZmljYXRpb25Qcm92aWRlckNsZWFyTm90aWZpY2F0aW9uc0NhbGxiYWNrKFdLQXJyYXlSZWYgbm90
aWZpY2F0aW9uSURzLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHRvTm90aWZpY2F0
aW9uUHJvdmlkZXIoY2xpZW50SW5mbyktPmNsZWFyTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25J
RHMpOworfQorCisKK1dLTm90aWZpY2F0aW9uUHJvdmlkZXIqIFdlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyUXQ6OnByb3ZpZGVyKGNvbnN0IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQqIG5vdGlmaWNh
dGlvbikKK3sKKyAgICBzdGF0aWMgV0tOb3RpZmljYXRpb25Qcm92aWRlciBwcm92aWRlciA9IHsK
KyAgICAgICAgMCwgLy8gVGhpcyBmZWF0dXJlcyB0aGUgdmVyc2lvbi4KKyAgICAgICAgbm90aWZp
Y2F0aW9uLCAvLyBUaGlzIHBvaW50cyB0byB0aGUgb2JqZWN0IGltcGxlbWVudGVyLgorICAgICAg
ICBub3RpZmljYXRpb25Qcm92aWRlclNob3dDYWxsYmFjaywKKyAgICAgICAgbm90aWZpY2F0aW9u
UHJvdmlkZXJDYW5jZWxDYWxsYmFjaywgICAgIAorICAgICAgICBub3RpZmljYXRpb25Qcm92aWRl
ckRpZERlc3Ryb3lOb3RpZmljYXRpb25DYWxsYmFjaywKKyAgICAgICAgMCwgLy8gbm90aWZpY2F0
aW9uUHJvdmlkZXJBZGROb3RpZmljYXRpb25NYW5hZ2VyQ2FsbGJhY2ssCisgICAgICAgIDAsIC8v
IG5vdGlmaWNhdGlvblByb3ZpZGVyUmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlckNhbGxiYWNrLAor
ICAgICAgICAwLCAvLyBub3RpZmljYXRpb25Qcm92aWRlck5vdGlmaWNhdGlvblBlcm1pc3Npb25z
Q2FsbGJhY2ssCisgICAgICAgIG5vdGlmaWNhdGlvblByb3ZpZGVyQ2xlYXJOb3RpZmljYXRpb25z
Q2FsbGJhY2sKKyAgICB9OworCisgICAgcmV0dXJuICZwcm92aWRlcjsKK30KKworCitXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlclF0OjpXZWJOb3RpZmljYXRpb25Qcm92aWRlclF0KFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZiBtYW5hZ2VyKQorICAgIDogbV9tYW5hZ2VyKG1hbmFnZXIpCisgICAgLCBt
X25vdGlmaWNhdGlvbnMobmV3IFFMaXN0PFF0V2ViTm90aWZpY2F0aW9uICo+ICgpKQoreworfQor
CitXZWJOb3RpZmljYXRpb25Qcm92aWRlclF0Ojp+V2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdCgp
Cit7CisgICAgd2hpbGUgKCFtX25vdGlmaWNhdGlvbnMtPmlzRW1wdHkoKSkKKyAgICAgICAgZGVs
ZXRlIG1fbm90aWZpY2F0aW9ucy0+dGFrZUZpcnN0KCk7CisgICAgZGVsZXRlIG1fbm90aWZpY2F0
aW9uczsKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlclF0OjpzaG93KFdLUGFnZVJl
ZiBwYWdlLCBXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pIGNvbnN0Cit7CisgICAgbV9u
b3RpZmljYXRpb25zLT5hcHBlbmQobmV3IFF0V2ViTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwg
bV9tYW5hZ2VyKSk7Cit9CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdDo6Y2FuY2Vs
KFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbikgY29uc3QKK3sKKyAgICBpbnQgaTsKKwor
ICAgIGZvciAoaSA9IDA7IGkgPCBtX25vdGlmaWNhdGlvbnMtPnNpemUoKTsgaSsrKSB7CisgICAg
ICAgIHVpbnQ2NF90IGlkID0gbV9ub3RpZmljYXRpb25zLT5hdChpKS0+bm90aWZpY2F0aW9uSUQo
KTsKKyAgICAgICAgaWYgKGlkID09IFdLTm90aWZpY2F0aW9uR2V0SUQobm90aWZpY2F0aW9uKSkg
eworICAgICAgICAgICAgUXRXZWJOb3RpZmljYXRpb24qIG5vdGlmID0gbV9ub3RpZmljYXRpb25z
LT5hdChpKTsKKyAgICAgICAgICAgIFJlZlB0cjxNdXRhYmxlQXJyYXk+IGNsb3NlSURzID0gTXV0
YWJsZUFycmF5OjpjcmVhdGUoKTsKKworICAgICAgICAgICAgbV9ub3RpZmljYXRpb25zLT5yZW1v
dmVBdChpKTsKKyAgICAgICAgICAgIGRlbGV0ZSBub3RpZjsKKworICAgICAgICAgICAgY2xvc2VJ
RHMtPmFwcGVuZChXZWJVSW50NjQ6OmNyZWF0ZShpZCkubGVha1JlZigpKTsKKyAgICAgICAgICAg
IHRvSW1wbChtX21hbmFnZXIpLT5wcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhjbG9zZUlE
cy5nZXQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKyAgICAK
K3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdDo6ZGlkRGVzdHJveShXS05vdGlmaWNhdGlv
blJlZiBub3RpZmljYXRpb24pIGNvbnN0Cit7Cit9CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXJRdDo6Y2xlYXJOb3RpZmljYXRpb25zKFdLQXJyYXlSZWYgbm90aWZpY2F0aW9uSURzKSBj
b25zdAoreworICAgIGludCBpLCBqOworCisgICAgZm9yIChpID0gMDsgaSA8IHRvSW1wbChub3Rp
ZmljYXRpb25JRHMpLT5zaXplKCk7IGkrKykgeworICAgICAgICBmb3IgKGogPSAwOyBqIDwgbV9u
b3RpZmljYXRpb25zLT5zaXplKCk7IGorKykgeworICAgICAgICAgICAgUXRXZWJOb3RpZmljYXRp
b24qIG5vdGlmID0gbV9ub3RpZmljYXRpb25zLT5hdChqKTsKKyAgICAgICAgICAgIGlmIChub3Rp
Zi0+bm90aWZpY2F0aW9uSUQoKSA9PSB0b0ltcGwobm90aWZpY2F0aW9uSURzKS0+YXQ8V2ViVUlu
dDY0PihpKS0+dmFsdWUoKSkgeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1f
bm90aWZpY2F0aW9ucy0+cmVtb3ZlQXQoaik7CisgICAgICAgICAgICAgICAgZGVsZXRlIG5vdGlm
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fSAgICAKKworICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmlj
YXRpb25zKG1fbWFuYWdlciwgbm90aWZpY2F0aW9uSURzKTsKK30KKworUXRXZWJOb3RpZmljYXRp
b246OlF0V2ViTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbiwgV0tO
b3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXIsIFFPYmplY3QgKnBhcmVudCkgCisgICAgOiBR
T2JqZWN0KHBhcmVudCkKKyAgICAsIG1faWQoV0tOb3RpZmljYXRpb25HZXRJRChub3RpZmljYXRp
b24pKQorICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCit7CisgICAgLy8gUUljb24oUVBpeG1hcDo6
ZnJvbUltYWdlKGljb25EYXRhYmFzZS0+aWNvbkltYWdlRm9yUGFnZVVSTCh0b0ltcGwobm90aWZp
Y2F0aW9uKS0+aWNvblVSTCgpKSkpOworCisgICAgLy8gbV9zeXN0cmF5aWNvbi5zZXRJY29uKFFJ
Y29uKFFQaXhtYXA6OmZyb21JbWFnZShtX2RhdGFiYXNlLT5pY29uSW1hZ2VGb3JQYWdlVVJMKHRv
SW1wbChub3RpZmljYXRpb24pLT5pY29uVVJMKCkpKSkpOworICAgIGNvbm5lY3QoJm1fc3lzdHJh
eWljb24sIFNJR05BTChtZXNzYWdlQ2xpY2tlZCgpKSwgdGhpcywgU0xPVChtZXNzYWdlQ2xpY2tl
ZCgpKSk7CisgICAgbV9zeXN0cmF5aWNvbi5zaG93KCk7CisgICAgbV9zeXN0cmF5aWNvbi5zaG93
TWVzc2FnZSh0b0ltcGwobm90aWZpY2F0aW9uKS0+dGl0bGUoKSwgdG9JbXBsKG5vdGlmaWNhdGlv
biktPmJvZHkoKSk7CisKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFNob3dO
b3RpZmljYXRpb24obV9tYW5hZ2VyLCBtX2lkKTsKK30KKworUXRXZWJOb3RpZmljYXRpb246On5R
dFdlYk5vdGlmaWNhdGlvbigpCit7CisgICAgbV9zeXN0cmF5aWNvbi5oaWRlKCk7Cit9CisKK3Zv
aWQgUXRXZWJOb3RpZmljYXRpb246Om1lc3NhZ2VDbGlja2VkKCkKK3sKKyAgICBXS05vdGlmaWNh
dGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKG1fbWFuYWdlciwgbV9pZCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjaW5jbHVkZSAibW9jX1dlYk5vdGlmaWNh
dGlvblByb3ZpZGVyUXQuY3BwIgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9XZWJOb3RpZmljYXRpb25Qcm92aWRlclF0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZTAzNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdC5oCkBAIC0wLDAg
KzEsODAgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIEhQIFBhbG0KKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisKKyNpZm5k
ZWYgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdF9oCisjZGVmaW5lIFdlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyUXRfaAorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lf
Tk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgPFFMaXN0PgorI2luY2x1ZGUgPFFPYmplY3Q+Cisj
aW5jbHVkZSA8UXRXaWRnZXRzL1FTeXN0ZW1UcmF5SWNvbj4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
Tm90aWZpY2F0aW9uTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4K
KworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUXRXZWJOb3RpZmljYXRpb24gOiBwdWJs
aWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIFF0V2ViTm90aWZpY2F0
aW9uKFdLTm90aWZpY2F0aW9uUmVmLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYsIFFPYmplY3Qg
KnBhcmVudCA9IDApOworICAgIHZpcnR1YWwgflF0V2ViTm90aWZpY2F0aW9uKCk7CisKKyAgICB1
aW50NjRfdCBub3RpZmljYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKworcHVibGlj
IFFfU0xPVFM6CisgICAgdm9pZCBtZXNzYWdlQ2xpY2tlZCgpOworCitwcml2YXRlOgorICAgIHVp
bnQ2NF90IG1faWQ7CisgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1fbWFuYWdlcjsKKyAg
ICBRU3lzdGVtVHJheUljb24gbV9zeXN0cmF5aWNvbjsKK307CisKK2NsYXNzIFdlYk5vdGlmaWNh
dGlvblByb3ZpZGVyUXQgOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoK
KyAgICBzdGF0aWMgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdCogY3JlYXRlKFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZik7CisgICAgc3RhdGljIFdLTm90aWZpY2F0aW9uUHJvdmlkZXIqIHByb3Zp
ZGVyKGNvbnN0IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQqKTsKKworICAgIHZpcnR1YWwgfldl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyUXQoKTsKKworcHVibGljIFFfU0xPVFM6CisgICAgdm9pZCBz
aG93KFdLUGFnZVJlZiwgV0tOb3RpZmljYXRpb25SZWYpIGNvbnN0OworICAgIHZvaWQgY2FuY2Vs
KFdLTm90aWZpY2F0aW9uUmVmKSBjb25zdDsKKyAgICB2b2lkIGRpZERlc3Ryb3koV0tOb3RpZmlj
YXRpb25SZWYpIGNvbnN0OworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdLQXJyYXlSZWYg
bm90aWZpY2F0aW9uSURzKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBRX0RJU0FCTEVfQ09QWShX
ZWJOb3RpZmljYXRpb25Qcm92aWRlclF0KTsKKyAgICBXZWJOb3RpZmljYXRpb25Qcm92aWRlclF0
KFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZik7CisKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYgbV9tYW5hZ2VyOworCisgICAgUUxpc3Q8UXRXZWJOb3RpZmljYXRpb24gKj4qIG1fbm90aWZp
Y2F0aW9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgIC8qIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpICovCisKKyNl
bmRpZiAvKiBXZWJOb3RpZmljYXRpb25Qcm92aWRlclF0X2ggKi8K
</data>
<flag name="review"
          id="174192"
          type_id="1"
          status="-"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="174193"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163140</attachid>
            <date>2012-09-10 08:45:14 -0700</date>
            <delta_ts>2012-09-10 08:45:14 -0700</delta_ts>
            <desc>better patch</desc>
            <filename>webkit2-notifications-v2.patch</filename>
            <type>text/plain</type>
            <size>29642</size>
            <attacher name="Olivier Crête">olivier.crete</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwZDYyMWVlLi4xZmNlN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTItMDktMDcgIE9saXZpZXIgQ3LDqnRlICA8b2xpdmllci5jcmV0ZUBwYWxtLmNvbT4K
KworICAgICAgICBbUXRdIEltcGxlbWVudCBXZWJOb3RpZmljYXRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjE3MQorCisgICAgICAgIEltcGxl
bWVudCBXZWJOb3RpZmljYXRpb25zIHVzaW5nIFFTeXN0ZW1UcmF5SWNvbgorICAgICAgICBFeHBv
c2UgdGhlIGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyBwcmVmZXJlbmNlIHNvIHRoYXQgTm90
aWZpY2F0aW9ucyBwZXJtaXNzaW9ucyBjYW4gYmUgdGVzdGVkIGZyb20gYSBmaWxlOi8vLyBVUkwK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRhcmdl
dC5wcmk6IEFkZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlclF0LmNwcC8uaAorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6IEV4cG9ydCB0aGUgTm90aXRpZmljYXRp
b25NYW5hZ2VyIG9iamVjdAorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmdldE5vdGlm
aWNhdGlvbk1hbmFnZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
d19wX3AuaDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlKTogQWRkIFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpnZXROb3RpZmljYXRpb25NYW5hZ2VyKCkKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdC5jcHA6IFN0b3JlIHRoZSBOb3RpZmljYXRpb25N
YW5hZ2VyIG9iamVjdCBpbiB0aGUgUmVxdWVzdAorICAgICAgICAoUVdlYlBlcm1pc3Npb25SZXF1
ZXN0UHJpdmF0ZTo6UVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSk6CisgICAgICAgIChRV2Vi
UGVybWlzc2lvblJlcXVlc3RQcml2YXRlKToKKyAgICAgICAgKFFXZWJQZXJtaXNzaW9uUmVxdWVz
dDo6Y3JlYXRlKToKKyAgICAgICAgKFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6UVdlYlBlcm1pc3Np
b25SZXF1ZXN0KToKKyAgICAgICAgKFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6c2V0QWxsb3cpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0X3AuaDogU3Rv
cmUgdGhlIE5vdGlmaWNhdGlvbk1hbmFnZXIgb2JqZWN0IGluIHRoZSBSZXF1ZXN0CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXMuY3BwOiBBZGQgYWxsb3dGaWxlQWNj
ZXNzRnJvbUZpbGVVUkxzCisgICAgICAgIChRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjp0ZXN0QXR0
cmlidXRlKToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OnNldEF0dHJpYnV0ZSk6
CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OmFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyk6
CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJM
cyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXNfcC5oOiBBZGQg
YWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9x
d2VicHJlZmVyZW5jZXNfcF9wLmg6IEFkZCBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X25vdGlm
aWNhdGlvbi5xbWw6IEFkZCB0ZXN0IHRvIGNoZWNrIGlmIG5vdGlmaWNhdGlvbnMgcmVhbGx5IGFs
bG93ZWQKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9u
b3RpZmljYXRpb24uaHRtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpRdFdlYlBhZ2VVSUNsaWVudDo6cG9saWN5Rm9yTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QpOiBHaXZlIHRoZSBub3RpZmljYXRpb25NYW5hZ2Vy
IHRvIHRoZSBQZXJtaXNzaW9uUmVxdWVzdAorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJDb250
ZXh0UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKTogSW5pdGlhbGlzZSB0aGUgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdAor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJOb3RpZmljYXRpb25Qcm92aWRlclF0LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojp0b05vdGlmaWNhdGlvblBy
b3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6bm90aWZpY2F0aW9uUHJvdmlkZXJTaG93Q2FsbGJhY2sp
OgorICAgICAgICAoV2ViS2l0Ojpub3RpZmljYXRpb25Qcm92aWRlckNhbmNlbENhbGxiYWNrKToK
KyAgICAgICAgKFdlYktpdDo6bm90aWZpY2F0aW9uUHJvdmlkZXJEaWREZXN0cm95Tm90aWZpY2F0
aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0Ojpub3RpZmljYXRpb25Qcm92aWRlckNsZWFy
Tm90aWZpY2F0aW9uc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9u
UHJvdmlkZXJRdDo6cHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25Q
cm92aWRlclF0OjpXZWJOb3RpZmljYXRpb25Qcm92aWRlclF0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdDo6fldlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25Qcm92aWRlclF0OjpzaG93KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdDo6Y2FuY2VsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdDo6ZGlkRGVzdHJveSk6CisgICAgICAg
IChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQ6OmNsZWFyTm90aWZpY2F0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OlF0V2ViTm90aWZpY2F0aW9uOjpRdFdlYk5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlF0V2ViTm90aWZpY2F0aW9uOjp+UXRXZWJOb3RpZmljYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpRdFdlYk5vdGlmaWNhdGlvbjo6bWVzc2FnZUNsaWNrZWQpOiBJ
bmZvcm0gV2ViS2l0IGFib3V0IGNsaWNrcyBmcm9tIFF0CisgICAgICAgICogVUlQcm9jZXNzL3F0
L1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoUXRXZWJOb3RpZmljYXRpb24pOiBXcmFwcyBhIFdlYk5vdGlmaWNhdGlvbiBhbmQg
aXRzIFFTeXN0ZW1UcmF5SWNvbgorICAgICAgICAoV2ViS2l0OjpRdFdlYk5vdGlmaWNhdGlvbjo6
bm90aWZpY2F0aW9uSUQpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdCk6CisK
IDIwMTItMDktMDcgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51
eC5pbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gW1dLMl0gU2V0IHRoZW1lIGZvciB0aGUgaW5z
cGVjdG9yIHZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDczOTQxMzAuLmQyMzJkYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnBy
aQpAQCAtNzg3LDYgKzc4Nyw3IEBAIGNvbnRhaW5zKERFRklORVMsIEhBVkVfUVRRVUlDSz0xKSB7
CiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYkljb25EYXRhYmFzZUNsaWVudC5oIFwKICAgICAg
ICAgVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRNZW51UHJveHlRdC5oIFwKICAgICAgICAgVUlQcm9j
ZXNzL3F0L1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJRdC5oIFwKKyAgICAgICAgVUlQcm9jZXNzL3F0
L1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQuaCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9XZWJQ
b3B1cE1lbnVQcm94eVF0LmgKIAogICAgIFNPVVJDRVMgKz0gXApAQCAtODE5LDYgKzgyMCw3IEBA
IGNvbnRhaW5zKERFRklORVMsIEhBVkVfUVRRVUlDSz0xKSB7CiAgICAgICAgIFVJUHJvY2Vzcy9x
dC9RdFRhcEdlc3R1cmVSZWNvZ25pemVyLmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9XZWJD
b250ZXh0TWVudVByb3h5UXQuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1dlYkdlb2xvY2F0
aW9uUHJvdmlkZXJRdC5jcHAgXAorICAgICAgICBVSVByb2Nlc3MvcXQvV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXJRdC5jcHAgXAogICAgICAgICBVSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlR
dC5jcHAgXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJJY29uRGF0YWJhc2VDbGllbnQuY3Bw
IFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKaW5kZXggNDkw
YjliYS4uNGE4OGE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXcuY3BwCkBAIC0yMjY3LDQgKzIyNjcsMTAgQEAgdm9pZCBRUXVpY2tXZWJW
aWV3OjpzZXRBbGxvd0FueUhUVFBTQ2VydGlmaWNhdGVGb3JMb2NhbEhvc3QoYm9vbCBhbGxvdykK
ICAgICBcZW5kdGFibGUKICovCiAKK1dLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBRUXVpY2tXZWJW
aWV3UHJpdmF0ZTo6Z2V0Tm90aWZpY2F0aW9uTWFuYWdlcigpCit7CisgICAgcmV0dXJuIFdLQ29u
dGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIodG9BUEkoY29udGV4dC5nZXQoKS0+Y29udGV4dCgp
KSk7Cit9CisKKwogI2luY2x1ZGUgIm1vY19xcXVpY2t3ZWJ2aWV3X3AuY3BwIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4
IGI5Yzg5ZWMuLjU2NTMxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKQEAgLTEzMyw2ICsxMzMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKTsKICAgICBQYXNzT3duUHRyPFdlYktpdDo6RHJh
d2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpOwogICAgIHZvaWQgaGFuZGxl
RG93bmxvYWRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94eSopOworICAgIFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZiBnZXROb3RpZmljYXRpb25NYW5hZ2VyKCk7CiAKIHByb3RlY3RlZDoKICAg
ICBjbGFzcyBGbGlja2FibGVBeGlzTG9ja2VyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0LmNwcAppbmRleCA0NTY5
N2EyLi5mZjEwNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2VicGVybWlzc2lvbnJlcXVlc3QuY3BwCkBAIC0yMSwxNyArMjEsMTggQEAKIAog
I2luY2x1ZGUgInF3ZWJwZXJtaXNzaW9ucmVxdWVzdF9wLmgiCiAKLSNpbmNsdWRlICJXS1N0cmlu
Z1F0LmgiCi0jaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dL
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V0tCYXNlLmg+CisjaW5jbHVkZSA8V0tSZXRhaW5QdHIu
aD4KKyNpbmNsdWRlIDxXS1N0cmluZ1F0Lmg+CiAKIGNsYXNzIFFXZWJQZXJtaXNzaW9uUmVxdWVz
dFByaXZhdGUgOiBwdWJsaWMgUVNoYXJlZERhdGEgewogcHVibGljOgotICAgIFFXZWJQZXJtaXNz
aW9uUmVxdWVzdFByaXZhdGUoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgV0tH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIGdlbyA9IDAsIFdLTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RSZWYgbm90aWZ5ID0gMCwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1
ZXN0VHlwZSByZXFUeXBlID0gUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpHZW9sb2NhdGlvbikKKyAg
ICBRV2ViUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJp
dHlPcmlnaW4sIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiBnZW8gPSAwLCBXS05v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIG5vdGlmeSA9IDAsIFFXZWJQZXJtaXNzaW9u
UmVxdWVzdDo6UmVxdWVzdFR5cGUgcmVxVHlwZSA9IFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6R2Vv
bG9jYXRpb24sIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBub3RpZm1hbiA9IDApCiAgICAgICAg
IDogb3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogICAgICAgICAsIGdlb2xvY2F0aW9uUmVxdWVzdChn
ZW8pCiAgICAgICAgICwgbm90aWZpY2F0aW9uUmVxdWVzdChub3RpZnkpCiAgICAgICAgICwgdHlw
ZShyZXFUeXBlKQorICAgICAgICAsIG5vdGlmaWNhdGlvbk1hbmFnZXIobm90aWZtYW4pCiAgICAg
ICAgICwgYWxsb3coZmFsc2UpCiAgICAgewogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gdXJsID0gYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ29weVByb3RvY29sKG9yaWdpbi5nZXQo
KSkpOwpAQCAtNTIsMjYgKzUzLDMwIEBAIHB1YmxpYzoKICAgICBXS1JldGFpblB0cjxXS05vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmPiBub3RpZmljYXRpb25SZXF1ZXN0OwogICAgIFFX
ZWJQZXJtaXNzaW9uUmVxdWVzdDo6UmVxdWVzdFR5cGUgdHlwZTsKICAgICBRdFdlYlNlY3VyaXR5
T3JpZ2luIHNlY3VyaXR5SW5mbzsKKyAgICBXS1JldGFpblB0cjxXS05vdGlmaWNhdGlvbk1hbmFn
ZXJSZWY+IG5vdGlmaWNhdGlvbk1hbmFnZXI7CiAgICAgYm9vbCBhbGxvdzsKIH07CiAKKwogUVdl
YlBlcm1pc3Npb25SZXF1ZXN0KiBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShXS1NlY3Vy
aXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIHJl
cXVlc3QpCiB7Ci0gICAgcmV0dXJuIG5ldyBRV2ViUGVybWlzc2lvblJlcXVlc3Qob3JpZ2luLCBy
ZXF1ZXN0KTsKKyAgICByZXR1cm4gbmV3IFFXZWJQZXJtaXNzaW9uUmVxdWVzdChvcmlnaW4sIHJl
cXVlc3QsIDAsIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6R2VvbG9jYXRpb24pOwogfQogCi1RV2Vi
UGVybWlzc2lvblJlcXVlc3QqIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKFdLU2VjdXJp
dHlPcmlnaW5SZWYgb3JpZ2luLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIHJl
cXVlc3QpCitRV2ViUGVybWlzc2lvblJlcXVlc3QqIFFXZWJQZXJtaXNzaW9uUmVxdWVzdDo6Y3Jl
YXRlKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UmVmIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBub3RpZmljYXRpb25NYW5h
Z2VyKQogewotICAgIHJldHVybiBuZXcgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KG9yaWdpbiwgMCwg
cmVxdWVzdCwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpOb3RpZmljYXRpb24pOworICAgIHJldHVy
biBuZXcgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KG9yaWdpbiwgMCwgcmVxdWVzdCwgUVdlYlBlcm1p
c3Npb25SZXF1ZXN0OjpOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbk1hbmFnZXIpOwogfQogCiBR
V2ViUGVybWlzc2lvblJlcXVlc3Q6OlFXZWJQZXJtaXNzaW9uUmVxdWVzdChXS1NlY3VyaXR5T3Jp
Z2luUmVmIHNlY3VyaXR5T3JpZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAsIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiBnZW8KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgV0tOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdFJlZiBub3RpZnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICwgUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpSZXF1ZXN0VHlwZSB0eXBl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFdLTm90aWZp
Y2F0aW9uTWFuYWdlclJlZiBub3RpZmljYXRpb25NYW5hZ2VyCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAsIFFPYmplY3QqIHBhcmVudCkKICAgICA6IFFPYmpl
Y3QocGFyZW50KQotICAgICwgZChuZXcgUVdlYlBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZShzZWN1
cml0eU9yaWdpbiwgZ2VvLCBub3RpZnksIHR5cGUpKQorICAgICwgZChuZXcgUVdlYlBlcm1pc3Np
b25SZXF1ZXN0UHJpdmF0ZShzZWN1cml0eU9yaWdpbiwgZ2VvLCBub3RpZnksIHR5cGUsIG5vdGlm
aWNhdGlvbk1hbmFnZXIpKQogewogfQogCkBAIC05Niw2ICsxMDEsOCBAQCB2b2lkIFFXZWJQZXJt
aXNzaW9uUmVxdWVzdDo6c2V0QWxsb3coYm9vbCBhY2NlcHRlZCkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgTm90aWZpY2F0aW9uOiB7CisgICAgICAgIFdLTm90aWZpY2F0aW9uTWFu
YWdlclByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KGQtPm5vdGlmaWNhdGlvbk1h
bmFnZXIuZ2V0KCksIGQtPm9yaWdpbi5nZXQoKSwgYWNjZXB0ZWQpOworCiAgICAgICAgIGlmIChh
Y2NlcHRlZCkKICAgICAgICAgICAgIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RBbGxv
dyhkLT5ub3RpZmljYXRpb25SZXF1ZXN0LmdldCgpKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicGVybWlzc2lvbnJlcXVlc3Rf
cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicGVybWlzc2lvbnJlcXVl
c3RfcC5oCmluZGV4IDAwMDI1MmIuLjAxMGE2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnBlcm1pc3Npb25yZXF1ZXN0X3AuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdF9wLmgKQEAgLTI2
LDcgKzI2LDkgQEAKICNpbmNsdWRlIDxRdENvcmUvUU9iamVjdD4KICNpbmNsdWRlIDxRdENvcmUv
cXNoYXJlZGRhdGEuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmg+CiAj
aW5jbHVkZSA8V2ViS2l0Mi9XS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg+CisKICNp
bmNsdWRlIDxXZWJLaXQyL1dLU2VjdXJpdHlPcmlnaW4uaD4KIAogY2xhc3MgUVdlYlBlcm1pc3Np
b25SZXF1ZXN0UHJpdmF0ZTsKQEAgLTQ1LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH07CiAKICAg
ICBzdGF0aWMgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiBjcmVhdGUoV0tTZWN1cml0eU9yaWdpblJl
ZiwgV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKLSAgICBzdGF0aWMgUVdlYlBl
cm1pc3Npb25SZXF1ZXN0KiBjcmVhdGUoV0tTZWN1cml0eU9yaWdpblJlZiwgV0tOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFJlZik7CisgICAgc3RhdGljIFFXZWJQZXJtaXNzaW9uUmVxdWVz
dCogY3JlYXRlKFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RSZWYsIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZik7CiAgICAgdmlydHVhbCB+UVdlYlBl
cm1pc3Npb25SZXF1ZXN0KCk7CiAKICAgICBSZXF1ZXN0VHlwZSB0eXBlKCkgY29uc3Q7CkBAIC02
MSw2ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICwgV0tHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIGdlbyA9IDAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmIG5vdGlmeSA9IDAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLCBRV2ViUGVybWlzc2lvblJlcXVlc3Q6OlJlcXVlc3RU
eXBlIHR5cGUgPSBHZW9sb2NhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAsIFdLTm90
aWZpY2F0aW9uTWFuYWdlclJlZiBub3RpZmljYXRpb25NYW5hZ2VyID0gMAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAsIFFPYmplY3QqIHBhcmVudCA9IDApOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXMuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXMuY3BwCmlu
ZGV4IGUyN2Y1MTIuLmMwOTg0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlcy5jcHAKQEAgLTc1LDYgKzc1LDkgQEAgYm9vbCBRV2Vi
UHJlZmVyZW5jZXNQcml2YXRlOjp0ZXN0QXR0cmlidXRlKFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6
OldlYkF0dHJpYnV0ZQogICAgIGNhc2UgV2ViQXVkaW9FbmFibGVkOgogICAgICAgICByZXR1cm4g
V0tQcmVmZXJlbmNlc0dldFdlYkF1ZGlvRW5hYmxlZChwcmVmZXJlbmNlc1JlZigpKTsKICNlbmRp
ZgorICAgIGNhc2UgQWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzRW5hYmxlZDoKKyAgICAgICAg
cmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQWxsb3dlZChwcmVm
ZXJlbmNlc1JlZigpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNSw2ICsxMTgs
NyBAQCB2b2lkIFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OnNldEF0dHJpYnV0ZShRV2ViUHJlZmVy
ZW5jZXNQcml2YXRlOjpXZWJBdHRyaWJ1dGUgYQogICAgICAgICBicmVhazsKICAgICBjYXNlIEZy
YW1lRmxhdHRlbmluZ0VuYWJsZWQ6CiAgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRGcmFtZUZsYXR0
ZW5pbmdFbmFibGVkKHByZWZlcmVuY2VzUmVmKCksIGVuYWJsZSk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgRGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDoKICAgICAgICAgV0tQcmVmZXJlbmNlc1Nl
dERldmVsb3BlckV4dHJhc0VuYWJsZWQocHJlZmVyZW5jZXNSZWYoKSwgZW5hYmxlKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0xMzMsNiArMTM3LDkgQEAgdm9pZCBRV2ViUHJlZmVyZW5jZXNQcml2YXRl
OjpzZXRBdHRyaWJ1dGUoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6V2ViQXR0cmlidXRlIGEKICAg
ICAgICAgV0tQcmVmZXJlbmNlc1NldFdlYkF1ZGlvRW5hYmxlZChwcmVmZXJlbmNlc1JlZigpLCBl
bmFibGUpOwogICAgICAgICBicmVhazsKICNlbmRpZgorICAgIGNhc2UgQWxsb3dGaWxlQWNjZXNz
RnJvbUZpbGVVUkxzRW5hYmxlZDoKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldEZpbGVBY2Nlc3NG
cm9tRmlsZVVSTHNBbGxvd2VkKHByZWZlcmVuY2VzUmVmKCksIGVuYWJsZSk7CisgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
QEAgLTU0MSw2ICs1NDgsMTggQEAgdm9pZCBRV2ViUHJlZmVyZW5jZXM6OnNldFdlYkF1ZGlvRW5h
YmxlZChib29sIGVuYWJsZSkKICNlbmRpZgogfQogCisKK2Jvb2wgUVdlYlByZWZlcmVuY2VzOjph
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoKSBjb25zdAoreworICAgIHJldHVybiBkLT50ZXN0
QXR0cmlidXRlKFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OldlYkF1ZGlvRW5hYmxlZCk7Cit9CisK
K3ZvaWQgUVdlYlByZWZlcmVuY2VzOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9v
bCBlbmFibGUpCit7CisgICAgZC0+c2V0QXR0cmlidXRlKFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6
OkFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc0VuYWJsZWQsIGVuYWJsZSk7CisgICAgZW1pdCBh
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNDaGFuZ2VkKCk7Cit9CisKIFdLUHJlZmVyZW5jZXNS
ZWYgUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6cHJlZmVyZW5jZXNSZWYoKSBjb25zdAogewogICAg
IFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiA9IHRvQVBJKHdlYlZpZXdQcml2YXRlLT53ZWJQ
YWdlUHJveHktPnBhZ2VHcm91cCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzX3AuaAppbmRleCAzNzNkZjc1Li43NDBjNTYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlc19w
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXNf
cC5oCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICBRX1BST1BFUlRZKHVuc2lnbmVkIG1p
bmltdW1Gb250U2l6ZSBSRUFEIG1pbmltdW1Gb250U2l6ZSBXUklURSBzZXRNaW5pbXVtRm9udFNp
emUgTk9USUZZIG1pbmltdW1Gb250U2l6ZUNoYW5nZWQgRklOQUwpCiAgICAgUV9QUk9QRVJUWSh1
bnNpZ25lZCBkZWZhdWx0Rm9udFNpemUgUkVBRCBkZWZhdWx0Rm9udFNpemUgV1JJVEUgc2V0RGVm
YXVsdEZvbnRTaXplIE5PVElGWSBkZWZhdWx0Rm9udFNpemVDaGFuZ2VkIEZJTkFMKQogICAgIFFf
UFJPUEVSVFkodW5zaWduZWQgZGVmYXVsdEZpeGVkRm9udFNpemUgUkVBRCBkZWZhdWx0Rml4ZWRG
b250U2l6ZSBXUklURSBzZXREZWZhdWx0Rml4ZWRGb250U2l6ZSBOT1RJRlkgZGVmYXVsdEZpeGVk
Rm9udFNpemVDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoYm9vbCBhbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHMgUkVBRCBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMgV1JJVEUgc2V0
QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIE5PVElGWSBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmls
ZVVSTHNDaGFuZ2VkIEZJTkFMKQogCiAgICAgYm9vbCBhdXRvTG9hZEltYWdlcygpIGNvbnN0Owog
ICAgIHZvaWQgc2V0QXV0b0xvYWRJbWFnZXMoYm9vbCBlbmFibGUpOwpAQCAtMTI2LDYgKzEyNyw5
IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBkZWZhdWx0Rml4ZWRGb250U2l6ZSgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0RGVmYXVsdEZpeGVkRm9udFNpemUodW5zaWduZWQgc2l6ZSk7CiAKKyAgICBi
b29sIGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcygpIGNvbnN0OworICAgIHZvaWQgc2V0QWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlKTsKKwogUV9TSUdOQUxTOgogICAg
IHZvaWQgYXV0b0xvYWRJbWFnZXNDaGFuZ2VkKCk7CiAgICAgdm9pZCBwbHVnaW5zRW5hYmxlZENo
YW5nZWQoKTsKQEAgLTE1Myw2ICsxNTcsOCBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBkZWZhdWx0
Rm9udFNpemVDaGFuZ2VkKCk7CiAgICAgdm9pZCBkZWZhdWx0Rml4ZWRGb250U2l6ZUNoYW5nZWQo
KTsKIAorICAgIHZvaWQgYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2hhbmdlZCgpOworCiBw
cml2YXRlOgogICAgIFFfRElTQUJMRV9DT1BZKFFXZWJQcmVmZXJlbmNlcykKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXNfcF9wLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlc19wX3AuaApp
bmRleCBjNjA2YmJlLi4yMjRlNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlc19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlc19wX3AuaApAQCAtMjEsNiArMjEsNyBAQAogI2Rl
ZmluZSBxd2VicHJlZmVyZW5jZXNfcF9wX2gKIAogI2luY2x1ZGUgIldLUHJlZmVyZW5jZXMuaCIK
KyNpbmNsdWRlICJXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIgogCiBjbGFzcyBRUXVpY2tXZWJWaWV3
UHJpdmF0ZTsKIApAQCAtNDEsNyArNDIsOCBAQCBwdWJsaWM6CiAgICAgICAgIERldmVsb3BlckV4
dHJhc0VuYWJsZWQsCiAgICAgICAgIFdlYkdMRW5hYmxlZCwKICAgICAgICAgQ1NTQ3VzdG9tRmls
dGVyRW5hYmxlZCwKLSAgICAgICAgV2ViQXVkaW9FbmFibGVkCisgICAgICAgIFdlYkF1ZGlvRW5h
YmxlZCwKKyAgICAgICAgQWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzRW5hYmxlZAogICAgIH07
CiAKICAgICBlbnVtIEZvbnRGYW1pbHkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9ub3RpZmljYXRpb24ucW1s
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3
L3RzdF9ub3RpZmljYXRpb24ucW1sCmluZGV4IGFhNDMyZjYuLmVhZDM5NjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90
c3Rfbm90aWZpY2F0aW9uLnFtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X25vdGlmaWNhdGlvbi5xbWwKQEAgLTgsMjggKzgs
NDAgQEAgV2ViVmlldyB7CiAgICAgd2lkdGg6IDIwMAogICAgIGhlaWdodDogMjAwCiAKLSAgICBw
cm9wZXJ0eSBib29sIGV4cGVjdGVkUGVybWlzc2lvbjogZmFsc2UKKyAgICBwcm9wZXJ0eSBib29s
IHBlcm1pc3Npb25HcmFudGVkOiBmYWxzZQorCisgICAgZXhwZXJpbWVudGFsLnByZWZlcmVuY2Vz
Lm5hdmlnYXRvclF0T2JqZWN0RW5hYmxlZDogdHJ1ZQorICAgIGV4cGVyaW1lbnRhbC5wcmVmZXJl
bmNlcy5hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM6IHRydWUKKyAgICBleHBlcmltZW50YWwu
b25NZXNzYWdlUmVjZWl2ZWQ6IHsKKyAgICAgICAgcGVybWlzc2lvbkdyYW50ZWQgPSAobWVzc2Fn
ZS5kYXRhID09ICJQZXJtaXNzaW9uIGdyYW50ZWQiKQorICAgIH0KKworICAgIFNpZ25hbFNweSB7
CisgICAgICAgIGlkOiBtZXNzYWdlU3B5CisgICAgICAgIHRhcmdldDogd2ViVmlldy5leHBlcmlt
ZW50YWwKKyAgICAgICAgc2lnbmFsTmFtZTogIm1lc3NhZ2VSZWNlaXZlZCIKKyAgICB9CiAKICAg
ICBTaWduYWxTcHkgewotICAgICAgICBpZDogc3B5CisgICAgICAgIGlkOiBwZXJtaXNzaW9uU3B5
CiAgICAgICAgIHRhcmdldDogZXhwZXJpbWVudGFsCiAgICAgICAgIHNpZ25hbE5hbWU6ICJwZXJt
aXNzaW9uUmVxdWVzdGVkIgogICAgIH0KIAogICAgIGV4cGVyaW1lbnRhbC5vblBlcm1pc3Npb25S
ZXF1ZXN0ZWQ6IHsKLSAgICAgICAgLy8gTXVzdCBiZSBmYWxzZSBieSBkZWZhdWx0Ci0gICAgICAg
IGlmICghcGVybWlzc2lvbi5hbGxvdykgeworICAgICAgICBpZiAocGVybWlzc2lvbi50eXBlICE9
IFBlcm1pc3Npb25SZXF1ZXN0Lk5vdGlmaWNhdGlvbikgeworICAgICAgICAgICBjb25zb2xlLmxv
ZygiRmFpbDogcGVybWlzc2lvbiBpcyBub3QgTm90aWZpY2F0aW9uIik7CisgICAgICAgICAgIHBl
cm1pc3Npb24uYWxsb3cgPSBmYWxzZQorICAgICAgICB9IGVsc2UgaWYgKCFwZXJtaXNzaW9uLmFs
bG93KSB7CisgICAgICAgICAgIC8vIE11c3QgYmUgZmFsc2UgYnkgZGVmYXVsdAogICAgICAgICAg
ICBwZXJtaXNzaW9uLmFsbG93ID0gdHJ1ZQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBj
b25zb2xlLmxvZygiRmFpbDogcGVybWlzc2lvbiBtdXN0IGJlIHNldCB0byBmYWxzZSIpCiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAocGVybWlzc2lvbi50eXBlID09IFBlcm1pc3Npb25SZXF1ZXN0
Lk5vdGlmaWNhdGlvbikgewotICAgICAgICAgICAgY29uc29sZS5sb2coIlBlcm1pc3Npb24gaXMg
RGVza3RvcCBOb3RpZmljYXRpb24iKQotICAgICAgICB9CiAgICAgfQogCi0gICAgVGVzdENhc2Ug
eworICAgVGVzdENhc2UgewogICAgICAgICBuYW1lOiAiV2ViVmlld0Rlc2t0b3BOb3RpZmljYXRp
b25QZXJtaXNzaW9uIgogCiAgICAgICAgIC8vIERlbGF5ZWQgd2luZG93U2hvd24gdG8gd29ya2Fy
b3VuZCBwcm9ibGVtcyB3aXRoIFF0NSBpbiBkZWJ1ZyBtb2RlLgpAQCAtNDIsMTQgKzU0LDE3IEBA
IFdlYlZpZXcgewogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gaW5pdCgpIHsKLSAgICAg
ICAgICAgIHNweS5jbGVhcigpCisgICAgICAgICAgICBwZXJtaXNzaW9uU3B5LmNsZWFyKCkKKyAg
ICAgICAgICAgIG1lc3NhZ2VTcHkuY2xlYXIoKQogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rp
b24gdGVzdF9wZXJtaXNzaW9uUmVxdWVzdCgpIHsKLSAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNv
dW50LCAwKQorICAgICAgICAgICAgY29tcGFyZShwZXJtaXNzaW9uU3B5LmNvdW50LCAwKQogICAg
ICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL25vdGlmaWNh
dGlvbi5odG1sIikKLSAgICAgICAgICAgIHNweS53YWl0KCkKLSAgICAgICAgICAgIGNvbXBhcmUo
c3B5LmNvdW50LCAxKQorICAgICAgICAgICAgbWVzc2FnZVNweS53YWl0KCkKKyAgICAgICAgICAg
IGNvbXBhcmUobWVzc2FnZVNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUocGVybWlz
c2lvblNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUocGVybWlzc2lvbkdyYW50ZWQs
IHRydWUpCiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9ub3RpZmljYXRpb24uaHRtbCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL25v
dGlmaWNhdGlvbi5odG1sCmluZGV4IGI1MzUzM2UuLjQ2YTQwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL25vdGlmaWNh
dGlvbi5odG1sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1s
dGVzdHMvY29tbW9uL25vdGlmaWNhdGlvbi5odG1sCkBAIC0yLDEzICsyLDE2IEBACiA8aGVhZD4K
ICAgPHRpdGxlPkRlc2t0b3AgTm90aWZpY2F0aW9uIFBlcm1pc3Npb24gdGVzdDwvdGl0bGU+CiAg
IDxzY3JpcHQ+Ci0gICAgcmVxdWVzdFBlcm1pc3Npb24gPSBmdW5jdGlvbihjYikgewotICAgICAg
d2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMucmVxdWVzdFBlcm1pc3Npb24oZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGlmIChjYikKLSAgICAgICAgICAgY2Iod2luZG93LndlYmtpdE5vdGlmaWNhdGlv
bnMuY2hlY2tQZXJtaXNzaW9uKCkgPT0gMCk7Ci0gICAgICB9KTsKLSAgICB9Ci0gICAgcmVxdWVz
dFBlcm1pc3Npb24oKQorICByZXF1ZXN0UGVybWlzc2lvbiA9IGZ1bmN0aW9uKCkgeworICAgIHdp
bmRvdy53ZWJraXROb3RpZmljYXRpb25zLnJlcXVlc3RQZXJtaXNzaW9uKGZ1bmN0aW9uKCkgewor
ICAgICAgaWYgKHdpbmRvdy53ZWJraXROb3RpZmljYXRpb25zLmNoZWNrUGVybWlzc2lvbigpID09
IDApIHsKKyAgICAgICAgbmF2aWdhdG9yLnF0LnBvc3RNZXNzYWdlKCJQZXJtaXNzaW9uIGdyYW50
ZWQiKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIG5hdmlnYXRvci5xdC5wb3N0TWVzc2FnZSgi
UGVybWlzc2lvbiBub3QgZ3JhbnRlZDogIiArIHdpbmRvdy53ZWJraXROb3RpZmljYXRpb25zLmNo
ZWNrUGVybWlzc2lvbigpKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfQorICByZXF1ZXN0UGVybWlz
c2lvbigpCiAgIDwvc2NyaXB0PgogPC9oZWFkPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmNwcAppbmRleCAzOWUxZTNkLi4xMWQ5NmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5j
cHAKQEAgLTE2Nyw3ICsxNjcsMTAgQEAgdm9pZCBRdFdlYlBhZ2VVSUNsaWVudDo6cG9saWN5Rm9y
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmIHBhZ2UsIFcKICAgICBpZiAo
IXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIFFXZWJQZXJtaXNzaW9uUmVxdWVzdCog
cmVxID0gUVdlYlBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUob3JpZ2luLCByZXF1ZXN0KTsKKyAg
ICBRUXVpY2tXZWJWaWV3KiB3ZWJWaWV3ID0gdG9RdFdlYlBhZ2VVSUNsaWVudChjbGllbnRJbmZv
KS0+bV93ZWJWaWV3OworCisgICAgUVdlYlBlcm1pc3Npb25SZXF1ZXN0KiByZXEgPSBRV2ViUGVy
bWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShvcmlnaW4sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRUXVpY2tXZWJW
aWV3UHJpdmF0ZTo6Z2V0KHdlYlZpZXcpLT5nZXROb3RpZmljYXRpb25NYW5hZ2VyKCkpOwogICAg
IHRvUXRXZWJQYWdlVUlDbGllbnQoY2xpZW50SW5mbyktPnBlcm1pc3Npb25SZXF1ZXN0KHJlcSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0
UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKaW5k
ZXggZjZhZjg5ZC4uNmFhZDE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1dlYkNvbnRleHRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dl
YkNvbnRleHRRdC5jcHAKQEAgLTM0LDYgKzM0LDkgQEAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04p
CiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0LmgiCiAjZW5kaWYKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorI2luY2x1
ZGUgIldlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgog
I2luY2x1ZGUgPFFEaXI+CkBAIC03NSw2ICs3OCwxMCBAQCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFy
YQogICAgIHN0YXRpYyBXZWJHZW9sb2NhdGlvblByb3ZpZGVyUXQqIGxvY2F0aW9uID0gV2ViR2Vv
bG9jYXRpb25Qcm92aWRlclF0OjpjcmVhdGUodG9BUEkoZ2VvbG9jYXRpb25NYW5hZ2VyUHJveHko
KSkpOwogICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoZ2VvbG9jYXRp
b25NYW5hZ2VyUHJveHkoKSksIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJRdDo6cHJvdmlkZXIobG9j
YXRpb24pKTsKICNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCisgICAgc3RhdGljIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQq
IG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQ6OmNyZWF0ZSh0b0FQSShu
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkoKSkpOworICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclNl
dFByb3ZpZGVyKHRvQVBJKG5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSgpKSwgV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXJRdDo6cHJvdmlkZXIobm90aWZpY2F0aW9uKSk7CisjZW5kaWYKIH0KIAogdm9p
ZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJOb3RpZmljYXRpb25Qcm92aWRlclF0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJOb3RpZmljYXRpb25Qcm92aWRlclF0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2JiYjEwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyUXQuY3BwCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBI
UCBQYWxtCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXJRdC5oIgorCisjaW5jbHVkZSA8TXV0YWJsZUFycmF5Lmg+CisjaW5jbHVkZSA8
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaD4KKyNpbmNsdWRlIDxOb3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oPgorI2luY2x1ZGUgPFdLQVBJQ2FzdC5oPgor
I2luY2x1ZGUgPFdLQXJyYXkuaD4KKyNpbmNsdWRlIDxXS05vdGlmaWNhdGlvbi5oPgorI2luY2x1
ZGUgPFdLTm90aWZpY2F0aW9uTWFuYWdlci5oPgorI2luY2x1ZGUgPFdLTnVtYmVyLmg+CisjaW5j
bHVkZSA8V0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxXS1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKKworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKKworc3RhdGljIGlubGluZSBjb25zdCBXZWJOb3RpZmljYXRpb25Q
cm92aWRlclF0KiB0b05vdGlmaWNhdGlvblByb3ZpZGVyKGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
UXQqPihjbGllbnRJbmZvKTsKK30KKworV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdCogV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXJRdDo6Y3JlYXRlKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5h
Z2VyKQoreworICAgIHJldHVybiBuZXcgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdChtYW5hZ2Vy
KTsKK30KKworc3RhdGljIHZvaWQgbm90aWZpY2F0aW9uUHJvdmlkZXJTaG93Q2FsbGJhY2soV0tQ
YWdlUmVmIHBhZ2UsIFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3sKKyAgICB0b05vdGlmaWNhdGlvblByb3ZpZGVyKGNsaWVudEluZm8pLT5z
aG93KHBhZ2UsIG5vdGlmaWNhdGlvbik7Cit9CisKK3N0YXRpYyB2b2lkIG5vdGlmaWNhdGlvblBy
b3ZpZGVyQ2FuY2VsQ2FsbGJhY2soV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHRvTm90aWZpY2F0aW9uUHJvdmlkZXIoY2xpZW50
SW5mbyktPmNhbmNlbChub3RpZmljYXRpb24pOworfQorCitzdGF0aWMgdm9pZCBub3RpZmljYXRp
b25Qcm92aWRlckRpZERlc3Ryb3lOb3RpZmljYXRpb25DYWxsYmFjayhXS05vdGlmaWNhdGlvblJl
ZiBub3RpZmljYXRpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdG9Ob3RpZmlj
YXRpb25Qcm92aWRlcihjbGllbnRJbmZvKS0+ZGlkRGVzdHJveShub3RpZmljYXRpb24pOworfQor
CitzdGF0aWMgdm9pZCBub3RpZmljYXRpb25Qcm92aWRlckNsZWFyTm90aWZpY2F0aW9uc0NhbGxi
YWNrKFdLQXJyYXlSZWYgbm90aWZpY2F0aW9uSURzLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQor
eworICAgIHRvTm90aWZpY2F0aW9uUHJvdmlkZXIoY2xpZW50SW5mbyktPmNsZWFyTm90aWZpY2F0
aW9ucyhub3RpZmljYXRpb25JRHMpOworfQorCisKK1dLTm90aWZpY2F0aW9uUHJvdmlkZXIqIFdl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyUXQ6OnByb3ZpZGVyKGNvbnN0IFdlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyUXQqIG5vdGlmaWNhdGlvbikKK3sKKyAgICBzdGF0aWMgV0tOb3RpZmljYXRpb25Qcm92
aWRlciBwcm92aWRlciA9IHsKKyAgICAgICAgMCwgLy8gVGhpcyBmZWF0dXJlcyB0aGUgdmVyc2lv
bi4KKyAgICAgICAgbm90aWZpY2F0aW9uLCAvLyBUaGlzIHBvaW50cyB0byB0aGUgb2JqZWN0IGlt
cGxlbWVudGVyLgorICAgICAgICBub3RpZmljYXRpb25Qcm92aWRlclNob3dDYWxsYmFjaywKKyAg
ICAgICAgbm90aWZpY2F0aW9uUHJvdmlkZXJDYW5jZWxDYWxsYmFjaywgICAgIAorICAgICAgICBu
b3RpZmljYXRpb25Qcm92aWRlckRpZERlc3Ryb3lOb3RpZmljYXRpb25DYWxsYmFjaywKKyAgICAg
ICAgMCwgLy8gbm90aWZpY2F0aW9uUHJvdmlkZXJBZGROb3RpZmljYXRpb25NYW5hZ2VyQ2FsbGJh
Y2ssCisgICAgICAgIDAsIC8vIG5vdGlmaWNhdGlvblByb3ZpZGVyUmVtb3ZlTm90aWZpY2F0aW9u
TWFuYWdlckNhbGxiYWNrLAorICAgICAgICAwLCAvLyBub3RpZmljYXRpb25Qcm92aWRlck5vdGlm
aWNhdGlvblBlcm1pc3Npb25zQ2FsbGJhY2ssCisgICAgICAgIG5vdGlmaWNhdGlvblByb3ZpZGVy
Q2xlYXJOb3RpZmljYXRpb25zQ2FsbGJhY2sKKyAgICB9OworCisgICAgcmV0dXJuICZwcm92aWRl
cjsKK30KKworCitXZWJOb3RpZmljYXRpb25Qcm92aWRlclF0OjpXZWJOb3RpZmljYXRpb25Qcm92
aWRlclF0KFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyKQorICAgIDogbV9tYW5hZ2Vy
KG1hbmFnZXIpCisgICAgLCBtX25vdGlmaWNhdGlvbnMobmV3IFFMaXN0PFF0V2ViTm90aWZpY2F0
aW9uICo+ICgpKQoreworfQorCitXZWJOb3RpZmljYXRpb25Qcm92aWRlclF0Ojp+V2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXJRdCgpCit7CisgICAgd2hpbGUgKCFtX25vdGlmaWNhdGlvbnMtPmlzRW1w
dHkoKSkKKyAgICAgICAgZGVsZXRlIG1fbm90aWZpY2F0aW9ucy0+dGFrZUZpcnN0KCk7CisgICAg
ZGVsZXRlIG1fbm90aWZpY2F0aW9uczsKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRl
clF0OjpzaG93KFdLUGFnZVJlZiBwYWdlLCBXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24p
IGNvbnN0Cit7CisgICAgbV9ub3RpZmljYXRpb25zLT5hcHBlbmQobmV3IFF0V2ViTm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbiwgbV9tYW5hZ2VyKSk7Cit9CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXJRdDo6Y2FuY2VsKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbikgY29uc3QK
K3sKKyAgICBpbnQgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBtX25vdGlmaWNhdGlvbnMtPnNp
emUoKTsgaSsrKSB7CisgICAgICAgIHVpbnQ2NF90IGlkID0gbV9ub3RpZmljYXRpb25zLT5hdChp
KS0+bm90aWZpY2F0aW9uSUQoKTsKKyAgICAgICAgaWYgKGlkID09IFdLTm90aWZpY2F0aW9uR2V0
SUQobm90aWZpY2F0aW9uKSkgeworICAgICAgICAgICAgUXRXZWJOb3RpZmljYXRpb24qIG5vdGlm
ID0gbV9ub3RpZmljYXRpb25zLT5hdChpKTsKKyAgICAgICAgICAgIFJlZlB0cjxNdXRhYmxlQXJy
YXk+IGNsb3NlSURzID0gTXV0YWJsZUFycmF5OjpjcmVhdGUoKTsKKworICAgICAgICAgICAgbV9u
b3RpZmljYXRpb25zLT5yZW1vdmVBdChpKTsKKyAgICAgICAgICAgIGRlbGV0ZSBub3RpZjsKKwor
ICAgICAgICAgICAgY2xvc2VJRHMtPmFwcGVuZChXZWJVSW50NjQ6OmNyZWF0ZShpZCkubGVha1Jl
ZigpKTsKKyAgICAgICAgICAgIHRvSW1wbChtX21hbmFnZXIpLT5wcm92aWRlckRpZENsb3NlTm90
aWZpY2F0aW9ucyhjbG9zZUlEcy5nZXQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KK30KKyAgICAKK3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdDo6ZGlkRGVz
dHJveShXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pIGNvbnN0Cit7Cit9CisKK3ZvaWQg
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdDo6Y2xlYXJOb3RpZmljYXRpb25zKFdLQXJyYXlSZWYg
bm90aWZpY2F0aW9uSURzKSBjb25zdAoreworICAgIGludCBpLCBqOworCisgICAgZm9yIChpID0g
MDsgaSA8IHRvSW1wbChub3RpZmljYXRpb25JRHMpLT5zaXplKCk7IGkrKykgeworICAgICAgICBm
b3IgKGogPSAwOyBqIDwgbV9ub3RpZmljYXRpb25zLT5zaXplKCk7IGorKykgeworICAgICAgICAg
ICAgUXRXZWJOb3RpZmljYXRpb24qIG5vdGlmID0gbV9ub3RpZmljYXRpb25zLT5hdChqKTsKKyAg
ICAgICAgICAgIGlmIChub3RpZi0+bm90aWZpY2F0aW9uSUQoKSA9PSB0b0ltcGwobm90aWZpY2F0
aW9uSURzKS0+YXQ8V2ViVUludDY0PihpKS0+dmFsdWUoKSkgeworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIG1fbm90aWZpY2F0aW9ucy0+cmVtb3ZlQXQoaik7CisgICAgICAgICAg
ICAgICAgZGVsZXRlIG5vdGlmOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfSAgICAKKworICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3Zp
ZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKG1fbWFuYWdlciwgbm90aWZpY2F0aW9uSURzKTsKK30K
KworUXRXZWJOb3RpZmljYXRpb246OlF0V2ViTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uUmVm
IG5vdGlmaWNhdGlvbiwgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXIsIFFPYmplY3Qg
KnBhcmVudCkgCisgICAgOiBRT2JqZWN0KHBhcmVudCkKKyAgICAsIG1faWQoV0tOb3RpZmljYXRp
b25HZXRJRChub3RpZmljYXRpb24pKQorICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCit7CisgICAg
Ly8gUUljb24oUVBpeG1hcDo6ZnJvbUltYWdlKGljb25EYXRhYmFzZS0+aWNvbkltYWdlRm9yUGFn
ZVVSTCh0b0ltcGwobm90aWZpY2F0aW9uKS0+aWNvblVSTCgpKSkpOworCisgICAgLy8gbV9zeXN0
cmF5aWNvbi5zZXRJY29uKFFJY29uKFFQaXhtYXA6OmZyb21JbWFnZShtX2RhdGFiYXNlLT5pY29u
SW1hZ2VGb3JQYWdlVVJMKHRvSW1wbChub3RpZmljYXRpb24pLT5pY29uVVJMKCkpKSkpOworICAg
IGNvbm5lY3QoJm1fc3lzdHJheWljb24sIFNJR05BTChtZXNzYWdlQ2xpY2tlZCgpKSwgdGhpcywg
U0xPVChtZXNzYWdlQ2xpY2tlZCgpKSk7CisgICAgbV9zeXN0cmF5aWNvbi5zaG93KCk7CisgICAg
bV9zeXN0cmF5aWNvbi5zaG93TWVzc2FnZSh0b0ltcGwobm90aWZpY2F0aW9uKS0+dGl0bGUoKSwg
dG9JbXBsKG5vdGlmaWNhdGlvbiktPmJvZHkoKSk7CisKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJQcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24obV9tYW5hZ2VyLCBtX2lkKTsKK30KKworUXRX
ZWJOb3RpZmljYXRpb246On5RdFdlYk5vdGlmaWNhdGlvbigpCit7CisgICAgbV9zeXN0cmF5aWNv
bi5oaWRlKCk7Cit9CisKK3ZvaWQgUXRXZWJOb3RpZmljYXRpb246Om1lc3NhZ2VDbGlja2VkKCkK
K3sKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9u
KG1fbWFuYWdlciwgbV9pZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjaW5jbHVk
ZSAibW9jX1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXQuY3BwIgorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJOb3RpZmljYXRpb25Qcm92aWRlclF0
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJR
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZGE4MGEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXJRdC5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIEhQ
IFBhbG0KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisKKyNpZm5kZWYgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdF9oCisjZGVmaW5l
IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXRfaAorCisjaW5jbHVkZSA8UUxpc3Q+CisjaW5jbHVk
ZSA8UU9iamVjdD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgor
I2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKworI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisjaW5jbHVkZSA8UXRXaWRnZXRz
L1FTeXN0ZW1UcmF5SWNvbj4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
UXRXZWJOb3RpZmljYXRpb24gOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKKworcHVi
bGljOgorICAgIFF0V2ViTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uUmVmLCBXS05vdGlmaWNh
dGlvbk1hbmFnZXJSZWYsIFFPYmplY3QgKnBhcmVudCA9IDApOworICAgIHZpcnR1YWwgflF0V2Vi
Tm90aWZpY2F0aW9uKCk7CisKKyAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCgpIGNvbnN0IHsg
cmV0dXJuIG1faWQ7IH0KKworcHVibGljIFFfU0xPVFM6CisgICAgdm9pZCBtZXNzYWdlQ2xpY2tl
ZCgpOworCitwcml2YXRlOgorICAgIHVpbnQ2NF90IG1faWQ7CisgICAgV0tOb3RpZmljYXRpb25N
YW5hZ2VyUmVmIG1fbWFuYWdlcjsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgIFFTeXN0ZW1UcmF5SWNvbiBtX3N5c3RyYXlpY29u
OworI2VuZGlmCit9OworCitjbGFzcyBXZWJOb3RpZmljYXRpb25Qcm92aWRlclF0IDogcHVibGlj
IFFPYmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgc3RhdGljIFdlYk5vdGlmaWNh
dGlvblByb3ZpZGVyUXQqIGNyZWF0ZShXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYpOworICAgIHN0
YXRpYyBXS05vdGlmaWNhdGlvblByb3ZpZGVyKiBwcm92aWRlcihjb25zdCBXZWJOb3RpZmljYXRp
b25Qcm92aWRlclF0Kik7CisKKyAgICB2aXJ0dWFsIH5XZWJOb3RpZmljYXRpb25Qcm92aWRlclF0
KCk7CisKK3B1YmxpYyBRX1NMT1RTOgorICAgIHZvaWQgc2hvdyhXS1BhZ2VSZWYsIFdLTm90aWZp
Y2F0aW9uUmVmKSBjb25zdDsKKyAgICB2b2lkIGNhbmNlbChXS05vdGlmaWNhdGlvblJlZikgY29u
c3Q7CisgICAgdm9pZCBkaWREZXN0cm95KFdLTm90aWZpY2F0aW9uUmVmKSBjb25zdDsKKyAgICB2
b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXS0FycmF5UmVmIG5vdGlmaWNhdGlvbklEcykgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgUV9ESVNBQkxFX0NPUFkoV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJR
dCk7CisgICAgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXJRdChXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYpOworCisgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1fbWFuYWdlcjsKKworICAgIFFM
aXN0PFF0V2ViTm90aWZpY2F0aW9uICo+KiBtX25vdGlmaWNhdGlvbnM7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8qIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyUXRfaCAq
Lwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>