<?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>113171</bug_id>
          
          <creation_ts>2013-03-24 22:18:14 -0700</creation_ts>
          <short_desc>Allow ShadowContents in HitTests by default.</short_desc>
          <delta_ts>2013-03-26 19:42:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>112096</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>d-r</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pdr</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>schenney</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>WebkitBugTracker</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>862517</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-03-24 22:18:14 -0700</bug_when>
    <thetext>HitTestRequest is widely used in WebCore, but AllowShadowContents flag is not turned on by default.
In most of such places, we can set the flag on.

To track all existing HitTests which does not allow Shadow Contents, and discourage further HitTests which does now allow Shadow Contents in the future, we should turn AllowShadowContents flag on by default.

Instead of AllowShadowContent flag, we should introduce disallowShadowContenet flag so that callers must set this flag on explicitly if they want to disallow Shadow Trees in HitTests,.

This change should be just refactoring and should not include any behavior changes. 
After this change, we&apos;ll investigate each place where disallowShadowContents is used and get rid of the flag if it is okay to remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862522</commentid>
    <comment_count>1</comment_count>
      <attachid>194790</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-03-24 23:21:25 -0700</bug_when>
    <thetext>Created attachment 194790
Refactoring to prevent further HitTests which disallow ShadowContents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862528</commentid>
    <comment_count>2</comment_count>
      <attachid>194790</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-25 00:17:14 -0700</bug_when>
    <thetext>Comment on attachment 194790
Refactoring to prevent further HitTests which disallow ShadowContents

Attachment 194790 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17242359</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862531</commentid>
    <comment_count>3</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-03-25 00:21:30 -0700</bug_when>
    <thetext>Let me fix the build of mac-wk2.

