<?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>76614</bug_id>
          
          <creation_ts>2012-01-19 02:29:29 -0800</creation_ts>
          <short_desc>MediaStream API: Split the MediaStream track list into audio/video specific ones.</short_desc>
          <delta_ts>2012-01-24 12:30:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>56459</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>harald</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>538569</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-01-19 02:29:29 -0800</bug_when>
    <thetext>The latest draft of the WebRTC standard have split the MediaStream combined track list into audio/video specific ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538570</commentid>
    <comment_count>1</comment_count>
      <attachid>123091</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-01-19 02:34:26 -0800</bug_when>
    <thetext>Created attachment 123091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538571</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-19 02:37:08 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538594</commentid>
    <comment_count>3</comment_count>
      <attachid>123091</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-19 03:36:31 -0800</bug_when>
    <thetext>Comment on attachment 123091
Patch

Attachment 123091 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11299055

New failing tests:
platform/chromium/media/video-capture-preview.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538631</commentid>
    <comment_count>4</comment_count>
      <attachid>123108</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-01-19 04:49:35 -0800</bug_when>
    <thetext>Created attachment 123108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539622</commentid>
    <comment_count>5</comment_count>
      <attachid>123108</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-20 10:58:50 -0800</bug_when>
    <thetext>Comment on attachment 123108
Patch

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

&gt; Source/WebCore/mediastream/MediaStream.cpp:41
&gt; +void processTrackList(PassRefPtr&lt;MediaStreamTrackList&gt; prpTracks, String kind, MediaStreamSourceVector&amp; sources, ExceptionCode&amp; ec)

nit: this function should be marked static or placed in an anonymous namespace.
nit: String should be passed as |const String&amp;|

