<?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>218144</bug_id>
          
          <creation_ts>2020-10-23 18:17:23 -0700</creation_ts>
          <short_desc>Add null checks and smart pointers in PDF and Plugin code</short_desc>
          <delta_ts>2020-10-26 13:06:19 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1701179</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-23 18:17:23 -0700</bug_when>
    <thetext>Add null checks and smart pointers in PDF and Plugin code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701182</commentid>
    <comment_count>1</comment_count>
      <attachid>412220</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-23 18:29:24 -0700</bug_when>
    <thetext>Created attachment 412220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701185</commentid>
    <comment_count>2</comment_count>
      <attachid>412221</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-23 18:40:02 -0700</bug_when>
    <thetext>Created attachment 412221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701523</commentid>
    <comment_count>3</comment_count>
      <attachid>412221</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-10-26 10:40:38 -0700</bug_when>
    <thetext>Comment on attachment 412221
Patch

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

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:620
&gt; +        Document* document = frame.coreFrame()-&gt;document();

auto

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:1855
&gt; +    m_frame-&gt;page()-&gt;updatePDFHUDLocation(*this, frameForHUD());

Are we sure page is non null?

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:1922
&gt;      LocalDefaultSystemAppearance localAppearance(page-&gt;useDarkAppearance());

Check page?

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:2302
&gt; +    if (!m_frame)

Could do if (!m_frame || !m_frame-&gt;coreFrame()).

&gt; Source/WebKit/WebProcess/WebPage/WebFrame.h:160
&gt; +    void setLoadListener(LoadListener* loadListener) { m_loadListener = makeWeakPtr(loadListener); }

Could we pass a LoadListener&amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701525</commentid>
    <comment_count>4</comment_count>
      <attachid>412221</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-26 10:46:12 -0700</bug_when>
    <thetext>Comment on attachment 412221
Patch

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

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebFrame.h:160
&gt;&gt; +    void setLoadListener(LoadListener* loadListener) { m_loadListener = makeWeakPtr(loadListener); }
&gt; 
&gt; Could we pass a LoadListener&amp;?

nope, but I&apos;ll update the old call sites that call it with 0 to call it with nullptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701529</commentid>
    <comment_count>5</comment_count>
      <attachid>412335</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-26 10:48:53 -0700</bug_when>
    <thetext>Created attachment 412335
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701549</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-26 11:41:02 -0700</bug_when>
    <thetext>Committed r268989: &lt;https://trac.webkit.org/changeset/268989&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412335.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701552</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-26 11:42:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/70688355&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701578</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-10-26 13:06:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/69931543&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412220</attachid>
            <date>2020-10-23 18:29:24 -0700</date>
            <delta_ts>2020-10-23 18:48:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218144-20201023192923.patch</filename>
            <type>text/plain</type>
            <size>30616</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFjMGE2NzQ1YTViOTNhMWJl
