<?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>235970</bug_id>
          
          <creation_ts>2022-02-01 12:48:02 -0800</creation_ts>
          <short_desc>Create PDFDocument stub</short_desc>
          <delta_ts>2022-02-11 15:12:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>PDF</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>236529</dependson>
          <blocked>235969</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Nguyen (:ntim)">ntim</reporter>
          <assigned_to name="Tim Nguyen (:ntim)">ntim</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1836108</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-01 12:48:02 -0800</bug_when>
    <thetext>Empty stub</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836190</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-01 15:31:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/88351855&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836648</commentid>
    <comment_count>2</comment_count>
      <attachid>450700</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-02 14:58:48 -0800</bug_when>
    <thetext>Created attachment 450700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836694</commentid>
    <comment_count>3</comment_count>
      <attachid>450700</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-02-02 16:30:04 -0800</bug_when>
    <thetext>Comment on attachment 450700
Patch

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

I think this looks fine as a first step, but needs a few adjustments before you land.

&gt; Source/WebCore/dom/DOMImplementation.cpp:156
&gt; +    if (settings.pdfJSViewerEnabled() &amp;&amp; MIMETypeRegistry::isPDFMIMEType(contentType))

You should check for nullptr frame, like we do for the image case.

&gt; Source/WebCore/html/PDFDocument.cpp:97
&gt; +    // FIXME: add actual viewer URL

// FIXME: Replace about:blank with actual viewer URL

&gt; Source/WebCore/html/PDFDocument.cpp:106
&gt; +    body-&gt;setAttribute(styleAttr, &quot;margin: 0px;height: 100vh;&quot;);

body-&gt;setAttribute(styleAttr, AtomString(&quot;margin: 0px;height: 100vh;&quot;, AtomString::ConstructFromLiteral));

&gt; Source/WebCore/html/PDFDocument.cpp:111
&gt; +    iframe-&gt;setAttribute(styleAttr, &quot;width: 100%; height: 100%; border: 0; display: block;&quot;);

iframe-&gt;setAttribute(styleAttr, AtomString(&quot;width: 100%; height: 100%; border: 0; display: block;&quot;, AtomString::ConstructFromLiteral));

&gt; Source/WebCore/html/PDFDocument.cpp:121
&gt; +    // FIXME: Collect bytes during parsing

We usually do:
notImplemented();

&gt; Source/WebCore/html/PDFDocument.cpp:127
&gt; +    // FIXME: Send bytes as a blob into the iframe, and ask it to render that blob

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836782</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-03 00:08:50 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #3)
&gt; Comment on attachment 450700 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=450700&amp;action=review
&gt; 
&gt; I think this looks fine as a first step, but needs a few adjustments before
&gt; you land.
&gt; 
&gt; &gt; Source/WebCore/dom/DOMImplementation.cpp:156
&gt; &gt; +    if (settings.pdfJSViewerEnabled() &amp;&amp; MIMETypeRegistry::isPDFMIMEType(contentType))
&gt; 
&gt; You should check for nullptr frame, like we do for the image case.
&gt; 
&gt; &gt; Source/WebCore/html/PDFDocument.cpp:97
&gt; &gt; +    // FIXME: add actual viewer URL
&gt; 
&gt; // FIXME: Replace about:blank with actual viewer URL
&gt; 
&gt; &gt; Source/WebCore/html/PDFDocument.cpp:106
&gt; &gt; +    body-&gt;setAttribute(styleAttr, &quot;margin: 0px;height: 100vh;&quot;);
&gt; 
&gt; body-&gt;setAttribute(styleAttr, AtomString(&quot;margin: 0px;height: 100vh;&quot;,
&gt; AtomString::ConstructFromLiteral));
&gt; 
&gt; &gt; Source/WebCore/html/PDFDocument.cpp:111
&gt; &gt; +    iframe-&gt;setAttribute(styleAttr, &quot;width: 100%; height: 100%; border: 0; display: block;&quot;);
&gt; 
&gt; iframe-&gt;setAttribute(styleAttr, AtomString(&quot;width: 100%; height: 100%;
&gt; border: 0; display: block;&quot;, AtomString::ConstructFromLiteral));

Done.

&gt; &gt; Source/WebCore/html/PDFDocument.cpp:121
&gt; &gt; +    // FIXME: Collect bytes during parsing
&gt; 
&gt; We usually do:
&gt; notImplemented();
&gt; 
&gt; &gt; Source/WebCore/html/PDFDocument.cpp:127
&gt; &gt; +    // FIXME: Send bytes as a blob into the iframe, and ask it to render that blob
&gt; 
&gt; Ditto.

