<?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>236525</bug_id>
          
          <creation_ts>2022-02-11 13:34:16 -0800</creation_ts>
          <short_desc>PDF.js viewer should work for all kinds of URLs</short_desc>
          <delta_ts>2022-02-17 16:29:23 -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>
          
          <blocked>236805</blocked>
    
    <blocked>235969</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Nguyen (:ntim)">ntim</reporter>
          <assigned_to name="pascoe@apple.com">pascoe</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1840521</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-11 13:34:16 -0800</bug_when>
    <thetext>rdar://88459622</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840522</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-11 13:34:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/88832961&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840631</commentid>
    <comment_count>2</comment_count>
      <attachid>451762</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-11 17:32:55 -0800</bug_when>
    <thetext>Created attachment 451762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840662</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-11 23:54:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/88459622&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840665</commentid>
    <comment_count>4</comment_count>
      <attachid>451762</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-12 00:30:48 -0800</bug_when>
    <thetext>Comment on attachment 451762
Patch

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

This is a great start, thanks! I know this is just a WIP but here are a few initial comments.

&gt; Source/WebCore/ChangeLog:12
&gt; +        by calling the PDFJS viewer&apos;s open function. More work is needed to
&gt; +        disable loading of the default option and potentially present the
&gt; +        data as a PDFDataRangeTransport.

I think we might want to remove the `?file=` parameter logic from `PDFDocument::createDocumentStructure()` with this change as well. Not sure how to disable the example PDF from loading, but will look into that.