MDRmMmU4YmM5NWI4YTg2ZDNkYjRhMDEuLjYzYjYxYzU5ODM3ODIxNTg0NTVjMzA3NGEzOGVjNzFk
Yjk0NmE2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjAtMTAtMjMgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgbnVsbCBj
aGVja3MgYW5kIHNtYXJ0IHBvaW50ZXJzIGluIFBERiBhbmQgUGx1Z2luIGNvZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE0NAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjk5MzE1NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSXQncyBuaWNlIHdoZW4gdGhpbmdzIGRvbid0IGNyYXNoLgorICAg
ICAgICBpc0JlaW5nQXN5bmNocm9ub3VzbHlJbml0aWFsaXplZCB3YXNuJ3QgY2FsbGVkIGFueXdo
ZXJlLCBzbyBJIHJlbW92ZWQgaXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdpbik6CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6flBERlBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6Z2V0UmVzb3VyY2VCeXRlc0F0UG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OnVwZGF0ZVNjcm9sbGJhcnMpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNyZWF0
ZVNjcm9sbGJhcik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aXNBY3RpdmUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmZvcmNlVXBkYXRlU2Nyb2xsYmFyc09uTWFp
blRocmVhZEZvclBlcmZvcm1hbmNlVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6anNQREZEb2NQcmludCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aW5z
dGFsbFBERkRvY3VtZW50KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp1cGRhdGVQYWdl
QW5kRGV2aWNlU2NhbGVGYWN0b3JzKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjYWxj
dWxhdGVTaXplcyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6d2lsbERldGFjaFJlbmRl
cmVyKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpkZXN0cm95KToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjpwYWludENvbnRyb2xGb3JMYXllckluQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9TY3JlZW4gY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmJvdW5kc09uU2NyZWVuIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UERGUGx1Z2luOjp2aXNpYmlsaXR5RGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjpzaG93Q29udGV4dE1lbnVBdFBvaW50KToKKyAgICAgICAgKFdlYktp
dDo6UERGUGx1Z2luOjpoYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luOjppc0Z1bGxGcmFtZVBsdWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6aGFuZGxlc1BhZ2VTY2FsZUZhY3RvciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6Y2xpY2tlZExpbmspOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnNh
dmUpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om9wZW5XaXRoUHJldmlldyk6CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c2F2ZVRvUERGKToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpvcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpzaG93RGVmaW5pdGlvbkZvckF0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpQREZQbHVnaW46Om5vdGlmeVNlbGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46Om5vdGlmeUN1cnNvckNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46OmF4T2JqZWN0Q2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46
OnBlcmZvcm1XZWJTZWFyY2gpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnBlcmZvcm1T
cG90bGlnaHRTZWFyY2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW46OlBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpbjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6Y29udHJvbGxlcik6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6Y29udHJvbGxlciBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpbjo6flBsdWdpbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW46OmNvbnRyb2xsZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW46OmNvbnRyb2xsZXIgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjpzZXRMb2FkTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
bG9hZExpc3RlbmVyIGNvbnN0KToKKwogMjAyMC0xMC0yMiAgQWRpdHlhIEtlZXJ0aGkgIDxha2Vl
cnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvbnRhY3QgUGlja2VyIEFQSV0gQWRkIHNrZWxl
dG9uIGltcGxlbWVudGF0aW9uIG9mIENvbnRhY3RzTWFuYWdlci5zZWxlY3QoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApp
bmRleCBlYTcxMWQzMmUyNTVmNzNjMzc1MmY0MjlmMGVhNzIyMTViOWM5MzNhLi44YjM3NDBmNGIx
MDFhZDkwZjUwZWQ1N2M4NTBiOTAzMGZjYzQzMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtMTE5LDcgKzEx
OSw3IEBAIGJvb2wgUGx1Z2luQ29udHJvbGxlclByb3h5Ojppbml0aWFsaXplKGNvbnN0IFBsdWdp
bkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QCiAgICAgaWYgKGNyZWF0aW9uUGFyYW1ldGVy
cy53aW5kb3dOUE9iamVjdElEKQogICAgICAgICBtX3dpbmRvd05QT2JqZWN0ID0gbV9jb25uZWN0
aW9uLT5ucFJlbW90ZU9iamVjdE1hcCgpLT5jcmVhdGVOUE9iamVjdFByb3h5KGNyZWF0aW9uUGFy
YW1ldGVycy53aW5kb3dOUE9iamVjdElELCBtX3BsdWdpbi5nZXQoKSk7CiAKLSAgICBib29sIHJl
dHVyblZhbHVlID0gbV9wbHVnaW4tPmluaXRpYWxpemUodGhpcywgY3JlYXRpb25QYXJhbWV0ZXJz
LnBhcmFtZXRlcnMpOworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSBtX3BsdWdpbi0+aW5pdGlhbGl6
ZSgqdGhpcywgY3JlYXRpb25QYXJhbWV0ZXJzLnBhcmFtZXRlcnMpOwogCiAgICAgaWYgKCFyZXR1
cm5WYWx1ZSkgewogICAgICAgICAvLyBHZXQgdGhlIHBsdWctaW4gc28gd2UgY2FuIHBhc3MgaXQg
dG8gcmVtb3ZlUGx1Z2luQ29udHJvbGxlclByb3h5LiBUaGUgcG9pbnRlciBpcyBvbmx5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uaAppbmRleCAzMWNlNTAyNGMzYWIzMjY3MzJhZjdiNmNjZDEwNzU5NGJmYzU3
N2RiLi4yNDc0OTE0NmQ5MGY0NTVmNjlmNTQzNTk2NGUwYjNiY2EzMWRjY2YyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmgKQEAgLTYwLDkgKzYwLDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0
cjxOZXRzY2FwZVBsdWdpbj4gZnJvbU5QUChOUFApOwogCi0gICAgLy8gSW4tcHJvY2VzcyBOZXRz
Y2FwZVBsdWdpbnMgZG9uJ3Qgc3VwcG9ydCBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24uCi0g
ICAgYm9vbCBpc0JlaW5nQXN5bmNocm9ub3VzbHlJbml0aWFsaXplZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBOUEVycm9yIHNl
dERyYXdpbmdNb2RlbChOUERyYXdpbmdNb2RlbCk7CiAgICAgTlBFcnJvciBzZXRFdmVudE1vZGVs
KE5QRXZlbnRNb2RlbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLmgKaW5kZXggZjY5MGNiMWRkZjgwODdhMTc4MzRmOGNhNDQzZDBmNDRlZjcw
MzMyZC4uM2M2ZjUyMzA0Yjk1ZmFiY2RiNzM4MTJmNzk4ZjllMWQzNzQyMzk0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtNDMs
NiArNDMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SYW5nZVNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRS
ZWY7CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVKU1ZhbHVlKiBKU09iamVjdFJlZjsKQEAgLTIxMyw4
ICsyMTQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbERldGFjaFJlbmRlcmVyKCkgZmluYWw7
CiAgICAgYm9vbCBwbHVnaW5IYW5kbGVzQ29udGVudE9mZnNldEZvckFjY2Vzc2liaWxpdHlIaXRU
ZXN0KCkgY29uc3QgZmluYWw7CiAgICAgCi0gICAgYm9vbCBpc0JlaW5nQXN5bmNocm9ub3VzbHlJ
bml0aWFsaXplZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0KICAgICBSZXRhaW5Q
dHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmcoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3BkZkRvY3VtZW50OyB9CiAgICAgTlNPYmplY3QgKmFjY2Vzc2liaWxpdHlPYmplY3Qo
KSBjb25zdCBmaW5hbDsKICAgICBpZCBhY2Nlc3NpYmlsaXR5QXNzb2NpYXRlZFBsdWdpblBhcmVu
dEZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopIGNvbnN0IGZpbmFsOwpAQCAtMzAzLDcgKzMw
Miw3IEBAIHByaXZhdGU6CiAgICAgUGx1Z2luVmlldyogcGx1Z2luVmlldygpOwogICAgIGNvbnN0
IFBsdWdpblZpZXcqIHBsdWdpblZpZXcoKSBjb25zdDsKIAotICAgIFdlYkZyYW1lJiBtX2ZyYW1l
OworICAgIFdlYWtQdHI8V2ViRnJhbWU+IG1fZnJhbWU7CiAKICAgICBib29sIG1faXNQb3N0U2Ny
aXB0IHsgZmFsc2UgfTsKICAgICBib29sIG1fcGRmRG9jdW1lbnRXYXNNdXRhdGVkIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCmluZGV4IGZkMjc3Y2JjNTEzMWI1YjYyNmFmMmE5N2I0ZjUxNjdhOWJlMTM1YWMuLmQ0MzYy
ODMzOGQzMjM5ODVjNWE1NjE4MmY4YmI0YTYxNWU0N2MxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtNTk2LDcgKzU5Niw3
IEBAIFJlZjxQREZQbHVnaW4+IFBERlBsdWdpbjo6Y3JlYXRlKFdlYkZyYW1lJiBmcmFtZSkKIAog
aW5saW5lIFBERlBsdWdpbjo6UERGUGx1Z2luKFdlYkZyYW1lJiBmcmFtZSkKICAgICA6IFBsdWdp
bihQREZQbHVnaW5UeXBlKQotICAgICwgbV9mcmFtZShmcmFtZSkKKyAgICAsIG1fZnJhbWUobWFr
ZVdlYWtQdHIoZnJhbWUpKQogICAgICwgbV9jb250YWluZXJMYXllcihhZG9wdE5TKFtbQ0FMYXll
ciBhbGxvY10gaW5pdF0pKQogICAgICwgbV9jb250ZW50TGF5ZXIoYWRvcHROUyhbW0NBTGF5ZXIg
YWxsb2NdIGluaXRdKSkKICAgICAsIG1fc2Nyb2xsQ29ybmVyTGF5ZXIoYWRvcHROUyhbW1dLUERG
UGx1Z2luU2Nyb2xsYmFyTGF5ZXIgYWxsb2NdIGluaXRXaXRoUERGUGx1Z2luOnRoaXNdKSkKQEAg
LTYxNyw3ICs2MTcsNyBAQCBpbmxpbmUgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUmIGZy
YW1lKQogICAgIG1fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpLnBhcmVudExheWVyID0gbV9jb250
ZW50TGF5ZXIuZ2V0KCk7CiAKICAgICBpZiAoc3VwcG9ydHNGb3JtcygpKSB7Ci0gICAgICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUuY29yZUZyYW1lKCktPmRvY3VtZW50KCk7CisgICAg
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpOwog
ICAgICAgICBtX2Fubm90YXRpb25Db250YWluZXIgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChk
aXZUYWcsIGZhbHNlKTsKICAgICAgICAgbV9hbm5vdGF0aW9uQ29udGFpbmVyLT5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGlkQXR0ciwgQXRvbVN0cmluZygiYW5ub3RhdGlvbkNv
bnRhaW5lciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKQEAgLTYzMCwx
MyArNjMwLDEzIEBAIGlubGluZSBQREZQbHVnaW46OlBERlBsdWdpbihXZWJGcmFtZSYgZnJhbWUp
CiAKICAgICBtX2FjY2Vzc2liaWxpdHlPYmplY3QgPSBhZG9wdE5TKFtbV0tQREZQbHVnaW5BY2Nl
c3NpYmlsaXR5T2JqZWN0IGFsbG9jXSBpbml0V2l0aFBERlBsdWdpbjp0aGlzXSk7CiAgICAgW21f
YWNjZXNzaWJpbGl0eU9iamVjdCBzZXRQZGZMYXllckNvbnRyb2xsZXI6bV9wZGZMYXllckNvbnRy
b2xsZXIuZ2V0KCldOwotICAgIFttX2FjY2Vzc2liaWxpdHlPYmplY3Qgc2V0UGFyZW50Om1fZnJh
bWUucGFnZSgpLT5hY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCldOworICAgIFttX2FjY2Vzc2li
aWxpdHlPYmplY3Qgc2V0UGFyZW50OmZyYW1lLnBhZ2UoKS0+YWNjZXNzaWJpbGl0eVJlbW90ZU9i
amVjdCgpXTsKIAogICAgIFttX2NvbnRhaW5lckxheWVyIGFkZFN1YmxheWVyOm1fY29udGVudExh
eWVyLmdldCgpXTsKICAgICBbbV9jb250YWluZXJMYXllciBhZGRTdWJsYXllcjptX3Njcm9sbENv
cm5lckxheWVyLmdldCgpXTsKICNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxP
Q0tJTkcpCiAgICAgaWYgKFttX3BkZkxheWVyQ29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHNldERldmljZUNvbG9yU3BhY2U6KV0pIHsKLSAgICAgICAgYXV0byB2aWV3ID0g
bV9mcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpOworICAgICAgICBhdXRvIHZpZXcgPSBmcmFtZS5j
b3JlRnJhbWUoKS0+dmlldygpOwogICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RGV2
aWNlQ29sb3JTcGFjZTpzY3JlZW5Db2xvclNwYWNlKHZpZXcpXTsKICAgICB9CiAjZW5kaWYKQEAg
LTY1Myw3ICs2NTMsNyBAQCBpbmxpbmUgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUmIGZy
YW1lKQogUERGUGx1Z2luOjp+UERGUGx1Z2luKCkKIHsKICNpZiBFTkFCTEUoVUlfUFJPQ0VTU19Q
REZfSFVEKQotICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCisgICAgaWYgKGF1
dG8qIHBhZ2UgPSBtX2ZyYW1lID8gbV9mcmFtZS0+cGFnZSgpIDogbnVsbHB0cikKICAgICAgICAg
cGFnZS0+cmVtb3ZlUERGSFVEKCp0aGlzKTsKICNlbmRpZgogfQpAQCAtOTY1LDcgKzk2NSw5IEBA
IHZvaWQgUERGUGx1Z2luOjpnZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbihzaXplX3QgY291bnQs
IG9mZl90IHBvc2l0aW9uLCBDb21wbGV0CiAgICAgYXV0byBpZGVudGlmaWVyID0gcmVxdWVzdC5p
ZGVudGlmaWVyKCk7CiAgICAgbV9vdXRzdGFuZGluZ0J5dGVSYW5nZVJlcXVlc3RzLnNldChpZGVu
dGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpKTsKIAotICAgIGF1dG8qIGNvcmVGcmFtZSA9IG1fZnJh
bWUuY29yZUZyYW1lKCk7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisgICAg
YXV0byogY29yZUZyYW1lID0gbV9mcmFtZS0+Y29yZUZyYW1lKCk7CiAgICAgaWYgKCFjb3JlRnJh
bWUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTI4OSw3ICsxMjkxLDcgQEAgdm9pZCBQREZQbHVn
aW46OnVwZGF0ZVNjcm9sbGJhcnMoKQogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRG
cmFtZVJlY3Qoc2Nyb2xsYmFyUmVjdCk7CiAgICAgfQogCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZp
ZXcgPSBtX2ZyYW1lLmNvcmVGcmFtZSgpLT52aWV3KCk7CisgICAgYXV0byogZnJhbWVWaWV3ID0g
bV9mcmFtZSA/IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkgOiBudWxscHRyOwogICAgIGlm
ICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm47CiAKQEAgLTEzNDEsOCArMTM0Myw4IEBAIFJl
ZjxTY3JvbGxiYXI+IFBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKQogICAgIH0KICAgICBkaWRBZGRTY3JvbGxiYXIod2lkZ2V0LnB0cigp
LCBvcmllbnRhdGlvbik7CiAKLSAgICBpZiAoYXV0byogZnJhbWUgPSBtX2ZyYW1lLmNvcmVGcmFt
ZSgpKSB7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgeworICAgIGlm
IChhdXRvKiBmcmFtZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA6IG51bGxwdHIp
IHsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgICAg
ICBpZiAocGFnZS0+aXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSkKICAgICAgICAgICAgICAgICBz
Y3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihwYWdlLT53aGVlbEV2ZW50
VGVzdE1vbml0b3IoKSk7CiAgICAgICAgIH0KQEAgLTE0NDMsOCArMTQ0NSw4IEBAIEludFJlY3Qg
UERGUGx1Z2luOjpzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KGJvb2wqKSBjb25zdAogCiBib29s
IFBERlBsdWdpbjo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIGlmIChGcmFtZSogY29yZUZyYW1l
ID0gbV9mcmFtZS5jb3JlRnJhbWUoKSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmVG
cmFtZS0+cGFnZSgpKQorICAgIGlmIChhdXRvKiBjb3JlRnJhbWUgPSBtX2ZyYW1lID8gbV9mcmFt
ZS0+Y29yZUZyYW1lKCkgOiBudWxscHRyKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gY29y
ZUZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICByZXR1cm4gcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuaXNBY3RpdmUoKTsKICAgICB9CiAKQEAgLTE0NTMsOCArMTQ1NSw4IEBAIGJvb2wgUERGUGx1
Z2luOjppc0FjdGl2ZSgpIGNvbnN0CiAKIGJvb2wgUERGUGx1Z2luOjpmb3JjZVVwZGF0ZVNjcm9s
bGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3JtYW5jZVRlc3RpbmcoKSBjb25zdAogewotICAgIGlm
IChGcmFtZSogY29yZUZyYW1lID0gbV9mcmFtZS5jb3JlRnJhbWUoKSkgewotICAgICAgICBpZiAo
UGFnZSogcGFnZSA9IGNvcmVGcmFtZS0+cGFnZSgpKQorICAgIGlmIChhdXRvKiBjb3JlRnJhbWUg
PSBtX2ZyYW1lID8gbV9mcmFtZS0+Y29yZUZyYW1lKCkgOiBudWxscHRyKSB7CisgICAgICAgIGlm
IChhdXRvKiBwYWdlID0gY29yZUZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICByZXR1cm4gcGFn
ZS0+c2V0dGluZ3MoKS5mb3JjZVVwZGF0ZVNjcm9sbGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3Jt
YW5jZVRlc3RpbmcoKTsKICAgICB9CiAKQEAgLTE1MjQsMTMgKzE1MjYsMTcgQEAgc3RhdGljIHZv
aWQganNQREZEb2NGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCiAKIEpTVmFsdWVSZWYgUERG
UGx1Z2luOjpqc1BERkRvY1ByaW50KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIFBE
RlBsdWdpbiogcGRmUGx1Z2luID0gc3RhdGljX2Nhc3Q8UERGUGx1Z2luKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBhdXRvKiBwZGZQbHVnaW4gPSBzdGF0aWNfY2FzdDxQ
REZQbHVnaW4qPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworCisgICAgYXV0byog
ZnJhbWUgPSBwZGZQbHVnaW4tPm1fZnJhbWUuZ2V0KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CiAKLSAgICBGcmFtZSogY29yZUZy
YW1lID0gcGRmUGx1Z2luLT5tX2ZyYW1lLmNvcmVGcmFtZSgpOworICAgIGF1dG8qIGNvcmVGcmFt
ZSA9IGZyYW1lLT5jb3JlRnJhbWUoKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CiAKLSAgICBQYWdlKiBwYWdlID0gY29yZUZy
YW1lLT5wYWdlKCk7CisgICAgYXV0byogcGFnZSA9IGNvcmVGcmFtZS0+cGFnZSgpOwogICAgIGlm
ICghcGFnZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CiAKQEAg
LTE2MzIsOCArMTYzOCw4IEBAIHZvaWQgUERGUGx1Z2luOjppbnN0YWxsUERGRG9jdW1lbnQoKQog
ICAgIGlmIChbbV9wZGZEb2N1bWVudCBpc0xvY2tlZF0pCiAgICAgICAgIGNyZWF0ZVBhc3N3b3Jk
RW50cnlGb3JtKCk7CiAKLSAgICBpZiAoW21fcGRmTGF5ZXJDb250cm9sbGVyIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Ioc2V0VVJMRnJhZ21lbnQ6KV0pCi0gICAgICAgIFttX3BkZkxheWVy
Q29udHJvbGxlciBzZXRVUkxGcmFnbWVudDptX2ZyYW1lLnVybCgpLmZyYWdtZW50SWRlbnRpZmll
cigpLmNyZWF0ZU5TU3RyaW5nKCkuZ2V0KCldOworICAgIGlmIChtX2ZyYW1lICYmIFttX3BkZkxh
eWVyQ29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFVSTEZyYWdtZW50
OildKQorICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0VVJMRnJhZ21lbnQ6bV9mcmFt
ZS0+dXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkuY3JlYXRlTlNTdHJpbmcoKS5nZXQoKV07CiB9
CiAKIHZvaWQgUERGUGx1Z2luOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lKQpAQCAtMTgxNCw3ICsxODIwLDcgQEAgdm9pZCBQREZQbHVnaW46OnVw
ZGF0ZVBhZ2VBbmREZXZpY2VTY2FsZUZhY3RvcnMoKQogCiAgICAgZG91YmxlIG5ld1NjYWxlRmFj
dG9yID0gY29udHJvbGxlcigpLT5jb250ZW50c1NjYWxlRmFjdG9yKCk7CiAgICAgaWYgKCFoYW5k
bGVzUGFnZVNjYWxlRmFjdG9yKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1l
LnBhZ2UoKSkKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1lID8gbV9mcmFtZS0+cGFn
ZSgpIDogbnVsbHB0cikKICAgICAgICAgICAgIG5ld1NjYWxlRmFjdG9yICo9IHBhZ2UtPnBhZ2VT
Y2FsZUZhY3RvcigpOwogICAgIH0KIApAQCAtMTg0NCw3ICsxODUwLDkgQEAgdm9pZCBQREZQbHVn
aW46OmNhbGN1bGF0ZVNpemVzKCkKICAgICBzZXRQREZEb2N1bWVudFNpemUoSW50U2l6ZShbbV9w
ZGZMYXllckNvbnRyb2xsZXIgY29udGVudFNpemVSZXNwZWN0aW5nWm9vbV0pKTsKIAogI2lmIEVO
QUJMRShVSV9QUk9DRVNTX1BERl9IVUQpCi0gICAgbV9mcmFtZS5wYWdlKCktPnVwZGF0ZVBERkhV
RExvY2F0aW9uKCp0aGlzLCBmcmFtZUZvckhVRCgpKTsKKyAgICBpZiAoIW1fZnJhbWUpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2ZyYW1lLT5wYWdlKCktPnVwZGF0ZVBERkhVRExvY2F0aW9uKCp0
aGlzLCBmcmFtZUZvckhVRCgpKTsKICNlbmRpZgogfQogCkBAIC0xODYwLDcgKzE4NjgsOSBAQCBi
b29sIFBERlBsdWdpbjo6aW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
CiB2b2lkIFBERlBsdWdpbjo6d2lsbERldGFjaFJlbmRlcmVyKCkKIHsKLSAgICBpZiAoYXV0byog
ZnJhbWVWaWV3ID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpKQorICAgIGlmICghbV9mcmFt
ZSB8fCAhbV9mcmFtZS0+Y29yZUZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoYXV0
byogZnJhbWVWaWV3ID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKSkKICAgICAgICAgZnJh
bWVWaWV3LT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKIH0KIApAQCAtMTg4MSw3ICsxODkx
LDcgQEAgdm9pZCBQREZQbHVnaW46OmRlc3Ryb3koKQogCiAgICAgbV9wZGZMYXllckNvbnRyb2xs
ZXIuZ2V0KCkuZGVsZWdhdGUgPSAwOwogCi0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IG1fZnJh
bWUuY29yZUZyYW1lKCktPnZpZXcoKSkKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gbV9mcmFt
ZSAmJiBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA/IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkg
OiBudWxscHRyKQogICAgICAgICBmcmFtZVZpZXctPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMp
OwogCiAgICAgbV9hY3RpdmVBbm5vdGF0aW9uID0gbnVsbHB0cjsKQEAgLTE5MDgsNyArMTkxOCw3
IEBAIHZvaWQgUERGUGx1Z2luOjp1cGRhdGVDb250cm9sVGludHMoR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQpCiB2b2lkIFBERlBsdWdpbjo6cGFpbnRDb250cm9sRm9yTGF5ZXJJbkNv
bnRleHQoQ0FMYXllciAqbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0KQogewogI2lmIFBMQVRG
T1JNKE1BQykKLSAgICBhdXRvKiBwYWdlID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+cGFnZSgpOwor
ICAgIGF1dG8qIHBhZ2UgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPmNvcmVGcmFtZSgpID8gbV9mcmFt
ZS0+Y29yZUZyYW1lKCktPnBhZ2UoKSA6IG51bGxwdHI7CiAgICAgTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UocGFnZS0+dXNlRGFya0FwcGVhcmFuY2UoKSk7CiAj
ZW5kaWYKIApAQCAtMTk5NywyMiArMjAwNywyNiBAQCBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZl
cnRGcm9tUm9vdFZpZXdUb1BERlZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogCiBG
bG9hdFJlY3QgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1NjcmVlbihjb25zdCBGbG9h
dFJlY3QmIHJlY3QpIGNvbnN0CiB7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX2ZyYW1l
LmNvcmVGcmFtZSgpLT52aWV3KCk7Ci0KKyAgICBhdXRvKiBjb3JlRnJhbWUgPSBtX2ZyYW1lID8g
bV9mcmFtZS0+Y29yZUZyYW1lKCkgOiBudWxscHRyOworICAgIGlmICghY29yZUZyYW1lKQorICAg
ICAgICByZXR1cm4geyB9OworICAgIGF1dG8qIGZyYW1lVmlldyA9IGNvcmVGcmFtZS0+dmlldygp
OwogICAgIGlmICghZnJhbWVWaWV3KQotICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CisgICAg
ICAgIHJldHVybiB7IH07CiAKICAgICBGbG9hdFJlY3QgdXBkYXRlZFJlY3QgPSByZWN0OwogICAg
IHVwZGF0ZWRSZWN0LnNldExvY2F0aW9uKGNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcoSW50
UG9pbnQodXBkYXRlZFJlY3QubG9jYXRpb24oKSkpKTsKLSAgICByZXR1cm4gbV9mcmFtZS5jb3Jl
RnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS5yb290Vmlld1RvU2NyZWVuKGVuY2xvc2luZ0ludFJl
Y3QodXBkYXRlZFJlY3QpKTsKKyAgICBhdXRvKiBwYWdlID0gY29yZUZyYW1lLT5wYWdlKCk7Cisg
ICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBwYWdlLT5jaHJv
bWUoKS5yb290Vmlld1RvU2NyZWVuKGVuY2xvc2luZ0ludFJlY3QodXBkYXRlZFJlY3QpKTsKIH0K
IAogSW50UmVjdCBQREZQbHVnaW46OmJvdW5kc09uU2NyZWVuKCkgY29uc3QKIHsKLSAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IG1fZnJhbWUuY29yZUZyYW1lKCktPnZpZXcoKTsKLQorICAgIGF1
dG8qIGZyYW1lVmlldyA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpIDog
bnVsbHB0cjsKICAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuIEludFJlY3QoKTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIEZsb2F0UmVjdCBib3VuZHMgPSBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBzaXplKCkpOwogICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmlld0Nvb3Jk
aW5hdGVzID0gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFm
ZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGJvdW5kcyk7CkBAIC0yMDIyLDEwICsyMDM2LDEyIEBA
IEludFJlY3QgUERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0CiB2b2lkIFBERlBsdWdp
bjo6dmlzaWJpbGl0eURpZENoYW5nZShib29sIHZpc2libGUpCiB7CiAjaWYgRU5BQkxFKFVJX1BS
T0NFU1NfUERGX0hVRCkKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKICAgICBp
ZiAodmlzaWJsZSkKLSAgICAgICAgbV9mcmFtZS5wYWdlKCktPmNyZWF0ZVBERkhVRCgqdGhpcywg
ZnJhbWVGb3JIVUQoKSk7CisgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+Y3JlYXRlUERGSFVEKCp0
aGlzLCBmcmFtZUZvckhVRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fZnJhbWUucGFnZSgpLT5y
ZW1vdmVQREZIVUQoKnRoaXMpOworICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPnJlbW92ZVBERkhV
RCgqdGhpcyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2aXNpYmxlKTsKICNlbmRpZgpAQCAt
MjI3Myw3ICsyMjg5LDkgQEAgYm9vbCBQREZQbHVnaW46OmhhbmRsZU1vdXNlTGVhdmVFdmVudChj
b25zdCBXZWJNb3VzZUV2ZW50JikKICAgICAKIGJvb2wgUERGUGx1Z2luOjpzaG93Q29udGV4dE1l
bnVBdFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKLSAgICBGcmFtZVZpZXcqIGZyYW1l
VmlldyA9IG1fZnJhbWUuY29yZUZyYW1lKCktPnZpZXcoKTsKKyAgICBhdXRvKiBmcmFtZVZpZXcg
PSBtX2ZyYW1lID8gbV9mcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKSA6IG51bGxwdHI7CisgICAg
aWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBJbnRQb2ludCBjb250
ZW50c1BvaW50ID0gZnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocG9pbnQpOwogICAgIFdl
Yk1vdXNlRXZlbnQgZXZlbnQoV2ViRXZlbnQ6Ok1vdXNlRG93biwgV2ViTW91c2VFdmVudDo6Umln
aHRCdXR0b24sIDAsIGNvbnRlbnRzUG9pbnQsIGNvbnRlbnRzUG9pbnQsIDAsIDAsIDAsIDEsIE9w
dGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+IHsgfSwgV2FsbFRpbWU6Om5vdygpLCBXZWJDb3Jl
OjpGb3JjZUF0Q2xpY2spOwogICAgIHJldHVybiBoYW5kbGVDb250ZXh0TWVudUV2ZW50KGV2ZW50
KTsKQEAgLTIyODEsMTEgKzIyOTksMTcgQEAgYm9vbCBQREZQbHVnaW46OnNob3dDb250ZXh0TWVu
dUF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogCiBib29sIFBERlBsdWdpbjo6aGFuZGxl
Q29udGV4dE1lbnVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAo
IW1fZnJhbWUucGFnZSgpKQorICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2ZyYW1lLT5jb3JlRnJhbWUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8qIGZyYW1lVmlldyA9IG1fZnJhbWUtPmNv
cmVGcmFtZSgpLT52aWV3KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKLSAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IG1fZnJhbWUuY29yZUZyYW1lKCktPnZpZXcoKTsKICAgICBJbnRQ
b2ludCBwb2ludCA9IGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihJbnRSZWN0KGZyYW1lVmll
dy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKSwgSW50U2l6ZSgpKSkubG9jYXRp
b24oKTsKIAogICAgIE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1aUxheW91dERpcmVj
dGlvbiA9IHdlYlBhZ2UtPnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSA9PSBVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0
OwpAQCAtMjM5MywxMyArMjQxNywxNyBAQCBib29sIFBERlBsdWdpbjo6aXNGdWxsRnJhbWVQbHVn
aW4oKSBjb25zdAogewogICAgIC8vIDxvYmplY3Q+IG9yIDxlbWJlZD4gcGx1Z2lucyB3aWxsIGFw
cGVhciB0byBiZSBpbiB0aGVpciBwYXJlbnQgZnJhbWUsIHNvIHdlIGhhdmUgdG8KICAgICAvLyBj
aGVjayB3aGV0aGVyIG91ciBmcmFtZSdzIHdpZGdldCBpcyBleGFjdGx5IG91ciBQbHVnaW5WaWV3
LgotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUuY29yZUZyYW1lKCktPmRvY3VtZW50
KCk7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5jb3JlRnJhbWUoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS0+Y29yZUZyYW1lKCkt
PmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJldHVybiBkb2N1bWVudC0+aXNQbHVnaW5Eb2N1bWVudCgpICYmIHN0YXRpY19jYXN0PFBs
dWdpbkRvY3VtZW50Kj4oZG9jdW1lbnQpLT5wbHVnaW5XaWRnZXQoKSA9PSBwbHVnaW5WaWV3KCk7
CiB9CiAKIGJvb2wgUERGUGx1Z2luOjpoYW5kbGVzUGFnZVNjYWxlRmFjdG9yKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9mcmFtZS5pc01haW5GcmFtZSgpICYmIGlzRnVsbEZyYW1lUGx1Z2luKCk7
CisgICAgcmV0dXJuIG1fZnJhbWUgJiYgbV9mcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBpc0Z1bGxG
cmFtZVBsdWdpbigpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6Y2xpY2tlZExpbmsoTlNVUkwgKnVy
bCkKQEAgLTI0MDgsNyArMjQzNiw5IEBAIHZvaWQgUERGUGx1Z2luOjpjbGlja2VkTGluayhOU1VS
TCAqdXJsKQogICAgIGlmIChjb3JlVVJMLnByb3RvY29sSXNKYXZhU2NyaXB0KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8qIGZyYW1lID0gbV9mcmFtZS5jb3JlRnJhbWUoKTsKKyAgICBh
dXRvKiBmcmFtZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA6IG51bGxwdHI7Cisg
ICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEV2ZW50PiBjb3Jl
RXZlbnQ7CiAgICAgaWYgKG1fbGFzdE1vdXNlRXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpOb1R5
cGUpCkBAIC0yNDkxLDEzICsyNTIxLDE5IEBAIHZvaWQgUERGUGx1Z2luOjp6b29tT3V0KCkKIHZv
aWQgUERGUGx1Z2luOjpzYXZlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiwg
Y29uc3QgVVJMJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gbGl2ZURhdGEoKTsKLSAgICBjb21wbGV0aW9uSGFu
ZGxlcihtX3N1Z2dlc3RlZEZpbGVuYW1lLCBtX2ZyYW1lLnVybCgpLCBJUEM6OiBEYXRhUmVmZXJl
bmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgp
KTsKKyAgICBVUkwgdXJsOworICAgIGlmIChtX2ZyYW1lKQorICAgICAgICB1cmwgPSBtX2ZyYW1l
LT51cmwoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX3N1Z2dlc3RlZEZpbGVuYW1lLCB1cmws
IElQQzo6IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0
ZXMpLCBkYXRhLmxlbmd0aCkpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6b3BlbldpdGhQcmV2aWV3
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiwgRnJhbWVJbmZvRGF0YSYmLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBsaXZlRGF0YSgpOwotICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1fc3VnZ2VzdGVkRmlsZW5hbWUsIG1fZnJhbWUuaW5mbygpLCBJUEM6OiBEYXRhUmVm
ZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxl
bmd0aCB9LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOworICAgIEZyYW1lSW5mb0RhdGEg
ZnJhbWVJbmZvOworICAgIGlmIChtX2ZyYW1lKQorICAgICAgICBmcmFtZUluZm8gPSBtX2ZyYW1l
LT5pbmZvKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9zdWdnZXN0ZWRGaWxlbmFtZSwgZnJh
bWVJbmZvLCBJUEM6OiBEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkp
OwogfQogCiAjZWxzZSAvLyBFTkFCTEUoVUlfUFJPQ0VTU19QREZfSFVEKQpAQCAtMjUxMCwxMSAr
MjU0NiwxNiBAQCB2b2lkIFBERlBsdWdpbjo6c2F2ZVRvUERGKCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgTlNEYXRhICpkYXRhID0gbGl2ZURhdGEoKTsKLSAgICBtX2ZyYW1lLnBhZ2UoKS0+c2F2
ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKG1fc3VnZ2VzdGVkRmlsZW5hbWUsIG1fZnJhbWUu
dXJsKCksIHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oW2RhdGEgYnl0ZXNdKSwg
W2RhdGEgbGVuZ3RoXSk7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdlKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2ZyYW1lLT5wYWdlKCktPnNhdmVQREZUb0ZpbGVJbkRvd25s
b2Fkc0ZvbGRlcihtX3N1Z2dlc3RlZEZpbGVuYW1lLCBtX2ZyYW1lLT51cmwoKSwgc3RhdGljX2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsK
IH0KIAogdm9pZCBQREZQbHVnaW46Om9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oKQogeworICAg
IGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+cGFnZSgpKQorICAgICAgICByZXR1cm47CisKICAg
ICBpZiAoIW1fdGVtcG9yYXJ5UERGVVVJRCkgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IHByb2JhYmx5IG5vdGlmeSB0aGUgdXNlciB0aGF0IHRoZXkgY2FuJ3Qgc2F2ZSBiZWZvcmUgdGhl
IGRvY3VtZW50IGlzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgICAgIC8vIFBERlZpZXdDb250cm9s
bGVyIGRvZXMgYW4gTlNCZWVwKCksIGJ1dCB0aGF0IHNlZW1zIGluc3VmZmljaWVudC4KQEAgLTI1
MjYsMTEgKzI1NjcsMTEgQEAgdm9pZCBQREZQbHVnaW46Om9wZW5XaXRoTmF0aXZlQXBwbGljYXRp
b24oKQogICAgICAgICBtX3RlbXBvcmFyeVBERlVVSUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCk7CiAgICAgICAgIEFTU0VSVChtX3RlbXBvcmFyeVBERlVVSUQpOwogCi0gICAgICAgIG1f
ZnJhbWUucGFnZSgpLT5zYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFw
cGxpY2F0aW9uKG1fc3VnZ2VzdGVkRmlsZW5hbWUsIG1fZnJhbWUuaW5mbygpLCBzdGF0aWNfY2Fz
dDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0sIG1f
dGVtcG9yYXJ5UERGVVVJRCk7CisgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+c2F2ZVBERlRvVGVt
cG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihtX3N1Z2dlc3RlZEZpbGVu
YW1lLCBtX2ZyYW1lLT5pbmZvKCksIHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4o
W2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSwgbV90ZW1wb3JhcnlQREZVVUlEKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZnJhbWUucGFnZSgpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6Ok9wZW5QREZGcm9tVGVtcG9yYXJ5Rm9sZGVyV2l0aE5hdGl2ZUFwcGxpY2F0
aW9uKG1fZnJhbWUuaW5mbygpLCBtX3RlbXBvcmFyeVBERlVVSUQpKTsKKyAgICBtX2ZyYW1lLT5w
YWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6T3BlblBERkZyb21UZW1wb3JhcnlG
b2xkZXJXaXRoTmF0aXZlQXBwbGljYXRpb24obV9mcmFtZS0+aW5mbygpLCBtX3RlbXBvcmFyeVBE
RlVVSUQpKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShVSV9QUk9DRVNTX1BERl9IVUQpCkBAIC0y
NTkxLDcgKzI2MzIsMTAgQEAgdm9pZCBQREZQbHVnaW46OnNob3dEZWZpbml0aW9uRm9yQXR0cmli
dXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgQ0cKICAgICBkYXRhRm9yU2Vs
ZWN0aW9uLnByZXNlbnRhdGlvblRyYW5zaXRpb24gPSBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9u
VHJhbnNpdGlvbjo6RmFkZUluOwogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRv
ciA9IGRhdGFGb3JTZWxlY3Rpb247CiAgICAgCi0gICAgbV9mcmFtZS5wYWdlKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoZGljdGlvbmFy
eVBvcHVwSW5mbykpOworICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+cGFnZSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2ZyYW1lLT5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoZGljdGlvbmFyeVBvcHVwSW5mbykp
OwogfQogCiB1bnNpZ25lZCBQREZQbHVnaW46OmNvdW50RmluZE1hdGNoZXMoY29uc3QgU3RyaW5n
JiB0YXJnZXQsIFdlYkNvcmU6OkZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIC8qbWF4TWF0
Y2hDb3VudCovKQpAQCAtMjY5OSw3ICsyNzQzLDkgQEAgdm9pZCBQREZQbHVnaW46OmZvY3VzUHJl
dmlvdXNBbm5vdGF0aW9uKCkKIAogdm9pZCBQREZQbHVnaW46Om5vdGlmeVNlbGVjdGlvbkNoYW5n
ZWQoUERGU2VsZWN0aW9uICopCiB7Ci0gICAgbV9mcmFtZS5wYWdlKCktPmRpZENoYW5nZVNlbGVj
dGlvbigpOworICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+cGFnZSgpKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9mcmFtZS0+cGFnZSgpLT5kaWRDaGFuZ2VTZWxlY3Rpb24oKTsKIH0KIAog
c3RhdGljIGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY29yZUN1cnNvcihQREZMYXllckNvbnRyb2xs
ZXJDdXJzb3JUeXBlIHR5cGUpCkBAIC0yNzE3LDcgKzI3NjMsMTAgQEAgc3RhdGljIGNvbnN0IFdl
YkNvcmU6OkN1cnNvciYgY29yZUN1cnNvcihQREZMYXllckNvbnRyb2xsZXJDdXJzb3JUeXBlIHR5
cGUpCiAKIHZvaWQgUERGUGx1Z2luOjpub3RpZnlDdXJzb3JDaGFuZ2VkKHVpbnQ2NF90IHR5cGUp
CiB7Ci0gICAgbV9mcmFtZS5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0
Q3Vyc29yKGNvcmVDdXJzb3Ioc3RhdGljX2Nhc3Q8UERGTGF5ZXJDb250cm9sbGVyQ3Vyc29yVHlw
ZT4odHlwZSkpKSk7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdlKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fZnJhbWUtPnBhZ2UoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTZXRDdXJzb3IoY29yZUN1cnNvcihzdGF0aWNfY2FzdDxQREZMYXllckNvbnRyb2xs
ZXJDdXJzb3JUeXBlPih0eXBlKSkpKTsKIH0KIAogU3RyaW5nIFBERlBsdWdpbjo6Z2V0U2VsZWN0
aW9uU3RyaW5nKCkgY29uc3QKQEAgLTI4NDEsNyArMjg5MCw5IEBAIHN0YXRpYyBOU1JlY3QgcmVj
dEluVmlld1NwYWNlRm9yUmVjdEluTGF5b3V0U3BhY2UoUERGTGF5ZXJDb250cm9sbGVyKiBwZGZM
YXllckNvCiAgICAgCiBXZWJDb3JlOjpBWE9iamVjdENhY2hlKiBQREZQbHVnaW46OmF4T2JqZWN0
Q2FjaGUoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lLmNvcmVGcmFtZSgpLT5kb2N1bWVu
dCgpLT5heE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5jb3Jl
RnJhbWUoKSB8fCAhbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQo
KS0+YXhPYmplY3RDYWNoZSgpOwogfQogCiBXZWJDb3JlOjpGbG9hdFJlY3QgUERGUGx1Z2luOjpy
ZWN0Rm9yU2VsZWN0aW9uSW5Sb290VmlldyhQREZTZWxlY3Rpb24gKnNlbGVjdGlvbikgY29uc3QK
QEAgLTI4NzAsMTIgKzI5MjEsMTYgQEAgQ0dGbG9hdCBQREZQbHVnaW46OnNjYWxlRmFjdG9yKCkg
Y29uc3QKIAogdm9pZCBQREZQbHVnaW46OnBlcmZvcm1XZWJTZWFyY2goTlNTdHJpbmcgKnN0cmlu
ZykKIHsKLSAgICBtX2ZyYW1lLnBhZ2UoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
ZWFyY2hUaGVXZWIoc3RyaW5nKSk7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdl
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2ZyYW1lLT5wYWdlKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2VhcmNoVGhlV2ViKHN0cmluZykpOwogfQogCiB2b2lkIFBERlBsdWdp
bjo6cGVyZm9ybVNwb3RsaWdodFNlYXJjaChOU1N0cmluZyAqc3RyaW5nKQogewotICAgIG1fZnJh
bWUucGFnZSgpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlYXJjaFdpdGhTcG90bGln
aHQoc3RyaW5nKSk7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdlKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2ZyYW1lLT5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2VhcmNoV2l0aFNwb3RsaWdodChzdHJpbmcpKTsKIH0KIAogYm9vbCBQREZQbHVnaW46
OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcAppbmRleCA0NzQ3ODdlYmZjZDkxZDYw
ZWZmMDZiMjU2ZjFhOGY0YmVlZDY2NDE3Li5iNzZkMzQ0OGYyMGFjYmQ5OTgzNzBkNGI5ZjQ4M2Rm
ZDcxNzQwNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQbHVnaW4uaCIKIAogI2luY2x1ZGUgIkxh
eWVyVHJlZUNvbnRleHQuaCIKKyNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5o
PgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgpAQCAtODIsMjAgKzgzLDE2IEBAIGJvb2wg
UGx1Z2luOjpQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQogCiBQbHVnaW46OlBsdWdpbihQbHVnaW5UeXBlIHR5cGUpCiAgICAg
OiBtX3R5cGUodHlwZSkKLSAgICAsIG1fcGx1Z2luQ29udHJvbGxlcigwKQogewogfQogCi1QbHVn
aW46On5QbHVnaW4oKQotewotfQorUGx1Z2luOjp+UGx1Z2luKCkgPSBkZWZhdWx0OwogCi1ib29s
IFBsdWdpbjo6aW5pdGlhbGl6ZShQbHVnaW5Db250cm9sbGVyKiBwbHVnaW5Db250cm9sbGVyLCBj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorYm9vbCBQbHVnaW46OmluaXRpYWxpemUoUGx1
Z2luQ29udHJvbGxlciYgcGx1Z2luQ29udHJvbGxlciwgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKIHsKICAgICBBU1NFUlQoIW1fcGx1Z2luQ29udHJvbGxlcik7Ci0gICAgQVNTRVJUKHBs
dWdpbkNvbnRyb2xsZXIpOwogCi0gICAgbV9wbHVnaW5Db250cm9sbGVyID0gcGx1Z2luQ29udHJv
bGxlcjsKKyAgICBtX3BsdWdpbkNvbnRyb2xsZXIgPSBtYWtlV2Vha1B0cihwbHVnaW5Db250cm9s
bGVyKTsKIAogICAgIHJldHVybiBpbml0aWFsaXplKHBhcmFtZXRlcnMpOwogfQpAQCAtMTIwLDQg
KzExNywxNCBAQCBJbnRQb2ludCBQbHVnaW46OmNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IEludFBv
aW50JikgY29uc3QKICAgICByZXR1cm4gSW50UG9pbnQoKTsKIH0KIAorUGx1Z2luQ29udHJvbGxl
ciogUGx1Z2luOjpjb250cm9sbGVyKCkKK3sKKyAgICByZXR1cm4gbV9wbHVnaW5Db250cm9sbGVy
LmdldCgpOworfQorCitjb25zdCBQbHVnaW5Db250cm9sbGVyKiBQbHVnaW46OmNvbnRyb2xsZXIo
KSBjb25zdAoreworICAgIHJldHVybiBtX3BsdWdpbkNvbnRyb2xsZXIuZ2V0KCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaAppbmRleCA4OTk4MzZjMGMxY2IyYTZkNGJiOTg2NWQzMTU1M2E3MGRhNzhkNGY3Li5jNmQ2
NGJlNDEzOGRhZWQ0NDA3MzBkMGE0ODM0MDZjZDFiODNjYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogdHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QqIGlkOwpAQCAtOTYsMTkgKzk3LDE0
IEBAIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZShJUEM6OkRlY29kZXImLCBQYXJhbWV0ZXJzJik7CiAgICAgfTsKIAotICAgIC8vIFNldHMgdGhl
IGFjdGl2ZSBwbHVnLWluIGNvbnRyb2xsZXIgYW5kIGluaXRpYWxpemVzIHRoZSBwbHVnLWluLgot
ICAgIGJvb2wgaW5pdGlhbGl6ZShQbHVnaW5Db250cm9sbGVyKiwgY29uc3QgUGFyYW1ldGVycyYp
OworICAgIGJvb2wgaW5pdGlhbGl6ZShQbHVnaW5Db250cm9sbGVyJiwgY29uc3QgUGFyYW1ldGVy
cyYpOwogCi0gICAgdmlydHVhbCBib29sIGlzQmVpbmdBc3luY2hyb25vdXNseUluaXRpYWxpemVk
KCkgY29uc3QgPSAwOwotCi0gICAgLy8gRGVzdHJveXMgdGhlIHBsdWctaW4uCiAgICAgdm9pZCBk
ZXN0cm95UGx1Z2luKCk7CiAKICAgICBib29sIGlzQmVpbmdEZXN0cm95ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzQmVpbmdEZXN0cm95ZWQ7IH0KIAotICAgIC8vIFJldHVybnMgdGhlIHBsdWctaW4g
Y29udHJvbGxlciBmb3IgdGhpcyBwbHVnLWluLgotICAgIFBsdWdpbkNvbnRyb2xsZXIqIGNvbnRy
b2xsZXIoKSB7IHJldHVybiBtX3BsdWdpbkNvbnRyb2xsZXI7IH0KLSAgICBjb25zdCBQbHVnaW5D
b250cm9sbGVyKiBjb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5Db250cm9sbGVy
OyB9CisgICAgUGx1Z2luQ29udHJvbGxlciogY29udHJvbGxlcigpOworICAgIGNvbnN0IFBsdWdp
bkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgflBsdWdpbigp
OwogCkBAIC0zMTcsNyArMzEzLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9pc0JlaW5nRGVz
dHJveWVkIHsgZmFsc2UgfTsKIAogcHJpdmF0ZToKLSAgICBQbHVnaW5Db250cm9sbGVyKiBtX3Bs
dWdpbkNvbnRyb2xsZXI7CisgICAgV2Vha1B0cjxQbHVnaW5Db250cm9sbGVyPiBtX3BsdWdpbkNv
bnRyb2xsZXI7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKaW5kZXggNDJh
M2I3OGE5NjQ4NjJjY2Q4M2IzMWRhYTA5NjIxOTczYzQxYTVkNy4uM2I3YWZlZGE1NzZlYjJmYmM2
NTc4ZTQ0ZTUwYWNkZWQzODE1NWVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJQbHVnaW5Db21wbGV4VGV4dElu
cHV0U3RhdGUuaCIKQEAgLTQ3LDcgKzQ4LDcgQEAgY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUGx1Z2luQ29udHJvbGxlciB7CitjbGFzcyBQbHVn
aW5Db250cm9sbGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBsdWdpbkNvbnRyb2xsZXI+IHsK
IHB1YmxpYzoKICAgICAvLyBUZWxscyB0aGUgY29udHJvbGxlciB0aGF0IHRoZSBwbHVnLWluIHdh
bnRzIHRoZSBnaXZlbiByZWN0IHRvIGJlIHJlcGFpbnRlZC4gVGhlIHJlY3QgaXMgaW4gdGhlIHBs
dWctaW4ncyBjb29yZGluYXRlIHN5c3RlbS4KICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZShj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggZTQwOWIxNWY1Zjc0ZjViNzc3NGRkMzRjOGRh
YTUwZDllM2E4MzRkMy4uOTEzOWE5MjdkYWI3MjMxNzZjOTU0YzI2MDU2MGQxOTMzYzU4MDA3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBA
IC02NCw4ICs2NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVQbHVnaW5Qcm94eU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNl
aXZlU3luY1BsdWdpblByb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogCi0gICAgYm9vbCBpc0JlaW5nQXN5
bmNocm9ub3VzbHlJbml0aWFsaXplZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2FpdGlu
Z09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb247IH0KLQogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBQbHVnaW5Qcm94eSh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGJvb2wgaXNSZXN0YXJ0
ZWRQcm9jZXNzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAppbmRleCBmMjY2Y2QzY2UwOWVhOTFlZDRlNjYzODFiOWQ5ZTllYzg2ZDA1MGM1
Li41MGMyYjM1MTYyYzhkNWJkMGVhZmQ5NGNjNDliZDNmOGYzYjcxNmQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNjAxLDcgKzYw
MSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6aW5pdGlhbGl6ZVBsdWdpbigpCiAgICAgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudCYgcGx1Z0luSW1hZ2VFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFBsdWdJbklt
YWdlRWxlbWVudD4oKm1fcGx1Z2luRWxlbWVudCk7CiAgICAgbV9kaWRQbHVnSW5TdGFydE9mZlNj
cmVlbiA9ICFtX3dlYlBhZ2UtPnBsdWdJbkludGVyc2VjdHNTZWFyY2hSZWN0KHBsdWdJbkltYWdl
RWxlbWVudCk7CiAjZW5kaWYKLSAgICBtX3BsdWdpbi0+aW5pdGlhbGl6ZSh0aGlzLCBtX3BhcmFt
ZXRlcnMpOworICAgIG1fcGx1Z2luLT5pbml0aWFsaXplKCp0aGlzLCBtX3BhcmFtZXRlcnMpOwog
ICAgIAogICAgIC8vIFBsdWctaW4gaW5pdGlhbGl6YXRpb24gY29udGludWVkIGluIGRpZEZhaWxU
b0luaXRpYWxpemVQbHVnaW4oKSBvciBkaWRJbml0aWFsaXplUGx1Z2luKCkuCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCA5ZmY2NmVhZmQzM2M3
ZDA5YzhhN2M5Mzk2ZWM4Y2JhZTVjZDY1YTQ3Li5kZTM1MzdjYjJkZjA0MzkzNGZiOGM2M2I3ZDRi
NjA3YWVkMGM0YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBcnJheTsKQEAgLTE0OSwx
NSArMTUwLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGRvY3VtZW50TG9hZGVyRGV0YWNoZWQodWlu
dDY0X3QgbmF2aWdhdGlvbklEKTsKIAogICAgIC8vIFNpbXBsZSBsaXN0ZW5lciBjbGFzcyB1c2Vk
IGJ5IHBsdWctaW5zIHRvIGtub3cgd2hlbiBmcmFtZXMgZmluaXNoIG9yIGZhaWwgbG9hZGluZy4K
LSAgICBjbGFzcyBMb2FkTGlzdGVuZXIgeworICAgIGNsYXNzIExvYWRMaXN0ZW5lciA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxMb2FkTGlzdGVuZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgfkxvYWRMaXN0ZW5lcigpIHsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkKFdlYkZyYW1lKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWQo
V2ViRnJhbWUqLCBib29sIHdhc0NhbmNlbGxlZCkgPSAwOwogICAgIH07Ci0gICAgdm9pZCBzZXRM
b2FkTGlzdGVuZXIoTG9hZExpc3RlbmVyKiBsb2FkTGlzdGVuZXIpIHsgbV9sb2FkTGlzdGVuZXIg
PSBsb2FkTGlzdGVuZXI7IH0KLSAgICBMb2FkTGlzdGVuZXIqIGxvYWRMaXN0ZW5lcigpIGNvbnN0
IHsgcmV0dXJuIG1fbG9hZExpc3RlbmVyOyB9CisgICAgdm9pZCBzZXRMb2FkTGlzdGVuZXIoTG9h
ZExpc3RlbmVyKiBsb2FkTGlzdGVuZXIpIHsgbV9sb2FkTGlzdGVuZXIgPSBtYWtlV2Vha1B0cihs
b2FkTGlzdGVuZXIpOyB9CisgICAgTG9hZExpc3RlbmVyKiBsb2FkTGlzdGVuZXIoKSBjb25zdCB7
IHJldHVybiBtX2xvYWRMaXN0ZW5lci5nZXQoKTsgfQogICAgIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHR5cGVkZWYgYm9vbCAoKkZyYW1lRmlsdGVyRnVuY3Rpb24pKFdLQnVuZGxlRnJhbWVS
ZWYsIFdLQnVuZGxlRnJhbWVSZWYgc3ViZnJhbWUsIHZvaWQqIGNvbnRleHQpOwpAQCAtMTkyLDcg
KzE5Myw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPj4gbV93aWxsU3VibWl0Rm9ybUNvbXBsZXRpb25IYW5kbGVyczsKICAgICBPcHRp
b25hbDxEb3dubG9hZElEPiBtX3BvbGljeURvd25sb2FkSUQ7CiAKLSAgICBMb2FkTGlzdGVuZXIq
IG1fbG9hZExpc3RlbmVyIHsgbnVsbHB0ciB9OworICAgIFdlYWtQdHI8TG9hZExpc3RlbmVyPiBt
X2xvYWRMaXN0ZW5lcjsKICAgICAKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbV9mcmFt
ZUlEOwogCg==
</data>
<flag name="commit-queue"
          id="428622"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412221</attachid>
            <date>2020-10-23 18:40:02 -0700</date>
            <delta_ts>2020-10-26 10:48:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218144-20201023194001.patch</filename>
            <type>text/plain</type>
            <size>30625</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFjMGE2NzQ1YTViOTNhMWJl