First iteration will be URL-based, so I&apos;ll remove those comments for now. I&apos;ll file an bug to change it from URL-based to blob-based.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836783</commentid>
    <comment_count>5</comment_count>
      <attachid>450739</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-03 00:11:56 -0800</bug_when>
    <thetext>Created attachment 450739
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836785</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-03 00:16:48 -0800</bug_when>
    <thetext>Committed r289031 (246739@main): &lt;https://commits.webkit.org/246739@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450739.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450700</attachid>
            <date>2022-02-02 14:58:48 -0800</date>
            <delta_ts>2022-02-02 16:30:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235970-20220202235847.patch</filename>
            <type>text/plain</type>
            <size>13726</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTUwMDE3NzM5M2ExNTBl
MjhkMzA2YjczZDMxY2VlNDIzMWViMDU5MS4uNDNkMmFmMDlkNWUzYzVmOWQwYzNhMGIzZGJlZmI5
N2Q0ZTQwN2Q3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIyLTAyLTAyICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIFBERkRvY3VtZW50IHN0
dWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0
ZSBhbiBlbXB0eSBzdHViIHdpdGggYW4gaWZyYW1lIHdoZXJlIHRoZSB2aWV3ZXIgd2lsbCBiZSBs
b2FkZWQuCisKKyAgICAgICAgQ2hhbmdpbmcgYWJvdXQ6Ymxhbms/ZmlsZT0gdG8gaHR0cHM6Ly9t
b3ppbGxhLmdpdGh1Yi5pby9wZGYuanMvd2ViL3ZpZXdlci5odG1sP2ZpbGU9IGlzIG9uZSB3YXkK
KyAgICAgICAgdG8gdGVzdCB0aGUgc3R1Yi4KKworICAgICAgICBUaGF0IHN0dWIgaXMgZ3VhcmRl
ZCBiZWhpbmQgdGhlIFBERi5qcyB2aWV3ZXIgaW50ZXJuYWwgc2V0dGluZyB3aGljaCBpcyBvbmx5
IGVuYWJsZWQgaW4gY2FwdGl2ZSBwb3J0YWwgbW9kZS4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmlzUERG
RG9jdW1lbnQgY29uc3QpOgorICAgICAgICAqIGh0bWwvUERGRG9jdW1lbnQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50OjpQREZEb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjptX3ZpZXdlclJlbmRlcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50
UGFyc2VyOjpkb2N1bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudFBh
cnNlcjo6YXBwZW5kQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRQYXJzZXI6
OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKToKKyAgICAgICAg
KiBodG1sL1BERkRvY3VtZW50Lmg6IEFkZGVkLgorICAgICAgICAoaXNUeXBlKToKKwogMjAyMi0w
Mi0wMSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZD
XSBVc2luZyBGb250Y2FzY2FkZTo6c3BhY2VXaWR0aCB0byBzdWJ0cmFjdCB0aGUgdHJhaWxpbmcg
c3BhY2Ugd2lkdGggbWF5IHJlc3VsdCBpbiBpbmNvcnJlY3QgbGF5b3V0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQppbmRleCA4OWI4MmExM2Y3ZTRkNjE0YTQ1YzFhN2ZmY2NhNzA5NTU4YmViMzA4Li5lNWUxODJl
OTlmMjM3YWMyYzVhN2Q0NWFlNjJlZjczYjg3MGViN2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAg
LTkwMSw2ICs5MDEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgaHRtbC9NZWRpYURvY3VtZW50LmgKICAgICBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAog
ICAgIGh0bWwvTWVkaWFFcnJvci5oCisgICAgaHRtbC9QREZEb2N1bWVudC5oCiAgICAgaHRtbC9Q
bHVnaW5Eb2N1bWVudC5oCiAgICAgaHRtbC9TdGVwUmFuZ2UuaAogICAgIGh0bWwvVGltZVJhbmdl
cy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IGY2NmNjZjhmMDZhNTc5MTlkOGE0ZWEwZGMwZDA4OTAwMTY1
NDU1NjcuLjlhNTg0OTA1YzQwMWU2ZmJkYzQ4M2M1ZWMyYzFlODY2MDkxYTViZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0xMzEwLDYgKzEzMTAsNyBAQCBodG1sL01vbnRoSW5wdXRUeXBlLmNwcAogaHRt
bC9OdW1iZXJJbnB1dFR5cGUuY3BwCiBodG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKIGh0bWwvUGFz
c3dvcmRJbnB1dFR5cGUuY3BwCitodG1sL1BERkRvY3VtZW50LmNwcAogaHRtbC9QbHVnaW5Eb2N1
bWVudC5jcHAKIGh0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKIGh0bWwvUmFkaW9JbnB1dFR5cGUu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNWZkMWQ2NjljZGI4NmVjOGNlNWEyNWRhMTA3ZDg5MzY5MTNiNzEyZC4uM2Y5YmY1
NzgyMGZmZDY1M2Q2OWY0NmViOTMyYTgzZTI0YWNlZWRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTM1Niw2ICs5MzU2LDgg
QEAKIAkJNDk0QkQ3OTQwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRQb2ludC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ5NEJENzlCMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViS2l0UG9pbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5QzBGNTVDOTRDMDA3NDc4MjggLyogSlNX
ZWJLaXRQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktpdFBv
aW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5NEVCRDA2MjdBQTlDNTMwMEY0
ODQ0RiAvKiBQREZEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQREZEb2N1bWVudC5oOyBwYXRo
ID0gaHRtbC9QREZEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTRF
QkQwODI3QUE5QzUzMDBGNDg0NEYgLyogUERGRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gUERGRG9jdW1lbnQuY3BwOyBwYXRoID0gaHRtbC9QREZEb2N1bWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NTg3ODFGMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ5NTg3ODIwMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXll
ckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTY5QjBGMDEzRDBCMzNG
MDBERjM1MjEgLyogSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODg4OSw2ICsxODg5MSw4IEBACiAJCTA4NjdENjkx
RkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJDb3JlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk0OTRFQkQwODI3QUE5QzUzMDBGNDg0NEYgLyogUERGRG9jdW1l
bnQuY3BwICovLAorCQkJCTQ5NEVCRDA2MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5o
ICovLAogCQkJCUREQjA0RjM3Mjc4RTU1MjcwMDhEMzY3OCAvKiBsaWJXVEYuYSAqLywKIAkJCQkx
QzA5RDA0QjFFMzFDMzI4MDA3MjVGMTggLyogUEFMLnhjb2RlcHJvaiAqLywKIAkJCQk2NUM5N0FG
MjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmNwcAppbmRleCBkOGIxYWQyOTRmZDE3NTQ2ODJlOGU0MmZjYjU2MWZjZTU5
ZmNhNDliLi4yMWNhNzg1MDk2MmEwNWE3YTBhODZhMTZkZjE2NDc3NDZjYTM4ODM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNp
bmNsdWRlICJNZWRpYURvY3VtZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJQREZEb2N1bWVudC5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUGx1Z2luRG9jdW1lbnQu
aCIKQEAgLTE1MSw2ICsxNTIsMTAgQEAgUmVmPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6
Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgRnJhbWUKICAgICAgICAg
cmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTChmcmFtZSwgc2V0dGluZ3MsIHVybCk7CiAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnRlbnRUeXBlLCAidGV4dC9w
bGFpbiIpKQogICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHNldHRp
bmdzLCB1cmwsIGRvY3VtZW50SWRlbnRpZmllcik7CisKKyAgICBpZiAoc2V0dGluZ3MucGRmSlNW
aWV3ZXJFbmFibGVkKCkgJiYgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZShjb250ZW50
VHlwZSkpCisgICAgICAgIHJldHVybiBQREZEb2N1bWVudDo6Y3JlYXRlKCpmcmFtZSwgdXJsKTsK
KwogICAgIGJvb2wgaXNJbWFnZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZShjb250ZW50VHlwZSk7CiAgICAgaWYgKGZyYW1lICYmIGlzSW1hZ2UgJiYgIU1JTUVU
eXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUoY29udGVudFR5cGUpKQogICAg
ICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudDo6Y3JlYXRlKCpmcmFtZSwgdXJsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKaW5kZXggNjhhNGYyMWMxNTRjZWJhY2JhMGIwYWYzNTM3ODZlZTNmYmQ0ZWRmNi4u
M2E4YzYzYWRmN2UwNWI5YmQ5NzFmYTA2YTI0M2M1ODQwYmVjNjA4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKQEAgLTUzNCw2ICs1MzQsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1F
TlQpCiAgICAgICAgIE1vZGVsID0gMSA8PCA4LAogI2VuZGlmCisgICAgICAgIFBERiA9IDEgPDwg
OSwKICAgICB9OwogCiAgICAgdXNpbmcgRG9jdW1lbnRDbGFzc2VzID0gT3B0aW9uU2V0PERvY3Vt
ZW50Q2xhc3M+OwpAQCAtNTQ5LDYgKzU1MCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTU9ERUxf
RUxFTUVOVCkKICAgICBib29sIGlzTW9kZWxEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9j
dW1lbnRDbGFzc2VzLmNvbnRhaW5zKERvY3VtZW50Q2xhc3M6Ok1vZGVsKTsgfQogI2VuZGlmCisg
ICAgYm9vbCBpc1BERkRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudENsYXNzZXMu
Y29udGFpbnMoRG9jdW1lbnRDbGFzczo6UERGKTsgfQogICAgIGJvb2wgaGFzU1ZHUm9vdE5vZGUo
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZVNldCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2MzOGQz
NWEwNWEwODMzNmM1NmEwNjRmZjk1MDc4OGViNjNlZmNlNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCkBAIC0wLDAgKzEsMTMwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUERGRG9jdW1lbnQuaCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRv
Y3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MQW5jaG9y
RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxI
dG1sRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUmF3RGF0YURvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChQREZEb2N1bWVudCk7CisKK3Vz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK1BERkRvY3VtZW50OjpQREZEb2N1bWVudChGcmFt
ZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIDogSFRNTERvY3VtZW50KCZmcmFtZSwgZnJh
bWUuc2V0dGluZ3MoKSwgdXJsLCB7IH0sIHsgRG9jdW1lbnRDbGFzczo6UERGIH0pCisgICAgLCBt
X3ZpZXdlclJlbmRlcmVkKGZhbHNlKQoreworCit9CisKK2NsYXNzIFBERkRvY3VtZW50UGFyc2Vy
IGZpbmFsIDogcHVibGljIFJhd0RhdGFEb2N1bWVudFBhcnNlciB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxQREZEb2N1bWVudFBhcnNlcj4gY3JlYXRlKFBERkRvY3VtZW50JiBkb2N1bWVudCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBERkRvY3VtZW50UGFyc2VyKGRv
Y3VtZW50KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFBERkRvY3VtZW50UGFyc2VyKFBERkRv
Y3VtZW50JiBkb2N1bWVudCkKKyAgICAgICAgOiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIoZG9jdW1l
bnQpCisgICAgeworICAgIH0KKworICAgIFBERkRvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0Owor
CisgICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoKCkgb3ZlcnJpZGU7Cit9OworCitpbmxp
bmUgUERGRG9jdW1lbnQmIFBERkRvY3VtZW50UGFyc2VyOjpkb2N1bWVudCgpIGNvbnN0Cit7Cisg
ICAgLy8gT25seSB1c2VkIGR1cmluZyBwYXJzaW5nLCBzbyBkb2N1bWVudCBpcyBndWFyYW50ZWVk
IHRvIGJlIG5vbi1udWxsLgorICAgIEFTU0VSVChSYXdEYXRhRG9jdW1lbnRQYXJzZXI6OmRvY3Vt
ZW50KCkpOworICAgIHJldHVybiBkb3duY2FzdDxQREZEb2N1bWVudD4oKlJhd0RhdGFEb2N1bWVu
dFBhcnNlcjo6ZG9jdW1lbnQoKSk7Cit9CisKK3ZvaWQgUERGRG9jdW1lbnRQYXJzZXI6OmFwcGVu
ZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkKK3sKKyAgICBk
b2N1bWVudCgpLnVwZGF0ZUR1cmluZ1BhcnNpbmcoKTsKK30KKwordm9pZCBQREZEb2N1bWVudFBh
cnNlcjo6ZmluaXNoKCkKK3sKKyAgICBkb2N1bWVudCgpLmZpbmlzaGVkUGFyc2luZygpOworfQor
CitSZWY8RG9jdW1lbnRQYXJzZXI+IFBERkRvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQoreworICAg
IHJldHVybiBQREZEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKCp0aGlzKTsKK30KKwordm9pZCBQREZE
b2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQoreworICAgIC8vIEZJWE1FOiBhZGQg
YWN0dWFsIHZpZXdlciBVUkwKKyAgICBhdXRvIHZpZXdlclVSTCA9ICJhYm91dDpibGFuaz9maWxl
PSI7CisgICAgYXV0byByb290RWxlbWVudCA9IEhUTUxIdG1sRWxlbWVudDo6Y3JlYXRlKCp0aGlz
KTsKKyAgICBhcHBlbmRDaGlsZChyb290RWxlbWVudCk7CisgICAgcm9vdEVsZW1lbnQtPmluc2Vy
dGVkQnlQYXJzZXIoKTsKKworICAgIGZyYW1lKCktPmluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0KTsKKworICAgIGF1dG8gYm9keSA9IEhUTUxC
b2R5RWxlbWVudDo6Y3JlYXRlKCp0aGlzKTsKKyAgICBib2R5LT5zZXRBdHRyaWJ1dGUoc3R5bGVB
dHRyLCAibWFyZ2luOiAwcHg7aGVpZ2h0OiAxMDB2aDsiKTsKKyAgICByb290RWxlbWVudC0+YXBw
ZW5kQ2hpbGQoYm9keSk7CisKKyAgICBhdXRvIGlmcmFtZSA9IEhUTUxJRnJhbWVFbGVtZW50Ojpj
cmVhdGUoSFRNTE5hbWVzOjppZnJhbWVUYWcsICp0aGlzKTsKKyAgICBpZnJhbWUtPnNldEF0dHJp
YnV0ZShzcmNBdHRyLCBtYWtlU3RyaW5nKHZpZXdlclVSTCwgZW5jb2RlV2l0aFVSTEVzY2FwZVNl
cXVlbmNlcyh1cmwoKS5zdHJpbmcoKSkpKTsKKyAgICBpZnJhbWUtPnNldEF0dHJpYnV0ZShzdHls
ZUF0dHIsICJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBib3JkZXI6IDA7IGRpc3BsYXk6IGJs
b2NrOyIpOworICAgIGJvZHktPmFwcGVuZENoaWxkKGlmcmFtZSk7CisKKyAgICBtX3ZpZXdlclJl
bmRlcmVkID0gdHJ1ZTsKK30KKwordm9pZCBQREZEb2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2lu
ZygpCit7CisgICAgaWYgKCFtX3ZpZXdlclJlbmRlcmVkKQorICAgICAgICBjcmVhdGVEb2N1bWVu
dFN0cnVjdHVyZSgpOworICAgIC8vIEZJWE1FOiBDb2xsZWN0IGJ5dGVzIGR1cmluZyBwYXJzaW5n
Cit9CisKK3ZvaWQgUERGRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCit7CisgICAgQVNTRVJU
KG1fdmlld2VyUmVuZGVyZWQpOworICAgIC8vIEZJWE1FOiBTZW5kIGJ5dGVzIGFzIGEgYmxvYiBp
bnRvIHRoZSBpZnJhbWUsIGFuZCBhc2sgaXQgdG8gcmVuZGVyIHRoYXQgYmxvYgorfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1BERkRvY3VtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc1MjNjM2Y3OTc1ZDNmNDY0MDBi
NGVkYmZkNjNlYmI4ZDI0ZTQ4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUERGRG9jdW1lbnQuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBERkRvY3VtZW50IGZpbmFsIDogcHVibGljIEhU
TUxEb2N1bWVudCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChQREZEb2N1bWVudCk7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxQREZEb2N1bWVudD4gY3JlYXRlKEZyYW1lJiBmcmFtZSwg
Y29uc3QgVVJMJiB1cmwpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQREZE
b2N1bWVudChmcmFtZSwgdXJsKSk7CisgICAgfQorCisgICAgdm9pZCB1cGRhdGVEdXJpbmdQYXJz
aW5nKCk7CisgICAgdm9pZCBmaW5pc2hlZFBhcnNpbmcoKTsKKworcHJpdmF0ZToKKyAgICBQREZE
b2N1bWVudChGcmFtZSYsIGNvbnN0IFVSTCYpOworCisgICAgUmVmPERvY3VtZW50UGFyc2VyPiBj
cmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKKworICAgIHZvaWQgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1
cmUoKTsKKyAgICBib29sIG1fdmlld2VyUmVuZGVyZWQgPSBmYWxzZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpQ
REZEb2N1bWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RG9jdW1l
bnQmIGRvY3VtZW50KSB7IHJldHVybiBkb2N1bWVudC5pc1BERkRvY3VtZW50KCk7IH0KKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8
V2ViQ29yZTo6RG9jdW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpEb2N1
bWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCg==
</data>
<flag name="review"
          id="477177"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
    <flag name="commit-queue"
          id="477197"
          type_id="3"
          status="-"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450739</attachid>
            <date>2022-02-03 00:11:56 -0800</date>
            <delta_ts>2022-02-03 00:16:59 -0800</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-235970-20220203091154.patch</filename>
            <type>text/plain</type>
            <size>13719</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTUwMDE3NzM5M2ExNTBl