&gt; Source/WebCore/html/PDFDocument.cpp:114
&gt;      if (event.type() == eventNames().loadEvent) {

If the PDF finishes loading after the iframe finishes loading, this will be problematic.

`PDFDocumentParser::finish( )` or `PDFDocument::finishedParsing()`  is a place where we are guaranteed to finish parsing the PDF bytes. I think we need a flag for when the PDF loads, and one for when the iframe loads, then we execute this code when both of these are satisfied (whichever is first) to avoid a race.

Also, PDFJS has its own `webviewerloaded` event too, so not sure if we need to care about that.

&gt; Source/WebCore/html/PDFDocument.cpp:117
&gt; +        auto* iframe = dynamicDowncast&lt;HTMLIFrameElement&gt;(event.target());

nit: this is already defined above.

&gt; Source/WebCore/html/PDFDocument.cpp:132
&gt; +        JSLockHolder lock(globalObject-&gt;vm());
&gt; +        auto callData = JSC::getCallData(globalObject-&gt;vm(), openFunction);
&gt; +        ASSERT(callData.type != JSC::CallData::Type::None);
&gt; +        JSC::MarkedArgumentBuffer arguments;
&gt; +        auto nativeBuffer = m_document-&gt;loader()-&gt;mainResourceData()-&gt;tryCreateArrayBuffer();
&gt; +        ArrayBufferSharingMode sharingMode = nativeBuffer-&gt;sharingMode();
&gt; +        arguments.append(JSArrayBuffer::create(globalObject-&gt;vm(), globalObject-&gt;arrayBufferStructure(sharingMode), WTFMove(nativeBuffer)));
&gt; +        ASSERT(!arguments.hasOverflowed());
&gt; +
&gt; +        JSC::call(globalObject, openFunction, callData, pdfJSApplication, arguments);

I wonder if we could run window.postMessage() with a message containing the array buffer instead, and have `content-script.js` listen for the message and do the rest. It might be slightly more convoluted, but I want to do this for a few reasons:

- `PDFViewerApplication.open` can break with PDF.js API updates, and ideally I&apos;d like this type of code to stay contained in the `pdfjs-extras` folder (with `PDFDocument` should staying clear from that)

- Might be slightly easier if we have to wait for `webviewerloaded` as well, or do anything else with the buffer later on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841356</commentid>
    <comment_count>5</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-14 12:21:45 -0800</bug_when>
    <thetext>(In reply to Tim Nguyen (:ntim) from comment #4)
&gt; Comment on attachment 451762 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451762&amp;action=review
&gt; 
&gt; This is a great start, thanks! I know this is just a WIP but here are a few
&gt; initial comments.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        by calling the PDFJS viewer&apos;s open function. More work is needed to
&gt; &gt; +        disable loading of the default option and potentially present the
&gt; &gt; +        data as a PDFDataRangeTransport.
&gt; 
&gt; I think we might want to remove the `?file=` parameter logic from
&gt; `PDFDocument::createDocumentStructure()` with this change as well. Not sure
&gt; how to disable the example PDF from loading, but will look into that.

I&apos;ve found leaving just ?file=, prevents the default example pdf from loading.

&gt; &gt; Source/WebCore/html/PDFDocument.cpp:114
&gt; &gt;      if (event.type() == eventNames().loadEvent) {
&gt; 
&gt; If the PDF finishes loading after the iframe finishes loading, this will be
&gt; problematic.
&gt; 
&gt; `PDFDocumentParser::finish( )` or `PDFDocument::finishedParsing()`  is a
&gt; place where we are guaranteed to finish parsing the PDF bytes. I think we
&gt; need a flag for when the PDF loads, and one for when the iframe loads, then
&gt; we execute this code when both of these are satisfied (whichever is first)
&gt; to avoid a race.
&gt; 
&gt; Also, PDFJS has its own `webviewerloaded` event too, so not sure if we need
&gt; to care about that.
I&apos;ve tried registering a listener for that event both from the PDFDocument.cpp and within content-script.js but have been unable to get it to work.

&gt; &gt; Source/WebCore/html/PDFDocument.cpp:117
&gt; &gt; +        auto* iframe = dynamicDowncast&lt;HTMLIFrameElement&gt;(event.target());
&gt; 
&gt; nit: this is already defined above.
&gt; 
&gt; &gt; Source/WebCore/html/PDFDocument.cpp:132
&gt; &gt; +        JSLockHolder lock(globalObject-&gt;vm());
&gt; &gt; +        auto callData = JSC::getCallData(globalObject-&gt;vm(), openFunction);
&gt; &gt; +        ASSERT(callData.type != JSC::CallData::Type::None);
&gt; &gt; +        JSC::MarkedArgumentBuffer arguments;
&gt; &gt; +        auto nativeBuffer = m_document-&gt;loader()-&gt;mainResourceData()-&gt;tryCreateArrayBuffer();
&gt; &gt; +        ArrayBufferSharingMode sharingMode = nativeBuffer-&gt;sharingMode();
&gt; &gt; +        arguments.append(JSArrayBuffer::create(globalObject-&gt;vm(), globalObject-&gt;arrayBufferStructure(sharingMode), WTFMove(nativeBuffer)));
&gt; &gt; +        ASSERT(!arguments.hasOverflowed());
&gt; &gt; +
&gt; &gt; +        JSC::call(globalObject, openFunction, callData, pdfJSApplication, arguments);
&gt; 
&gt; I wonder if we could run window.postMessage() with a message containing the
&gt; array buffer instead, and have `content-script.js` listen for the message
&gt; and do the rest. It might be slightly more convoluted, but I want to do this
&gt; for a few reasons:
&gt; 
&gt; - `PDFViewerApplication.open` can break with PDF.js API updates, and ideally
&gt; I&apos;d like this type of code to stay contained in the `pdfjs-extras` folder
&gt; (with `PDFDocument` should staying clear from that)
I think PDFViewerApplication.open will stay stable based on this comment: https://github.com/mozilla/pdf.js/issues/9487#issuecomment-372036644

&gt; - Might be slightly easier if we have to wait for `webviewerloaded` as well,
&gt; or do anything else with the buffer later on.
See above comment regarding listening to webviewerloaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841362</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-14 12:39:13 -0800</bug_when>
    <thetext>(In reply to j_pascoe@apple.com from comment #5)
&gt; (In reply to Tim Nguyen (:ntim) from comment #4)
&gt; &gt; Comment on attachment 451762 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=451762&amp;action=review
&gt; &gt; 
&gt; &gt; This is a great start, thanks! I know this is just a WIP but here are a few
&gt; &gt; initial comments.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; &gt; +        by calling the PDFJS viewer&apos;s open function. More work is needed to
&gt; &gt; &gt; +        disable loading of the default option and potentially present the
&gt; &gt; &gt; +        data as a PDFDataRangeTransport.
&gt; &gt; 
&gt; &gt; I think we might want to remove the `?file=` parameter logic from
&gt; &gt; `PDFDocument::createDocumentStructure()` with this change as well. Not sure
&gt; &gt; how to disable the example PDF from loading, but will look into that.
&gt; 
&gt; I&apos;ve found leaving just ?file=, prevents the default example pdf from
&gt; loading.

That sounds good to me. We should probably add a comment that explains it, and also stop appending the PDF URL after this parameter too.

&gt; &gt; &gt; Source/WebCore/html/PDFDocument.cpp:114
&gt; &gt; &gt;      if (event.type() == eventNames().loadEvent) {
&gt; &gt; 
&gt; &gt; If the PDF finishes loading after the iframe finishes loading, this will be
&gt; &gt; problematic.
&gt; &gt; 
&gt; &gt; `PDFDocumentParser::finish( )` or `PDFDocument::finishedParsing()`  is a
&gt; &gt; place where we are guaranteed to finish parsing the PDF bytes. I think we
&gt; &gt; need a flag for when the PDF loads, and one for when the iframe loads, then
&gt; &gt; we execute this code when both of these are satisfied (whichever is first)
&gt; &gt; to avoid a race.
&gt; &gt; 
&gt; &gt; Also, PDFJS has its own `webviewerloaded` event too, so not sure if we need
&gt; &gt; to care about that.
&gt; I&apos;ve tried registering a listener for that event both from the
&gt; PDFDocument.cpp and within content-script.js but have been unable to get it
&gt; to work.

I think we could care about this specific event later. But I&apos;d still like to avoid a race between PDFDocument::finishedParsing() and iframe.onload though.

&gt; &gt; &gt; Source/WebCore/html/PDFDocument.cpp:117
&gt; &gt; &gt; +        auto* iframe = dynamicDowncast&lt;HTMLIFrameElement&gt;(event.target());
&gt; &gt; 
&gt; &gt; nit: this is already defined above.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/html/PDFDocument.cpp:132
&gt; &gt; &gt; +        JSLockHolder lock(globalObject-&gt;vm());
&gt; &gt; &gt; +        auto callData = JSC::getCallData(globalObject-&gt;vm(), openFunction);
&gt; &gt; &gt; +        ASSERT(callData.type != JSC::CallData::Type::None);
&gt; &gt; &gt; +        JSC::MarkedArgumentBuffer arguments;
&gt; &gt; &gt; +        auto nativeBuffer = m_document-&gt;loader()-&gt;mainResourceData()-&gt;tryCreateArrayBuffer();
&gt; &gt; &gt; +        ArrayBufferSharingMode sharingMode = nativeBuffer-&gt;sharingMode();
&gt; &gt; &gt; +        arguments.append(JSArrayBuffer::create(globalObject-&gt;vm(), globalObject-&gt;arrayBufferStructure(sharingMode), WTFMove(nativeBuffer)));
&gt; &gt; &gt; +        ASSERT(!arguments.hasOverflowed());
&gt; &gt; &gt; +
&gt; &gt; &gt; +        JSC::call(globalObject, openFunction, callData, pdfJSApplication, arguments);
&gt; &gt; 
&gt; &gt; I wonder if we could run window.postMessage() with a message containing the
&gt; &gt; array buffer instead, and have `content-script.js` listen for the message
&gt; &gt; and do the rest. It might be slightly more convoluted, but I want to do this
&gt; &gt; for a few reasons:
&gt; &gt; 
&gt; &gt; - `PDFViewerApplication.open` can break with PDF.js API updates, and ideally
&gt; &gt; I&apos;d like this type of code to stay contained in the `pdfjs-extras` folder
&gt; &gt; (with `PDFDocument` should staying clear from that)
&gt; I think PDFViewerApplication.open will stay stable based on this comment:
&gt; https://github.com/mozilla/pdf.js/issues/9487#issuecomment-372036644

I still find it preferable to have the JS logic contained in the content-script.js with a postMessage based system for consistency. There are more things we&apos;d want to use postMessage() for, e.g. sending find in page messages for instance, where we may want to do more than just one function call.

In general, PDFDocument should be as viewer-agnostic as possible, e.g. it should be possible to swap another viewer that watches for the same messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841466</commentid>
    <comment_count>7</comment_count>
      <attachid>451956</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-14 16:10:20 -0800</bug_when>
    <thetext>Created attachment 451956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841592</commentid>
    <comment_count>8</comment_count>
      <attachid>451956</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-14 23:52:57 -0800</bug_when>
    <thetext>Comment on attachment 451956
Patch

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

&gt; Source/WebCore/html/PDFDocument.cpp:151
&gt; +class ScriptInjectedEventListener final : public EventListener {
&gt; +public:
&gt; +    static Ref&lt;ScriptInjectedEventListener&gt; create(PDFDocument&amp; pdfDocument) { return adoptRef(*new ScriptInjectedEventListener(pdfDocument)); }
&gt; +
&gt; +private:
&gt; +    ScriptInjectedEventListener(PDFDocument&amp; pdfDocument)
&gt; +        : EventListener(PDFJSScriptInjectionEventListenerType)
&gt; +        , m_pdfDocument(pdfDocument)
&gt; +    {
&gt; +    }
&gt; +
&gt; +    bool operator==(const EventListener&amp;) const override;
&gt; +    void handleEvent(ScriptExecutionContext&amp;, Event&amp;) override;
&gt; +
&gt; +    WeakPtr&lt;PDFDocument&gt; m_pdfDocument;
&gt; +};
&gt; +
&gt; +void ScriptInjectedEventListener::handleEvent(ScriptExecutionContext&amp;, Event&amp;)
&gt; +{
&gt; +    m_pdfDocument-&gt;setContentsScriptLoaded(true);
&gt; +    if (m_pdfDocument-&gt;isFullyParsed())
&gt; +        m_pdfDocument-&gt;sendBlob();
&gt; +}
&gt; +
&gt; +bool ScriptInjectedEventListener::operator==(const EventListener&amp; other) const
&gt; +{
&gt; +    // All PDFJSScriptInjectionEventListenerType objects compare as equal; OK since there is only one per document.
&gt; +    return other.type() == PDFJSScriptInjectionEventListenerType;
&gt; +}

You can just re-use the other event listener, and check what the event target is in handleEvent.

I don&apos;t think we want to add more event listener types. ImageDocument uses one event listener for 2 different events for instance.

&gt; Source/WebCore/html/PDFDocument.cpp:187
&gt; +    m_iframe = iframe.ptr();

`m_iframe = WTFMove(iframe)`

&gt; Source/WebCore/html/PDFDocument.cpp:201
&gt; +    if (this-&gt;m_contentScriptsLoaded)
&gt; +        this-&gt;sendBlob();

nit: omit `this-&gt;`

&gt; Source/WebCore/html/PDFDocument.cpp:209
&gt; +    auto openFunction = frame-&gt;script().executeScriptIgnoringException(&quot;(data) =&gt; PDFJSContentScript.open(data)&quot;).getObject();

nit:

auto openFunction = frame-&gt;script().executeScriptIgnoringException(&quot;PDFJSContentScript.open&quot;).getObject();

&gt; Source/WebCore/html/PDFDocument.cpp:210
&gt; +    auto globalObject = this-&gt;globalObject();

nit: you can omit this-&gt; here and below.

&gt; Source/WebCore/html/PDFDocument.cpp:215
&gt; +    JSC::MarkedArgumentBuffer arguments;

`JSC::` can be omitted since you have `using namespace JSC`

&gt; Source/WebCore/html/PDFDocument.cpp:225
&gt;  void PDFDocument::injectContentScript(Document&amp; contentDocument)

You can stop passing the contentDocument around if you store a member with m_iframe.

&gt; Source/WebCore/html/PDFDocument.h:45
&gt; +    void sendBlob();

nit: sendPDFArrayBuffer(); ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841736</commentid>
    <comment_count>9</comment_count>
      <attachid>452029</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-15 08:49:54 -0800</bug_when>
    <thetext>Created attachment 452029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841744</commentid>
    <comment_count>10</comment_count>
      <attachid>452029</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-15 09:14:42 -0800</bug_when>
    <thetext>Comment on attachment 452029
Patch

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

&gt; Source/WebCore/dom/EventListener.h:50
&gt; +        PDFJSScriptInjectionEventListenerType,

nit: remove this

&gt; Source/WebCore/html/PDFDocument.cpp:112
&gt; +        ASSERT(iframe, &quot;Should have event target&quot;);

You can probably remove this assert

&gt; Source/WebCore/html/PDFDocument.cpp:118
&gt;      }

and add:
```
else
  ASSERT_NOT_REACHED();
```

&gt; Source/WebCore/html/PDFDocument.cpp:179
&gt; +void PDFDocument::sendPDFArrayBuffer()

I still would like to use postMessage() here if possible.

&gt; Source/WebCore/html/PDFDocument.cpp:185
&gt; +    auto globalObject = this-&gt;globalObject();

redundant this-&gt;

&gt; Source/WebCore/html/PDFDocument.cpp:191
&gt; +    auto nativeBuffer = this-&gt;loader()-&gt;mainResourceData()-&gt;tryCreateArrayBuffer();

here too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841751</commentid>
    <comment_count>11</comment_count>
      <attachid>452029</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-15 09:29:31 -0800</bug_when>
    <thetext>Comment on attachment 452029
Patch

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

&gt;&gt; Source/WebCore/html/PDFDocument.cpp:185
&gt;&gt; +    auto globalObject = this-&gt;globalObject();
&gt; 
&gt; redundant this-&gt;

oops this is not actually redundant, the variable name matches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841764</commentid>
    <comment_count>12</comment_count>
      <attachid>452040</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-15 09:42:41 -0800</bug_when>
    <thetext>Created attachment 452040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841825</commentid>
    <comment_count>13</comment_count>
      <attachid>452040</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-15 11:16:52 -0800</bug_when>
    <thetext>Comment on attachment 452040
Patch

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

&gt; Source/WebCore/html/PDFDocument.cpp:152
&gt;      auto iframe = HTMLIFrameElement::create(HTMLNames::iframeTag, *this);

Any reason we are not setting m_iframe right away here.

&gt; Source/WebCore/html/PDFDocument.cpp:155
&gt;      body-&gt;appendChild(iframe);

Note that this may fire events and thus run JS AFAIK.

&gt; Source/WebCore/html/PDFDocument.cpp:157
&gt;      auto listener = PDFDocumentEventListener::create(*this);

ditto.

&gt; Source/WebCore/html/PDFDocument.cpp:160
&gt; +    m_iframe = WTFMove(iframe);

instead of waiting all the way until here?

&gt; Source/WebCore/html/PDFDocument.cpp:182
&gt; +    auto* frame = downcast&lt;Frame&gt;(m_iframe-&gt;contentWindow()-&gt;frame());

Why isn&apos;t this just calling m_iframe-&gt;contentFrame() ? Seems odd to go via the WindowProxy.

&gt; Source/WebCore/html/PDFDocument.cpp:187
&gt; +    auto callData = JSC::getCallData(globalObject-&gt;vm(), openFunction);

Why all the JSC:: in this function given that you use &apos;using namespace JSC;&apos; above?

&gt; Source/WebCore/html/PDFDocument.cpp:204
&gt; +    auto script = HTMLScriptElement::create(scriptTag, *contentDocument, false, false);

Last parameter is optional and can be omitted.

&gt; Source/WebCore/html/PDFDocument.h:47
&gt; +    bool isFullyParsed() { return m_finishedParsing; }

Should be marked as const.

Also would be nice if the getter and the data member names would match.

&gt; Source/WebCore/html/PDFDocument.h:56
&gt; +    bool m_finishedParsing { false };

Boolean variables need to start with a prefix (such as &quot;is&quot;) as per WebKit coding style.

&gt; Source/WebCore/html/PDFDocument.h:57
&gt; +    bool m_contentScriptsLoaded { false };

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841838</commentid>
    <comment_count>14</comment_count>
      <attachid>452040</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-02-15 11:30:52 -0800</bug_when>
    <thetext>Comment on attachment 452040
Patch

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

&gt; Source/WebCore/html/PDFDocument.cpp:185
&gt; +

nit: auto&amp; vm = globalObject-&gt;vm();

&gt; Source/WebCore/html/PDFDocument.cpp:190
&gt; +    auto nativeBuffer = loader()-&gt;mainResourceData()-&gt;tryCreateArrayBuffer();

Should we handle tryCreateArrayBuffer() returning nullptr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841860</commentid>
    <comment_count>15</comment_count>
      <attachid>452040</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-15 12:05:38 -0800</bug_when>
    <thetext>Comment on attachment 452040
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Collect bytes during parsing and pass data to PDF.js as a blob

Can you correct the changelog title to be descriptive of what this patch actually does? (perhaps the bug/radar titles should be changed too)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841863</commentid>
    <comment_count>16</comment_count>
      <attachid>452040</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-15 12:13:03 -0800</bug_when>
    <thetext>Comment on attachment 452040
Patch

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

&gt; Source/WebCore/html/PDFDocument.cpp:184
&gt; +    auto openFunction = frame-&gt;script().executeScriptIgnoringException(&quot;PDFJSContentScript.open&quot;).getObject();
&gt; +    auto globalObject = this-&gt;globalObject();

If we have globalObject, then how about just getting a property instead of evaluating a script here?

auto pdfjs = globalObject-&gt;get(globalObject, Identifier::fromString(vm, &quot;PDFJSContentScript&quot;));
.... exception handling ....
auto open = asObject(pdfjs)-&gt;get(globalObject, Identifier::fromString(vm, &quot;open&quot;));
.... exception handling ....


The above is much faster and efficient than evaluating script snippet.
If we do that, do it after taking a JSLock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841937</commentid>
    <comment_count>17</comment_count>
      <attachid>452089</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-15 14:08:44 -0800</bug_when>
    <thetext>Created attachment 452089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841947</commentid>
    <comment_count>18</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-02-15 14:31:57 -0800</bug_when>
    <thetext>(In reply to Tim Nguyen (:ntim) from comment #15)
&gt; Comment on attachment 452040 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452040&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Collect bytes during parsing and pass data to PDF.js as a blob
&gt; 
&gt; Can you correct the changelog title to be descriptive of what this patch
&gt; actually does? (perhaps the bug/radar titles should be changed too)

Ideally the bug title would describe the problem, not the solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841988</commentid>
    <comment_count>19</comment_count>
      <attachid>452089</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-15 15:47:15 -0800</bug_when>
    <thetext>Comment on attachment 452089
Patch

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

&gt; Source/WebCore/html/PDFDocument.cpp:192
&gt; +    auto nativeBuffer = loader()-&gt;mainResourceData()-&gt;tryCreateArrayBuffer();
&gt; +    if (nativeBuffer == nullptr) {

auto arrayBuffer = ...
if (!arrayBuffer) {

&gt; Source/WebCore/html/PDFDocument.cpp:197
&gt; +    ArrayBufferSharingMode sharingMode = nativeBuffer-&gt;sharingMode();

`auto sharingMode =` should work here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842038</commentid>
    <comment_count>20</comment_count>
      <attachid>452089</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-15 17:09:15 -0800</bug_when>
    <thetext>Comment on attachment 452089
Patch

r=me for this initial iteration. We should switch to postMessage in bug 236668, since the iframe and the PDFDocument origins are not the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842040</commentid>
    <comment_count>21</comment_count>
      <attachid>452089</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-15 17:10:11 -0800</bug_when>
    <thetext>Comment on attachment 452089
Patch

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

&gt; Source/WebCore/html/PDFDocument.cpp:181
&gt; +    // FIXME: https://bugs.webkit.org/show_bug.cgi?id=236668 - Use globalObject-&gt;get

// FIXME: webkit.org/b/236668 - Use postMessage instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842049</commentid>
    <comment_count>22</comment_count>
      <attachid>452089</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-15 17:13:36 -0800</bug_when>
    <thetext>Comment on attachment 452089
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        * html/PDFDocument.cpp:
&gt; +        (WebCore::PDFDocumentEventListener::handleEvent):

The changelog needs to be regenerated, there are more functions that have been changed since.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842050</commentid>
    <comment_count>23</comment_count>
      <attachid>452089</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-15 17:13:39 -0800</bug_when>
    <thetext>Comment on attachment 452089
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        * html/PDFDocument.cpp:
&gt; +        (WebCore::PDFDocumentEventListener::handleEvent):

The changelog needs to be regenerated, there are more functions that have been changed since.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843121</commentid>
    <comment_count>24</comment_count>
      <attachid>452432</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-17 14:16:52 -0800</bug_when>
    <thetext>Created attachment 452432
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843122</commentid>
    <comment_count>25</comment_count>
      <attachid>452433</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-02-17 14:24:41 -0800</bug_when>
    <thetext>Created attachment 452433
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843170</commentid>
    <comment_count>26</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-17 16:29:16 -0800</bug_when>
    <thetext>Committed r290089 (247444@main): &lt;https://commits.webkit.org/247444@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452433.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451762</attachid>
            <date>2022-02-11 17:32:55 -0800</date>
            <delta_ts>2022-02-14 16:10:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236525-20220211173254.patch</filename>
            <type>text/plain</type>
            <size>2903</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ2MTY5NmQwZWI1ZWY2
NjZiOGZlZmRkMDNjMTNlM2ExOTdjNmVmMi4uZDViYjg0NDQyZjdkNDQyNjJmYWM2MjY4ZGNhNjJl
ZDJiZDU4Yjk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAyLTExICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBDb2xsZWN0IGJ5dGVzIGR1cmlu
ZyBwYXJzaW5nIGFuZCBwYXNzIGRhdGEgdG8gUERGLmpzIGFzIGEgYmxvYgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTI1CisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzg4ODMyOTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBzdGFydHMgbG9hZGluZyB0aGUgcGRmIGFzIGFuIGFycmF5
IGJ1ZmZlciBhZnRlciBpdCdzIHJlY2lldmVkCisgICAgICAgIGJ5IGNhbGxpbmcgdGhlIFBERkpT
IHZpZXdlcidzIG9wZW4gZnVuY3Rpb24uIE1vcmUgd29yayBpcyBuZWVkZWQgdG8KKyAgICAgICAg
ZGlzYWJsZSBsb2FkaW5nIG9mIHRoZSBkZWZhdWx0IG9wdGlvbiBhbmQgcG90ZW50aWFsbHkgcHJl
c2VudCB0aGUKKyAgICAgICAgZGF0YSBhcyBhIFBERkRhdGFSYW5nZVRyYW5zcG9ydC4KKworICAg
ICAgICAqIGh0bWwvUERGRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1l
bnRFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisKIDIwMjItMDItMTEgIE1lZ2FuIEdhcmRu
ZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgZ3JhbW1hciBj
aGVja2luZyBvbiBNYWMgQ2F0YWx5c3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1BERkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCmlu
ZGV4IDNmOGYyM2M4YjYwM2I4YmM2ZTI0ZDBmNzdlNmM0N2FmZTMyNGZlOTIuLjVmNDYyNTQ0YTA5
NjY5N2FlMmEyZDRkNDVkMWY2ZWYxNzU2NDhkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUERGRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1l
bnQuY3BwCkBAIC0xMDUsMTMgKzEwNSwzMSBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8UERGRG9j
dW1lbnQ+IG1fZG9jdW1lbnQ7CiB9OwogCi12b2lkIFBERkRvY3VtZW50RXZlbnRMaXN0ZW5lcjo6
aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV2ZW50JiBldmVudCkKK3ZvaWQg
UERGRG9jdW1lbnRFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBFdmVudCYgZXZlbnQpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
ICAgICBhdXRvKiBpZnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8SFRNTElGcmFtZUVsZW1lbnQ+KGV2
ZW50LnRhcmdldCgpKTsKICAgICBBU1NFUlQoaWZyYW1lLCAiU2hvdWxkIGhhdmUgZXZlbnQgdGFy
Z2V0Iik7CiAKICAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQp
IHsKICAgICAgICAgbV9kb2N1bWVudC0+aW5qZWN0Q29udGVudFNjcmlwdCgqaWZyYW1lLT5jb250
ZW50RG9jdW1lbnQoKSk7CisKKyAgICAgICAgYXV0byogaWZyYW1lID0gZHluYW1pY0Rvd25jYXN0
PEhUTUxJRnJhbWVFbGVtZW50PihldmVudC50YXJnZXQoKSk7CisgICAgICAgIGF1dG8qIGZyYW1l
ID0gZG93bmNhc3Q8RnJhbWU+KGlmcmFtZS0+Y29udGVudFdpbmRvdygpLT5mcmFtZSgpKTsKKyAg
ICAgICAgYXV0byBvcGVuRnVuY3Rpb24gPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdEln
bm9yaW5nRXhjZXB0aW9uKCJQREZWaWV3ZXJBcHBsaWNhdGlvbi5vcGVuIikuZ2V0T2JqZWN0KCk7
CisgICAgICAgIGF1dG8gcGRmSlNBcHBsaWNhdGlvbiA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRl
U2NyaXB0SWdub3JpbmdFeGNlcHRpb24oIlBERlZpZXdlckFwcGxpY2F0aW9uIik7CisgICAgICAg
IGF1dG8gZ2xvYmFsT2JqZWN0ID0gY29udGV4dC5nbG9iYWxPYmplY3QoKTsKKworICAgICAgICBK
U0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICBhdXRvIGNhbGxE
YXRhID0gSlNDOjpnZXRDYWxsRGF0YShnbG9iYWxPYmplY3QtPnZtKCksIG9wZW5GdW5jdGlvbik7
CisgICAgICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5v
bmUpOworICAgICAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICAg
ICAgYXV0byBuYXRpdmVCdWZmZXIgPSBtX2RvY3VtZW50LT5sb2FkZXIoKS0+bWFpblJlc291cmNl
RGF0YSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgICAgICBBcnJheUJ1ZmZlclNoYXJp
bmdNb2RlIHNoYXJpbmdNb2RlID0gbmF0aXZlQnVmZmVyLT5zaGFyaW5nTW9kZSgpOworICAgICAg
ICBhcmd1bWVudHMuYXBwZW5kKEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZt
KCksIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoc2hhcmluZ01vZGUpLCBXVEZN
b3ZlKG5hdGl2ZUJ1ZmZlcikpKTsKKyAgICAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZs
b3dlZCgpKTsKKworICAgICAgICBKU0M6OmNhbGwoZ2xvYmFsT2JqZWN0LCBvcGVuRnVuY3Rpb24s
IGNhbGxEYXRhLCBwZGZKU0FwcGxpY2F0aW9uLCBhcmd1bWVudHMpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451956</attachid>
            <date>2022-02-14 16:10:20 -0800</date>
            <delta_ts>2022-02-15 08:49:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236525-20220214161019.patch</filename>
            <type>text/plain</type>
            <size>7834</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ2MTY5NmQwZWI1ZWY2
NjZiOGZlZmRkMDNjMTNlM2ExOTdjNmVmMi4uM2JhMzZhY2UxNTdkZjgyOWFjZDFmMjdkODhkNGU0
MDk2NzMwZjhhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAyLTExICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBDb2xsZWN0IGJ5dGVzIGR1cmlu
ZyBwYXJzaW5nIGFuZCBwYXNzIGRhdGEgdG8gUERGLmpzIGFzIGEgYmxvYgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTI1CisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzg4ODMyOTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBzdGFydHMgbG9hZGluZyB0aGUgcGRmIGFzIGFuIGFycmF5
IGJ1ZmZlciBhZnRlciBpdCdzIHJlY2lldmVkCisgICAgICAgIGJ5IGNhbGxpbmcgdGhlIFBERkpT
IHZpZXdlcidzIG9wZW4gZnVuY3Rpb24gdGhyb3VnaCB0aGUgY29udGVudCBzY3JpcHQncworICAg
ICAgICB3cmFwcGVyLiBNb3JlIHdvcmsgaXMgbmVlZGVkIHRvIHBvdGVudGlhbGx5IHByZXNlbnQg
dGhlIGRhdGEgYXMgYQorICAgICAgICBQREZEYXRhUmFuZ2VUcmFuc3BvcnQuCisKKyAgICAgICAg
KiBodG1sL1BERkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50RXZl
bnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorCiAyMDIyLTAyLTExICBNZWdhbiBHYXJkbmVyICA8
bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIGdyYW1tYXIgY2hlY2tp
bmcgb24gTWFjIENhdGFseXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
ZGZqcy1leHRyYXMvY29udGVudC1zY3JpcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bk
ZmpzLWV4dHJhcy9jb250ZW50LXNjcmlwdC5qcwppbmRleCBmM2M0NzI3MjVkMzJiZDhmNWE2Mzgw
YzhmZmNmYzc0ODBhNjNkZDQ4Li5mZTQ5ZDA1MzRkYjAxODM0NmI0NDM0NzU1YTIzN2Y3ZmIzY2Q2
MzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BkZmpzLWV4dHJhcy9jb250
ZW50LXNjcmlwdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BkZmpzLWV4dHJhcy9j
b250ZW50LXNjcmlwdC5qcwpAQCAtMzEsNiArMzEsOSBAQCBjb25zdCBQREZKU0NvbnRlbnRTY3Jp
cHQgPSB7CiAgICAgfSwKICAgICBpbml0KCkgewogICAgICAgICB0aGlzLmluamVjdFN0eWxlKCk7
CisgICAgfSwKKyAgICBvcGVuKGRhdGEpIHsKKyAgICAgICAgUERGVmlld2VyQXBwbGljYXRpb24u
b3BlbihkYXRhKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAppbmRl
eCA5ODY3MGI5ZWYzYTZhNTk1YjdjMzI5NjVmYTU2M2NmOTI5NmY5ZTI5Li5mNTgyZTY0MDk5MjUw
NzI5ZmJhM2E0ZGEyYWJkMjE5Njg1MDdmZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVy
LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICBOYXRpdmVFdmVudExpc3RlbmVy
VHlwZSwKICAgICAgICAgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXJUeXBlLAogICAgICAgICBQ
REZEb2N1bWVudEV2ZW50TGlzdGVuZXJUeXBlLAorICAgICAgICBQREZKU1NjcmlwdEluamVjdGlv
bkV2ZW50TGlzdGVuZXJUeXBlLAogICAgIH07CiAKICAgICB2aXJ0dWFsIH5FdmVudExpc3RlbmVy
KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcAppbmRleCAzZjhmMjNj
OGI2MDNiOGJjNmUyNGQwZjc3ZTZjNDdhZmUzMjRmZTkyLi41NzBjNmI2NzFkOGJjMTIzOWQwZDY3
Zjc1NzJhOGRmYmRkODUwOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcApAQCAt
MTEwLDkgKzExMCw4IEBAIHZvaWQgUERGRG9jdW1lbnRFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXZlbnQmIGV2ZW50CiAgICAgYXV0byogaWZyYW1l
ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50PihldmVudC50YXJnZXQoKSk7CiAg
ICAgQVNTRVJUKGlmcmFtZSwgIlNob3VsZCBoYXZlIGV2ZW50IHRhcmdldCIpOwogCi0gICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubG9hZEV2ZW50KSB7CisgICAgaWYgKGV2ZW50
LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubG9hZEV2ZW50KQogICAgICAgICBtX2RvY3VtZW50LT5p
bmplY3RDb250ZW50U2NyaXB0KCppZnJhbWUtPmNvbnRlbnREb2N1bWVudCgpKTsKLSAgICB9CiB9
CiAKIGJvb2wgUERGRG9jdW1lbnRFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50
TGlzdGVuZXImIG90aGVyKSBjb25zdApAQCAtMTIxLDYgKzEyMCwzNiBAQCBib29sIFBERkRvY3Vt
ZW50RXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikg
Y29uc3QKICAgICByZXR1cm4gb3RoZXIudHlwZSgpID09IFBERkRvY3VtZW50RXZlbnRMaXN0ZW5l
clR5cGU7CiB9CiAKK2NsYXNzIFNjcmlwdEluamVjdGVkRXZlbnRMaXN0ZW5lciBmaW5hbCA6IHB1
YmxpYyBFdmVudExpc3RlbmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNjcmlwdEluamVj
dGVkRXZlbnRMaXN0ZW5lcj4gY3JlYXRlKFBERkRvY3VtZW50JiBwZGZEb2N1bWVudCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTY3JpcHRJbmplY3RlZEV2ZW50TGlzdGVuZXIocGRmRG9jdW1lbnQp
KTsgfQorCitwcml2YXRlOgorICAgIFNjcmlwdEluamVjdGVkRXZlbnRMaXN0ZW5lcihQREZEb2N1
bWVudCYgcGRmRG9jdW1lbnQpCisgICAgICAgIDogRXZlbnRMaXN0ZW5lcihQREZKU1NjcmlwdElu
amVjdGlvbkV2ZW50TGlzdGVuZXJUeXBlKQorICAgICAgICAsIG1fcGRmRG9jdW1lbnQocGRmRG9j
dW1lbnQpCisgICAgeworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExp
c3RlbmVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgRXZlbnQmKSBvdmVycmlkZTsKKworICAgIFdlYWtQdHI8UERGRG9jdW1l
bnQ+IG1fcGRmRG9jdW1lbnQ7Cit9OworCit2b2lkIFNjcmlwdEluamVjdGVkRXZlbnRMaXN0ZW5l
cjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV2ZW50JikKK3sKKyAgICBt
X3BkZkRvY3VtZW50LT5zZXRDb250ZW50c1NjcmlwdExvYWRlZCh0cnVlKTsKKyAgICBpZiAobV9w
ZGZEb2N1bWVudC0+aXNGdWxseVBhcnNlZCgpKQorICAgICAgICBtX3BkZkRvY3VtZW50LT5zZW5k
QmxvYigpOworfQorCitib29sIFNjcmlwdEluamVjdGVkRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9
PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29uc3QKK3sKKyAgICAvLyBBbGwgUERGSlNT
Y3JpcHRJbmplY3Rpb25FdmVudExpc3RlbmVyVHlwZSBvYmplY3RzIGNvbXBhcmUgYXMgZXF1YWw7
IE9LIHNpbmNlIHRoZXJlIGlzIG9ubHkgb25lIHBlciBkb2N1bWVudC4KKyAgICByZXR1cm4gb3Ro
ZXIudHlwZSgpID09IFBERkpTU2NyaXB0SW5qZWN0aW9uRXZlbnRMaXN0ZW5lclR5cGU7Cit9CisK
IC8qIFBERkRvY3VtZW50ICovCiAKIFBERkRvY3VtZW50OjpQREZEb2N1bWVudChGcmFtZSYgZnJh
bWUsIGNvbnN0IFVSTCYgdXJsKQpAQCAtMTM1LDYgKzE2NCw3IEBAIFJlZjxEb2N1bWVudFBhcnNl
cj4gUERGRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiAKIHZvaWQgUERGRG9jdW1lbnQ6OmNyZWF0
ZURvY3VtZW50U3RydWN0dXJlKCkKIHsKKyAgICAvLyBUaGUgZW1wdHkgZmlsZSBwYXJhbWV0ZXIg
cHJldmVudHMgZGVmYXVsdCBwZGYgZnJvbSBsb2FkaW5nLgogICAgIGF1dG8gdmlld2VyVVJMID0g
IndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9wZGZqcy93ZWIvdmlld2VyLmh0bWw/ZmlsZT0iOwogICAg
IGF1dG8gcm9vdEVsZW1lbnQgPSBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAgICAg
YXBwZW5kQ2hpbGQocm9vdEVsZW1lbnQpOwpAQCAtMTQ3LDI1ICsxNzcsNDkgQEAgdm9pZCBQREZE
b2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIHJvb3RFbGVtZW50LT5hcHBl
bmRDaGlsZChib2R5KTsKIAogICAgIGF1dG8gaWZyYW1lID0gSFRNTElGcmFtZUVsZW1lbnQ6OmNy
ZWF0ZShIVE1MTmFtZXM6OmlmcmFtZVRhZywgKnRoaXMpOwotICAgIGlmcmFtZS0+c2V0QXR0cmli
dXRlKHNyY0F0dHIsIG1ha2VTdHJpbmcodmlld2VyVVJMLCBlbmNvZGVXaXRoVVJMRXNjYXBlU2Vx
dWVuY2VzKHVybCgpLnN0cmluZygpKSkpOworICAgIGlmcmFtZS0+c2V0QXR0cmlidXRlKHNyY0F0
dHIsIEF0b21TdHJpbmcodmlld2VyVVJMKSk7CiAgICAgaWZyYW1lLT5zZXRBdHRyaWJ1dGUoc3R5
bGVBdHRyLCBBdG9tU3RyaW5nKCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBib3JkZXI6IDA7
IGRpc3BsYXk6IGJsb2NrOyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAg
ICAgYm9keS0+YXBwZW5kQ2hpbGQoaWZyYW1lKTsKIAogICAgIGF1dG8gbGlzdGVuZXIgPSBQREZE
b2N1bWVudEV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7CiAgICAgaWZyYW1lLT5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgbGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7CiAKLSAgICBtX3Zp
ZXdlclJlbmRlcmVkID0gdHJ1ZTsKKyAgICBtX2lmcmFtZSA9IGlmcmFtZS5wdHIoKTsKIH0KIAog
dm9pZCBQREZEb2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZygpCiB7Ci0gICAgaWYgKCFtX3Zp
ZXdlclJlbmRlcmVkKQorICAgIGlmICghbV9pZnJhbWUpCiAgICAgICAgIGNyZWF0ZURvY3VtZW50
U3RydWN0dXJlKCk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiB7
Ci0gICAgQVNTRVJUKG1fdmlld2VyUmVuZGVyZWQpOworICAgIEFTU0VSVChtX2lmcmFtZSk7Cisg
ICAgbV9maW5pc2hlZFBhcnNpbmcgPSB0cnVlOworICAgIGlmICh0aGlzLT5tX2NvbnRlbnRTY3Jp
cHRzTG9hZGVkKQorICAgICAgICB0aGlzLT5zZW5kQmxvYigpOworfQorCit2b2lkIFBERkRvY3Vt
ZW50OjpzZW5kQmxvYigpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKKworICAgIGF1dG8q
IGZyYW1lID0gZG93bmNhc3Q8RnJhbWU+KG1faWZyYW1lLT5jb250ZW50V2luZG93KCktPmZyYW1l
KCkpOworICAgIGF1dG8gb3BlbkZ1bmN0aW9uID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3Jp
cHRJZ25vcmluZ0V4Y2VwdGlvbigiKGRhdGEpID0+IFBERkpTQ29udGVudFNjcmlwdC5vcGVuKGRh
dGEpIikuZ2V0T2JqZWN0KCk7CisgICAgYXV0byBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxP
YmplY3QoKTsKKworICAgIEpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdC0+dm0oKSk7Cisg
ICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2FsbERhdGEoZ2xvYmFsT2JqZWN0LT52bSgpLCBv
cGVuRnVuY3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IEpTQzo6Q2FsbERhdGE6
OlR5cGU6Ok5vbmUpOworICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwor
ICAgIGF1dG8gbmF0aXZlQnVmZmVyID0gdGhpcy0+bG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEo
KS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKworICAgIEFycmF5QnVmZmVyU2hhcmluZ01vZGUg
c2hhcmluZ01vZGUgPSBuYXRpdmVCdWZmZXItPnNoYXJpbmdNb2RlKCk7CisgICAgYXJndW1lbnRz
LmFwcGVuZChKU0FycmF5QnVmZmVyOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxP
YmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKHNoYXJpbmdNb2RlKSwgV1RGTW92ZShuYXRpdmVC
dWZmZXIpKSk7CisgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKKworICAg
IEpTQzo6Y2FsbChnbG9iYWxPYmplY3QsIG9wZW5GdW5jdGlvbiwgY2FsbERhdGEsIGdsb2JhbE9i
amVjdCwgYXJndW1lbnRzKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudDo6aW5qZWN0Q29udGVudFNj
cmlwdChEb2N1bWVudCYgY29udGVudERvY3VtZW50KQpAQCAtMTczLDYgKzIyNyw5IEBAIHZvaWQg
UERGRG9jdW1lbnQ6OmluamVjdENvbnRlbnRTY3JpcHQoRG9jdW1lbnQmIGNvbnRlbnREb2N1bWVu
dCkKICAgICBBU1NFUlQoY29udGVudERvY3VtZW50LmJvZHkoKSk7CiAKICAgICBhdXRvIHNjcmlw
dCA9IEhUTUxTY3JpcHRFbGVtZW50OjpjcmVhdGUoc2NyaXB0VGFnLCBjb250ZW50RG9jdW1lbnQs
IGZhbHNlLCBmYWxzZSk7CisgICAgYXV0byBsaXN0ZW5lciA9IFNjcmlwdEluamVjdGVkRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBzY3JpcHQtPmFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLCBsaXN0ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKKwogICAgIHNjcmlwdC0+c2V0QXR0cmli
dXRlKHNyY0F0dHIsICJ3ZWJraXQtcGRmanMtdmlld2VyOi8vcGRmanMvZXh0cmFzL2NvbnRlbnQt
c2NyaXB0LmpzIik7CiAgICAgY29udGVudERvY3VtZW50LmJvZHkoKS0+YXBwZW5kQ2hpbGQoc2Ny
aXB0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuaAppbmRleCAyMjU2OTU4YTgyYTQxNmRi
ODg4NGNhYWI5ODBlNzRmOTMyYmI3N2QxLi45ZDkwNmUwNDc1ODZjNDgzMmE2ZjViMGQ4Njk2M2Uw
ODJkNDY4YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5oCkBAIC00MiwxMyArNDIsMTkg
QEAgcHVibGljOgogICAgIHZvaWQgZmluaXNoZWRQYXJzaW5nKCk7CiAgICAgdm9pZCBpbmplY3RD
b250ZW50U2NyaXB0KERvY3VtZW50JiBjb250ZW50RG9jdW1lbnQpOwogCisgICAgdm9pZCBzZW5k
QmxvYigpOworICAgIGJvb2wgaXNGdWxseVBhcnNlZCgpIHsgcmV0dXJuIG1fZmluaXNoZWRQYXJz
aW5nOyB9CisgICAgdm9pZCBzZXRDb250ZW50c1NjcmlwdExvYWRlZChib29sIGxvYWRlZCkgeyBt
X2NvbnRlbnRTY3JpcHRzTG9hZGVkID0gbG9hZGVkOyB9CisKIHByaXZhdGU6CiAgICAgUERGRG9j
dW1lbnQoRnJhbWUmLCBjb25zdCBVUkwmKTsKIAogICAgIFJlZjxEb2N1bWVudFBhcnNlcj4gY3Jl
YXRlUGFyc2VyKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNyZWF0ZURvY3VtZW50U3RydWN0dXJl
KCk7Ci0gICAgYm9vbCBtX3ZpZXdlclJlbmRlcmVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZmlu
aXNoZWRQYXJzaW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1fY29udGVudFNjcmlwdHNMb2FkZWQg
eyBmYWxzZSB9OworICAgIFJlZlB0cjxIVE1MSUZyYW1lRWxlbWVudD4gbV9pZnJhbWU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452029</attachid>
            <date>2022-02-15 08:49:54 -0800</date>
            <delta_ts>2022-02-15 09:47:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236525-20220215084953.patch</filename>
            <type>text/plain</type>
            <size>7439</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ2MTY5NmQwZWI1ZWY2
NjZiOGZlZmRkMDNjMTNlM2ExOTdjNmVmMi4uM2JhMzZhY2UxNTdkZjgyOWFjZDFmMjdkODhkNGU0
MDk2NzMwZjhhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAyLTExICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBDb2xsZWN0IGJ5dGVzIGR1cmlu
ZyBwYXJzaW5nIGFuZCBwYXNzIGRhdGEgdG8gUERGLmpzIGFzIGEgYmxvYgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTI1CisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzg4ODMyOTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBzdGFydHMgbG9hZGluZyB0aGUgcGRmIGFzIGFuIGFycmF5
IGJ1ZmZlciBhZnRlciBpdCdzIHJlY2lldmVkCisgICAgICAgIGJ5IGNhbGxpbmcgdGhlIFBERkpT
IHZpZXdlcidzIG9wZW4gZnVuY3Rpb24gdGhyb3VnaCB0aGUgY29udGVudCBzY3JpcHQncworICAg
ICAgICB3cmFwcGVyLiBNb3JlIHdvcmsgaXMgbmVlZGVkIHRvIHBvdGVudGlhbGx5IHByZXNlbnQg
dGhlIGRhdGEgYXMgYQorICAgICAgICBQREZEYXRhUmFuZ2VUcmFuc3BvcnQuCisKKyAgICAgICAg
KiBodG1sL1BERkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50RXZl
bnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorCiAyMDIyLTAyLTExICBNZWdhbiBHYXJkbmVyICA8
bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIGdyYW1tYXIgY2hlY2tp
bmcgb24gTWFjIENhdGFseXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
ZGZqcy1leHRyYXMvY29udGVudC1zY3JpcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bk
ZmpzLWV4dHJhcy9jb250ZW50LXNjcmlwdC5qcwppbmRleCBmM2M0NzI3MjVkMzJiZDhmNWE2Mzgw
YzhmZmNmYzc0ODBhNjNkZDQ4Li5mZTQ5ZDA1MzRkYjAxODM0NmI0NDM0NzU1YTIzN2Y3ZmIzY2Q2
MzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BkZmpzLWV4dHJhcy9jb250
ZW50LXNjcmlwdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BkZmpzLWV4dHJhcy9j
b250ZW50LXNjcmlwdC5qcwpAQCAtMzEsNiArMzEsOSBAQCBjb25zdCBQREZKU0NvbnRlbnRTY3Jp
cHQgPSB7CiAgICAgfSwKICAgICBpbml0KCkgewogICAgICAgICB0aGlzLmluamVjdFN0eWxlKCk7
CisgICAgfSwKKyAgICBvcGVuKGRhdGEpIHsKKyAgICAgICAgUERGVmlld2VyQXBwbGljYXRpb24u
b3BlbihkYXRhKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAppbmRl
eCA5ODY3MGI5ZWYzYTZhNTk1YjdjMzI5NjVmYTU2M2NmOTI5NmY5ZTI5Li5mNTgyZTY0MDk5MjUw
NzI5ZmJhM2E0ZGEyYWJkMjE5Njg1MDdmZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVy
LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICBOYXRpdmVFdmVudExpc3RlbmVy
VHlwZSwKICAgICAgICAgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXJUeXBlLAogICAgICAgICBQ
REZEb2N1bWVudEV2ZW50TGlzdGVuZXJUeXBlLAorICAgICAgICBQREZKU1NjcmlwdEluamVjdGlv
bkV2ZW50TGlzdGVuZXJUeXBlLAogICAgIH07CiAKICAgICB2aXJ0dWFsIH5FdmVudExpc3RlbmVy
KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcAppbmRleCAzZjhmMjNj
OGI2MDNiOGJjNmUyNGQwZjc3ZTZjNDdhZmUzMjRmZTkyLi5iNDg2N2E3NDJjNmZkYTJjOTExM2Vl
YTRkM2EyZWYzMTVhZDMzODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcApAQCAt
MTA3LDExICsxMDcsMTQgQEAgcHJpdmF0ZToKIAogdm9pZCBQREZEb2N1bWVudEV2ZW50TGlzdGVu
ZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBFdmVudCYgZXZlbnQpCiB7
Ci0gICAgYXV0byogaWZyYW1lID0gZHluYW1pY0Rvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50Pihl
dmVudC50YXJnZXQoKSk7Ci0gICAgQVNTRVJUKGlmcmFtZSwgIlNob3VsZCBoYXZlIGV2ZW50IHRh
cmdldCIpOwotCi0gICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubG9hZEV2ZW50
KSB7Ci0gICAgICAgIG1fZG9jdW1lbnQtPmluamVjdENvbnRlbnRTY3JpcHQoKmlmcmFtZS0+Y29u
dGVudERvY3VtZW50KCkpOworICAgIGlmIChpczxIVE1MSUZyYW1lRWxlbWVudD4oZXZlbnQudGFy
Z2V0KCkpICYmIGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubG9hZEV2ZW50KSB7CisgICAg
ICAgIGF1dG8qIGlmcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxIVE1MSUZyYW1lRWxlbWVudD4oZXZl
bnQudGFyZ2V0KCkpOworICAgICAgICBBU1NFUlQoaWZyYW1lLCAiU2hvdWxkIGhhdmUgZXZlbnQg
dGFyZ2V0Iik7CisgICAgICAgIG1fZG9jdW1lbnQtPmluamVjdENvbnRlbnRTY3JpcHQoKTsKKyAg
ICB9IGVsc2UgaWYgKGlzPEhUTUxTY3JpcHRFbGVtZW50PihldmVudC50YXJnZXQoKSkgJiYgZXZl
bnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpIHsKKyAgICAgICAgbV9kb2N1bWVu
dC0+c2V0Q29udGVudFNjcmlwdHNMb2FkZWQodHJ1ZSk7CisgICAgICAgIGlmIChtX2RvY3VtZW50
LT5pc0Z1bGx5UGFyc2VkKCkpCisgICAgICAgICAgICBtX2RvY3VtZW50LT5zZW5kUERGQXJyYXlC
dWZmZXIoKTsKICAgICB9CiB9CiAKQEAgLTEzNSw2ICsxMzgsNyBAQCBSZWY8RG9jdW1lbnRQYXJz
ZXI+IFBERkRvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogCiB2b2lkIFBERkRvY3VtZW50OjpjcmVh
dGVEb2N1bWVudFN0cnVjdHVyZSgpCiB7CisgICAgLy8gVGhlIGVtcHR5IGZpbGUgcGFyYW1ldGVy
IHByZXZlbnRzIGRlZmF1bHQgcGRmIGZyb20gbG9hZGluZy4KICAgICBhdXRvIHZpZXdlclVSTCA9
ICJ3ZWJraXQtcGRmanMtdmlld2VyOi8vcGRmanMvd2ViL3ZpZXdlci5odG1sP2ZpbGU9IjsKICAg
ICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoKnRoaXMpOwogICAg
IGFwcGVuZENoaWxkKHJvb3RFbGVtZW50KTsKQEAgLTE0NywzNCArMTUxLDYyIEBAIHZvaWQgUERG
RG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICByb290RWxlbWVudC0+YXBw
ZW5kQ2hpbGQoYm9keSk7CiAKICAgICBhdXRvIGlmcmFtZSA9IEhUTUxJRnJhbWVFbGVtZW50Ojpj
cmVhdGUoSFRNTE5hbWVzOjppZnJhbWVUYWcsICp0aGlzKTsKLSAgICBpZnJhbWUtPnNldEF0dHJp
YnV0ZShzcmNBdHRyLCBtYWtlU3RyaW5nKHZpZXdlclVSTCwgZW5jb2RlV2l0aFVSTEVzY2FwZVNl
cXVlbmNlcyh1cmwoKS5zdHJpbmcoKSkpKTsKKyAgICBpZnJhbWUtPnNldEF0dHJpYnV0ZShzcmNB
dHRyLCBBdG9tU3RyaW5nKHZpZXdlclVSTCkpOwogICAgIGlmcmFtZS0+c2V0QXR0cmlidXRlKHN0
eWxlQXR0ciwgQXRvbVN0cmluZygid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgYm9yZGVyOiAw
OyBkaXNwbGF5OiBibG9jazsiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwog
ICAgIGJvZHktPmFwcGVuZENoaWxkKGlmcmFtZSk7CiAKICAgICBhdXRvIGxpc3RlbmVyID0gUERG
RG9jdW1lbnRFdmVudExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOwogICAgIGlmcmFtZS0+YWRkRXZl
bnRMaXN0ZW5lcigibG9hZCIsIGxpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOwogCi0gICAgbV92
aWV3ZXJSZW5kZXJlZCA9IHRydWU7CisgICAgbV9pZnJhbWUgPSBXVEZNb3ZlKGlmcmFtZSk7Cisg
ICAgbV9saXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpOwogfQogCiB2b2lkIFBERkRvY3VtZW50
Ojp1cGRhdGVEdXJpbmdQYXJzaW5nKCkKIHsKLSAgICBpZiAoIW1fdmlld2VyUmVuZGVyZWQpCisg
ICAgaWYgKCFtX2lmcmFtZSkKICAgICAgICAgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKTsKIH0K
IAogdm9pZCBQREZEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKLSAgICBBU1NFUlQobV92
aWV3ZXJSZW5kZXJlZCk7CisgICAgQVNTRVJUKG1faWZyYW1lKTsKKyAgICBtX2ZpbmlzaGVkUGFy
c2luZyA9IHRydWU7CisgICAgaWYgKG1fY29udGVudFNjcmlwdHNMb2FkZWQpCisgICAgICAgIHNl
bmRQREZBcnJheUJ1ZmZlcigpOwogfQogCi12b2lkIFBERkRvY3VtZW50OjppbmplY3RDb250ZW50
U2NyaXB0KERvY3VtZW50JiBjb250ZW50RG9jdW1lbnQpCit2b2lkIFBERkRvY3VtZW50OjpzZW5k
UERGQXJyYXlCdWZmZXIoKQogewotICAgIEFTU0VSVChjb250ZW50RG9jdW1lbnQuYm9keSgpKTsK
KyAgICB1c2luZyBuYW1lc3BhY2UgSlNDOworCisgICAgYXV0byogZnJhbWUgPSBkb3duY2FzdDxG
cmFtZT4obV9pZnJhbWUtPmNvbnRlbnRXaW5kb3coKS0+ZnJhbWUoKSk7CisgICAgYXV0byBvcGVu
RnVuY3Rpb24gPSBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9u
KCJQREZKU0NvbnRlbnRTY3JpcHQub3BlbiIpLmdldE9iamVjdCgpOworICAgIGF1dG8gZ2xvYmFs
T2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhn
bG9iYWxPYmplY3QtPnZtKCkpOworICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRh
KGdsb2JhbE9iamVjdC0+dm0oKSwgb3BlbkZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoY2FsbERhdGEu
dHlwZSAhPSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmd1bWVudHM7CisgICAgYXV0byBuYXRpdmVCdWZmZXIgPSB0aGlzLT5sb2FkZXIoKS0+
bWFpblJlc291cmNlRGF0YSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworCisgICAgQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSA9IG5hdGl2ZUJ1ZmZlci0+c2hhcmluZ01vZGUo
KTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShnbG9iYWxPYmpl
Y3QtPnZtKCksIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoc2hhcmluZ01vZGUp
LCBXVEZNb3ZlKG5hdGl2ZUJ1ZmZlcikpKTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVy
Zmxvd2VkKCkpOworCisgICAgSlNDOjpjYWxsKGdsb2JhbE9iamVjdCwgb3BlbkZ1bmN0aW9uLCBj
YWxsRGF0YSwgZ2xvYmFsT2JqZWN0LCBhcmd1bWVudHMpOworfQorCit2b2lkIFBERkRvY3VtZW50
OjppbmplY3RDb250ZW50U2NyaXB0KCkKK3sKKyAgICBhdXRvIGNvbnRlbnREb2N1bWVudCA9IG1f
aWZyYW1lLT5jb250ZW50RG9jdW1lbnQoKTsKKyAgICBBU1NFUlQoY29udGVudERvY3VtZW50LT5i
b2R5KCkpOworCisgICAgYXV0byBzY3JpcHQgPSBIVE1MU2NyaXB0RWxlbWVudDo6Y3JlYXRlKHNj
cmlwdFRhZywgKmNvbnRlbnREb2N1bWVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICBzY3JpcHQtPmFk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBtX2xpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCksIGZhbHNl
KTsKIAotICAgIGF1dG8gc2NyaXB0ID0gSFRNTFNjcmlwdEVsZW1lbnQ6OmNyZWF0ZShzY3JpcHRU
YWcsIGNvbnRlbnREb2N1bWVudCwgZmFsc2UsIGZhbHNlKTsKICAgICBzY3JpcHQtPnNldEF0dHJp
YnV0ZShzcmNBdHRyLCAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpzL2V4dHJhcy9jb250ZW50
LXNjcmlwdC5qcyIpOwotICAgIGNvbnRlbnREb2N1bWVudC5ib2R5KCktPmFwcGVuZENoaWxkKHNj
cmlwdCk7CisgICAgY29udGVudERvY3VtZW50LT5ib2R5KCktPmFwcGVuZENoaWxkKHNjcmlwdCk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuaAppbmRleCAyMjU2OTU4YTgyYTQxNmRi
ODg4NGNhYWI5ODBlNzRmOTMyYmI3N2QxLi5jMDAzN2NlZmFiNzFjYjM5MDQ2ZjI0MjllNzQwYmEx
ODFjYzI3OTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5oCkBAIC0yOSw2ICsyOSw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxJRnJhbWVFbGVtZW50OworY2xhc3Mg
UERGRG9jdW1lbnRFdmVudExpc3RlbmVyOwogCiBjbGFzcyBQREZEb2N1bWVudCBmaW5hbCA6IHB1
YmxpYyBIVE1MRG9jdW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUERGRG9jdW1l
bnQpOwpAQCAtNDAsNyArNDEsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVEdXJpbmdQ
YXJzaW5nKCk7CiAgICAgdm9pZCBmaW5pc2hlZFBhcnNpbmcoKTsKLSAgICB2b2lkIGluamVjdENv
bnRlbnRTY3JpcHQoRG9jdW1lbnQmIGNvbnRlbnREb2N1bWVudCk7CisgICAgdm9pZCBpbmplY3RD
b250ZW50U2NyaXB0KCk7CisKKyAgICB2b2lkIHNlbmRQREZBcnJheUJ1ZmZlcigpOworICAgIGJv
b2wgaXNGdWxseVBhcnNlZCgpIHsgcmV0dXJuIG1fZmluaXNoZWRQYXJzaW5nOyB9CisgICAgdm9p
ZCBzZXRDb250ZW50U2NyaXB0c0xvYWRlZChib29sIGxvYWRlZCkgeyBtX2NvbnRlbnRTY3JpcHRz
TG9hZGVkID0gbG9hZGVkOyB9CiAKIHByaXZhdGU6CiAgICAgUERGRG9jdW1lbnQoRnJhbWUmLCBj
b25zdCBVUkwmKTsKQEAgLTQ4LDcgKzUzLDEwIEBAIHByaXZhdGU6CiAgICAgUmVmPERvY3VtZW50
UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY3JlYXRlRG9jdW1l
bnRTdHJ1Y3R1cmUoKTsKLSAgICBib29sIG1fdmlld2VyUmVuZGVyZWQgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9maW5pc2hlZFBhcnNpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9jb250ZW50U2Ny
aXB0c0xvYWRlZCB7IGZhbHNlIH07CisgICAgUmVmUHRyPEhUTUxJRnJhbWVFbGVtZW50PiBtX2lm
cmFtZTsKKyAgICBSZWZQdHI8UERGRG9jdW1lbnRFdmVudExpc3RlbmVyPiBtX2xpc3RlbmVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="commit-queue"
          id="478964"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452040</attachid>
            <date>2022-02-15 09:42:41 -0800</date>
            <delta_ts>2022-02-15 14:08:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236525-20220215094240.patch</filename>
            <type>text/plain</type>
            <size>6922</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Njc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ2MTY5NmQwZWI1ZWY2
NjZiOGZlZmRkMDNjMTNlM2ExOTdjNmVmMi4uM2JhMzZhY2UxNTdkZjgyOWFjZDFmMjdkODhkNGU0
MDk2NzMwZjhhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAyLTExICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBDb2xsZWN0IGJ5dGVzIGR1cmlu
ZyBwYXJzaW5nIGFuZCBwYXNzIGRhdGEgdG8gUERGLmpzIGFzIGEgYmxvYgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTI1CisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzg4ODMyOTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBzdGFydHMgbG9hZGluZyB0aGUgcGRmIGFzIGFuIGFycmF5
IGJ1ZmZlciBhZnRlciBpdCdzIHJlY2lldmVkCisgICAgICAgIGJ5IGNhbGxpbmcgdGhlIFBERkpT
IHZpZXdlcidzIG9wZW4gZnVuY3Rpb24gdGhyb3VnaCB0aGUgY29udGVudCBzY3JpcHQncworICAg
ICAgICB3cmFwcGVyLiBNb3JlIHdvcmsgaXMgbmVlZGVkIHRvIHBvdGVudGlhbGx5IHByZXNlbnQg
dGhlIGRhdGEgYXMgYQorICAgICAgICBQREZEYXRhUmFuZ2VUcmFuc3BvcnQuCisKKyAgICAgICAg
KiBodG1sL1BERkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50RXZl
bnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorCiAyMDIyLTAyLTExICBNZWdhbiBHYXJkbmVyICA8
bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIGdyYW1tYXIgY2hlY2tp
bmcgb24gTWFjIENhdGFseXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
ZGZqcy1leHRyYXMvY29udGVudC1zY3JpcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bk
ZmpzLWV4dHJhcy9jb250ZW50LXNjcmlwdC5qcwppbmRleCBmM2M0NzI3MjVkMzJiZDhmNWE2Mzgw
YzhmZmNmYzc0ODBhNjNkZDQ4Li5mZTQ5ZDA1MzRkYjAxODM0NmI0NDM0NzU1YTIzN2Y3ZmIzY2Q2
MzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BkZmpzLWV4dHJhcy9jb250
ZW50LXNjcmlwdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BkZmpzLWV4dHJhcy9j
b250ZW50LXNjcmlwdC5qcwpAQCAtMzEsNiArMzEsOSBAQCBjb25zdCBQREZKU0NvbnRlbnRTY3Jp
cHQgPSB7CiAgICAgfSwKICAgICBpbml0KCkgewogICAgICAgICB0aGlzLmluamVjdFN0eWxlKCk7
CisgICAgfSwKKyAgICBvcGVuKGRhdGEpIHsKKyAgICAgICAgUERGVmlld2VyQXBwbGljYXRpb24u
b3BlbihkYXRhKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1BERkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCmlu
ZGV4IDNmOGYyM2M4YjYwM2I4YmM2ZTI0ZDBmNzdlNmM0N2FmZTMyNGZlOTIuLmEyNjQ5YjhkYjIw
MDIwZGJiNDI4YWY5MjJhY2RhMTlmYzczNTdlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUERGRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1l
bnQuY3BwCkBAIC0xMDcsMTIgKzEwNywxNCBAQCBwcml2YXRlOgogCiB2b2lkIFBERkRvY3VtZW50
RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV2ZW50
JiBldmVudCkKIHsKLSAgICBhdXRvKiBpZnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8SFRNTElGcmFt
ZUVsZW1lbnQ+KGV2ZW50LnRhcmdldCgpKTsKLSAgICBBU1NFUlQoaWZyYW1lLCAiU2hvdWxkIGhh
dmUgZXZlbnQgdGFyZ2V0Iik7Ci0KLSAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMo
KS5sb2FkRXZlbnQpIHsKLSAgICAgICAgbV9kb2N1bWVudC0+aW5qZWN0Q29udGVudFNjcmlwdCgq
aWZyYW1lLT5jb250ZW50RG9jdW1lbnQoKSk7Ci0gICAgfQorICAgIGlmIChpczxIVE1MSUZyYW1l
RWxlbWVudD4oZXZlbnQudGFyZ2V0KCkpICYmIGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCku
bG9hZEV2ZW50KSB7CisgICAgICAgIG1fZG9jdW1lbnQtPmluamVjdENvbnRlbnRTY3JpcHQoKTsK
KyAgICB9IGVsc2UgaWYgKGlzPEhUTUxTY3JpcHRFbGVtZW50PihldmVudC50YXJnZXQoKSkgJiYg
ZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpIHsKKyAgICAgICAgbV9kb2N1
bWVudC0+c2V0Q29udGVudFNjcmlwdHNMb2FkZWQodHJ1ZSk7CisgICAgICAgIGlmIChtX2RvY3Vt
ZW50LT5pc0Z1bGx5UGFyc2VkKCkpCisgICAgICAgICAgICBtX2RvY3VtZW50LT5zZW5kUERGQXJy
YXlCdWZmZXIoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKIGJvb2wgUERGRG9jdW1lbnRFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50
TGlzdGVuZXImIG90aGVyKSBjb25zdApAQCAtMTM1LDYgKzEzNyw3IEBAIFJlZjxEb2N1bWVudFBh
cnNlcj4gUERGRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiAKIHZvaWQgUERGRG9jdW1lbnQ6OmNy
ZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKIHsKKyAgICAvLyBUaGUgZW1wdHkgZmlsZSBwYXJhbWV0
ZXIgcHJldmVudHMgZGVmYXVsdCBwZGYgZnJvbSBsb2FkaW5nLgogICAgIGF1dG8gdmlld2VyVVJM
ID0gIndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9wZGZqcy93ZWIvdmlld2VyLmh0bWw/ZmlsZT0iOwog
ICAgIGF1dG8gcm9vdEVsZW1lbnQgPSBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAg
ICAgYXBwZW5kQ2hpbGQocm9vdEVsZW1lbnQpOwpAQCAtMTQ3LDM0ICsxNTAsNjIgQEAgdm9pZCBQ
REZEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIHJvb3RFbGVtZW50LT5h
cHBlbmRDaGlsZChib2R5KTsKIAogICAgIGF1dG8gaWZyYW1lID0gSFRNTElGcmFtZUVsZW1lbnQ6
OmNyZWF0ZShIVE1MTmFtZXM6OmlmcmFtZVRhZywgKnRoaXMpOwotICAgIGlmcmFtZS0+c2V0QXR0
cmlidXRlKHNyY0F0dHIsIG1ha2VTdHJpbmcodmlld2VyVVJMLCBlbmNvZGVXaXRoVVJMRXNjYXBl
U2VxdWVuY2VzKHVybCgpLnN0cmluZygpKSkpOworICAgIGlmcmFtZS0+c2V0QXR0cmlidXRlKHNy
Y0F0dHIsIEF0b21TdHJpbmcodmlld2VyVVJMKSk7CiAgICAgaWZyYW1lLT5zZXRBdHRyaWJ1dGUo
c3R5bGVBdHRyLCBBdG9tU3RyaW5nKCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBib3JkZXI6
IDA7IGRpc3BsYXk6IGJsb2NrOyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CiAgICAgYm9keS0+YXBwZW5kQ2hpbGQoaWZyYW1lKTsKIAogICAgIGF1dG8gbGlzdGVuZXIgPSBQ
REZEb2N1bWVudEV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7CiAgICAgaWZyYW1lLT5hZGRF
dmVudExpc3RlbmVyKCJsb2FkIiwgbGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7CiAKLSAgICBt
X3ZpZXdlclJlbmRlcmVkID0gdHJ1ZTsKKyAgICBtX2lmcmFtZSA9IFdURk1vdmUoaWZyYW1lKTsK
KyAgICBtX2xpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lcik7CiB9CiAKIHZvaWQgUERGRG9jdW1l
bnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmcoKQogewotICAgIGlmICghbV92aWV3ZXJSZW5kZXJlZCkK
KyAgICBpZiAoIW1faWZyYW1lKQogICAgICAgICBjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpOwog
fQogCiB2b2lkIFBERkRvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQogewotICAgIEFTU0VSVCht
X3ZpZXdlclJlbmRlcmVkKTsKKyAgICBBU1NFUlQobV9pZnJhbWUpOworICAgIG1fZmluaXNoZWRQ
YXJzaW5nID0gdHJ1ZTsKKyAgICBpZiAobV9jb250ZW50U2NyaXB0c0xvYWRlZCkKKyAgICAgICAg
c2VuZFBERkFycmF5QnVmZmVyKCk7Cit9CisKK3ZvaWQgUERGRG9jdW1lbnQ6OnNlbmRQREZBcnJh
eUJ1ZmZlcigpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKKworICAgIGF1dG8qIGZyYW1l
ID0gZG93bmNhc3Q8RnJhbWU+KG1faWZyYW1lLT5jb250ZW50V2luZG93KCktPmZyYW1lKCkpOwor
ICAgIGF1dG8gb3BlbkZ1bmN0aW9uID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25v
cmluZ0V4Y2VwdGlvbigiUERGSlNDb250ZW50U2NyaXB0Lm9wZW4iKS5nZXRPYmplY3QoKTsKKyAg
ICBhdXRvIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOworCisgICAgSlNMb2Nr
SG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gSlND
OjpnZXRDYWxsRGF0YShnbG9iYWxPYmplY3QtPnZtKCksIG9wZW5GdW5jdGlvbik7CisgICAgQVNT
RVJUKGNhbGxEYXRhLnR5cGUgIT0gSlNDOjpDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CisgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGF1dG8gbmF0aXZlQnVmZmVyID0gbG9h
ZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKworICAg
IEFycmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUgPSBuYXRpdmVCdWZmZXItPnNoYXJp
bmdNb2RlKCk7CisgICAgYXJndW1lbnRzLmFwcGVuZChKU0FycmF5QnVmZmVyOjpjcmVhdGUoZ2xv
YmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKHNoYXJp
bmdNb2RlKSwgV1RGTW92ZShuYXRpdmVCdWZmZXIpKSk7CisgICAgQVNTRVJUKCFhcmd1bWVudHMu
aGFzT3ZlcmZsb3dlZCgpKTsKKworICAgIEpTQzo6Y2FsbChnbG9iYWxPYmplY3QsIG9wZW5GdW5j
dGlvbiwgY2FsbERhdGEsIGdsb2JhbE9iamVjdCwgYXJndW1lbnRzKTsKIH0KIAotdm9pZCBQREZE
b2N1bWVudDo6aW5qZWN0Q29udGVudFNjcmlwdChEb2N1bWVudCYgY29udGVudERvY3VtZW50KQor
dm9pZCBQREZEb2N1bWVudDo6aW5qZWN0Q29udGVudFNjcmlwdCgpCiB7Ci0gICAgQVNTRVJUKGNv
bnRlbnREb2N1bWVudC5ib2R5KCkpOworICAgIGF1dG8gY29udGVudERvY3VtZW50ID0gbV9pZnJh
bWUtPmNvbnRlbnREb2N1bWVudCgpOworICAgIEFTU0VSVChjb250ZW50RG9jdW1lbnQtPmJvZHko
KSk7CisKKyAgICBhdXRvIHNjcmlwdCA9IEhUTUxTY3JpcHRFbGVtZW50OjpjcmVhdGUoc2NyaXB0
VGFnLCAqY29udGVudERvY3VtZW50LCBmYWxzZSwgZmFsc2UpOworICAgIHNjcmlwdC0+YWRkRXZl
bnRMaXN0ZW5lcigibG9hZCIsIG1fbGlzdGVuZXIucmVsZWFzZU5vbk51bGwoKSwgZmFsc2UpOwog
Ci0gICAgYXV0byBzY3JpcHQgPSBIVE1MU2NyaXB0RWxlbWVudDo6Y3JlYXRlKHNjcmlwdFRhZywg
Y29udGVudERvY3VtZW50LCBmYWxzZSwgZmFsc2UpOwogICAgIHNjcmlwdC0+c2V0QXR0cmlidXRl
KHNyY0F0dHIsICJ3ZWJraXQtcGRmanMtdmlld2VyOi8vcGRmanMvZXh0cmFzL2NvbnRlbnQtc2Ny
aXB0LmpzIik7Ci0gICAgY29udGVudERvY3VtZW50LmJvZHkoKS0+YXBwZW5kQ2hpbGQoc2NyaXB0
KTsKKyAgICBjb250ZW50RG9jdW1lbnQtPmJvZHkoKS0+YXBwZW5kQ2hpbGQoc2NyaXB0KTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5oCmluZGV4IDIyNTY5NThhODJhNDE2ZGI4ODg0
Y2FhYjk4MGU3NGY5MzJiYjc3ZDEuLmMwMDM3Y2VmYWI3MWNiMzkwNDZmMjQyOWU3NDBiYTE4MWNj
Mjc5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmgKQEAgLTI5LDYgKzI5LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTElGcmFtZUVsZW1lbnQ7CitjbGFzcyBQREZE
b2N1bWVudEV2ZW50TGlzdGVuZXI7CiAKIGNsYXNzIFBERkRvY3VtZW50IGZpbmFsIDogcHVibGlj
IEhUTUxEb2N1bWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChQREZEb2N1bWVudCk7
CkBAIC00MCw3ICs0MSwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUR1cmluZ1BhcnNp
bmcoKTsKICAgICB2b2lkIGZpbmlzaGVkUGFyc2luZygpOwotICAgIHZvaWQgaW5qZWN0Q29udGVu
dFNjcmlwdChEb2N1bWVudCYgY29udGVudERvY3VtZW50KTsKKyAgICB2b2lkIGluamVjdENvbnRl
bnRTY3JpcHQoKTsKKworICAgIHZvaWQgc2VuZFBERkFycmF5QnVmZmVyKCk7CisgICAgYm9vbCBp
c0Z1bGx5UGFyc2VkKCkgeyByZXR1cm4gbV9maW5pc2hlZFBhcnNpbmc7IH0KKyAgICB2b2lkIHNl
dENvbnRlbnRTY3JpcHRzTG9hZGVkKGJvb2wgbG9hZGVkKSB7IG1fY29udGVudFNjcmlwdHNMb2Fk
ZWQgPSBsb2FkZWQ7IH0KIAogcHJpdmF0ZToKICAgICBQREZEb2N1bWVudChGcmFtZSYsIGNvbnN0
IFVSTCYpOwpAQCAtNDgsNyArNTMsMTAgQEAgcHJpdmF0ZToKICAgICBSZWY8RG9jdW1lbnRQYXJz
ZXI+IGNyZWF0ZVBhcnNlcigpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjcmVhdGVEb2N1bWVudFN0
cnVjdHVyZSgpOwotICAgIGJvb2wgbV92aWV3ZXJSZW5kZXJlZCB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2ZpbmlzaGVkUGFyc2luZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2NvbnRlbnRTY3JpcHRz
TG9hZGVkIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8SFRNTElGcmFtZUVsZW1lbnQ+IG1faWZyYW1l
OworICAgIFJlZlB0cjxQREZEb2N1bWVudEV2ZW50TGlzdGVuZXI+IG1fbGlzdGVuZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452089</attachid>
            <date>2022-02-15 14:08:44 -0800</date>
            <delta_ts>2022-02-17 14:16:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236525-20220215140842.patch</filename>
            <type>text/plain</type>
            <size>7502</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ1YWE2NDg2MTk0OWI2
ZjFmNWQyZjA4OTc5ODExNTYyODlkZWZlMC4uZGMyMDdjMzI0ZjQ5OTMxOWUyZDA1ODNkMzhkMDcz
ODY1OTlmZTMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAyLTExICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBQYXNzIFBERiBhcyBBcnJheUJ1
ZmZlciB0byBwZGZqcyBjb250ZW50IHNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTI1CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg4ODMy
OTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBzdGFydHMgbG9hZGluZyB0aGUgcGRmIGFzIGFuIGFycmF5IGJ1ZmZlciBhZnRlciBp
dCdzIHJlY2lldmVkCisgICAgICAgIGJ5IGNhbGxpbmcgdGhlIFBERkpTIHZpZXdlcidzIG9wZW4g
ZnVuY3Rpb24gdGhyb3VnaCB0aGUgY29udGVudCBzY3JpcHQncworICAgICAgICB3cmFwcGVyLiBN
b3JlIHdvcmsgaXMgbmVlZGVkIHRvIHBvdGVudGlhbGx5IHByZXNlbnQgdGhlIGRhdGEgYXMgYQor
ICAgICAgICBQREZEYXRhUmFuZ2VUcmFuc3BvcnQuCisKKyAgICAgICAgKiBodG1sL1BERkRvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50RXZlbnRMaXN0ZW5lcjo6aGFu
ZGxlRXZlbnQpOgorCiAyMDIyLTAyLTEwICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBp
Z2FsaWEuY29tPgogCiAgICAgICAgIERvIG5vdCB1cGRhdGUgdGhlIGZyYWdtZW50ZWQgZmxvdyBz
dGF0ZSB3aGlsZSBpbnRlcm5hbGx5IG11dGF0aW5nIHRoZSByZW5kZXIgdHJlZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wZGZqcy1leHRyYXMvY29udGVudC1zY3JpcHQuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BkZmpzLWV4dHJhcy9jb250ZW50LXNjcmlwdC5qcwpp
bmRleCBmM2M0NzI3MjVkMzJiZDhmNWE2MzgwYzhmZmNmYzc0ODBhNjNkZDQ4Li5mZTQ5ZDA1MzRk
YjAxODM0NmI0NDM0NzU1YTIzN2Y3ZmIzY2Q2MzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BkZmpzLWV4dHJhcy9jb250ZW50LXNjcmlwdC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BkZmpzLWV4dHJhcy9jb250ZW50LXNjcmlwdC5qcwpAQCAtMzEsNiArMzEs
OSBAQCBjb25zdCBQREZKU0NvbnRlbnRTY3JpcHQgPSB7CiAgICAgfSwKICAgICBpbml0KCkgewog
ICAgICAgICB0aGlzLmluamVjdFN0eWxlKCk7CisgICAgfSwKKyAgICBvcGVuKGRhdGEpIHsKKyAg
ICAgICAgUERGVmlld2VyQXBwbGljYXRpb24ub3BlbihkYXRhKTsKICAgICB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCmluZGV4IDNmOGYyM2M4YjYwM2I4YmM2ZTI0ZDBmNzdl
NmM0N2FmZTMyNGZlOTIuLmFlMzQxMGM2OGI0N2UyYTkxNDdhMDM1MWI1ZmNhMTZhOTQxN2Q4YWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCkBAIC0xMDcsMTIgKzEwNywxNCBAQCBw
cml2YXRlOgogCiB2b2lkIFBERkRvY3VtZW50RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIEV2ZW50JiBldmVudCkKIHsKLSAgICBhdXRvKiBpZnJhbWUg
PSBkeW5hbWljRG93bmNhc3Q8SFRNTElGcmFtZUVsZW1lbnQ+KGV2ZW50LnRhcmdldCgpKTsKLSAg
ICBBU1NFUlQoaWZyYW1lLCAiU2hvdWxkIGhhdmUgZXZlbnQgdGFyZ2V0Iik7Ci0KLSAgICBpZiAo
ZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpIHsKLSAgICAgICAgbV9kb2N1
bWVudC0+aW5qZWN0Q29udGVudFNjcmlwdCgqaWZyYW1lLT5jb250ZW50RG9jdW1lbnQoKSk7Ci0g
ICAgfQorICAgIGlmIChpczxIVE1MSUZyYW1lRWxlbWVudD4oZXZlbnQudGFyZ2V0KCkpICYmIGV2
ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubG9hZEV2ZW50KSB7CisgICAgICAgIG1fZG9jdW1l
bnQtPmluamVjdENvbnRlbnRTY3JpcHQoKTsKKyAgICB9IGVsc2UgaWYgKGlzPEhUTUxTY3JpcHRF
bGVtZW50PihldmVudC50YXJnZXQoKSkgJiYgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5s
b2FkRXZlbnQpIHsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudFNjcmlwdExvYWRlZCh0
cnVlKTsKKyAgICAgICAgaWYgKG1fZG9jdW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nKCkpCisgICAg
ICAgICAgICBtX2RvY3VtZW50LT5zZW5kUERGQXJyYXlCdWZmZXIoKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIGJvb2wgUERGRG9jdW1lbnRFdmVudExp
c3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25zdApAQCAt
MTM1LDYgKzEzNyw3IEBAIFJlZjxEb2N1bWVudFBhcnNlcj4gUERGRG9jdW1lbnQ6OmNyZWF0ZVBh
cnNlcigpCiAKIHZvaWQgUERGRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKIHsK
KyAgICAvLyBUaGUgZW1wdHkgZmlsZSBwYXJhbWV0ZXIgcHJldmVudHMgZGVmYXVsdCBwZGYgZnJv
bSBsb2FkaW5nLgogICAgIGF1dG8gdmlld2VyVVJMID0gIndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9w
ZGZqcy93ZWIvdmlld2VyLmh0bWw/ZmlsZT0iOwogICAgIGF1dG8gcm9vdEVsZW1lbnQgPSBIVE1M
SHRtbEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAgICAgYXBwZW5kQ2hpbGQocm9vdEVsZW1lbnQp
OwpAQCAtMTQ2LDM1ICsxNDksNjggQEAgdm9pZCBQREZEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRT
dHJ1Y3R1cmUoKQogICAgIGJvZHktPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsIEF0b21TdHJpbmco
Im1hcmdpbjogMHB4O2hlaWdodDogMTAwdmg7IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoYm9keSk7CiAKLSAgICBhdXRv
IGlmcmFtZSA9IEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjppZnJhbWVUYWcs
ICp0aGlzKTsKLSAgICBpZnJhbWUtPnNldEF0dHJpYnV0ZShzcmNBdHRyLCBtYWtlU3RyaW5nKHZp
ZXdlclVSTCwgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyh1cmwoKS5zdHJpbmcoKSkpKTsK
LSAgICBpZnJhbWUtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsIEF0b21TdHJpbmcoIndpZHRoOiAx
MDAlOyBoZWlnaHQ6IDEwMCU7IGJvcmRlcjogMDsgZGlzcGxheTogYmxvY2s7IiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBib2R5LT5hcHBlbmRDaGlsZChpZnJhbWUp
OworICAgIG1faWZyYW1lID0gSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6Omlm
cmFtZVRhZywgKnRoaXMpOworICAgIG1faWZyYW1lLT5zZXRBdHRyaWJ1dGUoc3JjQXR0ciwgQXRv
bVN0cmluZyh2aWV3ZXJVUkwpKTsKKyAgICBtX2lmcmFtZS0+c2V0QXR0cmlidXRlKHN0eWxlQXR0
ciwgQXRvbVN0cmluZygid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgYm9yZGVyOiAwOyBkaXNw
bGF5OiBibG9jazsiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogCi0gICAg
YXV0byBsaXN0ZW5lciA9IFBERkRvY3VtZW50RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsK
LSAgICBpZnJhbWUtPmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBsaXN0ZW5lci5jb3B5UmVmKCks
IGZhbHNlKTsKKyAgICBtX2xpc3RlbmVyID0gUERGRG9jdW1lbnRFdmVudExpc3RlbmVyOjpjcmVh
dGUoKnRoaXMpOworICAgIG1faWZyYW1lLT5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgKm1fbGlz
dGVuZXIsIGZhbHNlKTsKIAotICAgIG1fdmlld2VyUmVuZGVyZWQgPSB0cnVlOworICAgIGJvZHkt
PmFwcGVuZENoaWxkKCptX2lmcmFtZSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnQ6OnVwZGF0ZUR1
cmluZ1BhcnNpbmcoKQogewotICAgIGlmICghbV92aWV3ZXJSZW5kZXJlZCkKKyAgICBpZiAoIW1f
aWZyYW1lKQogICAgICAgICBjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpOwogfQogCiB2b2lkIFBE
RkRvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQogewotICAgIEFTU0VSVChtX3ZpZXdlclJlbmRl
cmVkKTsKKyAgICBBU1NFUlQobV9pZnJhbWUpOworICAgIG1faXNGaW5pc2hlZFBhcnNpbmcgPSB0
cnVlOworICAgIGlmIChtX2lzQ29udGVudFNjcmlwdExvYWRlZCkKKyAgICAgICAgc2VuZFBERkFy
cmF5QnVmZmVyKCk7CiB9CiAKLXZvaWQgUERGRG9jdW1lbnQ6OmluamVjdENvbnRlbnRTY3JpcHQo
RG9jdW1lbnQmIGNvbnRlbnREb2N1bWVudCkKK3ZvaWQgUERGRG9jdW1lbnQ6OnNlbmRQREZBcnJh
eUJ1ZmZlcigpCiB7Ci0gICAgQVNTRVJUKGNvbnRlbnREb2N1bWVudC5ib2R5KCkpOworICAgIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CisKKyAgICBhdXRvKiBmcmFtZSA9IG1faWZyYW1lLT5jb250ZW50
RnJhbWUoKTsKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNjY2OCAtIFVzZSBnbG9iYWxPYmplY3QtPmdldAorICAgIGF1dG8gb3BlbkZ1bmN0
aW9uID0gZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbigiUERG
SlNDb250ZW50U2NyaXB0Lm9wZW4iKS5nZXRPYmplY3QoKTsKKworICAgIGF1dG8gZ2xvYmFsT2Jq
ZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisgICAgYXV0byBjYWxsRGF0YSA9
IGdldENhbGxEYXRhKHZtLCBvcGVuRnVuY3Rpb24pOworICAgIEFTU0VSVChjYWxsRGF0YS50eXBl
ICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7CisgICAgYXV0byBuYXRpdmVCdWZmZXIgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0
YSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIGlmIChuYXRpdmVCdWZmZXIgPT0gbnVs
bHB0cikgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUgPSBuYXRpdmVC
dWZmZXItPnNoYXJpbmdNb2RlKCk7CisgICAgYXJndW1lbnRzLmFwcGVuZChKU0FycmF5QnVmZmVy
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoc2hhcmluZ01v
ZGUpLCBXVEZNb3ZlKG5hdGl2ZUJ1ZmZlcikpKTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNP
dmVyZmxvd2VkKCkpOworCisgICAgY2FsbChnbG9iYWxPYmplY3QsIG9wZW5GdW5jdGlvbiwgY2Fs
bERhdGEsIGdsb2JhbE9iamVjdCwgYXJndW1lbnRzKTsKK30KKwordm9pZCBQREZEb2N1bWVudDo6
aW5qZWN0Q29udGVudFNjcmlwdCgpCit7CisgICAgYXV0byBjb250ZW50RG9jdW1lbnQgPSBtX2lm
cmFtZS0+Y29udGVudERvY3VtZW50KCk7CisgICAgQVNTRVJUKGNvbnRlbnREb2N1bWVudC0+Ym9k
eSgpKTsKKworICAgIGF1dG8gc2NyaXB0ID0gSFRNTFNjcmlwdEVsZW1lbnQ6OmNyZWF0ZShzY3Jp
cHRUYWcsICpjb250ZW50RG9jdW1lbnQsIGZhbHNlKTsKKyAgICBzY3JpcHQtPmFkZEV2ZW50TGlz
dGVuZXIoImxvYWQiLCBtX2xpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCksIGZhbHNlKTsKIAotICAg
IGF1dG8gc2NyaXB0ID0gSFRNTFNjcmlwdEVsZW1lbnQ6OmNyZWF0ZShzY3JpcHRUYWcsIGNvbnRl
bnREb2N1bWVudCwgZmFsc2UsIGZhbHNlKTsKICAgICBzY3JpcHQtPnNldEF0dHJpYnV0ZShzcmNB
dHRyLCAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpzL2V4dHJhcy9jb250ZW50LXNjcmlwdC5q
cyIpOwotICAgIGNvbnRlbnREb2N1bWVudC5ib2R5KCktPmFwcGVuZENoaWxkKHNjcmlwdCk7Cisg
ICAgY29udGVudERvY3VtZW50LT5ib2R5KCktPmFwcGVuZENoaWxkKHNjcmlwdCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuaAppbmRleCAyMjU2OTU4YTgyYTQxNmRiODg4NGNhYWI5
ODBlNzRmOTMyYmI3N2QxLi40OTgyZmUzODllZjZhMTFhNGI1ZmExNjMyZWQwZWU1ODk2Yjk0MGFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5oCkBAIC0yOSw2ICsyOSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxJRnJhbWVFbGVtZW50OworY2xhc3MgUERGRG9jdW1l
bnRFdmVudExpc3RlbmVyOwogCiBjbGFzcyBQREZEb2N1bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1M
RG9jdW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUERGRG9jdW1lbnQpOwpAQCAt
NDAsNyArNDEsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVEdXJpbmdQYXJzaW5nKCk7
CiAgICAgdm9pZCBmaW5pc2hlZFBhcnNpbmcoKTsKLSAgICB2b2lkIGluamVjdENvbnRlbnRTY3Jp
cHQoRG9jdW1lbnQmIGNvbnRlbnREb2N1bWVudCk7CisgICAgdm9pZCBpbmplY3RDb250ZW50U2Ny
aXB0KCk7CisKKyAgICB2b2lkIHNlbmRQREZBcnJheUJ1ZmZlcigpOworICAgIGJvb2wgaXNGaW5p
c2hlZFBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzRmluaXNoZWRQYXJzaW5nOyB9CisgICAg
dm9pZCBzZXRDb250ZW50U2NyaXB0TG9hZGVkKGJvb2wgbG9hZGVkKSB7IG1faXNDb250ZW50U2Ny
aXB0TG9hZGVkID0gbG9hZGVkOyB9CiAKIHByaXZhdGU6CiAgICAgUERGRG9jdW1lbnQoRnJhbWUm
LCBjb25zdCBVUkwmKTsKQEAgLTQ4LDcgKzUzLDEwIEBAIHByaXZhdGU6CiAgICAgUmVmPERvY3Vt
ZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUoKTsKLSAgICBib29sIG1fdmlld2VyUmVuZGVyZWQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9pc0ZpbmlzaGVkUGFyc2luZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzQ29u
dGVudFNjcmlwdExvYWRlZCB7IGZhbHNlIH07CisgICAgUmVmUHRyPEhUTUxJRnJhbWVFbGVtZW50
PiBtX2lmcmFtZTsKKyAgICBSZWZQdHI8UERGRG9jdW1lbnRFdmVudExpc3RlbmVyPiBtX2xpc3Rl
bmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452432</attachid>
            <date>2022-02-17 14:16:52 -0800</date>
            <delta_ts>2022-02-17 14:35:51 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236525-20220217141651.patch</filename>
            <type>text/plain</type>
            <size>7956</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQzODQxMjEwYjQ4ZDA1
NzFhY2Y3NmQwODBhYTg0ODcyZDVjYWEyNi4uNDRjZmZkNTVlZjg1NWJlYjI1ZmE0NWNlYmY2ODQ3
OWQ4MDYzZjc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTAyLTE3ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBQREYuanMgdmlld2VyIHNob3Vs
ZCB3b3JrIGZvciBhbGwga2luZHMgb2YgVVJMcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTI1CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg4ODMy
OTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIE5ndXllbi4KKworICAgICAgICBUaGlzIHBh
dGNoIHN0YXJ0cyBsb2FkaW5nIHRoZSBwZGYgYXMgYW4gYXJyYXkgYnVmZmVyIGFmdGVyIGl0J3Mg
cmVjaWV2ZWQKKyAgICAgICAgYnkgY2FsbGluZyB0aGUgUERGSlMgdmlld2VyJ3Mgb3BlbiBmdW5j
dGlvbiB0aHJvdWdoIHRoZSBjb250ZW50IHNjcmlwdCdzCisgICAgICAgIHdyYXBwZXIuIE1vcmUg
d29yayBpcyBuZWVkZWQgdG8gcG90ZW50aWFsbHkgcHJlc2VudCB0aGUgZGF0YSBhcyBhCisgICAg
ICAgIFBERkRhdGFSYW5nZVRyYW5zcG9ydC4KKworICAgICAgICAqIE1vZHVsZXMvcGRmanMtZXh0
cmFzL2NvbnRlbnQtc2NyaXB0LmpzOgorICAgICAgICAoY29uc3QuUERGSlNDb250ZW50U2NyaXB0
LmluaXQpOgorICAgICAgICAoY29uc3QuUERGSlNDb250ZW50U2NyaXB0Lm9wZW4pOgorICAgICAg
ICAqIGh0bWwvUERGRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRF
dmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVu
dDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1l
bnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6
OmZpbmlzaGVkUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudDo6c2VuZFBE
RkFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50OjppbmplY3RDb250
ZW50U2NyaXB0KToKKyAgICAgICAgKiBodG1sL1BERkRvY3VtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQREZEb2N1bWVudEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKwogMjAyMi0wMi0x
NyAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XVtXUEVdIE1ha2UgcHJvcGVyIEFOR0xFIGNvbnRleHQgY29uZmlndXJhdGlvbiBmb3Igc29tZSBv
ZiB0aGUgZXhwZWN0ZWQgZmVhdHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGRmanMtZXh0cmFzL2NvbnRlbnQtc2NyaXB0LmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wZGZqcy1leHRyYXMvY29udGVudC1zY3JpcHQuanMKaW5kZXggZjNjNDcyNzI1ZDMyYmQ4ZjVh
NjM4MGM4ZmZjZmM3NDgwYTYzZGQ0OC4uZmU0OWQwNTM0ZGIwMTgzNDZiNDQzNDc1NWEyMzdmN2Zi
M2NkNjM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wZGZqcy1leHRyYXMv
Y29udGVudC1zY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wZGZqcy1leHRy
YXMvY29udGVudC1zY3JpcHQuanMKQEAgLTMxLDYgKzMxLDkgQEAgY29uc3QgUERGSlNDb250ZW50
U2NyaXB0ID0gewogICAgIH0sCiAgICAgaW5pdCgpIHsKICAgICAgICAgdGhpcy5pbmplY3RTdHls
ZSgpOworICAgIH0sCisgICAgb3BlbihkYXRhKSB7CisgICAgICAgIFBERlZpZXdlckFwcGxpY2F0
aW9uLm9wZW4oZGF0YSk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9QREZEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNw
cAppbmRleCAzZjhmMjNjOGI2MDNiOGJjNmUyNGQwZjc3ZTZjNDdhZmUzMjRmZTkyLi5lNGZiNGI0
OTg3M2U5NjBiN2Q4NjFjODFkZjNkNjE5ZDIxODQwNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1BERkRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRv
Y3VtZW50LmNwcApAQCAtMTA3LDEyICsxMDcsMTQgQEAgcHJpdmF0ZToKIAogdm9pZCBQREZEb2N1
bWVudEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBF
dmVudCYgZXZlbnQpCiB7Ci0gICAgYXV0byogaWZyYW1lID0gZHluYW1pY0Rvd25jYXN0PEhUTUxJ
RnJhbWVFbGVtZW50PihldmVudC50YXJnZXQoKSk7Ci0gICAgQVNTRVJUKGlmcmFtZSwgIlNob3Vs
ZCBoYXZlIGV2ZW50IHRhcmdldCIpOwotCi0gICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubG9hZEV2ZW50KSB7Ci0gICAgICAgIG1fZG9jdW1lbnQtPmluamVjdENvbnRlbnRTY3Jp
cHQoKmlmcmFtZS0+Y29udGVudERvY3VtZW50KCkpOwotICAgIH0KKyAgICBpZiAoaXM8SFRNTElG
cmFtZUVsZW1lbnQ+KGV2ZW50LnRhcmdldCgpKSAmJiBldmVudC50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmxvYWRFdmVudCkgeworICAgICAgICBtX2RvY3VtZW50LT5pbmplY3RDb250ZW50U2NyaXB0
KCk7CisgICAgfSBlbHNlIGlmIChpczxIVE1MU2NyaXB0RWxlbWVudD4oZXZlbnQudGFyZ2V0KCkp
ICYmIGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubG9hZEV2ZW50KSB7CisgICAgICAgIG1f
ZG9jdW1lbnQtPnNldENvbnRlbnRTY3JpcHRMb2FkZWQodHJ1ZSk7CisgICAgICAgIGlmIChtX2Rv
Y3VtZW50LT5pc0ZpbmlzaGVkUGFyc2luZygpKQorICAgICAgICAgICAgbV9kb2N1bWVudC0+c2Vu
ZFBERkFycmF5QnVmZmVyKCk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCiBib29sIFBERkRvY3VtZW50RXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25z
dCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29uc3QKQEAgLTEzNSw2ICsxMzcsNyBAQCBSZWY8RG9j
dW1lbnRQYXJzZXI+IFBERkRvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogCiB2b2lkIFBERkRvY3Vt
ZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiB7CisgICAgLy8gVGhlIGVtcHR5IGZpbGUg
cGFyYW1ldGVyIHByZXZlbnRzIGRlZmF1bHQgcGRmIGZyb20gbG9hZGluZy4KICAgICBhdXRvIHZp
ZXdlclVSTCA9ICJ3ZWJraXQtcGRmanMtdmlld2VyOi8vcGRmanMvd2ViL3ZpZXdlci5odG1sP2Zp
bGU9IjsKICAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoKnRo
aXMpOwogICAgIGFwcGVuZENoaWxkKHJvb3RFbGVtZW50KTsKQEAgLTE0NiwzNSArMTQ5LDY4IEBA
IHZvaWQgUERGRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICBib2R5LT5z
ZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCBBdG9tU3RyaW5nKCJtYXJnaW46IDBweDtoZWlnaHQ6IDEw
MHZoOyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgcm9vdEVsZW1l
bnQtPmFwcGVuZENoaWxkKGJvZHkpOwogCi0gICAgYXV0byBpZnJhbWUgPSBIVE1MSUZyYW1lRWxl
bWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6aWZyYW1lVGFnLCAqdGhpcyk7Ci0gICAgaWZyYW1lLT5z
ZXRBdHRyaWJ1dGUoc3JjQXR0ciwgbWFrZVN0cmluZyh2aWV3ZXJVUkwsIGVuY29kZVdpdGhVUkxF
c2NhcGVTZXF1ZW5jZXModXJsKCkuc3RyaW5nKCkpKSk7Ci0gICAgaWZyYW1lLT5zZXRBdHRyaWJ1
dGUoc3R5bGVBdHRyLCBBdG9tU3RyaW5nKCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBib3Jk
ZXI6IDA7IGRpc3BsYXk6IGJsb2NrOyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7Ci0gICAgYm9keS0+YXBwZW5kQ2hpbGQoaWZyYW1lKTsKKyAgICBtX2lmcmFtZSA9IEhUTUxJ
RnJhbWVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjppZnJhbWVUYWcsICp0aGlzKTsKKyAgICBt
X2lmcmFtZS0+c2V0QXR0cmlidXRlKHNyY0F0dHIsIEF0b21TdHJpbmcodmlld2VyVVJMKSk7Cisg
ICAgbV9pZnJhbWUtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsIEF0b21TdHJpbmcoIndpZHRoOiAx
MDAlOyBoZWlnaHQ6IDEwMCU7IGJvcmRlcjogMDsgZGlzcGxheTogYmxvY2s7IiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAotICAgIGF1dG8gbGlzdGVuZXIgPSBQREZEb2N1
bWVudEV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgaWZyYW1lLT5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgbGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7CisgICAgbV9saXN0ZW5l
ciA9IFBERkRvY3VtZW50RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBtX2lmcmFt
ZS0+YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsICptX2xpc3RlbmVyLCBmYWxzZSk7CiAKLSAgICBt
X3ZpZXdlclJlbmRlcmVkID0gdHJ1ZTsKKyAgICBib2R5LT5hcHBlbmRDaGlsZCgqbV9pZnJhbWUp
OwogfQogCiB2b2lkIFBERkRvY3VtZW50Ojp1cGRhdGVEdXJpbmdQYXJzaW5nKCkKIHsKLSAgICBp
ZiAoIW1fdmlld2VyUmVuZGVyZWQpCisgICAgaWYgKCFtX2lmcmFtZSkKICAgICAgICAgY3JlYXRl
RG9jdW1lbnRTdHJ1Y3R1cmUoKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudDo6ZmluaXNoZWRQYXJz
aW5nKCkKIHsKLSAgICBBU1NFUlQobV92aWV3ZXJSZW5kZXJlZCk7CisgICAgQVNTRVJUKG1faWZy
YW1lKTsKKyAgICBtX2lzRmluaXNoZWRQYXJzaW5nID0gdHJ1ZTsKKyAgICBpZiAobV9pc0NvbnRl
bnRTY3JpcHRMb2FkZWQpCisgICAgICAgIHNlbmRQREZBcnJheUJ1ZmZlcigpOwogfQogCi12b2lk
IFBERkRvY3VtZW50OjppbmplY3RDb250ZW50U2NyaXB0KERvY3VtZW50JiBjb250ZW50RG9jdW1l
bnQpCit2b2lkIFBERkRvY3VtZW50OjpzZW5kUERGQXJyYXlCdWZmZXIoKQogewotICAgIEFTU0VS
VChjb250ZW50RG9jdW1lbnQuYm9keSgpKTsKKyAgICB1c2luZyBuYW1lc3BhY2UgSlNDOworCisg
ICAgYXV0byogZnJhbWUgPSBtX2lmcmFtZS0+Y29udGVudEZyYW1lKCk7CisgICAgLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY2NjggLSBVc2UgcG9z
dE1lc3NhZ2UKKyAgICBhdXRvIG9wZW5GdW5jdGlvbiA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRl
U2NyaXB0SWdub3JpbmdFeGNlcHRpb24oIlBERkpTQ29udGVudFNjcmlwdC5vcGVuIikuZ2V0T2Jq
ZWN0KCk7CisKKyAgICBhdXRvIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwor
ICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOworICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgb3BlbkZ1bmN0aW9u
KTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7Cisg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGF1dG8gYXJyYXlCdWZmZXIg
PSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwor
ICAgIGlmICghYXJyYXlCdWZmZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHNoYXJpbmdNb2RlID0gbmF0aXZlQnVm
ZmVyLT5zaGFyaW5nTW9kZSgpOworICAgIGFyZ3VtZW50cy5hcHBlbmQoSlNBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKHNoYXJpbmdNb2Rl
KSwgV1RGTW92ZShuYXRpdmVCdWZmZXIpKSk7CisgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3Zl
cmZsb3dlZCgpKTsKKworICAgIGNhbGwoZ2xvYmFsT2JqZWN0LCBvcGVuRnVuY3Rpb24sIGNhbGxE
YXRhLCBnbG9iYWxPYmplY3QsIGFyZ3VtZW50cyk7Cit9CisKK3ZvaWQgUERGRG9jdW1lbnQ6Omlu
amVjdENvbnRlbnRTY3JpcHQoKQoreworICAgIGF1dG8gY29udGVudERvY3VtZW50ID0gbV9pZnJh
bWUtPmNvbnRlbnREb2N1bWVudCgpOworICAgIEFTU0VSVChjb250ZW50RG9jdW1lbnQtPmJvZHko
KSk7CisKKyAgICBhdXRvIHNjcmlwdCA9IEhUTUxTY3JpcHRFbGVtZW50OjpjcmVhdGUoc2NyaXB0
VGFnLCAqY29udGVudERvY3VtZW50LCBmYWxzZSk7CisgICAgc2NyaXB0LT5hZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgbV9saXN0ZW5lci5yZWxlYXNlTm9uTnVsbCgpLCBmYWxzZSk7CiAKLSAgICBh
dXRvIHNjcmlwdCA9IEhUTUxTY3JpcHRFbGVtZW50OjpjcmVhdGUoc2NyaXB0VGFnLCBjb250ZW50
RG9jdW1lbnQsIGZhbHNlLCBmYWxzZSk7CiAgICAgc2NyaXB0LT5zZXRBdHRyaWJ1dGUoc3JjQXR0
ciwgIndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9wZGZqcy9leHRyYXMvY29udGVudC1zY3JpcHQuanMi
KTsKLSAgICBjb250ZW50RG9jdW1lbnQuYm9keSgpLT5hcHBlbmRDaGlsZChzY3JpcHQpOworICAg
IGNvbnRlbnREb2N1bWVudC0+Ym9keSgpLT5hcHBlbmRDaGlsZChzY3JpcHQpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1BERkRvY3VtZW50LmgKaW5kZXggMjI1Njk1OGE4MmE0MTZkYjg4ODRjYWFiOTgw
ZTc0ZjkzMmJiNzdkMS4uNDk4MmZlMzg5ZWY2YTExYTRiNWZhMTYzMmVkMGVlNTg5NmI5NDBhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuaApAQCAtMjksNiArMjksNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBIVE1MSUZyYW1lRWxlbWVudDsKK2NsYXNzIFBERkRvY3VtZW50
RXZlbnRMaXN0ZW5lcjsKIAogY2xhc3MgUERGRG9jdW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERv
Y3VtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFBERkRvY3VtZW50KTsKQEAgLTQw
LDcgKzQxLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlRHVyaW5nUGFyc2luZygpOwog
ICAgIHZvaWQgZmluaXNoZWRQYXJzaW5nKCk7Ci0gICAgdm9pZCBpbmplY3RDb250ZW50U2NyaXB0
KERvY3VtZW50JiBjb250ZW50RG9jdW1lbnQpOworICAgIHZvaWQgaW5qZWN0Q29udGVudFNjcmlw
dCgpOworCisgICAgdm9pZCBzZW5kUERGQXJyYXlCdWZmZXIoKTsKKyAgICBib29sIGlzRmluaXNo
ZWRQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZpbmlzaGVkUGFyc2luZzsgfQorICAgIHZv
aWQgc2V0Q29udGVudFNjcmlwdExvYWRlZChib29sIGxvYWRlZCkgeyBtX2lzQ29udGVudFNjcmlw
dExvYWRlZCA9IGxvYWRlZDsgfQogCiBwcml2YXRlOgogICAgIFBERkRvY3VtZW50KEZyYW1lJiwg
Y29uc3QgVVJMJik7CkBAIC00OCw3ICs1MywxMCBAQCBwcml2YXRlOgogICAgIFJlZjxEb2N1bWVu
dFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNyZWF0ZURvY3Vt
ZW50U3RydWN0dXJlKCk7Ci0gICAgYm9vbCBtX3ZpZXdlclJlbmRlcmVkIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faXNGaW5pc2hlZFBhcnNpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0NvbnRl
bnRTY3JpcHRMb2FkZWQgeyBmYWxzZSB9OworICAgIFJlZlB0cjxIVE1MSUZyYW1lRWxlbWVudD4g
bV9pZnJhbWU7CisgICAgUmVmUHRyPFBERkRvY3VtZW50RXZlbnRMaXN0ZW5lcj4gbV9saXN0ZW5l
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="commit-queue"
          id="479459"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452433</attachid>
            <date>2022-02-17 14:24:41 -0800</date>
            <delta_ts>2022-02-17 16:29:19 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236525-20220217142441.patch</filename>
            <type>text/plain</type>
            <size>7954</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQzODQxMjEwYjQ4ZDA1
NzFhY2Y3NmQwODBhYTg0ODcyZDVjYWEyNi4uNDRjZmZkNTVlZjg1NWJlYjI1ZmE0NWNlYmY2ODQ3
OWQ4MDYzZjc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTAyLTE3ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBQREYuanMgdmlld2VyIHNob3Vs
ZCB3b3JrIGZvciBhbGwga2luZHMgb2YgVVJMcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTI1CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg4ODMy
OTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIE5ndXllbi4KKworICAgICAgICBUaGlzIHBh
dGNoIHN0YXJ0cyBsb2FkaW5nIHRoZSBwZGYgYXMgYW4gYXJyYXkgYnVmZmVyIGFmdGVyIGl0J3Mg
cmVjaWV2ZWQKKyAgICAgICAgYnkgY2FsbGluZyB0aGUgUERGSlMgdmlld2VyJ3Mgb3BlbiBmdW5j
dGlvbiB0aHJvdWdoIHRoZSBjb250ZW50IHNjcmlwdCdzCisgICAgICAgIHdyYXBwZXIuIE1vcmUg
d29yayBpcyBuZWVkZWQgdG8gcG90ZW50aWFsbHkgcHJlc2VudCB0aGUgZGF0YSBhcyBhCisgICAg
ICAgIFBERkRhdGFSYW5nZVRyYW5zcG9ydC4KKworICAgICAgICAqIE1vZHVsZXMvcGRmanMtZXh0
cmFzL2NvbnRlbnQtc2NyaXB0LmpzOgorICAgICAgICAoY29uc3QuUERGSlNDb250ZW50U2NyaXB0
LmluaXQpOgorICAgICAgICAoY29uc3QuUERGSlNDb250ZW50U2NyaXB0Lm9wZW4pOgorICAgICAg
ICAqIGh0bWwvUERGRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRF
dmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVu
dDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1l
bnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6
OmZpbmlzaGVkUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudDo6c2VuZFBE
RkFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50OjppbmplY3RDb250
ZW50U2NyaXB0KToKKyAgICAgICAgKiBodG1sL1BERkRvY3VtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQREZEb2N1bWVudEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKwogMjAyMi0wMi0x
NyAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XVtXUEVdIE1ha2UgcHJvcGVyIEFOR0xFIGNvbnRleHQgY29uZmlndXJhdGlvbiBmb3Igc29tZSBv
ZiB0aGUgZXhwZWN0ZWQgZmVhdHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGRmanMtZXh0cmFzL2NvbnRlbnQtc2NyaXB0LmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wZGZqcy1leHRyYXMvY29udGVudC1zY3JpcHQuanMKaW5kZXggZjNjNDcyNzI1ZDMyYmQ4ZjVh
NjM4MGM4ZmZjZmM3NDgwYTYzZGQ0OC4uZmU0OWQwNTM0ZGIwMTgzNDZiNDQzNDc1NWEyMzdmN2Zi
M2NkNjM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wZGZqcy1leHRyYXMv
Y29udGVudC1zY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wZGZqcy1leHRy
YXMvY29udGVudC1zY3JpcHQuanMKQEAgLTMxLDYgKzMxLDkgQEAgY29uc3QgUERGSlNDb250ZW50
U2NyaXB0ID0gewogICAgIH0sCiAgICAgaW5pdCgpIHsKICAgICAgICAgdGhpcy5pbmplY3RTdHls
ZSgpOworICAgIH0sCisgICAgb3BlbihkYXRhKSB7CisgICAgICAgIFBERlZpZXdlckFwcGxpY2F0
aW9uLm9wZW4oZGF0YSk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9QREZEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNw
cAppbmRleCAzZjhmMjNjOGI2MDNiOGJjNmUyNGQwZjc3ZTZjNDdhZmUzMjRmZTkyLi41MDkyMDEz
Mzc3MjgxZWViNTgwNDA5NjRmNzhkZmYyY2ViOWFkNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1BERkRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRv
Y3VtZW50LmNwcApAQCAtMTA3LDEyICsxMDcsMTQgQEAgcHJpdmF0ZToKIAogdm9pZCBQREZEb2N1
bWVudEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBF
dmVudCYgZXZlbnQpCiB7Ci0gICAgYXV0byogaWZyYW1lID0gZHluYW1pY0Rvd25jYXN0PEhUTUxJ
RnJhbWVFbGVtZW50PihldmVudC50YXJnZXQoKSk7Ci0gICAgQVNTRVJUKGlmcmFtZSwgIlNob3Vs
ZCBoYXZlIGV2ZW50IHRhcmdldCIpOwotCi0gICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubG9hZEV2ZW50KSB7Ci0gICAgICAgIG1fZG9jdW1lbnQtPmluamVjdENvbnRlbnRTY3Jp
cHQoKmlmcmFtZS0+Y29udGVudERvY3VtZW50KCkpOwotICAgIH0KKyAgICBpZiAoaXM8SFRNTElG
cmFtZUVsZW1lbnQ+KGV2ZW50LnRhcmdldCgpKSAmJiBldmVudC50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmxvYWRFdmVudCkgeworICAgICAgICBtX2RvY3VtZW50LT5pbmplY3RDb250ZW50U2NyaXB0
KCk7CisgICAgfSBlbHNlIGlmIChpczxIVE1MU2NyaXB0RWxlbWVudD4oZXZlbnQudGFyZ2V0KCkp
ICYmIGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubG9hZEV2ZW50KSB7CisgICAgICAgIG1f
ZG9jdW1lbnQtPnNldENvbnRlbnRTY3JpcHRMb2FkZWQodHJ1ZSk7CisgICAgICAgIGlmIChtX2Rv
Y3VtZW50LT5pc0ZpbmlzaGVkUGFyc2luZygpKQorICAgICAgICAgICAgbV9kb2N1bWVudC0+c2Vu
ZFBERkFycmF5QnVmZmVyKCk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCiBib29sIFBERkRvY3VtZW50RXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25z
dCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29uc3QKQEAgLTEzNSw2ICsxMzcsNyBAQCBSZWY8RG9j
dW1lbnRQYXJzZXI+IFBERkRvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogCiB2b2lkIFBERkRvY3Vt
ZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiB7CisgICAgLy8gVGhlIGVtcHR5IGZpbGUg
cGFyYW1ldGVyIHByZXZlbnRzIGRlZmF1bHQgcGRmIGZyb20gbG9hZGluZy4KICAgICBhdXRvIHZp
ZXdlclVSTCA9ICJ3ZWJraXQtcGRmanMtdmlld2VyOi8vcGRmanMvd2ViL3ZpZXdlci5odG1sP2Zp
bGU9IjsKICAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoKnRo
aXMpOwogICAgIGFwcGVuZENoaWxkKHJvb3RFbGVtZW50KTsKQEAgLTE0NiwzNSArMTQ5LDY4IEBA
IHZvaWQgUERGRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICBib2R5LT5z
ZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCBBdG9tU3RyaW5nKCJtYXJnaW46IDBweDtoZWlnaHQ6IDEw
MHZoOyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgcm9vdEVsZW1l
bnQtPmFwcGVuZENoaWxkKGJvZHkpOwogCi0gICAgYXV0byBpZnJhbWUgPSBIVE1MSUZyYW1lRWxl
bWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6aWZyYW1lVGFnLCAqdGhpcyk7Ci0gICAgaWZyYW1lLT5z
ZXRBdHRyaWJ1dGUoc3JjQXR0ciwgbWFrZVN0cmluZyh2aWV3ZXJVUkwsIGVuY29kZVdpdGhVUkxF
c2NhcGVTZXF1ZW5jZXModXJsKCkuc3RyaW5nKCkpKSk7Ci0gICAgaWZyYW1lLT5zZXRBdHRyaWJ1
dGUoc3R5bGVBdHRyLCBBdG9tU3RyaW5nKCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBib3Jk
ZXI6IDA7IGRpc3BsYXk6IGJsb2NrOyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7Ci0gICAgYm9keS0+YXBwZW5kQ2hpbGQoaWZyYW1lKTsKKyAgICBtX2lmcmFtZSA9IEhUTUxJ
RnJhbWVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjppZnJhbWVUYWcsICp0aGlzKTsKKyAgICBt
X2lmcmFtZS0+c2V0QXR0cmlidXRlKHNyY0F0dHIsIEF0b21TdHJpbmcodmlld2VyVVJMKSk7Cisg
ICAgbV9pZnJhbWUtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsIEF0b21TdHJpbmcoIndpZHRoOiAx
MDAlOyBoZWlnaHQ6IDEwMCU7IGJvcmRlcjogMDsgZGlzcGxheTogYmxvY2s7IiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAotICAgIGF1dG8gbGlzdGVuZXIgPSBQREZEb2N1
bWVudEV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgaWZyYW1lLT5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgbGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7CisgICAgbV9saXN0ZW5l
ciA9IFBERkRvY3VtZW50RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBtX2lmcmFt
ZS0+YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsICptX2xpc3RlbmVyLCBmYWxzZSk7CiAKLSAgICBt
X3ZpZXdlclJlbmRlcmVkID0gdHJ1ZTsKKyAgICBib2R5LT5hcHBlbmRDaGlsZCgqbV9pZnJhbWUp
OwogfQogCiB2b2lkIFBERkRvY3VtZW50Ojp1cGRhdGVEdXJpbmdQYXJzaW5nKCkKIHsKLSAgICBp
ZiAoIW1fdmlld2VyUmVuZGVyZWQpCisgICAgaWYgKCFtX2lmcmFtZSkKICAgICAgICAgY3JlYXRl
RG9jdW1lbnRTdHJ1Y3R1cmUoKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudDo6ZmluaXNoZWRQYXJz
aW5nKCkKIHsKLSAgICBBU1NFUlQobV92aWV3ZXJSZW5kZXJlZCk7CisgICAgQVNTRVJUKG1faWZy
YW1lKTsKKyAgICBtX2lzRmluaXNoZWRQYXJzaW5nID0gdHJ1ZTsKKyAgICBpZiAobV9pc0NvbnRl
bnRTY3JpcHRMb2FkZWQpCisgICAgICAgIHNlbmRQREZBcnJheUJ1ZmZlcigpOwogfQogCi12b2lk
IFBERkRvY3VtZW50OjppbmplY3RDb250ZW50U2NyaXB0KERvY3VtZW50JiBjb250ZW50RG9jdW1l
bnQpCit2b2lkIFBERkRvY3VtZW50OjpzZW5kUERGQXJyYXlCdWZmZXIoKQogewotICAgIEFTU0VS
VChjb250ZW50RG9jdW1lbnQuYm9keSgpKTsKKyAgICB1c2luZyBuYW1lc3BhY2UgSlNDOworCisg
ICAgYXV0byogZnJhbWUgPSBtX2lmcmFtZS0+Y29udGVudEZyYW1lKCk7CisgICAgLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY2NjggLSBVc2UgcG9z
dE1lc3NhZ2UKKyAgICBhdXRvIG9wZW5GdW5jdGlvbiA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRl
U2NyaXB0SWdub3JpbmdFeGNlcHRpb24oIlBERkpTQ29udGVudFNjcmlwdC5vcGVuIikuZ2V0T2Jq
ZWN0KCk7CisKKyAgICBhdXRvIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwor
ICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOworICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgb3BlbkZ1bmN0aW9u
KTsKKyAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7Cisg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGF1dG8gYXJyYXlCdWZmZXIg
PSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwor
ICAgIGlmICghYXJyYXlCdWZmZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHNoYXJpbmdNb2RlID0gYXJyYXlCdWZm
ZXItPnNoYXJpbmdNb2RlKCk7CisgICAgYXJndW1lbnRzLmFwcGVuZChKU0FycmF5QnVmZmVyOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoc2hhcmluZ01vZGUp
LCBXVEZNb3ZlKGFycmF5QnVmZmVyKSkpOworICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJm
bG93ZWQoKSk7CisKKyAgICBjYWxsKGdsb2JhbE9iamVjdCwgb3BlbkZ1bmN0aW9uLCBjYWxsRGF0
YSwgZ2xvYmFsT2JqZWN0LCBhcmd1bWVudHMpOworfQorCit2b2lkIFBERkRvY3VtZW50Ojppbmpl
Y3RDb250ZW50U2NyaXB0KCkKK3sKKyAgICBhdXRvIGNvbnRlbnREb2N1bWVudCA9IG1faWZyYW1l
LT5jb250ZW50RG9jdW1lbnQoKTsKKyAgICBBU1NFUlQoY29udGVudERvY3VtZW50LT5ib2R5KCkp
OworCisgICAgYXV0byBzY3JpcHQgPSBIVE1MU2NyaXB0RWxlbWVudDo6Y3JlYXRlKHNjcmlwdFRh
ZywgKmNvbnRlbnREb2N1bWVudCwgZmFsc2UpOworICAgIHNjcmlwdC0+YWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIG1fbGlzdGVuZXIucmVsZWFzZU5vbk51bGwoKSwgZmFsc2UpOwogCi0gICAgYXV0
byBzY3JpcHQgPSBIVE1MU2NyaXB0RWxlbWVudDo6Y3JlYXRlKHNjcmlwdFRhZywgY29udGVudERv
Y3VtZW50LCBmYWxzZSwgZmFsc2UpOwogICAgIHNjcmlwdC0+c2V0QXR0cmlidXRlKHNyY0F0dHIs
ICJ3ZWJraXQtcGRmanMtdmlld2VyOi8vcGRmanMvZXh0cmFzL2NvbnRlbnQtc2NyaXB0LmpzIik7
Ci0gICAgY29udGVudERvY3VtZW50LmJvZHkoKS0+YXBwZW5kQ2hpbGQoc2NyaXB0KTsKKyAgICBj
b250ZW50RG9jdW1lbnQtPmJvZHkoKS0+YXBwZW5kQ2hpbGQoc2NyaXB0KTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9QREZEb2N1bWVudC5oCmluZGV4IDIyNTY5NThhODJhNDE2ZGI4ODg0Y2FhYjk4MGU3
NGY5MzJiYjc3ZDEuLjQ5ODJmZTM4OWVmNmExMWE0YjVmYTE2MzJlZDBlZTU4OTZiOTQwYWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmgKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSFRNTElGcmFtZUVsZW1lbnQ7CitjbGFzcyBQREZEb2N1bWVudEV2
ZW50TGlzdGVuZXI7CiAKIGNsYXNzIFBERkRvY3VtZW50IGZpbmFsIDogcHVibGljIEhUTUxEb2N1
bWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChQREZEb2N1bWVudCk7CkBAIC00MCw3
ICs0MSwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUR1cmluZ1BhcnNpbmcoKTsKICAg
ICB2b2lkIGZpbmlzaGVkUGFyc2luZygpOwotICAgIHZvaWQgaW5qZWN0Q29udGVudFNjcmlwdChE
b2N1bWVudCYgY29udGVudERvY3VtZW50KTsKKyAgICB2b2lkIGluamVjdENvbnRlbnRTY3JpcHQo
KTsKKworICAgIHZvaWQgc2VuZFBERkFycmF5QnVmZmVyKCk7CisgICAgYm9vbCBpc0ZpbmlzaGVk
UGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1faXNGaW5pc2hlZFBhcnNpbmc7IH0KKyAgICB2b2lk
IHNldENvbnRlbnRTY3JpcHRMb2FkZWQoYm9vbCBsb2FkZWQpIHsgbV9pc0NvbnRlbnRTY3JpcHRM
b2FkZWQgPSBsb2FkZWQ7IH0KIAogcHJpdmF0ZToKICAgICBQREZEb2N1bWVudChGcmFtZSYsIGNv
bnN0IFVSTCYpOwpAQCAtNDgsNyArNTMsMTAgQEAgcHJpdmF0ZToKICAgICBSZWY8RG9jdW1lbnRQ
YXJzZXI+IGNyZWF0ZVBhcnNlcigpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjcmVhdGVEb2N1bWVu
dFN0cnVjdHVyZSgpOwotICAgIGJvb2wgbV92aWV3ZXJSZW5kZXJlZCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2lzRmluaXNoZWRQYXJzaW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNDb250ZW50
U2NyaXB0TG9hZGVkIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8SFRNTElGcmFtZUVsZW1lbnQ+IG1f
aWZyYW1lOworICAgIFJlZlB0cjxQREZEb2N1bWVudEV2ZW50TGlzdGVuZXI+IG1fbGlzdGVuZXI7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>