MDRmMmU4YmM5NWI4YTg2ZDNkYjRhMDEuLjYzYjYxYzU5ODM3ODIxNTg0NTVjMzA3NGEzOGVjNzFk
Yjk0NmE2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjAtMTAtMjMgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgbnVsbCBj
aGVja3MgYW5kIHNtYXJ0IHBvaW50ZXJzIGluIFBERiBhbmQgUGx1Z2luIGNvZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE0NAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjk5MzE1NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSXQncyBuaWNlIHdoZW4gdGhpbmdzIGRvbid0IGNyYXNoLgorICAg
ICAgICBpc0JlaW5nQXN5bmNocm9ub3VzbHlJbml0aWFsaXplZCB3YXNuJ3QgY2FsbGVkIGFueXdo
ZXJlLCBzbyBJIHJlbW92ZWQgaXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdpbik6CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6flBERlBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6Z2V0UmVzb3VyY2VCeXRlc0F0UG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OnVwZGF0ZVNjcm9sbGJhcnMpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNyZWF0
ZVNjcm9sbGJhcik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aXNBY3RpdmUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmZvcmNlVXBkYXRlU2Nyb2xsYmFyc09uTWFp
blRocmVhZEZvclBlcmZvcm1hbmNlVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6anNQREZEb2NQcmludCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aW5z
dGFsbFBERkRvY3VtZW50KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp1cGRhdGVQYWdl
QW5kRGV2aWNlU2NhbGVGYWN0b3JzKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjYWxj
dWxhdGVTaXplcyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6d2lsbERldGFjaFJlbmRl
cmVyKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpkZXN0cm95KToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjpwYWludENvbnRyb2xGb3JMYXllckluQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9TY3JlZW4gY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmJvdW5kc09uU2NyZWVuIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UERGUGx1Z2luOjp2aXNpYmlsaXR5RGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjpzaG93Q29udGV4dE1lbnVBdFBvaW50KToKKyAgICAgICAgKFdlYktp
dDo6UERGUGx1Z2luOjpoYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luOjppc0Z1bGxGcmFtZVBsdWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6aGFuZGxlc1BhZ2VTY2FsZUZhY3RvciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6Y2xpY2tlZExpbmspOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnNh
dmUpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om9wZW5XaXRoUHJldmlldyk6CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c2F2ZVRvUERGKToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpvcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpzaG93RGVmaW5pdGlvbkZvckF0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpQREZQbHVnaW46Om5vdGlmeVNlbGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46Om5vdGlmeUN1cnNvckNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46OmF4T2JqZWN0Q2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46
OnBlcmZvcm1XZWJTZWFyY2gpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnBlcmZvcm1T
cG90bGlnaHRTZWFyY2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW46OlBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpbjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6Y29udHJvbGxlcik6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6Y29udHJvbGxlciBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpbjo6flBsdWdpbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW46OmNvbnRyb2xsZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW46OmNvbnRyb2xsZXIgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjpzZXRMb2FkTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
bG9hZExpc3RlbmVyIGNvbnN0KToKKwogMjAyMC0xMC0yMiAgQWRpdHlhIEtlZXJ0aGkgIDxha2Vl
cnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvbnRhY3QgUGlja2VyIEFQSV0gQWRkIHNrZWxl
dG9uIGltcGxlbWVudGF0aW9uIG9mIENvbnRhY3RzTWFuYWdlci5zZWxlY3QoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApp
bmRleCBlYTcxMWQzMmUyNTVmNzNjMzc1MmY0MjlmMGVhNzIyMTViOWM5MzNhLi44YjM3NDBmNGIx
MDFhZDkwZjUwZWQ1N2M4NTBiOTAzMGZjYzQzMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtMTE5LDcgKzEx
OSw3IEBAIGJvb2wgUGx1Z2luQ29udHJvbGxlclByb3h5Ojppbml0aWFsaXplKGNvbnN0IFBsdWdp
bkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QCiAgICAgaWYgKGNyZWF0aW9uUGFyYW1ldGVy
cy53aW5kb3dOUE9iamVjdElEKQogICAgICAgICBtX3dpbmRvd05QT2JqZWN0ID0gbV9jb25uZWN0
aW9uLT5ucFJlbW90ZU9iamVjdE1hcCgpLT5jcmVhdGVOUE9iamVjdFByb3h5KGNyZWF0aW9uUGFy
YW1ldGVycy53aW5kb3dOUE9iamVjdElELCBtX3BsdWdpbi5nZXQoKSk7CiAKLSAgICBib29sIHJl
dHVyblZhbHVlID0gbV9wbHVnaW4tPmluaXRpYWxpemUodGhpcywgY3JlYXRpb25QYXJhbWV0ZXJz
LnBhcmFtZXRlcnMpOworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSBtX3BsdWdpbi0+aW5pdGlhbGl6
ZSgqdGhpcywgY3JlYXRpb25QYXJhbWV0ZXJzLnBhcmFtZXRlcnMpOwogCiAgICAgaWYgKCFyZXR1
cm5WYWx1ZSkgewogICAgICAgICAvLyBHZXQgdGhlIHBsdWctaW4gc28gd2UgY2FuIHBhc3MgaXQg
dG8gcmVtb3ZlUGx1Z2luQ29udHJvbGxlclByb3h5LiBUaGUgcG9pbnRlciBpcyBvbmx5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uaAppbmRleCAzMWNlNTAyNGMzYWIzMjY3MzJhZjdiNmNjZDEwNzU5NGJmYzU3
N2RiLi4yNDc0OTE0NmQ5MGY0NTVmNjlmNTQzNTk2NGUwYjNiY2EzMWRjY2YyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmgKQEAgLTYwLDkgKzYwLDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0
cjxOZXRzY2FwZVBsdWdpbj4gZnJvbU5QUChOUFApOwogCi0gICAgLy8gSW4tcHJvY2VzcyBOZXRz
Y2FwZVBsdWdpbnMgZG9uJ3Qgc3VwcG9ydCBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24uCi0g
ICAgYm9vbCBpc0JlaW5nQXN5bmNocm9ub3VzbHlJbml0aWFsaXplZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBOUEVycm9yIHNl
dERyYXdpbmdNb2RlbChOUERyYXdpbmdNb2RlbCk7CiAgICAgTlBFcnJvciBzZXRFdmVudE1vZGVs
KE5QRXZlbnRNb2RlbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLmgKaW5kZXggZjY5MGNiMWRkZjgwODdhMTc4MzRmOGNhNDQzZDBmNDRlZjcw
MzMyZC4uM2M2ZjUyMzA0Yjk1ZmFiY2RiNzM4MTJmNzk4ZjllMWQzNzQyMzk0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtNDMs
NiArNDMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SYW5nZVNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRS
ZWY7CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVKU1ZhbHVlKiBKU09iamVjdFJlZjsKQEAgLTIxMyw4
ICsyMTQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbERldGFjaFJlbmRlcmVyKCkgZmluYWw7
CiAgICAgYm9vbCBwbHVnaW5IYW5kbGVzQ29udGVudE9mZnNldEZvckFjY2Vzc2liaWxpdHlIaXRU
ZXN0KCkgY29uc3QgZmluYWw7CiAgICAgCi0gICAgYm9vbCBpc0JlaW5nQXN5bmNocm9ub3VzbHlJ
bml0aWFsaXplZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0KICAgICBSZXRhaW5Q
dHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmcoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3BkZkRvY3VtZW50OyB9CiAgICAgTlNPYmplY3QgKmFjY2Vzc2liaWxpdHlPYmplY3Qo
KSBjb25zdCBmaW5hbDsKICAgICBpZCBhY2Nlc3NpYmlsaXR5QXNzb2NpYXRlZFBsdWdpblBhcmVu
dEZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopIGNvbnN0IGZpbmFsOwpAQCAtMzAzLDcgKzMw
Miw3IEBAIHByaXZhdGU6CiAgICAgUGx1Z2luVmlldyogcGx1Z2luVmlldygpOwogICAgIGNvbnN0
IFBsdWdpblZpZXcqIHBsdWdpblZpZXcoKSBjb25zdDsKIAotICAgIFdlYkZyYW1lJiBtX2ZyYW1l
OworICAgIFdlYWtQdHI8V2ViRnJhbWU+IG1fZnJhbWU7CiAKICAgICBib29sIG1faXNQb3N0U2Ny
aXB0IHsgZmFsc2UgfTsKICAgICBib29sIG1fcGRmRG9jdW1lbnRXYXNNdXRhdGVkIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCmluZGV4IGZkMjc3Y2JjNTEzMWI1YjYyNmFmMmE5N2I0ZjUxNjdhOWJlMTM1YWMuLjFlMDdi
MWNmMzE5MDI4ZDA2YzAxZGQyMTM5MmRlNzc0ODU5NTE1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtNTk2LDcgKzU5Niw3
IEBAIFJlZjxQREZQbHVnaW4+IFBERlBsdWdpbjo6Y3JlYXRlKFdlYkZyYW1lJiBmcmFtZSkKIAog
aW5saW5lIFBERlBsdWdpbjo6UERGUGx1Z2luKFdlYkZyYW1lJiBmcmFtZSkKICAgICA6IFBsdWdp
bihQREZQbHVnaW5UeXBlKQotICAgICwgbV9mcmFtZShmcmFtZSkKKyAgICAsIG1fZnJhbWUobWFr
ZVdlYWtQdHIoZnJhbWUpKQogICAgICwgbV9jb250YWluZXJMYXllcihhZG9wdE5TKFtbQ0FMYXll
ciBhbGxvY10gaW5pdF0pKQogICAgICwgbV9jb250ZW50TGF5ZXIoYWRvcHROUyhbW0NBTGF5ZXIg
YWxsb2NdIGluaXRdKSkKICAgICAsIG1fc2Nyb2xsQ29ybmVyTGF5ZXIoYWRvcHROUyhbW1dLUERG
UGx1Z2luU2Nyb2xsYmFyTGF5ZXIgYWxsb2NdIGluaXRXaXRoUERGUGx1Z2luOnRoaXNdKSkKQEAg
LTYxNyw3ICs2MTcsNyBAQCBpbmxpbmUgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUmIGZy
YW1lKQogICAgIG1fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpLnBhcmVudExheWVyID0gbV9jb250
ZW50TGF5ZXIuZ2V0KCk7CiAKICAgICBpZiAoc3VwcG9ydHNGb3JtcygpKSB7Ci0gICAgICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUuY29yZUZyYW1lKCktPmRvY3VtZW50KCk7CisgICAg
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpOwog
ICAgICAgICBtX2Fubm90YXRpb25Db250YWluZXIgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChk
aXZUYWcsIGZhbHNlKTsKICAgICAgICAgbV9hbm5vdGF0aW9uQ29udGFpbmVyLT5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGlkQXR0ciwgQXRvbVN0cmluZygiYW5ub3RhdGlvbkNv
bnRhaW5lciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKQEAgLTYzMCwx
MyArNjMwLDEzIEBAIGlubGluZSBQREZQbHVnaW46OlBERlBsdWdpbihXZWJGcmFtZSYgZnJhbWUp
CiAKICAgICBtX2FjY2Vzc2liaWxpdHlPYmplY3QgPSBhZG9wdE5TKFtbV0tQREZQbHVnaW5BY2Nl
c3NpYmlsaXR5T2JqZWN0IGFsbG9jXSBpbml0V2l0aFBERlBsdWdpbjp0aGlzXSk7CiAgICAgW21f
YWNjZXNzaWJpbGl0eU9iamVjdCBzZXRQZGZMYXllckNvbnRyb2xsZXI6bV9wZGZMYXllckNvbnRy
b2xsZXIuZ2V0KCldOwotICAgIFttX2FjY2Vzc2liaWxpdHlPYmplY3Qgc2V0UGFyZW50Om1fZnJh
bWUucGFnZSgpLT5hY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCldOworICAgIFttX2FjY2Vzc2li
aWxpdHlPYmplY3Qgc2V0UGFyZW50OmZyYW1lLnBhZ2UoKS0+YWNjZXNzaWJpbGl0eVJlbW90ZU9i
amVjdCgpXTsKIAogICAgIFttX2NvbnRhaW5lckxheWVyIGFkZFN1YmxheWVyOm1fY29udGVudExh
eWVyLmdldCgpXTsKICAgICBbbV9jb250YWluZXJMYXllciBhZGRTdWJsYXllcjptX3Njcm9sbENv
cm5lckxheWVyLmdldCgpXTsKICNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxP
Q0tJTkcpCiAgICAgaWYgKFttX3BkZkxheWVyQ29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHNldERldmljZUNvbG9yU3BhY2U6KV0pIHsKLSAgICAgICAgYXV0byB2aWV3ID0g
bV9mcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpOworICAgICAgICBhdXRvIHZpZXcgPSBmcmFtZS5j
b3JlRnJhbWUoKS0+dmlldygpOwogICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RGV2
aWNlQ29sb3JTcGFjZTpzY3JlZW5Db2xvclNwYWNlKHZpZXcpXTsKICAgICB9CiAjZW5kaWYKQEAg
LTY1Myw3ICs2NTMsNyBAQCBpbmxpbmUgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUmIGZy
YW1lKQogUERGUGx1Z2luOjp+UERGUGx1Z2luKCkKIHsKICNpZiBFTkFCTEUoVUlfUFJPQ0VTU19Q
REZfSFVEKQotICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCisgICAgaWYgKGF1
dG8qIHBhZ2UgPSBtX2ZyYW1lID8gbV9mcmFtZS0+cGFnZSgpIDogbnVsbHB0cikKICAgICAgICAg
cGFnZS0+cmVtb3ZlUERGSFVEKCp0aGlzKTsKICNlbmRpZgogfQpAQCAtOTY1LDcgKzk2NSw5IEBA
IHZvaWQgUERGUGx1Z2luOjpnZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbihzaXplX3QgY291bnQs
IG9mZl90IHBvc2l0aW9uLCBDb21wbGV0CiAgICAgYXV0byBpZGVudGlmaWVyID0gcmVxdWVzdC5p
ZGVudGlmaWVyKCk7CiAgICAgbV9vdXRzdGFuZGluZ0J5dGVSYW5nZVJlcXVlc3RzLnNldChpZGVu
dGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpKTsKIAotICAgIGF1dG8qIGNvcmVGcmFtZSA9IG1fZnJh
bWUuY29yZUZyYW1lKCk7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisgICAg
YXV0byogY29yZUZyYW1lID0gbV9mcmFtZS0+Y29yZUZyYW1lKCk7CiAgICAgaWYgKCFjb3JlRnJh
bWUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTI4OSw3ICsxMjkxLDcgQEAgdm9pZCBQREZQbHVn
aW46OnVwZGF0ZVNjcm9sbGJhcnMoKQogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRG
cmFtZVJlY3Qoc2Nyb2xsYmFyUmVjdCk7CiAgICAgfQogCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZp
ZXcgPSBtX2ZyYW1lLmNvcmVGcmFtZSgpLT52aWV3KCk7CisgICAgYXV0byogZnJhbWVWaWV3ID0g
bV9mcmFtZSA/IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkgOiBudWxscHRyOwogICAgIGlm
ICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm47CiAKQEAgLTEzNDEsOCArMTM0Myw4IEBAIFJl
ZjxTY3JvbGxiYXI+IFBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKQogICAgIH0KICAgICBkaWRBZGRTY3JvbGxiYXIod2lkZ2V0LnB0cigp
LCBvcmllbnRhdGlvbik7CiAKLSAgICBpZiAoYXV0byogZnJhbWUgPSBtX2ZyYW1lLmNvcmVGcmFt
ZSgpKSB7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgeworICAgIGlm
IChhdXRvKiBmcmFtZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA6IG51bGxwdHIp
IHsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgICAg
ICBpZiAocGFnZS0+aXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSkKICAgICAgICAgICAgICAgICBz
Y3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihwYWdlLT53aGVlbEV2ZW50
VGVzdE1vbml0b3IoKSk7CiAgICAgICAgIH0KQEAgLTE0NDMsOCArMTQ0NSw4IEBAIEludFJlY3Qg
UERGUGx1Z2luOjpzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KGJvb2wqKSBjb25zdAogCiBib29s
IFBERlBsdWdpbjo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIGlmIChGcmFtZSogY29yZUZyYW1l
ID0gbV9mcmFtZS5jb3JlRnJhbWUoKSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmVG
cmFtZS0+cGFnZSgpKQorICAgIGlmIChhdXRvKiBjb3JlRnJhbWUgPSBtX2ZyYW1lID8gbV9mcmFt
ZS0+Y29yZUZyYW1lKCkgOiBudWxscHRyKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gY29y
ZUZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICByZXR1cm4gcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuaXNBY3RpdmUoKTsKICAgICB9CiAKQEAgLTE0NTMsOCArMTQ1NSw4IEBAIGJvb2wgUERGUGx1
Z2luOjppc0FjdGl2ZSgpIGNvbnN0CiAKIGJvb2wgUERGUGx1Z2luOjpmb3JjZVVwZGF0ZVNjcm9s
bGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3JtYW5jZVRlc3RpbmcoKSBjb25zdAogewotICAgIGlm
IChGcmFtZSogY29yZUZyYW1lID0gbV9mcmFtZS5jb3JlRnJhbWUoKSkgewotICAgICAgICBpZiAo
UGFnZSogcGFnZSA9IGNvcmVGcmFtZS0+cGFnZSgpKQorICAgIGlmIChhdXRvKiBjb3JlRnJhbWUg
PSBtX2ZyYW1lID8gbV9mcmFtZS0+Y29yZUZyYW1lKCkgOiBudWxscHRyKSB7CisgICAgICAgIGlm
IChhdXRvKiBwYWdlID0gY29yZUZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICByZXR1cm4gcGFn
ZS0+c2V0dGluZ3MoKS5mb3JjZVVwZGF0ZVNjcm9sbGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3Jt
YW5jZVRlc3RpbmcoKTsKICAgICB9CiAKQEAgLTE1MjQsMTMgKzE1MjYsMTcgQEAgc3RhdGljIHZv
aWQganNQREZEb2NGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCiAKIEpTVmFsdWVSZWYgUERG
UGx1Z2luOjpqc1BERkRvY1ByaW50KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIFBE
RlBsdWdpbiogcGRmUGx1Z2luID0gc3RhdGljX2Nhc3Q8UERGUGx1Z2luKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBhdXRvKiBwZGZQbHVnaW4gPSBzdGF0aWNfY2FzdDxQ
REZQbHVnaW4qPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworCisgICAgYXV0byog
ZnJhbWUgPSBwZGZQbHVnaW4tPm1fZnJhbWUuZ2V0KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CiAKLSAgICBGcmFtZSogY29yZUZy
YW1lID0gcGRmUGx1Z2luLT5tX2ZyYW1lLmNvcmVGcmFtZSgpOworICAgIGF1dG8qIGNvcmVGcmFt
ZSA9IGZyYW1lLT5jb3JlRnJhbWUoKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CiAKLSAgICBQYWdlKiBwYWdlID0gY29yZUZy
YW1lLT5wYWdlKCk7CisgICAgYXV0byogcGFnZSA9IGNvcmVGcmFtZS0+cGFnZSgpOwogICAgIGlm
ICghcGFnZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CiAKQEAg
LTE2MzIsOCArMTYzOCw4IEBAIHZvaWQgUERGUGx1Z2luOjppbnN0YWxsUERGRG9jdW1lbnQoKQog
ICAgIGlmIChbbV9wZGZEb2N1bWVudCBpc0xvY2tlZF0pCiAgICAgICAgIGNyZWF0ZVBhc3N3b3Jk
RW50cnlGb3JtKCk7CiAKLSAgICBpZiAoW21fcGRmTGF5ZXJDb250cm9sbGVyIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Ioc2V0VVJMRnJhZ21lbnQ6KV0pCi0gICAgICAgIFttX3BkZkxheWVy
Q29udHJvbGxlciBzZXRVUkxGcmFnbWVudDptX2ZyYW1lLnVybCgpLmZyYWdtZW50SWRlbnRpZmll
cigpLmNyZWF0ZU5TU3RyaW5nKCkuZ2V0KCldOworICAgIGlmIChtX2ZyYW1lICYmIFttX3BkZkxh
eWVyQ29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFVSTEZyYWdtZW50
OildKQorICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0VVJMRnJhZ21lbnQ6bV9mcmFt
ZS0+dXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkuY3JlYXRlTlNTdHJpbmcoKS5nZXQoKV07CiB9
CiAKIHZvaWQgUERGUGx1Z2luOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lKQpAQCAtMTgxNCw3ICsxODIwLDcgQEAgdm9pZCBQREZQbHVnaW46OnVw
ZGF0ZVBhZ2VBbmREZXZpY2VTY2FsZUZhY3RvcnMoKQogCiAgICAgZG91YmxlIG5ld1NjYWxlRmFj
dG9yID0gY29udHJvbGxlcigpLT5jb250ZW50c1NjYWxlRmFjdG9yKCk7CiAgICAgaWYgKCFoYW5k
bGVzUGFnZVNjYWxlRmFjdG9yKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1l
LnBhZ2UoKSkKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1lID8gbV9mcmFtZS0+cGFn
ZSgpIDogbnVsbHB0cikKICAgICAgICAgICAgIG5ld1NjYWxlRmFjdG9yICo9IHBhZ2UtPnBhZ2VT
Y2FsZUZhY3RvcigpOwogICAgIH0KIApAQCAtMTg0NCw3ICsxODUwLDkgQEAgdm9pZCBQREZQbHVn
aW46OmNhbGN1bGF0ZVNpemVzKCkKICAgICBzZXRQREZEb2N1bWVudFNpemUoSW50U2l6ZShbbV9w
ZGZMYXllckNvbnRyb2xsZXIgY29udGVudFNpemVSZXNwZWN0aW5nWm9vbV0pKTsKIAogI2lmIEVO
QUJMRShVSV9QUk9DRVNTX1BERl9IVUQpCi0gICAgbV9mcmFtZS5wYWdlKCktPnVwZGF0ZVBERkhV
RExvY2F0aW9uKCp0aGlzLCBmcmFtZUZvckhVRCgpKTsKKyAgICBpZiAoIW1fZnJhbWUpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2ZyYW1lLT5wYWdlKCktPnVwZGF0ZVBERkhVRExvY2F0aW9uKCp0
aGlzLCBmcmFtZUZvckhVRCgpKTsKICNlbmRpZgogfQogCkBAIC0xODYwLDcgKzE4NjgsOSBAQCBi
b29sIFBERlBsdWdpbjo6aW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
CiB2b2lkIFBERlBsdWdpbjo6d2lsbERldGFjaFJlbmRlcmVyKCkKIHsKLSAgICBpZiAoYXV0byog
ZnJhbWVWaWV3ID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpKQorICAgIGlmICghbV9mcmFt
ZSB8fCAhbV9mcmFtZS0+Y29yZUZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoYXV0
byogZnJhbWVWaWV3ID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKSkKICAgICAgICAgZnJh
bWVWaWV3LT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKIH0KIApAQCAtMTg4MSw3ICsxODkx
LDcgQEAgdm9pZCBQREZQbHVnaW46OmRlc3Ryb3koKQogCiAgICAgbV9wZGZMYXllckNvbnRyb2xs
ZXIuZ2V0KCkuZGVsZWdhdGUgPSAwOwogCi0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IG1fZnJh
bWUuY29yZUZyYW1lKCktPnZpZXcoKSkKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gbV9mcmFt
ZSAmJiBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA/IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkg
OiBudWxscHRyKQogICAgICAgICBmcmFtZVZpZXctPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMp
OwogCiAgICAgbV9hY3RpdmVBbm5vdGF0aW9uID0gbnVsbHB0cjsKQEAgLTE5MDgsNyArMTkxOCw3
IEBAIHZvaWQgUERGUGx1Z2luOjp1cGRhdGVDb250cm9sVGludHMoR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQpCiB2b2lkIFBERlBsdWdpbjo6cGFpbnRDb250cm9sRm9yTGF5ZXJJbkNv
bnRleHQoQ0FMYXllciAqbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0KQogewogI2lmIFBMQVRG
T1JNKE1BQykKLSAgICBhdXRvKiBwYWdlID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+cGFnZSgpOwor
ICAgIGF1dG8qIHBhZ2UgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPmNvcmVGcmFtZSgpID8gbV9mcmFt
ZS0+Y29yZUZyYW1lKCktPnBhZ2UoKSA6IG51bGxwdHI7CiAgICAgTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UocGFnZS0+dXNlRGFya0FwcGVhcmFuY2UoKSk7CiAj
ZW5kaWYKIApAQCAtMTk5NywyMiArMjAwNywyNiBAQCBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZl
cnRGcm9tUm9vdFZpZXdUb1BERlZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogCiBG
bG9hdFJlY3QgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1NjcmVlbihjb25zdCBGbG9h
dFJlY3QmIHJlY3QpIGNvbnN0CiB7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX2ZyYW1l
LmNvcmVGcmFtZSgpLT52aWV3KCk7Ci0KKyAgICBhdXRvKiBjb3JlRnJhbWUgPSBtX2ZyYW1lID8g
bV9mcmFtZS0+Y29yZUZyYW1lKCkgOiBudWxscHRyOworICAgIGlmICghY29yZUZyYW1lKQorICAg
ICAgICByZXR1cm4geyB9OworICAgIGF1dG8qIGZyYW1lVmlldyA9IGNvcmVGcmFtZS0+dmlldygp
OwogICAgIGlmICghZnJhbWVWaWV3KQotICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CisgICAg
ICAgIHJldHVybiB7IH07CiAKICAgICBGbG9hdFJlY3QgdXBkYXRlZFJlY3QgPSByZWN0OwogICAg
IHVwZGF0ZWRSZWN0LnNldExvY2F0aW9uKGNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcoSW50
UG9pbnQodXBkYXRlZFJlY3QubG9jYXRpb24oKSkpKTsKLSAgICByZXR1cm4gbV9mcmFtZS5jb3Jl
RnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS5yb290Vmlld1RvU2NyZWVuKGVuY2xvc2luZ0ludFJl
Y3QodXBkYXRlZFJlY3QpKTsKKyAgICBhdXRvKiBwYWdlID0gY29yZUZyYW1lLT5wYWdlKCk7Cisg
ICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBwYWdlLT5jaHJv
bWUoKS5yb290Vmlld1RvU2NyZWVuKGVuY2xvc2luZ0ludFJlY3QodXBkYXRlZFJlY3QpKTsKIH0K
IAogSW50UmVjdCBQREZQbHVnaW46OmJvdW5kc09uU2NyZWVuKCkgY29uc3QKIHsKLSAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IG1fZnJhbWUuY29yZUZyYW1lKCktPnZpZXcoKTsKLQorICAgIGF1
dG8qIGZyYW1lVmlldyA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpIDog
bnVsbHB0cjsKICAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuIEludFJlY3QoKTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIEZsb2F0UmVjdCBib3VuZHMgPSBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBzaXplKCkpOwogICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmlld0Nvb3Jk
aW5hdGVzID0gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFm
ZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGJvdW5kcyk7CkBAIC0yMDIyLDEwICsyMDM2LDEyIEBA
IEludFJlY3QgUERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0CiB2b2lkIFBERlBsdWdp
bjo6dmlzaWJpbGl0eURpZENoYW5nZShib29sIHZpc2libGUpCiB7CiAjaWYgRU5BQkxFKFVJX1BS
T0NFU1NfUERGX0hVRCkKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKICAgICBp
ZiAodmlzaWJsZSkKLSAgICAgICAgbV9mcmFtZS5wYWdlKCktPmNyZWF0ZVBERkhVRCgqdGhpcywg
ZnJhbWVGb3JIVUQoKSk7CisgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+Y3JlYXRlUERGSFVEKCp0
aGlzLCBmcmFtZUZvckhVRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fZnJhbWUucGFnZSgpLT5y
ZW1vdmVQREZIVUQoKnRoaXMpOworICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPnJlbW92ZVBERkhV
RCgqdGhpcyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2aXNpYmxlKTsKICNlbmRpZgpAQCAt
MjI3Myw3ICsyMjg5LDkgQEAgYm9vbCBQREZQbHVnaW46OmhhbmRsZU1vdXNlTGVhdmVFdmVudChj
b25zdCBXZWJNb3VzZUV2ZW50JikKICAgICAKIGJvb2wgUERGUGx1Z2luOjpzaG93Q29udGV4dE1l
bnVBdFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKLSAgICBGcmFtZVZpZXcqIGZyYW1l
VmlldyA9IG1fZnJhbWUuY29yZUZyYW1lKCktPnZpZXcoKTsKKyAgICBhdXRvKiBmcmFtZVZpZXcg
PSBtX2ZyYW1lID8gbV9mcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKSA6IG51bGxwdHI7CisgICAg
aWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBJbnRQb2ludCBjb250
ZW50c1BvaW50ID0gZnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocG9pbnQpOwogICAgIFdl
Yk1vdXNlRXZlbnQgZXZlbnQoV2ViRXZlbnQ6Ok1vdXNlRG93biwgV2ViTW91c2VFdmVudDo6Umln
aHRCdXR0b24sIDAsIGNvbnRlbnRzUG9pbnQsIGNvbnRlbnRzUG9pbnQsIDAsIDAsIDAsIDEsIE9w
dGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+IHsgfSwgV2FsbFRpbWU6Om5vdygpLCBXZWJDb3Jl
OjpGb3JjZUF0Q2xpY2spOwogICAgIHJldHVybiBoYW5kbGVDb250ZXh0TWVudUV2ZW50KGV2ZW50
KTsKQEAgLTIyODEsMTEgKzIyOTksMTcgQEAgYm9vbCBQREZQbHVnaW46OnNob3dDb250ZXh0TWVu
dUF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogCiBib29sIFBERlBsdWdpbjo6aGFuZGxl
Q29udGV4dE1lbnVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAo
IW1fZnJhbWUucGFnZSgpKQorICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2ZyYW1lLT5jb3JlRnJhbWUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8qIGZyYW1lVmlldyA9IG1fZnJhbWUtPmNv
cmVGcmFtZSgpLT52aWV3KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKLSAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IG1fZnJhbWUuY29yZUZyYW1lKCktPnZpZXcoKTsKICAgICBJbnRQ
b2ludCBwb2ludCA9IGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihJbnRSZWN0KGZyYW1lVmll
dy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKSwgSW50U2l6ZSgpKSkubG9jYXRp
b24oKTsKIAogICAgIE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1aUxheW91dERpcmVj
dGlvbiA9IHdlYlBhZ2UtPnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSA9PSBVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0
OwpAQCAtMjM5MywxMyArMjQxNywxNyBAQCBib29sIFBERlBsdWdpbjo6aXNGdWxsRnJhbWVQbHVn
aW4oKSBjb25zdAogewogICAgIC8vIDxvYmplY3Q+IG9yIDxlbWJlZD4gcGx1Z2lucyB3aWxsIGFw
cGVhciB0byBiZSBpbiB0aGVpciBwYXJlbnQgZnJhbWUsIHNvIHdlIGhhdmUgdG8KICAgICAvLyBj
aGVjayB3aGV0aGVyIG91ciBmcmFtZSdzIHdpZGdldCBpcyBleGFjdGx5IG91ciBQbHVnaW5WaWV3
LgotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUuY29yZUZyYW1lKCktPmRvY3VtZW50
KCk7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5jb3JlRnJhbWUoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS0+Y29yZUZyYW1lKCkt
PmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJldHVybiBkb2N1bWVudC0+aXNQbHVnaW5Eb2N1bWVudCgpICYmIHN0YXRpY19jYXN0PFBs
dWdpbkRvY3VtZW50Kj4oZG9jdW1lbnQpLT5wbHVnaW5XaWRnZXQoKSA9PSBwbHVnaW5WaWV3KCk7
CiB9CiAKIGJvb2wgUERGUGx1Z2luOjpoYW5kbGVzUGFnZVNjYWxlRmFjdG9yKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9mcmFtZS5pc01haW5GcmFtZSgpICYmIGlzRnVsbEZyYW1lUGx1Z2luKCk7
CisgICAgcmV0dXJuIG1fZnJhbWUgJiYgbV9mcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBpc0Z1bGxG
cmFtZVBsdWdpbigpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6Y2xpY2tlZExpbmsoTlNVUkwgKnVy
bCkKQEAgLTI0MDgsNyArMjQzNiw5IEBAIHZvaWQgUERGUGx1Z2luOjpjbGlja2VkTGluayhOU1VS
TCAqdXJsKQogICAgIGlmIChjb3JlVVJMLnByb3RvY29sSXNKYXZhU2NyaXB0KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8qIGZyYW1lID0gbV9mcmFtZS5jb3JlRnJhbWUoKTsKKyAgICBh
dXRvKiBmcmFtZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA6IG51bGxwdHI7Cisg
ICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEV2ZW50PiBjb3Jl
RXZlbnQ7CiAgICAgaWYgKG1fbGFzdE1vdXNlRXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpOb1R5
cGUpCkBAIC0yNDkxLDEzICsyNTIxLDE5IEBAIHZvaWQgUERGUGx1Z2luOjp6b29tT3V0KCkKIHZv
aWQgUERGUGx1Z2luOjpzYXZlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiwg
Y29uc3QgVVJMJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gbGl2ZURhdGEoKTsKLSAgICBjb21wbGV0aW9uSGFu
ZGxlcihtX3N1Z2dlc3RlZEZpbGVuYW1lLCBtX2ZyYW1lLnVybCgpLCBJUEM6OiBEYXRhUmVmZXJl
bmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgp
KTsKKyAgICBVUkwgdXJsOworICAgIGlmIChtX2ZyYW1lKQorICAgICAgICB1cmwgPSBtX2ZyYW1l
LT51cmwoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX3N1Z2dlc3RlZEZpbGVuYW1lLCB1cmws
IElQQzo6IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0
ZXMpLCBkYXRhLmxlbmd0aCkpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6b3BlbldpdGhQcmV2aWV3
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiwgRnJhbWVJbmZvRGF0YSYmLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBsaXZlRGF0YSgpOwotICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1fc3VnZ2VzdGVkRmlsZW5hbWUsIG1fZnJhbWUuaW5mbygpLCBJUEM6OiBEYXRhUmVm
ZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxl
bmd0aCB9LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOworICAgIEZyYW1lSW5mb0RhdGEg
ZnJhbWVJbmZvOworICAgIGlmIChtX2ZyYW1lKQorICAgICAgICBmcmFtZUluZm8gPSBtX2ZyYW1l
LT5pbmZvKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9zdWdnZXN0ZWRGaWxlbmFtZSwgV1RG
TW92ZShmcmFtZUluZm8pLCBJUEM6OiBEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCkpOwogfQogCiAjZWxzZSAvLyBFTkFCTEUoVUlfUFJPQ0VTU19QREZfSFVEKQpAQCAt
MjUxMCwxMSArMjU0NiwxNiBAQCB2b2lkIFBERlBsdWdpbjo6c2F2ZVRvUERGKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgTlNEYXRhICpkYXRhID0gbGl2ZURhdGEoKTsKLSAgICBtX2ZyYW1lLnBh
Z2UoKS0+c2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKG1fc3VnZ2VzdGVkRmlsZW5hbWUs
IG1fZnJhbWUudXJsKCksIHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oW2RhdGEg
Ynl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5w
YWdlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2ZyYW1lLT5wYWdlKCktPnNhdmVQREZUb0Zp
bGVJbkRvd25sb2Fkc0ZvbGRlcihtX3N1Z2dlc3RlZEZpbGVuYW1lLCBtX2ZyYW1lLT51cmwoKSwg
c3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihbZGF0YSBieXRlc10pLCBbZGF0YSBs
ZW5ndGhdKTsKIH0KIAogdm9pZCBQREZQbHVnaW46Om9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24o
KQogeworICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+cGFnZSgpKQorICAgICAgICByZXR1
cm47CisKICAgICBpZiAoIW1fdGVtcG9yYXJ5UERGVVVJRCkgewogICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHByb2JhYmx5IG5vdGlmeSB0aGUgdXNlciB0aGF0IHRoZXkgY2FuJ3Qgc2F2ZSBi
ZWZvcmUgdGhlIGRvY3VtZW50IGlzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgICAgIC8vIFBERlZp
ZXdDb250cm9sbGVyIGRvZXMgYW4gTlNCZWVwKCksIGJ1dCB0aGF0IHNlZW1zIGluc3VmZmljaWVu
dC4KQEAgLTI1MjYsMTEgKzI1NjcsMTEgQEAgdm9pZCBQREZQbHVnaW46Om9wZW5XaXRoTmF0aXZl
QXBwbGljYXRpb24oKQogICAgICAgICBtX3RlbXBvcmFyeVBERlVVSUQgPSBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCk7CiAgICAgICAgIEFTU0VSVChtX3RlbXBvcmFyeVBERlVVSUQpOwogCi0g
ICAgICAgIG1fZnJhbWUucGFnZSgpLT5zYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0
aE5hdGl2ZUFwcGxpY2F0aW9uKG1fc3VnZ2VzdGVkRmlsZW5hbWUsIG1fZnJhbWUuaW5mbygpLCBz
dGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxl
bmd0aF0sIG1fdGVtcG9yYXJ5UERGVVVJRCk7CisgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+c2F2
ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihtX3N1Z2dl
c3RlZEZpbGVuYW1lLCBtX2ZyYW1lLT5pbmZvKCksIHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIgKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSwgbV90ZW1wb3JhcnlQREZVVUlE
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZnJhbWUucGFnZSgpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok9wZW5QREZGcm9tVGVtcG9yYXJ5Rm9sZGVyV2l0aE5hdGl2
ZUFwcGxpY2F0aW9uKG1fZnJhbWUuaW5mbygpLCBtX3RlbXBvcmFyeVBERlVVSUQpKTsKKyAgICBt
X2ZyYW1lLT5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6T3BlblBERkZyb21U
ZW1wb3JhcnlGb2xkZXJXaXRoTmF0aXZlQXBwbGljYXRpb24obV9mcmFtZS0+aW5mbygpLCBtX3Rl
bXBvcmFyeVBERlVVSUQpKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShVSV9QUk9DRVNTX1BERl9I
VUQpCkBAIC0yNTkxLDcgKzI2MzIsMTAgQEAgdm9pZCBQREZQbHVnaW46OnNob3dEZWZpbml0aW9u
Rm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgQ0cKICAgICBk
YXRhRm9yU2VsZWN0aW9uLnByZXNlbnRhdGlvblRyYW5zaXRpb24gPSBUZXh0SW5kaWNhdG9yUHJl
c2VudGF0aW9uVHJhbnNpdGlvbjo6RmFkZUluOwogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8udGV4
dEluZGljYXRvciA9IGRhdGFGb3JTZWxlY3Rpb247CiAgICAgCi0gICAgbV9mcmFtZS5wYWdlKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAo
ZGljdGlvbmFyeVBvcHVwSW5mbykpOworICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+cGFn
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZyYW1lLT5wYWdlKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoZGljdGlvbmFyeVBv
cHVwSW5mbykpOwogfQogCiB1bnNpZ25lZCBQREZQbHVnaW46OmNvdW50RmluZE1hdGNoZXMoY29u
c3QgU3RyaW5nJiB0YXJnZXQsIFdlYkNvcmU6OkZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVk
IC8qbWF4TWF0Y2hDb3VudCovKQpAQCAtMjY5OSw3ICsyNzQzLDkgQEAgdm9pZCBQREZQbHVnaW46
OmZvY3VzUHJldmlvdXNBbm5vdGF0aW9uKCkKIAogdm9pZCBQREZQbHVnaW46Om5vdGlmeVNlbGVj
dGlvbkNoYW5nZWQoUERGU2VsZWN0aW9uICopCiB7Ci0gICAgbV9mcmFtZS5wYWdlKCktPmRpZENo
YW5nZVNlbGVjdGlvbigpOworICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+cGFnZSgpKQor
ICAgICAgICByZXR1cm47CisgICAgbV9mcmFtZS0+cGFnZSgpLT5kaWRDaGFuZ2VTZWxlY3Rpb24o
KTsKIH0KIAogc3RhdGljIGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY29yZUN1cnNvcihQREZMYXll
ckNvbnRyb2xsZXJDdXJzb3JUeXBlIHR5cGUpCkBAIC0yNzE3LDcgKzI3NjMsMTAgQEAgc3RhdGlj
IGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY29yZUN1cnNvcihQREZMYXllckNvbnRyb2xsZXJDdXJz
b3JUeXBlIHR5cGUpCiAKIHZvaWQgUERGUGx1Z2luOjpub3RpZnlDdXJzb3JDaGFuZ2VkKHVpbnQ2
NF90IHR5cGUpCiB7Ci0gICAgbV9mcmFtZS5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2V0Q3Vyc29yKGNvcmVDdXJzb3Ioc3RhdGljX2Nhc3Q8UERGTGF5ZXJDb250cm9sbGVy
Q3Vyc29yVHlwZT4odHlwZSkpKSk7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdl
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJhbWUtPnBhZ2UoKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTZXRDdXJzb3IoY29yZUN1cnNvcihzdGF0aWNfY2FzdDxQREZMYXll
ckNvbnRyb2xsZXJDdXJzb3JUeXBlPih0eXBlKSkpKTsKIH0KIAogU3RyaW5nIFBERlBsdWdpbjo6
Z2V0U2VsZWN0aW9uU3RyaW5nKCkgY29uc3QKQEAgLTI4NDEsNyArMjg5MCw5IEBAIHN0YXRpYyBO
U1JlY3QgcmVjdEluVmlld1NwYWNlRm9yUmVjdEluTGF5b3V0U3BhY2UoUERGTGF5ZXJDb250cm9s
bGVyKiBwZGZMYXllckNvCiAgICAgCiBXZWJDb3JlOjpBWE9iamVjdENhY2hlKiBQREZQbHVnaW46
OmF4T2JqZWN0Q2FjaGUoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lLmNvcmVGcmFtZSgp
LT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2Zy
YW1lLT5jb3JlRnJhbWUoKSB8fCAhbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpOwogfQogCiBXZWJDb3JlOjpGbG9hdFJlY3QgUERG
UGx1Z2luOjpyZWN0Rm9yU2VsZWN0aW9uSW5Sb290VmlldyhQREZTZWxlY3Rpb24gKnNlbGVjdGlv
bikgY29uc3QKQEAgLTI4NzAsMTIgKzI5MjEsMTYgQEAgQ0dGbG9hdCBQREZQbHVnaW46OnNjYWxl
RmFjdG9yKCkgY29uc3QKIAogdm9pZCBQREZQbHVnaW46OnBlcmZvcm1XZWJTZWFyY2goTlNTdHJp
bmcgKnN0cmluZykKIHsKLSAgICBtX2ZyYW1lLnBhZ2UoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTZWFyY2hUaGVXZWIoc3RyaW5nKSk7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2Zy
YW1lLT5wYWdlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2ZyYW1lLT5wYWdlKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2VhcmNoVGhlV2ViKHN0cmluZykpOwogfQogCiB2b2lk
IFBERlBsdWdpbjo6cGVyZm9ybVNwb3RsaWdodFNlYXJjaChOU1N0cmluZyAqc3RyaW5nKQogewot
ICAgIG1fZnJhbWUucGFnZSgpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlYXJjaFdp
dGhTcG90bGlnaHQoc3RyaW5nKSk7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdl
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2ZyYW1lLT5wYWdlKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2VhcmNoV2l0aFNwb3RsaWdodChzdHJpbmcpKTsKIH0KIAogYm9vbCBQ
REZQbHVnaW46OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcAppbmRleCA0NzQ3ODdl
YmZjZDkxZDYwZWZmMDZiMjU2ZjFhOGY0YmVlZDY2NDE3Li5iNzZkMzQ0OGYyMGFjYmQ5OTgzNzBk
NGI5ZjQ4M2RmZDcxNzQwNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQbHVnaW4uaCIKIAogI2lu
Y2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKKyNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRQb2ludC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgpAQCAtODIsMjAgKzgzLDE2
IEBAIGJvb2wgUGx1Z2luOjpQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogCiBQbHVnaW46OlBsdWdpbihQbHVnaW5UeXBlIHR5
cGUpCiAgICAgOiBtX3R5cGUodHlwZSkKLSAgICAsIG1fcGx1Z2luQ29udHJvbGxlcigwKQogewog
fQogCi1QbHVnaW46On5QbHVnaW4oKQotewotfQorUGx1Z2luOjp+UGx1Z2luKCkgPSBkZWZhdWx0
OwogCi1ib29sIFBsdWdpbjo6aW5pdGlhbGl6ZShQbHVnaW5Db250cm9sbGVyKiBwbHVnaW5Db250
cm9sbGVyLCBjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorYm9vbCBQbHVnaW46OmluaXRp
YWxpemUoUGx1Z2luQ29udHJvbGxlciYgcGx1Z2luQ29udHJvbGxlciwgY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKIHsKICAgICBBU1NFUlQoIW1fcGx1Z2luQ29udHJvbGxlcik7Ci0gICAg
QVNTRVJUKHBsdWdpbkNvbnRyb2xsZXIpOwogCi0gICAgbV9wbHVnaW5Db250cm9sbGVyID0gcGx1
Z2luQ29udHJvbGxlcjsKKyAgICBtX3BsdWdpbkNvbnRyb2xsZXIgPSBtYWtlV2Vha1B0cihwbHVn
aW5Db250cm9sbGVyKTsKIAogICAgIHJldHVybiBpbml0aWFsaXplKHBhcmFtZXRlcnMpOwogfQpA
QCAtMTIwLDQgKzExNywxNCBAQCBJbnRQb2ludCBQbHVnaW46OmNvbnZlcnRUb1Jvb3RWaWV3KGNv
bnN0IEludFBvaW50JikgY29uc3QKICAgICByZXR1cm4gSW50UG9pbnQoKTsKIH0KIAorUGx1Z2lu
Q29udHJvbGxlciogUGx1Z2luOjpjb250cm9sbGVyKCkKK3sKKyAgICByZXR1cm4gbV9wbHVnaW5D
b250cm9sbGVyLmdldCgpOworfQorCitjb25zdCBQbHVnaW5Db250cm9sbGVyKiBQbHVnaW46OmNv
bnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3BsdWdpbkNvbnRyb2xsZXIuZ2V0KCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uaAppbmRleCA4OTk4MzZjMGMxY2IyYTZkNGJiOTg2NWQzMTU1M2E3MGRhNzhk
NGY3Li5jNmQ2NGJlNDEzOGRhZWQ0NDA3MzBkMGE0ODM0MDZjZDFiODNjYjhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogdHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QqIGlkOwpAQCAtOTYs
MTkgKzk3LDE0IEBAIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShJUEM6OkRlY29kZXImLCBQYXJhbWV0ZXJzJik7CiAgICAgfTsKIAotICAgIC8v
IFNldHMgdGhlIGFjdGl2ZSBwbHVnLWluIGNvbnRyb2xsZXIgYW5kIGluaXRpYWxpemVzIHRoZSBw
bHVnLWluLgotICAgIGJvb2wgaW5pdGlhbGl6ZShQbHVnaW5Db250cm9sbGVyKiwgY29uc3QgUGFy
YW1ldGVycyYpOworICAgIGJvb2wgaW5pdGlhbGl6ZShQbHVnaW5Db250cm9sbGVyJiwgY29uc3Qg
UGFyYW1ldGVycyYpOwogCi0gICAgdmlydHVhbCBib29sIGlzQmVpbmdBc3luY2hyb25vdXNseUlu
aXRpYWxpemVkKCkgY29uc3QgPSAwOwotCi0gICAgLy8gRGVzdHJveXMgdGhlIHBsdWctaW4uCiAg
ICAgdm9pZCBkZXN0cm95UGx1Z2luKCk7CiAKICAgICBib29sIGlzQmVpbmdEZXN0cm95ZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzQmVpbmdEZXN0cm95ZWQ7IH0KIAotICAgIC8vIFJldHVybnMgdGhl
IHBsdWctaW4gY29udHJvbGxlciBmb3IgdGhpcyBwbHVnLWluLgotICAgIFBsdWdpbkNvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIoKSB7IHJldHVybiBtX3BsdWdpbkNvbnRyb2xsZXI7IH0KLSAgICBjb25z
dCBQbHVnaW5Db250cm9sbGVyKiBjb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5D
b250cm9sbGVyOyB9CisgICAgUGx1Z2luQ29udHJvbGxlciogY29udHJvbGxlcigpOworICAgIGNv
bnN0IFBsdWdpbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIoKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
flBsdWdpbigpOwogCkBAIC0zMTcsNyArMzEzLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9p
c0JlaW5nRGVzdHJveWVkIHsgZmFsc2UgfTsKIAogcHJpdmF0ZToKLSAgICBQbHVnaW5Db250cm9s
bGVyKiBtX3BsdWdpbkNvbnRyb2xsZXI7CisgICAgV2Vha1B0cjxQbHVnaW5Db250cm9sbGVyPiBt
X3BsdWdpbkNvbnRyb2xsZXI7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgK
aW5kZXggNDJhM2I3OGE5NjQ4NjJjY2Q4M2IzMWRhYTA5NjIxOTczYzQxYTVkNy4uM2I3YWZlZGE1
NzZlYjJmYmM2NTc4ZTQ0ZTUwYWNkZWQzODE1NWVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaApAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJQbHVnaW5Db21w
bGV4VGV4dElucHV0U3RhdGUuaCIKQEAgLTQ3LDcgKzQ4LDcgQEAgY2xhc3MgUHJvdGVjdGlvblNw
YWNlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUGx1Z2luQ29udHJvbGxlciB7Citj
bGFzcyBQbHVnaW5Db250cm9sbGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBsdWdpbkNvbnRy
b2xsZXI+IHsKIHB1YmxpYzoKICAgICAvLyBUZWxscyB0aGUgY29udHJvbGxlciB0aGF0IHRoZSBw
bHVnLWluIHdhbnRzIHRoZSBnaXZlbiByZWN0IHRvIGJlIHJlcGFpbnRlZC4gVGhlIHJlY3QgaXMg
aW4gdGhlIHBsdWctaW4ncyBjb29yZGluYXRlIHN5c3RlbS4KICAgICB2aXJ0dWFsIHZvaWQgaW52
YWxpZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggZTQwOWIxNWY1Zjc0ZjViNzc3
NGRkMzRjOGRhYTUwZDllM2E4MzRkMy4uOTEzOWE5MjdkYWI3MjMxNzZjOTU0YzI2MDU2MGQxOTMz
YzU4MDA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5oCkBAIC02NCw4ICs2NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVQbHVn
aW5Qcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY1BsdWdpblByb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogCi0gICAgYm9vbCBp
c0JlaW5nQXN5bmNocm9ub3VzbHlJbml0aWFsaXplZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb247IH0KLQogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBQbHVnaW5Qcm94eSh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGJvb2wg
aXNSZXN0YXJ0ZWRQcm9jZXNzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBmMjY2Y2QzY2UwOWVhOTFlZDRlNjYzODFiOWQ5ZTll
Yzg2ZDA1MGM1Li41MGMyYjM1MTYyYzhkNWJkMGVhZmQ5NGNjNDliZDNmOGYzYjcxNmQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAt
NjAxLDcgKzYwMSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6aW5pdGlhbGl6ZVBsdWdpbigpCiAgICAg
SFRNTFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z0luSW1hZ2VFbGVtZW50ID0gZG93bmNhc3Q8SFRN
TFBsdWdJbkltYWdlRWxlbWVudD4oKm1fcGx1Z2luRWxlbWVudCk7CiAgICAgbV9kaWRQbHVnSW5T
dGFydE9mZlNjcmVlbiA9ICFtX3dlYlBhZ2UtPnBsdWdJbkludGVyc2VjdHNTZWFyY2hSZWN0KHBs
dWdJbkltYWdlRWxlbWVudCk7CiAjZW5kaWYKLSAgICBtX3BsdWdpbi0+aW5pdGlhbGl6ZSh0aGlz
LCBtX3BhcmFtZXRlcnMpOworICAgIG1fcGx1Z2luLT5pbml0aWFsaXplKCp0aGlzLCBtX3BhcmFt
ZXRlcnMpOwogICAgIAogICAgIC8vIFBsdWctaW4gaW5pdGlhbGl6YXRpb24gY29udGludWVkIGlu
IGRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oKSBvciBkaWRJbml0aWFsaXplUGx1Z2luKCkuCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCA5ZmY2
NmVhZmQzM2M3ZDA5YzhhN2M5Mzk2ZWM4Y2JhZTVjZDY1YTQ3Li5kZTM1MzdjYjJkZjA0MzkzNGZi
OGM2M2I3ZDRiNjA3YWVkMGM0YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBcnJheTsK
QEAgLTE0OSwxNSArMTUwLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGRvY3VtZW50TG9hZGVyRGV0
YWNoZWQodWludDY0X3QgbmF2aWdhdGlvbklEKTsKIAogICAgIC8vIFNpbXBsZSBsaXN0ZW5lciBj
bGFzcyB1c2VkIGJ5IHBsdWctaW5zIHRvIGtub3cgd2hlbiBmcmFtZXMgZmluaXNoIG9yIGZhaWwg
bG9hZGluZy4KLSAgICBjbGFzcyBMb2FkTGlzdGVuZXIgeworICAgIGNsYXNzIExvYWRMaXN0ZW5l
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMb2FkTGlzdGVuZXI+IHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHZpcnR1YWwgfkxvYWRMaXN0ZW5lcigpIHsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbExvYWQoV2ViRnJhbWUqLCBib29sIHdhc0NhbmNlbGxlZCkgPSAwOwogICAgIH07Ci0gICAg
dm9pZCBzZXRMb2FkTGlzdGVuZXIoTG9hZExpc3RlbmVyKiBsb2FkTGlzdGVuZXIpIHsgbV9sb2Fk
TGlzdGVuZXIgPSBsb2FkTGlzdGVuZXI7IH0KLSAgICBMb2FkTGlzdGVuZXIqIGxvYWRMaXN0ZW5l
cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZExpc3RlbmVyOyB9CisgICAgdm9pZCBzZXRMb2FkTGlz
dGVuZXIoTG9hZExpc3RlbmVyKiBsb2FkTGlzdGVuZXIpIHsgbV9sb2FkTGlzdGVuZXIgPSBtYWtl
V2Vha1B0cihsb2FkTGlzdGVuZXIpOyB9CisgICAgTG9hZExpc3RlbmVyKiBsb2FkTGlzdGVuZXIo
KSBjb25zdCB7IHJldHVybiBtX2xvYWRMaXN0ZW5lci5nZXQoKTsgfQogICAgIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIHR5cGVkZWYgYm9vbCAoKkZyYW1lRmlsdGVyRnVuY3Rpb24pKFdLQnVu
ZGxlRnJhbWVSZWYsIFdLQnVuZGxlRnJhbWVSZWYgc3ViZnJhbWUsIHZvaWQqIGNvbnRleHQpOwpA
QCAtMTkyLDcgKzE5Myw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPj4gbV93aWxsU3VibWl0Rm9ybUNvbXBsZXRpb25IYW5kbGVyczsK
ICAgICBPcHRpb25hbDxEb3dubG9hZElEPiBtX3BvbGljeURvd25sb2FkSUQ7CiAKLSAgICBMb2Fk
TGlzdGVuZXIqIG1fbG9hZExpc3RlbmVyIHsgbnVsbHB0ciB9OworICAgIFdlYWtQdHI8TG9hZExp
c3RlbmVyPiBtX2xvYWRMaXN0ZW5lcjsKICAgICAKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgbV9mcmFtZUlEOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412335</attachid>
            <date>2020-10-26 10:48:53 -0700</date>
            <delta_ts>2020-10-26 11:41:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218144-20201026114852.patch</filename>
            <type>text/plain</type>
            <size>31642</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNkMjYyZmE1YzYzYzg1N2M4