MjhkMzA2YjczZDMxY2VlNDIzMWViMDU5MS4uOGJmYWIyMDZhYmFiZDU5MWY0YzkxZTM1ZjBiMDVi
YTQ0NzJjZTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIyLTAyLTAyICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIFBERkRvY3VtZW50IHN0
dWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgQ3JlYXRl
IGFuIGVtcHR5IHN0dWIgd2l0aCBhbiBpZnJhbWUgd2hlcmUgdGhlIHZpZXdlciB3aWxsIGJlIGxv
YWRlZC4KKworICAgICAgICBDaGFuZ2luZyBhYm91dDpibGFuaz9maWxlPSB0byBodHRwczovL21v
emlsbGEuZ2l0aHViLmlvL3BkZi5qcy93ZWIvdmlld2VyLmh0bWw/ZmlsZT0gaXMgb25lIHdheQor
ICAgICAgICB0byB0ZXN0IHRoZSBzdHViLgorCisgICAgICAgIFRoYXQgc3R1YiBpcyBndWFyZGVk
IGJlaGluZCB0aGUgUERGLmpzIHZpZXdlciBpbnRlcm5hbCBzZXR0aW5nIHdoaWNoIGlzIG9ubHkg
ZW5hYmxlZCBpbiBjYXB0aXZlIHBvcnRhbCBtb2RlLgorCisgICAgICAgICogSGVhZGVycy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aXNQREZE
b2N1bWVudCBjb25zdCk6CisgICAgICAgICogaHRtbC9QREZEb2N1bWVudC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OlBERkRvY3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Om1fdmlld2VyUmVuZGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRQ
YXJzZXI6OmRvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50UGFy
c2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudFBhcnNlcjo6
ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50OjpjcmVhdGVQYXJzZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50Ojp1cGRhdGVEdXJpbmdQYXJzaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcpOgorICAgICAgICAq
IGh0bWwvUERGRG9jdW1lbnQuaDogQWRkZWQuCisgICAgICAgIChpc1R5cGUpOgorCiAyMDIyLTAy
LTAxICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNd
IFVzaW5nIEZvbnRjYXNjYWRlOjpzcGFjZVdpZHRoIHRvIHN1YnRyYWN0IHRoZSB0cmFpbGluZyBz
cGFjZSB3aWR0aCBtYXkgcmVzdWx0IGluIGluY29ycmVjdCBsYXlvdXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CmluZGV4IDg5YjgyYTEzZjdlNGQ2MTRhNDVjMWE3ZmZjY2E3MDk1NThiZWIzMDguLmU1ZTE4MmU5
OWYyMzdhYzJjNWE3ZDQ1YWU2MmVmNzNiODcwZWI3ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAt
OTAxLDYgKzkwMSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBodG1sL01lZGlhRG9jdW1lbnQuaAogICAgIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCiAg
ICAgaHRtbC9NZWRpYUVycm9yLmgKKyAgICBodG1sL1BERkRvY3VtZW50LmgKICAgICBodG1sL1Bs
dWdpbkRvY3VtZW50LmgKICAgICBodG1sL1N0ZXBSYW5nZS5oCiAgICAgaHRtbC9UaW1lUmFuZ2Vz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggZjY2Y2NmOGYwNmE1NzkxOWQ4YTRlYTBkYzBkMDg5MDAxNjU0
NTU2Ny4uOWE1ODQ5MDVjNDAxZTZmYmRjNDgzYzVlYzJjMWU4NjYwOTFhNWJmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTEzMTAsNiArMTMxMCw3IEBAIGh0bWwvTW9udGhJbnB1dFR5cGUuY3BwCiBodG1s
L051bWJlcklucHV0VHlwZS5jcHAKIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAogaHRtbC9QYXNz
d29yZElucHV0VHlwZS5jcHAKK2h0bWwvUERGRG9jdW1lbnQuY3BwCiBodG1sL1BsdWdpbkRvY3Vt
ZW50LmNwcAogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAogaHRtbC9SYWRpb0lucHV0VHlwZS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA1ZmQxZDY2OWNkYjg2ZWM4Y2U1YTI1ZGExMDdkODkzNjkxM2I3MTJkLi4zZjliZjU3
ODIwZmZkNjUzZDY5ZjQ2ZWI5MzJhODNlMjRhY2VlZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MzU2LDYgKzkzNTYsOCBA
QAogCQk0OTRCRDc5NDBGNTVDOEVFMDA3NDc4MjggLyogV2ViS2l0UG9pbnQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYktpdFBvaW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDk0QkQ3OUIwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXRQb2ludC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NEJENzlDMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dl
YktpdFBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViS2l0UG9p
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk0RUJEMDYyN0FBOUM1MzAwRjQ4
NDRGIC8qIFBERkRvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBERkRvY3VtZW50Lmg7IHBhdGgg
PSBodG1sL1BERkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5NEVC
RDA4MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBQREZEb2N1bWVudC5jcHA7IHBhdGggPSBodG1sL1BERkRvY3VtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk1ODc4MUYxMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDk1ODc4MjAxMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FMYXllckNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1DQUxheWVy
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NjlCMEYwMTNEMEIzM0Yw
MERGMzUyMSAvKiBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4ODg5LDYgKzE4ODkxLDggQEAKIAkJMDg2N0Q2OTFG
RTg0MDI4RkMwMkFBQzA3IC8qIFdlYkNvcmUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTQ5NEVCRDA4MjdBQTlDNTMwMEY0ODQ0RiAvKiBQREZEb2N1bWVu
dC5jcHAgKi8sCisJCQkJNDk0RUJEMDYyN0FBOUM1MzAwRjQ4NDRGIC8qIFBERkRvY3VtZW50Lmgg
Ki8sCiAJCQkJRERCMDRGMzcyNzhFNTUyNzAwOEQzNjc4IC8qIGxpYldURi5hICovLAogCQkJCTFD
MDlEMDRCMUUzMUMzMjgwMDcyNUYxOCAvKiBQQUwueGNvZGVwcm9qICovLAogCQkJCTY1Qzk3QUYy
MDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1w
bGVtZW50YXRpb24uY3BwCmluZGV4IGQ4YjFhZDI5NGZkMTc1NDY4MmU4ZTQyZmNiNTYxZmNlNTlm
Y2E0OWIuLmRlZDY3ZTE5NjU0NzFmNzAwOGUwZTFmNDU3ZGI1ZjVkY2FhNDJhMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2lu
Y2x1ZGUgIk1lZGlhRG9jdW1lbnQuaCIKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNsdWRl
ICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIlBERkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQbHVnaW5Eb2N1bWVudC5o
IgpAQCAtMTUxLDYgKzE1MiwxMCBAQCBSZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpj
cmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBGcmFtZQogICAgICAgICBy
ZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKGZyYW1lLCBzZXR0aW5ncywgdXJsKTsKICAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29udGVudFR5cGUsICJ0ZXh0L3Bs
YWluIikpCiAgICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgc2V0dGlu
Z3MsIHVybCwgZG9jdW1lbnRJZGVudGlmaWVyKTsKKworICAgIGlmIChmcmFtZSAmJiBzZXR0aW5n
cy5wZGZKU1ZpZXdlckVuYWJsZWQoKSAmJiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVUeXBl
KGNvbnRlbnRUeXBlKSkKKyAgICAgICAgcmV0dXJuIFBERkRvY3VtZW50OjpjcmVhdGUoKmZyYW1l
LCB1cmwpOworCiAgICAgYm9vbCBpc0ltYWdlID0gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlKGNvbnRlbnRUeXBlKTsKICAgICBpZiAoZnJhbWUgJiYgaXNJbWFnZSAm
JiAhTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShjb250ZW50VHlw
ZSkpCiAgICAgICAgIHJldHVybiBJbWFnZURvY3VtZW50OjpjcmVhdGUoKmZyYW1lLCB1cmwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAppbmRleCA2OGE0ZjIxYzE1NGNlYmFjYmEwYjBhZjM1Mzc4NmVlM2Zi
ZDRlZGY2Li4zYThjNjNhZGY3ZTA1YjliZDk3MWZhMDZhMjQzYzU4NDBiZWM2MDg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtNTM0LDYgKzUzNCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTU9E
RUxfRUxFTUVOVCkKICAgICAgICAgTW9kZWwgPSAxIDw8IDgsCiAjZW5kaWYKKyAgICAgICAgUERG
ID0gMSA8PCA5LAogICAgIH07CiAKICAgICB1c2luZyBEb2N1bWVudENsYXNzZXMgPSBPcHRpb25T
ZXQ8RG9jdW1lbnRDbGFzcz47CkBAIC01NDksNiArNTUwLDcgQEAgcHVibGljOgogI2lmIEVOQUJM
RShNT0RFTF9FTEVNRU5UKQogICAgIGJvb2wgaXNNb2RlbERvY3VtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9kb2N1bWVudENsYXNzZXMuY29udGFpbnMoRG9jdW1lbnRDbGFzczo6TW9kZWwpOyB9CiAj
ZW5kaWYKKyAgICBib29sIGlzUERGRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50
Q2xhc3Nlcy5jb250YWlucyhEb2N1bWVudENsYXNzOjpQREYpOyB9CiAgICAgYm9vbCBoYXNTVkdS
b290Tm9kZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lU2V0KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZDg0MGNiNjIxNDc3ODJhZWEyYzFlNTUzYTIwZmFmNWY2MTY3NTNhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5jcHAKQEAgLTAsMCArMSwxMjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQREZEb2N1bWVudC5oIgorCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5j
bHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhU
TUxBbmNob3JFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTEh0bWxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCIK
KyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFBERkRvY3VtZW50
KTsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKworUERGRG9jdW1lbnQ6OlBERkRvY3Vt
ZW50KEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgOiBIVE1MRG9jdW1lbnQoJmZy
YW1lLCBmcmFtZS5zZXR0aW5ncygpLCB1cmwsIHsgfSwgeyBEb2N1bWVudENsYXNzOjpQREYgfSkK
KyAgICAsIG1fdmlld2VyUmVuZGVyZWQoZmFsc2UpCit7CisKK30KKworY2xhc3MgUERGRG9jdW1l
bnRQYXJzZXIgZmluYWwgOiBwdWJsaWMgUmF3RGF0YURvY3VtZW50UGFyc2VyIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFBERkRvY3VtZW50UGFyc2VyPiBjcmVhdGUoUERGRG9jdW1lbnQmIGRv
Y3VtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUERGRG9jdW1lbnRQ
YXJzZXIoZG9jdW1lbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUERGRG9jdW1lbnRQYXJz
ZXIoUERGRG9jdW1lbnQmIGRvY3VtZW50KQorICAgICAgICA6IFJhd0RhdGFEb2N1bWVudFBhcnNl
cihkb2N1bWVudCkKKyAgICB7CisgICAgfQorCisgICAgUERGRG9jdW1lbnQmIGRvY3VtZW50KCkg
Y29uc3Q7CisKKyAgICB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2goKSBvdmVycmlkZTsKK307
CisKK2lubGluZSBQREZEb2N1bWVudCYgUERGRG9jdW1lbnRQYXJzZXI6OmRvY3VtZW50KCkgY29u
c3QKK3sKKyAgICAvLyBPbmx5IHVzZWQgZHVyaW5nIHBhcnNpbmcsIHNvIGRvY3VtZW50IGlzIGd1
YXJhbnRlZWQgdG8gYmUgbm9uLW51bGwuCisgICAgQVNTRVJUKFJhd0RhdGFEb2N1bWVudFBhcnNl
cjo6ZG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIGRvd25jYXN0PFBERkRvY3VtZW50PigqUmF3RGF0
YURvY3VtZW50UGFyc2VyOjpkb2N1bWVudCgpKTsKK30KKwordm9pZCBQREZEb2N1bWVudFBhcnNl
cjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KQor
eworICAgIGRvY3VtZW50KCkudXBkYXRlRHVyaW5nUGFyc2luZygpOworfQorCit2b2lkIFBERkRv
Y3VtZW50UGFyc2VyOjpmaW5pc2goKQoreworICAgIGRvY3VtZW50KCkuZmluaXNoZWRQYXJzaW5n
KCk7Cit9CisKK1JlZjxEb2N1bWVudFBhcnNlcj4gUERGRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigp
Cit7CisgICAgcmV0dXJuIFBERkRvY3VtZW50UGFyc2VyOjpjcmVhdGUoKnRoaXMpOworfQorCit2
b2lkIFBERkRvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCit7CisgICAgLy8gRklY
TUU6IFJlcGxhY2UgYWJvdXQ6Ymxhbmsgd2l0aCBhY3R1YWwgdmlld2VyIFVSTAorICAgIGF1dG8g
dmlld2VyVVJMID0gImFib3V0OmJsYW5rP2ZpbGU9IjsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0g
SFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoKnRoaXMpOworICAgIGFwcGVuZENoaWxkKHJvb3RFbGVt
ZW50KTsKKyAgICByb290RWxlbWVudC0+aW5zZXJ0ZWRCeVBhcnNlcigpOworCisgICAgZnJhbWUo
KS0+aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3Rh
cnQpOworCisgICAgYXV0byBib2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUoKnRoaXMpOwor
ICAgIGJvZHktPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsIEF0b21TdHJpbmcoIm1hcmdpbjogMHB4
O2hlaWdodDogMTAwdmg7IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoYm9keSk7CisKKyAgICBhdXRvIGlmcmFtZSA9IEhU
TUxJRnJhbWVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjppZnJhbWVUYWcsICp0aGlzKTsKKyAg
ICBpZnJhbWUtPnNldEF0dHJpYnV0ZShzcmNBdHRyLCBtYWtlU3RyaW5nKHZpZXdlclVSTCwgZW5j
b2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyh1cmwoKS5zdHJpbmcoKSkpKTsKKyAgICBpZnJhbWUt
PnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsIEF0b21TdHJpbmcoIndpZHRoOiAxMDAlOyBoZWlnaHQ6
IDEwMCU7IGJvcmRlcjogMDsgZGlzcGxheTogYmxvY2s7IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBib2R5LT5hcHBlbmRDaGlsZChpZnJhbWUpOworCisgICAgbV92
aWV3ZXJSZW5kZXJlZCA9IHRydWU7Cit9CisKK3ZvaWQgUERGRG9jdW1lbnQ6OnVwZGF0ZUR1cmlu
Z1BhcnNpbmcoKQoreworICAgIGlmICghbV92aWV3ZXJSZW5kZXJlZCkKKyAgICAgICAgY3JlYXRl
RG9jdW1lbnRTdHJ1Y3R1cmUoKTsKK30KKwordm9pZCBQREZEb2N1bWVudDo6ZmluaXNoZWRQYXJz
aW5nKCkKK3sKKyAgICBBU1NFUlQobV92aWV3ZXJSZW5kZXJlZCk7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUERGRG9jdW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzUyM2MzZjc5NzVkM2Y0NjQwMGI0ZWRiZmQ2
M2ViYjhkMjRlNDg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QREZE
b2N1bWVudC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgUERGRG9jdW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3Vt
ZW50IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFBERkRvY3VtZW50KTsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFBERkRvY3VtZW50PiBjcmVhdGUoRnJhbWUmIGZyYW1lLCBjb25zdCBV
UkwmIHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBERkRvY3VtZW50
KGZyYW1lLCB1cmwpKTsKKyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZUR1cmluZ1BhcnNpbmcoKTsK
KyAgICB2b2lkIGZpbmlzaGVkUGFyc2luZygpOworCitwcml2YXRlOgorICAgIFBERkRvY3VtZW50
KEZyYW1lJiwgY29uc3QgVVJMJik7CisKKyAgICBSZWY8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBh
cnNlcigpIG92ZXJyaWRlOworCisgICAgdm9pZCBjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpOwor
ICAgIGJvb2wgbV92aWV3ZXJSZW5kZXJlZCA9IGZhbHNlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlBERkRvY3Vt
ZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9j
dW1lbnQpIHsgcmV0dXJuIGRvY3VtZW50LmlzUERGRG9jdW1lbnQoKTsgfQorICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJDb3Jl
OjpEb2N1bWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50Pihu
b2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>