<?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>145185</bug_id>
          
          <creation_ts>2015-05-19 14:31:38 -0700</creation_ts>
          <short_desc>[iOS] When viewing an MJPEG as the main resource, only the first frame paints</short_desc>
          <delta_ts>2015-05-28 00:34:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>iOS 8.2</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://lwsnb158-cam.cs.purdue.edu/axis-cgi/mjpg/video.cgi</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Honeycutt">jhoneycutt</reporter>
          <assigned_to name="Jon Honeycutt">jhoneycutt</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1096049</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2015-05-19 14:31:38 -0700</bug_when>
    <thetext>MJPEG streams (e.g. from internet cameras) when viewed as the main resource only paint the first frame, then stop painting although the site continues to appear to be loading data.

&lt;rdar://problem/20124694&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096057</commentid>
    <comment_count>1</comment_count>
      <attachid>253403</attachid>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2015-05-19 14:46:18 -0700</bug_when>
    <thetext>Created attachment 253403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096128</commentid>
    <comment_count>2</comment_count>
      <attachid>253403</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-19 18:53:27 -0700</bug_when>
    <thetext>Comment on attachment 253403
Patch

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

Hard to review without a description of what the change is trying to do.

&gt; Source/WebCore/ChangeLog:11
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * loader/DocumentLoader.cpp:

Please summarize the fix here.

&gt; Source/WebKit2/ChangeLog:11
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

And here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096322</commentid>
    <comment_count>3</comment_count>
      <attachid>253458</attachid>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2015-05-20 12:51:17 -0700</bug_when>
    <thetext>Created attachment 253458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097348</commentid>
    <comment_count>4</comment_count>
      <attachid>253458</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-26 11:17:30 -0700</bug_when>
    <thetext>Comment on attachment 253458
Patch

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

Everything here is iOS-only, but the bug title doesn’t have [iOS] and it should!

&gt; Source/WebCore/loader/FrameLoaderClient.h:203
&gt; +        virtual void willReplaceMultipartContent() = 0;
&gt; +        virtual void didReplaceMultipartContent() = 0;

Broke Windows build:

..\..\win\WebFrame.cpp(1053): error C2259: &apos;WebFrameLoaderClient&apos; : cannot instantiate abstract class [C:\cygwin\home\buildbot\WebKit\Source\WebKit\WebKit.vcxproj\WebKit\WebKit.vcxproj]
          due to following members:
          &apos;void WebCore::FrameLoaderClient::willReplaceMultipartContent(void)&apos; : is abstract
          C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Include\WebCore/FrameLoaderClient.h(202) : see declaration of &apos;WebCore::FrameLoaderClient::willReplaceMultipartContent&apos;
          &apos;void WebCore::FrameLoaderClient::didReplaceMultipartContent(void)&apos; : is abstract
          C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Include\WebCore/FrameLoaderClient.h(203) : see declaration of &apos;WebCore::FrameLoaderClient::didReplaceMultipartContent&apos;

&gt; Source/WebCore/page/FrameView.cpp:419
&gt; +    // Re-enable tile updates that were disabled in clear().
&gt; +    if (LegacyTileCache* tileCache = legacyTileCache())
&gt; +        tileCache-&gt;setTilingMode(LegacyTileCache::Normal);

I worry about this code running for subframes.

&gt; Source/WebCore/page/FrameView.h:349
&gt; +#if PLATFORM(IOS)
&gt; +    WEBCORE_EXPORT void didReplaceMultipartContent();
&gt; +#endif

Sad to be adding this. Not forward looking to have the existing hack be so platform-specific and to live in FrameView but also be spread across WebCore and WebKit.

&gt; Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:1005
&gt; +    if (FrameView *view = core(m_webFrame.get())-&gt;view())

Do we have a guarantee that m_webFrame is non-null?

Is it possible that view() will return null but the FrameView is still around, just not pointed to by this frame?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4583
&gt; +    // Restore the previous exposed content rect so that it remains fixed when replacing content
&gt; +    // from multipart/x-mixed-replace streams.
&gt; +    m_drawingArea-&gt;setExposedContentRect(m_previousExposedContentRect);

Are these always guaranteed to come in pairs without anything else happening in between?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:257
&gt; +    void willReplaceMultipartContent(WebFrame*);
&gt; +    void didReplaceMultipartContent(WebFrame*);

Should take WebFrame&amp;, not WebFrame*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097552</commentid>
    <comment_count>5</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2015-05-26 17:22:22 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 253458 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=253458&amp;action=review
&gt; 
&gt; Everything here is iOS-only, but the bug title doesn’t have [iOS] and it
&gt; should!
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoaderClient.h:203
&gt; &gt; +        virtual void willReplaceMultipartContent() = 0;
&gt; &gt; +        virtual void didReplaceMultipartContent() = 0;
&gt; 
&gt; Broke Windows build:
&gt; 

Fixed.


&gt; &gt; Source/WebCore/page/FrameView.cpp:419
&gt; &gt; +    // Re-enable tile updates that were disabled in clear().
&gt; &gt; +    if (LegacyTileCache* tileCache = legacyTileCache())
&gt; &gt; +        tileCache-&gt;setTilingMode(LegacyTileCache::Normal);
&gt; 
&gt; I worry about this code running for subframes.
&gt; 
&gt; &gt; Source/WebCore/page/FrameView.h:349
&gt; &gt; +#if PLATFORM(IOS)
&gt; &gt; +    WEBCORE_EXPORT void didReplaceMultipartContent();
&gt; &gt; +#endif
&gt; 
&gt; Sad to be adding this. Not forward looking to have the existing hack be so
&gt; platform-specific and to live in FrameView but also be spread across WebCore
&gt; and WebKit.
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:1005
&gt; &gt; +    if (FrameView *view = core(m_webFrame.get())-&gt;view())
&gt; 
&gt; Do we have a guarantee that m_webFrame is non-null?
&gt; 
&gt; Is it possible that view() will return null but the FrameView is still
&gt; around, just not pointed to by this frame?
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4583
&gt; &gt; +    // Restore the previous exposed content rect so that it remains fixed when replacing content
&gt; &gt; +    // from multipart/x-mixed-replace streams.
&gt; &gt; +    m_drawingArea-&gt;setExposedContentRect(m_previousExposedContentRect);
&gt; 
&gt; Are these always guaranteed to come in pairs without anything else happening
&gt; in between?
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:257
&gt; &gt; +    void willReplaceMultipartContent(WebFrame*);
&gt; &gt; +    void didReplaceMultipartContent(WebFrame*);
&gt; 
&gt; Should take WebFrame&amp;, not WebFrame*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097717</commentid>
    <comment_count>6</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2015-05-27 14:29:48 -0700</bug_when>
    <thetext>Whoops, hit enter too soon.