ZTA2ZTc3Y2JiM2FhOGRhMTQ2MjhhM2EuLmNlNjllZWM1ZTY0ZjAwMDViZGEzNDkzYzgwMTJkNDZh
ZTk4M2MxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjAtMTAtMjYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgbnVsbCBj
aGVja3MgYW5kIHNtYXJ0IHBvaW50ZXJzIGluIFBERiBhbmQgUGx1Z2luIGNvZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE0NAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjk5MzE1NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZh
YmxldC4KKworICAgICAgICBJdCdzIG5pY2Ugd2hlbiB0aGluZ3MgZG9uJ3QgY3Jhc2guCisgICAg
ICAgIGlzQmVpbmdBc3luY2hyb25vdXNseUluaXRpYWxpemVkIHdhc24ndCBjYWxsZWQgYW55d2hl
cmUsIHNvIEkgcmVtb3ZlZCBpdC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luKToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjp+UERGUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2lu
OjpnZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y3JlYXRl
U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjppc0FjdGl2ZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Zm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWlu
VGhyZWFkRm9yUGVyZm9ybWFuY2VUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpqc1BERkRvY1ByaW50KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjppbnN0
YWxsUERGRG9jdW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnVwZGF0ZVBhZ2VB
bmREZXZpY2VTY2FsZUZhY3RvcnMpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNhbGN1
bGF0ZVNpemVzKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp3aWxsRGV0YWNoUmVuZGVy
ZXIpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmRlc3Ryb3kpOgorICAgICAgICAoV2Vi
S2l0OjpQREZQbHVnaW46OnBhaW50Q29udHJvbEZvckxheWVySW5Db250ZXh0KToKKyAgICAgICAg
KFdlYktpdDo6UERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1NjcmVlbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4gY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OnZpc2liaWxpdHlEaWRDaGFuZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpQREZQbHVnaW46OnNob3dDb250ZXh0TWVudUF0UG9pbnQpOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OmhhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OmlzRnVsbEZyYW1lUGx1Z2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpoYW5kbGVzUGFnZVNjYWxlRmFjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luOjpjbGlja2VkTGluayk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c2F2
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6b3BlbldpdGhQcmV2aWV3KToKKyAgICAg
ICAgKFdlYktpdDo6UERGUGx1Z2luOjpzYXZlVG9QREYpOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46Om9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46OnNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRlZFN0cmluZyk6CisgICAgICAgIChXZWJL
aXQ6OlBERlBsdWdpbjo6bm90aWZ5U2VsZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6bm90aWZ5Q3Vyc29yQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBs
dWdpbjo6YXhPYmplY3RDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6
cGVyZm9ybVdlYlNlYXJjaCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6cGVyZm9ybVNw
b3RsaWdodFNlYXJjaCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6UGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luOjpjb250cm9sbGVyKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luOjpjb250cm9sbGVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luOjp+UGx1Z2luKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmg6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6Y29udHJvbGxlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6Y29udHJvbGxlciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OnNldExvYWRMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjps
b2FkTGlzdGVuZXIgY29uc3QpOgorCiAyMDIwLTEwLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIElQQyB0ZXN0aW5nIEFQSSBzaG91bGQgZXhwb3NlIEFycmF5
QnVmZmVyIGZvciBhbiB1bmtub3duIGRlY29kZWQgYXJndW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggZWE3
MTFkMzJlMjU1ZjczYzM3NTJmNDI5ZjBlYTcyMjE1YjljOTMzYS4uOGIzNzQwZjRiMTAxYWQ5MGY1
MGVkNTdjODUwYjkwMzBmY2M0MzBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBi
b29sIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6aW5pdGlhbGl6ZShjb25zdCBQbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnMmIGNyZWF0aW9uUAogICAgIGlmIChjcmVhdGlvblBhcmFtZXRlcnMud2luZG93
TlBPYmplY3RJRCkKICAgICAgICAgbV93aW5kb3dOUE9iamVjdCA9IG1fY29ubmVjdGlvbi0+bnBS
ZW1vdGVPYmplY3RNYXAoKS0+Y3JlYXRlTlBPYmplY3RQcm94eShjcmVhdGlvblBhcmFtZXRlcnMu
d2luZG93TlBPYmplY3RJRCwgbV9wbHVnaW4uZ2V0KCkpOwogCi0gICAgYm9vbCByZXR1cm5WYWx1
ZSA9IG1fcGx1Z2luLT5pbml0aWFsaXplKHRoaXMsIGNyZWF0aW9uUGFyYW1ldGVycy5wYXJhbWV0
ZXJzKTsKKyAgICBib29sIHJldHVyblZhbHVlID0gbV9wbHVnaW4tPmluaXRpYWxpemUoKnRoaXMs
IGNyZWF0aW9uUGFyYW1ldGVycy5wYXJhbWV0ZXJzKTsKIAogICAgIGlmICghcmV0dXJuVmFsdWUp
IHsKICAgICAgICAgLy8gR2V0IHRoZSBwbHVnLWluIHNvIHdlIGNhbiBwYXNzIGl0IHRvIHJlbW92
ZVBsdWdpbkNvbnRyb2xsZXJQcm94eS4gVGhlIHBvaW50ZXIgaXMgb25seQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmgKaW5kZXggMzFjZTUwMjRjM2FiMzI2NzMyYWY3YjZjY2QxMDc1OTRiZmM1NzdkYi4uMjQ3
NDkxNDZkOTBmNDU1ZjY5ZjU0MzU5NjRlMGIzYmNhMzFkY2NmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oCkBAIC02MCw5ICs2MCw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWZQdHI8TmV0c2Nh
cGVQbHVnaW4+IGZyb21OUFAoTlBQKTsKIAotICAgIC8vIEluLXByb2Nlc3MgTmV0c2NhcGVQbHVn
aW5zIGRvbid0IHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLgotICAgIGJvb2wg
aXNCZWluZ0FzeW5jaHJvbm91c2x5SW5pdGlhbGl6ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgTlBFcnJvciBzZXREcmF3aW5n
TW9kZWwoTlBEcmF3aW5nTW9kZWwpOwogICAgIE5QRXJyb3Igc2V0RXZlbnRNb2RlbChOUEV2ZW50
TW9kZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5oCmluZGV4IGY2OTBjYjFkZGY4MDg3YTE3ODM0ZjhjYTQ0M2QwZjQ0ZWY3MDMzMmQuLjNj
NmY1MjMwNGI5NWZhYmNkYjczODEyZjc5OGY5ZTFkMzc0MjM5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTQzLDYgKzQzLDcg
QEAKICNpbmNsdWRlIDx3dGYvUmFuZ2VTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNDb250ZXh0UmVmOwogdHlw
ZWRlZiBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNPYmplY3RSZWY7CkBAIC0yMTMsOCArMjE0LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcigpIGZpbmFsOwogICAgIGJv
b2wgcGx1Z2luSGFuZGxlc0NvbnRlbnRPZmZzZXRGb3JBY2Nlc3NpYmlsaXR5SGl0VGVzdCgpIGNv
bnN0IGZpbmFsOwogICAgIAotICAgIGJvb2wgaXNCZWluZ0FzeW5jaHJvbm91c2x5SW5pdGlhbGl6
ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotCiAgICAgUmV0YWluUHRyPFBERkRv
Y3VtZW50PiBwZGZEb2N1bWVudEZvclByaW50aW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9w
ZGZEb2N1bWVudDsgfQogICAgIE5TT2JqZWN0ICphY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3Qg
ZmluYWw7CiAgICAgaWQgYWNjZXNzaWJpbGl0eUFzc29jaWF0ZWRQbHVnaW5QYXJlbnRGb3JFbGVt
ZW50KFdlYkNvcmU6OkVsZW1lbnQqKSBjb25zdCBmaW5hbDsKQEAgLTMwMyw3ICszMDIsNyBAQCBw
cml2YXRlOgogICAgIFBsdWdpblZpZXcqIHBsdWdpblZpZXcoKTsKICAgICBjb25zdCBQbHVnaW5W
aWV3KiBwbHVnaW5WaWV3KCkgY29uc3Q7CiAKLSAgICBXZWJGcmFtZSYgbV9mcmFtZTsKKyAgICBX
ZWFrUHRyPFdlYkZyYW1lPiBtX2ZyYW1lOwogCiAgICAgYm9vbCBtX2lzUG9zdFNjcmlwdCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3BkZkRvY3VtZW50V2FzTXV0YXRlZCB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRl
eCBmZDI3N2NiYzUxMzFiNWI2MjZhZjJhOTdiNGY1MTY3YTliZTEzNWFjLi45Y2IzYWFlZDc3NWY5
YjZmZDkzYWMyNjk1ZWI4OGZlM2NkZGY2N2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTU5Niw3ICs1OTYsNyBAQCBSZWY8
UERGUGx1Z2luPiBQREZQbHVnaW46OmNyZWF0ZShXZWJGcmFtZSYgZnJhbWUpCiAKIGlubGluZSBQ
REZQbHVnaW46OlBERlBsdWdpbihXZWJGcmFtZSYgZnJhbWUpCiAgICAgOiBQbHVnaW4oUERGUGx1
Z2luVHlwZSkKLSAgICAsIG1fZnJhbWUoZnJhbWUpCisgICAgLCBtX2ZyYW1lKG1ha2VXZWFrUHRy
KGZyYW1lKSkKICAgICAsIG1fY29udGFpbmVyTGF5ZXIoYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2Nd
IGluaXRdKSkKICAgICAsIG1fY29udGVudExheWVyKGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBp
bml0XSkpCiAgICAgLCBtX3Njcm9sbENvcm5lckxheWVyKGFkb3B0TlMoW1tXS1BERlBsdWdpblNj
cm9sbGJhckxheWVyIGFsbG9jXSBpbml0V2l0aFBERlBsdWdpbjp0aGlzXSkpCkBAIC02MTcsNyAr
NjE3LDcgQEAgaW5saW5lIFBERlBsdWdpbjo6UERGUGx1Z2luKFdlYkZyYW1lJiBmcmFtZSkKICAg
ICBtX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKS5wYXJlbnRMYXllciA9IG1fY29udGVudExheWVy
LmdldCgpOwogCiAgICAgaWYgKHN1cHBvcnRzRm9ybXMoKSkgewotICAgICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBtX2ZyYW1lLmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpOworICAgICAgICBhdXRv
KiBkb2N1bWVudCA9IGZyYW1lLmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpOwogICAgICAgICBtX2Fu
bm90YXRpb25Db250YWluZXIgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChkaXZUYWcsIGZhbHNl
KTsKICAgICAgICAgbV9hbm5vdGF0aW9uQ29udGFpbmVyLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGlkQXR0ciwgQXRvbVN0cmluZygiYW5ub3RhdGlvbkNvbnRhaW5lciIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKQEAgLTYzMCwxMyArNjMwLDEzIEBA
IGlubGluZSBQREZQbHVnaW46OlBERlBsdWdpbihXZWJGcmFtZSYgZnJhbWUpCiAKICAgICBtX2Fj
Y2Vzc2liaWxpdHlPYmplY3QgPSBhZG9wdE5TKFtbV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2Jq
ZWN0IGFsbG9jXSBpbml0V2l0aFBERlBsdWdpbjp0aGlzXSk7CiAgICAgW21fYWNjZXNzaWJpbGl0
eU9iamVjdCBzZXRQZGZMYXllckNvbnRyb2xsZXI6bV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCld
OwotICAgIFttX2FjY2Vzc2liaWxpdHlPYmplY3Qgc2V0UGFyZW50Om1fZnJhbWUucGFnZSgpLT5h
Y2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCldOworICAgIFttX2FjY2Vzc2liaWxpdHlPYmplY3Qg
c2V0UGFyZW50OmZyYW1lLnBhZ2UoKS0+YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpXTsKIAog
ICAgIFttX2NvbnRhaW5lckxheWVyIGFkZFN1YmxheWVyOm1fY29udGVudExheWVyLmdldCgpXTsK
ICAgICBbbV9jb250YWluZXJMYXllciBhZGRTdWJsYXllcjptX3Njcm9sbENvcm5lckxheWVyLmdl
dCgpXTsKICNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCiAgICAg
aWYgKFttX3BkZkxheWVyQ29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dERldmljZUNvbG9yU3BhY2U6KV0pIHsKLSAgICAgICAgYXV0byB2aWV3ID0gbV9mcmFtZS5jb3Jl
RnJhbWUoKS0+dmlldygpOworICAgICAgICBhdXRvIHZpZXcgPSBmcmFtZS5jb3JlRnJhbWUoKS0+
dmlldygpOwogICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RGV2aWNlQ29sb3JTcGFj
ZTpzY3JlZW5Db2xvclNwYWNlKHZpZXcpXTsKICAgICB9CiAjZW5kaWYKQEAgLTY1Myw3ICs2NTMs
NyBAQCBpbmxpbmUgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUmIGZyYW1lKQogUERGUGx1
Z2luOjp+UERGUGx1Z2luKCkKIHsKICNpZiBFTkFCTEUoVUlfUFJPQ0VTU19QREZfSFVEKQotICAg
IGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCisgICAgaWYgKGF1dG8qIHBhZ2UgPSBt
X2ZyYW1lID8gbV9mcmFtZS0+cGFnZSgpIDogbnVsbHB0cikKICAgICAgICAgcGFnZS0+cmVtb3Zl
UERGSFVEKCp0aGlzKTsKICNlbmRpZgogfQpAQCAtOTY1LDcgKzk2NSw5IEBAIHZvaWQgUERGUGx1
Z2luOjpnZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbihzaXplX3QgY291bnQsIG9mZl90IHBvc2l0
aW9uLCBDb21wbGV0CiAgICAgYXV0byBpZGVudGlmaWVyID0gcmVxdWVzdC5pZGVudGlmaWVyKCk7
CiAgICAgbV9vdXRzdGFuZGluZ0J5dGVSYW5nZVJlcXVlc3RzLnNldChpZGVudGlmaWVyLCBXVEZN
b3ZlKHJlcXVlc3QpKTsKIAotICAgIGF1dG8qIGNvcmVGcmFtZSA9IG1fZnJhbWUuY29yZUZyYW1l
KCk7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgYXV0byogY29yZUZy
YW1lID0gbV9mcmFtZS0+Y29yZUZyYW1lKCk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMTI4OSw3ICsxMjkxLDcgQEAgdm9pZCBQREZQbHVnaW46OnVwZGF0ZVNj
cm9sbGJhcnMoKQogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRGcmFtZVJlY3Qoc2Ny
b2xsYmFyUmVjdCk7CiAgICAgfQogCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX2ZyYW1l
LmNvcmVGcmFtZSgpLT52aWV3KCk7CisgICAgYXV0byogZnJhbWVWaWV3ID0gbV9mcmFtZSA/IG1f
ZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkgOiBudWxscHRyOwogICAgIGlmICghZnJhbWVWaWV3
KQogICAgICAgICByZXR1cm47CiAKQEAgLTEzNDEsOCArMTM0Myw4IEBAIFJlZjxTY3JvbGxiYXI+
IFBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKQogICAgIH0KICAgICBkaWRBZGRTY3JvbGxiYXIod2lkZ2V0LnB0cigpLCBvcmllbnRhdGlv
bik7CiAKLSAgICBpZiAoYXV0byogZnJhbWUgPSBtX2ZyYW1lLmNvcmVGcmFtZSgpKSB7Ci0gICAg
ICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgeworICAgIGlmIChhdXRvKiBmcmFt
ZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA6IG51bGxwdHIpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgICAgICBpZiAocGFnZS0+
aXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSkKICAgICAgICAgICAgICAgICBzY3JvbGxBbmltYXRv
cigpLnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihwYWdlLT53aGVlbEV2ZW50VGVzdE1vbml0b3Io
KSk7CiAgICAgICAgIH0KQEAgLTE0NDMsOCArMTQ0NSw4IEBAIEludFJlY3QgUERGUGx1Z2luOjpz
Y3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KGJvb2wqKSBjb25zdAogCiBib29sIFBERlBsdWdpbjo6
aXNBY3RpdmUoKSBjb25zdAogewotICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gbV9mcmFtZS5j
b3JlRnJhbWUoKSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmVGcmFtZS0+cGFnZSgp
KQorICAgIGlmIChhdXRvKiBjb3JlRnJhbWUgPSBtX2ZyYW1lID8gbV9mcmFtZS0+Y29yZUZyYW1l
KCkgOiBudWxscHRyKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gY29yZUZyYW1lLT5wYWdl
KCkpCiAgICAgICAgICAgICByZXR1cm4gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuaXNBY3RpdmUo
KTsKICAgICB9CiAKQEAgLTE0NTMsOCArMTQ1NSw4IEBAIGJvb2wgUERGUGx1Z2luOjppc0FjdGl2
ZSgpIGNvbnN0CiAKIGJvb2wgUERGUGx1Z2luOjpmb3JjZVVwZGF0ZVNjcm9sbGJhcnNPbk1haW5U
aHJlYWRGb3JQZXJmb3JtYW5jZVRlc3RpbmcoKSBjb25zdAogewotICAgIGlmIChGcmFtZSogY29y
ZUZyYW1lID0gbV9mcmFtZS5jb3JlRnJhbWUoKSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9
IGNvcmVGcmFtZS0+cGFnZSgpKQorICAgIGlmIChhdXRvKiBjb3JlRnJhbWUgPSBtX2ZyYW1lID8g
bV9mcmFtZS0+Y29yZUZyYW1lKCkgOiBudWxscHRyKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdl
ID0gY29yZUZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICByZXR1cm4gcGFnZS0+c2V0dGluZ3Mo
KS5mb3JjZVVwZGF0ZVNjcm9sbGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3JtYW5jZVRlc3Rpbmco
KTsKICAgICB9CiAKQEAgLTE1MjQsMTMgKzE1MjYsMTcgQEAgc3RhdGljIHZvaWQganNQREZEb2NG
aW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCiAKIEpTVmFsdWVSZWYgUERGUGx1Z2luOjpqc1BE
RkRvY1ByaW50KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIFBERlBsdWdpbiogcGRm
UGx1Z2luID0gc3RhdGljX2Nhc3Q8UERGUGx1Z2luKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKKyAgICBhdXRvKiBwZGZQbHVnaW4gPSBzdGF0aWNfY2FzdDxQREZQbHVnaW4qPihK
U09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworCisgICAgYXV0byogZnJhbWUgPSBwZGZQ
bHVnaW4tPm1fZnJhbWUuZ2V0KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CiAKLSAgICBGcmFtZSogY29yZUZyYW1lID0gcGRmUGx1
Z2luLT5tX2ZyYW1lLmNvcmVGcmFtZSgpOworICAgIGF1dG8qIGNvcmVGcmFtZSA9IGZyYW1lLT5j
b3JlRnJhbWUoKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGN0eCk7CiAKLSAgICBQYWdlKiBwYWdlID0gY29yZUZyYW1lLT5wYWdlKCk7
CisgICAgYXV0byogcGFnZSA9IGNvcmVGcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CiAKQEAgLTE2MzIsOCArMTYz
OCw4IEBAIHZvaWQgUERGUGx1Z2luOjppbnN0YWxsUERGRG9jdW1lbnQoKQogICAgIGlmIChbbV9w
ZGZEb2N1bWVudCBpc0xvY2tlZF0pCiAgICAgICAgIGNyZWF0ZVBhc3N3b3JkRW50cnlGb3JtKCk7
CiAKLSAgICBpZiAoW21fcGRmTGF5ZXJDb250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Ioc2V0VVJMRnJhZ21lbnQ6KV0pCi0gICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBz
ZXRVUkxGcmFnbWVudDptX2ZyYW1lLnVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLmNyZWF0ZU5T
U3RyaW5nKCkuZ2V0KCldOworICAgIGlmIChtX2ZyYW1lICYmIFttX3BkZkxheWVyQ29udHJvbGxl
ciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFVSTEZyYWdtZW50OildKQorICAgICAg
ICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0VVJMRnJhZ21lbnQ6bV9mcmFtZS0+dXJsKCkuZnJh
Z21lbnRJZGVudGlmaWVyKCkuY3JlYXRlTlNTdHJpbmcoKS5nZXQoKV07CiB9CiAKIHZvaWQgUERG
UGx1Z2luOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lKQpAQCAtMTgxNCw3ICsxODIwLDcgQEAgdm9pZCBQREZQbHVnaW46OnVwZGF0ZVBhZ2VBbmRE
ZXZpY2VTY2FsZUZhY3RvcnMoKQogCiAgICAgZG91YmxlIG5ld1NjYWxlRmFjdG9yID0gY29udHJv
bGxlcigpLT5jb250ZW50c1NjYWxlRmFjdG9yKCk7CiAgICAgaWYgKCFoYW5kbGVzUGFnZVNjYWxl
RmFjdG9yKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKKyAg
ICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1lID8gbV9mcmFtZS0+cGFnZSgpIDogbnVsbHB0
cikKICAgICAgICAgICAgIG5ld1NjYWxlRmFjdG9yICo9IHBhZ2UtPnBhZ2VTY2FsZUZhY3Rvcigp
OwogICAgIH0KIApAQCAtMTg0NCw3ICsxODUwLDkgQEAgdm9pZCBQREZQbHVnaW46OmNhbGN1bGF0
ZVNpemVzKCkKICAgICBzZXRQREZEb2N1bWVudFNpemUoSW50U2l6ZShbbV9wZGZMYXllckNvbnRy
b2xsZXIgY29udGVudFNpemVSZXNwZWN0aW5nWm9vbV0pKTsKIAogI2lmIEVOQUJMRShVSV9QUk9D
RVNTX1BERl9IVUQpCi0gICAgbV9mcmFtZS5wYWdlKCktPnVwZGF0ZVBERkhVRExvY2F0aW9uKCp0
aGlzLCBmcmFtZUZvckhVRCgpKTsKKyAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnBhZ2Uo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZnJhbWUtPnBhZ2UoKS0+dXBkYXRlUERGSFVETG9j
YXRpb24oKnRoaXMsIGZyYW1lRm9ySFVEKCkpOwogI2VuZGlmCiB9CiAKQEAgLTE4NjAsNyArMTg2
OCw5IEBAIGJvb2wgUERGUGx1Z2luOjppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiAKIHZvaWQgUERGUGx1Z2luOjp3aWxsRGV0YWNoUmVuZGVyZXIoKQogewotICAgIGlm
IChhdXRvKiBmcmFtZVZpZXcgPSBtX2ZyYW1lLmNvcmVGcmFtZSgpLT52aWV3KCkpCisgICAgaWYg
KCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5jb3JlRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmIChhdXRvKiBmcmFtZVZpZXcgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpKQogICAg
ICAgICBmcmFtZVZpZXctPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOwogfQogCkBAIC0xODgx
LDcgKzE4OTEsNyBAQCB2b2lkIFBERlBsdWdpbjo6ZGVzdHJveSgpCiAKICAgICBtX3BkZkxheWVy
Q29udHJvbGxlci5nZXQoKS5kZWxlZ2F0ZSA9IDA7CiAKLSAgICBpZiAoYXV0byogZnJhbWVWaWV3
ID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpKQorICAgIGlmIChhdXRvKiBmcmFtZVZpZXcg
PSBtX2ZyYW1lICYmIG1fZnJhbWUtPmNvcmVGcmFtZSgpID8gbV9mcmFtZS0+Y29yZUZyYW1lKCkt
PnZpZXcoKSA6IG51bGxwdHIpCiAgICAgICAgIGZyYW1lVmlldy0+cmVtb3ZlU2Nyb2xsYWJsZUFy
ZWEodGhpcyk7CiAKICAgICBtX2FjdGl2ZUFubm90YXRpb24gPSBudWxscHRyOwpAQCAtMTkwOCw3
ICsxOTE4LDkgQEAgdm9pZCBQREZQbHVnaW46OnVwZGF0ZUNvbnRyb2xUaW50cyhHcmFwaGljc0Nv
bnRleHQmIGdyYXBoaWNzQ29udGV4dCkKIHZvaWQgUERGUGx1Z2luOjpwYWludENvbnRyb2xGb3JM
YXllckluQ29udGV4dChDQUxheWVyICpsYXllciwgQ0dDb250ZXh0UmVmIGNvbnRleHQpCiB7CiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLmNvcmVGcmFtZSgpLT5w
YWdlKCk7CisgICAgYXV0byogcGFnZSA9IG1fZnJhbWUgJiYgbV9mcmFtZS0+Y29yZUZyYW1lKCkg
PyBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+cGFnZSgpIDogbnVsbHB0cjsKKyAgICBpZiAoIXBhZ2Up
CisgICAgICAgIHJldHVybjsKICAgICBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlIGxvY2Fs
QXBwZWFyYW5jZShwYWdlLT51c2VEYXJrQXBwZWFyYW5jZSgpKTsKICNlbmRpZgogCkBAIC0xOTk3
LDIyICsyMDA5LDI2IEBAIEludFBvaW50IFBERlBsdWdpbjo6Y29udmVydEZyb21Sb290Vmlld1Rv
UERGVmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiAKIEZsb2F0UmVjdCBQREZQbHVn
aW46OmNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVuKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29u
c3QKIHsKLSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fZnJhbWUuY29yZUZyYW1lKCktPnZp
ZXcoKTsKLQorICAgIGF1dG8qIGNvcmVGcmFtZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5jb3JlRnJh
bWUoKSA6IG51bGxwdHI7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiB7IH07
CisgICAgYXV0byogZnJhbWVWaWV3ID0gY29yZUZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCFmcmFt
ZVZpZXcpCi0gICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIEZsb2F0UmVjdCB1cGRhdGVkUmVjdCA9IHJlY3Q7CiAgICAgdXBkYXRlZFJlY3Quc2V0
TG9jYXRpb24oY29udmVydEZyb21QREZWaWV3VG9Sb290VmlldyhJbnRQb2ludCh1cGRhdGVkUmVj
dC5sb2NhdGlvbigpKSkpOwotICAgIHJldHVybiBtX2ZyYW1lLmNvcmVGcmFtZSgpLT5wYWdlKCkt
PmNocm9tZSgpLnJvb3RWaWV3VG9TY3JlZW4oZW5jbG9zaW5nSW50UmVjdCh1cGRhdGVkUmVjdCkp
OworICAgIGF1dG8qIHBhZ2UgPSBjb3JlRnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisg
ICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLnJvb3RWaWV3VG9T
Y3JlZW4oZW5jbG9zaW5nSW50UmVjdCh1cGRhdGVkUmVjdCkpOwogfQogCiBJbnRSZWN0IFBERlBs
dWdpbjo6Ym91bmRzT25TY3JlZW4oKSBjb25zdAogewotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpOwotCisgICAgYXV0byogZnJhbWVWaWV3ID0g
bV9mcmFtZSA/IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkgOiBudWxscHRyOwogICAgIGlm
ICghZnJhbWVWaWV3KQotICAgICAgICByZXR1cm4gSW50UmVjdCgpOworICAgICAgICByZXR1cm4g
eyB9OwogCiAgICAgRmxvYXRSZWN0IGJvdW5kcyA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNp
emUoKSk7CiAgICAgRmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RW
aWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkp
Lm1hcFJlY3QoYm91bmRzKTsKQEAgLTIwMjIsMTAgKzIwMzgsMTIgQEAgSW50UmVjdCBQREZQbHVn
aW46OmJvdW5kc09uU2NyZWVuKCkgY29uc3QKIHZvaWQgUERGUGx1Z2luOjp2aXNpYmlsaXR5RGlk
Q2hhbmdlKGJvb2wgdmlzaWJsZSkKIHsKICNpZiBFTkFCTEUoVUlfUFJPQ0VTU19QREZfSFVEKQor
ICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOwogICAgIGlmICh2aXNpYmxlKQotICAg
ICAgICBtX2ZyYW1lLnBhZ2UoKS0+Y3JlYXRlUERGSFVEKCp0aGlzLCBmcmFtZUZvckhVRCgpKTsK
KyAgICAgICAgbV9mcmFtZS0+cGFnZSgpLT5jcmVhdGVQREZIVUQoKnRoaXMsIGZyYW1lRm9ySFVE
KCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9mcmFtZS5wYWdlKCktPnJlbW92ZVBERkhVRCgqdGhp
cyk7CisgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+cmVtb3ZlUERGSFVEKCp0aGlzKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHZpc2libGUpOwogI2VuZGlmCkBAIC0yMjczLDcgKzIyOTEsOSBA
QCBib29sIFBERlBsdWdpbjo6aGFuZGxlTW91c2VMZWF2ZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZl
bnQmKQogICAgIAogYm9vbCBQREZQbHVnaW46OnNob3dDb250ZXh0TWVudUF0UG9pbnQoY29uc3Qg
SW50UG9pbnQmIHBvaW50KQogewotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFtZS5j
b3JlRnJhbWUoKS0+dmlldygpOworICAgIGF1dG8qIGZyYW1lVmlldyA9IG1fZnJhbWUgPyBtX2Zy
YW1lLT5jb3JlRnJhbWUoKS0+dmlldygpIDogbnVsbHB0cjsKKyAgICBpZiAoIWZyYW1lVmlldykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEludFBvaW50IGNvbnRlbnRzUG9pbnQgPSBmcmFt
ZVZpZXctPmNvbnRlbnRzVG9Sb290Vmlldyhwb2ludCk7CiAgICAgV2ViTW91c2VFdmVudCBldmVu
dChXZWJFdmVudDo6TW91c2VEb3duLCBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbiwgMCwgY29u
dGVudHNQb2ludCwgY29udGVudHNQb2ludCwgMCwgMCwgMCwgMSwgT3B0aW9uU2V0PFdlYkV2ZW50
OjpNb2RpZmllcj4geyB9LCBXYWxsVGltZTo6bm93KCksIFdlYkNvcmU6OkZvcmNlQXRDbGljayk7
CiAgICAgcmV0dXJuIGhhbmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQpOwpAQCAtMjI4MSwxMSAr
MjMwMSwxNSBAQCBib29sIFBERlBsdWdpbjo6c2hvd0NvbnRleHRNZW51QXRQb2ludChjb25zdCBJ
bnRQb2ludCYgcG9pbnQpCiAKIGJvb2wgUERGUGx1Z2luOjpoYW5kbGVDb250ZXh0TWVudUV2ZW50
KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogewotICAgIGlmICghbV9mcmFtZS5wYWdlKCkp
CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5jb3JlRnJhbWUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYg
KCF3ZWJQYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogZnJhbWVWaWV3ID0g
bV9mcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lVmlldykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUucGFnZSgp
OwotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+dmlldygp
OwogICAgIEludFBvaW50IHBvaW50ID0gZnJhbWVWaWV3LT5jb250ZW50c1RvU2NyZWVuKEludFJl
Y3QoZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCBJbnRTaXpl
KCkpKS5sb2NhdGlvbigpOwogCiAgICAgTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHVp
TGF5b3V0RGlyZWN0aW9uID0gd2ViUGFnZS0+dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigp
ID09IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA/IE5TVXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
UmlnaHRUb0xlZnQ7CkBAIC0yMzkzLDEzICsyNDE3LDE3IEBAIGJvb2wgUERGUGx1Z2luOjppc0Z1
bGxGcmFtZVBsdWdpbigpIGNvbnN0CiB7CiAgICAgLy8gPG9iamVjdD4gb3IgPGVtYmVkPiBwbHVn
aW5zIHdpbGwgYXBwZWFyIHRvIGJlIGluIHRoZWlyIHBhcmVudCBmcmFtZSwgc28gd2UgaGF2ZSB0
bwogICAgIC8vIGNoZWNrIHdoZXRoZXIgb3VyIGZyYW1lJ3Mgd2lkZ2V0IGlzIGV4YWN0bHkgb3Vy
IFBsdWdpblZpZXcuCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS5jb3JlRnJhbWUo
KS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPmNvcmVGcmFtZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLT5j
b3JlRnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIGRvY3VtZW50LT5pc1BsdWdpbkRvY3VtZW50KCkgJiYgc3Rh
dGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihkb2N1bWVudCktPnBsdWdpbldpZGdldCgpID09IHBs
dWdpblZpZXcoKTsKIH0KIAogYm9vbCBQREZQbHVnaW46OmhhbmRsZXNQYWdlU2NhbGVGYWN0b3Io
KSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgaXNGdWxsRnJh
bWVQbHVnaW4oKTsKKyAgICByZXR1cm4gbV9mcmFtZSAmJiBtX2ZyYW1lLT5pc01haW5GcmFtZSgp
ICYmIGlzRnVsbEZyYW1lUGx1Z2luKCk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpjbGlja2VkTGlu
ayhOU1VSTCAqdXJsKQpAQCAtMjQwOCw3ICsyNDM2LDkgQEAgdm9pZCBQREZQbHVnaW46OmNsaWNr
ZWRMaW5rKE5TVVJMICp1cmwpCiAgICAgaWYgKGNvcmVVUkwucHJvdG9jb2xJc0phdmFTY3JpcHQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogZnJhbWUgPSBtX2ZyYW1lLmNvcmVGcmFt
ZSgpOworICAgIGF1dG8qIGZyYW1lID0gbV9mcmFtZSA/IG1fZnJhbWUtPmNvcmVGcmFtZSgpIDog
bnVsbHB0cjsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8
RXZlbnQ+IGNvcmVFdmVudDsKICAgICBpZiAobV9sYXN0TW91c2VFdmVudC50eXBlKCkgIT0gV2Vi
RXZlbnQ6Ok5vVHlwZSkKQEAgLTI0OTEsMTMgKzI1MjEsMTkgQEAgdm9pZCBQREZQbHVnaW46Onpv
b21PdXQoKQogdm9pZCBQREZQbHVnaW46OnNhdmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBTdHJpbmcmLCBjb25zdCBVUkwmLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBsaXZlRGF0YSgpOwotICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1fc3VnZ2VzdGVkRmlsZW5hbWUsIG1fZnJhbWUudXJsKCksIElQQzo6
IERhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBk
YXRhLmxlbmd0aCkpOworICAgIFVSTCB1cmw7CisgICAgaWYgKG1fZnJhbWUpCisgICAgICAgIHVy
bCA9IG1fZnJhbWUtPnVybCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fc3VnZ2VzdGVkRmls
ZW5hbWUsIHVybCwgSVBDOjogRGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoKSk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpvcGVu
V2l0aFByZXZpZXcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmLCBGcmFtZUlu
Zm9EYXRhJiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIE5TRGF0YSAqZGF0YSA9IGxpdmVEYXRhKCk7Ci0gICAg
Y29tcGxldGlvbkhhbmRsZXIobV9zdWdnZXN0ZWRGaWxlbmFtZSwgbV9mcmFtZS5pbmZvKCksIElQ
Qzo6IERhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRl
cyksIGRhdGEubGVuZ3RoIH0sIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7CisgICAgRnJh
bWVJbmZvRGF0YSBmcmFtZUluZm87CisgICAgaWYgKG1fZnJhbWUpCisgICAgICAgIGZyYW1lSW5m
byA9IG1fZnJhbWUtPmluZm8oKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX3N1Z2dlc3RlZEZp
bGVuYW1lLCBXVEZNb3ZlKGZyYW1lSW5mbyksIElQQzo6IERhdGFSZWZlcmVuY2UgeyBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKSk7CiB9CiAKICNlbHNlIC8vIEVOQUJMRShVSV9QUk9DRVNTX1BE
Rl9IVUQpCkBAIC0yNTEwLDExICsyNTQ2LDE2IEBAIHZvaWQgUERGUGx1Z2luOjpzYXZlVG9QREYo
KQogICAgICAgICByZXR1cm47CiAKICAgICBOU0RhdGEgKmRhdGEgPSBsaXZlRGF0YSgpOwotICAg
IG1fZnJhbWUucGFnZSgpLT5zYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIobV9zdWdnZXN0
ZWRGaWxlbmFtZSwgbV9mcmFtZS51cmwoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
ciAqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICBpZiAoIW1fZnJhbWUgfHwg
IW1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZnJhbWUtPnBhZ2UoKS0+
c2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKG1fc3VnZ2VzdGVkRmlsZW5hbWUsIG1fZnJh
bWUtPnVybCgpLCBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KFtkYXRhIGJ5dGVz
XSksIFtkYXRhIGxlbmd0aF0pOwogfQogCiB2b2lkIFBERlBsdWdpbjo6b3BlbldpdGhOYXRpdmVB
cHBsaWNhdGlvbigpCiB7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5wYWdlKCkpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV90ZW1wb3JhcnlQREZVVUlEKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgbm90aWZ5IHRoZSB1c2VyIHRoYXQgdGhleSBj
YW4ndCBzYXZlIGJlZm9yZSB0aGUgZG9jdW1lbnQgaXMgZmluaXNoZWQgbG9hZGluZy4KICAgICAg
ICAgLy8gUERGVmlld0NvbnRyb2xsZXIgZG9lcyBhbiBOU0JlZXAoKSwgYnV0IHRoYXQgc2VlbXMg
aW5zdWZmaWNpZW50LgpAQCAtMjUyNiwxMSArMjU2NywxMSBAQCB2b2lkIFBERlBsdWdpbjo6b3Bl
bldpdGhOYXRpdmVBcHBsaWNhdGlvbigpCiAgICAgICAgIG1fdGVtcG9yYXJ5UERGVVVJRCA9IGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKICAgICAgICAgQVNTRVJUKG1fdGVtcG9yYXJ5UERG
VVVJRCk7CiAKLSAgICAgICAgbV9mcmFtZS5wYWdlKCktPnNhdmVQREZUb1RlbXBvcmFyeUZvbGRl
ckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24obV9zdWdnZXN0ZWRGaWxlbmFtZSwgbV9mcmFt
ZS5pbmZvKCksIHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oW2RhdGEgYnl0ZXNd
KSwgW2RhdGEgbGVuZ3RoXSwgbV90ZW1wb3JhcnlQREZVVUlEKTsKKyAgICAgICAgbV9mcmFtZS0+
cGFnZSgpLT5zYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0
aW9uKG1fc3VnZ2VzdGVkRmlsZW5hbWUsIG1fZnJhbWUtPmluZm8oKSwgc3RhdGljX2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhciAqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdLCBtX3RlbXBv
cmFyeVBERlVVSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9mcmFtZS5wYWdl
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6T3BlblBERkZyb21UZW1wb3JhcnlGb2xk
ZXJXaXRoTmF0aXZlQXBwbGljYXRpb24obV9mcmFtZS5pbmZvKCksIG1fdGVtcG9yYXJ5UERGVVVJ
RCkpOworICAgIG1fZnJhbWUtPnBhZ2UoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpP
cGVuUERGRnJvbVRlbXBvcmFyeUZvbGRlcldpdGhOYXRpdmVBcHBsaWNhdGlvbihtX2ZyYW1lLT5p
bmZvKCksIG1fdGVtcG9yYXJ5UERGVVVJRCkpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFVJX1BS
T0NFU1NfUERGX0hVRCkKQEAgLTI1OTEsNyArMjYzMiwxMCBAQCB2b2lkIFBERlBsdWdpbjo6c2hv
d0RlZmluaXRpb25Gb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
LCBDRwogICAgIGRhdGFGb3JTZWxlY3Rpb24ucHJlc2VudGF0aW9uVHJhbnNpdGlvbiA9IFRleHRJ
bmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpGYWRlSW47CiAgICAgZGljdGlvbmFyeVBv
cHVwSW5mby50ZXh0SW5kaWNhdG9yID0gZGF0YUZvclNlbGVjdGlvbjsKICAgICAKLSAgICBtX2Zy
YW1lLnBhZ2UoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRGljdGlv
bmFyeUxvb2t1cChkaWN0aW9uYXJ5UG9wdXBJbmZvKSk7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFt
X2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJhbWUtPnBhZ2UoKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChk
aWN0aW9uYXJ5UG9wdXBJbmZvKSk7CiB9CiAKIHVuc2lnbmVkIFBERlBsdWdpbjo6Y291bnRGaW5k
TWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMgb3B0aW9u
cywgdW5zaWduZWQgLyptYXhNYXRjaENvdW50Ki8pCkBAIC0yNjk5LDcgKzI3NDMsOSBAQCB2b2lk
IFBERlBsdWdpbjo6Zm9jdXNQcmV2aW91c0Fubm90YXRpb24oKQogCiB2b2lkIFBERlBsdWdpbjo6
bm90aWZ5U2VsZWN0aW9uQ2hhbmdlZChQREZTZWxlY3Rpb24gKikKIHsKLSAgICBtX2ZyYW1lLnBh
Z2UoKS0+ZGlkQ2hhbmdlU2VsZWN0aW9uKCk7CisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1l
LT5wYWdlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2ZyYW1lLT5wYWdlKCktPmRpZENoYW5n
ZVNlbGVjdGlvbigpOwogfQogCiBzdGF0aWMgY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjb3JlQ3Vy
c29yKFBERkxheWVyQ29udHJvbGxlckN1cnNvclR5cGUgdHlwZSkKQEAgLTI3MTcsNyArMjc2Mywx
MCBAQCBzdGF0aWMgY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjb3JlQ3Vyc29yKFBERkxheWVyQ29u
dHJvbGxlckN1cnNvclR5cGUgdHlwZSkKIAogdm9pZCBQREZQbHVnaW46Om5vdGlmeUN1cnNvckNo
YW5nZWQodWludDY0X3QgdHlwZSkKIHsKLSAgICBtX2ZyYW1lLnBhZ2UoKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTZXRDdXJzb3IoY29yZUN1cnNvcihzdGF0aWNfY2FzdDxQREZMYXll
ckNvbnRyb2xsZXJDdXJzb3JUeXBlPih0eXBlKSkpKTsKKyAgICBpZiAoIW1fZnJhbWUgfHwgIW1f
ZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mcmFtZS0+cGFnZSgpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEN1cnNvcihjb3JlQ3Vyc29yKHN0YXRpY19j
YXN0PFBERkxheWVyQ29udHJvbGxlckN1cnNvclR5cGU+KHR5cGUpKSkpOwogfQogCiBTdHJpbmcg
UERGUGx1Z2luOjpnZXRTZWxlY3Rpb25TdHJpbmcoKSBjb25zdApAQCAtMjg0MSw3ICsyODkwLDkg
QEAgc3RhdGljIE5TUmVjdCByZWN0SW5WaWV3U3BhY2VGb3JSZWN0SW5MYXlvdXRTcGFjZShQREZM
YXllckNvbnRyb2xsZXIqIHBkZkxheWVyQ28KICAgICAKIFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGUq
IFBERlBsdWdpbjo6YXhPYmplY3RDYWNoZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZnJhbWUu
Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIW1fZnJh
bWUgfHwgIW1fZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICFtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9j
dW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fZnJhbWUtPmNv
cmVGcmFtZSgpLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCk7CiB9CiAKIFdlYkNvcmU6OkZs
b2F0UmVjdCBQREZQbHVnaW46OnJlY3RGb3JTZWxlY3Rpb25JblJvb3RWaWV3KFBERlNlbGVjdGlv
biAqc2VsZWN0aW9uKSBjb25zdApAQCAtMjg3MCwxMiArMjkyMSwxNiBAQCBDR0Zsb2F0IFBERlBs
dWdpbjo6c2NhbGVGYWN0b3IoKSBjb25zdAogCiB2b2lkIFBERlBsdWdpbjo6cGVyZm9ybVdlYlNl
YXJjaChOU1N0cmluZyAqc3RyaW5nKQogewotICAgIG1fZnJhbWUucGFnZSgpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNlYXJjaFRoZVdlYihzdHJpbmcpKTsKKyAgICBpZiAoIW1fZnJh
bWUgfHwgIW1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZnJhbWUtPnBh
Z2UoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZWFyY2hUaGVXZWIoc3RyaW5nKSk7
CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpwZXJmb3JtU3BvdGxpZ2h0U2VhcmNoKE5TU3RyaW5nICpz
dHJpbmcpCiB7Ci0gICAgbV9mcmFtZS5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2VhcmNoV2l0aFNwb3RsaWdodChzdHJpbmcpKTsKKyAgICBpZiAoIW1fZnJhbWUgfHwgIW1f
ZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZnJhbWUtPnBhZ2UoKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZWFyY2hXaXRoU3BvdGxpZ2h0KHN0cmluZykpOwog
fQogCiBib29sIFBERlBsdWdpbjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50
JiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwCmlu
ZGV4IDQ3NDc4N2ViZmNkOTFkNjBlZmYwNmIyNTZmMWE4ZjRiZWVkNjY0MTcuLmI3NmQzNDQ4ZjIw
YWNiZDk5ODM3MGQ0YjlmNDgzZGZkNzE3NDA2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlBsdWdp
bi5oIgogCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgorI2luY2x1ZGUgIlBsdWdpbkNv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0ludFBvaW50Lmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CkBAIC04
MiwyMCArODMsMTYgQEAgYm9vbCBQbHVnaW46OlBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAKIFBsdWdpbjo6UGx1Z2luKFBs
dWdpblR5cGUgdHlwZSkKICAgICA6IG1fdHlwZSh0eXBlKQotICAgICwgbV9wbHVnaW5Db250cm9s
bGVyKDApCiB7CiB9CiAKLVBsdWdpbjo6flBsdWdpbigpCi17Ci19CitQbHVnaW46On5QbHVnaW4o
KSA9IGRlZmF1bHQ7CiAKLWJvb2wgUGx1Z2luOjppbml0aWFsaXplKFBsdWdpbkNvbnRyb2xsZXIq
IHBsdWdpbkNvbnRyb2xsZXIsIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitib29sIFBs
dWdpbjo6aW5pdGlhbGl6ZShQbHVnaW5Db250cm9sbGVyJiBwbHVnaW5Db250cm9sbGVyLCBjb25z
dCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIEFTU0VSVCghbV9wbHVnaW5Db250cm9s
bGVyKTsKLSAgICBBU1NFUlQocGx1Z2luQ29udHJvbGxlcik7CiAKLSAgICBtX3BsdWdpbkNvbnRy
b2xsZXIgPSBwbHVnaW5Db250cm9sbGVyOworICAgIG1fcGx1Z2luQ29udHJvbGxlciA9IG1ha2VX
ZWFrUHRyKHBsdWdpbkNvbnRyb2xsZXIpOwogCiAgICAgcmV0dXJuIGluaXRpYWxpemUocGFyYW1l
dGVycyk7CiB9CkBAIC0xMjAsNCArMTE3LDE0IEBAIEludFBvaW50IFBsdWdpbjo6Y29udmVydFRv
Um9vdFZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdAogICAgIHJldHVybiBJbnRQb2ludCgpOwog
fQogCitQbHVnaW5Db250cm9sbGVyKiBQbHVnaW46OmNvbnRyb2xsZXIoKQoreworICAgIHJldHVy
biBtX3BsdWdpbkNvbnRyb2xsZXIuZ2V0KCk7Cit9CisKK2NvbnN0IFBsdWdpbkNvbnRyb2xsZXIq
IFBsdWdpbjo6Y29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGx1Z2luQ29udHJv
bGxlci5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IDg5OTgzNmMwYzFjYjJhNmQ0YmI5ODY1ZDMx
NTUzYTcwZGE3OGQ0ZjcuLmM2ZDY0YmU0MTM4ZGFlZDQ0MDczMGQwYTQ4MzQwNmNkMWI4M2NiOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiB0eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCog
aWQ7CkBAIC05NiwxOSArOTcsMTQgQEAgcHVibGljOgogICAgICAgICBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFBhcmFtZXRlcnMmKTsKICAgICB9
OwogCi0gICAgLy8gU2V0cyB0aGUgYWN0aXZlIHBsdWctaW4gY29udHJvbGxlciBhbmQgaW5pdGlh
bGl6ZXMgdGhlIHBsdWctaW4uCi0gICAgYm9vbCBpbml0aWFsaXplKFBsdWdpbkNvbnRyb2xsZXIq
LCBjb25zdCBQYXJhbWV0ZXJzJik7CisgICAgYm9vbCBpbml0aWFsaXplKFBsdWdpbkNvbnRyb2xs
ZXImLCBjb25zdCBQYXJhbWV0ZXJzJik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNCZWluZ0FzeW5j
aHJvbm91c2x5SW5pdGlhbGl6ZWQoKSBjb25zdCA9IDA7Ci0KLSAgICAvLyBEZXN0cm95cyB0aGUg
cGx1Zy1pbi4KICAgICB2b2lkIGRlc3Ryb3lQbHVnaW4oKTsKIAogICAgIGJvb2wgaXNCZWluZ0Rl
c3Ryb3llZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNCZWluZ0Rlc3Ryb3llZDsgfQogCi0gICAgLy8g
UmV0dXJucyB0aGUgcGx1Zy1pbiBjb250cm9sbGVyIGZvciB0aGlzIHBsdWctaW4uCi0gICAgUGx1
Z2luQ29udHJvbGxlciogY29udHJvbGxlcigpIHsgcmV0dXJuIG1fcGx1Z2luQ29udHJvbGxlcjsg
fQotICAgIGNvbnN0IFBsdWdpbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVy
biBtX3BsdWdpbkNvbnRyb2xsZXI7IH0KKyAgICBQbHVnaW5Db250cm9sbGVyKiBjb250cm9sbGVy
KCk7CisgICAgY29uc3QgUGx1Z2luQ29udHJvbGxlciogY29udHJvbGxlcigpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCB+UGx1Z2luKCk7CiAKQEAgLTMxNyw3ICszMTMsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgYm9vbCBtX2lzQmVpbmdEZXN0cm95ZWQgeyBmYWxzZSB9OwogCiBwcml2YXRlOgotICAgIFBs
dWdpbkNvbnRyb2xsZXIqIG1fcGx1Z2luQ29udHJvbGxlcjsKKyAgICBXZWFrUHRyPFBsdWdpbkNv
bnRyb2xsZXI+IG1fcGx1Z2luQ29udHJvbGxlcjsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNv
bnRyb2xsZXIuaAppbmRleCA0MmEzYjc4YTk2NDg2MmNjZDgzYjMxZGFhMDk2MjE5NzNjNDFhNWQ3
Li4zYjdhZmVkYTU3NmViMmZiYzY1NzhlNDRlNTBhY2RlZDM4MTU1ZWU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUg
IlBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5oIgpAQCAtNDcsNyArNDgsNyBAQCBjbGFzcyBQ
cm90ZWN0aW9uU3BhY2U7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBQbHVnaW5Db250
cm9sbGVyIHsKK2NsYXNzIFBsdWdpbkNvbnRyb2xsZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
UGx1Z2luQ29udHJvbGxlcj4gewogcHVibGljOgogICAgIC8vIFRlbGxzIHRoZSBjb250cm9sbGVy
IHRoYXQgdGhlIHBsdWctaW4gd2FudHMgdGhlIGdpdmVuIHJlY3QgdG8gYmUgcmVwYWludGVkLiBU
aGUgcmVjdCBpcyBpbiB0aGUgcGx1Zy1pbidzIGNvb3JkaW5hdGUgc3lzdGVtLgogICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCBlNDA5YjE1
ZjVmNzRmNWI3Nzc0ZGQzNGM4ZGFhNTBkOWUzYTgzNGQzLi45MTM5YTkyN2RhYjcyMzE3NmM5NTRj
MjYwNTYwZDE5MzNjNTgwMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmgKQEAgLTY0LDggKzY0LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
UmVjZWl2ZVBsdWdpblByb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jUGx1Z2luUHJveHlNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAK
LSAgICBib29sIGlzQmVpbmdBc3luY2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbjsgfQotCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFBsdWdpblByb3h5KHVpbnQ2NF90IHBsdWdpblByb2Nlc3NU
b2tlbiwgYm9vbCBpc1Jlc3RhcnRlZFByb2Nlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGYyNjZjZDNjZTA5ZWE5MWVkNGU2
NjM4MWI5ZDllOWVjODZkMDUwYzUuLjgxY2IzMWI4NWZmMjY4NTEwMGI5NDJmOGVjZDY1MTg3Y2Q0
MjgzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpkZXN0cm95UGx1Z2lu
QW5kUmVzZXQoKQogewogICAgIC8vIENhbmNlbCBhbGwgcGVuZGluZyBmcmFtZSBsb2Fkcy4KICAg
ICBmb3IgKEZyYW1lTG9hZE1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmJl
Z2luKCksIGVuZCA9IG1fcGVuZGluZ0ZyYW1lTG9hZHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkK
LSAgICAgICAgaXQtPmtleS0+c2V0TG9hZExpc3RlbmVyKDApOworICAgICAgICBpdC0+a2V5LT5z
ZXRMb2FkTGlzdGVuZXIobnVsbHB0cik7CiAKICAgICBpZiAobV9wbHVnaW4pIHsKICAgICAgICAg
bV9wbHVnaW4tPmRlc3Ryb3lQbHVnaW4oKTsKQEAgLTYwMSw3ICs2MDEsNyBAQCB2b2lkIFBsdWdp
blZpZXc6OmluaXRpYWxpemVQbHVnaW4oKQogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBs
dWdJbkltYWdlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KCptX3Bs
dWdpbkVsZW1lbnQpOwogICAgIG1fZGlkUGx1Z0luU3RhcnRPZmZTY3JlZW4gPSAhbV93ZWJQYWdl
LT5wbHVnSW5JbnRlcnNlY3RzU2VhcmNoUmVjdChwbHVnSW5JbWFnZUVsZW1lbnQpOwogI2VuZGlm
Ci0gICAgbV9wbHVnaW4tPmluaXRpYWxpemUodGhpcywgbV9wYXJhbWV0ZXJzKTsKKyAgICBtX3Bs
dWdpbi0+aW5pdGlhbGl6ZSgqdGhpcywgbV9wYXJhbWV0ZXJzKTsKICAgICAKICAgICAvLyBQbHVn
LWluIGluaXRpYWxpemF0aW9uIGNvbnRpbnVlZCBpbiBkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2lu
KCkgb3IgZGlkSW5pdGlhbGl6ZVBsdWdpbigpLgogfQpAQCAtMTY2Niw3ICsxNjY2LDcgQEAgdm9p
ZCBQbHVnaW5WaWV3OjpkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKiB3ZWJGcmFtZSkKIHsKICAgICBS
ZWZQdHI8VVJMUmVxdWVzdD4gcmVxdWVzdCA9IG1fcGVuZGluZ0ZyYW1lTG9hZHMudGFrZSh3ZWJG
cmFtZSk7CiAgICAgQVNTRVJUKHJlcXVlc3QpOwotICAgIHdlYkZyYW1lLT5zZXRMb2FkTGlzdGVu
ZXIoMCk7CisgICAgd2ViRnJhbWUtPnNldExvYWRMaXN0ZW5lcihudWxscHRyKTsKIAogICAgIG1f
cGx1Z2luLT5mcmFtZURpZEZpbmlzaExvYWRpbmcocmVxdWVzdC0+cmVxdWVzdElEKCkpOwogfQpA
QCAtMTY3NSw3ICsxNjc1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpkaWRGYWlsTG9hZChXZWJGcmFt
ZSogd2ViRnJhbWUsIGJvb2wgd2FzQ2FuY2VsbGVkKQogewogICAgIFJlZlB0cjxVUkxSZXF1ZXN0
PiByZXF1ZXN0ID0gbV9wZW5kaW5nRnJhbWVMb2Fkcy50YWtlKHdlYkZyYW1lKTsKICAgICBBU1NF
UlQocmVxdWVzdCk7Ci0gICAgd2ViRnJhbWUtPnNldExvYWRMaXN0ZW5lcigwKTsKKyAgICB3ZWJG
cmFtZS0+c2V0TG9hZExpc3RlbmVyKG51bGxwdHIpOwogICAgIAogICAgIG1fcGx1Z2luLT5mcmFt
ZURpZEZhaWwocmVxdWVzdC0+cmVxdWVzdElEKCksIHdhc0NhbmNlbGxlZCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCA5ZmY2NmVhZmQzM2M3
ZDA5YzhhN2M5Mzk2ZWM4Y2JhZTVjZDY1YTQ3Li5kZTM1MzdjYjJkZjA0MzkzNGZiOGM2M2I3ZDRi
NjA3YWVkMGM0YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBcnJheTsKQEAgLTE0OSwx
NSArMTUwLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGRvY3VtZW50TG9hZGVyRGV0YWNoZWQodWlu
dDY0X3QgbmF2aWdhdGlvbklEKTsKIAogICAgIC8vIFNpbXBsZSBsaXN0ZW5lciBjbGFzcyB1c2Vk
IGJ5IHBsdWctaW5zIHRvIGtub3cgd2hlbiBmcmFtZXMgZmluaXNoIG9yIGZhaWwgbG9hZGluZy4K
LSAgICBjbGFzcyBMb2FkTGlzdGVuZXIgeworICAgIGNsYXNzIExvYWRMaXN0ZW5lciA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxMb2FkTGlzdGVuZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgfkxvYWRMaXN0ZW5lcigpIHsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkKFdlYkZyYW1lKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWQo
V2ViRnJhbWUqLCBib29sIHdhc0NhbmNlbGxlZCkgPSAwOwogICAgIH07Ci0gICAgdm9pZCBzZXRM
b2FkTGlzdGVuZXIoTG9hZExpc3RlbmVyKiBsb2FkTGlzdGVuZXIpIHsgbV9sb2FkTGlzdGVuZXIg
PSBsb2FkTGlzdGVuZXI7IH0KLSAgICBMb2FkTGlzdGVuZXIqIGxvYWRMaXN0ZW5lcigpIGNvbnN0
IHsgcmV0dXJuIG1fbG9hZExpc3RlbmVyOyB9CisgICAgdm9pZCBzZXRMb2FkTGlzdGVuZXIoTG9h
ZExpc3RlbmVyKiBsb2FkTGlzdGVuZXIpIHsgbV9sb2FkTGlzdGVuZXIgPSBtYWtlV2Vha1B0cihs
b2FkTGlzdGVuZXIpOyB9CisgICAgTG9hZExpc3RlbmVyKiBsb2FkTGlzdGVuZXIoKSBjb25zdCB7
IHJldHVybiBtX2xvYWRMaXN0ZW5lci5nZXQoKTsgfQogICAgIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHR5cGVkZWYgYm9vbCAoKkZyYW1lRmlsdGVyRnVuY3Rpb24pKFdLQnVuZGxlRnJhbWVS
ZWYsIFdLQnVuZGxlRnJhbWVSZWYgc3ViZnJhbWUsIHZvaWQqIGNvbnRleHQpOwpAQCAtMTkyLDcg
KzE5Myw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPj4gbV93aWxsU3VibWl0Rm9ybUNvbXBsZXRpb25IYW5kbGVyczsKICAgICBPcHRp
b25hbDxEb3dubG9hZElEPiBtX3BvbGljeURvd25sb2FkSUQ7CiAKLSAgICBMb2FkTGlzdGVuZXIq
IG1fbG9hZExpc3RlbmVyIHsgbnVsbHB0ciB9OworICAgIFdlYWtQdHI8TG9hZExpc3RlbmVyPiBt
X2xvYWRMaXN0ZW5lcjsKICAgICAKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbV9mcmFt
ZUlEOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>