&gt; Source/WebCore/mediastream/MediaStream.cpp:44
&gt; +    if (tracks.get()) {

nit: consider an early return if !tracks.get()

what is the reason for storing prpTracks as tracks?

&gt; Source/WebKit/chromium/public/WebUserMediaClient.h:46
&gt; +    virtual void requestUserMedia(const WebUserMediaRequest&amp;, const WebVector&lt;WebMediaStreamSource&gt;&amp;, const WebVector&lt;WebMediaStreamSource&gt;&amp;) { }

nit: add parameter names for the new function?  it isn&apos;t always obvious which is the set of the audio tracks and which is the set of video tracks.

shouldn&apos;t the comment just be about declaring the first function as DEPRECATED?  the second function is the new one, right?

&gt; Source/WebKit/chromium/public/WebUserMediaRequest.h:74
&gt; +    WEBKIT_EXPORT void requestSucceeded(const WebVector&lt;WebMediaStreamSource&gt;&amp;, const WebVector&lt;WebMediaStreamSource&gt;&amp;);

same nit:  please name the parameters.  it is not clear otherwise which one is for audio and which one is for video.

&gt; Source/WebKit/chromium/public/platform/WebMediaStreamDescriptor.h:59
&gt; +    WEBKIT_EXPORT void initialize(const WebString&amp; label, const WebVector&lt;WebMediaStreamSource&gt;&amp;, const WebVector&lt;WebMediaStreamSource&gt;&amp;);

same nit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540479</commentid>
    <comment_count>6</comment_count>
      <attachid>123108</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-01-23 04:27:19 -0800</bug_when>
    <thetext>Comment on attachment 123108
Patch

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

&gt;&gt; Source/WebCore/mediastream/MediaStream.cpp:41
&gt;&gt; +void processTrackList(PassRefPtr&lt;MediaStreamTrackList&gt; prpTracks, String kind, MediaStreamSourceVector&amp; sources, ExceptionCode&amp; ec)
&gt; 
&gt; nit: this function should be marked static or placed in an anonymous namespace.
&gt; nit: String should be passed as |const String&amp;|

Fixed * 2

&gt;&gt; Source/WebCore/mediastream/MediaStream.cpp:44
&gt;&gt; +    if (tracks.get()) {
&gt; 
&gt; nit: consider an early return if !tracks.get()
&gt; 
&gt; what is the reason for storing prpTracks as tracks?

Fixed nit.

Don&apos;t think I understand your question. I need to store the PassRefPtr into a RefPtr so I can use it more than once.

&gt;&gt; Source/WebKit/chromium/public/WebUserMediaClient.h:46
&gt;&gt; +    virtual void requestUserMedia(const WebUserMediaRequest&amp;, const WebVector&lt;WebMediaStreamSource&gt;&amp;, const WebVector&lt;WebMediaStreamSource&gt;&amp;) { }
&gt; 
&gt; nit: add parameter names for the new function?  it isn&apos;t always obvious which is the set of the audio tracks and which is the set of video tracks.
&gt; 
&gt; shouldn&apos;t the comment just be about declaring the first function as DEPRECATED?  the second function is the new one, right?

Fixed

&gt;&gt; Source/WebKit/chromium/public/WebUserMediaRequest.h:74
&gt;&gt; +    WEBKIT_EXPORT void requestSucceeded(const WebVector&lt;WebMediaStreamSource&gt;&amp;, const WebVector&lt;WebMediaStreamSource&gt;&amp;);
&gt; 
&gt; same nit:  please name the parameters.  it is not clear otherwise which one is for audio and which one is for video.

Fixed.

&gt;&gt; Source/WebKit/chromium/public/platform/WebMediaStreamDescriptor.h:59
&gt;&gt; +    WEBKIT_EXPORT void initialize(const WebString&amp; label, const WebVector&lt;WebMediaStreamSource&gt;&amp;, const WebVector&lt;WebMediaStreamSource&gt;&amp;);
&gt; 
&gt; same nit.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540483</commentid>
    <comment_count>7</comment_count>
      <attachid>123539</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-01-23 04:31:50 -0800</bug_when>
    <thetext>Created attachment 123539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541558</commentid>
    <comment_count>8</comment_count>
      <attachid>123539</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-24 12:30:02 -0800</bug_when>
    <thetext>Comment on attachment 123539
Patch

Clearing flags on attachment: 123539

Committed r105774: &lt;http://trac.webkit.org/changeset/105774&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541559</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-24 12:30:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123091</attachid>
            <date>2012-01-19 02:34:26 -0800</date>
            <delta_ts>2012-01-19 04:49:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76614-20120119113424.patch</filename>
            <type>text/plain</type>
            <size>35453</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1Mzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzc4MWQ5NDUzZDhiZjhi
OWZmNWY0MmI1YWE1OGRjMTM3MzM0NmEwNS4uYmJiNTVjNjg1MGI4NGViY2NjNjZiYjQwZmQwN2E0
ODFlNDQ1OGU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAxLTE5ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogU3BsaXQgdGhlIE1lZGlhU3RyZWFtIHRyYWNrIGxpc3QgaW50byBhdWRpby92aWRlbyBz
cGVjaWZpYyBvbmVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzY2MTQKKworICAgICAgICBUaGUgbGF0ZXN0IGRyYWZ0IG9mIHRoZSBXZWJSVEMgc3Rh
bmRhcmQgaGF2ZSBzcGxpdCB0aGUgTWVkaWFTdHJlYW0gY29tYmluZWQgdHJhY2sgbGlzdAorICAg
ICAgICBpbnRvIGF1ZGlvL3ZpZGVvIHNwZWNpZmljIG9uZXMuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgZm9yIHRoZSBNZWRpYSBTdHJlYW0g
QVBJIHdpbGwgYmUgcHJvdmlkZWQgYnkgdGhlIGJ1ZyA1NjU4NywgcGVuZGluZyBlbm91Z2ggbGFu
ZGVkIGNvZGUuCisKKyAgICAgICAgKiBtZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2FsTWVkaWFTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMb2NhbE1lZGlhU3RyZWFtOjpMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBt
ZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmg6CisgICAgICAgICogbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc1RyYWNrTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtOjpNZWRpYVN0cmVhbSk6CisgICAgICAgICogbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphdWRpb1RyYWNrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6dmlkZW9UcmFja3MpOgorICAgICAgICAqIG1lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmlkbDoKKyAgICAgICAgKiBtZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmtpbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1UcmFjazo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1UcmFjazo6ZW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNr
OjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNvbXBv
bmVudCk6CisgICAgICAgICogbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAg
ICAqIG1lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oOgorICAgICAgICAqIG1lZGlhc3RyZWFt
L1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVz
dDo6bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
VXNlck1lZGlhUmVxdWVzdDo6c3VjY2VlZCk6CisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1l
ZGlhU3RyZWFtU291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6
ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bURlc2NyaXB0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2Ny
aXB0b3I6Om51bWJlck9mQXVkaW9Db21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRGVzY3JpcHRvcjo6YXVkaW9Db21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1EZXNjcmlwdG9yOjpudW1iZXJPZlZpZGVvQ29tcG9uZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnZpZGVvQ29tcG9uZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yKToK
KwogMjAxMi0wMS0xOSAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAogICAg
ICAgICBDYWNoZSBSZW5kZXJTdHlsZSBwb2ludGVyIGFzIGEgbWV0aG9kIHRvIGF2b2lkIHBlcmZv
cm1hbmNlIHJlZ3Jlc3Npb24gZm9yIHJlZ2lvbiBzdHlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IGU2NDQ4ZWY1YmY0MjY1ZTQwYmQwZjBjNTg0NzE3NDkxNGFjYmIzZGUuLjI0MmY3
YWY3ZDY2NTc4NjRmZTUwZjgxOTA1YmQ2MDQxMWU2NWQ0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDEtMTkgIFRvbW15IFdpZGVuZmx5Y2h0ICA8
dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBTcGxpdCB0aGUg
TWVkaWFTdHJlYW0gdHJhY2sgbGlzdCBpbnRvIGF1ZGlvL3ZpZGVvIHNwZWNpZmljIG9uZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjYxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dl
YlVzZXJNZWRpYUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6
OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAgICAqIHB1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0
Lmg6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5o
OgorICAgICAgICAqIHNyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2xpZW50SW1wbDo6cmVxdWVzdFVzZXJNZWRpYSk6CisgICAgICAgICogc3Jj
L1VzZXJNZWRpYUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpz
b3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphdWRp
b1NvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnZp
ZGVvU291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6
aW5pdGlhbGl6ZSk6CisgICAgICAgICogc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKToKKwog
MjAxMi0wMS0xOCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAogICAgICAgICBQ
YXNzIGNvbnRlbnQtc2VjdXJpdHktcG9saWN5IGRpcmVjdGl2ZSBpbnRvIHNoYXJlZCB3b3JrZXJz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVh
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcApp
bmRleCAwMTVhMDY0Nzc1ZDRiZmRhMmE2NWQxM2U3NjUzNWY3ZTlhYjU2NjY4Li4zMWJhMjViZmNj
ZTNjOTNlMWJlYTk1ODFhOWQwZDBiODNkZWM4MWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9t
ZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcApAQCAtMzMsMTMgKzMzLDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxMb2NhbE1lZGlhU3RyZWFtPiBMb2NhbE1l
ZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMpCitQYXNzUmVmUHRyPExvY2FsTWVkaWFT
dHJlYW0+IExvY2FsTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTG9jYWxNZWRpYVN0cmVhbShjb250ZXh0LCBzb3VyY2VzKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBMb2NhbE1lZGlhU3RyZWFtKGNvbnRleHQsIGF1ZGlvU291cmNlcywg
dmlkZW9Tb3VyY2VzKSk7CiB9CiAKLUxvY2FsTWVkaWFTdHJlYW06OkxvY2FsTWVkaWFTdHJlYW0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3ImIHNvdXJjZXMpCi0gICAgOiBNZWRpYVN0cmVhbShjb250ZXh0LCBNZWRpYVN0cmVhbURl
c2NyaXB0b3I6OmNyZWF0ZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIHNvdXJjZXMpKQor
TG9jYWxNZWRpYVN0cmVhbTo6TG9jYWxNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBj
b25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQorICAgIDogTWVkaWFT
dHJlYW0oY29udGV4dCwgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpCiAgICAgLCBtX3N0
b3BUaW1lcih0aGlzLCAmTG9jYWxNZWRpYVN0cmVhbTo6c3RvcFRpbWVyRmlyZWQpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmgKaW5kZXggYTAx
NjUyZGViY2RhMjg3NjhlNmU3YjZlYmYzNzQxNGQzZjYyMDI3Yy4uOGM5NTgwODVhYmI5MWMxNTM1
YmI3ZTNiZTAzM2M2NjRjNmE1YjVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVkaWFz
dHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFt
L0xvY2FsTWVkaWFTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIExvY2FsTWVkaWFTdHJlYW0gOiBwdWJsaWMgTWVkaWFTdHJlYW0gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvY2FsTWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxMb2NhbE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNv
bnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpOwogICAgIHZpcnR1YWwg
fkxvY2FsTWVkaWFTdHJlYW0oKTsKIAogICAgIHZvaWQgc3RvcCgpOwpAQCAtNDQsNyArNDQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBMb2NhbE1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOworICAgIExvY2FsTWVk
aWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRl
b1NvdXJjZXMpOwogCiAgICAgdm9pZCBzdG9wVGltZXJGaXJlZChUaW1lcjxMb2NhbE1lZGlhU3Ry
ZWFtPiopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5k
ZXggMWFlZTIyZDQyNjc3MmIwMDc0NmUyZWU1NjA3MDBlODIwZDljZDBiOC4uYzJjY2RlNDg5YTQx
NjI0ZjlkZDcyYTQyYjhmNDJkYmRmNWFmNjM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcApAQCAtMjksMjAgKzI5LDUyIEBACiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIAogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1T
b3VyY2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAi
VVVJRC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+
IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gcHJwVHJhY2tzKQorCit2b2lkIHByb2Nlc3NU
cmFja0xpc3QoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gcHJwVHJhY2tzLCBTdHJp
bmcga2luZCwgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gdHJhY2tzID0gcHJwVHJh
Y2tzOwotICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHNvdXJjZXM7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRyYWNrcy0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgc291cmNlcy5h
cHBlbmQodHJhY2tzLT5pdGVtKGkpLT5jb21wb25lbnQoKS0+c291cmNlKCkpOworICAgIGlmICh0
cmFja3MuZ2V0KCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYWNrcy0+
bGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgTWVkaWFTdHJlYW1UcmFjayogdHJhY2sgPSB0
cmFja3MtPml0ZW0oaSk7CisgICAgICAgICAgICBpZiAodHJhY2stPmtpbmQoKSAhPSBraW5kKSB7
CisgICAgICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2Ug
PSB0cmFjay0+Y29tcG9uZW50KCktPnNvdXJjZSgpOworICAgICAgICAgICAgYm9vbCBpc0R1cGxp
Y2F0ZSA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChNZWRpYVN0cmVhbVNvdXJjZVZlY3Rvcjo6
aXRlcmF0b3IgaiA9IHNvdXJjZXMuYmVnaW4oKTsgaiA8IHNvdXJjZXMuZW5kKCk7ICsraikgewor
ICAgICAgICAgICAgICAgIGlmICgoKmopLT5pZCgpID09IHNvdXJjZS0+aWQoKSkgeworICAgICAg
ICAgICAgICAgICAgICBpc0R1cGxpY2F0ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgh
aXNEdXBsaWNhdGUpCisgICAgICAgICAgICAgICAgc291cmNlcy5hcHBlbmQoc291cmNlKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2tMaXN0PiBwcnBBdWRpb1RyYWNrcywgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrTGlzdD4gcHJwVmlkZW9UcmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNlczsKKyAgICBwcm9jZXNzVHJhY2tMaXN0KHBy
cEF1ZGlvVHJhY2tzLCAiYXVkaW8iLCBhdWRpb1NvdXJjZXMsIGVjKTsKKyAgICBpZiAoZWMpCisg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gZGVz
Y3JpcHRvciA9IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRlKGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKSwgc291cmNlcyk7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgdmlkZW9T
b3VyY2VzOworICAgIHByb2Nlc3NUcmFja0xpc3QocHJwVmlkZW9UcmFja3MsICJ2aWRlbyIsIHZp
ZGVvU291cmNlcywgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBS
ZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0gTWVkaWFTdHJlYW1EZXNj
cmlwdG9yOjpjcmVhdGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJjZXMs
IHZpZGVvU291cmNlcyk7CiAgICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuZGlkQ29u
c3RydWN0TWVkaWFTdHJlYW0oZGVzY3JpcHRvci5nZXQoKSk7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNZWRpYVN0cmVhbShjb250ZXh0LCBkZXNjcmlwdG9yLnJlbGVhc2UoKSkpOwogfQpAQCAt
NTgsMTQgKzkwLDE5IEBAIE1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtCiB7CiAgICAgbV9kZXNjcmlw
dG9yLT5zZXRPd25lcih0aGlzKTsKIAotICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgdHJhY2tW
ZWN0b3I7Ci0gICAgc2l6ZV90IG51bWJlck9mVHJhY2tzID0gbV9kZXNjcmlwdG9yLT5udW1iZXJP
ZkNvbXBvbmVudHMoKTsKLQotICAgIHRyYWNrVmVjdG9yLnJlc2VydmVDYXBhY2l0eShudW1iZXJP
ZlRyYWNrcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlRyYWNrczsgaSsr
KQotICAgICAgICB0cmFja1ZlY3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKG1f
ZGVzY3JpcHRvciwgaSkpOwotCi0gICAgbV90cmFja3MgPSBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6
Y3JlYXRlKHRyYWNrVmVjdG9yKTsKKyAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIGF1ZGlvVHJh
Y2tWZWN0b3I7CisgICAgc2l6ZV90IG51bWJlck9mQXVkaW9UcmFja3MgPSBtX2Rlc2NyaXB0b3It
Pm51bWJlck9mQXVkaW9Db21wb25lbnRzKCk7CisgICAgYXVkaW9UcmFja1ZlY3Rvci5yZXNlcnZl
Q2FwYWNpdHkobnVtYmVyT2ZBdWRpb1RyYWNrcyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1iZXJPZkF1ZGlvVHJhY2tzOyBpKyspCisgICAgICAgIGF1ZGlvVHJhY2tWZWN0b3IuYXBw
ZW5kKE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShtX2Rlc2NyaXB0b3IsIG1fZGVzY3JpcHRvci0+
YXVkaW9Db21wb25lbnQoaSkpKTsKKyAgICBtX2F1ZGlvVHJhY2tzID0gTWVkaWFTdHJlYW1UcmFj
a0xpc3Q6OmNyZWF0ZShhdWRpb1RyYWNrVmVjdG9yKTsKKworICAgIE1lZGlhU3RyZWFtVHJhY2tW
ZWN0b3IgdmlkZW9UcmFja1ZlY3RvcjsKKyAgICBzaXplX3QgbnVtYmVyT2ZWaWRlb1RyYWNrcyA9
IG1fZGVzY3JpcHRvci0+bnVtYmVyT2ZWaWRlb0NvbXBvbmVudHMoKTsKKyAgICB2aWRlb1RyYWNr
VmVjdG9yLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZlZpZGVvVHJhY2tzKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG51bWJlck9mVmlkZW9UcmFja3M7IGkrKykKKyAgICAgICAgdmlkZW9U
cmFja1ZlY3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKG1fZGVzY3JpcHRvciwg
bV9kZXNjcmlwdG9yLT52aWRlb0NvbXBvbmVudChpKSkpOworICAgIG1fdmlkZW9UcmFja3MgPSBN
ZWRpYVN0cmVhbVRyYWNrTGlzdDo6Y3JlYXRlKHZpZGVvVHJhY2tWZWN0b3IpOwogfQogCiBNZWRp
YVN0cmVhbTo6fk1lZGlhU3RyZWFtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5oCmluZGV4IDIwMTU4OTUwNWU1MzQzZjRmZDQ2NTljNzI2ZWU0ZTZhYzMxNmM0ZWEuLjBk
YjQ3ODc5ZjE3NGYzZTJmZTIyYjg5MDAxNzBiMDQ3NTNlNzliODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAg
fTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPik7Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4pOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tM
aXN0PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtKCk7CiAKICAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVuZGVkKTsKQEAgLTU1LDcgKzU1LDgg
QEAgcHVibGljOgogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwogICAgIFN0cmlu
ZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRvci0+bGFiZWwoKTsgfQogCi0gICAg
TWVkaWFTdHJlYW1UcmFja0xpc3QqIHRyYWNrcygpIHsgcmV0dXJuIG1fdHJhY2tzLmdldCgpOyB9
CisgICAgTWVkaWFTdHJlYW1UcmFja0xpc3QqIGF1ZGlvVHJhY2tzKCkgeyByZXR1cm4gbV9hdWRp
b1RyYWNrcy5nZXQoKTsgfQorICAgIE1lZGlhU3RyZWFtVHJhY2tMaXN0KiB2aWRlb1RyYWNrcygp
IHsgcmV0dXJuIG1fdmlkZW9UcmFja3MuZ2V0KCk7IH0KIAogICAgIHZvaWQgc3RyZWFtRW5kZWQo
KTsKIApAQCAtODQsNyArODUsOCBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotICAgIFJlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrTGlzdD4gbV90cmFja3M7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tM
aXN0PiBtX2F1ZGlvVHJhY2tzOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gbV92
aWRlb1RyYWNrczsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBtX2Rlc2NyaXB0
b3I7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwKaW5k
ZXggY2JjYzU1YzFjYjUxYmU3ZmFlMGNiYWZkMzAwZTQ3NDJlNmUzOTUwZC4uNjVhMTgzMzEyYWI5
ZDZhYWRkNWMxY2JhZDEwOTMxODllNzNhMWM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmlkbApAQCAtMjcsMTEgKzI3LDEzIEBAIG1vZHVsZSBjb3JlIHsKICAg
ICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCiAgICAgICAg
IEV2ZW50VGFyZ2V0LAotICAgICAgICBDb25zdHJ1Y3RvcihpbiBNZWRpYVN0cmVhbVRyYWNrTGlz
dCB0cmFja0xpc3QpLAotICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0Cisg
ICAgICAgIENvbnN0cnVjdG9yKGluIE1lZGlhU3RyZWFtVHJhY2tMaXN0IGF1ZGlvVHJhY2tzLCBp
biBNZWRpYVN0cmVhbVRyYWNrTGlzdCB2aWRlb1RyYWNrcyksCisgICAgICAgIENhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9u
CiAgICBdIE1lZGlhU3RyZWFtIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBsYWJlbDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtVHJhY2tMaXN0
IHRyYWNrczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtVHJhY2tMaXN0
IGF1ZGlvVHJhY2tzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1UcmFj
a0xpc3QgdmlkZW9UcmFja3M7CiAKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGUgcmVj
b3JkIG1ldGhvZCB3aGVuIE1lZGlhU3RyZWFtUmVjb3JkZXIgaXMgYXZhaWxhYmxlLgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDVj
MzAwNWZkZmRiZGU3N2E3ZDgwMjgzNDgwMTg4NDk1ODY3NjY3MDIuLjRmYjkzYWNkZjc2MzIyMTNi
MzNkNmNlMzE4NGUyNWJiMjIxMTE0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0zMywxNCArMzMsMTQgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IE1lZGlhU3RyZWFtVHJh
Y2s6OmNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVzY3Jp
cHRvciwgc2l6ZV90IHRyYWNrSW5kZXgpCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IE1l
ZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4g
c3RyZWFtRGVzY3JpcHRvciwgTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtVHJhY2soc3RyZWFtRGVzY3JpcHRvciwg
dHJhY2tJbmRleCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1UcmFjayhz
dHJlYW1EZXNjcmlwdG9yLCBjb21wb25lbnQpKTsKIH0KIAotTWVkaWFTdHJlYW1UcmFjazo6TWVk
aWFTdHJlYW1UcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVz
Y3JpcHRvciwgc2l6ZV90IHRyYWNrSW5kZXgpCitNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVh
bVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBzdHJlYW1EZXNjcmlwdG9y
LCBNZWRpYVN0cmVhbUNvbXBvbmVudCogY29tcG9uZW50KQogICAgIDogbV9zdHJlYW1EZXNjcmlw
dG9yKHN0cmVhbURlc2NyaXB0b3IpCi0gICAgLCBtX3RyYWNrSW5kZXgodHJhY2tJbmRleCkKKyAg
ICAsIG1fY29tcG9uZW50KGNvbXBvbmVudCkKIHsKIH0KIApAQCAtNTMsNyArNTMsNyBAQCBTdHJp
bmcgTWVkaWFTdHJlYW1UcmFjazo6a2luZCgpIGNvbnN0CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIGF1ZGlvS2luZCwgKCJhdWRpbyIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgdmlkZW9LaW5kLCAoInZpZGVvIikpOwogCi0gICAgc3dpdGNoIChtX3N0cmVhbURl
c2NyaXB0b3ItPmNvbXBvbmVudChtX3RyYWNrSW5kZXgpLT5zb3VyY2UoKS0+dHlwZSgpKSB7Cisg
ICAgc3dpdGNoIChtX2NvbXBvbmVudC0+c291cmNlKCktPnR5cGUoKSkgewogICAgIGNhc2UgTWVk
aWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbzoKICAgICAgICAgcmV0dXJuIGF1ZGlvS2luZDsKICAg
ICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpUeXBlVmlkZW86CkBAIC02NiwyNyArNjYsMjcgQEAg
U3RyaW5nIE1lZGlhU3RyZWFtVHJhY2s6OmtpbmQoKSBjb25zdAogCiBTdHJpbmcgTWVkaWFTdHJl
YW1UcmFjazo6bGFiZWwoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cmVhbURlc2NyaXB0b3It
PmNvbXBvbmVudChtX3RyYWNrSW5kZXgpLT5zb3VyY2UoKS0+bmFtZSgpOworICAgIHJldHVybiBt
X2NvbXBvbmVudC0+c291cmNlKCktPm5hbWUoKTsKIH0KIAogYm9vbCBNZWRpYVN0cmVhbVRyYWNr
OjplbmFibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJlYW1EZXNjcmlwdG9yLT5jb21w
b25lbnQobV90cmFja0luZGV4KS0+ZW5hYmxlZCgpOworICAgIHJldHVybiBtX2NvbXBvbmVudC0+
ZW5hYmxlZCgpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNldEVuYWJsZWQoYm9vbCBl
bmFibGVkKQogewotICAgIGlmIChlbmFibGVkID09IG1fc3RyZWFtRGVzY3JpcHRvci0+Y29tcG9u
ZW50KG1fdHJhY2tJbmRleCktPmVuYWJsZWQoKSkKKyAgICBpZiAoZW5hYmxlZCA9PSBtX2NvbXBv
bmVudC0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3N0cmVhbURlc2NyaXB0
b3ItPmNvbXBvbmVudChtX3RyYWNrSW5kZXgpLT5zZXRFbmFibGVkKGVuYWJsZWQpOworICAgIG1f
Y29tcG9uZW50LT5zZXRFbmFibGVkKGVuYWJsZWQpOwogCi0gICAgTWVkaWFTdHJlYW1DZW50ZXI6
Omluc3RhbmNlKCkuZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQobV9zdHJlYW1EZXNjcmlw
dG9yLmdldCgpLCBtX3RyYWNrSW5kZXgpOworICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5j
ZSgpLmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKG1fc3RyZWFtRGVzY3JpcHRvci5nZXQo
KSwgbV9jb21wb25lbnQuZ2V0KCkpOwogfQogCiBNZWRpYVN0cmVhbUNvbXBvbmVudCogTWVkaWFT
dHJlYW1UcmFjazo6Y29tcG9uZW50KCkKIHsKLSAgICByZXR1cm4gbV9zdHJlYW1EZXNjcmlwdG9y
LT5jb21wb25lbnQobV90cmFja0luZGV4KTsKKyAgICByZXR1cm4gbV9jb21wb25lbnQuZ2V0KCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suaAppbmRleCBkMjBhOWI5OWQxY2VkZmJjN2Q2YmJkZTQ4NDBm
ODQ5MzEzMGQwM2I5Li5jNDViZTE4Yzc0Y2E4YzRkZjU0NzBlMmUwOTQ1YzdlZjdiYTkzY2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCkBAIC00
MCw3ICs0MCw3IEBAIGNsYXNzIE1lZGlhU3RyZWFtQ29tcG9uZW50OwogCiBjbGFzcyBNZWRpYVN0
cmVhbVRyYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IGNyZWF0ZShQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4sIHNpemVfdCB0cmFja0luZGV4KTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbURlc2NyaXB0b3I+LCBNZWRpYVN0cmVhbUNvbXBvbmVudCopOwogICAgIHZpcnR1YWwgfk1l
ZGlhU3RyZWFtVHJhY2soKTsKIAogICAgIFN0cmluZyBraW5kKCkgY29uc3Q7CkBAIC01MiwxMCAr
NTIsMTAgQEAgcHVibGljOgogICAgIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQoKTsK
IAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1E
ZXNjcmlwdG9yPiwgc2l6ZV90IHRyYWNrSW5kZXgpOworICAgIE1lZGlhU3RyZWFtVHJhY2soUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+LCBNZWRpYVN0cmVhbUNvbXBvbmVudCopOwog
CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gbV9zdHJlYW1EZXNjcmlwdG9yOwot
ICAgIGNvbnN0IHNpemVfdCBtX3RyYWNrSW5kZXg7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ29t
cG9uZW50PiBtX2NvbXBvbmVudDsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrPiA+IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21l
ZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCmluZGV4IDFjYjU0ZmI5OGNjOGQ3MWJlYTE0NTUw
N2FiMzJmYmE2ZTNjN2UzNGQuLmNlNjc0MzNlZWM5NjJiNTI4NGRkYmRhZGJlMzI4ZTkwY2M0OGFi
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCkBA
IC00Miw3ICs0Miw3IEBAIGNsYXNzIFVzZXJNZWRpYUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFVzZXJNZWRpYShQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShQ
YXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciYsICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0KikgPSAwOwogCiBwcm90
ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCmluZGV4IGJhNmMzYTRjMjQwOGRiZGEzYzEwOWJiOWFmNmNiZWU5YTFlNzUzMzcuLmY4NzVk
MzdmZTE4ZDVmOGNiM2YzMjkwYzNjNzk4ZTQ0N2YzN2NkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC03MSwxOCArNzEsMTggQEAg
dm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydCgpCiAgICAgTWVkaWFTdHJlYW1DZW50ZXI6Omlu
c3RhbmNlKCkucXVlcnlNZWRpYVN0cmVhbVNvdXJjZXModGhpcyk7CiB9CiAKLXZvaWQgVXNlck1l
ZGlhUmVxdWVzdDo6bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoY29uc3QgTWVkaWFT
dHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMpCit2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6Om1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
JiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJj
ZXMpCiB7CiAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+cmVxdWVzdFVzZXJN
ZWRpYSh0aGlzLCBzb3VyY2VzKTsKKyAgICAgICAgbV9jbGllbnQtPnJlcXVlc3RVc2VyTWVkaWEo
dGhpcywgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOwogfQogCi12b2lkIFVzZXJNZWRpYVJl
cXVlc3Q6OnN1Y2NlZWQoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMpCit2
b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN1Y2NlZWQoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291
cmNlcykKIHsKICAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUmVmUHRyPExvY2FsTWVkaWFTdHJlYW0+IHN0cmVhbSA9IExvY2FsTWVkaWFT
dHJlYW06OmNyZWF0ZShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHNvdXJjZXMpOworICAgIFJl
ZlB0cjxMb2NhbE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBMb2NhbE1lZGlhU3RyZWFtOjpjcmVhdGUo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiAg
ICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KHN0cmVhbS5nZXQoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAppbmRleCAyZTIz
YmFjMjk0NThjYTkxM2I2ZTdjYmJmMWY3NDM3Mjk4OGZhNWQ4Li45MGQ1NTI3YjYxYzdjYmE0ODdk
ZjAzYmJjMmMyODBiNmUyZDVmYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5oCkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICBOYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrKiBlcnJvckNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4g
bV9lcnJvckNhbGxiYWNrLmdldCgpOyB9CiAKICAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBt
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBsZXRlZChjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciYpOworICAgIHZvaWQgbWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoY29uc3Qg
TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcyk7CiAKLSAgICB2b2lkIHN1Y2NlZWQoY29uc3QgTWVk
aWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKKyAgICB2b2lkIHN1Y2NlZWQoY29uc3QgTWVkaWFTdHJl
YW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3ImIHZpZGVvU291cmNlcyk7CiAgICAgdm9pZCBmYWlsKCk7CiAKICAgICAvLyBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwCmluZGV4IGM0OGE4NjY5OGRmYTg2ZWRj
MzIyOWNhOTExYTM5MTc0NGE2YjU3NTAuLjkyMDNjZTNhYzQwYjA0ODBlZTdhZGY0MzllYTU5MDcx
OTUzNjkxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKQEAgLTY4LDExICs2OCwxMSBAQCBNZWRpYVN0
cmVhbUNlbnRlcjo6fk1lZGlhU3RyZWFtQ2VudGVyKCkKIAogdm9pZCBNZWRpYVN0cmVhbUNlbnRl
cjo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudD4gY2xpZW50KQogewotICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHNvdXJj
ZXM7Ci0gICAgY2xpZW50LT5tZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBsZXRlZChzb3VyY2Vz
KTsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNl
czsKKyAgICBjbGllbnQtPm1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGF1ZGlvU291
cmNlcywgdmlkZW9Tb3VyY2VzKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0
TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgdW5zaWduZWQp
Cit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChN
ZWRpYVN0cmVhbURlc2NyaXB0b3IqLCBNZWRpYVN0cmVhbUNvbXBvbmVudCopCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bUNlbnRlci5oCmluZGV4IDIwOGJkMTBiZGZiNDZlZGNlYTE2OTU3OTBiMWZmMzAyNDJiNjlmNmMu
LjdkOThmYzUyZGI3YWFiNmNjYjM0Mjg4ZWY4MGJiY2IwY2FkODBmNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIu
aApAQCAtMzgsNiArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1lZGlh
U3RyZWFtQ29tcG9uZW50OwogY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOwogCiBjbGFzcyBN
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3Ry
ZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgYXVkaW8oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHZpZGVvKCkg
Y29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29t
cGxldGVkKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBsZXRlZChjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYg
dmlkZW9Tb3VyY2VzKSA9IDA7CiB9OwogCiBjbGFzcyBNZWRpYVN0cmVhbUNlbnRlciB7CkBAIC02
Myw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogYWRkIGEgd2F5IHRvIG11dGUgYSBN
ZWRpYVN0cmVhbVNvdXJjZSBmcm9tIHRoZSBXZWJLaXQgQVBJIGxheWVyCiAKICAgICAvLyBDYWxs
cyBmcm9tIHRoZSBET00gb2JqZWN0cyB0byBub3RpZnkgdGhlIHBsYXRmb3JtCi0gICAgdm9pZCBk
aWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCB1bnNp
Z25lZCBjb21wb25lbnRJbmRleCk7CisgICAgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5h
YmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCBNZWRpYVN0cmVhbUNvbXBvbmVudCopOwogICAg
IHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CiAg
ICAgdm9pZCBkaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbURlc2NyaXB0b3IuaAppbmRleCBhMDQ2ZDQ1ZmJjNDE0MjAxOTI4NWVmN2JhYjU5
YjgxNzRjYmQ2MDFhLi5iM2IyNzNmYTc3N2RmMjdlZDZjMGY4NWU2NTRkMzMyODAxNWZlNDE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbURlc2NyaXB0b3IuaApAQCAtNDgsOSArNDgsOSBAQCBwdWJsaWM6CiAKIGNsYXNz
IE1lZGlhU3RyZWFtRGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtRGVz
Y3JpcHRvcj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVz
Y3JpcHRvcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yJiBzb3VyY2VzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVz
Y3JpcHRvcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2
aWRlb1NvdXJjZXMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcihsYWJlbCwgc291cmNlcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhU3RyZWFtRGVzY3JpcHRvcihsYWJlbCwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJj
ZXMpKTsKICAgICB9CiAKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3JPd25lciogb3duZXIoKSBj
b25zdCB7IHJldHVybiBtX293bmVyOyB9CkBAIC01OCwyNSArNTgsMzIgQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQogCi0gICAgTWVkaWFT
dHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4g
bV9jb21wb25lbnRzW2luZGV4XS5nZXQoKTsgfQotICAgIHVuc2lnbmVkIG51bWJlck9mQ29tcG9u
ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9uZW50cy5zaXplKCk7IH0KKyAgICB1bnNpZ25l
ZCBudW1iZXJPZkF1ZGlvQ29tcG9uZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db21wb25l
bnRzLnNpemUoKTsgfQorICAgIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBhdWRpb0NvbXBvbmVudCh1
bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb0NvbXBvbmVudHNbaW5kZXhdLmdl
dCgpOyB9CisKKyAgICB1bnNpZ25lZCBudW1iZXJPZlZpZGVvQ29tcG9uZW50cygpIGNvbnN0IHsg
cmV0dXJuIG1fdmlkZW9Db21wb25lbnRzLnNpemUoKTsgfQorICAgIE1lZGlhU3RyZWFtQ29tcG9u
ZW50KiB2aWRlb0NvbXBvbmVudCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV92aWRl
b0NvbXBvbmVudHNbaW5kZXhdLmdldCgpOyB9CiAKICAgICBib29sIGVuZGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmRlZDsgfQogICAgIHZvaWQgc2V0RW5kZWQoKSB7IG1fZW5kZWQgPSB0cnVlOyB9
CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzKQorICAgIE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJj
ZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlk
ZW9Tb3VyY2VzKQogICAgICAgICA6IG1fb3duZXIoMCkKICAgICAgICAgLCBtX2xhYmVsKGxhYmVs
KQogICAgICAgICAsIG1fZW5kZWQoZmFsc2UpCiAgICAgewotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNvdXJjZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBtX2NvbXBvbmVudHMu
YXBwZW5kKE1lZGlhU3RyZWFtQ29tcG9uZW50OjpjcmVhdGUoc291cmNlc1tpXSkpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvU291cmNlcy5zaXplKCk7IGkrKykKKyAgICAg
ICAgICAgIG1fYXVkaW9Db21wb25lbnRzLmFwcGVuZChNZWRpYVN0cmVhbUNvbXBvbmVudDo6Y3Jl
YXRlKGF1ZGlvU291cmNlc1tpXSkpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dmlkZW9Tb3VyY2VzLnNpemUoKTsgaSsrKQorICAgICAgICAgICAgbV92aWRlb0NvbXBvbmVudHMu
YXBwZW5kKE1lZGlhU3RyZWFtQ29tcG9uZW50OjpjcmVhdGUodmlkZW9Tb3VyY2VzW2ldKSk7CiAg
ICAgfQogCiAgICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yT3duZXIqIG1fb3duZXI7CiAgICAgU3Ry
aW5nIG1fbGFiZWw7Ci0gICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gPiBt
X2NvbXBvbmVudHM7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gPiBt
X2F1ZGlvQ29tcG9uZW50czsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtQ29tcG9uZW50
PiA+IG1fdmlkZW9Db21wb25lbnRzOwogICAgIGJvb2wgbV9lbmRlZDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmgKaW5kZXgg
YTRiNzVlOTQwOTdjYjMwNmEwNjRiN2U4OGEyZGJhMzUyZjljZTM3ZC4uYzYzMzIxMGY2YjFmNzE5
MTY0MGUyOTY5YTU1ZjA5NWEzYzNiOTc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDEwIEBAIGNsYXNz
IFdlYlVzZXJNZWRpYUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViVXNlck1lZGlh
Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShjb25zdCBX
ZWJVc2VyTWVkaWFSZXF1ZXN0JiwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNl
PiYpID0gMDsKKyAgICAvLyBGSVhNRTogQ2xlYW51cCB3aGVuIHRoZSBjaHJvbWl1bSBjb2RlIGhh
cyBzd2l0Y2hlZCB0byB0aGUgc3BsaXQgc291cmNlcyBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiwgY29u
c3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmLCBjb25zdCBXZWJW
ZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3Ry
ZWFtU291cmNlPiYpIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVl
c3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaAppbmRleCBhYjg4
MTI1ZDYxNGEwMGZkNTQ1ODdkZjM0ODgxMjc3MTlkOTNjZTc1Li41OGU0NzlhM2NmODJmZWRiNzdh
ZWE5MGY1MTA5ODMzZWQ2ZjJiZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oCkBAIC02OCw3ICs2OCwxMCBAQCBwdWJsaWM6
CiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGNhbWVyYVByZWZlcmVuY2VFbnZpcm9ubWVudCgpIGNv
bnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2ViU2VjdXJpdHlPcmlnaW4gc2VjdXJpdHlPcmlnaW4o
KSBjb25zdDsKIAorICAgIC8vIEZJWE1FOiBSZW1vdmUgd2hlbiBjaHJvbWl1bSBjb2RlIGhhcyBz
d2l0Y2hlZCB0byB0aGUgY29ycmVjdCByZXF1ZXN0U3VjY2VlZGVkLgogICAgIFdFQktJVF9FWFBP
UlQgdm9pZCByZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNv
dXJjZT4mKTsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXF1ZXN0U3VjY2VlZGVkKGNvbnN0
IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVk
aWFTdHJlYW1Tb3VyY2U+Jik7CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RGYWlsZWQo
KTsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2Ny
aXB0b3IuaAppbmRleCBmOTE1YTdlOGE0NzM1YWI5ZmMzNmZjODNiOWNlNzBlZDg4ZTVhOTQ3Li4z
Yzg4MWZmMDQyYzMxZjhiMTYxMmZhZDE0ZTMwZWI4ODc5NGUzZTMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3IuaApAQCAtNTIsMTMgKzUyLDIyIEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3Jp
cHRvciYpOworCisgICAgLy8gRklYTUU6IENsZWFudXAgd2hlbiB0aGUgY2hyb21pdW0gY29kZSBo
YXMgc3dpdGNoZWQgdG8gdGhlIHNwbGl0IHNvdXJjZXMgaW1wbGVtZW50YXRpb24uCiAgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBsYWJlbCwgY29uc3Qg
V2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYpOworCisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIGluaXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBsYWJlbCwgY29uc3QgV2ViVmVjdG9yPFdl
Yk1lZGlhU3RyZWFtU291cmNlPiYsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJj
ZT4mKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKICAgICBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQogCiAgICAgV0VCS0lUX0VYUE9S
VCBXZWJTdHJpbmcgbGFiZWwoKSBjb25zdDsKKworICAgIC8vIEZJWE1FOiBDbGVhbnVwIHdoZW4g
dGhlIGNocm9taXVtIGNvZGUgaGFzIHN3aXRjaGVkIHRvIHRoZSBzcGxpdCBzb3VyY2VzIGltcGxl
bWVudGF0aW9uLgogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzb3VyY2VzKFdlYlZlY3RvcjxXZWJN
ZWRpYVN0cmVhbVNvdXJjZT4mKSBjb25zdDsKIAorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhdWRp
b1NvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYpIGNvbnN0OworICAgIFdF
QktJVF9FWFBPUlQgdm9pZCB2aWRlb1NvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291
cmNlPiYpIGNvbnN0OworCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVh
bURlc2NyaXB0b3I+Jik7CiAgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtRGVzY3JpcHRvcj4oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHAKaW5kZXggNjdhN2MzNGI5NzkyNmFmMDE2
ZTA3YWM4ZjM3NDNjNmQ1NTRhNWUwMi4uZmE3YWQxN2NiYTcxNTQxYTk2Y2U4YWJmYTk5NzM0M2Yz
ZTNjMjI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlh
Q2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlh
Q2xpZW50SW1wbC5jcHAKQEAgLTUyLDEwICs1MiwxNyBAQCB2b2lkIFVzZXJNZWRpYUNsaWVudElt
cGw6OnBhZ2VEZXN0cm95ZWQoKQogewogfQogCi12b2lkIFVzZXJNZWRpYUNsaWVudEltcGw6OnJl
cXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0LCBjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgc291cmNlcykKK3ZvaWQgVXNlck1lZGlhQ2xpZW50
SW1wbDo6cmVxdWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVl
c3QsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1l
ZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpCiB7Ci0gICAgaWYgKG1fY2xpZW50
KQotICAgICAgICBtX2NsaWVudC0+cmVxdWVzdFVzZXJNZWRpYShyZXF1ZXN0LCBzb3VyY2VzKTsK
KyAgICAvLyBGSVhNRTogQ2xlYW51cCB3aGVuIHRoZSBjaHJvbWl1bSBjb2RlIGhhcyBzd2l0Y2hl
ZCB0byB0aGUgc3BsaXQgc291cmNlcyBpbXBsZW1lbnRhdGlvbi4KKyAgICBpZiAobV9jbGllbnQp
IHsKKyAgICAgICAgbV9jbGllbnQtPnJlcXVlc3RVc2VyTWVkaWEocmVxdWVzdCwgYXVkaW9Tb3Vy
Y2VzLCB2aWRlb1NvdXJjZXMpOworCisgICAgICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGNv
bWJpbmVkU291cmNlczsKKyAgICAgICAgY29tYmluZWRTb3VyY2VzLmFwcGVuZChhdWRpb1NvdXJj
ZXMpOworICAgICAgICBjb21iaW5lZFNvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlcyk7CisgICAg
ICAgIG1fY2xpZW50LT5yZXF1ZXN0VXNlck1lZGlhKHJlcXVlc3QsIGNvbWJpbmVkU291cmNlcyk7
CisgICAgfQogfQogCiB2b2lkIFVzZXJNZWRpYUNsaWVudEltcGw6OmNhbmNlbFVzZXJNZWRpYVJl
cXVlc3QoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaAppbmRleCBlZjM2YTQ4MTgzOGYxZmY1Njlk
MjI4ZTg4MWYzNTU5OGMyZTQyNGRkLi5mMDg3MTIzNmJhODJlZWE3MjQyYmZkYWE5ODExYjU3OGZj
NWZkYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFD
bGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xp
ZW50SW1wbC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYkNvcmU6OlVz
ZXJNZWRpYUNsaWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+LCBj
b25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOworICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4s
IGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiwgY29uc3QgV2ViQ29yZTo6
TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1l
ZGlhUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Kik7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmNwcAppbmRleCBlY2RhZTkyMTE0NTc1MzgzYTQ2MDE1NjljODA3Nzk5MDdiODNiYzc1Li43
ODMxMWFkYWM2MzIxNjgwNzU2YTljNzg1MzA1ZWIxMTBhN2RmZjg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAK
QEAgLTYwLDEyICs2MCwzNSBAQCBXZWJTdHJpbmcgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjps
YWJlbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGFiZWwoKTsKIH0KIAorLy8gRklY
TUU6IENsZWFudXAgd2hlbiB0aGUgY2hyb21pdW0gY29kZSBoYXMgc3dpdGNoZWQgdG8gdGhlIHNw
bGl0IHNvdXJjZXMgaW1wbGVtZW50YXRpb24uCiB2b2lkIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRv
cjo6c291cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB3ZWJTb3VyY2VzKSBj
b25zdAogewotICAgIHNpemVfdCBudW1iZXJPZlNvdXJjZXMgPSBtX3ByaXZhdGUtPm51bWJlck9m
Q29tcG9uZW50cygpOworICAgIHNpemVfdCBudW1iZXJPZkF1ZGlvU291cmNlcyA9IG1fcHJpdmF0
ZS0+bnVtYmVyT2ZBdWRpb0NvbXBvbmVudHMoKTsKKyAgICBzaXplX3QgbnVtYmVyT2ZWaWRlb1Nv
dXJjZXMgPSBtX3ByaXZhdGUtPm51bWJlck9mVmlkZW9Db21wb25lbnRzKCk7CisgICAgV2ViVmVj
dG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiByZXN1bHQobnVtYmVyT2ZBdWRpb1NvdXJjZXMgKyBu
dW1iZXJPZlZpZGVvU291cmNlcyk7CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgbnVtYmVyT2ZBdWRpb1NvdXJjZXM7ICsraSwgKytqKQorICAgICAgICByZXN1
bHRbaV0gPSBtX3ByaXZhdGUtPmF1ZGlvQ29tcG9uZW50KGopLT5zb3VyY2UoKTsKKyAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8IG51bWJlck9mVmlkZW9Tb3VyY2VzOyArK2ksICsraikKKyAgICAg
ICAgcmVzdWx0W2ldID0gbV9wcml2YXRlLT52aWRlb0NvbXBvbmVudChqKS0+c291cmNlKCk7Cisg
ICAgd2ViU291cmNlcy5zd2FwKHJlc3VsdCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yOjphdWRpb1NvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgd2Vi
U291cmNlcykgY29uc3QKK3sKKyAgICBzaXplX3QgbnVtYmVyT2ZTb3VyY2VzID0gbV9wcml2YXRl
LT5udW1iZXJPZkF1ZGlvQ29tcG9uZW50cygpOwogICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVh
bVNvdXJjZT4gcmVzdWx0KG51bWJlck9mU291cmNlcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1iZXJPZlNvdXJjZXM7ICsraSkKLSAgICAgICAgcmVzdWx0W2ldID0gbV9wcml2YXRl
LT5jb21wb25lbnQoaSktPnNvdXJjZSgpOworICAgICAgICByZXN1bHRbaV0gPSBtX3ByaXZhdGUt
PmF1ZGlvQ29tcG9uZW50KGkpLT5zb3VyY2UoKTsKKyAgICB3ZWJTb3VyY2VzLnN3YXAocmVzdWx0
KTsKK30KKwordm9pZCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnZpZGVvU291cmNlcyhXZWJW
ZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB3ZWJTb3VyY2VzKSBjb25zdAoreworICAgIHNp
emVfdCBudW1iZXJPZlNvdXJjZXMgPSBtX3ByaXZhdGUtPm51bWJlck9mVmlkZW9Db21wb25lbnRz
KCk7CisgICAgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiByZXN1bHQobnVtYmVyT2ZT
b3VyY2VzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mU291cmNlczsgKytp
KQorICAgICAgICByZXN1bHRbaV0gPSBtX3ByaXZhdGUtPnZpZGVvQ29tcG9uZW50KGkpLT5zb3Vy
Y2UoKTsKICAgICB3ZWJTb3VyY2VzLnN3YXAocmVzdWx0KTsKIH0KIApAQCAtODUsMTQgKzEwOCwz
MiBAQCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6Om9wZXJhdG9yIFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciooKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7CiB9CiAK
Ky8vIEZJWE1FOiBDbGVhbnVwIHdoZW4gdGhlIGNocm9taXVtIGNvZGUgaGFzIHN3aXRjaGVkIHRv
IHRoZSBzcGxpdCBzb3VyY2VzIGltcGxlbWVudGF0aW9uLgogdm9pZCBXZWJNZWRpYVN0cmVhbURl
c2NyaXB0b3I6OmluaXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBsYWJlbCwgY29uc3QgV2ViVmVj
dG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgc291cmNlcykKIHsKLSAgICBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciBzOworICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvLCB2aWRlbzsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNvdXJjZXMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSBzb3VyY2VzW2ldOwotICAgICAgICBzLmFwcGVu
ZChjdXJyKTsKKyAgICAgICAgaWYgKGN1cnItPnR5cGUoKSA9PSBNZWRpYVN0cmVhbVNvdXJjZTo6
VHlwZUF1ZGlvKQorICAgICAgICAgICAgYXVkaW8uYXBwZW5kKGN1cnIpOworICAgICAgICBlbHNl
IGlmIChjdXJyLT50eXBlKCkgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRlbykKKyAgICAg
ICAgICAgIHZpZGVvLmFwcGVuZChjdXJyKTsKKyAgICB9CisgICAgbV9wcml2YXRlID0gTWVkaWFT
dHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUobGFiZWwsIGF1ZGlvLCB2aWRlbyk7Cit9CisKK3ZvaWQg
V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjppbml0aWFsaXplKGNvbnN0IFdlYlN0cmluZyYgbGFi
ZWwsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywg
Y29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2VzKQorewor
ICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvLCB2aWRlbzsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGF1ZGlvU291cmNlcy5zaXplKCk7ICsraSkgeworICAgICAgICBNZWRpYVN0
cmVhbVNvdXJjZSogY3VyciA9IGF1ZGlvU291cmNlc1tpXTsKKyAgICAgICAgYXVkaW8uYXBwZW5k
KGN1cnIpOworICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZpZGVvU291cmNlcy5z
aXplKCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSogY3VyciA9IHZpZGVvU291
cmNlc1tpXTsKKyAgICAgICAgdmlkZW8uYXBwZW5kKGN1cnIpOwogICAgIH0KLSAgICBtX3ByaXZh
dGUgPSBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShsYWJlbCwgcyk7CisgICAgbV9wcml2
YXRlID0gTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUobGFiZWwsIGF1ZGlvLCB2aWRlbyk7
CiB9CiAKIHZvaWQgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphc3NpZ24oY29uc3QgV2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggNDE3MmFhZTViMzU3NmM2NzA4NzJk
YWMxOGQ5NWY2NTYxZDYyOWFlMi4uNWE3NmM4M2IwZGU4OGRkMDViYWVlOTQ0YmZjZmU5NWNlMTFi
NjEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlh
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlh
UmVxdWVzdC5jcHAKQEAgLTg2LDE4ICs4Niw0MSBAQCBXZWJTZWN1cml0eU9yaWdpbiBXZWJVc2Vy
TWVkaWFSZXF1ZXN0OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuIFdlYlNlY3Vy
aXR5T3JpZ2luKG1fcHJpdmF0ZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9y
aWdpbigpKTsKIH0KIAordm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVk
KGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29u
c3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2VzKQoreworICAg
IGlmIChtX3ByaXZhdGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE1lZGlhU3Ry
ZWFtU291cmNlVmVjdG9yIGF1ZGlvOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXVkaW9T
b3VyY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBjdXJyID0g
YXVkaW9Tb3VyY2VzW2ldOworICAgICAgICBhdWRpby5hcHBlbmQoY3Vycik7CisgICAgfQorICAg
IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHZpZGVvOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdmlkZW9Tb3VyY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIE1lZGlhU3RyZWFtU291cmNl
KiBjdXJyID0gdmlkZW9Tb3VyY2VzW2ldOworICAgICAgICB2aWRlby5hcHBlbmQoY3Vycik7Cisg
ICAgfQorCisgICAgbV9wcml2YXRlLT5zdWNjZWVkKGF1ZGlvLCB2aWRlbyk7Cit9CisKKy8vIEZJ
WE1FOiBDbGVhbnVwIHdoZW4gdGhlIGNocm9taXVtIGNvZGUgaGFzIHN3aXRjaGVkIHRvIHRoZSBz
cGxpdCBzb3VyY2VzIGltcGxlbWVudGF0aW9uLgogdm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0Ojpy
ZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHNv
dXJjZXMpCiB7CiAgICAgaWYgKG1fcHJpdmF0ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgczsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciBhdWRpbywgdmlkZW87CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzb3VyY2VzLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBjdXJyID0gc291cmNlc1tp
XTsKLSAgICAgICAgcy5hcHBlbmQoY3Vycik7CisgICAgICAgIGlmIChjdXJyLT50eXBlKCkgPT0g
TWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbykKKyAgICAgICAgICAgIGF1ZGlvLmFwcGVuZChj
dXJyKTsKKyAgICAgICAgZWxzZSBpZiAoY3Vyci0+dHlwZSgpID09IE1lZGlhU3RyZWFtU291cmNl
OjpUeXBlVmlkZW8pCisgICAgICAgICAgICB2aWRlby5hcHBlbmQoY3Vycik7CiAgICAgfQogCi0g
ICAgbV9wcml2YXRlLT5zdWNjZWVkKHMpOworICAgIG1fcHJpdmF0ZS0+c3VjY2VlZChhdWRpbywg
dmlkZW8pOwogfQogCiB2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123108</attachid>
            <date>2012-01-19 04:49:35 -0800</date>
            <delta_ts>2012-01-23 04:31:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76614-20120119134933.patch</filename>
            <type>text/plain</type>
            <size>35735</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1Mzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzc4MWQ5NDUzZDhiZjhi
OWZmNWY0MmI1YWE1OGRjMTM3MzM0NmEwNS4uYmJiNTVjNjg1MGI4NGViY2NjNjZiYjQwZmQwN2E0
ODFlNDQ1OGU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAxLTE5ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogU3BsaXQgdGhlIE1lZGlhU3RyZWFtIHRyYWNrIGxpc3QgaW50byBhdWRpby92aWRlbyBz
cGVjaWZpYyBvbmVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzY2MTQKKworICAgICAgICBUaGUgbGF0ZXN0IGRyYWZ0IG9mIHRoZSBXZWJSVEMgc3Rh
bmRhcmQgaGF2ZSBzcGxpdCB0aGUgTWVkaWFTdHJlYW0gY29tYmluZWQgdHJhY2sgbGlzdAorICAg
ICAgICBpbnRvIGF1ZGlvL3ZpZGVvIHNwZWNpZmljIG9uZXMuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgZm9yIHRoZSBNZWRpYSBTdHJlYW0g
QVBJIHdpbGwgYmUgcHJvdmlkZWQgYnkgdGhlIGJ1ZyA1NjU4NywgcGVuZGluZyBlbm91Z2ggbGFu
ZGVkIGNvZGUuCisKKyAgICAgICAgKiBtZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2FsTWVkaWFTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMb2NhbE1lZGlhU3RyZWFtOjpMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBt
ZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmg6CisgICAgICAgICogbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc1RyYWNrTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtOjpNZWRpYVN0cmVhbSk6CisgICAgICAgICogbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphdWRpb1RyYWNrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6dmlkZW9UcmFja3MpOgorICAgICAgICAqIG1lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmlkbDoKKyAgICAgICAgKiBtZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmtpbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1UcmFjazo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1UcmFjazo6ZW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNr
OjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNvbXBv
bmVudCk6CisgICAgICAgICogbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAg
ICAqIG1lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oOgorICAgICAgICAqIG1lZGlhc3RyZWFt
L1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVz
dDo6bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
VXNlck1lZGlhUmVxdWVzdDo6c3VjY2VlZCk6CisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1l
ZGlhU3RyZWFtU291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6
ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bURlc2NyaXB0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2Ny
aXB0b3I6Om51bWJlck9mQXVkaW9Db21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRGVzY3JpcHRvcjo6YXVkaW9Db21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1EZXNjcmlwdG9yOjpudW1iZXJPZlZpZGVvQ29tcG9uZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnZpZGVvQ29tcG9uZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yKToK
KwogMjAxMi0wMS0xOSAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAogICAg
ICAgICBDYWNoZSBSZW5kZXJTdHlsZSBwb2ludGVyIGFzIGEgbWV0aG9kIHRvIGF2b2lkIHBlcmZv
cm1hbmNlIHJlZ3Jlc3Npb24gZm9yIHJlZ2lvbiBzdHlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IGU2NDQ4ZWY1YmY0MjY1ZTQwYmQwZjBjNTg0NzE3NDkxNGFjYmIzZGUuLjI0MmY3
YWY3ZDY2NTc4NjRmZTUwZjgxOTA1YmQ2MDQxMWU2NWQ0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDEtMTkgIFRvbW15IFdpZGVuZmx5Y2h0ICA8
dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBTcGxpdCB0aGUg
TWVkaWFTdHJlYW0gdHJhY2sgbGlzdCBpbnRvIGF1ZGlvL3ZpZGVvIHNwZWNpZmljIG9uZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjYxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dl
YlVzZXJNZWRpYUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQ6
OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAgICAqIHB1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0
Lmg6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5o
OgorICAgICAgICAqIHNyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2xpZW50SW1wbDo6cmVxdWVzdFVzZXJNZWRpYSk6CisgICAgICAgICogc3Jj
L1VzZXJNZWRpYUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpz
b3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphdWRp
b1NvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnZp
ZGVvU291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6
aW5pdGlhbGl6ZSk6CisgICAgICAgICogc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKToKKwog
MjAxMi0wMS0xOCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAogICAgICAgICBQ
YXNzIGNvbnRlbnQtc2VjdXJpdHktcG9saWN5IGRpcmVjdGl2ZSBpbnRvIHNoYXJlZCB3b3JrZXJz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVh
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcApp
bmRleCAwMTVhMDY0Nzc1ZDRiZmRhMmE2NWQxM2U3NjUzNWY3ZTlhYjU2NjY4Li4zMWJhMjViZmNj
ZTNjOTNlMWJlYTk1ODFhOWQwZDBiODNkZWM4MWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9t
ZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcApAQCAtMzMsMTMgKzMzLDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxMb2NhbE1lZGlhU3RyZWFtPiBMb2NhbE1l
ZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMpCitQYXNzUmVmUHRyPExvY2FsTWVkaWFT
dHJlYW0+IExvY2FsTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTG9jYWxNZWRpYVN0cmVhbShjb250ZXh0LCBzb3VyY2VzKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBMb2NhbE1lZGlhU3RyZWFtKGNvbnRleHQsIGF1ZGlvU291cmNlcywg
dmlkZW9Tb3VyY2VzKSk7CiB9CiAKLUxvY2FsTWVkaWFTdHJlYW06OkxvY2FsTWVkaWFTdHJlYW0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3ImIHNvdXJjZXMpCi0gICAgOiBNZWRpYVN0cmVhbShjb250ZXh0LCBNZWRpYVN0cmVhbURl
c2NyaXB0b3I6OmNyZWF0ZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIHNvdXJjZXMpKQor
TG9jYWxNZWRpYVN0cmVhbTo6TG9jYWxNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBj
b25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQorICAgIDogTWVkaWFT
dHJlYW0oY29udGV4dCwgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpCiAgICAgLCBtX3N0
b3BUaW1lcih0aGlzLCAmTG9jYWxNZWRpYVN0cmVhbTo6c3RvcFRpbWVyRmlyZWQpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmgKaW5kZXggYTAx
NjUyZGViY2RhMjg3NjhlNmU3YjZlYmYzNzQxNGQzZjYyMDI3Yy4uOGM5NTgwODVhYmI5MWMxNTM1
YmI3ZTNiZTAzM2M2NjRjNmE1YjVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVkaWFz
dHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFt
L0xvY2FsTWVkaWFTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIExvY2FsTWVkaWFTdHJlYW0gOiBwdWJsaWMgTWVkaWFTdHJlYW0gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvY2FsTWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxMb2NhbE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNv
bnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpOwogICAgIHZpcnR1YWwg
fkxvY2FsTWVkaWFTdHJlYW0oKTsKIAogICAgIHZvaWQgc3RvcCgpOwpAQCAtNDQsNyArNDQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBMb2NhbE1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOworICAgIExvY2FsTWVk
aWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRl
b1NvdXJjZXMpOwogCiAgICAgdm9pZCBzdG9wVGltZXJGaXJlZChUaW1lcjxMb2NhbE1lZGlhU3Ry
ZWFtPiopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5k
ZXggMWFlZTIyZDQyNjc3MmIwMDc0NmUyZWU1NjA3MDBlODIwZDljZDBiOC4uYzJjY2RlNDg5YTQx
NjI0ZjlkZDcyYTQyYjhmNDJkYmRmNWFmNjM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcApAQCAtMjksMjAgKzI5LDUyIEBACiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIAogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1T
b3VyY2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAi
VVVJRC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+
IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gcHJwVHJhY2tzKQorCit2b2lkIHByb2Nlc3NU
cmFja0xpc3QoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gcHJwVHJhY2tzLCBTdHJp
bmcga2luZCwgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gdHJhY2tzID0gcHJwVHJh
Y2tzOwotICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHNvdXJjZXM7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRyYWNrcy0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgc291cmNlcy5h
cHBlbmQodHJhY2tzLT5pdGVtKGkpLT5jb21wb25lbnQoKS0+c291cmNlKCkpOworICAgIGlmICh0
cmFja3MuZ2V0KCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYWNrcy0+
bGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgTWVkaWFTdHJlYW1UcmFjayogdHJhY2sgPSB0
cmFja3MtPml0ZW0oaSk7CisgICAgICAgICAgICBpZiAodHJhY2stPmtpbmQoKSAhPSBraW5kKSB7
CisgICAgICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2Ug
PSB0cmFjay0+Y29tcG9uZW50KCktPnNvdXJjZSgpOworICAgICAgICAgICAgYm9vbCBpc0R1cGxp
Y2F0ZSA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChNZWRpYVN0cmVhbVNvdXJjZVZlY3Rvcjo6
aXRlcmF0b3IgaiA9IHNvdXJjZXMuYmVnaW4oKTsgaiA8IHNvdXJjZXMuZW5kKCk7ICsraikgewor
ICAgICAgICAgICAgICAgIGlmICgoKmopLT5pZCgpID09IHNvdXJjZS0+aWQoKSkgeworICAgICAg
ICAgICAgICAgICAgICBpc0R1cGxpY2F0ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgh
aXNEdXBsaWNhdGUpCisgICAgICAgICAgICAgICAgc291cmNlcy5hcHBlbmQoc291cmNlKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2tMaXN0PiBwcnBBdWRpb1RyYWNrcywgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrTGlzdD4gcHJwVmlkZW9UcmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNlczsKKyAgICBwcm9jZXNzVHJhY2tMaXN0KHBy
cEF1ZGlvVHJhY2tzLCAiYXVkaW8iLCBhdWRpb1NvdXJjZXMsIGVjKTsKKyAgICBpZiAoZWMpCisg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gZGVz
Y3JpcHRvciA9IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRlKGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKSwgc291cmNlcyk7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgdmlkZW9T
b3VyY2VzOworICAgIHByb2Nlc3NUcmFja0xpc3QocHJwVmlkZW9UcmFja3MsICJ2aWRlbyIsIHZp
ZGVvU291cmNlcywgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBS
ZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0gTWVkaWFTdHJlYW1EZXNj
cmlwdG9yOjpjcmVhdGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJjZXMs
IHZpZGVvU291cmNlcyk7CiAgICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuZGlkQ29u
c3RydWN0TWVkaWFTdHJlYW0oZGVzY3JpcHRvci5nZXQoKSk7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNZWRpYVN0cmVhbShjb250ZXh0LCBkZXNjcmlwdG9yLnJlbGVhc2UoKSkpOwogfQpAQCAt
NTgsMTQgKzkwLDE5IEBAIE1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtCiB7CiAgICAgbV9kZXNjcmlw
dG9yLT5zZXRPd25lcih0aGlzKTsKIAotICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgdHJhY2tW
ZWN0b3I7Ci0gICAgc2l6ZV90IG51bWJlck9mVHJhY2tzID0gbV9kZXNjcmlwdG9yLT5udW1iZXJP
ZkNvbXBvbmVudHMoKTsKLQotICAgIHRyYWNrVmVjdG9yLnJlc2VydmVDYXBhY2l0eShudW1iZXJP
ZlRyYWNrcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlRyYWNrczsgaSsr
KQotICAgICAgICB0cmFja1ZlY3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKG1f
ZGVzY3JpcHRvciwgaSkpOwotCi0gICAgbV90cmFja3MgPSBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6
Y3JlYXRlKHRyYWNrVmVjdG9yKTsKKyAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIGF1ZGlvVHJh
Y2tWZWN0b3I7CisgICAgc2l6ZV90IG51bWJlck9mQXVkaW9UcmFja3MgPSBtX2Rlc2NyaXB0b3It
Pm51bWJlck9mQXVkaW9Db21wb25lbnRzKCk7CisgICAgYXVkaW9UcmFja1ZlY3Rvci5yZXNlcnZl
Q2FwYWNpdHkobnVtYmVyT2ZBdWRpb1RyYWNrcyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1iZXJPZkF1ZGlvVHJhY2tzOyBpKyspCisgICAgICAgIGF1ZGlvVHJhY2tWZWN0b3IuYXBw
ZW5kKE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShtX2Rlc2NyaXB0b3IsIG1fZGVzY3JpcHRvci0+
YXVkaW9Db21wb25lbnQoaSkpKTsKKyAgICBtX2F1ZGlvVHJhY2tzID0gTWVkaWFTdHJlYW1UcmFj
a0xpc3Q6OmNyZWF0ZShhdWRpb1RyYWNrVmVjdG9yKTsKKworICAgIE1lZGlhU3RyZWFtVHJhY2tW
ZWN0b3IgdmlkZW9UcmFja1ZlY3RvcjsKKyAgICBzaXplX3QgbnVtYmVyT2ZWaWRlb1RyYWNrcyA9
IG1fZGVzY3JpcHRvci0+bnVtYmVyT2ZWaWRlb0NvbXBvbmVudHMoKTsKKyAgICB2aWRlb1RyYWNr
VmVjdG9yLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZlZpZGVvVHJhY2tzKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG51bWJlck9mVmlkZW9UcmFja3M7IGkrKykKKyAgICAgICAgdmlkZW9U
cmFja1ZlY3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKG1fZGVzY3JpcHRvciwg
bV9kZXNjcmlwdG9yLT52aWRlb0NvbXBvbmVudChpKSkpOworICAgIG1fdmlkZW9UcmFja3MgPSBN
ZWRpYVN0cmVhbVRyYWNrTGlzdDo6Y3JlYXRlKHZpZGVvVHJhY2tWZWN0b3IpOwogfQogCiBNZWRp
YVN0cmVhbTo6fk1lZGlhU3RyZWFtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5oCmluZGV4IDIwMTU4OTUwNWU1MzQzZjRmZDQ2NTljNzI2ZWU0ZTZhYzMxNmM0ZWEuLjBk
YjQ3ODc5ZjE3NGYzZTJmZTIyYjg5MDAxNzBiMDQ3NTNlNzliODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAg
fTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPik7Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4pOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tM
aXN0PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtKCk7CiAKICAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVuZGVkKTsKQEAgLTU1LDcgKzU1LDgg
QEAgcHVibGljOgogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwogICAgIFN0cmlu
ZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRvci0+bGFiZWwoKTsgfQogCi0gICAg
TWVkaWFTdHJlYW1UcmFja0xpc3QqIHRyYWNrcygpIHsgcmV0dXJuIG1fdHJhY2tzLmdldCgpOyB9
CisgICAgTWVkaWFTdHJlYW1UcmFja0xpc3QqIGF1ZGlvVHJhY2tzKCkgeyByZXR1cm4gbV9hdWRp
b1RyYWNrcy5nZXQoKTsgfQorICAgIE1lZGlhU3RyZWFtVHJhY2tMaXN0KiB2aWRlb1RyYWNrcygp
IHsgcmV0dXJuIG1fdmlkZW9UcmFja3MuZ2V0KCk7IH0KIAogICAgIHZvaWQgc3RyZWFtRW5kZWQo
KTsKIApAQCAtODQsNyArODUsOCBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotICAgIFJlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrTGlzdD4gbV90cmFja3M7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tM
aXN0PiBtX2F1ZGlvVHJhY2tzOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gbV92
aWRlb1RyYWNrczsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBtX2Rlc2NyaXB0
b3I7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwKaW5k
ZXggY2JjYzU1YzFjYjUxYmU3ZmFlMGNiYWZkMzAwZTQ3NDJlNmUzOTUwZC4uNjVhMTgzMzEyYWI5
ZDZhYWRkNWMxY2JhZDEwOTMxODllNzNhMWM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmlkbApAQCAtMjcsMTEgKzI3LDEzIEBAIG1vZHVsZSBjb3JlIHsKICAg
ICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCiAgICAgICAg
IEV2ZW50VGFyZ2V0LAotICAgICAgICBDb25zdHJ1Y3RvcihpbiBNZWRpYVN0cmVhbVRyYWNrTGlz
dCB0cmFja0xpc3QpLAotICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0Cisg
ICAgICAgIENvbnN0cnVjdG9yKGluIE1lZGlhU3RyZWFtVHJhY2tMaXN0IGF1ZGlvVHJhY2tzLCBp
biBNZWRpYVN0cmVhbVRyYWNrTGlzdCB2aWRlb1RyYWNrcyksCisgICAgICAgIENhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9u
CiAgICBdIE1lZGlhU3RyZWFtIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBsYWJlbDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtVHJhY2tMaXN0
IHRyYWNrczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtVHJhY2tMaXN0
IGF1ZGlvVHJhY2tzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1UcmFj
a0xpc3QgdmlkZW9UcmFja3M7CiAKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGUgcmVj
b3JkIG1ldGhvZCB3aGVuIE1lZGlhU3RyZWFtUmVjb3JkZXIgaXMgYXZhaWxhYmxlLgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDVj
MzAwNWZkZmRiZGU3N2E3ZDgwMjgzNDgwMTg4NDk1ODY3NjY3MDIuLjRmYjkzYWNkZjc2MzIyMTNi
MzNkNmNlMzE4NGUyNWJiMjIxMTE0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0zMywxNCArMzMsMTQgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IE1lZGlhU3RyZWFtVHJh
Y2s6OmNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVzY3Jp
cHRvciwgc2l6ZV90IHRyYWNrSW5kZXgpCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IE1l
ZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4g
c3RyZWFtRGVzY3JpcHRvciwgTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtVHJhY2soc3RyZWFtRGVzY3JpcHRvciwg
dHJhY2tJbmRleCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1UcmFjayhz
dHJlYW1EZXNjcmlwdG9yLCBjb21wb25lbnQpKTsKIH0KIAotTWVkaWFTdHJlYW1UcmFjazo6TWVk
aWFTdHJlYW1UcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVz
Y3JpcHRvciwgc2l6ZV90IHRyYWNrSW5kZXgpCitNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVh
bVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBzdHJlYW1EZXNjcmlwdG9y
LCBNZWRpYVN0cmVhbUNvbXBvbmVudCogY29tcG9uZW50KQogICAgIDogbV9zdHJlYW1EZXNjcmlw
dG9yKHN0cmVhbURlc2NyaXB0b3IpCi0gICAgLCBtX3RyYWNrSW5kZXgodHJhY2tJbmRleCkKKyAg
ICAsIG1fY29tcG9uZW50KGNvbXBvbmVudCkKIHsKIH0KIApAQCAtNTMsNyArNTMsNyBAQCBTdHJp
bmcgTWVkaWFTdHJlYW1UcmFjazo6a2luZCgpIGNvbnN0CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIGF1ZGlvS2luZCwgKCJhdWRpbyIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgdmlkZW9LaW5kLCAoInZpZGVvIikpOwogCi0gICAgc3dpdGNoIChtX3N0cmVhbURl
c2NyaXB0b3ItPmNvbXBvbmVudChtX3RyYWNrSW5kZXgpLT5zb3VyY2UoKS0+dHlwZSgpKSB7Cisg
ICAgc3dpdGNoIChtX2NvbXBvbmVudC0+c291cmNlKCktPnR5cGUoKSkgewogICAgIGNhc2UgTWVk
aWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbzoKICAgICAgICAgcmV0dXJuIGF1ZGlvS2luZDsKICAg
ICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpUeXBlVmlkZW86CkBAIC02NiwyNyArNjYsMjcgQEAg
U3RyaW5nIE1lZGlhU3RyZWFtVHJhY2s6OmtpbmQoKSBjb25zdAogCiBTdHJpbmcgTWVkaWFTdHJl
YW1UcmFjazo6bGFiZWwoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cmVhbURlc2NyaXB0b3It
PmNvbXBvbmVudChtX3RyYWNrSW5kZXgpLT5zb3VyY2UoKS0+bmFtZSgpOworICAgIHJldHVybiBt
X2NvbXBvbmVudC0+c291cmNlKCktPm5hbWUoKTsKIH0KIAogYm9vbCBNZWRpYVN0cmVhbVRyYWNr
OjplbmFibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJlYW1EZXNjcmlwdG9yLT5jb21w
b25lbnQobV90cmFja0luZGV4KS0+ZW5hYmxlZCgpOworICAgIHJldHVybiBtX2NvbXBvbmVudC0+
ZW5hYmxlZCgpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNldEVuYWJsZWQoYm9vbCBl
bmFibGVkKQogewotICAgIGlmIChlbmFibGVkID09IG1fc3RyZWFtRGVzY3JpcHRvci0+Y29tcG9u
ZW50KG1fdHJhY2tJbmRleCktPmVuYWJsZWQoKSkKKyAgICBpZiAoZW5hYmxlZCA9PSBtX2NvbXBv
bmVudC0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3N0cmVhbURlc2NyaXB0
b3ItPmNvbXBvbmVudChtX3RyYWNrSW5kZXgpLT5zZXRFbmFibGVkKGVuYWJsZWQpOworICAgIG1f
Y29tcG9uZW50LT5zZXRFbmFibGVkKGVuYWJsZWQpOwogCi0gICAgTWVkaWFTdHJlYW1DZW50ZXI6
Omluc3RhbmNlKCkuZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQobV9zdHJlYW1EZXNjcmlw
dG9yLmdldCgpLCBtX3RyYWNrSW5kZXgpOworICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5j
ZSgpLmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKG1fc3RyZWFtRGVzY3JpcHRvci5nZXQo
KSwgbV9jb21wb25lbnQuZ2V0KCkpOwogfQogCiBNZWRpYVN0cmVhbUNvbXBvbmVudCogTWVkaWFT
dHJlYW1UcmFjazo6Y29tcG9uZW50KCkKIHsKLSAgICByZXR1cm4gbV9zdHJlYW1EZXNjcmlwdG9y
LT5jb21wb25lbnQobV90cmFja0luZGV4KTsKKyAgICByZXR1cm4gbV9jb21wb25lbnQuZ2V0KCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suaAppbmRleCBkMjBhOWI5OWQxY2VkZmJjN2Q2YmJkZTQ4NDBm
ODQ5MzEzMGQwM2I5Li5jNDViZTE4Yzc0Y2E4YzRkZjU0NzBlMmUwOTQ1YzdlZjdiYTkzY2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCkBAIC00
MCw3ICs0MCw3IEBAIGNsYXNzIE1lZGlhU3RyZWFtQ29tcG9uZW50OwogCiBjbGFzcyBNZWRpYVN0
cmVhbVRyYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IGNyZWF0ZShQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4sIHNpemVfdCB0cmFja0luZGV4KTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbURlc2NyaXB0b3I+LCBNZWRpYVN0cmVhbUNvbXBvbmVudCopOwogICAgIHZpcnR1YWwgfk1l
ZGlhU3RyZWFtVHJhY2soKTsKIAogICAgIFN0cmluZyBraW5kKCkgY29uc3Q7CkBAIC01MiwxMCAr
NTIsMTAgQEAgcHVibGljOgogICAgIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQoKTsK
IAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1E
ZXNjcmlwdG9yPiwgc2l6ZV90IHRyYWNrSW5kZXgpOworICAgIE1lZGlhU3RyZWFtVHJhY2soUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+LCBNZWRpYVN0cmVhbUNvbXBvbmVudCopOwog
CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gbV9zdHJlYW1EZXNjcmlwdG9yOwot
ICAgIGNvbnN0IHNpemVfdCBtX3RyYWNrSW5kZXg7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ29t
cG9uZW50PiBtX2NvbXBvbmVudDsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrPiA+IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21l
ZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCmluZGV4IDFjYjU0ZmI5OGNjOGQ3MWJlYTE0NTUw
N2FiMzJmYmE2ZTNjN2UzNGQuLmNlNjc0MzNlZWM5NjJiNTI4NGRkYmRhZGJlMzI4ZTkwY2M0OGFi
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCkBA
IC00Miw3ICs0Miw3IEBAIGNsYXNzIFVzZXJNZWRpYUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFVzZXJNZWRpYShQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShQ
YXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciYsICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0KikgPSAwOwogCiBwcm90
ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCmluZGV4IGJhNmMzYTRjMjQwOGRiZGEzYzEwOWJiOWFmNmNiZWU5YTFlNzUzMzcuLmY4NzVk
MzdmZTE4ZDVmOGNiM2YzMjkwYzNjNzk4ZTQ0N2YzN2NkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC03MSwxOCArNzEsMTggQEAg
dm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydCgpCiAgICAgTWVkaWFTdHJlYW1DZW50ZXI6Omlu
c3RhbmNlKCkucXVlcnlNZWRpYVN0cmVhbVNvdXJjZXModGhpcyk7CiB9CiAKLXZvaWQgVXNlck1l
ZGlhUmVxdWVzdDo6bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoY29uc3QgTWVkaWFT
dHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMpCit2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6Om1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
JiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJj
ZXMpCiB7CiAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+cmVxdWVzdFVzZXJN
ZWRpYSh0aGlzLCBzb3VyY2VzKTsKKyAgICAgICAgbV9jbGllbnQtPnJlcXVlc3RVc2VyTWVkaWEo
dGhpcywgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOwogfQogCi12b2lkIFVzZXJNZWRpYVJl
cXVlc3Q6OnN1Y2NlZWQoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMpCit2
b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN1Y2NlZWQoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291
cmNlcykKIHsKICAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUmVmUHRyPExvY2FsTWVkaWFTdHJlYW0+IHN0cmVhbSA9IExvY2FsTWVkaWFT
dHJlYW06OmNyZWF0ZShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHNvdXJjZXMpOworICAgIFJl
ZlB0cjxMb2NhbE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBMb2NhbE1lZGlhU3RyZWFtOjpjcmVhdGUo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiAg
ICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KHN0cmVhbS5nZXQoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAppbmRleCAyZTIz
YmFjMjk0NThjYTkxM2I2ZTdjYmJmMWY3NDM3Mjk4OGZhNWQ4Li45MGQ1NTI3YjYxYzdjYmE0ODdk
ZjAzYmJjMmMyODBiNmUyZDVmYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5oCkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICBOYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrKiBlcnJvckNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4g
bV9lcnJvckNhbGxiYWNrLmdldCgpOyB9CiAKICAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBt
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBsZXRlZChjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciYpOworICAgIHZvaWQgbWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoY29uc3Qg
TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcyk7CiAKLSAgICB2b2lkIHN1Y2NlZWQoY29uc3QgTWVk
aWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKKyAgICB2b2lkIHN1Y2NlZWQoY29uc3QgTWVkaWFTdHJl
YW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3ImIHZpZGVvU291cmNlcyk7CiAgICAgdm9pZCBmYWlsKCk7CiAKICAgICAvLyBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwCmluZGV4IGM0OGE4NjY5OGRmYTg2ZWRj
MzIyOWNhOTExYTM5MTc0NGE2YjU3NTAuLjkyMDNjZTNhYzQwYjA0ODBlZTdhZGY0MzllYTU5MDcx
OTUzNjkxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKQEAgLTY4LDExICs2OCwxMSBAQCBNZWRpYVN0
cmVhbUNlbnRlcjo6fk1lZGlhU3RyZWFtQ2VudGVyKCkKIAogdm9pZCBNZWRpYVN0cmVhbUNlbnRl
cjo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudD4gY2xpZW50KQogewotICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHNvdXJj
ZXM7Ci0gICAgY2xpZW50LT5tZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBsZXRlZChzb3VyY2Vz
KTsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNl
czsKKyAgICBjbGllbnQtPm1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGF1ZGlvU291
cmNlcywgdmlkZW9Tb3VyY2VzKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0
TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgdW5zaWduZWQp
Cit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChN
ZWRpYVN0cmVhbURlc2NyaXB0b3IqLCBNZWRpYVN0cmVhbUNvbXBvbmVudCopCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bUNlbnRlci5oCmluZGV4IDIwOGJkMTBiZGZiNDZlZGNlYTE2OTU3OTBiMWZmMzAyNDJiNjlmNmMu
LjdkOThmYzUyZGI3YWFiNmNjYjM0Mjg4ZWY4MGJiY2IwY2FkODBmNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIu
aApAQCAtMzgsNiArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1lZGlh
U3RyZWFtQ29tcG9uZW50OwogY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOwogCiBjbGFzcyBN
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3Ry
ZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgYXVkaW8oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHZpZGVvKCkg
Y29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29t
cGxldGVkKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBsZXRlZChjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYg
dmlkZW9Tb3VyY2VzKSA9IDA7CiB9OwogCiBjbGFzcyBNZWRpYVN0cmVhbUNlbnRlciB7CkBAIC02
Myw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogYWRkIGEgd2F5IHRvIG11dGUgYSBN
ZWRpYVN0cmVhbVNvdXJjZSBmcm9tIHRoZSBXZWJLaXQgQVBJIGxheWVyCiAKICAgICAvLyBDYWxs
cyBmcm9tIHRoZSBET00gb2JqZWN0cyB0byBub3RpZnkgdGhlIHBsYXRmb3JtCi0gICAgdm9pZCBk
aWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCB1bnNp
Z25lZCBjb21wb25lbnRJbmRleCk7CisgICAgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5h
YmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCBNZWRpYVN0cmVhbUNvbXBvbmVudCopOwogICAg
IHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CiAg
ICAgdm9pZCBkaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbURlc2NyaXB0b3IuaAppbmRleCBhMDQ2ZDQ1ZmJjNDE0MjAxOTI4NWVmN2JhYjU5
YjgxNzRjYmQ2MDFhLi5iM2IyNzNmYTc3N2RmMjdlZDZjMGY4NWU2NTRkMzMyODAxNWZlNDE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbURlc2NyaXB0b3IuaApAQCAtNDgsOSArNDgsOSBAQCBwdWJsaWM6CiAKIGNsYXNz
IE1lZGlhU3RyZWFtRGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtRGVz
Y3JpcHRvcj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVz
Y3JpcHRvcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yJiBzb3VyY2VzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVz
Y3JpcHRvcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2
aWRlb1NvdXJjZXMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcihsYWJlbCwgc291cmNlcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhU3RyZWFtRGVzY3JpcHRvcihsYWJlbCwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJj
ZXMpKTsKICAgICB9CiAKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3JPd25lciogb3duZXIoKSBj
b25zdCB7IHJldHVybiBtX293bmVyOyB9CkBAIC01OCwyNSArNTgsMzIgQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQogCi0gICAgTWVkaWFT
dHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4g
bV9jb21wb25lbnRzW2luZGV4XS5nZXQoKTsgfQotICAgIHVuc2lnbmVkIG51bWJlck9mQ29tcG9u
ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9uZW50cy5zaXplKCk7IH0KKyAgICB1bnNpZ25l
ZCBudW1iZXJPZkF1ZGlvQ29tcG9uZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db21wb25l
bnRzLnNpemUoKTsgfQorICAgIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBhdWRpb0NvbXBvbmVudCh1
bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb0NvbXBvbmVudHNbaW5kZXhdLmdl
dCgpOyB9CisKKyAgICB1bnNpZ25lZCBudW1iZXJPZlZpZGVvQ29tcG9uZW50cygpIGNvbnN0IHsg
cmV0dXJuIG1fdmlkZW9Db21wb25lbnRzLnNpemUoKTsgfQorICAgIE1lZGlhU3RyZWFtQ29tcG9u
ZW50KiB2aWRlb0NvbXBvbmVudCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV92aWRl
b0NvbXBvbmVudHNbaW5kZXhdLmdldCgpOyB9CiAKICAgICBib29sIGVuZGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmRlZDsgfQogICAgIHZvaWQgc2V0RW5kZWQoKSB7IG1fZW5kZWQgPSB0cnVlOyB9
CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzKQorICAgIE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJj
ZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlk
ZW9Tb3VyY2VzKQogICAgICAgICA6IG1fb3duZXIoMCkKICAgICAgICAgLCBtX2xhYmVsKGxhYmVs
KQogICAgICAgICAsIG1fZW5kZWQoZmFsc2UpCiAgICAgewotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNvdXJjZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBtX2NvbXBvbmVudHMu
YXBwZW5kKE1lZGlhU3RyZWFtQ29tcG9uZW50OjpjcmVhdGUoc291cmNlc1tpXSkpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvU291cmNlcy5zaXplKCk7IGkrKykKKyAgICAg
ICAgICAgIG1fYXVkaW9Db21wb25lbnRzLmFwcGVuZChNZWRpYVN0cmVhbUNvbXBvbmVudDo6Y3Jl
YXRlKGF1ZGlvU291cmNlc1tpXSkpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dmlkZW9Tb3VyY2VzLnNpemUoKTsgaSsrKQorICAgICAgICAgICAgbV92aWRlb0NvbXBvbmVudHMu
YXBwZW5kKE1lZGlhU3RyZWFtQ29tcG9uZW50OjpjcmVhdGUodmlkZW9Tb3VyY2VzW2ldKSk7CiAg
ICAgfQogCiAgICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yT3duZXIqIG1fb3duZXI7CiAgICAgU3Ry
aW5nIG1fbGFiZWw7Ci0gICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gPiBt
X2NvbXBvbmVudHM7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gPiBt
X2F1ZGlvQ29tcG9uZW50czsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtQ29tcG9uZW50
PiA+IG1fdmlkZW9Db21wb25lbnRzOwogICAgIGJvb2wgbV9lbmRlZDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmgKaW5kZXgg
YTRiNzVlOTQwOTdjYjMwNmEwNjRiN2U4OGEyZGJhMzUyZjljZTM3ZC4uYzYzMzIxMGY2YjFmNzE5
MTY0MGUyOTY5YTU1ZjA5NWEzYzNiOTc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDEwIEBAIGNsYXNz
IFdlYlVzZXJNZWRpYUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViVXNlck1lZGlh
Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShjb25zdCBX
ZWJVc2VyTWVkaWFSZXF1ZXN0JiwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNl
PiYpID0gMDsKKyAgICAvLyBGSVhNRTogQ2xlYW51cCB3aGVuIHRoZSBjaHJvbWl1bSBjb2RlIGhh
cyBzd2l0Y2hlZCB0byB0aGUgc3BsaXQgc291cmNlcyBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiwgY29u
c3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmLCBjb25zdCBXZWJW
ZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3Ry
ZWFtU291cmNlPiYpIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVl
c3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaAppbmRleCBhYjg4
MTI1ZDYxNGEwMGZkNTQ1ODdkZjM0ODgxMjc3MTlkOTNjZTc1Li41OGU0NzlhM2NmODJmZWRiNzdh
ZWE5MGY1MTA5ODMzZWQ2ZjJiZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oCkBAIC02OCw3ICs2OCwxMCBAQCBwdWJsaWM6
CiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGNhbWVyYVByZWZlcmVuY2VFbnZpcm9ubWVudCgpIGNv
bnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2ViU2VjdXJpdHlPcmlnaW4gc2VjdXJpdHlPcmlnaW4o
KSBjb25zdDsKIAorICAgIC8vIEZJWE1FOiBSZW1vdmUgd2hlbiBjaHJvbWl1bSBjb2RlIGhhcyBz
d2l0Y2hlZCB0byB0aGUgY29ycmVjdCByZXF1ZXN0U3VjY2VlZGVkLgogICAgIFdFQktJVF9FWFBP
UlQgdm9pZCByZXF1ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNv
dXJjZT4mKTsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXF1ZXN0U3VjY2VlZGVkKGNvbnN0
IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVk
aWFTdHJlYW1Tb3VyY2U+Jik7CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RGYWlsZWQo
KTsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2Ny
aXB0b3IuaAppbmRleCBmOTE1YTdlOGE0NzM1YWI5ZmMzNmZjODNiOWNlNzBlZDg4ZTVhOTQ3Li4z
Yzg4MWZmMDQyYzMxZjhiMTYxMmZhZDE0ZTMwZWI4ODc5NGUzZTMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3IuaApAQCAtNTIsMTMgKzUyLDIyIEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3Jp
cHRvciYpOworCisgICAgLy8gRklYTUU6IENsZWFudXAgd2hlbiB0aGUgY2hyb21pdW0gY29kZSBo
YXMgc3dpdGNoZWQgdG8gdGhlIHNwbGl0IHNvdXJjZXMgaW1wbGVtZW50YXRpb24uCiAgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBsYWJlbCwgY29uc3Qg
V2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYpOworCisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIGluaXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBsYWJlbCwgY29uc3QgV2ViVmVjdG9yPFdl
Yk1lZGlhU3RyZWFtU291cmNlPiYsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJj
ZT4mKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKICAgICBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQogCiAgICAgV0VCS0lUX0VYUE9S
VCBXZWJTdHJpbmcgbGFiZWwoKSBjb25zdDsKKworICAgIC8vIEZJWE1FOiBDbGVhbnVwIHdoZW4g
dGhlIGNocm9taXVtIGNvZGUgaGFzIHN3aXRjaGVkIHRvIHRoZSBzcGxpdCBzb3VyY2VzIGltcGxl
bWVudGF0aW9uLgogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzb3VyY2VzKFdlYlZlY3RvcjxXZWJN
ZWRpYVN0cmVhbVNvdXJjZT4mKSBjb25zdDsKIAorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhdWRp
b1NvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYpIGNvbnN0OworICAgIFdF
QktJVF9FWFBPUlQgdm9pZCB2aWRlb1NvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291
cmNlPiYpIGNvbnN0OworCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVh
bURlc2NyaXB0b3I+Jik7CiAgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtRGVzY3JpcHRvcj4oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHAKaW5kZXggNjdhN2MzNGI5NzkyNmFmMDE2
ZTA3YWM4ZjM3NDNjNmQ1NTRhNWUwMi4uOWMwYmY1OGUxMjQ0NjYzMjk0NWUzY2I0ODc4NTE1MDU2
NTVlMjYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlh
Q2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlh
Q2xpZW50SW1wbC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50
LmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRp
YVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKQEAgLTUyLDEwICs1MywxOSBAQCB2b2lkIFVzZXJNZWRpYUNsaWVudElt
cGw6OnBhZ2VEZXN0cm95ZWQoKQogewogfQogCi12b2lkIFVzZXJNZWRpYUNsaWVudEltcGw6OnJl
cXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0LCBjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgc291cmNlcykKK3ZvaWQgVXNlck1lZGlhQ2xpZW50
SW1wbDo6cmVxdWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHBycFJl
cXVlc3QsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0
IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpCiB7Ci0gICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudC0+cmVxdWVzdFVzZXJNZWRpYShyZXF1ZXN0LCBzb3VyY2Vz
KTsKKyAgICBpZiAobV9jbGllbnQpIHsKKyAgICAgICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+
IHJlcXVlc3QgPSBwcnBSZXF1ZXN0OworCisgICAgICAgIC8vIEZJWE1FOiBDbGVhbnVwIHdoZW4g
dGhlIGNocm9taXVtIGNvZGUgaGFzIHN3aXRjaGVkIHRvIHRoZSBzcGxpdCBzb3VyY2VzIGltcGxl
bWVudGF0aW9uLgorICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBjb21iaW5lZFNvdXJj
ZXM7CisgICAgICAgIGNvbWJpbmVkU291cmNlcy5hcHBlbmQoYXVkaW9Tb3VyY2VzKTsKKyAgICAg
ICAgY29tYmluZWRTb3VyY2VzLmFwcGVuZCh2aWRlb1NvdXJjZXMpOworICAgICAgICBtX2NsaWVu
dC0+cmVxdWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+KHJlcXVlc3Qu
Z2V0KCkpLCBjb21iaW5lZFNvdXJjZXMpOworCisgICAgICAgIG1fY2xpZW50LT5yZXF1ZXN0VXNl
ck1lZGlhKHJlcXVlc3QucmVsZWFzZSgpLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7Cisg
ICAgfQogfQogCiB2b2lkIFVzZXJNZWRpYUNsaWVudEltcGw6OmNhbmNlbFVzZXJNZWRpYVJlcXVl
c3QoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuaAppbmRleCBlZjM2YTQ4MTgzOGYxZmY1NjlkMjI4
ZTg4MWYzNTU5OGMyZTQyNGRkLi5mMDg3MTIzNmJhODJlZWE3MjQyYmZkYWE5ODExYjU3OGZjNWZk
YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Vc2VyTWVkaWFDbGll
bnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50
SW1wbC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYkNvcmU6OlVzZXJN
ZWRpYUNsaWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+LCBjb25z
dCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOworICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4sIGNv
bnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiwgY29uc3QgV2ViQ29yZTo6TWVk
aWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlh
UmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Kik7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
LmNwcAppbmRleCBlY2RhZTkyMTE0NTc1MzgzYTQ2MDE1NjljODA3Nzk5MDdiODNiYzc1Li43ODMx
MWFkYWM2MzIxNjgwNzU2YTljNzg1MzA1ZWIxMTBhN2RmZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKQEAg
LTYwLDEyICs2MCwzNSBAQCBXZWJTdHJpbmcgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpsYWJl
bCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGFiZWwoKTsKIH0KIAorLy8gRklYTUU6
IENsZWFudXAgd2hlbiB0aGUgY2hyb21pdW0gY29kZSBoYXMgc3dpdGNoZWQgdG8gdGhlIHNwbGl0
IHNvdXJjZXMgaW1wbGVtZW50YXRpb24uCiB2b2lkIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6
c291cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB3ZWJTb3VyY2VzKSBjb25z
dAogewotICAgIHNpemVfdCBudW1iZXJPZlNvdXJjZXMgPSBtX3ByaXZhdGUtPm51bWJlck9mQ29t
cG9uZW50cygpOworICAgIHNpemVfdCBudW1iZXJPZkF1ZGlvU291cmNlcyA9IG1fcHJpdmF0ZS0+
bnVtYmVyT2ZBdWRpb0NvbXBvbmVudHMoKTsKKyAgICBzaXplX3QgbnVtYmVyT2ZWaWRlb1NvdXJj
ZXMgPSBtX3ByaXZhdGUtPm51bWJlck9mVmlkZW9Db21wb25lbnRzKCk7CisgICAgV2ViVmVjdG9y
PFdlYk1lZGlhU3RyZWFtU291cmNlPiByZXN1bHQobnVtYmVyT2ZBdWRpb1NvdXJjZXMgKyBudW1i
ZXJPZlZpZGVvU291cmNlcyk7CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZvciAoc2l6ZV90IGog
PSAwOyBqIDwgbnVtYmVyT2ZBdWRpb1NvdXJjZXM7ICsraSwgKytqKQorICAgICAgICByZXN1bHRb
aV0gPSBtX3ByaXZhdGUtPmF1ZGlvQ29tcG9uZW50KGopLT5zb3VyY2UoKTsKKyAgICBmb3IgKHNp
emVfdCBqID0gMDsgaiA8IG51bWJlck9mVmlkZW9Tb3VyY2VzOyArK2ksICsraikKKyAgICAgICAg
cmVzdWx0W2ldID0gbV9wcml2YXRlLT52aWRlb0NvbXBvbmVudChqKS0+c291cmNlKCk7CisgICAg
d2ViU291cmNlcy5zd2FwKHJlc3VsdCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yOjphdWRpb1NvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgd2ViU291
cmNlcykgY29uc3QKK3sKKyAgICBzaXplX3QgbnVtYmVyT2ZTb3VyY2VzID0gbV9wcml2YXRlLT5u
dW1iZXJPZkF1ZGlvQ29tcG9uZW50cygpOwogICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNv
dXJjZT4gcmVzdWx0KG51bWJlck9mU291cmNlcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1iZXJPZlNvdXJjZXM7ICsraSkKLSAgICAgICAgcmVzdWx0W2ldID0gbV9wcml2YXRlLT5j
b21wb25lbnQoaSktPnNvdXJjZSgpOworICAgICAgICByZXN1bHRbaV0gPSBtX3ByaXZhdGUtPmF1
ZGlvQ29tcG9uZW50KGkpLT5zb3VyY2UoKTsKKyAgICB3ZWJTb3VyY2VzLnN3YXAocmVzdWx0KTsK
K30KKwordm9pZCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnZpZGVvU291cmNlcyhXZWJWZWN0
b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB3ZWJTb3VyY2VzKSBjb25zdAoreworICAgIHNpemVf
dCBudW1iZXJPZlNvdXJjZXMgPSBtX3ByaXZhdGUtPm51bWJlck9mVmlkZW9Db21wb25lbnRzKCk7
CisgICAgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiByZXN1bHQobnVtYmVyT2ZTb3Vy
Y2VzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mU291cmNlczsgKytpKQor
ICAgICAgICByZXN1bHRbaV0gPSBtX3ByaXZhdGUtPnZpZGVvQ29tcG9uZW50KGkpLT5zb3VyY2Uo
KTsKICAgICB3ZWJTb3VyY2VzLnN3YXAocmVzdWx0KTsKIH0KIApAQCAtODUsMTQgKzEwOCwzMiBA
QCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6Om9wZXJhdG9yIFdlYkNvcmU6Ok1lZGlhU3RyZWFt
RGVzY3JpcHRvciooKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7CiB9CiAKKy8v
IEZJWE1FOiBDbGVhbnVwIHdoZW4gdGhlIGNocm9taXVtIGNvZGUgaGFzIHN3aXRjaGVkIHRvIHRo
ZSBzcGxpdCBzb3VyY2VzIGltcGxlbWVudGF0aW9uLgogdm9pZCBXZWJNZWRpYVN0cmVhbURlc2Ny
aXB0b3I6OmluaXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBsYWJlbCwgY29uc3QgV2ViVmVjdG9y
PFdlYk1lZGlhU3RyZWFtU291cmNlPiYgc291cmNlcykKIHsKLSAgICBNZWRpYVN0cmVhbVNvdXJj
ZVZlY3RvciBzOworICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvLCB2aWRlbzsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNvdXJjZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
TWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSBzb3VyY2VzW2ldOwotICAgICAgICBzLmFwcGVuZChj
dXJyKTsKKyAgICAgICAgaWYgKGN1cnItPnR5cGUoKSA9PSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlw
ZUF1ZGlvKQorICAgICAgICAgICAgYXVkaW8uYXBwZW5kKGN1cnIpOworICAgICAgICBlbHNlIGlm
IChjdXJyLT50eXBlKCkgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRlbykKKyAgICAgICAg
ICAgIHZpZGVvLmFwcGVuZChjdXJyKTsKKyAgICB9CisgICAgbV9wcml2YXRlID0gTWVkaWFTdHJl
YW1EZXNjcmlwdG9yOjpjcmVhdGUobGFiZWwsIGF1ZGlvLCB2aWRlbyk7Cit9CisKK3ZvaWQgV2Vi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjppbml0aWFsaXplKGNvbnN0IFdlYlN0cmluZyYgbGFiZWws
IGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29u
c3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2VzKQoreworICAg
IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvLCB2aWRlbzsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGF1ZGlvU291cmNlcy5zaXplKCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVh
bVNvdXJjZSogY3VyciA9IGF1ZGlvU291cmNlc1tpXTsKKyAgICAgICAgYXVkaW8uYXBwZW5kKGN1
cnIpOworICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZpZGVvU291cmNlcy5zaXpl
KCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSogY3VyciA9IHZpZGVvU291cmNl
c1tpXTsKKyAgICAgICAgdmlkZW8uYXBwZW5kKGN1cnIpOwogICAgIH0KLSAgICBtX3ByaXZhdGUg
PSBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShsYWJlbCwgcyk7CisgICAgbV9wcml2YXRl
ID0gTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUobGFiZWwsIGF1ZGlvLCB2aWRlbyk7CiB9
CiAKIHZvaWQgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphc3NpZ24oY29uc3QgV2ViTWVkaWFT
dHJlYW1EZXNjcmlwdG9yJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggNDE3MmFhZTViMzU3NmM2NzA4NzJkYWMx
OGQ5NWY2NTYxZDYyOWFlMi4uNWE3NmM4M2IwZGU4OGRkMDViYWVlOTQ0YmZjZmU5NWNlMTFiNjEy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhUmVx
dWVzdC5jcHAKQEAgLTg2LDE4ICs4Niw0MSBAQCBXZWJTZWN1cml0eU9yaWdpbiBXZWJVc2VyTWVk
aWFSZXF1ZXN0OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuIFdlYlNlY3VyaXR5
T3JpZ2luKG1fcHJpdmF0ZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdp
bigpKTsKIH0KIAordm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0U3VjY2VlZGVkKGNv
bnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29uc3Qg
V2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgdmlkZW9Tb3VyY2VzKQoreworICAgIGlm
IChtX3ByaXZhdGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yIGF1ZGlvOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXVkaW9Tb3Vy
Y2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBjdXJyID0gYXVk
aW9Tb3VyY2VzW2ldOworICAgICAgICBhdWRpby5hcHBlbmQoY3Vycik7CisgICAgfQorICAgIE1l
ZGlhU3RyZWFtU291cmNlVmVjdG9yIHZpZGVvOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dmlkZW9Tb3VyY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBj
dXJyID0gdmlkZW9Tb3VyY2VzW2ldOworICAgICAgICB2aWRlby5hcHBlbmQoY3Vycik7CisgICAg
fQorCisgICAgbV9wcml2YXRlLT5zdWNjZWVkKGF1ZGlvLCB2aWRlbyk7Cit9CisKKy8vIEZJWE1F
OiBDbGVhbnVwIHdoZW4gdGhlIGNocm9taXVtIGNvZGUgaGFzIHN3aXRjaGVkIHRvIHRoZSBzcGxp
dCBzb3VyY2VzIGltcGxlbWVudGF0aW9uLgogdm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1
ZXN0U3VjY2VlZGVkKGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHNvdXJj
ZXMpCiB7CiAgICAgaWYgKG1fcHJpdmF0ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgczsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciBhdWRpbywgdmlkZW87CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzb3VyY2VzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBjdXJyID0gc291cmNlc1tpXTsK
LSAgICAgICAgcy5hcHBlbmQoY3Vycik7CisgICAgICAgIGlmIChjdXJyLT50eXBlKCkgPT0gTWVk
aWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbykKKyAgICAgICAgICAgIGF1ZGlvLmFwcGVuZChjdXJy
KTsKKyAgICAgICAgZWxzZSBpZiAoY3Vyci0+dHlwZSgpID09IE1lZGlhU3RyZWFtU291cmNlOjpU
eXBlVmlkZW8pCisgICAgICAgICAgICB2aWRlby5hcHBlbmQoY3Vycik7CiAgICAgfQogCi0gICAg
bV9wcml2YXRlLT5zdWNjZWVkKHMpOworICAgIG1fcHJpdmF0ZS0+c3VjY2VlZChhdWRpbywgdmlk
ZW8pOwogfQogCiB2b2lkIFdlYlVzZXJNZWRpYVJlcXVlc3Q6OnJlcXVlc3RGYWlsZWQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123539</attachid>
            <date>2012-01-23 04:31:50 -0800</date>
            <delta_ts>2012-01-24 12:30:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76614-20120123133148.patch</filename>
            <type>text/plain</type>
            <size>35448</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg5NmNiMTE0YmJlNjJh
NzM5YzVjYTExODA1NWNmOGQ2YzQ4ZDJmZi4uZjUzZTExMDY5NTQ5ZjBkMTgyNmVmMDE1NDRhMmRh
ZDAwMWNmMDM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAxLTE5ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogU3BsaXQgdGhlIE1lZGlhU3RyZWFtIHRyYWNrIGxpc3QgaW50byBhdWRpby92aWRlbyBz
cGVjaWZpYyBvbmVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzY2MTQKKworICAgICAgICBUaGUgbGF0ZXN0IGRyYWZ0IG9mIHRoZSBXZWJSVEMgc3Rh
bmRhcmQgaGF2ZSBzcGxpdCB0aGUgTWVkaWFTdHJlYW0gY29tYmluZWQgdHJhY2sgbGlzdAorICAg
ICAgICBpbnRvIGF1ZGlvL3ZpZGVvIHNwZWNpZmljIG9uZXMuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgZm9yIHRoZSBNZWRpYSBTdHJlYW0g
QVBJIHdpbGwgYmUgcHJvdmlkZWQgYnkgdGhlIGJ1ZyA1NjU4NywgcGVuZGluZyBlbm91Z2ggbGFu
ZGVkIGNvZGUuCisKKyAgICAgICAgKiBtZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2FsTWVkaWFTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMb2NhbE1lZGlhU3RyZWFtOjpMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBt
ZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmg6CisgICAgICAgICogbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc1RyYWNrTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtOjpNZWRpYVN0cmVhbSk6CisgICAgICAgICogbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphdWRpb1RyYWNrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6dmlkZW9UcmFja3MpOgorICAgICAgICAqIG1lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmlkbDoKKyAgICAgICAgKiBtZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmtpbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1UcmFjazo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1UcmFjazo6ZW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNr
OjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNvbXBv
bmVudCk6CisgICAgICAgICogbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAg
ICAqIG1lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oOgorICAgICAgICAqIG1lZGlhc3RyZWFt
L1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVz
dDo6bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
VXNlck1lZGlhUmVxdWVzdDo6c3VjY2VlZCk6CisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1l
ZGlhU3RyZWFtU291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6
ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bURlc2NyaXB0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2Ny
aXB0b3I6Om51bWJlck9mQXVkaW9Db21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRGVzY3JpcHRvcjo6YXVkaW9Db21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1EZXNjcmlwdG9yOjpudW1iZXJPZlZpZGVvQ29tcG9uZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnZpZGVvQ29tcG9uZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yKToK
KwogMjAxMi0wMS0yMCAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEhBUiBwYWdlcmVmIGF0dHJpYnV0ZXMgYXJlIHdyb25nIGFu
ZCBpbmNvbnNpc3RlbnQgd2l0aCBwYWdlcyBhcnJheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCAyM2Y4NWI3MmQ3ZTgzZDc2ZmYxODg4ZjcwZGJkZTliNGJmMzFhYjczLi5kZDY2OTkwMjQ5
ZjBmYmUyZDVlZGY3MDRjZTNjZTBhZjhiNjRlMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAxLTE5ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15
d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogU3BsaXQgdGhlIE1lZGlh
U3RyZWFtIHRyYWNrIGxpc3QgaW50byBhdWRpby92aWRlbyBzcGVjaWZpYyBvbmVzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY2MTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJVc2Vy
TWVkaWFDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50OjpyZXF1
ZXN0VXNlck1lZGlhKToKKyAgICAgICAgKiBwdWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oOgor
ICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaDoKKyAg
ICAgICAgKiBzcmMvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYUNsaWVudEltcGw6OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAgICAqIHNyYy9Vc2Vy
TWVkaWFDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6c291cmNl
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6YXVkaW9Tb3Vy
Y2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjp2aWRlb1Nv
dXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmluaXRp
YWxpemUpOgorICAgICAgICAqIHNyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZCk6CisKIDIwMTIt
MDEtMjEgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Q2hyb21pdW1dIEluY3JlbWVudGFsIHRleHR1cmUgdXBkYXRlcyBhcmUgbm90IGF0b21pYy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAKaW5kZXgg
MDE1YTA2NDc3NWQ0YmZkYTJhNjVkMTNlNzY1MzVmN2U5YWI1NjY2OC4uMzFiYTI1YmZjY2UzYzkz
ZTFiZWE5NTgxYTlkMGQwYjgzZGVjODFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVk
aWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFz
dHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAKQEAgLTMzLDEzICszMywxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TG9jYWxNZWRpYVN0cmVhbT4gTG9jYWxNZWRpYVN0
cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzKQorUGFzc1JlZlB0cjxMb2NhbE1lZGlhU3RyZWFt
PiBMb2NhbE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVk
aWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IExvY2FsTWVkaWFTdHJlYW0oY29udGV4dCwgc291cmNlcykpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTG9jYWxNZWRpYVN0cmVhbShjb250ZXh0LCBhdWRpb1NvdXJjZXMsIHZpZGVv
U291cmNlcykpOwogfQogCi1Mb2NhbE1lZGlhU3RyZWFtOjpMb2NhbE1lZGlhU3RyZWFtKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
JiBzb3VyY2VzKQotICAgIDogTWVkaWFTdHJlYW0oY29udGV4dCwgTWVkaWFTdHJlYW1EZXNjcmlw
dG9yOjpjcmVhdGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBzb3VyY2VzKSkKK0xvY2Fs
TWVkaWFTdHJlYW06OkxvY2FsTWVkaWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3Qg
TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykKKyAgICA6IE1lZGlhU3RyZWFt
KGNvbnRleHQsIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRlKGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKSwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpKQogICAgICwgbV9zdG9wVGlt
ZXIodGhpcywgJkxvY2FsTWVkaWFTdHJlYW06OnN0b3BUaW1lckZpcmVkKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5oIGIvU291
cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5oCmluZGV4IGEwMTY1MmRl
YmNkYTI4NzY4ZTZlN2I2ZWJmMzc0MTRkM2Y2MjAyN2MuLjhjOTU4MDg1YWJiOTFjMTUzNWJiN2Uz
YmUwMzNjNjY0YzZhNWI1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFt
L0xvY2FsTWVkaWFTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2Nh
bE1lZGlhU3RyZWFtLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBMb2NhbE1lZGlhU3RyZWFtIDogcHVibGljIE1lZGlhU3RyZWFtIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxMb2NhbE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJik7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TG9jYWxNZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKTsKICAgICB2aXJ0dWFsIH5Mb2Nh
bE1lZGlhU3RyZWFtKCk7CiAKICAgICB2b2lkIHN0b3AoKTsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29u
c3Q7CiAKIHByaXZhdGU6Ci0gICAgTG9jYWxNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKKyAgICBMb2NhbE1lZGlhU3Ry
ZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3Vy
Y2VzKTsKIAogICAgIHZvaWQgc3RvcFRpbWVyRmlyZWQoVGltZXI8TG9jYWxNZWRpYVN0cmVhbT4q
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IDFh
ZWUyMmQ0MjY3NzJiMDA3NDZlMmVlNTYwNzAwZTgyMGQ5Y2QwYjguLjAxZjFlMDRlNjMzMzgzODA1
NDE2ZDVjYTY0NGIxOWVjYjIxYTgzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS5jcHAKQEAgLTI5LDIwICsyOSw1MiBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAKICNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlVVSUQu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBNZWRp
YVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IHBycFRyYWNrcykKK3N0YXRpYyB2b2lkIHByb2Nlc3NU
cmFja0xpc3QoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gcHJwVHJhY2tzLCBjb25z
dCBTdHJpbmcmIGtpbmQsIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IHRyYWNrcyA9
IHBycFRyYWNrczsKLSAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBzb3VyY2VzOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB0cmFja3MtPmxlbmd0aCgpOyArK2kpCi0gICAgICAgIHNv
dXJjZXMuYXBwZW5kKHRyYWNrcy0+aXRlbShpKS0+Y29tcG9uZW50KCktPnNvdXJjZSgpKTsKKyAg
ICBpZiAoIXRyYWNrcykKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHRyYWNrcy0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVhbVRyYWNr
KiB0cmFjayA9IHRyYWNrcy0+aXRlbShpKTsKKyAgICAgICAgaWYgKHRyYWNrLT5raW5kKCkgIT0g
a2luZCkgeworICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UgPSB0cmFjay0+
Y29tcG9uZW50KCktPnNvdXJjZSgpOworICAgICAgICBib29sIGlzRHVwbGljYXRlID0gZmFsc2U7
CisgICAgICAgIGZvciAoTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3I6Oml0ZXJhdG9yIGogPSBzb3Vy
Y2VzLmJlZ2luKCk7IGogPCBzb3VyY2VzLmVuZCgpOyArK2opIHsKKyAgICAgICAgICAgIGlmICgo
KmopLT5pZCgpID09IHNvdXJjZS0+aWQoKSkgeworICAgICAgICAgICAgICAgIGlzRHVwbGljYXRl
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBpZiAoIWlzRHVwbGljYXRlKQorICAgICAgICAgICAgc291cmNlcy5hcHBlbmQo
c291cmNlKTsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFt
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrTGlzdD4gYXVkaW9UcmFja3MsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
a0xpc3Q+IHZpZGVvVHJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciBhdWRpb1NvdXJjZXM7CisgICAgcHJvY2Vzc1RyYWNrTGlzdChhdWRpb1Ry
YWNrcywgImF1ZGlvIiwgYXVkaW9Tb3VyY2VzLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHZpZGVvU291cmNlczsKKyAg
ICBwcm9jZXNzVHJhY2tMaXN0KHZpZGVvVHJhY2tzLCAidmlkZW8iLCB2aWRlb1NvdXJjZXMsIGVj
KTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRl
KGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgc291cmNlcyk7CisgICAgUmVmUHRyPE1lZGlh
U3RyZWFtRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3Jl
YXRlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJj
ZXMpOwogICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmRpZENvbnN0cnVjdE1lZGlh
U3RyZWFtKGRlc2NyaXB0b3IuZ2V0KCkpOwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFT
dHJlYW0oY29udGV4dCwgZGVzY3JpcHRvci5yZWxlYXNlKCkpKTsKIH0KQEAgLTU4LDE0ICs5MCwx
OSBAQCBNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbQogewogICAgIG1fZGVzY3JpcHRvci0+c2V0T3du
ZXIodGhpcyk7CiAKLSAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIHRyYWNrVmVjdG9yOwotICAg
IHNpemVfdCBudW1iZXJPZlRyYWNrcyA9IG1fZGVzY3JpcHRvci0+bnVtYmVyT2ZDb21wb25lbnRz
KCk7Ci0KLSAgICB0cmFja1ZlY3Rvci5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZUcmFja3MpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZUcmFja3M7IGkrKykKLSAgICAgICAg
dHJhY2tWZWN0b3IuYXBwZW5kKE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShtX2Rlc2NyaXB0b3Is
IGkpKTsKLQotICAgIG1fdHJhY2tzID0gTWVkaWFTdHJlYW1UcmFja0xpc3Q6OmNyZWF0ZSh0cmFj
a1ZlY3Rvcik7CisgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciBhdWRpb1RyYWNrVmVjdG9yOwor
ICAgIHNpemVfdCBudW1iZXJPZkF1ZGlvVHJhY2tzID0gbV9kZXNjcmlwdG9yLT5udW1iZXJPZkF1
ZGlvQ29tcG9uZW50cygpOworICAgIGF1ZGlvVHJhY2tWZWN0b3IucmVzZXJ2ZUNhcGFjaXR5KG51
bWJlck9mQXVkaW9UcmFja3MpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZB
dWRpb1RyYWNrczsgaSsrKQorICAgICAgICBhdWRpb1RyYWNrVmVjdG9yLmFwcGVuZChNZWRpYVN0
cmVhbVRyYWNrOjpjcmVhdGUobV9kZXNjcmlwdG9yLCBtX2Rlc2NyaXB0b3ItPmF1ZGlvQ29tcG9u
ZW50KGkpKSk7CisgICAgbV9hdWRpb1RyYWNrcyA9IE1lZGlhU3RyZWFtVHJhY2tMaXN0OjpjcmVh
dGUoYXVkaW9UcmFja1ZlY3Rvcik7CisKKyAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIHZpZGVv
VHJhY2tWZWN0b3I7CisgICAgc2l6ZV90IG51bWJlck9mVmlkZW9UcmFja3MgPSBtX2Rlc2NyaXB0
b3ItPm51bWJlck9mVmlkZW9Db21wb25lbnRzKCk7CisgICAgdmlkZW9UcmFja1ZlY3Rvci5yZXNl
cnZlQ2FwYWNpdHkobnVtYmVyT2ZWaWRlb1RyYWNrcyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1iZXJPZlZpZGVvVHJhY2tzOyBpKyspCisgICAgICAgIHZpZGVvVHJhY2tWZWN0b3Iu
YXBwZW5kKE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShtX2Rlc2NyaXB0b3IsIG1fZGVzY3JpcHRv
ci0+dmlkZW9Db21wb25lbnQoaSkpKTsKKyAgICBtX3ZpZGVvVHJhY2tzID0gTWVkaWFTdHJlYW1U
cmFja0xpc3Q6OmNyZWF0ZSh2aWRlb1RyYWNrVmVjdG9yKTsKIH0KIAogTWVkaWFTdHJlYW06On5N
ZWRpYVN0cmVhbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAppbmRl
eCAyMDE1ODk1MDVlNTM0M2Y0ZmQ0NjU5YzcyNmVlNGU2YWMzMTZjNGVhLi4wZGI0Nzg3OWYxNzRm
M2UyZmUyMmI4OTAwMTcwYjA0NzUzZTc5Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4pOwotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2tMaXN0PiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4sIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbSgpOwogCiAgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihlbmRlZCk7CkBAIC01NSw3ICs1NSw4IEBAIHB1YmxpYzoK
ICAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKICAgICBTdHJpbmcgbGFiZWwoKSBj
b25zdCB7IHJldHVybiBtX2Rlc2NyaXB0b3ItPmxhYmVsKCk7IH0KIAotICAgIE1lZGlhU3RyZWFt
VHJhY2tMaXN0KiB0cmFja3MoKSB7IHJldHVybiBtX3RyYWNrcy5nZXQoKTsgfQorICAgIE1lZGlh
U3RyZWFtVHJhY2tMaXN0KiBhdWRpb1RyYWNrcygpIHsgcmV0dXJuIG1fYXVkaW9UcmFja3MuZ2V0
KCk7IH0KKyAgICBNZWRpYVN0cmVhbVRyYWNrTGlzdCogdmlkZW9UcmFja3MoKSB7IHJldHVybiBt
X3ZpZGVvVHJhY2tzLmdldCgpOyB9CiAKICAgICB2b2lkIHN0cmVhbUVuZGVkKCk7CiAKQEAgLTg0
LDcgKzg1LDggQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
a0xpc3Q+IG1fdHJhY2tzOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gbV9hdWRp
b1RyYWNrczsKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IG1fdmlkZW9UcmFja3M7
CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gbV9kZXNjcmlwdG9yOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsIGIv
U291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsCmluZGV4IGNiY2M1NWMx
Y2I1MWJlN2ZhZTBjYmFmZDMwMGU0NzQyZTZlMzk1MGQuLjY1YTE4MzMxMmFiOWQ2YWFkZDVjMWNi
YWQxMDkzMTg5ZTczYTFjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5pZGwKQEAgLTI3LDExICsyNywxMyBAQCBtb2R1bGUgY29yZSB7CiAgICAgaW50ZXJmYWNl
IFsKICAgICAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAogICAgICAgICBFdmVudFRhcmdl
dCwKLSAgICAgICAgQ29uc3RydWN0b3IoaW4gTWVkaWFTdHJlYW1UcmFja0xpc3QgdHJhY2tMaXN0
KSwKLSAgICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICBDb25z
dHJ1Y3RvcihpbiBNZWRpYVN0cmVhbVRyYWNrTGlzdCBhdWRpb1RyYWNrcywgaW4gTWVkaWFTdHJl
YW1UcmFja0xpc3QgdmlkZW9UcmFja3MpLAorICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0LAorICAgICAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbgogICAgXSBNZWRp
YVN0cmVhbSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7Ci0g
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbVRyYWNrTGlzdCB0cmFja3M7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbVRyYWNrTGlzdCBhdWRpb1RyYWNr
czsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtVHJhY2tMaXN0IHZpZGVv
VHJhY2tzOwogCiAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhlIHJlY29yZCBtZXRob2Qg
d2hlbiBNZWRpYVN0cmVhbVJlY29yZGVyIGlzIGF2YWlsYWJsZS4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCA1YzMwMDVmZGZkYmRl
NzdhN2Q4MDI4MzQ4MDE4ODQ5NTg2NzY2NzAyLi40ZmI5M2FjZGY3NjMyMjEzYjMzZDZjZTMxODRl
MjViYjIyMTExNDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmNwcApAQCAtMzMsMTQgKzMzLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUo
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbURlc2NyaXB0b3IsIHNpemVf
dCB0cmFja0luZGV4KQorUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBNZWRpYVN0cmVhbVRy
YWNrOjpjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbURlc2Ny
aXB0b3IsIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYVN0cmVhbVRyYWNrKHN0cmVhbURlc2NyaXB0b3IsIHRyYWNrSW5kZXgp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtVHJhY2soc3RyZWFtRGVzY3Jp
cHRvciwgY29tcG9uZW50KSk7CiB9CiAKLU1lZGlhU3RyZWFtVHJhY2s6Ok1lZGlhU3RyZWFtVHJh
Y2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbURlc2NyaXB0b3IsIHNp
emVfdCB0cmFja0luZGV4KQorTWVkaWFTdHJlYW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayhQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVzY3JpcHRvciwgTWVkaWFTdHJl
YW1Db21wb25lbnQqIGNvbXBvbmVudCkKICAgICA6IG1fc3RyZWFtRGVzY3JpcHRvcihzdHJlYW1E
ZXNjcmlwdG9yKQotICAgICwgbV90cmFja0luZGV4KHRyYWNrSW5kZXgpCisgICAgLCBtX2NvbXBv
bmVudChjb21wb25lbnQpCiB7CiB9CiAKQEAgLTUzLDcgKzUzLDcgQEAgU3RyaW5nIE1lZGlhU3Ry
ZWFtVHJhY2s6OmtpbmQoKSBjb25zdAogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBh
dWRpb0tpbmQsICgiYXVkaW8iKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHZp
ZGVvS2luZCwgKCJ2aWRlbyIpKTsKIAotICAgIHN3aXRjaCAobV9zdHJlYW1EZXNjcmlwdG9yLT5j
b21wb25lbnQobV90cmFja0luZGV4KS0+c291cmNlKCktPnR5cGUoKSkgeworICAgIHN3aXRjaCAo
bV9jb21wb25lbnQtPnNvdXJjZSgpLT50eXBlKCkpIHsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291
cmNlOjpUeXBlQXVkaW86CiAgICAgICAgIHJldHVybiBhdWRpb0tpbmQ7CiAgICAgY2FzZSBNZWRp
YVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvOgpAQCAtNjYsMjcgKzY2LDI3IEBAIFN0cmluZyBNZWRp
YVN0cmVhbVRyYWNrOjpraW5kKCkgY29uc3QKIAogU3RyaW5nIE1lZGlhU3RyZWFtVHJhY2s6Omxh
YmVsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJlYW1EZXNjcmlwdG9yLT5jb21wb25lbnQo
bV90cmFja0luZGV4KS0+c291cmNlKCktPm5hbWUoKTsKKyAgICByZXR1cm4gbV9jb21wb25lbnQt
PnNvdXJjZSgpLT5uYW1lKCk7CiB9CiAKIGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6ZW5hYmxlZCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RyZWFtRGVzY3JpcHRvci0+Y29tcG9uZW50KG1fdHJh
Y2tJbmRleCktPmVuYWJsZWQoKTsKKyAgICByZXR1cm4gbV9jb21wb25lbnQtPmVuYWJsZWQoKTsK
IH0KIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsK
LSAgICBpZiAoZW5hYmxlZCA9PSBtX3N0cmVhbURlc2NyaXB0b3ItPmNvbXBvbmVudChtX3RyYWNr
SW5kZXgpLT5lbmFibGVkKCkpCisgICAgaWYgKGVuYWJsZWQgPT0gbV9jb21wb25lbnQtPmVuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zdHJlYW1EZXNjcmlwdG9yLT5jb21wb25l
bnQobV90cmFja0luZGV4KS0+c2V0RW5hYmxlZChlbmFibGVkKTsKKyAgICBtX2NvbXBvbmVudC0+
c2V0RW5hYmxlZChlbmFibGVkKTsKIAotICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgp
LmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKG1fc3RyZWFtRGVzY3JpcHRvci5nZXQoKSwg
bV90cmFja0luZGV4KTsKKyAgICBNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKS5kaWRTZXRN
ZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChtX3N0cmVhbURlc2NyaXB0b3IuZ2V0KCksIG1fY29tcG9u
ZW50LmdldCgpKTsKIH0KIAogTWVkaWFTdHJlYW1Db21wb25lbnQqIE1lZGlhU3RyZWFtVHJhY2s6
OmNvbXBvbmVudCgpCiB7Ci0gICAgcmV0dXJuIG1fc3RyZWFtRGVzY3JpcHRvci0+Y29tcG9uZW50
KG1fdHJhY2tJbmRleCk7CisgICAgcmV0dXJuIG1fY29tcG9uZW50LmdldCgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmgKaW5kZXggZDIwYTliOTlkMWNlZGZiYzdkNmJiZGU0ODQwZjg0OTMxMzBkMDNi
OS4uYzQ1YmUxOGM3NGNhOGM0ZGY1NDcwZTJlMDk0NWM3ZWY3YmE5M2NiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaApAQCAtNDAsNyArNDAsNyBA
QCBjbGFzcyBNZWRpYVN0cmVhbUNvbXBvbmVudDsKIAogY2xhc3MgTWVkaWFTdHJlYW1UcmFjayA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbURlc2NyaXB0b3I+LCBzaXplX3QgdHJhY2tJbmRleCk7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlw
dG9yPiwgTWVkaWFTdHJlYW1Db21wb25lbnQqKTsKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbVRy
YWNrKCk7CiAKICAgICBTdHJpbmcga2luZCgpIGNvbnN0OwpAQCAtNTIsMTAgKzUyLDEwIEBAIHB1
YmxpYzoKICAgICBNZWRpYVN0cmVhbUNvbXBvbmVudCogY29tcG9uZW50KCk7CiAKIHByaXZhdGU6
Ci0gICAgTWVkaWFTdHJlYW1UcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4s
IHNpemVfdCB0cmFja0luZGV4KTsKKyAgICBNZWRpYVN0cmVhbVRyYWNrKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1EZXNjcmlwdG9yPiwgTWVkaWFTdHJlYW1Db21wb25lbnQqKTsKIAogICAgIFJlZlB0
cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IG1fc3RyZWFtRGVzY3JpcHRvcjsKLSAgICBjb25zdCBz
aXplX3QgbV90cmFja0luZGV4OworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gbV9j
b21wb25lbnQ7CiB9OwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4g
PiBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWVk
aWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFDbGllbnQuaAppbmRleCAxY2I1NGZiOThjYzhkNzFiZWExNDU1MDdhYjMyZmJhNmUz
YzdlMzRkLi5jZTY3NDMzZWVjOTYyYjUyODRkZGJkYWRiZTMyOGU5MGNjNDhhYjY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaApAQCAtNDIsNyArNDIs
NyBAQCBjbGFzcyBVc2VyTWVkaWFDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBw
YWdlRGVzdHJveWVkKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEo
UGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxV
c2VyTWVkaWFSZXF1ZXN0PiwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImLCAgY29uc3Qg
TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVz
ZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCopID0gMDsKIAogcHJvdGVjdGVkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRleCBi
YTZjM2E0YzI0MDhkYmRhM2MxMDliYjlhZjZjYmVlOWExZTc1MzM3Li5mODc1ZDM3ZmUxOGQ1Zjhj
YjNmMzI5MGMzYzc5OGU0NDdmMzdjZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtNzEsMTggKzcxLDE4IEBAIHZvaWQgVXNlck1l
ZGlhUmVxdWVzdDo6c3RhcnQoKQogICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLnF1
ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKHRoaXMpOwogfQogCi12b2lkIFVzZXJNZWRpYVJlcXVlc3Q6
Om1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiBzb3VyY2VzKQordm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjptZWRpYVN0cmVhbVNvdXJj
ZXNRdWVyeUNvbXBsZXRlZChjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3Vy
Y2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQogewogICAg
IGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnJlcXVlc3RVc2VyTWVkaWEodGhpcywg
c291cmNlcyk7CisgICAgICAgIG1fY2xpZW50LT5yZXF1ZXN0VXNlck1lZGlhKHRoaXMsIGF1ZGlv
U291cmNlcywgdmlkZW9Tb3VyY2VzKTsKIH0KIAotdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdWNj
ZWVkKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzKQordm9pZCBVc2VyTWVk
aWFSZXF1ZXN0OjpzdWNjZWVkKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1Nv
dXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpCiB7CiAg
ICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlZlB0cjxMb2NhbE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBMb2NhbE1lZGlhU3RyZWFtOjpjcmVh
dGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBzb3VyY2VzKTsKKyAgICBSZWZQdHI8TG9jYWxN
ZWRpYVN0cmVhbT4gc3RyZWFtID0gTG9jYWxNZWRpYVN0cmVhbTo6Y3JlYXRlKG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOwogICAgIG1fc3VjY2Vz
c0NhbGxiYWNrLT5oYW5kbGVFdmVudChzdHJlYW0uZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKaW5kZXggMmUyM2JhYzI5NDU4Y2E5
MTNiNmU3Y2JiZjFmNzQzNzI5ODhmYTVkOC4uOTBkNTUyN2I2MWM3Y2JhNDg3ZGYwM2JiYzJjMjgw
YjZlMmQ1ZmIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJl
cXVlc3QuaApAQCAtNjEsOSArNjEsOSBAQCBwdWJsaWM6CiAgICAgTmF2aWdhdG9yVXNlck1lZGlh
RXJyb3JDYWxsYmFjayogZXJyb3JDYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDYWxs
YmFjay5nZXQoKTsgfQogCiAgICAgdm9pZCBzdGFydCgpOwotICAgIHZvaWQgbWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDb21wbGV0ZWQoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKKyAg
ICB2b2lkIG1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
JiB2aWRlb1NvdXJjZXMpOwogCi0gICAgdm9pZCBzdWNjZWVkKGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yJik7CisgICAgdm9pZCBzdWNjZWVkKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVj
dG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1Nv
dXJjZXMpOwogICAgIHZvaWQgZmFpbCgpOwogCiAgICAgLy8gQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtQ2VudGVyLmNwcAppbmRleCBjNDhhODY2OThkZmE4NmVkYzMyMjljYTkxMWEz
OTE3NDRhNmI1NzUwLi45MjAzY2UzYWM0MGIwNDgwZWU3YWRmNDM5ZWE1OTA3MTk1MzY5MWZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuY3BwCkBAIC02OCwxMSArNjgsMTEgQEAgTWVkaWFTdHJlYW1DZW50ZXI6
On5NZWRpYVN0cmVhbUNlbnRlcigpCiAKIHZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVk
aWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+
IGNsaWVudCkKIHsKLSAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBzb3VyY2VzOwotICAgIGNs
aWVudC0+bWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoc291cmNlcyk7CisgICAgTWVk
aWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXM7CisgICAgY2xp
ZW50LT5tZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBsZXRlZChhdWRpb1NvdXJjZXMsIHZpZGVv
U291cmNlcyk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFNldE1lZGlhU3RyZWFt
VHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIHVuc2lnbmVkKQordm9pZCBNZWRp
YVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKiwgTWVkaWFTdHJlYW1Db21wb25lbnQqKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaApp
bmRleCAyMDhiZDEwYmRmYjQ2ZWRjZWExNjk1NzkwYjFmZjMwMjQyYjY5ZjZjLi43ZDk4ZmM1MmRi
N2FhYjZjY2IzNDI4OGVmODBiYmNiMGNhZDgwZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKQEAgLTM4LDYg
KzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBNZWRpYVN0cmVhbUNvbXBv
bmVudDsKIGNsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKIAogY2xhc3MgTWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudD4gewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGF1ZGlvKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB2aWRlbygpIGNvbnN0ID0gMDsK
IAotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBsZXRlZChjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFT
dHJlYW1Tb3VyY2VzUXVlcnlDb21wbGV0ZWQoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3Im
IGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNl
cykgPSAwOwogfTsKIAogY2xhc3MgTWVkaWFTdHJlYW1DZW50ZXIgewpAQCAtNjMsNyArNjQsNyBA
QCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IGFkZCBhIHdheSB0byBtdXRlIGEgTWVkaWFTdHJlYW1T
b3VyY2UgZnJvbSB0aGUgV2ViS2l0IEFQSSBsYXllcgogCiAgICAgLy8gQ2FsbHMgZnJvbSB0aGUg
RE9NIG9iamVjdHMgdG8gbm90aWZ5IHRoZSBwbGF0Zm9ybQotICAgIHZvaWQgZGlkU2V0TWVkaWFT
dHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgdW5zaWduZWQgY29tcG9u
ZW50SW5kZXgpOworICAgIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKiwgTWVkaWFTdHJlYW1Db21wb25lbnQqKTsKICAgICB2b2lkIGRpZFN0
b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopOwogICAgIHZvaWQgZGlk
Q29uc3RydWN0TWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3Jp
cHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmgKaW5kZXggYTA0NmQ0NWZiYzQxNDIwMTkyODVlZjdiYWI1OWI4MTc0Y2JkNjAx
YS4uYjNiMjczZmE3NzdkZjI3ZWQ2YzBmODVlNjU0ZDMzMjgwMTVmZTQxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmgKQEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogCiBjbGFzcyBNZWRpYVN0cmVh
bURlc2NyaXB0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYg
c291cmNlcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYg
YXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2Vz
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbURlc2NyaXB0
b3IobGFiZWwsIHNvdXJjZXMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0
cmVhbURlc2NyaXB0b3IobGFiZWwsIGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKSk7CiAgICAg
fQogCiAgICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yT3duZXIqIG93bmVyKCkgY29uc3QgeyByZXR1
cm4gbV9vd25lcjsgfQpAQCAtNTgsMjUgKzU4LDMyIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBs
YWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KIAotICAgIE1lZGlhU3RyZWFtQ29tcG9u
ZW50KiBjb21wb25lbnQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9uZW50
c1tpbmRleF0uZ2V0KCk7IH0KLSAgICB1bnNpZ25lZCBudW1iZXJPZkNvbXBvbmVudHMoKSBjb25z
dCB7IHJldHVybiBtX2NvbXBvbmVudHMuc2l6ZSgpOyB9CisgICAgdW5zaWduZWQgbnVtYmVyT2ZB
dWRpb0NvbXBvbmVudHMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29tcG9uZW50cy5zaXplKCk7
IH0KKyAgICBNZWRpYVN0cmVhbUNvbXBvbmVudCogYXVkaW9Db21wb25lbnQodW5zaWduZWQgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db21wb25lbnRzW2luZGV4XS5nZXQoKTsgfQorCisg
ICAgdW5zaWduZWQgbnVtYmVyT2ZWaWRlb0NvbXBvbmVudHMoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZGVvQ29tcG9uZW50cy5zaXplKCk7IH0KKyAgICBNZWRpYVN0cmVhbUNvbXBvbmVudCogdmlkZW9D
b21wb25lbnQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Db21wb25lbnRz
W2luZGV4XS5nZXQoKTsgfQogCiAgICAgYm9vbCBlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5k
ZWQ7IH0KICAgICB2b2lkIHNldEVuZGVkKCkgeyBtX2VuZGVkID0gdHJ1ZTsgfQogCiBwcml2YXRl
OgotICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgc291cmNlcykKKyAgICBNZWRpYVN0cmVhbURlc2NyaXB0
b3IoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1
ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykK
ICAgICAgICAgOiBtX293bmVyKDApCiAgICAgICAgICwgbV9sYWJlbChsYWJlbCkKICAgICAgICAg
LCBtX2VuZGVkKGZhbHNlKQogICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
b3VyY2VzLnNpemUoKTsgaSsrKQotICAgICAgICAgICAgbV9jb21wb25lbnRzLmFwcGVuZChNZWRp
YVN0cmVhbUNvbXBvbmVudDo6Y3JlYXRlKHNvdXJjZXNbaV0pKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhdWRpb1NvdXJjZXMuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICBtX2F1
ZGlvQ29tcG9uZW50cy5hcHBlbmQoTWVkaWFTdHJlYW1Db21wb25lbnQ6OmNyZWF0ZShhdWRpb1Nv
dXJjZXNbaV0pKTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZpZGVvU291cmNl
cy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIG1fdmlkZW9Db21wb25lbnRzLmFwcGVuZChNZWRp
YVN0cmVhbUNvbXBvbmVudDo6Y3JlYXRlKHZpZGVvU291cmNlc1tpXSkpOwogICAgIH0KIAogICAg
IE1lZGlhU3RyZWFtRGVzY3JpcHRvck93bmVyKiBtX293bmVyOwogICAgIFN0cmluZyBtX2xhYmVs
OwotICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+ID4gbV9jb21wb25lbnRz
OworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+ID4gbV9hdWRpb0NvbXBv
bmVudHM7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gPiBtX3ZpZGVv
Q29tcG9uZW50czsKICAgICBib29sIG1fZW5kZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudC5oCmluZGV4IGE0Yjc1ZTk0MDk3
Y2IzMDZhMDY0YjdlODhhMmRiYTM1MmY5Y2UzN2QuLjI5OTgxNTllZTgwNjM5M2FmNDkyYmY3ZTVj
MDhiYTU3MDgwNTE2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlVzZXJNZWRpYUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlVzZXJNZWRpYUNsaWVudC5oCkBAIC00MSw3ICs0MSwxMSBAQCBjbGFzcyBXZWJVc2VyTWVk
aWFDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlVzZXJNZWRpYUNsaWVudCgpIHsg
fQogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlh
UmVxdWVzdCYsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKSA9IDA7Cisg
ICAgLy8gREVQUkVDQVRFRAorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKGNvbnN0
IFdlYlVzZXJNZWRpYVJlcXVlc3QmLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3Vy
Y2U+JikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJV
c2VyTWVkaWFSZXF1ZXN0JiwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYg
YXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRl
b1NvdXJjZXMpIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3Qo
Y29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaAppbmRleCBhYjg4MTI1
ZDYxNGEwMGZkNTQ1ODdkZjM0ODgxMjc3MTlkOTNjZTc1Li4zOGZiMTg5OGI3MzY2MmQ5ODI4NzY5
NDZmYzBiYTMxZmFmODg3M2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVXNlck1lZGlhUmVxdWVzdC5oCkBAIC02OCw3ICs2OCwxMCBAQCBwdWJsaWM6CiAg
ICAgV0VCS0lUX0VYUE9SVCBib29sIGNhbWVyYVByZWZlcmVuY2VFbnZpcm9ubWVudCgpIGNvbnN0
OwogICAgIFdFQktJVF9FWFBPUlQgV2ViU2VjdXJpdHlPcmlnaW4gc2VjdXJpdHlPcmlnaW4oKSBj
b25zdDsKIAorICAgIC8vIERFUFJFQ0FURUQKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVz
dFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7CisKKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2Vi
TWVkaWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRp
YVN0cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcyk7CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJl
cXVlc3RGYWlsZWQoKTsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3IuaAppbmRleCBmOTE1YTdlOGE0NzM1YWI5ZmMzNmZjODNiOWNlNzBl
ZDg4ZTVhOTQ3Li5mYjllOGZmZjcyYTlkNDVmYzlhYmI5ZGE3ZmYyZmMwZGY5NTk3MDUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaApAQCAtNTIsMTMgKzUyLDIyIEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYk1lZGlh
U3RyZWFtRGVzY3JpcHRvciYpOworCisgICAgLy8gREVQUkVDQVRFRAogICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdlYlN0cmluZyYgbGFiZWwsIGNvbnN0IFdlYlZlY3Rv
cjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKTsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0
aWFsaXplKGNvbnN0IFdlYlN0cmluZyYgbGFiZWwsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0
cmVhbVNvdXJjZT4mIGF1ZGlvU291cmNlcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFt
U291cmNlPiYgdmlkZW9Tb3VyY2VzKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsK
ICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQog
CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgbGFiZWwoKSBjb25zdDsKKworICAgIC8vIERF
UFJFQ0FURUQKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc291cmNlcyhXZWJWZWN0b3I8V2ViTWVk
aWFTdHJlYW1Tb3VyY2U+JikgY29uc3Q7CiAKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXVkaW9T
b3VyY2VzKFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKSBjb25zdDsKKyAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgdmlkZW9Tb3VyY2VzKFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJj
ZT4mKSBjb25zdDsKKwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcihjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1E
ZXNjcmlwdG9yPiYpOwogICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRp
YVN0cmVhbURlc2NyaXB0b3I+KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwCmluZGV4IDY3YTdjMzRiOTc5MjZhZjAxNmUw
N2FjOGYzNzQzYzZkNTU0YTVlMDIuLjljMGJmNThlMTI0NDY2MzI5NDVlM2NiNDg3ODUxNTA1NjU1
ZTI2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNs
aWVudEltcGwuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5o
IgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFT
dHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCkBAIC01MiwxMCArNTMsMTkgQEAgdm9pZCBVc2VyTWVkaWFDbGllbnRJbXBs
OjpwYWdlRGVzdHJveWVkKCkKIHsKIH0KIAotdm9pZCBVc2VyTWVkaWFDbGllbnRJbXBsOjpyZXF1
ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCwgY29uc3Qg
TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMpCit2b2lkIFVzZXJNZWRpYUNsaWVudElt
cGw6OnJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBwcnBSZXF1
ZXN0LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQogewotICAgIGlmIChtX2NsaWVu
dCkKLSAgICAgICAgbV9jbGllbnQtPnJlcXVlc3RVc2VyTWVkaWEocmVxdWVzdCwgc291cmNlcyk7
CisgICAgaWYgKG1fY2xpZW50KSB7CisgICAgICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBy
ZXF1ZXN0ID0gcHJwUmVxdWVzdDsKKworICAgICAgICAvLyBGSVhNRTogQ2xlYW51cCB3aGVuIHRo
ZSBjaHJvbWl1bSBjb2RlIGhhcyBzd2l0Y2hlZCB0byB0aGUgc3BsaXQgc291cmNlcyBpbXBsZW1l
bnRhdGlvbi4KKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgY29tYmluZWRTb3VyY2Vz
OworICAgICAgICBjb21iaW5lZFNvdXJjZXMuYXBwZW5kKGF1ZGlvU291cmNlcyk7CisgICAgICAg
IGNvbWJpbmVkU291cmNlcy5hcHBlbmQodmlkZW9Tb3VyY2VzKTsKKyAgICAgICAgbV9jbGllbnQt
PnJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PihyZXF1ZXN0Lmdl
dCgpKSwgY29tYmluZWRTb3VyY2VzKTsKKworICAgICAgICBtX2NsaWVudC0+cmVxdWVzdFVzZXJN
ZWRpYShyZXF1ZXN0LnJlbGVhc2UoKSwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOworICAg
IH0KIH0KIAogdm9pZCBVc2VyTWVkaWFDbGllbnRJbXBsOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0
KFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmgKaW5kZXggZWYzNmE0ODE4MzhmMWZmNTY5ZDIyOGU4
ODFmMzU1OThjMmU0MjRkZC4uZjA4NzEyMzZiYTgyZWVhNzI0MmJmZGFhOTgxMWI1NzhmYzVmZGMx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvVXNlck1lZGlhQ2xpZW50
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1VzZXJNZWRpYUNsaWVudElt
cGwuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXZWJDb3JlOjpVc2VyTWVk
aWFDbGllbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
ICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiwgY29uc3Qg
V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+LCBjb25z
dCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJik7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJl
cXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCopOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5j
cHAKaW5kZXggZWNkYWU5MjExNDU3NTM4M2E0NjAxNTY5YzgwNzc5OTA3YjgzYmM3NS4uNzgzMTFh
ZGFjNjMyMTY4MDc1NmE5Yzc4NTMwNWViMTEwYTdkZmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCkBAIC02
MCwxMiArNjAsMzUgQEAgV2ViU3RyaW5nIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6bGFiZWwo
KSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPmxhYmVsKCk7CiB9CiAKKy8vIEZJWE1FOiBD
bGVhbnVwIHdoZW4gdGhlIGNocm9taXVtIGNvZGUgaGFzIHN3aXRjaGVkIHRvIHRoZSBzcGxpdCBz
b3VyY2VzIGltcGxlbWVudGF0aW9uLgogdm9pZCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnNv
dXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgd2ViU291cmNlcykgY29uc3QK
IHsKLSAgICBzaXplX3QgbnVtYmVyT2ZTb3VyY2VzID0gbV9wcml2YXRlLT5udW1iZXJPZkNvbXBv
bmVudHMoKTsKKyAgICBzaXplX3QgbnVtYmVyT2ZBdWRpb1NvdXJjZXMgPSBtX3ByaXZhdGUtPm51
bWJlck9mQXVkaW9Db21wb25lbnRzKCk7CisgICAgc2l6ZV90IG51bWJlck9mVmlkZW9Tb3VyY2Vz
ID0gbV9wcml2YXRlLT5udW1iZXJPZlZpZGVvQ29tcG9uZW50cygpOworICAgIFdlYlZlY3RvcjxX
ZWJNZWRpYVN0cmVhbVNvdXJjZT4gcmVzdWx0KG51bWJlck9mQXVkaW9Tb3VyY2VzICsgbnVtYmVy
T2ZWaWRlb1NvdXJjZXMpOworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKHNpemVfdCBqID0g
MDsgaiA8IG51bWJlck9mQXVkaW9Tb3VyY2VzOyArK2ksICsraikKKyAgICAgICAgcmVzdWx0W2ld
ID0gbV9wcml2YXRlLT5hdWRpb0NvbXBvbmVudChqKS0+c291cmNlKCk7CisgICAgZm9yIChzaXpl
X3QgaiA9IDA7IGogPCBudW1iZXJPZlZpZGVvU291cmNlczsgKytpLCArK2opCisgICAgICAgIHJl
c3VsdFtpXSA9IG1fcHJpdmF0ZS0+dmlkZW9Db21wb25lbnQoaiktPnNvdXJjZSgpOworICAgIHdl
YlNvdXJjZXMuc3dhcChyZXN1bHQpOworfQorCit2b2lkIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRv
cjo6YXVkaW9Tb3VyY2VzKFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHdlYlNvdXJj
ZXMpIGNvbnN0Cit7CisgICAgc2l6ZV90IG51bWJlck9mU291cmNlcyA9IG1fcHJpdmF0ZS0+bnVt
YmVyT2ZBdWRpb0NvbXBvbmVudHMoKTsKICAgICBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3Vy
Y2U+IHJlc3VsdChudW1iZXJPZlNvdXJjZXMpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtYmVyT2ZTb3VyY2VzOyArK2kpCi0gICAgICAgIHJlc3VsdFtpXSA9IG1fcHJpdmF0ZS0+Y29t
cG9uZW50KGkpLT5zb3VyY2UoKTsKKyAgICAgICAgcmVzdWx0W2ldID0gbV9wcml2YXRlLT5hdWRp
b0NvbXBvbmVudChpKS0+c291cmNlKCk7CisgICAgd2ViU291cmNlcy5zd2FwKHJlc3VsdCk7Cit9
CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjp2aWRlb1NvdXJjZXMoV2ViVmVjdG9y
PFdlYk1lZGlhU3RyZWFtU291cmNlPiYgd2ViU291cmNlcykgY29uc3QKK3sKKyAgICBzaXplX3Qg
bnVtYmVyT2ZTb3VyY2VzID0gbV9wcml2YXRlLT5udW1iZXJPZlZpZGVvQ29tcG9uZW50cygpOwor
ICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4gcmVzdWx0KG51bWJlck9mU291cmNl
cyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlNvdXJjZXM7ICsraSkKKyAg
ICAgICAgcmVzdWx0W2ldID0gbV9wcml2YXRlLT52aWRlb0NvbXBvbmVudChpKS0+c291cmNlKCk7
CiAgICAgd2ViU291cmNlcy5zd2FwKHJlc3VsdCk7CiB9CiAKQEAgLTg1LDE0ICsxMDgsMzIgQEAg
V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpvcGVyYXRvciBXZWJDb3JlOjpNZWRpYVN0cmVhbURl
c2NyaXB0b3IqKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOwogfQogCisvLyBG
SVhNRTogQ2xlYW51cCB3aGVuIHRoZSBjaHJvbWl1bSBjb2RlIGhhcyBzd2l0Y2hlZCB0byB0aGUg
c3BsaXQgc291cmNlcyBpbXBsZW1lbnRhdGlvbi4KIHZvaWQgV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yOjppbml0aWFsaXplKGNvbnN0IFdlYlN0cmluZyYgbGFiZWwsIGNvbnN0IFdlYlZlY3RvcjxX
ZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHNvdXJjZXMpCiB7Ci0gICAgTWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3IgczsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpbywgdmlkZW87CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzb3VyY2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIE1l
ZGlhU3RyZWFtU291cmNlKiBjdXJyID0gc291cmNlc1tpXTsKLSAgICAgICAgcy5hcHBlbmQoY3Vy
cik7CisgICAgICAgIGlmIChjdXJyLT50eXBlKCkgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVB
dWRpbykKKyAgICAgICAgICAgIGF1ZGlvLmFwcGVuZChjdXJyKTsKKyAgICAgICAgZWxzZSBpZiAo
Y3Vyci0+dHlwZSgpID09IE1lZGlhU3RyZWFtU291cmNlOjpUeXBlVmlkZW8pCisgICAgICAgICAg
ICB2aWRlby5hcHBlbmQoY3Vycik7CisgICAgfQorICAgIG1fcHJpdmF0ZSA9IE1lZGlhU3RyZWFt
RGVzY3JpcHRvcjo6Y3JlYXRlKGxhYmVsLCBhdWRpbywgdmlkZW8pOworfQorCit2b2lkIFdlYk1l
ZGlhU3RyZWFtRGVzY3JpcHRvcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJTdHJpbmcmIGxhYmVsLCBj
b25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0
IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcykKK3sKKyAgICBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpbywgdmlkZW87CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhdWRpb1NvdXJjZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTWVkaWFTdHJlYW1T
b3VyY2UqIGN1cnIgPSBhdWRpb1NvdXJjZXNbaV07CisgICAgICAgIGF1ZGlvLmFwcGVuZChjdXJy
KTsKKyAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIGN1cnIgPSB2aWRlb1NvdXJjZXNb
aV07CisgICAgICAgIHZpZGVvLmFwcGVuZChjdXJyKTsKICAgICB9Ci0gICAgbV9wcml2YXRlID0g
TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUobGFiZWwsIHMpOworICAgIG1fcHJpdmF0ZSA9
IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRlKGxhYmVsLCBhdWRpbywgdmlkZW8pOwogfQog
CiB2b2lkIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6YXNzaWduKGNvbnN0IFdlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciYgb3RoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJVc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDQxNzJhYWU1YjM1NzZjNjcwODcyZGFjMThk
OTVmNjU2MWQ2MjlhZTIuLjVhNzZjODNiMGRlODhkZDA1YmFlZTk0NGJmY2ZlOTVjZTExYjYxMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYVJlcXVl
c3QuY3BwCkBAIC04NiwxOCArODYsNDEgQEAgV2ViU2VjdXJpdHlPcmlnaW4gV2ViVXNlck1lZGlh
UmVxdWVzdDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiBXZWJTZWN1cml0eU9y
aWdpbihtX3ByaXZhdGUtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4o
KSk7CiB9CiAKK3ZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVzdFN1Y2NlZWRlZChjb25z
dCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdl
YlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHZpZGVvU291cmNlcykKK3sKKyAgICBpZiAo
bV9wcml2YXRlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciBhdWRpbzsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvU291cmNl
cy5zaXplKCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSogY3VyciA9IGF1ZGlv
U291cmNlc1tpXTsKKyAgICAgICAgYXVkaW8uYXBwZW5kKGN1cnIpOworICAgIH0KKyAgICBNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciB2aWRlbzsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZp
ZGVvU291cmNlcy5zaXplKCk7ICsraSkgeworICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSogY3Vy
ciA9IHZpZGVvU291cmNlc1tpXTsKKyAgICAgICAgdmlkZW8uYXBwZW5kKGN1cnIpOworICAgIH0K
KworICAgIG1fcHJpdmF0ZS0+c3VjY2VlZChhdWRpbywgdmlkZW8pOworfQorCisvLyBGSVhNRTog
Q2xlYW51cCB3aGVuIHRoZSBjaHJvbWl1bSBjb2RlIGhhcyBzd2l0Y2hlZCB0byB0aGUgc3BsaXQg
c291cmNlcyBpbXBsZW1lbnRhdGlvbi4KIHZvaWQgV2ViVXNlck1lZGlhUmVxdWVzdDo6cmVxdWVz
dFN1Y2NlZWRlZChjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiBzb3VyY2Vz
KQogewogICAgIGlmIChtX3ByaXZhdGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHM7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3Ig
YXVkaW8sIHZpZGVvOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc291cmNlcy5zaXplKCk7
ICsraSkgewogICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSogY3VyciA9IHNvdXJjZXNbaV07Ci0g
ICAgICAgIHMuYXBwZW5kKGN1cnIpOworICAgICAgICBpZiAoY3Vyci0+dHlwZSgpID09IE1lZGlh
U3RyZWFtU291cmNlOjpUeXBlQXVkaW8pCisgICAgICAgICAgICBhdWRpby5hcHBlbmQoY3Vycik7
CisgICAgICAgIGVsc2UgaWYgKGN1cnItPnR5cGUoKSA9PSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlw
ZVZpZGVvKQorICAgICAgICAgICAgdmlkZW8uYXBwZW5kKGN1cnIpOwogICAgIH0KIAotICAgIG1f
cHJpdmF0ZS0+c3VjY2VlZChzKTsKKyAgICBtX3ByaXZhdGUtPnN1Y2NlZWQoYXVkaW8sIHZpZGVv
KTsKIH0KIAogdm9pZCBXZWJVc2VyTWVkaWFSZXF1ZXN0OjpyZXF1ZXN0RmFpbGVkKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>