<?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>216466</bug_id>
          
          <creation_ts>2020-09-13 16:10:29 -0700</creation_ts>
          <short_desc>[LFC Display] First steps towards LFC painting in WebKit2</short_desc>
          <delta_ts>2020-09-14 11:40:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>216482</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1688149</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-13 16:10:29 -0700</bug_when>
    <thetext>First steps towards LFC painting in WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688150</commentid>
    <comment_count>1</comment_count>
      <attachid>408665</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-13 16:17:14 -0700</bug_when>
    <thetext>Created attachment 408665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688151</commentid>
    <comment_count>2</comment_count>
      <attachid>408666</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-13 16:23:36 -0700</bug_when>
    <thetext>Created attachment 408666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688167</commentid>
    <comment_count>3</comment_count>
      <attachid>408666</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-09-13 18:57:25 -0700</bug_when>
    <thetext>Comment on attachment 408666
Patch

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

&gt; Source/WebCore/layout/display/DisplayLayerController.cpp:83
&gt; +    if (!layoutState.hasDisplayBox(rootLayoutBox))
&gt; +        return;

Shouldn&apos;t this be an ASSERT instead? We should never try to paint unless we have computed geometry (completed a layout).

&gt; Source/WebCore/layout/display/DisplayView.cpp:89
&gt; +

extra line

&gt; Source/WebCore/layout/display/DisplayView.h:65
&gt; +    // FIXME: Do we need to use LayoutTreeContent?

I really hope not.
I think we should figure out a way to have no dependency on LayoutState either. Display::Boxes are part of the state as they provide geometry information to subsequent layouts. However it seems a bit odd to see LayoutState in the context of painting and hittesting (this is not new to this patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688179</commentid>
    <comment_count>4</comment_count>
      <attachid>408678</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-13 21:00:51 -0700</bug_when>
    <thetext>Created attachment 408678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688288</commentid>
    <comment_count>5</comment_count>
      <attachid>408719</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-14 10:08:30 -0700</bug_when>
    <thetext>Created attachment 408719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688297</commentid>
    <comment_count>6</comment_count>
      <attachid>408721</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-14 10:26:35 -0700</bug_when>
    <thetext>Created attachment 408721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688302</commentid>
    <comment_count>7</comment_count>
      <attachid>408723</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-14 10:42:23 -0700</bug_when>
    <thetext>Created attachment 408723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688328</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-14 11:26:32 -0700</bug_when>
    <thetext>Committed r267024: &lt;https://trac.webkit.org/changeset/267024&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408723.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688332</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-14 11:27:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/68867274&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688333</commentid>
    <comment_count>10</comment_count>
      <attachid>408723</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-14 11:28:53 -0700</bug_when>
    <thetext>Comment on attachment 408723
Patch

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

&gt; Source/WebCore/layout/display/DisplayLayerController.h:52
&gt; +    LayerController(View&amp;);

explicit

&gt; Source/WebCore/layout/display/DisplayView.h:52
&gt; +    View(FrameView&amp;);

explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688340</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-14 11:40:24 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/267025/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408665</attachid>
            <date>2020-09-13 16:17:14 -0700</date>
            <delta_ts>2020-09-13 16:30:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216466-20200913161713.patch</filename>
            <type>text/plain</type>
            <size>31275</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzMwZmM3ZWQ3OWFhMjM5
NDg2YmU2MDZjYzk5YjJlZTdhYTUyYjU5NS4uZTM3MDhhYzc2MGI3Mzc2Y2VjZWJkMjJmYTUwOWJm
M2NhNjlkNGJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIwLTA5LTEzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpcnN0IHN0ZXBz
IHRvd2FyZHMgTEZDIHBhaW50aW5nIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjQ2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEdldCBMRkMgcGFpbnRpbmcgaW4gV2ViS2l0Mi4KKwor
ICAgICAgICBEaXNwbGF5OjpMYXllckNvbnRyb2xsZXIoKSBpcyBpbnRlbmRlZCB0byBiZSBhIGNv
bnRyb2xsZXIgb2JqZWN0IHRoYXQgbWFrZXMgbGF5ZXJpemF0aW9uCisgICAgICAgIGRlY2lzaW9u
czsgZm9yIG5vdywgaXQganVzdCBjcmVhdGVzIHNvbWUgcm9vdCBsYXllcnMgYW5kIGhvb2tzIHRo
ZW0gdXAgdmlhIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKCkuCisgICAgICAgIEl0IGFsc28gY3Jl
YXRlcyBhIEdyYXBoaWNzTGF5ZXJDbGllbnQgdGhhdCBwYWludHMgYnkgY2FsbGluZyBMYXlvdXRD
b250ZXh0OjpwYWludCgpLgorCisgICAgICAgIERpc3BsYXk6OlZpZXcgaXMgcmVzcG9uc2libGUg
Zm9yIHRoZSBkaXNwbGF5IG9mIGFuIExGQy1yZW5kZXJlZCBkb2N1bWVudC4gRnJhbWVWaWV3Cisg
ICAgICAgIGhhcyBvbmUsIGFuZCB0aGUgRGlzcGxheTo6VmlldyBoYXMgYSBEaXNwbGF5OjpMYXll
ckNvbnRyb2xsZXIoKS4gVGhlIG1pbmltYWwgaG9va3VwIHBvaW50cyBhcmU6CisgICAgICAgIDEu
IFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKSB0ZWxscyBlYWNoIERpc3BsYXk6OlZpZXcg
dG8gcHJlcGFyZUZvckRpc3BsYXkoKS4KKyAgICAgICAgICAgVGhpcyBpcyB3aGVyZSB3ZSdsbCBk
byBvbmNlLXBlci1yZW5kZXJpbmcgbGF5ZXIgdXBkYXRpbmcuCisgICAgICAgIDIuIEZyYW1lVmll
dzo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0ZyYW1lKCkgdGVsbHMgdGhlIERpc3BsYXk6
OlZpZXcoKSB0byBmbHVzaAorICAgICAgICAgICBsYXllcnMsIHdoaWNoIGp1c3QgcGFzc2VzIHRo
cm91Z2ggdG8gRGlzcGxheTo6TGF5ZXJDb250cm9sbGVyKCkuCisKKyAgICAgICAgRm9yIG5vdyB3
ZSBqdXN0IHJlbHkgb24gdGhlIGZhY3QgdGhhdCBEaXNwbGF5OjpMYXllckNvbnRyb2xsZXIoKSBj
YWxscyBhdHRhY2hSb290R3JhcGhpY3NMYXllcigpCisgICAgICAgIGFmdGVyIFJlbmRlckxheWVy
Q29tcG9zaXRvciwgcmVwbGFjaW5nIHRoZSByb290IGxheWVyIGNyZWF0ZWQgYnkgZXhpc3Rpbmcg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yIGNvZGUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGF5
b3V0L2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjpSb290TGF5ZXJDbGllbnQ6OlJvb3RM
YXllckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6
OlJvb3RMYXllckNsaWVudDo6bm90aWZ5Rmx1c2hSZXF1aXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OlJvb3RMYXllckNsaWVudDo6cGFpbnRDb250ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OkxheWVyQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OnBy
ZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxheWVyQ29udHJv
bGxlcjo6Zmx1c2hMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGF5ZXJDb250
cm9sbGVyOjp2aXNpYmxlUmVjdEZvckxheWVyRmx1c2hpbmcgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OmVuc3VyZVJvb3RM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OnNldHVw
Um9vdExheWVySGllcmFyY2h5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxheWVyQ29u
dHJvbGxlcjo6dXBkYXRlUm9vdExheWVyR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6TGF5ZXJDb250cm9sbGVyOjphdHRhY2hSb290TGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjpncmFwaGljc0xheWVyRmFjdG9yeSBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxheWVyQ29udHJvbGxlcjo6dmlldyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OnJvb3RHcmFw
aGljc0xheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxheWVyQ29udHJv
bGxlcjo6Y29udGVudExheWVyIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheS9EaXNw
bGF5Vmlldy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJl
ZS9EaXNwbGF5UGFpbnRlci5oLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Vmlldzo6Vmll
dyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpWaWV3Ojp+Vmlldyk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpWaWV3OjpmcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpWaWV3OjpwYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZp
ZXc6OmxheW91dFN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZpZXc6
OmxheW91dFRyZWVDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZp
ZXc6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZpZXc6
OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheS9EaXNwbGF5Vmlldy5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50
ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZpZXc6OmZyYW1lVmlldyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OlBhaW50ZXI6OmFic29sdXRlRGlzcGxheUJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpwYWludFN1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6Y29sbGVjdFBhaW50Um9vdHNBbmRDb250ZW50UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjphYnNvbHV0ZURpc3BsYXlCb3gpOiBEZWxldGVkLgorICAgICAgICAqIGxh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5oOgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1l
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmZsdXNoQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmV4aXN0aW5n
RGlzcGxheVZpZXcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpkaXNwbGF5
Vmlldyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZyk6CisK
IDIwMjAtMDktMTAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkcmVzcyBhIHBvc3QtY29tbWl0IHJldmlldyBjb21tZW50IGFmdGVyIHIyNjY4ODcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggMDg3MjE2MDY2MjA2ZmVjZTAxYTAwZWU1YjQzNjU0MjI5YjJhYTll
NC4uMTU0YmRmOTA2ZWMyNWM1YzhkMWQxNzVmZjg3M2YwYmJmOGVhYmE5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTE0MzIsNiArMTQzMiw4IEBAIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJn
aW5Db2xsYXBzZS5jcHAKIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvUHJlY29tcHV0ZWRCbG9ja01h
cmdpbkNvbGxhcHNlLmNwcAogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy90YWJsZXdyYXBwZXIvVGFi
bGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKIGxheW91dC9ibG9ja2Zvcm1hdHRp
bmcvdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3Mu
Y3BwCitsYXlvdXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcAorbGF5b3V0L2Rp
c3BsYXkvRGlzcGxheVZpZXcuY3BwCiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAK
IGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5jcHAKIGxheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMGQ1OTUzOTlkZTVjYTA1MThmMjEwNTIy
ZWY0MzA1MmIxZTgxMDJmLi4zODcyZjgwMWRmYzJmMDgxOGJkNWJiNjRhYWZiYTZiYjdhZjM3NGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC02MDc1LDYgKzYwNzUsMTAgQEAKIAkJMEZGODM1QkYxRUUzNTREQTAwOEI0Q0M3IC8q
IERPTVF1YWQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVF1YWQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY4MzVDMDFFRTM1NERBMDA4QjRDQzcgLyogRE9NUXVh
ZEluaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUXVhZEluaXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGODM1QzExRUUzNTREQTAwOEI0Q0M3IC8q
IERPTVF1YWRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01RdWFkSW5pdC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRkI0REExMjUwRUEwMEUwMDg2Qjk1MiAv
KiBEaXNwbGF5TGF5ZXJDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMYXllckNv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGQjREQTIyNTBFQTAw
RjAwODZCOTUyIC8qIERpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGRkI0REEzMjUwRUEzNzAwMDg2Qjk1MiAvKiBEaXNwbGF5Vmlldy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5Vmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkZCNERB
NDI1MEVBMzcwMDA4NkI5NTIgLyogRGlzcGxheVZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGlzcGxheVZpZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZENDVBNzI0
M0JGMjU3MDAwRDRCRUEgLyogU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRkQ0NUE4MjQzQkYyNTcwMDBENEJFQSAvKiBTY3JvbGxpbmdU
cmVlTGF0Y2hpbmdDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1Ry
ZWVMYXRjaGluZ0NvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkZENEQ1RTE4NjUxRkEzMDA1MTJGNkUgLyogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NDAxLDEwICsxNzQw
NSwyMiBAQAogCQkJcGF0aCA9IGRpc3BsYXlsaXN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07CisJCTBGRkI0REEwMjUwRTlGQzQwMDg2Qjk1MiAvKiBkaXNwbGF5ICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwRkZCNERBMjI1MEVBMDBG
MDA4NkI5NTIgLyogRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHAgKi8sCisJCQkJMEZGQjREQTEy
NTBFQTAwRTAwODZCOTUyIC8qIERpc3BsYXlMYXllckNvbnRyb2xsZXIuaCAqLywKKwkJCQkwRkZC
NERBNDI1MEVBMzcwMDA4NkI5NTIgLyogRGlzcGxheVZpZXcuY3BwICovLAorCQkJCTBGRkI0REEz
MjUwRUEzNzAwMDg2Qjk1MiAvKiBEaXNwbGF5Vmlldy5oICovLAorCQkJKTsKKwkJCXBhdGggPSBk
aXNwbGF5OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMTE1Q0ZBNjYyMDhB
RjcyMDAwMUU2OTkxIC8qIGxheW91dCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJMTE1Q0ZBOTkyMDhCQzA5QTAwMUU2OTkxIC8qIGJsb2NrZm9ybWF0dGlu
ZyAqLywKKwkJCQkwRkZCNERBMDI1MEU5RkM0MDA4NkI5NTIgLyogZGlzcGxheSAqLywKIAkJCQkx
MTk5RkE1ODIwOEUzQzRDMDAyMzU4Q0MgLyogZGlzcGxheXRyZWUgKi8sCiAJCQkJNkZDRkMwNTUy
MTJEQUNDMjAwNzY5NUQyIC8qIGZsb2F0cyAqLywKIAkJCQkxMTVDRkE5QTIwOEJDMTQwMDAxRTY5
OTEgLyogaW5saW5lZm9ybWF0dGluZyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGUz
YTU0MTdkOTA0OTQzN2Q1NDhmMWE0ODQ4OWU3NTJlZDA3ZWI2ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3Bw
CkBAIC0wLDAgKzEsMTk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkRpc3BsYXlMYXllckNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9S
TUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21l
Q2xpZW50LmgiCisjaW5jbHVkZSAiRGlzcGxheUJveC5oIgorI2luY2x1ZGUgIkRpc3BsYXlQYWlu
dGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheVZpZXcuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKKyNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5IHsK
KworTGF5ZXJDb250cm9sbGVyOjpSb290TGF5ZXJDbGllbnQ6OlJvb3RMYXllckNsaWVudChMYXll
ckNvbnRyb2xsZXImIGxheWVyQ29udHJvbGxlcikKKyAgICA6IG1fbGF5ZXJDb250cm9sbGVyKGxh
eWVyQ29udHJvbGxlcikKK3sKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6OlJvb3RMYXllckNs
aWVudDo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikKK3sKKyAgICBt
X2xheWVyQ29udHJvbGxlci5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworfQorCit2b2lkIExh
eWVyQ29udHJvbGxlcjo6Um9vdExheWVyQ2xpZW50OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBo
aWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGlydHlSZWN0LCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikKK3sKKyAgICBBU1NFUlQo
bGF5ZXIgPT0gbV9sYXllckNvbnRyb2xsZXIuY29udGVudExheWVyKCkpOworCisgICAgLy8gRklY
TUU6IFRlbXBvcmFyeTsgb25jZSB3ZSBkbyBzY3JvbGxpbmcgdGhpcyByb290IGxheWVyIHdvbid0
IHBhaW50IGFueXRoaW5nLgorICAgIGlmIChhdXRvKiBsYXlvdXRTdGF0ZSA9IG1fbGF5ZXJDb250
cm9sbGVyLnZpZXcoKS5sYXlvdXRTdGF0ZSgpKQorICAgICAgICBMYXlvdXQ6OkxheW91dENvbnRl
eHQ6OnBhaW50KCpsYXlvdXRTdGF0ZSwgY29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChkaXJ0eVJl
Y3QpKTsKK30KKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKExheWVyQ29udHJvbGxlcik7
CisKK0xheWVyQ29udHJvbGxlcjo6TGF5ZXJDb250cm9sbGVyKFZpZXcmIHZpZXcpCisgICAgOiBt
X3ZpZXcodmlldykKKyAgICAsIG1fcm9vdExheWVyQ2xpZW50KCp0aGlzKQoreworfQorCitMYXll
ckNvbnRyb2xsZXI6On5MYXllckNvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgTGF5ZXJD
b250cm9sbGVyOjpwcmVwYXJlRm9yRGlzcGxheShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSkKK3sKKyAgICBhdXRvJiByb290TGF5b3V0Qm94ID0gbGF5b3V0U3RhdGUucm9v
dCgpOworICAgIGlmICghcm9vdExheW91dEJveC5maXJzdENoaWxkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghbGF5b3V0U3RhdGUuaGFzRGlzcGxheUJveChyb290TGF5b3V0Qm94KSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB2aWV3U2l6ZSA9IGxheW91dFN0YXRlLmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3gocm9vdExheW91dEJveCkuc2l6ZSgpOworICAgIGF1dG8gY29udGVu
dFNpemUgPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpyb290TGF5b3V0Qm94
LmZpcnN0Q2hpbGQoKSkuc2l6ZSgpOworCisgICAgZW5zdXJlUm9vdExheWVyKHZpZXdTaXplLCBj
b250ZW50U2l6ZSk7CisgICAgCisgICAgLy8gRklYTUU6IEZvciBub3csIHJlcGFpbnQgdGhlIHdv
cmxkIG9uIGV2ZXJ5IHVwZGF0ZS4KKyAgICBtX3Jvb3RMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7
CisgICAgCisgICAgYXV0byYgc2V0dGluZ3MgPSBtX3ZpZXcuZnJhbWUoKS5zZXR0aW5ncygpOwor
ICAgIGJvb2wgc2hvd0RlYnVnQm9yZGVycyA9IHNldHRpbmdzLnNob3dEZWJ1Z0JvcmRlcnMoKTsK
KyAgICBib29sIHNob3dSZXBhaW50Q291bnRlciA9IHNldHRpbmdzLnNob3dSZXBhaW50Q291bnRl
cigpOworICAgIGJvb2wgYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCA9IHNldHRpbmdzLmFjY2Vs
ZXJhdGVkRHJhd2luZ0VuYWJsZWQoKTsKKworICAgIG1fcm9vdExheWVyLT5zZXRTaG93RGVidWdC
b3JkZXIoc2hvd0RlYnVnQm9yZGVycyk7CisgICAgbV9jb250ZW50SG9zdExheWVyLT5zZXRTaG93
RGVidWdCb3JkZXIoc2hvd0RlYnVnQm9yZGVycyk7CisKKyAgICBtX2NvbnRlbnRMYXllci0+c2V0
U2hvd0RlYnVnQm9yZGVyKHNob3dEZWJ1Z0JvcmRlcnMpOworICAgIG1fY29udGVudExheWVyLT5z
ZXRTaG93UmVwYWludENvdW50ZXIoc2hvd1JlcGFpbnRDb3VudGVyKTsKKyAgICBtX2NvbnRlbnRM
YXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKGFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQpOwor
fQorCit2b2lkIExheWVyQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMoKQoreworICAgIGlmICghbV9y
b290TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdCA9
IHZpc2libGVSZWN0Rm9yTGF5ZXJGbHVzaGluZygpOworICAgIG1fcm9vdExheWVyLT5mbHVzaENv
bXBvc2l0aW5nU3RhdGUodmlzaWJsZVJlY3QpOworfQorCitGbG9hdFJlY3QgTGF5ZXJDb250cm9s
bGVyOjp2aXNpYmxlUmVjdEZvckxheWVyRmx1c2hpbmcoKSBjb25zdAoreworICAgIGNvbnN0IGF1
dG8mIGZyYW1lVmlldyA9IG1fdmlldy5mcmFtZVZpZXcoKTsKKyAgICByZXR1cm4gZnJhbWVWaWV3
LnZpc2libGVDb250ZW50UmVjdCgpOworfQorCit2b2lkIExheWVyQ29udHJvbGxlcjo6c2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoKQoreworICAgIGF1dG8gcGFnZSA9IG1fdmlldy5wYWdlKCk7Cisg
ICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWdlLT5zY2hlZHVsZVJlbmRl
cmluZ1VwZGF0ZSgpOworfQorCit2b2lkIExheWVyQ29udHJvbGxlcjo6ZW5zdXJlUm9vdExheWVy
KExheW91dFNpemUgdmlld1NpemUsIExheW91dFNpemUgY29udGVudFNpemUpCit7CisgICAgaWYg
KG1fcm9vdExheWVyKSB7CisgICAgICAgIHVwZGF0ZVJvb3RMYXllckdlb21ldHJ5KHZpZXdTaXpl
LCBjb250ZW50U2l6ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZXR1cFJvb3RM
YXllckhpZXJhcmNoeSgpOworICAgIHVwZGF0ZVJvb3RMYXllckdlb21ldHJ5KHZpZXdTaXplLCBj
b250ZW50U2l6ZSk7CisKKyAgICBhdHRhY2hSb290TGF5ZXIoKTsKK30KKwordm9pZCBMYXllckNv
bnRyb2xsZXI6OnNldHVwUm9vdExheWVySGllcmFyY2h5KCkKK3sKKyAgICAvLyBGSVhNRTogVGhp
cyBsYXllciBoaWVyYXJjaHkgaXMganVzdCBlbm91Z2ggdG8gZ2V0IHRvcENvbnRlbnRJbnNldCB3
b3JraW5nLgorICAgIG1fcm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNz
TGF5ZXJGYWN0b3J5KCksIG1fcm9vdExheWVyQ2xpZW50KTsKKyAgICBtX3Jvb3RMYXllci0+c2V0
TmFtZSgiZGlzcGxheSByb290Iik7CisgICAgbV9yb290TGF5ZXItPnNldFBvc2l0aW9uKHsgfSk7
CisgICAgbV9yb290TGF5ZXItPnNldEFuY2hvclBvaW50KHsgfSk7CisKKyAgICBtX2NvbnRlbnRI
b3N0TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwg
bV9yb290TGF5ZXJDbGllbnQpOworICAgIG1fY29udGVudEhvc3RMYXllci0+c2V0TmFtZSgiY29u
dGVudCBob3N0Iik7CisgICAgbV9jb250ZW50SG9zdExheWVyLT5zZXRBbmNob3JQb2ludCh7IH0p
OworCisgICAgbV9jb250ZW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NM
YXllckZhY3RvcnkoKSwgbV9yb290TGF5ZXJDbGllbnQpOworICAgIG1fY29udGVudExheWVyLT5z
ZXROYW1lKCJjb250ZW50Iik7CisgICAgbV9jb250ZW50TGF5ZXItPnNldFBvc2l0aW9uKHsgfSk7
CisgICAgbV9jb250ZW50TGF5ZXItPnNldEFuY2hvclBvaW50KHsgfSk7CisgICAgbV9jb250ZW50
TGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICAKKyAgICBtX3Jvb3RMYXllci0+YWRk
Q2hpbGQoKm1fY29udGVudEhvc3RMYXllcik7CisgICAgbV9jb250ZW50SG9zdExheWVyLT5hZGRD
aGlsZCgqbV9jb250ZW50TGF5ZXIpOworfQorCit2b2lkIExheWVyQ29udHJvbGxlcjo6dXBkYXRl
Um9vdExheWVyR2VvbWV0cnkoTGF5b3V0U2l6ZSB2aWV3U2l6ZSwgTGF5b3V0U2l6ZSBjb250ZW50
U2l6ZSkKK3sKKyAgICBtX3Jvb3RMYXllci0+c2V0U2l6ZSh2aWV3U2l6ZSk7CisKKyAgICBmbG9h
dCB0b3BDb250ZW50SW5zZXQgPSBtX3ZpZXcuZnJhbWVWaWV3KCkudG9wQ29udGVudEluc2V0KCk7
CisgICAgbV9jb250ZW50SG9zdExheWVyLT5zZXRQb3NpdGlvbih7IDAsIHRvcENvbnRlbnRJbnNl
dCB9KTsKKyAgICBtX2NvbnRlbnRIb3N0TGF5ZXItPnNldFNpemUodmlld1NpemUpOworCisgICAg
bV9jb250ZW50TGF5ZXItPnNldFNpemUoY29udGVudFNpemUpOworfQorCit2b2lkIExheWVyQ29u
dHJvbGxlcjo6YXR0YWNoUm9vdExheWVyKCkKK3sKKyAgICBhdXRvIHBhZ2UgPSBtX3ZpZXcucGFn
ZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+Y2hyb21l
KCkuY2xpZW50KCkuYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIobV92aWV3LmZyYW1lKCksIHJvb3RH
cmFwaGljc0xheWVyKCkpOworfQorCitHcmFwaGljc0xheWVyRmFjdG9yeSogTGF5ZXJDb250cm9s
bGVyOjpncmFwaGljc0xheWVyRmFjdG9yeSgpIGNvbnN0Cit7CisgICAgYXV0byBwYWdlID0gbV92
aWV3LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIERpc3BsYXkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI1NTk4ZGY1YzEzZjFhMzEzNzgyYTdjYjBjNGJlOTA4ODM1MzM4ODkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJD
b250cm9sbGVyLmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJEaXNw
bGF5UmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJMYXlvdXRV
bml0cy5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBHcmFwaGljc0xheWVyOworY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rvcnk7CisK
K25hbWVzcGFjZSBMYXlvdXQgeworY2xhc3MgTGF5b3V0U3RhdGU7Cit9CisKK25hbWVzcGFjZSBE
aXNwbGF5IHsKKworY2xhc3MgVmlldzsKKworLy8gQSBjb250cm9sbGVyIG9iamVjdCB0aGF0IG1h
a2VzIGxheWVyaXphdGlvbiBkZWNpc2lvbnMgZm9yIGEgZGlzcGxheSB0cmVlLCBmb3IgYSBzaW5n
bGUgZG9jdW1lbnQuCitjbGFzcyBMYXllckNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoTGF5ZXJDb250cm9sbGVyKTsKK3B1YmxpYzoKKyAgICBMYXllckNvbnRyb2xsZXIo
VmlldyYpOworICAgIH5MYXllckNvbnRyb2xsZXIoKTsKKyAgICAKKyAgICB2b2lkIHByZXBhcmVG
b3JEaXNwbGF5KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmKTsKKyAgICB2b2lkIGZsdXNoTGF5
ZXJzKCk7CisKKyAgICBjb25zdCBWaWV3JiB2aWV3KCkgY29uc3QgeyByZXR1cm4gbV92aWV3OyB9
CisKK3ByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVSb290TGF5ZXIoTGF5b3V0U2l6ZSB2aWV3U2l6
ZSwgTGF5b3V0U2l6ZSBjb250ZW50U2l6ZSk7CisgICAgdm9pZCBhdHRhY2hSb290TGF5ZXIoKTsK
KyAgICB2b2lkIHNldHVwUm9vdExheWVySGllcmFyY2h5KCk7CisgICAgdm9pZCB1cGRhdGVSb290
TGF5ZXJHZW9tZXRyeShMYXlvdXRTaXplIHZpZXdTaXplLCBMYXlvdXRTaXplIGNvbnRlbnRTaXpl
KTsKKyAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgCisgICAgR3JhcGhp
Y3NMYXllciogcm9vdEdyYXBoaWNzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXllci5n
ZXQoKTsgfQorICAgIEdyYXBoaWNzTGF5ZXIqIGNvbnRlbnRMYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudExheWVyLmdldCgpOyB9CisKKyAgICBHcmFwaGljc0xheWVyRmFjdG9yeSogZ3Jh
cGhpY3NMYXllckZhY3RvcnkoKSBjb25zdDsKKworICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdEZv
ckxheWVyRmx1c2hpbmcoKSBjb25zdDsKKworICAgIGNsYXNzIFJvb3RMYXllckNsaWVudCA6IHB1
YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFJvb3RMYXll
ckNsaWVudChMYXllckNvbnRyb2xsZXImKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIC8vIEdy
YXBoaWNzTGF5ZXJDbGllbnQgaW1wbGVtZW50YXRpb24KKyAgICAgICAgdm9pZCBub3RpZnlGbHVz
aFJlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBmaW5hbDsKKyAgICAgICAgdm9pZCBwYWlu
dENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikgZmluYWw7CisKKyAgICAgICAg
TGF5ZXJDb250cm9sbGVyJiBtX2xheWVyQ29udHJvbGxlcjsKKyAgICB9OworCisgICAgVmlldyYg
bV92aWV3OworICAgIFJvb3RMYXllckNsaWVudCBtX3Jvb3RMYXllckNsaWVudDsKKworICAgIFJl
ZlB0cjxHcmFwaGljc0xheWVyPiBtX3Jvb3RMYXllcjsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXll
cj4gbV9jb250ZW50SG9zdExheWVyOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyPiBtX2NvbnRl
bnRMYXllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIERpc3BsYXkKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXkvRGlzcGxheVZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXkvRGlzcGxheVZpZXcuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYzMDJmYzE4YmNiYzg5YjE1MjAxM2QwZjYwOGZkMjI0ODhlODU4MzkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5Vmlldy5jcHAKQEAgLTAs
MCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJE
aXNwbGF5Vmlldy5oIgorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkZy
YW1lVmlld0xheW91dENvbnRleHQuaCIKKyNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCisjaW5j
bHVkZSAiTGF5b3V0U3RhdGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3Bs
YXkgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoVmlldyk7CisKK1ZpZXc6OlZpZXco
RnJhbWVWaWV3JiBmcmFtZVZpZXcpCisgICAgOiBtX2ZyYW1lVmlldyhmcmFtZVZpZXcpCisgICAg
LCBtX2xheWVyQ29udHJvbGxlcigqdGhpcykKK3sKK30KKworVmlldzo6flZpZXcoKQoreworfQor
CitGcmFtZSYgVmlldzo6ZnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2ZyYW1lVmlldy5m
cmFtZSgpOworfQorCitQYWdlKiBWaWV3OjpwYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9m
cmFtZVZpZXcuZnJhbWUoKS5wYWdlKCk7Cit9CisKK2NvbnN0IExheW91dDo6TGF5b3V0U3RhdGUq
IFZpZXc6OmxheW91dFN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFtZVZpZXcubGF5
b3V0Q29udGV4dCgpLmxheW91dEZvcm1hdHRpbmdTdGF0ZSgpOworfQorCitMYXlvdXQ6OkxheW91
dFRyZWVDb250ZW50KiBWaWV3OjpsYXlvdXRUcmVlQ29udGVudCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fZnJhbWVWaWV3LmxheW91dENvbnRleHQoKS5sYXlvdXRUcmVlQ29udGVudCgpOworfQor
Cit2b2lkIFZpZXc6OnByZXBhcmVGb3JEaXNwbGF5KCkKK3sKKyAgICBhdXRvKiBsYXlvdXRTdGF0
ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CisgICAgaWYgKCFsYXlvdXRTdGF0ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9sYXllckNvbnRyb2xsZXIucHJlcGFyZUZvckRpc3BsYXkoKmxheW91
dFN0YXRlKTsKK30KKwordm9pZCBWaWV3OjpmbHVzaExheWVycygpCit7CisgICAgbV9sYXllckNv
bnRyb2xsZXIuZmx1c2hMYXllcnMoKTsKK30KKworCisKK30gLy8gbmFtZXNwYWNlIERpc3BsYXkK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShMQVlPVVRfRk9STUFU
VElOR19DT05URVhUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXkv
RGlzcGxheVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTYyMzEwN2Q1YjY3N2MyNTM4MWQxMTJlY2E3ODJiMjc0YjMyZGM5Ygot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlW
aWV3LmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJEaXNwbGF5TGF5
ZXJDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheVJlY3QuaCIKKyNpbmNsdWRlICJMYXlv
dXRVbml0cy5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBGcmFtZTsKK2NsYXNzIEZyYW1lVmlldzsKK2NsYXNzIFBhZ2U7CisKK25h
bWVzcGFjZSBMYXlvdXQgeworY2xhc3MgTGF5b3V0U3RhdGU7CitjbGFzcyBMYXlvdXRUcmVlQ29u
dGVudDsKK30KKworbmFtZXNwYWNlIERpc3BsYXkgeworCisvLyBUaGUgcm9vdCBvYmplY3Qgd2hp
Y2ggcmVuZGVycyBhIGRpc3BsYXkgdHJlZSBmb3IgYSBzaW5nbGUgZG9jdW1lbnQuCitjbGFzcyBW
aWV3IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFZpZXcpOworcHVibGljOgorICAgIFZp
ZXcoRnJhbWVWaWV3Jik7CisgICAgflZpZXcoKTsKKyAgICAKKyAgICB2b2lkIHByZXBhcmVGb3JE
aXNwbGF5KCk7CisgICAgdm9pZCBmbHVzaExheWVycygpOworCisgICAgUGFnZSogcGFnZSgpIGNv
bnN0OworICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVZp
ZXc7IH0KKyAgICBGcmFtZSYgZnJhbWUoKSBjb25zdDsKKworICAgIGNvbnN0IExheW91dDo6TGF5
b3V0U3RhdGUqIGxheW91dFN0YXRlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgLy8gRklYTUU6
IERvIHdlIG5lZWQgdG8gdXNlIExheW91dFRyZWVDb250ZW50PworICAgIExheW91dDo6TGF5b3V0
VHJlZUNvbnRlbnQqIGxheW91dFRyZWVDb250ZW50KCkgY29uc3Q7CisKKyAgICBGcmFtZVZpZXcm
IG1fZnJhbWVWaWV3OworICAgIExheWVyQ29udHJvbGxlciBtX2xheWVyQ29udHJvbGxlcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIERpc3BsYXkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKaW5kZXggMGQ1
MWQzYTc4ZjdiNGY5NDZhMmMzOTEzYjYzMWYzNWRjODU2NGFhNC4uNDZmY2Y0ZmI1NGExMGE2NmQ3
YjM2ZDk4YjU2OTgwZjdiNDNjNDQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgc3Rh
dGljIHZvaWQgcGFpbnRJbmxpbmVDb250ZW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTGF5
b3V0UG9pbnQgYWJzb2x1dGVPZmYKICAgICB9CiB9CiAKLXN0YXRpYyBCb3ggYWJzb2x1dGVEaXNw
bGF5Qm94KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBMYXlv
dXQ6OkJveCYgbGF5b3V0Qm94VG9QYWludCkKK0JveCBQYWludGVyOjphYnNvbHV0ZURpc3BsYXlC
b3goY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IExheW91dDo6
Qm94JiBsYXlvdXRCb3hUb1BhaW50KQogewogICAgIC8vIFNob3VsZCBuZXZlciByZWFsbHkgaGFw
cGVuIGJ1dCB0YWJsZSBjb2RlIGlzIHdheSB0b28gaW5jb21wbGV0ZS4KICAgICBpZiAoIWxheW91
dFN0YXRlLmhhc0Rpc3BsYXlCb3gobGF5b3V0Qm94VG9QYWludCkpCkBAIC0xNzgsNyArMTc4LDcg
QEAgc3RhdGljIHZvaWQgcGFpbnRTdWJ0cmVlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGEKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
aWYgKCFsYXlvdXRTdGF0ZS5oYXNEaXNwbGF5Qm94KGxheW91dEJveCkpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGF1dG8gYWJzb2x1dGVEaXNwbGF5Qm94ID0gRGlzcGxheTo6YWJzb2x1
dGVEaXNwbGF5Qm94KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgICAgICBhdXRvIGFic29s
dXRlRGlzcGxheUJveCA9IFBhaW50ZXI6OmFic29sdXRlRGlzcGxheUJveChsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KTsKICAgICAgICAgaWYgKCFkaXJ0eVJlY3QuaW50ZXJzZWN0cyhzbmFwcGVkSW50
UmVjdChhYnNvbHV0ZURpc3BsYXlCb3gucmVjdCgpKSkpCiAgICAgICAgICAgICByZXR1cm47CiAK
QEAgLTI0OCw3ICsyNDgsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjb2xsZWN0UGFpbnRSb290c0Fu
ZENvbnRlbnRSZWN0KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxheQogICAgICAgICAgICAg
aWYgKGlzUGFpbnRSb290Q2FuZGlkYXRlKGxheW91dEJveCkpCiAgICAgICAgICAgICAgICAgYXBw
ZW5kUGFpbnRSb290KGxheW91dEJveCk7CiAgICAgICAgICAgICBpZiAobGF5b3V0U3RhdGUuaGFz
RGlzcGxheUJveChsYXlvdXRCb3gpKQotICAgICAgICAgICAgICAgIGNvbnRlbnRSZWN0LnVuaXRl
SWZOb25aZXJvKERpc3BsYXk6OmFic29sdXRlRGlzcGxheUJveChsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94KS5yZWN0KCkpOworICAgICAgICAgICAgICAgIGNvbnRlbnRSZWN0LnVuaXRlSWZOb25aZXJv
KFBhaW50ZXI6OmFic29sdXRlRGlzcGxheUJveChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KS5yZWN0
KCkpOwogICAgICAgICAgICAgaWYgKCFpczxMYXlvdXQ6OkNvbnRhaW5lckJveD4obGF5b3V0Qm94
KSB8fCAhZG93bmNhc3Q8TGF5b3V0OjpDb250YWluZXJCb3g+KGxheW91dEJveCkuaGFzQ2hpbGQo
KSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGxheW91dEJveExpc3QuYXBw
ZW5kKGRvd25jYXN0PExheW91dDo6Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLmZpcnN0Q2hpbGQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eVBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFp
bnRlci5oCmluZGV4IDE3NWYxOGNlNWYyOTQ3N2Q1YTM0MGE1YmE5NWExNmJjNjJjMDUwZjEuLmJm
MTAwZjk1YTVkMmJjYmU0MmM0ZDM5Nzc1YTU2YzA1YTVkNDg0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5oCkBAIC00Miw2ICs0
Miw4IEBAIGNsYXNzIFBhaW50ZXIgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHBhaW50KGNv
bnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QpOwogICAgIHN0YXRpYyB2b2lkIHBhaW50SW5saW5lRmxvdyhjb25zdCBMYXlv
dXQ6OkxheW91dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0Jik7CisKKyAgICBzdGF0aWMgQm94IGFi
c29sdXRlRGlzcGxheUJveChjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiwgY29uc3QgTGF5b3V0
OjpCb3gmKTsgICAgCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggOTM1OWMy
YjdmZDMyZWI3NmJlODMyYTY5MDU0MmE2NzIwNzMwMzczNC4uODE4ZjgyNzIxMDJmOGFiMGExN2E1
Njg4ZWJkNTYwM2FiNDlmYmIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkZsb2F0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIklubGluZUZv
cm1hdHRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCisjaW5jbHVkZSAiUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlRleHRVdGlsLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBjNzcwNDRhMDU5ZGY4
Y2U5Y2Y2YWExOThkZmExYmI1YzU4YzUxMjA0Li4xMzhlOGY4OTY5ZGE5YTZhOWE0MGE1NDdiMTQ1
OTNmMjljODgwZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMzAsNiArMTMw
LDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisj
aW5jbHVkZSAiRGlzcGxheVZpZXcuaCIKICNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCiAjZW5k
aWYKIApAQCAtOTU2LDYgKzk1NywxNCBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JTY3JvbGxTbmFwUHJvcGVydGllcygpIGNvbnN0CiAKIGJvb2wgRnJhbWVWaWV3
OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzRnJhbWUoY29uc3QgRnJhbWUmIHJvb3RGcmFt
ZUZvckZsdXNoKQogeworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxheW91dEZvcm1h
dHRpbmdDb250ZXh0RW5hYmxlZCgpKSB7CisgICAgICAgIGlmIChhdXRvKiB2aWV3ID0gZXhpc3Rp
bmdEaXNwbGF5VmlldygpKQorICAgICAgICAgICAgdmlldy0+Zmx1c2hMYXllcnMoKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisKICAgICBSZW5kZXJWaWV3KiByZW5kZXJW
aWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwogICAgIGlmICghcmVuZGVyVmlldykKICAgICAgICAg
cmV0dXJuIHRydWU7IC8vIFdlIGRvbid0IHdhbnQgdG8ga2VlcCB0cnlpbmcgdG8gdXBkYXRlIGxh
eWVycyBpZiB3ZSBoYXZlIG5vIHJlbmRlcmVyLgpAQCAtNTM0MCw2ICs1MzQ5LDIwIEBAIFJlbmRl
clZpZXcqIEZyYW1lVmlldzo6cmVuZGVyVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lKCku
Y29udGVudFJlbmRlcmVyKCk7CiB9CiAKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09O
VEVYVCkKK0Rpc3BsYXk6OlZpZXcqIEZyYW1lVmlldzo6ZXhpc3RpbmdEaXNwbGF5VmlldygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fZGlzcGxheVZpZXcuZ2V0KCk7Cit9CisKK0Rpc3BsYXk6OlZp
ZXcmIEZyYW1lVmlldzo6ZGlzcGxheVZpZXcoKQoreworICAgIGlmICghbV9kaXNwbGF5VmlldykK
KyAgICAgICAgbV9kaXNwbGF5VmlldyA9IG1ha2VVbmlxdWU8RGlzcGxheTo6Vmlldz4oKnRoaXMp
OworICAgIHJldHVybiAqbV9kaXNwbGF5VmlldzsKK30KKyNlbmRpZgorCiBpbnQgRnJhbWVWaWV3
OjptYXBGcm9tTGF5b3V0VG9DU1NVbml0cyhMYXlvdXRVbml0IHZhbHVlKSBjb25zdAogewogICAg
IHJldHVybiB2YWx1ZSAvIChmcmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkgKiBmcmFtZSgpLmZyYW1l
U2NhbGVGYWN0b3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBkN2U4ZGI5YWY0MDNj
ZTU2ODI1ZDgyOTY1OGRiZDdhNDBhNDcyNGM4Li44MzViMDBlMDljNTMyODdiZTE5YWZkODcxNTEz
NzVkODMyNTdmMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTc0LDYgKzc0LDEyIEBA
IGNsYXNzIFJlbmRlclZpZXc7CiBjbGFzcyBSZW5kZXJXaWRnZXQ7CiBjbGFzcyBTY3JvbGxpbmdD
b29yZGluYXRvcjsKIAorI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorbmFt
ZXNwYWNlIERpc3BsYXkgeworY2xhc3MgVmlldzsKK30KKyNlbmRpZgorCiBlbnVtIGNsYXNzIEZy
YW1lRmxhdHRlbmluZzsKIAogUGFnaW5hdGlvbjo6TW9kZSBwYWdpbmF0aW9uTW9kZUZvclJlbmRl
clN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJik7CkBAIC0xMDEsNiArMTA3LDExIEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBjb25zdDsKIAor
I2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorICAgIERpc3BsYXk6OlZpZXcq
IGV4aXN0aW5nRGlzcGxheVZpZXcoKSBjb25zdDsKKyAgICBEaXNwbGF5OjpWaWV3JiBkaXNwbGF5
VmlldygpOworI2VuZGlmCisKICAgICBpbnQgbWFwRnJvbUxheW91dFRvQ1NTVW5pdHMoTGF5b3V0
VW5pdCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXBGcm9tQ1NTVG9MYXlvdXRVbml0cyhpbnQp
IGNvbnN0OwogCkBAIC04NDIsNiArODUzLDEwIEBAIHByaXZhdGU6CiAgICAgY29uc3QgUmVmPEZy
YW1lPiBtX2ZyYW1lOwogICAgIEZyYW1lVmlld0xheW91dENvbnRleHQgbV9sYXlvdXRDb250ZXh0
OwogCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgc3RkOjp1bmlx
dWVfcHRyPERpc3BsYXk6OlZpZXc+IG1fZGlzcGxheVZpZXc7CisjZW5kaWYKKwogICAgIEhhc2hT
ZXQ8V2lkZ2V0Kj4gbV93aWRnZXRzSW5SZW5kZXJUcmVlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxM
aXN0SGFzaFNldDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+PiBtX2VtYmVkZGVkT2JqZWN0c1RvVXBk
YXRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWFrSGFzaFNldDxSZW5kZXJFbGVtZW50Pj4gbV9z
bG93UmVwYWludE9iamVjdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA2YzI4MGZjMDNlNmUzMDJh
OTYwNDU3ZDU4YjRiZGU4MDcwM2MxNGUwLi5mNjk0MDVlYzI2MGYyYmZjYmNmYzMyZjNiMGVlNzI2
MjFjODlkNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE2Niw2ICsxNjYsMTAgQEAKICNpbmNs
dWRlICJXZWJHTFN0YXRlVHJhY2tlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEFZT1VUX0ZP
Uk1BVFRJTkdfQ09OVEVYVCkKKyNpbmNsdWRlICJEaXNwbGF5Vmlldy5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hTZXQ8UGFnZSo+JiBhbGxQYWdlcygpCkBA
IC0xNTI4LDYgKzE1MzIsMTUgQEAgdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkK
ICAgICAvLyBDb2RlIGhlcmUgc2hvdWxkIGRvIG9uY2UtcGVyLWZyYW1lIHdvcmsgdGhhdCBuZWVk
cyB0byBiZSBkb25lIGJlZm9yZSBwYWludGluZywgYW5kIHJlcXVpcmVzCiAgICAgLy8gbGF5b3V0
IHRvIGJlIHVwLXRvLWRhdGUuIEl0IHNob3VsZCBub3QgcnVuIHNjcmlwdCwgdHJpZ2dlciBsYXlv
dXQsIG9yIGRpcnR5IGxheW91dC4KIAorI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05U
RVhUKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxh
eW91dEZvcm1hdHRpbmdDb250ZXh0RW5hYmxlZCgpKSB7CisgICAgICAgIGZvckVhY2hEb2N1bWVu
dChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAgICAgICAgICBpZiAoYXV0byogZnJhbWVW
aWV3ID0gZG9jdW1lbnQudmlldygpKQorICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+ZGlzcGxh
eVZpZXcoKS5wcmVwYXJlRm9yRGlzcGxheSgpOworICAgICAgICB9KTsKKyAgICB9CisjZW5kaWYK
KwogICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAg
IGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpCiAgICAgICAgICAgICBmcmFtZS0+
ZXZlbnRIYW5kbGVyKCkudXBkYXRlQ3Vyc29ySWZOZWVkZWQoKTsK
</data>
<flag name="commit-queue"
          id="424133"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408666</attachid>
            <date>2020-09-13 16:23:36 -0700</date>
            <delta_ts>2020-09-13 18:57:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216466-20200913162335.patch</filename>
            <type>text/plain</type>
            <size>31289</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzMwZmM3ZWQ3OWFhMjM5
NDg2YmU2MDZjYzk5YjJlZTdhYTUyYjU5NS4uZTM3MDhhYzc2MGI3Mzc2Y2VjZWJkMjJmYTUwOWJm
M2NhNjlkNGJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIwLTA5LTEzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpcnN0IHN0ZXBz
IHRvd2FyZHMgTEZDIHBhaW50aW5nIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjQ2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEdldCBMRkMgcGFpbnRpbmcgaW4gV2ViS2l0Mi4KKwor
ICAgICAgICBEaXNwbGF5OjpMYXllckNvbnRyb2xsZXIoKSBpcyBpbnRlbmRlZCB0byBiZSBhIGNv
bnRyb2xsZXIgb2JqZWN0IHRoYXQgbWFrZXMgbGF5ZXJpemF0aW9uCisgICAgICAgIGRlY2lzaW9u
czsgZm9yIG5vdywgaXQganVzdCBjcmVhdGVzIHNvbWUgcm9vdCBsYXllcnMgYW5kIGhvb2tzIHRo
ZW0gdXAgdmlhIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKCkuCisgICAgICAgIEl0IGFsc28gY3Jl
YXRlcyBhIEdyYXBoaWNzTGF5ZXJDbGllbnQgdGhhdCBwYWludHMgYnkgY2FsbGluZyBMYXlvdXRD
b250ZXh0OjpwYWludCgpLgorCisgICAgICAgIERpc3BsYXk6OlZpZXcgaXMgcmVzcG9uc2libGUg
Zm9yIHRoZSBkaXNwbGF5IG9mIGFuIExGQy1yZW5kZXJlZCBkb2N1bWVudC4gRnJhbWVWaWV3Cisg
ICAgICAgIGhhcyBvbmUsIGFuZCB0aGUgRGlzcGxheTo6VmlldyBoYXMgYSBEaXNwbGF5OjpMYXll
ckNvbnRyb2xsZXIoKS4gVGhlIG1pbmltYWwgaG9va3VwIHBvaW50cyBhcmU6CisgICAgICAgIDEu
IFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKSB0ZWxscyBlYWNoIERpc3BsYXk6OlZpZXcg
dG8gcHJlcGFyZUZvckRpc3BsYXkoKS4KKyAgICAgICAgICAgVGhpcyBpcyB3aGVyZSB3ZSdsbCBk
byBvbmNlLXBlci1yZW5kZXJpbmcgbGF5ZXIgdXBkYXRpbmcuCisgICAgICAgIDIuIEZyYW1lVmll
dzo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0ZyYW1lKCkgdGVsbHMgdGhlIERpc3BsYXk6
OlZpZXcoKSB0byBmbHVzaAorICAgICAgICAgICBsYXllcnMsIHdoaWNoIGp1c3QgcGFzc2VzIHRo
cm91Z2ggdG8gRGlzcGxheTo6TGF5ZXJDb250cm9sbGVyKCkuCisKKyAgICAgICAgRm9yIG5vdyB3
ZSBqdXN0IHJlbHkgb24gdGhlIGZhY3QgdGhhdCBEaXNwbGF5OjpMYXllckNvbnRyb2xsZXIoKSBj
YWxscyBhdHRhY2hSb290R3JhcGhpY3NMYXllcigpCisgICAgICAgIGFmdGVyIFJlbmRlckxheWVy
Q29tcG9zaXRvciwgcmVwbGFjaW5nIHRoZSByb290IGxheWVyIGNyZWF0ZWQgYnkgZXhpc3Rpbmcg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yIGNvZGUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGF5
b3V0L2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjpSb290TGF5ZXJDbGllbnQ6OlJvb3RM
YXllckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6
OlJvb3RMYXllckNsaWVudDo6bm90aWZ5Rmx1c2hSZXF1aXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OlJvb3RMYXllckNsaWVudDo6cGFpbnRDb250ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OkxheWVyQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OnBy
ZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxheWVyQ29udHJv
bGxlcjo6Zmx1c2hMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGF5ZXJDb250
cm9sbGVyOjp2aXNpYmxlUmVjdEZvckxheWVyRmx1c2hpbmcgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OmVuc3VyZVJvb3RM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OnNldHVw
Um9vdExheWVySGllcmFyY2h5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxheWVyQ29u
dHJvbGxlcjo6dXBkYXRlUm9vdExheWVyR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6TGF5ZXJDb250cm9sbGVyOjphdHRhY2hSb290TGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjpncmFwaGljc0xheWVyRmFjdG9yeSBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxheWVyQ29udHJvbGxlcjo6dmlldyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OnJvb3RHcmFw
aGljc0xheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxheWVyQ29udHJv
bGxlcjo6Y29udGVudExheWVyIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheS9EaXNw
bGF5Vmlldy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJl
ZS9EaXNwbGF5UGFpbnRlci5oLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Vmlldzo6Vmll
dyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpWaWV3Ojp+Vmlldyk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpWaWV3OjpmcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpWaWV3OjpwYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZp
ZXc6OmxheW91dFN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZpZXc6
OmxheW91dFRyZWVDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZp
ZXc6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZpZXc6
OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheS9EaXNwbGF5Vmlldy5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50
ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZpZXc6OmZyYW1lVmlldyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OlBhaW50ZXI6OmFic29sdXRlRGlzcGxheUJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpwYWludFN1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6Y29sbGVjdFBhaW50Um9vdHNBbmRDb250ZW50UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjphYnNvbHV0ZURpc3BsYXlCb3gpOiBEZWxldGVkLgorICAgICAgICAqIGxh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5oOgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1l
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmZsdXNoQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmV4aXN0aW5n
RGlzcGxheVZpZXcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpkaXNwbGF5
Vmlldyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZyk6CisK
IDIwMjAtMDktMTAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkcmVzcyBhIHBvc3QtY29tbWl0IHJldmlldyBjb21tZW50IGFmdGVyIHIyNjY4ODcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggMDg3MjE2MDY2MjA2ZmVjZTAxYTAwZWU1YjQzNjU0MjI5YjJhYTll
NC4uMTU0YmRmOTA2ZWMyNWM1YzhkMWQxNzVmZjg3M2YwYmJmOGVhYmE5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTE0MzIsNiArMTQzMiw4IEBAIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJn
aW5Db2xsYXBzZS5jcHAKIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvUHJlY29tcHV0ZWRCbG9ja01h
cmdpbkNvbGxhcHNlLmNwcAogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy90YWJsZXdyYXBwZXIvVGFi
bGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKIGxheW91dC9ibG9ja2Zvcm1hdHRp
bmcvdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3Mu
Y3BwCitsYXlvdXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcAorbGF5b3V0L2Rp
c3BsYXkvRGlzcGxheVZpZXcuY3BwCiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAK
IGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5jcHAKIGxheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMGQ1OTUzOTlkZTVjYTA1MThmMjEwNTIy
ZWY0MzA1MmIxZTgxMDJmLi4zODcyZjgwMWRmYzJmMDgxOGJkNWJiNjRhYWZiYTZiYjdhZjM3NGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC02MDc1LDYgKzYwNzUsMTAgQEAKIAkJMEZGODM1QkYxRUUzNTREQTAwOEI0Q0M3IC8q
IERPTVF1YWQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVF1YWQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY4MzVDMDFFRTM1NERBMDA4QjRDQzcgLyogRE9NUXVh
ZEluaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUXVhZEluaXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGODM1QzExRUUzNTREQTAwOEI0Q0M3IC8q
IERPTVF1YWRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01RdWFkSW5pdC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRkI0REExMjUwRUEwMEUwMDg2Qjk1MiAv
KiBEaXNwbGF5TGF5ZXJDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMYXllckNv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGQjREQTIyNTBFQTAw
RjAwODZCOTUyIC8qIERpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGRkI0REEzMjUwRUEzNzAwMDg2Qjk1MiAvKiBEaXNwbGF5Vmlldy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5Vmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkZCNERB
NDI1MEVBMzcwMDA4NkI5NTIgLyogRGlzcGxheVZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGlzcGxheVZpZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZENDVBNzI0
M0JGMjU3MDAwRDRCRUEgLyogU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRkQ0NUE4MjQzQkYyNTcwMDBENEJFQSAvKiBTY3JvbGxpbmdU
cmVlTGF0Y2hpbmdDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1Ry
ZWVMYXRjaGluZ0NvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkZENEQ1RTE4NjUxRkEzMDA1MTJGNkUgLyogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NDAxLDEwICsxNzQw
NSwyMiBAQAogCQkJcGF0aCA9IGRpc3BsYXlsaXN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07CisJCTBGRkI0REEwMjUwRTlGQzQwMDg2Qjk1MiAvKiBkaXNwbGF5ICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwRkZCNERBMjI1MEVBMDBG
MDA4NkI5NTIgLyogRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHAgKi8sCisJCQkJMEZGQjREQTEy
NTBFQTAwRTAwODZCOTUyIC8qIERpc3BsYXlMYXllckNvbnRyb2xsZXIuaCAqLywKKwkJCQkwRkZC
NERBNDI1MEVBMzcwMDA4NkI5NTIgLyogRGlzcGxheVZpZXcuY3BwICovLAorCQkJCTBGRkI0REEz
MjUwRUEzNzAwMDg2Qjk1MiAvKiBEaXNwbGF5Vmlldy5oICovLAorCQkJKTsKKwkJCXBhdGggPSBk
aXNwbGF5OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMTE1Q0ZBNjYyMDhB
RjcyMDAwMUU2OTkxIC8qIGxheW91dCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJMTE1Q0ZBOTkyMDhCQzA5QTAwMUU2OTkxIC8qIGJsb2NrZm9ybWF0dGlu
ZyAqLywKKwkJCQkwRkZCNERBMDI1MEU5RkM0MDA4NkI5NTIgLyogZGlzcGxheSAqLywKIAkJCQkx
MTk5RkE1ODIwOEUzQzRDMDAyMzU4Q0MgLyogZGlzcGxheXRyZWUgKi8sCiAJCQkJNkZDRkMwNTUy
MTJEQUNDMjAwNzY5NUQyIC8qIGZsb2F0cyAqLywKIAkJCQkxMTVDRkE5QTIwOEJDMTQwMDAxRTY5
OTEgLyogaW5saW5lZm9ybWF0dGluZyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk3
NjhhZjc3YmVjODEyNjMyNTVlZGRhODk0Y2IyN2Q3NzAwMjQ3MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3Bw
CkBAIC0wLDAgKzEsMTk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkRpc3BsYXlMYXllckNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9S
TUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21l
Q2xpZW50LmgiCisjaW5jbHVkZSAiRGlzcGxheUJveC5oIgorI2luY2x1ZGUgIkRpc3BsYXlQYWlu
dGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheVZpZXcuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKKyNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5IHsK
KworTGF5ZXJDb250cm9sbGVyOjpSb290TGF5ZXJDbGllbnQ6OlJvb3RMYXllckNsaWVudChMYXll
ckNvbnRyb2xsZXImIGxheWVyQ29udHJvbGxlcikKKyAgICA6IG1fbGF5ZXJDb250cm9sbGVyKGxh
eWVyQ29udHJvbGxlcikKK3sKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6OlJvb3RMYXllckNs
aWVudDo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikKK3sKKyAgICBt
X2xheWVyQ29udHJvbGxlci5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworfQorCit2b2lkIExh
eWVyQ29udHJvbGxlcjo6Um9vdExheWVyQ2xpZW50OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBo
aWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGlydHlSZWN0LCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikKK3sKKyAgICBBU1NFUlRf
VU5VU0VEKGxheWVyLCBsYXllciA9PSBtX2xheWVyQ29udHJvbGxlci5jb250ZW50TGF5ZXIoKSk7
CisKKyAgICAvLyBGSVhNRTogVGVtcG9yYXJ5OyBvbmNlIHdlIGRvIHNjcm9sbGluZyB0aGlzIHJv
b3QgbGF5ZXIgd29uJ3QgcGFpbnQgYW55dGhpbmcuCisgICAgaWYgKGF1dG8qIGxheW91dFN0YXRl
ID0gbV9sYXllckNvbnRyb2xsZXIudmlldygpLmxheW91dFN0YXRlKCkpCisgICAgICAgIExheW91
dDo6TGF5b3V0Q29udGV4dDo6cGFpbnQoKmxheW91dFN0YXRlLCBjb250ZXh0LCBlbmNsb3NpbmdJ
bnRSZWN0KGRpcnR5UmVjdCkpOworfQorCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGF5
ZXJDb250cm9sbGVyKTsKKworTGF5ZXJDb250cm9sbGVyOjpMYXllckNvbnRyb2xsZXIoVmlldyYg
dmlldykKKyAgICA6IG1fdmlldyh2aWV3KQorICAgICwgbV9yb290TGF5ZXJDbGllbnQoKnRoaXMp
Cit7Cit9CisKK0xheWVyQ29udHJvbGxlcjo6fkxheWVyQ29udHJvbGxlcigpID0gZGVmYXVsdDsK
Kwordm9pZCBMYXllckNvbnRyb2xsZXI6OnByZXBhcmVGb3JEaXNwbGF5KGNvbnN0IExheW91dDo6
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQoreworICAgIGF1dG8mIHJvb3RMYXlvdXRCb3ggPSBs
YXlvdXRTdGF0ZS5yb290KCk7CisgICAgaWYgKCFyb290TGF5b3V0Qm94LmZpcnN0Q2hpbGQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFsYXlvdXRTdGF0ZS5oYXNEaXNwbGF5Qm94KHJv
b3RMYXlvdXRCb3gpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHZpZXdTaXplID0gbGF5
b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChyb290TGF5b3V0Qm94KS5zaXplKCk7Cisg
ICAgYXV0byBjb250ZW50U2l6ZSA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
KnJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpKS5zaXplKCk7CisKKyAgICBlbnN1cmVSb290TGF5
ZXIodmlld1NpemUsIGNvbnRlbnRTaXplKTsKKyAgICAKKyAgICAvLyBGSVhNRTogRm9yIG5vdywg
cmVwYWludCB0aGUgd29ybGQgb24gZXZlcnkgdXBkYXRlLgorICAgIG1fcm9vdExheWVyLT5zZXRO
ZWVkc0Rpc3BsYXkoKTsKKyAgICAKKyAgICBhdXRvJiBzZXR0aW5ncyA9IG1fdmlldy5mcmFtZSgp
LnNldHRpbmdzKCk7CisgICAgYm9vbCBzaG93RGVidWdCb3JkZXJzID0gc2V0dGluZ3Muc2hvd0Rl
YnVnQm9yZGVycygpOworICAgIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyID0gc2V0dGluZ3Muc2hv
d1JlcGFpbnRDb3VudGVyKCk7CisgICAgYm9vbCBhY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkID0g
c2V0dGluZ3MuYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCgpOworCisgICAgbV9yb290TGF5ZXIt
PnNldFNob3dEZWJ1Z0JvcmRlcihzaG93RGVidWdCb3JkZXJzKTsKKyAgICBtX2NvbnRlbnRIb3N0
TGF5ZXItPnNldFNob3dEZWJ1Z0JvcmRlcihzaG93RGVidWdCb3JkZXJzKTsKKworICAgIG1fY29u
dGVudExheWVyLT5zZXRTaG93RGVidWdCb3JkZXIoc2hvd0RlYnVnQm9yZGVycyk7CisgICAgbV9j
b250ZW50TGF5ZXItPnNldFNob3dSZXBhaW50Q291bnRlcihzaG93UmVwYWludENvdW50ZXIpOwor
ICAgIG1fY29udGVudExheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdpbmcoYWNjZWxlcmF0ZWREcmF3
aW5nRW5hYmxlZCk7Cit9CisKK3ZvaWQgTGF5ZXJDb250cm9sbGVyOjpmbHVzaExheWVycygpCit7
CisgICAgaWYgKCFtX3Jvb3RMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRSZWN0
IHZpc2libGVSZWN0ID0gdmlzaWJsZVJlY3RGb3JMYXllckZsdXNoaW5nKCk7CisgICAgbV9yb290
TGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZSh2aXNpYmxlUmVjdCk7Cit9CisKK0Zsb2F0UmVj
dCBMYXllckNvbnRyb2xsZXI6OnZpc2libGVSZWN0Rm9yTGF5ZXJGbHVzaGluZygpIGNvbnN0Cit7
CisgICAgY29uc3QgYXV0byYgZnJhbWVWaWV3ID0gbV92aWV3LmZyYW1lVmlldygpOworICAgIHJl
dHVybiBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCk7Cit9CisKK3ZvaWQgTGF5ZXJDb250
cm9sbGVyOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpCit7CisgICAgYXV0byBwYWdlID0gbV92
aWV3LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2Ut
PnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7Cit9CisKK3ZvaWQgTGF5ZXJDb250cm9sbGVyOjpl
bnN1cmVSb290TGF5ZXIoTGF5b3V0U2l6ZSB2aWV3U2l6ZSwgTGF5b3V0U2l6ZSBjb250ZW50U2l6
ZSkKK3sKKyAgICBpZiAobV9yb290TGF5ZXIpIHsKKyAgICAgICAgdXBkYXRlUm9vdExheWVyR2Vv
bWV0cnkodmlld1NpemUsIGNvbnRlbnRTaXplKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHNldHVwUm9vdExheWVySGllcmFyY2h5KCk7CisgICAgdXBkYXRlUm9vdExheWVyR2VvbWV0
cnkodmlld1NpemUsIGNvbnRlbnRTaXplKTsKKworICAgIGF0dGFjaFJvb3RMYXllcigpOworfQor
Cit2b2lkIExheWVyQ29udHJvbGxlcjo6c2V0dXBSb290TGF5ZXJIaWVyYXJjaHkoKQoreworICAg
IC8vIEZJWE1FOiBUaGlzIGxheWVyIGhpZXJhcmNoeSBpcyBqdXN0IGVub3VnaCB0byBnZXQgdG9w
Q29udGVudEluc2V0IHdvcmtpbmcuCisgICAgbV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpj
cmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgbV9yb290TGF5ZXJDbGllbnQpOworICAgIG1f
cm9vdExheWVyLT5zZXROYW1lKCJkaXNwbGF5IHJvb3QiKTsKKyAgICBtX3Jvb3RMYXllci0+c2V0
UG9zaXRpb24oeyB9KTsKKyAgICBtX3Jvb3RMYXllci0+c2V0QW5jaG9yUG9pbnQoeyB9KTsKKwor
ICAgIG1fY29udGVudEhvc3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFwaGljc0xh
eWVyRmFjdG9yeSgpLCBtX3Jvb3RMYXllckNsaWVudCk7CisgICAgbV9jb250ZW50SG9zdExheWVy
LT5zZXROYW1lKCJjb250ZW50IGhvc3QiKTsKKyAgICBtX2NvbnRlbnRIb3N0TGF5ZXItPnNldEFu
Y2hvclBvaW50KHsgfSk7CisKKyAgICBtX2NvbnRlbnRMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNy
ZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCBtX3Jvb3RMYXllckNsaWVudCk7CisgICAgbV9j
b250ZW50TGF5ZXItPnNldE5hbWUoImNvbnRlbnQiKTsKKyAgICBtX2NvbnRlbnRMYXllci0+c2V0
UG9zaXRpb24oeyB9KTsKKyAgICBtX2NvbnRlbnRMYXllci0+c2V0QW5jaG9yUG9pbnQoeyB9KTsK
KyAgICBtX2NvbnRlbnRMYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIAorICAgIG1f
cm9vdExheWVyLT5hZGRDaGlsZCgqbV9jb250ZW50SG9zdExheWVyKTsKKyAgICBtX2NvbnRlbnRI
b3N0TGF5ZXItPmFkZENoaWxkKCptX2NvbnRlbnRMYXllcik7Cit9CisKK3ZvaWQgTGF5ZXJDb250
cm9sbGVyOjp1cGRhdGVSb290TGF5ZXJHZW9tZXRyeShMYXlvdXRTaXplIHZpZXdTaXplLCBMYXlv
dXRTaXplIGNvbnRlbnRTaXplKQoreworICAgIG1fcm9vdExheWVyLT5zZXRTaXplKHZpZXdTaXpl
KTsKKworICAgIGZsb2F0IHRvcENvbnRlbnRJbnNldCA9IG1fdmlldy5mcmFtZVZpZXcoKS50b3BD
b250ZW50SW5zZXQoKTsKKyAgICBtX2NvbnRlbnRIb3N0TGF5ZXItPnNldFBvc2l0aW9uKHsgMCwg
dG9wQ29udGVudEluc2V0IH0pOworICAgIG1fY29udGVudEhvc3RMYXllci0+c2V0U2l6ZSh2aWV3
U2l6ZSk7CisKKyAgICBtX2NvbnRlbnRMYXllci0+c2V0U2l6ZShjb250ZW50U2l6ZSk7Cit9CisK
K3ZvaWQgTGF5ZXJDb250cm9sbGVyOjphdHRhY2hSb290TGF5ZXIoKQoreworICAgIGF1dG8gcGFn
ZSA9IG1fdmlldy5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5hdHRhY2hSb290R3JhcGhpY3NMYXllcihtX3ZpZXcu
ZnJhbWUoKSwgcm9vdEdyYXBoaWNzTGF5ZXIoKSk7Cit9CisKK0dyYXBoaWNzTGF5ZXJGYWN0b3J5
KiBMYXllckNvbnRyb2xsZXI6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgY29uc3QKK3sKKyAgICBh
dXRvIHBhZ2UgPSBtX3ZpZXcucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZ3JhcGhpY3NM
YXllckZhY3RvcnkoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgRGlzcGxheQorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJD
b250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjU1OThkZjVjMTNmMWEzMTM3ODJhN2NiMGM0YmU5MDg4
MzUzMzg4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKwor
I2luY2x1ZGUgIkRpc3BsYXlSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2lu
Y2x1ZGUgIkxheW91dFVuaXRzLmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzTGF5ZXI7CitjbGFzcyBHcmFwaGljc0xh
eWVyRmFjdG9yeTsKKworbmFtZXNwYWNlIExheW91dCB7CitjbGFzcyBMYXlvdXRTdGF0ZTsKK30K
KworbmFtZXNwYWNlIERpc3BsYXkgeworCitjbGFzcyBWaWV3OworCisvLyBBIGNvbnRyb2xsZXIg
b2JqZWN0IHRoYXQgbWFrZXMgbGF5ZXJpemF0aW9uIGRlY2lzaW9ucyBmb3IgYSBkaXNwbGF5IHRy
ZWUsIGZvciBhIHNpbmdsZSBkb2N1bWVudC4KK2NsYXNzIExheWVyQ29udHJvbGxlciB7CisgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChMYXllckNvbnRyb2xsZXIpOworcHVibGljOgorICAgIExh
eWVyQ29udHJvbGxlcihWaWV3Jik7CisgICAgfkxheWVyQ29udHJvbGxlcigpOworICAgIAorICAg
IHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYpOworICAg
IHZvaWQgZmx1c2hMYXllcnMoKTsKKworICAgIGNvbnN0IFZpZXcmIHZpZXcoKSBjb25zdCB7IHJl
dHVybiBtX3ZpZXc7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZVJvb3RMYXllcihMYXlv
dXRTaXplIHZpZXdTaXplLCBMYXlvdXRTaXplIGNvbnRlbnRTaXplKTsKKyAgICB2b2lkIGF0dGFj
aFJvb3RMYXllcigpOworICAgIHZvaWQgc2V0dXBSb290TGF5ZXJIaWVyYXJjaHkoKTsKKyAgICB2
b2lkIHVwZGF0ZVJvb3RMYXllckdlb21ldHJ5KExheW91dFNpemUgdmlld1NpemUsIExheW91dFNp
emUgY29udGVudFNpemUpOworICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAg
ICAKKyAgICBHcmFwaGljc0xheWVyKiByb290R3JhcGhpY3NMYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fcm9vdExheWVyLmdldCgpOyB9CisgICAgR3JhcGhpY3NMYXllciogY29udGVudExheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZW50TGF5ZXIuZ2V0KCk7IH0KKworICAgIEdyYXBoaWNzTGF5
ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIGNvbnN0OworCisgICAgRmxvYXRSZWN0
IHZpc2libGVSZWN0Rm9yTGF5ZXJGbHVzaGluZygpIGNvbnN0OworCisgICAgY2xhc3MgUm9vdExh
eWVyQ2xpZW50IDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgUm9vdExheWVyQ2xpZW50KExheWVyQ29udHJvbGxlciYpOworCisgICAgcHJpdmF0ZToK
KyAgICAgICAgLy8gR3JhcGhpY3NMYXllckNsaWVudCBpbXBsZW1lbnRhdGlvbgorICAgICAgICB2
b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIGZpbmFsOworICAg
ICAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzTGF5ZXJQYWludEJlaGF2aW9yKSBmaW5h
bDsKKworICAgICAgICBMYXllckNvbnRyb2xsZXImIG1fbGF5ZXJDb250cm9sbGVyOworICAgIH07
CisKKyAgICBWaWV3JiBtX3ZpZXc7CisgICAgUm9vdExheWVyQ2xpZW50IG1fcm9vdExheWVyQ2xp
ZW50OworCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXI+IG1fcm9vdExheWVyOworICAgIFJlZlB0
cjxHcmFwaGljc0xheWVyPiBtX2NvbnRlbnRIb3N0TGF5ZXI7CisgICAgUmVmUHRyPEdyYXBoaWNz
TGF5ZXI+IG1fY29udGVudExheWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgRGlzcGxheQorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheS9EaXNw
bGF5Vmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5Vmlldy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjMwMmZjMThiY2JjODliMTUyMDEzZDBmNjA4ZmQyMjQ4OGU4NTgzOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlW
aWV3LmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkRpc3BsYXlWaWV3LmgiCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJ
TkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oIgorI2luY2x1ZGUgIkxheW91dENv
bnRleHQuaCIKKyNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citu
YW1lc3BhY2UgRGlzcGxheSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChWaWV3KTsK
KworVmlldzo6VmlldyhGcmFtZVZpZXcmIGZyYW1lVmlldykKKyAgICA6IG1fZnJhbWVWaWV3KGZy
YW1lVmlldykKKyAgICAsIG1fbGF5ZXJDb250cm9sbGVyKCp0aGlzKQoreworfQorCitWaWV3Ojp+
VmlldygpCit7Cit9CisKK0ZyYW1lJiBWaWV3OjpmcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZnJhbWVWaWV3LmZyYW1lKCk7Cit9CisKK1BhZ2UqIFZpZXc6OnBhZ2UoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2ZyYW1lVmlldy5mcmFtZSgpLnBhZ2UoKTsKK30KKworY29uc3QgTGF5b3V0
OjpMYXlvdXRTdGF0ZSogVmlldzo6bGF5b3V0U3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X2ZyYW1lVmlldy5sYXlvdXRDb250ZXh0KCkubGF5b3V0Rm9ybWF0dGluZ1N0YXRlKCk7Cit9CisK
K0xheW91dDo6TGF5b3V0VHJlZUNvbnRlbnQqIFZpZXc6OmxheW91dFRyZWVDb250ZW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9mcmFtZVZpZXcubGF5b3V0Q29udGV4dCgpLmxheW91dFRyZWVD
b250ZW50KCk7Cit9CisKK3ZvaWQgVmlldzo6cHJlcGFyZUZvckRpc3BsYXkoKQoreworICAgIGF1
dG8qIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKKyAgICBpZiAoIWxheW91dFN0
YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xheWVyQ29udHJvbGxlci5wcmVwYXJlRm9y
RGlzcGxheSgqbGF5b3V0U3RhdGUpOworfQorCit2b2lkIFZpZXc6OmZsdXNoTGF5ZXJzKCkKK3sK
KyAgICBtX2xheWVyQ29udHJvbGxlci5mbHVzaExheWVycygpOworfQorCisKKworfSAvLyBuYW1l
c3BhY2UgRGlzcGxheQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZGlzcGxheS9EaXNwbGF5Vmlldy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3Bs
YXkvRGlzcGxheVZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjIzMTA3ZDViNjc3YzI1MzgxZDExMmVjYTc4
MmIyNzRiMzJkYzliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rp
c3BsYXkvRGlzcGxheVZpZXcuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1
ZGUgIkRpc3BsYXlMYXllckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJEaXNwbGF5UmVjdC5oIgor
I2luY2x1ZGUgIkxheW91dFVuaXRzLmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgRnJhbWVWaWV3OworY2xh
c3MgUGFnZTsKKworbmFtZXNwYWNlIExheW91dCB7CitjbGFzcyBMYXlvdXRTdGF0ZTsKK2NsYXNz
IExheW91dFRyZWVDb250ZW50OworfQorCituYW1lc3BhY2UgRGlzcGxheSB7CisKKy8vIFRoZSBy
b290IG9iamVjdCB3aGljaCByZW5kZXJzIGEgZGlzcGxheSB0cmVlIGZvciBhIHNpbmdsZSBkb2N1
bWVudC4KK2NsYXNzIFZpZXcgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVmlldyk7Citw
dWJsaWM6CisgICAgVmlldyhGcmFtZVZpZXcmKTsKKyAgICB+VmlldygpOworICAgIAorICAgIHZv
aWQgcHJlcGFyZUZvckRpc3BsYXkoKTsKKyAgICB2b2lkIGZsdXNoTGF5ZXJzKCk7CisKKyAgICBQ
YWdlKiBwYWdlKCkgY29uc3Q7CisgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcoKSBjb25zdCB7IHJl
dHVybiBtX2ZyYW1lVmlldzsgfQorICAgIEZyYW1lJiBmcmFtZSgpIGNvbnN0OworCisgICAgY29u
c3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUoKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byB1c2UgTGF5b3V0VHJlZUNvbnRlbnQ/CisgICAg
TGF5b3V0OjpMYXlvdXRUcmVlQ29udGVudCogbGF5b3V0VHJlZUNvbnRlbnQoKSBjb25zdDsKKwor
ICAgIEZyYW1lVmlldyYgbV9mcmFtZVZpZXc7CisgICAgTGF5ZXJDb250cm9sbGVyIG1fbGF5ZXJD
b250cm9sbGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgRGlzcGxheQorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVy
LmNwcAppbmRleCAwZDUxZDNhNzhmN2I0Zjk0NmEyYzM5MTNiNjMxZjM1ZGM4NTY0YWE0Li40NmZj
ZjRmYjU0YTEwYTY2ZDdiMzZkOThiNTY5ODBmN2I0M2M0NDBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKQEAgLTE0MSw3
ICsxNDEsNyBAQCBzdGF0aWMgdm9pZCBwYWludElubGluZUNvbnRlbnQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBMYXlvdXRQb2ludCBhYnNvbHV0ZU9mZgogICAgIH0KIH0KIAotc3RhdGljIEJv
eCBhYnNvbHV0ZURpc3BsYXlCb3goY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3hUb1BhaW50KQorQm94IFBhaW50ZXI6OmFi
c29sdXRlRGlzcGxheUJveChjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
Y29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveFRvUGFpbnQpCiB7CiAgICAgLy8gU2hvdWxkIG5l
dmVyIHJlYWxseSBoYXBwZW4gYnV0IHRhYmxlIGNvZGUgaXMgd2F5IHRvbyBpbmNvbXBsZXRlLgog
ICAgIGlmICghbGF5b3V0U3RhdGUuaGFzRGlzcGxheUJveChsYXlvdXRCb3hUb1BhaW50KSkKQEAg
LTE3OCw3ICsxNzgsNyBAQCBzdGF0aWMgdm9pZCBwYWludFN1YnRyZWUoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBpZiAoIWxheW91dFN0YXRlLmhhc0Rpc3BsYXlCb3gobGF5b3V0Qm94KSkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBhYnNvbHV0ZURpc3BsYXlCb3ggPSBE
aXNwbGF5OjphYnNvbHV0ZURpc3BsYXlCb3gobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAg
ICAgIGF1dG8gYWJzb2x1dGVEaXNwbGF5Qm94ID0gUGFpbnRlcjo6YWJzb2x1dGVEaXNwbGF5Qm94
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwogICAgICAgICBpZiAoIWRpcnR5UmVjdC5pbnRlcnNl
Y3RzKHNuYXBwZWRJbnRSZWN0KGFic29sdXRlRGlzcGxheUJveC5yZWN0KCkpKSkKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtMjQ4LDcgKzI0OCw3IEBAIHN0YXRpYyBMYXlvdXRSZWN0IGNvbGxl
Y3RQYWludFJvb3RzQW5kQ29udGVudFJlY3QoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5
CiAgICAgICAgICAgICBpZiAoaXNQYWludFJvb3RDYW5kaWRhdGUobGF5b3V0Qm94KSkKICAgICAg
ICAgICAgICAgICBhcHBlbmRQYWludFJvb3QobGF5b3V0Qm94KTsKICAgICAgICAgICAgIGlmIChs
YXlvdXRTdGF0ZS5oYXNEaXNwbGF5Qm94KGxheW91dEJveCkpCi0gICAgICAgICAgICAgICAgY29u
dGVudFJlY3QudW5pdGVJZk5vblplcm8oRGlzcGxheTo6YWJzb2x1dGVEaXNwbGF5Qm94KGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpLnJlY3QoKSk7CisgICAgICAgICAgICAgICAgY29udGVudFJlY3Qu
dW5pdGVJZk5vblplcm8oUGFpbnRlcjo6YWJzb2x1dGVEaXNwbGF5Qm94KGxheW91dFN0YXRlLCBs
YXlvdXRCb3gpLnJlY3QoKSk7CiAgICAgICAgICAgICBpZiAoIWlzPExheW91dDo6Q29udGFpbmVy
Qm94PihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxMYXlvdXQ6OkNvbnRhaW5lckJveD4obGF5b3V0
Qm94KS5oYXNDaGlsZCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgbGF5
b3V0Qm94TGlzdC5hcHBlbmQoZG93bmNhc3Q8TGF5b3V0OjpDb250YWluZXJCb3g+KGxheW91dEJv
eCkuZmlyc3RDaGlsZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5UGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0
cmVlL0Rpc3BsYXlQYWludGVyLmgKaW5kZXggMTc1ZjE4Y2U1ZjI5NDc3ZDVhMzQwYTViYTk1YTE2
YmM2MmMwNTBmMS4uYmYxMDBmOTVhNWQyYmNiZTQyYzRkMzk3NzVhNTZjMDVhNWQ0ODQyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVy
LmgKQEAgLTQyLDYgKzQyLDggQEAgY2xhc3MgUGFpbnRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgcGFpbnQoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAgICAgc3RhdGljIHZvaWQgcGFpbnRJbmxpbmVG
bG93KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmKTsKKworICAg
IHN0YXRpYyBCb3ggYWJzb2x1dGVEaXNwbGF5Qm94KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUm
LCBjb25zdCBMYXlvdXQ6OkJveCYpOyAgICAKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNw
cAppbmRleCA5MzU5YzJiN2ZkMzJlYjc2YmU4MzJhNjkwNTQyYTY3MjA3MzAzNzM0Li44MThmODI3
MjEwMmY4YWIwYTE3YTU2ODhlYmQ1NjAzYWI0OWZiYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIu
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRmxvYXRpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIK
KyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiVGV4dFV0aWwu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4
IGM3NzA0NGEwNTlkZjhjZTljZjZhYTE5OGRmYTFiYjVjNThjNTEyMDQuLjEzOGU4Zjg5NjlkYTlh
NmE5YTQwYTU0N2IxNDU5M2YyOWM4ODBkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
QEAgLTEzMCw2ICsxMzAsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJ
TkdfQ09OVEVYVCkKKyNpbmNsdWRlICJEaXNwbGF5Vmlldy5oIgogI2luY2x1ZGUgIkxheW91dENv
bnRleHQuaCIKICNlbmRpZgogCkBAIC05NTYsNiArOTU3LDE0IEBAIHZvaWQgRnJhbWVWaWV3Ojp1
cGRhdGVTY3JvbGxpbmdDb29yZGluYXRvclNjcm9sbFNuYXBQcm9wZXJ0aWVzKCkgY29uc3QKIAog
Ym9vbCBGcmFtZVZpZXc6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZShjb25zdCBG
cmFtZSYgcm9vdEZyYW1lRm9yRmx1c2gpCiB7CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8q
IHZpZXcgPSBleGlzdGluZ0Rpc3BsYXlWaWV3KCkpCisgICAgICAgICAgICB2aWV3LT5mbHVzaExh
eWVycygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKwogICAgIFJlbmRl
clZpZXcqIHJlbmRlclZpZXcgPSB0aGlzLT5yZW5kZXJWaWV3KCk7CiAgICAgaWYgKCFyZW5kZXJW
aWV3KQogICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gV2UgZG9uJ3Qgd2FudCB0byBrZWVwIHRyeWlu
ZyB0byB1cGRhdGUgbGF5ZXJzIGlmIHdlIGhhdmUgbm8gcmVuZGVyZXIuCkBAIC01MzQwLDYgKzUz
NDksMjAgQEAgUmVuZGVyVmlldyogRnJhbWVWaWV3OjpyZW5kZXJWaWV3KCkgY29uc3QKICAgICBy
ZXR1cm4gZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKTsKIH0KIAorI2lmIEVOQUJMRShMQVlPVVRf
Rk9STUFUVElOR19DT05URVhUKQorRGlzcGxheTo6VmlldyogRnJhbWVWaWV3OjpleGlzdGluZ0Rp
c3BsYXlWaWV3KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kaXNwbGF5Vmlldy5nZXQoKTsKK30K
KworRGlzcGxheTo6VmlldyYgRnJhbWVWaWV3OjpkaXNwbGF5VmlldygpCit7CisgICAgaWYgKCFt
X2Rpc3BsYXlWaWV3KQorICAgICAgICBtX2Rpc3BsYXlWaWV3ID0gbWFrZVVuaXF1ZTxEaXNwbGF5
OjpWaWV3PigqdGhpcyk7CisgICAgcmV0dXJuICptX2Rpc3BsYXlWaWV3OworfQorI2VuZGlmCisK
IGludCBGcmFtZVZpZXc6Om1hcEZyb21MYXlvdXRUb0NTU1VuaXRzKExheW91dFVuaXQgdmFsdWUp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHZhbHVlIC8gKGZyYW1lKCkucGFnZVpvb21GYWN0b3IoKSAq
IGZyYW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4
IGQ3ZThkYjlhZjQwM2NlNTY4MjVkODI5NjU4ZGJkN2E0MGE0NzI0YzguLjgzNWIwMGUwOWM1MzI4
N2JlMTlhZmQ4NzE1MTM3NWQ4MzI1N2YyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAt
NzQsNiArNzQsMTIgQEAgY2xhc3MgUmVuZGVyVmlldzsKIGNsYXNzIFJlbmRlcldpZGdldDsKIGNs
YXNzIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOwogCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCituYW1lc3BhY2UgRGlzcGxheSB7CitjbGFzcyBWaWV3OworfQorI2VuZGlmCisK
IGVudW0gY2xhc3MgRnJhbWVGbGF0dGVuaW5nOwogCiBQYWdpbmF0aW9uOjpNb2RlIHBhZ2luYXRp
b25Nb2RlRm9yUmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKTsKQEAgLTEwMSw2ICsxMDcs
MTEgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVuZGVyVmlldyogcmVuZGVyVmll
dygpIGNvbnN0OwogCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAg
RGlzcGxheTo6VmlldyogZXhpc3RpbmdEaXNwbGF5VmlldygpIGNvbnN0OworICAgIERpc3BsYXk6
OlZpZXcmIGRpc3BsYXlWaWV3KCk7CisjZW5kaWYKKwogICAgIGludCBtYXBGcm9tTGF5b3V0VG9D
U1NVbml0cyhMYXlvdXRVbml0KSBjb25zdDsKICAgICBMYXlvdXRVbml0IG1hcEZyb21DU1NUb0xh
eW91dFVuaXRzKGludCkgY29uc3Q7CiAKQEAgLTg0Miw2ICs4NTMsMTAgQEAgcHJpdmF0ZToKICAg
ICBjb25zdCBSZWY8RnJhbWU+IG1fZnJhbWU7CiAgICAgRnJhbWVWaWV3TGF5b3V0Q29udGV4dCBt
X2xheW91dENvbnRleHQ7CiAKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheTo6Vmlldz4gbV9kaXNwbGF5VmlldzsKKyNlbmRp
ZgorCiAgICAgSGFzaFNldDxXaWRnZXQqPiBtX3dpZGdldHNJblJlbmRlclRyZWU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPExpc3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+IG1fZW1iZWRk
ZWRPYmplY3RzVG9VcGRhdGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYWtIYXNoU2V0PFJlbmRl
ckVsZW1lbnQ+PiBtX3Nsb3dSZXBhaW50T2JqZWN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDZj
MjgwZmMwM2U2ZTMwMmE5NjA0NTdkNThiNGJkZTgwNzAzYzE0ZTAuLmY2OTQwNWVjMjYwZjJiZmNi
Y2ZjMzJmM2IwZWU3MjYyMWM4OWQ0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTY2LDYgKzE2
NiwxMCBAQAogI2luY2x1ZGUgIldlYkdMU3RhdGVUcmFja2VyLmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorI2luY2x1ZGUgIkRpc3BsYXlWaWV3Lmgi
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSGFzaFNldDxQYWdlKj4m
IGFsbFBhZ2VzKCkKQEAgLTE1MjgsNiArMTUzMiwxNSBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRh
dGVSZW5kZXJpbmcoKQogICAgIC8vIENvZGUgaGVyZSBzaG91bGQgZG8gb25jZS1wZXItZnJhbWUg
d29yayB0aGF0IG5lZWRzIHRvIGJlIGRvbmUgYmVmb3JlIHBhaW50aW5nLCBhbmQgcmVxdWlyZXMK
ICAgICAvLyBsYXlvdXQgdG8gYmUgdXAtdG8tZGF0ZS4gSXQgc2hvdWxkIG5vdCBydW4gc2NyaXB0
LCB0cmlnZ2VyIGxheW91dCwgb3IgZGlydHkgbGF5b3V0LgogCisjaWYgRU5BQkxFKExBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRFbmFibGVkKCkpIHsKKyAgICAgICAg
Zm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvKiBmcmFtZVZpZXcgPSBkb2N1bWVudC52aWV3KCkpCisgICAgICAgICAgICAgICAgZnJh
bWVWaWV3LT5kaXNwbGF5VmlldygpLnByZXBhcmVGb3JEaXNwbGF5KCk7CisgICAgICAgIH0pOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1l
bnQpIHsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKICAgICAg
ICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVDdXJzb3JJZk5lZWRlZCgpOwo=
</data>
<flag name="review"
          id="424132"
          type_id="1"
          status="+"
          setter="zalan"
    />
    <flag name="commit-queue"
          id="424134"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408678</attachid>
            <date>2020-09-13 21:00:51 -0700</date>
            <delta_ts>2020-09-14 10:08:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216466-20200913210050.patch</filename>
            <type>text/plain</type>
            <size>36666</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzMwZmM3ZWQ3OWFhMjM5
NDg2YmU2MDZjYzk5YjJlZTdhYTUyYjU5NS4uMWI1NjkyNjMzNTRjODE0YTI3YzY4N2UxM2JmMmY1
MWE2ODQyODMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIwLTA5LTEzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpcnN0IHN0ZXBz
IHRvd2FyZHMgTEZDIHBhaW50aW5nIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjQ2NgorCisgICAgICAgIFJldmlld2VkIGJ5IFph
bGFuIEJ1anRhcy4KKworICAgICAgICBHZXQgTEZDIHBhaW50aW5nIGluIFdlYktpdDIuCisKKyAg
ICAgICAgRGlzcGxheTo6TGF5ZXJDb250cm9sbGVyKCkgaXMgaW50ZW5kZWQgdG8gYmUgYSBjb250
cm9sbGVyIG9iamVjdCB0aGF0IG1ha2VzIGxheWVyaXphdGlvbgorICAgICAgICBkZWNpc2lvbnM7
IGZvciBub3csIGl0IGp1c3QgY3JlYXRlcyBzb21lIHJvb3QgbGF5ZXJzIGFuZCBob29rcyB0aGVt
IHVwIHZpYSBhdHRhY2hSb290R3JhcGhpY3NMYXllcigpLgorICAgICAgICBJdCBhbHNvIGNyZWF0
ZXMgYSBHcmFwaGljc0xheWVyQ2xpZW50IHRoYXQgcGFpbnRzIGJ5IGNhbGxpbmcgTGF5b3V0Q29u
dGV4dDo6cGFpbnQoKS4KKworICAgICAgICBEaXNwbGF5OjpWaWV3IGlzIHJlc3BvbnNpYmxlIGZv
ciB0aGUgZGlzcGxheSBvZiBhbiBMRkMtcmVuZGVyZWQgZG9jdW1lbnQuIEZyYW1lVmlldworICAg
ICAgICBoYXMgb25lLCBhbmQgdGhlIERpc3BsYXk6OlZpZXcgaGFzIGEgRGlzcGxheTo6TGF5ZXJD
b250cm9sbGVyKCkuIFRoZSBtaW5pbWFsIGhvb2t1cCBwb2ludHMgYXJlOgorICAgICAgICAxLiBQ
YWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkgdGVsbHMgZWFjaCBEaXNwbGF5OjpWaWV3IHRv
IHByZXBhcmVGb3JEaXNwbGF5KCkuCisgICAgICAgICAgIFRoaXMgaXMgd2hlcmUgd2UnbGwgZG8g
b25jZS1wZXItcmVuZGVyaW5nIGxheWVyIHVwZGF0aW5nLgorICAgICAgICAyLiBGcmFtZVZpZXc6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZSgpIHRlbGxzIHRoZSBEaXNwbGF5OjpW
aWV3KCkgdG8gZmx1c2gKKyAgICAgICAgICAgbGF5ZXJzLCB3aGljaCBqdXN0IHBhc3NlcyB0aHJv
dWdoIHRvIERpc3BsYXk6OkxheWVyQ29udHJvbGxlcigpLgorCisgICAgICAgIEZvciBub3cgd2Ug
anVzdCByZWx5IG9uIHRoZSBmYWN0IHRoYXQgRGlzcGxheTo6TGF5ZXJDb250cm9sbGVyKCkgY2Fs
bHMgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoKQorICAgICAgICBhZnRlciBSZW5kZXJMYXllckNv
bXBvc2l0b3IsIHJlcGxhY2luZyB0aGUgcm9vdCBsYXllciBjcmVhdGVkIGJ5IGV4aXN0aW5nIFJl
bmRlckxheWVyQ29tcG9zaXRvciBjb2RlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L0xh
eW91dFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpoYXNS
b290IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9s
bGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xs
ZXI6OlJvb3RMYXllckNsaWVudDo6Um9vdExheWVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkxheWVyQ29udHJvbGxlcjo6Um9vdExheWVyQ2xpZW50Ojpub3RpZnlGbHVzaFJl
cXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxheWVyQ29udHJvbGxlcjo6Um9v
dExheWVyQ2xpZW50OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkxheWVyQ29udHJvbGxlcjo6TGF5ZXJDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkxheWVyQ29udHJvbGxlcjo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjpmbHVzaExheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OnZpc2libGVSZWN0Rm9yTGF5ZXJGbHVz
aGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6
OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6Okxh
eWVyQ29udHJvbGxlcjo6ZW5zdXJlUm9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OkxheWVyQ29udHJvbGxlcjo6c2V0dXBSb290TGF5ZXJIaWVyYXJjaHkpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjp1cGRhdGVSb290TGF5ZXJHZW9tZXRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OmF0dGFjaFJv
b3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6Omdy
YXBoaWNzTGF5ZXJGYWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheS9EaXNw
bGF5TGF5ZXJDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
TGF5ZXJDb250cm9sbGVyOjp2aWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkxheWVyQ29udHJvbGxlcjo6cm9vdEdyYXBoaWNzTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjpjb250ZW50TGF5ZXIgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmNwcDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmguCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpWaWV3OjpWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OlZpZXc6On5WaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZpZXc6OmZyYW1lIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZpZXc6OnBhZ2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Vmlldzo6bGF5b3V0U3RhdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6Vmlldzo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6Vmlldzo6Zmx1c2hMYXllcnMpOgorICAgICAgICAqIGxheW91dC9k
aXNwbGF5L0Rpc3BsYXlWaWV3Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5oLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
Vmlldzo6ZnJhbWVWaWV3IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheVBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UGFpbnRlcjo6YWJz
b2x1dGVEaXNwbGF5Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OnBhaW50U3VidHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Ojpjb2xsZWN0UGFpbnRSb290c0FuZENvbnRl
bnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OmFic29sdXRlRGlzcGxheUJveCk6
IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmg6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3Bw
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0ZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6ZXhpc3RpbmdEaXNwbGF5VmlldyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OmRpc3BsYXlWaWV3KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5o
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0Fm
dGVyVXBkYXRlUmVuZGVyaW5nKToKKwogMjAyMC0wOS0xMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRyZXNzIGEgcG9zdC1jb21taXQgcmV2aWV3
IGNvbW1lbnQgYWZ0ZXIgcjI2Njg4NwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3NTEyNTdiN2Fi
MDJlYzI0YjFjYWYxNzk3ZTRkNTllMDkyOTExZWQzLi45YTMwN2I5NjYyYmI5NDk0ZWI4YzdkMWVj
ZWU1ZTUxY2U3OWE0NWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTAzLDYgKzEwMyw3IEBA
IHNldChXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVf
RElSfS9sYXlvdXQiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dC9ibG9ja2Zvcm1hdHRpbmci
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVy
IgorICAgICIke1dFQkNPUkVfRElSfS9sYXlvdXQvZGlzcGxheSIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vbGF5b3V0L2Rpc3BsYXl0cmVlIgogICAgICIke1dFQkNPUkVfRElSfS9sYXlvdXQvZmxvYXRz
IgogICAgICIke1dFQkNPUkVfRElSfS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZyIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IGE1NGMyYzBlNDYxZDNlNGRhMjY4MjI5OGRlNDg3YjdlZmEwNWQ3MGUuLmE1
NWExOGQzMjA0OGU3NmU2NTFlMDA2MDVmODBiMDVhMzI3YTExZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtNjkzLDYgKzY5Myw5IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBsYXlvdXQvTGF5b3V0VW5pdHMuaAogICAgIGxheW91dC9NYXJnaW5UeXBlcy5oCiAK
KyAgICBsYXlvdXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmgKKyAgICBsYXlvdXQv
ZGlzcGxheS9EaXNwbGF5Vmlldy5oCisKICAgICBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJv
eC5oCiAgICAgbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlJbmxpbmVDb250ZW50LmgKICAgICBs
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZVJlY3QuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAw
ODcyMTYwNjYyMDZmZWNlMDFhMDBlZTViNDM2NTQyMjliMmFhOWU0Li4xNTRiZGY5MDZlYzI1YzVj
OGQxZDE3NWZmODczZjBiYmY4ZWFiYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTQzMiw2ICsxNDMy
LDggQEAgbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAogbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCiBs
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmNwcAogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy90YWJsZXdyYXBwZXIvVGFi
bGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKK2xheW91dC9kaXNwbGF5
L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwCitsYXlvdXQvZGlzcGxheS9EaXNwbGF5Vmlldy5j
cHAKIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcAogbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlJbmxpbmVDb250ZW50LmNwcAogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWlu
dGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDAwZDU5NTM5OWRlNWNhMDUxOGYyMTA1MjJlZjQzMDUyYjFlODEwMmYuLjM4
NzJmODAxZGZjMmYwODE4YmQ1YmI2NGFhZmJhNmJiN2FmMzc0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYwNzUsNiArNjA3
NSwxMCBAQAogCQkwRkY4MzVCRjFFRTM1NERBMDA4QjRDQzcgLyogRE9NUXVhZC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gRE9NUXVhZC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGRjgzNUMwMUVFMzU0REEwMDhCNENDNyAvKiBET01RdWFkSW5pdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01RdWFkSW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkY4MzVDMTFFRTM1NERBMDA4QjRDQzcgLyogRE9NUXVhZEluaXQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVF1YWRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZGQjREQTEyNTBFQTAwRTAwODZCOTUyIC8qIERpc3BsYXlMYXllckNvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxheWVyQ29udHJvbGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkZCNERBMjI1MEVBMDBGMDA4NkI5NTIgLyogRGlzcGxh
eUxheWVyQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGF5ZXJDb250
cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGQjREQTMyNTBFQTM3
MDAwODZCOTUyIC8qIERpc3BsYXlWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlWaWV3Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRkI0REE0MjUwRUEzNzAwMDg2Qjk1MiAv
KiBEaXNwbGF5Vmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5Vmlldy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkQ0NUE3MjQzQkYyNTcwMDBENEJFQSAvKiBT
Y3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGlu
Z1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZGRDQ1QTgyNDNCRjI1NzAwMEQ0QkVBIC8qIFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkQ0RDVFMTg2NTFGQTMwMDUx
MkY2RSAvKiBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc0MDEsMTAgKzE3NDA1LDIyIEBACiAJCQlwYXRoID0g
ZGlzcGxheWxpc3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMEZGQjRE
QTAyNTBFOUZDNDAwODZCOTUyIC8qIGRpc3BsYXkgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTBGRkI0REEyMjUwRUEwMEYwMDg2Qjk1MiAvKiBEaXNwbGF5
TGF5ZXJDb250cm9sbGVyLmNwcCAqLywKKwkJCQkwRkZCNERBMTI1MEVBMDBFMDA4NkI5NTIgLyog
RGlzcGxheUxheWVyQ29udHJvbGxlci5oICovLAorCQkJCTBGRkI0REE0MjUwRUEzNzAwMDg2Qjk1
MiAvKiBEaXNwbGF5Vmlldy5jcHAgKi8sCisJCQkJMEZGQjREQTMyNTBFQTM3MDAwODZCOTUyIC8q
IERpc3BsYXlWaWV3LmggKi8sCisJCQkpOworCQkJcGF0aCA9IGRpc3BsYXk7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OwogCQkxMTVDRkE2NjIwOEFGNzIwMDAxRTY5OTEgLyogbGF5
b3V0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxMTVD
RkE5OTIwOEJDMDlBMDAxRTY5OTEgLyogYmxvY2tmb3JtYXR0aW5nICovLAorCQkJCTBGRkI0REEw
MjUwRTlGQzQwMDg2Qjk1MiAvKiBkaXNwbGF5ICovLAogCQkJCTExOTlGQTU4MjA4RTNDNEMwMDIz
NThDQyAvKiBkaXNwbGF5dHJlZSAqLywKIAkJCQk2RkNGQzA1NTIxMkRBQ0MyMDA3Njk1RDIgLyog
ZmxvYXRzICovLAogCQkJCTExNUNGQTlBMjA4QkMxNDAwMDFFNjk5MSAvKiBpbmxpbmVmb3JtYXR0
aW5nICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaAppbmRleCA2ZWU1NTQzN2NjNmJl
ZmUzMzI2Mzg4YjQ5ZjUyYjg4ZDNhNzhjMDg0Li41NjAwYjllOTA1NjcwYmY2M2UyMGU1YWZhNzU2
OGNhMWQyZjRiZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3Rh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaApAQCAtODIsNiAr
ODIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbkxpbWl0ZWRRdWlya3NNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9xdWlya3NNb2RlID09IFF1aXJrc01vZGU6OkxpbWl0ZWQ7IH0KICAgICBib29sIGlu
Tm9RdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9xdWlya3NNb2RlID09IFF1aXJrc01vZGU6
Ok5vOyB9CiAKKyAgICBib29sIGhhc1Jvb3QoKSBjb25zdCB7IHJldHVybiAhIW1fcm9vdENvbnRh
aW5lcjsgfQogICAgIGNvbnN0IENvbnRhaW5lckJveCYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuICpt
X3Jvb3RDb250YWluZXI7IH0KIAogICAgIC8vIExGQyBpbnRlZ3JhdGlvbiBvbmx5LiBGdWxsIExG
QyBoYXMgcHJvcGVyIElDQiBhY2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MDM4
NGJlZDQ0MjZhYTAyMjM1OGY4NzdmZDRkZTE4ZjZiYjE2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcApA
QCAtMCwwICsxLDIwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJEaXNwbGF5TGF5ZXJDb250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1B
VFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNs
aWVudC5oIgorI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKKyNpbmNsdWRlICJEaXNwbGF5UGFpbnRl
ci5oIgorI2luY2x1ZGUgIkRpc3BsYXlWaWV3LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCisjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorCisj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIERpc3BsYXkgeworCitMYXllckNvbnRyb2xsZXI6OlJvb3RMYXllckNsaWVudDo6
Um9vdExheWVyQ2xpZW50KExheWVyQ29udHJvbGxlciYgbGF5ZXJDb250cm9sbGVyKQorICAgIDog
bV9sYXllckNvbnRyb2xsZXIobGF5ZXJDb250cm9sbGVyKQoreworfQorCit2b2lkIExheWVyQ29u
dHJvbGxlcjo6Um9vdExheWVyQ2xpZW50Ojpub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IEdyYXBo
aWNzTGF5ZXIqKQoreworICAgIG1fbGF5ZXJDb250cm9sbGVyLnNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKCk7Cit9CisKK3ZvaWQgTGF5ZXJDb250cm9sbGVyOjpSb290TGF5ZXJDbGllbnQ6OnBhaW50
Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkaXJ0eVJlY3QsIEdyYXBoaWNzTGF5ZXJQYWludEJlaGF2
aW9yKQoreworICAgIEFTU0VSVF9VTlVTRUQobGF5ZXIsIGxheWVyID09IG1fbGF5ZXJDb250cm9s
bGVyLmNvbnRlbnRMYXllcigpKTsKKworICAgIC8vIEZJWE1FOiBUZW1wb3Jhcnk7IG9uY2Ugd2Ug
ZG8gc2Nyb2xsaW5nIHRoaXMgcm9vdCBsYXllciB3b24ndCBwYWludCBhbnl0aGluZy4KKyAgICBp
ZiAoYXV0byogbGF5b3V0U3RhdGUgPSBtX2xheWVyQ29udHJvbGxlci52aWV3KCkubGF5b3V0U3Rh
dGUoKSkKKyAgICAgICAgTGF5b3V0OjpMYXlvdXRDb250ZXh0OjpwYWludCgqbGF5b3V0U3RhdGUs
IGNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QoZGlydHlSZWN0KSk7Cit9CisKK1dURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChMYXllckNvbnRyb2xsZXIpOworCitMYXllckNvbnRyb2xsZXI6Okxh
eWVyQ29udHJvbGxlcihWaWV3JiB2aWV3KQorICAgIDogbV92aWV3KHZpZXcpCisgICAgLCBtX3Jv
b3RMYXllckNsaWVudCgqdGhpcykKK3sKK30KKworTGF5ZXJDb250cm9sbGVyOjp+TGF5ZXJDb250
cm9sbGVyKCkgPSBkZWZhdWx0OworCit2b2lkIExheWVyQ29udHJvbGxlcjo6cHJlcGFyZUZvckRp
c3BsYXkoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCit7CisgICAgaWYg
KCFsYXlvdXRTdGF0ZS5oYXNSb290KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHJv
b3RMYXlvdXRCb3ggPSBsYXlvdXRTdGF0ZS5yb290KCk7CisgICAgaWYgKCFyb290TGF5b3V0Qm94
LmZpcnN0Q2hpbGQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGxheW91dFN0YXRl
Lmhhc0Rpc3BsYXlCb3gocm9vdExheW91dEJveCkpOworCisgICAgYXV0byB2aWV3U2l6ZSA9IGxh
eW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocm9vdExheW91dEJveCkuc2l6ZSgpOwor
ICAgIGF1dG8gY29udGVudFNpemUgPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KCpyb290TGF5b3V0Qm94LmZpcnN0Q2hpbGQoKSkuc2l6ZSgpOworICAgIAorICAgIC8vIEZJWE1F
OiBVc2luZyB0aGUgZmlyc3RDaGlsZCgpIHNpemUgd29uJ3QgYmUgY29ycmVjdCB1bnRpbCB3ZSBj
b21wdXRlIG92ZXJmbG93IGNvcnJlY3RseSwKKyAgICBjb250ZW50U2l6ZS5jbGFtcFRvTWluaW11
bVNpemUodmlld1NpemUpOworCisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0
TGF5b3V0LCBzdHJlYW0gPDwgIkxheWVyQ29udHJvbGxlcjo6cHJlcGFyZUZvckRpc3BsYXkgLSB2
aWV3U2l6ZSAiIDw8IHZpZXdTaXplIDw8ICIgY29udGVudFNpemUgIiA8PCBjb250ZW50U2l6ZSk7
CisKKyAgICBlbnN1cmVSb290TGF5ZXIodmlld1NpemUsIGNvbnRlbnRTaXplKTsKKyAgICAKKyAg
ICAvLyBGSVhNRTogRm9yIG5vdywgcmVwYWludCB0aGUgd29ybGQgb24gZXZlcnkgdXBkYXRlLgor
ICAgIG1fY29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAKKyAgICBhdXRvJiBz
ZXR0aW5ncyA9IG1fdmlldy5mcmFtZSgpLnNldHRpbmdzKCk7CisgICAgYm9vbCBzaG93RGVidWdC
b3JkZXJzID0gc2V0dGluZ3Muc2hvd0RlYnVnQm9yZGVycygpOworICAgIGJvb2wgc2hvd1JlcGFp
bnRDb3VudGVyID0gc2V0dGluZ3Muc2hvd1JlcGFpbnRDb3VudGVyKCk7CisgICAgYm9vbCBhY2Nl
bGVyYXRlZERyYXdpbmdFbmFibGVkID0gc2V0dGluZ3MuYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxl
ZCgpOworCisgICAgbV9yb290TGF5ZXItPnNldFNob3dEZWJ1Z0JvcmRlcihzaG93RGVidWdCb3Jk
ZXJzKTsKKyAgICBtX2NvbnRlbnRIb3N0TGF5ZXItPnNldFNob3dEZWJ1Z0JvcmRlcihzaG93RGVi
dWdCb3JkZXJzKTsKKworICAgIG1fY29udGVudExheWVyLT5zZXRTaG93RGVidWdCb3JkZXIoc2hv
d0RlYnVnQm9yZGVycyk7CisgICAgbV9jb250ZW50TGF5ZXItPnNldFNob3dSZXBhaW50Q291bnRl
cihzaG93UmVwYWludENvdW50ZXIpOworICAgIG1fY29udGVudExheWVyLT5zZXRBY2NlbGVyYXRl
c0RyYXdpbmcoYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCk7Cit9CisKK3ZvaWQgTGF5ZXJDb250
cm9sbGVyOjpmbHVzaExheWVycygpCit7CisgICAgaWYgKCFtX3Jvb3RMYXllcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgRmxvYXRSZWN0IHZpc2libGVSZWN0ID0gdmlzaWJsZVJlY3RGb3JMYXll
ckZsdXNoaW5nKCk7CisgICAgbV9yb290TGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZSh2aXNp
YmxlUmVjdCk7Cit9CisKK0Zsb2F0UmVjdCBMYXllckNvbnRyb2xsZXI6OnZpc2libGVSZWN0Rm9y
TGF5ZXJGbHVzaGluZygpIGNvbnN0Cit7CisgICAgY29uc3QgYXV0byYgZnJhbWVWaWV3ID0gbV92
aWV3LmZyYW1lVmlldygpOworICAgIHJldHVybiBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0
KCk7Cit9CisKK3ZvaWQgTGF5ZXJDb250cm9sbGVyOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgp
Cit7CisgICAgYXV0byBwYWdlID0gbV92aWV3LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAg
ICAgIHJldHVybjsKKworICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7Cit9CisK
K3ZvaWQgTGF5ZXJDb250cm9sbGVyOjplbnN1cmVSb290TGF5ZXIoTGF5b3V0U2l6ZSB2aWV3U2l6
ZSwgTGF5b3V0U2l6ZSBjb250ZW50U2l6ZSkKK3sKKyAgICBpZiAobV9yb290TGF5ZXIpIHsKKyAg
ICAgICAgdXBkYXRlUm9vdExheWVyR2VvbWV0cnkodmlld1NpemUsIGNvbnRlbnRTaXplKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNldHVwUm9vdExheWVySGllcmFyY2h5KCk7Cisg
ICAgdXBkYXRlUm9vdExheWVyR2VvbWV0cnkodmlld1NpemUsIGNvbnRlbnRTaXplKTsKKworICAg
IGF0dGFjaFJvb3RMYXllcigpOworfQorCit2b2lkIExheWVyQ29udHJvbGxlcjo6c2V0dXBSb290
TGF5ZXJIaWVyYXJjaHkoKQoreworICAgIC8vIEZJWE1FOiBUaGlzIGxheWVyIGhpZXJhcmNoeSBp
cyBqdXN0IGVub3VnaCB0byBnZXQgdG9wQ29udGVudEluc2V0IHdvcmtpbmcuCisgICAgbV9yb290
TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgbV9y
b290TGF5ZXJDbGllbnQpOworICAgIG1fcm9vdExheWVyLT5zZXROYW1lKCJkaXNwbGF5IHJvb3Qi
KTsKKyAgICBtX3Jvb3RMYXllci0+c2V0UG9zaXRpb24oeyB9KTsKKyAgICBtX3Jvb3RMYXllci0+
c2V0QW5jaG9yUG9pbnQoeyB9KTsKKworICAgIG1fY29udGVudEhvc3RMYXllciA9IEdyYXBoaWNz
TGF5ZXI6OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCBtX3Jvb3RMYXllckNsaWVudCk7
CisgICAgbV9jb250ZW50SG9zdExheWVyLT5zZXROYW1lKCJjb250ZW50IGhvc3QiKTsKKyAgICBt
X2NvbnRlbnRIb3N0TGF5ZXItPnNldEFuY2hvclBvaW50KHsgfSk7CisKKyAgICBtX2NvbnRlbnRM
YXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCBtX3Jv
b3RMYXllckNsaWVudCk7CisgICAgbV9jb250ZW50TGF5ZXItPnNldE5hbWUoImNvbnRlbnQiKTsK
KyAgICBtX2NvbnRlbnRMYXllci0+c2V0UG9zaXRpb24oeyB9KTsKKyAgICBtX2NvbnRlbnRMYXll
ci0+c2V0QW5jaG9yUG9pbnQoeyB9KTsKKyAgICBtX2NvbnRlbnRMYXllci0+c2V0RHJhd3NDb250
ZW50KHRydWUpOworICAgIAorICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZCgqbV9jb250ZW50SG9z
dExheWVyKTsKKyAgICBtX2NvbnRlbnRIb3N0TGF5ZXItPmFkZENoaWxkKCptX2NvbnRlbnRMYXll
cik7Cit9CisKK3ZvaWQgTGF5ZXJDb250cm9sbGVyOjp1cGRhdGVSb290TGF5ZXJHZW9tZXRyeShM
YXlvdXRTaXplIHZpZXdTaXplLCBMYXlvdXRTaXplIGNvbnRlbnRTaXplKQoreworICAgIG1fcm9v
dExheWVyLT5zZXRTaXplKHZpZXdTaXplKTsKKworICAgIGZsb2F0IHRvcENvbnRlbnRJbnNldCA9
IG1fdmlldy5mcmFtZVZpZXcoKS50b3BDb250ZW50SW5zZXQoKTsKKyAgICBtX2NvbnRlbnRIb3N0
TGF5ZXItPnNldFBvc2l0aW9uKHsgMCwgdG9wQ29udGVudEluc2V0IH0pOworICAgIG1fY29udGVu
dEhvc3RMYXllci0+c2V0U2l6ZSh2aWV3U2l6ZSk7CisKKyAgICBtX2NvbnRlbnRMYXllci0+c2V0
U2l6ZShjb250ZW50U2l6ZSk7Cit9CisKK3ZvaWQgTGF5ZXJDb250cm9sbGVyOjphdHRhY2hSb290
TGF5ZXIoKQoreworICAgIGF1dG8gcGFnZSA9IG1fdmlldy5wYWdlKCk7CisgICAgaWYgKCFwYWdl
KQorICAgICAgICByZXR1cm47CisKKyAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5hdHRhY2hS
b290R3JhcGhpY3NMYXllcihtX3ZpZXcuZnJhbWUoKSwgcm9vdEdyYXBoaWNzTGF5ZXIoKSk7Cit9
CisKK0dyYXBoaWNzTGF5ZXJGYWN0b3J5KiBMYXllckNvbnRyb2xsZXI6OmdyYXBoaWNzTGF5ZXJG
YWN0b3J5KCkgY29uc3QKK3sKKyAgICBhdXRvIHBhZ2UgPSBtX3ZpZXcucGFnZSgpOworICAgIGlm
ICghcGFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCkuZ3JhcGhpY3NMYXllckZhY3RvcnkoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgRGlzcGxheQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKExB
WU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjU1OThkZjVj
MTNmMWEzMTM3ODJhN2NiMGM0YmU5MDg4MzUzMzg4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuaApAQCAtMCww
ICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIkRpc3BsYXlSZWN0LmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkxheW91dFVuaXRzLmgiCisjaW5jbHVkZSA8
d3RmL0lzb01hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNz
TGF5ZXI7CitjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsKKworbmFtZXNwYWNlIExheW91dCB7
CitjbGFzcyBMYXlvdXRTdGF0ZTsKK30KKworbmFtZXNwYWNlIERpc3BsYXkgeworCitjbGFzcyBW
aWV3OworCisvLyBBIGNvbnRyb2xsZXIgb2JqZWN0IHRoYXQgbWFrZXMgbGF5ZXJpemF0aW9uIGRl
Y2lzaW9ucyBmb3IgYSBkaXNwbGF5IHRyZWUsIGZvciBhIHNpbmdsZSBkb2N1bWVudC4KK2NsYXNz
IExheWVyQ29udHJvbGxlciB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChMYXllckNvbnRy
b2xsZXIpOworcHVibGljOgorICAgIExheWVyQ29udHJvbGxlcihWaWV3Jik7CisgICAgfkxheWVy
Q29udHJvbGxlcigpOworICAgIAorICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoY29uc3QgTGF5
b3V0OjpMYXlvdXRTdGF0ZSYpOworICAgIHZvaWQgZmx1c2hMYXllcnMoKTsKKworICAgIGNvbnN0
IFZpZXcmIHZpZXcoKSBjb25zdCB7IHJldHVybiBtX3ZpZXc7IH0KKworcHJpdmF0ZToKKyAgICB2
b2lkIGVuc3VyZVJvb3RMYXllcihMYXlvdXRTaXplIHZpZXdTaXplLCBMYXlvdXRTaXplIGNvbnRl
bnRTaXplKTsKKyAgICB2b2lkIGF0dGFjaFJvb3RMYXllcigpOworICAgIHZvaWQgc2V0dXBSb290
TGF5ZXJIaWVyYXJjaHkoKTsKKyAgICB2b2lkIHVwZGF0ZVJvb3RMYXllckdlb21ldHJ5KExheW91
dFNpemUgdmlld1NpemUsIExheW91dFNpemUgY29udGVudFNpemUpOworICAgIHZvaWQgc2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAKKyAgICBHcmFwaGljc0xheWVyKiByb290R3JhcGhp
Y3NMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOyB9CisgICAgR3JhcGhp
Y3NMYXllciogY29udGVudExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TGF5ZXIuZ2V0
KCk7IH0KKworICAgIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgp
IGNvbnN0OworCisgICAgRmxvYXRSZWN0IHZpc2libGVSZWN0Rm9yTGF5ZXJGbHVzaGluZygpIGNv
bnN0OworCisgICAgY2xhc3MgUm9vdExheWVyQ2xpZW50IDogcHVibGljIEdyYXBoaWNzTGF5ZXJD
bGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgUm9vdExheWVyQ2xpZW50KExheWVyQ29udHJv
bGxlciYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgLy8gR3JhcGhpY3NMYXllckNsaWVudCBp
bXBsZW1lbnRhdGlvbgorICAgICAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3Jh
cGhpY3NMYXllciopIGZpbmFsOworICAgICAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3Jh
cGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNz
TGF5ZXJQYWludEJlaGF2aW9yKSBmaW5hbDsKKworICAgICAgICBMYXllckNvbnRyb2xsZXImIG1f
bGF5ZXJDb250cm9sbGVyOworICAgIH07CisKKyAgICBWaWV3JiBtX3ZpZXc7CisgICAgUm9vdExh
eWVyQ2xpZW50IG1fcm9vdExheWVyQ2xpZW50OworCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXI+
IG1fcm9vdExheWVyOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyPiBtX2NvbnRlbnRIb3N0TGF5
ZXI7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXI+IG1fY29udGVudExheWVyOworfTsKKworfSAv
LyBuYW1lc3BhY2UgRGlzcGxheQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5Vmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZGlzcGxheS9EaXNwbGF5Vmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFiYTU4MGNlM2FhMTRkYmUz
MTQ2YWVhNjZhYTczNGQ3OTcwN2NmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlWaWV3LmgiCisKKyNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIkZyYW1lLmgi
CisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3TGF5b3V0Q29udGV4
dC5oIgorI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKKyNpbmNsdWRlICJMYXlvdXRTdGF0ZS5o
IgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheSB7CisKK1dURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChWaWV3KTsKKworVmlldzo6VmlldyhGcmFtZVZpZXcmIGZyYW1lVmll
dykKKyAgICA6IG1fZnJhbWVWaWV3KGZyYW1lVmlldykKKyAgICAsIG1fbGF5ZXJDb250cm9sbGVy
KCp0aGlzKQoreworfQorCitWaWV3Ojp+VmlldygpCit7Cit9CisKK0ZyYW1lJiBWaWV3OjpmcmFt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWVWaWV3LmZyYW1lKCk7Cit9CisKK1BhZ2Uq
IFZpZXc6OnBhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2ZyYW1lVmlldy5mcmFtZSgpLnBh
Z2UoKTsKK30KKworY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSogVmlldzo6bGF5b3V0U3RhdGUo
KSBjb25zdAoreworICAgIHJldHVybiBtX2ZyYW1lVmlldy5sYXlvdXRDb250ZXh0KCkubGF5b3V0
Rm9ybWF0dGluZ1N0YXRlKCk7Cit9CisKK3ZvaWQgVmlldzo6cHJlcGFyZUZvckRpc3BsYXkoKQor
eworICAgIGF1dG8qIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKKyAgICBpZiAo
IWxheW91dFN0YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xheWVyQ29udHJvbGxlci5w
cmVwYXJlRm9yRGlzcGxheSgqbGF5b3V0U3RhdGUpOworfQorCit2b2lkIFZpZXc6OmZsdXNoTGF5
ZXJzKCkKK3sKKyAgICBtX2xheWVyQ29udHJvbGxlci5mbHVzaExheWVycygpOworfQorCisKKwor
fSAvLyBuYW1lc3BhY2UgRGlzcGxheQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5Vmlldy5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Rpc3BsYXkvRGlzcGxheVZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzhkZmFmZTU1MmVhZjJkNTkx
MzE4YTNmNTg0YmU3ODE2MzRiYTFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXkvRGlzcGxheVZpZXcuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkK
KworI2luY2x1ZGUgIkRpc3BsYXlMYXllckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJEaXNwbGF5
UmVjdC5oIgorI2luY2x1ZGUgIkxheW91dFVuaXRzLmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Yy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgRnJhbWVW
aWV3OworY2xhc3MgUGFnZTsKKworbmFtZXNwYWNlIExheW91dCB7CitjbGFzcyBMYXlvdXRTdGF0
ZTsKK2NsYXNzIExheW91dFRyZWVDb250ZW50OworfQorCituYW1lc3BhY2UgRGlzcGxheSB7CisK
Ky8vIFRoZSByb290IG9iamVjdCB3aGljaCByZW5kZXJzIGEgZGlzcGxheSB0cmVlIGZvciBhIHNp
bmdsZSBkb2N1bWVudC4KK2NsYXNzIFZpZXcgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
Vmlldyk7CitwdWJsaWM6CisgICAgVmlldyhGcmFtZVZpZXcmKTsKKyAgICB+VmlldygpOworICAg
IAorICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKTsKKyAgICB2b2lkIGZsdXNoTGF5ZXJzKCk7
CisKKyAgICBQYWdlKiBwYWdlKCkgY29uc3Q7CisgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lVmlldzsgfQorICAgIEZyYW1lJiBmcmFtZSgpIGNvbnN0Owor
CisgICAgY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUoKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBGcmFtZVZpZXcmIG1fZnJhbWVWaWV3OworICAgIExheWVyQ29udHJvbGxl
ciBtX2xheWVyQ29udHJvbGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIERpc3BsYXkKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19D
T05URVhUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rp
c3BsYXlQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNw
bGF5UGFpbnRlci5jcHAKaW5kZXggMGQ1MWQzYTc4ZjdiNGY5NDZhMmMzOTEzYjYzMWYzNWRjODU2
NGFhNC4uNDZmY2Y0ZmI1NGExMGE2NmQ3YjM2ZDk4YjU2OTgwZjdiNDNjNDQwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3Bw
CkBAIC0xNDEsNyArMTQxLDcgQEAgc3RhdGljIHZvaWQgcGFpbnRJbmxpbmVDb250ZW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgTGF5b3V0UG9pbnQgYWJzb2x1dGVPZmYKICAgICB9CiB9CiAK
LXN0YXRpYyBCb3ggYWJzb2x1dGVEaXNwbGF5Qm94KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94VG9QYWludCkKK0JveCBQ
YWludGVyOjphYnNvbHV0ZURpc3BsYXlCb3goY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3hUb1BhaW50KQogewogICAgIC8v
IFNob3VsZCBuZXZlciByZWFsbHkgaGFwcGVuIGJ1dCB0YWJsZSBjb2RlIGlzIHdheSB0b28gaW5j
b21wbGV0ZS4KICAgICBpZiAoIWxheW91dFN0YXRlLmhhc0Rpc3BsYXlCb3gobGF5b3V0Qm94VG9Q
YWludCkpCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRTdWJ0cmVlKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGEKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCFsYXlvdXRTdGF0ZS5oYXNEaXNwbGF5Qm94KGxh
eW91dEJveCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gYWJzb2x1dGVEaXNw
bGF5Qm94ID0gRGlzcGxheTo6YWJzb2x1dGVEaXNwbGF5Qm94KGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpOworICAgICAgICBhdXRvIGFic29sdXRlRGlzcGxheUJveCA9IFBhaW50ZXI6OmFic29sdXRl
RGlzcGxheUJveChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKICAgICAgICAgaWYgKCFkaXJ0eVJl
Y3QuaW50ZXJzZWN0cyhzbmFwcGVkSW50UmVjdChhYnNvbHV0ZURpc3BsYXlCb3gucmVjdCgpKSkp
CiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI0OCw3ICsyNDgsNyBAQCBzdGF0aWMgTGF5b3V0
UmVjdCBjb2xsZWN0UGFpbnRSb290c0FuZENvbnRlbnRSZWN0KGNvbnN0IExheW91dDo6TGF5b3V0
U3RhdGUmIGxheQogICAgICAgICAgICAgaWYgKGlzUGFpbnRSb290Q2FuZGlkYXRlKGxheW91dEJv
eCkpCiAgICAgICAgICAgICAgICAgYXBwZW5kUGFpbnRSb290KGxheW91dEJveCk7CiAgICAgICAg
ICAgICBpZiAobGF5b3V0U3RhdGUuaGFzRGlzcGxheUJveChsYXlvdXRCb3gpKQotICAgICAgICAg
ICAgICAgIGNvbnRlbnRSZWN0LnVuaXRlSWZOb25aZXJvKERpc3BsYXk6OmFic29sdXRlRGlzcGxh
eUJveChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KS5yZWN0KCkpOworICAgICAgICAgICAgICAgIGNv
bnRlbnRSZWN0LnVuaXRlSWZOb25aZXJvKFBhaW50ZXI6OmFic29sdXRlRGlzcGxheUJveChsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KS5yZWN0KCkpOwogICAgICAgICAgICAgaWYgKCFpczxMYXlvdXQ6
OkNvbnRhaW5lckJveD4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8TGF5b3V0OjpDb250YWluZXJC
b3g+KGxheW91dEJveCkuaGFzQ2hpbGQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGxheW91dEJveExpc3QuYXBwZW5kKGRvd25jYXN0PExheW91dDo6Q29udGFpbmVyQm94
PihsYXlvdXRCb3gpLmZpcnN0Q2hpbGQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5oCmluZGV4IDE3NWYxOGNlNWYyOTQ3N2Q1YTM0
MGE1YmE5NWExNmJjNjJjMDUwZjEuLmJmMTAwZjk1YTVkMmJjYmU0MmM0ZDM5Nzc1YTU2YzA1YTVk
NDg0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNw
bGF5UGFpbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNw
bGF5UGFpbnRlci5oCkBAIC00Miw2ICs0Miw4IEBAIGNsYXNzIFBhaW50ZXIgewogcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIHBhaW50KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwogICAgIHN0YXRpYyB2b2lkIHBh
aW50SW5saW5lRmxvdyhjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0
Jik7CisKKyAgICBzdGF0aWMgQm94IGFic29sdXRlRGlzcGxheUJveChjb25zdCBMYXlvdXQ6Okxh
eW91dFN0YXRlJiwgY29uc3QgTGF5b3V0OjpCb3gmKTsgICAgCiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
QnVpbGRlci5jcHAKaW5kZXggOTM1OWMyYjdmZDMyZWI3NmJlODMyYTY5MDU0MmE2NzIwNzMwMzcz
NC4uODE4ZjgyNzIxMDJmOGFiMGExN2E1Njg4ZWJkNTYwM2FiNDlmYmIyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmVCdWlsZGVyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZsb2F0aW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5
b3V0Qm94LmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUg
IlRleHRVdGlsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAppbmRleCBjNzcwNDRhMDU5ZGY4Y2U5Y2Y2YWExOThkZmExYmI1YzU4YzUxMjA0Li4xMzhl
OGY4OTY5ZGE5YTZhOWE0MGE1NDdiMTQ1OTNmMjljODgwZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCkBAIC0xMzAsNiArMTMwLDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKExBWU9V
VF9GT1JNQVRUSU5HX0NPTlRFWFQpCisjaW5jbHVkZSAiRGlzcGxheVZpZXcuaCIKICNpbmNsdWRl
ICJMYXlvdXRDb250ZXh0LmgiCiAjZW5kaWYKIApAQCAtOTU2LDYgKzk1NywxNCBAQCB2b2lkIEZy
YW1lVmlldzo6dXBkYXRlU2Nyb2xsaW5nQ29vcmRpbmF0b3JTY3JvbGxTbmFwUHJvcGVydGllcygp
IGNvbnN0CiAKIGJvb2wgRnJhbWVWaWV3OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzRnJh
bWUoY29uc3QgRnJhbWUmIHJvb3RGcmFtZUZvckZsdXNoKQogeworI2lmIEVOQUJMRShMQVlPVVRf
Rk9STUFUVElOR19DT05URVhUKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLmxheW91dEZvcm1hdHRpbmdDb250ZXh0RW5hYmxlZCgpKSB7CisgICAgICAg
IGlmIChhdXRvKiB2aWV3ID0gZXhpc3RpbmdEaXNwbGF5VmlldygpKQorICAgICAgICAgICAgdmll
dy0+Zmx1c2hMYXllcnMoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisK
ICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwogICAgIGlm
ICghcmVuZGVyVmlldykKICAgICAgICAgcmV0dXJuIHRydWU7IC8vIFdlIGRvbid0IHdhbnQgdG8g
a2VlcCB0cnlpbmcgdG8gdXBkYXRlIGxheWVycyBpZiB3ZSBoYXZlIG5vIHJlbmRlcmVyLgpAQCAt
NTM0MCw2ICs1MzQ5LDIwIEBAIFJlbmRlclZpZXcqIEZyYW1lVmlldzo6cmVuZGVyVmlldygpIGNv
bnN0CiAgICAgcmV0dXJuIGZyYW1lKCkuY29udGVudFJlbmRlcmVyKCk7CiB9CiAKKyNpZiBFTkFC
TEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKK0Rpc3BsYXk6OlZpZXcqIEZyYW1lVmlldzo6
ZXhpc3RpbmdEaXNwbGF5VmlldygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGlzcGxheVZpZXcu
Z2V0KCk7Cit9CisKK0Rpc3BsYXk6OlZpZXcmIEZyYW1lVmlldzo6ZGlzcGxheVZpZXcoKQorewor
ICAgIGlmICghbV9kaXNwbGF5VmlldykKKyAgICAgICAgbV9kaXNwbGF5VmlldyA9IG1ha2VVbmlx
dWU8RGlzcGxheTo6Vmlldz4oKnRoaXMpOworICAgIHJldHVybiAqbV9kaXNwbGF5VmlldzsKK30K
KyNlbmRpZgorCiBpbnQgRnJhbWVWaWV3OjptYXBGcm9tTGF5b3V0VG9DU1NVbml0cyhMYXlvdXRV
bml0IHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiB2YWx1ZSAvIChmcmFtZSgpLnBhZ2Vab29t
RmFjdG9yKCkgKiBmcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAppbmRleCBkN2U4ZGI5YWY0MDNjZTU2ODI1ZDgyOTY1OGRiZDdhNDBhNDcyNGM4Li44MzVi
MDBlMDljNTMyODdiZTE5YWZkODcxNTEzNzVkODMyNTdmMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKQEAgLTc0LDYgKzc0LDEyIEBAIGNsYXNzIFJlbmRlclZpZXc7CiBjbGFzcyBSZW5kZXJX
aWRnZXQ7CiBjbGFzcyBTY3JvbGxpbmdDb29yZGluYXRvcjsKIAorI2lmIEVOQUJMRShMQVlPVVRf
Rk9STUFUVElOR19DT05URVhUKQorbmFtZXNwYWNlIERpc3BsYXkgeworY2xhc3MgVmlldzsKK30K
KyNlbmRpZgorCiBlbnVtIGNsYXNzIEZyYW1lRmxhdHRlbmluZzsKIAogUGFnaW5hdGlvbjo6TW9k
ZSBwYWdpbmF0aW9uTW9kZUZvclJlbmRlclN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJik7CkBAIC0x
MDEsNiArMTA3LDExIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlbmRlclZpZXcq
IHJlbmRlclZpZXcoKSBjb25zdDsKIAorI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05U
RVhUKQorICAgIERpc3BsYXk6OlZpZXcqIGV4aXN0aW5nRGlzcGxheVZpZXcoKSBjb25zdDsKKyAg
ICBEaXNwbGF5OjpWaWV3JiBkaXNwbGF5VmlldygpOworI2VuZGlmCisKICAgICBpbnQgbWFwRnJv
bUxheW91dFRvQ1NTVW5pdHMoTGF5b3V0VW5pdCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXBG
cm9tQ1NTVG9MYXlvdXRVbml0cyhpbnQpIGNvbnN0OwogCkBAIC04NDIsNiArODUzLDEwIEBAIHBy
aXZhdGU6CiAgICAgY29uc3QgUmVmPEZyYW1lPiBtX2ZyYW1lOwogICAgIEZyYW1lVmlld0xheW91
dENvbnRleHQgbV9sYXlvdXRDb250ZXh0OwogCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCisgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXk6OlZpZXc+IG1fZGlzcGxheVZp
ZXc7CisjZW5kaWYKKwogICAgIEhhc2hTZXQ8V2lkZ2V0Kj4gbV93aWRnZXRzSW5SZW5kZXJUcmVl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMaXN0SGFzaFNldDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+
PiBtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWFrSGFz
aFNldDxSZW5kZXJFbGVtZW50Pj4gbV9zbG93UmVwYWludE9iamVjdHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAppbmRleCA2YzI4MGZjMDNlNmUzMDJhOTYwNDU3ZDU4YjRiZGU4MDcwM2MxNGUwLi5mNjk0MDVl
YzI2MGYyYmZjYmNmYzMyZjNiMGVlNzI2MjFjODlkNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAg
LTE2Niw2ICsxNjYsMTAgQEAKICNpbmNsdWRlICJXZWJHTFN0YXRlVHJhY2tlci5oIgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKyNpbmNsdWRlICJEaXNw
bGF5Vmlldy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hT
ZXQ8UGFnZSo+JiBhbGxQYWdlcygpCkBAIC0xNTI4LDYgKzE1MzIsMTUgQEAgdm9pZCBQYWdlOjpk
b0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkKICAgICAvLyBDb2RlIGhlcmUgc2hvdWxkIGRvIG9uY2Ut
cGVyLWZyYW1lIHdvcmsgdGhhdCBuZWVkcyB0byBiZSBkb25lIGJlZm9yZSBwYWludGluZywgYW5k
IHJlcXVpcmVzCiAgICAgLy8gbGF5b3V0IHRvIGJlIHVwLXRvLWRhdGUuIEl0IHNob3VsZCBub3Qg
cnVuIHNjcmlwdCwgdHJpZ2dlciBsYXlvdXQsIG9yIGRpcnR5IGxheW91dC4KIAorI2lmIEVOQUJM
RShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxheW91dEZvcm1hdHRpbmdDb250ZXh0RW5hYmxlZCgpKSB7
CisgICAgICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAg
ICAgICAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZG9jdW1lbnQudmlldygpKQorICAgICAgICAg
ICAgICAgIGZyYW1lVmlldy0+ZGlzcGxheVZpZXcoKS5wcmVwYXJlRm9yRGlzcGxheSgpOworICAg
ICAgICB9KTsKKyAgICB9CisjZW5kaWYKKwogICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1l
bnQmIGRvY3VtZW50KSB7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1l
KCkpCiAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlQ3Vyc29ySWZOZWVk
ZWQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAzNDY4YmU2ZGE1YmU1YTgzMDE2ZDYyY2RhMmQ5NGYxNWY1NjU5NDJmLi45
NTBhYzk3NjI5NmU2NWY2NDUwOTczZjA4NGVlZDk3ZGRlODlmMzIyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMjAtMDktMTMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CisKKyAgICAgICAgRmlyc3Qgc3RlcHMgdG93YXJkcyBMRkMgcGFpbnRpbmcgaW4gV2ViS2l0Mgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NDY2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzLgorCisgICAgICAgIE5vdyB0aGF0IHdl
IGFjdHVhbGx5IHBhaW50IHdpdGggTEZDLCBzb21lIHRlc3RzIGZhaWwgYmVjYXVzZSBvZiBtaXNz
aW5nIGZlYXR1cmVzIGluCisgICAgICAgIHRoZSB2ZXJ5IGJhc2ljIExGQyBwYWludCBwYXRoLiBN
YXJrIHRoZXNlIGFzIGZhaWx1cmVzIGZvciBub3cuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMDktMTAgIEthcmwgUmFja2xlciAgPHJhY2ts
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0ZXN0IGV4cGVjdGF0aW9uIG5vdyB0aGF0
IHRlc3QgaXMgcGFzc2luZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCA3ODA1NmIyYjUyMDk2NDY0YzY0Yjc4N2UzMzE2ZjUzZWIxNzhkY2I5
Li5jYjkzNTRhMDZkNTQ2NzA2ZDYyMzJjYzBiNzM5YWMzZDc5NmE3YmVlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMjM0LDYgKzEyMzQs
MjQgQEAgd2Via2l0Lm9yZy9iLzE3OTc5NiBodHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvZGlz
ay1jYWNoZS12YWxpZGF0aW9uLWJhY2stbmF2aWcKIFsgYXJtNjQgXSBmYXN0L3JlcGxhY2VkL25v
LWZvY3VzLXJpbmctZW1iZWQuaHRtbCBbIFNraXAgXQogWyBhcm02NCBdIGZhc3QvcmVwbGFjZWQv
bm8tZm9jdXMtcmluZy1vYmplY3QuaHRtbCBbIFNraXAgXQogCisjIExGQyBwYWludGluZyBpcyB3
b3JrIGluIHByb2dyZXNzCit3ZWJraXQub3JnL2IvMjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGlu
Z2NvbnRleHQvYmxvY2stb25seS9yZXBsYWNlZC1pbnRyaW5zaWMtd2lkdGgtc2ltcGxlLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3Jt
YXR0aW5nY29udGV4dC9lbXB0eS10YWJsZS13aXRoLXNwZWNpZmllZC1oZWlnaHQtcXVpcmstc2lt
cGxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9s
YXlvdXRmb3JtYXR0aW5nY29udGV4dC9lbXB0eS10YWJsZS13aXRoLXNwZWNpZmllZC1oZWlnaHQt
c3RhbmRhcmRzLXNpbXBsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZmxvYXQtaW4taW5saW5lLWNvbnRl
eHQtc2ltcGxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTY0NzEg
ZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC9mbG9hdHMtc2hyaW5raW5nLWxpbmUtc2ltcGxl
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlv
dXRmb3JtYXR0aW5nY29udGV4dC9zdWJmcmFtZS13aXRoLWRpc3BsYXktbm9uZS1odG1sLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3Jt
YXR0aW5nY29udGV4dC90YWJsZS1jZWxsLXZlcnRpY2FsLWFsaWdubWVudC1zaW1wbGUuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxNjQ3MSBmYXN0L2xheW91dGZvcm1h
dHRpbmdjb250ZXh0L3RhYmxlLXNpbXBsZS1ib3JkZXItY29sbGFwc2Utd2l0aC1wYWRkaW5nLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRm
b3JtYXR0aW5nY29udGV4dC90YWJsZS1zaW1wbGUtYm9yZGVyLWNvbGxhcHNlMy5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGlu
Z2NvbnRleHQvdGFibGUtc2ltcGxlLWNvbGxhcHNlZC1yb3ctYm9yZGVyLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29u
dGV4dC90YWJsZS1zaW1wbGUtY29sbGFwc2VkLXJvdy1ib3JkZXIyLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4
dC90YWJsZS1zaW1wbGUtY29sbGFwc2VkLXRib2R5LWJvcmRlci5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQv
dGFibGUtc2ltcGxlLW11bHRpcGxlLXNlY3Rpb25zLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC90YWJsZS1z
aW1wbGUtcm93LWJvcmRlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdGFibGUtc2ltcGxlLXJvd3NwYW4t
d2l0aC1zcGFjaW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTY0
NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC90YWJsZS1zaW1wbGUtdGhlYWQtYm9yZGVy
LWlnbm9yZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCisKICMgcmRhcjovLzY2NzAzNzczIChS
RUdSRVNTSU9OICgyMEEyMzE2LTIwQTIzNDhiKTogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvcGx1Z2luLWJsb2NrZWQtaW4tYWJvdXQtYmxhbmstd2luZG93Lmh0bWwg
aXMgYSBjb25zdGFudCBmYWlsdXJlKQogWyBhcm02NCBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbi1ibG9ja2VkLWluLWFib3V0LWJsYW5rLXdpbmRvdy5o
dG1sIFsgU2tpcCBdCiAK
</data>
<flag name="commit-queue"
          id="424152"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408719</attachid>
            <date>2020-09-14 10:08:30 -0700</date>
            <delta_ts>2020-09-14 10:27:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216466-20200914100829.patch</filename>
            <type>text/plain</type>
            <size>39950</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzMwZmM3ZWQ3OWFhMjM5
NDg2YmU2MDZjYzk5YjJlZTdhYTUyYjU5NS4uY2UzYjhmZjg5ZTBlOGM4NGMyZGEwYjI3ODYwMWJh
OWVmM2JkZTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIwLTA5LTEzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpcnN0IHN0ZXBz
IHRvd2FyZHMgTEZDIHBhaW50aW5nIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjQ2NgorCisgICAgICAgIFJldmlld2VkIGJ5IFph
bGFuIEJ1anRhcy4KKworICAgICAgICBHZXQgTEZDIHBhaW50aW5nIGluIFdlYktpdDIuCisKKyAg
ICAgICAgRGlzcGxheTo6TGF5ZXJDb250cm9sbGVyKCkgaXMgaW50ZW5kZWQgdG8gYmUgYSBjb250
cm9sbGVyIG9iamVjdCB0aGF0IG1ha2VzIGxheWVyaXphdGlvbgorICAgICAgICBkZWNpc2lvbnM7
IGZvciBub3csIGl0IGp1c3QgY3JlYXRlcyBzb21lIHJvb3QgbGF5ZXJzIGFuZCBob29rcyB0aGVt
IHVwIHZpYSBhdHRhY2hSb290R3JhcGhpY3NMYXllcigpLgorICAgICAgICBJdCBhbHNvIGNyZWF0
ZXMgYSBHcmFwaGljc0xheWVyQ2xpZW50IHRoYXQgcGFpbnRzIGJ5IGNhbGxpbmcgTGF5b3V0Q29u
dGV4dDo6cGFpbnQoKS4KKworICAgICAgICBEaXNwbGF5OjpWaWV3IGlzIHJlc3BvbnNpYmxlIGZv
ciB0aGUgZGlzcGxheSBvZiBhbiBMRkMtcmVuZGVyZWQgZG9jdW1lbnQuIEZyYW1lVmlldworICAg
ICAgICBoYXMgb25lLCBhbmQgdGhlIERpc3BsYXk6OlZpZXcgaGFzIGEgRGlzcGxheTo6TGF5ZXJD
b250cm9sbGVyKCkuIFRoZSBtaW5pbWFsIGhvb2t1cCBwb2ludHMgYXJlOgorICAgICAgICAxLiBQ
YWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkgdGVsbHMgZWFjaCBEaXNwbGF5OjpWaWV3IHRv
IHByZXBhcmVGb3JEaXNwbGF5KCkuCisgICAgICAgICAgIFRoaXMgaXMgd2hlcmUgd2UnbGwgZG8g
b25jZS1wZXItcmVuZGVyaW5nIGxheWVyIHVwZGF0aW5nLgorICAgICAgICAyLiBGcmFtZVZpZXc6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZSgpIHRlbGxzIHRoZSBEaXNwbGF5OjpW
aWV3KCkgdG8gZmx1c2gKKyAgICAgICAgICAgbGF5ZXJzLCB3aGljaCBqdXN0IHBhc3NlcyB0aHJv
dWdoIHRvIERpc3BsYXk6OkxheWVyQ29udHJvbGxlcigpLgorCisgICAgICAgIEZvciBub3cgd2Ug
anVzdCByZWx5IG9uIHRoZSBmYWN0IHRoYXQgRGlzcGxheTo6TGF5ZXJDb250cm9sbGVyKCkgY2Fs
bHMgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoKQorICAgICAgICBhZnRlciBSZW5kZXJMYXllckNv
bXBvc2l0b3IsIHJlcGxhY2luZyB0aGUgcm9vdCBsYXllciBjcmVhdGVkIGJ5IGV4aXN0aW5nIFJl
bmRlckxheWVyQ29tcG9zaXRvciBjb2RlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L0xh
eW91dFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpoYXNS
b290IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9s
bGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xs
ZXI6OlJvb3RMYXllckNsaWVudDo6Um9vdExheWVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkxheWVyQ29udHJvbGxlcjo6Um9vdExheWVyQ2xpZW50Ojpub3RpZnlGbHVzaFJl
cXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxheWVyQ29udHJvbGxlcjo6Um9v
dExheWVyQ2xpZW50OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkxheWVyQ29udHJvbGxlcjo6TGF5ZXJDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkxheWVyQ29udHJvbGxlcjo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjpmbHVzaExheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OnZpc2libGVSZWN0Rm9yTGF5ZXJGbHVz
aGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6
OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6Okxh
eWVyQ29udHJvbGxlcjo6ZW5zdXJlUm9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OkxheWVyQ29udHJvbGxlcjo6c2V0dXBSb290TGF5ZXJIaWVyYXJjaHkpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjp1cGRhdGVSb290TGF5ZXJHZW9tZXRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OmF0dGFjaFJv
b3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6Omdy
YXBoaWNzTGF5ZXJGYWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheS9EaXNw
bGF5TGF5ZXJDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
TGF5ZXJDb250cm9sbGVyOjp2aWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkxheWVyQ29udHJvbGxlcjo6cm9vdEdyYXBoaWNzTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjpjb250ZW50TGF5ZXIgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmNwcDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmguCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpWaWV3OjpWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OlZpZXc6On5WaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZpZXc6OmZyYW1lIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZpZXc6OnBhZ2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Vmlldzo6bGF5b3V0U3RhdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6Vmlldzo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6Vmlldzo6Zmx1c2hMYXllcnMpOgorICAgICAgICAqIGxheW91dC9k
aXNwbGF5L0Rpc3BsYXlWaWV3Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5oLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
Vmlldzo6ZnJhbWVWaWV3IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheVBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UGFpbnRlcjo6YWJz
b2x1dGVEaXNwbGF5Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OnBhaW50U3VidHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Ojpjb2xsZWN0UGFpbnRSb290c0FuZENvbnRl
bnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OmFic29sdXRlRGlzcGxheUJveCk6
IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmg6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3Bw
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0ZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6ZXhpc3RpbmdEaXNwbGF5VmlldyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OmRpc3BsYXlWaWV3KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5o
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0Fm
dGVyVXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxh
dGZvcm1EaXNwbGF5WDExLmg6IERlbm90ZSBEaXNwbGF5IGFzIGJlaW5nIGluIHRoZSBnbG9iYWwg
bmFtZXNwYWNlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9YRXJyb3JUcmFwcGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpYRXJyb3JUcmFwcGVyOjpYRXJyb3JUcmFwcGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZVB0ci5oOgorCiAyMDIwLTA5LTEw
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZHJl
c3MgYSBwb3N0LWNvbW1pdCByZXZpZXcgY29tbWVudCBhZnRlciByMjY2ODg3CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDc1MTI1N2I3YWIwMmVjMjRiMWNhZjE3OTdlNGQ1OWUwOTI5MTFlZDMuLjlh
MzA3Yjk2NjJiYjk0OTRlYjhjN2QxZWNlZTVlNTFjZTc5YTQ1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xMDMsNiArMTAzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dCIKICAgICAiJHtXRUJDT1JFX0RJUn0v
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy90YWJsZXdyYXBwZXIiCisgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dC9kaXNw
bGF5IgogICAgICIke1dFQkNPUkVfRElSfS9sYXlvdXQvZGlzcGxheXRyZWUiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L2xheW91dC9mbG9hdHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYTU0YzJjMGU0NjFkM2U0ZGEyNjgy
Mjk4ZGU0ODdiN2VmYTA1ZDcwZS4uYTU1YTE4ZDMyMDQ4ZTc2ZTY1MWUwMDYwNWY4MGIwNWEzMjdh
MTFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC02OTMsNiArNjkzLDkgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGxheW91dC9MYXlvdXRVbml0cy5oCiAgICAg
bGF5b3V0L01hcmdpblR5cGVzLmgKIAorICAgIGxheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNv
bnRyb2xsZXIuaAorICAgIGxheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmgKKwogICAgIGxheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKICAgICBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eUlubGluZUNvbnRlbnQuaAogICAgIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lUmVj
dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDA4NzIxNjA2NjIwNmZlY2UwMWEwMGVlNWI0MzY1NDIyOWIy
YWE5ZTQuLjE1NGJkZjkwNmVjMjVjNWM4ZDFkMTc1ZmY4NzNmMGJiZjhlYWJhOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0xNDMyLDYgKzE0MzIsOCBAQCBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
TWFyZ2luQ29sbGFwc2UuY3BwCiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL1ByZWNvbXB1dGVkQmxv
Y2tNYXJnaW5Db2xsYXBzZS5jcHAKIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVy
L1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCiBsYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVp
cmtzLmNwcAorbGF5b3V0L2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHAKK2xheW91
dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmNwcAogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3gu
Y3BwCiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuY3BwCiBsYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDBkNTk1Mzk5ZGU1Y2EwNTE4ZjIx
MDUyMmVmNDMwNTJiMWU4MTAyZi4uMzg3MmY4MDFkZmMyZjA4MThiZDViYjY0YWFmYmE2YmI3YWYz
NzRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNjA3NSw2ICs2MDc1LDEwIEBACiAJCTBGRjgzNUJGMUVFMzU0REEwMDhCNEND
NyAvKiBET01RdWFkLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01RdWFkLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGODM1QzAxRUUzNTREQTAwOEI0Q0M3IC8qIERP
TVF1YWRJbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVF1YWRJbml0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjgzNUMxMUVFMzU0REEwMDhCNEND
NyAvKiBET01RdWFkSW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NUXVhZEluaXQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkZCNERBMTI1MEVBMDBFMDA4NkI5
NTIgLyogRGlzcGxheUxheWVyQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGF5
ZXJDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRkI0REEyMjUw
RUEwMEYwMDg2Qjk1MiAvKiBEaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkZCNERBMzI1MEVBMzcwMDA4NkI5NTIgLyogRGlzcGxheVZpZXcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGlzcGxheVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZG
QjREQTQyNTBFQTM3MDAwODZCOTUyIC8qIERpc3BsYXlWaWV3LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERpc3BsYXlWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRDQ1
QTcyNDNCRjI1NzAwMEQ0QkVBIC8qIFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZENDVBODI0M0JGMjU3MDAwRDRCRUEgLyogU2Nyb2xs
aW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxp
bmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZGRDRENUUxODY1MUZBMzAwNTEyRjZFIC8qIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzQwMSwxMCAr
MTc0MDUsMjIgQEAKIAkJCXBhdGggPSBkaXNwbGF5bGlzdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQkwRkZCNERBMDI1MEU5RkM0MDA4NkI5NTIgLyogZGlzcGxheSAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEZGQjREQTIyNTBF
QTAwRjAwODZCOTUyIC8qIERpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwICovLAorCQkJCTBGRkI0
REExMjUwRUEwMEUwMDg2Qjk1MiAvKiBEaXNwbGF5TGF5ZXJDb250cm9sbGVyLmggKi8sCisJCQkJ
MEZGQjREQTQyNTBFQTM3MDAwODZCOTUyIC8qIERpc3BsYXlWaWV3LmNwcCAqLywKKwkJCQkwRkZC
NERBMzI1MEVBMzcwMDA4NkI5NTIgLyogRGlzcGxheVZpZXcuaCAqLywKKwkJCSk7CisJCQlwYXRo
ID0gZGlzcGxheTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTExNUNGQTY2
MjA4QUY3MjAwMDFFNjk5MSAvKiBsYXlvdXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTExNUNGQTk5MjA4QkMwOUEwMDFFNjk5MSAvKiBibG9ja2Zvcm1h
dHRpbmcgKi8sCisJCQkJMEZGQjREQTAyNTBFOUZDNDAwODZCOTUyIC8qIGRpc3BsYXkgKi8sCiAJ
CQkJMTE5OUZBNTgyMDhFM0M0QzAwMjM1OENDIC8qIGRpc3BsYXl0cmVlICovLAogCQkJCTZGQ0ZD
MDU1MjEyREFDQzIwMDc2OTVEMiAvKiBmbG9hdHMgKi8sCiAJCQkJMTE1Q0ZBOUEyMDhCQzE0MDAw
MUU2OTkxIC8qIGlubGluZWZvcm1hdHRpbmcgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvTGF5b3V0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0
ZS5oCmluZGV4IDZlZTU1NDM3Y2M2YmVmZTMzMjYzODhiNDlmNTJiODhkM2E3OGMwODQuLjU2MDBi
OWU5MDU2NzBiZjYzZTIwZTVhZmE3NTY4Y2ExZDJmNGJkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRTdGF0ZS5oCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGluTGltaXRl
ZFF1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX3F1aXJrc01vZGUgPT0gUXVpcmtzTW9kZTo6
TGltaXRlZDsgfQogICAgIGJvb2wgaW5Ob1F1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX3F1
aXJrc01vZGUgPT0gUXVpcmtzTW9kZTo6Tm87IH0KIAorICAgIGJvb2wgaGFzUm9vdCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9yb290Q29udGFpbmVyOyB9CiAgICAgY29uc3QgQ29udGFpbmVyQm94JiBy
b290KCkgY29uc3QgeyByZXR1cm4gKm1fcm9vdENvbnRhaW5lcjsgfQogCiAgICAgLy8gTEZDIGlu
dGVncmF0aW9uIG9ubHkuIEZ1bGwgTEZDIGhhcyBwcm9wZXIgSUNCIGFjY2Vzcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTYwMzg0YmVkNDQyNmFhMDIyMzU4Zjg3N2ZkNGRlMThmNmJiMTY1
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3Bs
YXlMYXllckNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMjA1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMYXllckNvbnRyb2xsZXIuaCIKKwor
I2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiQ2hyb21l
LmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRGlzcGxheUJveC5oIgor
I2luY2x1ZGUgIkRpc3BsYXlQYWludGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheVZpZXcuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkxheW91
dENvbnRleHQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCisKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheSB7CisKK0xheWVyQ29udHJv
bGxlcjo6Um9vdExheWVyQ2xpZW50OjpSb290TGF5ZXJDbGllbnQoTGF5ZXJDb250cm9sbGVyJiBs
YXllckNvbnRyb2xsZXIpCisgICAgOiBtX2xheWVyQ29udHJvbGxlcihsYXllckNvbnRyb2xsZXIp
Cit7Cit9CisKK3ZvaWQgTGF5ZXJDb250cm9sbGVyOjpSb290TGF5ZXJDbGllbnQ6Om5vdGlmeUZs
dXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopCit7CisgICAgbV9sYXllckNvbnRyb2xs
ZXIuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6
OlJvb3RMYXllckNsaWVudDo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBsYXll
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCwg
R3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IpCit7CisgICAgQVNTRVJUX1VOVVNFRChsYXllciwg
bGF5ZXIgPT0gbV9sYXllckNvbnRyb2xsZXIuY29udGVudExheWVyKCkpOworCisgICAgLy8gRklY
TUU6IFRlbXBvcmFyeTsgb25jZSB3ZSBkbyBzY3JvbGxpbmcgdGhpcyByb290IGxheWVyIHdvbid0
IHBhaW50IGFueXRoaW5nLgorICAgIGlmIChhdXRvKiBsYXlvdXRTdGF0ZSA9IG1fbGF5ZXJDb250
cm9sbGVyLnZpZXcoKS5sYXlvdXRTdGF0ZSgpKQorICAgICAgICBMYXlvdXQ6OkxheW91dENvbnRl
eHQ6OnBhaW50KCpsYXlvdXRTdGF0ZSwgY29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChkaXJ0eVJl
Y3QpKTsKK30KKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKExheWVyQ29udHJvbGxlcik7
CisKK0xheWVyQ29udHJvbGxlcjo6TGF5ZXJDb250cm9sbGVyKFZpZXcmIHZpZXcpCisgICAgOiBt
X3ZpZXcodmlldykKKyAgICAsIG1fcm9vdExheWVyQ2xpZW50KCp0aGlzKQoreworfQorCitMYXll
ckNvbnRyb2xsZXI6On5MYXllckNvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgTGF5ZXJD
b250cm9sbGVyOjpwcmVwYXJlRm9yRGlzcGxheShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSkKK3sKKyAgICBpZiAoIWxheW91dFN0YXRlLmhhc1Jvb3QoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byYgcm9vdExheW91dEJveCA9IGxheW91dFN0YXRlLnJvb3QoKTsK
KyAgICBpZiAoIXJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBBU1NFUlQobGF5b3V0U3RhdGUuaGFzRGlzcGxheUJveChyb290TGF5b3V0Qm94KSk7CisK
KyAgICBhdXRvIHZpZXdTaXplID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChy
b290TGF5b3V0Qm94KS5zaXplKCk7CisgICAgYXV0byBjb250ZW50U2l6ZSA9IGxheW91dFN0YXRl
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKnJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpKS5zaXpl
KCk7CisgICAgCisgICAgLy8gRklYTUU6IFVzaW5nIHRoZSBmaXJzdENoaWxkKCkgc2l6ZSB3b24n
dCBiZSBjb3JyZWN0IHVudGlsIHdlIGNvbXB1dGUgb3ZlcmZsb3cgY29ycmVjdGx5LAorICAgIGNv
bnRlbnRTaXplLmNsYW1wVG9NaW5pbXVtU2l6ZSh2aWV3U2l6ZSk7CisKKyAgICBMT0dfV0lUSF9T
VFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiTGF5ZXJDb250cm9sbGVy
OjpwcmVwYXJlRm9yRGlzcGxheSAtIHZpZXdTaXplICIgPDwgdmlld1NpemUgPDwgIiBjb250ZW50
U2l6ZSAiIDw8IGNvbnRlbnRTaXplKTsKKworICAgIGVuc3VyZVJvb3RMYXllcih2aWV3U2l6ZSwg
Y29udGVudFNpemUpOworICAgIAorICAgIC8vIEZJWE1FOiBGb3Igbm93LCByZXBhaW50IHRoZSB3
b3JsZCBvbiBldmVyeSB1cGRhdGUuCisgICAgbV9jb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxh
eSgpOworICAgIAorICAgIGF1dG8mIHNldHRpbmdzID0gbV92aWV3LmZyYW1lKCkuc2V0dGluZ3Mo
KTsKKyAgICBib29sIHNob3dEZWJ1Z0JvcmRlcnMgPSBzZXR0aW5ncy5zaG93RGVidWdCb3JkZXJz
KCk7CisgICAgYm9vbCBzaG93UmVwYWludENvdW50ZXIgPSBzZXR0aW5ncy5zaG93UmVwYWludENv
dW50ZXIoKTsKKyAgICBib29sIGFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQgPSBzZXR0aW5ncy5h
Y2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKCk7CisKKyAgICBtX3Jvb3RMYXllci0+c2V0U2hvd0Rl
YnVnQm9yZGVyKHNob3dEZWJ1Z0JvcmRlcnMpOworICAgIG1fY29udGVudEhvc3RMYXllci0+c2V0
U2hvd0RlYnVnQm9yZGVyKHNob3dEZWJ1Z0JvcmRlcnMpOworCisgICAgbV9jb250ZW50TGF5ZXIt
PnNldFNob3dEZWJ1Z0JvcmRlcihzaG93RGVidWdCb3JkZXJzKTsKKyAgICBtX2NvbnRlbnRMYXll
ci0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNob3dSZXBhaW50Q291bnRlcik7CisgICAgbV9jb250
ZW50TGF5ZXItPnNldEFjY2VsZXJhdGVzRHJhd2luZyhhY2NlbGVyYXRlZERyYXdpbmdFbmFibGVk
KTsKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKK3sKKyAgICBpZiAo
IW1fcm9vdExheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBGbG9hdFJlY3QgdmlzaWJsZVJl
Y3QgPSB2aXNpYmxlUmVjdEZvckxheWVyRmx1c2hpbmcoKTsKKyAgICBtX3Jvb3RMYXllci0+Zmx1
c2hDb21wb3NpdGluZ1N0YXRlKHZpc2libGVSZWN0KTsKK30KKworRmxvYXRSZWN0IExheWVyQ29u
dHJvbGxlcjo6dmlzaWJsZVJlY3RGb3JMYXllckZsdXNoaW5nKCkgY29uc3QKK3sKKyAgICBjb25z
dCBhdXRvJiBmcmFtZVZpZXcgPSBtX3ZpZXcuZnJhbWVWaWV3KCk7CisgICAgcmV0dXJuIGZyYW1l
Vmlldy52aXNpYmxlQ29udGVudFJlY3QoKTsKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6OnNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKK3sKKyAgICBhdXRvIHBhZ2UgPSBtX3ZpZXcucGFnZSgp
OworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+c2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGUoKTsKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6OmVuc3VyZVJvb3RM
YXllcihMYXlvdXRTaXplIHZpZXdTaXplLCBMYXlvdXRTaXplIGNvbnRlbnRTaXplKQoreworICAg
IGlmIChtX3Jvb3RMYXllcikgeworICAgICAgICB1cGRhdGVSb290TGF5ZXJHZW9tZXRyeSh2aWV3
U2l6ZSwgY29udGVudFNpemUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2V0dXBS
b290TGF5ZXJIaWVyYXJjaHkoKTsKKyAgICB1cGRhdGVSb290TGF5ZXJHZW9tZXRyeSh2aWV3U2l6
ZSwgY29udGVudFNpemUpOworCisgICAgYXR0YWNoUm9vdExheWVyKCk7Cit9CisKK3ZvaWQgTGF5
ZXJDb250cm9sbGVyOjpzZXR1cFJvb3RMYXllckhpZXJhcmNoeSgpCit7CisgICAgLy8gRklYTUU6
IFRoaXMgbGF5ZXIgaGllcmFyY2h5IGlzIGp1c3QgZW5vdWdoIHRvIGdldCB0b3BDb250ZW50SW5z
ZXQgd29ya2luZy4KKyAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFw
aGljc0xheWVyRmFjdG9yeSgpLCBtX3Jvb3RMYXllckNsaWVudCk7CisgICAgbV9yb290TGF5ZXIt
PnNldE5hbWUoImRpc3BsYXkgcm9vdCIpOworICAgIG1fcm9vdExheWVyLT5zZXRQb3NpdGlvbih7
IH0pOworICAgIG1fcm9vdExheWVyLT5zZXRBbmNob3JQb2ludCh7IH0pOworCisgICAgbV9jb250
ZW50SG9zdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5
KCksIG1fcm9vdExheWVyQ2xpZW50KTsKKyAgICBtX2NvbnRlbnRIb3N0TGF5ZXItPnNldE5hbWUo
ImNvbnRlbnQgaG9zdCIpOworICAgIG1fY29udGVudEhvc3RMYXllci0+c2V0QW5jaG9yUG9pbnQo
eyB9KTsKKworICAgIG1fY29udGVudExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBo
aWNzTGF5ZXJGYWN0b3J5KCksIG1fcm9vdExheWVyQ2xpZW50KTsKKyAgICBtX2NvbnRlbnRMYXll
ci0+c2V0TmFtZSgiY29udGVudCIpOworICAgIG1fY29udGVudExheWVyLT5zZXRQb3NpdGlvbih7
IH0pOworICAgIG1fY29udGVudExheWVyLT5zZXRBbmNob3JQb2ludCh7IH0pOworICAgIG1fY29u
dGVudExheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgCisgICAgbV9yb290TGF5ZXIt
PmFkZENoaWxkKCptX2NvbnRlbnRIb3N0TGF5ZXIpOworICAgIG1fY29udGVudEhvc3RMYXllci0+
YWRkQ2hpbGQoKm1fY29udGVudExheWVyKTsKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6OnVw
ZGF0ZVJvb3RMYXllckdlb21ldHJ5KExheW91dFNpemUgdmlld1NpemUsIExheW91dFNpemUgY29u
dGVudFNpemUpCit7CisgICAgbV9yb290TGF5ZXItPnNldFNpemUodmlld1NpemUpOworCisgICAg
ZmxvYXQgdG9wQ29udGVudEluc2V0ID0gbV92aWV3LmZyYW1lVmlldygpLnRvcENvbnRlbnRJbnNl
dCgpOworICAgIG1fY29udGVudEhvc3RMYXllci0+c2V0UG9zaXRpb24oeyAwLCB0b3BDb250ZW50
SW5zZXQgfSk7CisgICAgbV9jb250ZW50SG9zdExheWVyLT5zZXRTaXplKHZpZXdTaXplKTsKKwor
ICAgIG1fY29udGVudExheWVyLT5zZXRTaXplKGNvbnRlbnRTaXplKTsKK30KKwordm9pZCBMYXll
ckNvbnRyb2xsZXI6OmF0dGFjaFJvb3RMYXllcigpCit7CisgICAgYXV0byBwYWdlID0gbV92aWV3
LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKG1fdmlldy5mcmFtZSgpLCBy
b290R3JhcGhpY3NMYXllcigpKTsKK30KKworR3JhcGhpY3NMYXllckZhY3RvcnkqIExheWVyQ29u
dHJvbGxlcjo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKSBjb25zdAoreworICAgIGF1dG8gcGFnZSA9
IG1fdmlldy5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5ncmFwaGljc0xheWVyRmFjdG9y
eSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBEaXNwbGF5Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNTU5OGRmNWMxM2YxYTMxMzc4MmE3Y2IwYzRiZTkwODgzNTMzODg5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXkvRGlzcGxheUxh
eWVyQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAi
RGlzcGxheVJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiTGF5
b3V0VW5pdHMuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgR3JhcGhpY3NMYXllcjsKK2NsYXNzIEdyYXBoaWNzTGF5ZXJGYWN0b3J5
OworCituYW1lc3BhY2UgTGF5b3V0IHsKK2NsYXNzIExheW91dFN0YXRlOworfQorCituYW1lc3Bh
Y2UgRGlzcGxheSB7CisKK2NsYXNzIFZpZXc7CisKKy8vIEEgY29udHJvbGxlciBvYmplY3QgdGhh
dCBtYWtlcyBsYXllcml6YXRpb24gZGVjaXNpb25zIGZvciBhIGRpc3BsYXkgdHJlZSwgZm9yIGEg
c2luZ2xlIGRvY3VtZW50LgorY2xhc3MgTGF5ZXJDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKExheWVyQ29udHJvbGxlcik7CitwdWJsaWM6CisgICAgTGF5ZXJDb250cm9s
bGVyKFZpZXcmKTsKKyAgICB+TGF5ZXJDb250cm9sbGVyKCk7CisgICAgCisgICAgdm9pZCBwcmVw
YXJlRm9yRGlzcGxheShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJik7CisgICAgdm9pZCBmbHVz
aExheWVycygpOworCisgICAgY29uc3QgVmlldyYgdmlldygpIGNvbnN0IHsgcmV0dXJuIG1fdmll
dzsgfQorCitwcml2YXRlOgorICAgIHZvaWQgZW5zdXJlUm9vdExheWVyKExheW91dFNpemUgdmll
d1NpemUsIExheW91dFNpemUgY29udGVudFNpemUpOworICAgIHZvaWQgYXR0YWNoUm9vdExheWVy
KCk7CisgICAgdm9pZCBzZXR1cFJvb3RMYXllckhpZXJhcmNoeSgpOworICAgIHZvaWQgdXBkYXRl
Um9vdExheWVyR2VvbWV0cnkoTGF5b3V0U2l6ZSB2aWV3U2l6ZSwgTGF5b3V0U2l6ZSBjb250ZW50
U2l6ZSk7CisgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIAorICAgIEdy
YXBoaWNzTGF5ZXIqIHJvb3RHcmFwaGljc0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290TGF5
ZXIuZ2V0KCk7IH0KKyAgICBHcmFwaGljc0xheWVyKiBjb250ZW50TGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnRMYXllci5nZXQoKTsgfQorCisgICAgR3JhcGhpY3NMYXllckZhY3Rvcnkq
IGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgY29uc3Q7CisKKyAgICBGbG9hdFJlY3QgdmlzaWJsZVJl
Y3RGb3JMYXllckZsdXNoaW5nKCkgY29uc3Q7CisKKyAgICBjbGFzcyBSb290TGF5ZXJDbGllbnQg
OiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBSb290
TGF5ZXJDbGllbnQoTGF5ZXJDb250cm9sbGVyJik7CisKKyAgICBwcml2YXRlOgorICAgICAgICAv
LyBHcmFwaGljc0xheWVyQ2xpZW50IGltcGxlbWVudGF0aW9uCisgICAgICAgIHZvaWQgbm90aWZ5
Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikgZmluYWw7CisgICAgICAgIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IpIGZpbmFsOworCisgICAg
ICAgIExheWVyQ29udHJvbGxlciYgbV9sYXllckNvbnRyb2xsZXI7CisgICAgfTsKKworICAgIFZp
ZXcmIG1fdmlldzsKKyAgICBSb290TGF5ZXJDbGllbnQgbV9yb290TGF5ZXJDbGllbnQ7CisKKyAg
ICBSZWZQdHI8R3JhcGhpY3NMYXllcj4gbV9yb290TGF5ZXI7CisgICAgUmVmUHRyPEdyYXBoaWNz
TGF5ZXI+IG1fY29udGVudEhvc3RMYXllcjsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllcj4gbV9j
b250ZW50TGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBEaXNwbGF5Cit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kYWJhNTgwY2UzYWExNGRiZTMxNDZhZWE2NmFhNzM0ZDc5NzA3Y2ZiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXkvRGlzcGxheVZpZXcuY3BwCkBA
IC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRGlzcGxheVZpZXcuaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRl
ICJGcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgor
I2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBE
aXNwbGF5IHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFZpZXcpOworCitWaWV3OjpW
aWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQorICAgIDogbV9mcmFtZVZpZXcoZnJhbWVWaWV3KQor
ICAgICwgbV9sYXllckNvbnRyb2xsZXIoKnRoaXMpCit7Cit9CisKK1ZpZXc6On5WaWV3KCkKK3sK
K30KKworRnJhbWUmIFZpZXc6OmZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFtZVZp
ZXcuZnJhbWUoKTsKK30KKworUGFnZSogVmlldzo6cGFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZnJhbWVWaWV3LmZyYW1lKCkucGFnZSgpOworfQorCitjb25zdCBMYXlvdXQ6OkxheW91dFN0
YXRlKiBWaWV3OjpsYXlvdXRTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWVWaWV3
LmxheW91dENvbnRleHQoKS5sYXlvdXRGb3JtYXR0aW5nU3RhdGUoKTsKK30KKwordm9pZCBWaWV3
OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7CisgICAgYXV0byogbGF5b3V0U3RhdGUgPSB0aGlzLT5s
YXlvdXRTdGF0ZSgpOworICAgIGlmICghbGF5b3V0U3RhdGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fbGF5ZXJDb250cm9sbGVyLnByZXBhcmVGb3JEaXNwbGF5KCpsYXlvdXRTdGF0ZSk7Cit9
CisKK3ZvaWQgVmlldzo6Zmx1c2hMYXllcnMoKQoreworICAgIG1fbGF5ZXJDb250cm9sbGVyLmZs
dXNoTGF5ZXJzKCk7Cit9CisKKworCit9IC8vIG5hbWVzcGFjZSBEaXNwbGF5Cit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5Vmlldy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMzOGRmYWZlNTUyZWFmMmQ1OTEzMThhM2Y1ODRiZTc4MTYzNGJhMWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5Vmlldy5oCkBAIC0w
LDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShMQVlP
VVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiRGlzcGxheUxheWVyQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIkRpc3BsYXlSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0VW5pdHMuaCIK
KyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRnJhbWU7CitjbGFzcyBGcmFtZVZpZXc7CitjbGFzcyBQYWdlOworCituYW1lc3BhY2UgTGF5
b3V0IHsKK2NsYXNzIExheW91dFN0YXRlOworY2xhc3MgTGF5b3V0VHJlZUNvbnRlbnQ7Cit9CisK
K25hbWVzcGFjZSBEaXNwbGF5IHsKKworLy8gVGhlIHJvb3Qgb2JqZWN0IHdoaWNoIHJlbmRlcnMg
YSBkaXNwbGF5IHRyZWUgZm9yIGEgc2luZ2xlIGRvY3VtZW50LgorY2xhc3MgVmlldyB7CisgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChWaWV3KTsKK3B1YmxpYzoKKyAgICBWaWV3KEZyYW1lVmll
dyYpOworICAgIH5WaWV3KCk7CisgICAgCisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpOwor
ICAgIHZvaWQgZmx1c2hMYXllcnMoKTsKKworICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsKKyAgICBG
cmFtZVZpZXcmIGZyYW1lVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVWaWV3OyB9CisgICAg
RnJhbWUmIGZyYW1lKCkgY29uc3Q7CisKKyAgICBjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlKiBs
YXlvdXRTdGF0ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIEZyYW1lVmlldyYgbV9mcmFtZVZp
ZXc7CisgICAgTGF5ZXJDb250cm9sbGVyIG1fbGF5ZXJDb250cm9sbGVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgRGlzcGxheQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcAppbmRleCAwZDUxZDNhNzhmN2I0
Zjk0NmEyYzM5MTNiNjMxZjM1ZGM4NTY0YWE0Li40NmZjZjRmYjU0YTEwYTY2ZDdiMzZkOThiNTY5
ODBmN2I0M2M0NDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheVBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgdm9pZCBw
YWludElubGluZUNvbnRlbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBMYXlvdXRQb2ludCBh
YnNvbHV0ZU9mZgogICAgIH0KIH0KIAotc3RhdGljIEJveCBhYnNvbHV0ZURpc3BsYXlCb3goY29u
c3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IExheW91dDo6Qm94JiBs
YXlvdXRCb3hUb1BhaW50KQorQm94IFBhaW50ZXI6OmFic29sdXRlRGlzcGxheUJveChjb25zdCBM
YXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91
dEJveFRvUGFpbnQpCiB7CiAgICAgLy8gU2hvdWxkIG5ldmVyIHJlYWxseSBoYXBwZW4gYnV0IHRh
YmxlIGNvZGUgaXMgd2F5IHRvbyBpbmNvbXBsZXRlLgogICAgIGlmICghbGF5b3V0U3RhdGUuaGFz
RGlzcGxheUJveChsYXlvdXRCb3hUb1BhaW50KSkKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGF0aWMg
dm9pZCBwYWludFN1YnRyZWUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXQ6
OkxheW91dFN0YXRlJiBsYQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoIWxheW91
dFN0YXRlLmhhc0Rpc3BsYXlCb3gobGF5b3V0Qm94KSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgYXV0byBhYnNvbHV0ZURpc3BsYXlCb3ggPSBEaXNwbGF5OjphYnNvbHV0ZURpc3BsYXlC
b3gobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgICAgIGF1dG8gYWJzb2x1dGVEaXNwbGF5
Qm94ID0gUGFpbnRlcjo6YWJzb2x1dGVEaXNwbGF5Qm94KGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
OwogICAgICAgICBpZiAoIWRpcnR5UmVjdC5pbnRlcnNlY3RzKHNuYXBwZWRJbnRSZWN0KGFic29s
dXRlRGlzcGxheUJveC5yZWN0KCkpKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjQ4LDcg
KzI0OCw3IEBAIHN0YXRpYyBMYXlvdXRSZWN0IGNvbGxlY3RQYWludFJvb3RzQW5kQ29udGVudFJl
Y3QoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5CiAgICAgICAgICAgICBpZiAoaXNQYWlu
dFJvb3RDYW5kaWRhdGUobGF5b3V0Qm94KSkKICAgICAgICAgICAgICAgICBhcHBlbmRQYWludFJv
b3QobGF5b3V0Qm94KTsKICAgICAgICAgICAgIGlmIChsYXlvdXRTdGF0ZS5oYXNEaXNwbGF5Qm94
KGxheW91dEJveCkpCi0gICAgICAgICAgICAgICAgY29udGVudFJlY3QudW5pdGVJZk5vblplcm8o
RGlzcGxheTo6YWJzb2x1dGVEaXNwbGF5Qm94KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLnJlY3Qo
KSk7CisgICAgICAgICAgICAgICAgY29udGVudFJlY3QudW5pdGVJZk5vblplcm8oUGFpbnRlcjo6
YWJzb2x1dGVEaXNwbGF5Qm94KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLnJlY3QoKSk7CiAgICAg
ICAgICAgICBpZiAoIWlzPExheW91dDo6Q29udGFpbmVyQm94PihsYXlvdXRCb3gpIHx8ICFkb3du
Y2FzdDxMYXlvdXQ6OkNvbnRhaW5lckJveD4obGF5b3V0Qm94KS5oYXNDaGlsZCgpKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgbGF5b3V0Qm94TGlzdC5hcHBlbmQoZG93bmNh
c3Q8TGF5b3V0OjpDb250YWluZXJCb3g+KGxheW91dEJveCkuZmlyc3RDaGlsZCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmgKaW5k
ZXggMTc1ZjE4Y2U1ZjI5NDc3ZDVhMzQwYTViYTk1YTE2YmM2MmMwNTBmMS4uYmYxMDBmOTVhNWQy
YmNiZTQyYzRkMzk3NzVhNTZjMDVhNWQ0ODQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmgKQEAgLTQyLDYgKzQyLDggQEAgY2xh
c3MgUGFpbnRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcGFpbnQoY29uc3QgTGF5b3V0
OjpMYXlvdXRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCk7CiAgICAgc3RhdGljIHZvaWQgcGFpbnRJbmxpbmVGbG93KGNvbnN0IExheW91dDo6TGF5b3V0
U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmKTsKKworICAgIHN0YXRpYyBCb3ggYWJzb2x1dGVEaXNw
bGF5Qm94KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBjb25zdCBMYXlvdXQ6OkJveCYpOyAg
ICAKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA5MzU5YzJiN2ZkMzJlYjc2
YmU4MzJhNjkwNTQyYTY3MjA3MzAzNzM0Li44MThmODI3MjEwMmY4YWIwYTE3YTU2ODhlYmQ1NjAz
YWI0OWZiYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiRmxvYXRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiVGV4dFV0aWwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGM3NzA0NGEwNTlkZjhjZTljZjZhYTE5
OGRmYTFiYjVjNThjNTEyMDQuLjEzOGU4Zjg5NjlkYTlhNmE5YTQwYTU0N2IxNDU5M2YyOWM4ODBk
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEzMCw2ICsxMzAsNyBAQAogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKyNpbmNsdWRlICJE
aXNwbGF5Vmlldy5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKICNlbmRpZgogCkBAIC05
NTYsNiArOTU3LDE0IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxpbmdDb29yZGluYXRv
clNjcm9sbFNuYXBQcm9wZXJ0aWVzKCkgY29uc3QKIAogYm9vbCBGcmFtZVZpZXc6OmZsdXNoQ29t
cG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZShjb25zdCBGcmFtZSYgcm9vdEZyYW1lRm9yRmx1c2gp
CiB7CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGF5b3V0Rm9ybWF0dGluZ0NvbnRl
eHRFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHZpZXcgPSBleGlzdGluZ0Rpc3BsYXlW
aWV3KCkpCisgICAgICAgICAgICB2aWV3LT5mbHVzaExheWVycygpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisjZW5kaWYKKwogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0aGlz
LT5yZW5kZXJWaWV3KCk7CiAgICAgaWYgKCFyZW5kZXJWaWV3KQogICAgICAgICByZXR1cm4gdHJ1
ZTsgLy8gV2UgZG9uJ3Qgd2FudCB0byBrZWVwIHRyeWluZyB0byB1cGRhdGUgbGF5ZXJzIGlmIHdl
IGhhdmUgbm8gcmVuZGVyZXIuCkBAIC01MzQwLDYgKzUzNDksMjAgQEAgUmVuZGVyVmlldyogRnJh
bWVWaWV3OjpyZW5kZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4gZnJhbWUoKS5jb250ZW50UmVu
ZGVyZXIoKTsKIH0KIAorI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorRGlz
cGxheTo6VmlldyogRnJhbWVWaWV3OjpleGlzdGluZ0Rpc3BsYXlWaWV3KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9kaXNwbGF5Vmlldy5nZXQoKTsKK30KKworRGlzcGxheTo6VmlldyYgRnJhbWVW
aWV3OjpkaXNwbGF5VmlldygpCit7CisgICAgaWYgKCFtX2Rpc3BsYXlWaWV3KQorICAgICAgICBt
X2Rpc3BsYXlWaWV3ID0gbWFrZVVuaXF1ZTxEaXNwbGF5OjpWaWV3PigqdGhpcyk7CisgICAgcmV0
dXJuICptX2Rpc3BsYXlWaWV3OworfQorI2VuZGlmCisKIGludCBGcmFtZVZpZXc6Om1hcEZyb21M
YXlvdXRUb0NTU1VuaXRzKExheW91dFVuaXQgdmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHZh
bHVlIC8gKGZyYW1lKCkucGFnZVpvb21GYWN0b3IoKSAqIGZyYW1lKCkuZnJhbWVTY2FsZUZhY3Rv
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGQ3ZThkYjlhZjQwM2NlNTY4MjVkODI5
NjU4ZGJkN2E0MGE0NzI0YzguLjgzNWIwMGUwOWM1MzI4N2JlMTlhZmQ4NzE1MTM3NWQ4MzI1N2Yy
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNzQsNiArNzQsMTIgQEAgY2xhc3MgUmVu
ZGVyVmlldzsKIGNsYXNzIFJlbmRlcldpZGdldDsKIGNsYXNzIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OwogCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCituYW1lc3BhY2UgRGlz
cGxheSB7CitjbGFzcyBWaWV3OworfQorI2VuZGlmCisKIGVudW0gY2xhc3MgRnJhbWVGbGF0dGVu
aW5nOwogCiBQYWdpbmF0aW9uOjpNb2RlIHBhZ2luYXRpb25Nb2RlRm9yUmVuZGVyU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmKTsKQEAgLTEwMSw2ICsxMDcsMTEgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVuZGVyVmlldyogcmVuZGVyVmlldygpIGNvbnN0OwogCisjaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgRGlzcGxheTo6VmlldyogZXhpc3RpbmdE
aXNwbGF5VmlldygpIGNvbnN0OworICAgIERpc3BsYXk6OlZpZXcmIGRpc3BsYXlWaWV3KCk7Cisj
ZW5kaWYKKwogICAgIGludCBtYXBGcm9tTGF5b3V0VG9DU1NVbml0cyhMYXlvdXRVbml0KSBjb25z
dDsKICAgICBMYXlvdXRVbml0IG1hcEZyb21DU1NUb0xheW91dFVuaXRzKGludCkgY29uc3Q7CiAK
QEAgLTg0Miw2ICs4NTMsMTAgQEAgcHJpdmF0ZToKICAgICBjb25zdCBSZWY8RnJhbWU+IG1fZnJh
bWU7CiAgICAgRnJhbWVWaWV3TGF5b3V0Q29udGV4dCBtX2xheW91dENvbnRleHQ7CiAKKyNpZiBF
TkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlz
cGxheTo6Vmlldz4gbV9kaXNwbGF5VmlldzsKKyNlbmRpZgorCiAgICAgSGFzaFNldDxXaWRnZXQq
PiBtX3dpZGdldHNJblJlbmRlclRyZWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExpc3RIYXNoU2V0
PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+IG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGU7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYWtIYXNoU2V0PFJlbmRlckVsZW1lbnQ+PiBtX3Nsb3dSZXBhaW50
T2JqZWN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDZjMjgwZmMwM2U2ZTMwMmE5NjA0NTdkNThi
NGJkZTgwNzAzYzE0ZTAuLmY2OTQwNWVjMjYwZjJiZmNiY2ZjMzJmM2IwZWU3MjYyMWM4OWQ0OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTY2LDYgKzE2NiwxMCBAQAogI2luY2x1ZGUgIldlYkdM
U3RhdGVUcmFja2VyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19D
T05URVhUKQorI2luY2x1ZGUgIkRpc3BsYXlWaWV3LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgSGFzaFNldDxQYWdlKj4mIGFsbFBhZ2VzKCkKQEAgLTE1MjgsNiAr
MTUzMiwxNSBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAgIC8vIENv
ZGUgaGVyZSBzaG91bGQgZG8gb25jZS1wZXItZnJhbWUgd29yayB0aGF0IG5lZWRzIHRvIGJlIGRv
bmUgYmVmb3JlIHBhaW50aW5nLCBhbmQgcmVxdWlyZXMKICAgICAvLyBsYXlvdXQgdG8gYmUgdXAt
dG8tZGF0ZS4gSXQgc2hvdWxkIG5vdCBydW4gc2NyaXB0LCB0cmlnZ2VyIGxheW91dCwgb3IgZGly
dHkgbGF5b3V0LgogCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHRFbmFibGVkKCkpIHsKKyAgICAgICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1
bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBkb2N1
bWVudC52aWV3KCkpCisgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5kaXNwbGF5VmlldygpLnBy
ZXBhcmVGb3JEaXNwbGF5KCk7CisgICAgICAgIH0pOworICAgIH0KKyNlbmRpZgorCiAgICAgZm9y
RWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgaWYgKGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS51cGRhdGVDdXJzb3JJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oCmluZGV4IGY0YWYx
NWM3NTY5MTg1ZDY4NWQ4MTc4ZjE0ZmQ5M2M0OTFkYTQ2ZDIuLjQ1Y2M5MzA0YjZiYmM0ZTAzNDcz
NThmZDFmNmE1MjgzZWQ3MzU0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmgKQEAgLTQxLDE3ICs0MSwx
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQbGF0Zm9ybURpc3BsYXlYMTEgZmluYWwg
OiBwdWJsaWMgUGxhdGZvcm1EaXNwbGF5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtRGlzcGxheT4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybURpc3BsYXk+IGNyZWF0ZShEaXNwbGF5Kik7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+IGNyZWF0ZSg6OkRpc3BsYXkqKTsKIAogICAgIHZp
cnR1YWwgflBsYXRmb3JtRGlzcGxheVgxMSgpOwogCi0gICAgRGlzcGxheSogbmF0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9kaXNwbGF5OyB9CisgICAgOjpEaXNwbGF5KiBuYXRpdmUoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3BsYXk7IH0KICAgICB2b2lkKiB2aXN1YWwoKSBjb25zdDsKICAgICBib29s
IHN1cHBvcnRzWENvbXBvc2l0ZSgpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNYRGFtYWdlKE9w
dGlvbmFsPGludD4mIGRhbWFnZUV2ZW50QmFzZSwgT3B0aW9uYWw8aW50PiYgZGFtYWdlRXJyb3JC
YXNlKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBQbGF0Zm9ybURpc3BsYXlYMTEoRGlzcGxheSos
IE5hdGl2ZURpc3BsYXlPd25lZCk7CisgICAgUGxhdGZvcm1EaXNwbGF5WDExKDo6RGlzcGxheSos
IE5hdGl2ZURpc3BsYXlPd25lZCk7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMTsgfQogCkBAIC01OSw3ICs1OSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplRUdMRGlzcGxheSgpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKLSAgICBEaXNwbGF5KiBtX2Rpc3BsYXkgeyBudWxscHRyIH07CisgICAgOjpEaXNwbGF5
KiBtX2Rpc3BsYXkgeyBudWxscHRyIH07CiAgICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX3N1
cHBvcnRzWENvbXBvc2l0ZTsKICAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fc3VwcG9ydHNY
RGFtYWdlOwogICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2RhbWFnZUV2ZW50QmFzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YRXJyb3JUcmFw
cGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWEVycm9yVHJhcHBl
ci5oCmluZGV4IDYxYmFhYmU3YWQ5MWYwMjBjMjVjZTk5YjFmNzRlMWU0NzQ2M2M0N2QuLjg5OTc0
ODQ2NjRjMmE3MTYwNDEzOTc4ZWI3MDUxNjZkNjg5NWUwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YRXJyb3JUcmFwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hFcnJvclRyYXBwZXIuaApAQCAtMzUsNyAr
MzUsNyBAQCBjbGFzcyBYRXJyb3JUcmFwcGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShY
RXJyb3JUcmFwcGVyKTsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFBvbGljeSB7IElnbm9yZSwg
V2FybiwgQ3Jhc2ggfTsKLSAgICBYRXJyb3JUcmFwcGVyKERpc3BsYXkqLCBQb2xpY3kgPSBQb2xp
Y3k6Oklnbm9yZSwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZXhwZWN0ZWRFcnJvcnMgPSB7IH0p
OworICAgIFhFcnJvclRyYXBwZXIoOjpEaXNwbGF5KiwgUG9saWN5ID0gUG9saWN5OjpJZ25vcmUs
IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGV4cGVjdGVkRXJyb3JzID0geyB9KTsKICAgICB+WEVy
cm9yVHJhcHBlcigpOwogCiAgICAgdW5zaWduZWQgY2hhciBlcnJvckNvZGUoKSBjb25zdDsKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVycm9yRXZlbnQoWEVy
cm9yRXZlbnQqKTsKIAotICAgIERpc3BsYXkqIG1fZGlzcGxheSB7IG51bGxwdHIgfTsKKyAgICA6
OkRpc3BsYXkqIG1fZGlzcGxheSB7IG51bGxwdHIgfTsKICAgICBQb2xpY3kgbV9wb2xpY3kgeyBQ
b2xpY3k6Oklnbm9yZSB9OwogICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX2V4cGVjdGVkRXJy
b3JzOwogICAgIFhFcnJvckhhbmRsZXIgbV9wcmV2aW91c0Vycm9ySGFuZGxlciB7IG51bGxwdHIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5p
cXVlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZVB0
ci5oCmluZGV4IDM3YTE4YzI5ZDVlYjA1OGQ5YWQ3NjkxMzllZjc2MjViYzJjMDdmNzMuLmVkMWNj
NzQ0Y2QwNWQwZmQ2N2Y0MTNlNjUwNzAyYTAwM2Q0Nzc1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlUHRyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWVQdHIuaApAQCAtMzIsNyArMzIsNyBA
QAogCiAjaWYgVVNFKEdMWCkKIHR5cGVkZWYgc3RydWN0IF9fR0xYY29udGV4dFJlYyogR0xYQ29u
dGV4dDsKLWV4dGVybiAiQyIgdm9pZCBnbFhEZXN0cm95Q29udGV4dChEaXNwbGF5KiwgR0xYQ29u
dGV4dCk7CitleHRlcm4gIkMiIHZvaWQgZ2xYRGVzdHJveUNvbnRleHQoOjpEaXNwbGF5KiwgR0xY
Q29udGV4dCk7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM0NjhiZTZk
YTViZTVhODMwMTZkNjJjZGEyZDk0ZjE1ZjU2NTk0MmYuLjk1MGFjOTc2Mjk2ZTY1ZjY0NTA5NzNm
MDg0ZWVkOTdkZGU4OWYzMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wOS0xMyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBGaXJzdCBzdGVw
cyB0b3dhcmRzIExGQyBwYWludGluZyBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY0NjYKKworICAgICAgICBSZXZpZXdlZCBieSBa
YWxhbiBCdWp0YXMuCisKKyAgICAgICAgTm93IHRoYXQgd2UgYWN0dWFsbHkgcGFpbnQgd2l0aCBM
RkMsIHNvbWUgdGVzdHMgZmFpbCBiZWNhdXNlIG9mIG1pc3NpbmcgZmVhdHVyZXMgaW4KKyAgICAg
ICAgdGhlIHZlcnkgYmFzaWMgTEZDIHBhaW50IHBhdGguIE1hcmsgdGhlc2UgYXMgZmFpbHVyZXMg
Zm9yIG5vdy4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoK
KwogMjAyMC0wOS0xMCAgS2FybCBSYWNrbGVyICA8cmFja2xlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHRlc3QgZXhwZWN0YXRpb24gbm93IHRoYXQgdGVzdCBpcyBwYXNzaW5nLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDc4MDU2
YjJiNTIwOTY0NjRjNjRiNzg3ZTMzMTZmNTNlYjE3OGRjYjkuLmNiOTM1NGEwNmQ1NDY3MDZkNjIz
MmNjMGI3MzlhYzNkNzk2YTdiZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEyMzQsNiArMTIzNCwyNCBAQCB3ZWJraXQub3JnL2IvMTc5
Nzk2IGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLXZhbGlkYXRpb24tYmFj
ay1uYXZpZwogWyBhcm02NCBdIGZhc3QvcmVwbGFjZWQvbm8tZm9jdXMtcmluZy1lbWJlZC5odG1s
IFsgU2tpcCBdCiBbIGFybTY0IF0gZmFzdC9yZXBsYWNlZC9uby1mb2N1cy1yaW5nLW9iamVjdC5o
dG1sIFsgU2tpcCBdCiAKKyMgTEZDIHBhaW50aW5nIGlzIHdvcmsgaW4gcHJvZ3Jlc3MKK3dlYmtp
dC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC9ibG9jay1vbmx5L3Jl
cGxhY2VkLWludHJpbnNpYy13aWR0aC1zaW1wbGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQor
d2Via2l0Lm9yZy9iLzIxNjQ3MSBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2VtcHR5LXRh
YmxlLXdpdGgtc3BlY2lmaWVkLWhlaWdodC1xdWlyay1zaW1wbGUuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzIxNjQ3MSBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0
L2VtcHR5LXRhYmxlLXdpdGgtc3BlY2lmaWVkLWhlaWdodC1zdGFuZGFyZHMtc2ltcGxlLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3Jt
YXR0aW5nY29udGV4dC9mbG9hdC1pbi1pbmxpbmUtY29udGV4dC1zaW1wbGUuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxNjQ3MSBmYXN0L2xheW91dGZvcm1hdHRpbmdj
b250ZXh0L2Zsb2F0cy1zaHJpbmtpbmctbGluZS1zaW1wbGUuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzIxNjQ3MSBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3N1
YmZyYW1lLXdpdGgtZGlzcGxheS1ub25lLWh0bWwuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQor
d2Via2l0Lm9yZy9iLzIxNjQ3MSBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3RhYmxlLWNl
bGwtdmVydGljYWwtYWxpZ25tZW50LXNpbXBsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdGFibGUtc2lt
cGxlLWJvcmRlci1jb2xsYXBzZS13aXRoLXBhZGRpbmcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQord2Via2l0Lm9yZy9iLzIxNjQ3MSBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3RhYmxl
LXNpbXBsZS1ib3JkZXItY29sbGFwc2UzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC90YWJsZS1zaW1wbGUt
Y29sbGFwc2VkLXJvdy1ib3JkZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9y
Zy9iLzIxNjQ3MSBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3RhYmxlLXNpbXBsZS1jb2xs
YXBzZWQtcm93LWJvcmRlcjIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9i
LzIxNjQ3MSBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3RhYmxlLXNpbXBsZS1jb2xsYXBz
ZWQtdGJvZHktYm9yZGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8y
MTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC90YWJsZS1zaW1wbGUtbXVsdGlwbGUt
c2VjdGlvbnMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxNjQ3MSBm
YXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3RhYmxlLXNpbXBsZS1yb3ctYm9yZGVyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3Jt
YXR0aW5nY29udGV4dC90YWJsZS1zaW1wbGUtcm93c3Bhbi13aXRoLXNwYWNpbmcuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxNjQ3MSBmYXN0L2xheW91dGZvcm1hdHRp
bmdjb250ZXh0L3RhYmxlLXNpbXBsZS10aGVhZC1ib3JkZXItaWdub3JlLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KKwogIyByZGFyOi8vNjY3MDM3NzMgKFJFR1JFU1NJT04gKDIwQTIzMTYtMjBB
MjM0OGIpOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW4t
YmxvY2tlZC1pbi1hYm91dC1ibGFuay13aW5kb3cuaHRtbCBpcyBhIGNvbnN0YW50IGZhaWx1cmUp
CiBbIGFybTY0IF0gaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcGx1
Z2luLWJsb2NrZWQtaW4tYWJvdXQtYmxhbmstd2luZG93Lmh0bWwgWyBTa2lwIF0KIAo=
</data>
<flag name="commit-queue"
          id="424197"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408721</attachid>
            <date>2020-09-14 10:26:35 -0700</date>
            <delta_ts>2020-09-14 10:47:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216466-20200914102634.patch</filename>
            <type>text/plain</type>
            <size>41886</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzMwZmM3ZWQ3OWFhMjM5
NDg2YmU2MDZjYzk5YjJlZTdhYTUyYjU5NS4uY2UzYjhmZjg5ZTBlOGM4NGMyZGEwYjI3ODYwMWJh
OWVmM2JkZTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIwLTA5LTEzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpcnN0IHN0ZXBz
IHRvd2FyZHMgTEZDIHBhaW50aW5nIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjQ2NgorCisgICAgICAgIFJldmlld2VkIGJ5IFph
bGFuIEJ1anRhcy4KKworICAgICAgICBHZXQgTEZDIHBhaW50aW5nIGluIFdlYktpdDIuCisKKyAg
ICAgICAgRGlzcGxheTo6TGF5ZXJDb250cm9sbGVyKCkgaXMgaW50ZW5kZWQgdG8gYmUgYSBjb250
cm9sbGVyIG9iamVjdCB0aGF0IG1ha2VzIGxheWVyaXphdGlvbgorICAgICAgICBkZWNpc2lvbnM7
IGZvciBub3csIGl0IGp1c3QgY3JlYXRlcyBzb21lIHJvb3QgbGF5ZXJzIGFuZCBob29rcyB0aGVt
IHVwIHZpYSBhdHRhY2hSb290R3JhcGhpY3NMYXllcigpLgorICAgICAgICBJdCBhbHNvIGNyZWF0
ZXMgYSBHcmFwaGljc0xheWVyQ2xpZW50IHRoYXQgcGFpbnRzIGJ5IGNhbGxpbmcgTGF5b3V0Q29u
dGV4dDo6cGFpbnQoKS4KKworICAgICAgICBEaXNwbGF5OjpWaWV3IGlzIHJlc3BvbnNpYmxlIGZv
ciB0aGUgZGlzcGxheSBvZiBhbiBMRkMtcmVuZGVyZWQgZG9jdW1lbnQuIEZyYW1lVmlldworICAg
ICAgICBoYXMgb25lLCBhbmQgdGhlIERpc3BsYXk6OlZpZXcgaGFzIGEgRGlzcGxheTo6TGF5ZXJD
b250cm9sbGVyKCkuIFRoZSBtaW5pbWFsIGhvb2t1cCBwb2ludHMgYXJlOgorICAgICAgICAxLiBQ
YWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkgdGVsbHMgZWFjaCBEaXNwbGF5OjpWaWV3IHRv
IHByZXBhcmVGb3JEaXNwbGF5KCkuCisgICAgICAgICAgIFRoaXMgaXMgd2hlcmUgd2UnbGwgZG8g
b25jZS1wZXItcmVuZGVyaW5nIGxheWVyIHVwZGF0aW5nLgorICAgICAgICAyLiBGcmFtZVZpZXc6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZSgpIHRlbGxzIHRoZSBEaXNwbGF5OjpW
aWV3KCkgdG8gZmx1c2gKKyAgICAgICAgICAgbGF5ZXJzLCB3aGljaCBqdXN0IHBhc3NlcyB0aHJv
dWdoIHRvIERpc3BsYXk6OkxheWVyQ29udHJvbGxlcigpLgorCisgICAgICAgIEZvciBub3cgd2Ug
anVzdCByZWx5IG9uIHRoZSBmYWN0IHRoYXQgRGlzcGxheTo6TGF5ZXJDb250cm9sbGVyKCkgY2Fs
bHMgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoKQorICAgICAgICBhZnRlciBSZW5kZXJMYXllckNv
bXBvc2l0b3IsIHJlcGxhY2luZyB0aGUgcm9vdCBsYXllciBjcmVhdGVkIGJ5IGV4aXN0aW5nIFJl
bmRlckxheWVyQ29tcG9zaXRvciBjb2RlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L0xh
eW91dFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpoYXNS
b290IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9s
bGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xs
ZXI6OlJvb3RMYXllckNsaWVudDo6Um9vdExheWVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkxheWVyQ29udHJvbGxlcjo6Um9vdExheWVyQ2xpZW50Ojpub3RpZnlGbHVzaFJl
cXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxheWVyQ29udHJvbGxlcjo6Um9v
dExheWVyQ2xpZW50OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkxheWVyQ29udHJvbGxlcjo6TGF5ZXJDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkxheWVyQ29udHJvbGxlcjo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjpmbHVzaExheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OnZpc2libGVSZWN0Rm9yTGF5ZXJGbHVz
aGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6
OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6Okxh
eWVyQ29udHJvbGxlcjo6ZW5zdXJlUm9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OkxheWVyQ29udHJvbGxlcjo6c2V0dXBSb290TGF5ZXJIaWVyYXJjaHkpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjp1cGRhdGVSb290TGF5ZXJHZW9tZXRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OmF0dGFjaFJv
b3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6Omdy
YXBoaWNzTGF5ZXJGYWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheS9EaXNw
bGF5TGF5ZXJDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
TGF5ZXJDb250cm9sbGVyOjp2aWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkxheWVyQ29udHJvbGxlcjo6cm9vdEdyYXBoaWNzTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjpjb250ZW50TGF5ZXIgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmNwcDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmguCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpWaWV3OjpWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OlZpZXc6On5WaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZpZXc6OmZyYW1lIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZpZXc6OnBhZ2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Vmlldzo6bGF5b3V0U3RhdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6Vmlldzo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6Vmlldzo6Zmx1c2hMYXllcnMpOgorICAgICAgICAqIGxheW91dC9k
aXNwbGF5L0Rpc3BsYXlWaWV3Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5oLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
Vmlldzo6ZnJhbWVWaWV3IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheVBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UGFpbnRlcjo6YWJz
b2x1dGVEaXNwbGF5Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OnBhaW50U3VidHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Ojpjb2xsZWN0UGFpbnRSb290c0FuZENvbnRl
bnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OmFic29sdXRlRGlzcGxheUJveCk6
IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmg6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3Bw
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0ZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6ZXhpc3RpbmdEaXNwbGF5VmlldyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OmRpc3BsYXlWaWV3KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5o
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0Fm
dGVyVXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxh
dGZvcm1EaXNwbGF5WDExLmg6IERlbm90ZSBEaXNwbGF5IGFzIGJlaW5nIGluIHRoZSBnbG9iYWwg
bmFtZXNwYWNlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9YRXJyb3JUcmFwcGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpYRXJyb3JUcmFwcGVyOjpYRXJyb3JUcmFwcGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZVB0ci5oOgorCiAyMDIwLTA5LTEw
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZHJl
c3MgYSBwb3N0LWNvbW1pdCByZXZpZXcgY29tbWVudCBhZnRlciByMjY2ODg3CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDc1MTI1N2I3YWIwMmVjMjRiMWNhZjE3OTdlNGQ1OWUwOTI5MTFlZDMuLjlh
MzA3Yjk2NjJiYjk0OTRlYjhjN2QxZWNlZTVlNTFjZTc5YTQ1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xMDMsNiArMTAzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dCIKICAgICAiJHtXRUJDT1JFX0RJUn0v
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy90YWJsZXdyYXBwZXIiCisgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dC9kaXNw
bGF5IgogICAgICIke1dFQkNPUkVfRElSfS9sYXlvdXQvZGlzcGxheXRyZWUiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L2xheW91dC9mbG9hdHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYTU0YzJjMGU0NjFkM2U0ZGEyNjgy
Mjk4ZGU0ODdiN2VmYTA1ZDcwZS4uYTU1YTE4ZDMyMDQ4ZTc2ZTY1MWUwMDYwNWY4MGIwNWEzMjdh
MTFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC02OTMsNiArNjkzLDkgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGxheW91dC9MYXlvdXRVbml0cy5oCiAgICAg
bGF5b3V0L01hcmdpblR5cGVzLmgKIAorICAgIGxheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNv
bnRyb2xsZXIuaAorICAgIGxheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmgKKwogICAgIGxheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKICAgICBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eUlubGluZUNvbnRlbnQuaAogICAgIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lUmVj
dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDA4NzIxNjA2NjIwNmZlY2UwMWEwMGVlNWI0MzY1NDIyOWIy
YWE5ZTQuLjE1NGJkZjkwNmVjMjVjNWM4ZDFkMTc1ZmY4NzNmMGJiZjhlYWJhOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0xNDMyLDYgKzE0MzIsOCBAQCBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
TWFyZ2luQ29sbGFwc2UuY3BwCiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL1ByZWNvbXB1dGVkQmxv
Y2tNYXJnaW5Db2xsYXBzZS5jcHAKIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVy
L1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCiBsYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVp
cmtzLmNwcAorbGF5b3V0L2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHAKK2xheW91
dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmNwcAogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3gu
Y3BwCiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuY3BwCiBsYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDBkNTk1Mzk5ZGU1Y2EwNTE4ZjIx
MDUyMmVmNDMwNTJiMWU4MTAyZi4uMzg3MmY4MDFkZmMyZjA4MThiZDViYjY0YWFmYmE2YmI3YWYz
NzRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNjA3NSw2ICs2MDc1LDEwIEBACiAJCTBGRjgzNUJGMUVFMzU0REEwMDhCNEND
NyAvKiBET01RdWFkLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01RdWFkLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGODM1QzAxRUUzNTREQTAwOEI0Q0M3IC8qIERP
TVF1YWRJbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVF1YWRJbml0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjgzNUMxMUVFMzU0REEwMDhCNEND
NyAvKiBET01RdWFkSW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NUXVhZEluaXQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkZCNERBMTI1MEVBMDBFMDA4NkI5
NTIgLyogRGlzcGxheUxheWVyQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGF5
ZXJDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRkI0REEyMjUw
RUEwMEYwMDg2Qjk1MiAvKiBEaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkZCNERBMzI1MEVBMzcwMDA4NkI5NTIgLyogRGlzcGxheVZpZXcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGlzcGxheVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZG
QjREQTQyNTBFQTM3MDAwODZCOTUyIC8qIERpc3BsYXlWaWV3LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERpc3BsYXlWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRDQ1
QTcyNDNCRjI1NzAwMEQ0QkVBIC8qIFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZENDVBODI0M0JGMjU3MDAwRDRCRUEgLyogU2Nyb2xs
aW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxp
bmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZGRDRENUUxODY1MUZBMzAwNTEyRjZFIC8qIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzQwMSwxMCAr
MTc0MDUsMjIgQEAKIAkJCXBhdGggPSBkaXNwbGF5bGlzdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQkwRkZCNERBMDI1MEU5RkM0MDA4NkI5NTIgLyogZGlzcGxheSAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEZGQjREQTIyNTBF
QTAwRjAwODZCOTUyIC8qIERpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwICovLAorCQkJCTBGRkI0
REExMjUwRUEwMEUwMDg2Qjk1MiAvKiBEaXNwbGF5TGF5ZXJDb250cm9sbGVyLmggKi8sCisJCQkJ
MEZGQjREQTQyNTBFQTM3MDAwODZCOTUyIC8qIERpc3BsYXlWaWV3LmNwcCAqLywKKwkJCQkwRkZC
NERBMzI1MEVBMzcwMDA4NkI5NTIgLyogRGlzcGxheVZpZXcuaCAqLywKKwkJCSk7CisJCQlwYXRo
ID0gZGlzcGxheTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTExNUNGQTY2
MjA4QUY3MjAwMDFFNjk5MSAvKiBsYXlvdXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTExNUNGQTk5MjA4QkMwOUEwMDFFNjk5MSAvKiBibG9ja2Zvcm1h
dHRpbmcgKi8sCisJCQkJMEZGQjREQTAyNTBFOUZDNDAwODZCOTUyIC8qIGRpc3BsYXkgKi8sCiAJ
CQkJMTE5OUZBNTgyMDhFM0M0QzAwMjM1OENDIC8qIGRpc3BsYXl0cmVlICovLAogCQkJCTZGQ0ZD
MDU1MjEyREFDQzIwMDc2OTVEMiAvKiBmbG9hdHMgKi8sCiAJCQkJMTE1Q0ZBOUEyMDhCQzE0MDAw
MUU2OTkxIC8qIGlubGluZWZvcm1hdHRpbmcgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvTGF5b3V0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0
ZS5oCmluZGV4IDZlZTU1NDM3Y2M2YmVmZTMzMjYzODhiNDlmNTJiODhkM2E3OGMwODQuLjU2MDBi
OWU5MDU2NzBiZjYzZTIwZTVhZmE3NTY4Y2ExZDJmNGJkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRTdGF0ZS5oCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGluTGltaXRl
ZFF1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX3F1aXJrc01vZGUgPT0gUXVpcmtzTW9kZTo6
TGltaXRlZDsgfQogICAgIGJvb2wgaW5Ob1F1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX3F1
aXJrc01vZGUgPT0gUXVpcmtzTW9kZTo6Tm87IH0KIAorICAgIGJvb2wgaGFzUm9vdCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9yb290Q29udGFpbmVyOyB9CiAgICAgY29uc3QgQ29udGFpbmVyQm94JiBy
b290KCkgY29uc3QgeyByZXR1cm4gKm1fcm9vdENvbnRhaW5lcjsgfQogCiAgICAgLy8gTEZDIGlu
dGVncmF0aW9uIG9ubHkuIEZ1bGwgTEZDIGhhcyBwcm9wZXIgSUNCIGFjY2Vzcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTYwMzg0YmVkNDQyNmFhMDIyMzU4Zjg3N2ZkNGRlMThmNmJiMTY1
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3Bs
YXlMYXllckNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMjA1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMYXllckNvbnRyb2xsZXIuaCIKKwor
I2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiQ2hyb21l
LmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRGlzcGxheUJveC5oIgor
I2luY2x1ZGUgIkRpc3BsYXlQYWludGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheVZpZXcuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkxheW91
dENvbnRleHQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCisKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheSB7CisKK0xheWVyQ29udHJv
bGxlcjo6Um9vdExheWVyQ2xpZW50OjpSb290TGF5ZXJDbGllbnQoTGF5ZXJDb250cm9sbGVyJiBs
YXllckNvbnRyb2xsZXIpCisgICAgOiBtX2xheWVyQ29udHJvbGxlcihsYXllckNvbnRyb2xsZXIp
Cit7Cit9CisKK3ZvaWQgTGF5ZXJDb250cm9sbGVyOjpSb290TGF5ZXJDbGllbnQ6Om5vdGlmeUZs
dXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopCit7CisgICAgbV9sYXllckNvbnRyb2xs
ZXIuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6
OlJvb3RMYXllckNsaWVudDo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBsYXll
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCwg
R3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IpCit7CisgICAgQVNTRVJUX1VOVVNFRChsYXllciwg
bGF5ZXIgPT0gbV9sYXllckNvbnRyb2xsZXIuY29udGVudExheWVyKCkpOworCisgICAgLy8gRklY
TUU6IFRlbXBvcmFyeTsgb25jZSB3ZSBkbyBzY3JvbGxpbmcgdGhpcyByb290IGxheWVyIHdvbid0
IHBhaW50IGFueXRoaW5nLgorICAgIGlmIChhdXRvKiBsYXlvdXRTdGF0ZSA9IG1fbGF5ZXJDb250
cm9sbGVyLnZpZXcoKS5sYXlvdXRTdGF0ZSgpKQorICAgICAgICBMYXlvdXQ6OkxheW91dENvbnRl
eHQ6OnBhaW50KCpsYXlvdXRTdGF0ZSwgY29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChkaXJ0eVJl
Y3QpKTsKK30KKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKExheWVyQ29udHJvbGxlcik7
CisKK0xheWVyQ29udHJvbGxlcjo6TGF5ZXJDb250cm9sbGVyKFZpZXcmIHZpZXcpCisgICAgOiBt
X3ZpZXcodmlldykKKyAgICAsIG1fcm9vdExheWVyQ2xpZW50KCp0aGlzKQoreworfQorCitMYXll
ckNvbnRyb2xsZXI6On5MYXllckNvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgTGF5ZXJD
b250cm9sbGVyOjpwcmVwYXJlRm9yRGlzcGxheShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSkKK3sKKyAgICBpZiAoIWxheW91dFN0YXRlLmhhc1Jvb3QoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byYgcm9vdExheW91dEJveCA9IGxheW91dFN0YXRlLnJvb3QoKTsK
KyAgICBpZiAoIXJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBBU1NFUlQobGF5b3V0U3RhdGUuaGFzRGlzcGxheUJveChyb290TGF5b3V0Qm94KSk7CisK
KyAgICBhdXRvIHZpZXdTaXplID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChy
b290TGF5b3V0Qm94KS5zaXplKCk7CisgICAgYXV0byBjb250ZW50U2l6ZSA9IGxheW91dFN0YXRl
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKnJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpKS5zaXpl
KCk7CisgICAgCisgICAgLy8gRklYTUU6IFVzaW5nIHRoZSBmaXJzdENoaWxkKCkgc2l6ZSB3b24n
dCBiZSBjb3JyZWN0IHVudGlsIHdlIGNvbXB1dGUgb3ZlcmZsb3cgY29ycmVjdGx5LAorICAgIGNv
bnRlbnRTaXplLmNsYW1wVG9NaW5pbXVtU2l6ZSh2aWV3U2l6ZSk7CisKKyAgICBMT0dfV0lUSF9T
VFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiTGF5ZXJDb250cm9sbGVy
OjpwcmVwYXJlRm9yRGlzcGxheSAtIHZpZXdTaXplICIgPDwgdmlld1NpemUgPDwgIiBjb250ZW50
U2l6ZSAiIDw8IGNvbnRlbnRTaXplKTsKKworICAgIGVuc3VyZVJvb3RMYXllcih2aWV3U2l6ZSwg
Y29udGVudFNpemUpOworICAgIAorICAgIC8vIEZJWE1FOiBGb3Igbm93LCByZXBhaW50IHRoZSB3
b3JsZCBvbiBldmVyeSB1cGRhdGUuCisgICAgbV9jb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxh
eSgpOworICAgIAorICAgIGF1dG8mIHNldHRpbmdzID0gbV92aWV3LmZyYW1lKCkuc2V0dGluZ3Mo
KTsKKyAgICBib29sIHNob3dEZWJ1Z0JvcmRlcnMgPSBzZXR0aW5ncy5zaG93RGVidWdCb3JkZXJz
KCk7CisgICAgYm9vbCBzaG93UmVwYWludENvdW50ZXIgPSBzZXR0aW5ncy5zaG93UmVwYWludENv
dW50ZXIoKTsKKyAgICBib29sIGFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQgPSBzZXR0aW5ncy5h
Y2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKCk7CisKKyAgICBtX3Jvb3RMYXllci0+c2V0U2hvd0Rl
YnVnQm9yZGVyKHNob3dEZWJ1Z0JvcmRlcnMpOworICAgIG1fY29udGVudEhvc3RMYXllci0+c2V0
U2hvd0RlYnVnQm9yZGVyKHNob3dEZWJ1Z0JvcmRlcnMpOworCisgICAgbV9jb250ZW50TGF5ZXIt
PnNldFNob3dEZWJ1Z0JvcmRlcihzaG93RGVidWdCb3JkZXJzKTsKKyAgICBtX2NvbnRlbnRMYXll
ci0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNob3dSZXBhaW50Q291bnRlcik7CisgICAgbV9jb250
ZW50TGF5ZXItPnNldEFjY2VsZXJhdGVzRHJhd2luZyhhY2NlbGVyYXRlZERyYXdpbmdFbmFibGVk
KTsKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKK3sKKyAgICBpZiAo
IW1fcm9vdExheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBGbG9hdFJlY3QgdmlzaWJsZVJl
Y3QgPSB2aXNpYmxlUmVjdEZvckxheWVyRmx1c2hpbmcoKTsKKyAgICBtX3Jvb3RMYXllci0+Zmx1
c2hDb21wb3NpdGluZ1N0YXRlKHZpc2libGVSZWN0KTsKK30KKworRmxvYXRSZWN0IExheWVyQ29u
dHJvbGxlcjo6dmlzaWJsZVJlY3RGb3JMYXllckZsdXNoaW5nKCkgY29uc3QKK3sKKyAgICBjb25z
dCBhdXRvJiBmcmFtZVZpZXcgPSBtX3ZpZXcuZnJhbWVWaWV3KCk7CisgICAgcmV0dXJuIGZyYW1l
Vmlldy52aXNpYmxlQ29udGVudFJlY3QoKTsKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6OnNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKK3sKKyAgICBhdXRvIHBhZ2UgPSBtX3ZpZXcucGFnZSgp
OworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+c2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGUoKTsKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6OmVuc3VyZVJvb3RM
YXllcihMYXlvdXRTaXplIHZpZXdTaXplLCBMYXlvdXRTaXplIGNvbnRlbnRTaXplKQoreworICAg
IGlmIChtX3Jvb3RMYXllcikgeworICAgICAgICB1cGRhdGVSb290TGF5ZXJHZW9tZXRyeSh2aWV3
U2l6ZSwgY29udGVudFNpemUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2V0dXBS
b290TGF5ZXJIaWVyYXJjaHkoKTsKKyAgICB1cGRhdGVSb290TGF5ZXJHZW9tZXRyeSh2aWV3U2l6
ZSwgY29udGVudFNpemUpOworCisgICAgYXR0YWNoUm9vdExheWVyKCk7Cit9CisKK3ZvaWQgTGF5
ZXJDb250cm9sbGVyOjpzZXR1cFJvb3RMYXllckhpZXJhcmNoeSgpCit7CisgICAgLy8gRklYTUU6
IFRoaXMgbGF5ZXIgaGllcmFyY2h5IGlzIGp1c3QgZW5vdWdoIHRvIGdldCB0b3BDb250ZW50SW5z
ZXQgd29ya2luZy4KKyAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFw
aGljc0xheWVyRmFjdG9yeSgpLCBtX3Jvb3RMYXllckNsaWVudCk7CisgICAgbV9yb290TGF5ZXIt
PnNldE5hbWUoImRpc3BsYXkgcm9vdCIpOworICAgIG1fcm9vdExheWVyLT5zZXRQb3NpdGlvbih7
IH0pOworICAgIG1fcm9vdExheWVyLT5zZXRBbmNob3JQb2ludCh7IH0pOworCisgICAgbV9jb250
ZW50SG9zdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5
KCksIG1fcm9vdExheWVyQ2xpZW50KTsKKyAgICBtX2NvbnRlbnRIb3N0TGF5ZXItPnNldE5hbWUo
ImNvbnRlbnQgaG9zdCIpOworICAgIG1fY29udGVudEhvc3RMYXllci0+c2V0QW5jaG9yUG9pbnQo
eyB9KTsKKworICAgIG1fY29udGVudExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBo
aWNzTGF5ZXJGYWN0b3J5KCksIG1fcm9vdExheWVyQ2xpZW50KTsKKyAgICBtX2NvbnRlbnRMYXll
ci0+c2V0TmFtZSgiY29udGVudCIpOworICAgIG1fY29udGVudExheWVyLT5zZXRQb3NpdGlvbih7
IH0pOworICAgIG1fY29udGVudExheWVyLT5zZXRBbmNob3JQb2ludCh7IH0pOworICAgIG1fY29u
dGVudExheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgCisgICAgbV9yb290TGF5ZXIt
PmFkZENoaWxkKCptX2NvbnRlbnRIb3N0TGF5ZXIpOworICAgIG1fY29udGVudEhvc3RMYXllci0+
YWRkQ2hpbGQoKm1fY29udGVudExheWVyKTsKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6OnVw
ZGF0ZVJvb3RMYXllckdlb21ldHJ5KExheW91dFNpemUgdmlld1NpemUsIExheW91dFNpemUgY29u
dGVudFNpemUpCit7CisgICAgbV9yb290TGF5ZXItPnNldFNpemUodmlld1NpemUpOworCisgICAg
ZmxvYXQgdG9wQ29udGVudEluc2V0ID0gbV92aWV3LmZyYW1lVmlldygpLnRvcENvbnRlbnRJbnNl
dCgpOworICAgIG1fY29udGVudEhvc3RMYXllci0+c2V0UG9zaXRpb24oeyAwLCB0b3BDb250ZW50
SW5zZXQgfSk7CisgICAgbV9jb250ZW50SG9zdExheWVyLT5zZXRTaXplKHZpZXdTaXplKTsKKwor
ICAgIG1fY29udGVudExheWVyLT5zZXRTaXplKGNvbnRlbnRTaXplKTsKK30KKwordm9pZCBMYXll
ckNvbnRyb2xsZXI6OmF0dGFjaFJvb3RMYXllcigpCit7CisgICAgYXV0byBwYWdlID0gbV92aWV3
LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKG1fdmlldy5mcmFtZSgpLCBy
b290R3JhcGhpY3NMYXllcigpKTsKK30KKworR3JhcGhpY3NMYXllckZhY3RvcnkqIExheWVyQ29u
dHJvbGxlcjo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKSBjb25zdAoreworICAgIGF1dG8gcGFnZSA9
IG1fdmlldy5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5ncmFwaGljc0xheWVyRmFjdG9y
eSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBEaXNwbGF5Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNTU5OGRmNWMxM2YxYTMxMzc4MmE3Y2IwYzRiZTkwODgzNTMzODg5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXkvRGlzcGxheUxh
eWVyQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAi
RGlzcGxheVJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiTGF5
b3V0VW5pdHMuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgR3JhcGhpY3NMYXllcjsKK2NsYXNzIEdyYXBoaWNzTGF5ZXJGYWN0b3J5
OworCituYW1lc3BhY2UgTGF5b3V0IHsKK2NsYXNzIExheW91dFN0YXRlOworfQorCituYW1lc3Bh
Y2UgRGlzcGxheSB7CisKK2NsYXNzIFZpZXc7CisKKy8vIEEgY29udHJvbGxlciBvYmplY3QgdGhh
dCBtYWtlcyBsYXllcml6YXRpb24gZGVjaXNpb25zIGZvciBhIGRpc3BsYXkgdHJlZSwgZm9yIGEg
c2luZ2xlIGRvY3VtZW50LgorY2xhc3MgTGF5ZXJDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKExheWVyQ29udHJvbGxlcik7CitwdWJsaWM6CisgICAgTGF5ZXJDb250cm9s
bGVyKFZpZXcmKTsKKyAgICB+TGF5ZXJDb250cm9sbGVyKCk7CisgICAgCisgICAgdm9pZCBwcmVw
YXJlRm9yRGlzcGxheShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJik7CisgICAgdm9pZCBmbHVz
aExheWVycygpOworCisgICAgY29uc3QgVmlldyYgdmlldygpIGNvbnN0IHsgcmV0dXJuIG1fdmll
dzsgfQorCitwcml2YXRlOgorICAgIHZvaWQgZW5zdXJlUm9vdExheWVyKExheW91dFNpemUgdmll
d1NpemUsIExheW91dFNpemUgY29udGVudFNpemUpOworICAgIHZvaWQgYXR0YWNoUm9vdExheWVy
KCk7CisgICAgdm9pZCBzZXR1cFJvb3RMYXllckhpZXJhcmNoeSgpOworICAgIHZvaWQgdXBkYXRl
Um9vdExheWVyR2VvbWV0cnkoTGF5b3V0U2l6ZSB2aWV3U2l6ZSwgTGF5b3V0U2l6ZSBjb250ZW50
U2l6ZSk7CisgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIAorICAgIEdy
YXBoaWNzTGF5ZXIqIHJvb3RHcmFwaGljc0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290TGF5
ZXIuZ2V0KCk7IH0KKyAgICBHcmFwaGljc0xheWVyKiBjb250ZW50TGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnRMYXllci5nZXQoKTsgfQorCisgICAgR3JhcGhpY3NMYXllckZhY3Rvcnkq
IGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgY29uc3Q7CisKKyAgICBGbG9hdFJlY3QgdmlzaWJsZVJl
Y3RGb3JMYXllckZsdXNoaW5nKCkgY29uc3Q7CisKKyAgICBjbGFzcyBSb290TGF5ZXJDbGllbnQg
OiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBSb290
TGF5ZXJDbGllbnQoTGF5ZXJDb250cm9sbGVyJik7CisKKyAgICBwcml2YXRlOgorICAgICAgICAv
LyBHcmFwaGljc0xheWVyQ2xpZW50IGltcGxlbWVudGF0aW9uCisgICAgICAgIHZvaWQgbm90aWZ5
Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikgZmluYWw7CisgICAgICAgIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IpIGZpbmFsOworCisgICAg
ICAgIExheWVyQ29udHJvbGxlciYgbV9sYXllckNvbnRyb2xsZXI7CisgICAgfTsKKworICAgIFZp
ZXcmIG1fdmlldzsKKyAgICBSb290TGF5ZXJDbGllbnQgbV9yb290TGF5ZXJDbGllbnQ7CisKKyAg
ICBSZWZQdHI8R3JhcGhpY3NMYXllcj4gbV9yb290TGF5ZXI7CisgICAgUmVmUHRyPEdyYXBoaWNz
TGF5ZXI+IG1fY29udGVudEhvc3RMYXllcjsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllcj4gbV9j
b250ZW50TGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBEaXNwbGF5Cit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kYWJhNTgwY2UzYWExNGRiZTMxNDZhZWE2NmFhNzM0ZDc5NzA3Y2ZiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXkvRGlzcGxheVZpZXcuY3BwCkBA
IC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRGlzcGxheVZpZXcuaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRl
ICJGcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgor
I2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBE
aXNwbGF5IHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFZpZXcpOworCitWaWV3OjpW
aWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQorICAgIDogbV9mcmFtZVZpZXcoZnJhbWVWaWV3KQor
ICAgICwgbV9sYXllckNvbnRyb2xsZXIoKnRoaXMpCit7Cit9CisKK1ZpZXc6On5WaWV3KCkKK3sK
K30KKworRnJhbWUmIFZpZXc6OmZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFtZVZp
ZXcuZnJhbWUoKTsKK30KKworUGFnZSogVmlldzo6cGFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZnJhbWVWaWV3LmZyYW1lKCkucGFnZSgpOworfQorCitjb25zdCBMYXlvdXQ6OkxheW91dFN0
YXRlKiBWaWV3OjpsYXlvdXRTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWVWaWV3
LmxheW91dENvbnRleHQoKS5sYXlvdXRGb3JtYXR0aW5nU3RhdGUoKTsKK30KKwordm9pZCBWaWV3
OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7CisgICAgYXV0byogbGF5b3V0U3RhdGUgPSB0aGlzLT5s
YXlvdXRTdGF0ZSgpOworICAgIGlmICghbGF5b3V0U3RhdGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fbGF5ZXJDb250cm9sbGVyLnByZXBhcmVGb3JEaXNwbGF5KCpsYXlvdXRTdGF0ZSk7Cit9
CisKK3ZvaWQgVmlldzo6Zmx1c2hMYXllcnMoKQoreworICAgIG1fbGF5ZXJDb250cm9sbGVyLmZs
dXNoTGF5ZXJzKCk7Cit9CisKKworCit9IC8vIG5hbWVzcGFjZSBEaXNwbGF5Cit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5Vmlldy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMzOGRmYWZlNTUyZWFmMmQ1OTEzMThhM2Y1ODRiZTc4MTYzNGJhMWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5Vmlldy5oCkBAIC0w
LDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShMQVlP
VVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiRGlzcGxheUxheWVyQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIkRpc3BsYXlSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0VW5pdHMuaCIK
KyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRnJhbWU7CitjbGFzcyBGcmFtZVZpZXc7CitjbGFzcyBQYWdlOworCituYW1lc3BhY2UgTGF5
b3V0IHsKK2NsYXNzIExheW91dFN0YXRlOworY2xhc3MgTGF5b3V0VHJlZUNvbnRlbnQ7Cit9CisK
K25hbWVzcGFjZSBEaXNwbGF5IHsKKworLy8gVGhlIHJvb3Qgb2JqZWN0IHdoaWNoIHJlbmRlcnMg
YSBkaXNwbGF5IHRyZWUgZm9yIGEgc2luZ2xlIGRvY3VtZW50LgorY2xhc3MgVmlldyB7CisgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChWaWV3KTsKK3B1YmxpYzoKKyAgICBWaWV3KEZyYW1lVmll
dyYpOworICAgIH5WaWV3KCk7CisgICAgCisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpOwor
ICAgIHZvaWQgZmx1c2hMYXllcnMoKTsKKworICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsKKyAgICBG
cmFtZVZpZXcmIGZyYW1lVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVWaWV3OyB9CisgICAg
RnJhbWUmIGZyYW1lKCkgY29uc3Q7CisKKyAgICBjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlKiBs
YXlvdXRTdGF0ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIEZyYW1lVmlldyYgbV9mcmFtZVZp
ZXc7CisgICAgTGF5ZXJDb250cm9sbGVyIG1fbGF5ZXJDb250cm9sbGVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgRGlzcGxheQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcAppbmRleCAwZDUxZDNhNzhmN2I0
Zjk0NmEyYzM5MTNiNjMxZjM1ZGM4NTY0YWE0Li40NmZjZjRmYjU0YTEwYTY2ZDdiMzZkOThiNTY5
ODBmN2I0M2M0NDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheVBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgdm9pZCBw
YWludElubGluZUNvbnRlbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBMYXlvdXRQb2ludCBh
YnNvbHV0ZU9mZgogICAgIH0KIH0KIAotc3RhdGljIEJveCBhYnNvbHV0ZURpc3BsYXlCb3goY29u
c3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IExheW91dDo6Qm94JiBs
YXlvdXRCb3hUb1BhaW50KQorQm94IFBhaW50ZXI6OmFic29sdXRlRGlzcGxheUJveChjb25zdCBM
YXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91
dEJveFRvUGFpbnQpCiB7CiAgICAgLy8gU2hvdWxkIG5ldmVyIHJlYWxseSBoYXBwZW4gYnV0IHRh
YmxlIGNvZGUgaXMgd2F5IHRvbyBpbmNvbXBsZXRlLgogICAgIGlmICghbGF5b3V0U3RhdGUuaGFz
RGlzcGxheUJveChsYXlvdXRCb3hUb1BhaW50KSkKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGF0aWMg
dm9pZCBwYWludFN1YnRyZWUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXQ6
OkxheW91dFN0YXRlJiBsYQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoIWxheW91
dFN0YXRlLmhhc0Rpc3BsYXlCb3gobGF5b3V0Qm94KSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgYXV0byBhYnNvbHV0ZURpc3BsYXlCb3ggPSBEaXNwbGF5OjphYnNvbHV0ZURpc3BsYXlC
b3gobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgICAgIGF1dG8gYWJzb2x1dGVEaXNwbGF5
Qm94ID0gUGFpbnRlcjo6YWJzb2x1dGVEaXNwbGF5Qm94KGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
OwogICAgICAgICBpZiAoIWRpcnR5UmVjdC5pbnRlcnNlY3RzKHNuYXBwZWRJbnRSZWN0KGFic29s
dXRlRGlzcGxheUJveC5yZWN0KCkpKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjQ4LDcg
KzI0OCw3IEBAIHN0YXRpYyBMYXlvdXRSZWN0IGNvbGxlY3RQYWludFJvb3RzQW5kQ29udGVudFJl
Y3QoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5CiAgICAgICAgICAgICBpZiAoaXNQYWlu
dFJvb3RDYW5kaWRhdGUobGF5b3V0Qm94KSkKICAgICAgICAgICAgICAgICBhcHBlbmRQYWludFJv
b3QobGF5b3V0Qm94KTsKICAgICAgICAgICAgIGlmIChsYXlvdXRTdGF0ZS5oYXNEaXNwbGF5Qm94
KGxheW91dEJveCkpCi0gICAgICAgICAgICAgICAgY29udGVudFJlY3QudW5pdGVJZk5vblplcm8o
RGlzcGxheTo6YWJzb2x1dGVEaXNwbGF5Qm94KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLnJlY3Qo
KSk7CisgICAgICAgICAgICAgICAgY29udGVudFJlY3QudW5pdGVJZk5vblplcm8oUGFpbnRlcjo6
YWJzb2x1dGVEaXNwbGF5Qm94KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLnJlY3QoKSk7CiAgICAg
ICAgICAgICBpZiAoIWlzPExheW91dDo6Q29udGFpbmVyQm94PihsYXlvdXRCb3gpIHx8ICFkb3du
Y2FzdDxMYXlvdXQ6OkNvbnRhaW5lckJveD4obGF5b3V0Qm94KS5oYXNDaGlsZCgpKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgbGF5b3V0Qm94TGlzdC5hcHBlbmQoZG93bmNh
c3Q8TGF5b3V0OjpDb250YWluZXJCb3g+KGxheW91dEJveCkuZmlyc3RDaGlsZCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmgKaW5k
ZXggMTc1ZjE4Y2U1ZjI5NDc3ZDVhMzQwYTViYTk1YTE2YmM2MmMwNTBmMS4uYmYxMDBmOTVhNWQy
YmNiZTQyYzRkMzk3NzVhNTZjMDVhNWQ0ODQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmgKQEAgLTQyLDYgKzQyLDggQEAgY2xh
c3MgUGFpbnRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcGFpbnQoY29uc3QgTGF5b3V0
OjpMYXlvdXRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCk7CiAgICAgc3RhdGljIHZvaWQgcGFpbnRJbmxpbmVGbG93KGNvbnN0IExheW91dDo6TGF5b3V0
U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmKTsKKworICAgIHN0YXRpYyBCb3ggYWJzb2x1dGVEaXNw
bGF5Qm94KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBjb25zdCBMYXlvdXQ6OkJveCYpOyAg
ICAKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA5MzU5YzJiN2ZkMzJlYjc2
YmU4MzJhNjkwNTQyYTY3MjA3MzAzNzM0Li44MThmODI3MjEwMmY4YWIwYTE3YTU2ODhlYmQ1NjAz
YWI0OWZiYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiRmxvYXRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiVGV4dFV0aWwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGM3NzA0NGEwNTlkZjhjZTljZjZhYTE5
OGRmYTFiYjVjNThjNTEyMDQuLjEzOGU4Zjg5NjlkYTlhNmE5YTQwYTU0N2IxNDU5M2YyOWM4ODBk
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEzMCw2ICsxMzAsNyBAQAogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKyNpbmNsdWRlICJE
aXNwbGF5Vmlldy5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKICNlbmRpZgogCkBAIC05
NTYsNiArOTU3LDE0IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxpbmdDb29yZGluYXRv
clNjcm9sbFNuYXBQcm9wZXJ0aWVzKCkgY29uc3QKIAogYm9vbCBGcmFtZVZpZXc6OmZsdXNoQ29t
cG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZShjb25zdCBGcmFtZSYgcm9vdEZyYW1lRm9yRmx1c2gp
CiB7CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGF5b3V0Rm9ybWF0dGluZ0NvbnRl
eHRFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHZpZXcgPSBleGlzdGluZ0Rpc3BsYXlW
aWV3KCkpCisgICAgICAgICAgICB2aWV3LT5mbHVzaExheWVycygpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisjZW5kaWYKKwogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0aGlz
LT5yZW5kZXJWaWV3KCk7CiAgICAgaWYgKCFyZW5kZXJWaWV3KQogICAgICAgICByZXR1cm4gdHJ1
ZTsgLy8gV2UgZG9uJ3Qgd2FudCB0byBrZWVwIHRyeWluZyB0byB1cGRhdGUgbGF5ZXJzIGlmIHdl
IGhhdmUgbm8gcmVuZGVyZXIuCkBAIC01MzQwLDYgKzUzNDksMjAgQEAgUmVuZGVyVmlldyogRnJh
bWVWaWV3OjpyZW5kZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4gZnJhbWUoKS5jb250ZW50UmVu
ZGVyZXIoKTsKIH0KIAorI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorRGlz
cGxheTo6VmlldyogRnJhbWVWaWV3OjpleGlzdGluZ0Rpc3BsYXlWaWV3KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9kaXNwbGF5Vmlldy5nZXQoKTsKK30KKworRGlzcGxheTo6VmlldyYgRnJhbWVW
aWV3OjpkaXNwbGF5VmlldygpCit7CisgICAgaWYgKCFtX2Rpc3BsYXlWaWV3KQorICAgICAgICBt
X2Rpc3BsYXlWaWV3ID0gbWFrZVVuaXF1ZTxEaXNwbGF5OjpWaWV3PigqdGhpcyk7CisgICAgcmV0
dXJuICptX2Rpc3BsYXlWaWV3OworfQorI2VuZGlmCisKIGludCBGcmFtZVZpZXc6Om1hcEZyb21M
YXlvdXRUb0NTU1VuaXRzKExheW91dFVuaXQgdmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHZh
bHVlIC8gKGZyYW1lKCkucGFnZVpvb21GYWN0b3IoKSAqIGZyYW1lKCkuZnJhbWVTY2FsZUZhY3Rv
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGQ3ZThkYjlhZjQwM2NlNTY4MjVkODI5
NjU4ZGJkN2E0MGE0NzI0YzguLjgzNWIwMGUwOWM1MzI4N2JlMTlhZmQ4NzE1MTM3NWQ4MzI1N2Yy
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNzQsNiArNzQsMTIgQEAgY2xhc3MgUmVu
ZGVyVmlldzsKIGNsYXNzIFJlbmRlcldpZGdldDsKIGNsYXNzIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OwogCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCituYW1lc3BhY2UgRGlz
cGxheSB7CitjbGFzcyBWaWV3OworfQorI2VuZGlmCisKIGVudW0gY2xhc3MgRnJhbWVGbGF0dGVu
aW5nOwogCiBQYWdpbmF0aW9uOjpNb2RlIHBhZ2luYXRpb25Nb2RlRm9yUmVuZGVyU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmKTsKQEAgLTEwMSw2ICsxMDcsMTEgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVuZGVyVmlldyogcmVuZGVyVmlldygpIGNvbnN0OwogCisjaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgRGlzcGxheTo6VmlldyogZXhpc3RpbmdE
aXNwbGF5VmlldygpIGNvbnN0OworICAgIERpc3BsYXk6OlZpZXcmIGRpc3BsYXlWaWV3KCk7Cisj
ZW5kaWYKKwogICAgIGludCBtYXBGcm9tTGF5b3V0VG9DU1NVbml0cyhMYXlvdXRVbml0KSBjb25z
dDsKICAgICBMYXlvdXRVbml0IG1hcEZyb21DU1NUb0xheW91dFVuaXRzKGludCkgY29uc3Q7CiAK
QEAgLTg0Miw2ICs4NTMsMTAgQEAgcHJpdmF0ZToKICAgICBjb25zdCBSZWY8RnJhbWU+IG1fZnJh
bWU7CiAgICAgRnJhbWVWaWV3TGF5b3V0Q29udGV4dCBtX2xheW91dENvbnRleHQ7CiAKKyNpZiBF
TkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlz
cGxheTo6Vmlldz4gbV9kaXNwbGF5VmlldzsKKyNlbmRpZgorCiAgICAgSGFzaFNldDxXaWRnZXQq
PiBtX3dpZGdldHNJblJlbmRlclRyZWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExpc3RIYXNoU2V0
PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+IG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGU7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYWtIYXNoU2V0PFJlbmRlckVsZW1lbnQ+PiBtX3Nsb3dSZXBhaW50
T2JqZWN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDZjMjgwZmMwM2U2ZTMwMmE5NjA0NTdkNThi
NGJkZTgwNzAzYzE0ZTAuLmY2OTQwNWVjMjYwZjJiZmNiY2ZjMzJmM2IwZWU3MjYyMWM4OWQ0OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTY2LDYgKzE2NiwxMCBAQAogI2luY2x1ZGUgIldlYkdM
U3RhdGVUcmFja2VyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19D
T05URVhUKQorI2luY2x1ZGUgIkRpc3BsYXlWaWV3LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgSGFzaFNldDxQYWdlKj4mIGFsbFBhZ2VzKCkKQEAgLTE1MjgsNiAr
MTUzMiwxNSBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAgIC8vIENv
ZGUgaGVyZSBzaG91bGQgZG8gb25jZS1wZXItZnJhbWUgd29yayB0aGF0IG5lZWRzIHRvIGJlIGRv
bmUgYmVmb3JlIHBhaW50aW5nLCBhbmQgcmVxdWlyZXMKICAgICAvLyBsYXlvdXQgdG8gYmUgdXAt
dG8tZGF0ZS4gSXQgc2hvdWxkIG5vdCBydW4gc2NyaXB0LCB0cmlnZ2VyIGxheW91dCwgb3IgZGly
dHkgbGF5b3V0LgogCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHRFbmFibGVkKCkpIHsKKyAgICAgICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1
bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBkb2N1
bWVudC52aWV3KCkpCisgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5kaXNwbGF5VmlldygpLnBy
ZXBhcmVGb3JEaXNwbGF5KCk7CisgICAgICAgIH0pOworICAgIH0KKyNlbmRpZgorCiAgICAgZm9y
RWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgaWYgKGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS51cGRhdGVDdXJzb3JJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oCmluZGV4IGY0YWYx
NWM3NTY5MTg1ZDY4NWQ4MTc4ZjE0ZmQ5M2M0OTFkYTQ2ZDIuLjQ1Y2M5MzA0YjZiYmM0ZTAzNDcz
NThmZDFmNmE1MjgzZWQ3MzU0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmgKQEAgLTQxLDE3ICs0MSwx
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQbGF0Zm9ybURpc3BsYXlYMTEgZmluYWwg
OiBwdWJsaWMgUGxhdGZvcm1EaXNwbGF5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtRGlzcGxheT4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybURpc3BsYXk+IGNyZWF0ZShEaXNwbGF5Kik7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+IGNyZWF0ZSg6OkRpc3BsYXkqKTsKIAogICAgIHZp
cnR1YWwgflBsYXRmb3JtRGlzcGxheVgxMSgpOwogCi0gICAgRGlzcGxheSogbmF0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9kaXNwbGF5OyB9CisgICAgOjpEaXNwbGF5KiBuYXRpdmUoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3BsYXk7IH0KICAgICB2b2lkKiB2aXN1YWwoKSBjb25zdDsKICAgICBib29s
IHN1cHBvcnRzWENvbXBvc2l0ZSgpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNYRGFtYWdlKE9w
dGlvbmFsPGludD4mIGRhbWFnZUV2ZW50QmFzZSwgT3B0aW9uYWw8aW50PiYgZGFtYWdlRXJyb3JC
YXNlKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBQbGF0Zm9ybURpc3BsYXlYMTEoRGlzcGxheSos
IE5hdGl2ZURpc3BsYXlPd25lZCk7CisgICAgUGxhdGZvcm1EaXNwbGF5WDExKDo6RGlzcGxheSos
IE5hdGl2ZURpc3BsYXlPd25lZCk7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMTsgfQogCkBAIC01OSw3ICs1OSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplRUdMRGlzcGxheSgpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKLSAgICBEaXNwbGF5KiBtX2Rpc3BsYXkgeyBudWxscHRyIH07CisgICAgOjpEaXNwbGF5
KiBtX2Rpc3BsYXkgeyBudWxscHRyIH07CiAgICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX3N1
cHBvcnRzWENvbXBvc2l0ZTsKICAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fc3VwcG9ydHNY
RGFtYWdlOwogICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2RhbWFnZUV2ZW50QmFzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YRXJyb3JUcmFw
cGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWEVycm9yVHJhcHBl
ci5oCmluZGV4IDYxYmFhYmU3YWQ5MWYwMjBjMjVjZTk5YjFmNzRlMWU0NzQ2M2M0N2QuLjg5OTc0
ODQ2NjRjMmE3MTYwNDEzOTc4ZWI3MDUxNjZkNjg5NWUwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YRXJyb3JUcmFwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hFcnJvclRyYXBwZXIuaApAQCAtMzUsNyAr
MzUsNyBAQCBjbGFzcyBYRXJyb3JUcmFwcGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShY
RXJyb3JUcmFwcGVyKTsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFBvbGljeSB7IElnbm9yZSwg
V2FybiwgQ3Jhc2ggfTsKLSAgICBYRXJyb3JUcmFwcGVyKERpc3BsYXkqLCBQb2xpY3kgPSBQb2xp
Y3k6Oklnbm9yZSwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZXhwZWN0ZWRFcnJvcnMgPSB7IH0p
OworICAgIFhFcnJvclRyYXBwZXIoOjpEaXNwbGF5KiwgUG9saWN5ID0gUG9saWN5OjpJZ25vcmUs
IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGV4cGVjdGVkRXJyb3JzID0geyB9KTsKICAgICB+WEVy
cm9yVHJhcHBlcigpOwogCiAgICAgdW5zaWduZWQgY2hhciBlcnJvckNvZGUoKSBjb25zdDsKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVycm9yRXZlbnQoWEVy
cm9yRXZlbnQqKTsKIAotICAgIERpc3BsYXkqIG1fZGlzcGxheSB7IG51bGxwdHIgfTsKKyAgICA6
OkRpc3BsYXkqIG1fZGlzcGxheSB7IG51bGxwdHIgfTsKICAgICBQb2xpY3kgbV9wb2xpY3kgeyBQ
b2xpY3k6Oklnbm9yZSB9OwogICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX2V4cGVjdGVkRXJy
b3JzOwogICAgIFhFcnJvckhhbmRsZXIgbV9wcmV2aW91c0Vycm9ySGFuZGxlciB7IG51bGxwdHIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5p
cXVlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZVB0
ci5oCmluZGV4IDM3YTE4YzI5ZDVlYjA1OGQ5YWQ3NjkxMzllZjc2MjViYzJjMDdmNzMuLmVkMWNj
NzQ0Y2QwNWQwZmQ2N2Y0MTNlNjUwNzAyYTAwM2Q0Nzc1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlUHRyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWVQdHIuaApAQCAtMzIsNyArMzIsNyBA
QAogCiAjaWYgVVNFKEdMWCkKIHR5cGVkZWYgc3RydWN0IF9fR0xYY29udGV4dFJlYyogR0xYQ29u
dGV4dDsKLWV4dGVybiAiQyIgdm9pZCBnbFhEZXN0cm95Q29udGV4dChEaXNwbGF5KiwgR0xYQ29u
dGV4dCk7CitleHRlcm4gIkMiIHZvaWQgZ2xYRGVzdHJveUNvbnRleHQoOjpEaXNwbGF5KiwgR0xY
Q29udGV4dCk7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5j
cHAKaW5kZXggYmUxOWI2MDA3YzljMGZiZmZmYjg1OWU0MGZkMzQ3NTE0OTNmZTdkMS4uMjQ2YjQy
ZWI4NTc3NGE1YjhkODUyNDc3ZTkzMTAzMWRkYjExZTBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3Bw
CkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBPcHRp
b25hbDxpbnQ+IHNfZGFtYWdlRXZlbnRCYXNlOwogc3RhdGljIE9wdGlvbmFsPGludD4gc19kYW1h
Z2VFcnJvckJhc2U7CkBAIC0xOTUsNyArMTk0LDcgQEAgdm9pZCBBY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVgxMTo6dXBkYXRlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQK
ICAgICBpZiAoIWRyYXdpbmdBcmVhKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRTaXplIHNp
emUgPSBkcmF3aW5nQXJlYS0+c2l6ZSgpOworICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSA9IGRy
YXdpbmdBcmVhLT5zaXplKCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3dlYlBh
Z2UuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBzaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9y
KTsKIApAQCAtMjI5LDcgKzIyOCw3IEBAIHZvaWQgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6
OnNuYXBzaG90KEd0a1NuYXBzaG90KiBndGtTbmFwc2hvdCkKICAgICAvLyBhcyBkaXJ0eSB0byBl
bnN1cmUgd2UgYWx3YXlzIHJlbmRlciB0aGUgdXBkYXRlZCBjb250ZW50cyBhcyBzb29uIGFzIHBv
c3NpYmxlLgogICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShtX3N1cmZhY2UuZ2V0KCkpOwog
Ci0gICAgRmxvYXRTaXplIHZpZXdTaXplKGd0a193aWRnZXRfZ2V0X3dpZHRoKG1fd2ViUGFnZS52
aWV3V2lkZ2V0KCkpLCBndGtfd2lkZ2V0X2dldF9oZWlnaHQobV93ZWJQYWdlLnZpZXdXaWRnZXQo
KSkpOworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB2aWV3U2l6ZShndGtfd2lkZ2V0X2dldF93aWR0
aChtX3dlYlBhZ2Uudmlld1dpZGdldCgpKSwgZ3RrX3dpZGdldF9nZXRfaGVpZ2h0KG1fd2ViUGFn
ZS52aWV3V2lkZ2V0KCkpKTsKICAgICBncmFwaGVuZV9yZWN0X3QgcmVjdCA9IEdSQVBIRU5FX1JF
Q1RfSU5JVCgwLCAwLCB2aWV3U2l6ZS53aWR0aCgpLCB2aWV3U2l6ZS5oZWlnaHQoKSk7CiAgICAg
UmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoZ3RrX3NuYXBzaG90X2FwcGVuZF9jYWlybyhn
dGtTbmFwc2hvdCwgJnJlY3QpKTsKICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0
KCksIG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7CkBAIC0yMzksNyArMjM4LDcgQEAgdm9pZCBBY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6c25hcHNob3QoR3RrU25hcHNob3QqIGd0a1NuYXBzaG90
KQogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsKIH0KICNlbHNlCi1i
b29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpwYWludChjYWlyb190KiBjciwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QpCitib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpwYWlu
dChjYWlyb190KiBjciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpCiB7CiAgICAg
aWYgKCFtX3N1cmZhY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNDY4YmU2ZGE1
YmU1YTgzMDE2ZDYyY2RhMmQ5NGYxNWY1NjU5NDJmLi45NTBhYzk3NjI5NmU2NWY2NDUwOTczZjA4
NGVlZDk3ZGRlODlmMzIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDktMTMgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgRmlyc3Qgc3RlcHMg
dG93YXJkcyBMRkMgcGFpbnRpbmcgaW4gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFs
YW4gQnVqdGFzLgorCisgICAgICAgIE5vdyB0aGF0IHdlIGFjdHVhbGx5IHBhaW50IHdpdGggTEZD
LCBzb21lIHRlc3RzIGZhaWwgYmVjYXVzZSBvZiBtaXNzaW5nIGZlYXR1cmVzIGluCisgICAgICAg
IHRoZSB2ZXJ5IGJhc2ljIExGQyBwYWludCBwYXRoLiBNYXJrIHRoZXNlIGFzIGZhaWx1cmVzIGZv
ciBub3cuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMjAtMDktMTAgIEthcmwgUmFja2xlciAgPHJhY2tsZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSB0ZXN0IGV4cGVjdGF0aW9uIG5vdyB0aGF0IHRlc3QgaXMgcGFzc2luZy4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3ODA1NmIy
YjUyMDk2NDY0YzY0Yjc4N2UzMzE2ZjUzZWIxNzhkY2I5Li5jYjkzNTRhMDZkNTQ2NzA2ZDYyMzJj
YzBiNzM5YWMzZDc5NmE3YmVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xMjM0LDYgKzEyMzQsMjQgQEAgd2Via2l0Lm9yZy9iLzE3OTc5
NiBodHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNoZS12YWxpZGF0aW9uLWJhY2st
bmF2aWcKIFsgYXJtNjQgXSBmYXN0L3JlcGxhY2VkL25vLWZvY3VzLXJpbmctZW1iZWQuaHRtbCBb
IFNraXAgXQogWyBhcm02NCBdIGZhc3QvcmVwbGFjZWQvbm8tZm9jdXMtcmluZy1vYmplY3QuaHRt
bCBbIFNraXAgXQogCisjIExGQyBwYWludGluZyBpcyB3b3JrIGluIHByb2dyZXNzCit3ZWJraXQu
b3JnL2IvMjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvYmxvY2stb25seS9yZXBs
YWNlZC1pbnRyaW5zaWMtd2lkdGgtc2ltcGxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC9lbXB0eS10YWJs
ZS13aXRoLXNwZWNpZmllZC1oZWlnaHQtcXVpcmstc2ltcGxlLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KK3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC9l
bXB0eS10YWJsZS13aXRoLXNwZWNpZmllZC1oZWlnaHQtc3RhbmRhcmRzLXNpbXBsZS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0
dGluZ2NvbnRleHQvZmxvYXQtaW4taW5saW5lLWNvbnRleHQtc2ltcGxlLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29u
dGV4dC9mbG9hdHMtc2hyaW5raW5nLWxpbmUtc2ltcGxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KK3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC9zdWJm
cmFtZS13aXRoLWRpc3BsYXktbm9uZS1odG1sLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC90YWJsZS1jZWxs
LXZlcnRpY2FsLWFsaWdubWVudC1zaW1wbGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzIxNjQ3MSBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3RhYmxlLXNpbXBs
ZS1ib3JkZXItY29sbGFwc2Utd2l0aC1wYWRkaW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC90YWJsZS1z
aW1wbGUtYm9yZGVyLWNvbGxhcHNlMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdGFibGUtc2ltcGxlLWNv
bGxhcHNlZC1yb3ctYm9yZGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcv
Yi8yMTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC90YWJsZS1zaW1wbGUtY29sbGFw
c2VkLXJvdy1ib3JkZXIyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8y
MTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC90YWJsZS1zaW1wbGUtY29sbGFwc2Vk
LXRib2R5LWJvcmRlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE2
NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdGFibGUtc2ltcGxlLW11bHRpcGxlLXNl
Y3Rpb25zLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFz
dC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC90YWJsZS1zaW1wbGUtcm93LWJvcmRlci5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0
dGluZ2NvbnRleHQvdGFibGUtc2ltcGxlLXJvd3NwYW4td2l0aC1zcGFjaW5nLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5n
Y29udGV4dC90YWJsZS1zaW1wbGUtdGhlYWQtYm9yZGVyLWlnbm9yZS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCisKICMgcmRhcjovLzY2NzAzNzczIChSRUdSRVNTSU9OICgyMEEyMzE2LTIwQTIz
NDhiKTogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcGx1Z2luLWJs
b2NrZWQtaW4tYWJvdXQtYmxhbmstd2luZG93Lmh0bWwgaXMgYSBjb25zdGFudCBmYWlsdXJlKQog
WyBhcm02NCBdIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdp
bi1ibG9ja2VkLWluLWFib3V0LWJsYW5rLXdpbmRvdy5odG1sIFsgU2tpcCBdCiAK
</data>
<flag name="commit-queue"
          id="424201"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408723</attachid>
            <date>2020-09-14 10:42:23 -0700</date>
            <delta_ts>2020-09-14 11:26:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216466-20200914104222.patch</filename>
            <type>text/plain</type>
            <size>45301</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzMwZmM3ZWQ3OWFhMjM5
NDg2YmU2MDZjYzk5YjJlZTdhYTUyYjU5NS4uY2UzYjhmZjg5ZTBlOGM4NGMyZGEwYjI3ODYwMWJh
OWVmM2JkZTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIwLTA5LTEzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpcnN0IHN0ZXBz
IHRvd2FyZHMgTEZDIHBhaW50aW5nIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjQ2NgorCisgICAgICAgIFJldmlld2VkIGJ5IFph
bGFuIEJ1anRhcy4KKworICAgICAgICBHZXQgTEZDIHBhaW50aW5nIGluIFdlYktpdDIuCisKKyAg
ICAgICAgRGlzcGxheTo6TGF5ZXJDb250cm9sbGVyKCkgaXMgaW50ZW5kZWQgdG8gYmUgYSBjb250
cm9sbGVyIG9iamVjdCB0aGF0IG1ha2VzIGxheWVyaXphdGlvbgorICAgICAgICBkZWNpc2lvbnM7
IGZvciBub3csIGl0IGp1c3QgY3JlYXRlcyBzb21lIHJvb3QgbGF5ZXJzIGFuZCBob29rcyB0aGVt
IHVwIHZpYSBhdHRhY2hSb290R3JhcGhpY3NMYXllcigpLgorICAgICAgICBJdCBhbHNvIGNyZWF0
ZXMgYSBHcmFwaGljc0xheWVyQ2xpZW50IHRoYXQgcGFpbnRzIGJ5IGNhbGxpbmcgTGF5b3V0Q29u
dGV4dDo6cGFpbnQoKS4KKworICAgICAgICBEaXNwbGF5OjpWaWV3IGlzIHJlc3BvbnNpYmxlIGZv
ciB0aGUgZGlzcGxheSBvZiBhbiBMRkMtcmVuZGVyZWQgZG9jdW1lbnQuIEZyYW1lVmlldworICAg
ICAgICBoYXMgb25lLCBhbmQgdGhlIERpc3BsYXk6OlZpZXcgaGFzIGEgRGlzcGxheTo6TGF5ZXJD
b250cm9sbGVyKCkuIFRoZSBtaW5pbWFsIGhvb2t1cCBwb2ludHMgYXJlOgorICAgICAgICAxLiBQ
YWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkgdGVsbHMgZWFjaCBEaXNwbGF5OjpWaWV3IHRv
IHByZXBhcmVGb3JEaXNwbGF5KCkuCisgICAgICAgICAgIFRoaXMgaXMgd2hlcmUgd2UnbGwgZG8g
b25jZS1wZXItcmVuZGVyaW5nIGxheWVyIHVwZGF0aW5nLgorICAgICAgICAyLiBGcmFtZVZpZXc6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZSgpIHRlbGxzIHRoZSBEaXNwbGF5OjpW
aWV3KCkgdG8gZmx1c2gKKyAgICAgICAgICAgbGF5ZXJzLCB3aGljaCBqdXN0IHBhc3NlcyB0aHJv
dWdoIHRvIERpc3BsYXk6OkxheWVyQ29udHJvbGxlcigpLgorCisgICAgICAgIEZvciBub3cgd2Ug
anVzdCByZWx5IG9uIHRoZSBmYWN0IHRoYXQgRGlzcGxheTo6TGF5ZXJDb250cm9sbGVyKCkgY2Fs
bHMgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoKQorICAgICAgICBhZnRlciBSZW5kZXJMYXllckNv
bXBvc2l0b3IsIHJlcGxhY2luZyB0aGUgcm9vdCBsYXllciBjcmVhdGVkIGJ5IGV4aXN0aW5nIFJl
bmRlckxheWVyQ29tcG9zaXRvciBjb2RlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L0xh
eW91dFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpoYXNS
b290IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9s
bGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xs
ZXI6OlJvb3RMYXllckNsaWVudDo6Um9vdExheWVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkxheWVyQ29udHJvbGxlcjo6Um9vdExheWVyQ2xpZW50Ojpub3RpZnlGbHVzaFJl
cXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxheWVyQ29udHJvbGxlcjo6Um9v
dExheWVyQ2xpZW50OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkxheWVyQ29udHJvbGxlcjo6TGF5ZXJDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkxheWVyQ29udHJvbGxlcjo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjpmbHVzaExheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OnZpc2libGVSZWN0Rm9yTGF5ZXJGbHVz
aGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6
OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6Okxh
eWVyQ29udHJvbGxlcjo6ZW5zdXJlUm9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OkxheWVyQ29udHJvbGxlcjo6c2V0dXBSb290TGF5ZXJIaWVyYXJjaHkpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjp1cGRhdGVSb290TGF5ZXJHZW9tZXRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OmF0dGFjaFJv
b3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6Omdy
YXBoaWNzTGF5ZXJGYWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheS9EaXNw
bGF5TGF5ZXJDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
TGF5ZXJDb250cm9sbGVyOjp2aWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkxheWVyQ29udHJvbGxlcjo6cm9vdEdyYXBoaWNzTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9sbGVyOjpjb250ZW50TGF5ZXIgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmNwcDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmguCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpWaWV3OjpWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OlZpZXc6On5WaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZpZXc6OmZyYW1lIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlZpZXc6OnBhZ2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Vmlldzo6bGF5b3V0U3RhdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6Vmlldzo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6Vmlldzo6Zmx1c2hMYXllcnMpOgorICAgICAgICAqIGxheW91dC9k
aXNwbGF5L0Rpc3BsYXlWaWV3Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5oLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
Vmlldzo6ZnJhbWVWaWV3IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheVBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UGFpbnRlcjo6YWJz
b2x1dGVEaXNwbGF5Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OnBhaW50U3VidHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Ojpjb2xsZWN0UGFpbnRSb290c0FuZENvbnRl
bnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OmFic29sdXRlRGlzcGxheUJveCk6
IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmg6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3Bw
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0ZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6ZXhpc3RpbmdEaXNwbGF5VmlldyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OmRpc3BsYXlWaWV3KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5o
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0Fm
dGVyVXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxh
dGZvcm1EaXNwbGF5WDExLmg6IERlbm90ZSBEaXNwbGF5IGFzIGJlaW5nIGluIHRoZSBnbG9iYWwg
bmFtZXNwYWNlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9YRXJyb3JUcmFwcGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpYRXJyb3JUcmFwcGVyOjpYRXJyb3JUcmFwcGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZVB0ci5oOgorCiAyMDIwLTA5LTEw
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZHJl
c3MgYSBwb3N0LWNvbW1pdCByZXZpZXcgY29tbWVudCBhZnRlciByMjY2ODg3CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDc1MTI1N2I3YWIwMmVjMjRiMWNhZjE3OTdlNGQ1OWUwOTI5MTFlZDMuLjlh
MzA3Yjk2NjJiYjk0OTRlYjhjN2QxZWNlZTVlNTFjZTc5YTQ1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xMDMsNiArMTAzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dCIKICAgICAiJHtXRUJDT1JFX0RJUn0v
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy90YWJsZXdyYXBwZXIiCisgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dC9kaXNw
bGF5IgogICAgICIke1dFQkNPUkVfRElSfS9sYXlvdXQvZGlzcGxheXRyZWUiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L2xheW91dC9mbG9hdHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYTU0YzJjMGU0NjFkM2U0ZGEyNjgy
Mjk4ZGU0ODdiN2VmYTA1ZDcwZS4uYTU1YTE4ZDMyMDQ4ZTc2ZTY1MWUwMDYwNWY4MGIwNWEzMjdh
MTFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC02OTMsNiArNjkzLDkgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGxheW91dC9MYXlvdXRVbml0cy5oCiAgICAg
bGF5b3V0L01hcmdpblR5cGVzLmgKIAorICAgIGxheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNv
bnRyb2xsZXIuaAorICAgIGxheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmgKKwogICAgIGxheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKICAgICBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eUlubGluZUNvbnRlbnQuaAogICAgIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lUmVj
dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDA4NzIxNjA2NjIwNmZlY2UwMWEwMGVlNWI0MzY1NDIyOWIy
YWE5ZTQuLjE1NGJkZjkwNmVjMjVjNWM4ZDFkMTc1ZmY4NzNmMGJiZjhlYWJhOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0xNDMyLDYgKzE0MzIsOCBAQCBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
TWFyZ2luQ29sbGFwc2UuY3BwCiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL1ByZWNvbXB1dGVkQmxv
Y2tNYXJnaW5Db2xsYXBzZS5jcHAKIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvdGFibGV3cmFwcGVy
L1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCiBsYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVp
cmtzLmNwcAorbGF5b3V0L2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHAKK2xheW91
dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmNwcAogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3gu
Y3BwCiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuY3BwCiBsYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDBkNTk1Mzk5ZGU1Y2EwNTE4ZjIx
MDUyMmVmNDMwNTJiMWU4MTAyZi4uMzg3MmY4MDFkZmMyZjA4MThiZDViYjY0YWFmYmE2YmI3YWYz
NzRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNjA3NSw2ICs2MDc1LDEwIEBACiAJCTBGRjgzNUJGMUVFMzU0REEwMDhCNEND
NyAvKiBET01RdWFkLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01RdWFkLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGODM1QzAxRUUzNTREQTAwOEI0Q0M3IC8qIERP
TVF1YWRJbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVF1YWRJbml0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjgzNUMxMUVFMzU0REEwMDhCNEND
NyAvKiBET01RdWFkSW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NUXVhZEluaXQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkZCNERBMTI1MEVBMDBFMDA4NkI5
NTIgLyogRGlzcGxheUxheWVyQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGF5
ZXJDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRkI0REEyMjUw
RUEwMEYwMDg2Qjk1MiAvKiBEaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkZCNERBMzI1MEVBMzcwMDA4NkI5NTIgLyogRGlzcGxheVZpZXcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGlzcGxheVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZG
QjREQTQyNTBFQTM3MDAwODZCOTUyIC8qIERpc3BsYXlWaWV3LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERpc3BsYXlWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRDQ1
QTcyNDNCRjI1NzAwMEQ0QkVBIC8qIFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZENDVBODI0M0JGMjU3MDAwRDRCRUEgLyogU2Nyb2xs
aW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxp
bmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZGRDRENUUxODY1MUZBMzAwNTEyRjZFIC8qIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzQwMSwxMCAr
MTc0MDUsMjIgQEAKIAkJCXBhdGggPSBkaXNwbGF5bGlzdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQkwRkZCNERBMDI1MEU5RkM0MDA4NkI5NTIgLyogZGlzcGxheSAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEZGQjREQTIyNTBF
QTAwRjAwODZCOTUyIC8qIERpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwICovLAorCQkJCTBGRkI0
REExMjUwRUEwMEUwMDg2Qjk1MiAvKiBEaXNwbGF5TGF5ZXJDb250cm9sbGVyLmggKi8sCisJCQkJ
MEZGQjREQTQyNTBFQTM3MDAwODZCOTUyIC8qIERpc3BsYXlWaWV3LmNwcCAqLywKKwkJCQkwRkZC
NERBMzI1MEVBMzcwMDA4NkI5NTIgLyogRGlzcGxheVZpZXcuaCAqLywKKwkJCSk7CisJCQlwYXRo
ID0gZGlzcGxheTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTExNUNGQTY2
MjA4QUY3MjAwMDFFNjk5MSAvKiBsYXlvdXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTExNUNGQTk5MjA4QkMwOUEwMDFFNjk5MSAvKiBibG9ja2Zvcm1h
dHRpbmcgKi8sCisJCQkJMEZGQjREQTAyNTBFOUZDNDAwODZCOTUyIC8qIGRpc3BsYXkgKi8sCiAJ
CQkJMTE5OUZBNTgyMDhFM0M0QzAwMjM1OENDIC8qIGRpc3BsYXl0cmVlICovLAogCQkJCTZGQ0ZD
MDU1MjEyREFDQzIwMDc2OTVEMiAvKiBmbG9hdHMgKi8sCiAJCQkJMTE1Q0ZBOUEyMDhCQzE0MDAw
MUU2OTkxIC8qIGlubGluZWZvcm1hdHRpbmcgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvTGF5b3V0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0
ZS5oCmluZGV4IDZlZTU1NDM3Y2M2YmVmZTMzMjYzODhiNDlmNTJiODhkM2E3OGMwODQuLjU2MDBi
OWU5MDU2NzBiZjYzZTIwZTVhZmE3NTY4Y2ExZDJmNGJkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRTdGF0ZS5oCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGluTGltaXRl
ZFF1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX3F1aXJrc01vZGUgPT0gUXVpcmtzTW9kZTo6
TGltaXRlZDsgfQogICAgIGJvb2wgaW5Ob1F1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX3F1
aXJrc01vZGUgPT0gUXVpcmtzTW9kZTo6Tm87IH0KIAorICAgIGJvb2wgaGFzUm9vdCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9yb290Q29udGFpbmVyOyB9CiAgICAgY29uc3QgQ29udGFpbmVyQm94JiBy
b290KCkgY29uc3QgeyByZXR1cm4gKm1fcm9vdENvbnRhaW5lcjsgfQogCiAgICAgLy8gTEZDIGlu
dGVncmF0aW9uIG9ubHkuIEZ1bGwgTEZDIGhhcyBwcm9wZXIgSUNCIGFjY2Vzcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTYwMzg0YmVkNDQyNmFhMDIyMzU4Zjg3N2ZkNGRlMThmNmJiMTY1
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3Bs
YXlMYXllckNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMjA1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMYXllckNvbnRyb2xsZXIuaCIKKwor
I2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiQ2hyb21l
LmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRGlzcGxheUJveC5oIgor
I2luY2x1ZGUgIkRpc3BsYXlQYWludGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheVZpZXcuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkxheW91
dENvbnRleHQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCisKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheSB7CisKK0xheWVyQ29udHJv
bGxlcjo6Um9vdExheWVyQ2xpZW50OjpSb290TGF5ZXJDbGllbnQoTGF5ZXJDb250cm9sbGVyJiBs
YXllckNvbnRyb2xsZXIpCisgICAgOiBtX2xheWVyQ29udHJvbGxlcihsYXllckNvbnRyb2xsZXIp
Cit7Cit9CisKK3ZvaWQgTGF5ZXJDb250cm9sbGVyOjpSb290TGF5ZXJDbGllbnQ6Om5vdGlmeUZs
dXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopCit7CisgICAgbV9sYXllckNvbnRyb2xs
ZXIuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6
OlJvb3RMYXllckNsaWVudDo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBsYXll
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCwg
R3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IpCit7CisgICAgQVNTRVJUX1VOVVNFRChsYXllciwg
bGF5ZXIgPT0gbV9sYXllckNvbnRyb2xsZXIuY29udGVudExheWVyKCkpOworCisgICAgLy8gRklY
TUU6IFRlbXBvcmFyeTsgb25jZSB3ZSBkbyBzY3JvbGxpbmcgdGhpcyByb290IGxheWVyIHdvbid0
IHBhaW50IGFueXRoaW5nLgorICAgIGlmIChhdXRvKiBsYXlvdXRTdGF0ZSA9IG1fbGF5ZXJDb250
cm9sbGVyLnZpZXcoKS5sYXlvdXRTdGF0ZSgpKQorICAgICAgICBMYXlvdXQ6OkxheW91dENvbnRl
eHQ6OnBhaW50KCpsYXlvdXRTdGF0ZSwgY29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChkaXJ0eVJl
Y3QpKTsKK30KKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKExheWVyQ29udHJvbGxlcik7
CisKK0xheWVyQ29udHJvbGxlcjo6TGF5ZXJDb250cm9sbGVyKFZpZXcmIHZpZXcpCisgICAgOiBt
X3ZpZXcodmlldykKKyAgICAsIG1fcm9vdExheWVyQ2xpZW50KCp0aGlzKQoreworfQorCitMYXll
ckNvbnRyb2xsZXI6On5MYXllckNvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgTGF5ZXJD
b250cm9sbGVyOjpwcmVwYXJlRm9yRGlzcGxheShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSkKK3sKKyAgICBpZiAoIWxheW91dFN0YXRlLmhhc1Jvb3QoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byYgcm9vdExheW91dEJveCA9IGxheW91dFN0YXRlLnJvb3QoKTsK
KyAgICBpZiAoIXJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBBU1NFUlQobGF5b3V0U3RhdGUuaGFzRGlzcGxheUJveChyb290TGF5b3V0Qm94KSk7CisK
KyAgICBhdXRvIHZpZXdTaXplID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChy
b290TGF5b3V0Qm94KS5zaXplKCk7CisgICAgYXV0byBjb250ZW50U2l6ZSA9IGxheW91dFN0YXRl
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKnJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpKS5zaXpl
KCk7CisgICAgCisgICAgLy8gRklYTUU6IFVzaW5nIHRoZSBmaXJzdENoaWxkKCkgc2l6ZSB3b24n
dCBiZSBjb3JyZWN0IHVudGlsIHdlIGNvbXB1dGUgb3ZlcmZsb3cgY29ycmVjdGx5LAorICAgIGNv
bnRlbnRTaXplLmNsYW1wVG9NaW5pbXVtU2l6ZSh2aWV3U2l6ZSk7CisKKyAgICBMT0dfV0lUSF9T
VFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiTGF5ZXJDb250cm9sbGVy
OjpwcmVwYXJlRm9yRGlzcGxheSAtIHZpZXdTaXplICIgPDwgdmlld1NpemUgPDwgIiBjb250ZW50
U2l6ZSAiIDw8IGNvbnRlbnRTaXplKTsKKworICAgIGVuc3VyZVJvb3RMYXllcih2aWV3U2l6ZSwg
Y29udGVudFNpemUpOworICAgIAorICAgIC8vIEZJWE1FOiBGb3Igbm93LCByZXBhaW50IHRoZSB3
b3JsZCBvbiBldmVyeSB1cGRhdGUuCisgICAgbV9jb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxh
eSgpOworICAgIAorICAgIGF1dG8mIHNldHRpbmdzID0gbV92aWV3LmZyYW1lKCkuc2V0dGluZ3Mo
KTsKKyAgICBib29sIHNob3dEZWJ1Z0JvcmRlcnMgPSBzZXR0aW5ncy5zaG93RGVidWdCb3JkZXJz
KCk7CisgICAgYm9vbCBzaG93UmVwYWludENvdW50ZXIgPSBzZXR0aW5ncy5zaG93UmVwYWludENv
dW50ZXIoKTsKKyAgICBib29sIGFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQgPSBzZXR0aW5ncy5h
Y2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKCk7CisKKyAgICBtX3Jvb3RMYXllci0+c2V0U2hvd0Rl
YnVnQm9yZGVyKHNob3dEZWJ1Z0JvcmRlcnMpOworICAgIG1fY29udGVudEhvc3RMYXllci0+c2V0
U2hvd0RlYnVnQm9yZGVyKHNob3dEZWJ1Z0JvcmRlcnMpOworCisgICAgbV9jb250ZW50TGF5ZXIt
PnNldFNob3dEZWJ1Z0JvcmRlcihzaG93RGVidWdCb3JkZXJzKTsKKyAgICBtX2NvbnRlbnRMYXll
ci0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNob3dSZXBhaW50Q291bnRlcik7CisgICAgbV9jb250
ZW50TGF5ZXItPnNldEFjY2VsZXJhdGVzRHJhd2luZyhhY2NlbGVyYXRlZERyYXdpbmdFbmFibGVk
KTsKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKK3sKKyAgICBpZiAo
IW1fcm9vdExheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBGbG9hdFJlY3QgdmlzaWJsZVJl
Y3QgPSB2aXNpYmxlUmVjdEZvckxheWVyRmx1c2hpbmcoKTsKKyAgICBtX3Jvb3RMYXllci0+Zmx1
c2hDb21wb3NpdGluZ1N0YXRlKHZpc2libGVSZWN0KTsKK30KKworRmxvYXRSZWN0IExheWVyQ29u
dHJvbGxlcjo6dmlzaWJsZVJlY3RGb3JMYXllckZsdXNoaW5nKCkgY29uc3QKK3sKKyAgICBjb25z
dCBhdXRvJiBmcmFtZVZpZXcgPSBtX3ZpZXcuZnJhbWVWaWV3KCk7CisgICAgcmV0dXJuIGZyYW1l
Vmlldy52aXNpYmxlQ29udGVudFJlY3QoKTsKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6OnNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKK3sKKyAgICBhdXRvIHBhZ2UgPSBtX3ZpZXcucGFnZSgp
OworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+c2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGUoKTsKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6OmVuc3VyZVJvb3RM
YXllcihMYXlvdXRTaXplIHZpZXdTaXplLCBMYXlvdXRTaXplIGNvbnRlbnRTaXplKQoreworICAg
IGlmIChtX3Jvb3RMYXllcikgeworICAgICAgICB1cGRhdGVSb290TGF5ZXJHZW9tZXRyeSh2aWV3
U2l6ZSwgY29udGVudFNpemUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2V0dXBS
b290TGF5ZXJIaWVyYXJjaHkoKTsKKyAgICB1cGRhdGVSb290TGF5ZXJHZW9tZXRyeSh2aWV3U2l6
ZSwgY29udGVudFNpemUpOworCisgICAgYXR0YWNoUm9vdExheWVyKCk7Cit9CisKK3ZvaWQgTGF5
ZXJDb250cm9sbGVyOjpzZXR1cFJvb3RMYXllckhpZXJhcmNoeSgpCit7CisgICAgLy8gRklYTUU6
IFRoaXMgbGF5ZXIgaGllcmFyY2h5IGlzIGp1c3QgZW5vdWdoIHRvIGdldCB0b3BDb250ZW50SW5z
ZXQgd29ya2luZy4KKyAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFw
aGljc0xheWVyRmFjdG9yeSgpLCBtX3Jvb3RMYXllckNsaWVudCk7CisgICAgbV9yb290TGF5ZXIt
PnNldE5hbWUoImRpc3BsYXkgcm9vdCIpOworICAgIG1fcm9vdExheWVyLT5zZXRQb3NpdGlvbih7
IH0pOworICAgIG1fcm9vdExheWVyLT5zZXRBbmNob3JQb2ludCh7IH0pOworCisgICAgbV9jb250
ZW50SG9zdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5
KCksIG1fcm9vdExheWVyQ2xpZW50KTsKKyAgICBtX2NvbnRlbnRIb3N0TGF5ZXItPnNldE5hbWUo
ImNvbnRlbnQgaG9zdCIpOworICAgIG1fY29udGVudEhvc3RMYXllci0+c2V0QW5jaG9yUG9pbnQo
eyB9KTsKKworICAgIG1fY29udGVudExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBo
aWNzTGF5ZXJGYWN0b3J5KCksIG1fcm9vdExheWVyQ2xpZW50KTsKKyAgICBtX2NvbnRlbnRMYXll
ci0+c2V0TmFtZSgiY29udGVudCIpOworICAgIG1fY29udGVudExheWVyLT5zZXRQb3NpdGlvbih7
IH0pOworICAgIG1fY29udGVudExheWVyLT5zZXRBbmNob3JQb2ludCh7IH0pOworICAgIG1fY29u
dGVudExheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgCisgICAgbV9yb290TGF5ZXIt
PmFkZENoaWxkKCptX2NvbnRlbnRIb3N0TGF5ZXIpOworICAgIG1fY29udGVudEhvc3RMYXllci0+
YWRkQ2hpbGQoKm1fY29udGVudExheWVyKTsKK30KKwordm9pZCBMYXllckNvbnRyb2xsZXI6OnVw
ZGF0ZVJvb3RMYXllckdlb21ldHJ5KExheW91dFNpemUgdmlld1NpemUsIExheW91dFNpemUgY29u
dGVudFNpemUpCit7CisgICAgbV9yb290TGF5ZXItPnNldFNpemUodmlld1NpemUpOworCisgICAg
ZmxvYXQgdG9wQ29udGVudEluc2V0ID0gbV92aWV3LmZyYW1lVmlldygpLnRvcENvbnRlbnRJbnNl
dCgpOworICAgIG1fY29udGVudEhvc3RMYXllci0+c2V0UG9zaXRpb24oeyAwLCB0b3BDb250ZW50
SW5zZXQgfSk7CisgICAgbV9jb250ZW50SG9zdExheWVyLT5zZXRTaXplKHZpZXdTaXplKTsKKwor
ICAgIG1fY29udGVudExheWVyLT5zZXRTaXplKGNvbnRlbnRTaXplKTsKK30KKwordm9pZCBMYXll
ckNvbnRyb2xsZXI6OmF0dGFjaFJvb3RMYXllcigpCit7CisgICAgYXV0byBwYWdlID0gbV92aWV3
LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKG1fdmlldy5mcmFtZSgpLCBy
b290R3JhcGhpY3NMYXllcigpKTsKK30KKworR3JhcGhpY3NMYXllckZhY3RvcnkqIExheWVyQ29u
dHJvbGxlcjo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKSBjb25zdAoreworICAgIGF1dG8gcGFnZSA9
IG1fdmlldy5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5ncmFwaGljc0xheWVyRmFjdG9y
eSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBEaXNwbGF5Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNTU5OGRmNWMxM2YxYTMxMzc4MmE3Y2IwYzRiZTkwODgzNTMzODg5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXkvRGlzcGxheUxh
eWVyQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAi
RGlzcGxheVJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiTGF5
b3V0VW5pdHMuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgR3JhcGhpY3NMYXllcjsKK2NsYXNzIEdyYXBoaWNzTGF5ZXJGYWN0b3J5
OworCituYW1lc3BhY2UgTGF5b3V0IHsKK2NsYXNzIExheW91dFN0YXRlOworfQorCituYW1lc3Bh
Y2UgRGlzcGxheSB7CisKK2NsYXNzIFZpZXc7CisKKy8vIEEgY29udHJvbGxlciBvYmplY3QgdGhh
dCBtYWtlcyBsYXllcml6YXRpb24gZGVjaXNpb25zIGZvciBhIGRpc3BsYXkgdHJlZSwgZm9yIGEg
c2luZ2xlIGRvY3VtZW50LgorY2xhc3MgTGF5ZXJDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKExheWVyQ29udHJvbGxlcik7CitwdWJsaWM6CisgICAgTGF5ZXJDb250cm9s
bGVyKFZpZXcmKTsKKyAgICB+TGF5ZXJDb250cm9sbGVyKCk7CisgICAgCisgICAgdm9pZCBwcmVw
YXJlRm9yRGlzcGxheShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJik7CisgICAgdm9pZCBmbHVz
aExheWVycygpOworCisgICAgY29uc3QgVmlldyYgdmlldygpIGNvbnN0IHsgcmV0dXJuIG1fdmll
dzsgfQorCitwcml2YXRlOgorICAgIHZvaWQgZW5zdXJlUm9vdExheWVyKExheW91dFNpemUgdmll
d1NpemUsIExheW91dFNpemUgY29udGVudFNpemUpOworICAgIHZvaWQgYXR0YWNoUm9vdExheWVy
KCk7CisgICAgdm9pZCBzZXR1cFJvb3RMYXllckhpZXJhcmNoeSgpOworICAgIHZvaWQgdXBkYXRl
Um9vdExheWVyR2VvbWV0cnkoTGF5b3V0U2l6ZSB2aWV3U2l6ZSwgTGF5b3V0U2l6ZSBjb250ZW50
U2l6ZSk7CisgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIAorICAgIEdy
YXBoaWNzTGF5ZXIqIHJvb3RHcmFwaGljc0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290TGF5
ZXIuZ2V0KCk7IH0KKyAgICBHcmFwaGljc0xheWVyKiBjb250ZW50TGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnRMYXllci5nZXQoKTsgfQorCisgICAgR3JhcGhpY3NMYXllckZhY3Rvcnkq
IGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgY29uc3Q7CisKKyAgICBGbG9hdFJlY3QgdmlzaWJsZVJl
Y3RGb3JMYXllckZsdXNoaW5nKCkgY29uc3Q7CisKKyAgICBjbGFzcyBSb290TGF5ZXJDbGllbnQg
OiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBSb290
TGF5ZXJDbGllbnQoTGF5ZXJDb250cm9sbGVyJik7CisKKyAgICBwcml2YXRlOgorICAgICAgICAv
LyBHcmFwaGljc0xheWVyQ2xpZW50IGltcGxlbWVudGF0aW9uCisgICAgICAgIHZvaWQgbm90aWZ5
Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikgZmluYWw7CisgICAgICAgIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IpIGZpbmFsOworCisgICAg
ICAgIExheWVyQ29udHJvbGxlciYgbV9sYXllckNvbnRyb2xsZXI7CisgICAgfTsKKworICAgIFZp
ZXcmIG1fdmlldzsKKyAgICBSb290TGF5ZXJDbGllbnQgbV9yb290TGF5ZXJDbGllbnQ7CisKKyAg
ICBSZWZQdHI8R3JhcGhpY3NMYXllcj4gbV9yb290TGF5ZXI7CisgICAgUmVmUHRyPEdyYXBoaWNz
TGF5ZXI+IG1fY29udGVudEhvc3RMYXllcjsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllcj4gbV9j
b250ZW50TGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBEaXNwbGF5Cit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kYWJhNTgwY2UzYWExNGRiZTMxNDZhZWE2NmFhNzM0ZDc5NzA3Y2ZiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXkvRGlzcGxheVZpZXcuY3BwCkBA
IC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRGlzcGxheVZpZXcuaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRl
ICJGcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgor
I2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBE
aXNwbGF5IHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFZpZXcpOworCitWaWV3OjpW
aWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQorICAgIDogbV9mcmFtZVZpZXcoZnJhbWVWaWV3KQor
ICAgICwgbV9sYXllckNvbnRyb2xsZXIoKnRoaXMpCit7Cit9CisKK1ZpZXc6On5WaWV3KCkKK3sK
K30KKworRnJhbWUmIFZpZXc6OmZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFtZVZp
ZXcuZnJhbWUoKTsKK30KKworUGFnZSogVmlldzo6cGFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZnJhbWVWaWV3LmZyYW1lKCkucGFnZSgpOworfQorCitjb25zdCBMYXlvdXQ6OkxheW91dFN0
YXRlKiBWaWV3OjpsYXlvdXRTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWVWaWV3
LmxheW91dENvbnRleHQoKS5sYXlvdXRGb3JtYXR0aW5nU3RhdGUoKTsKK30KKwordm9pZCBWaWV3
OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7CisgICAgYXV0byogbGF5b3V0U3RhdGUgPSB0aGlzLT5s
YXlvdXRTdGF0ZSgpOworICAgIGlmICghbGF5b3V0U3RhdGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fbGF5ZXJDb250cm9sbGVyLnByZXBhcmVGb3JEaXNwbGF5KCpsYXlvdXRTdGF0ZSk7Cit9
CisKK3ZvaWQgVmlldzo6Zmx1c2hMYXllcnMoKQoreworICAgIG1fbGF5ZXJDb250cm9sbGVyLmZs
dXNoTGF5ZXJzKCk7Cit9CisKKworCit9IC8vIG5hbWVzcGFjZSBEaXNwbGF5Cit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlWaWV3
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5Vmlldy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMzOGRmYWZlNTUyZWFmMmQ1OTEzMThhM2Y1ODRiZTc4MTYzNGJhMWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5Vmlldy5oCkBAIC0w
LDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShMQVlP
VVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiRGlzcGxheUxheWVyQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIkRpc3BsYXlSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0VW5pdHMuaCIK
KyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRnJhbWU7CitjbGFzcyBGcmFtZVZpZXc7CitjbGFzcyBQYWdlOworCituYW1lc3BhY2UgTGF5
b3V0IHsKK2NsYXNzIExheW91dFN0YXRlOworY2xhc3MgTGF5b3V0VHJlZUNvbnRlbnQ7Cit9CisK
K25hbWVzcGFjZSBEaXNwbGF5IHsKKworLy8gVGhlIHJvb3Qgb2JqZWN0IHdoaWNoIHJlbmRlcnMg
YSBkaXNwbGF5IHRyZWUgZm9yIGEgc2luZ2xlIGRvY3VtZW50LgorY2xhc3MgVmlldyB7CisgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChWaWV3KTsKK3B1YmxpYzoKKyAgICBWaWV3KEZyYW1lVmll
dyYpOworICAgIH5WaWV3KCk7CisgICAgCisgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpOwor
ICAgIHZvaWQgZmx1c2hMYXllcnMoKTsKKworICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsKKyAgICBG
cmFtZVZpZXcmIGZyYW1lVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVWaWV3OyB9CisgICAg
RnJhbWUmIGZyYW1lKCkgY29uc3Q7CisKKyAgICBjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlKiBs
YXlvdXRTdGF0ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIEZyYW1lVmlldyYgbV9mcmFtZVZp
ZXc7CisgICAgTGF5ZXJDb250cm9sbGVyIG1fbGF5ZXJDb250cm9sbGVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgRGlzcGxheQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcAppbmRleCAwZDUxZDNhNzhmN2I0
Zjk0NmEyYzM5MTNiNjMxZjM1ZGM4NTY0YWE0Li40NmZjZjRmYjU0YTEwYTY2ZDdiMzZkOThiNTY5
ODBmN2I0M2M0NDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheVBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgdm9pZCBw
YWludElubGluZUNvbnRlbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBMYXlvdXRQb2ludCBh
YnNvbHV0ZU9mZgogICAgIH0KIH0KIAotc3RhdGljIEJveCBhYnNvbHV0ZURpc3BsYXlCb3goY29u
c3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IExheW91dDo6Qm94JiBs
YXlvdXRCb3hUb1BhaW50KQorQm94IFBhaW50ZXI6OmFic29sdXRlRGlzcGxheUJveChjb25zdCBM
YXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91
dEJveFRvUGFpbnQpCiB7CiAgICAgLy8gU2hvdWxkIG5ldmVyIHJlYWxseSBoYXBwZW4gYnV0IHRh
YmxlIGNvZGUgaXMgd2F5IHRvbyBpbmNvbXBsZXRlLgogICAgIGlmICghbGF5b3V0U3RhdGUuaGFz
RGlzcGxheUJveChsYXlvdXRCb3hUb1BhaW50KSkKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGF0aWMg
dm9pZCBwYWludFN1YnRyZWUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXQ6
OkxheW91dFN0YXRlJiBsYQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoIWxheW91
dFN0YXRlLmhhc0Rpc3BsYXlCb3gobGF5b3V0Qm94KSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgYXV0byBhYnNvbHV0ZURpc3BsYXlCb3ggPSBEaXNwbGF5OjphYnNvbHV0ZURpc3BsYXlC
b3gobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgICAgIGF1dG8gYWJzb2x1dGVEaXNwbGF5
Qm94ID0gUGFpbnRlcjo6YWJzb2x1dGVEaXNwbGF5Qm94KGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
OwogICAgICAgICBpZiAoIWRpcnR5UmVjdC5pbnRlcnNlY3RzKHNuYXBwZWRJbnRSZWN0KGFic29s
dXRlRGlzcGxheUJveC5yZWN0KCkpKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjQ4LDcg
KzI0OCw3IEBAIHN0YXRpYyBMYXlvdXRSZWN0IGNvbGxlY3RQYWludFJvb3RzQW5kQ29udGVudFJl
Y3QoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5CiAgICAgICAgICAgICBpZiAoaXNQYWlu
dFJvb3RDYW5kaWRhdGUobGF5b3V0Qm94KSkKICAgICAgICAgICAgICAgICBhcHBlbmRQYWludFJv
b3QobGF5b3V0Qm94KTsKICAgICAgICAgICAgIGlmIChsYXlvdXRTdGF0ZS5oYXNEaXNwbGF5Qm94
KGxheW91dEJveCkpCi0gICAgICAgICAgICAgICAgY29udGVudFJlY3QudW5pdGVJZk5vblplcm8o
RGlzcGxheTo6YWJzb2x1dGVEaXNwbGF5Qm94KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLnJlY3Qo
KSk7CisgICAgICAgICAgICAgICAgY29udGVudFJlY3QudW5pdGVJZk5vblplcm8oUGFpbnRlcjo6
YWJzb2x1dGVEaXNwbGF5Qm94KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLnJlY3QoKSk7CiAgICAg
ICAgICAgICBpZiAoIWlzPExheW91dDo6Q29udGFpbmVyQm94PihsYXlvdXRCb3gpIHx8ICFkb3du
Y2FzdDxMYXlvdXQ6OkNvbnRhaW5lckJveD4obGF5b3V0Qm94KS5oYXNDaGlsZCgpKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgbGF5b3V0Qm94TGlzdC5hcHBlbmQoZG93bmNh
c3Q8TGF5b3V0OjpDb250YWluZXJCb3g+KGxheW91dEJveCkuZmlyc3RDaGlsZCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmgKaW5k
ZXggMTc1ZjE4Y2U1ZjI5NDc3ZDVhMzQwYTViYTk1YTE2YmM2MmMwNTBmMS4uYmYxMDBmOTVhNWQy
YmNiZTQyYzRkMzk3NzVhNTZjMDVhNWQ0ODQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmgKQEAgLTQyLDYgKzQyLDggQEAgY2xh
c3MgUGFpbnRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcGFpbnQoY29uc3QgTGF5b3V0
OjpMYXlvdXRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCk7CiAgICAgc3RhdGljIHZvaWQgcGFpbnRJbmxpbmVGbG93KGNvbnN0IExheW91dDo6TGF5b3V0
U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmKTsKKworICAgIHN0YXRpYyBCb3ggYWJzb2x1dGVEaXNw
bGF5Qm94KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBjb25zdCBMYXlvdXQ6OkJveCYpOyAg
ICAKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA5MzU5YzJiN2ZkMzJlYjc2
YmU4MzJhNjkwNTQyYTY3MjA3MzAzNzM0Li44MThmODI3MjEwMmY4YWIwYTE3YTU2ODhlYmQ1NjAz
YWI0OWZiYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiRmxvYXRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiVGV4dFV0aWwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGM3NzA0NGEwNTlkZjhjZTljZjZhYTE5
OGRmYTFiYjVjNThjNTEyMDQuLjEzOGU4Zjg5NjlkYTlhNmE5YTQwYTU0N2IxNDU5M2YyOWM4ODBk
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEzMCw2ICsxMzAsNyBAQAogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKyNpbmNsdWRlICJE
aXNwbGF5Vmlldy5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKICNlbmRpZgogCkBAIC05
NTYsNiArOTU3LDE0IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxpbmdDb29yZGluYXRv
clNjcm9sbFNuYXBQcm9wZXJ0aWVzKCkgY29uc3QKIAogYm9vbCBGcmFtZVZpZXc6OmZsdXNoQ29t
cG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZShjb25zdCBGcmFtZSYgcm9vdEZyYW1lRm9yRmx1c2gp
CiB7CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGF5b3V0Rm9ybWF0dGluZ0NvbnRl
eHRFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHZpZXcgPSBleGlzdGluZ0Rpc3BsYXlW
aWV3KCkpCisgICAgICAgICAgICB2aWV3LT5mbHVzaExheWVycygpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisjZW5kaWYKKwogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0aGlz
LT5yZW5kZXJWaWV3KCk7CiAgICAgaWYgKCFyZW5kZXJWaWV3KQogICAgICAgICByZXR1cm4gdHJ1
ZTsgLy8gV2UgZG9uJ3Qgd2FudCB0byBrZWVwIHRyeWluZyB0byB1cGRhdGUgbGF5ZXJzIGlmIHdl
IGhhdmUgbm8gcmVuZGVyZXIuCkBAIC01MzQwLDYgKzUzNDksMjAgQEAgUmVuZGVyVmlldyogRnJh
bWVWaWV3OjpyZW5kZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4gZnJhbWUoKS5jb250ZW50UmVu
ZGVyZXIoKTsKIH0KIAorI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorRGlz
cGxheTo6VmlldyogRnJhbWVWaWV3OjpleGlzdGluZ0Rpc3BsYXlWaWV3KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9kaXNwbGF5Vmlldy5nZXQoKTsKK30KKworRGlzcGxheTo6VmlldyYgRnJhbWVW
aWV3OjpkaXNwbGF5VmlldygpCit7CisgICAgaWYgKCFtX2Rpc3BsYXlWaWV3KQorICAgICAgICBt
X2Rpc3BsYXlWaWV3ID0gbWFrZVVuaXF1ZTxEaXNwbGF5OjpWaWV3PigqdGhpcyk7CisgICAgcmV0
dXJuICptX2Rpc3BsYXlWaWV3OworfQorI2VuZGlmCisKIGludCBGcmFtZVZpZXc6Om1hcEZyb21M
YXlvdXRUb0NTU1VuaXRzKExheW91dFVuaXQgdmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHZh
bHVlIC8gKGZyYW1lKCkucGFnZVpvb21GYWN0b3IoKSAqIGZyYW1lKCkuZnJhbWVTY2FsZUZhY3Rv
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGQ3ZThkYjlhZjQwM2NlNTY4MjVkODI5
NjU4ZGJkN2E0MGE0NzI0YzguLjgzNWIwMGUwOWM1MzI4N2JlMTlhZmQ4NzE1MTM3NWQ4MzI1N2Yy
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNzQsNiArNzQsMTIgQEAgY2xhc3MgUmVu
ZGVyVmlldzsKIGNsYXNzIFJlbmRlcldpZGdldDsKIGNsYXNzIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OwogCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCituYW1lc3BhY2UgRGlz
cGxheSB7CitjbGFzcyBWaWV3OworfQorI2VuZGlmCisKIGVudW0gY2xhc3MgRnJhbWVGbGF0dGVu
aW5nOwogCiBQYWdpbmF0aW9uOjpNb2RlIHBhZ2luYXRpb25Nb2RlRm9yUmVuZGVyU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmKTsKQEAgLTEwMSw2ICsxMDcsMTEgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVuZGVyVmlldyogcmVuZGVyVmlldygpIGNvbnN0OwogCisjaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgRGlzcGxheTo6VmlldyogZXhpc3RpbmdE
aXNwbGF5VmlldygpIGNvbnN0OworICAgIERpc3BsYXk6OlZpZXcmIGRpc3BsYXlWaWV3KCk7Cisj
ZW5kaWYKKwogICAgIGludCBtYXBGcm9tTGF5b3V0VG9DU1NVbml0cyhMYXlvdXRVbml0KSBjb25z
dDsKICAgICBMYXlvdXRVbml0IG1hcEZyb21DU1NUb0xheW91dFVuaXRzKGludCkgY29uc3Q7CiAK
QEAgLTg0Miw2ICs4NTMsMTAgQEAgcHJpdmF0ZToKICAgICBjb25zdCBSZWY8RnJhbWU+IG1fZnJh
bWU7CiAgICAgRnJhbWVWaWV3TGF5b3V0Q29udGV4dCBtX2xheW91dENvbnRleHQ7CiAKKyNpZiBF
TkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlz
cGxheTo6Vmlldz4gbV9kaXNwbGF5VmlldzsKKyNlbmRpZgorCiAgICAgSGFzaFNldDxXaWRnZXQq
PiBtX3dpZGdldHNJblJlbmRlclRyZWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExpc3RIYXNoU2V0
PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+IG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGU7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYWtIYXNoU2V0PFJlbmRlckVsZW1lbnQ+PiBtX3Nsb3dSZXBhaW50
T2JqZWN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDZjMjgwZmMwM2U2ZTMwMmE5NjA0NTdkNThi
NGJkZTgwNzAzYzE0ZTAuLmY2OTQwNWVjMjYwZjJiZmNiY2ZjMzJmM2IwZWU3MjYyMWM4OWQ0OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTY2LDYgKzE2NiwxMCBAQAogI2luY2x1ZGUgIldlYkdM
U3RhdGVUcmFja2VyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19D
T05URVhUKQorI2luY2x1ZGUgIkRpc3BsYXlWaWV3LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgSGFzaFNldDxQYWdlKj4mIGFsbFBhZ2VzKCkKQEAgLTE1MjgsNiAr
MTUzMiwxNSBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAgIC8vIENv
ZGUgaGVyZSBzaG91bGQgZG8gb25jZS1wZXItZnJhbWUgd29yayB0aGF0IG5lZWRzIHRvIGJlIGRv
bmUgYmVmb3JlIHBhaW50aW5nLCBhbmQgcmVxdWlyZXMKICAgICAvLyBsYXlvdXQgdG8gYmUgdXAt
dG8tZGF0ZS4gSXQgc2hvdWxkIG5vdCBydW4gc2NyaXB0LCB0cmlnZ2VyIGxheW91dCwgb3IgZGly
dHkgbGF5b3V0LgogCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHRFbmFibGVkKCkpIHsKKyAgICAgICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1
bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBkb2N1
bWVudC52aWV3KCkpCisgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5kaXNwbGF5VmlldygpLnBy
ZXBhcmVGb3JEaXNwbGF5KCk7CisgICAgICAgIH0pOworICAgIH0KKyNlbmRpZgorCiAgICAgZm9y
RWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgaWYgKGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS51cGRhdGVDdXJzb3JJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oCmluZGV4IGY0YWYx
NWM3NTY5MTg1ZDY4NWQ4MTc4ZjE0ZmQ5M2M0OTFkYTQ2ZDIuLjQ1Y2M5MzA0YjZiYmM0ZTAzNDcz
NThmZDFmNmE1MjgzZWQ3MzU0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmgKQEAgLTQxLDE3ICs0MSwx
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQbGF0Zm9ybURpc3BsYXlYMTEgZmluYWwg
OiBwdWJsaWMgUGxhdGZvcm1EaXNwbGF5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtRGlzcGxheT4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybURpc3BsYXk+IGNyZWF0ZShEaXNwbGF5Kik7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+IGNyZWF0ZSg6OkRpc3BsYXkqKTsKIAogICAgIHZp
cnR1YWwgflBsYXRmb3JtRGlzcGxheVgxMSgpOwogCi0gICAgRGlzcGxheSogbmF0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9kaXNwbGF5OyB9CisgICAgOjpEaXNwbGF5KiBuYXRpdmUoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3BsYXk7IH0KICAgICB2b2lkKiB2aXN1YWwoKSBjb25zdDsKICAgICBib29s
IHN1cHBvcnRzWENvbXBvc2l0ZSgpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNYRGFtYWdlKE9w
dGlvbmFsPGludD4mIGRhbWFnZUV2ZW50QmFzZSwgT3B0aW9uYWw8aW50PiYgZGFtYWdlRXJyb3JC
YXNlKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBQbGF0Zm9ybURpc3BsYXlYMTEoRGlzcGxheSos
IE5hdGl2ZURpc3BsYXlPd25lZCk7CisgICAgUGxhdGZvcm1EaXNwbGF5WDExKDo6RGlzcGxheSos
IE5hdGl2ZURpc3BsYXlPd25lZCk7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMTsgfQogCkBAIC01OSw3ICs1OSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplRUdMRGlzcGxheSgpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKLSAgICBEaXNwbGF5KiBtX2Rpc3BsYXkgeyBudWxscHRyIH07CisgICAgOjpEaXNwbGF5
KiBtX2Rpc3BsYXkgeyBudWxscHRyIH07CiAgICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX3N1
cHBvcnRzWENvbXBvc2l0ZTsKICAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fc3VwcG9ydHNY
RGFtYWdlOwogICAgIG11dGFibGUgT3B0aW9uYWw8aW50PiBtX2RhbWFnZUV2ZW50QmFzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YRXJyb3JUcmFw
cGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWEVycm9yVHJhcHBl
ci5oCmluZGV4IDYxYmFhYmU3YWQ5MWYwMjBjMjVjZTk5YjFmNzRlMWU0NzQ2M2M0N2QuLjg5OTc0
ODQ2NjRjMmE3MTYwNDEzOTc4ZWI3MDUxNjZkNjg5NWUwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YRXJyb3JUcmFwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hFcnJvclRyYXBwZXIuaApAQCAtMzUsNyAr
MzUsNyBAQCBjbGFzcyBYRXJyb3JUcmFwcGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShY
RXJyb3JUcmFwcGVyKTsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFBvbGljeSB7IElnbm9yZSwg
V2FybiwgQ3Jhc2ggfTsKLSAgICBYRXJyb3JUcmFwcGVyKERpc3BsYXkqLCBQb2xpY3kgPSBQb2xp
Y3k6Oklnbm9yZSwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZXhwZWN0ZWRFcnJvcnMgPSB7IH0p
OworICAgIFhFcnJvclRyYXBwZXIoOjpEaXNwbGF5KiwgUG9saWN5ID0gUG9saWN5OjpJZ25vcmUs
IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGV4cGVjdGVkRXJyb3JzID0geyB9KTsKICAgICB+WEVy
cm9yVHJhcHBlcigpOwogCiAgICAgdW5zaWduZWQgY2hhciBlcnJvckNvZGUoKSBjb25zdDsKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVycm9yRXZlbnQoWEVy
cm9yRXZlbnQqKTsKIAotICAgIERpc3BsYXkqIG1fZGlzcGxheSB7IG51bGxwdHIgfTsKKyAgICA6
OkRpc3BsYXkqIG1fZGlzcGxheSB7IG51bGxwdHIgfTsKICAgICBQb2xpY3kgbV9wb2xpY3kgeyBQ
b2xpY3k6Oklnbm9yZSB9OwogICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX2V4cGVjdGVkRXJy
b3JzOwogICAgIFhFcnJvckhhbmRsZXIgbV9wcmV2aW91c0Vycm9ySGFuZGxlciB7IG51bGxwdHIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5p
cXVlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZVB0
ci5oCmluZGV4IDM3YTE4YzI5ZDVlYjA1OGQ5YWQ3NjkxMzllZjc2MjViYzJjMDdmNzMuLmVkMWNj
NzQ0Y2QwNWQwZmQ2N2Y0MTNlNjUwNzAyYTAwM2Q0Nzc1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlUHRyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWVQdHIuaApAQCAtMzIsNyArMzIsNyBA
QAogCiAjaWYgVVNFKEdMWCkKIHR5cGVkZWYgc3RydWN0IF9fR0xYY29udGV4dFJlYyogR0xYQ29u
dGV4dDsKLWV4dGVybiAiQyIgdm9pZCBnbFhEZXN0cm95Q29udGV4dChEaXNwbGF5KiwgR0xYQ29u
dGV4dCk7CitleHRlcm4gIkMiIHZvaWQgZ2xYRGVzdHJveUNvbnRleHQoOjpEaXNwbGF5KiwgR0xY
Q29udGV4dCk7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5j
cHAKaW5kZXggYmUxOWI2MDA3YzljMGZiZmZmYjg1OWU0MGZkMzQ3NTE0OTNmZTdkMS4uYjZlZTJm
MGJiN2YxNDQzMzA3NTE5YTQwZTM2MGZiZTFiM2UwZTQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3Bw
CkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBPcHRp
b25hbDxpbnQ+IHNfZGFtYWdlRXZlbnRCYXNlOwogc3RhdGljIE9wdGlvbmFsPGludD4gc19kYW1h
Z2VFcnJvckJhc2U7CkBAIC0xMzUsNyArMTM0LDcgQEAgcHJpdmF0ZToKIAogYm9vbCBBY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZVgxMTo6Y2hlY2tSZXF1aXJlbWVudHMoKQogewotICAgIGF1dG8mIGRp
c3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheSgpKTsKKyAgICBhdXRvJiBkaXNwbGF5ID0gZG93bmNhc3Q8V2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5WDExPihXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXko
KSk7CiAgICAgcmV0dXJuIGRpc3BsYXkuc3VwcG9ydHNYQ29tcG9zaXRlKCkgJiYgZGlzcGxheS5z
dXBwb3J0c1hEYW1hZ2Uoc19kYW1hZ2VFdmVudEJhc2UsIHNfZGFtYWdlRXJyb3JCYXNlKTsKIH0K
IApAQCAtMTYxLDggKzE2MCw4IEBAIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjp+QWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmVYMTEoKQogICAgIGlmICghbV9zdXJmYWNlICYmICFtX2RhbWFnZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRm
b3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgp
OwotICAgIFhFcnJvclRyYXBwZXIgdHJhcHBlcihkaXNwbGF5LCBYRXJyb3JUcmFwcGVyOjpQb2xp
Y3k6OkNyYXNoLCB7IEJhZERyYXdhYmxlLCB4RGFtYWdlRXJyb3JDb2RlKEJhZERhbWFnZSkgfSk7
CisgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxh
eVgxMT4oV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgp
OworICAgIFdlYkNvcmU6OlhFcnJvclRyYXBwZXIgdHJhcHBlcihkaXNwbGF5LCBXZWJDb3JlOjpY
RXJyb3JUcmFwcGVyOjpQb2xpY3k6OkNyYXNoLCB7IEJhZERyYXdhYmxlLCB4RGFtYWdlRXJyb3JD
b2RlKEJhZERhbWFnZSkgfSk7CiAgICAgaWYgKG1fZGFtYWdlKSB7CiAgICAgICAgIFhEYW1hZ2VO
b3RpZmllcjo6c2luZ2xldG9uKCkucmVtb3ZlKG1fZGFtYWdlLmdldCgpKTsKICAgICAgICAgbV9k
YW1hZ2UucmVzZXQoKTsKQEAgLTE3NiwxMCArMTc1LDEwIEBAIHZvaWQgQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVYMTE6OnVwZGF0ZShjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250
ZXh0CiAgICAgaWYgKG1fc3VyZmFjZSAmJiBjYWlyb194bGliX3N1cmZhY2VfZ2V0X2RyYXdhYmxl
KG1fc3VyZmFjZS5nZXQoKSkgPT0gcGl4bWFwKQogICAgICAgICByZXR1cm47CiAKLSAgICBEaXNw
bGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3Bs
YXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7CisgICAgRGlzcGxheSogZGlzcGxheSA9IGRv
d25jYXN0PFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheVgxMT4oV2ViQ29yZTo6UGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwogCiAgICAgaWYgKG1fc3VyZmFjZSkgewot
ICAgICAgICBYRXJyb3JUcmFwcGVyIHRyYXBwZXIoZGlzcGxheSwgWEVycm9yVHJhcHBlcjo6UG9s
aWN5OjpDcmFzaCwgeyBCYWREcmF3YWJsZSwgeERhbWFnZUVycm9yQ29kZShCYWREYW1hZ2UpIH0p
OworICAgICAgICBXZWJDb3JlOjpYRXJyb3JUcmFwcGVyIHRyYXBwZXIoZGlzcGxheSwgV2ViQ29y
ZTo6WEVycm9yVHJhcHBlcjo6UG9saWN5OjpDcmFzaCwgeyBCYWREcmF3YWJsZSwgeERhbWFnZUVy
cm9yQ29kZShCYWREYW1hZ2UpIH0pOwogICAgICAgICBpZiAobV9kYW1hZ2UpIHsKICAgICAgICAg
ICAgIFhEYW1hZ2VOb3RpZmllcjo6c2luZ2xldG9uKCkucmVtb3ZlKG1fZGFtYWdlLmdldCgpKTsK
ICAgICAgICAgICAgIG1fZGFtYWdlLnJlc2V0KCk7CkBAIC0xOTUsMTQgKzE5NCwxNCBAQCB2b2lk
IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjp1cGRhdGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4
dCYgbGF5ZXJUcmVlQ29udGV4dAogICAgIGlmICghZHJhd2luZ0FyZWEpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEludFNpemUgc2l6ZSA9IGRyYXdpbmdBcmVhLT5zaXplKCk7CisgICAgV2ViQ29y
ZTo6SW50U2l6ZSBzaXplID0gZHJhd2luZ0FyZWEtPnNpemUoKTsKICAgICBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvciA9IG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIHNpemUuc2Nh
bGUoZGV2aWNlU2NhbGVGYWN0b3IpOwogCi0gICAgWEVycm9yVHJhcHBlciB0cmFwcGVyKGRpc3Bs
YXksIFhFcnJvclRyYXBwZXI6OlBvbGljeTo6Q3Jhc2gsIHsgQmFkRHJhd2FibGUsIHhEYW1hZ2VF
cnJvckNvZGUoQmFkRGFtYWdlKSB9KTsKLSAgICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNw
bGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCkgPT0gZ2Rr
X3gxMV9kaXNwbGF5X2dldF94ZGlzcGxheShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpKSk7Cisg
ICAgV2ViQ29yZTo6WEVycm9yVHJhcHBlciB0cmFwcGVyKGRpc3BsYXksIFdlYkNvcmU6OlhFcnJv
clRyYXBwZXI6OlBvbGljeTo6Q3Jhc2gsIHsgQmFkRHJhd2FibGUsIHhEYW1hZ2VFcnJvckNvZGUo
QmFkRGFtYWdlKSB9KTsKKyAgICBBU1NFUlQoZG93bmNhc3Q8V2ViQ29yZTo6UGxhdGZvcm1EaXNw
bGF5WDExPihXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZl
KCkgPT0gZ2RrX3gxMV9kaXNwbGF5X2dldF94ZGlzcGxheShnZGtfZGlzcGxheV9nZXRfZGVmYXVs
dCgpKSk7CiAjaWYgVVNFKEdUSzQpCi0gICAgYXV0byogdmlzdWFsID0gV0tfWFZJU1VBTChkb3du
Y2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgp
KSk7CisgICAgYXV0byogdmlzdWFsID0gV0tfWFZJU1VBTChkb3duY2FzdDxXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXlYMTE+KFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgp
KSk7CiAjZWxzZQogICAgIEdka1Zpc3VhbCogZ2RrVmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfcmdi
YV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKICAgICBpZiAoIWdka1Zpc3VhbCkK
QEAgLTIxMCw3ICsyMDksNyBAQCB2b2lkIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjp1cGRh
dGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dAogICAgIGF1dG8qIHZp
c3VhbCA9IEdES19WSVNVQUxfWFZJU1VBTChnZGtWaXN1YWwpOwogI2VuZGlmCiAgICAgbV9zdXJm
YWNlID0gYWRvcHRSZWYoY2Fpcm9feGxpYl9zdXJmYWNlX2NyZWF0ZShkaXNwbGF5LCBwaXhtYXAs
IHZpc3VhbCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7Ci0gICAgY2Fpcm9TdXJmYWNl
U2V0RGV2aWNlU2NhbGUobV9zdXJmYWNlLmdldCgpLCBkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNl
U2NhbGVGYWN0b3IpOworICAgIFdlYkNvcmU6OmNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKG1f
c3VyZmFjZS5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKTsKICAg
ICBtX2RhbWFnZSA9IFhEYW1hZ2VDcmVhdGUoZGlzcGxheSwgcGl4bWFwLCBYRGFtYWdlUmVwb3J0
Tm9uRW1wdHkpOwogICAgIFhEYW1hZ2VOb3RpZmllcjo6c2luZ2xldG9uKCkuYWRkKG1fZGFtYWdl
LmdldCgpLCBbdGhpc10gewogICAgICAgICBpZiAobV93ZWJQYWdlLmlzVmlld1Zpc2libGUoKSkK
QEAgLTIyOSw3ICsyMjgsNyBAQCB2b2lkIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpzbmFw
c2hvdChHdGtTbmFwc2hvdCogZ3RrU25hcHNob3QpCiAgICAgLy8gYXMgZGlydHkgdG8gZW5zdXJl
IHdlIGFsd2F5cyByZW5kZXIgdGhlIHVwZGF0ZWQgY29udGVudHMgYXMgc29vbiBhcyBwb3NzaWJs
ZS4KICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9zdXJmYWNlLmdldCgpKTsKIAotICAg
IEZsb2F0U2l6ZSB2aWV3U2l6ZShndGtfd2lkZ2V0X2dldF93aWR0aChtX3dlYlBhZ2Uudmlld1dp
ZGdldCgpKSwgZ3RrX3dpZGdldF9nZXRfaGVpZ2h0KG1fd2ViUGFnZS52aWV3V2lkZ2V0KCkpKTsK
KyAgICBXZWJDb3JlOjpGbG9hdFNpemUgdmlld1NpemUoZ3RrX3dpZGdldF9nZXRfd2lkdGgobV93
ZWJQYWdlLnZpZXdXaWRnZXQoKSksIGd0a193aWRnZXRfZ2V0X2hlaWdodChtX3dlYlBhZ2Uudmll
d1dpZGdldCgpKSk7CiAgICAgZ3JhcGhlbmVfcmVjdF90IHJlY3QgPSBHUkFQSEVORV9SRUNUX0lO
SVQoMCwgMCwgdmlld1NpemUud2lkdGgoKSwgdmlld1NpemUuaGVpZ2h0KCkpOwogICAgIFJlZlB0
cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGd0a19zbmFwc2hvdF9hcHBlbmRfY2Fpcm8oZ3RrU25h
cHNob3QsICZyZWN0KSk7CiAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBt
X3N1cmZhY2UuZ2V0KCksIDAsIDApOwpAQCAtMjM5LDcgKzIzOCw3IEBAIHZvaWQgQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVYMTE6OnNuYXBzaG90KEd0a1NuYXBzaG90KiBndGtTbmFwc2hvdCkKICAg
ICBjYWlyb19zdXJmYWNlX2ZsdXNoKG1fc3VyZmFjZS5nZXQoKSk7CiB9CiAjZWxzZQotYm9vbCBB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6cGFpbnQoY2Fpcm9fdCogY3IsIGNvbnN0IEludFJl
Y3QmIGNsaXBSZWN0KQorYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6cGFpbnQoY2Fp
cm9fdCogY3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmICgh
bV9zdXJmYWNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzQ2OGJlNmRhNWJlNWE4
MzAxNmQ2MmNkYTJkOTRmMTVmNTY1OTQyZi4uOTUwYWM5NzYyOTZlNjVmNjQ1MDk3M2YwODRlZWQ5
N2RkZTg5ZjMyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA5LTEzICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpcnN0IHN0ZXBzIHRvd2Fy
ZHMgTEZDIHBhaW50aW5nIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNjQ2NgorCisgICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1
anRhcy4KKworICAgICAgICBOb3cgdGhhdCB3ZSBhY3R1YWxseSBwYWludCB3aXRoIExGQywgc29t
ZSB0ZXN0cyBmYWlsIGJlY2F1c2Ugb2YgbWlzc2luZyBmZWF0dXJlcyBpbgorICAgICAgICB0aGUg
dmVyeSBiYXNpYyBMRkMgcGFpbnQgcGF0aC4gTWFyayB0aGVzZSBhcyBmYWlsdXJlcyBmb3Igbm93
LgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIw
LTA5LTEwICBLYXJsIFJhY2tsZXIgIDxyYWNrbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgdGVzdCBleHBlY3RhdGlvbiBub3cgdGhhdCB0ZXN0IGlzIHBhc3NpbmcuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNzgwNTZiMmI1MjA5
NjQ2NGM2NGI3ODdlMzMxNmY1M2ViMTc4ZGNiOS4uY2I5MzU0YTA2ZDU0NjcwNmQ2MjMyY2MwYjcz
OWFjM2Q3OTZhN2JlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMTIzNCw2ICsxMjM0LDI0IEBAIHdlYmtpdC5vcmcvYi8xNzk3OTYgaHR0
cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtdmFsaWRhdGlvbi1iYWNrLW5hdmln
CiBbIGFybTY0IF0gZmFzdC9yZXBsYWNlZC9uby1mb2N1cy1yaW5nLWVtYmVkLmh0bWwgWyBTa2lw
IF0KIFsgYXJtNjQgXSBmYXN0L3JlcGxhY2VkL25vLWZvY3VzLXJpbmctb2JqZWN0Lmh0bWwgWyBT
a2lwIF0KIAorIyBMRkMgcGFpbnRpbmcgaXMgd29yayBpbiBwcm9ncmVzcword2Via2l0Lm9yZy9i
LzIxNjQ3MSBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2Jsb2NrLW9ubHkvcmVwbGFjZWQt
aW50cmluc2ljLXdpZHRoLXNpbXBsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZW1wdHktdGFibGUtd2l0
aC1zcGVjaWZpZWQtaGVpZ2h0LXF1aXJrLXNpbXBsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZW1wdHkt
dGFibGUtd2l0aC1zcGVjaWZpZWQtaGVpZ2h0LXN0YW5kYXJkcy1zaW1wbGUuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxNjQ3MSBmYXN0L2xheW91dGZvcm1hdHRpbmdj
b250ZXh0L2Zsb2F0LWluLWlubGluZS1jb250ZXh0LXNpbXBsZS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQv
ZmxvYXRzLXNocmlua2luZy1saW5lLXNpbXBsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvc3ViZnJhbWUt
d2l0aC1kaXNwbGF5LW5vbmUtaHRtbC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdGFibGUtY2VsbC12ZXJ0
aWNhbC1hbGlnbm1lbnQtc2ltcGxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5v
cmcvYi8yMTY0NzEgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC90YWJsZS1zaW1wbGUtYm9y
ZGVyLWNvbGxhcHNlLXdpdGgtcGFkZGluZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvMjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdGFibGUtc2ltcGxl
LWJvcmRlci1jb2xsYXBzZTMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9i
LzIxNjQ3MSBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3RhYmxlLXNpbXBsZS1jb2xsYXBz
ZWQtcm93LWJvcmRlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE2
NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdGFibGUtc2ltcGxlLWNvbGxhcHNlZC1y
b3ctYm9yZGVyMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE2NDcx
IGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdGFibGUtc2ltcGxlLWNvbGxhcHNlZC10Ym9k
eS1ib3JkZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxNjQ3MSBm
YXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3RhYmxlLXNpbXBsZS1tdWx0aXBsZS1zZWN0aW9u
cy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE2NDcxIGZhc3QvbGF5
b3V0Zm9ybWF0dGluZ2NvbnRleHQvdGFibGUtc2ltcGxlLXJvdy1ib3JkZXIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxNjQ3MSBmYXN0L2xheW91dGZvcm1hdHRpbmdj
b250ZXh0L3RhYmxlLXNpbXBsZS1yb3dzcGFuLXdpdGgtc3BhY2luZy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE2NDcxIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRl
eHQvdGFibGUtc2ltcGxlLXRoZWFkLWJvcmRlci1pZ25vcmUuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQorCiAjIHJkYXI6Ly82NjcwMzc3MyAoUkVHUkVTU0lPTiAoMjBBMjMxNi0yMEEyMzQ4Yik6
IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbi1ibG9ja2Vk
LWluLWFib3V0LWJsYW5rLXdpbmRvdy5odG1sIGlzIGEgY29uc3RhbnQgZmFpbHVyZSkKIFsgYXJt
NjQgXSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW4tYmxv
Y2tlZC1pbi1hYm91dC1ibGFuay13aW5kb3cuaHRtbCBbIFNraXAgXQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>