(In reply to comment #2)
&gt; (From update of attachment 194790 [details])
&gt; Attachment 194790 [details] did not pass mac-wk2-ews (mac-wk2):
&gt; Output: http://webkit-commit-queue.appspot.com/results/17242359</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862532</commentid>
    <comment_count>4</comment_count>
      <attachid>194790</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-25 00:24:50 -0700</bug_when>
    <thetext>Comment on attachment 194790
Refactoring to prevent further HitTests which disallow ShadowContents

Attachment 194790 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/17312203</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862534</commentid>
    <comment_count>5</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-03-25 00:28:42 -0700</bug_when>
    <thetext>Looks like I have to update Source/WebKit, Source/WebKit2 in addition to Source/WebCore.
HitTests are also used there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862541</commentid>
    <comment_count>6</comment_count>
      <attachid>194797</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-03-25 00:59:49 -0700</bug_when>
    <thetext>Created attachment 194797
Update also Source/WebKit and Source/WebKit2. Let me watch the result of ews.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862545</commentid>
    <comment_count>7</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-03-25 01:14:08 -0700</bug_when>
    <thetext>I am wondering how I should test this kind of change, which updated files in a lot of ports.
I&apos;ve tested the patch on chromium-linux, but looks like it is not enough.
Is there any idea? Can I trust the test coverage of ews?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862546</commentid>
    <comment_count>8</comment_count>
      <attachid>194797</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-25 01:15:24 -0700</bug_when>
    <thetext>Comment on attachment 194797
Update also Source/WebKit and Source/WebKit2. Let me watch the result of ews.

Attachment 194797 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17322067</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862573</commentid>
    <comment_count>9</comment_count>
      <attachid>194797</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-25 02:14:21 -0700</bug_when>
    <thetext>Comment on attachment 194797
Update also Source/WebKit and Source/WebKit2. Let me watch the result of ews.

Attachment 194797 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/17302179</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862874</commentid>
    <comment_count>10</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-03-25 10:09:51 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Looks like I have to update Source/WebKit, Source/WebKit2 in addition to Source/WebCore.
&gt; HitTests are also used there.

I&apos;d say that if all bubbles are green, we&apos;re good to go. This is great, thank you for making this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863434</commentid>
    <comment_count>11</comment_count>
      <attachid>195024</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-03-26 01:03:37 -0700</bug_when>
    <thetext>Created attachment 195024
Fix a build hopefully</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864187</commentid>
    <comment_count>12</comment_count>
      <attachid>195024</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-26 19:42:33 -0700</bug_when>
    <thetext>Comment on attachment 195024
Fix a build hopefully

Clearing flags on attachment: 195024

Committed r146961: &lt;http://trac.webkit.org/changeset/146961&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864188</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-26 19:42:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194790</attachid>
            <date>2013-03-24 23:21:25 -0700</date>
            <delta_ts>2013-03-25 00:59:45 -0700</delta_ts>
            <desc>Refactoring to prevent further HitTests which disallow ShadowContents</desc>
            <filename>bug-113171-20130325151709.patch</filename>
            <type>text/plain</type>
            <size>36545</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYwNjg2ZmQzMTAyYjBi
M2FlNjczNjE3ODhjOTdhMjAzNDQyZjU1Ni4uNDEwOTg3ZDkwN2I3MjE4ZDRkMjM4NGVhYzZkYTc1
YTg1NjBjNjc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTAzLTI0ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBTaGFkb3dDb250
ZW50cyBpbiBIaXRUZXN0cyBieSBkZWZhdWx0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzMTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSGl0VGVzdFJlcXVlc3QgaXMgd2lkZWx5IHVzZWQgaW4gV2Vi
Q29yZSwgYnV0IEFsbG93U2hhZG93Q29udGVudHMKKyAgICAgICAgZmxhZyBpcyBub3QgdHVybmVk
IG9uIGJ5IGRlZmF1bHQuICBJbiBtb3N0IHBsYWNlcywgd2UgY2FuIHNldCB0aGUKKyAgICAgICAg
ZmxhZyBvbi4KKworICAgICAgICBUaGlzIGNoYW5nZSBtYWtlcyBIaXRUZXN0cyBhbGxvdyBzaGFk
b3cgY29udGVudHMgYnkgZGVmYXVsdC4KKworICAgICAgICBUbyB0cmFjayBhbGwgZXhpc3Rpbmcg
SGl0VGVzdHMgd2hpY2ggZG8gbm90IGFsbG93IHNoYWRvdyBjb250ZW50cywKKyAgICAgICAgYW5k
IGRpc2NvdXJhZ2Ugc3VjaCBhIEhpdFRlc3QgaW4gdGhlIGZ1dHVyZSwgSSd2ZSBpbnRyb2R1Y2Vk
CisgICAgICAgIGRpc2FsbG93U2hhZG93Q29udGVuZXQgZmxhZyBzbyB0aGF0IGNhbGxlcnMgbXVz
dCB0dXJuIG9uIHRoaXMgZmxhZworICAgICAgICBleHBsaWNpdGx5IGlmIHRoZXkgd2FudCB0byBk
aXNhbGxvdyBzaGFkb3cgY29udGVudHMgaW4gdGhlaXIgSGl0VGVzdHMuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2Ugc2hvdWxkIGJlIHJlZmFjdG9yaW5nIGFuZCBzaG91bGQgbm90IGluY2x1ZGUgYW55
CisgICAgICAgIGJlaGF2aW9yIGNoYW5nZXMuICBBZnRlciB0aGlzIGNoYW5nZSwgd2UnbGwgaW52
ZXN0aWdhdGUgZWFjaCBwbGFjZQorICAgICAgICB3aGVyZSBkaXNhbGxvd1NoYWRvd0NvbnRlbnRz
IGlzIHVzZWQgc3RlcCBieSBzdGVwIGFuZCBnZXQgcmlkIG9mCisgICAgICAgIHRoZSBmbGFnIGlm
IGl0IGlzIG9rYXkgdG8gcmVtb3ZlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVu
dCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2Rl
RnJvbVBvaW50KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpjb250YWlucyk6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbGVtZW50VW5kZXJNb3VzZSk6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y2FuUHJvY2Vzc0RyYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZURyYWdnZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2
ZW50TWF5U3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRl
U2VsZWN0aW9uRm9yTW91c2VEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
Ojppc0luc2lkZVNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVH
ZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0
dXJlTG9uZ1ByZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlR2Vz
dHVyZVNjcm9sbEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YmVzdENs
aWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6YmVzdENvbnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91Y2hQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
ZGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50SWZFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL0V2
ZW50SGFuZGxlci5oOgorICAgICAgICAoRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGb2N1c0NhbmRpZGF0
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lOjp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcGFnZS9Ub3VjaERp
c2FtYmlndWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRHb29kVG91Y2hUYXJnZXRz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXF1ZXN0OjpkaXNhbGxvd3NTaGFkb3dDb250ZW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFk
OjpoaXRUZXN0Rmxvd1RocmVhZFBvcnRpb25JblJlZ2lvbik6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0Q2xpcENvbnRlbnQpOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bm9kZXNG
cm9tUmVjdCk6CisKIDIwMTMtMDMtMjQgIEtvbmRhcGFsbHlLYWx5YW4gIDxrYWx5YW4ua29uZGFw
YWxseUBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gQWRkIHN1cHBvcnQgdG8gY2hlY2sgZm9y
IGN1cnJlbnQgRHJhd2FibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDc0YzczM2Zh
OTJiZmY2MGFjZGZhYzI2YWI5Y2RmZTg4NWM3YTA1MDUuLjFlYzU4MDgxMDRiODVhZTFlYmMzZTQ2
MWI4NjJhYTVkMDhhM2NmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTMtMDMtMjQgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEFsbG93IFNoYWRvd0NvbnRlbnRzIGluIEhpdFRlc3RzIGJ5IGRlZmF1bHQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTMxNzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9Db250ZXh0
TWVudUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZWxlY3RNaXNzcGVsbGVkV29y
ZCk6CisKIDIwMTMtMDMtMjIgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIFdpcmUgd2luZG93cyBzY3JvbGxCeVBhZ2UgZW51bSB1cCB0
byBjb21wb3NpdG9yIHRocmVhZCBpbnB1dCBoYW5kbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRl
eCAwNWU3YzY5NDc5MWFlZjQ4Y2M3OGUyMWY3NjQyODVkZmQyY2E1YjZiLi44YTQxMGY1MmQzMGU4
ZTU0ZDY1ZGUxOGM5NTNmZjFlNWE1NzBlYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzcx
LDggKzM3MSw4IEBAIHB1YmxpYzoKICAgICAgKiBAcGFyYW0gbGVmdFBhZGRpbmcgSG93IG11Y2gg
dG8gZXhwYW5kIHRoZSBsZWZ0IG9mIHRoZSByZWN0YW5nbGUKICAgICAgKi8KICAgICBQYXNzUmVm
UHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcs
IHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQg
bGVmdFBhZGRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXRU
ZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKSBjb25zdDsKKyAgICAgICAgdW5zaWdu
ZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRk
aW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywKKyAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRl
c3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQp
IGNvbnN0OwogICAgIEVsZW1lbnQqIGVsZW1lbnRGcm9tUG9pbnQoaW50IHgsIGludCB5KSBjb25z
dDsKICAgICBQYXNzUmVmUHRyPFJhbmdlPiBjYXJldFJhbmdlRnJvbVBvaW50KGludCB4LCBpbnQg
eSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggMzgwOWQ1ZDdlMDJkYjllNjg0MmUx
ZGFhNDBhYTg4YjQxY2I2NTRmMS4uNDA5MDNlMDM5OTQ2ODEyNTM4N2U4YjYxM2Q4ZTQwZDZkZmNi
MDYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCBOb2Rl
KiBub2RlRnJvbVBvaW50KERvY3VtZW50KiBkb2N1bWVudCwgaW50IHgsIGludCB5LCBMYXlvdXRQ
b2ludCogbG9jYWxQb2ludCkKICAgICBpZiAoIWZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0
KCkuY29udGFpbnMocG9pbnQpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEhpdFRlc3RSZXF1
ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZSk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hh
ZG93Q29udGVudCk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQpOwogICAgIGRvY3Vt
ZW50LT5yZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCBmMDI2ODNhMWNhYjFkYTMwNDE1
NTc2ZjU2OWViZDYxMDk2NTY0YWJjLi5jYjdjYzMzMmFhNDFlODczYjBkMDMzMDgyZmUxMGVjNzdk
MjM3MWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAt
MTU0Miw4ICsxNTQyLDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6Y29udGFpbnMoY29uc3QgTGF5
b3V0UG9pbnQmIHBvaW50KQogICAgIGlmICghZG9jdW1lbnQtPnJlbmRlcmVyKCkpIAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0
UmVxdWVzdDo6UmVhZE9ubHkgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdFJl
cXVlc3Q6OkFjdGl2ZSk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRp
c2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQpOwog
ICAgIGRvY3VtZW50LT5yZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAg
ICBOb2RlKiBpbm5lck5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDA0MDQ1OTQwZjM1ZmNmZGM2OGZlYzg1MjkwZGMwOGM1
M2Y5N2VlYzYuLmNjNjQ2M2UxYjU2YjAwYjA1MzY5MTMyMWIzMGVkMzJjNTYwNjkzYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgc3Rh
dGljIEVsZW1lbnQqIGVsZW1lbnRVbmRlck1vdXNlKERvY3VtZW50KiBkb2N1bWVudFVuZGVyTW91
c2UsIGNvbnN0IEludFBvaW50JgogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBmcmFtZSA/IGZyYW1l
LT5wYWdlWm9vbUZhY3RvcigpIDogMTsKICAgICBMYXlvdXRQb2ludCBwb2ludCA9IHJvdW5kZWRM
YXlvdXRQb2ludChGbG9hdFBvaW50KHAueCgpICogem9vbUZhY3RvciwgcC55KCkgKiB6b29tRmFj
dG9yKSk7CiAKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFk
T25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVl
c3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhp
dFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0KHBvaW50KTsKICAgICBkb2N1bWVudFVuZGVyTW91c2UtPnJlbmRlclZpZXcoKS0+aGl0
VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCkBAIC01NjMsNyArNTYzLDcgQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6Y2FuUHJvY2Vzc0RyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgIGlmICghbV9w
YWdlLT5tYWluRnJhbWUoKS0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0
VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQp
OworICAgIHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRU
ZXN0UmVzdWx0QXRQb2ludChwb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZSk7CiAKICAgICBpZiAoIXJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzQ3LDcgKzc0Nyw3IEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBE
cmFnT3BlcmF0aW9uCiAgICAgaWYgKCFzcmMtPnZpZXcoKSB8fCAhc3JjLT5jb250ZW50UmVuZGVy
ZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0
UmVzdWx0ID0gc3JjLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZHJhZ09y
aWdpbiwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8
IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOworICAgIEhpdFRlc3RSZXN1bHQg
aGl0VGVzdFJlc3VsdCA9IHNyYy0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50
KGRyYWdPcmlnaW4sIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpB
Y3RpdmUpOwogICAgIGlmICghc3RhdGUubV9kcmFnU3JjLT5jb250YWlucyhoaXRUZXN0UmVzdWx0
LmlubmVyTm9kZSgpKSkKICAgICAgICAgLy8gVGhlIG9yaWdpbmFsIG5vZGUgYmVpbmcgZHJhZ2dl
ZCBpc24ndCB1bmRlciB0aGUgZHJhZyBvcmlnaW4gYW55bW9yZS4uLiBtYXliZSBpdCB3YXMKICAg
ICAgICAgLy8gaGlkZGVuIG9yIG1vdmVkIG91dCBmcm9tIHVuZGVyIHRoZSBjdXJzb3IuIFJlZ2Fy
ZGxlc3MsIHdlIGRvbid0IHdhbnQgdG8gc3RhcnQgYSBkcmFnIG9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKaW5kZXggYWYwMzcyOWUyZjliN2M1ZmU4MDY1ZTlhMzYzNTg4OWIyZjYw
Y2E1YS4uYTEwMjg5NTUzZDEwYjIxNTY3MGFhOTYyNjcyNDI4YThiZTNlMDc0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNzM4LDcgKzczOCw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJiBlCiAgICAgfQogCiAgICAgaWYgKG1fc2VsZWN0aW9uSW5pdGlhdGlvblN0YXRl
ICE9IEV4dGVuZGVkU2VsZWN0aW9uKSB7Ci0gICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3Qo
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CisgICAg
ICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0
VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRl
bnQpOwogICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChtX21vdXNlRG93blBvcyk7CiAgICAg
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCBy
ZXN1bHQpOwogCkBAIC03NjksNyArNzY5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50TWF5
U3RhcnREcmFnKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIHVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpOwot
ICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5KTsKKyAg
ICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSkpOwogICAgIG1fZnJh
bWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgRHJh
Z1N0YXRlIHN0YXRlOwpAQCAtNzg1LDkgKzc4NSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRh
dGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoKQogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRP
bmx5IHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUg
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6Ok1vdmUpOworICAg
IEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpNb3ZlIHwgSGl0VGVzdFJlcXVlc3Q6
OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+
d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKICAgICByZW5kZXJl
ci0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNl
RHJhZyhyZXN1bHQpOwpAQCAtMTA0Miw3ICsxMDQwLDcgQEAgSGl0VGVzdFJlc3VsdCBFdmVudEhh
bmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgSGl0
VGUKICAgICBpZiAoIXJlcXVlc3QucmVhZE9ubHkoKSkKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShyZXF1ZXN0LCByZXN1bHQuaW5uZXJFbGVtZW50
KCkpOwogCi0gICAgaWYgKCFyZXF1ZXN0LmFsbG93c1NoYWRvd0NvbnRlbnQoKSkKKyAgICBpZiAo
cmVxdWVzdC5kaXNhbGxvd3NTaGFkb3dDb250ZW50KCkpCiAgICAgICAgIHJlc3VsdC5zZXRUb05v
blNoYWRvd0FuY2VzdG9yKCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTQ3OCw3ICsxNDc2
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgfQogICAgIG1fbW91c2VEb3duV2FzSW5T
dWJmcmFtZSA9IGZhbHNlOwogCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVx
dWVzdDo6QWN0aXZlKTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAv
LyBTYXZlIHRoZSBkb2N1bWVudCBwb2ludCB3ZSBnZW5lcmF0ZSBpbiBjYXNlIHRoZSB3aW5kb3cg
Y29vcmRpbmF0ZSBpcyBpbnZhbGlkYXRlZCBieSB3aGF0IGhhcHBlbnMKICAgICAvLyB3aGVuIHdl
IGRpc3BhdGNoIHRoZSBldmVudC4KICAgICBMYXlvdXRQb2ludCBkb2N1bWVudFBvaW50ID0gZG9j
dW1lbnRQb2ludEZvcldpbmRvd1BvaW50KG1fZnJhbWUsIG1vdXNlRXZlbnQucG9zaXRpb24oKSk7
CkBAIC0xNTQxLDcgKzE1MzksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVz
c0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICAvLyBpbiBj
YXNlIHRoZSBzY3JvbGxiYXIgd2lkZ2V0IHdhcyBkZXN0cm95ZWQgd2hlbiB0aGUgbW91c2UgZXZl
bnQgd2FzIGhhbmRsZWQuCiAgICAgaWYgKG1ldi5zY3JvbGxiYXIoKSkgewogICAgICAgICBjb25z
dCBib29sIHdhc0xhc3RTY3JvbGxCYXIgPSBtZXYuc2Nyb2xsYmFyKCkgPT0gbV9sYXN0U2Nyb2xs
YmFyVW5kZXJNb3VzZS5nZXQoKTsKLSAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRU
ZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAgICAgICAg
SGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0
UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7
CiAgICAgICAgIG1ldiA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJl
cXVlc3QsIGRvY3VtZW50UG9pbnQsIG1vdXNlRXZlbnQpOwogICAgICAgICBpZiAod2FzTGFzdFNj
cm9sbEJhciAmJiBtZXYuc2Nyb2xsYmFyKCkgIT0gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS5n
ZXQoKSkKICAgICAgICAgICAgIG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UgPSAwOwpAQCAtMTU2
MSw3ICsxNTU5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgICAgIC8vIHdlJ2QgbGlr
ZSB0byBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCB0byBwYXNzIHRoZSBldmVu
dCB0byB0aGUgd2lkZ2V0IGFuZCB0aHVzIHRoZQogICAgICAgICAvLyBldmVudCB0YXJnZXQgbm9k
ZSBjYW4ndCBzdGlsbCBiZSB0aGUgc2hhZG93IG5vZGUuCiAgICAgICAgIGlmIChtZXYudGFyZ2V0
Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSAmJiB0b1NoYWRvd1Jvb3QobWV2LnRhcmdldE5vZGUoKSkt
Pmhvc3QoKS0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKLSAgICAgICAgICAgIEhpdFRlc3RSZXF1
ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZSk7CisgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0
OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlz
YWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAgICAgICAgIG1ldiA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRvY3VtZW50UG9pbnQsIG1vdXNlRXZlbnQp
OwogICAgICAgICB9CiAKQEAgLTE1OTQsNyArMTU5Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZURvdWJsZUNsaWNrRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3Vz
ZUV2CiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKICAgICBzZXRMYXN0S25vd25Nb3VzZVBv
c2l0aW9uKG1vdXNlRXZlbnQpOwogCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0
UmVxdWVzdDo6QWN0aXZlKTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAg
ICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50KHJl
cXVlc3QsIG1vdXNlRXZlbnQpOwogICAgIEZyYW1lKiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9ySGl0
VGVzdFJlc3VsdChtZXYpOwogICAgIGlmIChtX2V2ZW50SGFuZGxlcldpbGxSZXNldENhcHR1cmlu
Z01vdXNlRXZlbnRzTm9kZSkKQEAgLTE3MDYsNyArMTcwNCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZl
bnQsIEhpCiAgICAgaWYgKG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UgJiYgbV9tb3VzZVByZXNz
ZWQpCiAgICAgICAgIHJldHVybiBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLT5tb3VzZU1vdmVk
KG1vdXNlRXZlbnQpOwogCi0gICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBo
aXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6Ok1vdmU7CisgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRl
c3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6Ok1vdmUgfCBIaXRUZXN0UmVx
dWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50OwogICAgIGlmIChtX21vdXNlUHJlc3NlZCkKICAg
ICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlOwogICAgIGVsc2UgaWYgKG9u
bHlVcGRhdGVTY3JvbGxiYXJzKSB7CkBAIC0xODU5LDcgKzE4NTcsNyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBt
b3VzZUV2ZW50KQogICAgICAgICByZXR1cm4gIWRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVz
KCkubW91c2V1cEV2ZW50LCBtX2xhc3ROb2RlVW5kZXJNb3VzZS5nZXQoKSwgY2FuY2VsYWJsZSwg
bV9jbGlja0NvdW50LCBtb3VzZUV2ZW50LCBzZXRVbmRlcik7CiAgICAgfQogCi0gICAgSGl0VGVz
dFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVsZWFzZSk7CisgICAgSGl0VGVzdFJl
cXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVsZWFzZSB8IEhpdFRlc3RSZXF1ZXN0OjpE
aXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMg
bWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgbW91c2VFdmVudCk7CiAgICAgRnJhbWUq
IHN1YmZyYW1lID0gbV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUuZ2V0KCkgPyBzdWJmcmFtZUZv
clRhcmdldE5vZGUobV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUuZ2V0KCkpIDogc3ViZnJhbWVG
b3JIaXRUZXN0UmVzdWx0KG1ldik7CiAgICAgaWYgKG1fZXZlbnRIYW5kbGVyV2lsbFJlc2V0Q2Fw
dHVyaW5nTW91c2VFdmVudHNOb2RlKQpAQCAtMjAwOCw3ICsyMDA2LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQs
IENsaXBib2FyZCoKICAgICBpZiAoIW1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHkpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
IHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBldmVu
dCk7CiAKICAgICAvLyBEcmFnIGV2ZW50cyBzaG91bGQgbmV2ZXIgZ28gdG8gdGV4dCBub2RlcyAo
Zm9sbG93aW5nIElFLCBhbmQgcHJvcGVyIG1vdXNlb3Zlci9vdXQgZGlzcGF0Y2gpCkBAIC0yMzIx
LDcgKzIzMTksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiB0YXJnZQogYm9vbCBFdmVudEhhbmRsZXI6
OmlzSW5zaWRlU2Nyb2xsYmFyKGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgY29uc3QKIHsK
ICAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJl
cigpKSB7Ci0gICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5KTsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAg
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQod2luZG93UG9pbnQpOwogICAgICAgICByZW5kZXJWaWV3
LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQuc2Nyb2xs
YmFyKCk7CkBAIC0yMzUzLDcgKzIzNTEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hl
ZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAgICAgc2V0RnJhbWVXYXNTY3Jv
bGxlZEJ5VXNlcigpOwogICAgIExheW91dFBvaW50IHZQb2ludCA9IHZpZXctPndpbmRvd1RvQ29u
dGVudHMoZS5wb3NpdGlvbigpKTsKIAotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVz
dFJlcXVlc3Q6OlJlYWRPbmx5KTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQp
OwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZQb2ludCk7CiAgICAgZG9jLT5yZW5kZXJWaWV3
KCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKIApAQCAtMjQ2NCw3ICsyNDYyLDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVF
dmVudCYgZ2VzdHVyZUV2ZW50KQogICAgIH0KIAogICAgIEludFBvaW50IGFkanVzdGVkUG9pbnQg
PSBnZXN0dXJlRXZlbnQucG9zaXRpb24oKTsKLSAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJl
cXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6VG91Y2hFdmVudCB8IEhpdFRlc3RS
ZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7CisgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RS
ZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlRvdWNoRXZlbnQ7CiAgICAgaWYg
KGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd24pIHsK
ICNpZiBFTkFCTEUoVE9VQ0hfQURKVVNUTUVOVCkKICAgICAgICAgYWRqdXN0R2VzdHVyZVBvc2l0
aW9uKGdlc3R1cmVFdmVudCwgYWRqdXN0ZWRQb2ludCk7CkBAIC0yNTk2LDcgKzI1OTQsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdQcmVzcyhjb25zdCBQbGF0Zm9ybUdl
c3R1cmVFdmVudCYgZ2VzdHVyZUV2ZQogICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VE
b3duRXZlbnQoYWRqdXN0ZWRQb2ludCwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExl
ZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgMCwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIFdURjo6Y3VycmVudFRpbWUoKSk7CiAgICAgICAgIGhhbmRsZU1vdXNlUHJl
c3NFdmVudChtb3VzZURvd25FdmVudCk7CiAgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3Vz
ZURyYWdFdmVudChhZGp1c3RlZFBvaW50LCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwg
TGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIFdURjo6Y3VycmVudFRpbWUoKSk7Ci0gICAgICAgIEhpdFRlc3RSZXF1ZXN0
IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5KTsKKyAgICAgICAgSGl0VGVzdFJlcXVl
c3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6RGlz
YWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBtb3VzZURyYWdFdmVudCk7CiAgICAg
ICAgIG1fZGlkU3RhcnREcmFnID0gZmFsc2U7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gc3ViZnJh
bWUgPSBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQobWV2KTsKQEAgLTI2NzgsNyArMjY3Niw3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsQmVnaW4oY29uc3QgUGxhdGZv
cm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIExh
eW91dFBvaW50IHZpZXdQb2ludCA9IHZpZXctPndpbmRvd1RvQ29udGVudHMoZ2VzdHVyZUV2ZW50
LnBvc2l0aW9uKCkpOwotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6
OlJlYWRPbmx5KTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0KHZpZXdQb2ludCk7CiAgICAgZG9jdW1lbnQtPnJlbmRlclZpZXco
KS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCkBAIC0yNzg4LDcgKzI3ODYsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6c2hvdWxkQXBwbHlUb3VjaEFkanVzdG1lbnQoY29uc3QgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQmIGV2ZW50KQogYm9vbCBFdmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2Rl
Rm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUm
IHRvdWNoUmFkaXVzLCBJbnRQb2ludCYgdGFyZ2V0UG9pbnQsIE5vZGUqJiB0YXJnZXROb2RlKQog
ewogICAgIEludFBvaW50IGhpdFRlc3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9D
b250ZW50cyh0b3VjaENlbnRlcik7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0
UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50
LCB0b3VjaFJhZGl1cyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0
QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmUsIHRvdWNoUmFkaXVzKTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0KHRv
dWNoQ2VudGVyIC0gdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsgdG91Y2hSYWRpdXMpOwogICAg
IFJlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0ID0gU3RhdGljSGFzaFNldE5v
ZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKQEAgLTI4MDYsNyAr
MjgwNCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Q2xpY2thYmxlTm9kZUZvclRvdWNoUG9p
bnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjCiBib29sIEV2ZW50SGFuZGxlcjo6YmVz
dENvbnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVy
LCBjb25zdCBJbnRTaXplJiB0b3VjaFJhZGl1cywgSW50UG9pbnQmIHRhcmdldFBvaW50LCBOb2Rl
KiYgdGFyZ2V0Tm9kZSkKIHsKICAgICBJbnRQb2ludCBoaXRUZXN0UG9pbnQgPSBtX2ZyYW1lLT52
aWV3KCktPndpbmRvd1RvQ29udGVudHModG91Y2hDZW50ZXIpOwotICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFs
bG93U2hhZG93Q29udGVudCwgdG91Y2hSYWRpdXMpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVh
ZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCB0b3VjaFJhZGl1cyk7CiAKICAgICBJbnRS
ZWN0IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyArIHRv
dWNoUmFkaXVzKTsKICAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlzdCA9
IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQo
KSk7CkBAIC0yODE2LDcgKzI4MTQsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6YmVzdENvbnRleHRN
ZW51Tm9kZUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLAogYm9vbCBF
dmVudEhhbmRsZXI6OmJlc3Rab29tYWJsZUFyZWFGb3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50
JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFJlY3QmIHRhcmdl
dEFyZWEsIE5vZGUqJiB0YXJnZXROb2RlKQogewogICAgIEludFBvaW50IGhpdFRlc3RQb2ludCA9
IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh0b3VjaENlbnRlcik7Ci0gICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIHRvdWNoUmFk
aXVzKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhp
dFRlc3RQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQsIHRvdWNoUmFkaXVz
KTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0gdG91Y2hSYWRpdXMsIHRv
dWNoUmFkaXVzICsgdG91Y2hSYWRpdXMpOwogICAgIFJlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxp
c3Q+IG5vZGVMaXN0ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJh
c2VkVGVzdFJlc3VsdCgpKTsKQEAgLTI4NTksNyArMjg1Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpzZW5kQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQog
ICAgIG1fbW91c2VQcmVzc2VkID0gZmFsc2U7CiAgICAgYm9vbCBzd2FsbG93RXZlbnQ7CiAgICAg
TGF5b3V0UG9pbnQgdmlld3BvcnRQb3MgPSB2LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0
aW9uKCkpOwotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2
ZSk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwg
SGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBkb2MtPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIHZp
ZXdwb3J0UG9zLCBldmVudCk7CiAKICAgICBpZiAobV9mcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9y
KCkuc2hvdWxkU2VsZWN0T25Db250ZXh0dWFsTWVudUNsaWNrKCkKQEAgLTI5MzYsNyArMjkzNCw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudEZvcktleSgpCiAgICAg
Ly8gVXNlIHRoZSBmb2N1c2VkIG5vZGUgYXMgdGhlIHRhcmdldCBmb3IgaG92ZXIgYW5kIGFjdGl2
ZS4KICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb3NpdGlvbik7CiAgICAgcmVzdWx0LnNldElu
bmVyTm9kZSh0YXJnZXROb2RlKTsKLSAgICBkb2MtPnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUoSGl0
VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgcmVzdWx0LmlubmVyRWxlbWVudCgpKTsKKyAgICBkb2MtPnVw
ZGF0ZUhvdmVyQWN0aXZlU3RhdGUoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1
ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQsIHJlc3VsdC5pbm5lckVsZW1lbnQoKSk7CiAKICAg
ICAvLyBUaGUgY29udGV4dG1lbnUgZXZlbnQgaXMgYSBtb3VzZSBldmVudCBldmVuIHdoZW4gaW52
b2tlZCB1c2luZyB0aGUga2V5Ym9hcmQuCiAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCBmb3Igd2Vi
IGNvbXBhdGliaWxpdHkuCkBAIC0zMDcwLDcgKzMwNjgsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
aG92ZXJUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4qKQogCiAgICAgaWYgKFJlbmRlclZp
ZXcqIHJlbmRlcmVyID0gbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpIHsKICAgICAgICAgaWYg
KEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkgewotICAgICAgICAgICAgSGl0VGVz
dFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6TW92ZSk7CisgICAgICAgICAgICBIaXRU
ZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpNb3ZlIHwgSGl0VGVzdFJlcXVlc3Q6
OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbikpOwogICAg
ICAgICAgICAgcmVuZGVyZXItPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICAgICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUocmVxdWVzdCwgcmVz
dWx0LmlubmVyRWxlbWVudCgpKTsKQEAgLTMzNzcsNyArMzM3NSw3IEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjpmcmVlQ2xpcGJvYXJkKCkKIHZvaWQgRXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRB
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlv
bikKIHsKICAgICAvLyBTZW5kIGEgaGl0IHRlc3QgcmVxdWVzdCBzbyB0aGF0IFJlbmRlckxheWVy
IGdldHMgYSBjaGFuY2UgdG8gdXBkYXRlIHRoZSA6aG92ZXIgYW5kIDphY3RpdmUgcHNldWRvY2xh
c3Nlcy4KLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWxlYXNl
KTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWxlYXNlIHwg
SGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgcHJlcGFyZU1vdXNl
RXZlbnQocmVxdWVzdCwgZXZlbnQpOwogCiAgICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAm
JiBkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRjaEV2ZW50cygpKSB7CkBAIC0zNDMwLDcgKzM0Mjgs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcgogICAgICAgICBkcmFnU3RhdGUoKS5tX2V2ZW50
RGlzcGF0Y2hQb2xpY3kgPSAodXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgJiBEcmFn
U291cmNlQWN0aW9uREhUTUwpID8gRHJhZ1N0YXRlOjpEaXNwYXRjaEV2ZW50czogRHJhZ1N0YXRl
OjpEb05vdERpc3BhdGNoRXZlbnRzOwogCiAgICAgICAgIC8vIHRyeSB0byBmaW5kIGFuIGVsZW1l
bnQgdGhhdCB3YW50cyB0byBiZSBkcmFnZ2VkCi0gICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVl
c3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5KTsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVx
dWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dT
aGFkb3dDb250ZW50KTsKICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQobV9tb3VzZURvd25Q
b3MpOwogICAgICAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVzdChyZXF1ZXN0
LCByZXN1bHQpOwogICAgICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwpAQCAt
MzkwNiw3ICszOTA0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29u
c3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgaWYgKHBvaW50U3RhdGUgPT0g
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQpIHsKICAgICAgICAgICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0OwogICAgICAgICAgICAgaWYgKGZyZXNoVG91Y2hFdmVudHMpIHsKLSAgICAg
ICAgICAgICAgICByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChwYWdlUG9pbnQsIGhpdFR5
cGUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50KTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChwYWdlUG9pbnQsIGhpdFR5cGUpOwogICAg
ICAgICAgICAgICAgIG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0S2V5ID0gdG91Y2hQb2lu
dFRhcmdldEtleTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9vcmlnaW5hdGluZ1RvdWNoUG9p
bnREb2N1bWVudC5nZXQoKSAmJiBtX29yaWdpbmF0aW5nVG91Y2hQb2ludERvY3VtZW50LT5mcmFt
ZSgpKSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0UG9pbnQgcGFnZVBvaW50SW5PcmlnaW5hdGlu
Z0RvY3VtZW50ID0gZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvaW50KG1fb3JpZ2luYXRpbmdUb3Vj
aFBvaW50RG9jdW1lbnQtPmZyYW1lKCksIHBvaW50LnBvcygpKTsKQEAgLTM5NDAsNyArMzkzOCw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91
Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIH0gZWxzZSBpZiAocG9pbnRTdGF0ZSA9PSBQbGF0Zm9y
bVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQgfHwgcG9pbnRTdGF0ZSA9PSBQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoQ2FuY2VsbGVkKSB7CiAgICAgICAgICAgICAvLyBXZSBvbmx5IHBlcmZvcm0g
YSBoaXR0ZXN0IG9uIHJlbGVhc2Ugb3IgY2FuY2VsIHRvIHVuc2V0IDphY3RpdmUgb3IgOmhvdmVy
IHN0YXRlLgogICAgICAgICAgICAgaWYgKHRvdWNoUG9pbnRUYXJnZXRLZXkgPT0gbV9vcmlnaW5h
dGluZ1RvdWNoUG9pbnRUYXJnZXRLZXkpIHsKLSAgICAgICAgICAgICAgICBoaXRUZXN0UmVzdWx0
QXRQb2ludChwYWdlUG9pbnQsIGhpdFR5cGUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dD
b250ZW50KTsKKyAgICAgICAgICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2ludChwYWdlUG9pbnQs
IGhpdFR5cGUpOwogICAgICAgICAgICAgICAgIG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0
S2V5ID0gMDsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRE
b2N1bWVudC5nZXQoKSAmJiBtX29yaWdpbmF0aW5nVG91Y2hQb2ludERvY3VtZW50LT5mcmFtZSgp
KSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0UG9pbnQgcGFnZVBvaW50SW5PcmlnaW5hdGluZ0Rv
Y3VtZW50ID0gZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvaW50KG1fb3JpZ2luYXRpbmdUb3VjaFBv
aW50RG9jdW1lbnQtPmZyYW1lKCksIHBvaW50LnBvcygpKTsKQEAgLTQwNDgsNyArNDA0Niw3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZlbnRJZkVuYWJsZWQo
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50CiAgICAgaWYgKGV2ZW50VHlwZSAhPSBQbGF0Zm9ybUV2
ZW50OjpNb3VzZU1vdmVkICYmIGV2ZW50VHlwZSAhPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNz
ZWQgJiYgZXZlbnRUeXBlICE9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVl
c3Q6OkFjdGl2ZSk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6
QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0
LCBldmVudCk7CiAgICAgaWYgKG1ldi5zY3JvbGxiYXIoKSB8fCBzdWJmcmFtZUZvckhpdFRlc3RS
ZXN1bHQobWV2KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmgKaW5kZXggM2I1YzMxYTRkNGVkMzZjMDBkZjVlOTBmMTk5MjA4MDg4YmFkMDY3Ny4uYzdl
ZDc5MzU0ZWVlNjAyMTg2NTQyYmI0YzM4Mzc2ZGNmMzUzNTQwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCkBAIC0xMzEsOCArMTMxLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0
Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uSW5RdWFkKGNvbnN0IEZsb2F0UXVhZCYpOwogCiAgICAg
SGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0
VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRU
ZXN0UmVxdWVzdDo6QWN0aXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgTGF5b3V0U2l6ZSYgcGFkZGluZyA9IExheW91dFNpemUoKSk7CisgICAgICAgIEhp
dFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0
OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlz
YWxsb3dTaGFkb3dDb250ZW50LAorICAgICAgICBjb25zdCBMYXlvdXRTaXplJiBwYWRkaW5nID0g
TGF5b3V0U2l6ZSgpKTsKIAogICAgIGJvb2wgbW91c2VQcmVzc2VkKCkgY29uc3QgeyByZXR1cm4g
bV9tb3VzZVByZXNzZWQ7IH0KICAgICB2b2lkIHNldE1vdXNlUHJlc3NlZChib29sIHByZXNzZWQp
IHsgbV9tb3VzZVByZXNzZWQgPSBwcmVzc2VkOyB9CkBAIC0yOTgsNyArMjk4LDcgQEAgcHJpdmF0
ZToKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgYm9vbCBkaXNwYXRjaFN5bnRoZXRp
Y1RvdWNoRXZlbnRJZkVuYWJsZWQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgSGl0
VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0SW5GcmFtZShGcmFtZSosIGNvbnN0IExheW91dFBvaW50
JiwgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJl
cXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CisgICAgSGl0VGVzdFJl
c3VsdCBoaXRUZXN0UmVzdWx0SW5GcmFtZShGcmFtZSosIGNvbnN0IExheW91dFBvaW50JiwgSGl0
VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6
OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNh
bGxvd1NoYWRvd0NvbnRlbnQpOwogI2VuZGlmCiAKICAgICB2b2lkIGludmFsaWRhdGVDbGljaygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IDdlZjZmYzYxY2Zj
OGI1YzBhZDU2MmEzZjQ1ZDQ1OThhN2VmMjlmNDkuLmFhZmMzM2NlNDhlNzFjMzRhNGEwNWU3ZWVj
ZDZhZmFkYmY5ZWVlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAK
QEAgLTcyMSw3ICs3MjEsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmTmVl
ZGVkKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgRm9jdXNDYQogICAgICAgICAvLyBJ
ZiAyIG5vZGVzIGFyZSBpbnRlcnNlY3RpbmcsIGRvIGhpdCB0ZXN0IHRvIGZpbmQgd2hpY2ggbm9k
ZSBpbiBvbiB0b3AuCiAgICAgICAgIExheW91dFVuaXQgeCA9IGludGVyc2VjdGlvblJlY3QueCgp
ICsgaW50ZXJzZWN0aW9uUmVjdC53aWR0aCgpIC8gMjsKICAgICAgICAgTGF5b3V0VW5pdCB5ID0g
aW50ZXJzZWN0aW9uUmVjdC55KCkgKyBpbnRlcnNlY3Rpb25SZWN0LmhlaWdodCgpIC8gMjsKLSAg
ICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBjYW5kaWRhdGUudmlzaWJsZU5vZGUtPmRvY3Vt
ZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChJbnRQb2ludCh4LCB5KSwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZyk7CisgICAg
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gY2FuZGlkYXRlLnZpc2libGVOb2RlLT5kb2N1bWVu
dCgpLT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQoSW50UG9pbnQoeCwgeSksIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0
UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAgICAgaWYgKGNhbmRpZGF0ZS52
aXNpYmxlTm9kZS0+Y29udGFpbnMocmVzdWx0LmlubmVyTm9kZSgpKSkgewogICAgICAgICAgICAg
Y2xvc2VzdCA9IGNhbmRpZGF0ZTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKaW5kZXggMjhmZGU0OTA0NzllMTI4MWRmMGIzMDRiYTdiMzlmZTEzODM0NWMyOC4uYWE2YzUx
ZGU4ZjhkYzE0NTg2MDg4YzdkNDIxYzVjMWM1MTkwNzg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
QEAgLTcyNyw3ICs3MjcsNyBAQCBTdHJpbmcgRnJhbWU6OmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5
RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBzdHIpIGNvbnN0CiAKIFZpc2libGVQb3NpdGlvbiBGcmFt
ZTo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpCiB7
Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoZnJhbWVQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJl
cXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOworICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KGZyYW1lUG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUpOwogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7
CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoRGlzYW1iaWd1YXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaERpc2FtYmlndWF0aW9uLmNwcAppbmRleCAwOGIzNTM4Y2I2
Y2ViOTFkMDEzMDljMzE4ZjdjOTZjMjVkYjYwODA5Li42ZTJiZmQyYjc1NjU5MWUxMWRmNTU5ZmE3
OGU4M2ZlM2E4MzY4NmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoRGlz
YW1iaWd1YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hEaXNhbWJpZ3Vh
dGlvbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBmaW5kR29vZFRvdWNoVGFyZ2V0cyhjb25z
dCBJbnRSZWN0JiB0b3VjaEJveCwgRnJhbWUqIG1haW5GcmFtZSwgVmVjdG9yPEludFIKICAgICBJ
bnRQb2ludCB0b3VjaFBvaW50ID0gdG91Y2hCb3guY2VudGVyKCk7CiAgICAgSW50UG9pbnQgY29u
dGVudHNQb2ludCA9IG1haW5GcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHRvdWNoUG9p
bnQpOwogCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjb250ZW50c1BvaW50LCBIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBJbnRTaXplKHBhZGRpbmcsIHBhZGRp
bmcpKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRzUG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxs
b3dTaGFkb3dDb250ZW50LCBJbnRTaXplKHBhZGRpbmcsIHBhZGRpbmcpKTsKICAgICBjb25zdCBM
aXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiYgaGl0UmVzdWx0cyA9IHJlc3VsdC5yZWN0QmFzZWRU
ZXN0UmVzdWx0KCk7CiAKICAgICAvLyBCbGFja2xpc3Qgbm9kZXMgdGhhdCBhcmUgY29udGFpbmVy
IG9mIGRpc2FtYmlndWF0ZWQgbm9kZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVxdWVzdC5oCmluZGV4IDIyZTVkMzc2YzhiODY1M2RmOWEyNzM2NGJkZDZmOTBmZTc3MjZkMmYu
Ljg3ODFjNzhiODk0MGJjNjE5ZDIxMDk2ZTVjNDE1NWExMjM4NGY4OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgSWdub3JlQ2xpcHBpbmcgPSAxIDw8IDUsCiAgICAgICAgIFNWR0NsaXBDb250ZW50
ID0gMSA8PCA2LAogICAgICAgICBUb3VjaEV2ZW50ID0gMSA8PCA3LAotICAgICAgICBBbGxvd1No
YWRvd0NvbnRlbnQgPSAxIDw8IDgsCisgICAgICAgIERpc2FsbG93U2hhZG93Q29udGVudCA9IDEg
PDwgOCwKICAgICAgICAgQWxsb3dGcmFtZVNjcm9sbGJhcnMgPSAxIDw8IDksCiAgICAgICAgIEFs
bG93Q2hpbGRGcmFtZUNvbnRlbnQgPSAxIDw8IDEwLAogICAgICAgICBDaGlsZEZyYW1lSGl0VGVz
dCA9IDEgPDwgMTEKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3ZnQ2xpcENv
bnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgU1ZHQ2xpcENvbnRlbnQ7IH0K
ICAgICBib29sIHRvdWNoRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgVG91
Y2hFdmVudDsgfQogICAgIGJvb2wgbW91c2VFdmVudCgpIGNvbnN0IHsgcmV0dXJuICF0b3VjaEV2
ZW50KCk7IH0KLSAgICBib29sIGFsbG93c1NoYWRvd0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBt
X3JlcXVlc3RUeXBlICYgQWxsb3dTaGFkb3dDb250ZW50OyB9CisgICAgYm9vbCBkaXNhbGxvd3NT
aGFkb3dDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIERpc2FsbG93U2hh
ZG93Q29udGVudDsgfQogICAgIGJvb2wgYWxsb3dzRnJhbWVTY3JvbGxiYXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIEFsbG93RnJhbWVTY3JvbGxiYXJzOyB9CiAgICAgYm9vbCBh
bGxvd3NDaGlsZEZyYW1lQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBB
bGxvd0NoaWxkRnJhbWVDb250ZW50OyB9CiAgICAgYm9vbCBpc0NoaWxkRnJhbWVIaXRUZXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIENoaWxkRnJhbWVIaXRUZXN0OyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggYzYzNmY1N2Y5YmQz
Njc4YmMxZDliNjYzOTYyYzQ4Y2E2OTVmMmU1Mi4uNWZmMTljMDdmOGIyYTE0MzAxNWFlZjEwOTM0
Nzk4OThkYWFiZWJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRvUmVj
dEJhc2VkVGVzdFJlc3VsdChOb2RlKiBub2RlLCBjb25zdCBIaXRUZXN0UmVxdWVzCiAgICAgaWYg
KCFub2RlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghcmVxdWVzdC5hbGxvd3NT
aGFkb3dDb250ZW50KCkpCisgICAgaWYgKHJlcXVlc3QuZGlzYWxsb3dzU2hhZG93Q29udGVudCgp
KQogICAgICAgICBub2RlID0gbm9kZS0+ZG9jdW1lbnQoKS0+YW5jZXN0b3JJblRoaXNTY29wZShu
b2RlKTsKIAogICAgIG11dGFibGVSZWN0QmFzZWRUZXN0UmVzdWx0KCkuYWRkKG5vZGUpOwpAQCAt
NTc2LDcgKzU3Niw3IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRvUmVjdEJhc2VkVGVz
dFJlc3VsdChOb2RlKiBub2RlLCBjb25zdCBIaXRUZXN0UmVxdWVzCiAgICAgaWYgKCFub2RlKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghcmVxdWVzdC5hbGxvd3NTaGFkb3dDb250
ZW50KCkpCisgICAgaWYgKHJlcXVlc3QuZGlzYWxsb3dzU2hhZG93Q29udGVudCgpKQogICAgICAg
ICBub2RlID0gbm9kZS0+ZG9jdW1lbnQoKS0+YW5jZXN0b3JJblRoaXNTY29wZShub2RlKTsKIAog
ICAgIG11dGFibGVSZWN0QmFzZWRUZXN0UmVzdWx0KCkuYWRkKG5vZGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCmluZGV4IGJiN2RhZTVjODMxMDAx
NWE0ZmU5ZTQ2Mjg4ODA5ZTc0NjdlNDQ3NDYuLmUyZTFmMGZkZjEyZGM3ZmEwNmZkZTM3NGY1MDEw
NjA4YWMzM2ZiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCBib29sIFJlbmRlckZsb3dUaHJlYWQ6OmhpdFRl
c3RGbG93VGhyZWFkUG9ydGlvbkluUmVnaW9uKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYQogICAg
ICAgICByZW5kZXJGbG93VGhyZWFkT2Zmc2V0ID0gYWNjdW11bGF0ZWRPZmZzZXQgLSBmbG93VGhy
ZWFkUG9ydGlvblJlY3QubG9jYXRpb24oKTsKIAogICAgIC8vIEFsd2F5cyBpZ25vcmUgY2xpcHBp
bmcsIHNpbmNlIHRoZSBSZW5kZXJGbG93VGhyZWFkIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggdGhl
IGJvdW5kcyBvZiB0aGUgRnJhbWVWaWV3LgotICAgIEhpdFRlc3RSZXF1ZXN0IG5ld1JlcXVlc3Qo
cmVxdWVzdC50eXBlKCkgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcpOworICAgIEhp
dFRlc3RSZXF1ZXN0IG5ld1JlcXVlc3QocmVxdWVzdC50eXBlKCkgfCBIaXRUZXN0UmVxdWVzdDo6
SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsK
ICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0KTsKIAogICAgIC8vIE1ha2UgYSBu
ZXcgdGVtcG9yYXJ5IEhpdFRlc3RMb2NhdGlvbiBpbiB0aGUgbmV3IHJlZ2lvbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyLmNwcAppbmRleCA4MjJhNzliYTc1ZjAxZTZhOGM0OWMzODEyY2Y4YTE1MzliYWMyN2IxLi5i
MDg1NWZhM2UyNTA5OGUzMzMzODhlZTFmMjdhZmUyYmJjNjYwMmQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIu
Y3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6Omhp
dFRlc3RDbGlwQ29udGVudChjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW4KICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBJbnRQb2ludCBoaXRQb2ludDsKICAgICAgICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQoaGl0UG9pbnQpOwotICAgICAgICBpZiAocmVuZGVyZXItPm5vZGVBdEZs
b2F0UG9pbnQoSGl0VGVzdFJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlNWR0NsaXBDb250ZW50KSwg
cmVzdWx0LCBwb2ludCwgSGl0VGVzdEZvcmVncm91bmQpKQorICAgICAgICBpZiAocmVuZGVyZXIt
Pm5vZGVBdEZsb2F0UG9pbnQoSGl0VGVzdFJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlNWR0NsaXBD
b250ZW50IHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCksIHJlc3VsdCwg
cG9pbnQsIEhpdFRlc3RGb3JlZ3JvdW5kKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDgzODQyNmRiYzUwY2Fh
Y2JjNjUwYmQxYzkyNjYwNjU1ZDFhMzQ3ODAuLmQyZjI3MjQ2ZmUwNWIyOWZjZmFlZTU2ZWQ0MGI3
OThhYzMxY2RiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE0MjEs
OCArMTQyMSw4IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFsczo6bm9kZXNGcm9tUmVj
dChEb2N1bWVudCogZG9jdW1lbnQsIGludCB4LCBpbnQgeSwKICAgICBIaXRUZXN0UmVxdWVzdDo6
SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBI
aXRUZXN0UmVxdWVzdDo6QWN0aXZlOwogICAgIGlmIChpZ25vcmVDbGlwcGluZykKICAgICAgICAg
aGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmc7Ci0gICAgaWYgKGFsbG93
U2hhZG93Q29udGVudCkKLSAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dT
aGFkb3dDb250ZW50OworICAgIGlmICghYWxsb3dTaGFkb3dDb250ZW50KQorICAgICAgICBoaXRU
eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQ7CiAgICAgaWYgKGFs
bG93Q2hpbGRGcmFtZUNvbnRlbnQpCiAgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6
OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCmluZGV4IGU3Nzc2NGFmZTVkMTlmNjdm
NjIxNmVlZDM4ZGFmODA4MzVlYTliOGMuLmQ5YjE3Y2ZkOTI2N2ViMjA1NThkY2Q4MjRjYzE0YmZi
ZmU3YzVhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRN
ZW51Q2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4
dE1lbnVDbGllbnRJbXBsLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHN0YXRpYyBTdHJpbmcgc2Vs
ZWN0TWlzc3BlbGxlZFdvcmQoY29uc3QgQ29udGV4dE1lbnUqIGRlZmF1bHRNZW51LCBGcmFtZSog
c2VsZWN0CiAKICAgICAvLyBTZWxlY3Rpb24gaXMgZW1wdHksIHNvIGNoYW5nZSB0aGUgc2VsZWN0
aW9uIHRvIHRoZSB3b3JkIHVuZGVyIHRoZSBjdXJzb3IuCiAgICAgSGl0VGVzdFJlc3VsdCBoaXRU
ZXN0UmVzdWx0ID0gc2VsZWN0ZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPgotICAgICAgICBoaXRU
ZXN0UmVzdWx0QXRQb2ludChzZWxlY3RlZEZyYW1lLT5wYWdlKCktPmNvbnRleHRNZW51Q29udHJv
bGxlcigpLT5oaXRUZXN0UmVzdWx0KCkucG9pbnRJbklubmVyTm9kZUZyYW1lKCksIEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVz
dDo6QWxsb3dTaGFkb3dDb250ZW50KTsKKyAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQoc2Vs
ZWN0ZWRGcmFtZS0+cGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+aGl0VGVzdFJlc3Vs
dCgpLnBvaW50SW5Jbm5lck5vZGVGcmFtZSgpLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBI
aXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKICAgICBOb2RlKiBpbm5lck5vZGUgPSBoaXRUZXN0UmVz
dWx0LmlubmVyTm9kZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3MoaW5uZXJOb2RlLT5yZW5k
ZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KAogICAgICAgICBoaXRUZXN0UmVzdWx0LmxvY2FsUG9p
bnQoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194797</attachid>
            <date>2013-03-25 00:59:49 -0700</date>
            <delta_ts>2013-03-26 01:03:30 -0700</delta_ts>
            <desc>Update also Source/WebKit and Source/WebKit2. Let me watch the result of ews.</desc>
            <filename>bug-113171-20130325165533.patch</filename>
            <type>text/plain</type>
            <size>62232</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYwNjg2ZmQzMTAyYjBi
M2FlNjczNjE3ODhjOTdhMjAzNDQyZjU1Ni4uNDEwOTg3ZDkwN2I3MjE4ZDRkMjM4NGVhYzZkYTc1
YTg1NjBjNjc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTAzLTI0ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBTaGFkb3dDb250
ZW50cyBpbiBIaXRUZXN0cyBieSBkZWZhdWx0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzMTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSGl0VGVzdFJlcXVlc3QgaXMgd2lkZWx5IHVzZWQgaW4gV2Vi
Q29yZSwgYnV0IEFsbG93U2hhZG93Q29udGVudHMKKyAgICAgICAgZmxhZyBpcyBub3QgdHVybmVk
IG9uIGJ5IGRlZmF1bHQuICBJbiBtb3N0IHBsYWNlcywgd2UgY2FuIHNldCB0aGUKKyAgICAgICAg
ZmxhZyBvbi4KKworICAgICAgICBUaGlzIGNoYW5nZSBtYWtlcyBIaXRUZXN0cyBhbGxvdyBzaGFk
b3cgY29udGVudHMgYnkgZGVmYXVsdC4KKworICAgICAgICBUbyB0cmFjayBhbGwgZXhpc3Rpbmcg
SGl0VGVzdHMgd2hpY2ggZG8gbm90IGFsbG93IHNoYWRvdyBjb250ZW50cywKKyAgICAgICAgYW5k
IGRpc2NvdXJhZ2Ugc3VjaCBhIEhpdFRlc3QgaW4gdGhlIGZ1dHVyZSwgSSd2ZSBpbnRyb2R1Y2Vk
CisgICAgICAgIGRpc2FsbG93U2hhZG93Q29udGVuZXQgZmxhZyBzbyB0aGF0IGNhbGxlcnMgbXVz
dCB0dXJuIG9uIHRoaXMgZmxhZworICAgICAgICBleHBsaWNpdGx5IGlmIHRoZXkgd2FudCB0byBk
aXNhbGxvdyBzaGFkb3cgY29udGVudHMgaW4gdGhlaXIgSGl0VGVzdHMuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2Ugc2hvdWxkIGJlIHJlZmFjdG9yaW5nIGFuZCBzaG91bGQgbm90IGluY2x1ZGUgYW55
CisgICAgICAgIGJlaGF2aW9yIGNoYW5nZXMuICBBZnRlciB0aGlzIGNoYW5nZSwgd2UnbGwgaW52
ZXN0aWdhdGUgZWFjaCBwbGFjZQorICAgICAgICB3aGVyZSBkaXNhbGxvd1NoYWRvd0NvbnRlbnRz
IGlzIHVzZWQgc3RlcCBieSBzdGVwIGFuZCBnZXQgcmlkIG9mCisgICAgICAgIHRoZSBmbGFnIGlm
IGl0IGlzIG9rYXkgdG8gcmVtb3ZlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVu
dCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2Rl
RnJvbVBvaW50KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpjb250YWlucyk6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbGVtZW50VW5kZXJNb3VzZSk6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y2FuUHJvY2Vzc0RyYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZURyYWdnZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2
ZW50TWF5U3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRl
U2VsZWN0aW9uRm9yTW91c2VEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
Ojppc0luc2lkZVNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVH
ZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0
dXJlTG9uZ1ByZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlR2Vz
dHVyZVNjcm9sbEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YmVzdENs
aWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6YmVzdENvbnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91Y2hQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
ZGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50SWZFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL0V2
ZW50SGFuZGxlci5oOgorICAgICAgICAoRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGb2N1c0NhbmRpZGF0
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lOjp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcGFnZS9Ub3VjaERp
c2FtYmlndWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRHb29kVG91Y2hUYXJnZXRz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXF1ZXN0OjpkaXNhbGxvd3NTaGFkb3dDb250ZW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFk
OjpoaXRUZXN0Rmxvd1RocmVhZFBvcnRpb25JblJlZ2lvbik6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0Q2xpcENvbnRlbnQpOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bm9kZXNG
cm9tUmVjdCk6CisKIDIwMTMtMDMtMjQgIEtvbmRhcGFsbHlLYWx5YW4gIDxrYWx5YW4ua29uZGFw
YWxseUBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gQWRkIHN1cHBvcnQgdG8gY2hlY2sgZm9y
IGN1cnJlbnQgRHJhd2FibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCBjNzJh
NjJiNzdhMTgxZGZlMGM1NjljODYzYjQwNDYwYzdiMDM3NGQyLi5hYmFhMzU4Y2Y5ODE1ZDY0MDVj
MTgxNDYzNTMzOTAwYzMzNTZmNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxMy0wMy0yNSAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgQWxsb3cgU2hhZG93Q29udGVudHMgaW4gSGl0VGVzdHMgYnkgZGVmYXVs
dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzE3
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQXBp
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0
ZTo6aGl0VGVzdFJlc3VsdCk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNw
cDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RmF0RmluZ2Vyczo6Z2V0Tm9kZXNGcm9t
UmVjdCk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9Qcm94aW1pdHlEZXRlY3Rvci5jcHA6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlByb3hpbWl0eURldGVjdG9yOjpmaW5kQmVzdFBv
aW50KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludElnbm9yaW5n
Q2xpcHBpbmcpOgorCiAyMDEzLTAzLTIyICBOaW1hIEdoYW5hdmF0aWFuICA8bmdoYW5hdmF0aWFu
QGJsYWNrYmVycnkuY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBCdWlsZCBmaXggaW4gSW5w
dXRIYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDc0YzczM2ZhOTJiZmY2MGFj
ZGZhYzI2YWI5Y2RmZTg4NWM3YTA1MDUuLmM1YWRlMGYxOTY4ODgxN2EwOGZjMmRkYzBjYmQzNDcw
NzBmYmQ2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MTMtMDMtMjUgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFs
bG93IFNoYWRvd0NvbnRlbnRzIGluIEhpdFRlc3RzIGJ5IGRlZmF1bHQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTMxNzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVu
dEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZWxlY3RNaXNzcGVsbGVkV29yZCk6CisgICAg
ICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1w
bDo6dmlzaWJsZVBvc2l0aW9uRm9yV2luZG93UG9pbnQpOgorICAgICAgICAqIHNyYy9XZWJQbHVn
aW5Db250YWluZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVy
SW1wbDo6aXNSZWN0VG9wbW9zdCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVCbG9ja0JvdW5kcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpiZXN0VGFwTm9kZSk6CisKIDIwMTMtMDMtMjIgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFdp
cmUgd2luZG93cyBzY3JvbGxCeVBhZ2UgZW51bSB1cCB0byBjb21wb3NpdG9yIHRocmVhZCBpbnB1
dCBoYW5kbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGU2Y2UwNGYzM2U5NTVhOTI5MjE3YTM3NmEz
NTY1ODYxYjQ1ZjJhNmUuLmU5MGQ1MjE5Y2I1ZmFjM2E4ZDI5MTFmMzYwMTVkMmM4MjBkNjFkZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMy0yNSAgSGF5YXRvIEl0
byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWxsb3cgU2hhZG93Q29udGVudHMg
aW4gSGl0VGVzdHMgYnkgZGVmYXVsdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMzE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVf
aGl0X3Rlc3RfbmV3KToKKwogMjAxMy0wMy0yMCAgSm9zZSBMZWppbiBQSiAgPGpvc2UubGVqaW5A
Z21haWwuY29tPgogCiAgICAgICAgIGV3a19zZXR0aW5nc19tZW1vcnlfY2FjaGVfY2xlYXIgc2hv
dWxkIGNsZWFyIEpTIGdhcmJhZ2UgYW5kIHJlbGVhc2UgRmFzdE1hbGxvYydzIGZyZWUgcGFnZXMg
dG8gT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA4YWMxZTZhOWE4YTZhODYzNTMwYzcyMDdiN2E0ZDc3
MTk5ZmVkYjYzLi5mZjdjODdhNTZjNGFkOGYzZDMxYzc3MzdlNTJhZjcwM2M1MjBiOWY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDMtMjUgIEhheWF0byBJdG8gIDxo
YXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFsbG93IFNoYWRvd0NvbnRlbnRzIGluIEhp
dFRlc3RzIGJ5IGRlZmF1bHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTMxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwOgorICAgICAgICAod2Vi
a2l0X3dlYl9pbnNwZWN0b3JfaW5zcGVjdF9jb29yZGluYXRlcyk6CisgICAgICAgICogd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAocHJlcGFyZU1vdXNlRXZlbnRGb3JGcmFtZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2hpdF90ZXN0X3Jlc3VsdCk6CisKIDIwMTMt
MDMtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdW1JlZ3Jlc3Npb25dIHdlYmtpdF9kb21faHRtbF90YWJsZV9lbGVtZW50X2luc2Vy
dF9yb3cgcmV0dXJucyB2YWx1ZSB0aGF0IGRvZXNuJ3QgcGFzcyBXRUJLSVRfRE9NX0lTX0hUTUxf
VEFCTEVfUk9XX0VMRU1FTlQgbWFjcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBjYzQyNDJmMWExMmEy
YmQ0YmIwZjg4Nzc4Y2JhOTYyNzdkYjNiY2I4Li45ZTQxYTk5MjBlZjcwNWI0MTZiMDMyZDE1M2Nh
NWU0YzdhNDQzYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMt
MjUgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFsbG93IFNo
YWRvd0NvbnRlbnRzIGluIEhpdFRlc3RzIGJ5IGRlZmF1bHQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTMxNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAg
ICAgICgtW1dlYkZyYW1lIGVsZW1lbnRBdFBvaW50Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
SFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGVsZW1lbnRBdFBvaW50OmFsbG93
U2hhZG93Q29udGVudDpdKToKKwogMjAxMy0wMy0yMSAgS2lyYW4gTXVwcGFsYSAgPGNtdXBwYWxh
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgcnVudGltZSBzZXR0aW5nIGZvciBoaWRkZW4gcGFn
ZSBET00gdGltZXIgdGhyb3R0bGluZyBhbmQgQ1NTIGFuaW1hdGlvbiBzdXNwZW5zaW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCmluZGV4IDVkZDlhNTUzOThmZTJlZWU5N2I1ZGNiYTNkYWQ2MzA4ZDAwNmUyZmEuLmI4
MGZkZGNiNjQ0NmY1NzQ5NWZkNWMxMmVlMzgzMmFmMTM1ZWQ1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTMtMDMtMjUgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIEFsbG93IFNoYWRvd0NvbnRlbnRzIGluIEhpdFRlc3RzIGJ5IGRlZmF1
bHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTMx
NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwOgorICAgICAgICAoUVdlYkZyYW1lQWRh
cHRlcjo6aGl0VGVzdENvbnRlbnQpOgorCiAyMDEzLTAzLTE5ICBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gRW5hYmxlIGtlcm5p
bmcgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDgxMzExYzI1OGYwMjExNjBlMTU2NjY2
MzgwMzBhZWI0Nzc0NDcwZmEuLjkyOTc2NWNhNjI4NTI4OTRhYjNhNzliMDFjYzg5NGU3Y2NiYTA2
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMy0yNSAgSGF5YXRv
IEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWxsb3cgU2hhZG93Q29udGVu
dHMgaW4gSGl0VGVzdHMgYnkgZGVmYXVsdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMzE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpnZXN0
dXJlTm90aWZ5KToKKwogMjAxMy0wMy0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBUaGUgc2Vjb25kIHBhcnQgb2YgdGhlIGJ1aWxkIGZpeCBmb3IgcjE0Njcw
Mi4gVGhpcyBzaG91bGQgZG8gaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTQ2ZmU2MjllNGIxYjliOWVjZjhl
NzVlZWZiYTlmZmE0NzI2MDQxYS4uZGQ3MDRkYzQ5M2VmYTJmNWRjM2MxNjhjZjQxZjZhMzY0NDg1
YmM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTAzLTI1ICBIYXlhdG8gSXRv
ICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBTaGFkb3dDb250ZW50cyBp
biBIaXRUZXN0cyBieSBkZWZhdWx0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEzMTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZTo6aGl0VGVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoaWdobGlnaHRQb3Rl
bnRpYWxBY3RpdmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZmluZFpvb21hYmxl
QXJlYUZvclBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFy
eVNuYXBzaG90dGVkUGx1Z0luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNob3VsZERlbGF5V2luZG93
T3JkZXJpbmdFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFjY2VwdHNGaXJzdE1v
dXNlKToKKwogMjAxMy0wMy0yMyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZGVkIGEgc2V0dGluZyBmb3Igd2hldGhlciBKYXZhU2NyaXB0IG1hcmt1cCBp
cyBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDA1ZTdjNjk0NzkxYWVmNDhjYzc4ZTIx
Zjc2NDI4NWRmZDJjYTViNmIuLjhhNDEwZjUyZDMwZThlNTRkNjVkZTE4Yzk1M2ZmMWU1YTU3MGVi
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNzEsOCArMzcxLDggQEAgcHVibGljOgogICAg
ICAqIEBwYXJhbSBsZWZ0UGFkZGluZyBIb3cgbXVjaCB0byBleHBhbmQgdGhlIGxlZnQgb2YgdGhl
IHJlY3RhbmdsZQogICAgICAqLwogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJl
Y3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1
bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVz
dFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCBy
aWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5n
LAorICAgICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVz
dFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCkgY29uc3Q7CiAgICAgRWxlbWVudCogZWxl
bWVudEZyb21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+
IGNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmNwcAppbmRleCAzODA5ZDVkN2UwMmRiOWU2ODQyZTFkYWE0MGFhODhiNDFjYjY1NGYxLi40MDkw
M2UwMzk5NDY4MTI1Mzg3ZThiNjEzZDhlNDBkNmRmY2IwNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIE5vZGUqIG5vZGVGcm9tUG9pbnQoRG9jdW1lbnQq
IGRvY3VtZW50LCBpbnQgeCwgaW50IHksIExheW91dFBvaW50KiBsb2NhbFBvaW50KQogICAgIGlm
ICghZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5jb250YWlucyhwb2ludCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3Rp
dmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdChwb2ludCk7CiAgICAgZG9jdW1lbnQtPnJlbmRlclZpZXcoKS0+aGl0VGVz
dChyZXF1ZXN0LCByZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwCmluZGV4IGYwMjY4M2ExY2FiMWRhMzA0MTU1NzZmNTY5ZWJkNjEwOTY1NjRhYmMuLmNi
N2NjMzMyYWE0MWU4NzNiMGQwMzMwODJmZTEwZWM3N2QyMzcxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNTQyLDggKzE1NDIsNyBAQCBib29sIEZy
YW1lU2VsZWN0aW9uOjpjb250YWlucyhjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgaWYg
KCFkb2N1bWVudC0+cmVuZGVyZXIoKSkgCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAgICBIaXRU
ZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7CiAgICAgZG9jdW1lbnQtPnJlbmRlclZpZXco
KS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIE5vZGUqIGlubmVyTm9kZSA9IHJlc3Vs
dC5pbm5lck5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXgg
MDQwNDU5NDBmMzVmY2ZkYzY4ZmVjODUyOTBkYzA4YzUzZjk3ZWVjNi4uY2M2NDYzZTFiNTZiMDBi
MDUzNjkxMzIxYjMwZWQzMmM1NjA2OTNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKQEAgLTI5Nyw3ICsyOTcsNyBAQCBzdGF0aWMgRWxlbWVudCogZWxlbWVudFVuZGVy
TW91c2UoRG9jdW1lbnQqIGRvY3VtZW50VW5kZXJNb3VzZSwgY29uc3QgSW50UG9pbnQmCiAgICAg
ZmxvYXQgem9vbUZhY3RvciA9IGZyYW1lID8gZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkgOiAxOwog
ICAgIExheW91dFBvaW50IHBvaW50ID0gcm91bmRlZExheW91dFBvaW50KEZsb2F0UG9pbnQocC54
KCkgKiB6b29tRmFjdG9yLCBwLnkoKSAqIHpvb21GYWN0b3IpKTsKIAotICAgIEhpdFRlc3RSZXF1
ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZSk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hh
ZG93Q29udGVudCk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQpOwogICAgIGRvY3Vt
ZW50VW5kZXJNb3VzZS0+cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAK
QEAgLTU2Myw3ICs1NjMsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpjYW5Qcm9jZXNzRHJhZyhE
cmFnRGF0YSogZHJhZ0RhdGEpCiAgICAgaWYgKCFtX3BhZ2UtPm1haW5GcmFtZSgpLT5jb250ZW50
UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmVzdWx0ID0gbV9wYWdl
LT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50
LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0
VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7CisgICAgcmVzdWx0ID0gbV9wYWdlLT5t
YWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKIAogICAg
IGlmICghcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC03NDcsNyArNzQ3LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1l
KiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICBpZiAoIXNy
Yy0+dmlldygpIHx8ICFzcmMtPmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBzcmMtPmV2ZW50SGFuZGxl
cigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkcmFnT3JpZ2luLCBIaXRUZXN0UmVxdWVzdDo6UmVh
ZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hh
ZG93Q29udGVudCk7CisgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gc3JjLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZHJhZ09yaWdpbiwgSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CiAgICAgaWYgKCFzdGF0ZS5t
X2RyYWdTcmMtPmNvbnRhaW5zKGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkpKQogICAgICAgICAv
LyBUaGUgb3JpZ2luYWwgbm9kZSBiZWluZyBkcmFnZ2VkIGlzbid0IHVuZGVyIHRoZSBkcmFnIG9y
aWdpbiBhbnltb3JlLi4uIG1heWJlIGl0IHdhcwogICAgICAgICAvLyBoaWRkZW4gb3IgbW92ZWQg
b3V0IGZyb20gdW5kZXIgdGhlIGN1cnNvci4gUmVnYXJkbGVzcywgd2UgZG9uJ3Qgd2FudCB0byBz
dGFydCBhIGRyYWcgb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBhZjAz
NzI5ZTJmOWI3YzVmZTgwNjVlOWEzNjM1ODg5YjJmNjBjYTVhLi5hMTAyODk1NTNkMTBiMjE1Njcw
YWE5NjI2NzI0MjhhOGJlM2UwNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CkBAIC03MzgsNyArNzM4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dl
ZEV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGUKICAgICB9CiAKICAg
ICBpZiAobV9zZWxlY3Rpb25Jbml0aWF0aW9uU3RhdGUgIT0gRXh0ZW5kZWRTZWxlY3Rpb24pIHsK
LSAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkg
fCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVz
dChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0
VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0KG1fbW91c2VEb3duUG9zKTsKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAKQEAgLTc2OSw3ICs3Njks
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdXBk
YXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCk7Ci0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVz
dChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3Qo
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93
Q29udGVudCk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50
cyhldmVudC5wb3NpdGlvbigpKSk7CiAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhp
dFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICBEcmFnU3RhdGUgc3RhdGU7CkBAIC03ODUsOSAr
Nzg1LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygp
CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgSGl0VGVzdFJlcXVl
c3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBIaXRUZXN0UmVxdWVzdDo6TW92ZSk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVz
dFJlcXVlc3Q6Ok1vdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsK
ICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtu
b3duTW91c2VQb3NpdGlvbikpOwogICAgIHJlbmRlcmVyLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3Vs
dCk7CiAgICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKHJlc3VsdCk7CkBAIC0xMDQyLDcg
KzEwNDAsNyBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9p
bnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBIaXRUZQogICAgIGlmICghcmVxdWVzdC5yZWFk
T25seSgpKQogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVIb3ZlckFjdGl2ZVN0
YXRlKHJlcXVlc3QsIHJlc3VsdC5pbm5lckVsZW1lbnQoKSk7CiAKLSAgICBpZiAoIXJlcXVlc3Qu
YWxsb3dzU2hhZG93Q29udGVudCgpKQorICAgIGlmIChyZXF1ZXN0LmRpc2FsbG93c1NoYWRvd0Nv
bnRlbnQoKSkKICAgICAgICAgcmVzdWx0LnNldFRvTm9uU2hhZG93QW5jZXN0b3IoKTsKIAogICAg
IHJldHVybiByZXN1bHQ7CkBAIC0xNDc4LDcgKzE0NzYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVu
dCkKICAgICB9CiAgICAgbV9tb3VzZURvd25XYXNJblN1YmZyYW1lID0gZmFsc2U7CiAKLSAgICBI
aXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAgIEhpdFRl
c3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0
OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIC8vIFNhdmUgdGhlIGRvY3VtZW50IHBvaW50
IHdlIGdlbmVyYXRlIGluIGNhc2UgdGhlIHdpbmRvdyBjb29yZGluYXRlIGlzIGludmFsaWRhdGVk
IGJ5IHdoYXQgaGFwcGVucwogICAgIC8vIHdoZW4gd2UgZGlzcGF0Y2ggdGhlIGV2ZW50LgogICAg
IExheW91dFBvaW50IGRvY3VtZW50UG9pbnQgPSBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9pbnQo
bV9mcmFtZSwgbW91c2VFdmVudC5wb3NpdGlvbigpKTsKQEAgLTE1NDEsNyArMTUzOSw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgIC8vIGluIGNhc2UgdGhlIHNjcm9sbGJhciB3aWRnZXQg
d2FzIGRlc3Ryb3llZCB3aGVuIHRoZSBtb3VzZSBldmVudCB3YXMgaGFuZGxlZC4KICAgICBpZiAo
bWV2LnNjcm9sbGJhcigpKSB7CiAgICAgICAgIGNvbnN0IGJvb2wgd2FzTGFzdFNjcm9sbEJhciA9
IG1ldi5zY3JvbGxiYXIoKSA9PSBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLmdldCgpOwotICAg
ICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0
UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAgICAgbWV2ID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgZG9jdW1lbnRQb2ludCwgbW91
c2VFdmVudCk7CiAgICAgICAgIGlmICh3YXNMYXN0U2Nyb2xsQmFyICYmIG1ldi5zY3JvbGxiYXIo
KSAhPSBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLmdldCgpKQogICAgICAgICAgICAgbV9sYXN0
U2Nyb2xsYmFyVW5kZXJNb3VzZSA9IDA7CkBAIC0xNTYxLDcgKzE1NTksNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
bW91c2VFdmVudCkKICAgICAgICAgLy8gd2UnZCBsaWtlIHRvIEV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VQcmVzc0V2ZW50IHRvIHBhc3MgdGhlIGV2ZW50IHRvIHRoZSB3aWRnZXQgYW5kIHRodXMg
dGhlCiAgICAgICAgIC8vIGV2ZW50IHRhcmdldCBub2RlIGNhbid0IHN0aWxsIGJlIHRoZSBzaGFk
b3cgbm9kZS4KICAgICAgICAgaWYgKG1ldi50YXJnZXROb2RlKCktPmlzU2hhZG93Um9vdCgpICYm
IHRvU2hhZG93Um9vdChtZXYudGFyZ2V0Tm9kZSgpKS0+aG9zdCgpLT5oYXNUYWdOYW1lKGlucHV0
VGFnKSkgewotICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAgICAgICAgICAgIEhpdFRl
c3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVl
c3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAg
ICAgICAgICAgbWV2ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVx
dWVzdCwgZG9jdW1lbnRQb2ludCwgbW91c2VFdmVudCk7CiAgICAgICAgIH0KIApAQCAtMTU5NCw3
ICsxNTkyLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRG91YmxlQ2xpY2tFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXYKICAgICBtX21vdXNlUHJlc3NlZCA9
IGZhbHNlOwogICAgIHNldExhc3RLbm93bk1vdXNlUG9zaXRpb24obW91c2VFdmVudCk7CiAKLSAg
ICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAgIEhp
dFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1
ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgbW91c2VFdmVudCk7CiAgICAg
RnJhbWUqIHN1YmZyYW1lID0gc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1ldik7CiAgICAgaWYg
KG1fZXZlbnRIYW5kbGVyV2lsbFJlc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKQpAQCAtMTcw
Niw3ICsxNzA0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCwgSGkKICAgICBpZiAobV9sYXN0U2Ny
b2xsYmFyVW5kZXJNb3VzZSAmJiBtX21vdXNlUHJlc3NlZCkKICAgICAgICAgcmV0dXJuIG1fbGFz
dFNjcm9sbGJhclVuZGVyTW91c2UtPm1vdXNlTW92ZWQobW91c2VFdmVudCk7CiAKLSAgICBIaXRU
ZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6
TW92ZTsKKyAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBI
aXRUZXN0UmVxdWVzdDo6TW92ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRl
bnQ7CiAgICAgaWYgKG1fbW91c2VQcmVzc2VkKQogICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmU7CiAgICAgZWxzZSBpZiAob25seVVwZGF0ZVNjcm9sbGJhcnMpIHsKQEAg
LTE4NTksNyArMTg1Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VF
dmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgICAgIHJldHVy
biAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQsIG1fbGFzdE5v
ZGVVbmRlck1vdXNlLmdldCgpLCBjYW5jZWxhYmxlLCBtX2NsaWNrQ291bnQsIG1vdXNlRXZlbnQs
IHNldFVuZGVyKTsKICAgICB9CiAKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RS
ZXF1ZXN0OjpSZWxlYXNlKTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1
ZXN0OjpSZWxlYXNlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAg
ICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChy
ZXF1ZXN0LCBtb3VzZUV2ZW50KTsKICAgICBGcmFtZSogc3ViZnJhbWUgPSBtX2NhcHR1cmluZ01v
dXNlRXZlbnRzTm9kZS5nZXQoKSA/IHN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShtX2NhcHR1cmluZ01v
dXNlRXZlbnRzTm9kZS5nZXQoKSkgOiBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQobWV2KTsKICAg
ICBpZiAobV9ldmVudEhhbmRsZXJXaWxsUmVzZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUpCkBA
IC0yMDA4LDcgKzIwMDYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3Ao
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKgogICAgIGlmICghbV9m
cmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CisgICAgSGl0VGVzdFJlcXVlc3Qg
cmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxs
b3dTaGFkb3dDb250ZW50KTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9
IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGV2ZW50KTsKIAogICAgIC8vIERyYWcgZXZlbnRz
IHNob3VsZCBuZXZlciBnbyB0byB0ZXh0IG5vZGVzIChmb2xsb3dpbmcgSUUsIGFuZCBwcm9wZXIg
bW91c2VvdmVyL291dCBkaXNwYXRjaCkKQEAgLTIzMjEsNyArMjMxOSw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IE5vZGUqIHRhcmdlCiBib29sIEV2ZW50SGFuZGxlcjo6aXNJbnNpZGVTY3JvbGxiYXIoY29uc3Qg
SW50UG9pbnQmIHdpbmRvd1BvaW50KSBjb25zdAogewogICAgIGlmIChSZW5kZXJWaWV3KiByZW5k
ZXJWaWV3ID0gbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpIHsKLSAgICAgICAgSGl0VGVzdFJl
cXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOworICAgICAgICBIaXRUZXN0
UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0
OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh3
aW5kb3dQb2ludCk7CiAgICAgICAgIHJlbmRlclZpZXctPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5zY3JvbGxiYXIoKTsKQEAgLTIzNTMsNyArMjM1MSw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYgZSkKICAgICBzZXRGcmFtZVdhc1Njcm9sbGVkQnlVc2VyKCk7CiAgICAgTGF5b3V0
UG9pbnQgdlBvaW50ID0gdmlldy0+d2luZG93VG9Db250ZW50cyhlLnBvc2l0aW9uKCkpOwogCi0g
ICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOworICAg
IEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVz
dFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQodlBvaW50KTsKICAgICBkb2MtPnJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1
bHQpOwogCkBAIC0yNDY0LDcgKzI0NjIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2Vz
dHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiAgICAg
fQogCiAgICAgSW50UG9pbnQgYWRqdXN0ZWRQb2ludCA9IGdlc3R1cmVFdmVudC5wb3NpdGlvbigp
OwotICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRl
c3RSZXF1ZXN0OjpUb3VjaEV2ZW50IHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVu
dDsKKyAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRU
ZXN0UmVxdWVzdDo6VG91Y2hFdmVudDsKICAgICBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwRG93bikgewogI2lmIEVOQUJMRShUT1VDSF9BREpVU1RN
RU5UKQogICAgICAgICBhZGp1c3RHZXN0dXJlUG9zaXRpb24oZ2VzdHVyZUV2ZW50LCBhZGp1c3Rl
ZFBvaW50KTsKQEAgLTI1OTYsNyArMjU5NCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVH
ZXN0dXJlTG9uZ1ByZXNzKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlCiAg
ICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZURvd25FdmVudChhZGp1c3RlZFBvaW50LCBn
ZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6
TW91c2VQcmVzc2VkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV1RGOjpjdXJyZW50
VGltZSgpKTsKICAgICAgICAgaGFuZGxlTW91c2VQcmVzc0V2ZW50KG1vdXNlRG93bkV2ZW50KTsK
ICAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRHJhZ0V2ZW50KGFkanVzdGVkUG9pbnQs
IGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50
OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV1RGOjpjdXJyZW50
VGltZSgpKTsKLSAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHkpOworICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0
OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAg
ICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50
KHJlcXVlc3QsIG1vdXNlRHJhZ0V2ZW50KTsKICAgICAgICAgbV9kaWRTdGFydERyYWcgPSBmYWxz
ZTsKICAgICAgICAgUmVmUHRyPEZyYW1lPiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9ySGl0VGVzdFJl
c3VsdChtZXYpOwpAQCAtMjY3OCw3ICsyNjc2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZUdlc3R1cmVTY3JvbGxCZWdpbihjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUUK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTGF5b3V0UG9pbnQgdmlld1BvaW50ID0gdmll
dy0+d2luZG93VG9Db250ZW50cyhnZXN0dXJlRXZlbnQucG9zaXRpb24oKSk7Ci0gICAgSGl0VGVz
dFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOworICAgIEhpdFRlc3RS
ZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6
OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlld1Bv
aW50KTsKICAgICBkb2N1bWVudC0+cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3Vs
dCk7CiAKQEAgLTI3ODgsNyArMjc4Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpzaG91bGRBcHBs
eVRvdWNoQWRqdXN0bWVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZXZlbnQpCiBib29s
IEV2ZW50SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0IEludFBv
aW50JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFBvaW50JiB0
YXJnZXRQb2ludCwgTm9kZSomIHRhcmdldE5vZGUpCiB7CiAgICAgSW50UG9pbnQgaGl0VGVzdFBv
aW50ID0gbV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHRvdWNoQ2VudGVyKTsKLSAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2lu
dCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhp
dFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQsIHRvdWNoUmFkaXVzKTsKKyAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgdG91Y2hSYWRp
dXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJlY3QodG91Y2hDZW50ZXIgLSB0b3VjaFJhZGl1cywg
dG91Y2hSYWRpdXMgKyB0b3VjaFJhZGl1cyk7CiAgICAgUmVmUHRyPFN0YXRpY0hhc2hTZXROb2Rl
TGlzdD4gbm9kZUxpc3QgPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0
QmFzZWRUZXN0UmVzdWx0KCkpOwpAQCAtMjgwNiw3ICsyODA0LDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hD
ZW50ZXIsIGMKIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQ
b2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRvdWNoUmFk
aXVzLCBJbnRQb2ludCYgdGFyZ2V0UG9pbnQsIE5vZGUqJiB0YXJnZXROb2RlKQogewogICAgIElu
dFBvaW50IGhpdFRlc3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh0
b3VjaENlbnRlcik7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQ
b2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50LCB0b3VjaFJh
ZGl1cyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludCho
aXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpB
Y3RpdmUsIHRvdWNoUmFkaXVzKTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVy
IC0gdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsgdG91Y2hSYWRpdXMpOwogICAgIFJlZlB0cjxT
dGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0Ojph
ZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKQEAgLTI4MTYsNyArMjgxNCw3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2ludChjb25z
dCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsCiBib29sIEV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxl
QXJlYUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25zdCBJbnRT
aXplJiB0b3VjaFJhZGl1cywgSW50UmVjdCYgdGFyZ2V0QXJlYSwgTm9kZSomIHRhcmdldE5vZGUp
CiB7CiAgICAgSW50UG9pbnQgaGl0VGVzdFBvaW50ID0gbV9mcmFtZS0+dmlldygpLT53aW5kb3dU
b0NvbnRlbnRzKHRvdWNoQ2VudGVyKTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRl
c3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwg
SGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgdG91Y2hSYWRpdXMpOworICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRp
c2FsbG93U2hhZG93Q29udGVudCwgdG91Y2hSYWRpdXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJl
Y3QodG91Y2hDZW50ZXIgLSB0b3VjaFJhZGl1cywgdG91Y2hSYWRpdXMgKyB0b3VjaFJhZGl1cyk7
CiAgICAgUmVmUHRyPFN0YXRpY0hhc2hTZXROb2RlTGlzdD4gbm9kZUxpc3QgPSBTdGF0aWNIYXNo
U2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwpAQCAtMjg1
OSw3ICsyODU3LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxz
ZTsKICAgICBib29sIHN3YWxsb3dFdmVudDsKICAgICBMYXlvdXRQb2ludCB2aWV3cG9ydFBvcyA9
IHYtPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSk7Ci0gICAgSGl0VGVzdFJlcXVl
c3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAgICBIaXRUZXN0UmVxdWVzdCBy
ZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dT
aGFkb3dDb250ZW50KTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IGRv
Yy0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgdmlld3BvcnRQb3MsIGV2ZW50KTsKIAogICAg
IGlmIChtX2ZyYW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RPbkNvbnRleHR1
YWxNZW51Q2xpY2soKQpAQCAtMjkzNiw3ICsyOTM0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNl
bmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KCkKICAgICAvLyBVc2UgdGhlIGZvY3VzZWQgbm9kZSBh
cyB0aGUgdGFyZ2V0IGZvciBob3ZlciBhbmQgYWN0aXZlLgogICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0KHBvc2l0aW9uKTsKICAgICByZXN1bHQuc2V0SW5uZXJOb2RlKHRhcmdldE5vZGUpOwotICAg
IGRvYy0+dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCByZXN1
bHQuaW5uZXJFbGVtZW50KCkpOworICAgIGRvYy0+dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShIaXRU
ZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVu
dCwgcmVzdWx0LmlubmVyRWxlbWVudCgpKTsKIAogICAgIC8vIFRoZSBjb250ZXh0bWVudSBldmVu
dCBpcyBhIG1vdXNlIGV2ZW50IGV2ZW4gd2hlbiBpbnZva2VkIHVzaW5nIHRoZSBrZXlib2FyZC4K
ICAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KQEAgLTMwNzAs
NyArMzA2OCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQoVGltZXI8RXZl
bnRIYW5kbGVyPiopCiAKICAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyZXIgPSBtX2ZyYW1lLT5j
b250ZW50UmVuZGVyZXIoKSkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFt
ZS0+dmlldygpKSB7Ci0gICAgICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RS
ZXF1ZXN0OjpNb3ZlKTsKKyAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVz
dFJlcXVlc3Q6Ok1vdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsK
ICAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMo
bV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7CiAgICAgICAgICAgICByZW5kZXJlci0+aGl0VGVz
dChyZXF1ZXN0LCByZXN1bHQpOwogICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBk
YXRlSG92ZXJBY3RpdmVTdGF0ZShyZXF1ZXN0LCByZXN1bHQuaW5uZXJFbGVtZW50KCkpOwpAQCAt
MzM3Nyw3ICszMzc1LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmZyZWVDbGlwYm9hcmQoKQogdm9p
ZCBFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZlbnQsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQogewogICAgIC8vIFNlbmQgYSBoaXQg
dGVzdCByZXF1ZXN0IHNvIHRoYXQgUmVuZGVyTGF5ZXIgZ2V0cyBhIGNoYW5jZSB0byB1cGRhdGUg
dGhlIDpob3ZlciBhbmQgOmFjdGl2ZSBwc2V1ZG9jbGFzc2VzLgotICAgIEhpdFRlc3RSZXF1ZXN0
IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlbGVhc2UpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJl
cXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlbGVhc2UgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dT
aGFkb3dDb250ZW50KTsKICAgICBwcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBldmVudCk7CiAK
ICAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLnNob3VsZERpc3Bh
dGNoRXZlbnRzKCkpIHsKQEAgLTM0MzAsNyArMzQyOCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVj
a0RyCiAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZXZlbnREaXNwYXRjaFBvbGljeSA9ICh1cGRhdGVE
cmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKSAmIERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgPyBEcmFn
U3RhdGU6OkRpc3BhdGNoRXZlbnRzOiBEcmFnU3RhdGU6OkRvTm90RGlzcGF0Y2hFdmVudHM7CiAK
ICAgICAgICAgLy8gdHJ5IHRvIGZpbmQgYW4gZWxlbWVudCB0aGF0IHdhbnRzIHRvIGJlIGRyYWdn
ZWQKLSAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHkpOworICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFk
T25seSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgICAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdChtX21vdXNlRG93blBvcyk7CiAgICAgICAgIG1fZnJhbWUtPmNv
bnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgICAgIE5vZGUq
IG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CkBAIC0zOTA2LDcgKzM5MDQsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2
ZW50KQogICAgICAgICBpZiAocG9pbnRTdGF0ZSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
UHJlc3NlZCkgewogICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQ7CiAgICAgICAgICAg
ICBpZiAoZnJlc2hUb3VjaEV2ZW50cykgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGhpdFRl
c3RSZXN1bHRBdFBvaW50KHBhZ2VQb2ludCwgaGl0VHlwZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxv
d1NoYWRvd0NvbnRlbnQpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRB
dFBvaW50KHBhZ2VQb2ludCwgaGl0VHlwZSk7CiAgICAgICAgICAgICAgICAgbV9vcmlnaW5hdGlu
Z1RvdWNoUG9pbnRUYXJnZXRLZXkgPSB0b3VjaFBvaW50VGFyZ2V0S2V5OwogICAgICAgICAgICAg
fSBlbHNlIGlmIChtX29yaWdpbmF0aW5nVG91Y2hQb2ludERvY3VtZW50LmdldCgpICYmIG1fb3Jp
Z2luYXRpbmdUb3VjaFBvaW50RG9jdW1lbnQtPmZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBM
YXlvdXRQb2ludCBwYWdlUG9pbnRJbk9yaWdpbmF0aW5nRG9jdW1lbnQgPSBkb2N1bWVudFBvaW50
Rm9yV2luZG93UG9pbnQobV9vcmlnaW5hdGluZ1RvdWNoUG9pbnREb2N1bWVudC0+ZnJhbWUoKSwg
cG9pbnQucG9zKCkpOwpAQCAtMzk0MCw3ICszOTM4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAg
fSBlbHNlIGlmIChwb2ludFN0YXRlID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNl
ZCB8fCBwb2ludFN0YXRlID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQpIHsK
ICAgICAgICAgICAgIC8vIFdlIG9ubHkgcGVyZm9ybSBhIGhpdHRlc3Qgb24gcmVsZWFzZSBvciBj
YW5jZWwgdG8gdW5zZXQgOmFjdGl2ZSBvciA6aG92ZXIgc3RhdGUuCiAgICAgICAgICAgICBpZiAo
dG91Y2hQb2ludFRhcmdldEtleSA9PSBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldEtleSkg
ewotICAgICAgICAgICAgICAgIGhpdFRlc3RSZXN1bHRBdFBvaW50KHBhZ2VQb2ludCwgaGl0VHlw
ZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOworICAgICAgICAgICAgICAg
IGhpdFRlc3RSZXN1bHRBdFBvaW50KHBhZ2VQb2ludCwgaGl0VHlwZSk7CiAgICAgICAgICAgICAg
ICAgbV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRLZXkgPSAwOwogICAgICAgICAgICAgfSBl
bHNlIGlmIChtX29yaWdpbmF0aW5nVG91Y2hQb2ludERvY3VtZW50LmdldCgpICYmIG1fb3JpZ2lu
YXRpbmdUb3VjaFBvaW50RG9jdW1lbnQtPmZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBMYXlv
dXRQb2ludCBwYWdlUG9pbnRJbk9yaWdpbmF0aW5nRG9jdW1lbnQgPSBkb2N1bWVudFBvaW50Rm9y
V2luZG93UG9pbnQobV9vcmlnaW5hdGluZ1RvdWNoUG9pbnREb2N1bWVudC0+ZnJhbWUoKSwgcG9p
bnQucG9zKCkpOwpAQCAtNDA0OCw3ICs0MDQ2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3Bh
dGNoU3ludGhldGljVG91Y2hFdmVudElmRW5hYmxlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQK
ICAgICBpZiAoZXZlbnRUeXBlICE9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgJiYgZXZlbnRU
eXBlICE9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCAmJiBldmVudFR5cGUgIT0gUGxhdGZv
cm1FdmVudDo6TW91c2VSZWxlYXNlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSGl0
VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAgICBIaXRUZXN0
UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6
RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
IG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGV2ZW50KTsKICAgICBpZiAobWV2LnNj
cm9sbGJhcigpIHx8IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChtZXYpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAzYjVjMzFhNGQ0ZWQz
NmMwMGRmNWU5MGYxOTkyMDgwODhiYWQwNjc3Li5jN2VkNzkzNTRlZWU2MDIxODY1NDJiYjRjMzgz
NzZkY2YzNTM1NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTEzMSw4ICsx
MzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb25J
blF1YWQoY29uc3QgRmxvYXRRdWFkJik7CiAKICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1
bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9
IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRTaXplJiBwYWRk
aW5nID0gTGF5b3V0U2l6ZSgpKTsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1
ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVl
c3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQsCisgICAg
ICAgIGNvbnN0IExheW91dFNpemUmIHBhZGRpbmcgPSBMYXlvdXRTaXplKCkpOwogCiAgICAgYm9v
bCBtb3VzZVByZXNzZWQoKSBjb25zdCB7IHJldHVybiBtX21vdXNlUHJlc3NlZDsgfQogICAgIHZv
aWQgc2V0TW91c2VQcmVzc2VkKGJvb2wgcHJlc3NlZCkgeyBtX21vdXNlUHJlc3NlZCA9IHByZXNz
ZWQ7IH0KQEAgLTI5OCw3ICsyOTgsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKICAgICBib29sIGRpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudElmRW5hYmxlZChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRJ
bkZyYW1lKEZyYW1lKiwgY29uc3QgTGF5b3V0UG9pbnQmLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVz
dFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0
UmVxdWVzdDo6QWN0aXZlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRJbkZyYW1l
KEZyYW1lKiwgY29uc3QgTGF5b3V0UG9pbnQmLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVl
c3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAjZW5k
aWYKIAogICAgIHZvaWQgaW52YWxpZGF0ZUNsaWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHAKaW5kZXggN2VmNmZjNjFjZmM4YjVjMGFkNTYyYTNmNDVkNDU5OGE3ZWYy
OWY0OS4uYWFmYzMzY2U0OGU3MWMzNGE0YTA1ZTdlZWNkNmFmYWRiZjllZWVjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtNzIxLDcgKzcyMSw3IEBAIHN0YXRp
YyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQoRm9jdXNEaXJlY3Rpb24gZGlyZWN0
aW9uLCBjb25zdCBGb2N1c0NhCiAgICAgICAgIC8vIElmIDIgbm9kZXMgYXJlIGludGVyc2VjdGlu
ZywgZG8gaGl0IHRlc3QgdG8gZmluZCB3aGljaCBub2RlIGluIG9uIHRvcC4KICAgICAgICAgTGF5
b3V0VW5pdCB4ID0gaW50ZXJzZWN0aW9uUmVjdC54KCkgKyBpbnRlcnNlY3Rpb25SZWN0LndpZHRo
KCkgLyAyOwogICAgICAgICBMYXlvdXRVbml0IHkgPSBpbnRlcnNlY3Rpb25SZWN0LnkoKSArIGlu
dGVyc2VjdGlvblJlY3QuaGVpZ2h0KCkgLyAyOwotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IGNhbmRpZGF0ZS52aXNpYmxlTm9kZS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KEludFBvaW50KHgsIHkpLCBI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVz
dFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBjYW5kaWRhdGUudmlzaWJsZU5vZGUtPmRvY3VtZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCkt
PmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChJbnRQb2ludCh4LCB5KSwgSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RS
ZXF1ZXN0OjpJZ25vcmVDbGlwcGluZyB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0Nv
bnRlbnQpOwogICAgICAgICBpZiAoY2FuZGlkYXRlLnZpc2libGVOb2RlLT5jb250YWlucyhyZXN1
bHQuaW5uZXJOb2RlKCkpKSB7CiAgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwogICAg
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAyOGZkZTQ5MDQ3OWUxMjgx
ZGYwYjMwNGJhN2IzOWZlMTM4MzQ1YzI4Li5hYTZjNTFkZThmOGRjMTQ1ODYwODhjN2Q0MjFjNWMx
YzUxOTA3ODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNzI3LDcgKzcyNyw3IEBAIFN0cmlu
ZyBGcmFtZTo6ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhjb25zdCBTdHJpbmcmIHN0
cikgY29uc3QKIAogVmlzaWJsZVBvc2l0aW9uIEZyYW1lOjp2aXNpYmxlUG9zaXRpb25Gb3JQb2lu
dChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCkKIHsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IGV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZVBvaW50LCBIaXRU
ZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJl
cXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBl
dmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWVQb2ludCwgSGl0VGVzdFJl
cXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CiAgICAgTm9kZSogbm9k
ZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVG91Y2hEaXNhbWJpZ3VhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoRGlz
YW1iaWd1YXRpb24uY3BwCmluZGV4IDA4YjM1MzhjYjZjZWI5MWQwMTMwOWMzMThmN2M5NmMyNWRi
NjA4MDkuLjZlMmJmZDJiNzU2NTkxZTExZGY1NTlmYTc4ZTgzZmUzYTgzNjg2ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hEaXNhbWJpZ3VhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaERpc2FtYmlndWF0aW9uLmNwcApAQCAtOTgsNyArOTgsNyBA
QCB2b2lkIGZpbmRHb29kVG91Y2hUYXJnZXRzKGNvbnN0IEludFJlY3QmIHRvdWNoQm94LCBGcmFt
ZSogbWFpbkZyYW1lLCBWZWN0b3I8SW50UgogICAgIEludFBvaW50IHRvdWNoUG9pbnQgPSB0b3Vj
aEJveC5jZW50ZXIoKTsKICAgICBJbnRQb2ludCBjb250ZW50c1BvaW50ID0gbWFpbkZyYW1lLT52
aWV3KCktPndpbmRvd1RvQ29udGVudHModG91Y2hQb2ludCk7CiAKLSAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50
KGNvbnRlbnRzUG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUsIEludFNpemUocGFkZGluZywgcGFkZGluZykpOworICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
Y29udGVudHNQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6
OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQsIEludFNpemUo
cGFkZGluZywgcGFkZGluZykpOwogICAgIGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+
JiBoaXRSZXN1bHRzID0gcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKTsKIAogICAgIC8vIEJs
YWNrbGlzdCBub2RlcyB0aGF0IGFyZSBjb250YWluZXIgb2YgZGlzYW1iaWd1YXRlZCBub2Rlcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKaW5kZXggMjJlNWQzNzZj
OGI4NjUzZGY5YTI3MzY0YmRkNmY5MGZlNzcyNmQyZi4uODc4MWM3OGI4OTQwYmM2MTlkMjEwOTZl
NWM0MTU1YTEyMzg0Zjg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1
ZXN0LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgICAgICBJZ25vcmVDbGlwcGluZyA9
IDEgPDwgNSwKICAgICAgICAgU1ZHQ2xpcENvbnRlbnQgPSAxIDw8IDYsCiAgICAgICAgIFRvdWNo
RXZlbnQgPSAxIDw8IDcsCi0gICAgICAgIEFsbG93U2hhZG93Q29udGVudCA9IDEgPDwgOCwKKyAg
ICAgICAgRGlzYWxsb3dTaGFkb3dDb250ZW50ID0gMSA8PCA4LAogICAgICAgICBBbGxvd0ZyYW1l
U2Nyb2xsYmFycyA9IDEgPDwgOSwKICAgICAgICAgQWxsb3dDaGlsZEZyYW1lQ29udGVudCA9IDEg
PDwgMTAsCiAgICAgICAgIENoaWxkRnJhbWVIaXRUZXN0ID0gMSA8PCAxMQpAQCAtNTYsNyArNTYs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdmdDbGlwQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVxdWVzdFR5cGUgJiBTVkdDbGlwQ29udGVudDsgfQogICAgIGJvb2wgdG91Y2hFdmVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBUb3VjaEV2ZW50OyB9CiAgICAgYm9vbCBtb3Vz
ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gIXRvdWNoRXZlbnQoKTsgfQotICAgIGJvb2wgYWxsb3dz
U2hhZG93Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBBbGxvd1NoYWRv
d0NvbnRlbnQ7IH0KKyAgICBib29sIGRpc2FsbG93c1NoYWRvd0NvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiBtX3JlcXVlc3RUeXBlICYgRGlzYWxsb3dTaGFkb3dDb250ZW50OyB9CiAgICAgYm9vbCBh
bGxvd3NGcmFtZVNjcm9sbGJhcnMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgQWxs
b3dGcmFtZVNjcm9sbGJhcnM7IH0KICAgICBib29sIGFsbG93c0NoaWxkRnJhbWVDb250ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQ7IH0K
ICAgICBib29sIGlzQ2hpbGRGcmFtZUhpdFRlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RU
eXBlICYgQ2hpbGRGcmFtZUhpdFRlc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmNwcAppbmRleCBjNjM2ZjU3ZjliZDM2NzhiYzFkOWI2NjM5NjJjNDhjYTY5NWYy
ZTUyLi41ZmYxOWMwN2Y4YjJhMTQzMDE1YWVmMTA5MzQ3OTg5OGRhYWJlYmYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC01NTYsNyArNTU2LDcgQEAg
Ym9vbCBIaXRUZXN0UmVzdWx0OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqIG5v
ZGUsIGNvbnN0IEhpdFRlc3RSZXF1ZXMKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgaWYgKCFyZXF1ZXN0LmFsbG93c1NoYWRvd0NvbnRlbnQoKSkKKyAgICBpZiAo
cmVxdWVzdC5kaXNhbGxvd3NTaGFkb3dDb250ZW50KCkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5k
b2N1bWVudCgpLT5hbmNlc3RvckluVGhpc1Njb3BlKG5vZGUpOwogCiAgICAgbXV0YWJsZVJlY3RC
YXNlZFRlc3RSZXN1bHQoKS5hZGQobm9kZSk7CkBAIC01NzYsNyArNTc2LDcgQEAgYm9vbCBIaXRU
ZXN0UmVzdWx0OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqIG5vZGUsIGNvbnN0
IEhpdFRlc3RSZXF1ZXMKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgaWYgKCFyZXF1ZXN0LmFsbG93c1NoYWRvd0NvbnRlbnQoKSkKKyAgICBpZiAocmVxdWVzdC5k
aXNhbGxvd3NTaGFkb3dDb250ZW50KCkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5kb2N1bWVudCgp
LT5hbmNlc3RvckluVGhpc1Njb3BlKG5vZGUpOwogCiAgICAgbXV0YWJsZVJlY3RCYXNlZFRlc3RS
ZXN1bHQoKS5hZGQobm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5jcHAKaW5kZXggYmI3ZGFlNWM4MzEwMDE1YTRmZTllNDYyODg4MDllNzQ2N2U0NDc0
Ni4uZTJlMWYwZmRmMTJkYzdmYTA2ZmRlMzc0ZjUwMTA2MDhhYzMzZmI5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApAQCAtMzEyLDcgKzMxMiw3
IEBAIGJvb2wgUmVuZGVyRmxvd1RocmVhZDo6aGl0VGVzdEZsb3dUaHJlYWRQb3J0aW9uSW5SZWdp
b24oUmVuZGVyUmVnaW9uKiByZWdpb24sIExhCiAgICAgICAgIHJlbmRlckZsb3dUaHJlYWRPZmZz
ZXQgPSBhY2N1bXVsYXRlZE9mZnNldCAtIGZsb3dUaHJlYWRQb3J0aW9uUmVjdC5sb2NhdGlvbigp
OwogCiAgICAgLy8gQWx3YXlzIGlnbm9yZSBjbGlwcGluZywgc2luY2UgdGhlIFJlbmRlckZsb3dU
aHJlYWQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgYm91bmRzIG9mIHRoZSBGcmFtZVZpZXcu
Ci0gICAgSGl0VGVzdFJlcXVlc3QgbmV3UmVxdWVzdChyZXF1ZXN0LnR5cGUoKSB8IEhpdFRlc3RS
ZXF1ZXN0OjpJZ25vcmVDbGlwcGluZyk7CisgICAgSGl0VGVzdFJlcXVlc3QgbmV3UmVxdWVzdChy
ZXF1ZXN0LnR5cGUoKSB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZyB8IEhpdFRlc3RS
ZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJl
c3VsdChyZXN1bHQpOwogCiAgICAgLy8gTWFrZSBhIG5ldyB0ZW1wb3JhcnkgSGl0VGVzdExvY2F0
aW9uIGluIHRoZSBuZXcgcmVnaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCmluZGV4IDgyMmE3OWJhNzVm
MDFlNmE4YzQ5YzM4MTJjZjhhMTUzOWJhYzI3YjEuLmIwODU1ZmEzZTI1MDk4ZTMzMzM4OGVlMWYy
N2FmZTJiYmM2NjAyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCBi
b29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50KGNvbnN0IEZs
b2F0UmVjdCYgb2JqZWN0Qm91bmRpbgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIElu
dFBvaW50IGhpdFBvaW50OwogICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChoaXRQb2ludCk7
Ci0gICAgICAgIGlmIChyZW5kZXJlci0+bm9kZUF0RmxvYXRQb2ludChIaXRUZXN0UmVxdWVzdChI
aXRUZXN0UmVxdWVzdDo6U1ZHQ2xpcENvbnRlbnQpLCByZXN1bHQsIHBvaW50LCBIaXRUZXN0Rm9y
ZWdyb3VuZCkpCisgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZUF0RmxvYXRQb2ludChIaXRUZXN0
UmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6U1ZHQ2xpcENvbnRlbnQgfCBIaXRUZXN0UmVxdWVzdDo6
RGlzYWxsb3dTaGFkb3dDb250ZW50KSwgcmVzdWx0LCBwb2ludCwgSGl0VGVzdEZvcmVncm91bmQp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggODM4NDI2ZGJjNTBjYWFjYmM2NTBiZDFjOTI2NjA2NTVkMWEzNDc4
MC4uZDJmMjcyNDZmZTA1YjI5ZmNmYWVlNTZlZDQwYjc5OGFjMzFjZGJjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTQyMSw4ICsxNDIxLDggQEAgUGFzc1JlZlB0cjxO
b2RlTGlzdD4gSW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KERvY3VtZW50KiBkb2N1bWVudCwgaW50
IHgsIGludCB5LAogICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlw
ZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmU7CiAg
ICAgaWYgKGlnbm9yZUNsaXBwaW5nKQogICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0
OjpJZ25vcmVDbGlwcGluZzsKLSAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQotICAgICAgICBo
aXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7CisgICAgaWYgKCFh
bGxvd1NoYWRvd0NvbnRlbnQpCisgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkRp
c2FsbG93U2hhZG93Q29udGVudDsKICAgICBpZiAoYWxsb3dDaGlsZEZyYW1lQ29udGVudCkKICAg
ICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggMmMwMzM4NGNk
MDE0MjBhOTNiYzE1NGRkMDc1ZGE5OGYxMmEyY2U3Ni4uYTQwMDlhN2I5ZjYwZjljNjBiOGI0YjMx
MWU3NmU3Mzg3ZjQ0ZDE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2Uu
Y3BwCkBAIC02MjM2LDcgKzYyMzYsNyBAQCBjb25zdCBIaXRUZXN0UmVzdWx0JiBXZWJQYWdlUHJp
dmF0ZTo6aGl0VGVzdFJlc3VsdChjb25zdCBJbnRQb2ludCYgY29udGVudFBvcykKIHsKICAgICBp
ZiAobV9jYWNoZWRIaXRUZXN0Q29udGVudFBvcyAhPSBjb250ZW50UG9zKSB7CiAgICAgICAgIG1f
Y2FjaGVkSGl0VGVzdENvbnRlbnRQb3MgPSBjb250ZW50UG9zOwotICAgICAgICBtX2NhY2hlZEhp
dFRlc3RSZXN1bHQgPSBtX21haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRB
dFBvaW50KG1fY2FjaGVkSGl0VGVzdENvbnRlbnRQb3MsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dD
b250ZW50KTsKKyAgICAgICAgbV9jYWNoZWRIaXRUZXN0UmVzdWx0ID0gbV9tYWluRnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtX2NhY2hlZEhpdFRlc3RDb250ZW50
UG9zLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsK
ICAgICB9CiAKICAgICByZXR1cm4gbV9jYWNoZWRIaXRUZXN0UmVzdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRmF0RmluZ2Vycy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNwcAppbmRl
eCA3N2Q1NmMwZTA3YWVkYmM4ZTY2MzE5OThlNzVkN2QwZGU4NzNlOTc2Li5jNTFkZmY2MDA4YmRj
NDY5NmU2NDg4OTE3YTEyMTIzZDk1NDAyMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNwcApAQCAtNDY1LDggKzQ2NSw4
IEBAIHZvaWQgRmF0RmluZ2Vyczo6Z2V0Tm9kZXNGcm9tUmVjdChEb2N1bWVudCogZG9jdW1lbnQs
IGNvbnN0IEludFBvaW50JiBjb250ZW50UG9zCiAgICAgLy8gVGhlIHVzZXIgZnVuY3Rpb25zIGNo
ZWNrRm9yVGV4dCgpIGFuZCBmaW5kSW50ZXJzZWN0aW5nUmVnaW9ucygpIHVzZXMgdGhlIE5vZGUu
d2hvbGVUZXh0KCkgdG8gY2hlY2tGaW5nZXJJbnRlcnNlY3Rpb24oKQogICAgIC8vIG5vdCB0aGUg
dGV4dCBpbiBpdHMgc2hhZG93IHRyZWUuCiAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1
ZXN0VHlwZSByZXF1ZXN0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmU7Ci0gICAgaWYgKG1fdGFyZ2V0VHlwZSA9PSBUZXh0KQotICAgICAgICBy
ZXF1ZXN0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50OworICAgIGlm
IChtX3RhcmdldFR5cGUgIT0gVGV4dCkKKyAgICAgICAgcmVxdWVzdFR5cGUgfD0gSGl0VGVzdFJl
cXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudDsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChj
b250ZW50UG9zLCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQ
YWRkaW5nKTsKIAogICAgIGRvY3VtZW50LT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmhpdFRlc3Qo
cmVxdWVzdFR5cGUsIHJlc3VsdCk7CkBAIC01MDYsNCArNTA2LDMgQEAgdm9pZCBGYXRGaW5nZXJz
OjpzZXRTdWNjZXNzZnVsRmF0RmluZ2Vyc1Jlc3VsdChGYXRGaW5nZXJzUmVzdWx0JiByZXN1bHQs
IE5vZGUqIGIKIAogfQogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViS2l0U3VwcG9ydC9Qcm94aW1pdHlEZXRlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9Qcm94aW1pdHlEZXRlY3Rvci5jcHAKaW5kZXggNTUwM2FhMjVh
YmUzY2JkMjkzNzllYjBhOWE0MWRiMjE5YjllN2RlNy4uYjkyYmU0ZTdiODg1NmU3N2VhNzM2N2I1
MDQzMGQxN2JkZGIwZWJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvUHJveGltaXR5RGV0ZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJLaXRTdXBwb3J0L1Byb3hpbWl0eURldGVjdG9yLmNwcApAQCAtNzMsNyArNzMs
NyBAQCBJbnRQb2ludCBQcm94aW1pdHlEZXRlY3Rvcjo6ZmluZEJlc3RQb2ludChjb25zdCBJbnRQ
b2ludCYgZG9jdW1lbnRQb3MsIGNvbnN0IEludAogCiAgICAgLy8gQWRqdXN0IGhpdCBwb2ludCB0
byBmcmFtZQogICAgIEludFBvaW50IGZyYW1lQ29udGVudFBvcyhkb2N1bWVudC0+ZnJhbWUoKS0+
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKG1fd2ViUGFnZS0+bV9tYWluRnJhbWUtPnZpZXcoKS0+
Y29udGVudHNUb1dpbmRvdyhkb2N1bWVudFBvcykpKTsKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1
ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlw
cGluZyk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHkgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlz
YWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChmcmFtZUNvbnRl
bnRQb3MsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7CiAgICAgZG9jdW1lbnQtPnJlbmRlclZp
ZXcoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRs
ZXIuY3BwCmluZGV4IGNiZTQ1NjliYjhmZTk2NzMyYmRmOTQ4M2Y0NjA4MjNhMjM4Nzg5Y2UuLmE1
YWQ5MzkxMTRlNzdiN2Y2N2MwMTRkMDI4ZDRkZTZmYjk2M2RjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRs
ZXIuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
UG9zaXRpb25Gb3JQb2ludElnbm9yaW5nQ2xpcHBpbmcoY29uc3QgRnJhbWUmIGZyYW0KICAgICAv
LyBvdXRzaWRlIHRoZSB2aXNpYmxlIHJlY3QuIFRvIHdvcmsgYXJvdW5kIHRoZSBidWcsIHRoaXMg
aXMgYSBjb3B5IG9mCiAgICAgLy8gdmlzaWJsZVBvc2l0aW9uQXRQb2ludCB3aGljaCB3aGljaCBw
YXNzZXMgaWdub3JlQ2xpcHBpbmc9dHJ1ZS4KICAgICAvLyBTZWUgUklNIEJ1ZyAjNDMxNS4KLSAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVz
dWx0QXRQb2ludChmcmFtZVBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0
UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCB8IEhp
dFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBmcmFtZS5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWVQb2ludCwg
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRl
c3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZyk7CiAKICAgICBOb2RlKiBub2RlID0gcmVzdWx0Lmlu
bmVyTm9kZSgpOwogICAgIGlmICghbm9kZSB8fCBub2RlLT5kb2N1bWVudCgpICE9IGZyYW1lLmRv
Y3VtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0
TWVudUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1l
bnVDbGllbnRJbXBsLmNwcAppbmRleCBlNzc3NjRhZmU1ZDE5ZjY3ZjYyMTZlZWQzOGRhZjgwODM1
ZWE5YjhjLi5kOWIxN2NmZDkyNjdlYjIwNTU4ZGNkODI0Y2MxNGJmYmZlN2M1YTE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5j
cHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgU3RyaW5nIHNlbGVjdE1pc3NwZWxsZWRXb3Jk
KGNvbnN0IENvbnRleHRNZW51KiBkZWZhdWx0TWVudSwgRnJhbWUqIHNlbGVjdAogCiAgICAgLy8g
U2VsZWN0aW9uIGlzIGVtcHR5LCBzbyBjaGFuZ2UgdGhlIHNlbGVjdGlvbiB0byB0aGUgd29yZCB1
bmRlciB0aGUgY3Vyc29yLgogICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNlbGVj
dGVkRnJhbWUtPmV2ZW50SGFuZGxlcigpLT4KLSAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQo
c2VsZWN0ZWRGcmFtZS0+cGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+aGl0VGVzdFJl
c3VsdCgpLnBvaW50SW5Jbm5lck5vZGVGcmFtZSgpLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkg
fCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29u
dGVudCk7CisgICAgICAgIGhpdFRlc3RSZXN1bHRBdFBvaW50KHNlbGVjdGVkRnJhbWUtPnBhZ2Uo
KS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmhpdFRlc3RSZXN1bHQoKS5wb2ludEluSW5uZXJO
b2RlRnJhbWUoKSwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZSk7CiAgICAgTm9kZSogaW5uZXJOb2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKTsK
ICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25G
b3JQb2ludCgKICAgICAgICAgaGl0VGVzdFJlc3VsdC5sb2NhbFBvaW50KCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDU3YWVlNGMzMjA2MjMz
OTczNDQ0NjQ5OGIxYTE1YWUwYTYzMDQ4MTguLjA0ODljZjdlYzg1MzY5OGRlOWRmYTljMzI4Y2Jm
MGRmYTBmYzA0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcApAQCAtMTM5OCw3ICsxMzk4LDcgQEAgdm9pZCBXZWJGcmFtZUltcGw6Om1vdmVDYXJldFNl
bGVjdGlvblRvd2FyZHNXaW5kb3dQb2ludChjb25zdCBXZWJQb2ludCYgcG9pbnQpCiAKIFZpc2li
bGVQb3NpdGlvbiBXZWJGcmFtZUltcGw6OnZpc2libGVQb3NpdGlvbkZvcldpbmRvd1BvaW50KGNv
bnN0IFdlYlBvaW50JiBwb2ludCkKIHsKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0ID0gSGl0
VGVzdFJlcXVlc3Q6Ok1vdmUgfCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVx
dWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOworICAgIEhpdFRl
c3RSZXF1ZXN0IHJlcXVlc3QgPSBIaXRUZXN0UmVxdWVzdDo6TW92ZSB8IEhpdFRlc3RSZXF1ZXN0
OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdu
b3JlQ2xpcHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50OwogICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0KGZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhJ
bnRQb2ludChwb2ludCkpKTsKIAogICAgIGZyYW1lKCktPmRvY3VtZW50KCktPnJlbmRlclZpZXco
KS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAppbmRleCBiODg3
OTI1MDA5NjI3MzdiY2RjYjFmNTQ5NWNlN2VkOGU2ZDA0YTU0Li4wMmZiMzA1ODE3YzE5NzIxNjIx
MzUwMGZkODY4NTYyOWFjY2ExZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAtNDY3LDcgKzQ2Nyw3IEBAIGJv
b2wgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6aXNSZWN0VG9wbW9zdChjb25zdCBXZWJSZWN0JiBy
ZWN0KQogICAgIExheW91dFBvaW50IGNlbnRlciA9IGRvY3VtZW50UmVjdC5jZW50ZXIoKTsKICAg
ICAvLyBNYWtlIHRoZSByZWN0IHdlJ3JlIGNoZWNraW5nICh0aGUgcG9pbnQgc3Vycm91bmRlZCBi
eSBwYWRkaW5nIHJlY3RzKSBjb250YWluZWQgaW5zaWRlIHRoZSByZXF1ZXN0ZWQgcmVjdC4gKE5v
dGUgdGhhdCAtMS8yIGlzIDAuKQogICAgIExheW91dFNpemUgcGFkZGluZygoZG9jdW1lbnRSZWN0
LndpZHRoKCkgLSAxKSAvIDIsIChkb2N1bWVudFJlY3QuaGVpZ2h0KCkgLSAxKSAvIDIpOwotICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVz
dWx0QXRQb2ludChjZW50ZXIsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUsIHBhZGRpbmcpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjZW50ZXIsIEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6
RGlzYWxsb3dTaGFkb3dDb250ZW50LCBwYWRkaW5nKTsKICAgICBjb25zdCBIaXRUZXN0UmVzdWx0
OjpOb2RlU2V0JiBub2RlcyA9IHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCk7CiAgICAgaWYg
KG5vZGVzLnNpemUoKSAhPSAxKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZmI0NDQ1NjQzY2Q5ZjVjYmM4MDEz
YWZjNGY0ZWNlNDg5ZmVlYmU3NC4uNjZlNzFhMDQ4OGMxOWQ1OTc5OTNhMjRhYTAxNmYwZWU4YjQ1
ZGNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAt
MTEyMyw3ICsxMTIzLDcgQEAgV2ViUmVjdCBXZWJWaWV3SW1wbDo6Y29tcHV0ZUJsb2NrQm91bmRz
KGNvbnN0IFdlYlJlY3QmIHJlY3QsIEF1dG9ab29tVHlwZSB6b29tVHkKIAogICAgIC8vIFVzZSB0
aGUgcmVjdC1iYXNlZCBoaXQgdGVzdCB0byBmaW5kIHRoZSBub2RlLgogICAgIEludFBvaW50IHBv
aW50ID0gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+d2luZG93VG9Db250ZW50cyhJbnRQ
b2ludChyZWN0LngsIHJlY3QueSkpOwotICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVz
dFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUKKyAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUg
PSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0
VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudAogICAgICAgICAgICAgfCAoKHpvb21U
eXBlID09IEZpbmRJblBhZ2UpID8gSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nIDogMCk7
CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgaGl0VHlwZSwgSW50U2l6
ZShyZWN0LndpZHRoLCByZWN0LmhlaWdodCkpOwogCkBAIC0xMzA5LDcgKzEzMDksNyBAQCBOb2Rl
KiBXZWJWaWV3SW1wbDo6YmVzdFRhcE5vZGUoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIHRh
cEV2ZW50KQogI2VuZGlmCiAKICAgICBJbnRQb2ludCBoaXRUZXN0UG9pbnQgPSBtX3BhZ2UtPm1h
aW5GcmFtZSgpLT52aWV3KCktPndpbmRvd1RvQ29udGVudHModG91Y2hFdmVudExvY2F0aW9uKTsK
LSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0
OjpUb3VjaEV2ZW50KTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZy
YW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQs
IEhpdFRlc3RSZXF1ZXN0OjpUb3VjaEV2ZW50IHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hh
ZG93Q29udGVudCk7CiAgICAgYmVzdFRvdWNoTm9kZSA9IHJlc3VsdC50YXJnZXROb2RlKCk7CiAK
ICAgICAvLyBNYWtlIHN1cmUgb3VyIGhpZ2hsaWdodCBjYW5kaWRhdGUgdXNlcyBhIGhhbmQgY3Vy
c29yIGFzIGEgaGV1cmlzdGljIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4
IDQxNTM2OTQzOTZjMWNmNzBlOTY0ZTQ3ODNmMGRmYmEyMzdiODA1ODUuLjJkYjg4Yjg3MTkyZmM0
OGIxYTg1NmIyNmMyNDUxMmNlZjE0MmFmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
Y3BwCkBAIC02OTQsNyArNjk0LDcgQEAgRXdrX0hpdF9UZXN0KiBld2tfZnJhbWVfaGl0X3Rlc3Rf
bmV3KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50IHgsIGludCB5KQogCiAgICAgV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBzbWFydERhdGEtPmZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAodmlldy0+d2luZG93VG9Db250ZW50cyhXZWJDb3JlOjpJbnRQb2ludCh4LCB5
KSksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6Okhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUg
fCBXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpSZWFk
T25seSB8IFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBXZWJDb3JlOjpIaXRUZXN0
UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dD
b250ZW50KTsKIAogICAgIGlmIChyZXN1bHQuc2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybiAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcApp
bmRleCBmNjYyODQyNTQyN2YyNTJjZDkxOTk4OTFiYjdiMGY0ZDAzZDgzMjZhLi40MDBkZTA0OTlm
MmM0NjcyMGYzZjNiYzVhNThjNmY4ZjIwYjk0Y2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcApAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQg
d2Via2l0X3dlYl9pbnNwZWN0b3JfaW5zcGVjdF9jb29yZGluYXRlcyhXZWJLaXRXZWJJbnNwZWN0
b3IqIHdlYkluc3BlY3RvciwKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZSk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVx
dWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6
OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgSW50UG9pbnQgZG9jdW1lbnRQb2ludCA9IHZp
ZXctPndpbmRvd1RvQ29udGVudHMoSW50UG9pbnQoc3RhdGljX2Nhc3Q8aW50Pih4KSwgc3RhdGlj
X2Nhc3Q8aW50Pih5KSkpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KGRvY3VtZW50UG9pbnQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggNjQw
M2FkNzkxZjU2NjRjOWI2ODU2Nzc5NTQ5ODJlYzJjOTNmM2Q3NS4uZWUyOGM4OGNhMjlkNjBjZGVm
YzNlNTdiZjRmZjRkNzcxZjFlZjljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcApAQCAtMzI4LDcgKzMyOCw3IEBAIHN0YXRpYyB2b2lkIGNvbnRleHRNZW51
Q29ubmVjdEFjdGl2YXRlKEd0a01lbnVJdGVtKiBpdGVtLCBDb250ZXh0TWVudUNvbnRyb2xsZXIq
CiAKIHN0YXRpYyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIHByZXBhcmVNb3VzZUV2ZW50
Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQog
ewotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7Cisg
ICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlfCBIaXRUZXN0
UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBJbnRQb2ludCBwb2ludCA9IGZy
YW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSk7CiAgICAgcmV0
dXJuIGZyYW1lLT5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBwb2ludCwg
ZXZlbnQpOwogfQpAQCAtNTMxMyw3ICs1MzEzLDcgQEAgV2ViS2l0SGl0VGVzdFJlc3VsdCogd2Vi
a2l0X3dlYl92aWV3X2dldF9oaXRfdGVzdF9yZXN1bHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywK
IAogICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50ID0gUGxhdGZvcm1Nb3VzZUV2ZW50
KGV2ZW50KTsKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChI
aXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRl
c3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50
KTsKICAgICBJbnRQb2ludCBkb2N1bWVudFBvaW50ID0gZG9jdW1lbnRQb2ludEZvcldpbmRvd1Bv
aW50KGZyYW1lLCBtb3VzZUV2ZW50LnBvc2l0aW9uKCkpOwogICAgIE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMgbWV2ID0gZnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJl
cXVlc3QsIGRvY3VtZW50UG9pbnQsIG1vdXNlRXZlbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQppbmRleCAxN2FmOGYwMjFhNGU1NDUwM2JhODMwZTBmNWY3ZGY0NDkyYzcw
YTg0Li5kNzdiNjA1ZmY2ZjRiNDE2MGQwM2M4YjllNGY5ZDdiYTM4ZWY5NGJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTEyMjcsNyArMTIyNyw3IEBAIHN0YXRpYyBp
bmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lOwogICAgIGlmICghY29y
ZUZyYW1lKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbW1tXZWJFbGVtZW50RGlj
dGlvbmFyeSBhbGxvY10gaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmVGcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KEludFBvaW50KHBvaW50KSwgSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpJ
Z25vcmVDbGlwcGluZyldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW1tbV2ViRWxlbWVudERp
Y3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpjb3JlRnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChJbnRQb2ludChwb2ludCksIEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6
SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KV0g
YXV0b3JlbGVhc2VdOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQppbmRleCBmODVkZTBkZmY5MDgwZjg4ZGZiNWVkNzJmYjgxMTdhYzZhNmYxOTY5Li5i
YTBhMTUzYzEyZjA2YmIwZWE1ODVjYzQwYjM4MzJmYjIyZTAwODg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTYyMDQsNyArNjIwNCw3IEBAIHN0YXRpYyB2
b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8
Q29tcG9zaXRpb25VbmRlCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVz
dFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZQotICAgICAgICB8IChh
bGxvdyA/IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQgOiAwKTsKKyAgICAgICAg
fCAoYWxsb3cgPyAwIDogSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAg
ICAgcmV0dXJuIFtbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RS
ZXN1bHQ6Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoSW50
UG9pbnQocG9pbnQpLCBoaXRUeXBlKV0gYXV0b3JlbGVhc2VdOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcAppbmRleCA4
NGEyZTUyZmIxYmE2NGYxNDBlNThkZjE2MjdlMGJkNDljYmRhNzBiLi4wMzFjNzg3NDcyNmRjNjY1
ODA3N2ZkNTliOGQxNmMzYjVhYjllNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKQEAgLTM4OSw3ICszODksNyBAQCBR
V2ViSGl0VGVzdFJlc3VsdFByaXZhdGUqIFFXZWJGcmFtZUFkYXB0ZXI6OmhpdFRlc3RDb250ZW50
KGNvbnN0IFFQb2ludCYgcG9zKSBjbwogICAgIGlmICghZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUt
PmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChm
cmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIEhpdFRlc3RSZXF1ZXN0OjpSZWFk
T25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xp
cHBpbmcpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBv
cyksIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBI
aXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dT
aGFkb3dDb250ZW50KTsKIAogICAgIGlmIChyZXN1bHQuc2Nyb2xsYmFyKCkpCiAgICAgICAgIHJl
dHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCAzMWRmOTliZGU3NTIxOGI1ZTIyNDNhODE2
NmY1ZWQ1ZTllMDdmZTNmLi5mZmE4NWQ0MWNiZTJlMjIzNDc2ODc2NjM1ZDgyMTdlMTk5MDU4M2Yw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtMTU1MSw3ICsxNTUxLDcgQEAgYm9vbCBXZWJWaWV3
OjpnZXN0dXJlTm90aWZ5KFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAKICAgICBib29s
IGhpdFNjcm9sbGJhciA9IGZhbHNlOwogICAgIFBPSU5UIGdlc3R1cmVCZWdpblBvaW50ID0ge2du
LT5wdHNMb2NhdGlvbi54LCBnbi0+cHRzTG9jYXRpb24ueX07Ci0gICAgSGl0VGVzdFJlcXVlc3Qg
cmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJl
cXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93
U2hhZG93Q29udGVudCk7CiAgICAgZm9yIChGcmFtZSogY2hpbGRGcmFtZSA9IG1fcGFnZS0+bWFp
bkZyYW1lKCk7IGNoaWxkRnJhbWU7IGNoaWxkRnJhbWUgPSBFdmVudEhhbmRsZXI6OnN1YmZyYW1l
Rm9yVGFyZ2V0Tm9kZShtX2dlc3R1cmVUYXJnZXROb2RlLmdldCgpKSkgewogICAgICAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IGNoaWxkRnJhbWUtPnZpZXcoKTsKICAgICAgICAgaWYgKCFmcmFt
ZVZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAppbmRleCA3N2Q0NGUzODIwYzZhMzlkNmExZWMxMjkwOTViMzBlMjU0Y2RhMWMzLi41MGViNGRh
MTQzNjdmYTBiMWM4YmY2YzU4MmZmYThmOGNkOTlkNGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTUzOSw3ICs1MzksNyBAQCBQYXNz
UmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gV2ViRnJhbWU6OmhpdFRlc3QoY29u
c3QgSW50UG9pbnQgcG9pbnQpCiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUobV9j
b3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RS
ZXF1ZXN0OjpJZ25vcmVDbGlwcGluZykpOworICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZUhpdFRl
c3RSZXN1bHQ6OmNyZWF0ZShtX2NvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1
bHRBdFBvaW50KHBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nIHwgSGl0VGVzdFJlcXVl
c3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCkpOwogfQogCiBib29sIFdlYkZyYW1lOjpnZXREb2N1
bWVudEJhY2tncm91bmRDb2xvcihkb3VibGUqIHJlZCwgZG91YmxlKiBncmVlbiwgZG91YmxlKiBi
bHVlLCBkb3VibGUqIGFscGhhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDRjMDZmMjA4NWRlYTFlNGY5ZjRkNmZlODE4OTNiOTQ4MmEyMGFm
NDEuLmMxYWNlNjY0YzA0MjE3ZTE2YzllODFhMTdhYjJkMjk1NmQwMjFlM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3NTMsNyArMTc1
Myw3IEBAIHZvaWQgV2ViUGFnZTo6aGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlvbihjb25zdCBJ
bnRQb2ludCYgcG9pbnQsIGNvbnN0IEludFNpemUmCiAgICAgICAgICAgICByZXR1cm47CiAKICNl
bHNlCi0gICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29u
dGVudHMocG9pbnQpLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6
QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nKTsKKyAgICAgICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIEhpdFRl
c3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVx
dWVzdDo6SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250
ZW50KTsKICAgICAgICAgYWRqdXN0ZWROb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogI2VuZGlm
CiAgICAgICAgIC8vIEZpbmQgdGhlIG5vZGUgdG8gaGlnaGxpZ2h0LiBUaGlzIGlzIG5vdCB0aGUg
c2FtZSBhcyB0aGUgbm9kZSByZXNwb25kaW5nIHRoZSB0YXAgZ2VzdHVyZSwgYmVjYXVzZSBtYW55
CkBAIC0zMDQyLDcgKzMwNDIsNyBAQCB2b2lkIFdlYlBhZ2U6OmZpbmRab29tYWJsZUFyZWFGb3JQ
b2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGNvbnN0IFdlYgogewogICAgIFVO
VVNFRF9QQVJBTShhcmVhKTsKICAgICBGcmFtZSogbWFpbmZyYW1lID0gbV9tYWluRnJhbWUtPmNv
cmVGcmFtZSgpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1Rv
Q29udGVudHMocG9pbnQpLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nKTsKKyAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCA9IG1haW5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRB
dFBvaW50KG1haW5mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KSwgSGl0VGVz
dFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1
ZXN0OjpJZ25vcmVDbGlwcGluZyB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRl
bnQpOwogCiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKIApAQCAtMzg5Niw3
ICszODk2LDcgQEAgdm9pZCBXZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVn
SW4oKQogICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgY29yZVBh
Z2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+Y29udGVudHNTaXplKCkpOwogICAgIHNlYXJjaFJl
Y3QuaW50ZXJzZWN0KEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZShwcmltYXJ5U25hcHNob3R0
ZWRQbHVnSW5TZWFyY2hMaW1pdCwgcHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luU2VhcmNoTGltaXQp
KSk7CiAKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZy
YW1lQ29udGVudCB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZyk7CisgICAgSGl0VGVz
dFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfCBIaXRU
ZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFk
b3dDb250ZW50KTsKIAogICAgIEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4gc2VlblJlbmRlcmVyczsK
ICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBjYW5kaWRhdGVQbHVnSW4gPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmlu
ZGV4IDc4Mzg4MGJlNDY1ZmQ2MjEwYTg1YjU1OTU0ZWQ5YWIzYTIwY2E4OTIuLjU4NzRhMDdiMDlm
YmQ5ODVlMTQ2NjU2YTY3NmM0ZjA0ODI5Nzg0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTc1MSw3ICs3NTEsNyBA
QCB2b2lkIFdlYlBhZ2U6OnNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChjb25zdCBXZWJL
aXQ6OldlYk1vdXNlRXZlbnQmIGV2ZW50LAogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUo
RFJBR19TVVBQT1JUKQotICAgIEhpdFRlc3RSZXN1bHQgaGl0UmVzdWx0ID0gZnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0Nv
bnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRU
ZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7
CisgICAgSGl0VGVzdFJlc3VsdCBoaXRSZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQu
cG9zaXRpb24oKSksIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpB
Y3RpdmUpOwogICAgIGlmIChoaXRSZXN1bHQuaXNTZWxlY3RlZCgpKQogICAgICAgICByZXN1bHQg
PSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmV2ZW50TWF5U3RhcnREcmFnKHBsYXRmb3JtKGV2ZW50
KSk7CiAjZW5kaWYKQEAgLTc2NCw3ICs3NjQsNyBAQCB2b2lkIFdlYlBhZ2U6OmFjY2VwdHNGaXJz
dE1vdXNlKGludCBldmVudE51bWJlciwgY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50JiBldgog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBIaXRUZXN0UmVzdWx0
IGhpdFJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
ZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKSwgSGl0VGVz
dFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1
ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOworICAgIEhpdFRlc3RSZXN1bHQgaGl0UmVzdWx0ID0g
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygp
LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCBIaXRUZXN0UmVxdWVzdDo6UmVh
ZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPnNldEFjdGl2YXRpb25FdmVudE51bWJlcihldmVudE51bWJlcik7CiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKICAgICBpZiAoaGl0UmVzdWx0LmlzU2VsZWN0ZWQoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195024</attachid>
            <date>2013-03-26 01:03:37 -0700</date>
            <delta_ts>2013-03-26 19:42:33 -0700</delta_ts>
            <desc>Fix a build hopefully</desc>
            <filename>bug-113171-20130326165919.patch</filename>
            <type>text/plain</type>
            <size>62796</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2ODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI0MzM2NmQ3MzljN2E4
ZDBmZWQ4OGVkM2M3NWU4OWFhNmFjMGZiZS4uYTc2MjNjNDQ2ZmQ5MDU4NWJhZDA4N2YxYjg0NDNm
YTY2ZDQ3MmM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTAzLTI0ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBTaGFkb3dDb250
ZW50cyBpbiBIaXRUZXN0cyBieSBkZWZhdWx0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzMTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSGl0VGVzdFJlcXVlc3QgaXMgd2lkZWx5IHVzZWQgaW4gV2Vi
Q29yZSwgYnV0IEFsbG93U2hhZG93Q29udGVudHMKKyAgICAgICAgZmxhZyBpcyBub3QgdHVybmVk
IG9uIGJ5IGRlZmF1bHQuICBJbiBtb3N0IHBsYWNlcywgd2UgY2FuIHNldCB0aGUKKyAgICAgICAg
ZmxhZyBvbi4KKworICAgICAgICBUaGlzIGNoYW5nZSBtYWtlcyBIaXRUZXN0cyBhbGxvdyBzaGFk
b3cgY29udGVudHMgYnkgZGVmYXVsdC4KKworICAgICAgICBUbyB0cmFjayBhbGwgZXhpc3Rpbmcg
SGl0VGVzdHMgd2hpY2ggZG8gbm90IGFsbG93IHNoYWRvdyBjb250ZW50cywKKyAgICAgICAgYW5k
IGRpc2NvdXJhZ2Ugc3VjaCBhIEhpdFRlc3QgaW4gdGhlIGZ1dHVyZSwgSSd2ZSBpbnRyb2R1Y2Vk
CisgICAgICAgIGRpc2FsbG93U2hhZG93Q29udGVuZXQgZmxhZyBzbyB0aGF0IGNhbGxlcnMgbXVz
dCB0dXJuIG9uIHRoaXMgZmxhZworICAgICAgICBleHBsaWNpdGx5IGlmIHRoZXkgd2FudCB0byBk
aXNhbGxvdyBzaGFkb3cgY29udGVudHMgaW4gdGhlaXIgSGl0VGVzdHMuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2Ugc2hvdWxkIGJlIHJlZmFjdG9yaW5nIGFuZCBzaG91bGQgbm90IGluY2x1ZGUgYW55
CisgICAgICAgIGJlaGF2aW9yIGNoYW5nZXMuICBBZnRlciB0aGlzIGNoYW5nZSwgd2UnbGwgaW52
ZXN0aWdhdGUgZWFjaCBwbGFjZQorICAgICAgICB3aGVyZSBkaXNhbGxvd1NoYWRvd0NvbnRlbnRz
IGlzIHVzZWQgc3RlcCBieSBzdGVwIGFuZCBnZXQgcmlkIG9mCisgICAgICAgIHRoZSBmbGFnIGlm
IGl0IGlzIG9rYXkgdG8gcmVtb3ZlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVu
dCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2Rl
RnJvbVBvaW50KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpjb250YWlucyk6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbGVtZW50VW5kZXJNb3VzZSk6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y2FuUHJvY2Vzc0RyYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZURyYWdnZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2
ZW50TWF5U3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRl
U2VsZWN0aW9uRm9yTW91c2VEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
Ojppc0luc2lkZVNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVH
ZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0
dXJlTG9uZ1ByZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlR2Vz
dHVyZVNjcm9sbEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YmVzdENs
aWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6YmVzdENvbnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91Y2hQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
ZGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50SWZFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL0V2
ZW50SGFuZGxlci5oOgorICAgICAgICAoRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGb2N1c0NhbmRpZGF0
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lOjp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcGFnZS9Ub3VjaERp
c2FtYmlndWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRHb29kVG91Y2hUYXJnZXRz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXF1ZXN0OjpkaXNhbGxvd3NTaGFkb3dDb250ZW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFk
OjpoaXRUZXN0Rmxvd1RocmVhZFBvcnRpb25JblJlZ2lvbik6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0Q2xpcENvbnRlbnQpOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bm9kZXNG
cm9tUmVjdCk6CisKIDIwMTMtMDMtMjIgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUu
Y29tPgogCiAgICAgICAgIExpc3RlbmluZyB0b3VjaCBldmVudHMgb24gU2hhZG93Um9vdCBjYW4g
Y3Jhc2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCAyZTAzODA4YWRmMTMxOTlj
NjUzNGJiMGY4NTYwMmNlNDcyYzExMWQxLi4zZTZkMTcwN2U4NGY3YTIxODEyNGY3MDY0NGMyZWQ3
MTQ4ZTFhZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAxMy0wMy0yNSAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgQWxsb3cgU2hhZG93Q29udGVudHMgaW4gSGl0VGVzdHMgYnkgZGVmYXVsdC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzE3MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQXBpL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6aGl0VGVzdFJl
c3VsdCk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNwcDoKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6RmF0RmluZ2Vyczo6Z2V0Tm9kZXNGcm9tUmVjdCk6CisgICAg
ICAgICogV2ViS2l0U3VwcG9ydC9Qcm94aW1pdHlEZXRlY3Rvci5jcHA6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OlByb3hpbWl0eURldGVjdG9yOjpmaW5kQmVzdFBvaW50KToKKyAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludElnbm9yaW5nQ2xpcHBpbmcpOgor
CiAyMDEzLTAzLTI1ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZW5hbWUgRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggZmM1NmRhNmVjZjViNjI4OThjNjA0NjZmODBkMjIwMmI3Y2U4ODFhZi4uYzAwMTk4
NzMzMjhhYTY3YWM5ODI3ZDcxYTJmNzM1N2QxZjkwMTBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMy0wMy0yNSAgSGF5YXRvIEl0byAgPGhheWF0b0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWxsb3cgU2hhZG93Q29udGVudHMgaW4gSGl0VGVzdHMg
YnkgZGVmYXVsdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMzE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNl
bGVjdE1pc3NwZWxsZWRXb3JkKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjp2aXNpYmxlUG9zaXRpb25Gb3JXaW5kb3dQb2lu
dCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjppc1JlY3RUb3Btb3N0KToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29t
cHV0ZUJsb2NrQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmJlc3RUYXBO
b2RlKToKKwogMjAxMy0wMy0yNSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmVuYW1lIEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
aW5kZXggZTZjZTA0ZjMzZTk1NWE5MjkyMTdhMzc2YTM1NjU4NjFiNDVmMmE2ZS4uZTkwZDUyMTlj
YjVmYWMzYThkMjkxMWYzNjAxNWQyYzgyMGQ2MWRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEzLTAzLTI1ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4K
KworICAgICAgICBBbGxvdyBTaGFkb3dDb250ZW50cyBpbiBIaXRUZXN0cyBieSBkZWZhdWx0Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzMTcxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBld2svZXdr
X2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgorCiAyMDEzLTAz
LTIwICBKb3NlIExlamluIFBKICA8am9zZS5sZWppbkBnbWFpbC5jb20+CiAKICAgICAgICAgZXdr
X3NldHRpbmdzX21lbW9yeV9jYWNoZV9jbGVhciBzaG91bGQgY2xlYXIgSlMgZ2FyYmFnZSBhbmQg
cmVsZWFzZSBGYXN0TWFsbG9jJ3MgZnJlZSBwYWdlcyB0byBPUwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4
IDhhYzFlNmE5YThhNmE4NjM1MzBjNzIwN2I3YTRkNzcxOTlmZWRiNjMuLmZmN2M4N2E1NmM0YWQ4
ZjNkMzFjNzczN2U1MmFmNzAzYzUyMGI5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMy0wMy0yNSAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgQWxsb3cgU2hhZG93Q29udGVudHMgaW4gSGl0VGVzdHMgYnkgZGVmYXVsdC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzE3MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Via2l0L3dlYmtp
dHdlYmluc3BlY3Rvci5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX2luc3BlY3Rvcl9pbnNwZWN0
X2Nvb3JkaW5hdGVzKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAg
ICAgIChwcmVwYXJlTW91c2VFdmVudEZvckZyYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19nZXRfaGl0X3Rlc3RfcmVzdWx0KToKKwogMjAxMy0wMy0yMyAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bUmVncmVzc2lvbl0gd2Vi
a2l0X2RvbV9odG1sX3RhYmxlX2VsZW1lbnRfaW5zZXJ0X3JvdyByZXR1cm5zIHZhbHVlIHRoYXQg
ZG9lc24ndCBwYXNzIFdFQktJVF9ET01fSVNfSFRNTF9UQUJMRV9ST1dfRUxFTUVOVCBtYWNybwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCmluZGV4IDlkNmY4YzI4ZGQ0YTJlMjdjMzAzODA3OWNkZGQ5MWJkOWFjZTNj
N2YuLjEyMDRhZDBiZmFjNGMyMmI1Y2JmZjljN2NhOWRlNWFkZDlhZTM5M2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMy0yNSAgSGF5YXRvIEl0byAgPGhheWF0b0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWxsb3cgU2hhZG93Q29udGVudHMgaW4gSGl0VGVzdHMg
YnkgZGVmYXVsdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMzE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgZWxlbWVudEF0
UG9pbnQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcgZWxlbWVudEF0UG9pbnQ6YWxsb3dTaGFkb3dDb250ZW50Ol0pOgorCiAyMDEz
LTAzLTI1ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5h
bWUgRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggNWRkOWE1NTM5
OGZlMmVlZTk3YjVkY2JhM2RhZDYzMDhkMDA2ZTJmYS4uYjgwZmRkY2I2NDQ2ZjU3NDk1ZmQ1YzEy
ZWUzODMyYWYxMzVlZDU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0w
My0yNSAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWxsb3cg
U2hhZG93Q29udGVudHMgaW4gSGl0VGVzdHMgYnkgZGVmYXVsdC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzE3MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1l
QWRhcHRlci5jcHA6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpoaXRUZXN0Q29udGVudCk6
CisKIDIwMTMtMDMtMTkgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdp
YS5jb20+CiAKICAgICAgICAgW1F0XSBFbmFibGUga2VybmluZyBieSBkZWZhdWx0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKaW5kZXggODEzMTFjMjU4ZjAyMTE2MGUxNTY2NjYzODAzMGFlYjQ3NzQ0NzBmYS4uOTI5
NzY1Y2E2Mjg1Mjg5NGFiM2E3OWIwMWNjODk0ZTdjY2JhMDZjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDEzLTAzLTI1ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBBbGxvdyBTaGFkb3dDb250ZW50cyBpbiBIaXRUZXN0cyBieSBkZWZh
dWx0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEz
MTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Omdlc3R1cmVOb3RpZnkpOgorCiAyMDEzLTAz
LTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFRoZSBzZWNv
bmQgcGFydCBvZiB0aGUgYnVpbGQgZml4IGZvciByMTQ2NzAyLiBUaGlzIHNob3VsZCBkbyBpdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3YzU0MzNmNTE1MjkwOTNlN2EzMmEwZTg2NmY4NTYzMzc0ZWIzZTlkLi42
MjVkNjIwMWI1OTAwZWZiMjg1ZmEyZmViNTdiNmEwOWExOTAxZjRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTMtMDMtMjUgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIEFsbG93IFNoYWRvd0NvbnRlbnRzIGluIEhpdFRlc3RzIGJ5IGRlZmF1bHQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTMxNzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpo
aXRUZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6YWNjZXB0c0ZpcnN0TW91c2UpOgorCiAyMDEzLTAzLTI1ICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgRU5BQkxF
X0lOUFVUX1RZUEVfREFURVRJTUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMDVlN2M2OTQ3OTFh
ZWY0OGNjNzhlMjFmNzY0Mjg1ZGZkMmNhNWI2Yi4uOGE0MTBmNTJkMzBlOGU1NGQ2NWRlMThjOTUz
ZmYxZTVhNTcwZWJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM3MSw4ICszNzEsOCBAQCBw
dWJsaWM6CiAgICAgICogQHBhcmFtIGxlZnRQYWRkaW5nIEhvdyBtdWNoIHRvIGV4cGFuZCB0aGUg
bGVmdCBvZiB0aGUgcmVjdGFuZ2xlCiAgICAgICovCiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdo
dFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6Okhp
dFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0
VGVzdFJlcXVlc3Q6OkFjdGl2ZSkgY29uc3Q7CisgICAgICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcs
IHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQg
bGVmdFBhZGRpbmcsCisgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUg
aGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3Rp
dmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KSBjb25zdDsKICAgICBF
bGVtZW50KiBlbGVtZW50RnJvbVBvaW50KGludCB4LCBpbnQgeSkgY29uc3Q7CiAgICAgUGFzc1Jl
ZlB0cjxSYW5nZT4gY2FyZXRSYW5nZUZyb21Qb2ludChpbnQgeCwgaW50IHkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCmluZGV4IDM4MDlkNWQ3ZTAyZGI5ZTY4NDJlMWRhYTQwYWE4OGI0MWNi
NjU0ZjEuLjQwOTAzZTAzOTk0NjgxMjUzODdlOGI2MTNkOGU0MGQ2ZGZjYjA2MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgTm9kZSogbm9kZUZyb21Qb2lu
dChEb2N1bWVudCogZG9jdW1lbnQsIGludCB4LCBpbnQgeSwgTGF5b3V0UG9pbnQqIGxvY2FsUG9p
bnQpCiAgICAgaWYgKCFmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmNvbnRhaW5zKHBv
aW50KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAgIEhp
dFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJl
cXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwog
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKICAgICBkb2N1bWVudC0+cmVuZGVyVmll
dygpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggZjAyNjgzYTFjYWIxZGEzMDQxNTU3NmY1NjllYmQ2MTA5
NjU2NGFiYy4uY2I3Y2MzMzJhYTQxZTg3M2IwZDAzMzA4MmZlMTBlYzc3ZDIzNzFhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTE1NDIsOCArMTU0Miw3
IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OmNvbnRhaW5zKGNvbnN0IExheW91dFBvaW50JiBwb2lu
dCkKICAgICBpZiAoIWRvY3VtZW50LT5yZW5kZXJlcigpKSAKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRP
bmx5IHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUp
OworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwg
SGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0Nv
bnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKICAgICBkb2N1bWVudC0+
cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgTm9kZSogaW5uZXJO
b2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcAppbmRleCBkMzYxOWViYWNiM2MwNmFlMGUyY2ViMGM4NDQyM2ViOGNmZGYyNjg2Li5mYjVi
YTUyOTI5Y2NiMGY5NDM1MTZhM2YxYzdkYzhjOGJhOWI0ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBAIHN0YXRpYyBFbGVtZW50KiBl
bGVtZW50VW5kZXJNb3VzZShEb2N1bWVudCogZG9jdW1lbnRVbmRlck1vdXNlLCBjb25zdCBJbnRQ
b2ludCYKICAgICBmbG9hdCB6b29tRmFjdG9yID0gZnJhbWUgPyBmcmFtZS0+cGFnZVpvb21GYWN0
b3IoKSA6IDE7CiAgICAgTGF5b3V0UG9pbnQgcG9pbnQgPSByb3VuZGVkTGF5b3V0UG9pbnQoRmxv
YXRQb2ludChwLngoKSAqIHpvb21GYWN0b3IsIHAueSgpICogem9vbUZhY3RvcikpOwogCi0gICAg
SGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0
UmVxdWVzdDo6QWN0aXZlKTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6
RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7
CiAgICAgZG9jdW1lbnRVbmRlck1vdXNlLT5yZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwg
cmVzdWx0KTsKIApAQCAtNTYzLDcgKzU2Myw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNhblBy
b2Nlc3NEcmFnKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICBpZiAoIW1fcGFnZS0+bWFpbkZyYW1l
KCktPmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1
bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQocG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpB
Y3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50KTsKKyAgICByZXN1bHQg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9p
bnQocG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3Rp
dmUpOwogCiAgICAgaWYgKCFyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTc0Nyw3ICs3NDcsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFy
dERyYWcoRnJhbWUqIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgog
ICAgIGlmICghc3JjLT52aWV3KCkgfHwgIXNyYy0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNyYy0+
ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRyYWdPcmlnaW4sIEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVz
dDo6QWxsb3dTaGFkb3dDb250ZW50KTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQg
PSBzcmMtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkcmFnT3JpZ2luLCBI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKICAgICBp
ZiAoIXN0YXRlLm1fZHJhZ1NyYy0+Y29udGFpbnMoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkp
CiAgICAgICAgIC8vIFRoZSBvcmlnaW5hbCBub2RlIGJlaW5nIGRyYWdnZWQgaXNuJ3QgdW5kZXIg
dGhlIGRyYWcgb3JpZ2luIGFueW1vcmUuLi4gbWF5YmUgaXQgd2FzCiAgICAgICAgIC8vIGhpZGRl
biBvciBtb3ZlZCBvdXQgZnJvbSB1bmRlciB0aGUgY3Vyc29yLiBSZWdhcmRsZXNzLCB3ZSBkb24n
dCB3YW50IHRvIHN0YXJ0IGEgZHJhZyBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CmluZGV4IGFmNWMxNGMzYzViMzc4NTg0ZTFhNjc4NGZjMTViNWZjNmM5NTQxYTkuLjQ1NTQ0MGVi
ZWQyZmJhY2U4NTJjZjg1NTQ5YmE4NzVkY2I5YWM2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKQEAgLTczOCw3ICs3MzgsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZQog
ICAgIH0KIAogICAgIGlmIChtX3NlbGVjdGlvbkluaXRpYXRpb25TdGF0ZSAhPSBFeHRlbmRlZFNl
bGVjdGlvbikgewotICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0
OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAgICAgICBIaXRUZXN0UmVx
dWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpB
Y3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQobV9tb3VzZURvd25Qb3MpOwogICAgICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5yZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKIApAQCAt
NzY5LDcgKzc2OSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKTsKLSAgICBIaXRUZXN0UmVx
dWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CisgICAgSGl0VGVzdFJlcXVl
c3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6RGlz
YWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5k
b3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpKTsKICAgICBtX2ZyYW1lLT5jb250ZW50UmVu
ZGVyZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIERyYWdTdGF0ZSBzdGF0ZTsK
QEAgLTc4NSw5ICs3ODUsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9y
TW91c2VEcmFnKCkKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBI
aXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpNb3ZlKTsKKyAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3Rp
dmUgfCBIaXRUZXN0UmVxdWVzdDo6TW92ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRv
d0NvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVu
dHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7CiAgICAgcmVuZGVyZXItPmhpdFRlc3QocmVx
dWVzdCwgcmVzdWx0KTsKICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcocmVzdWx0KTsK
QEAgLTEwNDIsNyArMTA0MCw3IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0
UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEhpdFRlCiAgICAgaWYgKCFy
ZXF1ZXN0LnJlYWRPbmx5KCkpCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUhv
dmVyQWN0aXZlU3RhdGUocmVxdWVzdCwgcmVzdWx0LmlubmVyRWxlbWVudCgpKTsKIAotICAgIGlm
ICghcmVxdWVzdC5hbGxvd3NTaGFkb3dDb250ZW50KCkpCisgICAgaWYgKHJlcXVlc3QuZGlzYWxs
b3dzU2hhZG93Q29udGVudCgpKQogICAgICAgICByZXN1bHQuc2V0VG9Ob25TaGFkb3dBbmNlc3Rv
cigpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE0NzgsNyArMTQ3Niw3IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBtb3VzZUV2ZW50KQogICAgIH0KICAgICBtX21vdXNlRG93bldhc0luU3ViZnJhbWUgPSBmYWxz
ZTsKIAotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7
CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0
VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgLy8gU2F2ZSB0aGUgZG9j
dW1lbnQgcG9pbnQgd2UgZ2VuZXJhdGUgaW4gY2FzZSB0aGUgd2luZG93IGNvb3JkaW5hdGUgaXMg
aW52YWxpZGF0ZWQgYnkgd2hhdCBoYXBwZW5zCiAgICAgLy8gd2hlbiB3ZSBkaXNwYXRjaCB0aGUg
ZXZlbnQuCiAgICAgTGF5b3V0UG9pbnQgZG9jdW1lbnRQb2ludCA9IGRvY3VtZW50UG9pbnRGb3JX
aW5kb3dQb2ludChtX2ZyYW1lLCBtb3VzZUV2ZW50LnBvc2l0aW9uKCkpOwpAQCAtMTU0MSw3ICsx
NTM5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgLy8gaW4gY2FzZSB0aGUgc2Nyb2xs
YmFyIHdpZGdldCB3YXMgZGVzdHJveWVkIHdoZW4gdGhlIG1vdXNlIGV2ZW50IHdhcyBoYW5kbGVk
LgogICAgIGlmIChtZXYuc2Nyb2xsYmFyKCkpIHsKICAgICAgICAgY29uc3QgYm9vbCB3YXNMYXN0
U2Nyb2xsQmFyID0gbWV2LnNjcm9sbGJhcigpID09IG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2Uu
Z2V0KCk7Ci0gICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CisgICAgICAgIEhpdFRlc3RSZXF1ZXN0
IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2
ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgICAgICBtZXYg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVu
dFBvaW50LCBtb3VzZUV2ZW50KTsKICAgICAgICAgaWYgKHdhc0xhc3RTY3JvbGxCYXIgJiYgbWV2
LnNjcm9sbGJhcigpICE9IG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UuZ2V0KCkpCiAgICAgICAg
ICAgICBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlID0gMDsKQEAgLTE1NjEsNyArMTU1OSw3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgICAgICAvLyB3ZSdkIGxpa2UgdG8gRXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQgdG8gcGFzcyB0aGUgZXZlbnQgdG8gdGhlIHdpZGdl
dCBhbmQgdGh1cyB0aGUKICAgICAgICAgLy8gZXZlbnQgdGFyZ2V0IG5vZGUgY2FuJ3Qgc3RpbGwg
YmUgdGhlIHNoYWRvdyBub2RlLgogICAgICAgICBpZiAobWV2LnRhcmdldE5vZGUoKS0+aXNTaGFk
b3dSb290KCkgJiYgdG9TaGFkb3dSb290KG1ldi50YXJnZXROb2RlKCkpLT5ob3N0KCktPmhhc1Rh
Z05hbWUoaW5wdXRUYWcpKSB7Ci0gICAgICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAgICAg
ICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBI
aXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29u
dGVudCk7CiAgICAgICAgICAgICBtZXYgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wcmVwYXJlTW91
c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVudFBvaW50LCBtb3VzZUV2ZW50KTsKICAgICAgICAgfQog
CkBAIC0xNTk0LDcgKzE1OTIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEb3Vi
bGVDbGlja0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdgogICAgIG1fbW91
c2VQcmVzc2VkID0gZmFsc2U7CiAgICAgc2V0TGFzdEtub3duTW91c2VQb3NpdGlvbihtb3VzZUV2
ZW50KTsKIAotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2
ZSk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwg
SGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBtb3VzZUV2
ZW50KTsKICAgICBGcmFtZSogc3ViZnJhbWUgPSBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQobWV2
KTsKICAgICBpZiAobV9ldmVudEhhbmRsZXJXaWxsUmVzZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05v
ZGUpCkBAIC0xNzA2LDcgKzE3MDQsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VN
b3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBIaQogICAgIGlm
IChtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlICYmIG1fbW91c2VQcmVzc2VkKQogICAgICAgICBy
ZXR1cm4gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS0+bW91c2VNb3ZlZChtb3VzZUV2ZW50KTsK
IAotICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRl
c3RSZXF1ZXN0OjpNb3ZlOworICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUg
aGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpNb3ZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93
U2hhZG93Q29udGVudDsKICAgICBpZiAobV9tb3VzZVByZXNzZWQpCiAgICAgICAgIGhpdFR5cGUg
fD0gSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKICAgICBlbHNlIGlmIChvbmx5VXBkYXRlU2Nyb2xs
YmFycykgewpAQCAtMTg1OSw3ICsxODU3LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1v
dXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAg
ICAgICAgcmV0dXJuICFkaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLm1vdXNldXBFdmVu
dCwgbV9sYXN0Tm9kZVVuZGVyTW91c2UuZ2V0KCksIGNhbmNlbGFibGUsIG1fY2xpY2tDb3VudCwg
bW91c2VFdmVudCwgc2V0VW5kZXIpOwogICAgIH0KIAotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVl
c3QoSGl0VGVzdFJlcXVlc3Q6OlJlbGVhc2UpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3Qo
SGl0VGVzdFJlcXVlc3Q6OlJlbGVhc2UgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dD
b250ZW50KTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IHByZXBhcmVN
b3VzZUV2ZW50KHJlcXVlc3QsIG1vdXNlRXZlbnQpOwogICAgIEZyYW1lKiBzdWJmcmFtZSA9IG1f
Y2FwdHVyaW5nTW91c2VFdmVudHNOb2RlLmdldCgpID8gc3ViZnJhbWVGb3JUYXJnZXROb2RlKG1f
Y2FwdHVyaW5nTW91c2VFdmVudHNOb2RlLmdldCgpKSA6IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3Vs
dChtZXYpOwogICAgIGlmIChtX2V2ZW50SGFuZGxlcldpbGxSZXNldENhcHR1cmluZ01vdXNlRXZl
bnRzTm9kZSkKQEAgLTIwMDgsNyArMjAwNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRhdGVE
cmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9hcmQqCiAg
ICAgaWYgKCFtX2ZyYW1lLT52aWV3KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhp
dFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5KTsKKyAgICBIaXRU
ZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1
ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgZXZlbnQpOwogCiAgICAgLy8g
RHJhZyBldmVudHMgc2hvdWxkIG5ldmVyIGdvIHRvIHRleHQgbm9kZXMgKGZvbGxvd2luZyBJRSwg
YW5kIHByb3BlciBtb3VzZW92ZXIvb3V0IGRpc3BhdGNoKQpAQCAtMjMyMSw3ICsyMzE5LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgTm9kZSogdGFyZ2UKIGJvb2wgRXZlbnRIYW5kbGVyOjppc0luc2lkZVNjcm9s
bGJhcihjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKFJlbmRl
clZpZXcqIHJlbmRlclZpZXcgPSBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkgewotICAgICAg
ICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CisgICAg
ICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0
VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0KHdpbmRvd1BvaW50KTsKICAgICAgICAgcmVuZGVyVmlldy0+aGl0VGVzdChyZXF1
ZXN0LCByZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0LnNjcm9sbGJhcigpOwpAQCAtMjM1
Myw3ICsyMzUxLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiBlKQogICAgIHNldEZyYW1lV2FzU2Nyb2xsZWRCeVVzZXIoKTsK
ICAgICBMYXlvdXRQb2ludCB2UG9pbnQgPSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGUucG9zaXRp
b24oKSk7CiAKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFk
T25seSk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHkgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCh2UG9pbnQpOwogICAgIGRvYy0+cmVuZGVyVmlldygpLT5oaXRUZXN0KHJl
cXVlc3QsIHJlc3VsdCk7CiAKQEAgLTI0NjQsNyArMjQ2Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVF
dmVudCkKICAgICB9CiAKICAgICBJbnRQb2ludCBhZGp1c3RlZFBvaW50ID0gZ2VzdHVyZUV2ZW50
LnBvc2l0aW9uKCk7Ci0gICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRU
eXBlID0gSGl0VGVzdFJlcXVlc3Q6OlRvdWNoRXZlbnQgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dT
aGFkb3dDb250ZW50OworICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0
VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpUb3VjaEV2ZW50OwogICAgIGlmIChnZXN0dXJlRXZlbnQu
dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUYXBEb3duKSB7CiAjaWYgRU5BQkxFKFRP
VUNIX0FESlVTVE1FTlQpCiAgICAgICAgIGFkanVzdEdlc3R1cmVQb3NpdGlvbihnZXN0dXJlRXZl
bnQsIGFkanVzdGVkUG9pbnQpOwpAQCAtMjU5Niw3ICsyNTk0LDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZUdlc3R1cmVMb25nUHJlc3MoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdl
c3R1cmVFdmUKICAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRG93bkV2ZW50KGFkanVz
dGVkUG9pbnQsIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBQbGF0
Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBX
VEY6OmN1cnJlbnRUaW1lKCkpOwogICAgICAgICBoYW5kbGVNb3VzZVByZXNzRXZlbnQobW91c2VE
b3duRXZlbnQpOwogICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VEcmFnRXZlbnQoYWRq
dXN0ZWRQb2ludCwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBX
VEY6OmN1cnJlbnRUaW1lKCkpOwotICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRl
c3RSZXF1ZXN0OjpSZWFkT25seSk7CisgICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29u
dGVudCk7CiAgICAgICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFy
ZU1vdXNlRXZlbnQocmVxdWVzdCwgbW91c2VEcmFnRXZlbnQpOwogICAgICAgICBtX2RpZFN0YXJ0
RHJhZyA9IGZhbHNlOwogICAgICAgICBSZWZQdHI8RnJhbWU+IHN1YmZyYW1lID0gc3ViZnJhbWVG
b3JIaXRUZXN0UmVzdWx0KG1ldik7CkBAIC0yNjI1LDcgKzI2MjMsNyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZUZvclRleHRTZWxlY3Rpb25PckNvbnRleHRNZW51KGNvbnN0IFBs
YXRmb3JtR2VzdAogewogI2lmIE9TKEFORFJPSUQpCiAgICAgSW50UG9pbnQgaGl0VGVzdFBvaW50
ID0gbV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGdlc3R1cmVFdmVudC5wb3NpdGlv
bigpKTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhp
dFRlc3RQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOworICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBIaXRUZXN0
UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKICAgICBOb2RlKiBp
bm5lck5vZGUgPSByZXN1bHQudGFyZ2V0Tm9kZSgpOwogICAgIGlmICghcmVzdWx0LmlzTGl2ZUxp
bmsoKSAmJiBpbm5lck5vZGUgJiYgKGlubmVyTm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSB8fCBp
bm5lck5vZGUtPmlzVGV4dE5vZGUoKSkpIHsKICAgICAgICAgc2VsZWN0Q2xvc2VzdFdvcmRGcm9t
SGl0VGVzdFJlc3VsdChyZXN1bHQsIERvbnRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UpOwpAQCAt
MjY3OCw3ICsyNjc2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxC
ZWdpbihjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUUKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgTGF5b3V0UG9pbnQgdmlld1BvaW50ID0gdmlldy0+d2luZG93VG9Db250
ZW50cyhnZXN0dXJlRXZlbnQucG9zaXRpb24oKSk7Ci0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVz
dChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3Qo
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93
Q29udGVudCk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlld1BvaW50KTsKICAgICBkb2N1
bWVudC0+cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAKQEAgLTI3ODgs
NyArMjc4Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpzaG91bGRBcHBseVRvdWNoQWRqdXN0bWVu
dChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZXZlbnQpCiBib29sIEV2ZW50SGFuZGxlcjo6
YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRl
ciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFBvaW50JiB0YXJnZXRQb2ludCwgTm9k
ZSomIHRhcmdldE5vZGUpCiB7CiAgICAgSW50UG9pbnQgaGl0VGVzdFBvaW50ID0gbV9mcmFtZS0+
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHRvdWNoQ2VudGVyKTsKLSAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpB
bGxvd1NoYWRvd0NvbnRlbnQsIHRvdWNoUmFkaXVzKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgdG91Y2hSYWRpdXMpOwogCiAgICAgSW50
UmVjdCB0b3VjaFJlY3QodG91Y2hDZW50ZXIgLSB0b3VjaFJhZGl1cywgdG91Y2hSYWRpdXMgKyB0
b3VjaFJhZGl1cyk7CiAgICAgUmVmUHRyPFN0YXRpY0hhc2hTZXROb2RlTGlzdD4gbm9kZUxpc3Qg
PSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0
KCkpOwpAQCAtMjgwNiw3ICsyODA0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmJlc3RDbGlja2Fi
bGVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGMKIGJvb2wg
RXZlbnRIYW5kbGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQ
b2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRvdWNoUmFkaXVzLCBJbnRQb2ludCYg
dGFyZ2V0UG9pbnQsIE5vZGUqJiB0YXJnZXROb2RlKQogewogICAgIEludFBvaW50IGhpdFRlc3RQ
b2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh0b3VjaENlbnRlcik7Ci0g
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9p
bnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBI
aXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50LCB0b3VjaFJhZGl1cyk7CisgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIHRvdWNoUmFk
aXVzKTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0gdG91Y2hSYWRpdXMs
IHRvdWNoUmFkaXVzICsgdG91Y2hSYWRpdXMpOwogICAgIFJlZlB0cjxTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3Q+IG5vZGVMaXN0ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVj
dEJhc2VkVGVzdFJlc3VsdCgpKTsKQEAgLTI4MTYsNyArMjgxNCw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91
Y2hDZW50ZXIsCiBib29sIEV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZvclRvdWNoUG9p
bnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25zdCBJbnRTaXplJiB0b3VjaFJhZGl1
cywgSW50UmVjdCYgdGFyZ2V0QXJlYSwgTm9kZSomIHRhcmdldE5vZGUpCiB7CiAgICAgSW50UG9p
bnQgaGl0VGVzdFBvaW50ID0gbV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHRvdWNo
Q2VudGVyKTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50
KGhpdFRlc3RQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6
OkFjdGl2ZSwgdG91Y2hSYWRpdXMpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVz
dFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBI
aXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29u
dGVudCwgdG91Y2hSYWRpdXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJlY3QodG91Y2hDZW50ZXIg
LSB0b3VjaFJhZGl1cywgdG91Y2hSYWRpdXMgKyB0b3VjaFJhZGl1cyk7CiAgICAgUmVmUHRyPFN0
YXRpY0hhc2hTZXROb2RlTGlzdD4gbm9kZUxpc3QgPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFk
b3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwpAQCAtMjg1OSw3ICsyODU3LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZlbnQpCiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKICAgICBib29sIHN3
YWxsb3dFdmVudDsKICAgICBMYXlvdXRQb2ludCB2aWV3cG9ydFBvcyA9IHYtPndpbmRvd1RvQ29u
dGVudHMoZXZlbnQucG9zaXRpb24oKSk7Ci0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRU
ZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsK
ICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IGRvYy0+cHJlcGFyZU1vdXNl
RXZlbnQocmVxdWVzdCwgdmlld3BvcnRQb3MsIGV2ZW50KTsKIAogICAgIGlmIChtX2ZyYW1lLT5l
ZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RPbkNvbnRleHR1YWxNZW51Q2xpY2soKQpA
QCAtMjkzNiw3ICsyOTM0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2
ZW50Rm9yS2V5KCkKICAgICAvLyBVc2UgdGhlIGZvY3VzZWQgbm9kZSBhcyB0aGUgdGFyZ2V0IGZv
ciBob3ZlciBhbmQgYWN0aXZlLgogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvc2l0aW9uKTsK
ICAgICByZXN1bHQuc2V0SW5uZXJOb2RlKHRhcmdldE5vZGUpOwotICAgIGRvYy0+dXBkYXRlSG92
ZXJBY3RpdmVTdGF0ZShIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCByZXN1bHQuaW5uZXJFbGVtZW50
KCkpOworICAgIGRvYy0+dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShIaXRUZXN0UmVxdWVzdDo6QWN0
aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCwgcmVzdWx0LmlubmVy
RWxlbWVudCgpKTsKIAogICAgIC8vIFRoZSBjb250ZXh0bWVudSBldmVudCBpcyBhIG1vdXNlIGV2
ZW50IGV2ZW4gd2hlbiBpbnZva2VkIHVzaW5nIHRoZSBrZXlib2FyZC4KICAgICAvLyBUaGlzIGlz
IHJlcXVpcmVkIGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KQEAgLTMwNzAsNyArMzA2OCw3IEBAIHZv
aWQgRXZlbnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQoVGltZXI8RXZlbnRIYW5kbGVyPiopCiAK
ICAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyZXIgPSBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIo
KSkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpKSB7Ci0g
ICAgICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpNb3ZlKTsK
KyAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6Ok1vdmUg
fCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAgICAgICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3Vz
ZVBvc2l0aW9uKSk7CiAgICAgICAgICAgICByZW5kZXJlci0+aGl0VGVzdChyZXF1ZXN0LCByZXN1
bHQpOwogICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlSG92ZXJBY3RpdmVT
dGF0ZShyZXF1ZXN0LCByZXN1bHQuaW5uZXJFbGVtZW50KCkpOwpAQCAtMzM3Nyw3ICszMzc1LDcg
QEAgdm9pZCBFdmVudEhhbmRsZXI6OmZyZWVDbGlwYm9hcmQoKQogdm9pZCBFdmVudEhhbmRsZXI6
OmRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIERyYWdP
cGVyYXRpb24gb3BlcmF0aW9uKQogewogICAgIC8vIFNlbmQgYSBoaXQgdGVzdCByZXF1ZXN0IHNv
IHRoYXQgUmVuZGVyTGF5ZXIgZ2V0cyBhIGNoYW5jZSB0byB1cGRhdGUgdGhlIDpob3ZlciBhbmQg
OmFjdGl2ZSBwc2V1ZG9jbGFzc2VzLgotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVz
dFJlcXVlc3Q6OlJlbGVhc2UpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJl
cXVlc3Q6OlJlbGVhc2UgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsK
ICAgICBwcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBldmVudCk7CiAKICAgICBpZiAoZHJhZ1N0
YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzKCkpIHsK
QEAgLTM0MzAsNyArMzQyOCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgICAgIGRy
YWdTdGF0ZSgpLm1fZXZlbnREaXNwYXRjaFBvbGljeSA9ICh1cGRhdGVEcmFnU291cmNlQWN0aW9u
c0FsbG93ZWQoKSAmIERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgPyBEcmFnU3RhdGU6OkRpc3BhdGNo
RXZlbnRzOiBEcmFnU3RhdGU6OkRvTm90RGlzcGF0Y2hFdmVudHM7CiAKICAgICAgICAgLy8gdHJ5
IHRvIGZpbmQgYW4gZWxlbWVudCB0aGF0IHdhbnRzIHRvIGJlIGRyYWdnZWQKLSAgICAgICAgSGl0
VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOworICAgICAgICBI
aXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RS
ZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgICAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdChtX21vdXNlRG93blBvcyk7CiAgICAgICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigp
LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgICAgIE5vZGUqIG5vZGUgPSByZXN1bHQu
aW5uZXJOb2RlKCk7CkBAIC0zOTA2LDcgKzM5MDQsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAgICBp
ZiAocG9pbnRTdGF0ZSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCkgewogICAg
ICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQ7CiAgICAgICAgICAgICBpZiAoZnJlc2hUb3Vj
aEV2ZW50cykgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50
KHBhZ2VQb2ludCwgaGl0VHlwZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQp
OworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KHBhZ2VQb2lu
dCwgaGl0VHlwZSk7CiAgICAgICAgICAgICAgICAgbV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJn
ZXRLZXkgPSB0b3VjaFBvaW50VGFyZ2V0S2V5OwogICAgICAgICAgICAgfSBlbHNlIGlmIChtX29y
aWdpbmF0aW5nVG91Y2hQb2ludERvY3VtZW50LmdldCgpICYmIG1fb3JpZ2luYXRpbmdUb3VjaFBv
aW50RG9jdW1lbnQtPmZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRQb2ludCBwYWdl
UG9pbnRJbk9yaWdpbmF0aW5nRG9jdW1lbnQgPSBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9pbnQo
bV9vcmlnaW5hdGluZ1RvdWNoUG9pbnREb2N1bWVudC0+ZnJhbWUoKSwgcG9pbnQucG9zKCkpOwpA
QCAtMzk0MCw3ICszOTM4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQo
Y29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgfSBlbHNlIGlmIChwb2lu
dFN0YXRlID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCB8fCBwb2ludFN0YXRl
ID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQpIHsKICAgICAgICAgICAgIC8v
IFdlIG9ubHkgcGVyZm9ybSBhIGhpdHRlc3Qgb24gcmVsZWFzZSBvciBjYW5jZWwgdG8gdW5zZXQg
OmFjdGl2ZSBvciA6aG92ZXIgc3RhdGUuCiAgICAgICAgICAgICBpZiAodG91Y2hQb2ludFRhcmdl
dEtleSA9PSBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldEtleSkgewotICAgICAgICAgICAg
ICAgIGhpdFRlc3RSZXN1bHRBdFBvaW50KHBhZ2VQb2ludCwgaGl0VHlwZSB8IEhpdFRlc3RSZXF1
ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOworICAgICAgICAgICAgICAgIGhpdFRlc3RSZXN1bHRB
dFBvaW50KHBhZ2VQb2ludCwgaGl0VHlwZSk7CiAgICAgICAgICAgICAgICAgbV9vcmlnaW5hdGlu
Z1RvdWNoUG9pbnRUYXJnZXRLZXkgPSAwOwogICAgICAgICAgICAgfSBlbHNlIGlmIChtX29yaWdp
bmF0aW5nVG91Y2hQb2ludERvY3VtZW50LmdldCgpICYmIG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50
RG9jdW1lbnQtPmZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRQb2ludCBwYWdlUG9p
bnRJbk9yaWdpbmF0aW5nRG9jdW1lbnQgPSBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9pbnQobV9v
cmlnaW5hdGluZ1RvdWNoUG9pbnREb2N1bWVudC0+ZnJhbWUoKSwgcG9pbnQucG9zKCkpOwpAQCAt
NDA0OCw3ICs0MDQ2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoU3ludGhldGljVG91
Y2hFdmVudElmRW5hYmxlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQKICAgICBpZiAoZXZlbnRU
eXBlICE9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgJiYgZXZlbnRUeXBlICE9IFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlUHJlc3NlZCAmJiBldmVudFR5cGUgIT0gUGxhdGZvcm1FdmVudDo6TW91c2VS
ZWxlYXNlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVx
dWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0
KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dD
b250ZW50KTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IHByZXBhcmVN
b3VzZUV2ZW50KHJlcXVlc3QsIGV2ZW50KTsKICAgICBpZiAobWV2LnNjcm9sbGJhcigpIHx8IHN1
YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChtZXYpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAzYjVjMzFhNGQ0ZWQzNmMwMGRmNWU5MGYxOTky
MDgwODhiYWQwNjc3Li5jN2VkNzkzNTRlZWU2MDIxODY1NDJiYjRjMzgzNzZkY2YzNTM1NDBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTEzMSw4ICsxMzEsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb25JblF1YWQoY29uc3QgRmxv
YXRRdWFkJik7CiAKICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0
IExheW91dFBvaW50JiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhp
dFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0
OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRTaXplJiBwYWRkaW5nID0gTGF5b3V0U2l6
ZSgpKTsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBl
ID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhp
dFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQsCisgICAgICAgIGNvbnN0IExheW91
dFNpemUmIHBhZGRpbmcgPSBMYXlvdXRTaXplKCkpOwogCiAgICAgYm9vbCBtb3VzZVByZXNzZWQo
KSBjb25zdCB7IHJldHVybiBtX21vdXNlUHJlc3NlZDsgfQogICAgIHZvaWQgc2V0TW91c2VQcmVz
c2VkKGJvb2wgcHJlc3NlZCkgeyBtX21vdXNlUHJlc3NlZCA9IHByZXNzZWQ7IH0KQEAgLTI5OCw3
ICsyOTgsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBib29s
IGRpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudElmRW5hYmxlZChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmKTsKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRJbkZyYW1lKEZyYW1lKiwg
Y29uc3QgTGF5b3V0UG9pbnQmLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhp
dFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZl
KTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRJbkZyYW1lKEZyYW1lKiwgY29uc3Qg
TGF5b3V0UG9pbnQmLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUg
PSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0
VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAjZW5kaWYKIAogICAgIHZvaWQg
aW52YWxpZGF0ZUNsaWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAK
aW5kZXggN2VmNmZjNjFjZmM4YjVjMGFkNTYyYTNmNDVkNDU5OGE3ZWYyOWY0OS4uYWFmYzMzY2U0
OGU3MWMzNGE0YTA1ZTdlZWNkNmFmYWRiZjllZWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcApAQCAtNzIxLDcgKzcyMSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUZv
Y3VzQ2FuZGlkYXRlSWZOZWVkZWQoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBGb2N1
c0NhCiAgICAgICAgIC8vIElmIDIgbm9kZXMgYXJlIGludGVyc2VjdGluZywgZG8gaGl0IHRlc3Qg
dG8gZmluZCB3aGljaCBub2RlIGluIG9uIHRvcC4KICAgICAgICAgTGF5b3V0VW5pdCB4ID0gaW50
ZXJzZWN0aW9uUmVjdC54KCkgKyBpbnRlcnNlY3Rpb25SZWN0LndpZHRoKCkgLyAyOwogICAgICAg
ICBMYXlvdXRVbml0IHkgPSBpbnRlcnNlY3Rpb25SZWN0LnkoKSArIGludGVyc2VjdGlvblJlY3Qu
aGVpZ2h0KCkgLyAyOwotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGNhbmRpZGF0ZS52
aXNpYmxlTm9kZS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KEludFBvaW50KHgsIHkpLCBIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9y
ZUNsaXBwaW5nKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBjYW5kaWRhdGUudmlz
aWJsZU5vZGUtPmRvY3VtZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChJbnRQb2ludCh4LCB5KSwgSGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVD
bGlwcGluZyB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgICAg
ICBpZiAoY2FuZGlkYXRlLnZpc2libGVOb2RlLT5jb250YWlucyhyZXN1bHQuaW5uZXJOb2RlKCkp
KSB7CiAgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBhY2Q3MzQyZDNlMjdmZWFhMDEyMTQxMzY2ZDU4YjFl
NTdjMDQ4NWE4Li43NzEwYWY3MjkyZjZhZTk4OGFiODUyMzE0OTcxMWFiODdlMGZmYTRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcApAQCAtNzIyLDcgKzcyMiw3IEBAIFN0cmluZyBGcmFtZTo6ZGlzcGxh
eVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhjb25zdCBTdHJpbmcmIHN0cikgY29uc3QKIAogVmlz
aWJsZVBvc2l0aW9uIEZyYW1lOjp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2lu
dCYgZnJhbWVQb2ludCkKIHsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGV2ZW50SGFuZGxl
cigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZVBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVh
ZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hh
ZG93Q29udGVudCk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXIoKS0+
aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWVQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5l
ck5vblNoYXJlZE5vZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBWaXNpYmxl
UG9zaXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hEaXNhbWJp
Z3VhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoRGlzYW1iaWd1YXRpb24uY3Bw
CmluZGV4IDA4YjM1MzhjYjZjZWI5MWQwMTMwOWMzMThmN2M5NmMyNWRiNjA4MDkuLjZlMmJmZDJi
NzU2NTkxZTExZGY1NTlmYTc4ZTgzZmUzYTgzNjg2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVG91Y2hEaXNhbWJpZ3VhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Ub3VjaERpc2FtYmlndWF0aW9uLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIGZpbmRHb29k
VG91Y2hUYXJnZXRzKGNvbnN0IEludFJlY3QmIHRvdWNoQm94LCBGcmFtZSogbWFpbkZyYW1lLCBW
ZWN0b3I8SW50UgogICAgIEludFBvaW50IHRvdWNoUG9pbnQgPSB0b3VjaEJveC5jZW50ZXIoKTsK
ICAgICBJbnRQb2ludCBjb250ZW50c1BvaW50ID0gbWFpbkZyYW1lLT52aWV3KCktPndpbmRvd1Rv
Q29udGVudHModG91Y2hQb2ludCk7CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5G
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRzUG9pbnQs
IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEludFNp
emUocGFkZGluZywgcGFkZGluZykpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbkZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29udGVudHNQb2ludCwg
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQsIEludFNpemUocGFkZGluZywgcGFkZGlu
ZykpOwogICAgIGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBoaXRSZXN1bHRzID0g
cmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKTsKIAogICAgIC8vIEJsYWNrbGlzdCBub2RlcyB0
aGF0IGFyZSBjb250YWluZXIgb2YgZGlzYW1iaWd1YXRlZCBub2Rlcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKaW5kZXggMjJlNWQzNzZjOGI4NjUzZGY5YTI3MzY0
YmRkNmY5MGZlNzcyNmQyZi4uODc4MWM3OGI4OTQwYmM2MTlkMjEwOTZlNWM0MTU1YTEyMzg0Zjg4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKQEAgLTM1LDcg
KzM1LDcgQEAgcHVibGljOgogICAgICAgICBJZ25vcmVDbGlwcGluZyA9IDEgPDwgNSwKICAgICAg
ICAgU1ZHQ2xpcENvbnRlbnQgPSAxIDw8IDYsCiAgICAgICAgIFRvdWNoRXZlbnQgPSAxIDw8IDcs
Ci0gICAgICAgIEFsbG93U2hhZG93Q29udGVudCA9IDEgPDwgOCwKKyAgICAgICAgRGlzYWxsb3dT
aGFkb3dDb250ZW50ID0gMSA8PCA4LAogICAgICAgICBBbGxvd0ZyYW1lU2Nyb2xsYmFycyA9IDEg
PDwgOSwKICAgICAgICAgQWxsb3dDaGlsZEZyYW1lQ29udGVudCA9IDEgPDwgMTAsCiAgICAgICAg
IENoaWxkRnJhbWVIaXRUZXN0ID0gMSA8PCAxMQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBzdmdDbGlwQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBT
VkdDbGlwQ29udGVudDsgfQogICAgIGJvb2wgdG91Y2hFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVxdWVzdFR5cGUgJiBUb3VjaEV2ZW50OyB9CiAgICAgYm9vbCBtb3VzZUV2ZW50KCkgY29uc3Qg
eyByZXR1cm4gIXRvdWNoRXZlbnQoKTsgfQotICAgIGJvb2wgYWxsb3dzU2hhZG93Q29udGVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBBbGxvd1NoYWRvd0NvbnRlbnQ7IH0KKyAg
ICBib29sIGRpc2FsbG93c1NoYWRvd0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RU
eXBlICYgRGlzYWxsb3dTaGFkb3dDb250ZW50OyB9CiAgICAgYm9vbCBhbGxvd3NGcmFtZVNjcm9s
bGJhcnMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgQWxsb3dGcmFtZVNjcm9sbGJh
cnM7IH0KICAgICBib29sIGFsbG93c0NoaWxkRnJhbWVDb250ZW50KCkgY29uc3QgeyByZXR1cm4g
bV9yZXF1ZXN0VHlwZSAmIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQ7IH0KICAgICBib29sIGlzQ2hp
bGRGcmFtZUhpdFRlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgQ2hpbGRGcmFt
ZUhpdFRlc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApp
bmRleCBjNjM2ZjU3ZjliZDM2NzhiYzFkOWI2NjM5NjJjNDhjYTY5NWYyZTUyLi41ZmYxOWMwN2Y4
YjJhMTQzMDE1YWVmMTA5MzQ3OTg5OGRhYWJlYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC01NTYsNyArNTU2LDcgQEAgYm9vbCBIaXRUZXN0UmVz
dWx0OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqIG5vZGUsIGNvbnN0IEhpdFRl
c3RSZXF1ZXMKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYg
KCFyZXF1ZXN0LmFsbG93c1NoYWRvd0NvbnRlbnQoKSkKKyAgICBpZiAocmVxdWVzdC5kaXNhbGxv
d3NTaGFkb3dDb250ZW50KCkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5kb2N1bWVudCgpLT5hbmNl
c3RvckluVGhpc1Njb3BlKG5vZGUpOwogCiAgICAgbXV0YWJsZVJlY3RCYXNlZFRlc3RSZXN1bHQo
KS5hZGQobm9kZSk7CkBAIC01NzYsNyArNTc2LDcgQEAgYm9vbCBIaXRUZXN0UmVzdWx0OjphZGRO
b2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqIG5vZGUsIGNvbnN0IEhpdFRlc3RSZXF1ZXMK
ICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFyZXF1ZXN0
LmFsbG93c1NoYWRvd0NvbnRlbnQoKSkKKyAgICBpZiAocmVxdWVzdC5kaXNhbGxvd3NTaGFkb3dD
b250ZW50KCkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5kb2N1bWVudCgpLT5hbmNlc3RvckluVGhp
c1Njb3BlKG5vZGUpOwogCiAgICAgbXV0YWJsZVJlY3RCYXNlZFRlc3RSZXN1bHQoKS5hZGQobm9k
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKaW5k
ZXggYmI3ZGFlNWM4MzEwMDE1YTRmZTllNDYyODg4MDllNzQ2N2U0NDc0Ni4uZTJlMWYwZmRmMTJk
YzdmYTA2ZmRlMzc0ZjUwMTA2MDhhYzMzZmI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIGJvb2wgUmVuZGVy
Rmxvd1RocmVhZDo6aGl0VGVzdEZsb3dUaHJlYWRQb3J0aW9uSW5SZWdpb24oUmVuZGVyUmVnaW9u
KiByZWdpb24sIExhCiAgICAgICAgIHJlbmRlckZsb3dUaHJlYWRPZmZzZXQgPSBhY2N1bXVsYXRl
ZE9mZnNldCAtIGZsb3dUaHJlYWRQb3J0aW9uUmVjdC5sb2NhdGlvbigpOwogCiAgICAgLy8gQWx3
YXlzIGlnbm9yZSBjbGlwcGluZywgc2luY2UgdGhlIFJlbmRlckZsb3dUaHJlYWQgaGFzIG5vdGhp
bmcgdG8gZG8gd2l0aCB0aGUgYm91bmRzIG9mIHRoZSBGcmFtZVZpZXcuCi0gICAgSGl0VGVzdFJl
cXVlc3QgbmV3UmVxdWVzdChyZXF1ZXN0LnR5cGUoKSB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVD
bGlwcGluZyk7CisgICAgSGl0VGVzdFJlcXVlc3QgbmV3UmVxdWVzdChyZXF1ZXN0LnR5cGUoKSB8
IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZyB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxv
d1NoYWRvd0NvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQpOwog
CiAgICAgLy8gTWFrZSBhIG5ldyB0ZW1wb3JhcnkgSGl0VGVzdExvY2F0aW9uIGluIHRoZSBuZXcg
cmVnaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCmluZGV4IDgyMmE3OWJhNzVmMDFlNmE4YzQ5YzM4MTJj
ZjhhMTUzOWJhYzI3YjEuLmIwODU1ZmEzZTI1MDk4ZTMzMzM4OGVlMWYyN2FmZTJiYmM2NjAyZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCBib29sIFJlbmRlclNWR1Jl
c291cmNlQ2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50KGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0
Qm91bmRpbgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEludFBvaW50IGhpdFBvaW50
OwogICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChoaXRQb2ludCk7Ci0gICAgICAgIGlmIChy
ZW5kZXJlci0+bm9kZUF0RmxvYXRQb2ludChIaXRUZXN0UmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6
U1ZHQ2xpcENvbnRlbnQpLCByZXN1bHQsIHBvaW50LCBIaXRUZXN0Rm9yZWdyb3VuZCkpCisgICAg
ICAgIGlmIChyZW5kZXJlci0+bm9kZUF0RmxvYXRQb2ludChIaXRUZXN0UmVxdWVzdChIaXRUZXN0
UmVxdWVzdDo6U1ZHQ2xpcENvbnRlbnQgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dD
b250ZW50KSwgcmVzdWx0LCBwb2ludCwgSGl0VGVzdEZvcmVncm91bmQpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggODM4NDI2ZGJjNTBjYWFjYmM2NTBiZDFjOTI2NjA2NTVkMWEzNDc4MC4uZDJmMjcyNDZmZTA1
YjI5ZmNmYWVlNTZlZDQwYjc5OGFjMzFjZGJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtMTQyMSw4ICsxNDIxLDggQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW50ZXJu
YWxzOjpub2Rlc0Zyb21SZWN0KERvY3VtZW50KiBkb2N1bWVudCwgaW50IHgsIGludCB5LAogICAg
IEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmU7CiAgICAgaWYgKGlnbm9yZUNs
aXBwaW5nKQogICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGlu
ZzsKLSAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQotICAgICAgICBoaXRUeXBlIHw9IEhpdFRl
c3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7CisgICAgaWYgKCFhbGxvd1NoYWRvd0NvbnRl
bnQpCisgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29u
dGVudDsKICAgICBpZiAoYWxsb3dDaGlsZEZyYW1lQ29udGVudCkKICAgICAgICAgaGl0VHlwZSB8
PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggZDMwYzE2YmM0YzE1YTBiMjZkMmYwZmNi
ZDRiOTY5NDAyZjc0ZDJlZC4uM2VmNGNjNTUzYzI4Mzk3NjcyYjA4OGU3OTJhNjFiYmI3ODljYTc2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC02MjM4LDcg
KzYyMzgsNyBAQCBjb25zdCBIaXRUZXN0UmVzdWx0JiBXZWJQYWdlUHJpdmF0ZTo6aGl0VGVzdFJl
c3VsdChjb25zdCBJbnRQb2ludCYgY29udGVudFBvcykKIHsKICAgICBpZiAobV9jYWNoZWRIaXRU
ZXN0Q29udGVudFBvcyAhPSBjb250ZW50UG9zKSB7CiAgICAgICAgIG1fY2FjaGVkSGl0VGVzdENv
bnRlbnRQb3MgPSBjb250ZW50UG9zOwotICAgICAgICBtX2NhY2hlZEhpdFRlc3RSZXN1bHQgPSBt
X21haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1fY2FjaGVk
SGl0VGVzdENvbnRlbnRQb3MsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50KTsKKyAgICAg
ICAgbV9jYWNoZWRIaXRUZXN0UmVzdWx0ID0gbV9tYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChtX2NhY2hlZEhpdFRlc3RDb250ZW50UG9zLCBIaXRUZXN0UmVx
dWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gbV9jYWNoZWRIaXRUZXN0UmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRmF0RmluZ2Vycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNwcAppbmRleCA3N2Q1NmMwZTA3YWVk
YmM4ZTY2MzE5OThlNzVkN2QwZGU4NzNlOTc2Li5jNTFkZmY2MDA4YmRjNDY5NmU2NDg4OTE3YTEy
MTIzZDk1NDAyMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9GYXRGaW5nZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNwcApAQCAtNDY1LDggKzQ2NSw4IEBAIHZvaWQgRmF0Rmlu
Z2Vyczo6Z2V0Tm9kZXNGcm9tUmVjdChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEludFBvaW50
JiBjb250ZW50UG9zCiAgICAgLy8gVGhlIHVzZXIgZnVuY3Rpb25zIGNoZWNrRm9yVGV4dCgpIGFu
ZCBmaW5kSW50ZXJzZWN0aW5nUmVnaW9ucygpIHVzZXMgdGhlIE5vZGUud2hvbGVUZXh0KCkgdG8g
Y2hlY2tGaW5nZXJJbnRlcnNlY3Rpb24oKQogICAgIC8vIG5vdCB0aGUgdGV4dCBpbiBpdHMgc2hh
ZG93IHRyZWUuCiAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSByZXF1ZXN0
VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmU7
Ci0gICAgaWYgKG1fdGFyZ2V0VHlwZSA9PSBUZXh0KQotICAgICAgICByZXF1ZXN0VHlwZSB8PSBI
aXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50OworICAgIGlmIChtX3RhcmdldFR5cGUg
IT0gVGV4dCkKKyAgICAgICAgcmVxdWVzdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93
U2hhZG93Q29udGVudDsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChjb250ZW50UG9zLCB0b3BQ
YWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKTsKIAogICAg
IGRvY3VtZW50LT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdFR5cGUsIHJl
c3VsdCk7CkBAIC01MDYsNCArNTA2LDMgQEAgdm9pZCBGYXRGaW5nZXJzOjpzZXRTdWNjZXNzZnVs
RmF0RmluZ2Vyc1Jlc3VsdChGYXRGaW5nZXJzUmVzdWx0JiByZXN1bHQsIE5vZGUqIGIKIAogfQog
fQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9Q
cm94aW1pdHlEZXRlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9Qcm94aW1pdHlEZXRlY3Rvci5jcHAKaW5kZXggNTUwM2FhMjVhYmUzY2JkMjkzNzllYjBh
OWE0MWRiMjE5YjllN2RlNy4uYjkyYmU0ZTdiODg1NmU3N2VhNzM2N2I1MDQzMGQxN2JkZGIwZWJj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvUHJv
eGltaXR5RGV0ZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L1Byb3hpbWl0eURldGVjdG9yLmNwcApAQCAtNzMsNyArNzMsNyBAQCBJbnRQb2ludCBQ
cm94aW1pdHlEZXRlY3Rvcjo6ZmluZEJlc3RQb2ludChjb25zdCBJbnRQb2ludCYgZG9jdW1lbnRQ
b3MsIGNvbnN0IEludAogCiAgICAgLy8gQWRqdXN0IGhpdCBwb2ludCB0byBmcmFtZQogICAgIElu
dFBvaW50IGZyYW1lQ29udGVudFBvcyhkb2N1bWVudC0+ZnJhbWUoKS0+dmlldygpLT53aW5kb3dU
b0NvbnRlbnRzKG1fd2ViUGFnZS0+bV9tYWluRnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRv
dyhkb2N1bWVudFBvcykpKTsKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZyk7CisgICAgSGl0
VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVx
dWVzdDo6SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250
ZW50KTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChmcmFtZUNvbnRlbnRQb3MsIHRvcCwgcmln
aHQsIGJvdHRvbSwgbGVmdCk7CiAgICAgZG9jdW1lbnQtPnJlbmRlclZpZXcoKS0+bGF5ZXIoKS0+
aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwCmluZGV4IGNi
ZTQ1NjliYjhmZTk2NzMyYmRmOTQ4M2Y0NjA4MjNhMjM4Nzg5Y2UuLmE1YWQ5MzkxMTRlNzdiN2Y2
N2MwMTRkMDI4ZDRkZTZmYjk2M2RjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwCkBAIC0xNzIs
NyArMTcyLDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2lu
dElnbm9yaW5nQ2xpcHBpbmcoY29uc3QgRnJhbWUmIGZyYW0KICAgICAvLyBvdXRzaWRlIHRoZSB2
aXNpYmxlIHJlY3QuIFRvIHdvcmsgYXJvdW5kIHRoZSBidWcsIHRoaXMgaXMgYSBjb3B5IG9mCiAg
ICAgLy8gdmlzaWJsZVBvc2l0aW9uQXRQb2ludCB3aGljaCB3aGljaCBwYXNzZXMgaWdub3JlQ2xp
cHBpbmc9dHJ1ZS4KICAgICAvLyBTZWUgUklNIEJ1ZyAjNDMxNS4KLSAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IGZyYW1lLmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFt
ZVBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZl
IHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCB8IEhpdFRlc3RSZXF1ZXN0OjpJ
Z25vcmVDbGlwcGluZyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWVQb2ludCwgSGl0VGVzdFJlcXVlc3Q6
OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25v
cmVDbGlwcGluZyk7CiAKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAg
IGlmICghbm9kZSB8fCBub2RlLT5kb2N1bWVudCgpICE9IGZyYW1lLmRvY3VtZW50KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNw
cAppbmRleCBlNzc3NjRhZmU1ZDE5ZjY3ZjYyMTZlZWQzOGRhZjgwODM1ZWE5YjhjLi5kOWIxN2Nm
ZDkyNjdlYjIwNTU4ZGNkODI0Y2MxNGJmYmZlN2M1YTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKQEAgLTEyMSw3ICsx
MjEsNyBAQCBzdGF0aWMgU3RyaW5nIHNlbGVjdE1pc3NwZWxsZWRXb3JkKGNvbnN0IENvbnRleHRN
ZW51KiBkZWZhdWx0TWVudSwgRnJhbWUqIHNlbGVjdAogCiAgICAgLy8gU2VsZWN0aW9uIGlzIGVt
cHR5LCBzbyBjaGFuZ2UgdGhlIHNlbGVjdGlvbiB0byB0aGUgd29yZCB1bmRlciB0aGUgY3Vyc29y
LgogICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNlbGVjdGVkRnJhbWUtPmV2ZW50
SGFuZGxlcigpLT4KLSAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQoc2VsZWN0ZWRGcmFtZS0+
cGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+aGl0VGVzdFJlc3VsdCgpLnBvaW50SW5J
bm5lck5vZGVGcmFtZSgpLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7CisgICAgICAg
IGhpdFRlc3RSZXN1bHRBdFBvaW50KHNlbGVjdGVkRnJhbWUtPnBhZ2UoKS0+Y29udGV4dE1lbnVD
b250cm9sbGVyKCktPmhpdFRlc3RSZXN1bHQoKS5wb2ludEluSW5uZXJOb2RlRnJhbWUoKSwgSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CiAgICAgTm9k
ZSogaW5uZXJOb2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKTsKICAgICBWaXNpYmxlUG9z
aXRpb24gcG9zKGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludCgKICAgICAg
ICAgaGl0VGVzdFJlc3VsdC5sb2NhbFBvaW50KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDU3YWVlNGMzMjA2MjMzOTczNDQ0NjQ5OGIxYTE1
YWUwYTYzMDQ4MTguLjA0ODljZjdlYzg1MzY5OGRlOWRmYTljMzI4Y2JmMGRmYTBmYzA0NjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMTM5OCw3
ICsxMzk4LDcgQEAgdm9pZCBXZWJGcmFtZUltcGw6Om1vdmVDYXJldFNlbGVjdGlvblRvd2FyZHNX
aW5kb3dQb2ludChjb25zdCBXZWJQb2ludCYgcG9pbnQpCiAKIFZpc2libGVQb3NpdGlvbiBXZWJG
cmFtZUltcGw6OnZpc2libGVQb3NpdGlvbkZvcldpbmRvd1BvaW50KGNvbnN0IFdlYlBvaW50JiBw
b2ludCkKIHsKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0ID0gSGl0VGVzdFJlcXVlc3Q6Ok1v
dmUgfCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwg
SGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVl
c3QgPSBIaXRUZXN0UmVxdWVzdDo6TW92ZSB8IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcgfCBI
aXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50OwogICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0KGZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhJbnRQb2ludChwb2ludCkp
KTsKIAogICAgIGZyYW1lKCktPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKS0+bGF5ZXIoKS0+aGl0
VGVzdChyZXF1ZXN0LCByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAppbmRleCBiODg3OTI1MDA5NjI3MzdiY2Rj
YjFmNTQ5NWNlN2VkOGU2ZDA0YTU0Li4wMmZiMzA1ODE3YzE5NzIxNjIxMzUwMGZkODY4NTYyOWFj
Y2ExZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5D
b250YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVn
aW5Db250YWluZXJJbXBsLmNwcApAQCAtNDY3LDcgKzQ2Nyw3IEBAIGJvb2wgV2ViUGx1Z2luQ29u
dGFpbmVySW1wbDo6aXNSZWN0VG9wbW9zdChjb25zdCBXZWJSZWN0JiByZWN0KQogICAgIExheW91
dFBvaW50IGNlbnRlciA9IGRvY3VtZW50UmVjdC5jZW50ZXIoKTsKICAgICAvLyBNYWtlIHRoZSBy
ZWN0IHdlJ3JlIGNoZWNraW5nICh0aGUgcG9pbnQgc3Vycm91bmRlZCBieSBwYWRkaW5nIHJlY3Rz
KSBjb250YWluZWQgaW5zaWRlIHRoZSByZXF1ZXN0ZWQgcmVjdC4gKE5vdGUgdGhhdCAtMS8yIGlz
IDAuKQogICAgIExheW91dFNpemUgcGFkZGluZygoZG9jdW1lbnRSZWN0LndpZHRoKCkgLSAxKSAv
IDIsIChkb2N1bWVudFJlY3QuaGVpZ2h0KCkgLSAxKSAvIDIpOwotICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjZW50
ZXIsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIHBh
ZGRpbmcpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChjZW50ZXIsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8
IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dD
b250ZW50LCBwYWRkaW5nKTsKICAgICBjb25zdCBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0JiBub2Rl
cyA9IHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCk7CiAgICAgaWYgKG5vZGVzLnNpemUoKSAh
PSAxKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggZmI0NDQ1NjQzY2Q5ZjVjYmM4MDEzYWZjNGY0ZWNlNDg5ZmVl
YmU3NC4uNjZlNzFhMDQ4OGMxOWQ1OTc5OTNhMjRhYTAxNmYwZWU4YjQ1ZGNmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTEyMyw3ICsxMTIzLDcg
QEAgV2ViUmVjdCBXZWJWaWV3SW1wbDo6Y29tcHV0ZUJsb2NrQm91bmRzKGNvbnN0IFdlYlJlY3Qm
IHJlY3QsIEF1dG9ab29tVHlwZSB6b29tVHkKIAogICAgIC8vIFVzZSB0aGUgcmVjdC1iYXNlZCBo
aXQgdGVzdCB0byBmaW5kIHRoZSBub2RlLgogICAgIEludFBvaW50IHBvaW50ID0gbWFpbkZyYW1l
SW1wbCgpLT5mcmFtZVZpZXcoKS0+d2luZG93VG9Db250ZW50cyhJbnRQb2ludChyZWN0LngsIHJl
Y3QueSkpOwotICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9
IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUKKyAgICBI
aXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRp
c2FsbG93U2hhZG93Q29udGVudAogICAgICAgICAgICAgfCAoKHpvb21UeXBlID09IEZpbmRJblBh
Z2UpID8gSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nIDogMCk7CiAgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgaGl0VHlwZSwgSW50U2l6ZShyZWN0LndpZHRoLCBy
ZWN0LmhlaWdodCkpOwogCkBAIC0xMzA5LDcgKzEzMDksNyBAQCBOb2RlKiBXZWJWaWV3SW1wbDo6
YmVzdFRhcE5vZGUoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIHRhcEV2ZW50KQogI2VuZGlm
CiAKICAgICBJbnRQb2ludCBoaXRUZXN0UG9pbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3
KCktPndpbmRvd1RvQ29udGVudHModG91Y2hFdmVudExvY2F0aW9uKTsKLSAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0
UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpUb3VjaEV2ZW50KTsK
KyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0
OjpUb3VjaEV2ZW50IHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAg
ICAgYmVzdFRvdWNoTm9kZSA9IHJlc3VsdC50YXJnZXROb2RlKCk7CiAKICAgICAvLyBNYWtlIHN1
cmUgb3VyIGhpZ2hsaWdodCBjYW5kaWRhdGUgdXNlcyBhIGhhbmQgY3Vyc29yIGFzIGEgaGV1cmlz
dGljIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IDQxNTM2OTQzOTZjMWNm
NzBlOTY0ZTQ3ODNmMGRmYmEyMzdiODA1ODUuLjQ0OTA0YjhmNDM5NTkzZWJlNmRlYThhOGVlMDdh
ZjljY2MzODBkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBAIC02OTQsNyAr
Njk0LDcgQEAgRXdrX0hpdF9UZXN0KiBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tGcmFtZSwgaW50IHgsIGludCB5KQogCiAgICAgV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBzbWFydERhdGEtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmll
dy0+d2luZG93VG9Db250ZW50cyhXZWJDb3JlOjpJbnRQb2ludCh4LCB5KSksIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSB8IFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBXZWJDb3JlOjpIaXRU
ZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IFdlYkNvcmU6
OkhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6SWdub3Jl
Q2xpcHBpbmcgfCBXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50
KTsKIAogICAgIGlmIChyZXN1bHQuc2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcAppbmRleCBm
NjYyODQyNTQyN2YyNTJjZDkxOTk4OTFiYjdiMGY0ZDAzZDgzMjZhLi40MDBkZTA0OTlmMmM0Njcy
MGYzZjNiYzVhNThjNmY4ZjIwYjk0Y2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcApAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgd2Via2l0
X3dlYl9pbnNwZWN0b3JfaW5zcGVjdF9jb29yZGluYXRlcyhXZWJLaXRXZWJJbnNwZWN0b3IqIHdl
Ykluc3BlY3RvciwKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhpdFRl
c3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVl
c3Q6OkFjdGl2ZSk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2Fs
bG93U2hhZG93Q29udGVudCk7CiAgICAgSW50UG9pbnQgZG9jdW1lbnRQb2ludCA9IHZpZXctPndp
bmRvd1RvQ29udGVudHMoSW50UG9pbnQoc3RhdGljX2Nhc3Q8aW50Pih4KSwgc3RhdGljX2Nhc3Q8
aW50Pih5KSkpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KGRvY3VtZW50UG9pbnQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggNjQwM2FkNzkx
ZjU2NjRjOWI2ODU2Nzc5NTQ5ODJlYzJjOTNmM2Q3NS4uZWUyOGM4OGNhMjlkNjBjZGVmYzNlNTdi
ZjRmZjRkNzcxZjFlZjljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcApAQCAtMzI4LDcgKzMyOCw3IEBAIHN0YXRpYyB2b2lkIGNvbnRleHRNZW51Q29ubmVj
dEFjdGl2YXRlKEd0a01lbnVJdGVtKiBpdGVtLCBDb250ZXh0TWVudUNvbnRyb2xsZXIqCiAKIHN0
YXRpYyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIHByZXBhcmVNb3VzZUV2ZW50Rm9yRnJh
bWUoRnJhbWUqIGZyYW1lLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogewotICAg
IEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CisgICAgSGl0
VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlfCBIaXRUZXN0UmVxdWVz
dDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBJbnRQb2ludCBwb2ludCA9IGZyYW1lLT52
aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSk7CiAgICAgcmV0dXJuIGZy
YW1lLT5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBwb2ludCwgZXZlbnQp
OwogfQpAQCAtNTMxMyw3ICs1MzEzLDcgQEAgV2ViS2l0SGl0VGVzdFJlc3VsdCogd2Via2l0X3dl
Yl92aWV3X2dldF9oaXRfdGVzdF9yZXN1bHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywKIAogICAg
IFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50ID0gUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50
KTsKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0
UmVxdWVzdDo6QWN0aXZlKTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAg
ICBJbnRQb2ludCBkb2N1bWVudFBvaW50ID0gZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvaW50KGZy
YW1lLCBtb3VzZUV2ZW50LnBvc2l0aW9uKCkpOwogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMgbWV2ID0gZnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3Qs
IGRvY3VtZW50UG9pbnQsIG1vdXNlRXZlbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQppbmRleCAxN2FmOGYwMjFhNGU1NDUwM2JhODMwZTBmNWY3ZGY0NDkyYzcwYTg0Li5k
NzdiNjA1ZmY2ZjRiNDE2MGQwM2M4YjllNGY5ZDdiYTM4ZWY5NGJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTEyMjcsNyArMTIyNyw3IEBAIHN0YXRpYyBpbmxpbmUg
V2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIEZy
YW1lKiBjb3JlRnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lOwogICAgIGlmICghY29yZUZyYW1l
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbW1tXZWJFbGVtZW50RGljdGlvbmFy
eSBhbGxvY10gaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KEludFBvaW50KHBvaW50KSwgSGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVD
bGlwcGluZyldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW1tbV2ViRWxlbWVudERpY3Rpb25h
cnkgYWxsb2NdIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChJbnRQb2ludChwb2ludCksIEhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3Jl
Q2xpcHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KV0gYXV0b3Jl
bGVhc2VdOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQppbmRleCBmODVkZTBkZmY5MDgwZjg4ZGZiNWVkNzJmYjgxMTdhYzZhNmYxOTY5Li5iYTBhMTUz
YzEyZjA2YmIwZWE1ODVjYzQwYjM4MzJmYjIyZTAwODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTYyMDQsNyArNjIwNCw3IEBAIHN0YXRpYyB2b2lkIGV4
dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9z
aXRpb25VbmRlCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
SGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZQotICAgICAgICB8IChhbGxvdyA/
IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQgOiAwKTsKKyAgICAgICAgfCAoYWxs
b3cgPyAwIDogSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgcmV0
dXJuIFtbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6
Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoSW50UG9pbnQo
cG9pbnQpLCBoaXRUeXBlKV0gYXV0b3JlbGVhc2VdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwIGIvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcAppbmRleCA4NGEyZTUy
ZmIxYmE2NGYxNDBlNThkZjE2MjdlMGJkNDljYmRhNzBiLi4wMzFjNzg3NDcyNmRjNjY1ODA3N2Zk
NTliOGQxNmMzYjVhYjllNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKQEAgLTM4OSw3ICszODksNyBAQCBRV2ViSGl0
VGVzdFJlc3VsdFByaXZhdGUqIFFXZWJGcmFtZUFkYXB0ZXI6OmhpdFRlc3RDb250ZW50KGNvbnN0
IFFQb2ludCYgcG9zKSBjbwogICAgIGlmICghZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmNvbnRl
bnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8
IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcp
OworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRU
ZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIEhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0
UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dD
b250ZW50KTsKIAogICAgIGlmIChyZXN1bHQuc2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybiAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCAzMWRmOTliZGU3NTIxOGI1ZTIyNDNhODE2NmY1ZWQ1
ZTllMDdmZTNmLi5mZmE4NWQ0MWNiZTJlMjIzNDc2ODc2NjM1ZDgyMTdlMTk5MDU4M2YwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcApAQCAtMTU1MSw3ICsxNTUxLDcgQEAgYm9vbCBXZWJWaWV3OjpnZXN0
dXJlTm90aWZ5KFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAKICAgICBib29sIGhpdFNj
cm9sbGJhciA9IGZhbHNlOwogICAgIFBPSU5UIGdlc3R1cmVCZWdpblBvaW50ID0ge2duLT5wdHNM
b2NhdGlvbi54LCBnbi0+cHRzTG9jYXRpb24ueX07Ci0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVz
dChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3Qo
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93
Q29udGVudCk7CiAgICAgZm9yIChGcmFtZSogY2hpbGRGcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1l
KCk7IGNoaWxkRnJhbWU7IGNoaWxkRnJhbWUgPSBFdmVudEhhbmRsZXI6OnN1YmZyYW1lRm9yVGFy
Z2V0Tm9kZShtX2dlc3R1cmVUYXJnZXROb2RlLmdldCgpKSkgewogICAgICAgICBGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IGNoaWxkRnJhbWUtPnZpZXcoKTsKICAgICAgICAgaWYgKCFmcmFtZVZpZXcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRl
eCA3N2Q0NGUzODIwYzZhMzlkNmExZWMxMjkwOTViMzBlMjU0Y2RhMWMzLi41MGViNGRhMTQzNjdm
YTBiMWM4YmY2YzU4MmZmYThmOGNkOTlkNGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTUzOSw3ICs1MzksNyBAQCBQYXNzUmVmUHRy
PEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gV2ViRnJhbWU6OmhpdFRlc3QoY29uc3QgSW50
UG9pbnQgcG9pbnQpCiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUobV9jb3JlRnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgSGl0VGVzdFJl
cXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0
OjpJZ25vcmVDbGlwcGluZykpOworICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQ6OmNyZWF0ZShtX2NvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KHBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0
aXZlIHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nIHwgSGl0VGVzdFJlcXVlc3Q6OkRp
c2FsbG93U2hhZG93Q29udGVudCkpOwogfQogCiBib29sIFdlYkZyYW1lOjpnZXREb2N1bWVudEJh
Y2tncm91bmRDb2xvcihkb3VibGUqIHJlZCwgZG91YmxlKiBncmVlbiwgZG91YmxlKiBibHVlLCBk
b3VibGUqIGFscGhhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDRjMDZmMjA4NWRlYTFlNGY5ZjRkNmZlODE4OTNiOTQ4MmEyMGFmNDEuLmMx
YWNlNjY0YzA0MjE3ZTE2YzllODFhMTdhYjJkMjk1NmQwMjFlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3NTMsNyArMTc1Myw3IEBA
IHZvaWQgV2ViUGFnZTo6aGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlvbihjb25zdCBJbnRQb2lu
dCYgcG9pbnQsIGNvbnN0IEludFNpemUmCiAgICAgICAgICAgICByZXR1cm47CiAKICNlbHNlCi0g
ICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMo
cG9pbnQpLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZl
IHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nKTsKKyAgICAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2lu
dChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6
SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsK
ICAgICAgICAgYWRqdXN0ZWROb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogI2VuZGlmCiAgICAg
ICAgIC8vIEZpbmQgdGhlIG5vZGUgdG8gaGlnaGxpZ2h0LiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBh
cyB0aGUgbm9kZSByZXNwb25kaW5nIHRoZSB0YXAgZ2VzdHVyZSwgYmVjYXVzZSBtYW55CkBAIC0z
MDQyLDcgKzMwNDIsNyBAQCB2b2lkIFdlYlBhZ2U6OmZpbmRab29tYWJsZUFyZWFGb3JQb2ludChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGNvbnN0IFdlYgogewogICAgIFVOVVNFRF9Q
QVJBTShhcmVhKTsKICAgICBGcmFtZSogbWFpbmZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFt
ZSgpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVu
dHMocG9pbnQpLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0
aXZlIHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nKTsKKyAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IG1haW5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50
KG1haW5mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KSwgSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpJ
Z25vcmVDbGlwcGluZyB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwog
CiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKIApAQCAtMzg5Niw3ICszODk2
LDcgQEAgdm9pZCBXZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4oKQog
ICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgY29yZVBhZ2UoKS0+
bWFpbkZyYW1lKCktPnZpZXcoKS0+Y29udGVudHNTaXplKCkpOwogICAgIHNlYXJjaFJlY3QuaW50
ZXJzZWN0KEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZShwcmltYXJ5U25hcHNob3R0ZWRQbHVn
SW5TZWFyY2hMaW1pdCwgcHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luU2VhcmNoTGltaXQpKSk7CiAK
LSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29u
dGVudCB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZyk7CisgICAgSGl0VGVzdFJlcXVl
c3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0
aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfCBIaXRUZXN0UmVx
dWVzdDo6SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250
ZW50KTsKIAogICAgIEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4gc2VlblJlbmRlcmVyczsKICAgICBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBjYW5kaWRhdGVQbHVnSW4gPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDc4
Mzg4MGJlNDY1ZmQ2MjEwYTg1YjU1OTU0ZWQ5YWIzYTIwY2E4OTIuLjU4NzRhMDdiMDlmYmQ5ODVl
MTQ2NjU2YTY3NmM0ZjA0ODI5Nzg0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTc1MSw3ICs3NTEsNyBAQCB2b2lk
IFdlYlBhZ2U6OnNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChjb25zdCBXZWJLaXQ6Oldl
Yk1vdXNlRXZlbnQmIGV2ZW50LAogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQotICAgIEhpdFRlc3RSZXN1bHQgaGl0UmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRz
KGV2ZW50LnBvc2l0aW9uKCkpLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVx
dWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7CisgICAg
SGl0VGVzdFJlc3VsdCBoaXRSZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RS
ZXN1bHRBdFBvaW50KGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRp
b24oKSksIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUp
OwogICAgIGlmIChoaXRSZXN1bHQuaXNTZWxlY3RlZCgpKQogICAgICAgICByZXN1bHQgPSBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmV2ZW50TWF5U3RhcnREcmFnKHBsYXRmb3JtKGV2ZW50KSk7CiAj
ZW5kaWYKQEAgLTc2NCw3ICs3NjQsNyBAQCB2b2lkIFdlYlBhZ2U6OmFjY2VwdHNGaXJzdE1vdXNl
KGludCBldmVudE51bWJlciwgY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50JiBldgogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFJl
c3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWUt
PnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKSwgSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpB
bGxvd1NoYWRvd0NvbnRlbnQpOworICAgIEhpdFRlc3RSZXN1bHQgaGl0UmVzdWx0ID0gZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5k
b3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkg
fCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNl
dEFjdGl2YXRpb25FdmVudE51bWJlcihldmVudE51bWJlcik7CiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKICAgICBpZiAoaGl0UmVzdWx0LmlzU2VsZWN0ZWQoKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>