(In reply to comment #4)
&gt; Comment on attachment 253458 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=253458&amp;action=review
&gt; 
&gt; Everything here is iOS-only, but the bug title doesn’t have [iOS] and it
&gt; should!

Fixed.

&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoaderClient.h:203
&gt; &gt; +        virtual void willReplaceMultipartContent() = 0;
&gt; &gt; +        virtual void didReplaceMultipartContent() = 0;
&gt; 
&gt; Broke Windows build:

Fixed.

&gt; 
&gt; &gt; Source/WebCore/page/FrameView.cpp:419
&gt; &gt; +    // Re-enable tile updates that were disabled in clear().
&gt; &gt; +    if (LegacyTileCache* tileCache = legacyTileCache())
&gt; &gt; +        tileCache-&gt;setTilingMode(LegacyTileCache::Normal);
&gt; 
&gt; I worry about this code running for subframes.

legacyTileCache() returns null for subframes. It has a comment saying that this is so callers don&apos;t need to check whether this is the main frame, so I don&apos;t expect this to change without all call sites being updated.

&gt; 
&gt; &gt; Source/WebCore/page/FrameView.h:349
&gt; &gt; +#if PLATFORM(IOS)
&gt; &gt; +    WEBCORE_EXPORT void didReplaceMultipartContent();
&gt; &gt; +#endif
&gt; 
&gt; Sad to be adding this. Not forward looking to have the existing hack be so
&gt; platform-specific and to live in FrameView but also be spread across WebCore
&gt; and WebKit.

Yes, it&apos;s a shame that this exists in WebCore. I&apos;ll look into whether we can move this to WebKit.

&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:1005
&gt; &gt; +    if (FrameView *view = core(m_webFrame.get())-&gt;view())
&gt; 
&gt; Do we have a guarantee that m_webFrame is non-null?

Yes, according to Brady, m_webFrame should never be null.

&gt; 
&gt; Is it possible that view() will return null but the FrameView is still
&gt; around, just not pointed to by this frame?

I&apos;m not sure. I believe that a DocumentLoader will be detached from its frame before a frame is detached from its view, and this point won&apos;t be reached when no FrameView exists. Are you concerned that there may be a lingering FrameView whose tile cache remains disabled because no Frame points to it? If the Frame detached its FrameView while the cache was disabled, there shouldn&apos;t be anything to paint, because the FrameView was cleared.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4583
&gt; &gt; +    // Restore the previous exposed content rect so that it remains fixed when replacing content
&gt; &gt; +    // from multipart/x-mixed-replace streams.
&gt; &gt; +    m_drawingArea-&gt;setExposedContentRect(m_previousExposedContentRect);
&gt; 
&gt; Are these always guaranteed to come in pairs without anything else happening
&gt; in between?

Yes, these are both called below didReceiveResponse.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:257
&gt; &gt; +    void willReplaceMultipartContent(WebFrame*);
&gt; &gt; +    void didReplaceMultipartContent(WebFrame*);
&gt; 
&gt; Should take WebFrame&amp;, not WebFrame*.

Fixed.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097861</commentid>
    <comment_count>7</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2015-05-28 00:34:37 -0700</bug_when>
    <thetext>Committed r184947: &lt;http://trac.webkit.org/changeset/184947&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253403</attachid>
            <date>2015-05-19 14:46:18 -0700</date>
            <delta_ts>2015-05-20 12:51:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145185-20150519144615.patch</filename>
            <type>text/plain</type>
            <size>15343</size>
            <attacher name="Jon Honeycutt">jhoneycutt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNkZGNhZjhmZjUyZmJj
Y2ZhMDhlNTFkOTg3ODQ0MWRiODQxMzQ2NC4uMWViZTcyY2ZlMWRkZGUwYmIyMzkzNDMzMTM2MTM0
NDU3ZTM5YmNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA1LTE5ICBKb24g
SG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CisKKyAgICAgICAgV2hlbiB2aWV3aW5n
IGFuIE1KUEVHIHN0cmVhbSBhcyB0aGUgbWFpbiByZXNvdXJjZSwgb25seSB0aGUgZmlyc3QgZnJh
bWUKKyAgICAgICAgcGFpbnRzCisKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDUxODU+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDEyNDY5ND4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
Y29tbWl0TG9hZCk6CisgICAgICAgIElmIHJlcGxhY2luZyBjb250ZW50IGluIGEgbXVsdGlwYXJ0
L3gtbWl4ZWQtcmVwbGFjZSBzdHJlYW0sIGNhbGwgdGhlCisgICAgICAgIFdlYkZyYW1lTG9hZGVy
Q2xpZW50J3MgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKS4KKworICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OnNldHVwRm9yUmVwbGFjZSk6CisgICAgICAgIENhbGwgdGhlIFdl
YkZyYW1lTG9hZGVyQ2xpZW50J3Mgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkuCisKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaDoKKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICBSZS1lbmFibGUgdGlsZSBjYWNoZSB1cGRhdGVzIHRoYXQgd2VyZSBkaXNhYmxlZCBpbiBGcmFt
ZVZpZXc6OmNsZWFyKCkuCisgICAgICAgIFRoaXMgZml4ZXMgdGhlIGlzc3VlIGZvciBXSzEuCisK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICBEZWNsYXJlIGFuIGV4cG9ydGVk
IGZ1bmN0aW9uLCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpLCB0aGF0IFdlYktpdAorICAg
ICAgICBjYW4gY2FsbC4KKwogMjAxNS0wNS0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBNYWMgYnVpbGQgZml4IGFmdGVyIHIxODQyMjguCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggODlmMzM4ZDA3ZTM3ZmExYWQ3MzAyNWFkODk2NWI1NGI2MmU1ZjhjMS4uMzRmM2E0
MDhjNGVjNmJjZGIwNDQ5Y2UxNWQxZTEwMGU5ZTdhYzlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDE1LTA1LTE5ICBKb24gSG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBs
ZS5jb20+CisKKyAgICAgICAgV2hlbiB2aWV3aW5nIGFuIE1KUEVHIHN0cmVhbSBhcyB0aGUgbWFp
biByZXNvdXJjZSwgb25seSB0aGUgZmlyc3QgZnJhbWUKKyAgICAgICAgcGFpbnRzCisKKyAgICAg
ICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDUxODU+CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8yMDEyNDY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29u
dGVudCk6CisgICAgICAgIENhbGwgdGhlIEZyYW1lVmlldydzIGRpZFJlcGxhY2VNdWx0aXBhcnRD
b250ZW50KCkuCisKIDIwMTUtMDUtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgVHVybiBhbnRpYWxpYXNlZCBmb250IGRpbGF0aW9uIG9mZiBieSBk
ZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTMwNGM4NzViOTNkOWU4NDE1NGY3ZWIzODJiYzQxOTg3OWFj
MmEwNy4uODNjNzM1YWFiZDAyMzVjNmFkODFjMTk5ZmViYTZmOTc3MzUyNGNmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTA1LTE5ICBKb24gSG9uZXljdXR0ICA8amhvbmV5Y3V0
dEBhcHBsZS5jb20+CisKKyAgICAgICAgV2hlbiB2aWV3aW5nIGFuIE1KUEVHIHN0cmVhbSBhcyB0
aGUgbWFpbiByZXNvdXJjZSwgb25seSB0aGUgZmlyc3QgZnJhbWUKKyAgICAgICAgcGFpbnRzCisK
KyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDUxODU+
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDEyNDY5ND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6d2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgQ2FsbCBXZWJQ
YWdlOjp3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKS4KKworICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICBDYWxsIFdlYlBhZ2U6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Ondp
bGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgIFNhdmUgdGhlIGV4cG9zZWQgY29u
dGVudCByZWN0LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZXBsYWNlTXVsdGlwYXJ0
Q29udGVudCk6CisgICAgICAgIFJlc3RvcmUgdGhlIGV4cG9zZWQgY29udGVudCByZWN0IHRoYXQg
d2FzIHNhdmVkIGJlZm9yZSB0aGlzIGxvYWQuIFRoaXMKKyAgICAgICAgZml4ZWQgdGhlIGlzc3Vl
IGZvciBXSzIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
OjpleHBvc2VkQ29udGVudFJlY3QpOgorCiAyMDE1LTA1LTEyICBKb24gSG9uZXljdXR0ICA8amhv
bmV5Y3V0dEBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiB1c2luZyA8aW5wdXQgdHlw
ZT1maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMjBk
ZWNmODgwNDNkMjFjM2JkOTRkY2RmZTFjOTg0MWZjMDliNTQxZC4uNDlmNmVhZWVjOWM0YmNmZWVl
MzA0ZmEwYWMyZGU2Yjg5YmM4MGQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCkBAIC03NjIsNiArNzYyLDkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0
TG9hZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgICAgICByZXR1cm47CiAjZW5k
aWYKICAgICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuY29tbWl0dGVkTG9hZCh0aGlzLCBkYXRhLCBs
ZW5ndGgpOworCisgICAgaWYgKGlzTXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgpKQorICAgICAgICBm
cmFtZUxvYWRlci0+Y2xpZW50KCkuZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKTsKIH0KIAog
UmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VF
cnJvcigpIGNvbnN0CkBAIC04NzAsNiArODczLDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0
dXBGb3JSZXBsYWNlKCkKIHsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEoKSkKICAgICAgICAg
cmV0dXJuOworCisgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbFJlcGxhY2VNdWx0aXBh
cnRDb250ZW50KCk7CiAgICAgCiAgICAgbWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVu
dCgpOwogICAgIG1heWJlQ3JlYXRlQXJjaGl2ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCmluZGV4IDg3ZDE0YTdmMTcwNjAwY2ZhZDlkZmEyZjJmMzcyY2Y4ZTNmZGEwOTUuLmRk
ZWU0YTYwYWNmZjFhMzc5ZjdhOWY3ZjgyMmVjYmQwNGNkNmIyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKQEAgLTMxNyw2ICszMTcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopIG92ZXJyaWRlIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopIG92ZXJyaWRlIHsg
fQogCisgICAgdmlydHVhbCB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIG92ZXJy
aWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIG92
ZXJyaWRlIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGUgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMTNlMzYyYTM0OTM2ZTJjYmM3YzVj
ZWJlZDQzNGI5NmQzYWUyMWY5Ny4uYWZhYmE2YWYwNGUxYzE2M2FhYWJmZjg5NmFhM2NhZjAyOTZk
MWZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE5
OSw2ICsxOTksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3
aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopID0gMDsKIAorICAgICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9IDA7CisKICAgICAgICAgdmlydHVh
bCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIq
KSA9IDA7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGMzMTI5Y2Nl
MjY0NDVkZGY4NTAyOWVjNTdlZDg0ZGFkZGQ1NTUzMGYuLjIxNDZkYjEwMjQ3MzkxNjI3MDYzZDNm
MjU2YzlmZDkwYzY2NGRlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQxMSw2
ICs0MTEsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OmNsZWFyKCkKICNlbmRpZgogfQogCisjaWYgUExB
VEZPUk0oSU9TKQordm9pZCBGcmFtZVZpZXc6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkK
K3sKKyAgICAvLyBSZS1lbmFibGUgdGlsZSB1cGRhdGVzIHRoYXQgd2VyZSBkaXNhYmxlZCBpbiBj
bGVhcigpLgorICAgIGlmIChMZWdhY3lUaWxlQ2FjaGUqIHRpbGVDYWNoZSA9IGxlZ2FjeVRpbGVD
YWNoZSgpKQorICAgICAgICB0aWxlQ2FjaGUtPnNldFRpbGluZ01vZGUoTGVnYWN5VGlsZUNhY2hl
OjpOb3JtYWwpOworfQorI2VuZGlmCisKIGJvb2wgRnJhbWVWaWV3OjpkaWRGaXJzdExheW91dCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX2ZpcnN0TGF5b3V0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmgKaW5kZXggNTJmNGU2YjQ0OWY4YjkzYzY4ODI2NDIyYWNkZjBhYmYxNmZjYWY1Zi4uYzhmZTIy
ZjU5NDY3MzZlYTZiYjAwYWIzMDhjNjVkYjA2ZTdiMzc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCkBAIC0zNDQsNiArMzQ0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxQYWludENvbnRl
bnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdT
dGF0ZSYpOwogICAgIHZvaWQgZGlkUGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFBhaW50aW5nU3RhdGUmKTsKIAorI2lmIFBMQVRGT1JNKElP
UykKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCk7
CisjZW5kaWYKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGFpbnRCZWhhdmlvcihQYWlu
dEJlaGF2aW9yKTsKICAgICBXRUJDT1JFX0VYUE9SVCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZp
b3IoKSBjb25zdDsKICAgICBib29sIGlzUGFpbnRpbmcoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmlu
ZGV4IDYyNjhiMDNhMDU3YmRhMzBkYjYwNGU1NTgwMDRkOWU3NjAyZDEwOGIuLmY2Zjk0YTI5Njc0
ZTJhYThkNTk3YzRmMmY5MDg3NjNjNWY3YzhkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTQwLDYg
KzE0MCw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJD
b3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwogCisgICAgdmlydHVh
bCB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIG92ZXJyaWRlIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIG92ZXJyaWRlOworCiAgICAg
dmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBjaGFyKiwgaW50KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5n
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUdsb2JhbEhpc3RvcnkoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggY2U4ZjJk
Nzc5ODlkMDk0NjRlOGMzNzFlYWNjNmYzYzY3MTY5MTYyNS4uZTJmMDQyMDljODhhMmM4YzY5ZTE3
MTIyYzJkMmFmMTMyMjUyOGVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTk5OSw2ICs5OTksMTQg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKICNlbmRpZgogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRS
ZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChG
cmFtZVZpZXcgKnZpZXcgPSBjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT52aWV3KCkpCisgICAgICAg
IHZpZXctPmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCk7CisjZW5kaWYKK30KKwogdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVy
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIE5TRGF0YSAqbnNEYXRhID0g
W1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOmxl
bmd0aCBmcmVlV2hlbkRvbmU6Tk9dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApp
bmRleCAxZjY5OTg5MTJhNTBkZjA2NDA0NWEzOGQyYmEyZDAyZTVmYzRjYjU5Li40ZDY0ZGUwZWM3
NzhkYzIzMDg2NDQ2N2RkNzZlMDhjMzUwODdkYmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtOTEyLDYgKzkxMiwyMiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6d2lsbFJlcGxhY2VNdWx0aXBhcnRDb250
ZW50KCkKK3sKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlm
ICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIHdlYlBhZ2UtPndpbGxSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudChtX2ZyYW1lKTsKK30KKwordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisgICAg
d2ViUGFnZS0+ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQobV9mcmFtZSk7Cit9CisKIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBpZiAoIW1fcGx1Z2luVmll
dykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5YmUyNTVlNjhmMmZmYmE1ZWZk
OGM0Y2MyOGFhMjhiOWZmZjk3YTNiLi40NjY1ZTg0NmM0OTM2OTVhNjJmYmRkYjY1ZjYzNmRhZTdj
Y2UzMWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMjMsNyArMTIzLDEw
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJD
b3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwotICAgIAorCisgICAg
dmlydHVhbCB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIG92ZXJyaWRlOworCiAg
ICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2Fk
aW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDcyNmM1NzQ5
Y2E0MjJiZTEwY2Q2NzBlYmZiY2ZlMDUwMGE5MmI2NTUuLjY4YjliYjhkNjc3NDZlZWEwZDliOGMz
YjQ0MDNiMzVhOWFlN2IyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5oCkBAIC05NCw2ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgYWRkRmVuY2UoY29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCYpIHsgfQogI2VuZGlm
CiAjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGV4cG9z
ZWRDb250ZW50UmVjdCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RXhwb3NlZENv
bnRlbnRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpID0gMDsKICNlbmRpZgogICAgIHZp
cnR1YWwgdm9pZCBtYWluRnJhbWVTY3JvbGxhYmlsaXR5Q2hhbmdlZChib29sKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA0OWRiY2Q5
ZGY1YzYzNThmMDg2ZDdmNWRkYTJkNmM2YTFmYTc3M2E3Li4yNjA0YzMwNjE1NmMzYTI2ZjE5NGNm
MTA4ODczMDBlMDc2NmI4NWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC00NTYyLDYgKzQ1NjIsMjggQEAgdm9pZCBXZWJQYWdlOjpkaWRD
YW5jZWxDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVzdElEKQogICAgIHJlcXVlc3QtPmRpZENh
bmNlbCgpOwogfQogCit2b2lkIFdlYlBhZ2U6OndpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudChX
ZWJGcmFtZSogZnJhbWUpCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICghZnJhbWUtPmlz
TWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJldmlvdXNFeHBvc2VkQ29u
dGVudFJlY3QgPSBtX2RyYXdpbmdBcmVhLT5leHBvc2VkQ29udGVudFJlY3QoKTsKKyNlbmRpZgor
fQorCit2b2lkIFdlYlBhZ2U6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KFdlYkZyYW1lKiBm
cmFtZSkKK3sKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKCFmcmFtZS0+aXNNYWluRnJhbWUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gUmVzdG9yZSB0aGUgcHJldmlvdXMgZXhwb3Nl
ZCBjb250ZW50IHJlY3Qgc28gdGhhdCBpdCByZW1haW5zIGZpeGVkIHdoZW4gcmVwbGFjaW5nIGNv
bnRlbnQKKyAgICAvLyBmcm9tIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2Ugc3RyZWFtcy4KKyAg
ICBtX2RyYXdpbmdBcmVhLT5zZXRFeHBvc2VkQ29udGVudFJlY3QobV9wcmV2aW91c0V4cG9zZWRD
b250ZW50UmVjdCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdl
YkZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lLT5pc01haW5GcmFtZSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYjI1ZmRlMDllNjU3
MGU0ZWIyYmM0ZDgyYmM2MTBiYWYyNzEwOWExYi4uODMyYTQ0YTY0ODIzNTI3NjAyODE1ZmQ2OTM0
ZmE5ZGZkODFmOTJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC0yNTMsNiArMjUzLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkU3RhcnRQYWdl
VHJhbnNpdGlvbigpOwogICAgIHZvaWQgZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbigpOwogICAg
IHZvaWQgZGlkQ29tbWl0TG9hZChXZWJGcmFtZSopOworICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0
aXBhcnRDb250ZW50KFdlYkZyYW1lKik7CisgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29u
dGVudChXZWJGcmFtZSopOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZChXZWJGcmFtZSopOwogICAg
IHZvaWQgc2hvdygpOwogICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikg
Y29uc3Q7CkBAIC0xMzM3LDYgKzEzMzksNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8c3RkOjpw
YWlyPFdlYkNvcmU6OkludFNpemUsIGRvdWJsZT4sIFdlYkNvcmU6OkludFBvaW50PiBtX2R5bmFt
aWNTaXplVXBkYXRlSGlzdG9yeTsKICAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gbV9wZW5kaW5n
U3ludGhldGljQ2xpY2tOb2RlOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9wZW5kaW5nU3lu
dGhldGljQ2xpY2tMb2NhdGlvbjsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9wcmV2aW91c0V4
cG9zZWRDb250ZW50UmVjdDsKICNlbmRpZgogCiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KiBtX2lu
c3BlY3RvckNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAppbmRleCA4
NzBkNWUzZTI0NjViNTRmODU0NDgxZTU4NjhmYmM1YmQwYzFhZmNkLi45NjM3OGZhZTk5ZmJmNzk3
OTZiZWI5ZWE2YTYyNmMwZDU0ODQ4NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5oCkBAIC05Miw2ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vs
ZXJhdGVkQW5pbWF0aW9uRGlkRW5kKHVpbnQ2NF90IGxheWVySUQsIGNvbnN0IFN0cmluZyYga2V5
KSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZs
b2F0UmVjdCBleHBvc2VkQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0RXhwb3NlZENvbnRlbnRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92
ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmlu
ZGV4IDJmZGY4ODY3OTU4ZWUyZTI3Y2U0NzZhNGI4Mjg5YTJkODFmMjRiMWMuLjk4MmFlODU3ZTJl
ODdkNjAyZTMzOWNlNzY2MDc3YTIyMTU0NmUzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbQpAQCAtMjM1LDYgKzIzNSwxNSBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjpzZXRFeHBvc2VkUmVjdChjb25zdCBGbG9hdFJlY3QmIGV4cG9zZWRSZWN0KQog
fQogCiAjaWYgUExBVEZPUk0oSU9TKQorV2ViQ29yZTo6RmxvYXRSZWN0IFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjpleHBvc2VkQ29udGVudFJlY3QoKSBjb25zdAoreworICAgIEZyYW1lVmll
dyogZnJhbWVWaWV3ID0gbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKTsKKyAgICBpZiAoIWZyYW1l
VmlldykKKyAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOworCisgICAgcmV0dXJuIGZyYW1lVmll
dy0+ZXhwb3NlZENvbnRlbnRSZWN0KCk7Cit9CisKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OnNldEV4cG9zZWRDb250ZW50UmVjdChjb25zdCBGbG9hdFJlY3QmIGV4cG9zZWRDb250
ZW50UmVjdCkKIHsKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fd2ViUGFnZS5tYWluRnJh
bWVWaWV3KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253458</attachid>
            <date>2015-05-20 12:51:17 -0700</date>
            <delta_ts>2015-05-26 11:17:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145185-20150520125113.patch</filename>
            <type>text/plain</type>
            <size>16393</size>
            <attacher name="Jon Honeycutt">jhoneycutt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNkZGNhZjhmZjUyZmJj
Y2ZhMDhlNTFkOTg3ODQ0MWRiODQxMzQ2NC4uY2IwOGQ2Mjk4ZTAzNGMyY2Q3YTVhNjMwM2Q0NzUy
ZDU1ZmI1ZGNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE1LTA1LTE5ICBKb24g
SG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CisKKyAgICAgICAgV2hlbiB2aWV3aW5n
IGFuIE1KUEVHIHN0cmVhbSBhcyB0aGUgbWFpbiByZXNvdXJjZSwgb25seSB0aGUgZmlyc3QgZnJh
bWUKKyAgICAgICAgcGFpbnRzCisKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDUxODU+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDEyNDY5ND4K
KworICAgICAgICBUaGlzIGJ1ZyBpcyBjYXVzZWQgYnkgc3RhdGUgbm90IGJlaW5nIHJlc3RvcmVk
IGJldHdlZW4gc3VjY2Vzc2l2ZSBsb2FkcworICAgICAgICBvZiBtdWx0aXBhcnQveC1taXhlZC1y
ZXBsYWNlIGNvbnRlbnQuIEVhY2ggcGFydCBvZiB0aGUgc3RyZWFtIGlzIG5vdAorICAgICAgICB0
cmVhdGVkIGFzIGEgd2hvbGx5IG5ldyBsb2FkLCBzbyBpZiBzdGF0ZSBpcyBjbGVhcmVkIGFzIHBh
cnQgb2YgdGhlCisgICAgICAgIHByZXZpb3VzIHBhZ2UgYmVpbmcgZGVzdHJveWVkLCBpdCBtYXkg
bm90IGJlIHJlc3RvcmVkIHdoZW4gbG9hZGluZworICAgICAgICB0aGUgbmV4dCBzdHJlYW0gcGFy
dC4KKworICAgICAgICBPbiBXSzEsIHRpbGUgY2FjaGUgdXBkYXRlcyBhcmUgZGlzYWJsZWQgaW4g
RnJhbWVWaWV3OjpjbGVhcigpLCB3aGljaCBpcworICAgICAgICBjYWxsZWQgYXMgdGhlIHByZXZp
b3VzIHBhZ2UgaXMgZGVzdHJveWVkLCBidXQgd2VyZSBub3QgYmVpbmcKKyAgICAgICAgcmVlbmFi
bGVkIHdoZW4gbG9hZGluZyBuZXcgcmVwbGFjZW1lbnQgY29udGVudCBmcm9tIHRoZSBzdHJlYW0u
CisKKyAgICAgICAgT24gV0syLCB0aGUgZXhwb3NlZCBjb250ZW50IHJlY3Qgd2FzIGJlaW5nIHJl
c2V0IHRvIGFuIGVtcHR5IHJlY3QgYXMKKyAgICAgICAgdGhlIHByZXZpb3VzIHBhZ2Ugd2FzIGRl
c3Ryb3llZCwgYnV0IGl0IHdhcyBub3QgYmVpbmcgcmVzZXQgYnkgbG9hZGluZworICAgICAgICBy
ZXBsYWNlbWVudCBjb250ZW50LgorCisgICAgICAgIFRvIGZpeCB0aGVzZSBpc3N1ZXMsIEkgYWRk
ZWQgdHdvIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGNhbGxiYWNrczsKKyAgICAgICAgd2lsbFJlcGxh
Y2VNdWx0aXBhcnRDb250ZW50KCkgYW5kIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkuIFRo
ZXNlCisgICAgICAgIGFyZSB1c2VkIHRvIHNhdmUgYW5kIHJlc3RvcmUgc3RhdGUgYmV0d2VlbiBz
dWNjZXNzaXZlIGxvYWRzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgQ2FsbCB0aGUg
bmV3IGNsaWVudCBjYWxsYmFja3MuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
Y29tbWl0TG9hZCk6CisgICAgICAgIElmIHJlcGxhY2luZyBjb250ZW50IGluIGEgbXVsdGlwYXJ0
L3gtbWl4ZWQtcmVwbGFjZSBzdHJlYW0sIGNhbGwgdGhlCisgICAgICAgIFdlYkZyYW1lTG9hZGVy
Q2xpZW50J3MgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKS4KKworICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OnNldHVwRm9yUmVwbGFjZSk6CisgICAgICAgIENhbGwgdGhlIFdl
YkZyYW1lTG9hZGVyQ2xpZW50J3Mgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkuCisKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaDoKKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQpOgorICAgICAg
ICBSZS1lbmFibGUgdGlsZSBjYWNoZSB1cGRhdGVzIHRoYXQgd2VyZSBkaXNhYmxlZCBpbiBGcmFt
ZVZpZXc6OmNsZWFyKCkuCisgICAgICAgIFRoaXMgZml4ZXMgdGhlIGlzc3VlIGZvciBXSzEuCisK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICBEZWNsYXJlIGFuIGV4cG9ydGVk
IGZ1bmN0aW9uLCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpLCB0aGF0IFdlYktpdAorICAg
ICAgICBjYW4gY2FsbC4KKwogMjAxNS0wNS0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBNYWMgYnVpbGQgZml4IGFmdGVyIHIxODQyMjguCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggODlmMzM4ZDA3ZTM3ZmExYWQ3MzAyNWFkODk2NWI1NGI2MmU1ZjhjMS4uMzRmM2E0
MDhjNGVjNmJjZGIwNDQ5Y2UxNWQxZTEwMGU5ZTdhYzlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDE1LTA1LTE5ICBKb24gSG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBs
ZS5jb20+CisKKyAgICAgICAgV2hlbiB2aWV3aW5nIGFuIE1KUEVHIHN0cmVhbSBhcyB0aGUgbWFp
biByZXNvdXJjZSwgb25seSB0aGUgZmlyc3QgZnJhbWUKKyAgICAgICAgcGFpbnRzCisKKyAgICAg
ICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDUxODU+CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8yMDEyNDY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29u
dGVudCk6CisgICAgICAgIENhbGwgdGhlIEZyYW1lVmlldydzIGRpZFJlcGxhY2VNdWx0aXBhcnRD
b250ZW50KCkuCisKIDIwMTUtMDUtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgVHVybiBhbnRpYWxpYXNlZCBmb250IGRpbGF0aW9uIG9mZiBieSBk
ZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTMwNGM4NzViOTNkOWU4NDE1NGY3ZWIzODJiYzQxOTg3OWFj
MmEwNy4uYmExNGFhYTRlNzM0ZTM2MTI5MGViYzUxZGFmYjczMjk0NGZjNmFlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTA1LTE5ICBKb24gSG9uZXljdXR0ICA8amhvbmV5Y3V0
dEBhcHBsZS5jb20+CisKKyAgICAgICAgV2hlbiB2aWV3aW5nIGFuIE1KUEVHIHN0cmVhbSBhcyB0
aGUgbWFpbiByZXNvdXJjZSwgb25seSB0aGUgZmlyc3QgZnJhbWUKKyAgICAgICAgcGFpbnRzCisK
KyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDUxODU+
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDEyNDY5ND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6d2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgVGVsbCB0aGUg
V2ViUGFnZSB0aGF0IHdlIHdpbGwgcmVwbGFjZSBtdWx0aXBhcnQgY29udGVudC4KKworICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRl
bnQpOgorICAgICAgICBUZWxsIHRoZSBXZWJQYWdlIHRoYXQgd2UgZGlkIHJlcGxhY2UgbXVsdGlw
YXJ0IGNvbnRlbnQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OndpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCk6CisgICAg
ICAgIFNhdmUgdGhlIGV4cG9zZWQgY29udGVudCByZWN0LgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgIFJlc3RvcmUgdGhlIGV4
cG9zZWQgY29udGVudCByZWN0IHRoYXQgd2FzIHNhdmVkIGJlZm9yZSB0aGlzIGxvYWQuIFRoaXMK
KyAgICAgICAgZml4ZXMgdGhlIGlzc3VlIGZvciBXSzIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpleHBvc2VkQ29udGVudFJlY3QpOgorCiAyMDE1LTA1
LTEyICBKb24gSG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jh
c2ggd2hlbiB1c2luZyA8aW5wdXQgdHlwZT1maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKaW5kZXggMjBkZWNmODgwNDNkMjFjM2JkOTRkY2RmZTFjOTg0MWZjMDli
NTQxZC4uNDlmNmVhZWVjOWM0YmNmZWVlMzA0ZmEwYWMyZGU2Yjg5YmM4MGQzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC03NjIsNiArNzYyLDkgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKICAgICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuY29t
bWl0dGVkTG9hZCh0aGlzLCBkYXRhLCBsZW5ndGgpOworCisgICAgaWYgKGlzTXVsdGlwYXJ0UmVw
bGFjaW5nTG9hZCgpKQorICAgICAgICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuZGlkUmVwbGFjZU11
bHRpcGFydENvbnRlbnQoKTsKIH0KIAogUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aW50
ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcigpIGNvbnN0CkBAIC04NzAsNiArODczLDggQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6c2V0dXBGb3JSZXBsYWNlKCkKIHsKICAgICBpZiAoIW1haW5S
ZXNvdXJjZURhdGEoKSkKICAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWVMb2FkZXIoKS0+Y2xp
ZW50KCkud2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCk7CiAgICAgCiAgICAgbWF5YmVGaW5p
c2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpOwogICAgIG1heWJlQ3JlYXRlQXJjaGl2ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDg3ZDE0YTdmMTcwNjAwY2ZhZDlk
ZmEyZjJmMzcyY2Y4ZTNmZGEwOTUuLmRkZWU0YTYwYWNmZjFhMzc5ZjdhOWY3ZjgyMmVjYmQwNGNk
NmIyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTMxNyw2ICszMTcs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExv
YWRlciopIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShEb2N1
bWVudExvYWRlciopIG92ZXJyaWRlIHsgfQogCisgICAgdmlydHVhbCB2b2lkIHdpbGxSZXBsYWNl
TXVsdGlwYXJ0Q29udGVudCgpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZXBs
YWNlTXVsdGlwYXJ0Q29udGVudCgpIG92ZXJyaWRlIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGNv
bW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikgb3Zl
cnJpZGUgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggMTNlMzYyYTM0OTM2ZTJjYmM3YzVjZWJlZDQzNGI5NmQzYWUyMWY5Ny4uYWZhYmE2YWYwNGUx
YzE2M2FhYWJmZjg5NmFhM2NhZjAyOTZkMWZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE5OSw2ICsxOTksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciop
ID0gMDsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQo
KSA9IDA7CisKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hl
ZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCmluZGV4IGMzMTI5Y2NlMjY0NDVkZGY4NTAyOWVjNTdlZDg0ZGFkZGQ1NTUzMGYu
LjIxNDZkYjEwMjQ3MzkxNjI3MDYzZDNmMjU2YzlmZDkwYzY2NGRlMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKQEAgLTQxMSw2ICs0MTEsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OmNsZWFy
KCkKICNlbmRpZgogfQogCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBGcmFtZVZpZXc6OmRpZFJl
cGxhY2VNdWx0aXBhcnRDb250ZW50KCkKK3sKKyAgICAvLyBSZS1lbmFibGUgdGlsZSB1cGRhdGVz
IHRoYXQgd2VyZSBkaXNhYmxlZCBpbiBjbGVhcigpLgorICAgIGlmIChMZWdhY3lUaWxlQ2FjaGUq
IHRpbGVDYWNoZSA9IGxlZ2FjeVRpbGVDYWNoZSgpKQorICAgICAgICB0aWxlQ2FjaGUtPnNldFRp
bGluZ01vZGUoTGVnYWN5VGlsZUNhY2hlOjpOb3JtYWwpOworfQorI2VuZGlmCisKIGJvb2wgRnJh
bWVWaWV3OjpkaWRGaXJzdExheW91dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX2ZpcnN0TGF5
b3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggNTJmNGU2YjQ0OWY4YjkzYzY4ODI2NDIy
YWNkZjBhYmYxNmZjYWY1Zi4uYzhmZTIyZjU5NDY3MzZlYTZiYjAwYWIzMDhjNjVkYjA2ZTdiMzc4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0zNDQsNiArMzQ0LDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHdpbGxQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOwogICAgIHZvaWQgZGlkUGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFBhaW50aW5nU3Rh
dGUmKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJl
cGxhY2VNdWx0aXBhcnRDb250ZW50KCk7CisjZW5kaWYKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yKTsKICAgICBXRUJDT1JFX0VYUE9SVCBQ
YWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IoKSBjb25zdDsKICAgICBib29sIGlzUGFpbnRpbmco
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDYyNjhiMDNhMDU3YmRhMzBkYjYwNGU1NTgwMDRk
OWU3NjAyZDEwOGIuLmY2Zjk0YTI5Njc0ZTJhYThkNTk3YzRmMmY5MDg3NjNjNWY3YzhkMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaApAQCAtMTQwLDYgKzE0MCw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciop
IG92ZXJyaWRlOwogCisgICAgdmlydHVhbCB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVu
dCgpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29u
dGVudCgpIG92ZXJyaWRlOworCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KaW5kZXggY2U4ZjJkNzc5ODlkMDk0NjRlOGMzNzFlYWNjNmYzYzY3MTY5MTYy
NS4uZTJmMDQyMDljODhhMmM4YzY5ZTE3MTIyYzJkMmFmMTMyMjUyOGVjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KQEAgLTk5OSw2ICs5OTksMTQgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlk
Q2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICNlbmRpZgogfQogCit2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCit7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgIGlmIChGcmFtZVZpZXcgKnZpZXcgPSBjb3JlKG1fd2ViRnJhbWUu
Z2V0KCkpLT52aWV3KCkpCisgICAgICAgIHZpZXctPmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9h
ZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQog
ewogICAgIE5TRGF0YSAqbnNEYXRhID0gW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0Nv
cHk6KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxZjY5OTg5MTJhNTBkZjA2NDA0NWEzOGQyYmEy
ZDAyZTVmYzRjYjU5Li40ZDY0ZGUwZWM3NzhkYzIzMDg2NDQ2N2RkNzZlMDhjMzUwODdkYmU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtOTEyLDYgKzkxMiwyMiBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciop
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
d2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkKK3sKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0g
bV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworICAg
IHdlYlBhZ2UtPndpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudChtX2ZyYW1lKTsKK30KKwordm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQorewor
ICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdl
KQorICAgICAgICByZXR1cm47CisgICAgd2ViUGFnZS0+ZGlkUmVwbGFjZU11bHRpcGFydENvbnRl
bnQobV9mcmFtZSk7Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExv
YWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
IHsKICAgICBpZiAoIW1fcGx1Z2luVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCA5YmUyNTVlNjhmMmZmYmE1ZWZkOGM0Y2MyOGFhMjhiOWZmZjk3YTNiLi40NjY1ZTg0NmM0
OTM2OTVhNjJmYmRkYjY1ZjYzNmRhZTdjY2UzMWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCkBAIC0xMjMsNyArMTIzLDEwIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdmlydHVhbCB2
b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciop
IG92ZXJyaWRlOwotICAgIAorCisgICAgdmlydHVhbCB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0
Q29udGVudCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0
Q29udGVudCgpIG92ZXJyaWRlOworCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3Zl
cnJpZGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oCmluZGV4IDcyNmM1NzQ5Y2E0MjJiZTEwY2Q2NzBlYmZiY2ZlMDUwMGE5MmI2NTUu
LjY4YjliYjhkNjc3NDZlZWEwZDliOGMzYjQ0MDNiMzVhOWFlN2IyMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC05NCw2ICs5NCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWRkRmVuY2UoY29uc3QgV2ViQ29yZTo6TWFj
aFNlbmRSaWdodCYpIHsgfQogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwg
V2ViQ29yZTo6RmxvYXRSZWN0IGV4cG9zZWRDb250ZW50UmVjdCgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RXhwb3NlZENvbnRlbnRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYpID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBtYWluRnJhbWVTY3JvbGxhYmlsaXR5
Q2hhbmdlZChib29sKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCA0OWRiY2Q5ZGY1YzYzNThmMDg2ZDdmNWRkYTJkNmM2YTFmYTc3M2E3
Li4yNjA0YzMwNjE1NmMzYTI2ZjE5NGNmMTA4ODczMDBlMDc2NmI4NWE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00NTYyLDYgKzQ1NjIs
MjggQEAgdm9pZCBXZWJQYWdlOjpkaWRDYW5jZWxDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVz
dElEKQogICAgIHJlcXVlc3QtPmRpZENhbmNlbCgpOwogfQogCit2b2lkIFdlYlBhZ2U6OndpbGxS
ZXBsYWNlTXVsdGlwYXJ0Q29udGVudChXZWJGcmFtZSogZnJhbWUpCit7CisjaWYgUExBVEZPUk0o
SU9TKQorICAgIGlmICghZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fcHJldmlvdXNFeHBvc2VkQ29udGVudFJlY3QgPSBtX2RyYXdpbmdBcmVhLT5leHBvc2Vk
Q29udGVudFJlY3QoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2U6OmRpZFJlcGxhY2VNdWx0
aXBhcnRDb250ZW50KFdlYkZyYW1lKiBmcmFtZSkKK3sKKyNpZiBQTEFURk9STShJT1MpCisgICAg
aWYgKCFmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gUmVz
dG9yZSB0aGUgcHJldmlvdXMgZXhwb3NlZCBjb250ZW50IHJlY3Qgc28gdGhhdCBpdCByZW1haW5z
IGZpeGVkIHdoZW4gcmVwbGFjaW5nIGNvbnRlbnQKKyAgICAvLyBmcm9tIG11bHRpcGFydC94LW1p
eGVkLXJlcGxhY2Ugc3RyZWFtcy4KKyAgICBtX2RyYXdpbmdBcmVhLT5zZXRFeHBvc2VkQ29udGVu
dFJlY3QobV9wcmV2aW91c0V4cG9zZWRDb250ZW50UmVjdCk7CisjZW5kaWYKK30KKwogdm9pZCBX
ZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1l
LT5pc01haW5GcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggYjI1ZmRlMDllNjU3MGU0ZWIyYmM0ZDgyYmM2MTBiYWYyNzEwOWExYi4uODMy
YTQ0YTY0ODIzNTI3NjAyODE1ZmQ2OTM0ZmE5ZGZkODFmOTJlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yNTMsNiArMjUzLDggQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkU3RhcnRQYWdlVHJhbnNpdGlvbigpOwogICAgIHZvaWQgZGlkQ29tcGxl
dGVQYWdlVHJhbnNpdGlvbigpOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZChXZWJGcmFtZSopOwor
ICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KFdlYkZyYW1lKik7CisgICAgdm9p
ZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudChXZWJGcmFtZSopOwogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZChXZWJGcmFtZSopOwogICAgIHZvaWQgc2hvdygpOwogICAgIFN0cmluZyB1c2VyQWdl
bnQoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CkBAIC0xMzM3LDYgKzEzMzksNyBAQCBwcml2
YXRlOgogICAgIEhhc2hNYXA8c3RkOjpwYWlyPFdlYkNvcmU6OkludFNpemUsIGRvdWJsZT4sIFdl
YkNvcmU6OkludFBvaW50PiBtX2R5bmFtaWNTaXplVXBkYXRlSGlzdG9yeTsKICAgICBSZWZQdHI8
V2ViQ29yZTo6Tm9kZT4gbV9wZW5kaW5nU3ludGhldGljQ2xpY2tOb2RlOwogICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQgbV9wZW5kaW5nU3ludGhldGljQ2xpY2tMb2NhdGlvbjsKKyAgICBXZWJDb3Jl
OjpGbG9hdFJlY3QgbV9wcmV2aW91c0V4cG9zZWRDb250ZW50UmVjdDsKICNlbmRpZgogCiAgICAg
V2ViSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEuaAppbmRleCA4NzBkNWUzZTI0NjViNTRmODU0NDgxZTU4NjhmYmM1YmQw
YzFhZmNkLi45NjM3OGZhZTk5ZmJmNzk3OTZiZWI5ZWE2YTYyNmMwZDU0ODQ4NTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBAIC05Miw2ICs5Miw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkRW5kKHVpbnQ2NF90IGxh
eWVySUQsIGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKElPUykK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBleHBvc2VkQ29udGVudFJlY3QoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RXhwb3NlZENvbnRlbnRSZWN0KGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDJmZGY4ODY3OTU4ZWUyZTI3Y2U0NzZhNGI4Mjg5
YTJkODFmMjRiMWMuLjk4MmFlODU3ZTJlODdkNjAyZTMzOWNlNzY2MDc3YTIyMTU0NmUzODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtMjM1LDYgKzIzNSwxNSBA
QCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXRFeHBvc2VkUmVjdChjb25zdCBG
bG9hdFJlY3QmIGV4cG9zZWRSZWN0KQogfQogCiAjaWYgUExBVEZPUk0oSU9TKQorV2ViQ29yZTo6
RmxvYXRSZWN0IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpleHBvc2VkQ29udGVudFJlY3Qo
KSBjb25zdAoreworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV93ZWJQYWdlLm1haW5GcmFt
ZVZpZXcoKTsKKyAgICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgp
OworCisgICAgcmV0dXJuIGZyYW1lVmlldy0+ZXhwb3NlZENvbnRlbnRSZWN0KCk7Cit9CisKIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnNldEV4cG9zZWRDb250ZW50UmVjdChjb25z
dCBGbG9hdFJlY3QmIGV4cG9zZWRDb250ZW50UmVjdCkKIHsKICAgICBGcmFtZVZpZXcqIGZyYW1l
VmlldyA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCk7Cg==
</data>
<flag name="review"
          id="278378"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>