<?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>127886</bug_id>
          
          <creation_ts>2014-01-29 20:20:57 -0800</creation_ts>
          <short_desc>[iOS] Synchronize the WKContentView and UIScrollView updates with the tiles being commited</short_desc>
          <delta_ts>2014-02-05 22:40:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>yongjun_zhang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>973586</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-01-29 20:20:57 -0800</bug_when>
    <thetext>[iOS] Synchronize the WKContentView and UIScrollView updates with the tiles being commited</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973593</commentid>
    <comment_count>1</comment_count>
      <attachid>222625</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-01-29 21:09:20 -0800</bug_when>
    <thetext>Created attachment 222625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974012</commentid>
    <comment_count>2</comment_count>
      <attachid>222738</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-01-30 14:33:56 -0800</bug_when>
    <thetext>Created attachment 222738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974074</commentid>
    <comment_count>3</comment_count>
      <attachid>222738</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-01-30 15:53:42 -0800</bug_when>
    <thetext>Comment on attachment 222738
Patch

Let&apos;s put this one ice. I&apos;ll look into changing the viewport handling first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974082</commentid>
    <comment_count>4</comment_count>
      <attachid>222738</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-30 16:20:12 -0800</bug_when>
    <thetext>Comment on attachment 222738
Patch

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

r+ from smfr and I if you do choose to go this route

&gt; Source/WebKit2/ChangeLog:24
&gt; +        1) A source (the page or the user) change parameters of the geometry.

s/change/changes/

&gt; Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.h:158
&gt; +    const WebCore::IntSize&amp; renderedPageSize() const { return m_renderedPageSize; }

anders would tell you not to return a const&amp; because otherwise it will fit in a register. or something.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:70
&gt; +    BOOL _hasPendingPageReset;

I don&apos;t think reset is the word you want (we&apos;re not sure what it means). viewportUpdatePending? smfr says &quot;the terminology should match whatever&apos;s called when whatever&apos;s pending is no longer pending&quot; :D

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:341
&gt; +        // Do not mess with UIScrollView during using interaction, that causes undefined behaviors.

s/using/user/?

&gt; Source/WebKit2/UIProcess/API/ios/WKContentView.mm:315
&gt;      if ([_delegate respondsToSelector:@selector(contentView:contentsSizeDidChange:)])
&gt;          [_delegate contentView:self contentsSizeDidChange:contentsSize];

we&apos;re a bit curious what this is about, and why setBounds is conditional

&gt; Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm:278
&gt; +    // It is common to have the view initialized with a null frame. The resulting WebKit viewport configuration

This is really weird.

&gt; Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm:286
&gt; +            size = [[UIScreen mainScreen] bounds].size;

Why the screen size? Why is this common? Why does it matter if it does happen? Shouldn&apos;t we just adjust the viewport when we get a valid frame?

&gt; Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:325
&gt; +    layerTransaction.setRenderedPageSize(m_webPage-&gt;corePage()-&gt;mainFrame().view()-&gt;contentsSize());
&gt; +    layerTransaction.setRenderedPageScale(m_webPage-&gt;corePage()-&gt;pageScaleFactor());

Can we call renderedPageSize mainFrameContentsSize or something? and use the whole name for pageScaleFactor. and I don&apos;t think we need the &quot;rendered&quot; part. it&apos;s inherently the size and scale that go along with the transaction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977110</commentid>
    <comment_count>5</comment_count>
      <attachid>223274</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-05 15:43:38 -0800</bug_when>
    <thetext>Created attachment 223274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977153</commentid>
    <comment_count>6</comment_count>
      <attachid>223274</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-02-05 17:10:11 -0800</bug_when>
    <thetext>Comment on attachment 223274
Patch

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

&gt; Source/WebCore/page/VirtualViewport.cpp:51
&gt; +    m_defaultConfiguration.width = 980;
&gt; +    m_defaultConfiguration.widthIsSet = true;
&gt; +    m_defaultConfiguration.allowsUserScaling = true;
&gt; +    m_defaultConfiguration.minimumScale = 0.25;
&gt; +    m_defaultConfiguration.maximumScale = 5;

The nicer way to do this would be to give VirtualViewportConfiguration a member function that returns a pre-populated VirtualViewportConfiguration with these values.

&gt; Source/WebCore/page/VirtualViewport.cpp:60
&gt; +    ASSERT(virtualViewportConfiguration.maximumScale &gt;= virtualViewportConfiguration.minimumScale);

Why isn&apos;t this assertion inside of VirtualViewportConfiguration?

&gt; Source/WebCore/page/VirtualViewport.cpp:151
&gt; +double VirtualViewport::maximumScale() const
&gt; +{
&gt; +    return m_configuration.maximumScale;
&gt; +}
&gt; +
&gt; +bool VirtualViewport::allowsUserScaling() const
&gt; +{
&gt; +    return m_configuration.allowsUserScaling;
&gt; +}

Could be inline.

&gt; Source/WebCore/page/VirtualViewport.h:38
&gt; +        bzero(this, sizeof(VirtualViewportConfiguration));

We normally initialize the members explicitly.

&gt; Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.h:159
&gt; +    WebCore::IntSize mainFrameContentsSize() const { return m_mainFrameContentsSize; }
&gt; +    void setMainFrameContentsSize(const WebCore::IntSize&amp; size) { m_mainFrameContentsSize = size; };

Not sure you need &quot;main frame&quot; in the name. Just contentsSize would be fine.

&gt; Source/WebKit2/UIProcess/API/ios/WKContentView.h:49
&gt; +- (void)contentView:(WKContentView *)contentView didCommitLayerTree:(const WebKit::RemoteLayerTreeTransaction&amp;)layerTreeTransaction;

It&apos;s a bit gross to see an internal detail of layer tree committing (RemoteLayerTreeTransaction) here. Can you just pass the values you care about?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:3994
&gt; +    defaultConfiguration.width = 980;
&gt; +    defaultConfiguration.widthIsSet = true;
&gt; +    defaultConfiguration.allowsUserScaling = true;
&gt; +    defaultConfiguration.minimumScale = 0.25;
&gt; +    defaultConfiguration.maximumScale = 5;

This is the same as the VirtualViewport::VirtualViewport() one!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977207</commentid>
    <comment_count>7</comment_count>
      <attachid>223295</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-05 20:15:37 -0800</bug_when>
    <thetext>Created attachment 223295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977234</commentid>
    <comment_count>8</comment_count>
      <attachid>223304</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-05 21:53:02 -0800</bug_when>
    <thetext>Created attachment 223304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977253</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-05 22:40:54 -0800</bug_when>
    <thetext>Committed r163515: &lt;http://trac.webkit.org/changeset/163515&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222625</attachid>
            <date>2014-01-29 21:09:20 -0800</date>
            <delta_ts>2014-01-30 14:33:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127886-20140129210920.patch</filename>
            <type>text/plain</type>
            <size>34398</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzdkM2RmNzlkZGVlMGJj
ZGM5MzYwZDg0M2QxMmM4MzhkMDg4MjMyZC4uMWY2ZGY3OGM4NTE4MjA2YjM4MTAwOGQzMmMyYTI2
MTQ0OTE1MzM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE0LTAxLTI5ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN5bmNo
cm9uaXplIHRoZSBXS0NvbnRlbnRWaWV3IGFuZCBVSVNjcm9sbFZpZXcgdXBkYXRlcyB3aXRoIHRo
ZSB0aWxlcyBiZWluZyBjb21taXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI3ODg2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNTg4NzUyMj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdXBk
YXRlcyBvZiB0aGUgdmlld3Mgb24gdGhlIFVJUHJvY2VzcyBzaWRlIHdhcyBjb21wbGV0ZWx5IGRp
c2Nvbm5lY3RlZAorICAgICAgICBmcm9tIHRoZSB0aWxlcyB1cGRhdGVzIGZyb20gdGhlIERyYXdp
bmdBcmVhLiBUaGVyZSBpcyBhIG5vbi1uZWdsaWdpYmxlIHRpbWUKKyAgICAgICAgYmV0d2VlbiB0
aGUgc2l6ZS9zY2FsZSB1cGRhdGUgYW5kIHRoZSBuZXcgdGlsZXMgY29taW5nLCB3aGljaCBjYXVz
ZXMKKyAgICAgICAgdmlzdWFsIGdsaXRjaGVzLgorCisgICAgICAgIFRoZXJlIGFyZSB0aHJlZSBt
YWluIGNhc2VzIHdoZXJlIHRoZSB0aWxlcyBhbmQgY29udGVudCB3b3VsZCBiZSBvdXQgb2Ygc3lu
YworICAgICAgICB3aXRoIHRoZSBVSVZpZXdzOgorICAgICAgICAtV2hlbiBsb2FkaW5nIGEgbmV3
IHBhZ2Ugd2l0aCBkaWZmZXJlbnQgY29udGVudCB3aWR0aCBvZiBhIGRpZmZlcmVudCB2aWV3cG9y
dC4KKyAgICAgICAgLVdoZW4gYSBwYWdlIGNoYW5nZXMgaXRzIHZpZXdwb3J0LgorICAgICAgICAt
V2hlbiB0aGUgdmlld3BvcnQtY29uc3RyYWludGVkIHZpZXdwb3J0IHNpemUgY2hhbmdlcy4KKwor
ICAgICAgICBUbyBmaXggdGhlIGlzc3VlLCBXS1ZpZXcgaXMgbW9kaWZpZWQgdG8gbWFpbnRhaW4g
dGhlIG9sZCBzdGF0ZSBvZiBXS0NvbnRlbnRWaWV3CisgICAgICAgIGFuZCBVSVNjcm9sbFZpZXcg
dW50aWwgdGhlIG5ldyB0aWxlcyBhcmUgYXZhaWxhYmxlLgorCisgICAgICAgIEdlb21ldHJ5L3Nj
YWxlIHVwZGF0ZSBhcmUgc3BsaXQgaW4gdHdvIHBoYXNlczoKKyAgICAgICAgMSkgQSBzb3VyY2Ug
KHRoZSBwYWdlIG9yIHRoZSB1c2VyKSBjaGFuZ2UgcGFyYW1ldGVycyBvZiB0aGUgZ2VvbWV0cnku
CisgICAgICAgICAgIFRoZSBuZXcgdmlld3BvcnQgY29uZmlndXJhdGlvbiBpcyBjb21wdXRlZCwg
dGhlIG5ldyBzY2FsZSBhbmQgc2l6ZSBhcmUKKyAgICAgICAgICAgc2V0IG9uIFdlYlBhZ2VQcm94
eSBhbmQgaW4gdHVybiBvbiBXZWJQYWdlLgorICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB0aGUg
VUlWaWV3cyBhcmUgdW5jaGFuZ2VkIGFuZCBhcmUgbGVmdCB3aXRoIHRoZSBvbGQgcGFyYW1ldGVy
cy4KKyAgICAgICAgMikgRXZlbnR1YWxseSwgbmV3IHRpbGVzIGNvbWUgYW5kIGNvbW1pdExheWVy
VHJlZSgpIGlzIGNhbGxlZCBvbiB0aGUgZHJhd2luZyBhcmVhIHByb3h5LgorICAgICAgICAgICBB
dCB0aGF0IHBvaW50LCBXS0NvbnRlbnRWaWV3IGFuZCBpdHMgVUlTY3JvbGxWaWV3IGFyZSB1cGRh
dGVkIHRvIG1hdGNoIHRoZSBjb21taXR0ZWQKKyAgICAgICAgICAgc2l6ZSBhbmQgc2NhbGUgZm9y
IHRoZSBwYWdlLgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6cmVu
ZGVyZWRQYWdlU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpzZXRSZW5kZXJlZFBhZ2VTaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OnJlbmRlcmVkUGFnZVNjYWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OnNldFJlbmRlcmVkUGFnZVNjYWxlKToKKyAgICAgICAg
KiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBpbml0V2l0
aEZyYW1lOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBjb250ZW50Vmll
dzpjb250ZW50c1NpemVEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBjb250ZW50
Vmlld0RpZENvbW1pdExvYWRGb3JNYWluRnJhbWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBj
b250ZW50VmlldzpkaWRDb21taXRMYXllclRyZWVGb3JQYWdlU2l6ZTpzY2FsZTpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IHZpZXdwb3J0SGFuZGxlckRpZENoYW5nZVNjYWxlczpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IHZpZXdwb3J0SGFuZGxlcjpkaWRDaGFuZ2VWaWV3cG9ydFNpemU6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBzY3JvbGxWaWV3V2lsbEJlZ2luWm9vbWluZzp3aXRoVmll
dzpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRGaW5pc2hTY3JvbGxdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHNjcm9sbFZpZXdEaWRTY3JvbGw6XSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBzY3JvbGxWaWV3RGlkRW5kWm9vbWluZzp3aXRoVmlldzphdFNjYWxlOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX3VwZGF0ZVNjcm9sbFZpZXdTY2FsaW5nXSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfdXBkYXRlU2Nyb2xsVmlld1NjYWxpbmdJZk5lZWRlZF0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpkaWRDb21taXRMYXllclRyZWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dL
Q29udGVudFZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHBhZ2VTY2FsZUZhY3Rvcl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IHNldFBhZ2VTY2FsZUZhY3RvcjpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBzZXRCb3VuZHM6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZENo
YW5nZUNvbnRlbnRTaXplOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRDb21taXRM
YXllclRyZWVGb3JQYWdlU2l6ZTpXZWJDb3JlOjpzY2FsZTpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2lvcy9XS1ZpZXdJT1MubW06CisgICAgICAgICgtW1dLVmlldyBjb250ZW50Vmlldzpjb250
ZW50c1NpemVEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dLVmlldyBjb250ZW50Vmlld0RpZENv
bW1pdExvYWRGb3JNYWluRnJhbWU6XSk6CisgICAgICAgICgtW1dLVmlldyBjb250ZW50Vmlldzpk
aWRDb21taXRMYXllclRyZWVGb3JQYWdlU2l6ZTpzY2FsZTpdKToKKyAgICAgICAgKC1bV0tWaWV3
IHZpZXdwb3J0SGFuZGxlckRpZENoYW5nZVNjYWxlczpdKToKKyAgICAgICAgKC1bV0tWaWV3IHNj
cm9sbFZpZXdXaWxsQmVnaW5ab29taW5nOndpdGhWaWV3Ol0pOgorICAgICAgICAoLVtXS1ZpZXcg
X2RpZEZpbmlzaFNjcm9sbF0pOgorICAgICAgICAoLVtXS1ZpZXcgc2Nyb2xsVmlld0RpZFNjcm9s
bDpdKToKKyAgICAgICAgKC1bV0tWaWV3IHNjcm9sbFZpZXdEaWRFbmRab29taW5nOndpdGhWaWV3
OmF0U2NhbGU6XSk6CisgICAgICAgICgtW1dLVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRo
Q29udGV4dFJlZjpwYWdlR3JvdXBSZWY6cmVsYXRlZFRvUGFnZTpdKToKKyAgICAgICAgKC1bV0tW
aWV3IF91cGRhdGVTY3JvbGxWaWV3U2NhbGluZ10pOgorICAgICAgICAoLVtXS1ZpZXcgX3VwZGF0
ZVNjcm9sbFZpZXdTY2FsaW5nSWZOZWVkZWRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRDb21taXRMYXllclRyZWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Y29tbWl0TGF5ZXJUcmVlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMpOgor
CiAyMDE0LTAxLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRml4IDMyLWJpdCBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCBlYjM0YTRmYTI2OTBkNmYx
MTg4ZDJlODM2MWRjZTJiYWMyZGRmMjcwLi42MTA2OThkY2IzY2QzNjlkNjI2NTYzOWE0MTUwMTdh
MDI1ZGM4NWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCkBAIC0xNTUsMTEgKzE1NSwxOSBAQCBwdWJsaWM6CiAg
ICAgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQsIExheWVy
UHJvcGVydGllcz4gY2hhbmdlZExheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbmdlZExheWVy
UHJvcGVydGllczsgfQogICAgIFZlY3RvcjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9y
bUxheWVySUQ+IGRlc3Ryb3llZExheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdHJveWVkTGF5
ZXJJRHM7IH0KIAorICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHJlbmRlcmVkUGFnZVNpemUo
KSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVkUGFnZVNpemU7IH0KKyAgICB2b2lkIHNldFJlbmRl
cmVkUGFnZVNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkgeyBtX3JlbmRlcmVkUGFn
ZVNpemUgPSBzaXplOyB9CisKKyAgICBkb3VibGUgcmVuZGVyZWRQYWdlU2NhbGUoKSBjb25zdCB7
IHJldHVybiBtX3JlbmRlcmVkUGFnZVNjYWxlOyB9CisgICAgdm9pZCBzZXRSZW5kZXJlZFBhZ2VT
Y2FsZShkb3VibGUgc2NhbGUpIHsgbV9yZW5kZXJlZFBhZ2VTY2FsZSA9IHNjYWxlOyB9CisKIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIG1fcm9v
dExheWVySUQ7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eWVySUQsIExheWVyUHJvcGVydGllcz4gbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzOwogICAgIFZl
Y3RvcjxMYXllckNyZWF0aW9uUHJvcGVydGllcz4gbV9jcmVhdGVkTGF5ZXJzOwogICAgIFZlY3Rv
cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+IG1fZGVzdHJveWVkTGF5
ZXJJRHM7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3JlbmRlcmVkUGFnZVNpemU7CisgICAgZG91
YmxlIG1fcmVuZGVyZWRQYWdlU2NhbGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uLm1tCmluZGV4IDUxOTdhYjM2NWEyMjU2OThlY2QyOGVlMmY0MTZkOGRmZWEyNzc1YzYu
LmU2NDhiMGI1ZjdlZGVkYmU1NWI4MDQ0Yjk0NjFjYzc2MjQ4NDNmYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5t
bQpAQCAtMzQyLDYgKzM0Miw4IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmVu
Y29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8
IG1fY3JlYXRlZExheWVyczsKICAgICBlbmNvZGVyIDw8IG1fY2hhbmdlZExheWVyUHJvcGVydGll
czsKICAgICBlbmNvZGVyIDw8IG1fZGVzdHJveWVkTGF5ZXJJRHM7CisgICAgZW5jb2RlciA8PCBt
X3JlbmRlcmVkUGFnZVNpemU7CisgICAgZW5jb2RlciA8PCBtX3JlbmRlcmVkUGFnZVNjYWxlOwog
fQogCiBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpBcmd1bWVu
dERlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiByZXN1bHQpCkBA
IC0zNjUsNiArMzY3LDEyIEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29k
ZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9y
ZW5kZXJlZFBhZ2VTaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQubV9yZW5kZXJlZFBhZ2VTY2FsZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDA4NzI3MWE3NTZjMzM0NDc3NGFjZjYy
ODAxYjNjYWI3NGViMzYwNjEuLmY2YTNkOGFhNGVhYTZjZmZhNDcyMTc1MjJhOWQyYzc0NzdkMjM2
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCkBAIC02Nyw2ICs2Nyw5IEBAIHN0YXRpYyBfVUlXZWJWaWV3cG9ydENvbmZpZ3VyYXRpb24g
c3RhbmRhcmRWaWV3cG9ydENvbmZpZ3VyYXRpb24gPSB7IHsgVUlXZWJWaWV3CiAKICAgICBCT09M
IF91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZTsKICAgICBCT09MIF9oYXNTdGF0aWNNaW5pbXVtTGF5
b3V0U2l6ZTsKKyAgICBCT09MIF9oYXNQZW5kaW5nUGFnZVJlc2V0OworICAgIEJPT0wgX2hhc1Bl
bmRpbmdTY3JvbGxWaWV3VXBkYXRlOworICAgIGRvdWJsZSBfbGF0ZXN0Q29tbWl0ZWRMYXllclNj
YWxlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogICAgIFJl
dGFpblB0cjxXS1ZpZXc+IF93a1ZpZXc7CkBAIC0xMDksNyArMTEyLDE5IEBAIHN0YXRpYyBfVUlX
ZWJWaWV3cG9ydENvbmZpZ3VyYXRpb24gc3RhbmRhcmRWaWV3cG9ydENvbmZpZ3VyYXRpb24gPSB7
IHsgVUlXZWJWaWV3CiAgICAgX3ZpZXdwb3J0SGFuZGxlciA9IGFkb3B0TlMoW1tfVUlXZWJWaWV3
cG9ydEhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbX3ZpZXdwb3J0SGFuZGxlciBzZXREZWxl
Z2F0ZTpzZWxmXTsKIAotICAgIFtzZWxmIF9mcmFtZU9yQm91bmRzQ2hhbmdlZF07CisgICAgLy8g
SXQgaXMgY29tbW9uIHRvIGhhdmUgdGhlIHZpZXcgaW5pdGlhbGl6ZWQgd2l0aCBhIG51bGwgZnJh
bWUuIFRoZSByZXN1bHRpbmcgV2ViS2l0IHZpZXdwb3J0IGNvbmZpZ3VyYXRpb24KKyAgICAvLyBp
cyBub3QgdXNlZnVsLiBUbyByZWR1Y2Ugd29yayB3aGVuIHVwZGF0aW5nIHRoZSBmcmFtZSBvciBj
b21taXRpbmcgdGhlIGNvbnRlbnQsIHdlIGRlZmluZSB0aGUgdmlld3BvcnQKKyAgICAvLyB3aXRo
IHJlYXNvbmFibGUgdmFsdWVzIGZvciB0aGUgbWlzc2luZyBwYXJhbWV0ZXJzLgorICAgIFtfdmll
d3BvcnRIYW5kbGVyIHVwZGF0ZTpeeworICAgICAgICBbX3ZpZXdwb3J0SGFuZGxlciByZXNldFZp
ZXdwb3J0Q29uZmlndXJhdGlvbjomc3RhbmRhcmRWaWV3cG9ydENvbmZpZ3VyYXRpb25dOworCisg
ICAgICAgIENHU2l6ZSBzaXplID0gYm91bmRzLnNpemU7CisgICAgICAgIGlmIChzaXplLndpZHRo
IDw9IDAgfHwgc2l6ZS5oZWlnaHQgPD0gMCkKKyAgICAgICAgICAgIHNpemUgPSBbW1VJU2NyZWVu
IG1haW5TY3JlZW5dIGJvdW5kc10uc2l6ZTsKKyAgICAgICAgW192aWV3cG9ydEhhbmRsZXIgc2V0
QXZhaWxhYmxlVmlld1NpemU6c2l6ZV07CisgICAgICAgIFtfY29udGVudFZpZXcgc2V0TWluaW11
bVNpemU6c2l6ZV07CisgICAgICAgIFtfdmlld3BvcnRIYW5kbGVyIHNldERvY3VtZW50Qm91bmRz
OntDR1BvaW50WmVybywgc2l6ZX1dOworICAgIH1dOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpICYmICFQTEFURk9STShJT1MpCkBAIC0xNjksMTcgKzE4NCwxNCBAQCBzdGF0aWMgX1VJV2Vi
Vmlld3BvcnRDb25maWd1cmF0aW9uIHN0YW5kYXJkVmlld3BvcnRDb25maWd1cmF0aW9uID0geyB7
IFVJV2ViVmlldwogCiAtICh2b2lkKWNvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopY29udGVu
dFZpZXcgY29udGVudHNTaXplRGlkQ2hhbmdlOihDR1NpemUpbmV3U2l6ZQogewotICAgIENHRmxv
YXQgem9vbVNjYWxlID0gW19zY3JvbGxWaWV3IHpvb21TY2FsZV07Ci0gICAgQ0dTaXplIGNvbnRl
bnRzU2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzID0gQ0dTaXplTWFrZShuZXdTaXplLndpZHRo
ICogem9vbVNjYWxlLCBuZXdTaXplLmhlaWdodCAqIHpvb21TY2FsZSk7Ci0gICAgW19zY3JvbGxW
aWV3IHNldENvbnRlbnRTaXplOmNvbnRlbnRzU2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzXTsK
LQogICAgIFtfdmlld3BvcnRIYW5kbGVyIHVwZGF0ZTpeewotICAgICAgICAgW192aWV3cG9ydEhh
bmRsZXIgc2V0RG9jdW1lbnRCb3VuZHM6e0NHUG9pbnRaZXJvLCBuZXdTaXplfV07CisgICAgICAg
IFtfdmlld3BvcnRIYW5kbGVyIHNldERvY3VtZW50Qm91bmRzOntDR1BvaW50WmVybywgbmV3U2l6
ZX1dOwogICAgIH1dOwogfQogCiAtICh2b2lkKWNvbnRlbnRWaWV3RGlkQ29tbWl0TG9hZEZvck1h
aW5GcmFtZTooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3CiB7CisgICAgX2hhc1BlbmRpbmdQ
YWdlUmVzZXQgPSBZRVM7CiAgICAgX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlID0gTk87CiAKICAg
ICBXS0NvbnRlbnRUeXBlIGNvbnRlbnRUeXBlID0gW19jb250ZW50VmlldyBjb250ZW50VHlwZV07
CkBAIC0yMTQsMjIgKzIyNiwzNCBAQCBzdGF0aWMgX1VJV2ViVmlld3BvcnRDb25maWd1cmF0aW9u
IHN0YW5kYXJkVmlld3BvcnRDb25maWd1cmF0aW9uID0geyB7IFVJV2ViVmlldwogICAgIH1dOwog
fQogCistICh2b2lkKWNvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopY29udGVudFZpZXcgZGlk
Q29tbWl0TGF5ZXJUcmVlRm9yUGFnZVNpemU6KENHU2l6ZSlwYWdlU2l6ZSBzY2FsZTooZG91Ymxl
KXNjYWxlCit7CisgICAgX2xhdGVzdENvbW1pdGVkTGF5ZXJTY2FsZSA9IHNjYWxlOworCisgICAg
Y29udGVudFZpZXcuYm91bmRzID0geyBDR1BvaW50WmVybywgcGFnZVNpemUgfTsKKworICAgIFtz
ZWxmIF91cGRhdGVTY3JvbGxWaWV3U2NhbGluZ107CisKKyAgICBpZiAoX2hhc1BlbmRpbmdQYWdl
UmVzZXQpIHsKKyAgICAgICAgW19zY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Q0dQb2ludFpl
cm9dOworICAgICAgICBfaGFzUGVuZGluZ1BhZ2VSZXNldCA9IE5POworICAgIH0KK30KKwogI3By
YWdtYSBtYXJrIC0gX1VJV2ViVmlld3BvcnRIYW5kbGVyRGVsZWdhdGUKIAogLSAodm9pZCl2aWV3
cG9ydEhhbmRsZXJEaWRDaGFuZ2VTY2FsZXM6KF9VSVdlYlZpZXdwb3J0SGFuZGxlciAqKXZpZXdw
b3J0SGFuZGxlcgogewogICAgIEFTU0VSVCh2aWV3cG9ydEhhbmRsZXIgPT0gX3ZpZXdwb3J0SGFu
ZGxlcik7Ci0gICAgW19zY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6dmlld3BvcnRIYW5k
bGVyLm1pbmltdW1TY2FsZV07Ci0gICAgW19zY3JvbGxWaWV3IHNldE1heGltdW1ab29tU2NhbGU6
dmlld3BvcnRIYW5kbGVyLm1heGltdW1TY2FsZV07Ci0gICAgW19zY3JvbGxWaWV3IHNldFpvb21F
bmFibGVkOnZpZXdwb3J0SGFuZGxlci5hbGxvd3NVc2VyU2NhbGluZ107CiAKKyAgICBDR0Zsb2F0
IHZhbGlkU2NhbGU7CiAgICAgaWYgKCFfdXNlckhhc0NoYW5nZWRQYWdlU2NhbGUpCi0gICAgICAg
IFtzZWxmIF9zZXREb2N1bWVudFNjYWxlOnZpZXdwb3J0SGFuZGxlci5pbml0aWFsU2NhbGVdOwor
ICAgICAgICB2YWxpZFNjYWxlID0gdmlld3BvcnRIYW5kbGVyLmluaXRpYWxTY2FsZTsKICAgICBl
bHNlIHsKICAgICAgICAgQ0dGbG9hdCBjdXJyZW50U2NhbGUgPSBbX3Njcm9sbFZpZXcgem9vbVNj
YWxlXTsKLSAgICAgICAgQ0dGbG9hdCB2YWxpZFNjYWxlID0gc3RkOjptYXgoc3RkOjptaW4oY3Vy
cmVudFNjYWxlLCBzdGF0aWNfY2FzdDxDR0Zsb2F0Pih2aWV3cG9ydEhhbmRsZXIubWF4aW11bVNj
YWxlKSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KHZpZXdwb3J0SGFuZGxlci5taW5pbXVtU2NhbGUp
KTsKLSAgICAgICAgW3NlbGYgX3NldERvY3VtZW50U2NhbGU6dmFsaWRTY2FsZV07CisgICAgICAg
IHZhbGlkU2NhbGUgPSBzdGQ6Om1heChzdGQ6Om1pbihjdXJyZW50U2NhbGUsIHN0YXRpY19jYXN0
PENHRmxvYXQ+KHZpZXdwb3J0SGFuZGxlci5tYXhpbXVtU2NhbGUpKSwgc3RhdGljX2Nhc3Q8Q0dG
bG9hdD4odmlld3BvcnRIYW5kbGVyLm1pbmltdW1TY2FsZSkpOwogICAgIH0KKyAgICBbX2NvbnRl
bnRWaWV3IHNldFBhZ2VTY2FsZUZhY3Rvcjp2YWxpZFNjYWxlXTsKIH0KIAogLSAodm9pZCl2aWV3
cG9ydEhhbmRsZXI6KF9VSVdlYlZpZXdwb3J0SGFuZGxlciAqKXZpZXdwb3J0SGFuZGxlciBkaWRD
aGFuZ2VWaWV3cG9ydFNpemU6KENHU2l6ZSluZXdTaXplCkBAIC0yNDgsMTQgKzI3MiwxOCBAQCBz
dGF0aWMgX1VJV2ViVmlld3BvcnRDb25maWd1cmF0aW9uIHN0YW5kYXJkVmlld3BvcnRDb25maWd1
cmF0aW9uID0geyB7IFVJV2ViVmlldwogCiAtICh2b2lkKXNjcm9sbFZpZXdXaWxsQmVnaW5ab29t
aW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWaWV3OihVSVZpZXcgKil2aWV3CiB7
Ci0gICAgaWYgKHNjcm9sbFZpZXcucGluY2hHZXN0dXJlUmVjb2duaXplci5zdGF0ZSA9PSBVSUdl
c3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbikKKyAgICBpZiAoIV9oYXNQZW5kaW5nUGFnZVJlc2V0
ICYmIHNjcm9sbFZpZXcucGluY2hHZXN0dXJlUmVjb2duaXplci5zdGF0ZSA9PSBVSUdlc3R1cmVS
ZWNvZ25pemVyU3RhdGVCZWdhbikKICAgICAgICAgX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlID0g
WUVTOwogfQogCiAtICh2b2lkKV9kaWRGaW5pc2hTY3JvbGwKIHsKKyAgICBpZiAoX2hhc1BlbmRp
bmdQYWdlUmVzZXQpCisgICAgICAgIHJldHVybjsKKwogICAgIENHUG9pbnQgcG9zaXRpb24gPSBb
X3Njcm9sbFZpZXcgY29udmVydFBvaW50Oltfc2Nyb2xsVmlldyBjb250ZW50T2Zmc2V0XSB0b1Zp
ZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKICAgICBbX2NvbnRlbnRWaWV3IGRpZEZpbmlzaFNjcm9s
bFRvOnBvc2l0aW9uXTsKKyAgICBbc2VsZiBfdXBkYXRlU2Nyb2xsVmlld1NjYWxpbmdJZk5lZWRl
ZF07CiB9CiAKIC0gKHZvaWQpc2Nyb2xsVmlld0RpZEVuZERyYWdnaW5nOihVSVNjcm9sbFZpZXcg
KilzY3JvbGxWaWV3IHdpbGxEZWNlbGVyYXRlOihCT09MKWRlY2VsZXJhdGUKQEAgLTI3NywxNCAr
MzA1LDIxIEBAIHN0YXRpYyBfVUlXZWJWaWV3cG9ydENvbmZpZ3VyYXRpb24gc3RhbmRhcmRWaWV3
cG9ydENvbmZpZ3VyYXRpb24gPSB7IHsgVUlXZWJWaWV3CiAKIC0gKHZvaWQpc2Nyb2xsVmlld0Rp
ZFNjcm9sbDooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogeworICAgIGlmIChfaGFzUGVuZGlu
Z1BhZ2VSZXNldCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgQ0dQb2ludCBwb3NpdGlvbiA9IFtf
c2Nyb2xsVmlldyBjb252ZXJ0UG9pbnQ6W19zY3JvbGxWaWV3IGNvbnRlbnRPZmZzZXRdIHRvVmll
dzpfY29udGVudFZpZXcuZ2V0KCldOwogICAgIFtfY29udGVudFZpZXcgZGlkU2Nyb2xsVG86cG9z
aXRpb25dOwogfQogCiAtICh2b2lkKXNjcm9sbFZpZXdEaWRFbmRab29taW5nOihVSVNjcm9sbFZp
ZXcgKilzY3JvbGxWaWV3IHdpdGhWaWV3OihVSVZpZXcgKil2aWV3IGF0U2NhbGU6KENHRmxvYXQp
c2NhbGUKIHsKKyAgICBpZiAoX2hhc1BlbmRpbmdQYWdlUmVzZXQpCisgICAgICAgIHJldHVybjsK
KwogICAgIEFTU0VSVChzY3JvbGxWaWV3ID09IF9zY3JvbGxWaWV3KTsKLSAgICBbX2NvbnRlbnRW
aWV3IGRpZFpvb21Ub1NjYWxlOnNjYWxlXTsKKyAgICBbX2NvbnRlbnRWaWV3IHNldFBhZ2VTY2Fs
ZUZhY3RvcjpzY2FsZV07CisgICAgW3NlbGYgX3VwZGF0ZVNjcm9sbFZpZXdTY2FsaW5nSWZOZWVk
ZWRdOwogfQogCiAtICh2b2lkKV9mcmFtZU9yQm91bmRzQ2hhbmdlZApAQCAtMzAwLDE1ICszMzUs
MzIgQEAgc3RhdGljIF9VSVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0
Q29uZmlndXJhdGlvbiA9IHsgeyBVSVdlYlZpZXcKICAgICBbX2NvbnRlbnRWaWV3IHNldE1pbmlt
dW1TaXplOmJvdW5kcy5zaXplXTsKIH0KIAotLSAodm9pZClfc2V0RG9jdW1lbnRTY2FsZTooQ0dG
bG9hdCluZXdTY2FsZQorLSAodm9pZClfdXBkYXRlU2Nyb2xsVmlld1NjYWxpbmcKIHsKLSAgICBD
R1BvaW50IGNvbnRlbnRPZmZzZXRJbkRvY3VtZW50Q29vcmRpbmF0ZXMgPSBbX3Njcm9sbFZpZXcg
Y29udmVydFBvaW50Oltfc2Nyb2xsVmlldyBjb250ZW50T2Zmc2V0XSB0b1ZpZXc6X2NvbnRlbnRW
aWV3LmdldCgpXTsKKyAgICBpZiAoW19zY3JvbGxWaWV3IGlzWm9vbWluZ10gfHwgW19zY3JvbGxW
aWV3IGlzWm9vbUJvdW5jaW5nXSB8fCBbX3Njcm9sbFZpZXcgaXNUcmFja2luZ10gfHwgW19zY3Jv
bGxWaWV3IGlzRHJhZ2dpbmddIHx8IFtfc2Nyb2xsVmlldyBpc0RlY2VsZXJhdGluZ10pIHsKKyAg
ICAgICAgLy8gRG8gbm90IG1lc3Mgd2l0aCBVSVNjcm9sbFZpZXcgZHVyaW5nIHVzaW5nIGludGVy
YWN0aW9uLCB0aGF0IGNhdXNlcyB1bmRlZmluZWQgYmVoYXZpb3JzLgorICAgICAgICBfaGFzUGVu
ZGluZ1Njcm9sbFZpZXdVcGRhdGUgPSBZRVM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
W19zY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6W192aWV3cG9ydEhhbmRsZXIgbWluaW11
bVNjYWxlXV07CisgICAgW19zY3JvbGxWaWV3IHNldE1heGltdW1ab29tU2NhbGU6W192aWV3cG9y
dEhhbmRsZXIgbWF4aW11bVNjYWxlXV07CisgICAgW19zY3JvbGxWaWV3IHNldFpvb21FbmFibGVk
Oltfdmlld3BvcnRIYW5kbGVyIGFsbG93c1VzZXJTY2FsaW5nXV07CiAKLSAgICBbX3Njcm9sbFZp
ZXcgc2V0Wm9vbVNjYWxlOm5ld1NjYWxlXTsKLSAgICBbX2NvbnRlbnRWaWV3IGRpZFpvb21Ub1Nj
YWxlOm5ld1NjYWxlXTsKKyAgICBpZiAoX2xhdGVzdENvbW1pdGVkTGF5ZXJTY2FsZSAhPSBbX3Nj
cm9sbFZpZXcgem9vbVNjYWxlXSkgeworICAgICAgICBDR1BvaW50IGNvbnRlbnRPZmZzZXRJbkRv
Y3VtZW50Q29vcmRpbmF0ZXMgPSBbX3Njcm9sbFZpZXcgY29udmVydFBvaW50Oltfc2Nyb2xsVmll
dyBjb250ZW50T2Zmc2V0XSB0b1ZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKKyAgICAgICAgW19z
Y3JvbGxWaWV3IHNldFpvb21TY2FsZTpfbGF0ZXN0Q29tbWl0ZWRMYXllclNjYWxlXTsKIAotICAg
IENHUG9pbnQgY29udGVudE9mZnNldCA9IFtfc2Nyb2xsVmlldyBjb252ZXJ0UG9pbnQ6Y29udGVu
dE9mZnNldEluRG9jdW1lbnRDb29yZGluYXRlcyBmcm9tVmlldzpfY29udGVudFZpZXcuZ2V0KCld
OwotICAgIFtfc2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0OmNvbnRlbnRPZmZzZXRdOworICAg
ICAgICBDR1BvaW50IGNvbnRlbnRPZmZzZXQgPSBbX3Njcm9sbFZpZXcgY29udmVydFBvaW50OmNv
bnRlbnRPZmZzZXRJbkRvY3VtZW50Q29vcmRpbmF0ZXMgZnJvbVZpZXc6X2NvbnRlbnRWaWV3Lmdl
dCgpXTsKKyAgICAgICAgW19zY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Y29udGVudE9mZnNl
dF07CisgICAgfQorfQorCistICh2b2lkKV91cGRhdGVTY3JvbGxWaWV3U2NhbGluZ0lmTmVlZGVk
Cit7CisgICAgaWYgKF9oYXNQZW5kaW5nU2Nyb2xsVmlld1VwZGF0ZSkgeworICAgICAgICBfaGFz
UGVuZGluZ1Njcm9sbFZpZXdVcGRhdGUgPSBOTzsKKyAgICAgICAgW3NlbGYgX3VwZGF0ZVNjcm9s
bFZpZXdTY2FsaW5nXTsKKyAgICB9CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggZjc2YjAzOTNh
OWFjN2VkZTU4ZWM4NGEzNDUzMmVmN2VmYTIzY2JhNy4uYmI2NTAxOTk2MzJkYzYxNDQ2Y2E2MmIz
NjdjYWQ4NjQ5ZGFkMWJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMTEsNiArMTExLDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQm
LCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25J
bmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
biYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMYXllclRyZWUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIGRvdWJsZSBzY2FsZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBBdXhpbGlhcnkgQ2xp
ZW50IENyZWF0aW9uCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCA4
OTZjNjViMjc1ZTM4N2I2MjgwMDM2YTQwNDcxMDNkNTBiY2Y2NTA2Li42ZmE1YjUyM2ZiZjA4NDk3
NTZjMjFjYzVjMWEyMDVjNzM4NGQyMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMjA3LDYgKzIwNywxMSBA
QCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0
IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFttX3ZpZXcgX3Bvc2l0aW9uSW5mb3JtYXRp
b25EaWRDaGFuZ2U6aW5mb107CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExh
eWVyVHJlZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwYWdlU2l6ZSwgZG91YmxlIHBhZ2VTY2Fs
ZSkKK3sKKyAgICBbbV92aWV3IF9kaWRDb21taXRMYXllclRyZWVGb3JQYWdlU2l6ZTpwYWdlU2l6
ZSBzY2FsZTpwYWdlU2NhbGVdOworfQorCiBib29sIFBhZ2VDbGllbnRJbXBsOjpleGVjdXRlU2F2
ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRl
bnRWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3
LmgKaW5kZXggNGU0YzJhMTZjM2JhZmE4ZTk2MzEwOGUyY2YyMjVjNmQyMzlmZDA5YS4uMTY1NDcx
OTUwNDNlNGFhM2Q4NjU4YTI0MWY3OTZiMzIwN2E2ZWM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXcuaApAQCAtNDUsNyArNDUsNyBAQCB0
eXBlZGVmIE5TX0VOVU0odW5zaWduZWQsIFdLQ29udGVudFR5cGUpCiAtICh2b2lkKWNvbnRlbnRW
aWV3RGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZTooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3
OwogLSAodm9pZCljb250ZW50Vmlld0RpZFJlY2VpdmVNb2JpbGVEb2NUeXBlOihXS0NvbnRlbnRW
aWV3ICopY29udGVudFZpZXc7CiAtICh2b2lkKWNvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICop
Y29udGVudFZpZXcgZGlkQ2hhbmdlVmlld3BvcnRBcmd1bWVudHNTaXplOihDR1NpemUpbmV3U2l6
ZSBpbml0aWFsU2NhbGU6KGZsb2F0KWluaXRpYWxTY2FsZSBtaW5pbXVtU2NhbGU6KGZsb2F0KW1p
bmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6KGZsb2F0KW1heGltdW1TY2FsZSBhbGxvd3NVc2VyU2Nh
bGluZzooZmxvYXQpYWxsb3dzVXNlclNjYWxpbmc7Ci0KKy0gKHZvaWQpY29udGVudFZpZXc6KFdL
Q29udGVudFZpZXcgKiljb250ZW50VmlldyBkaWRDb21taXRMYXllclRyZWVGb3JQYWdlU2l6ZToo
Q0dTaXplKXBhZ2VTaXplIHNjYWxlOihkb3VibGUpc2NhbGU7CiBAZW5kCiAKIFdLX0FQSV9DTEFT
UwpAQCAtNTUsNiArNTUsNyBAQCBXS19BUElfQ0xBU1MKIAogQHByb3BlcnR5IChub25hdG9taWMs
IGFzc2lnbikgaWQgPFdLQ29udGVudFZpZXdEZWxlZ2F0ZT4gZGVsZWdhdGU7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIFdLQ29udGVudFR5cGUgY29udGVudFR5cGU7CitAcHJvcGVy
dHkgKG5vbmF0b21pYykgQ0dGbG9hdCBwYWdlU2NhbGVGYWN0b3I7CiAKIEBwcm9wZXJ0eSAocmVh
ZG9ubHkpIFdLUGFnZVJlZiBfcGFnZVJlZjsKIApAQCAtNjksNiArNzAsNSBAQCBXS19BUElfQ0xB
U1MKIAogLSAodm9pZClkaWRGaW5pc2hTY3JvbGxUbzooQ0dQb2ludCljb250ZW50T2Zmc2V0Owog
LSAodm9pZClkaWRTY3JvbGxUbzooQ0dQb2ludCljb250ZW50T2Zmc2V0OwotLSAodm9pZClkaWRa
b29tVG9TY2FsZTooQ0dGbG9hdClzY2FsZTsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggODY1ODc5NjI1OTg1MjJl
NmY1ZGI5NWFkZDEyMmQzZWJhMzQ4NjY3OS4uN2JhNGRiNTdhNjMyYzExYThmZGJmNjgyNjA3ZmYw
NjViOGFlYmVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tCkBAIC0xNzIsNiArMTcyLDE4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAgICAgcmV0dXJuIHRvQVBJKF9wYWdlLmdldCgpKTsKIH0KIAorLSAoQ0dGbG9hdClwYWdl
U2NhbGVGYWN0b3IKK3sKKyAgICByZXR1cm4gX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOworfQor
CistICh2b2lkKXNldFBhZ2VTY2FsZUZhY3RvcjooQ0dGbG9hdClzY2FsZQoreworICAgIF9wYWdl
LT5kaWRGaW5pc2hab29taW5nKHNjYWxlKTsKKyAgICBbc2VsZiBfdXBkYXRlVmlld0V4cG9zZWRS
ZWN0XTsKKyAgICBbc2VsZiBfdXBkYXRlRml4ZWRQb3NpdGlvblJlY3RdOworfQorCiAtICh2b2lk
KXNldE1pbmltdW1TaXplOihDR1NpemUpc2l6ZQogewogICAgIF9wYWdlLT5kcmF3aW5nQXJlYSgp
LT5zZXRTaXplKEludFNpemUoc2l6ZSksIEludFNpemUoKSwgSW50U2l6ZSgpKTsKQEAgLTIyNSwx
MyArMjM3LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBfcGFnZS0+c2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eSgpLT5zY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFEZWxlZ2F0ZWRTY3Jv
bGxpbmcoX3BhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKS0+cm9vdFNjcm9sbGluZ05v
ZGVJRCgpLCByb3VuZGVkSW50UG9pbnQoY29udGVudE9mZnNldCkpOwogfQogCi0tICh2b2lkKWRp
ZFpvb21Ub1NjYWxlOihDR0Zsb2F0KXNjYWxlCi17Ci0gICAgX3BhZ2UtPmRpZEZpbmlzaFpvb21p
bmcoc2NhbGUpOwotICAgIFtzZWxmIF91cGRhdGVWaWV3RXhwb3NlZFJlY3RdOwotICAgIFtzZWxm
IF91cGRhdGVGaXhlZFBvc2l0aW9uUmVjdF07Ci19Ci0KICNwcmFnbWEgbWFyayBJbnRlcm5hbAog
CiAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhDb250ZXh0UmVmOihXS0NvbnRleHRS
ZWYpY29udGV4dFJlZiBwYWdlR3JvdXBSZWY6KFdLUGFnZUdyb3VwUmVmKXBhZ2VHcm91cFJlZiBy
ZWxhdGVkVG9QYWdlOihXS1BhZ2VSZWYpcmVsYXRlZFBhZ2UKQEAgLTI5NywxNCArMzAyLDE5IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgICAgIFtfZGVsZWdhdGUgY29udGVudFZpZXdE
aWRDb21taXRMb2FkRm9yTWFpbkZyYW1lOnNlbGZdOwogfQogCi0tICh2b2lkKV9kaWRDaGFuZ2VD
b250ZW50U2l6ZTooQ0dTaXplKWNvbnRlbnRzU2l6ZQorLSAodm9pZClzZXRCb3VuZHM6KENHUmVj
dClib3VuZHMKIHsKLSAgICBbc2VsZiBzZXRCb3VuZHM6e0NHUG9pbnRaZXJvLCBjb250ZW50c1Np
emV9XTsKLSAgICBbX2ludGVyYWN0aW9uVmlldyBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIGNv
bnRlbnRzU2l6ZS53aWR0aCwgY29udGVudHNTaXplLmhlaWdodCldOwotICAgIFtfcm9vdENvbnRl
bnRWaWV3IHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgY29udGVudHNTaXplLndpZHRoLCBjb250
ZW50c1NpemUuaGVpZ2h0KV07CisgICAgW3N1cGVyIHNldEJvdW5kczpib3VuZHNdOworICAgIFtf
aW50ZXJhY3Rpb25WaWV3IHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgYm91bmRzLnNpemUud2lk
dGgsIGJvdW5kcy5zaXplLmhlaWdodCldOworICAgIFtfcm9vdENvbnRlbnRWaWV3IHNldEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgYm91bmRzLnNpemUud2lkdGgsIGJvdW5kcy5zaXplLmhlaWdodCld
OworfQogCistICh2b2lkKV9kaWRDaGFuZ2VDb250ZW50U2l6ZTooQ0dTaXplKWNvbnRlbnRzU2l6
ZQorewogICAgIGlmIChbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY29u
dGVudFZpZXc6Y29udGVudHNTaXplRGlkQ2hhbmdlOildKQogICAgICAgICBbX2RlbGVnYXRlIGNv
bnRlbnRWaWV3OnNlbGYgY29udGVudHNTaXplRGlkQ2hhbmdlOmNvbnRlbnRzU2l6ZV07CisgICAg
ZWxzZQorICAgICAgICBbc2VsZiBzZXRCb3VuZHM6e0NHUG9pbnRaZXJvLCBjb250ZW50c1NpemV9
XTsKIH0KIAogLSAodm9pZClfZGlkUmVjZWl2ZU1vYmlsZURvY1R5cGVGb3JNYWluRnJhbWUKQEAg
LTMxOSw2ICszMjksMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICAgICAgW19kZWxl
Z2F0ZSBjb250ZW50VmlldzpzZWxmIGRpZENoYW5nZVZpZXdwb3J0QXJndW1lbnRzU2l6ZTpDR1Np
emVNYWtlKGFyZ3VtZW50cy53aWR0aCwgYXJndW1lbnRzLmhlaWdodCkgaW5pdGlhbFNjYWxlOmFy
Z3VtZW50cy56b29tIG1pbmltdW1TY2FsZTphcmd1bWVudHMubWluWm9vbSBtYXhpbXVtU2NhbGU6
YXJndW1lbnRzLm1heFpvb20gYWxsb3dzVXNlclNjYWxpbmc6YXJndW1lbnRzLnVzZXJab29tXTsK
IH0KIAorLSAodm9pZClfZGlkQ29tbWl0TGF5ZXJUcmVlRm9yUGFnZVNpemU6KGNvbnN0IFdlYkNv
cmU6OkludFNpemUmKXBhZ2VTaXplIHNjYWxlOihkb3VibGUpc2NhbGUKK3sKKyAgICBpZiAoW19k
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRlbnRWaWV3OmRpZENvbW1p
dExheWVyVHJlZUZvclBhZ2VTaXplOnNjYWxlOildKQorICAgICAgICBbX2RlbGVnYXRlIGNvbnRl
bnRWaWV3OiBzZWxmIGRpZENvbW1pdExheWVyVHJlZUZvclBhZ2VTaXplOnBhZ2VTaXplIHNjYWxl
OnNjYWxlXTsKK30KKwogLSAodm9pZClfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDoodWlu
dDY0X3QpcmVxdWVzdElEIGNvbG9yOihjb25zdCBDb2xvciYpY29sb3IgcXVhZHM6KGNvbnN0IFZl
Y3RvcjxGbG9hdFF1YWQ+JiloaWdobGlnaHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6KGNvbnN0IElu
dFNpemUmKXRvcExlZnRSYWRpdXMgdG9wUmlnaHRSYWRpdXM6KGNvbnN0IEludFNpemUmKXRvcFJp
Z2h0UmFkaXVzIGJvdHRvbUxlZnRSYWRpdXM6KGNvbnN0IEludFNpemUmKWJvdHRvbUxlZnRSYWRp
dXMgYm90dG9tUmlnaHRSYWRpdXM6KGNvbnN0IEludFNpemUmKWJvdHRvbVJpZ2h0UmFkaXVzCiB7
CiAgICAgW19pbnRlcmFjdGlvblZpZXcgX2RpZEdldFRhcEhpZ2hsaWdodEZvclJlcXVlc3Q6cmVx
dWVzdElEIGNvbG9yOmNvbG9yIHF1YWRzOmhpZ2hsaWdodGVkUXVhZHMgdG9wTGVmdFJhZGl1czp0
b3BMZWZ0UmFkaXVzIHRvcFJpZ2h0UmFkaXVzOnRvcFJpZ2h0UmFkaXVzIGJvdHRvbUxlZnRSYWRp
dXM6Ym90dG9tTGVmdFJhZGl1cyBib3R0b21SaWdodFJhZGl1czpib3R0b21SaWdodFJhZGl1c107
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcm5hbC5oCmluZGV4IGQ1ODQ0ZDBhZjU5YmU1NWQ3MmJhMmJhYTM0ZDExOTk5MjQw
NzY1OTMuLjc3ODk0NTAwYWJlNzJjMjhhM2RiNTRmMGU5MTEzNGM4MDQyYTNlMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXdJbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcm5hbC5oCkBAIC02MCw2ICs2MCw3IEBAIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbjsKIC0gKHZvaWQpX2RpZENoYW5nZUNvbnRlbnRTaXplOihDR1NpemUpY29udGVu
dHNTaXplOwogLSAodm9pZClfZGlkUmVjZWl2ZU1vYmlsZURvY1R5cGVGb3JNYWluRnJhbWU7CiAt
ICh2b2lkKV9kaWRDaGFuZ2VWaWV3cG9ydEFyZ3VtZW50czooY29uc3QgV2ViQ29yZTo6Vmlld3Bv
cnRBcmd1bWVudHMmKXZpZXdwb3J0QXJndW1lbnRzOworLSAodm9pZClfZGlkQ29tbWl0TGF5ZXJU
cmVlRm9yUGFnZVNpemU6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXBhZ2VTaXplIHNjYWxlOihk
b3VibGUpc2NhbGU7CiAKIC0gKHZvaWQpX2RpZEdldFRhcEhpZ2hsaWdodEZvclJlcXVlc3Q6KHVp
bnQ2NF90KXJlcXVlc3RJRCBjb2xvcjooY29uc3QgV2ViQ29yZTo6Q29sb3ImKWNvbG9yIHF1YWRz
Oihjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYpaGlnaGxpZ2h0ZWRRdWFkcyB0b3BM
ZWZ0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJil0b3BMZWZ0UmFkaXVzIHRvcFJpZ2h0
UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJil0b3BSaWdodFJhZGl1cyBib3R0b21MZWZ0
UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJilib3R0b21MZWZ0UmFkaXVzIGJvdHRvbVJp
Z2h0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJilib3R0b21SaWdodFJhZGl1czsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1tCmluZGV4IDk0
MGIwZTM1OTg5NGExZjQzNmJkMWUzM2UzYTQzZTNjMDU1MWViZTEuLjk0YjJkOTkwODZjOWVjNjVh
YWY5M2UzOTQ3M2MzZjdmZjY1YTM1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1ZpZXdJT1MubW0KQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0
IG1heFdlYlZpZXdTY2FsZSA9IDU7CiBzdGF0aWMgc3RydWN0IF9VSVdlYlZpZXdwb3J0Q29uZmln
dXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29uZmlndXJhdGlvbiA9IHsgeyBVSVdlYlZpZXdwb3J0
U3RhbmRhcmRWaWV3cG9ydFdpZHRoLCBVSVdlYlZpZXdwb3J0R3Jvd3NBbmRTaHJpbmtzVG9GaXRI
ZWlnaHQgfSwgVUlXZWJWaWV3cG9ydFNjYWxlRm9yU2NhbGVzVG9GaXQsIG1pbldlYlZpZXdTY2Fs
ZSwgbWF4V2ViVmlld1NjYWxlLCB0cnVlIH07CiAKIEBpbnRlcmZhY2UgV0tWaWV3ICgpIDxVSVNj
cm9sbFZpZXdEZWxlZ2F0ZSwgV0tDb250ZW50Vmlld0RlbGVnYXRlLCBfVUlXZWJWaWV3cG9ydEhh
bmRsZXJEZWxlZ2F0ZT4KLS0gKHZvaWQpX3NldERvY3VtZW50U2NhbGU6KENHRmxvYXQpbmV3U2Nh
bGU7CistICh2b2lkKV91cGRhdGVTY3JvbGxWaWV3U2NhbGluZzsKIEBlbmQKIAogQGltcGxlbWVu
dGF0aW9uIFdLVmlldyB7CkBAIC01MCw2ICs1MCwxMCBAQCBzdGF0aWMgc3RydWN0IF9VSVdlYlZp
ZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29uZmlndXJhdGlvbiA9IHsgeyBV
SQogICAgIEJPT0wgX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlOwogICAgIFJldGFpblB0cjxfVUlX
ZWJWaWV3cG9ydEhhbmRsZXI+IF92aWV3cG9ydEhhbmRsZXI7CiAgICAgQk9PTCBfaGFzU3RhdGlj
TWluaW11bUxheW91dFNpemU7CisKKyAgICBCT09MIF9oYXNQZW5kaW5nUGFnZVJlc2V0OworICAg
IEJPT0wgX2hhc1BlbmRpbmdTY3JvbGxWaWV3VXBkYXRlOworICAgIGRvdWJsZSBfbGF0ZXN0Q29t
bWl0ZWRMYXllclNjYWxlOwogfQogCiAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29k
ZXIKQEAgLTEwNSwxNyArMTA5LDE0IEBAIHN0YXRpYyBzdHJ1Y3QgX1VJV2ViVmlld3BvcnRDb25m
aWd1cmF0aW9uIHN0YW5kYXJkVmlld3BvcnRDb25maWd1cmF0aW9uID0geyB7IFVJCiAKIC0gKHZv
aWQpY29udGVudFZpZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldyBjb250ZW50c1NpemVE
aWRDaGFuZ2U6KENHU2l6ZSluZXdTaXplCiB7Ci0gICAgQ0dGbG9hdCB6b29tU2NhbGUgPSBbX3Nj
cm9sbFZpZXcgem9vbVNjYWxlXTsKLSAgICBDR1NpemUgY29udGVudHNTaXplSW5TY3JvbGxWaWV3
Q29vcmRpbmF0ZXMgPSBDR1NpemVNYWtlKG5ld1NpemUud2lkdGggKiB6b29tU2NhbGUsIG5ld1Np
emUuaGVpZ2h0ICogem9vbVNjYWxlKTsKLSAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVudFNpemU6
Y29udGVudHNTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXNdOwotCiAgICAgW192aWV3cG9ydEhh
bmRsZXIgdXBkYXRlOl57Ci0gICAgICAgICBbX3ZpZXdwb3J0SGFuZGxlciBzZXREb2N1bWVudEJv
dW5kczp7Q0dQb2ludFplcm8sIG5ld1NpemV9XTsKKyAgICAgICAgW192aWV3cG9ydEhhbmRsZXIg
c2V0RG9jdW1lbnRCb3VuZHM6e0NHUG9pbnRaZXJvLCBuZXdTaXplfV07CiAgICAgfV07CiB9CiAK
IC0gKHZvaWQpY29udGVudFZpZXdEaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lOihXS0NvbnRlbnRW
aWV3ICopY29udGVudFZpZXcKIHsKKyAgICBfaGFzUGVuZGluZ1BhZ2VSZXNldCA9IFlFUzsKICAg
ICBfdXNlckhhc0NoYW5nZWRQYWdlU2NhbGUgPSBOTzsKIAogICAgIFdLQ29udGVudFR5cGUgY29u
dGVudFR5cGUgPSBbX2NvbnRlbnRWaWV3IGNvbnRlbnRUeXBlXTsKQEAgLTE1NCwyMiArMTU1LDM0
IEBAIHN0YXRpYyBzdHJ1Y3QgX1VJV2ViVmlld3BvcnRDb25maWd1cmF0aW9uIHN0YW5kYXJkVmll
d3BvcnRDb25maWd1cmF0aW9uID0geyB7IFVJCiAgICAgfV07CiB9CiAKKy0gKHZvaWQpY29udGVu
dFZpZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldyBkaWRDb21taXRMYXllclRyZWVGb3JQ
YWdlU2l6ZTooQ0dTaXplKXBhZ2VTaXplIHNjYWxlOihkb3VibGUpc2NhbGUKK3sKKyAgICBfbGF0
ZXN0Q29tbWl0ZWRMYXllclNjYWxlID0gc2NhbGU7CisKKyAgICBjb250ZW50Vmlldy5ib3VuZHMg
PSB7IENHUG9pbnRaZXJvLCBwYWdlU2l6ZSB9OworCisgICAgW3NlbGYgX3VwZGF0ZVNjcm9sbFZp
ZXdTY2FsaW5nXTsKKworICAgIGlmIChfaGFzUGVuZGluZ1BhZ2VSZXNldCkgeworICAgICAgICBb
X3Njcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpDR1BvaW50WmVyb107CisgICAgICAgIF9oYXNQ
ZW5kaW5nUGFnZVJlc2V0ID0gTk87CisgICAgfQorfQorCiAjcHJhZ21hIG1hcmsgLSBfVUlXZWJW
aWV3cG9ydEhhbmRsZXJEZWxlZ2F0ZQogCiAtICh2b2lkKXZpZXdwb3J0SGFuZGxlckRpZENoYW5n
ZVNjYWxlczooX1VJV2ViVmlld3BvcnRIYW5kbGVyICopdmlld3BvcnRIYW5kbGVyCiB7CiAgICAg
QVNTRVJUKHZpZXdwb3J0SGFuZGxlciA9PSBfdmlld3BvcnRIYW5kbGVyKTsKLSAgICBbX3Njcm9s
bFZpZXcgc2V0TWluaW11bVpvb21TY2FsZTp2aWV3cG9ydEhhbmRsZXIubWluaW11bVNjYWxlXTsK
LSAgICBbX3Njcm9sbFZpZXcgc2V0TWF4aW11bVpvb21TY2FsZTp2aWV3cG9ydEhhbmRsZXIubWF4
aW11bVNjYWxlXTsKLSAgICBbX3Njcm9sbFZpZXcgc2V0Wm9vbUVuYWJsZWQ6dmlld3BvcnRIYW5k
bGVyLmFsbG93c1VzZXJTY2FsaW5nXTsKIAorICAgIENHRmxvYXQgdmFsaWRTY2FsZTsKICAgICBp
ZiAoIV91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZSkKLSAgICAgICAgW3NlbGYgX3NldERvY3VtZW50
U2NhbGU6dmlld3BvcnRIYW5kbGVyLmluaXRpYWxTY2FsZV07CisgICAgICAgIHZhbGlkU2NhbGUg
PSB2aWV3cG9ydEhhbmRsZXIuaW5pdGlhbFNjYWxlOwogICAgIGVsc2UgewogICAgICAgICBDR0Zs
b2F0IGN1cnJlbnRTY2FsZSA9IFtfc2Nyb2xsVmlldyB6b29tU2NhbGVdOwotICAgICAgICBDR0Zs
b2F0IHZhbGlkU2NhbGUgPSBzdGQ6Om1heChzdGQ6Om1pbihjdXJyZW50U2NhbGUsIHN0YXRpY19j
YXN0PENHRmxvYXQ+KHZpZXdwb3J0SGFuZGxlci5tYXhpbXVtU2NhbGUpKSwgc3RhdGljX2Nhc3Q8
Q0dGbG9hdD4odmlld3BvcnRIYW5kbGVyLm1pbmltdW1TY2FsZSkpOwotICAgICAgICBbc2VsZiBf
c2V0RG9jdW1lbnRTY2FsZTp2YWxpZFNjYWxlXTsKKyAgICAgICAgdmFsaWRTY2FsZSA9IHN0ZDo6
bWF4KHN0ZDo6bWluKGN1cnJlbnRTY2FsZSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4odmlld3BvcnRI
YW5kbGVyLm1heGltdW1TY2FsZSkpLCBzdGF0aWNfY2FzdDxDR0Zsb2F0Pih2aWV3cG9ydEhhbmRs
ZXIubWluaW11bVNjYWxlKSk7CiAgICAgfQorICAgIFtfY29udGVudFZpZXcgc2V0UGFnZVNjYWxl
RmFjdG9yOnZhbGlkU2NhbGVdOwogfQogCiAtICh2b2lkKXZpZXdwb3J0SGFuZGxlcjooX1VJV2Vi
Vmlld3BvcnRIYW5kbGVyICopdmlld3BvcnRIYW5kbGVyIGRpZENoYW5nZVZpZXdwb3J0U2l6ZToo
Q0dTaXplKW5ld1NpemUKQEAgLTE3OCw3ICsxOTEsNiBAQCBzdGF0aWMgc3RydWN0IF9VSVdlYlZp
ZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29uZmlndXJhdGlvbiA9IHsgeyBV
SQogICAgIFtfY29udGVudFZpZXcgc2V0Vmlld3BvcnRTaXplOm5ld1NpemVdOwogfQogCi0KICNw
cmFnbWEgbWFyayAtIFVJU2Nyb2xsVmlld0RlbGVnYXRlCiAKIC0gKFVJVmlldyAqKXZpZXdGb3Ja
b29taW5nSW5TY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CkBAIC0xODksMTQg
KzIwMSwxOCBAQCBzdGF0aWMgc3RydWN0IF9VSVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFu
ZGFyZFZpZXdwb3J0Q29uZmlndXJhdGlvbiA9IHsgeyBVSQogCiAtICh2b2lkKXNjcm9sbFZpZXdX
aWxsQmVnaW5ab29taW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWaWV3OihVSVZp
ZXcgKil2aWV3CiB7Ci0gICAgaWYgKHNjcm9sbFZpZXcucGluY2hHZXN0dXJlUmVjb2duaXplci5z
dGF0ZSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbikKKyAgICBpZiAoIV9oYXNQZW5k
aW5nUGFnZVJlc2V0ICYmIHNjcm9sbFZpZXcucGluY2hHZXN0dXJlUmVjb2duaXplci5zdGF0ZSA9
PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbikKICAgICAgICAgX3VzZXJIYXNDaGFuZ2Vk
UGFnZVNjYWxlID0gWUVTOwogfQogCiAtICh2b2lkKV9kaWRGaW5pc2hTY3JvbGwKIHsKKyAgICBp
ZiAoX2hhc1BlbmRpbmdQYWdlUmVzZXQpCisgICAgICAgIHJldHVybjsKKwogICAgIENHUG9pbnQg
cG9zaXRpb24gPSBbX3Njcm9sbFZpZXcgY29udmVydFBvaW50Oltfc2Nyb2xsVmlldyBjb250ZW50
T2Zmc2V0XSB0b1ZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKICAgICBbX2NvbnRlbnRWaWV3IGRp
ZEZpbmlzaFNjcm9sbFRvOnBvc2l0aW9uXTsKKyAgICBbc2VsZiBfdXBkYXRlU2Nyb2xsVmlld1Nj
YWxpbmdJZk5lZWRlZF07CiB9CiAKIC0gKHZvaWQpc2Nyb2xsVmlld0RpZEVuZERyYWdnaW5nOihV
SVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpbGxEZWNlbGVyYXRlOihCT09MKWRlY2VsZXJhdGUK
QEAgLTIxOCwxNCArMjM0LDIxIEBAIHN0YXRpYyBzdHJ1Y3QgX1VJV2ViVmlld3BvcnRDb25maWd1
cmF0aW9uIHN0YW5kYXJkVmlld3BvcnRDb25maWd1cmF0aW9uID0geyB7IFVJCiAKIC0gKHZvaWQp
c2Nyb2xsVmlld0RpZFNjcm9sbDooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogeworICAgIGlm
IChfaGFzUGVuZGluZ1BhZ2VSZXNldCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgQ0dQb2ludCBw
b3NpdGlvbiA9IFtfc2Nyb2xsVmlldyBjb252ZXJ0UG9pbnQ6W19zY3JvbGxWaWV3IGNvbnRlbnRP
ZmZzZXRdIHRvVmlldzpfY29udGVudFZpZXcuZ2V0KCldOwogICAgIFtfY29udGVudFZpZXcgZGlk
U2Nyb2xsVG86cG9zaXRpb25dOwogfQogCiAtICh2b2lkKXNjcm9sbFZpZXdEaWRFbmRab29taW5n
OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWaWV3OihVSVZpZXcgKil2aWV3IGF0U2Nh
bGU6KENHRmxvYXQpc2NhbGUKIHsKKyAgICBpZiAoX2hhc1BlbmRpbmdQYWdlUmVzZXQpCisgICAg
ICAgIHJldHVybjsKKwogICAgIEFTU0VSVChzY3JvbGxWaWV3ID09IF9zY3JvbGxWaWV3KTsKLSAg
ICBbX2NvbnRlbnRWaWV3IGRpZFpvb21Ub1NjYWxlOnNjYWxlXTsKKyAgICBbX2NvbnRlbnRWaWV3
IHNldFBhZ2VTY2FsZUZhY3RvcjpzY2FsZV07CisgICAgW3NlbGYgX3VwZGF0ZVNjcm9sbFZpZXdT
Y2FsaW5nSWZOZWVkZWRdOwogfQogCiAjcHJhZ21hIG1hcmsgSW50ZXJuYWwKQEAgLTI1Miw3ICsy
NzUsMTkgQEAgc3RhdGljIHN0cnVjdCBfVUlXZWJWaWV3cG9ydENvbmZpZ3VyYXRpb24gc3RhbmRh
cmRWaWV3cG9ydENvbmZpZ3VyYXRpb24gPSB7IHsgVUkKICAgICBfdmlld3BvcnRIYW5kbGVyID0g
YWRvcHROUyhbW19VSVdlYlZpZXdwb3J0SGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtfdmll
d3BvcnRIYW5kbGVyIHNldERlbGVnYXRlOnNlbGZdOwogCi0gICAgW3NlbGYgX2ZyYW1lT3JCb3Vu
ZHNDaGFuZ2VkXTsKKyAgICAvLyBJdCBpcyBjb21tb24gdG8gaGF2ZSB0aGUgdmlldyBpbml0aWFs
aXplZCB3aXRoIGEgbnVsbCBmcmFtZS4gVGhlIHJlc3VsdGluZyBXZWJLaXQgdmlld3BvcnQgY29u
ZmlndXJhdGlvbgorICAgIC8vIGlzIG5vdCB1c2VmdWwuIFRvIHJlZHVjZSB3b3JrIHdoZW4gdXBk
YXRpbmcgdGhlIGZyYW1lIG9yIGNvbW1pdGluZyB0aGUgY29udGVudCwgd2UgZGVmaW5lIHRoZSB2
aWV3cG9ydAorICAgIC8vIHdpdGggcmVhc29uYWJsZSB2YWx1ZXMgZm9yIHRoZSBtaXNzaW5nIHBh
cmFtZXRlcnMuCisgICAgW192aWV3cG9ydEhhbmRsZXIgdXBkYXRlOl57CisgICAgICAgIFtfdmll
d3BvcnRIYW5kbGVyIHJlc2V0Vmlld3BvcnRDb25maWd1cmF0aW9uOiZzdGFuZGFyZFZpZXdwb3J0
Q29uZmlndXJhdGlvbl07CisKKyAgICAgICAgQ0dTaXplIHNpemUgPSBib3VuZHMuc2l6ZTsKKyAg
ICAgICAgaWYgKHNpemUud2lkdGggPD0gMCB8fCBzaXplLmhlaWdodCA8PSAwKQorICAgICAgICAg
ICAgc2l6ZSA9IFtbVUlTY3JlZW4gbWFpblNjcmVlbl0gYm91bmRzXS5zaXplOworICAgICAgICBb
X3ZpZXdwb3J0SGFuZGxlciBzZXRBdmFpbGFibGVWaWV3U2l6ZTpzaXplXTsKKyAgICAgICAgW19j
b250ZW50VmlldyBzZXRNaW5pbXVtU2l6ZTpzaXplXTsKKyAgICAgICAgW192aWV3cG9ydEhhbmRs
ZXIgc2V0RG9jdW1lbnRCb3VuZHM6e0NHUG9pbnRaZXJvLCBzaXplfV07CisgICAgfV07CiB9CiAK
IC0gKHZvaWQpX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkCkBAIC0yNjcsMTUgKzMwMiwzMiBAQCBzdGF0
aWMgc3RydWN0IF9VSVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29u
ZmlndXJhdGlvbiA9IHsgeyBVSQogICAgIFtfY29udGVudFZpZXcgc2V0TWluaW11bVNpemU6Ym91
bmRzLnNpemVdOwogfQogCi0tICh2b2lkKV9zZXREb2N1bWVudFNjYWxlOihDR0Zsb2F0KW5ld1Nj
YWxlCistICh2b2lkKV91cGRhdGVTY3JvbGxWaWV3U2NhbGluZwogewotICAgIENHUG9pbnQgY29u
dGVudE9mZnNldEluRG9jdW1lbnRDb29yZGluYXRlcyA9IFtfc2Nyb2xsVmlldyBjb252ZXJ0UG9p
bnQ6W19zY3JvbGxWaWV3IGNvbnRlbnRPZmZzZXRdIHRvVmlldzpfY29udGVudFZpZXcuZ2V0KCld
OworICAgIGlmIChbX3Njcm9sbFZpZXcgaXNab29taW5nXSB8fCBbX3Njcm9sbFZpZXcgaXNab29t
Qm91bmNpbmddIHx8IFtfc2Nyb2xsVmlldyBpc1RyYWNraW5nXSB8fCBbX3Njcm9sbFZpZXcgaXNE
cmFnZ2luZ10gfHwgW19zY3JvbGxWaWV3IGlzRGVjZWxlcmF0aW5nXSkgeworICAgICAgICAvLyBE
byBub3QgbWVzcyB3aXRoIFVJU2Nyb2xsVmlldyBkdXJpbmcgdXNpbmcgaW50ZXJhY3Rpb24sIHRo
YXQgY2F1c2VzIHVuZGVmaW5lZCBiZWhhdmlvcnMuCisgICAgICAgIF9oYXNQZW5kaW5nU2Nyb2xs
Vmlld1VwZGF0ZSA9IFlFUzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBbX3Njcm9sbFZp
ZXcgc2V0TWluaW11bVpvb21TY2FsZTpbX3ZpZXdwb3J0SGFuZGxlciBtaW5pbXVtU2NhbGVdXTsK
KyAgICBbX3Njcm9sbFZpZXcgc2V0TWF4aW11bVpvb21TY2FsZTpbX3ZpZXdwb3J0SGFuZGxlciBt
YXhpbXVtU2NhbGVdXTsKKyAgICBbX3Njcm9sbFZpZXcgc2V0Wm9vbUVuYWJsZWQ6W192aWV3cG9y
dEhhbmRsZXIgYWxsb3dzVXNlclNjYWxpbmddXTsKIAotICAgIFtfc2Nyb2xsVmlldyBzZXRab29t
U2NhbGU6bmV3U2NhbGVdOwotICAgIFtfY29udGVudFZpZXcgZGlkWm9vbVRvU2NhbGU6bmV3U2Nh
bGVdOworICAgIGlmIChfbGF0ZXN0Q29tbWl0ZWRMYXllclNjYWxlICE9IFtfc2Nyb2xsVmlldyB6
b29tU2NhbGVdKSB7CisgICAgICAgIENHUG9pbnQgY29udGVudE9mZnNldEluRG9jdW1lbnRDb29y
ZGluYXRlcyA9IFtfc2Nyb2xsVmlldyBjb252ZXJ0UG9pbnQ6W19zY3JvbGxWaWV3IGNvbnRlbnRP
ZmZzZXRdIHRvVmlldzpfY29udGVudFZpZXcuZ2V0KCldOworICAgICAgICBbX3Njcm9sbFZpZXcg
c2V0Wm9vbVNjYWxlOl9sYXRlc3RDb21taXRlZExheWVyU2NhbGVdOwogCi0gICAgQ0dQb2ludCBj
b250ZW50T2Zmc2V0ID0gW19zY3JvbGxWaWV3IGNvbnZlcnRQb2ludDpjb250ZW50T2Zmc2V0SW5E
b2N1bWVudENvb3JkaW5hdGVzIGZyb21WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07Ci0gICAgW19z
Y3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Y29udGVudE9mZnNldF07CisgICAgICAgIENHUG9p
bnQgY29udGVudE9mZnNldCA9IFtfc2Nyb2xsVmlldyBjb252ZXJ0UG9pbnQ6Y29udGVudE9mZnNl
dEluRG9jdW1lbnRDb29yZGluYXRlcyBmcm9tVmlldzpfY29udGVudFZpZXcuZ2V0KCldOworICAg
ICAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpjb250ZW50T2Zmc2V0XTsKKyAgICB9
Cit9CisKKy0gKHZvaWQpX3VwZGF0ZVNjcm9sbFZpZXdTY2FsaW5nSWZOZWVkZWQKK3sKKyAgICBp
ZiAoX2hhc1BlbmRpbmdTY3JvbGxWaWV3VXBkYXRlKSB7CisgICAgICAgIF9oYXNQZW5kaW5nU2Ny
b2xsVmlld1VwZGF0ZSA9IE5POworICAgICAgICBbc2VsZiBfdXBkYXRlU2Nyb2xsVmlld1NjYWxp
bmddOworICAgIH0KIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
aW5kZXggMWVlOTVjMWFhMjc4NTAyMzM4MzMyZjJmNjg5NjI5Y2JlZmVhYTgwZi4uYzdjYzBhNWFl
MzA5OGMwMjgyYzkxZGM1N2UwM2MzYTM5YTYwZjRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCkBAIC0yNTAsNiArMjUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGludGVycHJldEtl
eUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZENvbW1pdExheWVyVHJlZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgZG91YmxlIHNjYWxl
KSA9IDA7CiAjZW5kaWYKIAogICAgIC8vIEF1eGlsaWFyeSBDbGllbnQgQ3JlYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhNmJmOGY0OWQ5OWI3NmY0YWVk
MjE1NzVlMDNiY2IxYTY4NGYwOTVlLi5jYTg4MTllOGFiYjcwYWYxMTIwNWYxOWMxOTRkMGM2MDQ2
MTQ5ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00NDks
NiArNDQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRp
b24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKTsKICAgICB2b2lkIGdl
dFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpOwogICAgIHZvaWQgcmVxdWVzdFBvc2l0aW9uSW5mb3Jt
YXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIGRpZENvbW1pdExheWVy
VHJlZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgZG91YmxlIHNjYWxlKTsKICNlbmRpZgogCiAg
ICAgY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9lZGl0
b3JTdGF0ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQppbmRleCBmMWU4NzU4Y2Q0NTQwMmI3NjhiOTdkNzRjNTZhMTNjYmRkMmMwYmJhLi5i
MTRmZjIxOGRkNjE1MjI2M2FjZjk0Mzg5NDI1MTJhOGMzOTRjMGFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMzI2LDYgKzMyNiwx
MSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bm90aWZ5UmV2ZWFsZWRTZWxlY3Rpb24oKQogICAgIG1f
cGFnZUNsaWVudC5zZWxlY3Rpb25EaWRDaGFuZ2UoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6
OmRpZENvbW1pdExheWVyVHJlZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwYWdlU2l6ZSwgZG91
YmxlIHBhZ2VTY2FsZSkKK3sKKyAgICBtX3BhZ2VDbGllbnQuZGlkQ29tbWl0TGF5ZXJUcmVlKHBh
Z2VTaXplLCBwYWdlU2NhbGUpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZW5kU2VsZWN0
aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNlbGVjdGlvbihzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZ3JhbnVsYXJpdHkpKSwgbV9wYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lm1tCmluZGV4IGYxNmVjYzQ0MDgwYWViZDY3NTlkYjM5NmE4NGMwZGMzNjQ3MGY0ZGYuLjli
NmZkNmYxNDY5ZGIyNDkwMjA4M2E1NTNjYzViNDI2N2Y0YmVkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkubW0KQEAgLTg5LDYgKzg5LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5Ojpjb21taXRMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnMK
ICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIG1fd2ViUGFnZVByb3h5LT5zY3JvbGxp
bmdDb29yZGluYXRvclByb3h5KCktPnVwZGF0ZVNjcm9sbGluZ1RyZWUoc2Nyb2xsaW5nVHJlZVRy
YW5zYWN0aW9uKTsKICNlbmRpZgorICAgIG1fd2ViUGFnZVByb3h5LT5kaWRDb21taXRMYXllclRy
ZWUobGF5ZXJUcmVlVHJhbnNhY3Rpb24ucmVuZGVyZWRQYWdlU2l6ZSgpLCBsYXllclRyZWVUcmFu
c2FjdGlvbi5yZW5kZXJlZFBhZ2VTY2FsZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCBlMWUwZWRhYjQxZDU5
ZjU0ZDA5NWY5YWU3ZGQwZmYwYWYwMjgwMWJmLi40YmExODU0MGIzM2ViYWM3OGM5MWRlM2U2ZTE3
MWQ4ZTVlOGUyODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAg
LTMyMSw2ICszMjEsOCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExh
eWVycygpCiAgICAgLy8gRklYTUU6IG1pbml6ZSB0aGVzZSB0cmFuc2FjdGlvbnMgaWYgbm90aGlu
ZyBjaGFuZ2VkLgogICAgIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIGxheWVyVHJhbnNhY3Rp
b247CiAgICAgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0LT5idWlsZFRyYW5zYWN0aW9uKGxheWVy
VHJhbnNhY3Rpb24sICptX3Jvb3RMYXllcik7CisgICAgbGF5ZXJUcmFuc2FjdGlvbi5zZXRSZW5k
ZXJlZFBhZ2VTaXplKG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT5j
b250ZW50c1NpemUoKSk7CisgICAgbGF5ZXJUcmFuc2FjdGlvbi5zZXRSZW5kZXJlZFBhZ2VTY2Fs
ZShtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpKTsKIAogICAgIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24gc2Nyb2xsaW5nVHJhbnNhY3Rpb247CiAj
aWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222738</attachid>
            <date>2014-01-30 14:33:56 -0800</date>
            <delta_ts>2014-02-05 15:43:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127886-20140130143356.patch</filename>
            <type>text/plain</type>
            <size>34425</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzdkM2RmNzlkZGVlMGJj
ZGM5MzYwZDg0M2QxMmM4MzhkMDg4MjMyZC4uMWY2ZGY3OGM4NTE4MjA2YjM4MTAwOGQzMmMyYTI2
MTQ0OTE1MzM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE0LTAxLTI5ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN5bmNo
cm9uaXplIHRoZSBXS0NvbnRlbnRWaWV3IGFuZCBVSVNjcm9sbFZpZXcgdXBkYXRlcyB3aXRoIHRo
ZSB0aWxlcyBiZWluZyBjb21taXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI3ODg2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNTg4NzUyMj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdXBk
YXRlcyBvZiB0aGUgdmlld3Mgb24gdGhlIFVJUHJvY2VzcyBzaWRlIHdhcyBjb21wbGV0ZWx5IGRp
c2Nvbm5lY3RlZAorICAgICAgICBmcm9tIHRoZSB0aWxlcyB1cGRhdGVzIGZyb20gdGhlIERyYXdp
bmdBcmVhLiBUaGVyZSBpcyBhIG5vbi1uZWdsaWdpYmxlIHRpbWUKKyAgICAgICAgYmV0d2VlbiB0
aGUgc2l6ZS9zY2FsZSB1cGRhdGUgYW5kIHRoZSBuZXcgdGlsZXMgY29taW5nLCB3aGljaCBjYXVz
ZXMKKyAgICAgICAgdmlzdWFsIGdsaXRjaGVzLgorCisgICAgICAgIFRoZXJlIGFyZSB0aHJlZSBt
YWluIGNhc2VzIHdoZXJlIHRoZSB0aWxlcyBhbmQgY29udGVudCB3b3VsZCBiZSBvdXQgb2Ygc3lu
YworICAgICAgICB3aXRoIHRoZSBVSVZpZXdzOgorICAgICAgICAtV2hlbiBsb2FkaW5nIGEgbmV3
IHBhZ2Ugd2l0aCBkaWZmZXJlbnQgY29udGVudCB3aWR0aCBvZiBhIGRpZmZlcmVudCB2aWV3cG9y
dC4KKyAgICAgICAgLVdoZW4gYSBwYWdlIGNoYW5nZXMgaXRzIHZpZXdwb3J0LgorICAgICAgICAt
V2hlbiB0aGUgdmlld3BvcnQtY29uc3RyYWludGVkIHZpZXdwb3J0IHNpemUgY2hhbmdlcy4KKwor
ICAgICAgICBUbyBmaXggdGhlIGlzc3VlLCBXS1ZpZXcgaXMgbW9kaWZpZWQgdG8gbWFpbnRhaW4g
dGhlIG9sZCBzdGF0ZSBvZiBXS0NvbnRlbnRWaWV3CisgICAgICAgIGFuZCBVSVNjcm9sbFZpZXcg
dW50aWwgdGhlIG5ldyB0aWxlcyBhcmUgYXZhaWxhYmxlLgorCisgICAgICAgIEdlb21ldHJ5L3Nj
YWxlIHVwZGF0ZSBhcmUgc3BsaXQgaW4gdHdvIHBoYXNlczoKKyAgICAgICAgMSkgQSBzb3VyY2Ug
KHRoZSBwYWdlIG9yIHRoZSB1c2VyKSBjaGFuZ2UgcGFyYW1ldGVycyBvZiB0aGUgZ2VvbWV0cnku
CisgICAgICAgICAgIFRoZSBuZXcgdmlld3BvcnQgY29uZmlndXJhdGlvbiBpcyBjb21wdXRlZCwg
dGhlIG5ldyBzY2FsZSBhbmQgc2l6ZSBhcmUKKyAgICAgICAgICAgc2V0IG9uIFdlYlBhZ2VQcm94
eSBhbmQgaW4gdHVybiBvbiBXZWJQYWdlLgorICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB0aGUg
VUlWaWV3cyBhcmUgdW5jaGFuZ2VkIGFuZCBhcmUgbGVmdCB3aXRoIHRoZSBvbGQgcGFyYW1ldGVy
cy4KKyAgICAgICAgMikgRXZlbnR1YWxseSwgbmV3IHRpbGVzIGNvbWUgYW5kIGNvbW1pdExheWVy
VHJlZSgpIGlzIGNhbGxlZCBvbiB0aGUgZHJhd2luZyBhcmVhIHByb3h5LgorICAgICAgICAgICBB
dCB0aGF0IHBvaW50LCBXS0NvbnRlbnRWaWV3IGFuZCBpdHMgVUlTY3JvbGxWaWV3IGFyZSB1cGRh
dGVkIHRvIG1hdGNoIHRoZSBjb21taXR0ZWQKKyAgICAgICAgICAgc2l6ZSBhbmQgc2NhbGUgZm9y
IHRoZSBwYWdlLgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6cmVu
ZGVyZWRQYWdlU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpzZXRSZW5kZXJlZFBhZ2VTaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OnJlbmRlcmVkUGFnZVNjYWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OnNldFJlbmRlcmVkUGFnZVNjYWxlKToKKyAgICAgICAg
KiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBpbml0V2l0
aEZyYW1lOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBjb250ZW50Vmll
dzpjb250ZW50c1NpemVEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBjb250ZW50
Vmlld0RpZENvbW1pdExvYWRGb3JNYWluRnJhbWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBj
b250ZW50VmlldzpkaWRDb21taXRMYXllclRyZWVGb3JQYWdlU2l6ZTpzY2FsZTpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IHZpZXdwb3J0SGFuZGxlckRpZENoYW5nZVNjYWxlczpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IHZpZXdwb3J0SGFuZGxlcjpkaWRDaGFuZ2VWaWV3cG9ydFNpemU6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBzY3JvbGxWaWV3V2lsbEJlZ2luWm9vbWluZzp3aXRoVmll
dzpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRGaW5pc2hTY3JvbGxdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHNjcm9sbFZpZXdEaWRTY3JvbGw6XSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBzY3JvbGxWaWV3RGlkRW5kWm9vbWluZzp3aXRoVmlldzphdFNjYWxlOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX3VwZGF0ZVNjcm9sbFZpZXdTY2FsaW5nXSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfdXBkYXRlU2Nyb2xsVmlld1NjYWxpbmdJZk5lZWRlZF0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpkaWRDb21taXRMYXllclRyZWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dL
Q29udGVudFZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHBhZ2VTY2FsZUZhY3Rvcl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IHNldFBhZ2VTY2FsZUZhY3RvcjpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBzZXRCb3VuZHM6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZENo
YW5nZUNvbnRlbnRTaXplOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRDb21taXRM
YXllclRyZWVGb3JQYWdlU2l6ZTpXZWJDb3JlOjpzY2FsZTpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2lvcy9XS1ZpZXdJT1MubW06CisgICAgICAgICgtW1dLVmlldyBjb250ZW50Vmlldzpjb250
ZW50c1NpemVEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dLVmlldyBjb250ZW50Vmlld0RpZENv
bW1pdExvYWRGb3JNYWluRnJhbWU6XSk6CisgICAgICAgICgtW1dLVmlldyBjb250ZW50Vmlldzpk
aWRDb21taXRMYXllclRyZWVGb3JQYWdlU2l6ZTpzY2FsZTpdKToKKyAgICAgICAgKC1bV0tWaWV3
IHZpZXdwb3J0SGFuZGxlckRpZENoYW5nZVNjYWxlczpdKToKKyAgICAgICAgKC1bV0tWaWV3IHNj
cm9sbFZpZXdXaWxsQmVnaW5ab29taW5nOndpdGhWaWV3Ol0pOgorICAgICAgICAoLVtXS1ZpZXcg
X2RpZEZpbmlzaFNjcm9sbF0pOgorICAgICAgICAoLVtXS1ZpZXcgc2Nyb2xsVmlld0RpZFNjcm9s
bDpdKToKKyAgICAgICAgKC1bV0tWaWV3IHNjcm9sbFZpZXdEaWRFbmRab29taW5nOndpdGhWaWV3
OmF0U2NhbGU6XSk6CisgICAgICAgICgtW1dLVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRo
Q29udGV4dFJlZjpwYWdlR3JvdXBSZWY6cmVsYXRlZFRvUGFnZTpdKToKKyAgICAgICAgKC1bV0tW
aWV3IF91cGRhdGVTY3JvbGxWaWV3U2NhbGluZ10pOgorICAgICAgICAoLVtXS1ZpZXcgX3VwZGF0
ZVNjcm9sbFZpZXdTY2FsaW5nSWZOZWVkZWRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRDb21taXRMYXllclRyZWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Y29tbWl0TGF5ZXJUcmVlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMpOgor
CiAyMDE0LTAxLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRml4IDMyLWJpdCBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCBlYjM0YTRmYTI2OTBkNmYx
MTg4ZDJlODM2MWRjZTJiYWMyZGRmMjcwLi42MTA2OThkY2IzY2QzNjlkNjI2NTYzOWE0MTUwMTdh
MDI1ZGM4NWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCkBAIC0xNTUsMTEgKzE1NSwxOSBAQCBwdWJsaWM6CiAg
ICAgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQsIExheWVy
UHJvcGVydGllcz4gY2hhbmdlZExheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbmdlZExheWVy
UHJvcGVydGllczsgfQogICAgIFZlY3RvcjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9y
bUxheWVySUQ+IGRlc3Ryb3llZExheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdHJveWVkTGF5
ZXJJRHM7IH0KIAorICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHJlbmRlcmVkUGFnZVNpemUo
KSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVkUGFnZVNpemU7IH0KKyAgICB2b2lkIHNldFJlbmRl
cmVkUGFnZVNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkgeyBtX3JlbmRlcmVkUGFn
ZVNpemUgPSBzaXplOyB9CisKKyAgICBkb3VibGUgcmVuZGVyZWRQYWdlU2NhbGUoKSBjb25zdCB7
IHJldHVybiBtX3JlbmRlcmVkUGFnZVNjYWxlOyB9CisgICAgdm9pZCBzZXRSZW5kZXJlZFBhZ2VT
Y2FsZShkb3VibGUgc2NhbGUpIHsgbV9yZW5kZXJlZFBhZ2VTY2FsZSA9IHNjYWxlOyB9CisKIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIG1fcm9v
dExheWVySUQ7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eWVySUQsIExheWVyUHJvcGVydGllcz4gbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzOwogICAgIFZl
Y3RvcjxMYXllckNyZWF0aW9uUHJvcGVydGllcz4gbV9jcmVhdGVkTGF5ZXJzOwogICAgIFZlY3Rv
cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+IG1fZGVzdHJveWVkTGF5
ZXJJRHM7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3JlbmRlcmVkUGFnZVNpemU7CisgICAgZG91
YmxlIG1fcmVuZGVyZWRQYWdlU2NhbGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uLm1tCmluZGV4IDUxOTdhYjM2NWEyMjU2OThlY2QyOGVlMmY0MTZkOGRmZWEyNzc1YzYu
LmU2NDhiMGI1ZjdlZGVkYmU1NWI4MDQ0Yjk0NjFjYzc2MjQ4NDNmYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5t
bQpAQCAtMzQyLDYgKzM0Miw4IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmVu
Y29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8
IG1fY3JlYXRlZExheWVyczsKICAgICBlbmNvZGVyIDw8IG1fY2hhbmdlZExheWVyUHJvcGVydGll
czsKICAgICBlbmNvZGVyIDw8IG1fZGVzdHJveWVkTGF5ZXJJRHM7CisgICAgZW5jb2RlciA8PCBt
X3JlbmRlcmVkUGFnZVNpemU7CisgICAgZW5jb2RlciA8PCBtX3JlbmRlcmVkUGFnZVNjYWxlOwog
fQogCiBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpBcmd1bWVu
dERlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiByZXN1bHQpCkBA
IC0zNjUsNiArMzY3LDEyIEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29k
ZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9y
ZW5kZXJlZFBhZ2VTaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQubV9yZW5kZXJlZFBhZ2VTY2FsZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDA4NzI3MWE3NTZjMzM0NDc3NGFjZjYy
ODAxYjNjYWI3NGViMzYwNjEuLmY2YTNkOGFhNGVhYTZjZmZhNDcyMTc1MjJhOWQyYzc0NzdkMjM2
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCkBAIC02Nyw2ICs2Nyw5IEBAIHN0YXRpYyBfVUlXZWJWaWV3cG9ydENvbmZpZ3VyYXRpb24g
c3RhbmRhcmRWaWV3cG9ydENvbmZpZ3VyYXRpb24gPSB7IHsgVUlXZWJWaWV3CiAKICAgICBCT09M
IF91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZTsKICAgICBCT09MIF9oYXNTdGF0aWNNaW5pbXVtTGF5
b3V0U2l6ZTsKKyAgICBCT09MIF9oYXNQZW5kaW5nUGFnZVJlc2V0OworICAgIEJPT0wgX2hhc1Bl
bmRpbmdTY3JvbGxWaWV3VXBkYXRlOworICAgIGRvdWJsZSBfbGF0ZXN0Q29tbWl0ZWRMYXllclNj
YWxlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogICAgIFJl
dGFpblB0cjxXS1ZpZXc+IF93a1ZpZXc7CkBAIC0xMDksNyArMTEyLDE5IEBAIHN0YXRpYyBfVUlX
ZWJWaWV3cG9ydENvbmZpZ3VyYXRpb24gc3RhbmRhcmRWaWV3cG9ydENvbmZpZ3VyYXRpb24gPSB7
IHsgVUlXZWJWaWV3CiAgICAgX3ZpZXdwb3J0SGFuZGxlciA9IGFkb3B0TlMoW1tfVUlXZWJWaWV3
cG9ydEhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbX3ZpZXdwb3J0SGFuZGxlciBzZXREZWxl
Z2F0ZTpzZWxmXTsKIAotICAgIFtzZWxmIF9mcmFtZU9yQm91bmRzQ2hhbmdlZF07CisgICAgLy8g
SXQgaXMgY29tbW9uIHRvIGhhdmUgdGhlIHZpZXcgaW5pdGlhbGl6ZWQgd2l0aCBhIG51bGwgZnJh
bWUuIFRoZSByZXN1bHRpbmcgV2ViS2l0IHZpZXdwb3J0IGNvbmZpZ3VyYXRpb24KKyAgICAvLyBp
cyBub3QgdXNlZnVsLiBUbyByZWR1Y2Ugd29yayB3aGVuIHVwZGF0aW5nIHRoZSBmcmFtZSBvciBj
b21taXRpbmcgdGhlIGNvbnRlbnQsIHdlIGRlZmluZSB0aGUgdmlld3BvcnQKKyAgICAvLyB3aXRo
IHJlYXNvbmFibGUgdmFsdWVzIGZvciB0aGUgbWlzc2luZyBwYXJhbWV0ZXJzLgorICAgIFtfdmll
d3BvcnRIYW5kbGVyIHVwZGF0ZTpeeworICAgICAgICBbX3ZpZXdwb3J0SGFuZGxlciByZXNldFZp
ZXdwb3J0Q29uZmlndXJhdGlvbjomc3RhbmRhcmRWaWV3cG9ydENvbmZpZ3VyYXRpb25dOworCisg
ICAgICAgIENHU2l6ZSBzaXplID0gYm91bmRzLnNpemU7CisgICAgICAgIGlmIChzaXplLndpZHRo
IDw9IDAgfHwgc2l6ZS5oZWlnaHQgPD0gMCkKKyAgICAgICAgICAgIHNpemUgPSBbW1VJU2NyZWVu
IG1haW5TY3JlZW5dIGJvdW5kc10uc2l6ZTsKKyAgICAgICAgW192aWV3cG9ydEhhbmRsZXIgc2V0
QXZhaWxhYmxlVmlld1NpemU6c2l6ZV07CisgICAgICAgIFtfY29udGVudFZpZXcgc2V0TWluaW11
bVNpemU6c2l6ZV07CisgICAgICAgIFtfdmlld3BvcnRIYW5kbGVyIHNldERvY3VtZW50Qm91bmRz
OntDR1BvaW50WmVybywgc2l6ZX1dOworICAgIH1dOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpICYmICFQTEFURk9STShJT1MpCkBAIC0xNjksMTcgKzE4NCwxNCBAQCBzdGF0aWMgX1VJV2Vi
Vmlld3BvcnRDb25maWd1cmF0aW9uIHN0YW5kYXJkVmlld3BvcnRDb25maWd1cmF0aW9uID0geyB7
IFVJV2ViVmlldwogCiAtICh2b2lkKWNvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopY29udGVu
dFZpZXcgY29udGVudHNTaXplRGlkQ2hhbmdlOihDR1NpemUpbmV3U2l6ZQogewotICAgIENHRmxv
YXQgem9vbVNjYWxlID0gW19zY3JvbGxWaWV3IHpvb21TY2FsZV07Ci0gICAgQ0dTaXplIGNvbnRl
bnRzU2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzID0gQ0dTaXplTWFrZShuZXdTaXplLndpZHRo
ICogem9vbVNjYWxlLCBuZXdTaXplLmhlaWdodCAqIHpvb21TY2FsZSk7Ci0gICAgW19zY3JvbGxW
aWV3IHNldENvbnRlbnRTaXplOmNvbnRlbnRzU2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzXTsK
LQogICAgIFtfdmlld3BvcnRIYW5kbGVyIHVwZGF0ZTpeewotICAgICAgICAgW192aWV3cG9ydEhh
bmRsZXIgc2V0RG9jdW1lbnRCb3VuZHM6e0NHUG9pbnRaZXJvLCBuZXdTaXplfV07CisgICAgICAg
IFtfdmlld3BvcnRIYW5kbGVyIHNldERvY3VtZW50Qm91bmRzOntDR1BvaW50WmVybywgbmV3U2l6
ZX1dOwogICAgIH1dOwogfQogCiAtICh2b2lkKWNvbnRlbnRWaWV3RGlkQ29tbWl0TG9hZEZvck1h
aW5GcmFtZTooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3CiB7CisgICAgX2hhc1BlbmRpbmdQ
YWdlUmVzZXQgPSBZRVM7CiAgICAgX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlID0gTk87CiAKICAg
ICBXS0NvbnRlbnRUeXBlIGNvbnRlbnRUeXBlID0gW19jb250ZW50VmlldyBjb250ZW50VHlwZV07
CkBAIC0yMTQsMjIgKzIyNiwzNCBAQCBzdGF0aWMgX1VJV2ViVmlld3BvcnRDb25maWd1cmF0aW9u
IHN0YW5kYXJkVmlld3BvcnRDb25maWd1cmF0aW9uID0geyB7IFVJV2ViVmlldwogICAgIH1dOwog
fQogCistICh2b2lkKWNvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopY29udGVudFZpZXcgZGlk
Q29tbWl0TGF5ZXJUcmVlRm9yUGFnZVNpemU6KENHU2l6ZSlwYWdlU2l6ZSBzY2FsZTooZG91Ymxl
KXNjYWxlCit7CisgICAgX2xhdGVzdENvbW1pdGVkTGF5ZXJTY2FsZSA9IHNjYWxlOworCisgICAg
Y29udGVudFZpZXcuYm91bmRzID0geyBDR1BvaW50WmVybywgcGFnZVNpemUgfTsKKworICAgIFtz
ZWxmIF91cGRhdGVTY3JvbGxWaWV3U2NhbGluZ107CisKKyAgICBpZiAoX2hhc1BlbmRpbmdQYWdl
UmVzZXQpIHsKKyAgICAgICAgW19zY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Q0dQb2ludFpl
cm9dOworICAgICAgICBfaGFzUGVuZGluZ1BhZ2VSZXNldCA9IE5POworICAgIH0KK30KKwogI3By
YWdtYSBtYXJrIC0gX1VJV2ViVmlld3BvcnRIYW5kbGVyRGVsZWdhdGUKIAogLSAodm9pZCl2aWV3
cG9ydEhhbmRsZXJEaWRDaGFuZ2VTY2FsZXM6KF9VSVdlYlZpZXdwb3J0SGFuZGxlciAqKXZpZXdw
b3J0SGFuZGxlcgogewogICAgIEFTU0VSVCh2aWV3cG9ydEhhbmRsZXIgPT0gX3ZpZXdwb3J0SGFu
ZGxlcik7Ci0gICAgW19zY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6dmlld3BvcnRIYW5k
bGVyLm1pbmltdW1TY2FsZV07Ci0gICAgW19zY3JvbGxWaWV3IHNldE1heGltdW1ab29tU2NhbGU6
dmlld3BvcnRIYW5kbGVyLm1heGltdW1TY2FsZV07Ci0gICAgW19zY3JvbGxWaWV3IHNldFpvb21F
bmFibGVkOnZpZXdwb3J0SGFuZGxlci5hbGxvd3NVc2VyU2NhbGluZ107CiAKKyAgICBDR0Zsb2F0
IHZhbGlkU2NhbGU7CiAgICAgaWYgKCFfdXNlckhhc0NoYW5nZWRQYWdlU2NhbGUpCi0gICAgICAg
IFtzZWxmIF9zZXREb2N1bWVudFNjYWxlOnZpZXdwb3J0SGFuZGxlci5pbml0aWFsU2NhbGVdOwor
ICAgICAgICB2YWxpZFNjYWxlID0gdmlld3BvcnRIYW5kbGVyLmluaXRpYWxTY2FsZTsKICAgICBl
bHNlIHsKICAgICAgICAgQ0dGbG9hdCBjdXJyZW50U2NhbGUgPSBbX3Njcm9sbFZpZXcgem9vbVNj
YWxlXTsKLSAgICAgICAgQ0dGbG9hdCB2YWxpZFNjYWxlID0gc3RkOjptYXgoc3RkOjptaW4oY3Vy
cmVudFNjYWxlLCBzdGF0aWNfY2FzdDxDR0Zsb2F0Pih2aWV3cG9ydEhhbmRsZXIubWF4aW11bVNj
YWxlKSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KHZpZXdwb3J0SGFuZGxlci5taW5pbXVtU2NhbGUp
KTsKLSAgICAgICAgW3NlbGYgX3NldERvY3VtZW50U2NhbGU6dmFsaWRTY2FsZV07CisgICAgICAg
IHZhbGlkU2NhbGUgPSBzdGQ6Om1heChzdGQ6Om1pbihjdXJyZW50U2NhbGUsIHN0YXRpY19jYXN0
PENHRmxvYXQ+KHZpZXdwb3J0SGFuZGxlci5tYXhpbXVtU2NhbGUpKSwgc3RhdGljX2Nhc3Q8Q0dG
bG9hdD4odmlld3BvcnRIYW5kbGVyLm1pbmltdW1TY2FsZSkpOwogICAgIH0KKyAgICBbX2NvbnRl
bnRWaWV3IHNldFBhZ2VTY2FsZUZhY3Rvcjp2YWxpZFNjYWxlXTsKIH0KIAogLSAodm9pZCl2aWV3
cG9ydEhhbmRsZXI6KF9VSVdlYlZpZXdwb3J0SGFuZGxlciAqKXZpZXdwb3J0SGFuZGxlciBkaWRD
aGFuZ2VWaWV3cG9ydFNpemU6KENHU2l6ZSluZXdTaXplCkBAIC0yNDgsMTQgKzI3MiwxOCBAQCBz
dGF0aWMgX1VJV2ViVmlld3BvcnRDb25maWd1cmF0aW9uIHN0YW5kYXJkVmlld3BvcnRDb25maWd1
cmF0aW9uID0geyB7IFVJV2ViVmlldwogCiAtICh2b2lkKXNjcm9sbFZpZXdXaWxsQmVnaW5ab29t
aW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWaWV3OihVSVZpZXcgKil2aWV3CiB7
Ci0gICAgaWYgKHNjcm9sbFZpZXcucGluY2hHZXN0dXJlUmVjb2duaXplci5zdGF0ZSA9PSBVSUdl
c3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbikKKyAgICBpZiAoIV9oYXNQZW5kaW5nUGFnZVJlc2V0
ICYmIHNjcm9sbFZpZXcucGluY2hHZXN0dXJlUmVjb2duaXplci5zdGF0ZSA9PSBVSUdlc3R1cmVS
ZWNvZ25pemVyU3RhdGVCZWdhbikKICAgICAgICAgX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlID0g
WUVTOwogfQogCiAtICh2b2lkKV9kaWRGaW5pc2hTY3JvbGwKIHsKKyAgICBpZiAoX2hhc1BlbmRp
bmdQYWdlUmVzZXQpCisgICAgICAgIHJldHVybjsKKwogICAgIENHUG9pbnQgcG9zaXRpb24gPSBb
X3Njcm9sbFZpZXcgY29udmVydFBvaW50Oltfc2Nyb2xsVmlldyBjb250ZW50T2Zmc2V0XSB0b1Zp
ZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKICAgICBbX2NvbnRlbnRWaWV3IGRpZEZpbmlzaFNjcm9s
bFRvOnBvc2l0aW9uXTsKKyAgICBbc2VsZiBfdXBkYXRlU2Nyb2xsVmlld1NjYWxpbmdJZk5lZWRl
ZF07CiB9CiAKIC0gKHZvaWQpc2Nyb2xsVmlld0RpZEVuZERyYWdnaW5nOihVSVNjcm9sbFZpZXcg
KilzY3JvbGxWaWV3IHdpbGxEZWNlbGVyYXRlOihCT09MKWRlY2VsZXJhdGUKQEAgLTI3NywxNCAr
MzA1LDIxIEBAIHN0YXRpYyBfVUlXZWJWaWV3cG9ydENvbmZpZ3VyYXRpb24gc3RhbmRhcmRWaWV3
cG9ydENvbmZpZ3VyYXRpb24gPSB7IHsgVUlXZWJWaWV3CiAKIC0gKHZvaWQpc2Nyb2xsVmlld0Rp
ZFNjcm9sbDooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogeworICAgIGlmIChfaGFzUGVuZGlu
Z1BhZ2VSZXNldCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgQ0dQb2ludCBwb3NpdGlvbiA9IFtf
c2Nyb2xsVmlldyBjb252ZXJ0UG9pbnQ6W19zY3JvbGxWaWV3IGNvbnRlbnRPZmZzZXRdIHRvVmll
dzpfY29udGVudFZpZXcuZ2V0KCldOwogICAgIFtfY29udGVudFZpZXcgZGlkU2Nyb2xsVG86cG9z
aXRpb25dOwogfQogCiAtICh2b2lkKXNjcm9sbFZpZXdEaWRFbmRab29taW5nOihVSVNjcm9sbFZp
ZXcgKilzY3JvbGxWaWV3IHdpdGhWaWV3OihVSVZpZXcgKil2aWV3IGF0U2NhbGU6KENHRmxvYXQp
c2NhbGUKIHsKKyAgICBpZiAoX2hhc1BlbmRpbmdQYWdlUmVzZXQpCisgICAgICAgIHJldHVybjsK
KwogICAgIEFTU0VSVChzY3JvbGxWaWV3ID09IF9zY3JvbGxWaWV3KTsKLSAgICBbX2NvbnRlbnRW
aWV3IGRpZFpvb21Ub1NjYWxlOnNjYWxlXTsKKyAgICBbX2NvbnRlbnRWaWV3IHNldFBhZ2VTY2Fs
ZUZhY3RvcjpzY2FsZV07CisgICAgW3NlbGYgX3VwZGF0ZVNjcm9sbFZpZXdTY2FsaW5nSWZOZWVk
ZWRdOwogfQogCiAtICh2b2lkKV9mcmFtZU9yQm91bmRzQ2hhbmdlZApAQCAtMzAwLDE1ICszMzUs
MzIgQEAgc3RhdGljIF9VSVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0
Q29uZmlndXJhdGlvbiA9IHsgeyBVSVdlYlZpZXcKICAgICBbX2NvbnRlbnRWaWV3IHNldE1pbmlt
dW1TaXplOmJvdW5kcy5zaXplXTsKIH0KIAotLSAodm9pZClfc2V0RG9jdW1lbnRTY2FsZTooQ0dG
bG9hdCluZXdTY2FsZQorLSAodm9pZClfdXBkYXRlU2Nyb2xsVmlld1NjYWxpbmcKIHsKLSAgICBD
R1BvaW50IGNvbnRlbnRPZmZzZXRJbkRvY3VtZW50Q29vcmRpbmF0ZXMgPSBbX3Njcm9sbFZpZXcg
Y29udmVydFBvaW50Oltfc2Nyb2xsVmlldyBjb250ZW50T2Zmc2V0XSB0b1ZpZXc6X2NvbnRlbnRW
aWV3LmdldCgpXTsKKyAgICBpZiAoW19zY3JvbGxWaWV3IGlzWm9vbWluZ10gfHwgW19zY3JvbGxW
aWV3IGlzWm9vbUJvdW5jaW5nXSB8fCBbX3Njcm9sbFZpZXcgaXNUcmFja2luZ10gfHwgW19zY3Jv
bGxWaWV3IGlzRHJhZ2dpbmddIHx8IFtfc2Nyb2xsVmlldyBpc0RlY2VsZXJhdGluZ10pIHsKKyAg
ICAgICAgLy8gRG8gbm90IG1lc3Mgd2l0aCBVSVNjcm9sbFZpZXcgZHVyaW5nIHVzaW5nIGludGVy
YWN0aW9uLCB0aGF0IGNhdXNlcyB1bmRlZmluZWQgYmVoYXZpb3JzLgorICAgICAgICBfaGFzUGVu
ZGluZ1Njcm9sbFZpZXdVcGRhdGUgPSBZRVM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
W19zY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6W192aWV3cG9ydEhhbmRsZXIgbWluaW11
bVNjYWxlXV07CisgICAgW19zY3JvbGxWaWV3IHNldE1heGltdW1ab29tU2NhbGU6W192aWV3cG9y
dEhhbmRsZXIgbWF4aW11bVNjYWxlXV07CisgICAgW19zY3JvbGxWaWV3IHNldFpvb21FbmFibGVk
Oltfdmlld3BvcnRIYW5kbGVyIGFsbG93c1VzZXJTY2FsaW5nXV07CiAKLSAgICBbX3Njcm9sbFZp
ZXcgc2V0Wm9vbVNjYWxlOm5ld1NjYWxlXTsKLSAgICBbX2NvbnRlbnRWaWV3IGRpZFpvb21Ub1Nj
YWxlOm5ld1NjYWxlXTsKKyAgICBpZiAoX2xhdGVzdENvbW1pdGVkTGF5ZXJTY2FsZSAhPSBbX3Nj
cm9sbFZpZXcgem9vbVNjYWxlXSkgeworICAgICAgICBDR1BvaW50IGNvbnRlbnRPZmZzZXRJbkRv
Y3VtZW50Q29vcmRpbmF0ZXMgPSBbX3Njcm9sbFZpZXcgY29udmVydFBvaW50Oltfc2Nyb2xsVmll
dyBjb250ZW50T2Zmc2V0XSB0b1ZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKKyAgICAgICAgW19z
Y3JvbGxWaWV3IHNldFpvb21TY2FsZTpfbGF0ZXN0Q29tbWl0ZWRMYXllclNjYWxlXTsKIAotICAg
IENHUG9pbnQgY29udGVudE9mZnNldCA9IFtfc2Nyb2xsVmlldyBjb252ZXJ0UG9pbnQ6Y29udGVu
dE9mZnNldEluRG9jdW1lbnRDb29yZGluYXRlcyBmcm9tVmlldzpfY29udGVudFZpZXcuZ2V0KCld
OwotICAgIFtfc2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0OmNvbnRlbnRPZmZzZXRdOworICAg
ICAgICBDR1BvaW50IGNvbnRlbnRPZmZzZXQgPSBbX3Njcm9sbFZpZXcgY29udmVydFBvaW50OmNv
bnRlbnRPZmZzZXRJbkRvY3VtZW50Q29vcmRpbmF0ZXMgZnJvbVZpZXc6X2NvbnRlbnRWaWV3Lmdl
dCgpXTsKKyAgICAgICAgW19zY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Y29udGVudE9mZnNl
dF07CisgICAgfQorfQorCistICh2b2lkKV91cGRhdGVTY3JvbGxWaWV3U2NhbGluZ0lmTmVlZGVk
Cit7CisgICAgaWYgKF9oYXNQZW5kaW5nU2Nyb2xsVmlld1VwZGF0ZSkgeworICAgICAgICBfaGFz
UGVuZGluZ1Njcm9sbFZpZXdVcGRhdGUgPSBOTzsKKyAgICAgICAgW3NlbGYgX3VwZGF0ZVNjcm9s
bFZpZXdTY2FsaW5nXTsKKyAgICB9CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggZjc2YjAzOTNh
OWFjN2VkZTU4ZWM4NGEzNDUzMmVmN2VmYTIzY2JhNy4uYmI2NTAxOTk2MzJkYzYxNDQ2Y2E2MmIz
NjdjYWQ4NjQ5ZGFkMWJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMTEsNiArMTExLDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQm
LCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25J
bmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
biYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMYXllclRyZWUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIGRvdWJsZSBzY2FsZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBBdXhpbGlhcnkgQ2xp
ZW50IENyZWF0aW9uCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCA4
OTZjNjViMjc1ZTM4N2I2MjgwMDM2YTQwNDcxMDNkNTBiY2Y2NTA2Li42ZmE1YjUyM2ZiZjA4NDk3
NTZjMjFjYzVjMWEyMDVjNzM4NGQyMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMjA3LDYgKzIwNywxMSBA
QCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0
IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFttX3ZpZXcgX3Bvc2l0aW9uSW5mb3JtYXRp
b25EaWRDaGFuZ2U6aW5mb107CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExh
eWVyVHJlZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwYWdlU2l6ZSwgZG91YmxlIHBhZ2VTY2Fs
ZSkKK3sKKyAgICBbbV92aWV3IF9kaWRDb21taXRMYXllclRyZWVGb3JQYWdlU2l6ZTpwYWdlU2l6
ZSBzY2FsZTpwYWdlU2NhbGVdOworfQorCiBib29sIFBhZ2VDbGllbnRJbXBsOjpleGVjdXRlU2F2
ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRl
bnRWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3
LmgKaW5kZXggNGU0YzJhMTZjM2JhZmE4ZTk2MzEwOGUyY2YyMjVjNmQyMzlmZDA5YS4uMTY1NDcx
OTUwNDNlNGFhM2Q4NjU4YTI0MWY3OTZiMzIwN2E2ZWM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXcuaApAQCAtNDUsNyArNDUsNyBAQCB0
eXBlZGVmIE5TX0VOVU0odW5zaWduZWQsIFdLQ29udGVudFR5cGUpCiAtICh2b2lkKWNvbnRlbnRW
aWV3RGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZTooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3
OwogLSAodm9pZCljb250ZW50Vmlld0RpZFJlY2VpdmVNb2JpbGVEb2NUeXBlOihXS0NvbnRlbnRW
aWV3ICopY29udGVudFZpZXc7CiAtICh2b2lkKWNvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICop
Y29udGVudFZpZXcgZGlkQ2hhbmdlVmlld3BvcnRBcmd1bWVudHNTaXplOihDR1NpemUpbmV3U2l6
ZSBpbml0aWFsU2NhbGU6KGZsb2F0KWluaXRpYWxTY2FsZSBtaW5pbXVtU2NhbGU6KGZsb2F0KW1p
bmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6KGZsb2F0KW1heGltdW1TY2FsZSBhbGxvd3NVc2VyU2Nh
bGluZzooZmxvYXQpYWxsb3dzVXNlclNjYWxpbmc7Ci0KKy0gKHZvaWQpY29udGVudFZpZXc6KFdL
Q29udGVudFZpZXcgKiljb250ZW50VmlldyBkaWRDb21taXRMYXllclRyZWVGb3JQYWdlU2l6ZToo
Q0dTaXplKXBhZ2VTaXplIHNjYWxlOihkb3VibGUpc2NhbGU7CiBAZW5kCiAKIFdLX0FQSV9DTEFT
UwpAQCAtNTUsNiArNTUsNyBAQCBXS19BUElfQ0xBU1MKIAogQHByb3BlcnR5IChub25hdG9taWMs
IGFzc2lnbikgaWQgPFdLQ29udGVudFZpZXdEZWxlZ2F0ZT4gZGVsZWdhdGU7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIFdLQ29udGVudFR5cGUgY29udGVudFR5cGU7CitAcHJvcGVy
dHkgKG5vbmF0b21pYykgQ0dGbG9hdCBwYWdlU2NhbGVGYWN0b3I7CiAKIEBwcm9wZXJ0eSAocmVh
ZG9ubHkpIFdLUGFnZVJlZiBfcGFnZVJlZjsKIApAQCAtNjksNiArNzAsNSBAQCBXS19BUElfQ0xB
U1MKIAogLSAodm9pZClkaWRGaW5pc2hTY3JvbGxUbzooQ0dQb2ludCljb250ZW50T2Zmc2V0Owog
LSAodm9pZClkaWRTY3JvbGxUbzooQ0dQb2ludCljb250ZW50T2Zmc2V0OwotLSAodm9pZClkaWRa
b29tVG9TY2FsZTooQ0dGbG9hdClzY2FsZTsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggODY1ODc5NjI1OTg1MjJl
NmY1ZGI5NWFkZDEyMmQzZWJhMzQ4NjY3OS4uN2JhNGRiNTdhNjMyYzExYThmZGJmNjgyNjA3ZmYw
NjViOGFlYmVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tCkBAIC0xNzIsNiArMTcyLDE4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAgICAgcmV0dXJuIHRvQVBJKF9wYWdlLmdldCgpKTsKIH0KIAorLSAoQ0dGbG9hdClwYWdl
U2NhbGVGYWN0b3IKK3sKKyAgICByZXR1cm4gX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOworfQor
CistICh2b2lkKXNldFBhZ2VTY2FsZUZhY3RvcjooQ0dGbG9hdClzY2FsZQoreworICAgIF9wYWdl
LT5kaWRGaW5pc2hab29taW5nKHNjYWxlKTsKKyAgICBbc2VsZiBfdXBkYXRlVmlld0V4cG9zZWRS
ZWN0XTsKKyAgICBbc2VsZiBfdXBkYXRlRml4ZWRQb3NpdGlvblJlY3RdOworfQorCiAtICh2b2lk
KXNldE1pbmltdW1TaXplOihDR1NpemUpc2l6ZQogewogICAgIF9wYWdlLT5kcmF3aW5nQXJlYSgp
LT5zZXRTaXplKEludFNpemUoc2l6ZSksIEludFNpemUoKSwgSW50U2l6ZSgpKTsKQEAgLTIyNSwx
MyArMjM3LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBfcGFnZS0+c2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eSgpLT5zY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFEZWxlZ2F0ZWRTY3Jv
bGxpbmcoX3BhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKS0+cm9vdFNjcm9sbGluZ05v
ZGVJRCgpLCByb3VuZGVkSW50UG9pbnQoY29udGVudE9mZnNldCkpOwogfQogCi0tICh2b2lkKWRp
ZFpvb21Ub1NjYWxlOihDR0Zsb2F0KXNjYWxlCi17Ci0gICAgX3BhZ2UtPmRpZEZpbmlzaFpvb21p
bmcoc2NhbGUpOwotICAgIFtzZWxmIF91cGRhdGVWaWV3RXhwb3NlZFJlY3RdOwotICAgIFtzZWxm
IF91cGRhdGVGaXhlZFBvc2l0aW9uUmVjdF07Ci19Ci0KICNwcmFnbWEgbWFyayBJbnRlcm5hbAog
CiAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhDb250ZXh0UmVmOihXS0NvbnRleHRS
ZWYpY29udGV4dFJlZiBwYWdlR3JvdXBSZWY6KFdLUGFnZUdyb3VwUmVmKXBhZ2VHcm91cFJlZiBy
ZWxhdGVkVG9QYWdlOihXS1BhZ2VSZWYpcmVsYXRlZFBhZ2UKQEAgLTI5NywxNCArMzAyLDE5IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgICAgIFtfZGVsZWdhdGUgY29udGVudFZpZXdE
aWRDb21taXRMb2FkRm9yTWFpbkZyYW1lOnNlbGZdOwogfQogCi0tICh2b2lkKV9kaWRDaGFuZ2VD
b250ZW50U2l6ZTooQ0dTaXplKWNvbnRlbnRzU2l6ZQorLSAodm9pZClzZXRCb3VuZHM6KENHUmVj
dClib3VuZHMKIHsKLSAgICBbc2VsZiBzZXRCb3VuZHM6e0NHUG9pbnRaZXJvLCBjb250ZW50c1Np
emV9XTsKLSAgICBbX2ludGVyYWN0aW9uVmlldyBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIGNv
bnRlbnRzU2l6ZS53aWR0aCwgY29udGVudHNTaXplLmhlaWdodCldOwotICAgIFtfcm9vdENvbnRl
bnRWaWV3IHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgY29udGVudHNTaXplLndpZHRoLCBjb250
ZW50c1NpemUuaGVpZ2h0KV07CisgICAgW3N1cGVyIHNldEJvdW5kczpib3VuZHNdOworICAgIFtf
aW50ZXJhY3Rpb25WaWV3IHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgYm91bmRzLnNpemUud2lk
dGgsIGJvdW5kcy5zaXplLmhlaWdodCldOworICAgIFtfcm9vdENvbnRlbnRWaWV3IHNldEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgYm91bmRzLnNpemUud2lkdGgsIGJvdW5kcy5zaXplLmhlaWdodCld
OworfQogCistICh2b2lkKV9kaWRDaGFuZ2VDb250ZW50U2l6ZTooQ0dTaXplKWNvbnRlbnRzU2l6
ZQorewogICAgIGlmIChbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY29u
dGVudFZpZXc6Y29udGVudHNTaXplRGlkQ2hhbmdlOildKQogICAgICAgICBbX2RlbGVnYXRlIGNv
bnRlbnRWaWV3OnNlbGYgY29udGVudHNTaXplRGlkQ2hhbmdlOmNvbnRlbnRzU2l6ZV07CisgICAg
ZWxzZQorICAgICAgICBbc2VsZiBzZXRCb3VuZHM6e0NHUG9pbnRaZXJvLCBjb250ZW50c1NpemV9
XTsKIH0KIAogLSAodm9pZClfZGlkUmVjZWl2ZU1vYmlsZURvY1R5cGVGb3JNYWluRnJhbWUKQEAg
LTMxOSw2ICszMjksMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICAgICAgW19kZWxl
Z2F0ZSBjb250ZW50VmlldzpzZWxmIGRpZENoYW5nZVZpZXdwb3J0QXJndW1lbnRzU2l6ZTpDR1Np
emVNYWtlKGFyZ3VtZW50cy53aWR0aCwgYXJndW1lbnRzLmhlaWdodCkgaW5pdGlhbFNjYWxlOmFy
Z3VtZW50cy56b29tIG1pbmltdW1TY2FsZTphcmd1bWVudHMubWluWm9vbSBtYXhpbXVtU2NhbGU6
YXJndW1lbnRzLm1heFpvb20gYWxsb3dzVXNlclNjYWxpbmc6YXJndW1lbnRzLnVzZXJab29tXTsK
IH0KIAorLSAodm9pZClfZGlkQ29tbWl0TGF5ZXJUcmVlRm9yUGFnZVNpemU6KGNvbnN0IFdlYkNv
cmU6OkludFNpemUmKXBhZ2VTaXplIHNjYWxlOihkb3VibGUpc2NhbGUKK3sKKyAgICBpZiAoW19k
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRlbnRWaWV3OmRpZENvbW1p
dExheWVyVHJlZUZvclBhZ2VTaXplOnNjYWxlOildKQorICAgICAgICBbX2RlbGVnYXRlIGNvbnRl
bnRWaWV3OiBzZWxmIGRpZENvbW1pdExheWVyVHJlZUZvclBhZ2VTaXplOnBhZ2VTaXplIHNjYWxl
OnNjYWxlXTsKK30KKwogLSAodm9pZClfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDoodWlu
dDY0X3QpcmVxdWVzdElEIGNvbG9yOihjb25zdCBDb2xvciYpY29sb3IgcXVhZHM6KGNvbnN0IFZl
Y3RvcjxGbG9hdFF1YWQ+JiloaWdobGlnaHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6KGNvbnN0IElu
dFNpemUmKXRvcExlZnRSYWRpdXMgdG9wUmlnaHRSYWRpdXM6KGNvbnN0IEludFNpemUmKXRvcFJp
Z2h0UmFkaXVzIGJvdHRvbUxlZnRSYWRpdXM6KGNvbnN0IEludFNpemUmKWJvdHRvbUxlZnRSYWRp
dXMgYm90dG9tUmlnaHRSYWRpdXM6KGNvbnN0IEludFNpemUmKWJvdHRvbVJpZ2h0UmFkaXVzCiB7
CiAgICAgW19pbnRlcmFjdGlvblZpZXcgX2RpZEdldFRhcEhpZ2hsaWdodEZvclJlcXVlc3Q6cmVx
dWVzdElEIGNvbG9yOmNvbG9yIHF1YWRzOmhpZ2hsaWdodGVkUXVhZHMgdG9wTGVmdFJhZGl1czp0
b3BMZWZ0UmFkaXVzIHRvcFJpZ2h0UmFkaXVzOnRvcFJpZ2h0UmFkaXVzIGJvdHRvbUxlZnRSYWRp
dXM6Ym90dG9tTGVmdFJhZGl1cyBib3R0b21SaWdodFJhZGl1czpib3R0b21SaWdodFJhZGl1c107
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcm5hbC5oCmluZGV4IGQ1ODQ0ZDBhZjU5YmU1NWQ3MmJhMmJhYTM0ZDExOTk5MjQw
NzY1OTMuLjc3ODk0NTAwYWJlNzJjMjhhM2RiNTRmMGU5MTEzNGM4MDQyYTNlMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXdJbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcm5hbC5oCkBAIC02MCw2ICs2MCw3IEBAIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbjsKIC0gKHZvaWQpX2RpZENoYW5nZUNvbnRlbnRTaXplOihDR1NpemUpY29udGVu
dHNTaXplOwogLSAodm9pZClfZGlkUmVjZWl2ZU1vYmlsZURvY1R5cGVGb3JNYWluRnJhbWU7CiAt
ICh2b2lkKV9kaWRDaGFuZ2VWaWV3cG9ydEFyZ3VtZW50czooY29uc3QgV2ViQ29yZTo6Vmlld3Bv
cnRBcmd1bWVudHMmKXZpZXdwb3J0QXJndW1lbnRzOworLSAodm9pZClfZGlkQ29tbWl0TGF5ZXJU
cmVlRm9yUGFnZVNpemU6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXBhZ2VTaXplIHNjYWxlOihk
b3VibGUpc2NhbGU7CiAKIC0gKHZvaWQpX2RpZEdldFRhcEhpZ2hsaWdodEZvclJlcXVlc3Q6KHVp
bnQ2NF90KXJlcXVlc3RJRCBjb2xvcjooY29uc3QgV2ViQ29yZTo6Q29sb3ImKWNvbG9yIHF1YWRz
Oihjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYpaGlnaGxpZ2h0ZWRRdWFkcyB0b3BM
ZWZ0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJil0b3BMZWZ0UmFkaXVzIHRvcFJpZ2h0
UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJil0b3BSaWdodFJhZGl1cyBib3R0b21MZWZ0
UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJilib3R0b21MZWZ0UmFkaXVzIGJvdHRvbVJp
Z2h0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJilib3R0b21SaWdodFJhZGl1czsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1tCmluZGV4IDk0
MGIwZTM1OTg5NGExZjQzNmJkMWUzM2UzYTQzZTNjMDU1MWViZTEuLjk0YjJkOTkwODZjOWVjNjVh
YWY5M2UzOTQ3M2MzZjdmZjY1YTM1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1ZpZXdJT1MubW0KQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0
IG1heFdlYlZpZXdTY2FsZSA9IDU7CiBzdGF0aWMgc3RydWN0IF9VSVdlYlZpZXdwb3J0Q29uZmln
dXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29uZmlndXJhdGlvbiA9IHsgeyBVSVdlYlZpZXdwb3J0
U3RhbmRhcmRWaWV3cG9ydFdpZHRoLCBVSVdlYlZpZXdwb3J0R3Jvd3NBbmRTaHJpbmtzVG9GaXRI
ZWlnaHQgfSwgVUlXZWJWaWV3cG9ydFNjYWxlRm9yU2NhbGVzVG9GaXQsIG1pbldlYlZpZXdTY2Fs
ZSwgbWF4V2ViVmlld1NjYWxlLCB0cnVlIH07CiAKIEBpbnRlcmZhY2UgV0tWaWV3ICgpIDxVSVNj
cm9sbFZpZXdEZWxlZ2F0ZSwgV0tDb250ZW50Vmlld0RlbGVnYXRlLCBfVUlXZWJWaWV3cG9ydEhh
bmRsZXJEZWxlZ2F0ZT4KLS0gKHZvaWQpX3NldERvY3VtZW50U2NhbGU6KENHRmxvYXQpbmV3U2Nh
bGU7CistICh2b2lkKV91cGRhdGVTY3JvbGxWaWV3U2NhbGluZzsKIEBlbmQKIAogQGltcGxlbWVu
dGF0aW9uIFdLVmlldyB7CkBAIC01MCw2ICs1MCwxMCBAQCBzdGF0aWMgc3RydWN0IF9VSVdlYlZp
ZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29uZmlndXJhdGlvbiA9IHsgeyBV
SQogICAgIEJPT0wgX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlOwogICAgIFJldGFpblB0cjxfVUlX
ZWJWaWV3cG9ydEhhbmRsZXI+IF92aWV3cG9ydEhhbmRsZXI7CiAgICAgQk9PTCBfaGFzU3RhdGlj
TWluaW11bUxheW91dFNpemU7CisKKyAgICBCT09MIF9oYXNQZW5kaW5nUGFnZVJlc2V0OworICAg
IEJPT0wgX2hhc1BlbmRpbmdTY3JvbGxWaWV3VXBkYXRlOworICAgIGRvdWJsZSBfbGF0ZXN0Q29t
bWl0ZWRMYXllclNjYWxlOwogfQogCiAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29k
ZXIKQEAgLTEwNSwxNyArMTA5LDE0IEBAIHN0YXRpYyBzdHJ1Y3QgX1VJV2ViVmlld3BvcnRDb25m
aWd1cmF0aW9uIHN0YW5kYXJkVmlld3BvcnRDb25maWd1cmF0aW9uID0geyB7IFVJCiAKIC0gKHZv
aWQpY29udGVudFZpZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldyBjb250ZW50c1NpemVE
aWRDaGFuZ2U6KENHU2l6ZSluZXdTaXplCiB7Ci0gICAgQ0dGbG9hdCB6b29tU2NhbGUgPSBbX3Nj
cm9sbFZpZXcgem9vbVNjYWxlXTsKLSAgICBDR1NpemUgY29udGVudHNTaXplSW5TY3JvbGxWaWV3
Q29vcmRpbmF0ZXMgPSBDR1NpemVNYWtlKG5ld1NpemUud2lkdGggKiB6b29tU2NhbGUsIG5ld1Np
emUuaGVpZ2h0ICogem9vbVNjYWxlKTsKLSAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVudFNpemU6
Y29udGVudHNTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXNdOwotCiAgICAgW192aWV3cG9ydEhh
bmRsZXIgdXBkYXRlOl57Ci0gICAgICAgICBbX3ZpZXdwb3J0SGFuZGxlciBzZXREb2N1bWVudEJv
dW5kczp7Q0dQb2ludFplcm8sIG5ld1NpemV9XTsKKyAgICAgICAgW192aWV3cG9ydEhhbmRsZXIg
c2V0RG9jdW1lbnRCb3VuZHM6e0NHUG9pbnRaZXJvLCBuZXdTaXplfV07CiAgICAgfV07CiB9CiAK
IC0gKHZvaWQpY29udGVudFZpZXdEaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lOihXS0NvbnRlbnRW
aWV3ICopY29udGVudFZpZXcKIHsKKyAgICBfaGFzUGVuZGluZ1BhZ2VSZXNldCA9IFlFUzsKICAg
ICBfdXNlckhhc0NoYW5nZWRQYWdlU2NhbGUgPSBOTzsKIAogICAgIFdLQ29udGVudFR5cGUgY29u
dGVudFR5cGUgPSBbX2NvbnRlbnRWaWV3IGNvbnRlbnRUeXBlXTsKQEAgLTE1NCwyMiArMTU1LDM0
IEBAIHN0YXRpYyBzdHJ1Y3QgX1VJV2ViVmlld3BvcnRDb25maWd1cmF0aW9uIHN0YW5kYXJkVmll
d3BvcnRDb25maWd1cmF0aW9uID0geyB7IFVJCiAgICAgfV07CiB9CiAKKy0gKHZvaWQpY29udGVu
dFZpZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldyBkaWRDb21taXRMYXllclRyZWVGb3JQ
YWdlU2l6ZTooQ0dTaXplKXBhZ2VTaXplIHNjYWxlOihkb3VibGUpc2NhbGUKK3sKKyAgICBfbGF0
ZXN0Q29tbWl0ZWRMYXllclNjYWxlID0gc2NhbGU7CisKKyAgICBjb250ZW50Vmlldy5ib3VuZHMg
PSB7IENHUG9pbnRaZXJvLCBwYWdlU2l6ZSB9OworCisgICAgW3NlbGYgX3VwZGF0ZVNjcm9sbFZp
ZXdTY2FsaW5nXTsKKworICAgIGlmIChfaGFzUGVuZGluZ1BhZ2VSZXNldCkgeworICAgICAgICBb
X3Njcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpDR1BvaW50WmVyb107CisgICAgICAgIF9oYXNQ
ZW5kaW5nUGFnZVJlc2V0ID0gTk87CisgICAgfQorfQorCiAjcHJhZ21hIG1hcmsgLSBfVUlXZWJW
aWV3cG9ydEhhbmRsZXJEZWxlZ2F0ZQogCiAtICh2b2lkKXZpZXdwb3J0SGFuZGxlckRpZENoYW5n
ZVNjYWxlczooX1VJV2ViVmlld3BvcnRIYW5kbGVyICopdmlld3BvcnRIYW5kbGVyCiB7CiAgICAg
QVNTRVJUKHZpZXdwb3J0SGFuZGxlciA9PSBfdmlld3BvcnRIYW5kbGVyKTsKLSAgICBbX3Njcm9s
bFZpZXcgc2V0TWluaW11bVpvb21TY2FsZTp2aWV3cG9ydEhhbmRsZXIubWluaW11bVNjYWxlXTsK
LSAgICBbX3Njcm9sbFZpZXcgc2V0TWF4aW11bVpvb21TY2FsZTp2aWV3cG9ydEhhbmRsZXIubWF4
aW11bVNjYWxlXTsKLSAgICBbX3Njcm9sbFZpZXcgc2V0Wm9vbUVuYWJsZWQ6dmlld3BvcnRIYW5k
bGVyLmFsbG93c1VzZXJTY2FsaW5nXTsKIAorICAgIENHRmxvYXQgdmFsaWRTY2FsZTsKICAgICBp
ZiAoIV91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZSkKLSAgICAgICAgW3NlbGYgX3NldERvY3VtZW50
U2NhbGU6dmlld3BvcnRIYW5kbGVyLmluaXRpYWxTY2FsZV07CisgICAgICAgIHZhbGlkU2NhbGUg
PSB2aWV3cG9ydEhhbmRsZXIuaW5pdGlhbFNjYWxlOwogICAgIGVsc2UgewogICAgICAgICBDR0Zs
b2F0IGN1cnJlbnRTY2FsZSA9IFtfc2Nyb2xsVmlldyB6b29tU2NhbGVdOwotICAgICAgICBDR0Zs
b2F0IHZhbGlkU2NhbGUgPSBzdGQ6Om1heChzdGQ6Om1pbihjdXJyZW50U2NhbGUsIHN0YXRpY19j
YXN0PENHRmxvYXQ+KHZpZXdwb3J0SGFuZGxlci5tYXhpbXVtU2NhbGUpKSwgc3RhdGljX2Nhc3Q8
Q0dGbG9hdD4odmlld3BvcnRIYW5kbGVyLm1pbmltdW1TY2FsZSkpOwotICAgICAgICBbc2VsZiBf
c2V0RG9jdW1lbnRTY2FsZTp2YWxpZFNjYWxlXTsKKyAgICAgICAgdmFsaWRTY2FsZSA9IHN0ZDo6
bWF4KHN0ZDo6bWluKGN1cnJlbnRTY2FsZSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4odmlld3BvcnRI
YW5kbGVyLm1heGltdW1TY2FsZSkpLCBzdGF0aWNfY2FzdDxDR0Zsb2F0Pih2aWV3cG9ydEhhbmRs
ZXIubWluaW11bVNjYWxlKSk7CiAgICAgfQorICAgIFtfY29udGVudFZpZXcgc2V0UGFnZVNjYWxl
RmFjdG9yOnZhbGlkU2NhbGVdOwogfQogCiAtICh2b2lkKXZpZXdwb3J0SGFuZGxlcjooX1VJV2Vi
Vmlld3BvcnRIYW5kbGVyICopdmlld3BvcnRIYW5kbGVyIGRpZENoYW5nZVZpZXdwb3J0U2l6ZToo
Q0dTaXplKW5ld1NpemUKQEAgLTE3OCw3ICsxOTEsNiBAQCBzdGF0aWMgc3RydWN0IF9VSVdlYlZp
ZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29uZmlndXJhdGlvbiA9IHsgeyBV
SQogICAgIFtfY29udGVudFZpZXcgc2V0Vmlld3BvcnRTaXplOm5ld1NpemVdOwogfQogCi0KICNw
cmFnbWEgbWFyayAtIFVJU2Nyb2xsVmlld0RlbGVnYXRlCiAKIC0gKFVJVmlldyAqKXZpZXdGb3Ja
b29taW5nSW5TY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CkBAIC0xODksMTQg
KzIwMSwxOCBAQCBzdGF0aWMgc3RydWN0IF9VSVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFu
ZGFyZFZpZXdwb3J0Q29uZmlndXJhdGlvbiA9IHsgeyBVSQogCiAtICh2b2lkKXNjcm9sbFZpZXdX
aWxsQmVnaW5ab29taW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWaWV3OihVSVZp
ZXcgKil2aWV3CiB7Ci0gICAgaWYgKHNjcm9sbFZpZXcucGluY2hHZXN0dXJlUmVjb2duaXplci5z
dGF0ZSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbikKKyAgICBpZiAoIV9oYXNQZW5k
aW5nUGFnZVJlc2V0ICYmIHNjcm9sbFZpZXcucGluY2hHZXN0dXJlUmVjb2duaXplci5zdGF0ZSA9
PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbikKICAgICAgICAgX3VzZXJIYXNDaGFuZ2Vk
UGFnZVNjYWxlID0gWUVTOwogfQogCiAtICh2b2lkKV9kaWRGaW5pc2hTY3JvbGwKIHsKKyAgICBp
ZiAoX2hhc1BlbmRpbmdQYWdlUmVzZXQpCisgICAgICAgIHJldHVybjsKKwogICAgIENHUG9pbnQg
cG9zaXRpb24gPSBbX3Njcm9sbFZpZXcgY29udmVydFBvaW50Oltfc2Nyb2xsVmlldyBjb250ZW50
T2Zmc2V0XSB0b1ZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKICAgICBbX2NvbnRlbnRWaWV3IGRp
ZEZpbmlzaFNjcm9sbFRvOnBvc2l0aW9uXTsKKyAgICBbc2VsZiBfdXBkYXRlU2Nyb2xsVmlld1Nj
YWxpbmdJZk5lZWRlZF07CiB9CiAKIC0gKHZvaWQpc2Nyb2xsVmlld0RpZEVuZERyYWdnaW5nOihV
SVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpbGxEZWNlbGVyYXRlOihCT09MKWRlY2VsZXJhdGUK
QEAgLTIxOCwxNCArMjM0LDIxIEBAIHN0YXRpYyBzdHJ1Y3QgX1VJV2ViVmlld3BvcnRDb25maWd1
cmF0aW9uIHN0YW5kYXJkVmlld3BvcnRDb25maWd1cmF0aW9uID0geyB7IFVJCiAKIC0gKHZvaWQp
c2Nyb2xsVmlld0RpZFNjcm9sbDooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogeworICAgIGlm
IChfaGFzUGVuZGluZ1BhZ2VSZXNldCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgQ0dQb2ludCBw
b3NpdGlvbiA9IFtfc2Nyb2xsVmlldyBjb252ZXJ0UG9pbnQ6W19zY3JvbGxWaWV3IGNvbnRlbnRP
ZmZzZXRdIHRvVmlldzpfY29udGVudFZpZXcuZ2V0KCldOwogICAgIFtfY29udGVudFZpZXcgZGlk
U2Nyb2xsVG86cG9zaXRpb25dOwogfQogCiAtICh2b2lkKXNjcm9sbFZpZXdEaWRFbmRab29taW5n
OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWaWV3OihVSVZpZXcgKil2aWV3IGF0U2Nh
bGU6KENHRmxvYXQpc2NhbGUKIHsKKyAgICBpZiAoX2hhc1BlbmRpbmdQYWdlUmVzZXQpCisgICAg
ICAgIHJldHVybjsKKwogICAgIEFTU0VSVChzY3JvbGxWaWV3ID09IF9zY3JvbGxWaWV3KTsKLSAg
ICBbX2NvbnRlbnRWaWV3IGRpZFpvb21Ub1NjYWxlOnNjYWxlXTsKKyAgICBbX2NvbnRlbnRWaWV3
IHNldFBhZ2VTY2FsZUZhY3RvcjpzY2FsZV07CisgICAgW3NlbGYgX3VwZGF0ZVNjcm9sbFZpZXdT
Y2FsaW5nSWZOZWVkZWRdOwogfQogCiAjcHJhZ21hIG1hcmsgSW50ZXJuYWwKQEAgLTI1Miw3ICsy
NzUsMTkgQEAgc3RhdGljIHN0cnVjdCBfVUlXZWJWaWV3cG9ydENvbmZpZ3VyYXRpb24gc3RhbmRh
cmRWaWV3cG9ydENvbmZpZ3VyYXRpb24gPSB7IHsgVUkKICAgICBfdmlld3BvcnRIYW5kbGVyID0g
YWRvcHROUyhbW19VSVdlYlZpZXdwb3J0SGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtfdmll
d3BvcnRIYW5kbGVyIHNldERlbGVnYXRlOnNlbGZdOwogCi0gICAgW3NlbGYgX2ZyYW1lT3JCb3Vu
ZHNDaGFuZ2VkXTsKKyAgICAvLyBJdCBpcyBjb21tb24gdG8gaGF2ZSB0aGUgdmlldyBpbml0aWFs
aXplZCB3aXRoIGEgbnVsbCBmcmFtZS4gVGhlIHJlc3VsdGluZyBXZWJLaXQgdmlld3BvcnQgY29u
ZmlndXJhdGlvbgorICAgIC8vIGlzIG5vdCB1c2VmdWwuIFRvIHJlZHVjZSB3b3JrIHdoZW4gdXBk
YXRpbmcgdGhlIGZyYW1lIG9yIGNvbW1pdGluZyB0aGUgY29udGVudCwgd2UgZGVmaW5lIHRoZSB2
aWV3cG9ydAorICAgIC8vIHdpdGggcmVhc29uYWJsZSB2YWx1ZXMgZm9yIHRoZSBtaXNzaW5nIHBh
cmFtZXRlcnMuCisgICAgW192aWV3cG9ydEhhbmRsZXIgdXBkYXRlOl57CisgICAgICAgIFtfdmll
d3BvcnRIYW5kbGVyIHJlc2V0Vmlld3BvcnRDb25maWd1cmF0aW9uOiZzdGFuZGFyZFZpZXdwb3J0
Q29uZmlndXJhdGlvbl07CisKKyAgICAgICAgQ0dTaXplIHNpemUgPSBib3VuZHMuc2l6ZTsKKyAg
ICAgICAgaWYgKHNpemUud2lkdGggPD0gMCB8fCBzaXplLmhlaWdodCA8PSAwKQorICAgICAgICAg
ICAgc2l6ZSA9IFtbVUlTY3JlZW4gbWFpblNjcmVlbl0gYm91bmRzXS5zaXplOworICAgICAgICBb
X3ZpZXdwb3J0SGFuZGxlciBzZXRBdmFpbGFibGVWaWV3U2l6ZTpzaXplXTsKKyAgICAgICAgW19j
b250ZW50VmlldyBzZXRNaW5pbXVtU2l6ZTpzaXplXTsKKyAgICAgICAgW192aWV3cG9ydEhhbmRs
ZXIgc2V0RG9jdW1lbnRCb3VuZHM6e0NHUG9pbnRaZXJvLCBzaXplfV07CisgICAgfV07CiB9CiAK
IC0gKHZvaWQpX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkCkBAIC0yNjcsMTUgKzMwMiwzMiBAQCBzdGF0
aWMgc3RydWN0IF9VSVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29u
ZmlndXJhdGlvbiA9IHsgeyBVSQogICAgIFtfY29udGVudFZpZXcgc2V0TWluaW11bVNpemU6Ym91
bmRzLnNpemVdOwogfQogCi0tICh2b2lkKV9zZXREb2N1bWVudFNjYWxlOihDR0Zsb2F0KW5ld1Nj
YWxlCistICh2b2lkKV91cGRhdGVTY3JvbGxWaWV3U2NhbGluZwogewotICAgIENHUG9pbnQgY29u
dGVudE9mZnNldEluRG9jdW1lbnRDb29yZGluYXRlcyA9IFtfc2Nyb2xsVmlldyBjb252ZXJ0UG9p
bnQ6W19zY3JvbGxWaWV3IGNvbnRlbnRPZmZzZXRdIHRvVmlldzpfY29udGVudFZpZXcuZ2V0KCld
OworICAgIGlmIChbX3Njcm9sbFZpZXcgaXNab29taW5nXSB8fCBbX3Njcm9sbFZpZXcgaXNab29t
Qm91bmNpbmddIHx8IFtfc2Nyb2xsVmlldyBpc1RyYWNraW5nXSB8fCBbX3Njcm9sbFZpZXcgaXNE
cmFnZ2luZ10gfHwgW19zY3JvbGxWaWV3IGlzRGVjZWxlcmF0aW5nXSkgeworICAgICAgICAvLyBE
byBub3QgbWVzcyB3aXRoIFVJU2Nyb2xsVmlldyBkdXJpbmcgdXNpbmcgaW50ZXJhY3Rpb24sIHRo
YXQgY2F1c2VzIHVuZGVmaW5lZCBiZWhhdmlvcnMuCisgICAgICAgIF9oYXNQZW5kaW5nU2Nyb2xs
Vmlld1VwZGF0ZSA9IFlFUzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBbX3Njcm9sbFZp
ZXcgc2V0TWluaW11bVpvb21TY2FsZTpbX3ZpZXdwb3J0SGFuZGxlciBtaW5pbXVtU2NhbGVdXTsK
KyAgICBbX3Njcm9sbFZpZXcgc2V0TWF4aW11bVpvb21TY2FsZTpbX3ZpZXdwb3J0SGFuZGxlciBt
YXhpbXVtU2NhbGVdXTsKKyAgICBbX3Njcm9sbFZpZXcgc2V0Wm9vbUVuYWJsZWQ6W192aWV3cG9y
dEhhbmRsZXIgYWxsb3dzVXNlclNjYWxpbmddXTsKIAotICAgIFtfc2Nyb2xsVmlldyBzZXRab29t
U2NhbGU6bmV3U2NhbGVdOwotICAgIFtfY29udGVudFZpZXcgZGlkWm9vbVRvU2NhbGU6bmV3U2Nh
bGVdOworICAgIGlmIChfbGF0ZXN0Q29tbWl0ZWRMYXllclNjYWxlICE9IFtfc2Nyb2xsVmlldyB6
b29tU2NhbGVdKSB7CisgICAgICAgIENHUG9pbnQgY29udGVudE9mZnNldEluRG9jdW1lbnRDb29y
ZGluYXRlcyA9IFtfc2Nyb2xsVmlldyBjb252ZXJ0UG9pbnQ6W19zY3JvbGxWaWV3IGNvbnRlbnRP
ZmZzZXRdIHRvVmlldzpfY29udGVudFZpZXcuZ2V0KCldOworICAgICAgICBbX3Njcm9sbFZpZXcg
c2V0Wm9vbVNjYWxlOl9sYXRlc3RDb21taXRlZExheWVyU2NhbGVdOwogCi0gICAgQ0dQb2ludCBj
b250ZW50T2Zmc2V0ID0gW19zY3JvbGxWaWV3IGNvbnZlcnRQb2ludDpjb250ZW50T2Zmc2V0SW5E
b2N1bWVudENvb3JkaW5hdGVzIGZyb21WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07Ci0gICAgW19z
Y3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Y29udGVudE9mZnNldF07CisgICAgICAgIENHUG9p
bnQgY29udGVudE9mZnNldCA9IFtfc2Nyb2xsVmlldyBjb252ZXJ0UG9pbnQ6Y29udGVudE9mZnNl
dEluRG9jdW1lbnRDb29yZGluYXRlcyBmcm9tVmlldzpfY29udGVudFZpZXcuZ2V0KCldOworICAg
ICAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpjb250ZW50T2Zmc2V0XTsKKyAgICB9
Cit9CisKKy0gKHZvaWQpX3VwZGF0ZVNjcm9sbFZpZXdTY2FsaW5nSWZOZWVkZWQKK3sKKyAgICBp
ZiAoX2hhc1BlbmRpbmdTY3JvbGxWaWV3VXBkYXRlKSB7CisgICAgICAgIF9oYXNQZW5kaW5nU2Ny
b2xsVmlld1VwZGF0ZSA9IE5POworICAgICAgICBbc2VsZiBfdXBkYXRlU2Nyb2xsVmlld1NjYWxp
bmddOworICAgIH0KIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
aW5kZXggMWVlOTVjMWFhMjc4NTAyMzM4MzMyZjJmNjg5NjI5Y2JlZmVhYTgwZi4uYzdjYzBhNWFl
MzA5OGMwMjgyYzkxZGM1N2UwM2MzYTM5YTYwZjRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCkBAIC0yNTAsNiArMjUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGludGVycHJldEtl
eUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZENvbW1pdExheWVyVHJlZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgZG91YmxlIHNjYWxl
KSA9IDA7CiAjZW5kaWYKIAogICAgIC8vIEF1eGlsaWFyeSBDbGllbnQgQ3JlYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhNmJmOGY0OWQ5OWI3NmY0YWVk
MjE1NzVlMDNiY2IxYTY4NGYwOTVlLi5jYTg4MTllOGFiYjcwYWYxMTIwNWYxOWMxOTRkMGM2MDQ2
MTQ5ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00NDks
NiArNDQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRp
b24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKTsKICAgICB2b2lkIGdl
dFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpOwogICAgIHZvaWQgcmVxdWVzdFBvc2l0aW9uSW5mb3Jt
YXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIGRpZENvbW1pdExheWVy
VHJlZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgZG91YmxlIHNjYWxlKTsKICNlbmRpZgogCiAg
ICAgY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9lZGl0
b3JTdGF0ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQppbmRleCBmMWU4NzU4Y2Q0NTQwMmI3NjhiOTdkNzRjNTZhMTNjYmRkMmMwYmJhLi5i
MTRmZjIxOGRkNjE1MjI2M2FjZjk0Mzg5NDI1MTJhOGMzOTRjMGFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMzI2LDYgKzMyNiwx
MSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bm90aWZ5UmV2ZWFsZWRTZWxlY3Rpb24oKQogICAgIG1f
cGFnZUNsaWVudC5zZWxlY3Rpb25EaWRDaGFuZ2UoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6
OmRpZENvbW1pdExheWVyVHJlZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwYWdlU2l6ZSwgZG91
YmxlIHBhZ2VTY2FsZSkKK3sKKyAgICBtX3BhZ2VDbGllbnQuZGlkQ29tbWl0TGF5ZXJUcmVlKHBh
Z2VTaXplLCBwYWdlU2NhbGUpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZW5kU2VsZWN0
aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNlbGVjdGlvbihzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZ3JhbnVsYXJpdHkpKSwgbV9wYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lm1tCmluZGV4IGYxNmVjYzQ0MDgwYWViZDY3NTlkYjM5NmE4NGMwZGMzNjQ3MGY0ZGYuLjI0
NTAwNjliY2YxY2VmNDIzYmFmM2Y4MTM3MjI1YjBhNTQ5ZGJhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkubW0KQEAgLTg5LDYgKzg5LDkgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5Ojpjb21taXRMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnMK
ICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIG1fd2ViUGFnZVByb3h5LT5zY3JvbGxp
bmdDb29yZGluYXRvclByb3h5KCktPnVwZGF0ZVNjcm9sbGluZ1RyZWUoc2Nyb2xsaW5nVHJlZVRy
YW5zYWN0aW9uKTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKElPUykKKyAgICBtX3dlYlBhZ2VQcm94
eS0+ZGlkQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJlZVRyYW5zYWN0aW9uLnJlbmRlcmVkUGFnZVNp
emUoKSwgbGF5ZXJUcmVlVHJhbnNhY3Rpb24ucmVuZGVyZWRQYWdlU2NhbGUoKSk7CisjZW5kaWYK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5tbQppbmRleCBlMWUwZWRhYjQxZDU5ZjU0ZDA5NWY5YWU3ZGQwZmYwYWYwMjgwMWJmLi40
YmExODU0MGIzM2ViYWM3OGM5MWRlM2U2ZTE3MWQ4ZTVlOGUyODEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAgLTMyMSw2ICszMjEsOCBAQCB2b2lkIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAgLy8gRklYTUU6IG1pbml6ZSB0
aGVzZSB0cmFuc2FjdGlvbnMgaWYgbm90aGluZyBjaGFuZ2VkLgogICAgIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uIGxheWVyVHJhbnNhY3Rpb247CiAgICAgbV9yZW1vdGVMYXllclRyZWVDb250
ZXh0LT5idWlsZFRyYW5zYWN0aW9uKGxheWVyVHJhbnNhY3Rpb24sICptX3Jvb3RMYXllcik7Cisg
ICAgbGF5ZXJUcmFuc2FjdGlvbi5zZXRSZW5kZXJlZFBhZ2VTaXplKG1fd2ViUGFnZS0+Y29yZVBh
Z2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT5jb250ZW50c1NpemUoKSk7CisgICAgbGF5ZXJUcmFu
c2FjdGlvbi5zZXRSZW5kZXJlZFBhZ2VTY2FsZShtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnBhZ2VT
Y2FsZUZhY3RvcigpKTsKIAogICAgIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rp
b24gc2Nyb2xsaW5nVHJhbnNhY3Rpb247CiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223274</attachid>
            <date>2014-02-05 15:43:38 -0800</date>
            <delta_ts>2014-02-05 20:15:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127886-20140205154338.patch</filename>
            <type>text/plain</type>
            <size>70442</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc1OWFlOTI3YzJkYWE4
ODNhNjM3ZjhlYmZjYzE3MDY0YjJhNWY3NS4uMjIwYzAwODVhMjMzYjEzMTAxYTE4M2Q5ZDNkMjQy
ZWQ4NWQ1NTkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE0LTAyLTA1ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbaU9TXSBTeW5j
aHJvbml6ZSB0aGUgV0tDb250ZW50VmlldyBhbmQgVUlTY3JvbGxWaWV3IHVwZGF0ZXMgd2l0aCB0
aGUgdGlsZXMgYmVpbmcgY29tbWl0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNzg4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSB1cGRhdGVzIG9mIHRoZSB2aWV3cyBvbiB0aGUgVUlQcm9jZXNz
IHNpZGUgd2FzIGNvbXBsZXRlbHkgZGlzY29ubmVjdGVkCisgICAgICAgIGZyb20gdGhlIHRpbGVz
IHVwZGF0ZXMgZnJvbSB0aGUgRHJhd2luZ0FyZWEuIFRoZXJlIGlzIGEgbm9uLW5lZ2xpZ2libGUg
dGltZQorICAgICAgICBiZXR3ZWVuIHRoZSBzaXplL3NjYWxlIHVwZGF0ZSBhbmQgdGhlIG5ldyB0
aWxlcyBjb21pbmcsIHdoaWNoIGNhdXNlcworICAgICAgICB2aXN1YWwgZ2xpdGNoZXMuCisKKyAg
ICAgICAgVGhlcmUgYXJlIHRocmVlIG1haW4gY2FzZXMgd2hlcmUgdGhlIHRpbGVzIGFuZCBjb250
ZW50IHdvdWxkIGJlIG91dCBvZiBzeW5jCisgICAgICAgIHdpdGggdGhlIFVJVmlld3M6CisgICAg
ICAgIC1XaGVuIGxvYWRpbmcgYSBuZXcgcGFnZSB3aXRoIGRpZmZlcmVudCBjb250ZW50IHdpZHRo
IG9mIGEgZGlmZmVyZW50IHZpZXdwb3J0LgorICAgICAgICAtV2hlbiBhIHBhZ2UgY2hhbmdlcyBp
dHMgdmlld3BvcnQuCisgICAgICAgIC1XaGVuIHRoZSB2aWV3cG9ydC1jb25zdHJhaW50ZWQgdmll
d3BvcnQgc2l6ZSBjaGFuZ2VzLgorCisgICAgICAgIFRvIGZpeCB0aGUgaXNzdWUsIFdLVmlldyBp
cyBtb2RpZmllZCB0byBtYWludGFpbiB0aGUgb2xkIHN0YXRlIG9mIFdLQ29udGVudFZpZXcKKyAg
ICAgICAgYW5kIFVJU2Nyb2xsVmlldyB1bnRpbCB0aGUgbmV3IHRpbGVzIGFyZSBhdmFpbGFibGUu
CisKKyAgICAgICAgR2VvbWV0cnkvc2NhbGUgdXBkYXRlIGFyZSBzcGxpdCBpbiB0d28gcGhhc2Vz
OgorICAgICAgICAxKSBBIHNvdXJjZSAodGhlIHBhZ2Ugb3IgdGhlIHVzZXIpIGNoYW5nZXMgcGFy
YW1ldGVycyBvZiB0aGUgZ2VvbWV0cnkuIFRoZSBXZWJQcm9jZXNzIHVwZGF0ZXMKKyAgICAgICAg
ICAgaXRzIGxheW91dCBhY2NvcmRpbmdseS4KKyAgICAgICAgICAgQXQgdGhpcyBwb2ludCwgdGhl
IFVJVmlld3MgYXJlIHVuY2hhbmdlZCBhbmQgYXJlIGxlZnQgd2l0aCB0aGUgb2xkIHBhcmFtZXRl
cnMuCisgICAgICAgIDIpIEV2ZW50dWFsbHksIG5ldyB0aWxlcyBjb21lIGFuZCBjb21taXRMYXll
clRyZWUoKSBpcyBjYWxsZWQgb24gdGhlIGRyYXdpbmcgYXJlYSBwcm94eS4KKyAgICAgICAgICAg
QXQgdGhhdCBwb2ludCwgV0tDb250ZW50VmlldyBhbmQgaXRzIFVJU2Nyb2xsVmlldyBhcmUgdXBk
YXRlZCB0byBtYXRjaCB0aGUgY29tbWl0dGVkCisgICAgICAgICAgIHNpemUgYW5kIHNjYWxlIGZv
ciB0aGUgcGFnZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL1ZpcnR1YWxWaWV3
cG9ydC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RyYWludHNBcmVBbGxSZWxh
dGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaXJ0dWFsVmlld3BvcnQ6OlZpcnR1YWxWaWV3cG9y
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaXJ0dWFsVmlld3BvcnQ6OnNldERlZmF1bHRDb25maWd1
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpcnR1YWxWaWV3cG9ydDo6c2V0Q29udGVudHNT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlZpcnR1YWxWaWV3cG9ydDo6c2V0TWluaW11bUxheW91
dFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6VmlydHVhbFZpZXdwb3J0OjpzZXRWaWV3cG9ydEFy
Z3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpWaXJ0dWFsVmlld3BvcnQ6OmxheW91dFNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6VmlydHVhbFZpZXdwb3J0Ojppbml0aWFsU2NhbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VmlydHVhbFZpZXdwb3J0OjptaW5pbXVtU2NhbGUpOgorICAgICAgICAo
V2ViQ29yZTo6VmlydHVhbFZpZXdwb3J0OjptYXhpbXVtU2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlydHVhbFZpZXdwb3J0OjphbGxvd3NVc2VyU2NhbGluZyk6CisgICAgICAgIChXZWJDb3Jl
Ojp2aWV3cG9ydEFyZ3VtZW50VmFsdWVJc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5
Vmlld3BvcnRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaXJ0dWFsVmlld3BvcnQ6OnVw
ZGF0ZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlydHVhbFZpZXdwb3J0Ojps
YXlvdXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpWaXJ0dWFsVmlld3BvcnQ6OmxheW91dEhl
aWdodCk6CisgICAgICAgICogcGFnZS9WaXJ0dWFsVmlld3BvcnQuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpWaXJ0dWFsVmlld3BvcnRDb25maWd1cmF0aW9uOjpWaXJ0dWFsVmlld3BvcnRD
b25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpcnR1YWxWaWV3cG9ydDo6ZGVmYXVs
dENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlydHVhbFZpZXdwb3J0Ojpjb250
ZW50c1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6VmlydHVhbFZpZXdwb3J0OjptaW5pbXVtTGF5
b3V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaXJ0dWFsVmlld3BvcnQ6OnZpZXdwb3J0QXJn
dW1lbnRzKToKKwogMjAxNC0wMi0wNCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIDxpZnJhbWUgc2VhbWxlc3M+IHN1cHBvcnQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggYzY0OTAwOTlkMjM5NDVhMjE2YzQ3MGIzMTZhMTVkZjg1NjUwMGE4Ny4uNTRhOWQ5MmNlZWQ3
ZDIzZDAwY2MxYTViOTY5ZjJkODRkOGI4NWYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBA
CisyMDE0LTAyLTA1ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBbaU9TXSBTeW5jaHJvbml6ZSB0aGUgV0tDb250ZW50VmlldyBhbmQgVUlTY3JvbGxW
aWV3IHVwZGF0ZXMgd2l0aCB0aGUgdGlsZXMgYmVpbmcgY29tbWl0ZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzg4NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6bWFpbkZyYW1lQ29udGVudHNTaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OnNldE1haW5GcmFtZUNvbnRlbnRzU2l6ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpwYWdlU2NhbGVGYWN0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6c2V0UGFnZVNjYWxl
RmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Om1p
bmltdW1TY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpzZXRNaW5pbXVtU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6bWF4aW11bVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OnNldE1heGltdW1TY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjphbGxvd3NVc2VyU2Nh
bGluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpzZXRB
bGxvd3NVc2VyU2NhbGluZyk6CisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRDb21taXRMYXllclRyZWUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IHNldE1pbmltdW1MYXlvdXRTaXplOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHdpbGxT
dGFydFVzZXJUcmlnZ2VyZWRab29tXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZENv
bW1pdExheWVyVHJlZTpXZWJLaXQ6Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dL
Q29udGVudFZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLVmll
d0lPUy5tbToKKyAgICAgICAgKC1bV0tWaWV3IGNvbnRlbnRWaWV3RGlkQ29tbWl0TG9hZEZvck1h
aW5GcmFtZTpdKToKKyAgICAgICAgKC1bV0tWaWV3IGNvbnRlbnRWaWV3OmRpZENvbW1pdExheWVy
VHJlZTpXZWJLaXQ6Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgc2Nyb2xsVmlld1dpbGxCZWdpblpv
b21pbmc6d2l0aFZpZXc6XSk6CisgICAgICAgICgtW1dLVmlldyBfY29tbW9uSW5pdGlhbGl6YXRp
b25XaXRoQ29udGV4dFJlZjpwYWdlR3JvdXBSZWY6cmVsYXRlZFRvUGFnZTpdKToKKyAgICAgICAg
KC1bV0tWaWV3IF9mcmFtZU9yQm91bmRzQ2hhbmdlZF0pOgorICAgICAgICAoLVtXS1ZpZXcgbWlu
aW11bUxheW91dFNpemVPdmVycmlkZV0pOgorICAgICAgICAoLVtXS1ZpZXcgc2V0TWluaW11bUxh
eW91dFNpemVPdmVycmlkZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFZpcnR1YWxWaWV3cG9ydE1pbmltdW1MYXlv
dXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMYXllclRy
ZWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbGxTdGFydFVzZXJUcmlnZ2Vy
ZWRab29taW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk6OmNvbW1pdExheWVyVHJlZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmNvbnRlbnRzU2l6ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZGlkUmVjZWl2ZU1vYmlsZURvY1R5cGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1haW5GcmFt
ZURpZExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENvbW1pdExvYWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2aWV3
cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptaW5p
bXVtUGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bWF4aW11bVBh
Z2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFsbG93c1VzZXJTY2Fs
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0VmlydHVhbFZpZXdwb3J0TWluaW11
bUxheW91dFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2aXJ0dWFsVmlld3BvcnRD
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2lsbFN0YXJ0VXNlclRyaWdnZXJl
ZFpvb21pbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjpmbHVzaExheWVycyk6CisKIDIwMTQtMDItMDQgIEFuZHJlYXMgS2xpbmcgIDxha2xp
bmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSA8aWZyYW1lIHNlYW1sZXNzPiBzdXBwb3J0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBjZWNhZmZhNzg0M2M5YjI3ZmUwZjE2YjdhZjkzOGZm
NDA5ZWMzZDk3Li4wYzU2Yzk1YTVmNTljMWU2Y2ZiMDc0Y2JhZjdkMmRlMWI4NDM0OWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgpAQCAtNjksNiArNjksNyBAQCBfX1pOM1dURjZTdHJpbmdDMUVQSzEw
X19DRlN0cmluZwogX19aTjdXZWJDb3JlMTVDZXJ0aWZpY2F0ZUluZm9DMUVSS05TXzE2UmVzb3Vy
Y2VSZXNwb25zZUUKIF9fWk43V2ViQ29yZTE1Q2VydGlmaWNhdGVJbmZvQzFFUEs5X19DRkFycmF5
CiBfX1pON1dlYkNvcmUxNUNlcnRpZmljYXRlSW5mb0MxRXYKK19fWk43V2ViQ29yZTE1VmlydHVh
bFZpZXdwb3J0QzFFdgogX19aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFUktOU183SW50UmVjdEUK
IF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfOUZsb2F0UmVjdEUKIF9fWk43V2ViQ29y
ZTEwQ2xpZW50UmVjdEMxRXYKQEAgLTg0LDYgKzg1LDEwIEBAIF9fWk43V2ViQ29yZTEwUmVuZGVy
VmlldzEwY29tcG9zaXRvckV2CiBfX1pON1dlYkNvcmUxMFJlbmRlclZpZXc3aGl0VGVzdEVSS05T
XzE0SGl0VGVzdFJlcXVlc3RFUk5TXzEzSGl0VGVzdFJlc3VsdEUKIF9fWk43V2ViQ29yZTE1U1FM
aXRlU3RhdGVtZW50MTRnZXRDb2x1bW5JbnQ2NEVpCiBfX1pON1dlYkNvcmUxNVNRTGl0ZVN0YXRl
bWVudDIxZ2V0Q29sdW1uQmxvYkFzVmVjdG9yRWlSTjNXVEY2VmVjdG9ySWNMbTBFTlMxXzE1Q3Jh
c2hPbk92ZXJmbG93RUVFCitfX1pON1dlYkNvcmUxNVZpcnR1YWxWaWV3cG9ydDE1c2V0Q29udGVu
dHNTaXplRVJLTlNfN0ludFNpemVFCitfX1pON1dlYkNvcmUxNVZpcnR1YWxWaWV3cG9ydDIzc2V0
RGVmYXVsdENvbmZpZ3VyYXRpb25FUktOU18yOFZpcnR1YWxWaWV3cG9ydENvbmZpZ3VyYXRpb25F
CitfX1pON1dlYkNvcmUxNVZpcnR1YWxWaWV3cG9ydDIwc2V0TWluaW11bUxheW91dFNpemVFUktO
U183SW50U2l6ZUUKK19fWk43V2ViQ29yZTE1VmlydHVhbFZpZXdwb3J0MjBzZXRWaWV3cG9ydEFy
Z3VtZW50c0VSS05TXzE3Vmlld3BvcnRBcmd1bWVudHNFCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZp
ZXcxNnNldFBhcmVudFZpc2libGVFYgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MTdzZXRVc2VG
aXhlZExheW91dEViCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcxOHNldEZpeGVkTGF5b3V0U2l6
ZUVSS05TXzdJbnRTaXplRQpAQCAtNTY4LDYgKzU3Myw4IEBAIF9fWk43V2ViQ29yZTE1R3JhcGhp
Y3NMYXllckNBMzFwbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFydGVkRWQKIF9fWk43V2ViQ29y
ZTE1R3JhcGhpY3NMYXllckNBMzdmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5
RXYKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBNDBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVk
c1RvUmV2YWxpZGF0ZVRpbGVzRXYKIF9fWk5LN1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTQ5cGxh
dGZvcm1DQUxheWVyQ29udGVudHNTY2FsZU11bHRpcGxpZXJGb3JOZXdUaWxlc0VQTlNfMTVQbGF0
Zm9ybUNBTGF5ZXJFCitfX1pOSzdXZWJDb3JlMTVWaXJ0dWFsVmlld3BvcnQxMGxheW91dFNpemVF
dgorX19aTks3V2ViQ29yZTE1VmlydHVhbFZpZXdwb3J0MTJpbml0aWFsU2NhbGVFdgogX19aTjdX
ZWJDb3JlMTVHcmFwaGljc0xheWVyQ0E3c2V0TmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZTE1R3JhcGhpY3NMYXllckNBN3NldFNpemVFUktOU185RmxvYXRTaXplRQogX19aTjdXZWJD
b3JlMTVHcmFwaGljc0xheWVyQ0E4YWRkQ2hpbGRFUE5TXzEzR3JhcGhpY3NMYXllckUKQEAgLTU3
NSw2ICs1ODIsOSBAQCBfX1pON1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQUMyRVBOU18xOUdyYXBo
aWNzTGF5ZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQUQyRXYKIF9fWk43
V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBMTlzZXRDdXN0b21BcHBlYXJhbmNlRU5TXzEzR3JhcGhp
Y3NMYXllcjE2Q3VzdG9tQXBwZWFyYW5jZUUKIF9fWk5LN1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJD
QTE0cHJpbWFyeUxheWVySURFdgorX19aTks3V2ViQ29yZTE1VmlydHVhbFZpZXdwb3J0MTJtYXhp
bXVtU2NhbGVFdgorX19aTks3V2ViQ29yZTE1VmlydHVhbFZpZXdwb3J0MTJtaW5pbXVtU2NhbGVF
dgorX19aTks3V2ViQ29yZTE1VmlydHVhbFZpZXdwb3J0MTdhbGxvd3NVc2VyU2NhbGluZ0V2CiBf
X1pON1dlYkNvcmUxNUhpdFRlc3RMb2NhdGlvbjEycmVjdEZvclBvaW50RVJLTlNfMTFMYXlvdXRQ
b2ludEVqampqCiBfX1pON1dlYkNvcmUxNUhpdFRlc3RMb2NhdGlvbkMxRVJLTlNfMTBGbG9hdFBv
aW50RQogX19aTjdXZWJDb3JlMTVIaXRUZXN0TG9jYXRpb25EMUV2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjlhNjFkNTdiNGRl
Zjc1MDcxY2VjZGU0NmVkMjhlOTM1YmNiZmEyZC4uYTMwN2I3NWZhMjU2ZjE4N2JkZjUyNDRjYTAx
NzQyZDJlMDdmNGM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtOTgzLDYgKzk4Myw4IEBACiAJCTI2QzE3QTNGMTQ5MUQyRDQw
MEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjZDMTdBM0QxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1J
T1MubW0gKi87IH07CiAJCTI2RTk4QTEwMTMwQTlGQ0EwMDhFQjdCMiAvKiBUZXh0Q29kZWNBU0NJ
SUZhc3RQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyNkU5OEEwRjEzMEE5RkNBMDA4RUI3QjIgLyogVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oICov
OyB9OwogCQkyNkY0MEQ0QTE0OTA0QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGNDBENDkxNDkwNEE2
MzAwQ0E2N0M0IC8qIEV2ZW50TG9vcElPUy5tbSAqLzsgfTsKKwkJMjZGOUE4MzgxOEEwNDZBQzAw
QUVCODhBIC8qIFZpcnR1YWxWaWV3cG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY5QTgzNjE4QTA0NkFDMDBBRUI4OEEgLyogVmlydHVhbFZp
ZXdwb3J0LmNwcCAqLzsgfTsKKwkJMjZGOUE4MzkxOEEwNDZBQzAwQUVCODhBIC8qIFZpcnR1YWxW
aWV3cG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjZGOUE4MzcxOEEwNDZBQzAwQUVCODhBIC8qIFZpcnR1YWxWaWV3cG9ydC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI2RkFFNENDMTg1MkUzQTUw
MDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RkFFNEM4MTg1MkUz
QTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCAq
LzsgfTsKIAkJMjZGQUU0Q0QxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI2RkFFNEM5MTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmggKi87IH07CiAJCTI2RkFFNENFMTg1MkUzQTUwMDRDOEM0NiAv
KiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGQUU0Q0ExODUy
RTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5jcHAgKi87IH07CkBAIC03NzY5LDYgKzc3NzEsOCBAQAogCQkyNkMxN0EzRDE0OTFE
MkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IEZpbGVTeXN0ZW1JT1MubW07IHBhdGggPSBpb3MvRmlsZVN5c3RlbUlP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZFOThBMEYxMzBBOUZDQTAwOEVC
N0IyIC8qIFRleHRDb2RlY0FTQ0lJRmFzdFBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyNkY0MEQ0OTE0OTA0QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRXZlbnRMb29wSU9TLm1tOyBwYXRo
ID0gaW9zL0V2ZW50TG9vcElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZG
OUE4MzYxOEEwNDZBQzAwQUVCODhBIC8qIFZpcnR1YWxWaWV3cG9ydC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXJ0dWFsVmlld3BvcnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyNkY5QTgzNzE4QTA0NkFDMDBBRUI4OEEgLyogVmlydHVhbFZp
ZXdwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpcnR1YWxWaWV3cG9y
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkZBRTRDODE4NTJFM0E1MDA0QzhD
NDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZGQUU0QzkxODUy
RTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkZBRTRDQTE4
NTJFM0E1MDA0QzhDNDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjE5OSw2ICsxNjIwMyw4IEBACiAJCQkJQkM4QkYxNTkx
MDU4MTQxODAwQTQwQTA3IC8qIFVzZXJTdHlsZVNoZWV0VHlwZXMuaCAqLywKIAkJCQlGNTEzQTNF
OTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAqLywKIAkJCQk4
Njc4RDBCQTE4NzhFODEwMDAzQUJERTYgLyogVmlld1N0YXRlLmggKi8sCisJCQkJMjZGOUE4MzYx
OEEwNDZBQzAwQUVCODhBIC8qIFZpcnR1YWxWaWV3cG9ydC5jcHAgKi8sCisJCQkJMjZGOUE4Mzcx
OEEwNDZBQzAwQUVCODhBIC8qIFZpcnR1YWxWaWV3cG9ydC5oICovLAogCQkJCTFBQkE4MDA1MTg5
NzM1NTUwMERDRTlENiAvKiBWaXNpdGVkTGlua1Byb3ZpZGVyLmNwcCAqLywKIAkJCQkxQUJBN0ZG
RjE4OTczNDEyMDBEQ0U5RDYgLyogVmlzaXRlZExpbmtQcm92aWRlci5oICovLAogCQkJCUJFOTgz
RDk1MDUyQTJFMEEwMDg5MkQ4NSAvKiBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCAqLywKQEAgLTI0
Mzc0LDYgKzI0MzgwLDcgQEAKIAkJCQlCMkZBM0Q3OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdG
RUZsb29kRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEN0IwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHRkVGdW5jQUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDdE
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFRnVuY0JFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQkyNkY5QTgzOTE4QTA0NkFDMDBBRUI4OEEgLyogVmlydHVhbFZpZXdwb3J0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkZBM0Q3RjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRUZ1bmNHRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEODEwQUI3NUE2RjAwMEU1QUM0IC8qIEpT
U1ZHRkVGdW5jUkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDgzMEFCNzVBNkYw
MDBFNUFDNCAvKiBKU1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjkyOCw2ICsyNjkzNSw3IEBACiAJCQkJMTQ4QUZEQTYwQUY1ODM2MDAwOENDNzAwIC8qIEV4
Y2VwdGlvbkhhbmRsZXJzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTAyNDU3NTExNkNFQUEyNzAw
MEU1NjcxIC8qIEVYVERyYXdCdWZmZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFNjdEMkE2
MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMjZGOUE4MzgxOEEwNDZBQzAwQUVCODhBIC8qIFZpcnR1YWxWaWV3cG9ydC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0NERBQjVCMTE1QTYyMzU4MDA5N0MxRTQgLyogRXh0ZW5zaW9uczNE
T3BlbkdMQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc3Mjg2OTRFMTRGODg4MjUwMEY0
ODREQyAvKiBFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTdDNzQwMTQxNjAzRjdBMTAwMTFGRjJEIC8qIEZlYXR1cmVPYnNlcnZlci5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlydHVhbFZpZXdwb3J0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlydHVhbFZpZXdwb3J0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41M2UxMWJlZDkxYWZjZmRmZWI4MTNiNjBjM2E5YWEwN2I2MjA5YjZlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaXJ0dWFsVmlld3BvcnQuY3BwCkBAIC0wLDAgKzEs
Mjc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
VmlydHVhbFZpZXdwb3J0LmgiCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmICFBU1NF
UlRfRElTQUJMRUQKK3N0YXRpYyBib29sIGNvbnN0cmFpbnRzQXJlQWxsUmVsYXRpdmUoY29uc3Qg
VmlydHVhbFZpZXdwb3J0Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1
cm4gIWNvbmZpZ3VyYXRpb24ud2lkdGhJc1NldCAmJiAhY29uZmlndXJhdGlvbi5oZWlnaHRJc1Nl
dCAmJiAhY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGVJc1NldDsKK30KKyNlbmRpZgorCitWaXJ0
dWFsVmlld3BvcnQ6OlZpcnR1YWxWaWV3cG9ydCgpCisgICAgOiBtX2NvbnRlbnRTaXplKDEwMjQs
IDc2OCkKKyAgICAsIG1fbWluaW11bUxheW91dFNpemUobV9jb250ZW50U2l6ZSkKK3sKKyAgICAv
LyBTZXR1cCBhIHJlYXNvbmFibGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIHRvIGF2b2lkIGNvbXB1
dGluZyBpbmZpbml0ZSBzY2FsZS9zaXplcy4KKyAgICAvLyBUaG9zZSBhcmUgdGhlIG9yaWdpbmFs
IGlQaG9uZSBjb25maWd1cmF0aW9uLgorICAgIG1fZGVmYXVsdENvbmZpZ3VyYXRpb24ud2lkdGgg
PSA5ODA7CisgICAgbV9kZWZhdWx0Q29uZmlndXJhdGlvbi53aWR0aElzU2V0ID0gdHJ1ZTsKKyAg
ICBtX2RlZmF1bHRDb25maWd1cmF0aW9uLmFsbG93c1VzZXJTY2FsaW5nID0gdHJ1ZTsKKyAgICBt
X2RlZmF1bHRDb25maWd1cmF0aW9uLm1pbmltdW1TY2FsZSA9IDAuMjU7CisgICAgbV9kZWZhdWx0
Q29uZmlndXJhdGlvbi5tYXhpbXVtU2NhbGUgPSA1OworICAgIHVwZGF0ZUNvbmZpZ3VyYXRpb24o
KTsKK30KKwordm9pZCBWaXJ0dWFsVmlld3BvcnQ6OnNldERlZmF1bHRDb25maWd1cmF0aW9uKGNv
bnN0IFZpcnR1YWxWaWV3cG9ydENvbmZpZ3VyYXRpb24mIHZpcnR1YWxWaWV3cG9ydENvbmZpZ3Vy
YXRpb24pCit7CisgICAgQVNTRVJUKCFjb25zdHJhaW50c0FyZUFsbFJlbGF0aXZlKG1fY29uZmln
dXJhdGlvbikpOworICAgIEFTU0VSVCghbV9kZWZhdWx0Q29uZmlndXJhdGlvbi5pbml0aWFsU2Nh
bGVJc1NldCB8fCB2aXJ0dWFsVmlld3BvcnRDb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZSA+IDAp
OworICAgIEFTU0VSVCh2aXJ0dWFsVmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1TY2FsZSA+
IDApOworICAgIEFTU0VSVCh2aXJ0dWFsVmlld3BvcnRDb25maWd1cmF0aW9uLm1heGltdW1TY2Fs
ZSA+PSB2aXJ0dWFsVmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1TY2FsZSk7CisKKyAgICBt
X2RlZmF1bHRDb25maWd1cmF0aW9uID0gdmlydHVhbFZpZXdwb3J0Q29uZmlndXJhdGlvbjsKKyAg
ICB1cGRhdGVDb25maWd1cmF0aW9uKCk7Cit9CisKK3ZvaWQgVmlydHVhbFZpZXdwb3J0OjpzZXRD
b250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYgY29udGVudFNpemUpCit7CisgICAgaWYgKG1fY29u
dGVudFNpemUgPT0gY29udGVudFNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGVu
dFNpemUgPSBjb250ZW50U2l6ZTsKKyAgICB1cGRhdGVDb25maWd1cmF0aW9uKCk7Cit9CisKK3Zv
aWQgVmlydHVhbFZpZXdwb3J0OjpzZXRNaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiBt
aW5pbXVtTGF5b3V0U2l6ZSkKK3sKKyAgICBpZiAobV9taW5pbXVtTGF5b3V0U2l6ZSA9PSBtaW5p
bXVtTGF5b3V0U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9taW5pbXVtTGF5b3V0U2l6
ZSA9IG1pbmltdW1MYXlvdXRTaXplOworICAgIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKTsKK30KKwor
dm9pZCBWaXJ0dWFsVmlld3BvcnQ6OnNldFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFZpZXdwb3J0
QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykKK3sKKyAgICBpZiAobV92aWV3cG9ydEFyZ3Vt
ZW50cyA9PSB2aWV3cG9ydEFyZ3VtZW50cykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV92aWV3
cG9ydEFyZ3VtZW50cyA9IHZpZXdwb3J0QXJndW1lbnRzOworICAgIHVwZGF0ZUNvbmZpZ3VyYXRp
b24oKTsKK30KKworSW50U2l6ZSBWaXJ0dWFsVmlld3BvcnQ6OmxheW91dFNpemUoKSBjb25zdAor
eworICAgIHJldHVybiBJbnRTaXplKGxheW91dFdpZHRoKCksIGxheW91dEhlaWdodCgpKTsKK30K
KworZG91YmxlIFZpcnR1YWxWaWV3cG9ydDo6aW5pdGlhbFNjYWxlKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoIWNvbnN0cmFpbnRzQXJlQWxsUmVsYXRpdmUobV9jb25maWd1cmF0aW9uKSk7CisKKyAg
ICAvLyBJZiB0aGUgZG9jdW1lbnQgaGFzIHNwZWNpZmllZCBpdHMgb3duIGluaXRpYWwgc2NhbGUs
IHVzZSBpdCByZWdhcmRsZXNzLgorICAgIC8vIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSBzYW5p
dHkgY2hlY2tlZCBhbHJlYWR5LCBzbyBubyBuZWVkIGZvciBNSU4vTUFYLgorICAgIGlmIChtX2Nv
bmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlSXNTZXQpCisgICAgICAgIHJldHVybiBtX2NvbmZpZ3Vy
YXRpb24uaW5pdGlhbFNjYWxlOworCisgICAgLy8gSWYgbm90LCBpdCBpcyB1cCB0byB1cyB0byBk
ZXRlcm1pbmUgdGhlIGluaXRpYWwgc2NhbGUuCisgICAgLy8gV2Ugd2FudCBhIHNjYWxlIHNtYWxs
IGVub3VnaCB0byBmaXQgdGhlIGRvY3VtZW50IHdpZHRoLXdpc2UuCisgICAgZG91YmxlIHdpZHRo
ID0gbV9jb250ZW50U2l6ZS53aWR0aCgpID4gMCA/IG1fY29udGVudFNpemUud2lkdGgoKSA6IGxh
eW91dFdpZHRoKCk7CisgICAgZG91YmxlIGluaXRpYWxTY2FsZSA9IDA7CisgICAgaWYgKHdpZHRo
ID4gMCkKKyAgICAgICAgaW5pdGlhbFNjYWxlID0gbV9taW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgp
IC8gd2lkdGg7CisKKyAgICAvLyBQcmV2ZW50IHRoZSBpbnRpYWwgc2NhbGUgZnJvbSBzaHJpbmtp
bmcgdG8gYSBoZWlnaHQgc21hbGxlciB0aGFuIG91ciB2aWV3J3MgbWluaW11bSBoZWlnaHQuCisg
ICAgZG91YmxlIGhlaWdodCA9IG1fY29udGVudFNpemUuaGVpZ2h0KCkgPiAwID8gbV9jb250ZW50
U2l6ZS5oZWlnaHQoKSA6IGxheW91dEhlaWdodCgpOworICAgIGlmIChoZWlnaHQgPiAwICYmIGhl
aWdodCAqIGluaXRpYWxTY2FsZSA8IG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkpCisgICAg
ICAgIGluaXRpYWxTY2FsZSA9IG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkgLyBoZWlnaHQ7
CisgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KGluaXRpYWxTY2FsZSwgbV9jb25maWd1cmF0
aW9uLm1pbmltdW1TY2FsZSksIG1fY29uZmlndXJhdGlvbi5tYXhpbXVtU2NhbGUpOworfQorCitk
b3VibGUgVmlydHVhbFZpZXdwb3J0OjptaW5pbXVtU2NhbGUoKSBjb25zdAoreworICAgIC8vIElm
IHdlIHNjYWxlIHRvIGZpdCwgdGhlbiB0aGlzIGlzIG91ciBtaW5pbXVtIHNjYWxlIGFzIHdlbGwu
CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlSXNTZXQpCisgICAgICAgIHJl
dHVybiBpbml0aWFsU2NhbGUoKTsKKworICAgIC8vIElmIG5vdCwgd2Ugc3RpbGwgbmVlZCB0byBz
YW5pdHkgY2hlY2sgb3VyIHZhbHVlLgorICAgIGRvdWJsZSBtaW5pbXVtU2NhbGUgPSBtX2NvbmZp
Z3VyYXRpb24uaW5pdGlhbFNjYWxlOworCisgICAgZG91YmxlIGNvbnRlbnRXaWR0aCA9IG1fY29u
dGVudFNpemUud2lkdGgoKTsKKyAgICBpZiAoY29udGVudFdpZHRoID4gMCAmJiBjb250ZW50V2lk
dGggKiBtaW5pbXVtU2NhbGUgPCBtX21pbmltdW1MYXlvdXRTaXplLndpZHRoKCkpCisgICAgICAg
IG1pbmltdW1TY2FsZSA9IG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSAvIGNvbnRlbnRXaWR0
aDsKKworICAgIGRvdWJsZSBjb250ZW50SGVpZ2h0ID0gbV9jb250ZW50U2l6ZS5oZWlnaHQoKTsK
KyAgICBpZiAoY29udGVudEhlaWdodCA+IDAgJiYgY29udGVudEhlaWdodCAqIG1pbmltdW1TY2Fs
ZSA8IG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkpCisgICAgICAgIG1pbmltdW1TY2FsZSA9
IG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkgLyBjb250ZW50SGVpZ2h0OworCisgICAgbWlu
aW11bVNjYWxlID0gc3RkOjptaW4oc3RkOjptYXgobWluaW11bVNjYWxlLCBtX2NvbmZpZ3VyYXRp
b24ubWluaW11bVNjYWxlKSwgbV9jb25maWd1cmF0aW9uLm1heGltdW1TY2FsZSk7CisKKyAgICBy
ZXR1cm4gbWluaW11bVNjYWxlOworfQorCitkb3VibGUgVmlydHVhbFZpZXdwb3J0OjptYXhpbXVt
U2NhbGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24ubWF4aW11bVNjYWxl
OworfQorCitib29sIFZpcnR1YWxWaWV3cG9ydDo6YWxsb3dzVXNlclNjYWxpbmcoKSBjb25zdAor
eworICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uYWxsb3dzVXNlclNjYWxpbmc7Cit9CisKK3N0
YXRpYyBpbmxpbmUgYm9vbCB2aWV3cG9ydEFyZ3VtZW50VmFsdWVJc1ZhbGlkKGZsb2F0IHZhbHVl
KQoreworICAgIHJldHVybiB2YWx1ZSA+IDA7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVl
VHlwZSwgdHlwZW5hbWUgVmlld3BvcnRBcmd1bWVudHNUeXBlPgorc3RhdGljIGlubGluZSB2b2lk
IGFwcGx5Vmlld3BvcnRBcmd1bWVudChWYWx1ZVR5cGUmIHZhbHVlLCBWaWV3cG9ydEFyZ3VtZW50
c1R5cGUgdmlld3BvcnRBcmd1bWVudFZhbHVlLCBWYWx1ZVR5cGUgbWluaW11bSwgVmFsdWVUeXBl
IG1heGltdW0pCit7CisgICAgaWYgKHZpZXdwb3J0QXJndW1lbnRWYWx1ZUlzVmFsaWQodmlld3Bv
cnRBcmd1bWVudFZhbHVlKSkKKyAgICAgICAgdmFsdWUgPSBzdGQ6Om1pbihtYXhpbXVtLCBzdGQ6
Om1heChtaW5pbXVtLCBzdGF0aWNfY2FzdDxWYWx1ZVR5cGU+KHZpZXdwb3J0QXJndW1lbnRWYWx1
ZSkpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBWaWV3cG9y
dEFyZ3VtZW50c1R5cGU+CitzdGF0aWMgaW5saW5lIHZvaWQgYXBwbHlWaWV3cG9ydEFyZ3VtZW50
KFZhbHVlVHlwZSYgdmFsdWUsIGJvb2wmIHZhbHVlSXNTZXQsIFZpZXdwb3J0QXJndW1lbnRzVHlw
ZSB2aWV3cG9ydEFyZ3VtZW50VmFsdWUsIFZhbHVlVHlwZSBtaW5pbXVtLCBWYWx1ZVR5cGUgbWF4
aW11bSkKK3sKKyAgICBpZiAodmlld3BvcnRBcmd1bWVudFZhbHVlSXNWYWxpZCh2aWV3cG9ydEFy
Z3VtZW50VmFsdWUpKSB7CisgICAgICAgIHZhbHVlID0gc3RkOjptaW4obWF4aW11bSwgc3RkOjpt
YXgobWluaW11bSwgc3RhdGljX2Nhc3Q8VmFsdWVUeXBlPih2aWV3cG9ydEFyZ3VtZW50VmFsdWUp
KSk7CisgICAgICAgIHZhbHVlSXNTZXQgPSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICB2YWx1
ZUlzU2V0ID0gZmFsc2U7Cit9CisKK3ZvaWQgVmlydHVhbFZpZXdwb3J0Ojp1cGRhdGVDb25maWd1
cmF0aW9uKCkKK3sKKyAgICBtX2NvbmZpZ3VyYXRpb24gPSBtX2RlZmF1bHRDb25maWd1cmF0aW9u
OworCisgICAgY29uc3QgZG91YmxlIG1pbmltdW1WaWV3cG9ydEFyZ3VtZW50c1NjYWxlRmFjdG9y
ID0gMC4xOworICAgIGNvbnN0IGRvdWJsZSBtYXhpbXVtVmlld3BvcnRBcmd1bWVudHNTY2FsZUZh
Y3RvciA9IDEwLjA7CisKKyAgICBib29sIHZpZXdwb3J0QXJndW1lbnRzT3ZlcnJpZGVzSW5pdGlh
bFNjYWxlOworICAgIGJvb2wgdmlld3BvcnRBcmd1bWVudHNPdmVycmlkZXNXaWR0aDsKKyAgICBi
b29sIHZpZXdwb3J0QXJndW1lbnRzT3ZlcnJpZGVzSGVpZ2h0OworCisgICAgYXBwbHlWaWV3cG9y
dEFyZ3VtZW50KG1fY29uZmlndXJhdGlvbi5taW5pbXVtU2NhbGUsIG1fdmlld3BvcnRBcmd1bWVu
dHMubWluWm9vbSwgbWluaW11bVZpZXdwb3J0QXJndW1lbnRzU2NhbGVGYWN0b3IsIG1heGltdW1W
aWV3cG9ydEFyZ3VtZW50c1NjYWxlRmFjdG9yKTsKKyAgICBhcHBseVZpZXdwb3J0QXJndW1lbnQo
bV9jb25maWd1cmF0aW9uLm1heGltdW1TY2FsZSwgbV92aWV3cG9ydEFyZ3VtZW50cy5tYXhab29t
LCBtX2NvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlLCBtYXhpbXVtVmlld3BvcnRBcmd1bWVudHNT
Y2FsZUZhY3Rvcik7CisgICAgYXBwbHlWaWV3cG9ydEFyZ3VtZW50KG1fY29uZmlndXJhdGlvbi5p
bml0aWFsU2NhbGUsIHZpZXdwb3J0QXJndW1lbnRzT3ZlcnJpZGVzSW5pdGlhbFNjYWxlLCBtX3Zp
ZXdwb3J0QXJndW1lbnRzLnpvb20sIG1fY29uZmlndXJhdGlvbi5taW5pbXVtU2NhbGUsIG1fY29u
ZmlndXJhdGlvbi5tYXhpbXVtU2NhbGUpOworCisgICAgZG91YmxlIG1pbmltdW1WaWV3cG9ydEFy
Z3VtZW50c0RpbWVuc2lvbiA9IDEwOworICAgIGRvdWJsZSBtYXhpbXVtVmlld3BvcnRBcmd1bWVu
dHNEaW1lbnNpb24gPSAxMDAwMDsKKyAgICBhcHBseVZpZXdwb3J0QXJndW1lbnQobV9jb25maWd1
cmF0aW9uLndpZHRoLCB2aWV3cG9ydEFyZ3VtZW50c092ZXJyaWRlc1dpZHRoLCBtX3ZpZXdwb3J0
QXJndW1lbnRzLndpZHRoLCBtaW5pbXVtVmlld3BvcnRBcmd1bWVudHNEaW1lbnNpb24sIG1heGlt
dW1WaWV3cG9ydEFyZ3VtZW50c0RpbWVuc2lvbik7CisgICAgYXBwbHlWaWV3cG9ydEFyZ3VtZW50
KG1fY29uZmlndXJhdGlvbi5oZWlnaHQsIHZpZXdwb3J0QXJndW1lbnRzT3ZlcnJpZGVzSGVpZ2h0
LCBtX3ZpZXdwb3J0QXJndW1lbnRzLmhlaWdodCwgbWluaW11bVZpZXdwb3J0QXJndW1lbnRzRGlt
ZW5zaW9uLCBtYXhpbXVtVmlld3BvcnRBcmd1bWVudHNEaW1lbnNpb24pOworCisgICAgaWYgKHZp
ZXdwb3J0QXJndW1lbnRzT3ZlcnJpZGVzSW5pdGlhbFNjYWxlIHx8IHZpZXdwb3J0QXJndW1lbnRz
T3ZlcnJpZGVzV2lkdGggfHwgdmlld3BvcnRBcmd1bWVudHNPdmVycmlkZXNIZWlnaHQpIHsKKyAg
ICAgICAgbV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZUlzU2V0ID0gdmlld3BvcnRBcmd1bWVu
dHNPdmVycmlkZXNJbml0aWFsU2NhbGU7CisgICAgICAgIG1fY29uZmlndXJhdGlvbi53aWR0aElz
U2V0ID0gdmlld3BvcnRBcmd1bWVudHNPdmVycmlkZXNXaWR0aDsKKyAgICAgICAgbV9jb25maWd1
cmF0aW9uLmhlaWdodElzU2V0ID0gdmlld3BvcnRBcmd1bWVudHNPdmVycmlkZXNIZWlnaHQ7Cisg
ICAgfQorCisgICAgaWYgKHZpZXdwb3J0QXJndW1lbnRWYWx1ZUlzVmFsaWQobV92aWV3cG9ydEFy
Z3VtZW50cy51c2VyWm9vbSkpCisgICAgICAgIG1fY29uZmlndXJhdGlvbi5hbGxvd3NVc2VyU2Nh
bGluZyA9IG1fdmlld3BvcnRBcmd1bWVudHMudXNlclpvb20gIT0gMC47Cit9CisKK2ludCBWaXJ0
dWFsVmlld3BvcnQ6OmxheW91dFdpZHRoKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWNvbnN0cmFp
bnRzQXJlQWxsUmVsYXRpdmUobV9jb25maWd1cmF0aW9uKSk7CisKKyAgICBpZiAobV9jb25maWd1
cmF0aW9uLndpZHRoSXNTZXQpIHsKKyAgICAgICAgLy8gSWYgd2Ugc2NhbGUgdG8gZml0LCB0aGVu
IGFjY2VwdCB0aGUgdmlld3BvcnQgd2lkdGggd2l0aCBzYW5pdHkgY2hlY2tpbmcuCisgICAgICAg
IGlmICghbV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZUlzU2V0KSB7CisgICAgICAgICAgICBk
b3VibGUgbWF4aW11bVNjYWxlID0gdGhpcy0+bWF4aW11bVNjYWxlKCk7CisgICAgICAgICAgICBk
b3VibGUgbWF4aW11bUNvbnRlbnRXaWR0aEluVmlld3BvcnRDb29yZGluYXRlID0gbWF4aW11bVNj
YWxlICogbV9jb25maWd1cmF0aW9uLndpZHRoOworICAgICAgICAgICAgaWYgKG1heGltdW1Db250
ZW50V2lkdGhJblZpZXdwb3J0Q29vcmRpbmF0ZSA8IG1fbWluaW11bUxheW91dFNpemUud2lkdGgo
KSkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBjb250ZW50IHpvb21lZCB0byBtYXhTY2FsZSBk
b2VzIG5vdCBmaXQgdGhlIHRoZSB2aWV3LiBSZXR1cm4gdGhlIG1pbmltdW0gd2lkdGgKKyAgICAg
ICAgICAgICAgICAvLyBzYXRpc2Z5aW5nIHRoZSBjb25zdHJhaW50IG1heGltdW1TY2FsZS4KKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX21pbmltdW1MYXlvdXRTaXplLndpZHRo
KCkgLyBtYXhpbXVtU2NhbGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6cm91bmQobV9jb25maWd1cmF0aW9uLndpZHRoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IElmIG5vdCwgbWFrZSBzdXJlIHRoZSB2aWV3cG9ydCB3aWR0aCBhbmQgaW5pdGlhbCBzY2FsZSBj
YW4gY28tZXhpc3QuCisgICAgICAgIGRvdWJsZSBpbml0aWFsQ29udGVudFdpZHRoSW5WaWV3cG9y
dENvb3JkaW5hdGUgPSBtX2NvbmZpZ3VyYXRpb24ud2lkdGggKiBtX2NvbmZpZ3VyYXRpb24uaW5p
dGlhbFNjYWxlOworICAgICAgICBpZiAoaW5pdGlhbENvbnRlbnRXaWR0aEluVmlld3BvcnRDb29y
ZGluYXRlIDwgbV9jb250ZW50U2l6ZS53aWR0aCgpKSB7CisgICAgICAgICAgICAvLyBUaGUgc3Bl
Y2lmaWVkIHdpZHRoIGRvZXMgbm90IGZpdCBpbiB2aWV3cG9ydC4gUmV0dXJuIHRoZSBtaW5pbXVt
IHdpZHRoIHRoYXQgc2F0aXNmeSB0aGUgaW5pdGlhbFNjYWxlIGNvbnN0cmFpbnQuCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpyb3VuZChtX21pbmltdW1MYXlvdXRTaXplLndpZHRoKCkgLyBtX2Nv
bmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3Rk
Ojpyb3VuZChtX2NvbmZpZ3VyYXRpb24ud2lkdGgpOworICAgIH0KKworICAgIC8vIElmIHRoZSBw
YWdlIGhhcyBhIHJlYWwgc2NhbGUsIHRoZW4ganVzdCByZXR1cm4gdGhlIG1pbmltdW0gc2l6ZSBv
dmVyIHRoZSBpbml0aWFsIHNjYWxlLgorICAgIGlmIChtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNj
YWxlSXNTZXQgJiYgIW1fY29uZmlndXJhdGlvbi5oZWlnaHRJc1NldCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8gbV9jb25maWd1cmF0aW9u
LmluaXRpYWxTY2FsZSk7CisKKyAgICBpZiAobV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSA+
IDApCisgICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1fbWluaW11bUxheW91dFNpemUud2lkdGgo
KSAqIGxheW91dEhlaWdodCgpIC8gbV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSk7CisgICAg
cmV0dXJuIG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKTsKK30KKworaW50IFZpcnR1YWxWaWV3
cG9ydDo6bGF5b3V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWNvbnN0cmFpbnRzQXJl
QWxsUmVsYXRpdmUobV9jb25maWd1cmF0aW9uKSk7CisKKyAgICBpZiAobV9jb25maWd1cmF0aW9u
LmhlaWdodElzU2V0KSB7CisgICAgICAgIC8vIElmIHdlIHNjYWxlIHRvIGZpdCwgdGhlbiBhY2Nl
cHQgdGhlIHZpZXdwb3J0IGhlaWdodCB3aXRoIHNhbml0eSBjaGVja2luZy4KKyAgICAgICAgaWYg
KCFtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlSXNTZXQpIHsKKyAgICAgICAgICAgIGRvdWJs
ZSBtYXhpbXVtU2NhbGUgPSB0aGlzLT5tYXhpbXVtU2NhbGUoKTsKKyAgICAgICAgICAgIGRvdWJs
ZSBtYXhpbXVtQ29udGVudEhlaWdodEluVmlld3BvcnRDb29yZGluYXRlID0gbWF4aW11bVNjYWxl
ICogbV9jb25maWd1cmF0aW9uLmhlaWdodDsKKyAgICAgICAgICAgIGlmIChtYXhpbXVtQ29udGVu
dEhlaWdodEluVmlld3BvcnRDb29yZGluYXRlIDwgbV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQo
KSkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBjb250ZW50IHpvb21lZCB0byBtYXhTY2FsZSBk
b2VzIG5vdCBmaXQgdGhlIHRoZSB2aWV3LiBSZXR1cm4gdGhlIG1pbmltdW0gaGVpZ2h0IHRoYXQK
KyAgICAgICAgICAgICAgICAvLyBzYXRpc2Z5IHRoZSBjb25zdHJhaW50IG1heGltdW1TY2FsZS4K
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX21pbmltdW1MYXlvdXRTaXplLmhl
aWdodCgpIC8gbWF4aW11bVNjYWxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biBzdGQ6OnJvdW5kKG1fY29uZmlndXJhdGlvbi5oZWlnaHQpOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gSWYgbm90LCBtYWtlIHN1cmUgdGhlIHZpZXdwb3J0IHdpZHRoIGFuZCBpbml0aWFsIHNj
YWxlIGNhbiBjby1leGlzdC4KKyAgICAgICAgZG91YmxlIGluaXRpYWxDb250ZW50SGVpZ2h0SW5W
aWV3cG9ydENvb3JkaW5hdGUgPSBtX2NvbmZpZ3VyYXRpb24uaGVpZ2h0ICogbV9jb25maWd1cmF0
aW9uLmluaXRpYWxTY2FsZTsKKyAgICAgICAgaWYgKGluaXRpYWxDb250ZW50SGVpZ2h0SW5WaWV3
cG9ydENvb3JkaW5hdGUgPCBtX21pbmltdW1MYXlvdXRTaXplLmhlaWdodCgpKSB7CisgICAgICAg
ICAgICAvLyBUaGUgc3BlY2lmaWVkIHdpZHRoIGRvZXMgbm90IGZpdCBpbiB2aWV3cG9ydC4gUmV0
dXJuIHRoZSBtaW5pbXVtIGhlaWdodCB0aGF0IHNhdGlzZnkgdGhlIGluaXRpYWxTY2FsZSBjb25z
dHJhaW50LgorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0U2l6
ZS5oZWlnaHQoKSAvIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGUpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1fY29uZmlndXJhdGlvbi5oZWlnaHQpOworICAgIH0K
KworICAgIC8vIElmIHRoZSBwYWdlIGhhcyBhIHJlYWwgc2NhbGUsIHRoZW4ganVzdCByZXR1cm4g
dGhlIG1pbmltdW0gc2l6ZSBvdmVyIHRoZSBpbml0aWFsIHNjYWxlLgorICAgIGlmIChtX2NvbmZp
Z3VyYXRpb24uaW5pdGlhbFNjYWxlSXNTZXQgJiYgIW1fY29uZmlndXJhdGlvbi53aWR0aElzU2V0
KQorICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX21pbmltdW1MYXlvdXRTaXplLmhlaWdodCgp
IC8gbV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZSk7CisKKyAgICBpZiAobV9taW5pbXVtTGF5
b3V0U2l6ZS53aWR0aCgpID4gMCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVt
TGF5b3V0U2l6ZS5oZWlnaHQoKSAqIGxheW91dFdpZHRoKCkgLyBtX21pbmltdW1MYXlvdXRTaXpl
LndpZHRoKCkpOworICAgIHJldHVybiBtX21pbmltdW1MYXlvdXRTaXplLmhlaWdodCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1ZpcnR1YWxWaWV3cG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaXJ0dWFsVmlld3BvcnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ZTRiYWYxMDlhNDlkMjQxYzU4Y2NlODYzODkxMDdjNzJmNDJiZmVhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaXJ0dWFsVmlld3BvcnQuaApA
QCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpcnR1YWxWaWV3cG9y
dF9oCisjZGVmaW5lIFZpcnR1YWxWaWV3cG9ydF9oCisKKyNpbmNsdWRlICJJbnRTaXplLmgiCisj
aW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgVmlydHVhbFZpZXdwb3J0Q29uZmln
dXJhdGlvbiB7CisgICAgVmlydHVhbFZpZXdwb3J0Q29uZmlndXJhdGlvbigpCisgICAgeworICAg
ICAgICBiemVybyh0aGlzLCBzaXplb2YoVmlydHVhbFZpZXdwb3J0Q29uZmlndXJhdGlvbikpOwor
ICAgIH0KKworICAgIGRvdWJsZSB3aWR0aDsKKyAgICBkb3VibGUgaGVpZ2h0OworICAgIGRvdWJs
ZSBpbml0aWFsU2NhbGU7CisgICAgZG91YmxlIG1pbmltdW1TY2FsZTsKKyAgICBkb3VibGUgbWF4
aW11bVNjYWxlOworICAgIGJvb2wgYWxsb3dzVXNlclNjYWxpbmc7CisKKyAgICBib29sIHdpZHRo
SXNTZXQ7CisgICAgYm9vbCBoZWlnaHRJc1NldDsKKyAgICBib29sIGluaXRpYWxTY2FsZUlzU2V0
OworfTsKKworY2xhc3MgVmlydHVhbFZpZXdwb3J0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShWaXJ0dWFsVmlld3BvcnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBWaXJ0dWFsVmlld3BvcnQoKTsKKworICAgIGNvbnN0IFZpcnR1YWxWaWV3cG9ydENvbmZpZ3Vy
YXRpb24mIGRlZmF1bHRDb25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0Q29u
ZmlndXJhdGlvbjsgfQorICAgIHZvaWQgc2V0RGVmYXVsdENvbmZpZ3VyYXRpb24oY29uc3QgVmly
dHVhbFZpZXdwb3J0Q29uZmlndXJhdGlvbiYpOworCisgICAgY29uc3QgSW50U2l6ZSYgY29udGVu
dHNTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U2l6ZTsgfQorICAgIHZvaWQgc2V0Q29u
dGVudHNTaXplKGNvbnN0IEludFNpemUmKTsKKworICAgIGNvbnN0IEludFNpemUmIG1pbmltdW1M
YXlvdXRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtTGF5b3V0U2l6ZTsgfQorICAgIHZv
aWQgc2V0TWluaW11bUxheW91dFNpemUoY29uc3QgSW50U2l6ZSYpOworCisgICAgY29uc3QgVmll
d3BvcnRBcmd1bWVudHMmIHZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV92aWV3
cG9ydEFyZ3VtZW50czsgfQorICAgIHZvaWQgc2V0Vmlld3BvcnRBcmd1bWVudHMoY29uc3QgVmll
d3BvcnRBcmd1bWVudHMmKTsKKworICAgIEludFNpemUgbGF5b3V0U2l6ZSgpIGNvbnN0OworICAg
IGRvdWJsZSBpbml0aWFsU2NhbGUoKSBjb25zdDsKKyAgICBkb3VibGUgbWluaW11bVNjYWxlKCkg
Y29uc3Q7CisgICAgZG91YmxlIG1heGltdW1TY2FsZSgpIGNvbnN0OworICAgIGJvb2wgYWxsb3dz
VXNlclNjYWxpbmcoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICB2b2lkIHVwZGF0ZUNvbmZpZ3Vy
YXRpb24oKTsKKyAgICBpbnQgbGF5b3V0V2lkdGgoKSBjb25zdDsKKyAgICBpbnQgbGF5b3V0SGVp
Z2h0KCkgY29uc3Q7CisKKyAgICBWaXJ0dWFsVmlld3BvcnRDb25maWd1cmF0aW9uIG1fY29uZmln
dXJhdGlvbjsKKyAgICBWaXJ0dWFsVmlld3BvcnRDb25maWd1cmF0aW9uIG1fZGVmYXVsdENvbmZp
Z3VyYXRpb247CisgICAgSW50U2l6ZSBtX2NvbnRlbnRTaXplOworICAgIEludFNpemUgbV9taW5p
bXVtTGF5b3V0U2l6ZTsKKyAgICBWaWV3cG9ydEFyZ3VtZW50cyBtX3ZpZXdwb3J0QXJndW1lbnRz
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVmlydHVhbFZpZXdw
b3J0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24uaAppbmRleCBlYjM0YTRmYTI2OTBkNmYxMTg4ZDJlODM2MWRjZTJiYWMy
ZGRmMjcwLi42YzZiOWFiMGNhY2I0MjE2YjcxNGM1NTBjMjNiZmZiZjhlNzZmM2VmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5oCkBAIC0xNTUsMTEgKzE1NSwzMSBAQCBwdWJsaWM6CiAgICAgSGFzaE1hcDxXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQsIExheWVyUHJvcGVydGllcz4gY2hhbmdl
ZExheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbmdlZExheWVyUHJvcGVydGllczsgfQogICAg
IFZlY3RvcjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+IGRlc3Ryb3ll
ZExheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdHJveWVkTGF5ZXJJRHM7IH0KIAorICAgIFdl
YkNvcmU6OkludFNpemUgbWFpbkZyYW1lQ29udGVudHNTaXplKCkgY29uc3QgeyByZXR1cm4gbV9t
YWluRnJhbWVDb250ZW50c1NpemU7IH0KKyAgICB2b2lkIHNldE1haW5GcmFtZUNvbnRlbnRzU2l6
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKSB7IG1fbWFpbkZyYW1lQ29udGVudHNTaXpl
ID0gc2l6ZTsgfTsKKworICAgIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VTY2FsZUZhY3RvcjsgfQorICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKGRvdWJs
ZSBwYWdlU2NhbGVGYWN0b3IpIHsgbV9wYWdlU2NhbGVGYWN0b3IgPSBwYWdlU2NhbGVGYWN0b3I7
IH0KKworICAgIGRvdWJsZSBtaW5pbXVtU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX21p
bmltdW1TY2FsZUZhY3RvcjsgfQorICAgIHZvaWQgc2V0TWluaW11bVNjYWxlRmFjdG9yKGRvdWJs
ZSBzY2FsZSkgeyBtX21pbmltdW1TY2FsZUZhY3RvciA9IHNjYWxlOyB9CisKKyAgICBkb3VibGUg
bWF4aW11bVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtU2NhbGVGYWN0b3I7
IH0KKyAgICB2b2lkIHNldE1heGltdW1TY2FsZUZhY3Rvcihkb3VibGUgc2NhbGUpIHsgbV9tYXhp
bXVtU2NhbGVGYWN0b3IgPSBzY2FsZTsgfQorCisgICAgYm9vbCBhbGxvd3NVc2VyU2NhbGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzVXNlclNjYWxpbmc7IH0KKyAgICB2b2lkIHNldEFsbG93
c1VzZXJTY2FsaW5nKGJvb2wgYWxsb3dzVXNlclNjYWxpbmcpIHsgbV9hbGxvd3NVc2VyU2NhbGlu
ZyA9IGFsbG93c1VzZXJTY2FsaW5nOyB9CisKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6UGxhdGZvcm1MYXllcklEIG1fcm9vdExheWVySUQ7CiAgICAgSGFzaE1hcDxXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQsIExheWVyUHJvcGVydGllcz4gbV9j
aGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzOwogICAgIFZlY3RvcjxMYXllckNyZWF0aW9uUHJvcGVydGll
cz4gbV9jcmVhdGVkTGF5ZXJzOwogICAgIFZlY3RvcjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQ
bGF0Zm9ybUxheWVySUQ+IG1fZGVzdHJveWVkTGF5ZXJJRHM7CisgICAgV2ViQ29yZTo6SW50U2l6
ZSBtX21haW5GcmFtZUNvbnRlbnRzU2l6ZTsKKyAgICBkb3VibGUgbV9wYWdlU2NhbGVGYWN0b3I7
CisgICAgZG91YmxlIG1fbWluaW11bVNjYWxlRmFjdG9yOworICAgIGRvdWJsZSBtX21heGltdW1T
Y2FsZUZhY3RvcjsKKyAgICBib29sIG1fYWxsb3dzVXNlclNjYWxpbmc7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IDI3NjlhYjhmM2FhMDA0NmNmMWQ5ZGI0
ZjQ3ZDc1ZmQ4MWM2ZWM5MzIuLjUyZjYxMzA2OTMwM2RjNDRkMDAxZDEwNmFmNWM5NTI1NzljYWQz
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtMzQ4LDYgKzM0OCwxMSBAQCB2b2lkIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgZW5jb2RlciA8PCBtX2NyZWF0ZWRMYXllcnM7CiAgICAgZW5jb2RlciA8PCBtX2No
YW5nZWRMYXllclByb3BlcnRpZXM7CiAgICAgZW5jb2RlciA8PCBtX2Rlc3Ryb3llZExheWVySURz
OworICAgIGVuY29kZXIgPDwgbV9tYWluRnJhbWVDb250ZW50c1NpemU7CisgICAgZW5jb2RlciA8
PCBtX3BhZ2VTY2FsZUZhY3RvcjsKKyAgICBlbmNvZGVyIDw8IG1fbWluaW11bVNjYWxlRmFjdG9y
OworICAgIGVuY29kZXIgPDwgbV9tYXhpbXVtU2NhbGVGYWN0b3I7CisgICAgZW5jb2RlciA8PCBt
X2FsbG93c1VzZXJTY2FsaW5nOwogfQogCiBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uJiByZXN1bHQpCkBAIC0zNzEsNiArMzc2LDIxIEBAIGJvb2wgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVt
b3RlTGF5CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQubV9tYWluRnJhbWVDb250ZW50c1NpemUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3BhZ2VTY2FsZUZh
Y3RvcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0Lm1fbWluaW11bVNjYWxlRmFjdG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9tYXhpbXVtU2NhbGVGYWN0b3IpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2Fs
bG93c1VzZXJTY2FsaW5nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCmluZGV4IDQ5Zjk5ZmM2YmVkNTRlMjI0MjFiY2RjYzBjNDZmMDUyNDlh
YWE4NjUuLjIyNTVmZGNkMTUwYTFmMjI5OTFlMTU0MGI2NDgwNmY4ZDE3ZWU0YmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aApAQCAtNjIsNyArNjIsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hh
bmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFt
ZVByb3h5JiwgV2ViU2VjdXJpdHlPcmlnaW4mLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
UHJveHkmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5G
cmFtZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50U2l6ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1
cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3Bv
cnRBdHRyaWJ1dGVzJikgb3ZlcnJpZGU7CkBAIC0xMDEsMTEgKzEwMCw5IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5h
dGl2ZVdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDdXN0
b21Td2lwZVZpZXdzKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFpbkRvY3VtZW50
RGlkUmVjZWl2ZU1vYmlsZURvY1R5cGUoKSBvdmVycmlkZTsKLQogICAgIHZpcnR1YWwgdm9pZCBk
aWRHZXRUYXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYgaGln
aGxpZ2h0ZWRRdWFkcywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbVJpZ2h0
UmFkaXVzKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRBcmd1bWVudHMo
Y29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIHZpZXdwb3J0QXJndW1lbnRzKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TGF5ZXJUcmVlKGNvbnN0IFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRB
c3Npc3RpbmdOb2RlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBib29sIGhhc05leHRGb2N1c2Fi
bGUsIGJvb2wgaGFzUHJldmlvdXNGb2N1c2FibGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBzdG9wQXNzaXN0aW5nTm9kZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCA3Nzc1ZWY2YWE5
MDEzMzU0YzVkMjc5ZWE0NjE4NjFlMmNhNzM1NWFlLi44ZTFhMmZmNjdiYmQyMzU2MTZkOWUwOGE2
NTM0ZGY4MDgwNzVmNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMTQ3LDExICsxNDcsNiBAQCB2b2lkIFBh
Z2VDbGllbnRJbXBsOjpkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKCkKICAgICBbbV92aWV3IF9k
aWRDb21taXRMb2FkRm9yTWFpbkZyYW1lXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlk
Q2hhbmdlQ29udGVudFNpemUoY29uc3QgSW50U2l6ZSYgY29udGVudHNTaXplKQotewotICAgIFtt
X3ZpZXcgX2RpZENoYW5nZUNvbnRlbnRTaXplOmNvbnRlbnRzU2l6ZV07Ci19Ci0KIHZvaWQgUGFn
ZUNsaWVudEltcGw6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CkBAIC0zNDQsMTkgKzMzOSwxNCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpjbGVhckN1
c3RvbVN3aXBlVmlld3MoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFnZUNs
aWVudEltcGw6Om1haW5Eb2N1bWVudERpZFJlY2VpdmVNb2JpbGVEb2NUeXBlKCkKLXsKLSAgICBb
bV92aWV3IF9kaWRSZWNlaXZlTW9iaWxlRG9jVHlwZUZvck1haW5GcmFtZV07Ci19Ci0KIHZvaWQg
UGFnZUNsaWVudEltcGw6OmRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpGbG9hdFF1YWQ+JiBoaWdobGlnaHRlZFF1YWRzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0
b3BMZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpCiB7CiAgICAgW21fdmlldyBfZGlkR2V0VGFwSGlnaGxp
Z2h0Rm9yUmVxdWVzdDpyZXF1ZXN0SUQgY29sb3I6Y29sb3IgcXVhZHM6aGlnaGxpZ2h0ZWRRdWFk
cyB0b3BMZWZ0UmFkaXVzOnRvcExlZnRSYWRpdXMgdG9wUmlnaHRSYWRpdXM6dG9wUmlnaHRSYWRp
dXMgYm90dG9tTGVmdFJhZGl1czpib3R0b21MZWZ0UmFkaXVzIGJvdHRvbVJpZ2h0UmFkaXVzOmJv
dHRvbVJpZ2h0UmFkaXVzXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmll
d3BvcnRBcmd1bWVudHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIHZpZXdwb3J0
QXJndW1lbnRzKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ29tbWl0TGF5ZXJUcmVlKGNvbnN0
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiBsYXllclRyZWVUcmFuc2FjdGlvbikKIHsKLSAg
ICBbbV92aWV3IF9kaWRDaGFuZ2VWaWV3cG9ydEFyZ3VtZW50czp2aWV3cG9ydEFyZ3VtZW50c107
CisgICAgW21fdmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOmxheWVyVHJlZVRyYW5zYWN0aW9uXTsK
IH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c3RhcnRBc3Npc3RpbmdOb2RlKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBib29sLCBib29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9pb3MvV0tDb250ZW50Vmlldy5oCmluZGV4IDFjZTI0ZDYyYTJlYTQxYTY3MjQ0YTM5ZjUy
NzA4YmM1YzJmNzcwODguLmNkYzg4NmViOGE3NWIzZThmMjk0ZGU1NGFhNTcxNGE4YmYwZjNhMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3
LmgKQEAgLTM5LDEzICszOSwxNCBAQCB0eXBlZGVmIE5TX0VOVU0odW5zaWduZWQsIFdLQ29udGVu
dFR5cGUpCiAgICAgSW1hZ2UKIH07CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb247Cit9CisKIEBwcm90b2NvbCBXS0NvbnRlbnRWaWV3RGVsZWdh
dGUgPE5TT2JqZWN0PgogQG9wdGlvbmFsCi0tICh2b2lkKWNvbnRlbnRWaWV3OihXS0NvbnRlbnRW
aWV3ICopY29udGVudFZpZXcgY29udGVudHNTaXplRGlkQ2hhbmdlOihDR1NpemUpbmV3U2l6ZTsK
IC0gKHZvaWQpY29udGVudFZpZXdEaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lOihXS0NvbnRlbnRW
aWV3ICopY29udGVudFZpZXc7Ci0tICh2b2lkKWNvbnRlbnRWaWV3RGlkUmVjZWl2ZU1vYmlsZURv
Y1R5cGU6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldzsKLS0gKHZvaWQpY29udGVudFZpZXc6
KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldyBkaWRDaGFuZ2VWaWV3cG9ydEFyZ3VtZW50c1Np
emU6KENHU2l6ZSluZXdTaXplIGluaXRpYWxTY2FsZTooZmxvYXQpaW5pdGlhbFNjYWxlIG1pbmlt
dW1TY2FsZTooZmxvYXQpbWluaW11bVNjYWxlIG1heGltdW1TY2FsZTooZmxvYXQpbWF4aW11bVNj
YWxlIGFsbG93c1VzZXJTY2FsaW5nOihmbG9hdClhbGxvd3NVc2VyU2NhbGluZzsKLQorLSAodm9p
ZCljb250ZW50VmlldzooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3IGRpZENvbW1pdExheWVy
VHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVl
VHJhbnNhY3Rpb247CiBAZW5kCiAKIFdLX0FQSV9DTEFTUwpAQCAtNjYsMTAgKzY3LDEyIEBAIFdL
X0FQSV9DTEFTUwogCiAtICh2b2lkKXNldE1pbmltdW1TaXplOihDR1NpemUpc2l6ZTsKIC0gKHZv
aWQpc2V0Vmlld3BvcnRTaXplOihDR1NpemUpc2l6ZTsKKy0gKHZvaWQpc2V0TWluaW11bUxheW91
dFNpemU6KENHU2l6ZSlzaXplOwogCiAtICh2b2lkKWRpZEZpbmlzaFNjcm9sbFRvOihDR1BvaW50
KWNvbnRlbnRPZmZzZXQ7CiAtICh2b2lkKWRpZFNjcm9sbFRvOihDR1BvaW50KWNvbnRlbnRPZmZz
ZXQ7CiAtICh2b2lkKWRpZFpvb21Ub1NjYWxlOihDR0Zsb2F0KXNjYWxlOwogLSAodm9pZCl3aWxs
U3RhcnRab29tT3JTY3JvbGw7CistICh2b2lkKXdpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29tOwog
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0Nv
bnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50
Vmlldy5tbQppbmRleCA1NmMwMDhjYWM3ZTA2ZGYxYTQwNjI0YmFiOWFmZmEzY2UwZDRmYzg0Li4w
MjI2ODA5M2Y0N2Y3ODA4MmEyZTg1YzkyYWJmZmE3ZTNjMGU0M2IyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTIwOSw2ICsy
MDksMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBbc2VsZiBfdXBkYXRlVmlld0V4
cG9zZWRSZWN0XTsKIH0KIAorLSAodm9pZClzZXRNaW5pbXVtTGF5b3V0U2l6ZTooQ0dTaXplKXNp
emUKK3sKKyAgICBfcGFnZS0+c2V0VmlydHVhbFZpZXdwb3J0TWluaW11bUxheW91dFNpemUoSW50
U2l6ZShDR0NlaWxpbmcoc2l6ZS53aWR0aCksIENHQ2VpbGluZyhzaXplLmhlaWdodCkpKTsKK30K
KwogLSAodm9pZClkaWRGaW5pc2hTY3JvbGxUbzooQ0dQb2ludCljb250ZW50T2Zmc2V0CiB7CiAg
ICAgX2N1cnJlbnRFeHBvc2VkUmVjdFBvc2l0aW9uID0gY29udGVudE9mZnNldDsKQEAgLTIzMSw2
ICsyMzYsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBbX2ludGVyYWN0aW9uVmll
dyBfd2lsbFN0YXJ0U2Nyb2xsaW5nT3Jab29taW5nXTsKIH0KIAorLSAodm9pZCl3aWxsU3RhcnRV
c2VyVHJpZ2dlcmVkWm9vbQoreworICAgIF9wYWdlLT53aWxsU3RhcnRVc2VyVHJpZ2dlcmVkWm9v
bWluZygpOworfQorCiAtICh2b2lkKWRpZFpvb21Ub1NjYWxlOihDR0Zsb2F0KXNjYWxlCiB7CiAg
ICAgX3BhZ2UtPmRpZEZpbmlzaFpvb21pbmcoc2NhbGUpOwpAQCAtMzA0LDI2ICszMTQsMTYgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICAgICAgW19kZWxlZ2F0ZSBjb250ZW50Vmlld0Rp
ZENvbW1pdExvYWRGb3JNYWluRnJhbWU6c2VsZl07CiB9CiAKLS0gKHZvaWQpX2RpZENoYW5nZUNv
bnRlbnRTaXplOihDR1NpemUpY29udGVudHNTaXplCistICh2b2lkKV9kaWRDb21taXRMYXllclRy
ZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVyVHJlZVRy
YW5zYWN0aW9uCiB7CisgICAgQ0dTaXplIGNvbnRlbnRzU2l6ZSA9IGxheWVyVHJlZVRyYW5zYWN0
aW9uLm1haW5GcmFtZUNvbnRlbnRzU2l6ZSgpOworCiAgICAgW3NlbGYgc2V0Qm91bmRzOntDR1Bv
aW50WmVybywgY29udGVudHNTaXplfV07CiAgICAgW19pbnRlcmFjdGlvblZpZXcgc2V0RnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCBjb250ZW50c1NpemUud2lkdGgsIGNvbnRlbnRzU2l6ZS5oZWlnaHQp
XTsKICAgICBbX3Jvb3RDb250ZW50VmlldyBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIGNvbnRl
bnRzU2l6ZS53aWR0aCwgY29udGVudHNTaXplLmhlaWdodCldOwogCi0gICAgaWYgKFtfZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihjb250ZW50Vmlldzpjb250ZW50c1NpemVE
aWRDaGFuZ2U6KV0pCi0gICAgICAgIFtfZGVsZWdhdGUgY29udGVudFZpZXc6c2VsZiBjb250ZW50
c1NpemVEaWRDaGFuZ2U6Y29udGVudHNTaXplXTsKLX0KLQotLSAodm9pZClfZGlkUmVjZWl2ZU1v
YmlsZURvY1R5cGVGb3JNYWluRnJhbWUKLXsKLSAgICBpZiAoW19kZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRlbnRWaWV3RGlkUmVjZWl2ZU1vYmlsZURvY1R5cGU6KV0p
Ci0gICAgICAgIFtfZGVsZWdhdGUgY29udGVudFZpZXdEaWRSZWNlaXZlTW9iaWxlRG9jVHlwZTpz
ZWxmXTsKLX0KLQotLSAodm9pZClfZGlkQ2hhbmdlVmlld3BvcnRBcmd1bWVudHM6KGNvbnN0IFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJilhcmd1bWVudHMKLXsKLSAgICBpZiAoW19kZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRlbnRWaWV3OmRpZENoYW5nZVZpZXdw
b3J0QXJndW1lbnRzU2l6ZTppbml0aWFsU2NhbGU6bWluaW11bVNjYWxlOm1heGltdW1TY2FsZTph
bGxvd3NVc2VyU2NhbGluZzopXSkKLSAgICAgICAgW19kZWxlZ2F0ZSBjb250ZW50VmlldzpzZWxm
IGRpZENoYW5nZVZpZXdwb3J0QXJndW1lbnRzU2l6ZTpDR1NpemVNYWtlKGFyZ3VtZW50cy53aWR0
aCwgYXJndW1lbnRzLmhlaWdodCkgaW5pdGlhbFNjYWxlOmFyZ3VtZW50cy56b29tIG1pbmltdW1T
Y2FsZTphcmd1bWVudHMubWluWm9vbSBtYXhpbXVtU2NhbGU6YXJndW1lbnRzLm1heFpvb20gYWxs
b3dzVXNlclNjYWxpbmc6YXJndW1lbnRzLnVzZXJab29tXTsKKyAgICBpZiAoW19kZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRlbnRWaWV3OmRpZENvbW1pdExheWVyVHJl
ZTopXSkKKyAgICAgICAgW19kZWxlZ2F0ZSBjb250ZW50VmlldzpzZWxmIGRpZENvbW1pdExheWVy
VHJlZTpsYXllclRyZWVUcmFuc2FjdGlvbl07CiB9CiAKIC0gKHZvaWQpX2RpZEdldFRhcEhpZ2hs
aWdodEZvclJlcXVlc3Q6KHVpbnQ2NF90KXJlcXVlc3RJRCBjb2xvcjooY29uc3QgQ29sb3ImKWNv
bG9yIHF1YWRzOihjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYpaGlnaGxpZ2h0ZWRRdWFkcyB0b3BM
ZWZ0UmFkaXVzOihjb25zdCBJbnRTaXplJil0b3BMZWZ0UmFkaXVzIHRvcFJpZ2h0UmFkaXVzOihj
b25zdCBJbnRTaXplJil0b3BSaWdodFJhZGl1cyBib3R0b21MZWZ0UmFkaXVzOihjb25zdCBJbnRT
aXplJilib3R0b21MZWZ0UmFkaXVzIGJvdHRvbVJpZ2h0UmFkaXVzOihjb25zdCBJbnRTaXplJili
b3R0b21SaWdodFJhZGl1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tDb250ZW50Vmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJuYWwuaAppbmRleCAyYmY4YTBkZDZlNzE1YjdmNjBh
YjY0YWE0NDIzM2FhZjgzOTBmMzA2Li4wNGNiZmQ4YWVlZDE3NDVjZDE0Y2Y1MjBiMDY5MmFkYTc5
ZjQ2ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJuYWwuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7CiBjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UHJveHk7CiBjbGFzcyBMYXllclRyZWVDb250ZXh0OworY2xhc3MgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb247CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVBy
b3h5OwogY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CkBAIC01Nyw5ICs1OCw3IEBAIHN0cnVjdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjsKIC0gKHZvaWQpX3NldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdSb290TGF5ZXI6KENBTGF5ZXIgKilyb290TGF5ZXI7CiAKIC0gKHZvaWQpX2Rp
ZENvbW1pdExvYWRGb3JNYWluRnJhbWU7Ci0tICh2b2lkKV9kaWRDaGFuZ2VDb250ZW50U2l6ZToo
Q0dTaXplKWNvbnRlbnRzU2l6ZTsKLS0gKHZvaWQpX2RpZFJlY2VpdmVNb2JpbGVEb2NUeXBlRm9y
TWFpbkZyYW1lOwotLSAodm9pZClfZGlkQ2hhbmdlVmlld3BvcnRBcmd1bWVudHM6KGNvbnN0IFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJil2aWV3cG9ydEFyZ3VtZW50czsKKy0gKHZvaWQpX2Rp
ZENvbW1pdExheWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
biYpbGF5ZXJUcmVlVHJhbnNhY3Rpb247CiAKIC0gKHZvaWQpX2RpZEdldFRhcEhpZ2hsaWdodEZv
clJlcXVlc3Q6KHVpbnQ2NF90KXJlcXVlc3RJRCBjb2xvcjooY29uc3QgV2ViQ29yZTo6Q29sb3Im
KWNvbG9yIHF1YWRzOihjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYpaGlnaGxpZ2h0
ZWRRdWFkcyB0b3BMZWZ0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJil0b3BMZWZ0UmFk
aXVzIHRvcFJpZ2h0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJil0b3BSaWdodFJhZGl1
cyBib3R0b21MZWZ0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJilib3R0b21MZWZ0UmFk
aXVzIGJvdHRvbVJpZ2h0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJilib3R0b21SaWdo
dFJhZGl1czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9T
Lm1tCmluZGV4IDU1MzVmMmQ0N2I2NDBmNjUzNWRjM2RmOTZlZmIwOTdiZmY0MjcwMDEuLmY3NWZh
NmZmNjRhMWUyMDVlMWIxMTc0YjRlODgxYmYwNGM1MzZkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS1ZpZXdJT1MubW0KQEAgLTMyLDE0ICszMiwxMCBAQAogI2lt
cG9ydCAiV0tTY3JvbGxWaWV3LmgiCiAjaW1wb3J0IDxVSUtpdC9VSVNjcmVlbi5oPgogI2ltcG9y
dCA8VUlLaXQvVUlTY3JvbGxWaWV3X1ByaXZhdGUuaD4KLSNpbXBvcnQgPFVJS2l0L19VSVdlYlZp
ZXdwb3J0SGFuZGxlci5oPgorI2ltcG9ydCA8V2ViS2l0Mi9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1zdGF0aWMgY29uc3QgZmxvYXQg
bWluV2ViVmlld1NjYWxlID0gMC4yNTsKLXN0YXRpYyBjb25zdCBmbG9hdCBtYXhXZWJWaWV3U2Nh
bGUgPSA1Owotc3RhdGljIHN0cnVjdCBfVUlXZWJWaWV3cG9ydENvbmZpZ3VyYXRpb24gc3RhbmRh
cmRWaWV3cG9ydENvbmZpZ3VyYXRpb24gPSB7IHsgVUlXZWJWaWV3cG9ydFN0YW5kYXJkVmlld3Bv
cnRXaWR0aCwgVUlXZWJWaWV3cG9ydEdyb3dzQW5kU2hyaW5rc1RvRml0SGVpZ2h0IH0sIFVJV2Vi
Vmlld3BvcnRTY2FsZUZvclNjYWxlc1RvRml0LCBtaW5XZWJWaWV3U2NhbGUsIG1heFdlYlZpZXdT
Y2FsZSwgdHJ1ZSB9OwotCi1AaW50ZXJmYWNlIFdLVmlldyAoKSA8VUlTY3JvbGxWaWV3RGVsZWdh
dGUsIFdLQ29udGVudFZpZXdEZWxlZ2F0ZSwgX1VJV2ViVmlld3BvcnRIYW5kbGVyRGVsZWdhdGU+
CitAaW50ZXJmYWNlIFdLVmlldyAoKSA8VUlTY3JvbGxWaWV3RGVsZWdhdGUsIFdLQ29udGVudFZp
ZXdEZWxlZ2F0ZT4KIC0gKHZvaWQpX3NldERvY3VtZW50U2NhbGU6KENHRmxvYXQpbmV3U2NhbGU7
CiBAZW5kCiAKQEAgLTQ3LDkgKzQzLDkgQEAgc3RhdGljIHN0cnVjdCBfVUlXZWJWaWV3cG9ydENv
bmZpZ3VyYXRpb24gc3RhbmRhcmRWaWV3cG9ydENvbmZpZ3VyYXRpb24gPSB7IHsgVUkKICAgICBS
ZXRhaW5QdHI8V0tTY3JvbGxWaWV3PiBfc2Nyb2xsVmlldzsKICAgICBSZXRhaW5QdHI8V0tDb250
ZW50Vmlldz4gX2NvbnRlbnRWaWV3OwogCi0gICAgQk9PTCBfdXNlckhhc0NoYW5nZWRQYWdlU2Nh
bGU7Ci0gICAgUmV0YWluUHRyPF9VSVdlYlZpZXdwb3J0SGFuZGxlcj4gX3ZpZXdwb3J0SGFuZGxl
cjsKKyAgICBCT09MIF9pc1dhaXRpbmdGb3JOZXdMYXllclRyZWVBZnRlckRpZENvbW1pdExvYWQ7
CiAgICAgQk9PTCBfaGFzU3RhdGljTWluaW11bUxheW91dFNpemU7CisgICAgQ0dTaXplIF9taW5p
bXVtTGF5b3V0U2l6ZU92ZXJyaWRlOwogfQogCiAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVy
ICopY29kZXIKQEAgLTEwMyw4MiArOTksMjcgQEAgc3RhdGljIHN0cnVjdCBfVUlXZWJWaWV3cG9y
dENvbmZpZ3VyYXRpb24gc3RhbmRhcmRWaWV3cG9ydENvbmZpZ3VyYXRpb24gPSB7IHsgVUkKIAog
I3ByYWdtYSBtYXJrIFdLQ29udGVudFZpZXdEZWxlZ2F0ZQogCi0tICh2b2lkKWNvbnRlbnRWaWV3
OihXS0NvbnRlbnRWaWV3ICopY29udGVudFZpZXcgY29udGVudHNTaXplRGlkQ2hhbmdlOihDR1Np
emUpbmV3U2l6ZQotewotICAgIENHRmxvYXQgem9vbVNjYWxlID0gW19zY3JvbGxWaWV3IHpvb21T
Y2FsZV07Ci0gICAgQ0dTaXplIGNvbnRlbnRzU2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzID0g
Q0dTaXplTWFrZShuZXdTaXplLndpZHRoICogem9vbVNjYWxlLCBuZXdTaXplLmhlaWdodCAqIHpv
b21TY2FsZSk7Ci0gICAgW19zY3JvbGxWaWV3IHNldENvbnRlbnRTaXplOmNvbnRlbnRzU2l6ZUlu
U2Nyb2xsVmlld0Nvb3JkaW5hdGVzXTsKLQotICAgIFtfdmlld3BvcnRIYW5kbGVyIHVwZGF0ZTpe
ewotICAgICAgICAgW192aWV3cG9ydEhhbmRsZXIgc2V0RG9jdW1lbnRCb3VuZHM6e0NHUG9pbnRa
ZXJvLCBuZXdTaXplfV07Ci0gICAgfV07Ci19Ci0KIC0gKHZvaWQpY29udGVudFZpZXdEaWRDb21t
aXRMb2FkRm9yTWFpbkZyYW1lOihXS0NvbnRlbnRWaWV3ICopY29udGVudFZpZXcKIHsKLSAgICBf
dXNlckhhc0NoYW5nZWRQYWdlU2NhbGUgPSBOTzsKLQotICAgIFdLQ29udGVudFR5cGUgY29udGVu
dFR5cGUgPSBbX2NvbnRlbnRWaWV3IGNvbnRlbnRUeXBlXTsKLSAgICBbX3ZpZXdwb3J0SGFuZGxl
ciB1cGRhdGU6XnsKLSAgICAgICAgW192aWV3cG9ydEhhbmRsZXIgY2xlYXJXZWJLaXRWaWV3cG9y
dENvbmZpZ3VyYXRpb25GbGFnc107Ci0gICAgICAgIHN0cnVjdCBfVUlXZWJWaWV3cG9ydENvbmZp
Z3VyYXRpb24gY29uZmlndXJhdGlvbiA9IHN0YW5kYXJkVmlld3BvcnRDb25maWd1cmF0aW9uOwot
Ci0gICAgICAgIGlmIChjb250ZW50VHlwZSA9PSBQbGFpblRleHQpIHsKLSAgICAgICAgICAgIENH
RmxvYXQgc2NyZWVuV2lkdGggPSBbW1VJU2NyZWVuIG1haW5TY3JlZW5dIGJvdW5kc10uc2l6ZS53
aWR0aDsKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2l6ZS53aWR0aCA9IHNjcmVlbldpZHRo
OwotICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRUeXBlID09IFdLQ29udGVudFR5cGU6OkltYWdl
KQotICAgICAgICAgICAgY29uZmlndXJhdGlvbi5taW5pbXVtU2NhbGUgPSAwLjAxOwotCi0gICAg
ICAgIFtfdmlld3BvcnRIYW5kbGVyIHJlc2V0Vmlld3BvcnRDb25maWd1cmF0aW9uOiZjb25maWd1
cmF0aW9uXTsKLSAgICB9XTsKLX0KLQotLSAodm9pZCljb250ZW50Vmlld0RpZFJlY2VpdmVNb2Jp
bGVEb2NUeXBlOihXS0NvbnRlbnRWaWV3ICopY29udGVudFZpZXcKLXsKLSAgICBbX3ZpZXdwb3J0
SGFuZGxlciB1cGRhdGU6XnsKLSAgICAgICAgc3RydWN0IF9VSVdlYlZpZXdwb3J0Q29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uID0gc3RhbmRhcmRWaWV3cG9ydENvbmZpZ3VyYXRpb247Ci0gICAg
ICAgIGNvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlID0gMTsKLSAgICAgICAgY29uZmlndXJhdGlv
bi5zaXplID0gQ0dTaXplTWFrZSgzMjAuMCwgVUlXZWJWaWV3cG9ydEdyb3dzQW5kU2hyaW5rc1Rv
Rml0SGVpZ2h0KTsKLSAgICAgICAgW192aWV3cG9ydEhhbmRsZXIgcmVzZXRWaWV3cG9ydENvbmZp
Z3VyYXRpb246JmNvbmZpZ3VyYXRpb25dOwotICAgIH1dOworICAgIF9pc1dhaXRpbmdGb3JOZXdM
YXllclRyZWVBZnRlckRpZENvbW1pdExvYWQgPSBZRVM7CiB9CiAKLS0gKHZvaWQpY29udGVudFZp
ZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldyBkaWRDaGFuZ2VWaWV3cG9ydEFyZ3VtZW50
c1NpemU6KENHU2l6ZSluZXdTaXplIGluaXRpYWxTY2FsZTooZmxvYXQpaW5pdGlhbFNjYWxlIG1p
bmltdW1TY2FsZTooZmxvYXQpbWluaW11bVNjYWxlIG1heGltdW1TY2FsZTooZmxvYXQpbWF4aW11
bVNjYWxlIGFsbG93c1VzZXJTY2FsaW5nOihmbG9hdClhbGxvd3NVc2VyU2NhbGluZwotewotICAg
IFtfdmlld3BvcnRIYW5kbGVyIHVwZGF0ZTpeewotICAgICAgICBbX3ZpZXdwb3J0SGFuZGxlciBh
cHBseVdlYktpdFZpZXdwb3J0QXJndW1lbnRzU2l6ZTpuZXdTaXplCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFNjYWxlOmluaXRpYWxTY2FsZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW1TY2Fs
ZTptaW5pbXVtU2NhbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYXhpbXVtU2NhbGU6bWF4aW11bVNjYWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFsbG93c1VzZXJTY2FsaW5nOmFsbG93c1VzZXJTY2FsaW5nXTsKLSAg
ICB9XTsKLX0KLQotI3ByYWdtYSBtYXJrIC0gX1VJV2ViVmlld3BvcnRIYW5kbGVyRGVsZWdhdGUK
LQotLSAodm9pZCl2aWV3cG9ydEhhbmRsZXJEaWRDaGFuZ2VTY2FsZXM6KF9VSVdlYlZpZXdwb3J0
SGFuZGxlciAqKXZpZXdwb3J0SGFuZGxlcgorLSAodm9pZCljb250ZW50VmlldzooV0tDb250ZW50
VmlldyAqKWNvbnRlbnRWaWV3IGRpZENvbW1pdExheWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlVHJhbnNhY3Rpb24KIHsKLSAgICBBU1NF
UlQodmlld3BvcnRIYW5kbGVyID09IF92aWV3cG9ydEhhbmRsZXIpOwotICAgIFtfc2Nyb2xsVmll
dyBzZXRNaW5pbXVtWm9vbVNjYWxlOnZpZXdwb3J0SGFuZGxlci5taW5pbXVtU2NhbGVdOwotICAg
IFtfc2Nyb2xsVmlldyBzZXRNYXhpbXVtWm9vbVNjYWxlOnZpZXdwb3J0SGFuZGxlci5tYXhpbXVt
U2NhbGVdOwotICAgIFtfc2Nyb2xsVmlldyBzZXRab29tRW5hYmxlZDp2aWV3cG9ydEhhbmRsZXIu
YWxsb3dzVXNlclNjYWxpbmddOwotCi0gICAgaWYgKCFfdXNlckhhc0NoYW5nZWRQYWdlU2NhbGUp
Ci0gICAgICAgIFtzZWxmIF9zZXREb2N1bWVudFNjYWxlOnZpZXdwb3J0SGFuZGxlci5pbml0aWFs
U2NhbGVdOwotICAgIGVsc2UgewotICAgICAgICBDR0Zsb2F0IGN1cnJlbnRTY2FsZSA9IFtfc2Ny
b2xsVmlldyB6b29tU2NhbGVdOwotICAgICAgICBDR0Zsb2F0IHZhbGlkU2NhbGUgPSBzdGQ6Om1h
eChzdGQ6Om1pbihjdXJyZW50U2NhbGUsIHN0YXRpY19jYXN0PENHRmxvYXQ+KHZpZXdwb3J0SGFu
ZGxlci5tYXhpbXVtU2NhbGUpKSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4odmlld3BvcnRIYW5kbGVy
Lm1pbmltdW1TY2FsZSkpOwotICAgICAgICBbc2VsZiBfc2V0RG9jdW1lbnRTY2FsZTp2YWxpZFNj
YWxlXTsKKyAgICBbX3Njcm9sbFZpZXcgc2V0TWluaW11bVpvb21TY2FsZTpsYXllclRyZWVUcmFu
c2FjdGlvbi5taW5pbXVtU2NhbGVGYWN0b3IoKV07CisgICAgW19zY3JvbGxWaWV3IHNldE1heGlt
dW1ab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ubWF4aW11bVNjYWxlRmFjdG9yKCldOwor
ICAgIFtfc2Nyb2xsVmlldyBzZXRab29tRW5hYmxlZDpsYXllclRyZWVUcmFuc2FjdGlvbi5hbGxv
d3NVc2VyU2NhbGluZygpXTsKKyAgICBpZiAoIVtfc2Nyb2xsVmlldyBpc1pvb21pbmddICYmICFb
X3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddKQorICAgICAgICBbX3Njcm9sbFZpZXcgc2V0Wm9v
bVNjYWxlOmxheWVyVHJlZVRyYW5zYWN0aW9uLnBhZ2VTY2FsZUZhY3RvcigpXTsKKworICAgIGlm
IChfaXNXYWl0aW5nRm9yTmV3TGF5ZXJUcmVlQWZ0ZXJEaWRDb21taXRMb2FkKSB7CisgICAgICAg
IFVJRWRnZUluc2V0cyBpbnNldCA9IFtfc2Nyb2xsVmlldyBjb250ZW50SW5zZXRdOworICAgICAg
ICBbX3Njcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpDR1BvaW50TWFrZSgtaW5zZXQubGVmdCwg
LWluc2V0LnRvcCldOworICAgICAgICBfaXNXYWl0aW5nRm9yTmV3TGF5ZXJUcmVlQWZ0ZXJEaWRD
b21taXRMb2FkID0gTk87CiAgICAgfQotfQogCi0tICh2b2lkKXZpZXdwb3J0SGFuZGxlcjooX1VJ
V2ViVmlld3BvcnRIYW5kbGVyICopdmlld3BvcnRIYW5kbGVyIGRpZENoYW5nZVZpZXdwb3J0U2l6
ZTooQ0dTaXplKW5ld1NpemUKLXsKLSAgICBBU1NFUlQodmlld3BvcnRIYW5kbGVyID09IF92aWV3
cG9ydEhhbmRsZXIpOwotICAgIFtfY29udGVudFZpZXcgc2V0Vmlld3BvcnRTaXplOm5ld1NpemVd
OwogfQogCi0KICNwcmFnbWEgbWFyayAtIFVJU2Nyb2xsVmlld0RlbGVnYXRlCiAKIC0gKFVJVmll
dyAqKXZpZXdGb3Jab29taW5nSW5TY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3
CkBAIC0xOTAsNyArMTMxLDcgQEAgc3RhdGljIHN0cnVjdCBfVUlXZWJWaWV3cG9ydENvbmZpZ3Vy
YXRpb24gc3RhbmRhcmRWaWV3cG9ydENvbmZpZ3VyYXRpb24gPSB7IHsgVUkKIC0gKHZvaWQpc2Ny
b2xsVmlld1dpbGxCZWdpblpvb21pbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZp
ZXc6KFVJVmlldyAqKXZpZXcKIHsKICAgICBpZiAoc2Nyb2xsVmlldy5waW5jaEdlc3R1cmVSZWNv
Z25pemVyLnN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuKQotICAgICAgICBf
dXNlckhhc0NoYW5nZWRQYWdlU2NhbGUgPSBZRVM7CisgICAgICAgIFtfY29udGVudFZpZXcgd2ls
bFN0YXJ0VXNlclRyaWdnZXJlZFpvb21dOwogICAgIFtfY29udGVudFZpZXcgd2lsbFN0YXJ0Wm9v
bU9yU2Nyb2xsXTsKIH0KIApAQCAtMjU1LDIwICsxOTYsMTQgQEAgc3RhdGljIHN0cnVjdCBfVUlX
ZWJWaWV3cG9ydENvbmZpZ3VyYXRpb24gc3RhbmRhcmRWaWV3cG9ydENvbmZpZ3VyYXRpb24gPSB7
IHsgVUkKICAgICBbX2NvbnRlbnRWaWV3IHNldEZyYW1lOmJvdW5kc107CiAgICAgW19zY3JvbGxW
aWV3IGFkZFN1YnZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKIAotICAgIF92aWV3cG9ydEhhbmRs
ZXIgPSBhZG9wdE5TKFtbX1VJV2ViVmlld3BvcnRIYW5kbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAg
W192aWV3cG9ydEhhbmRsZXIgc2V0RGVsZWdhdGU6c2VsZl07Ci0KICAgICBbc2VsZiBfZnJhbWVP
ckJvdW5kc0NoYW5nZWRdOwogfQogCiAtICh2b2lkKV9mcmFtZU9yQm91bmRzQ2hhbmdlZAogewog
ICAgIENHUmVjdCBib3VuZHMgPSBbc2VsZiBib3VuZHNdOwotICAgIGlmICghX2hhc1N0YXRpY01p
bmltdW1MYXlvdXRTaXplKSB7Ci0gICAgICAgIFtfdmlld3BvcnRIYW5kbGVyIHVwZGF0ZTpeewot
ICAgICAgICAgICAgW192aWV3cG9ydEhhbmRsZXIgc2V0QXZhaWxhYmxlVmlld1NpemU6Ym91bmRz
LnNpemVdOwotICAgICAgICB9XTsKLSAgICB9CisgICAgaWYgKCFfaGFzU3RhdGljTWluaW11bUxh
eW91dFNpemUpCisgICAgICAgIFtfY29udGVudFZpZXcgc2V0TWluaW11bUxheW91dFNpemU6Ym91
bmRzLnNpemVdOwogICAgIFtfc2Nyb2xsVmlldyBzZXRGcmFtZTpib3VuZHNdOwogICAgIFtfY29u
dGVudFZpZXcgc2V0TWluaW11bVNpemU6Ym91bmRzLnNpemVdOwogfQpAQCAtMzEwLDE1ICsyNDUs
MTQgQEAgc3RhdGljIHN0cnVjdCBfVUlXZWJWaWV3cG9ydENvbmZpZ3VyYXRpb24gc3RhbmRhcmRW
aWV3cG9ydENvbmZpZ3VyYXRpb24gPSB7IHsgVUkKIC0gKENHU2l6ZSltaW5pbXVtTGF5b3V0U2l6
ZU92ZXJyaWRlCiB7CiAgICAgQVNTRVJUKF9oYXNTdGF0aWNNaW5pbXVtTGF5b3V0U2l6ZSk7Ci0g
ICAgcmV0dXJuIFtfdmlld3BvcnRIYW5kbGVyIGF2YWlsYWJsZVZpZXdTaXplXTsKKyAgICByZXR1
cm4gX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGU7CiB9CiAKIC0gKHZvaWQpc2V0TWluaW11bUxh
eW91dFNpemVPdmVycmlkZTooQ0dTaXplKW1pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGUKIHsKICAg
ICBfaGFzU3RhdGljTWluaW11bUxheW91dFNpemUgPSBZRVM7Ci0gICAgW192aWV3cG9ydEhhbmRs
ZXIgdXBkYXRlOl57Ci0gICAgICAgIFtfdmlld3BvcnRIYW5kbGVyIHNldEF2YWlsYWJsZVZpZXdT
aXplOm1pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVdOwotICAgIH1dOworICAgIF9taW5pbXVtTGF5
b3V0U2l6ZU92ZXJyaWRlID0gbWluaW11bUxheW91dFNpemVPdmVycmlkZTsKKyAgICBbX2NvbnRl
bnRWaWV3IHNldE1pbmltdW1MYXlvdXRTaXplOm1pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVdOwog
fQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA3ODg0ZTI3
NTNkODJiZmZlNzZlMTUyYzc0ZTZkOTg0NzRiYjhmMjBmLi5lYzcyYWMzNmIzYmE1NDUzMTk5MWMw
MmU4OGE5NzM3YjY1MjAxODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
QEAgLTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEcmF3aW5nQXJlYVBy
b3h5OwogY2xhc3MgRmluZEluZGljYXRvcjsKIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7
CitjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFdlYkNvbnRleHRNZW51
UHJveHk7CiBjbGFzcyBXZWJFZGl0Q29tbWFuZFByb3h5OwogY2xhc3MgV2ViUG9wdXBNZW51UHJv
eHk7CkBAIC0xNDksNyArMTUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVE
b3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSopID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShF
RkwpIHx8IFBMQVRGT1JNKEdUSykKIAotI2lmIFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oSU9T
KQorI2lmIFBMQVRGT1JNKEVGTCkKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudFNp
emUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsKICNlbmRpZgogCkBAIC0yMzgsMTEgKzIz
OSw5IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKICNpZiBQTEFURk9STShJ
T1MpCi0gICAgdmlydHVhbCB2b2lkIG1haW5Eb2N1bWVudERpZFJlY2VpdmVNb2JpbGVEb2NUeXBl
KCkgPSAwOwotCiAgICAgdmlydHVhbCB2b2lkIGRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXMo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpGbG9hdFF1YWQ+JiBoaWdobGlnaHRlZFF1YWRzLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BSaWdodFJhZGl1
cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50
cyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TGF5ZXJUcmVlKGNvbnN0IFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0QXNz
aXN0aW5nTm9kZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgYm9vbCBoYXNOZXh0Rm9jdXNhYmxl
LCBib29sIGhhc1ByZXZpb3VzRm9jdXNhYmxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BB
c3Npc3RpbmdOb2RlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCBiZjU5ZWM2N2Y0N2E1ZjVjNGIyOTliOGFiYmFhYmQ5ZWQzMzMyZjY5Li43ZDVk
MzA1NDBlZjQxYmY5NmE1ODkxNDE0NjgwZTE0MDM3ODg0ZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjg2Niw3ICsyODY2LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KiBkb3dubG9hZCkK
IH0KICNlbmRpZiAvLyBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEdUSykKIAotI2lmIFBMQVRG
T1JNKEVGTCkgfHwgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKEVGTCkKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAg
IG1fcGFnZUNsaWVudC5kaWRDaGFuZ2VDb250ZW50U2l6ZShzaXplKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4ZWZmYWJmM2U1MTQ4NmRlYzM0YzhlZjQxNmE1
YTYwYjMxZWQyYzkzLi44Y2I0YWEzMTEwYzdkMDQ3ODA4MDgyZmJiMmE1YTNiZWM2ZDk5N2M3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMzksNiArMTM5LDcg
QEAgY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE5hdGl2ZVdlYk1vdXNlRXZl
bnQ7CiBjbGFzcyBOYXRpdmVXZWJXaGVlbEV2ZW50OwogY2xhc3MgUGFnZUNsaWVudDsKK2NsYXNz
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwogY2xhc3MgUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eTsKIGNsYXNzIFN0cmluZ1BhaXJWZWN0b3I7CiBjbGFzcyBXZWJCYWNrRm9yd2Fy
ZExpc3Q7CkBAIC00MzgsNiArNDM5LDggQEAgcHVibGljOgogICAgIHZvaWQgZXhlY3V0ZUVkaXRD
b21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUpOwogICAgIHZvaWQgdmFsaWRhdGVDb21t
YW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIFBhc3NSZWZQdHI8VmFsaWRhdGVDb21tYW5k
Q2FsbGJhY2s+KTsKICNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBzZXRWaXJ0dWFsVmlld3Bv
cnRNaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAgdm9pZCBk
aWRDb21taXRMYXllclRyZWUoY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
biYpOwogICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQs
IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90
IGdlc3R1cmVTdGF0ZSwgUGFzc1JlZlB0cjxHZXN0dXJlQ2FsbGJhY2s+KTsKICAgICB2b2lkIHVw
ZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCB1aW50MzJf
dCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBQYXNzUmVmUHRyPFRvdWNoZXNDYWxsYmFjaz4p
OwogICAgIHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQg
ZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1
aW50MzJfdCBnZXN0dXJlU3RhdGUsIFBhc3NSZWZQdHI8R2VzdHVyZUNhbGxiYWNrPik7CkBAIC04
MjEsNiArODI0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRl
cygpIHsgcmV0dXJuIG1fc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlczsgfQogCiAjaWYgUExBVEZP
Uk0oSU9TKQorICAgIHZvaWQgd2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21pbmcoKTsKICAgICB2
b2lkIGRpZEZpbmlzaFNjcm9sbGluZyhjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBjb250ZW50
T2Zmc2V0KTsKICAgICB2b2lkIGRpZEZpbmlzaFpvb21pbmcoZmxvYXQgbmV3U2NhbGUpOwogCkBA
IC05OTMsNyArOTk3LDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CiAgICAgdm9pZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oRUZMKSB8fCBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oRUZMKQogICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVu
dFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogI2VuZGlmCiAKQEAgLTExMzUsMTIgKzEx
MzksOCBAQCBwcml2YXRlOgogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElP
UykKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2b2lkIG1haW5Eb2N1bWVudERpZFJlY2VpdmVN
b2JpbGVEb2NUeXBlKCk7Ci0KICAgICB2b2lkIGRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXMo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiBnZW9tZXRyaWVzLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BSaWdodFJhZGl1
cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpOwogCi0gICAgdm9pZCBkaWRDaGFuZ2VWaWV3
cG9ydEFyZ3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgdmlld3BvcnRB
cmd1bWVudHMpOwotCiAgICAgdm9pZCBzdGFydEFzc2lzdGluZ05vZGUoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYsIGJvb2wgaGFzTmV4dEZvY3VzYWJsZSwgYm9vbCBoYXNQcmV2aW91c0ZvY3VzYWJs
ZSk7CiAgICAgdm9pZCBzdG9wQXNzaXN0aW5nTm9kZSgpOwogICAgIHZvaWQgbm90aWZ5UmV2ZWFs
ZWRTZWxlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDcxMDc1MWU2ZWExOGU0MWJlNDVkNTcyYjY3YzA0NzY0ODE5
NGZjZjguLjE2NTQ2NGU1NWFhYjRkNzE0MGQ3NzMyNTMwYWI4NmEyNzhlZWRhMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAt
OTAsNyArOTAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZEZpbmRab29t
YWJsZUFyZWEoV2ViQ29yZTo6SW50UG9pbnQgdGFyZ2V0LCBXZWJDb3JlOjpJbnRSZWN0IGFyZWEp
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKEVGTCkKICAgICBEaWRDaGFuZ2VDb250ZW50U2l6ZShXZWJDb3JlOjpJbnRTaXplIG5ld1Np
emUpCiAjZW5kaWYKIApAQCAtMzA2LDEwICszMDYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgTWFpbkRvY3VtZW50RGlkUmVj
ZWl2ZU1vYmlsZURvY1R5cGUoKTsKLQogICAgIERpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXMo
dWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpDb2xvciBjb2xvciwgVmVjdG9yPFdlYkNvcmU6
OkZsb2F0UXVhZD4gZ2VvbWV0cmllcywgV2ViQ29yZTo6SW50U2l6ZSB0b3BMZWZ0UmFkaXVzLCBX
ZWJDb3JlOjpJbnRTaXplIHRvcFJpZ2h0UmFkaXVzLCBXZWJDb3JlOjpJbnRTaXplIGJvdHRvbUxl
ZnRSYWRpdXMsIFdlYkNvcmU6OkludFNpemUgYm90dG9tUmlnaHRSYWRpdXMpCi0gICAgRGlkQ2hh
bmdlVmlld3BvcnRBcmd1bWVudHMoV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRB
cmd1bWVudHMpCiAKICAgICBTdGFydEFzc2lzdGluZ05vZGUoV2ViQ29yZTo6SW50UmVjdCBzY3Jv
bGxSZWN0LCBib29sIGhhc05leHRGb2N1c2FibGUsIGJvb2wgaGFzUHJldmlvdXNGb2N1c2FibGUp
CiAgICAgU3RvcEFzc2lzdGluZ05vZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA0NDdjMGY5N2RmMzA4OTYxYTRkZTQzMDNlNmJi
M2EwNDQ2MmUxYzUyLi4yOGVhNDk5ZTkyMDk4ZjAzZDVjNzY4ODkyOWMwMDZmYjY3MGIwZTViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpA
QCAtMjI5LDYgKzIyOSwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXV0b2NvcnJlY3Rpb25Db250
ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdAogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoYmVmb3JlVGV4dCwgbWFya2VkVGV4dCwg
c2VsZWN0ZWRUZXh0LCBhZnRlclRleHQsIGxvY2F0aW9uLCBsZW5ndGgpOwogfQogCit2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0VmlydHVhbFZpZXdwb3J0TWluaW11bUxheW91dFNpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFZpcnR1YWxWaWV3cG9ydE1pbmltdW1MYXlvdXRTaXplKHNpemUpLCBtX3BhZ2VJ
RCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMYXllclRyZWUoY29uc3QgV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYgbGF5ZXJUcmVlVHJhbnNhY3Rpb24pCit7
CisgICAgbV9wYWdlQ2xpZW50LmRpZENvbW1pdExheWVyVHJlZShsYXllclRyZWVUcmFuc2FjdGlv
bik7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBQYXNzUmVmUHRy
PEdlc3R1cmVDYWxsYmFjaz4gY2FsbGJhY2spCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKQEAg
LTQxNyw2ICs0MjcsMTEgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmFjY2VwdHNGaXJzdE1vdXNlKGlu
dCwgY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50JikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K3ZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsU3RhcnRVc2VyVHJpZ2dlcmVkWm9vbWluZygpCit7Cisg
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpbGxTdGFydFVzZXJUcmlnZ2Vy
ZWRab29taW5nKCksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlz
aFNjcm9sbGluZyhjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBjb250ZW50T2Zmc2V0KQogewog
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRGaW5pc2hTY3JvbGxpbmco
Y29udGVudE9mZnNldCksIG1fcGFnZUlEKTsKQEAgLTQ0MSwyMSArNDU2LDExIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpibHVyQXNzaXN0ZWROb2RlKCkKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Qmx1ckFzc2lzdGVkTm9kZSgpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjptYWluRG9jdW1lbnREaWRSZWNlaXZlTW9iaWxlRG9jVHlwZSgpCi17Ci0gICAg
bV9wYWdlQ2xpZW50Lm1haW5Eb2N1bWVudERpZFJlY2VpdmVNb2JpbGVEb2NUeXBlKCk7Ci19Ci0K
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRUYXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6RmxvYXRRdWFkPiYgaGlnaGxpZ2h0ZWRRdWFkcywgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKQogewogICAgIG1fcGFnZUNsaWVudC5kaWRHZXRU
YXBIaWdobGlnaHRHZW9tZXRyaWVzKHJlcXVlc3RJRCwgY29sb3IsIGhpZ2hsaWdodGVkUXVhZHMs
IHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21S
aWdodFJhZGl1cyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VWaWV3cG9ydEFy
Z3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgdmlld3BvcnRBcmd1bWVu
dHMpCi17Ci0gICAgbV9wYWdlQ2xpZW50LmRpZENoYW5nZVZpZXdwb3J0QXJndW1lbnRzKHZpZXdw
b3J0QXJndW1lbnRzKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0QXNzaXN0aW5nTm9k
ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBib29sIGhhc05leHRGb2N1c2Fi
bGUsIGJvb2wgaGFzUHJldmlvdXNGb2N1c2FibGUpCiB7CiAgICAgbV9wYWdlQ2xpZW50LnN0YXJ0
QXNzaXN0aW5nTm9kZShzY3JvbGxSZWN0LCBoYXNOZXh0Rm9jdXNhYmxlLCBoYXNQcmV2aW91c0Zv
Y3VzYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggZjE2ZWNjNDQwODBh
ZWJkNjc1OWRiMzk2YTg0YzBkYzM2NDcwZjRkZi4uZjM3YzhlZTgwMjFhYjAyYmI4OWRlNWEyYzM5
MzJjYWU1YjQwNDQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtODksNiAr
ODksOSBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmNvbW1pdExheWVy
VHJlZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFucwogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpCiAgICAgbV93ZWJQYWdlUHJveHktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKS0+dXBk
YXRlU2Nyb2xsaW5nVHJlZShzY3JvbGxpbmdUcmVlVHJhbnNhY3Rpb24pOwogI2VuZGlmCisjaWYg
UExBVEZPUk0oSU9TKQorICAgIG1fd2ViUGFnZVByb3h5LT5kaWRDb21taXRMYXllclRyZWUobGF5
ZXJUcmVlVHJhbnNhY3Rpb24pOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDgyNjQ4NGM4ZWE1NTFlNDMzMWE3M2U4ZWU2NTBl
MjljNGE3Nzk1MjkuLjQzZDlhNGJkODI1N2I0YTZlNTM3YTQxYzM1YjczNzkyZjQwZjdlMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTUwMSw5ICs1MDEsNyBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6Y29udGVudHNTaXplQ2hhbmdlZChGcmFtZSogZnJhbWUsIGNvbnN0IEludFNpemUm
IHNpemUpIGNvbgogCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZENoYW5nZUNvbnRlbnRTaXplKHNpemUpKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ2hhbmdlQ29udGVudFNp
emUoc2l6ZSkpOwotI2VuZGlmCisKIAogICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+bWFpbkZy
YW1lQ29udGVudFNpemVDaGFuZ2VkKHNpemUpOwogCkBAIC04NDksMTAgKzg0Nyw5IEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVu
dCogZWxlbWVudCkKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpc3BhdGNoVmlld3BvcnRQcm9w
ZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50
cykgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZENoYW5nZVZpZXdwb3J0QXJndW1lbnRzKHZpZXdwb3J0QXJndW1l
bnRzKSk7Ci0jZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2aWV3cG9ydEFyZ3VtZW50cyk7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgIG1fcGFnZS0+dmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKHZp
ZXdwb3J0QXJndW1lbnRzKTsKICNlbmRpZgogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQog
ICAgIGlmICghbV9wYWdlLT51c2VGaXhlZExheW91dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21l
Q2xpZW50SU9TLm1tCmluZGV4IDRmZGNhMTdjZmYwZmZhNTJjODc3MDgzMmQ5MjVhOTI3N2E1NjIx
NzEuLmY1ZmIwMzVlOTMzZTczZDkwMjVhZGYxMjY5YjFmMDZlMTQ5YjMwOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNs
aWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW0KQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBXZWJDaHJv
bWVDbGllbnQ6OmVsZW1lbnREaWRCbHVyKGNvbnN0IFdlYkNvcmU6Ok5vZGUqIG5vZGUpCiAKIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRSZWNlaXZlTW9iaWxlRG9jVHlwZSgpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1haW5Eb2N1bWVudERpZFJlY2VpdmVN
b2JpbGVEb2NUeXBlKCkpOworICAgIC8vIEZJWE1FOiB1cGRhdGUgdGhlIHZpcnR1YWxWaWV3cG9y
dCBhY2NvcmRpbmdseS4KIH0KIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE5lZWRzU2Nyb2xs
Tm90aWZpY2F0aW9ucyhXZWJDb3JlOjpGcmFtZSosIGJvb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNGU3MmYzNWU3NDU5YjdjOTFiMGY5
YjM1NWM2Y2ExY2U4YWM4YjhlYS4uZTljMTY2YWI1N2JhMjAzYzZjMjIwNmIzNTc0OGYwOWU4MTZh
YjEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMjgxLDYgKzI4MSw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBj
b25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAjaWYg
UExBVEZPUk0oSU9TKQogICAgICwgbV9zaG91bGRSZXR1cm5Xb3JkQXRTZWxlY3Rpb24oZmFsc2Up
CisgICAgLCBtX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlRmFjdG9yKGZhbHNlKQogI2VuZGlmCiAg
ICAgLCBtX2luc3BlY3RvckNsaWVudCgwKQogICAgICwgbV9iYWNrZ3JvdW5kQ29sb3IoQ29sb3I6
OndoaXRlKQpAQCAtMzA3Myw2ICszMDc0LDEyIEBAIHZvaWQgV2ViUGFnZTo6bWFpbkZyYW1lRGlk
TGF5b3V0KCkKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiAgICAgbV92aWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1haW5GcmFtZURpZExheW91dCgpOwogI2VuZGlmCisj
aWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1haW5GcmFt
ZVZpZXcoKSkgeworICAgICAgICBtX3ZpcnR1YWxWaWV3cG9ydC5zZXRDb250ZW50c1NpemUoZnJh
bWVWaWV3LT5jb250ZW50c1NpemUoKSk7CisgICAgICAgIHZpcnR1YWxWaWV3cG9ydENoYW5nZWQo
KTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlOjphZGRQbHVnaW5WaWV3KFBsdWdp
blZpZXcqIHBsdWdpblZpZXcpCkBAIC0zOTc1LDYgKzM5ODIsMjIgQEAgdm9pZCBXZWJQYWdlOjpk
aWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFtZSkKICAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+
cGFnZVNjYWxlRmFjdG9yKCkgIT0gMSkKICAgICAgICAgICAgIHNjYWxlUGFnZSgxLCBJbnRQb2lu
dCgpKTsKICAgICB9CisjaWYgUExBVEZPUk0oSU9TKQorICAgIG1fdXNlckhhc0NoYW5nZWRQYWdl
U2NhbGVGYWN0b3IgPSBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBTZXR1cCBhIHJlYWwgY29uZmln
dXJhdGlvbi4KKyAgICBWaXJ0dWFsVmlld3BvcnRDb25maWd1cmF0aW9uIGRlZmF1bHRDb25maWd1
cmF0aW9uOworICAgIGRlZmF1bHRDb25maWd1cmF0aW9uLndpZHRoID0gOTgwOworICAgIGRlZmF1
bHRDb25maWd1cmF0aW9uLndpZHRoSXNTZXQgPSB0cnVlOworICAgIGRlZmF1bHRDb25maWd1cmF0
aW9uLmFsbG93c1VzZXJTY2FsaW5nID0gdHJ1ZTsKKyAgICBkZWZhdWx0Q29uZmlndXJhdGlvbi5t
aW5pbXVtU2NhbGUgPSAwLjI1OworICAgIGRlZmF1bHRDb25maWd1cmF0aW9uLm1heGltdW1TY2Fs
ZSA9IDU7CisKKyAgICBtX3ZpcnR1YWxWaWV3cG9ydC5zZXREZWZhdWx0Q29uZmlndXJhdGlvbihk
ZWZhdWx0Q29uZmlndXJhdGlvbik7CisgICAgbV92aXJ0dWFsVmlld3BvcnQuc2V0Vmlld3BvcnRB
cmd1bWVudHMoVmlld3BvcnRBcmd1bWVudHMoKSk7CisgICAgbV92aXJ0dWFsVmlld3BvcnQuc2V0
Q29udGVudHNTaXplKG1fdmlydHVhbFZpZXdwb3J0Lm1pbmltdW1MYXlvdXRTaXplKCkpOworICAg
IHZpcnR1YWxWaWV3cG9ydENoYW5nZWQoKTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFBSSU1BUllf
U05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKICAgICByZXNldFByaW1hcnlTbmFwc2hvdHRl
ZFBsdWdJbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggMjE2MGUxNGQ4MjRmNjdhZTkxYjUyNTkwNzI0NTI0ZjIwMmNjNGZkZi4uMDUyYzhlZjEy
ZmEzZTQ4MWE1N2EyZTZlZGQ3ZDgyNzFiZGNjZjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9UZXh0Q2hlY2tpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJBY3Rpdml0eS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVmlld1N0YXRlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9WaXJ0dWFs
Vmlld3BvcnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYkNvcmVLZXlib2FyZFVJTW9kZS5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNDEx
LDYgKzQxMiwxMiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKKyAgICB2
b2lkIHZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZShjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFy
Z3VtZW50cyYpOworCisgICAgZG91YmxlIG1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSBjb25zdDsK
KyAgICBkb3VibGUgbWF4aW11bVBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0OworICAgIGJvb2wgYWxs
b3dzVXNlclNjYWxpbmcoKSBjb25zdDsKKwogICAgIHZvaWQgaGFuZGxlVGFwKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jik7CiAgICAgdm9pZCB0YXBIaWdobGlnaHRBdFBvc2l0aW9uKHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogCkBAIC02MjksNiArNjM2
LDkgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlVmlzaWJpbGl0eVN0YXRlKGJvb2wgaXNJbml0
aWFsU3RhdGUgPSBmYWxzZSk7CiAKICNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBzZXRWaXJ0
dWFsVmlld3BvcnRNaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7Cisg
ICAgdm9pZCB2aXJ0dWFsVmlld3BvcnRDaGFuZ2VkKCk7CisgICAgdm9pZCB3aWxsU3RhcnRVc2Vy
VHJpZ2dlcmVkWm9vbWluZygpOwogICAgIHZvaWQgZGlkRmluaXNoU2Nyb2xsaW5nKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmIGNvbnRlbnRPZmZzZXQpOwogICAgIHZvaWQgZGlkRmluaXNoWm9v
bWluZyhmbG9hdCk7CiAjZW5kaWYKQEAgLTEwNDYsNiArMTA1Niw5IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBtX2N1cnJlbnRXb3JkUmFuZ2U7CiAgICAgUmVmUHRyPFdl
YkNvcmU6Ok5vZGU+IG1faW50ZXJhY3Rpb25Ob2RlOwogICAgIGJvb2wgbV9zaG91bGRSZXR1cm5X
b3JkQXRTZWxlY3Rpb247CisKKyAgICBXZWJDb3JlOjpWaXJ0dWFsVmlld3BvcnQgbV92aXJ0dWFs
Vmlld3BvcnQ7CisgICAgYm9vbCBtX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlRmFjdG9yOwogI2Vu
ZGlmCiAKICAgICBXZWJJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgppbmRleCBmOWQ4MDMwOWY1OGI2OTU2ZWE5YTMxNzFiODMwNzk0MmYyOGY1NDBlLi5hYWYxNTE4
N2I5NDBmNGE4YTVjZWM2ODA2Y2NjYmJjZmMzODliMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDEsNiAr
NDEsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBNb3VzZUV2
ZW50U3luY0ZvclRlc3RpbmcoV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50KSAtPiAoYm9vbCBo
YW5kbGVkKQogICAgIFdoZWVsRXZlbnRTeW5jRm9yVGVzdGluZyhXZWJLaXQ6OldlYldoZWVsRXZl
bnQgZXZlbnQpIC0+IChib29sIGhhbmRsZWQpCiAjaWYgUExBVEZPUk0oSU9TKQorICAgIFNldFZp
cnR1YWxWaWV3cG9ydE1pbmltdW1MYXlvdXRTaXplKFdlYkNvcmU6OkludFNpemUgc2l6ZSkKKwog
ICAgIEhhbmRsZVRhcChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBUYXBIaWdobGlnaHRB
dFBvc2l0aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCkK
ICAgICBCbHVyQXNzaXN0ZWROb2RlKCkKQEAgLTMxMyw2ICszMTUsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIo
KQogCiAjaWYgUExBVEZPUk0oSU9TKQorICAgIFdpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29taW5n
KCk7CiAgICAgRGlkRmluaXNoU2Nyb2xsaW5nKFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udGVudE9m
ZnNldCk7CiAgICAgRGlkRmluaXNoWm9vbWluZyhmbG9hdCBzY2FsZSk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpp
bmRleCA1ZWY3NDcxMjBmYmY2ZGM0ZmQ5NDQwYzk3ODA4ZmE0NzgwNGM2YjgyLi4zMjg0ODRjYjk3
ZGVmYjg2Y2I3ZDQwYzZiZjMxZmM3ZGQ0NGNhYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC03OSw2ICs3OSwyNyBA
QCBib29sIFdlYlBhZ2U6OmV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRzSW50ZXJuYWwoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OktleXByZXNzQ29tbQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBX
ZWJQYWdlOjp2aWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UoY29uc3QgVmlld3BvcnRBcmd1bWVu
dHMmIHZpZXdwb3J0QXJndW1lbnRzKQoreworICAgIG1fdmlydHVhbFZpZXdwb3J0LnNldFZpZXdw
b3J0QXJndW1lbnRzKHZpZXdwb3J0QXJndW1lbnRzKTsKKyAgICB2aXJ0dWFsVmlld3BvcnRDaGFu
Z2VkKCk7Cit9CisKK2RvdWJsZSBXZWJQYWdlOjptaW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV92aXJ0dWFsVmlld3BvcnQubWluaW11bVNjYWxlKCk7Cit9CisK
K2RvdWJsZSBXZWJQYWdlOjptYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV92aXJ0dWFsVmlld3BvcnQubWF4aW11bVNjYWxlKCk7Cit9CisKK2Jvb2wgV2ViUGFn
ZTo6YWxsb3dzVXNlclNjYWxpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtX3ZpcnR1YWxWaWV3
cG9ydC5hbGxvd3NVc2VyU2NhbGluZygpOworfQorCiBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRp
bmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50LCBib29sKQogewogICAgIGJvb2wg
ZXZlbnRXYXNIYW5kbGVkID0gZmFsc2U7CkBAIC05MzgsNiArOTU5LDMwIEBAIHZvaWQgV2ViUGFn
ZTo6ZWxlbWVudERpZEJsdXIoV2ViQ29yZTo6Tm9kZSogbm9kZSkKICAgICB9CiB9CiAKK3ZvaWQg
V2ViUGFnZTo6c2V0VmlydHVhbFZpZXdwb3J0TWluaW11bUxheW91dFNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKK3sKKyAgICBtX3ZpcnR1YWxWaWV3cG9ydC5zZXRNaW5pbXVtTGF5b3V0U2l6ZShz
aXplKTsKKyAgICB2aXJ0dWFsVmlld3BvcnRDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6
dmlydHVhbFZpZXdwb3J0Q2hhbmdlZCgpCit7CisgICAgc2V0Rml4ZWRMYXlvdXRTaXplKG1fdmly
dHVhbFZpZXdwb3J0LmxheW91dFNpemUoKSk7CisKKyAgICBkb3VibGUgc2NhbGU7CisgICAgaWYg
KG1fdXNlckhhc0NoYW5nZWRQYWdlU2NhbGVGYWN0b3IpCisgICAgICAgIHNjYWxlID0gc3RkOjpt
YXgoc3RkOjptaW4ocGFnZVNjYWxlRmFjdG9yKCksIG1fdmlydHVhbFZpZXdwb3J0Lm1heGltdW1T
Y2FsZSgpKSwgbV92aXJ0dWFsVmlld3BvcnQubWluaW11bVNjYWxlKCkpOworICAgIGVsc2UKKyAg
ICAgICAgc2NhbGUgPSBtX3ZpcnR1YWxWaWV3cG9ydC5pbml0aWFsU2NhbGUoKTsKKworICAgIG1f
cGFnZS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlLCBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXco
KS0+c2Nyb2xsUG9zaXRpb24oKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6d2lsbFN0YXJ0VXNlclRy
aWdnZXJlZFpvb21pbmcoKQoreworICAgIG1fdXNlckhhc0NoYW5nZWRQYWdlU2NhbGVGYWN0b3Ig
PSB0cnVlOworfQorCiB2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaFNjcm9sbGluZyhjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiBjb250ZW50T2Zmc2V0KQogewogICAgIG1fcGFnZS0+bWFpbkZyYW1l
KCkudmlldygpLT5zZXRTY3JvbGxPZmZzZXQoV2ViQ29yZTo6SW50UG9pbnQoY29udGVudE9mZnNl
dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggZTFlMGVkYWI0
MWQ1OWY1NGQwOTVmOWFlN2RkMGZmMGFmMDI4MDFiZi4uNjMyMTM5MzM4NWQwNTYzYmQ4OWZkMDE2
MWJmZDZmYWIzNTZlZjI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1t
CkBAIC0zMjEsNiArMzIxLDExIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZs
dXNoTGF5ZXJzKCkKICAgICAvLyBGSVhNRTogbWluaXplIHRoZXNlIHRyYW5zYWN0aW9ucyBpZiBu
b3RoaW5nIGNoYW5nZWQuCiAgICAgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24gbGF5ZXJUcmFu
c2FjdGlvbjsKICAgICBtX3JlbW90ZUxheWVyVHJlZUNvbnRleHQtPmJ1aWxkVHJhbnNhY3Rpb24o
bGF5ZXJUcmFuc2FjdGlvbiwgKm1fcm9vdExheWVyKTsKKyAgICBsYXllclRyYW5zYWN0aW9uLnNl
dE1haW5GcmFtZUNvbnRlbnRzU2l6ZShtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgp
LnZpZXcoKS0+Y29udGVudHNTaXplKCkpOworICAgIGxheWVyVHJhbnNhY3Rpb24uc2V0UGFnZVNj
YWxlRmFjdG9yKG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+cGFnZVNjYWxlRmFjdG9yKCkpOworICAg
IGxheWVyVHJhbnNhY3Rpb24uc2V0TWluaW11bVNjYWxlRmFjdG9yKG1fd2ViUGFnZS0+bWluaW11
bVBhZ2VTY2FsZUZhY3RvcigpKTsKKyAgICBsYXllclRyYW5zYWN0aW9uLnNldE1heGltdW1TY2Fs
ZUZhY3RvcihtX3dlYlBhZ2UtPm1heGltdW1QYWdlU2NhbGVGYWN0b3IoKSk7CisgICAgbGF5ZXJU
cmFuc2FjdGlvbi5zZXRBbGxvd3NVc2VyU2NhbGluZyhtX3dlYlBhZ2UtPmFsbG93c1VzZXJTY2Fs
aW5nKCkpOwogCiAgICAgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbiBzY3Jv
bGxpbmdUcmFuc2FjdGlvbjsKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223295</attachid>
            <date>2014-02-05 20:15:37 -0800</date>
            <delta_ts>2014-02-05 21:52:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127886-20140205201537.patch</filename>
            <type>text/plain</type>
            <size>71094</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc1OWFlOTI3YzJkYWE4
ODNhNjM3ZjhlYmZjYzE3MDY0YjJhNWY3NS4uNWJhNWYzNzE2YjllNDc3ZWMyNzUwNmU0OTNjYTZh
OTJjY2QwMjdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE0LTAyLTA1ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbaU9TXSBTeW5j
aHJvbml6ZSB0aGUgV0tDb250ZW50VmlldyBhbmQgVUlTY3JvbGxWaWV3IHVwZGF0ZXMgd2l0aCB0
aGUgdGlsZXMgYmVpbmcgY29tbWl0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNzg4NgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci4KKworICAgICAgICBUaGUgdXBkYXRlcyBvZiB0aGUgdmlld3Mgb24gdGhlIFVJUHJvY2VzcyBz
aWRlIHdhcyBjb21wbGV0ZWx5IGRpc2Nvbm5lY3RlZAorICAgICAgICBmcm9tIHRoZSB0aWxlcyB1
cGRhdGVzIGZyb20gdGhlIERyYXdpbmdBcmVhLiBUaGVyZSBpcyBhIG5vbi1uZWdsaWdpYmxlIHRp
bWUKKyAgICAgICAgYmV0d2VlbiB0aGUgc2l6ZS9zY2FsZSB1cGRhdGUgYW5kIHRoZSBuZXcgdGls
ZXMgY29taW5nLCB3aGljaCBjYXVzZXMKKyAgICAgICAgdmlzdWFsIGdsaXRjaGVzLgorCisgICAg
ICAgIFRoZXJlIGFyZSB0aHJlZSBtYWluIGNhc2VzIHdoZXJlIHRoZSB0aWxlcyBhbmQgY29udGVu
dCB3b3VsZCBiZSBvdXQgb2Ygc3luYworICAgICAgICB3aXRoIHRoZSBVSVZpZXdzOgorICAgICAg
ICAtV2hlbiBsb2FkaW5nIGEgbmV3IHBhZ2Ugd2l0aCBkaWZmZXJlbnQgY29udGVudCB3aWR0aCBv
ZiBhIGRpZmZlcmVudCB2aWV3cG9ydC4KKyAgICAgICAgLVdoZW4gYSBwYWdlIGNoYW5nZXMgaXRz
IHZpZXdwb3J0LgorICAgICAgICAtV2hlbiB0aGUgdmlld3BvcnQtY29uc3RyYWludGVkIHZpZXdw
b3J0IHNpemUgY2hhbmdlcy4KKworICAgICAgICBUbyBmaXggdGhlIGlzc3VlLCBXS1ZpZXcgaXMg
bW9kaWZpZWQgdG8gbWFpbnRhaW4gdGhlIG9sZCBzdGF0ZSBvZiBXS0NvbnRlbnRWaWV3CisgICAg
ICAgIGFuZCBVSVNjcm9sbFZpZXcgdW50aWwgdGhlIG5ldyB0aWxlcyBhcmUgYXZhaWxhYmxlLgor
CisgICAgICAgIEdlb21ldHJ5L3NjYWxlIHVwZGF0ZSBhcmUgc3BsaXQgaW4gdHdvIHBoYXNlczoK
KyAgICAgICAgMSkgQSBzb3VyY2UgKHRoZSBwYWdlIG9yIHRoZSB1c2VyKSBjaGFuZ2VzIHBhcmFt
ZXRlcnMgb2YgdGhlIGdlb21ldHJ5LiBUaGUgV2ViUHJvY2VzcyB1cGRhdGVzCisgICAgICAgICAg
IGl0cyBsYXlvdXQgYWNjb3JkaW5nbHkuCisgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHRoZSBV
SVZpZXdzIGFyZSB1bmNoYW5nZWQgYW5kIGFyZSBsZWZ0IHdpdGggdGhlIG9sZCBwYXJhbWV0ZXJz
LgorICAgICAgICAyKSBFdmVudHVhbGx5LCBuZXcgdGlsZXMgY29tZSBhbmQgY29tbWl0TGF5ZXJU
cmVlKCkgaXMgY2FsbGVkIG9uIHRoZSBkcmF3aW5nIGFyZWEgcHJveHkuCisgICAgICAgICAgIEF0
IHRoYXQgcG9pbnQsIFdLQ29udGVudFZpZXcgYW5kIGl0cyBVSVNjcm9sbFZpZXcgYXJlIHVwZGF0
ZWQgdG8gbWF0Y2ggdGhlIGNvbW1pdHRlZAorICAgICAgICAgICBzaXplIGFuZCBzY2FsZSBmb3Ig
dGhlIHBhZ2UuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9WaWV3cG9ydENvbmZp
Z3VyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cmFpbnRzQXJlQWxs
UmVsYXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpWaWV3
cG9ydENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0
aW9uOjpzZXREZWZhdWx0Q29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9y
dENvbmZpZ3VyYXRpb246OnNldENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3
cG9ydENvbmZpZ3VyYXRpb246OnNldE1pbmltdW1MYXlvdXRTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0Vmlld3BvcnRBcmd1bWVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpsYXlvdXRTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6aW5pdGlhbFNjYWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6bWluaW11bVNjYWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6bWF4aW11bVNjYWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6YWxsb3dzVXNlclNjYWxpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6dmlld3BvcnRBcmd1bWVudFZhbHVlSXNWYWxpZCk6CisgICAgICAgIChX
ZWJDb3JlOjphcHBseVZpZXdwb3J0QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3Bv
cnRDb25maWd1cmF0aW9uOjp1cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6bGF5b3V0V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6
Vmlld3BvcnRDb25maWd1cmF0aW9uOjpsYXlvdXRIZWlnaHQpOgorICAgICAgICAqIHBhZ2UvVmll
d3BvcnRDb25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRD
b25maWd1cmF0aW9uQ29uZmlndXJhdGlvbjo6Vmlld3BvcnRDb25maWd1cmF0aW9uQ29uZmlndXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246OmRlZmF1bHRD
b25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6
Y29udGVudHNTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6
bWluaW11bUxheW91dFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0
aW9uOjp2aWV3cG9ydEFyZ3VtZW50cyk6CisKIDIwMTQtMDItMDQgIEFuZHJlYXMgS2xpbmcgIDxh
a2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSA8aWZyYW1lIHNlYW1sZXNzPiBzdXBw
b3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGM2NDkwMDk5ZDIzOTQ1YTIxNmM0NzBiMzE2YTE1ZGY4NTY1MDBh
ODcuLjJjZWNhZDU1NWEwMWE5NDU5MmZkZmRlYTExMDg5N2Y3ZDIyMzY0ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw3MyBAQAorMjAxNC0wMi0wNSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWlu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW2lPU10gU3luY2hyb25pemUgdGhlIFdLQ29udGVudFZp
ZXcgYW5kIFVJU2Nyb2xsVmlldyB1cGRhdGVzIHdpdGggdGhlIHRpbGVzIGJlaW5nIGNvbW1pdGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODYK
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBTaGFyZWQv
bWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjptYWluRnJhbWVDb250ZW50c1NpemUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6c2V0TWFpbkZyYW1lQ29udGVudHNT
aXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OnBhZ2VT
Y2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpzZXRQYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6bWluaW11bVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OnNldE1pbmltdW1TY2FsZUZhY3Rvcik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjptYXhpbXVtU2NhbGVGYWN0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6c2V0TWF4aW11bVNj
YWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OmFsbG93c1VzZXJTY2FsaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OnNldEFsbG93c1VzZXJTY2FsaW5nKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExh
eWVyVHJlZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlldy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgc2V0TWluaW11bUxheW91dFNpemU6XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgd2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21dKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOldlYktpdDo6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlld0ludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9pb3MvV0tWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1ZpZXcgY29udGVudFZpZXdEaWRD
b21taXRMb2FkRm9yTWFpbkZyYW1lOl0pOgorICAgICAgICAoLVtXS1ZpZXcgY29udGVudFZpZXc6
ZGlkQ29tbWl0TGF5ZXJUcmVlOldlYktpdDo6XSk6CisgICAgICAgICgtW1dLVmlldyBzY3JvbGxW
aWV3V2lsbEJlZ2luWm9vbWluZzp3aXRoVmlldzpdKToKKyAgICAgICAgKC1bV0tWaWV3IF9jb21t
b25Jbml0aWFsaXphdGlvbldpdGhDb250ZXh0UmVmOnBhZ2VHcm91cFJlZjpyZWxhdGVkVG9QYWdl
Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkXSk6CisgICAgICAg
ICgtW1dLVmlldyBtaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlXSk6CisgICAgICAgICgtW1dLVmll
dyBzZXRNaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
YWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VmlydHVhbFZpZXdw
b3J0TWluaW11bUxheW91dFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZENvbW1pdExheWVyVHJlZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2lsbFN0
YXJ0VXNlclRyaWdnZXJlZFpvb21pbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Y29tbWl0TGF5ZXJUcmVlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6Y29udGVudHNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVu
dElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpkaWRSZWNlaXZlTW9i
aWxlRG9jVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6bWFpbkZyYW1lRGlkTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlk
Q29tbWl0TG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6Om1pbmltdW1QYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjptYXhpbXVtUGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
YWxsb3dzVXNlclNjYWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRWaXJ0dWFs
Vmlld3BvcnRNaW5pbXVtTGF5b3V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnZp
cnR1YWxWaWV3cG9ydENoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3aWxsU3Rh
cnRVc2VyVHJpZ2dlcmVkWm9vbWluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKwogMjAxNC0wMi0wNCAgQW5kcmVh
cyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIDxpZnJhbWUgc2Vh
bWxlc3M+IHN1cHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGNlY2FmZmE3ODQzYzliMjdm
ZTBmMTZiN2FmOTM4ZmY0MDllYzNkOTcuLjhiMzdhMTU5ZDQ0NDgwMmUxMTI3ZDQxMTBjYWRjZTlj
NWZlMTMxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC01NjgsNiArNTY4LDggQEAgX19aTjdX
ZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EzMXBsYXRmb3JtQ0FMYXllckFuaW1hdGlvblN0YXJ0ZWRF
ZAogX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EzN2ZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZv
clRoaXNMYXllck9ubHlFdgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0E0MHBsYXRmb3Jt
Q0FMYXllclNldE5lZWRzVG9SZXZhbGlkYXRlVGlsZXNFdgogX19aTks3V2ViQ29yZTE1R3JhcGhp
Y3NMYXllckNBNDlwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c1NjYWxlTXVsdGlwbGllckZvck5ld1Rp
bGVzRVBOU18xNVBsYXRmb3JtQ0FMYXllckUKK19fWk5LN1dlYkNvcmUyMVZpZXdwb3J0Q29uZmln
dXJhdGlvbjEwbGF5b3V0U2l6ZUV2CitfX1pOSzdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRp
b24xMmluaXRpYWxTY2FsZUV2CiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTdzZXROYW1l
RVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0E3c2V0U2l6ZUVS
S05TXzlGbG9hdFNpemVFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQThhZGRDaGlsZEVQ
TlNfMTNHcmFwaGljc0xheWVyRQpAQCAtNTc1LDYgKzU3Nyw4IEBAIF9fWk43V2ViQ29yZTE1R3Jh
cGhpY3NMYXllckNBQzJFUE5TXzE5R3JhcGhpY3NMYXllckNsaWVudEUKIF9fWk43V2ViQ29yZTE1
R3JhcGhpY3NMYXllckNBRDJFdgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0ExOXNldEN1
c3RvbUFwcGVhcmFuY2VFTlNfMTNHcmFwaGljc0xheWVyMTZDdXN0b21BcHBlYXJhbmNlRQogX19a
Tks3V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBMTRwcmltYXJ5TGF5ZXJJREV2CitfX1pOSzdXZWJD
b3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24xMm1heGltdW1TY2FsZUV2CitfX1pOSzdXZWJDb3Jl
MjFWaWV3cG9ydENvbmZpZ3VyYXRpb24xMm1pbmltdW1TY2FsZUV2CiBfX1pON1dlYkNvcmUxNUhp
dFRlc3RMb2NhdGlvbjEycmVjdEZvclBvaW50RVJLTlNfMTFMYXlvdXRQb2ludEVqampqCiBfX1pO
N1dlYkNvcmUxNUhpdFRlc3RMb2NhdGlvbkMxRVJLTlNfMTBGbG9hdFBvaW50RQogX19aTjdXZWJD
b3JlMTVIaXRUZXN0TG9jYXRpb25EMUV2CkBAIC04NDUsNiArODQ5LDEwIEBAIF9fWk43V2ViQ29y
ZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlQzFFUk4zV1RGNlZlY3RvckloTG0wRU5TMV8xNUNyYXNo
T25PdmVyZmxvd0VFCiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUQxRXYKIF9f
Wk43V2ViQ29yZTIxVVJMQnlSZW1vdmluZ1VzZXJJbmZvRVA1TlNVUkwKIF9fWk43V2ViQ29yZTIx
VXNlckNvbnRlbnRVUkxQYXR0ZXJuNXBhcnNlRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3Jl
MjFWaWV3cG9ydENvbmZpZ3VyYXRpb24xNXNldENvbnRlbnRzU2l6ZUVSS05TXzdJbnRTaXplRQor
X19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24yMHNldE1pbmltdW1MYXlvdXRTaXpl
RVJLTlNfN0ludFNpemVFCitfX1pON1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjIwc2V0
Vmlld3BvcnRBcmd1bWVudHNFUktOU18xN1ZpZXdwb3J0QXJndW1lbnRzRQorX19aTjdXZWJDb3Jl
MjFWaWV3cG9ydENvbmZpZ3VyYXRpb24yM3NldERlZmF1bHRDb25maWd1cmF0aW9uRVJLTlMwXzEw
UGFyYW1ldGVyc0UKIF9fWk43V2ViQ29yZTIxV2luZG93c0xhdGluMUVuY29kaW5nRXYKIF9fWk43
V2ViQ29yZTIxY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyRVBLY21QSzdfX0NGVVJMCiBfX1pON1dlYkNv
cmUyMWZpbmRFdmVudFdpdGhLZXlTdGF0ZUVQTlNfNUV2ZW50RQpAQCAtOTA5LDYgKzkxNyw3IEBA
IF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQzJFUE5TXzVGcmFtZUUKIF9f
Wk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyRDJFdgogX19aTjdXZWJDb3JlMjRJ
bW11dGFibGVTdHlsZVByb3BlcnRpZXNEMUV2CiBfX1pON1dlYkNvcmUyNFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbkMxRVJLTjNXVEY2U3RyaW5nRVM0X05TXzE1RmlsdGVyT3BlcmF0aW9uMTNPcGVy
YXRpb25UeXBlRQorX19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb25DMUV2CiBfX1pO
N1dlYkNvcmUyNGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cEVSTlNfOERvY3VtZW50RVJLTjNXVEY2
U3RyaW5nRVM1X05TXzE5UGFyc2VyQ29udGVudFBvbGljeUUKIF9fWk43V2ViQ29yZTI0ZGVjb2Rl
VVJMRXNjYXBlU2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRkZWxldGVD
b29raWVzRm9ySG9zdG5hbWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS04zV1RGNlN0
cmluZ0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBmOWE2MWQ1N2I0ZGVmNzUwNzFjZWNkZTQ2ZWQyOGU5MzViY2JmYTJkLi42NTNl
MjJjMWU1MTFiOWU5ZjRlZDEyYWUxZDNkMGE2NWI2MjMyOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05ODMsNiArOTgzLDgg
QEAKIAkJMjZDMTdBM0YxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkMxN0EzRDE0OTFEMkQ0
MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5tbSAqLzsgfTsKIAkJMjZFOThBMTAxMzBBOUZDQTAw
OEVCN0IyIC8qIFRleHRDb2RlY0FTQ0lJRmFzdFBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RTk4QTBGMTMwQTlGQ0EwMDhFQjdCMiAvKiBUZXh0
Q29kZWNBU0NJSUZhc3RQYXRoLmggKi87IH07CiAJCTI2RjQwRDRBMTQ5MDRBNjMwMENBNjdDNCAv
KiBFdmVudExvb3BJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyNkY0MEQ0OTE0OTA0QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tICovOyB9
OworCQkyNkY5QTgzODE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjlBODM2
MThBMDQ2QUMwMEFFQjg4QSAvKiBWaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwICovOyB9OworCQky
NkY5QTgzOTE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY5QTgzNzE4QTA0NkFD
MDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjZGQUU0Q0MxODUyRTNBNTAwNEM4QzQ2IC8q
IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGQUU0QzgxODUyRTNBNTAwNEM4QzQ2
IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICovOyB9OwogCQky
NkZBRTRDRDE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjZGQUU0QzkxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGUuaCAqLzsgfTsKIAkJMjZGQUU0Q0UxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNocm9u
b3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkZBRTRDQTE4NTJFM0E1MDA0QzhD
NDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNw
cCAqLzsgfTsKQEAgLTc3NjksNiArNzc3MSw4IEBACiAJCTI2QzE3QTNEMTQ5MUQyRDQwMEQxMkJB
MiAvKiBGaWxlU3lzdGVtSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gRmlsZVN5c3RlbUlPUy5tbTsgcGF0aCA9IGlvcy9GaWxlU3lzdGVtSU9TLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkU5OEEwRjEzMEE5RkNBMDA4RUI3QjIgLyogVGV4
dENvZGVjQVNDSUlGYXN0UGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2
RjQwRDQ5MTQ5MDRBNjMwMENBNjdDNCAvKiBFdmVudExvb3BJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFdmVudExvb3BJT1MubW07IHBhdGggPSBpb3MvRXZl
bnRMb29wSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkY5QTgzNjE4QTA0
NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2RjlBODM3MThBMDQ2QUMwMEFFQjg4QSAvKiBWaWV3cG9y
dENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld3Bv
cnRDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2RkFFNEM4
MTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyNkZBRTRDOTE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTI2RkFFNENBMTg1MkUzQTUwMDRDOEM0NiAvKiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MTk5LDYgKzE2MjAzLDggQEAK
IAkJCQlCQzhCRjE1OTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBlcy5oICov
LAogCQkJCUY1MTNBM0U5MTVGRjQ4NDEwMDE1MjZEQiAvKiBWYWxpZGF0aW9uTWVzc2FnZUNsaWVu
dC5oICovLAogCQkJCTg2NzhEMEJBMTg3OEU4MTAwMDNBQkRFNiAvKiBWaWV3U3RhdGUuaCAqLywK
KwkJCQkyNkY5QTgzNjE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmNw
cCAqLywKKwkJCQkyNkY5QTgzNzE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0
aW9uLmggKi8sCiAJCQkJMUFCQTgwMDUxODk3MzU1NTAwRENFOUQ2IC8qIFZpc2l0ZWRMaW5rUHJv
dmlkZXIuY3BwICovLAogCQkJCTFBQkE3RkZGMTg5NzM0MTIwMERDRTlENiAvKiBWaXNpdGVkTGlu
a1Byb3ZpZGVyLmggKi8sCiAJCQkJQkU5ODNEOTUwNTJBMkUwQTAwODkyRDg1IC8qIFdlYkNvcmVL
ZXlib2FyZFVJTW9kZS5oICovLApAQCAtMjQzNzQsNiArMjQzODAsNyBAQAogCQkJCUIyRkEzRDc5
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFRmxvb2RFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkZBM0Q3QjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRUZ1bmNBRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEN0QwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVGdW5j
QkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTI2RjlBODM5MThBMDQ2QUMwMEFFQjg4QSAv
KiBWaWV3cG9ydENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDdGMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFRnVuY0dFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMkZBM0Q4MTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRUZ1bmNSRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJGQTNEODMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTI4LDYgKzI2OTM1LDcgQEAKIAkJ
CQkxNDhBRkRBNjBBRjU4MzYwMDA4Q0M3MDAgLyogRXhjZXB0aW9uSGFuZGxlcnMubW0gaW4gU291
cmNlcyAqLywKIAkJCQlBMDI0NTc1MTE2Q0VBQTI3MDAwRTU2NzEgLyogRVhURHJhd0J1ZmZlcnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkU2N0QyQTYxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVu
c2lvbnMzRE9wZW5HTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyNkY5QTgzODE4QTA0NkFDMDBB
RUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ0
REFCNUIxMTVBNjIzNTgwMDk3QzFFNCAvKiBFeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNzcyODY5NEUxNEY4ODgyNTAwRjQ4NERDIC8qIEVYVFRleHR1cmVG
aWx0ZXJBbmlzb3Ryb3BpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0M3NDAxNDE2MDNGN0Ex
MDAxMUZGMkQgLyogRmVhdHVyZU9ic2VydmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2NTkw
NGNmNTZlOGRlODMzY2U2NGU0YTZlMWY3N2JlZTRkYzU5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAKQEAgLTAsMCArMSwy
NjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJW
aWV3cG9ydENvbmZpZ3VyYXRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYg
IUFTU0VSVF9ESVNBQkxFRAorc3RhdGljIGJvb2wgY29uc3RyYWludHNBcmVBbGxSZWxhdGl2ZShj
b25zdCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OlBhcmFtZXRlcnMmIGNvbmZpZ3VyYXRpb24pCit7
CisgICAgcmV0dXJuICFjb25maWd1cmF0aW9uLndpZHRoSXNTZXQgJiYgIWNvbmZpZ3VyYXRpb24u
aGVpZ2h0SXNTZXQgJiYgIWNvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlSXNTZXQ7Cit9CisjZW5k
aWYKKworVmlld3BvcnRDb25maWd1cmF0aW9uOjpWaWV3cG9ydENvbmZpZ3VyYXRpb24oKQorICAg
IDogbV9jb250ZW50U2l6ZSgxMDI0LCA3NjgpCisgICAgLCBtX21pbmltdW1MYXlvdXRTaXplKG1f
Y29udGVudFNpemUpCit7CisgICAgLy8gU2V0dXAgYSByZWFzb25hYmxlIGRlZmF1bHQgY29uZmln
dXJhdGlvbiB0byBhdm9pZCBjb21wdXRpbmcgaW5maW5pdGUgc2NhbGUvc2l6ZXMuCisgICAgLy8g
VGhvc2UgYXJlIHRoZSBvcmlnaW5hbCBpUGhvbmUgY29uZmlndXJhdGlvbi4KKyAgICBtX2RlZmF1
bHRDb25maWd1cmF0aW9uLndpZHRoID0gOTgwOworICAgIG1fZGVmYXVsdENvbmZpZ3VyYXRpb24u
d2lkdGhJc1NldCA9IHRydWU7CisgICAgbV9kZWZhdWx0Q29uZmlndXJhdGlvbi5hbGxvd3NVc2Vy
U2NhbGluZyA9IHRydWU7CisgICAgbV9kZWZhdWx0Q29uZmlndXJhdGlvbi5taW5pbXVtU2NhbGUg
PSAwLjI1OworICAgIG1fZGVmYXVsdENvbmZpZ3VyYXRpb24ubWF4aW11bVNjYWxlID0gNTsKKyAg
ICB1cGRhdGVDb25maWd1cmF0aW9uKCk7Cit9CisKK3ZvaWQgVmlld3BvcnRDb25maWd1cmF0aW9u
OjpzZXREZWZhdWx0Q29uZmlndXJhdGlvbihjb25zdCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OlBh
cmFtZXRlcnMmIGRlZmF1bHRDb25maWd1cmF0aW9uKQoreworICAgIEFTU0VSVCghY29uc3RyYWlu
dHNBcmVBbGxSZWxhdGl2ZShtX2NvbmZpZ3VyYXRpb24pKTsKKyAgICBBU1NFUlQoIW1fZGVmYXVs
dENvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlSXNTZXQgfHwgZGVmYXVsdENvbmZpZ3VyYXRpb24u
aW5pdGlhbFNjYWxlID4gMCk7CisgICAgQVNTRVJUKGRlZmF1bHRDb25maWd1cmF0aW9uLm1pbmlt
dW1TY2FsZSA+IDApOworICAgIEFTU0VSVChkZWZhdWx0Q29uZmlndXJhdGlvbi5tYXhpbXVtU2Nh
bGUgPj0gZGVmYXVsdENvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlKTsKKworICAgIG1fZGVmYXVs
dENvbmZpZ3VyYXRpb24gPSBkZWZhdWx0Q29uZmlndXJhdGlvbjsKKyAgICB1cGRhdGVDb25maWd1
cmF0aW9uKCk7Cit9CisKK3ZvaWQgVmlld3BvcnRDb25maWd1cmF0aW9uOjpzZXRDb250ZW50c1Np
emUoY29uc3QgSW50U2l6ZSYgY29udGVudFNpemUpCit7CisgICAgaWYgKG1fY29udGVudFNpemUg
PT0gY29udGVudFNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGVudFNpemUgPSBj
b250ZW50U2l6ZTsKKyAgICB1cGRhdGVDb25maWd1cmF0aW9uKCk7Cit9CisKK3ZvaWQgVmlld3Bv
cnRDb25maWd1cmF0aW9uOjpzZXRNaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiBtaW5p
bXVtTGF5b3V0U2l6ZSkKK3sKKyAgICBpZiAobV9taW5pbXVtTGF5b3V0U2l6ZSA9PSBtaW5pbXVt
TGF5b3V0U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9taW5pbXVtTGF5b3V0U2l6ZSA9
IG1pbmltdW1MYXlvdXRTaXplOworICAgIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKTsKK30KKwordm9p
ZCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OnNldFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFZpZXdw
b3J0QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykKK3sKKyAgICBpZiAobV92aWV3cG9ydEFy
Z3VtZW50cyA9PSB2aWV3cG9ydEFyZ3VtZW50cykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV92
aWV3cG9ydEFyZ3VtZW50cyA9IHZpZXdwb3J0QXJndW1lbnRzOworICAgIHVwZGF0ZUNvbmZpZ3Vy
YXRpb24oKTsKK30KKworSW50U2l6ZSBWaWV3cG9ydENvbmZpZ3VyYXRpb246OmxheW91dFNpemUo
KSBjb25zdAoreworICAgIHJldHVybiBJbnRTaXplKGxheW91dFdpZHRoKCksIGxheW91dEhlaWdo
dCgpKTsKK30KKworZG91YmxlIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6aW5pdGlhbFNjYWxlKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoIWNvbnN0cmFpbnRzQXJlQWxsUmVsYXRpdmUobV9jb25maWd1
cmF0aW9uKSk7CisKKyAgICAvLyBJZiB0aGUgZG9jdW1lbnQgaGFzIHNwZWNpZmllZCBpdHMgb3du
IGluaXRpYWwgc2NhbGUsIHVzZSBpdCByZWdhcmRsZXNzLgorICAgIC8vIFRoaXMgaXMgZ3VhcmFu
dGVlZCB0byBiZSBzYW5pdHkgY2hlY2tlZCBhbHJlYWR5LCBzbyBubyBuZWVkIGZvciBNSU4vTUFY
LgorICAgIGlmIChtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlSXNTZXQpCisgICAgICAgIHJl
dHVybiBtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlOworCisgICAgLy8gSWYgbm90LCBpdCBp
cyB1cCB0byB1cyB0byBkZXRlcm1pbmUgdGhlIGluaXRpYWwgc2NhbGUuCisgICAgLy8gV2Ugd2Fu
dCBhIHNjYWxlIHNtYWxsIGVub3VnaCB0byBmaXQgdGhlIGRvY3VtZW50IHdpZHRoLXdpc2UuCisg
ICAgZG91YmxlIHdpZHRoID0gbV9jb250ZW50U2l6ZS53aWR0aCgpID4gMCA/IG1fY29udGVudFNp
emUud2lkdGgoKSA6IGxheW91dFdpZHRoKCk7CisgICAgZG91YmxlIGluaXRpYWxTY2FsZSA9IDA7
CisgICAgaWYgKHdpZHRoID4gMCkKKyAgICAgICAgaW5pdGlhbFNjYWxlID0gbV9taW5pbXVtTGF5
b3V0U2l6ZS53aWR0aCgpIC8gd2lkdGg7CisKKyAgICAvLyBQcmV2ZW50IHRoZSBpbnRpYWwgc2Nh
bGUgZnJvbSBzaHJpbmtpbmcgdG8gYSBoZWlnaHQgc21hbGxlciB0aGFuIG91ciB2aWV3J3MgbWlu
aW11bSBoZWlnaHQuCisgICAgZG91YmxlIGhlaWdodCA9IG1fY29udGVudFNpemUuaGVpZ2h0KCkg
PiAwID8gbV9jb250ZW50U2l6ZS5oZWlnaHQoKSA6IGxheW91dEhlaWdodCgpOworICAgIGlmICho
ZWlnaHQgPiAwICYmIGhlaWdodCAqIGluaXRpYWxTY2FsZSA8IG1fbWluaW11bUxheW91dFNpemUu
aGVpZ2h0KCkpCisgICAgICAgIGluaXRpYWxTY2FsZSA9IG1fbWluaW11bUxheW91dFNpemUuaGVp
Z2h0KCkgLyBoZWlnaHQ7CisgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KGluaXRpYWxTY2Fs
ZSwgbV9jb25maWd1cmF0aW9uLm1pbmltdW1TY2FsZSksIG1fY29uZmlndXJhdGlvbi5tYXhpbXVt
U2NhbGUpOworfQorCitkb3VibGUgVmlld3BvcnRDb25maWd1cmF0aW9uOjptaW5pbXVtU2NhbGUo
KSBjb25zdAoreworICAgIC8vIElmIHdlIHNjYWxlIHRvIGZpdCwgdGhlbiB0aGlzIGlzIG91ciBt
aW5pbXVtIHNjYWxlIGFzIHdlbGwuCisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNj
YWxlSXNTZXQpCisgICAgICAgIHJldHVybiBpbml0aWFsU2NhbGUoKTsKKworICAgIC8vIElmIG5v
dCwgd2Ugc3RpbGwgbmVlZCB0byBzYW5pdHkgY2hlY2sgb3VyIHZhbHVlLgorICAgIGRvdWJsZSBt
aW5pbXVtU2NhbGUgPSBtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlOworCisgICAgZG91Ymxl
IGNvbnRlbnRXaWR0aCA9IG1fY29udGVudFNpemUud2lkdGgoKTsKKyAgICBpZiAoY29udGVudFdp
ZHRoID4gMCAmJiBjb250ZW50V2lkdGggKiBtaW5pbXVtU2NhbGUgPCBtX21pbmltdW1MYXlvdXRT
aXplLndpZHRoKCkpCisgICAgICAgIG1pbmltdW1TY2FsZSA9IG1fbWluaW11bUxheW91dFNpemUu
d2lkdGgoKSAvIGNvbnRlbnRXaWR0aDsKKworICAgIGRvdWJsZSBjb250ZW50SGVpZ2h0ID0gbV9j
b250ZW50U2l6ZS5oZWlnaHQoKTsKKyAgICBpZiAoY29udGVudEhlaWdodCA+IDAgJiYgY29udGVu
dEhlaWdodCAqIG1pbmltdW1TY2FsZSA8IG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkpCisg
ICAgICAgIG1pbmltdW1TY2FsZSA9IG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkgLyBjb250
ZW50SGVpZ2h0OworCisgICAgbWluaW11bVNjYWxlID0gc3RkOjptaW4oc3RkOjptYXgobWluaW11
bVNjYWxlLCBtX2NvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlKSwgbV9jb25maWd1cmF0aW9uLm1h
eGltdW1TY2FsZSk7CisKKyAgICByZXR1cm4gbWluaW11bVNjYWxlOworfQorCitzdGF0aWMgaW5s
aW5lIGJvb2wgdmlld3BvcnRBcmd1bWVudFZhbHVlSXNWYWxpZChmbG9hdCB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gdmFsdWUgPiAwOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5
cGVuYW1lIFZpZXdwb3J0QXJndW1lbnRzVHlwZT4KK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBseVZp
ZXdwb3J0QXJndW1lbnQoVmFsdWVUeXBlJiB2YWx1ZSwgVmlld3BvcnRBcmd1bWVudHNUeXBlIHZp
ZXdwb3J0QXJndW1lbnRWYWx1ZSwgVmFsdWVUeXBlIG1pbmltdW0sIFZhbHVlVHlwZSBtYXhpbXVt
KQoreworICAgIGlmICh2aWV3cG9ydEFyZ3VtZW50VmFsdWVJc1ZhbGlkKHZpZXdwb3J0QXJndW1l
bnRWYWx1ZSkpCisgICAgICAgIHZhbHVlID0gc3RkOjptaW4obWF4aW11bSwgc3RkOjptYXgobWlu
aW11bSwgc3RhdGljX2Nhc3Q8VmFsdWVUeXBlPih2aWV3cG9ydEFyZ3VtZW50VmFsdWUpKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgVmlld3BvcnRBcmd1bWVu
dHNUeXBlPgorc3RhdGljIGlubGluZSB2b2lkIGFwcGx5Vmlld3BvcnRBcmd1bWVudChWYWx1ZVR5
cGUmIHZhbHVlLCBib29sJiB2YWx1ZUlzU2V0LCBWaWV3cG9ydEFyZ3VtZW50c1R5cGUgdmlld3Bv
cnRBcmd1bWVudFZhbHVlLCBWYWx1ZVR5cGUgbWluaW11bSwgVmFsdWVUeXBlIG1heGltdW0pCit7
CisgICAgaWYgKHZpZXdwb3J0QXJndW1lbnRWYWx1ZUlzVmFsaWQodmlld3BvcnRBcmd1bWVudFZh
bHVlKSkgeworICAgICAgICB2YWx1ZSA9IHN0ZDo6bWluKG1heGltdW0sIHN0ZDo6bWF4KG1pbmlt
dW0sIHN0YXRpY19jYXN0PFZhbHVlVHlwZT4odmlld3BvcnRBcmd1bWVudFZhbHVlKSkpOworICAg
ICAgICB2YWx1ZUlzU2V0ID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgdmFsdWVJc1NldCA9
IGZhbHNlOworfQorCit2b2lkIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6dXBkYXRlQ29uZmlndXJh
dGlvbigpCit7CisgICAgbV9jb25maWd1cmF0aW9uID0gbV9kZWZhdWx0Q29uZmlndXJhdGlvbjsK
KworICAgIGNvbnN0IGRvdWJsZSBtaW5pbXVtVmlld3BvcnRBcmd1bWVudHNTY2FsZUZhY3RvciA9
IDAuMTsKKyAgICBjb25zdCBkb3VibGUgbWF4aW11bVZpZXdwb3J0QXJndW1lbnRzU2NhbGVGYWN0
b3IgPSAxMC4wOworCisgICAgYm9vbCB2aWV3cG9ydEFyZ3VtZW50c092ZXJyaWRlc0luaXRpYWxT
Y2FsZTsKKyAgICBib29sIHZpZXdwb3J0QXJndW1lbnRzT3ZlcnJpZGVzV2lkdGg7CisgICAgYm9v
bCB2aWV3cG9ydEFyZ3VtZW50c092ZXJyaWRlc0hlaWdodDsKKworICAgIGFwcGx5Vmlld3BvcnRB
cmd1bWVudChtX2NvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlLCBtX3ZpZXdwb3J0QXJndW1lbnRz
Lm1pblpvb20sIG1pbmltdW1WaWV3cG9ydEFyZ3VtZW50c1NjYWxlRmFjdG9yLCBtYXhpbXVtVmll
d3BvcnRBcmd1bWVudHNTY2FsZUZhY3Rvcik7CisgICAgYXBwbHlWaWV3cG9ydEFyZ3VtZW50KG1f
Y29uZmlndXJhdGlvbi5tYXhpbXVtU2NhbGUsIG1fdmlld3BvcnRBcmd1bWVudHMubWF4Wm9vbSwg
bV9jb25maWd1cmF0aW9uLm1pbmltdW1TY2FsZSwgbWF4aW11bVZpZXdwb3J0QXJndW1lbnRzU2Nh
bGVGYWN0b3IpOworICAgIGFwcGx5Vmlld3BvcnRBcmd1bWVudChtX2NvbmZpZ3VyYXRpb24uaW5p
dGlhbFNjYWxlLCB2aWV3cG9ydEFyZ3VtZW50c092ZXJyaWRlc0luaXRpYWxTY2FsZSwgbV92aWV3
cG9ydEFyZ3VtZW50cy56b29tLCBtX2NvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlLCBtX2NvbmZp
Z3VyYXRpb24ubWF4aW11bVNjYWxlKTsKKworICAgIGRvdWJsZSBtaW5pbXVtVmlld3BvcnRBcmd1
bWVudHNEaW1lbnNpb24gPSAxMDsKKyAgICBkb3VibGUgbWF4aW11bVZpZXdwb3J0QXJndW1lbnRz
RGltZW5zaW9uID0gMTAwMDA7CisgICAgYXBwbHlWaWV3cG9ydEFyZ3VtZW50KG1fY29uZmlndXJh
dGlvbi53aWR0aCwgdmlld3BvcnRBcmd1bWVudHNPdmVycmlkZXNXaWR0aCwgbV92aWV3cG9ydEFy
Z3VtZW50cy53aWR0aCwgbWluaW11bVZpZXdwb3J0QXJndW1lbnRzRGltZW5zaW9uLCBtYXhpbXVt
Vmlld3BvcnRBcmd1bWVudHNEaW1lbnNpb24pOworICAgIGFwcGx5Vmlld3BvcnRBcmd1bWVudCht
X2NvbmZpZ3VyYXRpb24uaGVpZ2h0LCB2aWV3cG9ydEFyZ3VtZW50c092ZXJyaWRlc0hlaWdodCwg
bV92aWV3cG9ydEFyZ3VtZW50cy5oZWlnaHQsIG1pbmltdW1WaWV3cG9ydEFyZ3VtZW50c0RpbWVu
c2lvbiwgbWF4aW11bVZpZXdwb3J0QXJndW1lbnRzRGltZW5zaW9uKTsKKworICAgIGlmICh2aWV3
cG9ydEFyZ3VtZW50c092ZXJyaWRlc0luaXRpYWxTY2FsZSB8fCB2aWV3cG9ydEFyZ3VtZW50c092
ZXJyaWRlc1dpZHRoIHx8IHZpZXdwb3J0QXJndW1lbnRzT3ZlcnJpZGVzSGVpZ2h0KSB7CisgICAg
ICAgIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGVJc1NldCA9IHZpZXdwb3J0QXJndW1lbnRz
T3ZlcnJpZGVzSW5pdGlhbFNjYWxlOworICAgICAgICBtX2NvbmZpZ3VyYXRpb24ud2lkdGhJc1Nl
dCA9IHZpZXdwb3J0QXJndW1lbnRzT3ZlcnJpZGVzV2lkdGg7CisgICAgICAgIG1fY29uZmlndXJh
dGlvbi5oZWlnaHRJc1NldCA9IHZpZXdwb3J0QXJndW1lbnRzT3ZlcnJpZGVzSGVpZ2h0OworICAg
IH0KKworICAgIGlmICh2aWV3cG9ydEFyZ3VtZW50VmFsdWVJc1ZhbGlkKG1fdmlld3BvcnRBcmd1
bWVudHMudXNlclpvb20pKQorICAgICAgICBtX2NvbmZpZ3VyYXRpb24uYWxsb3dzVXNlclNjYWxp
bmcgPSBtX3ZpZXdwb3J0QXJndW1lbnRzLnVzZXJab29tICE9IDAuOworfQorCitpbnQgVmlld3Bv
cnRDb25maWd1cmF0aW9uOjpsYXlvdXRXaWR0aCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFjb25z
dHJhaW50c0FyZUFsbFJlbGF0aXZlKG1fY29uZmlndXJhdGlvbikpOworCisgICAgaWYgKG1fY29u
ZmlndXJhdGlvbi53aWR0aElzU2V0KSB7CisgICAgICAgIC8vIElmIHdlIHNjYWxlIHRvIGZpdCwg
dGhlbiBhY2NlcHQgdGhlIHZpZXdwb3J0IHdpZHRoIHdpdGggc2FuaXR5IGNoZWNraW5nLgorICAg
ICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGVJc1NldCkgeworICAgICAgICAg
ICAgZG91YmxlIG1heGltdW1TY2FsZSA9IHRoaXMtPm1heGltdW1TY2FsZSgpOworICAgICAgICAg
ICAgZG91YmxlIG1heGltdW1Db250ZW50V2lkdGhJblZpZXdwb3J0Q29vcmRpbmF0ZSA9IG1heGlt
dW1TY2FsZSAqIG1fY29uZmlndXJhdGlvbi53aWR0aDsKKyAgICAgICAgICAgIGlmIChtYXhpbXVt
Q29udGVudFdpZHRoSW5WaWV3cG9ydENvb3JkaW5hdGUgPCBtX21pbmltdW1MYXlvdXRTaXplLndp
ZHRoKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgY29udGVudCB6b29tZWQgdG8gbWF4U2Nh
bGUgZG9lcyBub3QgZml0IHRoZSB0aGUgdmlldy4gUmV0dXJuIHRoZSBtaW5pbXVtIHdpZHRoCisg
ICAgICAgICAgICAgICAgLy8gc2F0aXNmeWluZyB0aGUgY29uc3RyYWludCBtYXhpbXVtU2NhbGUu
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0U2l6ZS53
aWR0aCgpIC8gbWF4aW11bVNjYWxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biBzdGQ6OnJvdW5kKG1fY29uZmlndXJhdGlvbi53aWR0aCk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBJZiBub3QsIG1ha2Ugc3VyZSB0aGUgdmlld3BvcnQgd2lkdGggYW5kIGluaXRpYWwgc2Nh
bGUgY2FuIGNvLWV4aXN0LgorICAgICAgICBkb3VibGUgaW5pdGlhbENvbnRlbnRXaWR0aEluVmll
d3BvcnRDb29yZGluYXRlID0gbV9jb25maWd1cmF0aW9uLndpZHRoICogbV9jb25maWd1cmF0aW9u
LmluaXRpYWxTY2FsZTsKKyAgICAgICAgaWYgKGluaXRpYWxDb250ZW50V2lkdGhJblZpZXdwb3J0
Q29vcmRpbmF0ZSA8IG1fY29udGVudFNpemUud2lkdGgoKSkgeworICAgICAgICAgICAgLy8gVGhl
IHNwZWNpZmllZCB3aWR0aCBkb2VzIG5vdCBmaXQgaW4gdmlld3BvcnQuIFJldHVybiB0aGUgbWlu
aW11bSB3aWR0aCB0aGF0IHNhdGlzZnkgdGhlIGluaXRpYWxTY2FsZSBjb25zdHJhaW50LgorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8g
bV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHN0ZDo6cm91bmQobV9jb25maWd1cmF0aW9uLndpZHRoKTsKKyAgICB9CisKKyAgICAvLyBJZiB0
aGUgcGFnZSBoYXMgYSByZWFsIHNjYWxlLCB0aGVuIGp1c3QgcmV0dXJuIHRoZSBtaW5pbXVtIHNp
emUgb3ZlciB0aGUgaW5pdGlhbCBzY2FsZS4KKyAgICBpZiAobV9jb25maWd1cmF0aW9uLmluaXRp
YWxTY2FsZUlzU2V0ICYmICFtX2NvbmZpZ3VyYXRpb24uaGVpZ2h0SXNTZXQpCisgICAgICAgIHJl
dHVybiBzdGQ6OnJvdW5kKG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSAvIG1fY29uZmlndXJh
dGlvbi5pbml0aWFsU2NhbGUpOworCisgICAgaWYgKG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0
KCkgPiAwKQorICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX21pbmltdW1MYXlvdXRTaXplLndp
ZHRoKCkgKiBsYXlvdXRIZWlnaHQoKSAvIG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkpOwor
ICAgIHJldHVybiBtX21pbmltdW1MYXlvdXRTaXplLndpZHRoKCk7Cit9CisKK2ludCBWaWV3cG9y
dENvbmZpZ3VyYXRpb246OmxheW91dEhlaWdodCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFjb25z
dHJhaW50c0FyZUFsbFJlbGF0aXZlKG1fY29uZmlndXJhdGlvbikpOworCisgICAgaWYgKG1fY29u
ZmlndXJhdGlvbi5oZWlnaHRJc1NldCkgeworICAgICAgICAvLyBJZiB3ZSBzY2FsZSB0byBmaXQs
IHRoZW4gYWNjZXB0IHRoZSB2aWV3cG9ydCBoZWlnaHQgd2l0aCBzYW5pdHkgY2hlY2tpbmcuCisg
ICAgICAgIGlmICghbV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZUlzU2V0KSB7CisgICAgICAg
ICAgICBkb3VibGUgbWF4aW11bVNjYWxlID0gdGhpcy0+bWF4aW11bVNjYWxlKCk7CisgICAgICAg
ICAgICBkb3VibGUgbWF4aW11bUNvbnRlbnRIZWlnaHRJblZpZXdwb3J0Q29vcmRpbmF0ZSA9IG1h
eGltdW1TY2FsZSAqIG1fY29uZmlndXJhdGlvbi5oZWlnaHQ7CisgICAgICAgICAgICBpZiAobWF4
aW11bUNvbnRlbnRIZWlnaHRJblZpZXdwb3J0Q29vcmRpbmF0ZSA8IG1fbWluaW11bUxheW91dFNp
emUuaGVpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgY29udGVudCB6b29tZWQgdG8g
bWF4U2NhbGUgZG9lcyBub3QgZml0IHRoZSB0aGUgdmlldy4gUmV0dXJuIHRoZSBtaW5pbXVtIGhl
aWdodCB0aGF0CisgICAgICAgICAgICAgICAgLy8gc2F0aXNmeSB0aGUgY29uc3RyYWludCBtYXhp
bXVtU2NhbGUuCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVtTGF5
b3V0U2l6ZS5oZWlnaHQoKSAvIG1heGltdW1TY2FsZSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpyb3VuZChtX2NvbmZpZ3VyYXRpb24uaGVpZ2h0KTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIElmIG5vdCwgbWFrZSBzdXJlIHRoZSB2aWV3cG9ydCB3aWR0aCBhbmQg
aW5pdGlhbCBzY2FsZSBjYW4gY28tZXhpc3QuCisgICAgICAgIGRvdWJsZSBpbml0aWFsQ29udGVu
dEhlaWdodEluVmlld3BvcnRDb29yZGluYXRlID0gbV9jb25maWd1cmF0aW9uLmhlaWdodCAqIG1f
Y29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGU7CisgICAgICAgIGlmIChpbml0aWFsQ29udGVudEhl
aWdodEluVmlld3BvcnRDb29yZGluYXRlIDwgbV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSkg
eworICAgICAgICAgICAgLy8gVGhlIHNwZWNpZmllZCB3aWR0aCBkb2VzIG5vdCBmaXQgaW4gdmll
d3BvcnQuIFJldHVybiB0aGUgbWluaW11bSBoZWlnaHQgdGhhdCBzYXRpc2Z5IHRoZSBpbml0aWFs
U2NhbGUgY29uc3RyYWludC4KKyAgICAgICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1fbWluaW11
bUxheW91dFNpemUuaGVpZ2h0KCkgLyBtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX2NvbmZpZ3VyYXRpb24uaGVpZ2h0
KTsKKyAgICB9CisKKyAgICAvLyBJZiB0aGUgcGFnZSBoYXMgYSByZWFsIHNjYWxlLCB0aGVuIGp1
c3QgcmV0dXJuIHRoZSBtaW5pbXVtIHNpemUgb3ZlciB0aGUgaW5pdGlhbCBzY2FsZS4KKyAgICBp
ZiAobV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZUlzU2V0ICYmICFtX2NvbmZpZ3VyYXRpb24u
d2lkdGhJc1NldCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0U2l6
ZS5oZWlnaHQoKSAvIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGUpOworCisgICAgaWYgKG1f
bWluaW11bUxheW91dFNpemUud2lkdGgoKSA+IDApCisgICAgICAgIHJldHVybiBzdGQ6OnJvdW5k
KG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkgKiBsYXlvdXRXaWR0aCgpIC8gbV9taW5pbXVt
TGF5b3V0U2l6ZS53aWR0aCgpKTsKKyAgICByZXR1cm4gbV9taW5pbXVtTGF5b3V0U2l6ZS5oZWln
aHQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Vmlld3BvcnRDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJhNTJmZmI4NjM4MGJkZmRhNWRh
ZDYxOGE2NDQ3MjU0Y2MwYzU4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNS0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBWaWV3cG9ydENvbmZpZ3VyYXRpb25faAorI2RlZmluZSBWaWV3cG9ydENv
bmZpZ3VyYXRpb25faAorCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlZpZXdwb3J0
QXJndW1lbnRzLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgVmlld3BvcnRDb25maWd1cmF0aW9uIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShWaWV3cG9ydENvbmZpZ3VyYXRpb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICAvLyBGSVhNRTogdW5pZnkgd2l0aCBWaWV3cG9ydEFyZ3VtZW50cy4K
KyAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CisgICAgICAgIFBhcmFtZXRlcnMoKQorICAgICAgICAg
ICAgOiB3aWR0aCgwKQorICAgICAgICAgICAgLCBoZWlnaHQoMCkKKyAgICAgICAgICAgICwgaW5p
dGlhbFNjYWxlKDApCisgICAgICAgICAgICAsIG1pbmltdW1TY2FsZSgwKQorICAgICAgICAgICAg
LCBtYXhpbXVtU2NhbGUoMCkKKyAgICAgICAgICAgICwgYWxsb3dzVXNlclNjYWxpbmcoZmFsc2Up
CisgICAgICAgICAgICAsIHdpZHRoSXNTZXQoZmFsc2UpCisgICAgICAgICAgICAsIGhlaWdodElz
U2V0KGZhbHNlKQorICAgICAgICAgICAgLCBpbml0aWFsU2NhbGVJc1NldChmYWxzZSkKKyAgICAg
ICAgeworICAgICAgICB9CisKKyAgICAgICAgZG91YmxlIHdpZHRoOworICAgICAgICBkb3VibGUg
aGVpZ2h0OworICAgICAgICBkb3VibGUgaW5pdGlhbFNjYWxlOworICAgICAgICBkb3VibGUgbWlu
aW11bVNjYWxlOworICAgICAgICBkb3VibGUgbWF4aW11bVNjYWxlOworICAgICAgICBib29sIGFs
bG93c1VzZXJTY2FsaW5nOworCisgICAgICAgIGJvb2wgd2lkdGhJc1NldDsKKyAgICAgICAgYm9v
bCBoZWlnaHRJc1NldDsKKyAgICAgICAgYm9vbCBpbml0aWFsU2NhbGVJc1NldDsKKyAgICB9Owor
CisgICAgVmlld3BvcnRDb25maWd1cmF0aW9uKCk7CisKKyAgICBjb25zdCBQYXJhbWV0ZXJzJiBk
ZWZhdWx0Q29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdENvbmZpZ3VyYXRp
b247IH0KKyAgICB2b2lkIHNldERlZmF1bHRDb25maWd1cmF0aW9uKGNvbnN0IFBhcmFtZXRlcnMm
KTsKKworICAgIGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGVudFNpemU7IH0KKyAgICB2b2lkIHNldENvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXplJik7
CisKKyAgICBjb25zdCBJbnRTaXplJiBtaW5pbXVtTGF5b3V0U2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWluaW11bUxheW91dFNpemU7IH0KKyAgICB2b2lkIHNldE1pbmltdW1MYXlvdXRTaXplKGNv
bnN0IEludFNpemUmKTsKKworICAgIGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiB2aWV3cG9ydEFy
Z3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRBcmd1bWVudHM7IH0KKyAgICB2b2lk
IHNldFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJik7CisKKyAgICBJ
bnRTaXplIGxheW91dFNpemUoKSBjb25zdDsKKyAgICBkb3VibGUgaW5pdGlhbFNjYWxlKCkgY29u
c3Q7CisgICAgZG91YmxlIG1pbmltdW1TY2FsZSgpIGNvbnN0OworICAgIGRvdWJsZSBtYXhpbXVt
U2NhbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ubWF4aW11bVNjYWxlOyB9Cisg
ICAgYm9vbCBhbGxvd3NVc2VyU2NhbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlv
bi5hbGxvd3NVc2VyU2NhbGluZzsgfQorCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlQ29uZmln
dXJhdGlvbigpOworICAgIGludCBsYXlvdXRXaWR0aCgpIGNvbnN0OworICAgIGludCBsYXlvdXRI
ZWlnaHQoKSBjb25zdDsKKworICAgIFBhcmFtZXRlcnMgbV9jb25maWd1cmF0aW9uOworICAgIFBh
cmFtZXRlcnMgbV9kZWZhdWx0Q29uZmlndXJhdGlvbjsKKyAgICBJbnRTaXplIG1fY29udGVudFNp
emU7CisgICAgSW50U2l6ZSBtX21pbmltdW1MYXlvdXRTaXplOworICAgIFZpZXdwb3J0QXJndW1l
bnRzIG1fdmlld3BvcnRBcmd1bWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBWaWV3cG9ydENvbmZpZ3VyYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCmluZGV4IGViMzRh
NGZhMjY5MGQ2ZjExODhkMmU4MzYxZGNlMmJhYzJkZGYyNzAuLjMyMDBiZjdjNzkzYzlhNjBlMWYw
M2M1NDkzNWVlZjhmNTYwZjcyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTE1NSwxMSArMTU1LDMxIEBA
IHB1YmxpYzoKICAgICBIYXNoTWFwPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5
ZXJJRCwgTGF5ZXJQcm9wZXJ0aWVzPiBjaGFuZ2VkTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9j
aGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzOyB9CiAgICAgVmVjdG9yPFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXI6OlBsYXRmb3JtTGF5ZXJJRD4gZGVzdHJveWVkTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9k
ZXN0cm95ZWRMYXllcklEczsgfQogCisgICAgV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50c1NpemUo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzU2l6ZTsgfQorICAgIHZvaWQgc2V0Q29udGVudHNT
aXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpIHsgbV9jb250ZW50c1NpemUgPSBzaXpl
OyB9OworCisgICAgZG91YmxlIHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZVNjYWxlRmFjdG9yOyB9CisgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoZG91YmxlIHBhZ2VT
Y2FsZUZhY3RvcikgeyBtX3BhZ2VTY2FsZUZhY3RvciA9IHBhZ2VTY2FsZUZhY3RvcjsgfQorCisg
ICAgZG91YmxlIG1pbmltdW1TY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bVNj
YWxlRmFjdG9yOyB9CisgICAgdm9pZCBzZXRNaW5pbXVtU2NhbGVGYWN0b3IoZG91YmxlIHNjYWxl
KSB7IG1fbWluaW11bVNjYWxlRmFjdG9yID0gc2NhbGU7IH0KKworICAgIGRvdWJsZSBtYXhpbXVt
U2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX21heGltdW1TY2FsZUZhY3RvcjsgfQorICAg
IHZvaWQgc2V0TWF4aW11bVNjYWxlRmFjdG9yKGRvdWJsZSBzY2FsZSkgeyBtX21heGltdW1TY2Fs
ZUZhY3RvciA9IHNjYWxlOyB9CisKKyAgICBib29sIGFsbG93c1VzZXJTY2FsaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9hbGxvd3NVc2VyU2NhbGluZzsgfQorICAgIHZvaWQgc2V0QWxsb3dzVXNlclNj
YWxpbmcoYm9vbCBhbGxvd3NVc2VyU2NhbGluZykgeyBtX2FsbG93c1VzZXJTY2FsaW5nID0gYWxs
b3dzVXNlclNjYWxpbmc7IH0KKwogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjpQbGF0Zm9ybUxheWVySUQgbV9yb290TGF5ZXJJRDsKICAgICBIYXNoTWFwPFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCwgTGF5ZXJQcm9wZXJ0aWVzPiBtX2NoYW5nZWRM
YXllclByb3BlcnRpZXM7CiAgICAgVmVjdG9yPExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzPiBtX2Ny
ZWF0ZWRMYXllcnM7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3Jt
TGF5ZXJJRD4gbV9kZXN0cm95ZWRMYXllcklEczsKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1fY29u
dGVudHNTaXplOworICAgIGRvdWJsZSBtX3BhZ2VTY2FsZUZhY3RvcjsKKyAgICBkb3VibGUgbV9t
aW5pbXVtU2NhbGVGYWN0b3I7CisgICAgZG91YmxlIG1fbWF4aW11bVNjYWxlRmFjdG9yOworICAg
IGJvb2wgbV9hbGxvd3NVc2VyU2NhbGluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24ubW0KaW5kZXggMjc2OWFiOGYzYWEwMDQ2Y2YxZDlkYjRmNDdkNzVmZDgxYzZlYzkz
Mi4uMjNmMzVkYzQxMjhlZTUzZmU1ZGU2Y2E0NTg4YTY4MzQ5NWQ2MjU5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
Lm1tCkBAIC0zNDgsNiArMzQ4LDExIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVy
IDw8IG1fY3JlYXRlZExheWVyczsKICAgICBlbmNvZGVyIDw8IG1fY2hhbmdlZExheWVyUHJvcGVy
dGllczsKICAgICBlbmNvZGVyIDw8IG1fZGVzdHJveWVkTGF5ZXJJRHM7CisgICAgZW5jb2RlciA8
PCBtX2NvbnRlbnRzU2l6ZTsKKyAgICBlbmNvZGVyIDw8IG1fcGFnZVNjYWxlRmFjdG9yOworICAg
IGVuY29kZXIgPDwgbV9taW5pbXVtU2NhbGVGYWN0b3I7CisgICAgZW5jb2RlciA8PCBtX21heGlt
dW1TY2FsZUZhY3RvcjsKKyAgICBlbmNvZGVyIDw8IG1fYWxsb3dzVXNlclNjYWxpbmc7CiB9CiAK
IGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZShJUEM6OkFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIHJlc3VsdCkKQEAgLTM3
MSw2ICszNzYsMjEgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKElQ
Qzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2NvbnRl
bnRzU2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0Lm1fcGFnZVNjYWxlRmFjdG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9taW5pbXVtU2NhbGVGYWN0b3IpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX21h
eGltdW1TY2FsZUZhY3RvcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0Lm1fYWxsb3dzVXNlclNjYWxpbmcpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNDlmOTlmYzZiZWQ1
NGUyMjQyMWJjZGNjMGM0NmYwNTI0OWFhYTg2NS4uMjI1NWZkY2QxNTBhMWYyMjk5MWUxNTQwYjY0
ODA2ZjhkMTdlZTRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC02Miw3ICs2Miw2IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBXZWJTZWN1cml0eU9yaWdpbiYsIEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9v
bCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGll
cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKSBvdmVycmlkZTsKQEAgLTEwMSwx
MSArMTAwLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudFdhc05vdEhh
bmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBjbGVhckN1c3RvbVN3aXBlVmlld3MoKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCBtYWluRG9jdW1lbnREaWRSZWNlaXZlTW9iaWxlRG9jVHlwZSgpIG92ZXJyaWRl
OwotCiAgICAgdmlydHVhbCB2b2lkIGRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpGbG9hdFF1YWQ+JiBoaWdobGlnaHRlZFF1YWRzLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BSaWdodFJhZGl1
cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRD
aGFuZ2VWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYg
dmlld3BvcnRBcmd1bWVudHMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRM
YXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzdGFydEFzc2lzdGluZ05vZGUoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIGJvb2wgaGFzTmV4dEZvY3VzYWJsZSwgYm9vbCBoYXNQcmV2aW91c0ZvY3VzYWJsZSkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBc3Npc3RpbmdOb2RlKCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCmluZGV4IDc3NzVlZjZhYTkwMTMzNTRjNWQyNzllYTQ2MTg2MWUyY2E3MzU1YWUuLjhl
MWEyZmY2N2JiZDIzNTYxNmQ5ZTA4YTY1MzRkZjgwODA3NWY1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0x
NDcsMTEgKzE0Nyw2IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExvYWRGb3JNYWlu
RnJhbWUoKQogICAgIFttX3ZpZXcgX2RpZENvbW1pdExvYWRGb3JNYWluRnJhbWVdOwogfQogCi12
b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBJbnRTaXplJiBj
b250ZW50c1NpemUpCi17Ci0gICAgW21fdmlldyBfZGlkQ2hhbmdlQ29udGVudFNpemU6Y29udGVu
dHNTaXplXTsKLX0KLQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNv
ciYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTM0NCwxOSArMzM5LDE0IEBAIHZvaWQg
UGFnZUNsaWVudEltcGw6OmNsZWFyQ3VzdG9tU3dpcGVWaWV3cygpCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6bWFpbkRvY3VtZW50RGlkUmVjZWl2ZU1v
YmlsZURvY1R5cGUoKQotewotICAgIFttX3ZpZXcgX2RpZFJlY2VpdmVNb2JpbGVEb2NUeXBlRm9y
TWFpbkZyYW1lXTsKLX0KLQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkR2V0VGFwSGlnaGxpZ2h0
R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xv
ciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mIGhpZ2hsaWdodGVkUXVhZHMsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21MZWZ0UmFk
aXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21SaWdodFJhZGl1cykKIHsKICAgICBb
bV92aWV3IF9kaWRHZXRUYXBIaWdobGlnaHRGb3JSZXF1ZXN0OnJlcXVlc3RJRCBjb2xvcjpjb2xv
ciBxdWFkczpoaWdobGlnaHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6dG9wTGVmdFJhZGl1cyB0b3BS
aWdodFJhZGl1czp0b3BSaWdodFJhZGl1cyBib3R0b21MZWZ0UmFkaXVzOmJvdHRvbUxlZnRSYWRp
dXMgYm90dG9tUmlnaHRSYWRpdXM6Ym90dG9tUmlnaHRSYWRpdXNdOwogfQogCi12b2lkIFBhZ2VD
bGllbnRJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3
cG9ydEFyZ3VtZW50cyYgdmlld3BvcnRBcmd1bWVudHMpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpk
aWRDb21taXRMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIGxheWVy
VHJlZVRyYW5zYWN0aW9uKQogewotICAgIFttX3ZpZXcgX2RpZENoYW5nZVZpZXdwb3J0QXJndW1l
bnRzOnZpZXdwb3J0QXJndW1lbnRzXTsKKyAgICBbbV92aWV3IF9kaWRDb21taXRMYXllclRyZWU6
bGF5ZXJUcmVlVHJhbnNhY3Rpb25dOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFydEFz
c2lzdGluZ05vZGUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGJvb2wsIGJvb2wpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3LmgKaW5kZXggMWNl
MjRkNjJhMmVhNDFhNjcyNDRhMzlmNTI3MDhiYzVjMmY3NzA4OC4uY2RjODg2ZWI4YTc1YjNlOGYy
OTRkZTU0YWE1NzE0YThiZjBmM2EyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvaW9zL1dLQ29udGVudFZpZXcuaApAQCAtMzksMTMgKzM5LDE0IEBAIHR5cGVkZWYgTlNf
RU5VTSh1bnNpZ25lZCwgV0tDb250ZW50VHlwZSkKICAgICBJbWFnZQogfTsKIAorbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKK30KKwogQHByb3Rv
Y29sIFdLQ29udGVudFZpZXdEZWxlZ2F0ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwKLS0gKHZvaWQp
Y29udGVudFZpZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldyBjb250ZW50c1NpemVEaWRD
aGFuZ2U6KENHU2l6ZSluZXdTaXplOwogLSAodm9pZCljb250ZW50Vmlld0RpZENvbW1pdExvYWRG
b3JNYWluRnJhbWU6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldzsKLS0gKHZvaWQpY29udGVu
dFZpZXdEaWRSZWNlaXZlTW9iaWxlRG9jVHlwZTooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3
OwotLSAodm9pZCljb250ZW50VmlldzooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3IGRpZENo
YW5nZVZpZXdwb3J0QXJndW1lbnRzU2l6ZTooQ0dTaXplKW5ld1NpemUgaW5pdGlhbFNjYWxlOihm
bG9hdClpbml0aWFsU2NhbGUgbWluaW11bVNjYWxlOihmbG9hdCltaW5pbXVtU2NhbGUgbWF4aW11
bVNjYWxlOihmbG9hdCltYXhpbXVtU2NhbGUgYWxsb3dzVXNlclNjYWxpbmc6KGZsb2F0KWFsbG93
c1VzZXJTY2FsaW5nOwotCistICh2b2lkKWNvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopY29u
dGVudFZpZXcgZGlkQ29tbWl0TGF5ZXJUcmVlOihjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uJilsYXllclRyZWVUcmFuc2FjdGlvbjsKIEBlbmQKIAogV0tfQVBJX0NMQVNT
CkBAIC02NiwxMCArNjcsMTIgQEAgV0tfQVBJX0NMQVNTCiAKIC0gKHZvaWQpc2V0TWluaW11bVNp
emU6KENHU2l6ZSlzaXplOwogLSAodm9pZClzZXRWaWV3cG9ydFNpemU6KENHU2l6ZSlzaXplOwor
LSAodm9pZClzZXRNaW5pbXVtTGF5b3V0U2l6ZTooQ0dTaXplKXNpemU7CiAKIC0gKHZvaWQpZGlk
RmluaXNoU2Nyb2xsVG86KENHUG9pbnQpY29udGVudE9mZnNldDsKIC0gKHZvaWQpZGlkU2Nyb2xs
VG86KENHUG9pbnQpY29udGVudE9mZnNldDsKIC0gKHZvaWQpZGlkWm9vbVRvU2NhbGU6KENHRmxv
YXQpc2NhbGU7CiAtICh2b2lkKXdpbGxTdGFydFpvb21PclNjcm9sbDsKKy0gKHZvaWQpd2lsbFN0
YXJ0VXNlclRyaWdnZXJlZFpvb207CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDU2YzAwOGNhYzdlMDZkZjFhNDA2
MjRiYWI5YWZmYTNjZTBkNGZjODQuLmI2Nzk1NDhlYzE3NzJkZTFmYWQ4MmI0N2I1MGVmYmVkNzA1
NmMxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29u
dGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250
ZW50Vmlldy5tbQpAQCAtMjA5LDYgKzIwOSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
ICAgIFtzZWxmIF91cGRhdGVWaWV3RXhwb3NlZFJlY3RdOwogfQogCistICh2b2lkKXNldE1pbmlt
dW1MYXlvdXRTaXplOihDR1NpemUpc2l6ZQoreworICAgIF9wYWdlLT5zZXRWaWV3cG9ydENvbmZp
Z3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShJbnRTaXplKENHQ2VpbGluZyhzaXplLndpZHRoKSwg
Q0dDZWlsaW5nKHNpemUuaGVpZ2h0KSkpOworfQorCiAtICh2b2lkKWRpZEZpbmlzaFNjcm9sbFRv
OihDR1BvaW50KWNvbnRlbnRPZmZzZXQKIHsKICAgICBfY3VycmVudEV4cG9zZWRSZWN0UG9zaXRp
b24gPSBjb250ZW50T2Zmc2V0OwpAQCAtMjMxLDYgKzIzNiwxMSBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogICAgIFtfaW50ZXJhY3Rpb25WaWV3IF93aWxsU3RhcnRTY3JvbGxpbmdPclpvb21p
bmddOwogfQogCistICh2b2lkKXdpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29tCit7CisgICAgX3Bh
Z2UtPndpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29taW5nKCk7Cit9CisKIC0gKHZvaWQpZGlkWm9v
bVRvU2NhbGU6KENHRmxvYXQpc2NhbGUKIHsKICAgICBfcGFnZS0+ZGlkRmluaXNoWm9vbWluZyhz
Y2FsZSk7CkBAIC0zMDQsMjYgKzMxNCwxNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAg
ICAgICBbX2RlbGVnYXRlIGNvbnRlbnRWaWV3RGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZTpzZWxm
XTsKIH0KIAotLSAodm9pZClfZGlkQ2hhbmdlQ29udGVudFNpemU6KENHU2l6ZSljb250ZW50c1Np
emUKKy0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlVHJhbnNhY3Rpb24KIHsKKyAgICBDR1NpemUgY29u
dGVudHNTaXplID0gbGF5ZXJUcmVlVHJhbnNhY3Rpb24uY29udGVudHNTaXplKCk7CisKICAgICBb
c2VsZiBzZXRCb3VuZHM6e0NHUG9pbnRaZXJvLCBjb250ZW50c1NpemV9XTsKICAgICBbX2ludGVy
YWN0aW9uVmlldyBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIGNvbnRlbnRzU2l6ZS53aWR0aCwg
Y29udGVudHNTaXplLmhlaWdodCldOwogICAgIFtfcm9vdENvbnRlbnRWaWV3IHNldEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgY29udGVudHNTaXplLndpZHRoLCBjb250ZW50c1NpemUuaGVpZ2h0KV07
CiAKLSAgICBpZiAoW19kZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRl
bnRWaWV3OmNvbnRlbnRzU2l6ZURpZENoYW5nZTopXSkKLSAgICAgICAgW19kZWxlZ2F0ZSBjb250
ZW50VmlldzpzZWxmIGNvbnRlbnRzU2l6ZURpZENoYW5nZTpjb250ZW50c1NpemVdOwotfQotCi0t
ICh2b2lkKV9kaWRSZWNlaXZlTW9iaWxlRG9jVHlwZUZvck1haW5GcmFtZQotewotICAgIGlmIChb
X2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY29udGVudFZpZXdEaWRSZWNl
aXZlTW9iaWxlRG9jVHlwZTopXSkKLSAgICAgICAgW19kZWxlZ2F0ZSBjb250ZW50Vmlld0RpZFJl
Y2VpdmVNb2JpbGVEb2NUeXBlOnNlbGZdOwotfQotCi0tICh2b2lkKV9kaWRDaGFuZ2VWaWV3cG9y
dEFyZ3VtZW50czooY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKWFyZ3VtZW50cwot
ewotICAgIGlmIChbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY29udGVu
dFZpZXc6ZGlkQ2hhbmdlVmlld3BvcnRBcmd1bWVudHNTaXplOmluaXRpYWxTY2FsZTptaW5pbXVt
U2NhbGU6bWF4aW11bVNjYWxlOmFsbG93c1VzZXJTY2FsaW5nOildKQotICAgICAgICBbX2RlbGVn
YXRlIGNvbnRlbnRWaWV3OnNlbGYgZGlkQ2hhbmdlVmlld3BvcnRBcmd1bWVudHNTaXplOkNHU2l6
ZU1ha2UoYXJndW1lbnRzLndpZHRoLCBhcmd1bWVudHMuaGVpZ2h0KSBpbml0aWFsU2NhbGU6YXJn
dW1lbnRzLnpvb20gbWluaW11bVNjYWxlOmFyZ3VtZW50cy5taW5ab29tIG1heGltdW1TY2FsZTph
cmd1bWVudHMubWF4Wm9vbSBhbGxvd3NVc2VyU2NhbGluZzphcmd1bWVudHMudXNlclpvb21dOwor
ICAgIGlmIChbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY29udGVudFZp
ZXc6ZGlkQ29tbWl0TGF5ZXJUcmVlOildKQorICAgICAgICBbX2RlbGVnYXRlIGNvbnRlbnRWaWV3
OnNlbGYgZGlkQ29tbWl0TGF5ZXJUcmVlOmxheWVyVHJlZVRyYW5zYWN0aW9uXTsKIH0KIAogLSAo
dm9pZClfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDoodWludDY0X3QpcmVxdWVzdElEIGNv
bG9yOihjb25zdCBDb2xvciYpY29sb3IgcXVhZHM6KGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+Jilo
aWdobGlnaHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6KGNvbnN0IEludFNpemUmKXRvcExlZnRSYWRp
dXMgdG9wUmlnaHRSYWRpdXM6KGNvbnN0IEludFNpemUmKXRvcFJpZ2h0UmFkaXVzIGJvdHRvbUxl
ZnRSYWRpdXM6KGNvbnN0IEludFNpemUmKWJvdHRvbUxlZnRSYWRpdXMgYm90dG9tUmlnaHRSYWRp
dXM6KGNvbnN0IEludFNpemUmKWJvdHRvbVJpZ2h0UmFkaXVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXdJbnRlcm5hbC5oCmluZGV4
IDJiZjhhMGRkNmU3MTViN2Y2MGFiNjRhYTQ0MjMzYWFmODM5MGYzMDYuLjA0Y2JmZDhhZWVkMTc0
NWNkMTRjZjUyMGIwNjkyYWRhNzlmNDZkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXdJbnRlcm5hbC5oCkBAIC0zOCw2ICsz
OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKIGNsYXNz
IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTsKIGNsYXNzIExheWVyVHJlZUNvbnRl
eHQ7CitjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFdlYkZyYW1lUHJv
eHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKQEAgLTU3
LDkgKzU4LDcgQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOwogLSAo
dm9pZClfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcjooQ0FMYXllciAqKXJvb3RM
YXllcjsKIAogLSAodm9pZClfZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZTsKLS0gKHZvaWQpX2Rp
ZENoYW5nZUNvbnRlbnRTaXplOihDR1NpemUpY29udGVudHNTaXplOwotLSAodm9pZClfZGlkUmVj
ZWl2ZU1vYmlsZURvY1R5cGVGb3JNYWluRnJhbWU7Ci0tICh2b2lkKV9kaWRDaGFuZ2VWaWV3cG9y
dEFyZ3VtZW50czooY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKXZpZXdwb3J0QXJn
dW1lbnRzOworLSAodm9pZClfZGlkQ29tbWl0TGF5ZXJUcmVlOihjb25zdCBXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uJilsYXllclRyZWVUcmFuc2FjdGlvbjsKIAogLSAodm9pZClf
ZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDoodWludDY0X3QpcmVxdWVzdElEIGNvbG9yOihj
b25zdCBXZWJDb3JlOjpDb2xvciYpY29sb3IgcXVhZHM6KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpG
bG9hdFF1YWQ+JiloaWdobGlnaHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKXRvcExlZnRSYWRpdXMgdG9wUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmKXRvcFJpZ2h0UmFkaXVzIGJvdHRvbUxlZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmKWJvdHRvbUxlZnRSYWRpdXMgYm90dG9tUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKWJvdHRvbVJpZ2h0UmFkaXVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS1ZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2lvcy9XS1ZpZXdJT1MubW0KaW5kZXggNTUzNWYyZDQ3YjY0MGY2NTM1ZGMzZGY5NmVm
YjA5N2JmZjQyNzAwMS4uZjc1ZmE2ZmY2NGExZTIwNWUxYjExNzRiNGU4ODFiZjA0YzUzNmQzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbQpAQCAt
MzIsMTQgKzMyLDEwIEBACiAjaW1wb3J0ICJXS1Njcm9sbFZpZXcuaCIKICNpbXBvcnQgPFVJS2l0
L1VJU2NyZWVuLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXdfUHJpdmF0ZS5oPgotI2lt
cG9ydCA8VUlLaXQvX1VJV2ViVmlld3BvcnRIYW5kbGVyLmg+CisjaW1wb3J0IDxXZWJLaXQyL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
LXN0YXRpYyBjb25zdCBmbG9hdCBtaW5XZWJWaWV3U2NhbGUgPSAwLjI1Owotc3RhdGljIGNvbnN0
IGZsb2F0IG1heFdlYlZpZXdTY2FsZSA9IDU7Ci1zdGF0aWMgc3RydWN0IF9VSVdlYlZpZXdwb3J0
Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29uZmlndXJhdGlvbiA9IHsgeyBVSVdlYlZp
ZXdwb3J0U3RhbmRhcmRWaWV3cG9ydFdpZHRoLCBVSVdlYlZpZXdwb3J0R3Jvd3NBbmRTaHJpbmtz
VG9GaXRIZWlnaHQgfSwgVUlXZWJWaWV3cG9ydFNjYWxlRm9yU2NhbGVzVG9GaXQsIG1pbldlYlZp
ZXdTY2FsZSwgbWF4V2ViVmlld1NjYWxlLCB0cnVlIH07Ci0KLUBpbnRlcmZhY2UgV0tWaWV3ICgp
IDxVSVNjcm9sbFZpZXdEZWxlZ2F0ZSwgV0tDb250ZW50Vmlld0RlbGVnYXRlLCBfVUlXZWJWaWV3
cG9ydEhhbmRsZXJEZWxlZ2F0ZT4KK0BpbnRlcmZhY2UgV0tWaWV3ICgpIDxVSVNjcm9sbFZpZXdE
ZWxlZ2F0ZSwgV0tDb250ZW50Vmlld0RlbGVnYXRlPgogLSAodm9pZClfc2V0RG9jdW1lbnRTY2Fs
ZTooQ0dGbG9hdCluZXdTY2FsZTsKIEBlbmQKIApAQCAtNDcsOSArNDMsOSBAQCBzdGF0aWMgc3Ry
dWN0IF9VSVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29uZmlndXJh
dGlvbiA9IHsgeyBVSQogICAgIFJldGFpblB0cjxXS1Njcm9sbFZpZXc+IF9zY3JvbGxWaWV3Owog
ICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiBfY29udGVudFZpZXc7CiAKLSAgICBCT09MIF91
c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZTsKLSAgICBSZXRhaW5QdHI8X1VJV2ViVmlld3BvcnRIYW5k
bGVyPiBfdmlld3BvcnRIYW5kbGVyOworICAgIEJPT0wgX2lzV2FpdGluZ0Zvck5ld0xheWVyVHJl
ZUFmdGVyRGlkQ29tbWl0TG9hZDsKICAgICBCT09MIF9oYXNTdGF0aWNNaW5pbXVtTGF5b3V0U2l6
ZTsKKyAgICBDR1NpemUgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGU7CiB9CiAKIC0gKGlkKWlu
aXRXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgpAQCAtMTAzLDgyICs5OSwyNyBAQCBzdGF0aWMg
c3RydWN0IF9VSVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29uZmln
dXJhdGlvbiA9IHsgeyBVSQogCiAjcHJhZ21hIG1hcmsgV0tDb250ZW50Vmlld0RlbGVnYXRlCiAK
LS0gKHZvaWQpY29udGVudFZpZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldyBjb250ZW50
c1NpemVEaWRDaGFuZ2U6KENHU2l6ZSluZXdTaXplCi17Ci0gICAgQ0dGbG9hdCB6b29tU2NhbGUg
PSBbX3Njcm9sbFZpZXcgem9vbVNjYWxlXTsKLSAgICBDR1NpemUgY29udGVudHNTaXplSW5TY3Jv
bGxWaWV3Q29vcmRpbmF0ZXMgPSBDR1NpemVNYWtlKG5ld1NpemUud2lkdGggKiB6b29tU2NhbGUs
IG5ld1NpemUuaGVpZ2h0ICogem9vbVNjYWxlKTsKLSAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVu
dFNpemU6Y29udGVudHNTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXNdOwotCi0gICAgW192aWV3
cG9ydEhhbmRsZXIgdXBkYXRlOl57Ci0gICAgICAgICBbX3ZpZXdwb3J0SGFuZGxlciBzZXREb2N1
bWVudEJvdW5kczp7Q0dQb2ludFplcm8sIG5ld1NpemV9XTsKLSAgICB9XTsKLX0KLQogLSAodm9p
ZCljb250ZW50Vmlld0RpZENvbW1pdExvYWRGb3JNYWluRnJhbWU6KFdLQ29udGVudFZpZXcgKilj
b250ZW50VmlldwogewotICAgIF91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZSA9IE5POwotCi0gICAg
V0tDb250ZW50VHlwZSBjb250ZW50VHlwZSA9IFtfY29udGVudFZpZXcgY29udGVudFR5cGVdOwot
ICAgIFtfdmlld3BvcnRIYW5kbGVyIHVwZGF0ZTpeewotICAgICAgICBbX3ZpZXdwb3J0SGFuZGxl
ciBjbGVhcldlYktpdFZpZXdwb3J0Q29uZmlndXJhdGlvbkZsYWdzXTsKLSAgICAgICAgc3RydWN0
IF9VSVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gc3RhbmRhcmRWaWV3
cG9ydENvbmZpZ3VyYXRpb247Ci0KLSAgICAgICAgaWYgKGNvbnRlbnRUeXBlID09IFBsYWluVGV4
dCkgewotICAgICAgICAgICAgQ0dGbG9hdCBzY3JlZW5XaWR0aCA9IFtbVUlTY3JlZW4gbWFpblNj
cmVlbl0gYm91bmRzXS5zaXplLndpZHRoOwotICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zaXpl
LndpZHRoID0gc2NyZWVuV2lkdGg7Ci0gICAgICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUgPT0g
V0tDb250ZW50VHlwZTo6SW1hZ2UpCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uLm1pbmltdW1T
Y2FsZSA9IDAuMDE7Ci0KLSAgICAgICAgW192aWV3cG9ydEhhbmRsZXIgcmVzZXRWaWV3cG9ydENv
bmZpZ3VyYXRpb246JmNvbmZpZ3VyYXRpb25dOwotICAgIH1dOwotfQotCi0tICh2b2lkKWNvbnRl
bnRWaWV3RGlkUmVjZWl2ZU1vYmlsZURvY1R5cGU6KFdLQ29udGVudFZpZXcgKiljb250ZW50Vmll
dwotewotICAgIFtfdmlld3BvcnRIYW5kbGVyIHVwZGF0ZTpeewotICAgICAgICBzdHJ1Y3QgX1VJ
V2ViVmlld3BvcnRDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBzdGFuZGFyZFZpZXdwb3J0
Q29uZmlndXJhdGlvbjsKLSAgICAgICAgY29uZmlndXJhdGlvbi5taW5pbXVtU2NhbGUgPSAxOwot
ICAgICAgICBjb25maWd1cmF0aW9uLnNpemUgPSBDR1NpemVNYWtlKDMyMC4wLCBVSVdlYlZpZXdw
b3J0R3Jvd3NBbmRTaHJpbmtzVG9GaXRIZWlnaHQpOwotICAgICAgICBbX3ZpZXdwb3J0SGFuZGxl
ciByZXNldFZpZXdwb3J0Q29uZmlndXJhdGlvbjomY29uZmlndXJhdGlvbl07Ci0gICAgfV07Cisg
ICAgX2lzV2FpdGluZ0Zvck5ld0xheWVyVHJlZUFmdGVyRGlkQ29tbWl0TG9hZCA9IFlFUzsKIH0K
IAotLSAodm9pZCljb250ZW50VmlldzooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3IGRpZENo
YW5nZVZpZXdwb3J0QXJndW1lbnRzU2l6ZTooQ0dTaXplKW5ld1NpemUgaW5pdGlhbFNjYWxlOihm
bG9hdClpbml0aWFsU2NhbGUgbWluaW11bVNjYWxlOihmbG9hdCltaW5pbXVtU2NhbGUgbWF4aW11
bVNjYWxlOihmbG9hdCltYXhpbXVtU2NhbGUgYWxsb3dzVXNlclNjYWxpbmc6KGZsb2F0KWFsbG93
c1VzZXJTY2FsaW5nCi17Ci0gICAgW192aWV3cG9ydEhhbmRsZXIgdXBkYXRlOl57Ci0gICAgICAg
IFtfdmlld3BvcnRIYW5kbGVyIGFwcGx5V2ViS2l0Vmlld3BvcnRBcmd1bWVudHNTaXplOm5ld1Np
emUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFs
U2NhbGU6aW5pdGlhbFNjYWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWluaW11bVNjYWxlOm1pbmltdW1TY2FsZQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW1TY2FsZTptYXhpbXVtU2NhbGUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dzVXNlclNjYWxpbmc6YWxs
b3dzVXNlclNjYWxpbmddOwotICAgIH1dOwotfQotCi0jcHJhZ21hIG1hcmsgLSBfVUlXZWJWaWV3
cG9ydEhhbmRsZXJEZWxlZ2F0ZQotCi0tICh2b2lkKXZpZXdwb3J0SGFuZGxlckRpZENoYW5nZVNj
YWxlczooX1VJV2ViVmlld3BvcnRIYW5kbGVyICopdmlld3BvcnRIYW5kbGVyCistICh2b2lkKWNv
bnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopY29udGVudFZpZXcgZGlkQ29tbWl0TGF5ZXJUcmVl
Oihjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJilsYXllclRyZWVUcmFu
c2FjdGlvbgogewotICAgIEFTU0VSVCh2aWV3cG9ydEhhbmRsZXIgPT0gX3ZpZXdwb3J0SGFuZGxl
cik7Ci0gICAgW19zY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6dmlld3BvcnRIYW5kbGVy
Lm1pbmltdW1TY2FsZV07Ci0gICAgW19zY3JvbGxWaWV3IHNldE1heGltdW1ab29tU2NhbGU6dmll
d3BvcnRIYW5kbGVyLm1heGltdW1TY2FsZV07Ci0gICAgW19zY3JvbGxWaWV3IHNldFpvb21FbmFi
bGVkOnZpZXdwb3J0SGFuZGxlci5hbGxvd3NVc2VyU2NhbGluZ107Ci0KLSAgICBpZiAoIV91c2Vy
SGFzQ2hhbmdlZFBhZ2VTY2FsZSkKLSAgICAgICAgW3NlbGYgX3NldERvY3VtZW50U2NhbGU6dmll
d3BvcnRIYW5kbGVyLmluaXRpYWxTY2FsZV07Ci0gICAgZWxzZSB7Ci0gICAgICAgIENHRmxvYXQg
Y3VycmVudFNjYWxlID0gW19zY3JvbGxWaWV3IHpvb21TY2FsZV07Ci0gICAgICAgIENHRmxvYXQg
dmFsaWRTY2FsZSA9IHN0ZDo6bWF4KHN0ZDo6bWluKGN1cnJlbnRTY2FsZSwgc3RhdGljX2Nhc3Q8
Q0dGbG9hdD4odmlld3BvcnRIYW5kbGVyLm1heGltdW1TY2FsZSkpLCBzdGF0aWNfY2FzdDxDR0Zs
b2F0Pih2aWV3cG9ydEhhbmRsZXIubWluaW11bVNjYWxlKSk7Ci0gICAgICAgIFtzZWxmIF9zZXRE
b2N1bWVudFNjYWxlOnZhbGlkU2NhbGVdOworICAgIFtfc2Nyb2xsVmlldyBzZXRNaW5pbXVtWm9v
bVNjYWxlOmxheWVyVHJlZVRyYW5zYWN0aW9uLm1pbmltdW1TY2FsZUZhY3RvcigpXTsKKyAgICBb
X3Njcm9sbFZpZXcgc2V0TWF4aW11bVpvb21TY2FsZTpsYXllclRyZWVUcmFuc2FjdGlvbi5tYXhp
bXVtU2NhbGVGYWN0b3IoKV07CisgICAgW19zY3JvbGxWaWV3IHNldFpvb21FbmFibGVkOmxheWVy
VHJlZVRyYW5zYWN0aW9uLmFsbG93c1VzZXJTY2FsaW5nKCldOworICAgIGlmICghW19zY3JvbGxW
aWV3IGlzWm9vbWluZ10gJiYgIVtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2luZ10pCisgICAgICAg
IFtfc2Nyb2xsVmlldyBzZXRab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ucGFnZVNjYWxl
RmFjdG9yKCldOworCisgICAgaWYgKF9pc1dhaXRpbmdGb3JOZXdMYXllclRyZWVBZnRlckRpZENv
bW1pdExvYWQpIHsKKyAgICAgICAgVUlFZGdlSW5zZXRzIGluc2V0ID0gW19zY3JvbGxWaWV3IGNv
bnRlbnRJbnNldF07CisgICAgICAgIFtfc2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0OkNHUG9p
bnRNYWtlKC1pbnNldC5sZWZ0LCAtaW5zZXQudG9wKV07CisgICAgICAgIF9pc1dhaXRpbmdGb3JO
ZXdMYXllclRyZWVBZnRlckRpZENvbW1pdExvYWQgPSBOTzsKICAgICB9Ci19CiAKLS0gKHZvaWQp
dmlld3BvcnRIYW5kbGVyOihfVUlXZWJWaWV3cG9ydEhhbmRsZXIgKil2aWV3cG9ydEhhbmRsZXIg
ZGlkQ2hhbmdlVmlld3BvcnRTaXplOihDR1NpemUpbmV3U2l6ZQotewotICAgIEFTU0VSVCh2aWV3
cG9ydEhhbmRsZXIgPT0gX3ZpZXdwb3J0SGFuZGxlcik7Ci0gICAgW19jb250ZW50VmlldyBzZXRW
aWV3cG9ydFNpemU6bmV3U2l6ZV07CiB9CiAKLQogI3ByYWdtYSBtYXJrIC0gVUlTY3JvbGxWaWV3
RGVsZWdhdGUKIAogLSAoVUlWaWV3ICopdmlld0Zvclpvb21pbmdJblNjcm9sbFZpZXc6KFVJU2Ny
b2xsVmlldyAqKXNjcm9sbFZpZXcKQEAgLTE5MCw3ICsxMzEsNyBAQCBzdGF0aWMgc3RydWN0IF9V
SVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29uZmlndXJhdGlvbiA9
IHsgeyBVSQogLSAodm9pZClzY3JvbGxWaWV3V2lsbEJlZ2luWm9vbWluZzooVUlTY3JvbGxWaWV3
ICopc2Nyb2xsVmlldyB3aXRoVmlldzooVUlWaWV3ICopdmlldwogewogICAgIGlmIChzY3JvbGxW
aWV3LnBpbmNoR2VzdHVyZVJlY29nbml6ZXIuc3RhdGUgPT0gVUlHZXN0dXJlUmVjb2duaXplclN0
YXRlQmVnYW4pCi0gICAgICAgIF91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZSA9IFlFUzsKKyAgICAg
ICAgW19jb250ZW50VmlldyB3aWxsU3RhcnRVc2VyVHJpZ2dlcmVkWm9vbV07CiAgICAgW19jb250
ZW50VmlldyB3aWxsU3RhcnRab29tT3JTY3JvbGxdOwogfQogCkBAIC0yNTUsMjAgKzE5NiwxNCBA
QCBzdGF0aWMgc3RydWN0IF9VSVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdw
b3J0Q29uZmlndXJhdGlvbiA9IHsgeyBVSQogICAgIFtfY29udGVudFZpZXcgc2V0RnJhbWU6Ym91
bmRzXTsKICAgICBbX3Njcm9sbFZpZXcgYWRkU3VidmlldzpfY29udGVudFZpZXcuZ2V0KCldOwog
Ci0gICAgX3ZpZXdwb3J0SGFuZGxlciA9IGFkb3B0TlMoW1tfVUlXZWJWaWV3cG9ydEhhbmRsZXIg
YWxsb2NdIGluaXRdKTsKLSAgICBbX3ZpZXdwb3J0SGFuZGxlciBzZXREZWxlZ2F0ZTpzZWxmXTsK
LQogICAgIFtzZWxmIF9mcmFtZU9yQm91bmRzQ2hhbmdlZF07CiB9CiAKIC0gKHZvaWQpX2ZyYW1l
T3JCb3VuZHNDaGFuZ2VkCiB7CiAgICAgQ0dSZWN0IGJvdW5kcyA9IFtzZWxmIGJvdW5kc107Ci0g
ICAgaWYgKCFfaGFzU3RhdGljTWluaW11bUxheW91dFNpemUpIHsKLSAgICAgICAgW192aWV3cG9y
dEhhbmRsZXIgdXBkYXRlOl57Ci0gICAgICAgICAgICBbX3ZpZXdwb3J0SGFuZGxlciBzZXRBdmFp
bGFibGVWaWV3U2l6ZTpib3VuZHMuc2l6ZV07Ci0gICAgICAgIH1dOwotICAgIH0KKyAgICBpZiAo
IV9oYXNTdGF0aWNNaW5pbXVtTGF5b3V0U2l6ZSkKKyAgICAgICAgW19jb250ZW50VmlldyBzZXRN
aW5pbXVtTGF5b3V0U2l6ZTpib3VuZHMuc2l6ZV07CiAgICAgW19zY3JvbGxWaWV3IHNldEZyYW1l
OmJvdW5kc107CiAgICAgW19jb250ZW50VmlldyBzZXRNaW5pbXVtU2l6ZTpib3VuZHMuc2l6ZV07
CiB9CkBAIC0zMTAsMTUgKzI0NSwxNCBAQCBzdGF0aWMgc3RydWN0IF9VSVdlYlZpZXdwb3J0Q29u
ZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29uZmlndXJhdGlvbiA9IHsgeyBVSQogLSAoQ0dT
aXplKW1pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGUKIHsKICAgICBBU1NFUlQoX2hhc1N0YXRpY01p
bmltdW1MYXlvdXRTaXplKTsKLSAgICByZXR1cm4gW192aWV3cG9ydEhhbmRsZXIgYXZhaWxhYmxl
Vmlld1NpemVdOworICAgIHJldHVybiBfbWluaW11bUxheW91dFNpemVPdmVycmlkZTsKIH0KIAog
LSAodm9pZClzZXRNaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOihDR1NpemUpbWluaW11bUxheW91
dFNpemVPdmVycmlkZQogewogICAgIF9oYXNTdGF0aWNNaW5pbXVtTGF5b3V0U2l6ZSA9IFlFUzsK
LSAgICBbX3ZpZXdwb3J0SGFuZGxlciB1cGRhdGU6XnsKLSAgICAgICAgW192aWV3cG9ydEhhbmRs
ZXIgc2V0QXZhaWxhYmxlVmlld1NpemU6bWluaW11bUxheW91dFNpemVPdmVycmlkZV07Ci0gICAg
fV07CisgICAgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGUgPSBtaW5pbXVtTGF5b3V0U2l6ZU92
ZXJyaWRlOworICAgIFtfY29udGVudFZpZXcgc2V0TWluaW11bUxheW91dFNpemU6bWluaW11bUxh
eW91dFNpemVPdmVycmlkZV07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCmluZGV4IDc4ODRlMjc1M2Q4MmJmZmU3NmUxNTJjNzRlNmQ5ODQ3NGJiOGYyMGYuLmVj
NzJhYzM2YjNiYTU0NTMxOTkxYzAyZTg4YTk3MzdiNjUyMDE4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIERyYXdpbmdBcmVhUHJveHk7CiBjbGFzcyBGaW5kSW5kaWNhdG9yOwogY2xhc3MgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudDsKK2NsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwog
Y2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eTsKIGNsYXNzIFdlYkVkaXRDb21tYW5kUHJveHk7CiBj
bGFzcyBXZWJQb3B1cE1lbnVQcm94eTsKQEAgLTE0OSw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KikgPSAwOwog
I2VuZGlmIC8vIFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oR1RLKQogCi0jaWYgUExBVEZPUk0o
RUZMKSB8fCBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oRUZMKQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgPSAwOwogI2Vu
ZGlmCiAKQEAgLTIzOCwxMSArMjM5LDkgQEAgcHVibGljOgogI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIHZvaWQgbWFpbkRvY3VtZW50RGlk
UmVjZWl2ZU1vYmlsZURvY1R5cGUoKSA9IDA7Ci0KICAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0VGFw
SGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mIGhpZ2hsaWdodGVkUXVhZHMs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21MZWZ0
UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21SaWdodFJhZGl1cykgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdlYkNv
cmU6OlZpZXdwb3J0QXJndW1lbnRzJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRM
YXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKSA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRBc3Npc3RpbmdOb2RlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBi
b29sIGhhc05leHRGb2N1c2FibGUsIGJvb2wgaGFzUHJldmlvdXNGb2N1c2FibGUpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcEFzc2lzdGluZ05vZGUoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGJmNTllYzY3ZjQ3YTVmNWM0YjI5OWI4YWJi
YWFiZDllZDMzMzJmNjkuLjdkNWQzMDU0MGVmNDFiZjk2YTU4OTE0MTQ2ODBlMTQwMzc4ODRkMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yODY2LDcg
KzI4NjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25s
b2FkUHJveHkqIGRvd25sb2FkKQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKEVGTCkgfHwgUExBVEZP
Uk0oR1RLKQogCi0jaWYgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShJT1MpCisjaWYgUExBVEZP
Uk0oRUZMKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCiB7CiAgICAgbV9wYWdlQ2xpZW50LmRpZENoYW5nZUNvbnRlbnRTaXplKHNp
emUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDhlZmZhYmYz
ZTUxNDg2ZGVjMzRjOGVmNDE2YTVhNjBiMzFlZDJjOTMuLjA5ZDMwNjQ2ZmQzZGQ1NGQ1NWU4MDkw
NjhjYmFjYjNlODJiYzZjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTEzOSw2ICsxMzksNyBAQCBjbGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OwogY2xh
c3MgTmF0aXZlV2ViTW91c2VFdmVudDsKIGNsYXNzIE5hdGl2ZVdlYldoZWVsRXZlbnQ7CiBjbGFz
cyBQYWdlQ2xpZW50OworY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiBjbGFzcyBS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OwogY2xhc3MgU3RyaW5nUGFpclZlY3RvcjsK
IGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKQEAgLTQzOCw2ICs0MzksOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSk7CiAg
ICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgUGFzc1Jl
ZlB0cjxWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjaz4pOwogI2lmIFBMQVRGT1JNKElPUykKKyAgICB2
b2lkIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmKTsKKyAgICB2b2lkIGRpZENvbW1pdExheWVyVHJlZShjb25zdCBXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJik7CiAgICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVy
ZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCB1aW50
MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBQYXNzUmVmUHRyPEdlc3R1
cmVDYWxsYmFjaz4pOwogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIFBh
c3NSZWZQdHI8VG91Y2hlc0NhbGxiYWNrPik7CiAgICAgdm9pZCBzZWxlY3RXaXRoVHdvVG91Y2hl
cyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCB0
bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgUGFzc1JlZlB0
cjxHZXN0dXJlQ2FsbGJhY2s+KTsKQEAgLTgyMSw2ICs4MjQsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzKCkgeyByZXR1cm4gbV9zdXBwcmVzc1Zpc2liaWxp
dHlVcGRhdGVzOyB9CiAKICNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCB3aWxsU3RhcnRVc2Vy
VHJpZ2dlcmVkWm9vbWluZygpOwogICAgIHZvaWQgZGlkRmluaXNoU2Nyb2xsaW5nKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmIGNvbnRlbnRPZmZzZXQpOwogICAgIHZvaWQgZGlkRmluaXNoWm9v
bWluZyhmbG9hdCBuZXdTY2FsZSk7CiAKQEAgLTk5Myw3ICs5OTcsNyBAQCBwcml2YXRlOgogI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICB2b2lkIGRpZEZpbmRab29tYWJsZUFyZWEo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAjZW5k
aWYKLSNpZiBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShFRkwp
CiAgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7
CiAjZW5kaWYKIApAQCAtMTEzNSwxMiArMTEzOSw4IEBAIHByaXZhdGU6CiAjZW5kaWYgLy8gUExB
VEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZv
aWQgbWFpbkRvY3VtZW50RGlkUmVjZWl2ZU1vYmlsZURvY1R5cGUoKTsKLQogICAgIHZvaWQgZGlk
R2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiBjb2xvciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mIGdlb21l
dHJpZXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0
b21MZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21SaWdodFJhZGl1cyk7
CiAKLSAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdlYkNvcmU6OlZp
ZXdwb3J0QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cyk7Ci0KICAgICB2b2lkIHN0YXJ0QXNz
aXN0aW5nTm9kZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgYm9vbCBoYXNOZXh0Rm9jdXNhYmxl
LCBib29sIGhhc1ByZXZpb3VzRm9jdXNhYmxlKTsKICAgICB2b2lkIHN0b3BBc3Npc3RpbmdOb2Rl
KCk7CiAgICAgdm9pZCBub3RpZnlSZXZlYWxlZFNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNzEwNzUxZTZl
YTE4ZTQxYmU0NWQ1NzJiNjdjMDQ3NjQ4MTk0ZmNmOC4uMTY1NDY0ZTU1YWFiNGQ3MTQwZDc3MzI1
MzBhYjg2YTI3OGVlZGExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC05MCw3ICs5MCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAgICAgRGlkRmluZFpvb21hYmxlQXJlYShXZWJDb3JlOjpJbnRQb2ludCB0YXJn
ZXQsIFdlYkNvcmU6OkludFJlY3QgYXJlYSkKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oRUZMKSB8
fCBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oRUZMKQogICAgIERpZENoYW5nZUNvbnRlbnRT
aXplKFdlYkNvcmU6OkludFNpemUgbmV3U2l6ZSkKICNlbmRpZgogCkBAIC0zMDYsMTAgKzMwNiw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
UykKLSAgICBNYWluRG9jdW1lbnREaWRSZWNlaXZlTW9iaWxlRG9jVHlwZSgpOwotCiAgICAgRGlk
R2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OkNv
bG9yIGNvbG9yLCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiBnZW9tZXRyaWVzLCBXZWJDb3Jl
OjpJbnRTaXplIHRvcExlZnRSYWRpdXMsIFdlYkNvcmU6OkludFNpemUgdG9wUmlnaHRSYWRpdXMs
IFdlYkNvcmU6OkludFNpemUgYm90dG9tTGVmdFJhZGl1cywgV2ViQ29yZTo6SW50U2l6ZSBib3R0
b21SaWdodFJhZGl1cykKLSAgICBEaWRDaGFuZ2VWaWV3cG9ydEFyZ3VtZW50cyhXZWJDb3JlOjpW
aWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50cykKIAogICAgIFN0YXJ0QXNzaXN0aW5n
Tm9kZShXZWJDb3JlOjpJbnRSZWN0IHNjcm9sbFJlY3QsIGJvb2wgaGFzTmV4dEZvY3VzYWJsZSwg
Ym9vbCBoYXNQcmV2aW91c0ZvY3VzYWJsZSkKICAgICBTdG9wQXNzaXN0aW5nTm9kZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDQ0
N2MwZjk3ZGYzMDg5NjFhNGRlNDMwM2U2YmIzYTA0NDYyZTFjNTIuLjAwNjM4YTRhZDcyZWMyOGY3
YjZlOGY4MTM3MDlkMmU2MzllYWYxYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0yMjksNiArMjI5LDE2IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9y
ZVRleHQsIGNvbnN0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1
ZShiZWZvcmVUZXh0LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9jYXRp
b24sIGxlbmd0aCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3cG9ydENvbmZpZ3Vy
YXRpb25NaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQorewor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld3BvcnRDb25maWd1
cmF0aW9uTWluaW11bUxheW91dFNpemUoc2l6ZSksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENvbW1pdExheWVyVHJlZShjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uJiBsYXllclRyZWVUcmFuc2FjdGlvbikKK3sKKyAgICBtX3BhZ2VDbGllbnQu
ZGlkQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJlZVRyYW5zYWN0aW9uKTsKK30KKwogdm9pZCBXZWJQ
YWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVU
eXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIFBhc3NSZWZQdHI8R2VzdHVyZUNhbGxiYWNrPiBj
YWxsYmFjaykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewpAQCAtNDE3LDYgKzQyNywxMSBAQCBi
b29sIFdlYlBhZ2VQcm94eTo6YWNjZXB0c0ZpcnN0TW91c2UoaW50LCBjb25zdCBXZWJLaXQ6Oldl
Yk1vdXNlRXZlbnQmKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6
OndpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29taW5nKCkKK3sKKyAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6V2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21pbmcoKSwgbV9wYWdl
SUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoU2Nyb2xsaW5nKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmIGNvbnRlbnRPZmZzZXQpCiB7CiAgICAgcHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZEZpbmlzaFNjcm9sbGluZyhjb250ZW50T2Zmc2V0KSwgbV9w
YWdlSUQpOwpAQCAtNDQxLDIxICs0NTYsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJsdXJBc3Np
c3RlZE5vZGUoKQogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCbHVyQXNz
aXN0ZWROb2RlKCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Om1haW5Eb2N1
bWVudERpZFJlY2VpdmVNb2JpbGVEb2NUeXBlKCkKLXsKLSAgICBtX3BhZ2VDbGllbnQubWFpbkRv
Y3VtZW50RGlkUmVjZWl2ZU1vYmlsZURvY1R5cGUoKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBX
ZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiBo
aWdobGlnaHRlZFF1YWRzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tUmln
aHRSYWRpdXMpCiB7CiAgICAgbV9wYWdlQ2xpZW50LmRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJp
ZXMocmVxdWVzdElELCBjb2xvciwgaGlnaGxpZ2h0ZWRRdWFkcywgdG9wTGVmdFJhZGl1cywgdG9w
UmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdlYkNv
cmU6OlZpZXdwb3J0QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykKLXsKLSAgICBtX3BhZ2VD
bGllbnQuZGlkQ2hhbmdlVmlld3BvcnRBcmd1bWVudHModmlld3BvcnRBcmd1bWVudHMpOwotfQot
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRBc3Npc3RpbmdOb2RlKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNjcm9sbFJlY3QsIGJvb2wgaGFzTmV4dEZvY3VzYWJsZSwgYm9vbCBoYXNQcmV2aW91
c0ZvY3VzYWJsZSkKIHsKICAgICBtX3BhZ2VDbGllbnQuc3RhcnRBc3Npc3RpbmdOb2RlKHNjcm9s
bFJlY3QsIGhhc05leHRGb2N1c2FibGUsIGhhc1ByZXZpb3VzRm9jdXNhYmxlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCBmMTZlY2M0NDA4MGFlYmQ2NzU5ZGIzOTZhODRjMGRj
MzY0NzBmNGRmLi5mMzdjOGVlODAyMWFiMDJiYjg5ZGU1YTJjMzkzMmNhZTViNDA0NDdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC04OSw2ICs4OSw5IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Y29tbWl0TGF5ZXJUcmVlKGNvbnN0IFJlbW90ZUxh
eWVyVHJlZVRyYW5zCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKICAgICBtX3dlYlBhZ2VQ
cm94eS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpLT51cGRhdGVTY3JvbGxpbmdUcmVlKHNj
cm9sbGluZ1RyZWVUcmFuc2FjdGlvbik7CiAjZW5kaWYKKyNpZiBQTEFURk9STShJT1MpCisgICAg
bV93ZWJQYWdlUHJveHktPmRpZENvbW1pdExheWVyVHJlZShsYXllclRyZWVUcmFuc2FjdGlvbik7
CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggODI2NDg0YzhlYTU1MWU0MzMxYTczZThlZTY1MGUyOWM0YTc3OTUyOS4uNDNkOWE0
YmQ4MjU3YjRhNmU1MzdhNDFjMzViNzM3OTJmNDBmN2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcApAQCAtNTAxLDkgKzUwMSw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpjb250ZW50c1Np
emVDaGFuZ2VkKEZyYW1lKiBmcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uCiAKICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ2hhbmdlQ29udGVudFNpemUo
c2l6ZSkpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRDaGFuZ2VDb250ZW50U2l6ZShzaXplKSk7Ci0jZW5kaWYK
KwogCiAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5tYWluRnJhbWVDb250ZW50U2l6ZUNoYW5n
ZWQoc2l6ZSk7CiAKQEAgLTg0OSwxMCArODQ3LDkgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4
aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogCiB2b2lk
IFdlYkNocm9tZUNsaWVudDo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UoY29u
c3QgVmlld3BvcnRBcmd1bWVudHMmIHZpZXdwb3J0QXJndW1lbnRzKSBjb25zdAogewotI2lmIFBM
QVRGT1JNKElPUykKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
Q2hhbmdlVmlld3BvcnRBcmd1bWVudHModmlld3BvcnRBcmd1bWVudHMpKTsKLSNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHZpZXdwb3J0QXJndW1lbnRzKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAg
bV9wYWdlLT52aWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2Uodmlld3BvcnRBcmd1bWVudHMpOwog
I2VuZGlmCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgaWYgKCFtX3BhZ2UtPnVz
ZUZpeGVkTGF5b3V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW0KaW5kZXgg
NGZkY2ExN2NmZjBmZmE1MmM4NzcwODMyZDkyNWE5Mjc3YTU2MjE3MS4uZjkxMTdkOGE2ZjIwM2Fl
YmViNjQ5MDhjNzI4Mjc2YjE2NWU0N2Q5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVu
dElPUy5tbQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERp
ZEJsdXIoY29uc3QgV2ViQ29yZTo6Tm9kZSogbm9kZSkKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OmRpZFJlY2VpdmVNb2JpbGVEb2NUeXBlKCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6TWFpbkRvY3VtZW50RGlkUmVjZWl2ZU1vYmlsZURvY1R5cGUoKSk7Cisg
ICAgLy8gRklYTUU6IHVwZGF0ZSB0aGUgVmlld3BvcnRDb25maWd1cmF0aW9uIGFjY29yZGluZ2x5
LgogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TmVlZHNTY3JvbGxOb3RpZmljYXRpb25z
KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAppbmRleCA0ZTcyZjM1ZTc0NTliN2M5MWIwZjliMzU1YzZjYTFjZThh
YzhiOGVhLi4yYjg2MTI3YzcyZDAzMmExNjRmZmVkNmNmNWFhYzVkMTljYmJiY2YzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yODEsNiAr
MjgxLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAjZW5kaWYKICNpZiBQTEFURk9STShJT1Mp
CiAgICAgLCBtX3Nob3VsZFJldHVybldvcmRBdFNlbGVjdGlvbihmYWxzZSkKKyAgICAsIG1fdXNl
ckhhc0NoYW5nZWRQYWdlU2NhbGVGYWN0b3IoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1faW5zcGVj
dG9yQ2xpZW50KDApCiAgICAgLCBtX2JhY2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUpCkBAIC0z
MDczLDYgKzMwNzQsMTIgQEAgdm9pZCBXZWJQYWdlOjptYWluRnJhbWVEaWRMYXlvdXQoKQogI2lm
IFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKICAgICBtX3ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IubWFpbkZyYW1lRGlkTGF5b3V0KCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFpbkZyYW1lVmlldygpKSB7Cisg
ICAgICAgIG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldENvbnRlbnRzU2l6ZShmcmFtZVZpZXct
PmNvbnRlbnRzU2l6ZSgpKTsKKyAgICAgICAgdmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgp
OworICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIFdlYlBhZ2U6OmFkZFBsdWdpblZpZXcoUGx1Z2lu
VmlldyogcGx1Z2luVmlldykKQEAgLTM5NzUsNiArMzk4MiwyMiBAQCB2b2lkIFdlYlBhZ2U6OmRp
ZENvbW1pdExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgICAgICBpZiAocGFnZSAmJiBwYWdlLT5w
YWdlU2NhbGVGYWN0b3IoKSAhPSAxKQogICAgICAgICAgICAgc2NhbGVQYWdlKDEsIEludFBvaW50
KCkpOwogICAgIH0KKyNpZiBQTEFURk9STShJT1MpCisgICAgbV91c2VySGFzQ2hhbmdlZFBhZ2VT
Y2FsZUZhY3RvciA9IGZhbHNlOworCisgICAgLy8gRklYTUU6IFNldHVwIGEgcmVhbCBjb25maWd1
cmF0aW9uLgorICAgIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6UGFyYW1ldGVycyBkZWZhdWx0Q29u
ZmlndXJhdGlvbjsKKyAgICBkZWZhdWx0Q29uZmlndXJhdGlvbi53aWR0aCA9IDk4MDsKKyAgICBk
ZWZhdWx0Q29uZmlndXJhdGlvbi53aWR0aElzU2V0ID0gdHJ1ZTsKKyAgICBkZWZhdWx0Q29uZmln
dXJhdGlvbi5hbGxvd3NVc2VyU2NhbGluZyA9IHRydWU7CisgICAgZGVmYXVsdENvbmZpZ3VyYXRp
b24ubWluaW11bVNjYWxlID0gMC4yNTsKKyAgICBkZWZhdWx0Q29uZmlndXJhdGlvbi5tYXhpbXVt
U2NhbGUgPSA1OworCisgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0RGVmYXVsdENvbmZp
Z3VyYXRpb24oZGVmYXVsdENvbmZpZ3VyYXRpb24pOworICAgIG1fdmlld3BvcnRDb25maWd1cmF0
aW9uLnNldFZpZXdwb3J0QXJndW1lbnRzKFZpZXdwb3J0QXJndW1lbnRzKCkpOworICAgIG1fdmll
d3BvcnRDb25maWd1cmF0aW9uLnNldENvbnRlbnRzU2l6ZShtX3ZpZXdwb3J0Q29uZmlndXJhdGlv
bi5taW5pbXVtTGF5b3V0U2l6ZSgpKTsKKyAgICB2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFuZ2Vk
KCk7CisjZW5kaWYKIAogI2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVS
SVNUSUMpCiAgICAgcmVzZXRQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDIxNjBlMTRkODI0ZjY3YWU5
MWI1MjU5MDcyNDUyNGYyMDJjYzRmZGYuLmM0OWFlZTE0YTMxNTgxNzFiZWRhMzIxNDg0ZjA4ZGIx
NjdlNzhmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWN0aXZpdHkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdT
dGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVmlld3BvcnRDb25maWd1cmF0aW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9XZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTQxMSw2ICs0MTIsMTIgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCB2aWV3cG9ydFByb3Bl
cnRpZXNEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsKKworICAg
IGRvdWJsZSBtaW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkgY29uc3Q7CisgICAgZG91YmxlIG1heGlt
dW1QYWdlU2NhbGVGYWN0b3IoKSBjb25zdDsKKyAgICBib29sIGFsbG93c1VzZXJTY2FsaW5nKCkg
Y29uc3Q7CisKICAgICB2b2lkIGhhbmRsZVRhcChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwog
ICAgIHZvaWQgdGFwSGlnaGxpZ2h0QXRQb3NpdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKIApAQCAtNjI5LDYgKzYzNiw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHVwZGF0ZVZpc2liaWxpdHlTdGF0ZShib29sIGlzSW5pdGlhbFN0YXRlID0gZmFsc2Up
OwogCiAjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgc2V0Vmlld3BvcnRDb25maWd1cmF0aW9u
TWluaW11bUxheW91dFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOworICAgIHZvaWQgdmll
d3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpOworICAgIHZvaWQgd2lsbFN0YXJ0VXNlclRyaWdn
ZXJlZFpvb21pbmcoKTsKICAgICB2b2lkIGRpZEZpbmlzaFNjcm9sbGluZyhjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiBjb250ZW50T2Zmc2V0KTsKICAgICB2b2lkIGRpZEZpbmlzaFpvb21pbmco
ZmxvYXQpOwogI2VuZGlmCkBAIC0xMDQ2LDYgKzEwNTYsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxXZWJDb3JlOjpSYW5nZT4gbV9jdXJyZW50V29yZFJhbmdlOwogICAgIFJlZlB0cjxXZWJDb3Jl
OjpOb2RlPiBtX2ludGVyYWN0aW9uTm9kZTsKICAgICBib29sIG1fc2hvdWxkUmV0dXJuV29yZEF0
U2VsZWN0aW9uOworCisgICAgV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uIG1fdmlld3Bv
cnRDb25maWd1cmF0aW9uOworICAgIGJvb2wgbV91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZUZhY3Rv
cjsKICNlbmRpZgogCiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KaW5kZXggZjlkODAzMDlmNThiNjk1NmVhOWEzMTcxYjgzMDc5NDJmMjhmNTQwZS4u
YjYyZmQ0MWVjMjgwOGZiNmY4NjM1MjhkMWY2M2YyMTcyMDg3Njk3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAg
LTQxLDYgKzQxLDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAg
TW91c2VFdmVudFN5bmNGb3JUZXN0aW5nKFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4g
KGJvb2wgaGFuZGxlZCkKICAgICBXaGVlbEV2ZW50U3luY0ZvclRlc3RpbmcoV2ViS2l0OjpXZWJX
aGVlbEV2ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKQogI2lmIFBMQVRGT1JNKElPUykKKyAg
ICBTZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShXZWJDb3JlOjpJbnRT
aXplIHNpemUpCisKICAgICBIYW5kbGVUYXAoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAgICAg
VGFwSGlnaGxpZ2h0QXRQb3NpdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OkZsb2F0
UG9pbnQgcG9pbnQpCiAgICAgQmx1ckFzc2lzdGVkTm9kZSgpCkBAIC0zMTMsNiArMzE1LDcgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0VmlzaWJpbGl0eVN0
YXRlUHJlcmVuZGVyKCkKIAogI2lmIFBMQVRGT1JNKElPUykKKyAgICBXaWxsU3RhcnRVc2VyVHJp
Z2dlcmVkWm9vbWluZygpOwogICAgIERpZEZpbmlzaFNjcm9sbGluZyhXZWJDb3JlOjpGbG9hdFBv
aW50IGNvbnRlbnRPZmZzZXQpOwogICAgIERpZEZpbmlzaFpvb21pbmcoZmxvYXQgc2NhbGUpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KaW5kZXggNWVmNzQ3MTIwZmJmNmRjNGZkOTQ0MGM5NzgwOGZhNDc4MDRjNmI4
Mi4uODE0NjBhYTM4NzYyM2JhZjQ2OWZlYmU1Njk4Y2M5MmFmYjIwOWZiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAt
NzksNiArNzksMjcgQEAgYm9vbCBXZWJQYWdlOjpleGVjdXRlS2V5cHJlc3NDb21tYW5kc0ludGVy
bmFsKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW0KICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFZp
ZXdwb3J0QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykKK3sKKyAgICBtX3ZpZXdwb3J0Q29u
ZmlndXJhdGlvbi5zZXRWaWV3cG9ydEFyZ3VtZW50cyh2aWV3cG9ydEFyZ3VtZW50cyk7CisgICAg
dmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpOworfQorCitkb3VibGUgV2ViUGFnZTo6bWlu
aW11bVBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdmlld3BvcnRDb25m
aWd1cmF0aW9uLm1pbmltdW1TY2FsZSgpOworfQorCitkb3VibGUgV2ViUGFnZTo6bWF4aW11bVBh
Z2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdmlld3BvcnRDb25maWd1cmF0
aW9uLm1heGltdW1TY2FsZSgpOworfQorCitib29sIFdlYlBhZ2U6OmFsbG93c1VzZXJTY2FsaW5n
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uYWxsb3dzVXNl
clNjYWxpbmcoKTsKK30KKwogYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVu
dChLZXlib2FyZEV2ZW50KiBldmVudCwgYm9vbCkKIHsKICAgICBib29sIGV2ZW50V2FzSGFuZGxl
ZCA9IGZhbHNlOwpAQCAtOTM4LDYgKzk1OSwzMCBAQCB2b2lkIFdlYlBhZ2U6OmVsZW1lbnREaWRC
bHVyKFdlYkNvcmU6Ok5vZGUqIG5vZGUpCiAgICAgfQogfQogCit2b2lkIFdlYlBhZ2U6OnNldFZp
ZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IEludFNpemUmIHNpemUp
Cit7CisgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0TWluaW11bUxheW91dFNpemUoc2l6
ZSk7CisgICAgdmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpOworfQorCit2b2lkIFdlYlBh
Z2U6OnZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKQoreworICAgIHNldEZpeGVkTGF5b3V0
U2l6ZShtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5sYXlvdXRTaXplKCkpOworCisgICAgZG91Ymxl
IHNjYWxlOworICAgIGlmIChtX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlRmFjdG9yKQorICAgICAg
ICBzY2FsZSA9IHN0ZDo6bWF4KHN0ZDo6bWluKHBhZ2VTY2FsZUZhY3RvcigpLCBtX3ZpZXdwb3J0
Q29uZmlndXJhdGlvbi5tYXhpbXVtU2NhbGUoKSksIG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1p
bmltdW1TY2FsZSgpKTsKKyAgICBlbHNlCisgICAgICAgIHNjYWxlID0gbV92aWV3cG9ydENvbmZp
Z3VyYXRpb24uaW5pdGlhbFNjYWxlKCk7CisKKyAgICBtX3BhZ2UtPnNldFBhZ2VTY2FsZUZhY3Rv
cihzY2FsZSwgbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPnNjcm9sbFBvc2l0aW9uKCkpOwor
fQorCit2b2lkIFdlYlBhZ2U6OndpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29taW5nKCkKK3sKKyAg
ICBtX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlRmFjdG9yID0gdHJ1ZTsKK30KKwogdm9pZCBXZWJQ
YWdlOjpkaWRGaW5pc2hTY3JvbGxpbmcoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgY29udGVu
dE9mZnNldCkKIHsKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+c2V0U2Nyb2xsT2Zm
c2V0KFdlYkNvcmU6OkludFBvaW50KGNvbnRlbnRPZmZzZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IGUxZTBlZGFiNDFkNTlmNTRkMDk1ZjlhZTdkZDBmZjBh
ZjAyODAxYmYuLmY4MWE0YTA0ZTNlZGI5MGU3YTZhOWJmYmEwNTViZDkxMWRmMDJmMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtMzIxLDYgKzMyMSwxMSBAQCB2
b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAgLy8gRklY
TUU6IG1pbml6ZSB0aGVzZSB0cmFuc2FjdGlvbnMgaWYgbm90aGluZyBjaGFuZ2VkLgogICAgIFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIGxheWVyVHJhbnNhY3Rpb247CiAgICAgbV9yZW1vdGVM
YXllclRyZWVDb250ZXh0LT5idWlsZFRyYW5zYWN0aW9uKGxheWVyVHJhbnNhY3Rpb24sICptX3Jv
b3RMYXllcik7CisgICAgbGF5ZXJUcmFuc2FjdGlvbi5zZXRDb250ZW50c1NpemUobV93ZWJQYWdl
LT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsKKyAgICBs
YXllclRyYW5zYWN0aW9uLnNldFBhZ2VTY2FsZUZhY3RvcihtX3dlYlBhZ2UtPmNvcmVQYWdlKCkt
PnBhZ2VTY2FsZUZhY3RvcigpKTsKKyAgICBsYXllclRyYW5zYWN0aW9uLnNldE1pbmltdW1TY2Fs
ZUZhY3RvcihtX3dlYlBhZ2UtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSk7CisgICAgbGF5ZXJU
cmFuc2FjdGlvbi5zZXRNYXhpbXVtU2NhbGVGYWN0b3IobV93ZWJQYWdlLT5tYXhpbXVtUGFnZVNj
YWxlRmFjdG9yKCkpOworICAgIGxheWVyVHJhbnNhY3Rpb24uc2V0QWxsb3dzVXNlclNjYWxpbmco
bV93ZWJQYWdlLT5hbGxvd3NVc2VyU2NhbGluZygpKTsKIAogICAgIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yVHJhbnNhY3Rpb24gc2Nyb2xsaW5nVHJhbnNhY3Rpb247CiAjaWYgRU5BQkxFKEFT
WU5DX1NDUk9MTElORykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223304</attachid>
            <date>2014-02-05 21:53:02 -0800</date>
            <delta_ts>2014-02-05 21:53:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127886-20140205215301.patch</filename>
            <type>text/plain</type>
            <size>71040</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc1OWFlOTI3YzJkYWE4
ODNhNjM3ZjhlYmZjYzE3MDY0YjJhNWY3NS4uNWJhNWYzNzE2YjllNDc3ZWMyNzUwNmU0OTNjYTZh
OTJjY2QwMjdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE0LTAyLTA1ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbaU9TXSBTeW5j
aHJvbml6ZSB0aGUgV0tDb250ZW50VmlldyBhbmQgVUlTY3JvbGxWaWV3IHVwZGF0ZXMgd2l0aCB0
aGUgdGlsZXMgYmVpbmcgY29tbWl0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNzg4NgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci4KKworICAgICAgICBUaGUgdXBkYXRlcyBvZiB0aGUgdmlld3Mgb24gdGhlIFVJUHJvY2VzcyBz
aWRlIHdhcyBjb21wbGV0ZWx5IGRpc2Nvbm5lY3RlZAorICAgICAgICBmcm9tIHRoZSB0aWxlcyB1
cGRhdGVzIGZyb20gdGhlIERyYXdpbmdBcmVhLiBUaGVyZSBpcyBhIG5vbi1uZWdsaWdpYmxlIHRp
bWUKKyAgICAgICAgYmV0d2VlbiB0aGUgc2l6ZS9zY2FsZSB1cGRhdGUgYW5kIHRoZSBuZXcgdGls
ZXMgY29taW5nLCB3aGljaCBjYXVzZXMKKyAgICAgICAgdmlzdWFsIGdsaXRjaGVzLgorCisgICAg
ICAgIFRoZXJlIGFyZSB0aHJlZSBtYWluIGNhc2VzIHdoZXJlIHRoZSB0aWxlcyBhbmQgY29udGVu
dCB3b3VsZCBiZSBvdXQgb2Ygc3luYworICAgICAgICB3aXRoIHRoZSBVSVZpZXdzOgorICAgICAg
ICAtV2hlbiBsb2FkaW5nIGEgbmV3IHBhZ2Ugd2l0aCBkaWZmZXJlbnQgY29udGVudCB3aWR0aCBv
ZiBhIGRpZmZlcmVudCB2aWV3cG9ydC4KKyAgICAgICAgLVdoZW4gYSBwYWdlIGNoYW5nZXMgaXRz
IHZpZXdwb3J0LgorICAgICAgICAtV2hlbiB0aGUgdmlld3BvcnQtY29uc3RyYWludGVkIHZpZXdw
b3J0IHNpemUgY2hhbmdlcy4KKworICAgICAgICBUbyBmaXggdGhlIGlzc3VlLCBXS1ZpZXcgaXMg
bW9kaWZpZWQgdG8gbWFpbnRhaW4gdGhlIG9sZCBzdGF0ZSBvZiBXS0NvbnRlbnRWaWV3CisgICAg
ICAgIGFuZCBVSVNjcm9sbFZpZXcgdW50aWwgdGhlIG5ldyB0aWxlcyBhcmUgYXZhaWxhYmxlLgor
CisgICAgICAgIEdlb21ldHJ5L3NjYWxlIHVwZGF0ZSBhcmUgc3BsaXQgaW4gdHdvIHBoYXNlczoK
KyAgICAgICAgMSkgQSBzb3VyY2UgKHRoZSBwYWdlIG9yIHRoZSB1c2VyKSBjaGFuZ2VzIHBhcmFt
ZXRlcnMgb2YgdGhlIGdlb21ldHJ5LiBUaGUgV2ViUHJvY2VzcyB1cGRhdGVzCisgICAgICAgICAg
IGl0cyBsYXlvdXQgYWNjb3JkaW5nbHkuCisgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHRoZSBV
SVZpZXdzIGFyZSB1bmNoYW5nZWQgYW5kIGFyZSBsZWZ0IHdpdGggdGhlIG9sZCBwYXJhbWV0ZXJz
LgorICAgICAgICAyKSBFdmVudHVhbGx5LCBuZXcgdGlsZXMgY29tZSBhbmQgY29tbWl0TGF5ZXJU
cmVlKCkgaXMgY2FsbGVkIG9uIHRoZSBkcmF3aW5nIGFyZWEgcHJveHkuCisgICAgICAgICAgIEF0
IHRoYXQgcG9pbnQsIFdLQ29udGVudFZpZXcgYW5kIGl0cyBVSVNjcm9sbFZpZXcgYXJlIHVwZGF0
ZWQgdG8gbWF0Y2ggdGhlIGNvbW1pdHRlZAorICAgICAgICAgICBzaXplIGFuZCBzY2FsZSBmb3Ig
dGhlIHBhZ2UuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9WaWV3cG9ydENvbmZp
Z3VyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cmFpbnRzQXJlQWxs
UmVsYXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpWaWV3
cG9ydENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0
aW9uOjpzZXREZWZhdWx0Q29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9y
dENvbmZpZ3VyYXRpb246OnNldENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3
cG9ydENvbmZpZ3VyYXRpb246OnNldE1pbmltdW1MYXlvdXRTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0Vmlld3BvcnRBcmd1bWVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpsYXlvdXRTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6aW5pdGlhbFNjYWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6bWluaW11bVNjYWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6bWF4aW11bVNjYWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6YWxsb3dzVXNlclNjYWxpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6dmlld3BvcnRBcmd1bWVudFZhbHVlSXNWYWxpZCk6CisgICAgICAgIChX
ZWJDb3JlOjphcHBseVZpZXdwb3J0QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3Bv
cnRDb25maWd1cmF0aW9uOjp1cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6bGF5b3V0V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6
Vmlld3BvcnRDb25maWd1cmF0aW9uOjpsYXlvdXRIZWlnaHQpOgorICAgICAgICAqIHBhZ2UvVmll
d3BvcnRDb25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRD
b25maWd1cmF0aW9uQ29uZmlndXJhdGlvbjo6Vmlld3BvcnRDb25maWd1cmF0aW9uQ29uZmlndXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246OmRlZmF1bHRD
b25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6
Y29udGVudHNTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6
bWluaW11bUxheW91dFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0
aW9uOjp2aWV3cG9ydEFyZ3VtZW50cyk6CisKIDIwMTQtMDItMDQgIEFuZHJlYXMgS2xpbmcgIDxh
a2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSA8aWZyYW1lIHNlYW1sZXNzPiBzdXBw
b3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGM2NDkwMDk5ZDIzOTQ1YTIxNmM0NzBiMzE2YTE1ZGY4NTY1MDBh
ODcuLjJjZWNhZDU1NWEwMWE5NDU5MmZkZmRlYTExMDg5N2Y3ZDIyMzY0ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw3MyBAQAorMjAxNC0wMi0wNSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWlu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW2lPU10gU3luY2hyb25pemUgdGhlIFdLQ29udGVudFZp
ZXcgYW5kIFVJU2Nyb2xsVmlldyB1cGRhdGVzIHdpdGggdGhlIHRpbGVzIGJlaW5nIGNvbW1pdGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODYK
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBTaGFyZWQv
bWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjptYWluRnJhbWVDb250ZW50c1NpemUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6c2V0TWFpbkZyYW1lQ29udGVudHNT
aXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OnBhZ2VT
Y2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpzZXRQYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6bWluaW11bVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OnNldE1pbmltdW1TY2FsZUZhY3Rvcik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjptYXhpbXVtU2NhbGVGYWN0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6c2V0TWF4aW11bVNj
YWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OmFsbG93c1VzZXJTY2FsaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OnNldEFsbG93c1VzZXJTY2FsaW5nKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExh
eWVyVHJlZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlldy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgc2V0TWluaW11bUxheW91dFNpemU6XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgd2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21dKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOldlYktpdDo6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlld0ludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9pb3MvV0tWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1ZpZXcgY29udGVudFZpZXdEaWRD
b21taXRMb2FkRm9yTWFpbkZyYW1lOl0pOgorICAgICAgICAoLVtXS1ZpZXcgY29udGVudFZpZXc6
ZGlkQ29tbWl0TGF5ZXJUcmVlOldlYktpdDo6XSk6CisgICAgICAgICgtW1dLVmlldyBzY3JvbGxW
aWV3V2lsbEJlZ2luWm9vbWluZzp3aXRoVmlldzpdKToKKyAgICAgICAgKC1bV0tWaWV3IF9jb21t
b25Jbml0aWFsaXphdGlvbldpdGhDb250ZXh0UmVmOnBhZ2VHcm91cFJlZjpyZWxhdGVkVG9QYWdl
Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkXSk6CisgICAgICAg
ICgtW1dLVmlldyBtaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlXSk6CisgICAgICAgICgtW1dLVmll
dyBzZXRNaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
YWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VmlydHVhbFZpZXdw
b3J0TWluaW11bUxheW91dFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZENvbW1pdExheWVyVHJlZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2lsbFN0
YXJ0VXNlclRyaWdnZXJlZFpvb21pbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Y29tbWl0TGF5ZXJUcmVlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6Y29udGVudHNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVu
dElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpkaWRSZWNlaXZlTW9i
aWxlRG9jVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6bWFpbkZyYW1lRGlkTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlk
Q29tbWl0TG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6Om1pbmltdW1QYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjptYXhpbXVtUGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
YWxsb3dzVXNlclNjYWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRWaXJ0dWFs
Vmlld3BvcnRNaW5pbXVtTGF5b3V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnZp
cnR1YWxWaWV3cG9ydENoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3aWxsU3Rh
cnRVc2VyVHJpZ2dlcmVkWm9vbWluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKwogMjAxNC0wMi0wNCAgQW5kcmVh
cyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIDxpZnJhbWUgc2Vh
bWxlc3M+IHN1cHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGNlY2FmZmE3ODQzYzliMjdm
ZTBmMTZiN2FmOTM4ZmY0MDllYzNkOTcuLjkwMzY0YWY2Njk1NWFlYmIxOWRkZTc2ZDQwNjRjZTM1
Nzk4Y2UxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC01NjgsNiArNTY4LDggQEAgX19aTjdX
ZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EzMXBsYXRmb3JtQ0FMYXllckFuaW1hdGlvblN0YXJ0ZWRF
ZAogX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EzN2ZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZv
clRoaXNMYXllck9ubHlFdgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0E0MHBsYXRmb3Jt
Q0FMYXllclNldE5lZWRzVG9SZXZhbGlkYXRlVGlsZXNFdgogX19aTks3V2ViQ29yZTE1R3JhcGhp
Y3NMYXllckNBNDlwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c1NjYWxlTXVsdGlwbGllckZvck5ld1Rp
bGVzRVBOU18xNVBsYXRmb3JtQ0FMYXllckUKK19fWk5LN1dlYkNvcmUyMVZpZXdwb3J0Q29uZmln
dXJhdGlvbjEwbGF5b3V0U2l6ZUV2CitfX1pOSzdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRp
b24xMmluaXRpYWxTY2FsZUV2CiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTdzZXROYW1l
RVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0E3c2V0U2l6ZUVS
S05TXzlGbG9hdFNpemVFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQThhZGRDaGlsZEVQ
TlNfMTNHcmFwaGljc0xheWVyRQpAQCAtNTc1LDYgKzU3Nyw3IEBAIF9fWk43V2ViQ29yZTE1R3Jh
cGhpY3NMYXllckNBQzJFUE5TXzE5R3JhcGhpY3NMYXllckNsaWVudEUKIF9fWk43V2ViQ29yZTE1
R3JhcGhpY3NMYXllckNBRDJFdgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0ExOXNldEN1
c3RvbUFwcGVhcmFuY2VFTlNfMTNHcmFwaGljc0xheWVyMTZDdXN0b21BcHBlYXJhbmNlRQogX19a
Tks3V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBMTRwcmltYXJ5TGF5ZXJJREV2CitfX1pOSzdXZWJD
b3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24xMm1pbmltdW1TY2FsZUV2CiBfX1pON1dlYkNvcmUx
NUhpdFRlc3RMb2NhdGlvbjEycmVjdEZvclBvaW50RVJLTlNfMTFMYXlvdXRQb2ludEVqampqCiBf
X1pON1dlYkNvcmUxNUhpdFRlc3RMb2NhdGlvbkMxRVJLTlNfMTBGbG9hdFBvaW50RQogX19aTjdX
ZWJDb3JlMTVIaXRUZXN0TG9jYXRpb25EMUV2CkBAIC04NDUsNiArODQ4LDEwIEBAIF9fWk43V2Vi
Q29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlQzFFUk4zV1RGNlZlY3RvckloTG0wRU5TMV8xNUNy
YXNoT25PdmVyZmxvd0VFCiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUQxRXYK
IF9fWk43V2ViQ29yZTIxVVJMQnlSZW1vdmluZ1VzZXJJbmZvRVA1TlNVUkwKIF9fWk43V2ViQ29y
ZTIxVXNlckNvbnRlbnRVUkxQYXR0ZXJuNXBhcnNlRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJD
b3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24xNXNldENvbnRlbnRzU2l6ZUVSS05TXzdJbnRTaXpl
RQorX19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24yMHNldE1pbmltdW1MYXlvdXRT
aXplRVJLTlNfN0ludFNpemVFCitfX1pON1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjIw
c2V0Vmlld3BvcnRBcmd1bWVudHNFUktOU18xN1ZpZXdwb3J0QXJndW1lbnRzRQorX19aTjdXZWJD
b3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24yM3NldERlZmF1bHRDb25maWd1cmF0aW9uRVJLTlMw
XzEwUGFyYW1ldGVyc0UKIF9fWk43V2ViQ29yZTIxV2luZG93c0xhdGluMUVuY29kaW5nRXYKIF9f
Wk43V2ViQ29yZTIxY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyRVBLY21QSzdfX0NGVVJMCiBfX1pON1dl
YkNvcmUyMWZpbmRFdmVudFdpdGhLZXlTdGF0ZUVQTlNfNUV2ZW50RQpAQCAtOTA5LDYgKzkxNiw3
IEBAIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQzJFUE5TXzVGcmFtZUUK
IF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyRDJFdgogX19aTjdXZWJDb3Jl
MjRJbW11dGFibGVTdHlsZVByb3BlcnRpZXNEMUV2CiBfX1pON1dlYkNvcmUyNFJlZmVyZW5jZUZp
bHRlck9wZXJhdGlvbkMxRVJLTjNXVEY2U3RyaW5nRVM0X05TXzE1RmlsdGVyT3BlcmF0aW9uMTNP
cGVyYXRpb25UeXBlRQorX19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb25DMUV2CiBf
X1pON1dlYkNvcmUyNGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cEVSTlNfOERvY3VtZW50RVJLTjNX
VEY2U3RyaW5nRVM1X05TXzE5UGFyc2VyQ29udGVudFBvbGljeUUKIF9fWk43V2ViQ29yZTI0ZGVj
b2RlVVJMRXNjYXBlU2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS04zV1RG
NlN0cmluZ0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBmOWE2MWQ1N2I0ZGVmNzUwNzFjZWNkZTQ2ZWQyOGU5MzViY2JmYTJkLi42
NTNlMjJjMWU1MTFiOWU5ZjRlZDEyYWUxZDNkMGE2NWI2MjMyOWZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05ODMsNiArOTgz
LDggQEAKIAkJMjZDMTdBM0YxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1JT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkMxN0EzRDE0OTFE
MkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5tbSAqLzsgfTsKIAkJMjZFOThBMTAxMzBBOUZD
QTAwOEVCN0IyIC8qIFRleHRDb2RlY0FTQ0lJRmFzdFBhdGguaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RTk4QTBGMTMwQTlGQ0EwMDhFQjdCMiAvKiBU
ZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmggKi87IH07CiAJCTI2RjQwRDRBMTQ5MDRBNjMwMENBNjdD
NCAvKiBFdmVudExvb3BJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyNkY0MEQ0OTE0OTA0QTYzMDBDQTY3QzQgLyogRXZlbnRMb29wSU9TLm1tICov
OyB9OworCQkyNkY5QTgzODE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjlB
ODM2MThBMDQ2QUMwMEFFQjg4QSAvKiBWaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwICovOyB9Owor
CQkyNkY5QTgzOTE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY5QTgzNzE4QTA0
NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjZGQUU0Q0MxODUyRTNBNTAwNEM4QzQ2
IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGQUU0QzgxODUyRTNBNTAwNEM4
QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICovOyB9Owog
CQkyNkZBRTRDRDE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjZGQUU0QzkxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGUuaCAqLzsgfTsKIAkJMjZGQUU0Q0UxODUyRTNBNTAwNEM4QzQ2IC8qIFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkZBRTRDQTE4NTJFM0E1MDA0
QzhDNDYgLyogU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LmNwcCAqLzsgfTsKQEAgLTc3NjksNiArNzc3MSw4IEBACiAJCTI2QzE3QTNEMTQ5MUQyRDQwMEQx
MkJBMiAvKiBGaWxlU3lzdGVtSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gRmlsZVN5c3RlbUlPUy5tbTsgcGF0aCA9IGlvcy9GaWxlU3lzdGVtSU9TLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkU5OEEwRjEzMEE5RkNBMDA4RUI3QjIgLyog
VGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTI2RjQwRDQ5MTQ5MDRBNjMwMENBNjdDNCAvKiBFdmVudExvb3BJT1MubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFdmVudExvb3BJT1MubW07IHBhdGggPSBpb3Mv
RXZlbnRMb29wSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkY5QTgzNjE4
QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2RjlBODM3MThBMDQ2QUMwMEFFQjg4QSAvKiBWaWV3
cG9ydENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmll
d3BvcnRDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2RkFF
NEM4MTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyNkZBRTRDOTE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI2RkFFNENBMTg1MkUzQTUwMDRDOEM0NiAvKiBTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MTk5LDYgKzE2MjAzLDgg
QEAKIAkJCQlCQzhCRjE1OTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBlcy5o
ICovLAogCQkJCUY1MTNBM0U5MTVGRjQ4NDEwMDE1MjZEQiAvKiBWYWxpZGF0aW9uTWVzc2FnZUNs
aWVudC5oICovLAogCQkJCTg2NzhEMEJBMTg3OEU4MTAwMDNBQkRFNiAvKiBWaWV3U3RhdGUuaCAq
LywKKwkJCQkyNkY5QTgzNjE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9u
LmNwcCAqLywKKwkJCQkyNkY5QTgzNzE4QTA0NkFDMDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1
cmF0aW9uLmggKi8sCiAJCQkJMUFCQTgwMDUxODk3MzU1NTAwRENFOUQ2IC8qIFZpc2l0ZWRMaW5r
UHJvdmlkZXIuY3BwICovLAogCQkJCTFBQkE3RkZGMTg5NzM0MTIwMERDRTlENiAvKiBWaXNpdGVk
TGlua1Byb3ZpZGVyLmggKi8sCiAJCQkJQkU5ODNEOTUwNTJBMkUwQTAwODkyRDg1IC8qIFdlYkNv
cmVLZXlib2FyZFVJTW9kZS5oICovLApAQCAtMjQzNzQsNiArMjQzODAsNyBAQAogCQkJCUIyRkEz
RDc5MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFRmxvb2RFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMkZBM0Q3QjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRUZ1bmNBRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEN0QwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVG
dW5jQkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTI2RjlBODM5MThBMDQ2QUMwMEFFQjg4
QSAvKiBWaWV3cG9ydENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDdG
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFRnVuY0dFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkZBM0Q4MTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRUZ1bmNSRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEODMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTI4LDYgKzI2OTM1LDcgQEAK
IAkJCQkxNDhBRkRBNjBBRjU4MzYwMDA4Q0M3MDAgLyogRXhjZXB0aW9uSGFuZGxlcnMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBMDI0NTc1MTE2Q0VBQTI3MDAwRTU2NzEgLyogRVhURHJhd0J1ZmZl
cnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkU2N0QyQTYxMjgwRThBNDAwODc1OEY3IC8qIEV4
dGVuc2lvbnMzRE9wZW5HTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyNkY5QTgzODE4QTA0NkFD
MDBBRUI4OEEgLyogVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQ0REFCNUIxMTVBNjIzNTgwMDk3QzFFNCAvKiBFeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNzcyODY5NEUxNEY4ODgyNTAwRjQ4NERDIC8qIEVYVFRleHR1
cmVGaWx0ZXJBbmlzb3Ryb3BpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0M3NDAxNDE2MDNG
N0ExMDAxMUZGMkQgLyogRmVhdHVyZU9ic2VydmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2
NTkwNGNmNTZlOGRlODMzY2U2NGU0YTZlMWY3N2JlZTRkYzU5ZjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAKQEAgLTAsMCAr
MSwyNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJWaWV3cG9ydENvbmZpZ3VyYXRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisj
aWYgIUFTU0VSVF9ESVNBQkxFRAorc3RhdGljIGJvb2wgY29uc3RyYWludHNBcmVBbGxSZWxhdGl2
ZShjb25zdCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OlBhcmFtZXRlcnMmIGNvbmZpZ3VyYXRpb24p
Cit7CisgICAgcmV0dXJuICFjb25maWd1cmF0aW9uLndpZHRoSXNTZXQgJiYgIWNvbmZpZ3VyYXRp
b24uaGVpZ2h0SXNTZXQgJiYgIWNvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlSXNTZXQ7Cit9Cisj
ZW5kaWYKKworVmlld3BvcnRDb25maWd1cmF0aW9uOjpWaWV3cG9ydENvbmZpZ3VyYXRpb24oKQor
ICAgIDogbV9jb250ZW50U2l6ZSgxMDI0LCA3NjgpCisgICAgLCBtX21pbmltdW1MYXlvdXRTaXpl
KG1fY29udGVudFNpemUpCit7CisgICAgLy8gU2V0dXAgYSByZWFzb25hYmxlIGRlZmF1bHQgY29u
ZmlndXJhdGlvbiB0byBhdm9pZCBjb21wdXRpbmcgaW5maW5pdGUgc2NhbGUvc2l6ZXMuCisgICAg
Ly8gVGhvc2UgYXJlIHRoZSBvcmlnaW5hbCBpUGhvbmUgY29uZmlndXJhdGlvbi4KKyAgICBtX2Rl
ZmF1bHRDb25maWd1cmF0aW9uLndpZHRoID0gOTgwOworICAgIG1fZGVmYXVsdENvbmZpZ3VyYXRp
b24ud2lkdGhJc1NldCA9IHRydWU7CisgICAgbV9kZWZhdWx0Q29uZmlndXJhdGlvbi5hbGxvd3NV
c2VyU2NhbGluZyA9IHRydWU7CisgICAgbV9kZWZhdWx0Q29uZmlndXJhdGlvbi5taW5pbXVtU2Nh
bGUgPSAwLjI1OworICAgIG1fZGVmYXVsdENvbmZpZ3VyYXRpb24ubWF4aW11bVNjYWxlID0gNTsK
KyAgICB1cGRhdGVDb25maWd1cmF0aW9uKCk7Cit9CisKK3ZvaWQgVmlld3BvcnRDb25maWd1cmF0
aW9uOjpzZXREZWZhdWx0Q29uZmlndXJhdGlvbihjb25zdCBWaWV3cG9ydENvbmZpZ3VyYXRpb246
OlBhcmFtZXRlcnMmIGRlZmF1bHRDb25maWd1cmF0aW9uKQoreworICAgIEFTU0VSVCghY29uc3Ry
YWludHNBcmVBbGxSZWxhdGl2ZShtX2NvbmZpZ3VyYXRpb24pKTsKKyAgICBBU1NFUlQoIW1fZGVm
YXVsdENvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlSXNTZXQgfHwgZGVmYXVsdENvbmZpZ3VyYXRp
b24uaW5pdGlhbFNjYWxlID4gMCk7CisgICAgQVNTRVJUKGRlZmF1bHRDb25maWd1cmF0aW9uLm1p
bmltdW1TY2FsZSA+IDApOworICAgIEFTU0VSVChkZWZhdWx0Q29uZmlndXJhdGlvbi5tYXhpbXVt
U2NhbGUgPj0gZGVmYXVsdENvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlKTsKKworICAgIG1fZGVm
YXVsdENvbmZpZ3VyYXRpb24gPSBkZWZhdWx0Q29uZmlndXJhdGlvbjsKKyAgICB1cGRhdGVDb25m
aWd1cmF0aW9uKCk7Cit9CisKK3ZvaWQgVmlld3BvcnRDb25maWd1cmF0aW9uOjpzZXRDb250ZW50
c1NpemUoY29uc3QgSW50U2l6ZSYgY29udGVudFNpemUpCit7CisgICAgaWYgKG1fY29udGVudFNp
emUgPT0gY29udGVudFNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGVudFNpemUg
PSBjb250ZW50U2l6ZTsKKyAgICB1cGRhdGVDb25maWd1cmF0aW9uKCk7Cit9CisKK3ZvaWQgVmll
d3BvcnRDb25maWd1cmF0aW9uOjpzZXRNaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiBt
aW5pbXVtTGF5b3V0U2l6ZSkKK3sKKyAgICBpZiAobV9taW5pbXVtTGF5b3V0U2l6ZSA9PSBtaW5p
bXVtTGF5b3V0U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9taW5pbXVtTGF5b3V0U2l6
ZSA9IG1pbmltdW1MYXlvdXRTaXplOworICAgIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKTsKK30KKwor
dm9pZCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OnNldFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFZp
ZXdwb3J0QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykKK3sKKyAgICBpZiAobV92aWV3cG9y
dEFyZ3VtZW50cyA9PSB2aWV3cG9ydEFyZ3VtZW50cykKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV92aWV3cG9ydEFyZ3VtZW50cyA9IHZpZXdwb3J0QXJndW1lbnRzOworICAgIHVwZGF0ZUNvbmZp
Z3VyYXRpb24oKTsKK30KKworSW50U2l6ZSBWaWV3cG9ydENvbmZpZ3VyYXRpb246OmxheW91dFNp
emUoKSBjb25zdAoreworICAgIHJldHVybiBJbnRTaXplKGxheW91dFdpZHRoKCksIGxheW91dEhl
aWdodCgpKTsKK30KKworZG91YmxlIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6aW5pdGlhbFNjYWxl
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWNvbnN0cmFpbnRzQXJlQWxsUmVsYXRpdmUobV9jb25m
aWd1cmF0aW9uKSk7CisKKyAgICAvLyBJZiB0aGUgZG9jdW1lbnQgaGFzIHNwZWNpZmllZCBpdHMg
b3duIGluaXRpYWwgc2NhbGUsIHVzZSBpdCByZWdhcmRsZXNzLgorICAgIC8vIFRoaXMgaXMgZ3Vh
cmFudGVlZCB0byBiZSBzYW5pdHkgY2hlY2tlZCBhbHJlYWR5LCBzbyBubyBuZWVkIGZvciBNSU4v
TUFYLgorICAgIGlmIChtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlSXNTZXQpCisgICAgICAg
IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlOworCisgICAgLy8gSWYgbm90LCBp
dCBpcyB1cCB0byB1cyB0byBkZXRlcm1pbmUgdGhlIGluaXRpYWwgc2NhbGUuCisgICAgLy8gV2Ug
d2FudCBhIHNjYWxlIHNtYWxsIGVub3VnaCB0byBmaXQgdGhlIGRvY3VtZW50IHdpZHRoLXdpc2Uu
CisgICAgZG91YmxlIHdpZHRoID0gbV9jb250ZW50U2l6ZS53aWR0aCgpID4gMCA/IG1fY29udGVu
dFNpemUud2lkdGgoKSA6IGxheW91dFdpZHRoKCk7CisgICAgZG91YmxlIGluaXRpYWxTY2FsZSA9
IDA7CisgICAgaWYgKHdpZHRoID4gMCkKKyAgICAgICAgaW5pdGlhbFNjYWxlID0gbV9taW5pbXVt
TGF5b3V0U2l6ZS53aWR0aCgpIC8gd2lkdGg7CisKKyAgICAvLyBQcmV2ZW50IHRoZSBpbnRpYWwg
c2NhbGUgZnJvbSBzaHJpbmtpbmcgdG8gYSBoZWlnaHQgc21hbGxlciB0aGFuIG91ciB2aWV3J3Mg
bWluaW11bSBoZWlnaHQuCisgICAgZG91YmxlIGhlaWdodCA9IG1fY29udGVudFNpemUuaGVpZ2h0
KCkgPiAwID8gbV9jb250ZW50U2l6ZS5oZWlnaHQoKSA6IGxheW91dEhlaWdodCgpOworICAgIGlm
IChoZWlnaHQgPiAwICYmIGhlaWdodCAqIGluaXRpYWxTY2FsZSA8IG1fbWluaW11bUxheW91dFNp
emUuaGVpZ2h0KCkpCisgICAgICAgIGluaXRpYWxTY2FsZSA9IG1fbWluaW11bUxheW91dFNpemUu
aGVpZ2h0KCkgLyBoZWlnaHQ7CisgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KGluaXRpYWxT
Y2FsZSwgbV9jb25maWd1cmF0aW9uLm1pbmltdW1TY2FsZSksIG1fY29uZmlndXJhdGlvbi5tYXhp
bXVtU2NhbGUpOworfQorCitkb3VibGUgVmlld3BvcnRDb25maWd1cmF0aW9uOjptaW5pbXVtU2Nh
bGUoKSBjb25zdAoreworICAgIC8vIElmIHdlIHNjYWxlIHRvIGZpdCwgdGhlbiB0aGlzIGlzIG91
ciBtaW5pbXVtIHNjYWxlIGFzIHdlbGwuCisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uaW5pdGlh
bFNjYWxlSXNTZXQpCisgICAgICAgIHJldHVybiBpbml0aWFsU2NhbGUoKTsKKworICAgIC8vIElm
IG5vdCwgd2Ugc3RpbGwgbmVlZCB0byBzYW5pdHkgY2hlY2sgb3VyIHZhbHVlLgorICAgIGRvdWJs
ZSBtaW5pbXVtU2NhbGUgPSBtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlOworCisgICAgZG91
YmxlIGNvbnRlbnRXaWR0aCA9IG1fY29udGVudFNpemUud2lkdGgoKTsKKyAgICBpZiAoY29udGVu
dFdpZHRoID4gMCAmJiBjb250ZW50V2lkdGggKiBtaW5pbXVtU2NhbGUgPCBtX21pbmltdW1MYXlv
dXRTaXplLndpZHRoKCkpCisgICAgICAgIG1pbmltdW1TY2FsZSA9IG1fbWluaW11bUxheW91dFNp
emUud2lkdGgoKSAvIGNvbnRlbnRXaWR0aDsKKworICAgIGRvdWJsZSBjb250ZW50SGVpZ2h0ID0g
bV9jb250ZW50U2l6ZS5oZWlnaHQoKTsKKyAgICBpZiAoY29udGVudEhlaWdodCA+IDAgJiYgY29u
dGVudEhlaWdodCAqIG1pbmltdW1TY2FsZSA8IG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkp
CisgICAgICAgIG1pbmltdW1TY2FsZSA9IG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkgLyBj
b250ZW50SGVpZ2h0OworCisgICAgbWluaW11bVNjYWxlID0gc3RkOjptaW4oc3RkOjptYXgobWlu
aW11bVNjYWxlLCBtX2NvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlKSwgbV9jb25maWd1cmF0aW9u
Lm1heGltdW1TY2FsZSk7CisKKyAgICByZXR1cm4gbWluaW11bVNjYWxlOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgdmlld3BvcnRBcmd1bWVudFZhbHVlSXNWYWxpZChmbG9hdCB2YWx1ZSkKK3sK
KyAgICByZXR1cm4gdmFsdWUgPiAwOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUs
IHR5cGVuYW1lIFZpZXdwb3J0QXJndW1lbnRzVHlwZT4KK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBs
eVZpZXdwb3J0QXJndW1lbnQoVmFsdWVUeXBlJiB2YWx1ZSwgVmlld3BvcnRBcmd1bWVudHNUeXBl
IHZpZXdwb3J0QXJndW1lbnRWYWx1ZSwgVmFsdWVUeXBlIG1pbmltdW0sIFZhbHVlVHlwZSBtYXhp
bXVtKQoreworICAgIGlmICh2aWV3cG9ydEFyZ3VtZW50VmFsdWVJc1ZhbGlkKHZpZXdwb3J0QXJn
dW1lbnRWYWx1ZSkpCisgICAgICAgIHZhbHVlID0gc3RkOjptaW4obWF4aW11bSwgc3RkOjptYXgo
bWluaW11bSwgc3RhdGljX2Nhc3Q8VmFsdWVUeXBlPih2aWV3cG9ydEFyZ3VtZW50VmFsdWUpKSk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgVmlld3BvcnRBcmd1
bWVudHNUeXBlPgorc3RhdGljIGlubGluZSB2b2lkIGFwcGx5Vmlld3BvcnRBcmd1bWVudChWYWx1
ZVR5cGUmIHZhbHVlLCBib29sJiB2YWx1ZUlzU2V0LCBWaWV3cG9ydEFyZ3VtZW50c1R5cGUgdmll
d3BvcnRBcmd1bWVudFZhbHVlLCBWYWx1ZVR5cGUgbWluaW11bSwgVmFsdWVUeXBlIG1heGltdW0p
Cit7CisgICAgaWYgKHZpZXdwb3J0QXJndW1lbnRWYWx1ZUlzVmFsaWQodmlld3BvcnRBcmd1bWVu
dFZhbHVlKSkgeworICAgICAgICB2YWx1ZSA9IHN0ZDo6bWluKG1heGltdW0sIHN0ZDo6bWF4KG1p
bmltdW0sIHN0YXRpY19jYXN0PFZhbHVlVHlwZT4odmlld3BvcnRBcmd1bWVudFZhbHVlKSkpOwor
ICAgICAgICB2YWx1ZUlzU2V0ID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgdmFsdWVJc1Nl
dCA9IGZhbHNlOworfQorCit2b2lkIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6dXBkYXRlQ29uZmln
dXJhdGlvbigpCit7CisgICAgbV9jb25maWd1cmF0aW9uID0gbV9kZWZhdWx0Q29uZmlndXJhdGlv
bjsKKworICAgIGNvbnN0IGRvdWJsZSBtaW5pbXVtVmlld3BvcnRBcmd1bWVudHNTY2FsZUZhY3Rv
ciA9IDAuMTsKKyAgICBjb25zdCBkb3VibGUgbWF4aW11bVZpZXdwb3J0QXJndW1lbnRzU2NhbGVG
YWN0b3IgPSAxMC4wOworCisgICAgYm9vbCB2aWV3cG9ydEFyZ3VtZW50c092ZXJyaWRlc0luaXRp
YWxTY2FsZTsKKyAgICBib29sIHZpZXdwb3J0QXJndW1lbnRzT3ZlcnJpZGVzV2lkdGg7CisgICAg
Ym9vbCB2aWV3cG9ydEFyZ3VtZW50c092ZXJyaWRlc0hlaWdodDsKKworICAgIGFwcGx5Vmlld3Bv
cnRBcmd1bWVudChtX2NvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlLCBtX3ZpZXdwb3J0QXJndW1l
bnRzLm1pblpvb20sIG1pbmltdW1WaWV3cG9ydEFyZ3VtZW50c1NjYWxlRmFjdG9yLCBtYXhpbXVt
Vmlld3BvcnRBcmd1bWVudHNTY2FsZUZhY3Rvcik7CisgICAgYXBwbHlWaWV3cG9ydEFyZ3VtZW50
KG1fY29uZmlndXJhdGlvbi5tYXhpbXVtU2NhbGUsIG1fdmlld3BvcnRBcmd1bWVudHMubWF4Wm9v
bSwgbV9jb25maWd1cmF0aW9uLm1pbmltdW1TY2FsZSwgbWF4aW11bVZpZXdwb3J0QXJndW1lbnRz
U2NhbGVGYWN0b3IpOworICAgIGFwcGx5Vmlld3BvcnRBcmd1bWVudChtX2NvbmZpZ3VyYXRpb24u
aW5pdGlhbFNjYWxlLCB2aWV3cG9ydEFyZ3VtZW50c092ZXJyaWRlc0luaXRpYWxTY2FsZSwgbV92
aWV3cG9ydEFyZ3VtZW50cy56b29tLCBtX2NvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlLCBtX2Nv
bmZpZ3VyYXRpb24ubWF4aW11bVNjYWxlKTsKKworICAgIGRvdWJsZSBtaW5pbXVtVmlld3BvcnRB
cmd1bWVudHNEaW1lbnNpb24gPSAxMDsKKyAgICBkb3VibGUgbWF4aW11bVZpZXdwb3J0QXJndW1l
bnRzRGltZW5zaW9uID0gMTAwMDA7CisgICAgYXBwbHlWaWV3cG9ydEFyZ3VtZW50KG1fY29uZmln
dXJhdGlvbi53aWR0aCwgdmlld3BvcnRBcmd1bWVudHNPdmVycmlkZXNXaWR0aCwgbV92aWV3cG9y
dEFyZ3VtZW50cy53aWR0aCwgbWluaW11bVZpZXdwb3J0QXJndW1lbnRzRGltZW5zaW9uLCBtYXhp
bXVtVmlld3BvcnRBcmd1bWVudHNEaW1lbnNpb24pOworICAgIGFwcGx5Vmlld3BvcnRBcmd1bWVu
dChtX2NvbmZpZ3VyYXRpb24uaGVpZ2h0LCB2aWV3cG9ydEFyZ3VtZW50c092ZXJyaWRlc0hlaWdo
dCwgbV92aWV3cG9ydEFyZ3VtZW50cy5oZWlnaHQsIG1pbmltdW1WaWV3cG9ydEFyZ3VtZW50c0Rp
bWVuc2lvbiwgbWF4aW11bVZpZXdwb3J0QXJndW1lbnRzRGltZW5zaW9uKTsKKworICAgIGlmICh2
aWV3cG9ydEFyZ3VtZW50c092ZXJyaWRlc0luaXRpYWxTY2FsZSB8fCB2aWV3cG9ydEFyZ3VtZW50
c092ZXJyaWRlc1dpZHRoIHx8IHZpZXdwb3J0QXJndW1lbnRzT3ZlcnJpZGVzSGVpZ2h0KSB7Cisg
ICAgICAgIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGVJc1NldCA9IHZpZXdwb3J0QXJndW1l
bnRzT3ZlcnJpZGVzSW5pdGlhbFNjYWxlOworICAgICAgICBtX2NvbmZpZ3VyYXRpb24ud2lkdGhJ
c1NldCA9IHZpZXdwb3J0QXJndW1lbnRzT3ZlcnJpZGVzV2lkdGg7CisgICAgICAgIG1fY29uZmln
dXJhdGlvbi5oZWlnaHRJc1NldCA9IHZpZXdwb3J0QXJndW1lbnRzT3ZlcnJpZGVzSGVpZ2h0Owor
ICAgIH0KKworICAgIGlmICh2aWV3cG9ydEFyZ3VtZW50VmFsdWVJc1ZhbGlkKG1fdmlld3BvcnRB
cmd1bWVudHMudXNlclpvb20pKQorICAgICAgICBtX2NvbmZpZ3VyYXRpb24uYWxsb3dzVXNlclNj
YWxpbmcgPSBtX3ZpZXdwb3J0QXJndW1lbnRzLnVzZXJab29tICE9IDAuOworfQorCitpbnQgVmll
d3BvcnRDb25maWd1cmF0aW9uOjpsYXlvdXRXaWR0aCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFj
b25zdHJhaW50c0FyZUFsbFJlbGF0aXZlKG1fY29uZmlndXJhdGlvbikpOworCisgICAgaWYgKG1f
Y29uZmlndXJhdGlvbi53aWR0aElzU2V0KSB7CisgICAgICAgIC8vIElmIHdlIHNjYWxlIHRvIGZp
dCwgdGhlbiBhY2NlcHQgdGhlIHZpZXdwb3J0IHdpZHRoIHdpdGggc2FuaXR5IGNoZWNraW5nLgor
ICAgICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGVJc1NldCkgeworICAgICAg
ICAgICAgZG91YmxlIG1heGltdW1TY2FsZSA9IHRoaXMtPm1heGltdW1TY2FsZSgpOworICAgICAg
ICAgICAgZG91YmxlIG1heGltdW1Db250ZW50V2lkdGhJblZpZXdwb3J0Q29vcmRpbmF0ZSA9IG1h
eGltdW1TY2FsZSAqIG1fY29uZmlndXJhdGlvbi53aWR0aDsKKyAgICAgICAgICAgIGlmIChtYXhp
bXVtQ29udGVudFdpZHRoSW5WaWV3cG9ydENvb3JkaW5hdGUgPCBtX21pbmltdW1MYXlvdXRTaXpl
LndpZHRoKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgY29udGVudCB6b29tZWQgdG8gbWF4
U2NhbGUgZG9lcyBub3QgZml0IHRoZSB0aGUgdmlldy4gUmV0dXJuIHRoZSBtaW5pbXVtIHdpZHRo
CisgICAgICAgICAgICAgICAgLy8gc2F0aXNmeWluZyB0aGUgY29uc3RyYWludCBtYXhpbXVtU2Nh
bGUuCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0U2l6
ZS53aWR0aCgpIC8gbWF4aW11bVNjYWxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6OnJvdW5kKG1fY29uZmlndXJhdGlvbi53aWR0aCk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBJZiBub3QsIG1ha2Ugc3VyZSB0aGUgdmlld3BvcnQgd2lkdGggYW5kIGluaXRpYWwg
c2NhbGUgY2FuIGNvLWV4aXN0LgorICAgICAgICBkb3VibGUgaW5pdGlhbENvbnRlbnRXaWR0aElu
Vmlld3BvcnRDb29yZGluYXRlID0gbV9jb25maWd1cmF0aW9uLndpZHRoICogbV9jb25maWd1cmF0
aW9uLmluaXRpYWxTY2FsZTsKKyAgICAgICAgaWYgKGluaXRpYWxDb250ZW50V2lkdGhJblZpZXdw
b3J0Q29vcmRpbmF0ZSA8IG1fY29udGVudFNpemUud2lkdGgoKSkgeworICAgICAgICAgICAgLy8g
VGhlIHNwZWNpZmllZCB3aWR0aCBkb2VzIG5vdCBmaXQgaW4gdmlld3BvcnQuIFJldHVybiB0aGUg
bWluaW11bSB3aWR0aCB0aGF0IHNhdGlzZnkgdGhlIGluaXRpYWxTY2FsZSBjb25zdHJhaW50Lgor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgp
IC8gbV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHN0ZDo6cm91bmQobV9jb25maWd1cmF0aW9uLndpZHRoKTsKKyAgICB9CisKKyAgICAvLyBJ
ZiB0aGUgcGFnZSBoYXMgYSByZWFsIHNjYWxlLCB0aGVuIGp1c3QgcmV0dXJuIHRoZSBtaW5pbXVt
IHNpemUgb3ZlciB0aGUgaW5pdGlhbCBzY2FsZS4KKyAgICBpZiAobV9jb25maWd1cmF0aW9uLmlu
aXRpYWxTY2FsZUlzU2V0ICYmICFtX2NvbmZpZ3VyYXRpb24uaGVpZ2h0SXNTZXQpCisgICAgICAg
IHJldHVybiBzdGQ6OnJvdW5kKG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSAvIG1fY29uZmln
dXJhdGlvbi5pbml0aWFsU2NhbGUpOworCisgICAgaWYgKG1fbWluaW11bUxheW91dFNpemUuaGVp
Z2h0KCkgPiAwKQorICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX21pbmltdW1MYXlvdXRTaXpl
LndpZHRoKCkgKiBsYXlvdXRIZWlnaHQoKSAvIG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkp
OworICAgIHJldHVybiBtX21pbmltdW1MYXlvdXRTaXplLndpZHRoKCk7Cit9CisKK2ludCBWaWV3
cG9ydENvbmZpZ3VyYXRpb246OmxheW91dEhlaWdodCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFj
b25zdHJhaW50c0FyZUFsbFJlbGF0aXZlKG1fY29uZmlndXJhdGlvbikpOworCisgICAgaWYgKG1f
Y29uZmlndXJhdGlvbi5oZWlnaHRJc1NldCkgeworICAgICAgICAvLyBJZiB3ZSBzY2FsZSB0byBm
aXQsIHRoZW4gYWNjZXB0IHRoZSB2aWV3cG9ydCBoZWlnaHQgd2l0aCBzYW5pdHkgY2hlY2tpbmcu
CisgICAgICAgIGlmICghbV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZUlzU2V0KSB7CisgICAg
ICAgICAgICBkb3VibGUgbWF4aW11bVNjYWxlID0gdGhpcy0+bWF4aW11bVNjYWxlKCk7CisgICAg
ICAgICAgICBkb3VibGUgbWF4aW11bUNvbnRlbnRIZWlnaHRJblZpZXdwb3J0Q29vcmRpbmF0ZSA9
IG1heGltdW1TY2FsZSAqIG1fY29uZmlndXJhdGlvbi5oZWlnaHQ7CisgICAgICAgICAgICBpZiAo
bWF4aW11bUNvbnRlbnRIZWlnaHRJblZpZXdwb3J0Q29vcmRpbmF0ZSA8IG1fbWluaW11bUxheW91
dFNpemUuaGVpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgY29udGVudCB6b29tZWQg
dG8gbWF4U2NhbGUgZG9lcyBub3QgZml0IHRoZSB0aGUgdmlldy4gUmV0dXJuIHRoZSBtaW5pbXVt
IGhlaWdodCB0aGF0CisgICAgICAgICAgICAgICAgLy8gc2F0aXNmeSB0aGUgY29uc3RyYWludCBt
YXhpbXVtU2NhbGUuCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVt
TGF5b3V0U2l6ZS5oZWlnaHQoKSAvIG1heGltdW1TY2FsZSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX2NvbmZpZ3VyYXRpb24uaGVpZ2h0KTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIElmIG5vdCwgbWFrZSBzdXJlIHRoZSB2aWV3cG9ydCB3aWR0aCBh
bmQgaW5pdGlhbCBzY2FsZSBjYW4gY28tZXhpc3QuCisgICAgICAgIGRvdWJsZSBpbml0aWFsQ29u
dGVudEhlaWdodEluVmlld3BvcnRDb29yZGluYXRlID0gbV9jb25maWd1cmF0aW9uLmhlaWdodCAq
IG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGU7CisgICAgICAgIGlmIChpbml0aWFsQ29udGVu
dEhlaWdodEluVmlld3BvcnRDb29yZGluYXRlIDwgbV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQo
KSkgeworICAgICAgICAgICAgLy8gVGhlIHNwZWNpZmllZCB3aWR0aCBkb2VzIG5vdCBmaXQgaW4g
dmlld3BvcnQuIFJldHVybiB0aGUgbWluaW11bSBoZWlnaHQgdGhhdCBzYXRpc2Z5IHRoZSBpbml0
aWFsU2NhbGUgY29uc3RyYWludC4KKyAgICAgICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1fbWlu
aW11bUxheW91dFNpemUuaGVpZ2h0KCkgLyBtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX2NvbmZpZ3VyYXRpb24uaGVp
Z2h0KTsKKyAgICB9CisKKyAgICAvLyBJZiB0aGUgcGFnZSBoYXMgYSByZWFsIHNjYWxlLCB0aGVu
IGp1c3QgcmV0dXJuIHRoZSBtaW5pbXVtIHNpemUgb3ZlciB0aGUgaW5pdGlhbCBzY2FsZS4KKyAg
ICBpZiAobV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZUlzU2V0ICYmICFtX2NvbmZpZ3VyYXRp
b24ud2lkdGhJc1NldCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0
U2l6ZS5oZWlnaHQoKSAvIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGUpOworCisgICAgaWYg
KG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSA+IDApCisgICAgICAgIHJldHVybiBzdGQ6OnJv
dW5kKG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkgKiBsYXlvdXRXaWR0aCgpIC8gbV9taW5p
bXVtTGF5b3V0U2l6ZS53aWR0aCgpKTsKKyAgICByZXR1cm4gbV9taW5pbXVtTGF5b3V0U2l6ZS5o
ZWlnaHQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJhNTJmZmI4NjM4MGJkZmRh
NWRhZDYxOGE2NDQ3MjU0Y2MwYzU4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNS0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBWaWV3cG9ydENvbmZpZ3VyYXRpb25faAorI2RlZmluZSBWaWV3cG9y
dENvbmZpZ3VyYXRpb25faAorCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlZpZXdw
b3J0QXJndW1lbnRzLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgVmlld3BvcnRDb25maWd1cmF0aW9uIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShWaWV3cG9ydENvbmZpZ3VyYXRpb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICAvLyBGSVhNRTogdW5pZnkgd2l0aCBWaWV3cG9ydEFyZ3VtZW50
cy4KKyAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CisgICAgICAgIFBhcmFtZXRlcnMoKQorICAgICAg
ICAgICAgOiB3aWR0aCgwKQorICAgICAgICAgICAgLCBoZWlnaHQoMCkKKyAgICAgICAgICAgICwg
aW5pdGlhbFNjYWxlKDApCisgICAgICAgICAgICAsIG1pbmltdW1TY2FsZSgwKQorICAgICAgICAg
ICAgLCBtYXhpbXVtU2NhbGUoMCkKKyAgICAgICAgICAgICwgYWxsb3dzVXNlclNjYWxpbmcoZmFs
c2UpCisgICAgICAgICAgICAsIHdpZHRoSXNTZXQoZmFsc2UpCisgICAgICAgICAgICAsIGhlaWdo
dElzU2V0KGZhbHNlKQorICAgICAgICAgICAgLCBpbml0aWFsU2NhbGVJc1NldChmYWxzZSkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgZG91YmxlIHdpZHRoOworICAgICAgICBkb3Vi
bGUgaGVpZ2h0OworICAgICAgICBkb3VibGUgaW5pdGlhbFNjYWxlOworICAgICAgICBkb3VibGUg
bWluaW11bVNjYWxlOworICAgICAgICBkb3VibGUgbWF4aW11bVNjYWxlOworICAgICAgICBib29s
IGFsbG93c1VzZXJTY2FsaW5nOworCisgICAgICAgIGJvb2wgd2lkdGhJc1NldDsKKyAgICAgICAg
Ym9vbCBoZWlnaHRJc1NldDsKKyAgICAgICAgYm9vbCBpbml0aWFsU2NhbGVJc1NldDsKKyAgICB9
OworCisgICAgVmlld3BvcnRDb25maWd1cmF0aW9uKCk7CisKKyAgICBjb25zdCBQYXJhbWV0ZXJz
JiBkZWZhdWx0Q29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdENvbmZpZ3Vy
YXRpb247IH0KKyAgICB2b2lkIHNldERlZmF1bHRDb25maWd1cmF0aW9uKGNvbnN0IFBhcmFtZXRl
cnMmKTsKKworICAgIGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudFNpemU7IH0KKyAgICB2b2lkIHNldENvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXpl
Jik7CisKKyAgICBjb25zdCBJbnRTaXplJiBtaW5pbXVtTGF5b3V0U2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWluaW11bUxheW91dFNpemU7IH0KKyAgICB2b2lkIHNldE1pbmltdW1MYXlvdXRTaXpl
KGNvbnN0IEludFNpemUmKTsKKworICAgIGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiB2aWV3cG9y
dEFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRBcmd1bWVudHM7IH0KKyAgICB2
b2lkIHNldFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJik7CisKKyAg
ICBJbnRTaXplIGxheW91dFNpemUoKSBjb25zdDsKKyAgICBkb3VibGUgaW5pdGlhbFNjYWxlKCkg
Y29uc3Q7CisgICAgZG91YmxlIG1pbmltdW1TY2FsZSgpIGNvbnN0OworICAgIGRvdWJsZSBtYXhp
bXVtU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ubWF4aW11bVNjYWxlOyB9
CisgICAgYm9vbCBhbGxvd3NVc2VyU2NhbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJh
dGlvbi5hbGxvd3NVc2VyU2NhbGluZzsgfQorCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlQ29u
ZmlndXJhdGlvbigpOworICAgIGludCBsYXlvdXRXaWR0aCgpIGNvbnN0OworICAgIGludCBsYXlv
dXRIZWlnaHQoKSBjb25zdDsKKworICAgIFBhcmFtZXRlcnMgbV9jb25maWd1cmF0aW9uOworICAg
IFBhcmFtZXRlcnMgbV9kZWZhdWx0Q29uZmlndXJhdGlvbjsKKyAgICBJbnRTaXplIG1fY29udGVu
dFNpemU7CisgICAgSW50U2l6ZSBtX21pbmltdW1MYXlvdXRTaXplOworICAgIFZpZXdwb3J0QXJn
dW1lbnRzIG1fdmlld3BvcnRBcmd1bWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBWaWV3cG9ydENvbmZpZ3VyYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCmluZGV4IGVi
MzRhNGZhMjY5MGQ2ZjExODhkMmU4MzYxZGNlMmJhYzJkZGYyNzAuLjMyMDBiZjdjNzkzYzlhNjBl
MWYwM2M1NDkzNWVlZjhmNTYwZjcyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTE1NSwxMSArMTU1LDMx
IEBAIHB1YmxpYzoKICAgICBIYXNoTWFwPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3Jt
TGF5ZXJJRCwgTGF5ZXJQcm9wZXJ0aWVzPiBjaGFuZ2VkTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzOyB9CiAgICAgVmVjdG9yPFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4gZGVzdHJveWVkTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0cm95ZWRMYXllcklEczsgfQogCisgICAgV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50c1Np
emUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzU2l6ZTsgfQorICAgIHZvaWQgc2V0Q29udGVu
dHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpIHsgbV9jb250ZW50c1NpemUgPSBz
aXplOyB9OworCisgICAgZG91YmxlIHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZVNjYWxlRmFjdG9yOyB9CisgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoZG91YmxlIHBh
Z2VTY2FsZUZhY3RvcikgeyBtX3BhZ2VTY2FsZUZhY3RvciA9IHBhZ2VTY2FsZUZhY3RvcjsgfQor
CisgICAgZG91YmxlIG1pbmltdW1TY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11
bVNjYWxlRmFjdG9yOyB9CisgICAgdm9pZCBzZXRNaW5pbXVtU2NhbGVGYWN0b3IoZG91YmxlIHNj
YWxlKSB7IG1fbWluaW11bVNjYWxlRmFjdG9yID0gc2NhbGU7IH0KKworICAgIGRvdWJsZSBtYXhp
bXVtU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX21heGltdW1TY2FsZUZhY3RvcjsgfQor
ICAgIHZvaWQgc2V0TWF4aW11bVNjYWxlRmFjdG9yKGRvdWJsZSBzY2FsZSkgeyBtX21heGltdW1T
Y2FsZUZhY3RvciA9IHNjYWxlOyB9CisKKyAgICBib29sIGFsbG93c1VzZXJTY2FsaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9hbGxvd3NVc2VyU2NhbGluZzsgfQorICAgIHZvaWQgc2V0QWxsb3dzVXNl
clNjYWxpbmcoYm9vbCBhbGxvd3NVc2VyU2NhbGluZykgeyBtX2FsbG93c1VzZXJTY2FsaW5nID0g
YWxsb3dzVXNlclNjYWxpbmc7IH0KKwogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpQbGF0Zm9ybUxheWVySUQgbV9yb290TGF5ZXJJRDsKICAgICBIYXNoTWFwPFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCwgTGF5ZXJQcm9wZXJ0aWVzPiBtX2NoYW5n
ZWRMYXllclByb3BlcnRpZXM7CiAgICAgVmVjdG9yPExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzPiBt
X2NyZWF0ZWRMYXllcnM7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRm
b3JtTGF5ZXJJRD4gbV9kZXN0cm95ZWRMYXllcklEczsKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1f
Y29udGVudHNTaXplOworICAgIGRvdWJsZSBtX3BhZ2VTY2FsZUZhY3RvcjsKKyAgICBkb3VibGUg
bV9taW5pbXVtU2NhbGVGYWN0b3I7CisgICAgZG91YmxlIG1fbWF4aW11bVNjYWxlRmFjdG9yOwor
ICAgIGJvb2wgbV9hbGxvd3NVc2VyU2NhbGluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0KaW5kZXggMjc2OWFiOGYzYWEwMDQ2Y2YxZDlkYjRmNDdkNzVmZDgxYzZl
YzkzMi4uMjNmMzVkYzQxMjhlZTUzZmU1ZGU2Y2E0NTg4YTY4MzQ5NWQ2MjU5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tCkBAIC0zNDgsNiArMzQ4LDExIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNv
ZGVyIDw8IG1fY3JlYXRlZExheWVyczsKICAgICBlbmNvZGVyIDw8IG1fY2hhbmdlZExheWVyUHJv
cGVydGllczsKICAgICBlbmNvZGVyIDw8IG1fZGVzdHJveWVkTGF5ZXJJRHM7CisgICAgZW5jb2Rl
ciA8PCBtX2NvbnRlbnRzU2l6ZTsKKyAgICBlbmNvZGVyIDw8IG1fcGFnZVNjYWxlRmFjdG9yOwor
ICAgIGVuY29kZXIgPDwgbV9taW5pbXVtU2NhbGVGYWN0b3I7CisgICAgZW5jb2RlciA8PCBtX21h
eGltdW1TY2FsZUZhY3RvcjsKKyAgICBlbmNvZGVyIDw8IG1fYWxsb3dzVXNlclNjYWxpbmc7CiB9
CiAKIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZShJUEM6OkFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIHJlc3VsdCkKQEAg
LTM3MSw2ICszNzYsMjEgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2Rl
KElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2Nv
bnRlbnRzU2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lm1fcGFnZVNjYWxlRmFjdG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9taW5pbXVtU2NhbGVGYWN0b3IpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5t
X21heGltdW1TY2FsZUZhY3RvcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fYWxsb3dzVXNlclNjYWxpbmcpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNDlmOTlmYzZi
ZWQ1NGUyMjQyMWJjZGNjMGM0NmYwNTI0OWFhYTg2NS4uMjI1NWZkY2QxNTBhMWYyMjk5MWUxNTQw
YjY0ODA2ZjhkMTdlZTRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC02Miw3ICs2Miw2IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBXZWJTZWN1cml0eU9yaWdpbiYsIEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMo
Ym9vbCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVy
dGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKSBvdmVycmlkZTsKQEAgLTEw
MSwxMSArMTAwLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudFdhc05v
dEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckN1c3RvbVN3aXBlVmlld3MoKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgdm9pZCBtYWluRG9jdW1lbnREaWRSZWNlaXZlTW9iaWxlRG9jVHlwZSgpIG92ZXJy
aWRlOwotCiAgICAgdmlydHVhbCB2b2lkIGRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiBoaWdobGlnaHRlZFF1YWRzLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BSaWdodFJh
ZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBk
aWRDaGFuZ2VWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50
cyYgdmlld3BvcnRBcmd1bWVudHMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21t
aXRMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKSBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgdm9pZCBzdGFydEFzc2lzdGluZ05vZGUoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIGJvb2wgaGFzTmV4dEZvY3VzYWJsZSwgYm9vbCBoYXNQcmV2aW91c0ZvY3VzYWJsZSkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBc3Npc3RpbmdOb2RlKCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCmluZGV4IDc3NzVlZjZhYTkwMTMzNTRjNWQyNzllYTQ2MTg2MWUyY2E3MzU1YWUu
LjhlMWEyZmY2N2JiZDIzNTYxNmQ5ZTA4YTY1MzRkZjgwODA3NWY1YzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBA
IC0xNDcsMTEgKzE0Nyw2IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExvYWRGb3JN
YWluRnJhbWUoKQogICAgIFttX3ZpZXcgX2RpZENvbW1pdExvYWRGb3JNYWluRnJhbWVdOwogfQog
Ci12b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBJbnRTaXpl
JiBjb250ZW50c1NpemUpCi17Ci0gICAgW21fdmlldyBfZGlkQ2hhbmdlQ29udGVudFNpemU6Y29u
dGVudHNTaXplXTsKLX0KLQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Q3Vyc29yKGNvbnN0IEN1
cnNvciYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTM0NCwxOSArMzM5LDE0IEBAIHZv
aWQgUGFnZUNsaWVudEltcGw6OmNsZWFyQ3VzdG9tU3dpcGVWaWV3cygpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6bWFpbkRvY3VtZW50RGlkUmVjZWl2
ZU1vYmlsZURvY1R5cGUoKQotewotICAgIFttX3ZpZXcgX2RpZFJlY2VpdmVNb2JpbGVEb2NUeXBl
Rm9yTWFpbkZyYW1lXTsKLX0KLQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkR2V0VGFwSGlnaGxp
Z2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBj
b2xvciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mIGhpZ2hsaWdodGVkUXVhZHMs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21MZWZ0
UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21SaWdodFJhZGl1cykKIHsKICAg
ICBbbV92aWV3IF9kaWRHZXRUYXBIaWdobGlnaHRGb3JSZXF1ZXN0OnJlcXVlc3RJRCBjb2xvcjpj
b2xvciBxdWFkczpoaWdobGlnaHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6dG9wTGVmdFJhZGl1cyB0
b3BSaWdodFJhZGl1czp0b3BSaWdodFJhZGl1cyBib3R0b21MZWZ0UmFkaXVzOmJvdHRvbUxlZnRS
YWRpdXMgYm90dG9tUmlnaHRSYWRpdXM6Ym90dG9tUmlnaHRSYWRpdXNdOwogfQogCi12b2lkIFBh
Z2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBXZWJDb3JlOjpW
aWV3cG9ydEFyZ3VtZW50cyYgdmlld3BvcnRBcmd1bWVudHMpCit2b2lkIFBhZ2VDbGllbnRJbXBs
OjpkaWRDb21taXRMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIGxh
eWVyVHJlZVRyYW5zYWN0aW9uKQogewotICAgIFttX3ZpZXcgX2RpZENoYW5nZVZpZXdwb3J0QXJn
dW1lbnRzOnZpZXdwb3J0QXJndW1lbnRzXTsKKyAgICBbbV92aWV3IF9kaWRDb21taXRMYXllclRy
ZWU6bGF5ZXJUcmVlVHJhbnNhY3Rpb25dOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFy
dEFzc2lzdGluZ05vZGUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGJvb2wsIGJvb2wpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3LmgKaW5kZXgg
MWNlMjRkNjJhMmVhNDFhNjcyNDRhMzlmNTI3MDhiYzVjMmY3NzA4OC4uY2RjODg2ZWI4YTc1YjNl
OGYyOTRkZTU0YWE1NzE0YThiZjBmM2EyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXcuaApAQCAtMzksMTMgKzM5LDE0IEBAIHR5cGVkZWYg
TlNfRU5VTSh1bnNpZ25lZCwgV0tDb250ZW50VHlwZSkKICAgICBJbWFnZQogfTsKIAorbmFtZXNw
YWNlIFdlYktpdCB7CitjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKK30KKwogQHBy
b3RvY29sIFdLQ29udGVudFZpZXdEZWxlZ2F0ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwKLS0gKHZv
aWQpY29udGVudFZpZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldyBjb250ZW50c1NpemVE
aWRDaGFuZ2U6KENHU2l6ZSluZXdTaXplOwogLSAodm9pZCljb250ZW50Vmlld0RpZENvbW1pdExv
YWRGb3JNYWluRnJhbWU6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldzsKLS0gKHZvaWQpY29u
dGVudFZpZXdEaWRSZWNlaXZlTW9iaWxlRG9jVHlwZTooV0tDb250ZW50VmlldyAqKWNvbnRlbnRW
aWV3OwotLSAodm9pZCljb250ZW50VmlldzooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3IGRp
ZENoYW5nZVZpZXdwb3J0QXJndW1lbnRzU2l6ZTooQ0dTaXplKW5ld1NpemUgaW5pdGlhbFNjYWxl
OihmbG9hdClpbml0aWFsU2NhbGUgbWluaW11bVNjYWxlOihmbG9hdCltaW5pbXVtU2NhbGUgbWF4
aW11bVNjYWxlOihmbG9hdCltYXhpbXVtU2NhbGUgYWxsb3dzVXNlclNjYWxpbmc6KGZsb2F0KWFs
bG93c1VzZXJTY2FsaW5nOwotCistICh2b2lkKWNvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICop
Y29udGVudFZpZXcgZGlkQ29tbWl0TGF5ZXJUcmVlOihjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uJilsYXllclRyZWVUcmFuc2FjdGlvbjsKIEBlbmQKIAogV0tfQVBJX0NM
QVNTCkBAIC02NiwxMCArNjcsMTIgQEAgV0tfQVBJX0NMQVNTCiAKIC0gKHZvaWQpc2V0TWluaW11
bVNpemU6KENHU2l6ZSlzaXplOwogLSAodm9pZClzZXRWaWV3cG9ydFNpemU6KENHU2l6ZSlzaXpl
OworLSAodm9pZClzZXRNaW5pbXVtTGF5b3V0U2l6ZTooQ0dTaXplKXNpemU7CiAKIC0gKHZvaWQp
ZGlkRmluaXNoU2Nyb2xsVG86KENHUG9pbnQpY29udGVudE9mZnNldDsKIC0gKHZvaWQpZGlkU2Ny
b2xsVG86KENHUG9pbnQpY29udGVudE9mZnNldDsKIC0gKHZvaWQpZGlkWm9vbVRvU2NhbGU6KENH
RmxvYXQpc2NhbGU7CiAtICh2b2lkKXdpbGxTdGFydFpvb21PclNjcm9sbDsKKy0gKHZvaWQpd2ls
bFN0YXJ0VXNlclRyaWdnZXJlZFpvb207CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDU2YzAwOGNhYzdlMDZkZjFh
NDA2MjRiYWI5YWZmYTNjZTBkNGZjODQuLmI2Nzk1NDhlYzE3NzJkZTFmYWQ4MmI0N2I1MGVmYmVk
NzA1NmMxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dL
Q29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tD
b250ZW50Vmlldy5tbQpAQCAtMjA5LDYgKzIwOSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogICAgIFtzZWxmIF91cGRhdGVWaWV3RXhwb3NlZFJlY3RdOwogfQogCistICh2b2lkKXNldE1p
bmltdW1MYXlvdXRTaXplOihDR1NpemUpc2l6ZQoreworICAgIF9wYWdlLT5zZXRWaWV3cG9ydENv
bmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShJbnRTaXplKENHQ2VpbGluZyhzaXplLndpZHRo
KSwgQ0dDZWlsaW5nKHNpemUuaGVpZ2h0KSkpOworfQorCiAtICh2b2lkKWRpZEZpbmlzaFNjcm9s
bFRvOihDR1BvaW50KWNvbnRlbnRPZmZzZXQKIHsKICAgICBfY3VycmVudEV4cG9zZWRSZWN0UG9z
aXRpb24gPSBjb250ZW50T2Zmc2V0OwpAQCAtMjMxLDYgKzIzNiwxMSBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogICAgIFtfaW50ZXJhY3Rpb25WaWV3IF93aWxsU3RhcnRTY3JvbGxpbmdPclpv
b21pbmddOwogfQogCistICh2b2lkKXdpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29tCit7CisgICAg
X3BhZ2UtPndpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29taW5nKCk7Cit9CisKIC0gKHZvaWQpZGlk
Wm9vbVRvU2NhbGU6KENHRmxvYXQpc2NhbGUKIHsKICAgICBfcGFnZS0+ZGlkRmluaXNoWm9vbWlu
ZyhzY2FsZSk7CkBAIC0zMDQsMjYgKzMxNCwxNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
ICAgICAgICBbX2RlbGVnYXRlIGNvbnRlbnRWaWV3RGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZTpz
ZWxmXTsKIH0KIAotLSAodm9pZClfZGlkQ2hhbmdlQ29udGVudFNpemU6KENHU2l6ZSljb250ZW50
c1NpemUKKy0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlVHJhbnNhY3Rpb24KIHsKKyAgICBDR1NpemUg
Y29udGVudHNTaXplID0gbGF5ZXJUcmVlVHJhbnNhY3Rpb24uY29udGVudHNTaXplKCk7CisKICAg
ICBbc2VsZiBzZXRCb3VuZHM6e0NHUG9pbnRaZXJvLCBjb250ZW50c1NpemV9XTsKICAgICBbX2lu
dGVyYWN0aW9uVmlldyBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIGNvbnRlbnRzU2l6ZS53aWR0
aCwgY29udGVudHNTaXplLmhlaWdodCldOwogICAgIFtfcm9vdENvbnRlbnRWaWV3IHNldEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgY29udGVudHNTaXplLndpZHRoLCBjb250ZW50c1NpemUuaGVpZ2h0
KV07CiAKLSAgICBpZiAoW19kZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNv
bnRlbnRWaWV3OmNvbnRlbnRzU2l6ZURpZENoYW5nZTopXSkKLSAgICAgICAgW19kZWxlZ2F0ZSBj
b250ZW50VmlldzpzZWxmIGNvbnRlbnRzU2l6ZURpZENoYW5nZTpjb250ZW50c1NpemVdOwotfQot
Ci0tICh2b2lkKV9kaWRSZWNlaXZlTW9iaWxlRG9jVHlwZUZvck1haW5GcmFtZQotewotICAgIGlm
IChbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY29udGVudFZpZXdEaWRS
ZWNlaXZlTW9iaWxlRG9jVHlwZTopXSkKLSAgICAgICAgW19kZWxlZ2F0ZSBjb250ZW50Vmlld0Rp
ZFJlY2VpdmVNb2JpbGVEb2NUeXBlOnNlbGZdOwotfQotCi0tICh2b2lkKV9kaWRDaGFuZ2VWaWV3
cG9ydEFyZ3VtZW50czooY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKWFyZ3VtZW50
cwotewotICAgIGlmIChbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY29u
dGVudFZpZXc6ZGlkQ2hhbmdlVmlld3BvcnRBcmd1bWVudHNTaXplOmluaXRpYWxTY2FsZTptaW5p
bXVtU2NhbGU6bWF4aW11bVNjYWxlOmFsbG93c1VzZXJTY2FsaW5nOildKQotICAgICAgICBbX2Rl
bGVnYXRlIGNvbnRlbnRWaWV3OnNlbGYgZGlkQ2hhbmdlVmlld3BvcnRBcmd1bWVudHNTaXplOkNH
U2l6ZU1ha2UoYXJndW1lbnRzLndpZHRoLCBhcmd1bWVudHMuaGVpZ2h0KSBpbml0aWFsU2NhbGU6
YXJndW1lbnRzLnpvb20gbWluaW11bVNjYWxlOmFyZ3VtZW50cy5taW5ab29tIG1heGltdW1TY2Fs
ZTphcmd1bWVudHMubWF4Wm9vbSBhbGxvd3NVc2VyU2NhbGluZzphcmd1bWVudHMudXNlclpvb21d
OworICAgIGlmIChbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY29udGVu
dFZpZXc6ZGlkQ29tbWl0TGF5ZXJUcmVlOildKQorICAgICAgICBbX2RlbGVnYXRlIGNvbnRlbnRW
aWV3OnNlbGYgZGlkQ29tbWl0TGF5ZXJUcmVlOmxheWVyVHJlZVRyYW5zYWN0aW9uXTsKIH0KIAog
LSAodm9pZClfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDoodWludDY0X3QpcmVxdWVzdElE
IGNvbG9yOihjb25zdCBDb2xvciYpY29sb3IgcXVhZHM6KGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+
JiloaWdobGlnaHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6KGNvbnN0IEludFNpemUmKXRvcExlZnRS
YWRpdXMgdG9wUmlnaHRSYWRpdXM6KGNvbnN0IEludFNpemUmKXRvcFJpZ2h0UmFkaXVzIGJvdHRv
bUxlZnRSYWRpdXM6KGNvbnN0IEludFNpemUmKWJvdHRvbUxlZnRSYWRpdXMgYm90dG9tUmlnaHRS
YWRpdXM6KGNvbnN0IEludFNpemUmKWJvdHRvbVJpZ2h0UmFkaXVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXdJbnRlcm5hbC5oCmlu
ZGV4IDJiZjhhMGRkNmU3MTViN2Y2MGFiNjRhYTQ0MjMzYWFmODM5MGYzMDYuLjA0Y2JmZDhhZWVk
MTc0NWNkMTRjZjUyMGIwNjkyYWRhNzlmNDZkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXdJbnRlcm5hbC5oCkBAIC0zOCw2
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKIGNs
YXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTsKIGNsYXNzIExheWVyVHJlZUNv
bnRleHQ7CitjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFdlYkZyYW1l
UHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKQEAg
LTU3LDkgKzU4LDcgQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOwog
LSAodm9pZClfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcjooQ0FMYXllciAqKXJv
b3RMYXllcjsKIAogLSAodm9pZClfZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZTsKLS0gKHZvaWQp
X2RpZENoYW5nZUNvbnRlbnRTaXplOihDR1NpemUpY29udGVudHNTaXplOwotLSAodm9pZClfZGlk
UmVjZWl2ZU1vYmlsZURvY1R5cGVGb3JNYWluRnJhbWU7Ci0tICh2b2lkKV9kaWRDaGFuZ2VWaWV3
cG9ydEFyZ3VtZW50czooY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKXZpZXdwb3J0
QXJndW1lbnRzOworLSAodm9pZClfZGlkQ29tbWl0TGF5ZXJUcmVlOihjb25zdCBXZWJLaXQ6OlJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJilsYXllclRyZWVUcmFuc2FjdGlvbjsKIAogLSAodm9p
ZClfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDoodWludDY0X3QpcmVxdWVzdElEIGNvbG9y
Oihjb25zdCBXZWJDb3JlOjpDb2xvciYpY29sb3IgcXVhZHM6KGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpGbG9hdFF1YWQ+JiloaWdobGlnaHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6KGNvbnN0IFdlYkNv
cmU6OkludFNpemUmKXRvcExlZnRSYWRpdXMgdG9wUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKXRvcFJpZ2h0UmFkaXVzIGJvdHRvbUxlZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKWJvdHRvbUxlZnRSYWRpdXMgYm90dG9tUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNv
cmU6OkludFNpemUmKWJvdHRvbVJpZ2h0UmFkaXVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS1ZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1ZpZXdJT1MubW0KaW5kZXggNTUzNWYyZDQ3YjY0MGY2NTM1ZGMzZGY5
NmVmYjA5N2JmZjQyNzAwMS4uZjc1ZmE2ZmY2NGExZTIwNWUxYjExNzRiNGU4ODFiZjA0YzUzNmQz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbQpA
QCAtMzIsMTQgKzMyLDEwIEBACiAjaW1wb3J0ICJXS1Njcm9sbFZpZXcuaCIKICNpbXBvcnQgPFVJ
S2l0L1VJU2NyZWVuLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXdfUHJpdmF0ZS5oPgot
I2ltcG9ydCA8VUlLaXQvX1VJV2ViVmlld3BvcnRIYW5kbGVyLmg+CisjaW1wb3J0IDxXZWJLaXQy
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAKLXN0YXRpYyBjb25zdCBmbG9hdCBtaW5XZWJWaWV3U2NhbGUgPSAwLjI1Owotc3RhdGljIGNv
bnN0IGZsb2F0IG1heFdlYlZpZXdTY2FsZSA9IDU7Ci1zdGF0aWMgc3RydWN0IF9VSVdlYlZpZXdw
b3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29uZmlndXJhdGlvbiA9IHsgeyBVSVdl
YlZpZXdwb3J0U3RhbmRhcmRWaWV3cG9ydFdpZHRoLCBVSVdlYlZpZXdwb3J0R3Jvd3NBbmRTaHJp
bmtzVG9GaXRIZWlnaHQgfSwgVUlXZWJWaWV3cG9ydFNjYWxlRm9yU2NhbGVzVG9GaXQsIG1pbldl
YlZpZXdTY2FsZSwgbWF4V2ViVmlld1NjYWxlLCB0cnVlIH07Ci0KLUBpbnRlcmZhY2UgV0tWaWV3
ICgpIDxVSVNjcm9sbFZpZXdEZWxlZ2F0ZSwgV0tDb250ZW50Vmlld0RlbGVnYXRlLCBfVUlXZWJW
aWV3cG9ydEhhbmRsZXJEZWxlZ2F0ZT4KK0BpbnRlcmZhY2UgV0tWaWV3ICgpIDxVSVNjcm9sbFZp
ZXdEZWxlZ2F0ZSwgV0tDb250ZW50Vmlld0RlbGVnYXRlPgogLSAodm9pZClfc2V0RG9jdW1lbnRT
Y2FsZTooQ0dGbG9hdCluZXdTY2FsZTsKIEBlbmQKIApAQCAtNDcsOSArNDMsOSBAQCBzdGF0aWMg
c3RydWN0IF9VSVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29uZmln
dXJhdGlvbiA9IHsgeyBVSQogICAgIFJldGFpblB0cjxXS1Njcm9sbFZpZXc+IF9zY3JvbGxWaWV3
OwogICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiBfY29udGVudFZpZXc7CiAKLSAgICBCT09M
IF91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZTsKLSAgICBSZXRhaW5QdHI8X1VJV2ViVmlld3BvcnRI
YW5kbGVyPiBfdmlld3BvcnRIYW5kbGVyOworICAgIEJPT0wgX2lzV2FpdGluZ0Zvck5ld0xheWVy
VHJlZUFmdGVyRGlkQ29tbWl0TG9hZDsKICAgICBCT09MIF9oYXNTdGF0aWNNaW5pbXVtTGF5b3V0
U2l6ZTsKKyAgICBDR1NpemUgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGU7CiB9CiAKIC0gKGlk
KWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgpAQCAtMTAzLDgyICs5OSwyNyBAQCBzdGF0
aWMgc3RydWN0IF9VSVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29u
ZmlndXJhdGlvbiA9IHsgeyBVSQogCiAjcHJhZ21hIG1hcmsgV0tDb250ZW50Vmlld0RlbGVnYXRl
CiAKLS0gKHZvaWQpY29udGVudFZpZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldyBjb250
ZW50c1NpemVEaWRDaGFuZ2U6KENHU2l6ZSluZXdTaXplCi17Ci0gICAgQ0dGbG9hdCB6b29tU2Nh
bGUgPSBbX3Njcm9sbFZpZXcgem9vbVNjYWxlXTsKLSAgICBDR1NpemUgY29udGVudHNTaXplSW5T
Y3JvbGxWaWV3Q29vcmRpbmF0ZXMgPSBDR1NpemVNYWtlKG5ld1NpemUud2lkdGggKiB6b29tU2Nh
bGUsIG5ld1NpemUuaGVpZ2h0ICogem9vbVNjYWxlKTsKLSAgICBbX3Njcm9sbFZpZXcgc2V0Q29u
dGVudFNpemU6Y29udGVudHNTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXNdOwotCi0gICAgW192
aWV3cG9ydEhhbmRsZXIgdXBkYXRlOl57Ci0gICAgICAgICBbX3ZpZXdwb3J0SGFuZGxlciBzZXRE
b2N1bWVudEJvdW5kczp7Q0dQb2ludFplcm8sIG5ld1NpemV9XTsKLSAgICB9XTsKLX0KLQogLSAo
dm9pZCljb250ZW50Vmlld0RpZENvbW1pdExvYWRGb3JNYWluRnJhbWU6KFdLQ29udGVudFZpZXcg
Kiljb250ZW50VmlldwogewotICAgIF91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZSA9IE5POwotCi0g
ICAgV0tDb250ZW50VHlwZSBjb250ZW50VHlwZSA9IFtfY29udGVudFZpZXcgY29udGVudFR5cGVd
OwotICAgIFtfdmlld3BvcnRIYW5kbGVyIHVwZGF0ZTpeewotICAgICAgICBbX3ZpZXdwb3J0SGFu
ZGxlciBjbGVhcldlYktpdFZpZXdwb3J0Q29uZmlndXJhdGlvbkZsYWdzXTsKLSAgICAgICAgc3Ry
dWN0IF9VSVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gc3RhbmRhcmRW
aWV3cG9ydENvbmZpZ3VyYXRpb247Ci0KLSAgICAgICAgaWYgKGNvbnRlbnRUeXBlID09IFBsYWlu
VGV4dCkgewotICAgICAgICAgICAgQ0dGbG9hdCBzY3JlZW5XaWR0aCA9IFtbVUlTY3JlZW4gbWFp
blNjcmVlbl0gYm91bmRzXS5zaXplLndpZHRoOwotICAgICAgICAgICAgY29uZmlndXJhdGlvbi5z
aXplLndpZHRoID0gc2NyZWVuV2lkdGg7Ci0gICAgICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUg
PT0gV0tDb250ZW50VHlwZTo6SW1hZ2UpCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uLm1pbmlt
dW1TY2FsZSA9IDAuMDE7Ci0KLSAgICAgICAgW192aWV3cG9ydEhhbmRsZXIgcmVzZXRWaWV3cG9y
dENvbmZpZ3VyYXRpb246JmNvbmZpZ3VyYXRpb25dOwotICAgIH1dOwotfQotCi0tICh2b2lkKWNv
bnRlbnRWaWV3RGlkUmVjZWl2ZU1vYmlsZURvY1R5cGU6KFdLQ29udGVudFZpZXcgKiljb250ZW50
VmlldwotewotICAgIFtfdmlld3BvcnRIYW5kbGVyIHVwZGF0ZTpeewotICAgICAgICBzdHJ1Y3Qg
X1VJV2ViVmlld3BvcnRDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBzdGFuZGFyZFZpZXdw
b3J0Q29uZmlndXJhdGlvbjsKLSAgICAgICAgY29uZmlndXJhdGlvbi5taW5pbXVtU2NhbGUgPSAx
OwotICAgICAgICBjb25maWd1cmF0aW9uLnNpemUgPSBDR1NpemVNYWtlKDMyMC4wLCBVSVdlYlZp
ZXdwb3J0R3Jvd3NBbmRTaHJpbmtzVG9GaXRIZWlnaHQpOwotICAgICAgICBbX3ZpZXdwb3J0SGFu
ZGxlciByZXNldFZpZXdwb3J0Q29uZmlndXJhdGlvbjomY29uZmlndXJhdGlvbl07Ci0gICAgfV07
CisgICAgX2lzV2FpdGluZ0Zvck5ld0xheWVyVHJlZUFmdGVyRGlkQ29tbWl0TG9hZCA9IFlFUzsK
IH0KIAotLSAodm9pZCljb250ZW50VmlldzooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3IGRp
ZENoYW5nZVZpZXdwb3J0QXJndW1lbnRzU2l6ZTooQ0dTaXplKW5ld1NpemUgaW5pdGlhbFNjYWxl
OihmbG9hdClpbml0aWFsU2NhbGUgbWluaW11bVNjYWxlOihmbG9hdCltaW5pbXVtU2NhbGUgbWF4
aW11bVNjYWxlOihmbG9hdCltYXhpbXVtU2NhbGUgYWxsb3dzVXNlclNjYWxpbmc6KGZsb2F0KWFs
bG93c1VzZXJTY2FsaW5nCi17Ci0gICAgW192aWV3cG9ydEhhbmRsZXIgdXBkYXRlOl57Ci0gICAg
ICAgIFtfdmlld3BvcnRIYW5kbGVyIGFwcGx5V2ViS2l0Vmlld3BvcnRBcmd1bWVudHNTaXplOm5l
d1NpemUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0
aWFsU2NhbGU6aW5pdGlhbFNjYWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWluaW11bVNjYWxlOm1pbmltdW1TY2FsZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW1TY2FsZTptYXhpbXVtU2NhbGUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dzVXNlclNjYWxpbmc6
YWxsb3dzVXNlclNjYWxpbmddOwotICAgIH1dOwotfQotCi0jcHJhZ21hIG1hcmsgLSBfVUlXZWJW
aWV3cG9ydEhhbmRsZXJEZWxlZ2F0ZQotCi0tICh2b2lkKXZpZXdwb3J0SGFuZGxlckRpZENoYW5n
ZVNjYWxlczooX1VJV2ViVmlld3BvcnRIYW5kbGVyICopdmlld3BvcnRIYW5kbGVyCistICh2b2lk
KWNvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopY29udGVudFZpZXcgZGlkQ29tbWl0TGF5ZXJU
cmVlOihjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJilsYXllclRyZWVU
cmFuc2FjdGlvbgogewotICAgIEFTU0VSVCh2aWV3cG9ydEhhbmRsZXIgPT0gX3ZpZXdwb3J0SGFu
ZGxlcik7Ci0gICAgW19zY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6dmlld3BvcnRIYW5k
bGVyLm1pbmltdW1TY2FsZV07Ci0gICAgW19zY3JvbGxWaWV3IHNldE1heGltdW1ab29tU2NhbGU6
dmlld3BvcnRIYW5kbGVyLm1heGltdW1TY2FsZV07Ci0gICAgW19zY3JvbGxWaWV3IHNldFpvb21F
bmFibGVkOnZpZXdwb3J0SGFuZGxlci5hbGxvd3NVc2VyU2NhbGluZ107Ci0KLSAgICBpZiAoIV91
c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZSkKLSAgICAgICAgW3NlbGYgX3NldERvY3VtZW50U2NhbGU6
dmlld3BvcnRIYW5kbGVyLmluaXRpYWxTY2FsZV07Ci0gICAgZWxzZSB7Ci0gICAgICAgIENHRmxv
YXQgY3VycmVudFNjYWxlID0gW19zY3JvbGxWaWV3IHpvb21TY2FsZV07Ci0gICAgICAgIENHRmxv
YXQgdmFsaWRTY2FsZSA9IHN0ZDo6bWF4KHN0ZDo6bWluKGN1cnJlbnRTY2FsZSwgc3RhdGljX2Nh
c3Q8Q0dGbG9hdD4odmlld3BvcnRIYW5kbGVyLm1heGltdW1TY2FsZSkpLCBzdGF0aWNfY2FzdDxD
R0Zsb2F0Pih2aWV3cG9ydEhhbmRsZXIubWluaW11bVNjYWxlKSk7Ci0gICAgICAgIFtzZWxmIF9z
ZXREb2N1bWVudFNjYWxlOnZhbGlkU2NhbGVdOworICAgIFtfc2Nyb2xsVmlldyBzZXRNaW5pbXVt
Wm9vbVNjYWxlOmxheWVyVHJlZVRyYW5zYWN0aW9uLm1pbmltdW1TY2FsZUZhY3RvcigpXTsKKyAg
ICBbX3Njcm9sbFZpZXcgc2V0TWF4aW11bVpvb21TY2FsZTpsYXllclRyZWVUcmFuc2FjdGlvbi5t
YXhpbXVtU2NhbGVGYWN0b3IoKV07CisgICAgW19zY3JvbGxWaWV3IHNldFpvb21FbmFibGVkOmxh
eWVyVHJlZVRyYW5zYWN0aW9uLmFsbG93c1VzZXJTY2FsaW5nKCldOworICAgIGlmICghW19zY3Jv
bGxWaWV3IGlzWm9vbWluZ10gJiYgIVtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2luZ10pCisgICAg
ICAgIFtfc2Nyb2xsVmlldyBzZXRab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ucGFnZVNj
YWxlRmFjdG9yKCldOworCisgICAgaWYgKF9pc1dhaXRpbmdGb3JOZXdMYXllclRyZWVBZnRlckRp
ZENvbW1pdExvYWQpIHsKKyAgICAgICAgVUlFZGdlSW5zZXRzIGluc2V0ID0gW19zY3JvbGxWaWV3
IGNvbnRlbnRJbnNldF07CisgICAgICAgIFtfc2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0OkNH
UG9pbnRNYWtlKC1pbnNldC5sZWZ0LCAtaW5zZXQudG9wKV07CisgICAgICAgIF9pc1dhaXRpbmdG
b3JOZXdMYXllclRyZWVBZnRlckRpZENvbW1pdExvYWQgPSBOTzsKICAgICB9Ci19CiAKLS0gKHZv
aWQpdmlld3BvcnRIYW5kbGVyOihfVUlXZWJWaWV3cG9ydEhhbmRsZXIgKil2aWV3cG9ydEhhbmRs
ZXIgZGlkQ2hhbmdlVmlld3BvcnRTaXplOihDR1NpemUpbmV3U2l6ZQotewotICAgIEFTU0VSVCh2
aWV3cG9ydEhhbmRsZXIgPT0gX3ZpZXdwb3J0SGFuZGxlcik7Ci0gICAgW19jb250ZW50VmlldyBz
ZXRWaWV3cG9ydFNpemU6bmV3U2l6ZV07CiB9CiAKLQogI3ByYWdtYSBtYXJrIC0gVUlTY3JvbGxW
aWV3RGVsZWdhdGUKIAogLSAoVUlWaWV3ICopdmlld0Zvclpvb21pbmdJblNjcm9sbFZpZXc6KFVJ
U2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKQEAgLTE5MCw3ICsxMzEsNyBAQCBzdGF0aWMgc3RydWN0
IF9VSVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29uZmlndXJhdGlv
biA9IHsgeyBVSQogLSAodm9pZClzY3JvbGxWaWV3V2lsbEJlZ2luWm9vbWluZzooVUlTY3JvbGxW
aWV3ICopc2Nyb2xsVmlldyB3aXRoVmlldzooVUlWaWV3ICopdmlldwogewogICAgIGlmIChzY3Jv
bGxWaWV3LnBpbmNoR2VzdHVyZVJlY29nbml6ZXIuc3RhdGUgPT0gVUlHZXN0dXJlUmVjb2duaXpl
clN0YXRlQmVnYW4pCi0gICAgICAgIF91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZSA9IFlFUzsKKyAg
ICAgICAgW19jb250ZW50VmlldyB3aWxsU3RhcnRVc2VyVHJpZ2dlcmVkWm9vbV07CiAgICAgW19j
b250ZW50VmlldyB3aWxsU3RhcnRab29tT3JTY3JvbGxdOwogfQogCkBAIC0yNTUsMjAgKzE5Niwx
NCBAQCBzdGF0aWMgc3RydWN0IF9VSVdlYlZpZXdwb3J0Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZp
ZXdwb3J0Q29uZmlndXJhdGlvbiA9IHsgeyBVSQogICAgIFtfY29udGVudFZpZXcgc2V0RnJhbWU6
Ym91bmRzXTsKICAgICBbX3Njcm9sbFZpZXcgYWRkU3VidmlldzpfY29udGVudFZpZXcuZ2V0KCld
OwogCi0gICAgX3ZpZXdwb3J0SGFuZGxlciA9IGFkb3B0TlMoW1tfVUlXZWJWaWV3cG9ydEhhbmRs
ZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbX3ZpZXdwb3J0SGFuZGxlciBzZXREZWxlZ2F0ZTpzZWxm
XTsKLQogICAgIFtzZWxmIF9mcmFtZU9yQm91bmRzQ2hhbmdlZF07CiB9CiAKIC0gKHZvaWQpX2Zy
YW1lT3JCb3VuZHNDaGFuZ2VkCiB7CiAgICAgQ0dSZWN0IGJvdW5kcyA9IFtzZWxmIGJvdW5kc107
Ci0gICAgaWYgKCFfaGFzU3RhdGljTWluaW11bUxheW91dFNpemUpIHsKLSAgICAgICAgW192aWV3
cG9ydEhhbmRsZXIgdXBkYXRlOl57Ci0gICAgICAgICAgICBbX3ZpZXdwb3J0SGFuZGxlciBzZXRB
dmFpbGFibGVWaWV3U2l6ZTpib3VuZHMuc2l6ZV07Ci0gICAgICAgIH1dOwotICAgIH0KKyAgICBp
ZiAoIV9oYXNTdGF0aWNNaW5pbXVtTGF5b3V0U2l6ZSkKKyAgICAgICAgW19jb250ZW50VmlldyBz
ZXRNaW5pbXVtTGF5b3V0U2l6ZTpib3VuZHMuc2l6ZV07CiAgICAgW19zY3JvbGxWaWV3IHNldEZy
YW1lOmJvdW5kc107CiAgICAgW19jb250ZW50VmlldyBzZXRNaW5pbXVtU2l6ZTpib3VuZHMuc2l6
ZV07CiB9CkBAIC0zMTAsMTUgKzI0NSwxNCBAQCBzdGF0aWMgc3RydWN0IF9VSVdlYlZpZXdwb3J0
Q29uZmlndXJhdGlvbiBzdGFuZGFyZFZpZXdwb3J0Q29uZmlndXJhdGlvbiA9IHsgeyBVSQogLSAo
Q0dTaXplKW1pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGUKIHsKICAgICBBU1NFUlQoX2hhc1N0YXRp
Y01pbmltdW1MYXlvdXRTaXplKTsKLSAgICByZXR1cm4gW192aWV3cG9ydEhhbmRsZXIgYXZhaWxh
YmxlVmlld1NpemVdOworICAgIHJldHVybiBfbWluaW11bUxheW91dFNpemVPdmVycmlkZTsKIH0K
IAogLSAodm9pZClzZXRNaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOihDR1NpemUpbWluaW11bUxh
eW91dFNpemVPdmVycmlkZQogewogICAgIF9oYXNTdGF0aWNNaW5pbXVtTGF5b3V0U2l6ZSA9IFlF
UzsKLSAgICBbX3ZpZXdwb3J0SGFuZGxlciB1cGRhdGU6XnsKLSAgICAgICAgW192aWV3cG9ydEhh
bmRsZXIgc2V0QXZhaWxhYmxlVmlld1NpemU6bWluaW11bUxheW91dFNpemVPdmVycmlkZV07Ci0g
ICAgfV07CisgICAgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGUgPSBtaW5pbXVtTGF5b3V0U2l6
ZU92ZXJyaWRlOworICAgIFtfY29udGVudFZpZXcgc2V0TWluaW11bUxheW91dFNpemU6bWluaW11
bUxheW91dFNpemVPdmVycmlkZV07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCmluZGV4IDc4ODRlMjc1M2Q4MmJmZmU3NmUxNTJjNzRlNmQ5ODQ3NGJiOGYyMGYu
LmVjNzJhYzM2YjNiYTU0NTMxOTkxYzAyZTg4YTk3MzdiNjUyMDE4OGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7CiBjbGFzcyBGaW5kSW5kaWNhdG9yOwogY2xhc3Mg
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKK2NsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OwogY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eTsKIGNsYXNzIFdlYkVkaXRDb21tYW5kUHJveHk7
CiBjbGFzcyBXZWJQb3B1cE1lbnVQcm94eTsKQEAgLTE0OSw3ICsxNTAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KikgPSAw
OwogI2VuZGlmIC8vIFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oR1RLKQogCi0jaWYgUExBVEZP
Uk0oRUZMKSB8fCBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oRUZMKQogICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgPSAwOwog
I2VuZGlmCiAKQEAgLTIzOCwxMSArMjM5LDkgQEAgcHVibGljOgogI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIHZvaWQgbWFpbkRvY3VtZW50
RGlkUmVjZWl2ZU1vYmlsZURvY1R5cGUoKSA9IDA7Ci0KICAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0
VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mIGhpZ2hsaWdodGVkUXVh
ZHMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21M
ZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21SaWdodFJhZGl1cykgPSAw
OwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21t
aXRMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnRBc3Npc3RpbmdOb2RlKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
LCBib29sIGhhc05leHRGb2N1c2FibGUsIGJvb2wgaGFzUHJldmlvdXNGb2N1c2FibGUpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFzc2lzdGluZ05vZGUoKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGJmNTllYzY3ZjQ3YTVmNWM0YjI5OWI4
YWJiYWFiZDllZDMzMzJmNjkuLjdkNWQzMDU0MGVmNDFiZjk2YTU4OTE0MTQ2ODBlMTQwMzc4ODRk
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yODY2
LDcgKzI4NjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERv
d25sb2FkUHJveHkqIGRvd25sb2FkKQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKEVGTCkgfHwgUExB
VEZPUk0oR1RLKQogCi0jaWYgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShJT1MpCisjaWYgUExB
VEZPUk0oRUZMKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0
IEludFNpemUmIHNpemUpCiB7CiAgICAgbV9wYWdlQ2xpZW50LmRpZENoYW5nZUNvbnRlbnRTaXpl
KHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDhlZmZh
YmYzZTUxNDg2ZGVjMzRjOGVmNDE2YTVhNjBiMzFlZDJjOTMuLjA5ZDMwNjQ2ZmQzZGQ1NGQ1NWU4
MDkwNjhjYmFjYjNlODJiYzZjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTEzOSw2ICsxMzksNyBAQCBjbGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Owog
Y2xhc3MgTmF0aXZlV2ViTW91c2VFdmVudDsKIGNsYXNzIE5hdGl2ZVdlYldoZWVsRXZlbnQ7CiBj
bGFzcyBQYWdlQ2xpZW50OworY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiBjbGFz
cyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OwogY2xhc3MgU3RyaW5nUGFpclZlY3Rv
cjsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKQEAgLTQzOCw2ICs0MzksOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSk7
CiAgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgUGFz
c1JlZlB0cjxWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjaz4pOwogI2lmIFBMQVRGT1JNKElPUykKKyAg
ICB2b2lkIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKTsKKyAgICB2b2lkIGRpZENvbW1pdExheWVyVHJlZShjb25zdCBXZWJL
aXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJik7CiAgICAgdm9pZCBzZWxlY3RXaXRoR2Vz
dHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCB1
aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBQYXNzUmVmUHRyPEdl
c3R1cmVDYWxsYmFjaz4pOwogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQs
IFBhc3NSZWZQdHI8VG91Y2hlc0NhbGxiYWNrPik7CiAgICAgdm9pZCBzZWxlY3RXaXRoVHdvVG91
Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgUGFzc1Jl
ZlB0cjxHZXN0dXJlQ2FsbGJhY2s+KTsKQEAgLTgyMSw2ICs4MjQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBzdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzKCkgeyByZXR1cm4gbV9zdXBwcmVzc1Zpc2li
aWxpdHlVcGRhdGVzOyB9CiAKICNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCB3aWxsU3RhcnRV
c2VyVHJpZ2dlcmVkWm9vbWluZygpOwogICAgIHZvaWQgZGlkRmluaXNoU2Nyb2xsaW5nKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGNvbnRlbnRPZmZzZXQpOwogICAgIHZvaWQgZGlkRmluaXNo
Wm9vbWluZyhmbG9hdCBuZXdTY2FsZSk7CiAKQEAgLTk5Myw3ICs5OTcsNyBAQCBwcml2YXRlOgog
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICB2b2lkIGRpZEZpbmRab29tYWJsZUFy
ZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAj
ZW5kaWYKLSNpZiBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShF
RkwpCiAgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
Jik7CiAjZW5kaWYKIApAQCAtMTEzNSwxMiArMTEzOSw4IEBAIHByaXZhdGU6CiAjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogCiAjaWYgUExBVEZPUk0oSU9TKQotICAg
IHZvaWQgbWFpbkRvY3VtZW50RGlkUmVjZWl2ZU1vYmlsZURvY1R5cGUoKTsKLQogICAgIHZvaWQg
ZGlkR2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdl
YkNvcmU6OkNvbG9yJiBjb2xvciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mIGdl
b21ldHJpZXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBi
b3R0b21MZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21SaWdodFJhZGl1
cyk7CiAKLSAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdlYkNvcmU6
OlZpZXdwb3J0QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cyk7Ci0KICAgICB2b2lkIHN0YXJ0
QXNzaXN0aW5nTm9kZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgYm9vbCBoYXNOZXh0Rm9jdXNh
YmxlLCBib29sIGhhc1ByZXZpb3VzRm9jdXNhYmxlKTsKICAgICB2b2lkIHN0b3BBc3Npc3RpbmdO
b2RlKCk7CiAgICAgdm9pZCBub3RpZnlSZXZlYWxlZFNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNzEwNzUx
ZTZlYTE4ZTQxYmU0NWQ1NzJiNjdjMDQ3NjQ4MTk0ZmNmOC4uMTY1NDY0ZTU1YWFiNGQ3MTQwZDc3
MzI1MzBhYjg2YTI3OGVlZGExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC05MCw3ICs5MCw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAgICAgRGlkRmluZFpvb21hYmxlQXJlYShXZWJDb3JlOjpJbnRQb2ludCB0
YXJnZXQsIFdlYkNvcmU6OkludFJlY3QgYXJlYSkKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oRUZM
KSB8fCBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oRUZMKQogICAgIERpZENoYW5nZUNvbnRl
bnRTaXplKFdlYkNvcmU6OkludFNpemUgbmV3U2l6ZSkKICNlbmRpZgogCkBAIC0zMDYsMTAgKzMw
Niw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KElPUykKLSAgICBNYWluRG9jdW1lbnREaWRSZWNlaXZlTW9iaWxlRG9jVHlwZSgpOwotCiAgICAg
RGlkR2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6
OkNvbG9yIGNvbG9yLCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiBnZW9tZXRyaWVzLCBXZWJD
b3JlOjpJbnRTaXplIHRvcExlZnRSYWRpdXMsIFdlYkNvcmU6OkludFNpemUgdG9wUmlnaHRSYWRp
dXMsIFdlYkNvcmU6OkludFNpemUgYm90dG9tTGVmdFJhZGl1cywgV2ViQ29yZTo6SW50U2l6ZSBi
b3R0b21SaWdodFJhZGl1cykKLSAgICBEaWRDaGFuZ2VWaWV3cG9ydEFyZ3VtZW50cyhXZWJDb3Jl
OjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50cykKIAogICAgIFN0YXJ0QXNzaXN0
aW5nTm9kZShXZWJDb3JlOjpJbnRSZWN0IHNjcm9sbFJlY3QsIGJvb2wgaGFzTmV4dEZvY3VzYWJs
ZSwgYm9vbCBoYXNQcmV2aW91c0ZvY3VzYWJsZSkKICAgICBTdG9wQXNzaXN0aW5nTm9kZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4
IDQ0N2MwZjk3ZGYzMDg5NjFhNGRlNDMwM2U2YmIzYTA0NDYyZTFjNTIuLjAwNjM4YTRhZDcyZWMy
OGY3YjZlOGY4MTM3MDlkMmU2MzllYWYxYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0yMjksNiArMjI5LDE2IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJl
Zm9yZVRleHQsIGNvbnN0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5W
YWx1ZShiZWZvcmVUZXh0LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9j
YXRpb24sIGxlbmd0aCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3cG9ydENvbmZp
Z3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQor
eworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld3BvcnRDb25m
aWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoc2l6ZSksIG1fcGFnZUlEKTsKK30KKwordm9pZCBX
ZWJQYWdlUHJveHk6OmRpZENvbW1pdExheWVyVHJlZShjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uJiBsYXllclRyZWVUcmFuc2FjdGlvbikKK3sKKyAgICBtX3BhZ2VDbGll
bnQuZGlkQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJlZVRyYW5zYWN0aW9uKTsKK30KKwogdm9pZCBX
ZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBv
aW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1
cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIFBhc3NSZWZQdHI8R2VzdHVyZUNhbGxiYWNr
PiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewpAQCAtNDE3LDYgKzQyNywxMSBA
QCBib29sIFdlYlBhZ2VQcm94eTo6YWNjZXB0c0ZpcnN0TW91c2UoaW50LCBjb25zdCBXZWJLaXQ6
OldlYk1vdXNlRXZlbnQmKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBXZWJQYWdlUHJv
eHk6OndpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29taW5nKCkKK3sKKyAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6V2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21pbmcoKSwgbV9w
YWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoU2Nyb2xsaW5nKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGNvbnRlbnRPZmZzZXQpCiB7CiAgICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEZpbmlzaFNjcm9sbGluZyhjb250ZW50T2Zmc2V0KSwg
bV9wYWdlSUQpOwpAQCAtNDQxLDIxICs0NTYsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJsdXJB
c3Npc3RlZE5vZGUoKQogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCbHVy
QXNzaXN0ZWROb2RlKCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Om1haW5E
b2N1bWVudERpZFJlY2VpdmVNb2JpbGVEb2NUeXBlKCkKLXsKLSAgICBtX3BhZ2VDbGllbnQubWFp
bkRvY3VtZW50RGlkUmVjZWl2ZU1vYmlsZURvY1R5cGUoKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+
JiBoaWdobGlnaHRlZFF1YWRzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BMZWZ0UmFkaXVz
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9t
UmlnaHRSYWRpdXMpCiB7CiAgICAgbV9wYWdlQ2xpZW50LmRpZEdldFRhcEhpZ2hsaWdodEdlb21l
dHJpZXMocmVxdWVzdElELCBjb2xvciwgaGlnaGxpZ2h0ZWRRdWFkcywgdG9wTGVmdFJhZGl1cywg
dG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykKLXsKLSAgICBtX3Bh
Z2VDbGllbnQuZGlkQ2hhbmdlVmlld3BvcnRBcmd1bWVudHModmlld3BvcnRBcmd1bWVudHMpOwot
fQotCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRBc3Npc3RpbmdOb2RlKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNjcm9sbFJlY3QsIGJvb2wgaGFzTmV4dEZvY3VzYWJsZSwgYm9vbCBoYXNQcmV2
aW91c0ZvY3VzYWJsZSkKIHsKICAgICBtX3BhZ2VDbGllbnQuc3RhcnRBc3Npc3RpbmdOb2RlKHNj
cm9sbFJlY3QsIGhhc05leHRGb2N1c2FibGUsIGhhc1ByZXZpb3VzRm9jdXNhYmxlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCBmMTZlY2M0NDA4MGFlYmQ2NzU5ZGIzOTZhODRj
MGRjMzY0NzBmNGRmLi5mMzdjOGVlODAyMWFiMDJiYjg5ZGU1YTJjMzkzMmNhZTViNDA0NDdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC04OSw2ICs4OSw5IEBAIHZvaWQgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Y29tbWl0TGF5ZXJUcmVlKGNvbnN0IFJlbW90
ZUxheWVyVHJlZVRyYW5zCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKICAgICBtX3dlYlBh
Z2VQcm94eS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpLT51cGRhdGVTY3JvbGxpbmdUcmVl
KHNjcm9sbGluZ1RyZWVUcmFuc2FjdGlvbik7CiAjZW5kaWYKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgbV93ZWJQYWdlUHJveHktPmRpZENvbW1pdExheWVyVHJlZShsYXllclRyZWVUcmFuc2FjdGlv
bik7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKaW5kZXggODI2NDg0YzhlYTU1MWU0MzMxYTczZThlZTY1MGUyOWM0YTc3OTUyOS4uNDNk
OWE0YmQ4MjU3YjRhNmU1MzdhNDFjMzViNzM3OTJmNDBmN2UzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcApAQCAtNTAxLDkgKzUwMSw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpjb250ZW50
c1NpemVDaGFuZ2VkKEZyYW1lKiBmcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uCiAKICAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ2hhbmdlQ29udGVudFNp
emUoc2l6ZSkpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDaGFuZ2VDb250ZW50U2l6ZShzaXplKSk7Ci0jZW5k
aWYKKwogCiAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5tYWluRnJhbWVDb250ZW50U2l6ZUNo
YW5nZWQoc2l6ZSk7CiAKQEAgLTg0OSwxMCArODQ3LDkgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogCiB2
b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2Uo
Y29uc3QgVmlld3BvcnRBcmd1bWVudHMmIHZpZXdwb3J0QXJndW1lbnRzKSBjb25zdAogewotI2lm
IFBMQVRGT1JNKElPUykKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkQ2hhbmdlVmlld3BvcnRBcmd1bWVudHModmlld3BvcnRBcmd1bWVudHMpKTsKLSNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHZpZXdwb3J0QXJndW1lbnRzKTsKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgbV9wYWdlLT52aWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2Uodmlld3BvcnRBcmd1bWVudHMp
OwogI2VuZGlmCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgaWYgKCFtX3BhZ2Ut
PnVzZUZpeGVkTGF5b3V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW0KaW5k
ZXggNGZkY2ExN2NmZjBmZmE1MmM4NzcwODMyZDkyNWE5Mjc3YTU2MjE3MS4uZjkxMTdkOGE2ZjIw
M2FlYmViNjQ5MDhjNzI4Mjc2YjE2NWU0N2Q5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNs
aWVudElPUy5tbQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVu
dERpZEJsdXIoY29uc3QgV2ViQ29yZTo6Tm9kZSogbm9kZSkKIAogdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OmRpZFJlY2VpdmVNb2JpbGVEb2NUeXBlKCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6TWFpbkRvY3VtZW50RGlkUmVjZWl2ZU1vYmlsZURvY1R5cGUoKSk7
CisgICAgLy8gRklYTUU6IHVwZGF0ZSB0aGUgVmlld3BvcnRDb25maWd1cmF0aW9uIGFjY29yZGlu
Z2x5LgogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TmVlZHNTY3JvbGxOb3RpZmljYXRp
b25zKFdlYkNvcmU6OkZyYW1lKiwgYm9vbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA0ZTcyZjM1ZTc0NTliN2M5MWIwZjliMzU1YzZjYTFj
ZThhYzhiOGVhLi4yYjg2MTI3YzcyZDAzMmExNjRmZmVkNmNmNWFhYzVkMTljYmJiY2YzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yODEs
NiArMjgxLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAjZW5kaWYKICNpZiBQTEFURk9STShJ
T1MpCiAgICAgLCBtX3Nob3VsZFJldHVybldvcmRBdFNlbGVjdGlvbihmYWxzZSkKKyAgICAsIG1f
dXNlckhhc0NoYW5nZWRQYWdlU2NhbGVGYWN0b3IoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1faW5z
cGVjdG9yQ2xpZW50KDApCiAgICAgLCBtX2JhY2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUpCkBA
IC0zMDczLDYgKzMwNzQsMTIgQEAgdm9pZCBXZWJQYWdlOjptYWluRnJhbWVEaWRMYXlvdXQoKQog
I2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKICAgICBtX3ZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IubWFpbkZyYW1lRGlkTGF5b3V0KCk7CiAjZW5kaWYKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFpbkZyYW1lVmlldygpKSB7
CisgICAgICAgIG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldENvbnRlbnRzU2l6ZShmcmFtZVZp
ZXctPmNvbnRlbnRzU2l6ZSgpKTsKKyAgICAgICAgdmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdl
ZCgpOworICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIFdlYlBhZ2U6OmFkZFBsdWdpblZpZXcoUGx1
Z2luVmlldyogcGx1Z2luVmlldykKQEAgLTM5NzUsNiArMzk4MiwyMiBAQCB2b2lkIFdlYlBhZ2U6
OmRpZENvbW1pdExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgICAgICBpZiAocGFnZSAmJiBwYWdl
LT5wYWdlU2NhbGVGYWN0b3IoKSAhPSAxKQogICAgICAgICAgICAgc2NhbGVQYWdlKDEsIEludFBv
aW50KCkpOwogICAgIH0KKyNpZiBQTEFURk9STShJT1MpCisgICAgbV91c2VySGFzQ2hhbmdlZFBh
Z2VTY2FsZUZhY3RvciA9IGZhbHNlOworCisgICAgLy8gRklYTUU6IFNldHVwIGEgcmVhbCBjb25m
aWd1cmF0aW9uLgorICAgIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6UGFyYW1ldGVycyBkZWZhdWx0
Q29uZmlndXJhdGlvbjsKKyAgICBkZWZhdWx0Q29uZmlndXJhdGlvbi53aWR0aCA9IDk4MDsKKyAg
ICBkZWZhdWx0Q29uZmlndXJhdGlvbi53aWR0aElzU2V0ID0gdHJ1ZTsKKyAgICBkZWZhdWx0Q29u
ZmlndXJhdGlvbi5hbGxvd3NVc2VyU2NhbGluZyA9IHRydWU7CisgICAgZGVmYXVsdENvbmZpZ3Vy
YXRpb24ubWluaW11bVNjYWxlID0gMC4yNTsKKyAgICBkZWZhdWx0Q29uZmlndXJhdGlvbi5tYXhp
bXVtU2NhbGUgPSA1OworCisgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0RGVmYXVsdENv
bmZpZ3VyYXRpb24oZGVmYXVsdENvbmZpZ3VyYXRpb24pOworICAgIG1fdmlld3BvcnRDb25maWd1
cmF0aW9uLnNldFZpZXdwb3J0QXJndW1lbnRzKFZpZXdwb3J0QXJndW1lbnRzKCkpOworICAgIG1f
dmlld3BvcnRDb25maWd1cmF0aW9uLnNldENvbnRlbnRzU2l6ZShtX3ZpZXdwb3J0Q29uZmlndXJh
dGlvbi5taW5pbXVtTGF5b3V0U2l6ZSgpKTsKKyAgICB2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFu
Z2VkKCk7CisjZW5kaWYKIAogI2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9I
RVVSSVNUSUMpCiAgICAgcmVzZXRQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDIxNjBlMTRkODI0ZjY3
YWU5MWI1MjU5MDcyNDUyNGYyMDJjYzRmZGYuLmM0OWFlZTE0YTMxNTgxNzFiZWRhMzIxNDg0ZjA4
ZGIxNjdlNzhmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWN0aXZpdHkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zp
ZXdTdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVmlld3BvcnRDb25maWd1cmF0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTQxMSw2ICs0MTIsMTIgQEAg
cHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCB2aWV3cG9ydFBy
b3BlcnRpZXNEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsKKwor
ICAgIGRvdWJsZSBtaW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkgY29uc3Q7CisgICAgZG91YmxlIG1h
eGltdW1QYWdlU2NhbGVGYWN0b3IoKSBjb25zdDsKKyAgICBib29sIGFsbG93c1VzZXJTY2FsaW5n
KCkgY29uc3Q7CisKICAgICB2b2lkIGhhbmRsZVRhcChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
OwogICAgIHZvaWQgdGFwSGlnaGxpZ2h0QXRQb3NpdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKIApAQCAtNjI5LDYgKzYzNiw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVwZGF0ZVZpc2liaWxpdHlTdGF0ZShib29sIGlzSW5pdGlhbFN0YXRlID0gZmFs
c2UpOwogCiAjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgc2V0Vmlld3BvcnRDb25maWd1cmF0
aW9uTWluaW11bUxheW91dFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOworICAgIHZvaWQg
dmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpOworICAgIHZvaWQgd2lsbFN0YXJ0VXNlclRy
aWdnZXJlZFpvb21pbmcoKTsKICAgICB2b2lkIGRpZEZpbmlzaFNjcm9sbGluZyhjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiBjb250ZW50T2Zmc2V0KTsKICAgICB2b2lkIGRpZEZpbmlzaFpvb21p
bmcoZmxvYXQpOwogI2VuZGlmCkBAIC0xMDQ2LDYgKzEwNTYsOSBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxXZWJDb3JlOjpSYW5nZT4gbV9jdXJyZW50V29yZFJhbmdlOwogICAgIFJlZlB0cjxXZWJD
b3JlOjpOb2RlPiBtX2ludGVyYWN0aW9uTm9kZTsKICAgICBib29sIG1fc2hvdWxkUmV0dXJuV29y
ZEF0U2VsZWN0aW9uOworCisgICAgV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uIG1fdmll
d3BvcnRDb25maWd1cmF0aW9uOworICAgIGJvb2wgbV91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZUZh
Y3RvcjsKICNlbmRpZgogCiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KaW5kZXggZjlkODAzMDlmNThiNjk1NmVhOWEzMTcxYjgzMDc5NDJmMjhmNTQw
ZS4uYjYyZmQ0MWVjMjgwOGZiNmY4NjM1MjhkMWY2M2YyMTcyMDg3Njk3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTQxLDYgKzQxLDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgTW91c2VFdmVudFN5bmNGb3JUZXN0aW5nKFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkg
LT4gKGJvb2wgaGFuZGxlZCkKICAgICBXaGVlbEV2ZW50U3luY0ZvclRlc3RpbmcoV2ViS2l0OjpX
ZWJXaGVlbEV2ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKQogI2lmIFBMQVRGT1JNKElPUykK
KyAgICBTZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShXZWJDb3JlOjpJ
bnRTaXplIHNpemUpCisKICAgICBIYW5kbGVUYXAoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAg
ICAgVGFwSGlnaGxpZ2h0QXRQb3NpdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OkZs
b2F0UG9pbnQgcG9pbnQpCiAgICAgQmx1ckFzc2lzdGVkTm9kZSgpCkBAIC0zMTMsNiArMzE1LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0VmlzaWJpbGl0
eVN0YXRlUHJlcmVuZGVyKCkKIAogI2lmIFBMQVRGT1JNKElPUykKKyAgICBXaWxsU3RhcnRVc2Vy
VHJpZ2dlcmVkWm9vbWluZygpOwogICAgIERpZEZpbmlzaFNjcm9sbGluZyhXZWJDb3JlOjpGbG9h
dFBvaW50IGNvbnRlbnRPZmZzZXQpOwogICAgIERpZEZpbmlzaFpvb21pbmcoZmxvYXQgc2NhbGUp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KaW5kZXggNWVmNzQ3MTIwZmJmNmRjNGZkOTQ0MGM5NzgwOGZhNDc4MDRj
NmI4Mi4uODE0NjBhYTM4NzYyM2JhZjQ2OWZlYmU1Njk4Y2M5MmFmYjIwOWZiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpA
QCAtNzksNiArNzksMjcgQEAgYm9vbCBXZWJQYWdlOjpleGVjdXRlS2V5cHJlc3NDb21tYW5kc0lu
dGVybmFsKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW0KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0
IFZpZXdwb3J0QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykKK3sKKyAgICBtX3ZpZXdwb3J0
Q29uZmlndXJhdGlvbi5zZXRWaWV3cG9ydEFyZ3VtZW50cyh2aWV3cG9ydEFyZ3VtZW50cyk7Cisg
ICAgdmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpOworfQorCitkb3VibGUgV2ViUGFnZTo6
bWluaW11bVBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdmlld3BvcnRD
b25maWd1cmF0aW9uLm1pbmltdW1TY2FsZSgpOworfQorCitkb3VibGUgV2ViUGFnZTo6bWF4aW11
bVBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdmlld3BvcnRDb25maWd1
cmF0aW9uLm1heGltdW1TY2FsZSgpOworfQorCitib29sIFdlYlBhZ2U6OmFsbG93c1VzZXJTY2Fs
aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uYWxsb3dz
VXNlclNjYWxpbmcoKTsKK30KKwogYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRF
dmVudChLZXlib2FyZEV2ZW50KiBldmVudCwgYm9vbCkKIHsKICAgICBib29sIGV2ZW50V2FzSGFu
ZGxlZCA9IGZhbHNlOwpAQCAtOTM4LDYgKzk1OSwzMCBAQCB2b2lkIFdlYlBhZ2U6OmVsZW1lbnRE
aWRCbHVyKFdlYkNvcmU6Ok5vZGUqIG5vZGUpCiAgICAgfQogfQogCit2b2lkIFdlYlBhZ2U6OnNl
dFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IEludFNpemUmIHNp
emUpCit7CisgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0TWluaW11bUxheW91dFNpemUo
c2l6ZSk7CisgICAgdmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpOworfQorCit2b2lkIFdl
YlBhZ2U6OnZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKQoreworICAgIHNldEZpeGVkTGF5
b3V0U2l6ZShtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5sYXlvdXRTaXplKCkpOworCisgICAgZG91
YmxlIHNjYWxlOworICAgIGlmIChtX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlRmFjdG9yKQorICAg
ICAgICBzY2FsZSA9IHN0ZDo6bWF4KHN0ZDo6bWluKHBhZ2VTY2FsZUZhY3RvcigpLCBtX3ZpZXdw
b3J0Q29uZmlndXJhdGlvbi5tYXhpbXVtU2NhbGUoKSksIG1fdmlld3BvcnRDb25maWd1cmF0aW9u
Lm1pbmltdW1TY2FsZSgpKTsKKyAgICBlbHNlCisgICAgICAgIHNjYWxlID0gbV92aWV3cG9ydENv
bmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlKCk7CisKKyAgICBtX3BhZ2UtPnNldFBhZ2VTY2FsZUZh
Y3RvcihzY2FsZSwgbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPnNjcm9sbFBvc2l0aW9uKCkp
OworfQorCit2b2lkIFdlYlBhZ2U6OndpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29taW5nKCkKK3sK
KyAgICBtX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlRmFjdG9yID0gdHJ1ZTsKK30KKwogdm9pZCBX
ZWJQYWdlOjpkaWRGaW5pc2hTY3JvbGxpbmcoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgY29u
dGVudE9mZnNldCkKIHsKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+c2V0U2Nyb2xs
T2Zmc2V0KFdlYkNvcmU6OkludFBvaW50KGNvbnRlbnRPZmZzZXQpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IGUxZTBlZGFiNDFkNTlmNTRkMDk1ZjlhZTdkZDBm
ZjBhZjAyODAxYmYuLmY4MWE0YTA0ZTNlZGI5MGU3YTZhOWJmYmEwNTViZDkxMWRmMDJmMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtMzIxLDYgKzMyMSwxMSBA
QCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAgLy8g
RklYTUU6IG1pbml6ZSB0aGVzZSB0cmFuc2FjdGlvbnMgaWYgbm90aGluZyBjaGFuZ2VkLgogICAg
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIGxheWVyVHJhbnNhY3Rpb247CiAgICAgbV9yZW1v
dGVMYXllclRyZWVDb250ZXh0LT5idWlsZFRyYW5zYWN0aW9uKGxheWVyVHJhbnNhY3Rpb24sICpt
X3Jvb3RMYXllcik7CisgICAgbGF5ZXJUcmFuc2FjdGlvbi5zZXRDb250ZW50c1NpemUobV93ZWJQ
YWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsKKyAg
ICBsYXllclRyYW5zYWN0aW9uLnNldFBhZ2VTY2FsZUZhY3RvcihtX3dlYlBhZ2UtPmNvcmVQYWdl
KCktPnBhZ2VTY2FsZUZhY3RvcigpKTsKKyAgICBsYXllclRyYW5zYWN0aW9uLnNldE1pbmltdW1T
Y2FsZUZhY3RvcihtX3dlYlBhZ2UtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSk7CisgICAgbGF5
ZXJUcmFuc2FjdGlvbi5zZXRNYXhpbXVtU2NhbGVGYWN0b3IobV93ZWJQYWdlLT5tYXhpbXVtUGFn
ZVNjYWxlRmFjdG9yKCkpOworICAgIGxheWVyVHJhbnNhY3Rpb24uc2V0QWxsb3dzVXNlclNjYWxp
bmcobV93ZWJQYWdlLT5hbGxvd3NVc2VyU2NhbGluZygpKTsKIAogICAgIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24gc2Nyb2xsaW5nVHJhbnNhY3Rpb247CiAjaWYgRU5BQkxF
KEFTWU5DX1NDUk9MTElORykK
</data>

          </attachment>
      

    </bug>

</bugzilla>