<?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>136269</bug_id>
          
          <creation_ts>2014-08-26 16:48:46 -0700</creation_ts>
          <short_desc>Drawing text in an SVG font causes load events to be fired</short_desc>
          <delta_ts>2018-11-19 21:44:14 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=171505</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=55597</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>japhet</cc>
    
    <cc>jonlee</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1031513</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-08-26 16:48:46 -0700</bug_when>
    <thetext>Drawing text in an SVG font causes load events to be fired</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031521</commentid>
    <comment_count>1</comment_count>
      <attachid>237184</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-08-26 17:01:13 -0700</bug_when>
    <thetext>Created attachment 237184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031524</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-08-26 17:02:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/15724915&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031573</commentid>
    <comment_count>3</comment_count>
      <attachid>237184</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-26 21:19:36 -0700</bug_when>
    <thetext>Comment on attachment 237184
Patch

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

&gt; Source/WebCore/loader/cache/CachedFont.cpp:154
&gt; -        m_externalSVGDocument-&gt;setContent(decoder-&gt;decodeAndFlush(m_data-&gt;data(), m_data-&gt;size()));
&gt; +        const auto&amp; content = decoder-&gt;decodeAndFlush(m_data-&gt;data(), m_data-&gt;size());
&gt; +        m_externalSVGDocument-&gt;open();
&gt; +        if (auto* parser = m_externalSVGDocument-&gt;parser()) {
&gt; +            parser-&gt;append(content.impl());
&gt; +            parser-&gt;finish();
&gt; +            parser-&gt;detach();
&gt; +        }
&gt; +#if !ASSERT_DISABLED
&gt; +        else
&gt; +            ASSERT_NOT_REACHED();
&gt; +#endif
&gt; +        // Don&apos;t call m_externalSVGDocument-&gt;close() because that might fire load events. https://bugs.webkit.org/show_bug.cgi?id=14568

If we really need to do this, then how about just making a helper function called something like setContentWithLoadEventWorkaround? I don’t see any reason to put all this code in line here just so we can remove it later once we fix that bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031612</commentid>
    <comment_count>4</comment_count>
      <attachid>237215</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-08-27 00:46:21 -0700</bug_when>
    <thetext>Created attachment 237215
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031665</commentid>
    <comment_count>5</comment_count>
      <attachid>237229</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-08-27 09:16:49 -0700</bug_when>
    <thetext>Created attachment 237229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031666</commentid>
    <comment_count>6</comment_count>
      <attachid>237215</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-27 09:35:47 -0700</bug_when>
    <thetext>Comment on attachment 237215
Patch

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

review- because this breaks the build

I think there is a question about the best way to accomplish this. I think we should consider the version where we don’t change the data structures quite as much and just refine them so it’s efficient to dispatch events only for the current document, without necessarily allocating separate event sender objects for each document. But there are other possibilities as well.

&gt; Source/WebCore/dom/Document.cpp:2395
&gt; -    ImageLoader::dispatchPendingBeforeLoadEvents();
&gt; -    ImageLoader::dispatchPendingLoadEvents();
&gt; -    ImageLoader::dispatchPendingErrorEvents();
&gt; +    beforeLoadImageEventSender().dispatchPendingEvents();
&gt; +    loadImageEventSender().dispatchPendingEvents();
&gt; +    errorImageEventSender().dispatchPendingEvents();
&gt;  
&gt; -    HTMLLinkElement::dispatchPendingLoadEvents();
&gt; -    HTMLStyleElement::dispatchPendingLoadEvents();
&gt; +    linkLoadEventSender().dispatchPendingEvents();
&gt; +    styleLoadEventSender().dispatchPendingEvents();

I think using the data members directly might be better than using these accessors. Longer term I am not sure we want to expose these event sender objects publicly.

Not new to this patch: It seems a little strange that these are dispatched by type rather than “in the order they came in”. Might be something we want to revise later. I could see us making this a single queue of functions rather than a more complex set of separate queues. Building this out of a more generic “queue of functions that can be removed” might be better than building it specifically as a pending event system.

&gt; Source/WebCore/dom/Document.h:37
&gt; +#include &quot;EventSender.h&quot;

This is unfortunate. Adding this include means that EventSender.h needs to be turned into a “private” header, visible to WebKit, rather than a “project” header, inside WebCore only. That is why the build is broken.

The change also could slow down compile times since so many things include Document and they now all would include EventSender. If we can make sure the event senders are all on the heap, then we don’t have to compile in the class here in the Document header. The details might be a bit tricky. We need something stored in a unique_ptr. Maybe a more general purpose private data object. We could forward declare EventSender as long as we didn’t have to compile in the actual data members. Or a DocumentEventSenders object that is declared in a separate header.

Another way to deal with this is issue to make a bigger design change so the document capability this is all built on is a more generic “cancelable functions called at close time” mechanism rather than something that directly knows about event senders. That’s a better long term strategy, but a bigger riskier change to make. The EventSender class would manage these functions. Not clear how to implement the XML “deliver only the before load events” thing with that, though.

Generally speaking it would be nice to minimize how much of this we put into Document.h just to achieve the best possible separation of concerns. It seems the only Document-specific aspect of this is the need to dispatch events inside the close function. Maybe we can do an alternate version of this where everything is done with external hash tables inside EventSender and the only change we make to Document is to pas the document into the dispatchPendingEvents functions in Document::implicitClose.

&gt; Source/WebCore/dom/Document.h:40
&gt; +#include &quot;ImageLoader.h&quot;

More of the same. Sure would be nice to not have to include this header everywhere we include Document.h.

&gt; Source/WebCore/dom/Document.h:169
&gt; +typedef EventSender&lt;ImageLoader&gt; ImageEventSender;
&gt; +typedef EventSender&lt;HTMLLinkElement&gt; LinkEventSender;
&gt; +typedef EventSender&lt;HTMLStyleElement&gt; StyleEventSender;

I’m not sure these typedefs are helpful. I think they slightly obscure the fact that all three types are so closely related and I would prefer we just use the whole type names.

&gt; Source/WebCore/html/HTMLLinkElement.cpp:97
&gt; +LinkEventSender&amp; HTMLLinkElement::linkLoadEventSender()
&gt; +{
&gt; +    return document().linkLoadEventSender();
&gt; +}

Do we really need this helper? Why not do this at each call site explicitly?

&gt; Source/WebCore/html/HTMLStyleElement.cpp:68
&gt; +StyleEventSender&amp; HTMLStyleElement::styleLoadEventSender()
&gt; +{
&gt; +    return document().styleLoadEventSender();
&gt; +}

Do we really need this helper? Why not do this at each call site explicitly?

&gt; Source/WebCore/loader/ImageLoader.cpp:74
&gt; -static ImageEventSender&amp; beforeLoadEventSender()
&gt; +ImageEventSender&amp; ImageLoader::beforeLoadEventSender()
&gt;  {
&gt; -    static NeverDestroyed&lt;ImageEventSender&gt; sender(eventNames().beforeloadEvent);
&gt; -    return sender;
&gt; +    return element().document().beforeLoadImageEventSender();
&gt;  }
&gt;  
&gt; -static ImageEventSender&amp; loadEventSender()
&gt; +ImageEventSender&amp; ImageLoader::loadEventSender()
&gt;  {
&gt; -    static NeverDestroyed&lt;ImageEventSender&gt; sender(eventNames().loadEvent);
&gt; -    return sender;
&gt; +    return element().document().loadImageEventSender();
&gt;  }
&gt;  
&gt; -static ImageEventSender&amp; errorEventSender()
&gt; +ImageEventSender&amp; ImageLoader::errorEventSender()
&gt;  {
&gt; -    static NeverDestroyed&lt;ImageEventSender&gt; sender(eventNames().errorEvent);
&gt; -    return sender;
&gt; +    return element().document().errorImageEventSender();
&gt;  }

Do we really need these helpers? Why not do these at each call site explicitly? Are there a lot of call sites?

&gt; Source/WebCore/loader/ImageLoader.cpp:120
&gt; +    setImageWithoutConsideringPendingLoadEvent(newImage, oldImageDocument ? oldImageDocument : &amp;element().document());

The handling of null here got my attention. There are two different cases here where oldImageDocument could be null.

One case is elementDidMoveToNewDocument. In that case, if the old document is null then we should not pretend there was an old document and supply a non-null values. In such cases we’d not have any events to cancel; we’d want to assert that we don’t. If this object had a pending event, but was not in a document, then it seems likely there is a dangling pointer to this object in some other document.

The other case is for all existing callers of setImage in the cases where we are not moving between documents. In that case, it makes sense that “old” document is the current document.

It’s a little messy to use null for both. I have some thoughts below about how to avoid this.

&gt; Source/WebCore/loader/ImageLoader.cpp:124
&gt;      // Only consider updating the protection ref-count of the Element immediately before returning
&gt;      // from this function as doing so might result in the destruction of this ImageLoader.
&gt;      updatedHasPendingEvent();

I just read the updatedHasPendingEvent function, and it seems that we defer the call to deref using a timer. So these comments about deletion of the image loader are incorrect and obsolete. They should all be removed at some point. For future refactoring, this also means that the reason we have a separate setImageWithoutConsideringPendingLoadEvent function is no obsolete; there is no harm to calling updatedHasPendingEvent inside the function. So that’s a cleanup we should consider at some point.

&gt; Source/WebCore/loader/ImageLoader.cpp:127
&gt; +void ImageLoader::setImageWithoutConsideringPendingLoadEvent(CachedImage* newImage, Document* oldImageDocument)

If after considering my comments we are still never passing null to this function, then I suggest making it take a Document&amp; rather than a Document*.

But I think we may want to pass null when calling this from elementDidMoveToDocument just to assert that we don’t have dangling events. Or we could do that assertion in elementDidMoveToDocument and pass a our document in just so we can take a reference instead of a pointer and don’t have to worry about nulls inside this function.

It’s also bizarre (although not new) that setImage has a side effect of resetting animation even when no image is passed in.

&gt; Source/WebCore/loader/ImageLoader.cpp:144
&gt; +        m_image = newImage;

Why did this line of code need to move? It is important to call cancelEvent before setting m_image? Or is it something we are cleaning up to be more logical?

&gt; Source/WebCore/loader/ImageLoader.cpp:446
&gt; +    setImage(nullptr, oldDocument);

As I mention both above and below, this could instead just say:

    setImageWithoutConsideringPendingLoadEvent(nullptr, oldDocument);
    updatedHasPendingEvent();

This is superior in two ways: 1) Don’t need to add potentially confusing argument to the publicly visible setImage function. 2) Better not to hide the fact that the image loader could be deleted after the setImage function is called; the old code did not make that explicit. It’s funny that every function that calls updatedHasPendingEvent has a long comment explaining the danger of deletion, but this function that was calling setImage had exactly the same fragility, but didn’t comment on it at all.

As a side note, I think that all those three line paragraph versions of updatedHasPendingEvent() in this file should be changed since the comment they contain is inaccurate. And I think we should refactor since that problem has been designed away.

So longer term, this way of dodging the change to setImage won’t really work. I think we can just have a public setImage that does not take a document pointer and a private function that does take a document pointer, possibly named setImage or possibly with another name to emphasize that it’s both for setting a new image and for clearing the image when moving between documents. I’ll note in passing that we never pass non-null values for both the image and the document to the function.

&gt; Source/WebCore/loader/ImageLoader.h:62
&gt; +    void setImage(CachedImage*, Document* oldImageDocument = nullptr); // Cancels pending beforeload and load events, and doesn&apos;t dispatch new ones.

Adding this argument to the public function isn’t great. We don’t need to make that capability public. And a default argument of null is also not great. It’s ambiguous whether null means “this wasn’t in a document before” or “I am not passing a document because the document isn’t changing”. We should consider the alternative I mention above.

&gt; Source/WebCore/loader/ImageLoader.h:116
&gt; +    static void checkConsistency(const WebCore::ImageLoader* p);

Should not have the argument name &quot;p&quot; here.

&gt; Source/WebCore/xml/parser/XMLDocumentParser.cpp:126
&gt; +    if (auto* document = this-&gt;document())
&gt; +        document-&gt;beforeLoadImageEventSender().dispatchPendingEvents();

I’d like this to say one of these two things:

    ImageLoader::dispatchPendingBeforeLoadEvents(*document);

Or:

    document-&gt;dispatchPendingBeforeLoadEvents();

It’s better to have the details of how this is done be a secret of EventSender and Document rather than something XMLDocumentParser does by working with the event sender directly. This is how it was factored before and I would like to preserve that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031667</commentid>
    <comment_count>7</comment_count>
      <attachid>237229</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-27 09:36:39 -0700</bug_when>
    <thetext>Comment on attachment 237229
Patch

All of my comments from the previous patch apply to this one too. It’s OK to land it like this, but I have many stylistic and factoring concerns about this for the long term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031802</commentid>
    <comment_count>8</comment_count>
      <attachid>237260</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-08-27 15:15:19 -0700</bug_when>
    <thetext>Created attachment 237260
Smaller patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031803</commentid>
    <comment_count>9</comment_count>
      <attachid>237260</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-08-27 15:16:19 -0700</bug_when>
    <thetext>Comment on attachment 237260
Smaller patch

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

&gt; Source/WebCore/dom/Document.cpp:2380
&gt;      if (f) {

Please rename f to frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031819</commentid>
    <comment_count>10</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-08-27 15:39:49 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 237260 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=237260&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:2380
&gt; &gt;      if (f) {
&gt; 
&gt; Please rename f to frame.

I&apos;m gonna keep this patch to a minimum. Will clean up names etc on trunk afterwards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031826</commentid>
    <comment_count>11</comment_count>
      <attachid>237260</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-27 15:56:23 -0700</bug_when>
    <thetext>Comment on attachment 237260
Smaller patch

Clearing flags on attachment: 237260

Committed r173028: &lt;http://trac.webkit.org/changeset/173028&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031827</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-27 15:56:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237184</attachid>
            <date>2014-08-26 17:01:13 -0700</date>
            <delta_ts>2014-08-27 00:46:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136269-20140826170105.patch</filename>
            <type>text/plain</type>
            <size>7340</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyOTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZlNDM1OTg2MDJhNDQ2
NWJhOGFlZmZiOWVmOThmMmU3MjliNmZkMC4uYTFhZDg4YWU2OTY5OTY1Yzc3MTI3ZTc2ZTJiNGYx
NWJkMGYzOGI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE0LTA4LTI2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRHJhd2luZyB0
ZXh0IGluIGFuIFNWRyBmb250IGNhdXNlcyBsb2FkIGV2ZW50cyB0byBiZSBmaXJlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MjY5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgaXMgYSBidWd6
aWxsYSBidWcsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU2OCBy
ZWdhcmRpbmcKKyAgICAgICAgbG9hZCBldmVudHMgZmlyaW5nIHByZW1hdHVyZWx5IGZvciBmcmFt
ZWxlc3MgZG9jdW1lbnRzLiBCZWNhdXNlIGV4dGVybmFsIFNWRworICAgICAgICBmb250cyBhcmUg
ZG93bmxvYWRlZCBhbmQgcGFyc2VkIGFzIGZyYW1lbGVzcyBkb2N1bWVudHMsIHRoaXMgb3RoZXIg
YnVnIG9jY3Vycy4KKyAgICAgICAgSSBhbSBub3QgY29uZmlkZW50IGVub3VnaCB0byBmaXggdGhl
IHVuZGVybHlpbmcgYnVnOyBob3dldmVyLCBJIGNhbiBtYWtlIFNWRyBmb250cworICAgICAgICB3
b3JrYXJvdW5kIHRoaXMgcHJvYmxlbSB0aGVyZWJ5IGRlY3JlYXNpbmcgdGhlIGZyZXF1ZW5jeSBv
ZiBvY2N1cnJhbmNlcyBvZiB0aGlzCisgICAgICAgIHByb2JsZW0uCisKKyAgICAgICAgVGVzdDog
ZmFzdC90ZXh0L3N2Zy1mb250LXRyaWdnZXItbG9hZC1ldmVudC5odG1sCisKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250
OjplbnN1cmVTVkdGb250RGF0YSk6IERvbid0IGNhdXNlIERvY3VtZW50OjpjbG9zZSgpLgorCiAy
MDE0LTA4LTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBTZWxlY3Rpb24gYmFja2dyb3VuZCBpcyByZW5kZXJlZCB3aGl0ZSB3aGVu
IHVuZm9jdXNlZCB3aXRoIHJlY2VudCBHVEsrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKaW5kZXggMTM2ODJmYTI3NzhkZmRmNjFhY2VkOWMzYjk1MDRmNjY3ZTcz
N2ZmNi4uZWExZDMzMWJmN2NhNjdlNDA0MjBkNTZlNzdjMjMwNWNlZDQwMTUxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkNhY2hlZEZvbnRDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNs
aWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVk
ZSAiRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgi
CiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgi
CkBAIC0xMzksNyArMTQwLDE4IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlU1ZHRm9udERhdGEo
KQogICAgIGlmICghbV9leHRlcm5hbFNWR0RvY3VtZW50ICYmICFlcnJvck9jY3VycmVkKCkgJiYg
IWlzTG9hZGluZygpICYmIG1fZGF0YSkgewogICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQg
PSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKICAgICAgICAgUmVmUHRyPFRl
eHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUo
ImFwcGxpY2F0aW9uL3htbCIpOwotICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENv
bnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6
ZSgpKSk7CisgICAgICAgIGNvbnN0IGF1dG8mIGNvbnRlbnQgPSBkZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICBtX2V4dGVybmFs
U1ZHRG9jdW1lbnQtPm9wZW4oKTsKKyAgICAgICAgaWYgKGF1dG8qIHBhcnNlciA9IG1fZXh0ZXJu
YWxTVkdEb2N1bWVudC0+cGFyc2VyKCkpIHsKKyAgICAgICAgICAgIHBhcnNlci0+YXBwZW5kKGNv
bnRlbnQuaW1wbCgpKTsKKyAgICAgICAgICAgIHBhcnNlci0+ZmluaXNoKCk7CisgICAgICAgICAg
ICBwYXJzZXItPmRldGFjaCgpOworICAgICAgICB9CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAg
ICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAg
ICAgICAvLyBEb24ndCBjYWxsIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+Y2xvc2UoKSBiZWNhdXNl
IHRoYXQgbWlnaHQgZmlyZSBsb2FkIGV2ZW50cy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NTY4CiAgICAgICAgIGlmIChkZWNvZGVyLT5zYXdFcnJvcigpKQogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MThmZjYxYzQyODVlOTM3NjMyZGI2OGFmNzFmNWU1YWI3YTUxNDIzYy4uMGExYjEzODMzZWJhNTY4
ZWFkMzA4NWM3MWQ2MmEyMjgyYjUyZTEyNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTA4
LTI2ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAg
RHJhd2luZyB0ZXh0IGluIGFuIFNWRyBmb250IGNhdXNlcyBsb2FkIGV2ZW50cyB0byBiZSBmaXJl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MjY5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBz
dXJlIHRoYXQgZHJhd2luZyB0ZXh0IHVzaW5nIGFuIFNWRyBmb250IHRoYXQgaXMgc3BlY2lmaWVk
IGluIGFub3RoZXIgZG9jdW1lbnQgZG9lcyBub3QgY2F1c2UKKyAgICAgICAgbG9hZCBldmVudHMg
dG8gYmUgZmlyZWQuCisKKyAgICAgICAgKiBmYXN0L3RleHQvc3ZnLWZvbnQtdHJpZ2dlci1sb2Fk
LWV2ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9zdmctZm9udC10cmlnZ2Vy
LWxvYWQtZXZlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxNC0wOC0yNiAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjE3Mjk0MC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9zdmct
Zm9udC10cmlnZ2VyLWxvYWQtZXZlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L3N2Zy1mb250LXRyaWdnZXItbG9hZC1ldmVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmMyMjNiZGFiZGRlMmUwZmRkMzA5OTc2ZjVkYTVkMDg2YjMxN2UyOAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9zdmctZm9udC10cmlnZ2VyLWxvYWQtZXZlbnQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBkcmF3
aW5nIHRleHQgaW4gYW4gU1ZHIGZvbnQgdGhhdCByZXNpZGVzIGluIGFub3RoZXIgZG9jdW1lbnQg
ZG9lc24ndCBjYXVzZSBsb2FkIGV2ZW50cyB0byBiZSBmaXJlZC4gVGhlIHRlc3QgaXMgc3VjY2Vz
c2Z1bCBpZiB0aGUgaW1hZ2UgbG9hZCBoYW5kZXIgbGluZSBibG93IG9jY3VycyBhZnRlciB0aGUg
bGluZSB0aGF0IHNheXMgaXQgc2hvdWxkIGJlIGJlZm9yZSB0aGUgaW1hZ2UgbG9hZCBoYW5kbGVy
LgorVGhpcyBsaW5lIHNob3VsZCBvY2N1ciBiZWZvcmUgdGhlIGltYWdlIGxvYWQgaGFuZGxlci4K
K0ltYWdlIGxvYWQgaGFuZGxlciBvY2N1cnJlZC4KKworVGhpcyBpcyBzb21lIGR1bW15IHRleHQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9zdmctZm9udC10cmlnZ2VyLWxvYWQt
ZXZlbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9zdmctZm9udC10cmlnZ2VyLWxvYWQt
ZXZlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWMwY2UxYWI2MDgyNzU4YzA4NzYxMWM2MzdmOTZkODVi
YzAzN2QwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3N2Zy1mb250
LXRyaWdnZXItbG9hZC1ldmVudC5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK0Bmb250LWZhY2UgeworICAgIGZvbnQtZmFtaWx5
OiAnU1ZHcmFmZml0aSc7CisgICAgc3JjOiB1cmwoIi4uLy4uL3N2Zy9jdXN0b20vcmVzb3VyY2Vz
L2dyYWZmaXRpLnN2ZyIpIGZvcm1hdChzdmcpCit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
CitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGRyYXdpbmcgdGV4dCBpbiBhbiBTVkcgZm9udCB0
aGF0IHJlc2lkZXMgaW4gYW5vdGhlciBkb2N1bWVudCBkb2Vzbid0IGNhdXNlIGxvYWQgZXZlbnRz
IHRvIGJlIGZpcmVkLiBUaGUgdGVzdCBpcyBzdWNjZXNzZnVsIGlmIHRoZSBpbWFnZSBsb2FkIGhh
bmRlciBsaW5lIGJsb3cgb2NjdXJzIGFmdGVyIHRoZSBsaW5lIHRoYXQgc2F5cyBpdCBzaG91bGQg
YmUgYmVmb3JlIHRoZSBpbWFnZSBsb2FkIGhhbmRsZXIuCis8ZGl2IGlkPSJsb2ciPjwvZGl2Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIGxvZ0xpbmUobGluZSkgeworICAgIHZhciBsb2dFbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpOworICAgIHZhciBsaW5lRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGxpbmVFbGVtZW50LnRleHRDb250ZW50
ID0gbGluZTsKKyAgICBsb2dFbGVtZW50LmFwcGVuZENoaWxkKGxpbmVFbGVtZW50KTsKK30KK2Z1
bmN0aW9uIGltYWdlTG9hZEhhbmRsZXIoKSB7CisgICAgbG9nTGluZSgiSW1hZ2UgbG9hZCBoYW5k
bGVyIG9jY3VycmVkLiIpOworfQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8aW1nIHNyYz0iZGF0YTppbWFnZS9wbmc7Y2hh
cnNldD1iaW5hcnk7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFSUFBQUFhQ0FZQUFB
RjBqcnJrQUFBQ21XbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBIZzZlRzF3YldW
MFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVdFMVFJRU52
Y21VZ05TNHhMaklpUGdvZ0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNk
M2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lD
QThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNC
NGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhp
UGdvZ0lDQWdJQ0FnSUNBOFpHTTZjbWxuYUhSelBnb2dJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9rRnNk
RDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FTQjRiV3c2YkdGdVp6MGllQzFrWldaaGRX
eDBJajVEYjNCNWNtbG5hSFFnd3FrZ01qQXhNeUJCY0hCc1pTQkpibU11SUVGc2JDQnlhV2RvZEhN
Z2NtVnpaWEoyWldRdVBDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJRHd2Y21SbU9rRnNkRDRL
SUNBZ0lDQWdJQ0FnUEM5a1l6cHlhV2RvZEhNK0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBh
Vzl1UGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lD
QWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdG
d0x6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOGVHMXdPa055WldGMGIzSlViMjlzUGtGa2IySmxJRWx0
WVdkbFVtVmhaSGs4TDNodGNEcERjbVZoZEc5eVZHOXZiRDRLSUNBZ0lDQWdQQzl5WkdZNlJHVnpZ
M0pwY0hScGIyNCtDaUFnSUR3dmNtUm1PbEpFUmo0S1BDOTRPbmh0Y0cxbGRHRStDbGtNY01VQUFB
R2NTVVJCVkZnSjdaa3hUZ014RUVWM0VhbWdDcUtGRmduRUNZQWp3QjJncHd3ZFBkU1VFTGhDdUFK
d0FzUUJRZ3VJaWlvUzRUOGpyeXdVN1VSWU1KR2NrU1oyWXEvL24rK3h2ZG10TC9zMzQ2cmQ2b1gy
OXUvV2FUcDFwdWswcWcxT0pwK3hDV04xcUMwT2xpTDM2ckJyb1ZpRDdLaURIWXMxaXRxendqblFB
TGM1b1F4Z21ETUExMy9tRG1CbURTaXQ1c3JnR1dxNVdka2FudEZZeC9aY0dlSTR2eW5acWxhNDBK
TUUrSy95bmpjSmlKeDZrN2dXaWVWRnFEalp0bkFmd2ZaYUhjM0tnSVRYZEp3QkhzMkxSRThFR2pX
OFNDRENpN2NTNExOUmNZUzc1UVRZMkIwZm50TUJQamFZQlJMSDNpU2VwTVRRbThRVzgrRko0Z2dD
bUJlSmtiRDdnWUVqaVc0a1FPbDFnS1VjL3FzK0ZOQ20vR01Tb0ZkS1RPTHkxNyt0QytCZEhoYmtU
N0NTaENEMmpweDd1VU8rcEZhYUVESDJLMVh3eGtvVkFnSElDcktETEhFN05zQ2VCV08vWU45WUt6
a2o0a1FzcVhJeEY2S3FUaVRFdnVlLzhUZ2pYaVZQaVBia1BJQ3RTaFhpVGJGdnlIbEtGYXpFcGZH
Z3lGZmxqUWdvVVpvUTU0bzV2RVlnK05SS1docmhEVVlhZkZyL0F0NFJPdWcxakJlMEFBQUFBRWxG
VGtTdVFtQ0MiIG9ubG9hZD0iaW1hZ2VMb2FkSGFuZGxlcigpOyI+Cis8ZGl2IHN0eWxlPSJmb250
LWZhbWlseTogU1ZHcmFmZml0aTsiPlRoaXMgaXMgc29tZSBkdW1teSB0ZXh0PC9kaXY+Cis8c2Ny
aXB0PgorbG9nTGluZSgiVGhpcyBsaW5lIHNob3VsZCBvY2N1ciBiZWZvcmUgdGhlIGltYWdlIGxv
YWQgaGFuZGxlci4iKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237215</attachid>
            <date>2014-08-27 00:46:21 -0700</date>
            <delta_ts>2014-08-27 15:15:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136269-20140827004613.patch</filename>
            <type>text/plain</type>
            <size>29737</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyOTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWY0YmMyOTM1MWZiMmZj
OWVjMTkxNWVmMTIzYThhMjJjNjBmN2M5Mi4uNmY2MjhlZGI2ZjA0N2VlYWJlYjE1YmY1MzZkOTg4
YTZkYmM0N2FlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE0LTA4LTI3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPGxpdGhlcnVtQGdtYWlsLmNvbT4KKworICAgICAgICBEcmF3aW5nIHRl
eHQgaW4gYW4gU1ZHIGZvbnQgY2F1c2VzIGxvYWQgZXZlbnRzIHRvIGJlIGZpcmVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYyNjkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzE1NzI0OTE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluc2lkZSBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpLCBzdGF0
aWMgZnVuY3Rpb25zIG9uIEltYWdlTG9hZGVyLCBIVE1MTGlua0VsZW1lbnQsCisgICAgICAgIGFu
ZCBIVE1MU3R5bGVFbGVtZW50IHdlcmUgY2FsbGVkLCBjYXVzaW5nIGxvYWQgZXZlbnRzIHRvIGJl
IGlzc3VlZCBmb3IgYWxsIGRvY3VtZW50cywKKyAgICAgICAgcmF0aGVyIHRoYW4ganVzdCB0aGUg
ZG9jdW1lbnQgYmVpbmcgY2xvc2VkLiBJbnN0ZWFkIG9mIGtlZXBpbmcgc3RhdGljIEV2ZW50U2Vu
ZGVycworICAgICAgICBmb3IgYWxsIGRvY3VtZW50cywgdGhpcyBwYXRjaCBhZGRzIGZpdmUgaW5z
dGFuY2UgdmFyaWFibGVzIHRvIERvY3VtZW50IHJlcHJlc25ldGluZworICAgICAgICBldmVudCBz
ZW5kZXJzIGZvciBJbWFnZUxvYWRlcnMsIEhUTUxMaW5rRWxlbWVudHMsIGFuZCBIVE1MU3R5bGVF
bGVtZW50cy4gVGhpcyB3YXksCisgICAgICAgIHRoZSBvbmx5IGxvYWQgZXZlbnRzIHRoYXQgYSBw
YXJ0aWN1bGFyIGRvY3VtZW50IHRyYWNrcyBhcmUgbG9hZCBldmVudHMgdGhhdCBhcmUKKyAgICAg
ICAgcmVsZXZhbnQgdG8gdGhhdCBwYXJ0aWN1bGFyIGRvY3VtZW50LgorCisgICAgICAgIFRlc3Q6
IGZhc3QvdGV4dC9zdmctZm9udC10cmlnZ2VyLWxvYWQtZXZlbnQuaHRtbAorCisgICAgICAgICog
ZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6
IEluaXRpYWxpemUgdGhlIGZpdmUgbmV3IHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjppbXBsaWNpdENsb3NlKTogVXNlIHRoZSBnaXZlIG5ldyB2YXJpYWJsZXMgaW5zdGVh
ZCBvZgorICAgICAgICBjYWxsaW5nIHN0YXRpYyBmdW5jdGlvbnMuCisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YmVmb3JlTG9hZEltYWdlRXZl
bnRTZW5kZXIpOiBHZXR0ZXIgZm9yIG5ldyB2YXJpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpsb2FkSW1hZ2VFdmVudFNlbmRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmVycm9ySW1hZ2VFdmVudFNlbmRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmxpbmtMb2FkRXZlbnRTZW5kZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpzdHlsZUxvYWRFdmVudFNlbmRlcik6IERpdHRvLgorICAgICAgICAqIGh0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVt
ZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6IFBhc3MgdGhlIG9sZCBkb2N1bWVudCB0aHJvdWdo
CisgICAgICAgIHRvIHRoZSBsb2FkZXIgc28gdGhlIGNvcnJlY3QgbG9hZCBldmVudHMgY2FuIGJl
IHVwZGF0ZWQuCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KTogRGl0dG8u
CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTExpbmtFbGVtZW50OjpsaW5rTG9hZEV2ZW50U2VuZGVyKTogUmVwbGFjZSBzdGF0aWMgbWV0
aG9kIHdpdGggYQorICAgICAgICB2ZXJzaW9uIHRoYXQgcmV0dXJucyB0aGUgY3VycmVudCBkb2N1
bWVudCdzIGxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OmxpbmtMb2FkRXZlbnRTZW5kZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpkaXNwYXRjaFBlbmRp
bmdMb2FkRXZlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6IFBh
c3MgdGhlIG9sZCBkb2N1bWVudCB0aHJvdWdoCisgICAgICAgIHRvIHRoZSBsb2FkZXIgc28gdGhl
IGNvcnJlY3QgbG9hZCBldmVudHMgY2FuIGJlIHVwZGF0ZWQuCisgICAgICAgICogaHRtbC9IVE1M
U3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnN0
eWxlTG9hZEV2ZW50U2VuZGVyKTogUmVwbGFjZSBzdGF0aWMgbWV0aG9kIHdpdGggYQorICAgICAg
ICB2ZXJzaW9uIHRoYXQgcmV0dXJucyB0aGUgY3VycmVudCBkb2N1bWVudCdzIGxvYWRlci4KKyAg
ICAgICAgKFdlYkNvcmU6OnN0eWxlTG9hZEV2ZW50U2VuZGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMpOiBE
ZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6IFBhc3MgdGhlIG9sZCBkb2N1bWVudCB0aHJvdWdo
CisgICAgICAgIHRvIHRoZSBsb2FkZXIgc28gdGhlIGNvcnJlY3QgbG9hZCBldmVudHMgY2FuIGJl
IHVwZGF0ZWQuCisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdU
Rjo6Pjo6Y2hlY2tDb25zaXN0ZW5jeSk6IEZ1bmN0aW9uIGRlY2xhcmF0aW9uIG5lZWRzIHRvIGJl
IGluIGhlYWRlciBzbyBmaWxlcworICAgICAgICB0aGF0IGluY2x1ZGUgdGhlIGhlYWRlciB1c2Ug
dGhlIGNvcnJlY3QgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUxvYWRlcjo6YmVmb3JlTG9hZEV2ZW50U2VuZGVyKTogUmVwbGFjZSBzdGF0aWMgZnVuY3Rp
b24gd2l0aCBhIHZlcnNpb24KKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBjdXJyZW50IGRvY3Vt
ZW50J3MgbG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OmxvYWRFdmVudFNl
bmRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OmVycm9yRXZlbnRT
ZW5kZXIpOiBESXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpzZXRJbWFnZSk6
IEFkZCBhbiBhcmd1bWVudCBzbyBlbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQoKSBjYW4KKyAg
ICAgICAgcGFzcyB0aGUgb2xkIGRvY3VtZW50IHNvIHRoZSBjb3JyZWN0IGxvYWQgZXZlbnRzIGNh
biBiZSB1cGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnNldEltYWdlV2l0
aG91dENvbnNpZGVyaW5nUGVuZGluZ0xvYWRFdmVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKTogU3BlY2lmeSBuZXcgYXJndW1lbnQuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmJlZm9yZUxvYWRFdmVudFNlbmRlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpsb2FkRXZlbnRTZW5kZXIpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6ZXJyb3JFdmVudFNlbmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50cyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJy
b3JFdmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAg
ICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6IFBhc3MgdGhlIG9sZCBkb2N1bWVudCB0
aHJvdWdoCisgICAgICAgIHRvIHRoZSBsb2FkZXIgc28gdGhlIGNvcnJlY3QgbG9hZCBldmVudHMg
Y2FuIGJlIHVwZGF0ZWQuCisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKTogQ2FsbCBp
bnRvIGN1cnJlbnQgZG9jdW1lbnQncyBsb2FkZXIgaW5zdGVhZCBvZgorICAgICAgICBjYWxsaW5n
IGEgc3RhdGljIGZ1bmN0aW9uLgorCiAyMDE0LTA4LTI2ICBCZW5qYW1pbiBQb3VsYWluICA8YnBv
dWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1pbm9yIHN0eWxlIHR3ZWFrIG9uIFN0eWxlUmVz
b2x2ZVRyZWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDFiNGFjNzc3ODY5Mjg4ZTA2MjEz
OGQ3ZDMwNGY5MzVlMzg0ZDdmYWEuLmQ0NzkzYzY5YzYyOGM2MTQzYjJiNzAzMDYyM2U4ZTA0OTgx
YWNkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTEzLDYgKzUxMywxMSBAQCBEb2N1
bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9j
dW1lbnRDbGFzc2VzLCB1bnNpZwogI2VuZGlmCiAgICAgLCBtX2RpZEFzc29jaWF0ZUZvcm1Db250
cm9sc1RpbWVyKHRoaXMsICZEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJG
aXJlZCkKICAgICAsIG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQoMCkKKyAgICAsIG1f
YmVmb3JlTG9hZEltYWdlRXZlbnRTZW5kZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCkK
KyAgICAsIG1fbG9hZEltYWdlRXZlbnRTZW5kZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCkKKyAg
ICAsIG1fZXJyb3JJbWFnZUV2ZW50U2VuZGVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KQorICAg
ICwgbV9saW5rTG9hZEV2ZW50U2VuZGVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpCisgICAgLCBt
X3N0eWxlTG9hZEV2ZW50U2VuZGVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpCiAgICAgLCBtX2hh
c0luamVjdGVkUGx1Z0luc1NjcmlwdChmYWxzZSkKICAgICAsIG1fcmVuZGVyVHJlZUJlaW5nRGVz
dHJveWVkKGZhbHNlKQogICAgICwgbV9oYXNQcmVwYXJlZEZvckRlc3RydWN0aW9uKGZhbHNlKQpA
QCAtMjM4MiwxMiArMjM4NywxMiBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKICAg
ICAgICAgZi0+YW5pbWF0aW9uKCkuc3RhcnRBbmltYXRpb25zSWZOb3RTdXNwZW5kZWQodGhpcyk7
CiAgICAgfQogCi0gICAgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVu
dHMoKTsKLSAgICBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOwotICAg
IEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdFcnJvckV2ZW50cygpOworICAgIGJlZm9yZUxv
YWRJbWFnZUV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7CisgICAgbG9hZElt
YWdlRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKKyAgICBlcnJvckltYWdl
RXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKIAotICAgIEhUTUxMaW5rRWxl
bWVudDo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOwotICAgIEhUTUxTdHlsZUVsZW1lbnQ6
OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKKyAgICBsaW5rTG9hZEV2ZW50U2VuZGVyKCku
ZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7CisgICAgc3R5bGVMb2FkRXZlbnRTZW5kZXIoKS5kaXNw
YXRjaFBlbmRpbmdFdmVudHMoKTsKIAogICAgIC8vIFRvIGFsaWduIHRoZSBIVE1MIGxvYWQgZXZl
bnQgYW5kIHRoZSBTVkdMb2FkIGV2ZW50IGZvciB0aGUgb3V0ZXJtb3N0IDxzdmc+IGVsZW1lbnQs
IGZpcmUgaXQgZnJvbQogICAgIC8vIGhlcmUsIGluc3RlYWQgb2YgZG9pbmcgaXQgZnJvbSBTVkdF
bGVtZW50OjpmaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiAoaWYgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZD0iZmFsc2UiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBiNmM1MTBkMGZhODRjZDYyZDc0
MmI4ZmQ1YzlhMGM1OTg5MmIzZDhiLi43YWI0Mzc4ZDJhZWM1MDk1N2FhOTkxZWY0ZDQ4N2I2ZWJi
MTZmOTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQsOCArMzQsMTAgQEAKICNpbmNsdWRl
ICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1pbmcuaCIKKyNpbmNsdWRlICJFdmVudFNl
bmRlci5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5o
IgorI2luY2x1ZGUgIkltYWdlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5o
IgogI2luY2x1ZGUgIlBhZ2VWaXNpYmlsaXR5U3RhdGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNj
cmVlbi5oIgpAQCAtMTA4LDEwICsxMTAsMTIgQEAgY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50
OwogY2xhc3MgSFRNTEhlYWRFbGVtZW50OwogY2xhc3MgSFRNTElGcmFtZUVsZW1lbnQ7CiBjbGFz
cyBIVE1MSW1hZ2VFbGVtZW50OworY2xhc3MgSFRNTExpbmtFbGVtZW50OwogY2xhc3MgSFRNTE1h
cEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgSFRNTE5hbWVDb2xsZWN0
aW9uOwogY2xhc3MgSFRNTFNjcmlwdEVsZW1lbnQ7CitjbGFzcyBIVE1MU3R5bGVFbGVtZW50Owog
Y2xhc3MgSGl0VGVzdFJlcXVlc3Q7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgSW50UG9p
bnQ7CkBAIC0xNjAsNiArMTY0LDEwIEBAIGNsYXNzIFhQYXRoRXhwcmVzc2lvbjsKIGNsYXNzIFhQ
YXRoTlNSZXNvbHZlcjsKIGNsYXNzIFhQYXRoUmVzdWx0OwogCit0eXBlZGVmIEV2ZW50U2VuZGVy
PEltYWdlTG9hZGVyPiBJbWFnZUV2ZW50U2VuZGVyOwordHlwZWRlZiBFdmVudFNlbmRlcjxIVE1M
TGlua0VsZW1lbnQ+IExpbmtFdmVudFNlbmRlcjsKK3R5cGVkZWYgRXZlbnRTZW5kZXI8SFRNTFN0
eWxlRWxlbWVudD4gU3R5bGVFdmVudFNlbmRlcjsKKwogI2lmIEVOQUJMRShYU0xUKQogY2xhc3Mg
VHJhbnNmb3JtU291cmNlOwogI2VuZGlmCkBAIC0xMjgwLDYgKzEyODgsMTIgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzU3R5bGVXaXRoVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1faGFz
U3R5bGVXaXRoVmlld3BvcnRVbml0czsgfQogICAgIHZvaWQgdXBkYXRlVmlld3BvcnRVbml0c09u
UmVzaXplKCk7CiAKKyAgICBJbWFnZUV2ZW50U2VuZGVyJiBiZWZvcmVMb2FkSW1hZ2VFdmVudFNl
bmRlcigpIHsgcmV0dXJuIG1fYmVmb3JlTG9hZEltYWdlRXZlbnRTZW5kZXI7IH0KKyAgICBJbWFn
ZUV2ZW50U2VuZGVyJiBsb2FkSW1hZ2VFdmVudFNlbmRlcigpIHsgcmV0dXJuIG1fbG9hZEltYWdl
RXZlbnRTZW5kZXI7IH0KKyAgICBJbWFnZUV2ZW50U2VuZGVyJiBlcnJvckltYWdlRXZlbnRTZW5k
ZXIoKSB7IHJldHVybiBtX2Vycm9ySW1hZ2VFdmVudFNlbmRlcjsgfQorICAgIExpbmtFdmVudFNl
bmRlciYgbGlua0xvYWRFdmVudFNlbmRlcigpIHsgcmV0dXJuIG1fbGlua0xvYWRFdmVudFNlbmRl
cjsgfQorICAgIFN0eWxlRXZlbnRTZW5kZXImIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkgeyByZXR1
cm4gbV9zdHlsZUxvYWRFdmVudFNlbmRlcjsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBDb25z
dHJ1Y3Rpb25GbGFncyB7IFN5bnRoZXNpemVkID0gMSwgTm9uUmVuZGVyZWRQbGFjZWhvbGRlciA9
IDEgPDwgMSB9OwogICAgIERvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJiwgdW5zaWduZWQgPSBE
ZWZhdWx0RG9jdW1lbnRDbGFzcywgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3MgPSAwKTsKQEAg
LTE2OTIsNiArMTcwNiwxMiBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8UmVmUHRyPEVsZW1lbnQ+
PiBtX2Fzc29jaWF0ZWRGb3JtQ29udHJvbHM7CiAgICAgdW5zaWduZWQgbV9kaXNhYmxlZEZpZWxk
c2V0RWxlbWVudHNDb3VudDsKIAorICAgIEltYWdlRXZlbnRTZW5kZXIgbV9iZWZvcmVMb2FkSW1h
Z2VFdmVudFNlbmRlcjsKKyAgICBJbWFnZUV2ZW50U2VuZGVyIG1fbG9hZEltYWdlRXZlbnRTZW5k
ZXI7CisgICAgSW1hZ2VFdmVudFNlbmRlciBtX2Vycm9ySW1hZ2VFdmVudFNlbmRlcjsKKyAgICBM
aW5rRXZlbnRTZW5kZXIgbV9saW5rTG9hZEV2ZW50U2VuZGVyOworICAgIFN0eWxlRXZlbnRTZW5k
ZXIgbV9zdHlsZUxvYWRFdmVudFNlbmRlcjsKKwogICAgIGJvb2wgbV9oYXNJbmplY3RlZFBsdWdJ
bnNTY3JpcHQ7CiAgICAgYm9vbCBtX3JlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZDsKICAgICBib29s
IG1faGFzUHJlcGFyZWRGb3JEZXN0cnVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCmluZGV4IGY3MDA5Mzk2ODBkZjVhZjViYTk1ZmVjMDA1ZjFlYTI2MjA2MzRi
OWEuLjZjMmYxMDZiMmJhMTEwMjE5ODg1ZjE0MTMyZjMxYzRhMTA5NTdhMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtNDYwLDcgKzQ2MCw3IEBAIHZvaWQg
SFRNTEltYWdlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0
PFVSTD4mIHVybHMpIGNvbnN0CiAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3
RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogewotICAgIG1faW1hZ2VMb2FkZXIuZWxl
bWVudERpZE1vdmVUb05ld0RvY3VtZW50KCk7CisgICAgbV9pbWFnZUxvYWRlci5lbGVtZW50RGlk
TW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOwogICAgIEhUTUxFbGVtZW50OjpkaWRNb3Zl
VG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCmluZGV4IDNlNjY4NTM0MWJmZjJhYjUxYWEyZDk4ZTM0MDNlZjUxOGY4
OGE0YTcuLmU1NTYyNDkxYzdkNjMwM2JlMjVjZmEyMGE1ZDc2YWFlODI2NmNjMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTQ1Niw3ICsxNDU2LDcgQEAg
dm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRp
b25Qb2ludCkKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9j
dW1lbnQqIG9sZERvY3VtZW50KQogewogICAgIGlmIChoYXNJbWFnZUxvYWRlcigpKQotICAgICAg
ICBpbWFnZUxvYWRlcigpLT5lbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQoKTsKKyAgICAgICAg
aW1hZ2VMb2FkZXIoKS0+ZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsK
IAogICAgIGJvb2wgbmVlZHNTdXNwZW5zaW9uQ2FsbGJhY2sgPSB0aGlzLT5uZWVkc1N1c3BlbnNp
b25DYWxsYmFjaygpOwogICAgIGlmIChvbGREb2N1bWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGI4NTExNDVmMDhmNzE4MjI4NDVhMzhiNTQxNjAzNmE5
ZDM2N2E1NTQuLjk1ZTQzNWJmNDJhN2ZlZTkyNWM4ZTE5OGI2MTVjODRhNzZmMzQwY2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTU3LDEyICs1Nyw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotc3RhdGlj
IExpbmtFdmVudFNlbmRlciYgbGlua0xvYWRFdmVudFNlbmRlcigpCi17Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKExpbmtFdmVudFNlbmRlciwgc2hhcmVkTG9hZEV2ZW50U2Vu
ZGVyLCAoZXZlbnROYW1lcygpLmxvYWRFdmVudCkpOwotICAgIHJldHVybiBzaGFyZWRMb2FkRXZl
bnRTZW5kZXI7Ci19Ci0KIGlubGluZSBIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgY3Jl
YXRlZEJ5UGFyc2VyKQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAg
LCBtX2xpbmtMb2FkZXIodGhpcykKQEAgLTk3LDYgKzkxLDExIEBAIEhUTUxMaW5rRWxlbWVudDo6
fkhUTUxMaW5rRWxlbWVudCgpCiAgICAgbGlua0xvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50
KHRoaXMpOwogfQogCitMaW5rRXZlbnRTZW5kZXImIEhUTUxMaW5rRWxlbWVudDo6bGlua0xvYWRF
dmVudFNlbmRlcigpCit7CisgICAgcmV0dXJuIGRvY3VtZW50KCkubGlua0xvYWRFdmVudFNlbmRl
cigpOworfQorCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0RGlzYWJsZWRTdGF0ZShib29sIGRp
c2FibGVkKQogewogICAgIERpc2FibGVkU3RhdGUgb2xkRGlzYWJsZWRTdGF0ZSA9IG1fZGlzYWJs
ZWRTdGF0ZTsKQEAgLTM2MSwxMSArMzYwLDYgQEAgYm9vbCBIVE1MTGlua0VsZW1lbnQ6OnNoZWV0
TG9hZGVkKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSFRNTExpbmtFbGVtZW50Ojpk
aXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkKLXsKLSAgICBsaW5rTG9hZEV2ZW50U2VuZGVyKCku
ZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KIHZvaWQgSFRNTExpbmtFbGVtZW50OjpkaXNw
YXRjaFBlbmRpbmdFdmVudChMaW5rRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKQogewogICAgIEFT
U0VSVF9VTlVTRUQoZXZlbnRTZW5kZXIsIGV2ZW50U2VuZGVyID09ICZsaW5rTG9hZEV2ZW50U2Vu
ZGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggNjViMzI0MTc2
MDEwODE5M2EyOWM5NzNhMDljOWQxZTVjNWQ3M2U1OS4uY2ZkMGE4NDUzMTRjNzVlYmNiNjE4MDA0
ODJjNGIwODUwMGY0NDdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBA
IC02OSw3ICs2OSw2IEBAIHB1YmxpYzoKICAgICBET01TZXR0YWJsZVRva2VuTGlzdCogc2l6ZXMo
KSBjb25zdDsKIAogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nRXZlbnQoTGlua0V2ZW50U2VuZGVy
Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOwogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CkBAIC05MSw2ICs5MCw4IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGxpbmtMb2FkZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgbGlua0xvYWRpbmdFcnJvcmVkKCkgb3ZlcnJpZGU7CiAKKyAgICBMaW5rRXZlbnRTZW5k
ZXImIGxpbmtMb2FkRXZlbnRTZW5kZXIoKTsKKwogICAgIGJvb2wgaXNBbHRlcm5hdGUoKSBjb25z
dCB7IHJldHVybiBtX2Rpc2FibGVkU3RhdGUgPT0gVW5zZXQgJiYgbV9yZWxBdHRyaWJ1dGUubV9p
c0FsdGVybmF0ZTsgfQogICAgIAogICAgIHZvaWQgc2V0RGlzYWJsZWRTdGF0ZShib29sKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IDQ5
NmVkNWIwMGEwYmM0Yjg2MWYxZWY1ZjNmZWEzNmE5ZDFiMjQ4MzAuLmEzMmZhM2ZiZTQ1ZmNlOGE4
ZDU4NmU3NjEzYzQxYTczOGUyMGU2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50
KQogICAgIH0KIAogICAgIGlmIChtX2ltYWdlTG9hZGVyKQotICAgICAgICBtX2ltYWdlTG9hZGVy
LT5lbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQoKTsKKyAgICAgICAgbV9pbWFnZUxvYWRlci0+
ZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKIAogICAgIEhUTUxQbHVn
SW5FbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAppbmRleCBjNTllZjE2ODVkNmJiYzZlNWM5
N2ViN2NiMWE3ODUxZTI3NzE3YTY5Li42ZDI2MzMxNzUyMGI1YWVkOTFiM2I0ZDg5NjVmMzRmMzM1
YTZjNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTM5
LDEyICszOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAotc3RhdGljIFN0eWxlRXZlbnRTZW5kZXImIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkK
LXsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVFdmVudFNlbmRlciwg
c2hhcmVkTG9hZEV2ZW50U2VuZGVyLCAoZXZlbnROYW1lcygpLmxvYWRFdmVudCkpOwotICAgIHJl
dHVybiBzaGFyZWRMb2FkRXZlbnRTZW5kZXI7Ci19Ci0KIGlubGluZSBIVE1MU3R5bGVFbGVtZW50
OjpIVE1MU3R5bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKICAgICAsIG1fc3R5bGVTaGVldE93bmVyKGRvY3VtZW50LCBjcmVhdGVk
QnlQYXJzZXIpCkBAIC02OCw2ICs2MiwxMSBAQCBQYXNzUmVmUHRyPEhUTUxTdHlsZUVsZW1lbnQ+
IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYQogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFN0eWxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwg
Y3JlYXRlZEJ5UGFyc2VyKSk7CiB9CiAKK1N0eWxlRXZlbnRTZW5kZXImIEhUTUxTdHlsZUVsZW1l
bnQ6OnN0eWxlTG9hZEV2ZW50U2VuZGVyKCkKK3sKKyAgICByZXR1cm4gZG9jdW1lbnQoKS5zdHls
ZUxvYWRFdmVudFNlbmRlcigpOworfQorCiB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gdGl0bGVBdHRyICYmIHNoZWV0KCkpCkBAIC0xMTQsMTEg
KzExMyw2IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENo
aWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgbV9zdHlsZVNoZWV0T3duZXIuY2hpbGRyZW5DaGFuZ2Vk
KCp0aGlzKTsKIH0KIAotdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdMb2Fk
RXZlbnRzKCkKLXsKLSAgICBzdHlsZUxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2
ZW50cygpOwotfQotCiB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50
KFN0eWxlRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoZXZl
bnRTZW5kZXIsIGV2ZW50U2VuZGVyID09ICZzdHlsZUxvYWRFdmVudFNlbmRlcigpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgKaW5kZXggOTk1N2JhNTA3MDI4MjFhYmFlZjY4
ZDA3MjJmZTdkNTZmMTY0NDM4MC4uZmZmZDQwMjQ3NDQ3ODQxMzc1NmI4ZGU1MjZhMTliZmFiNTNl
NGY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgKQEAgLTQ1LDcgKzQ1
LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCk7CiAKICAgICB2b2lkIGRp
c3BhdGNoUGVuZGluZ0V2ZW50KFN0eWxlRXZlbnRTZW5kZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBk
aXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7CiAKIHByaXZhdGU6CiAgICAgSFRNTFN0eWxlRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNl
cik7CkBAIC02NSw2ICs2NCw4IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBvdmVycmlkZTsK
IAorICAgIFN0eWxlRXZlbnRTZW5kZXImIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCk7CisKICAgICBJ
bmxpbmVTdHlsZVNoZWV0T3duZXIgbV9zdHlsZVNoZWV0T3duZXI7CiAgICAgYm9vbCBtX2ZpcmVk
TG9hZDsKICAgICBib29sIG1fbG9hZGVkU2hlZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcAppbmRleCBiOGI5ZWU5Y2FlZjljN2I1ZmUyN2E4OWQyNDQ0M2ZhNTAwMzNh
Y2IyLi5kMWRkNzQxZGYzYzQxODNkMjY4YzM0ZjJiNzA0ZGQxNjU2NWM5ODMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lk
IEhUTUxWaWRlb0VsZW1lbnQ6OnNldFdlYmtpdFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVk
KGJvb2wgZGlzYWJsZWQpCiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3Vt
ZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKIHsKICAgICBpZiAobV9pbWFnZUxvYWRlcikKLSAg
ICAgICAgbV9pbWFnZUxvYWRlci0+ZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50KCk7CisgICAg
ICAgIG1faW1hZ2VMb2FkZXItPmVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVu
dCk7CiAgICAgSFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1l
bnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCA3ZDk0ZmM4
NmY3NmE4ZWM2ODY1YTY3MGI0MDlkOTliMDYyNjZmMTk4Li5iZTI2MDlhOTdmOWYzMWYzYjA5NTU4
MjBmMDFlYjc1NzhkMThkNDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1h
Z2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAK
QEAgLTQ3LDM4ICs0NywzMCBAQAogI2lmICFBU1NFUlRfRElTQUJMRUQKIC8vIEltYWdlTG9hZGVy
IG9iamVjdHMgYXJlIGFsbG9jYXRlZCBhcyBtZW1iZXJzIG9mIG90aGVyIG9iamVjdHMsIHNvIGdl
bmVyaWMgcG9pbnRlciBjaGVjayB3b3VsZCBhbHdheXMgZmFpbC4KIG5hbWVzcGFjZSBXVEYgewot
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBWYWx1ZUNoZWNrPFdlYkNvcmU6OkltYWdlTG9hZGVyKj4gewot
ICAgIHR5cGVkZWYgV2ViQ29yZTo6SW1hZ2VMb2FkZXIqIFRyYWl0VHlwZTsKLSAgICBzdGF0aWMg
dm9pZCBjaGVja0NvbnNpc3RlbmN5KGNvbnN0IFdlYkNvcmU6OkltYWdlTG9hZGVyKiBwKQotICAg
IHsKLSAgICAgICAgaWYgKCFwKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBWYWx1ZUNo
ZWNrPFdlYkNvcmU6OkVsZW1lbnQqPjo6Y2hlY2tDb25zaXN0ZW5jeSgmcC0+ZWxlbWVudCgpKTsK
LSAgICB9Ci19OwotCit2b2lkIFZhbHVlQ2hlY2s8V2ViQ29yZTo6SW1hZ2VMb2FkZXIqPjo6Y2hl
Y2tDb25zaXN0ZW5jeShjb25zdCBXZWJDb3JlOjpJbWFnZUxvYWRlciogcCkKK3sKKyAgICBpZiAo
IXApCisgICAgICAgIHJldHVybjsKKyAgICBWYWx1ZUNoZWNrPFdlYkNvcmU6OkVsZW1lbnQqPjo6
Y2hlY2tDb25zaXN0ZW5jeSgmcC0+ZWxlbWVudCgpKTsKK30KIH0KICNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBJbWFnZUV2ZW50U2VuZGVyJiBiZWZvcmVMb2FkRXZlbnRT
ZW5kZXIoKQorSW1hZ2VFdmVudFNlbmRlciYgSW1hZ2VMb2FkZXI6OmJlZm9yZUxvYWRFdmVudFNl
bmRlcigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEltYWdlRXZlbnRTZW5kZXI+IHNl
bmRlcihldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50KTsKLSAgICByZXR1cm4gc2VuZGVyOwor
ICAgIHJldHVybiBlbGVtZW50KCkuZG9jdW1lbnQoKS5iZWZvcmVMb2FkSW1hZ2VFdmVudFNlbmRl
cigpOwogfQogCi1zdGF0aWMgSW1hZ2VFdmVudFNlbmRlciYgbG9hZEV2ZW50U2VuZGVyKCkKK0lt
YWdlRXZlbnRTZW5kZXImIEltYWdlTG9hZGVyOjpsb2FkRXZlbnRTZW5kZXIoKQogewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxJbWFnZUV2ZW50U2VuZGVyPiBzZW5kZXIoZXZlbnROYW1lcygp
LmxvYWRFdmVudCk7Ci0gICAgcmV0dXJuIHNlbmRlcjsKKyAgICByZXR1cm4gZWxlbWVudCgpLmRv
Y3VtZW50KCkubG9hZEltYWdlRXZlbnRTZW5kZXIoKTsKIH0KIAotc3RhdGljIEltYWdlRXZlbnRT
ZW5kZXImIGVycm9yRXZlbnRTZW5kZXIoKQorSW1hZ2VFdmVudFNlbmRlciYgSW1hZ2VMb2FkZXI6
OmVycm9yRXZlbnRTZW5kZXIoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJbWFnZUV2
ZW50U2VuZGVyPiBzZW5kZXIoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOwotICAgIHJldHVybiBz
ZW5kZXI7CisgICAgcmV0dXJuIGVsZW1lbnQoKS5kb2N1bWVudCgpLmVycm9ySW1hZ2VFdmVudFNl
bmRlcigpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgcGFnZUlzQmVpbmdEaXNtaXNzZWQoRG9j
dW1lbnQmIGRvY3VtZW50KQpAQCAtMTIzLDMzICsxMTUsMzMgQEAgSW1hZ2VMb2FkZXI6On5JbWFn
ZUxvYWRlcigpCiAgICAgICAgIGVsZW1lbnQoKS5kZXJlZigpOwogfQogCi12b2lkIEltYWdlTG9h
ZGVyOjpzZXRJbWFnZShDYWNoZWRJbWFnZSogbmV3SW1hZ2UpCit2b2lkIEltYWdlTG9hZGVyOjpz
ZXRJbWFnZShDYWNoZWRJbWFnZSogbmV3SW1hZ2UsIERvY3VtZW50KiBvbGRJbWFnZURvY3VtZW50
KQogewotICAgIHNldEltYWdlV2l0aG91dENvbnNpZGVyaW5nUGVuZGluZ0xvYWRFdmVudChuZXdJ
bWFnZSk7CisgICAgc2V0SW1hZ2VXaXRob3V0Q29uc2lkZXJpbmdQZW5kaW5nTG9hZEV2ZW50KG5l
d0ltYWdlLCBvbGRJbWFnZURvY3VtZW50ID8gb2xkSW1hZ2VEb2N1bWVudCA6ICZlbGVtZW50KCku
ZG9jdW1lbnQoKSk7CiAKICAgICAvLyBPbmx5IGNvbnNpZGVyIHVwZGF0aW5nIHRoZSBwcm90ZWN0
aW9uIHJlZi1jb3VudCBvZiB0aGUgRWxlbWVudCBpbW1lZGlhdGVseSBiZWZvcmUgcmV0dXJuaW5n
CiAgICAgLy8gZnJvbSB0aGlzIGZ1bmN0aW9uIGFzIGRvaW5nIHNvIG1pZ2h0IHJlc3VsdCBpbiB0
aGUgZGVzdHJ1Y3Rpb24gb2YgdGhpcyBJbWFnZUxvYWRlci4KICAgICB1cGRhdGVkSGFzUGVuZGlu
Z0V2ZW50KCk7CiB9CiAKLXZvaWQgSW1hZ2VMb2FkZXI6OnNldEltYWdlV2l0aG91dENvbnNpZGVy
aW5nUGVuZGluZ0xvYWRFdmVudChDYWNoZWRJbWFnZSogbmV3SW1hZ2UpCit2b2lkIEltYWdlTG9h
ZGVyOjpzZXRJbWFnZVdpdGhvdXRDb25zaWRlcmluZ1BlbmRpbmdMb2FkRXZlbnQoQ2FjaGVkSW1h
Z2UqIG5ld0ltYWdlLCBEb2N1bWVudCogb2xkSW1hZ2VEb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
bV9mYWlsZWRMb2FkVVJMLmlzRW1wdHkoKSk7CiAgICAgQ2FjaGVkSW1hZ2UqIG9sZEltYWdlID0g
bV9pbWFnZS5nZXQoKTsKICAgICBpZiAobmV3SW1hZ2UgIT0gb2xkSW1hZ2UpIHsKLSAgICAgICAg
bV9pbWFnZSA9IG5ld0ltYWdlOwogICAgICAgICBpZiAobV9oYXNQZW5kaW5nQmVmb3JlTG9hZEV2
ZW50KSB7Ci0gICAgICAgICAgICBiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0
aGlzKTsKKyAgICAgICAgICAgIG9sZEltYWdlRG9jdW1lbnQtPmJlZm9yZUxvYWRJbWFnZUV2ZW50
U2VuZGVyKCkuY2FuY2VsRXZlbnQodGhpcyk7CiAgICAgICAgICAgICBtX2hhc1BlbmRpbmdCZWZv
cmVMb2FkRXZlbnQgPSBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAobV9oYXNQZW5kaW5n
TG9hZEV2ZW50KSB7Ci0gICAgICAgICAgICBsb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0
aGlzKTsKKyAgICAgICAgICAgIG9sZEltYWdlRG9jdW1lbnQtPmxvYWRJbWFnZUV2ZW50U2VuZGVy
KCkuY2FuY2VsRXZlbnQodGhpcyk7CiAgICAgICAgICAgICBtX2hhc1BlbmRpbmdMb2FkRXZlbnQg
PSBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAobV9oYXNQZW5kaW5nRXJyb3JFdmVudCkg
ewotICAgICAgICAgICAgZXJyb3JFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRoaXMpOworICAg
ICAgICAgICAgb2xkSW1hZ2VEb2N1bWVudC0+ZXJyb3JJbWFnZUV2ZW50U2VuZGVyKCkuY2FuY2Vs
RXZlbnQodGhpcyk7CiAgICAgICAgICAgICBtX2hhc1BlbmRpbmdFcnJvckV2ZW50ID0gZmFsc2U7
CiAgICAgICAgIH0KKyAgICAgICAgbV9pbWFnZSA9IG5ld0ltYWdlOwogICAgICAgICBtX2ltYWdl
Q29tcGxldGUgPSB0cnVlOwogICAgICAgICBpZiAobmV3SW1hZ2UpCiAgICAgICAgICAgICBuZXdJ
bWFnZS0+YWRkQ2xpZW50KHRoaXMpOwpAQCAtMjg4LDcgKzI4MCw3IEBAIHZvaWQgSW1hZ2VMb2Fk
ZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICAgICAgJiYg
IWVsZW1lbnQoKS5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoaW1hZ2Uo
KS0+cmVzcG9uc2UoKS51cmwoKSkKICAgICAgICAgJiYgIXJlc291cmNlLT5wYXNzZXNBY2Nlc3ND
b250cm9sQ2hlY2soZWxlbWVudCgpLmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSkpIHsKIAot
ICAgICAgICBzZXRJbWFnZVdpdGhvdXRDb25zaWRlcmluZ1BlbmRpbmdMb2FkRXZlbnQoMCk7Cisg
ICAgICAgIHNldEltYWdlV2l0aG91dENvbnNpZGVyaW5nUGVuZGluZ0xvYWRFdmVudChudWxscHRy
LCAmZWxlbWVudCgpLmRvY3VtZW50KCkpOwogCiAgICAgICAgIG1faGFzUGVuZGluZ0Vycm9yRXZl
bnQgPSB0cnVlOwogICAgICAgICBlcnJvckV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24o
dGhpcyk7CkBAIC00NDgsMjUgKzQ0MCwxMCBAQCB2b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBl
bmRpbmdFcnJvckV2ZW50KCkKICAgICB1cGRhdGVkSGFzUGVuZGluZ0V2ZW50KCk7CiB9CiAKLXZv
aWQgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudHMoKQotewotICAg
IGJlZm9yZUxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOwotfQotCi12
b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkKLXsKLSAgICBsb2Fk
RXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKLX0KLQotdm9pZCBJbWFnZUxv
YWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJyb3JFdmVudHMoKQotewotICAgIGVycm9yRXZlbnRTZW5k
ZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKLX0KLQotdm9pZCBJbWFnZUxvYWRlcjo6ZWxl
bWVudERpZE1vdmVUb05ld0RvY3VtZW50KCkKK3ZvaWQgSW1hZ2VMb2FkZXI6OmVsZW1lbnREaWRN
b3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiB7CiAgICAgY2xlYXJGYWls
ZWRMb2FkVVJMKCk7Ci0gICAgc2V0SW1hZ2UoMCk7CisgICAgc2V0SW1hZ2UobnVsbHB0ciwgb2xk
RG9jdW1lbnQpOwogfQogCiBpbmxpbmUgdm9pZCBJbWFnZUxvYWRlcjo6Y2xlYXJGYWlsZWRMb2Fk
VVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggNWYzNzI0Y2NhYmI2NWVm
YTc4YmZkZjg2N2RhMWYyNzhkNGRkZDczZC4uNjJhMGQ1NTBlZGJmZTc2MzZkNmY1MDRkZTVkOWNj
NDZlZDA3OGNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKQEAgLTMwLDYgKzMw
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVs
ZW1lbnQ7CiBjbGFzcyBJbWFnZUxvYWRlcjsKIGNsYXNzIFJlbmRlckltYWdlUmVzb3VyY2U7CkBA
IC01MCw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAvLyBkb2Vzbid0IGNoYW5nZTsgc3RhcnRzIG5l
dyBsb2FkIHVuY29uZGl0aW9uYWxseSAobWF0Y2hlcyBGaXJlZm94IGFuZCBPcGVyYSBiZWhhdmlv
cikuCiAgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwog
Ci0gICAgdm9pZCBlbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQoKTsKKyAgICB2b2lkIGVsZW1l
bnREaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpOwogCiAgICAgRWxl
bWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIG1fZWxlbWVudDsgfQogICAgIGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KQEAgLTU4LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaW1hZ2VDb21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VD
b21wbGV0ZTsgfQogCiAgICAgQ2FjaGVkSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9p
bWFnZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0SW1hZ2UoQ2FjaGVkSW1hZ2UqKTsgLy8gQ2FuY2Vs
cyBwZW5kaW5nIGJlZm9yZWxvYWQgYW5kIGxvYWQgZXZlbnRzLCBhbmQgZG9lc24ndCBkaXNwYXRj
aCBuZXcgb25lcy4KKyAgICB2b2lkIHNldEltYWdlKENhY2hlZEltYWdlKiwgRG9jdW1lbnQqIG9s
ZEltYWdlRG9jdW1lbnQgPSBudWxscHRyKTsgLy8gQ2FuY2VscyBwZW5kaW5nIGJlZm9yZWxvYWQg
YW5kIGxvYWQgZXZlbnRzLCBhbmQgZG9lc24ndCBkaXNwYXRjaCBuZXcgb25lcy4KIAogICAgIHZv
aWQgc2V0TG9hZE1hbnVhbGx5KGJvb2wgbG9hZE1hbnVhbGx5KSB7IG1fbG9hZE1hbnVhbGx5ID0g
bG9hZE1hbnVhbGx5OyB9CiAKQEAgLTY3LDEwICs2OCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoSW1hZ2VFdmVudFNlbmRlciopOwogCi0gICAgc3RhdGljIHZv
aWQgZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50cygpOwotICAgIHN0YXRpYyB2b2lkIGRp
c3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFBlbmRp
bmdFcnJvckV2ZW50cygpOwotCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgSW1hZ2VMb2FkZXIo
RWxlbWVudCYpOwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSopIG92ZXJyaWRlOwpAQCAtNzksNiArNzYsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc291cmNlVVJJ
KGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0ID0gMDsKIAorICAgIEltYWdlRXZlbnRTZW5kZXIm
IGJlZm9yZUxvYWRFdmVudFNlbmRlcigpOworICAgIEltYWdlRXZlbnRTZW5kZXImIGxvYWRFdmVu
dFNlbmRlcigpOworICAgIEltYWdlRXZlbnRTZW5kZXImIGVycm9yRXZlbnRTZW5kZXIoKTsKKwog
ICAgIHZvaWQgdXBkYXRlZEhhc1BlbmRpbmdFdmVudCgpOwogCiAgICAgdm9pZCBkaXNwYXRjaFBl
bmRpbmdCZWZvcmVMb2FkRXZlbnQoKTsKQEAgLTg4LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBS
ZW5kZXJJbWFnZVJlc291cmNlKiByZW5kZXJJbWFnZVJlc291cmNlKCk7CiAgICAgdm9pZCB1cGRh
dGVSZW5kZXJlcigpOwogCi0gICAgdm9pZCBzZXRJbWFnZVdpdGhvdXRDb25zaWRlcmluZ1BlbmRp
bmdMb2FkRXZlbnQoQ2FjaGVkSW1hZ2UqKTsKKyAgICB2b2lkIHNldEltYWdlV2l0aG91dENvbnNp
ZGVyaW5nUGVuZGluZ0xvYWRFdmVudChDYWNoZWRJbWFnZSosIERvY3VtZW50KiBvbGRJbWFnZURv
Y3VtZW50KTsKICAgICB2b2lkIGNsZWFyRmFpbGVkTG9hZFVSTCgpOwogCiAgICAgdm9pZCB0aW1l
ckZpcmVkKFRpbWVyPEltYWdlTG9hZGVyPiYpOwpAQCAtMTA3LDQgKzEwOCwxNCBAQCBwcml2YXRl
OgogCiB9CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisvLyBJbWFnZUxvYWRlciBvYmplY3RzIGFy
ZSBhbGxvY2F0ZWQgYXMgbWVtYmVycyBvZiBvdGhlciBvYmplY3RzLCBzbyBnZW5lcmljIHBvaW50
ZXIgY2hlY2sgd291bGQgYWx3YXlzIGZhaWwuCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPD4g
c3RydWN0IFZhbHVlQ2hlY2s8V2ViQ29yZTo6SW1hZ2VMb2FkZXIqPiB7CisgICAgdHlwZWRlZiBX
ZWJDb3JlOjpJbWFnZUxvYWRlciogVHJhaXRUeXBlOworICAgIHN0YXRpYyB2b2lkIGNoZWNrQ29u
c2lzdGVuY3koY29uc3QgV2ViQ29yZTo6SW1hZ2VMb2FkZXIqIHApOworfTsKK30KKyNlbmRpZgor
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKaW5kZXggNTc0ODc2
NTZkNDRjYTRlNWMzNmQwMGM0YjJhZGRiNWUxMTJkNDIxNS4uOGRiOGM5NGZhMjQyODYwYjI5NDJh
ZWI5M2VhYmFjMzk0MGE3ZTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0lt
YWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5j
cHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6YWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiAKIHZvaWQgU1ZH
SW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQp
CiB7Ci0gICAgbV9pbWFnZUxvYWRlci5lbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQoKTsKKyAg
ICBtX2ltYWdlTG9hZGVyLmVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7
CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVu
dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ci5jcHAKaW5kZXggMTFlMzQ3ZTAzYTViZjMwZTIzM2UyNjM2MDBhNWU5MzIxNjUzYTUzMy4uODBj
MjE2YTg1OWEzYWRkMTc5YjU2MWMwOTg2MGExZDc4NGJlOGRiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTEyMiw3ICsxMjIsOCBA
QCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjphcHBlbmQoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBp
bnB1dFNvdXJjZSkKICAgICBkb1dyaXRlKHNvdXJjZS50b1N0cmluZygpKTsKIAogICAgIC8vIEFm
dGVyIHBhcnNpbmcsIGdvIGFoZWFkIGFuZCBkaXNwYXRjaCBpbWFnZSBiZWZvcmVsb2FkIGV2ZW50
cy4KLSAgICBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50cygpOwor
ICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpCisgICAgICAgIGRvY3Vt
ZW50LT5iZWZvcmVMb2FkSW1hZ2VFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2ZW50cygp
OwogfQogCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcihYTUxFcnJvcnM6OkVy
cm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtLCBUZXh0UG9zaXRpb24gcG9zaXRpb24pCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNjRjNjE1NjFhNGZmOWUwZDg1Y2I0OTExZjZjZTg5NjEzYmE3ZGU5NS4uYjNjMWYwZDk3NGE1
NjU3Mzg3MGM4ODA1YzNhNmY3OTg3OGUzNWU2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0
LTA4LTI3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPGxpdGhlcnVtQGdtYWlsLmNvbT4KKworICAgICAg
ICBEcmF3aW5nIHRleHQgaW4gYW4gU1ZHIGZvbnQgY2F1c2VzIGxvYWQgZXZlbnRzIHRvIGJlIGZp
cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYy
NjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1NzI0OTE1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IGRyYXdpbmcgdGV4
dCB1c2luZyBhbiBTVkcgZm9udCB0aGF0IGlzIHNwZWNpZmllZCBpbiBhbm90aGVyIGRvY3VtZW50
IGRvZXMgbm90IGNhdXNlCisgICAgICAgIGxvYWQgZXZlbnRzIHRvIGJlIGZpcmVkLgorCisgICAg
ICAgICogZmFzdC90ZXh0L3N2Zy1mb250LXRyaWdnZXItbG9hZC1ldmVudC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9zdmctZm9udC10cmlnZ2VyLWxvYWQtZXZlbnQu
aHRtbDogQWRkZWQuCisKIDIwMTQtMDgtMjYgIFNoaXZha3VtYXIgSk0gIDxzaGl2YS5qbUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBGaWxlQXBpIExheW91dCBUZXN0cyBwYXNzZWQgaW4g
bGF0ZXN0IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3N2Zy1mb250
LXRyaWdnZXItbG9hZC1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQv
c3ZnLWZvbnQtdHJpZ2dlci1sb2FkLWV2ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzIy
M2JkYWJkZGUyZTBmZGQzMDk5NzZmNWRhNWQwODZiMzE3ZTI4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC90ZXh0L3N2Zy1mb250LXRyaWdnZXItbG9hZC1ldmVudC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGRyYXdpbmcg
dGV4dCBpbiBhbiBTVkcgZm9udCB0aGF0IHJlc2lkZXMgaW4gYW5vdGhlciBkb2N1bWVudCBkb2Vz
bid0IGNhdXNlIGxvYWQgZXZlbnRzIHRvIGJlIGZpcmVkLiBUaGUgdGVzdCBpcyBzdWNjZXNzZnVs
IGlmIHRoZSBpbWFnZSBsb2FkIGhhbmRlciBsaW5lIGJsb3cgb2NjdXJzIGFmdGVyIHRoZSBsaW5l
IHRoYXQgc2F5cyBpdCBzaG91bGQgYmUgYmVmb3JlIHRoZSBpbWFnZSBsb2FkIGhhbmRsZXIuCitU
aGlzIGxpbmUgc2hvdWxkIG9jY3VyIGJlZm9yZSB0aGUgaW1hZ2UgbG9hZCBoYW5kbGVyLgorSW1h
Z2UgbG9hZCBoYW5kbGVyIG9jY3VycmVkLgorCitUaGlzIGlzIHNvbWUgZHVtbXkgdGV4dApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3N2Zy1mb250LXRyaWdnZXItbG9hZC1ldmVu
dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3N2Zy1mb250LXRyaWdnZXItbG9hZC1ldmVu
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM1YzBjZTFhYjYwODI3NThjMDg3NjExYzYzN2Y5NmQ4NWJjMDM3
ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvc3ZnLWZvbnQtdHJp
Z2dlci1sb2FkLWV2ZW50Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1pbHk6ICdT
VkdyYWZmaXRpJzsKKyAgICBzcmM6IHVybCgiLi4vLi4vc3ZnL2N1c3RvbS9yZXNvdXJjZXMvZ3Jh
ZmZpdGkuc3ZnIikgZm9ybWF0KHN2ZykKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK1Ro
aXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgZHJhd2luZyB0ZXh0IGluIGFuIFNWRyBmb250IHRoYXQg
cmVzaWRlcyBpbiBhbm90aGVyIGRvY3VtZW50IGRvZXNuJ3QgY2F1c2UgbG9hZCBldmVudHMgdG8g
YmUgZmlyZWQuIFRoZSB0ZXN0IGlzIHN1Y2Nlc3NmdWwgaWYgdGhlIGltYWdlIGxvYWQgaGFuZGVy
IGxpbmUgYmxvdyBvY2N1cnMgYWZ0ZXIgdGhlIGxpbmUgdGhhdCBzYXlzIGl0IHNob3VsZCBiZSBi
ZWZvcmUgdGhlIGltYWdlIGxvYWQgaGFuZGxlci4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2Ny
aXB0PgorZnVuY3Rpb24gbG9nTGluZShsaW5lKSB7CisgICAgdmFyIGxvZ0VsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIik7CisgICAgdmFyIGxpbmVFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgbGluZUVsZW1lbnQudGV4dENvbnRlbnQgPSBs
aW5lOworICAgIGxvZ0VsZW1lbnQuYXBwZW5kQ2hpbGQobGluZUVsZW1lbnQpOworfQorZnVuY3Rp
b24gaW1hZ2VMb2FkSGFuZGxlcigpIHsKKyAgICBsb2dMaW5lKCJJbWFnZSBsb2FkIGhhbmRsZXIg
b2NjdXJyZWQuIik7Cit9CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxpbWcgc3JjPSJkYXRhOmltYWdlL3BuZztjaGFyc2V0
PWJpbmFyeTtiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVJQUFBQWFDQVlBQUFGMGpy
cmtBQUFDbVdsVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEhnNmVHMXdiV1YwWVNC
NGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpV0UxUUlFTnZjbVVn
TlM0eExqSWlQZ29nSUNBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vk
ek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBnb2dJQ0FnSUNBOGNt
Um1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4
dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlQZ29n
SUNBZ0lDQWdJQ0E4WkdNNmNtbG5hSFJ6UGdvZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT2tGc2RENEtJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVNCNGJXdzZiR0Z1WnowaWVDMWtaV1poZFd4MElq
NURiM0I1Y21sbmFIUWd3cWtnTWpBeE15QkJjSEJzWlNCSmJtTXVJRUZzYkNCeWFXZG9kSE1nY21W
elpYSjJaV1F1UEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT2tGc2RENEtJQ0Fn
SUNBZ0lDQWdQQzlrWXpweWFXZG9kSE0rQ2lBZ0lDQWdJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQ
Z29nSUNBZ0lDQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lD
QWdJQ0FnSUNCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpF
dU1DOGlQZ29nSUNBZ0lDQWdJQ0E4ZUcxd09rTnlaV0YwYjNKVWIyOXNQa0ZrYjJKbElFbHRZV2Rs
VW1WaFpIazhMM2h0Y0RwRGNtVmhkRzl5Vkc5dmJENEtJQ0FnSUNBZ1BDOXlaR1k2UkdWelkzSnBj
SFJwYjI0K0NpQWdJRHd2Y21SbU9sSkVSajRLUEM5NE9uaHRjRzFsZEdFK0Nsa01jTVVBQUFHY1NV
UkJWRmdKN1preFRnTXhFRVYzRWFtZ0NxS0ZGZ25FQ1lBandCMmdwd3dkUGRTVUVMaEN1QUp3QXNR
QlFndUlpaW9TNFQ4anJ5d1U3VVJZTUpHY2tTWjJZcS8vbisreHZkbXRML3MzNDZyZDZvWDI5dS9X
YVRwMXB1azBxZzFPSnAreENXTjFxQzBPbGlMMzZyQnJvVmlEN0tpREhZczFpdHF6d2puUUFMYzVv
UXhnbURNQTEzL21EbUJtRFNpdDVzcmdHV3E1V2RrYW50Rll4L1pjR2VJNHZ5blpxbGE0MEpNRStL
L3luamNKaUp4Nms3Z1dpZVZGcURqWnRuQWZ3ZlphSGMzS2dJVFhkSndCSHMyTFJFOEVHalc4U0NE
Q2k3Y1M0TE5SY1lTNzVRVFkyQjBmbnRNQlBqYVlCUkxIM2lTZXBNVFFtOFFXOCtGSjRnZ0NtQmVK
a2JEN2dZRWppVzRrUU9sMWdLVWMvcXMrRk5DbS9HTVNvRmRLVE9MeTE3K3RDK0JkSGhia1Q3Q1No
Q0QyanB4N3VVTytwRmFhRURIMksxWHd4a29WQWdISUNyS0RMSEU3TnNDZUJXTy9ZTjlZS3prajRr
UXNxWEl4RjZLcVRpVEV2dWUvOFRnalhpVlBpUGJrUElDdFNoWGlUYkZ2eUhsS0ZhekVwZkdneUZm
bGpRZ29VWm9RNTRvNXZFWWcrTlJLV2hyaERVWWFmRnIvQXQ0Uk91ZzFqQmUwQUFBQUFFbEZUa1N1
UW1DQyIgb25sb2FkPSJpbWFnZUxvYWRIYW5kbGVyKCk7Ij4KKzxkaXYgc3R5bGU9ImZvbnQtZmFt
aWx5OiBTVkdyYWZmaXRpOyI+VGhpcyBpcyBzb21lIGR1bW15IHRleHQ8L2Rpdj4KKzxzY3JpcHQ+
Citsb2dMaW5lKCJUaGlzIGxpbmUgc2hvdWxkIG9jY3VyIGJlZm9yZSB0aGUgaW1hZ2UgbG9hZCBo
YW5kbGVyLiIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237229</attachid>
            <date>2014-08-27 09:16:49 -0700</date>
            <delta_ts>2014-08-27 15:15:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136269-20140827091642.patch</filename>
            <type>text/plain</type>
            <size>31711</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE2ZGVlNjYwMGI3MzFm
OGFmYWE5Y2E4NDk3Y2NjNmIxNzQxOTBmZS4uNTRiZjc2YzQxYjY1ZmYwMjE5NGIzYmYyMGVmMmQ4
OWEwNGQ5NzYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE0LTA4LTI3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRHJhd2luZyB0
ZXh0IGluIGFuIFNWRyBmb250IGNhdXNlcyBsb2FkIGV2ZW50cyB0byBiZSBmaXJlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MjY5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8xNTcyNDkxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNpZGUgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKSwgc3Rh
dGljIGZ1bmN0aW9ucyBvbiBJbWFnZUxvYWRlciwgSFRNTExpbmtFbGVtZW50LAorICAgICAgICBh
bmQgSFRNTFN0eWxlRWxlbWVudCB3ZXJlIGNhbGxlZCwgY2F1c2luZyBsb2FkIGV2ZW50cyB0byBi
ZSBpc3N1ZWQgZm9yIGFsbCBkb2N1bWVudHMsCisgICAgICAgIHJhdGhlciB0aGFuIGp1c3QgdGhl
IGRvY3VtZW50IGJlaW5nIGNsb3NlZC4gSW5zdGVhZCBvZiBrZWVwaW5nIHN0YXRpYyBFdmVudFNl
bmRlcnMKKyAgICAgICAgZm9yIGFsbCBkb2N1bWVudHMsIHRoaXMgcGF0Y2ggYWRkcyBmaXZlIGlu
c3RhbmNlIHZhcmlhYmxlcyB0byBEb2N1bWVudCByZXByZXNuZXRpbmcKKyAgICAgICAgZXZlbnQg
c2VuZGVycyBmb3IgSW1hZ2VMb2FkZXJzLCBIVE1MTGlua0VsZW1lbnRzLCBhbmQgSFRNTFN0eWxl
RWxlbWVudHMuIFRoaXMgd2F5LAorICAgICAgICB0aGUgb25seSBsb2FkIGV2ZW50cyB0aGF0IGEg
cGFydGljdWxhciBkb2N1bWVudCB0cmFja3MgYXJlIGxvYWQgZXZlbnRzIHRoYXQgYXJlCisgICAg
ICAgIHJlbGV2YW50IHRvIHRoYXQgcGFydGljdWxhciBkb2N1bWVudC4KKworICAgICAgICBUZXN0
OiBmYXN0L3RleHQvc3ZnLWZvbnQtdHJpZ2dlci1sb2FkLWV2ZW50Lmh0bWwKKworICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQp
OiBJbml0aWFsaXplIHRoZSBmaXZlIG5ldyB2YXJpYWJsZXMuCisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6aW1wbGljaXRDbG9zZSk6IFVzZSB0aGUgZ2l2ZSBuZXcgdmFyaWFibGVzIGluc3Rl
YWQgb2YKKyAgICAgICAgY2FsbGluZyBzdGF0aWMgZnVuY3Rpb25zLgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJlZm9yZUxvYWRJbWFnZUV2
ZW50U2VuZGVyKTogR2V0dGVyIGZvciBuZXcgdmFyaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6bG9hZEltYWdlRXZlbnRTZW5kZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjplcnJvckltYWdlRXZlbnRTZW5kZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpsaW5rTG9hZEV2ZW50U2VuZGVyKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c3R5bGVMb2FkRXZlbnRTZW5kZXIpOiBEaXR0by4KKyAgICAgICAgKiBo
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxl
bWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOiBQYXNzIHRoZSBvbGQgZG9jdW1lbnQgdGhyb3Vn
aAorICAgICAgICB0byB0aGUgbG9hZGVyIHNvIHRoZSBjb3JyZWN0IGxvYWQgZXZlbnRzIGNhbiBi
ZSB1cGRhdGVkLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6IERpdHRv
LgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxMaW5rRWxlbWVudDo6bGlua0xvYWRFdmVudFNlbmRlcik6IFJlcGxhY2Ugc3RhdGljIG1l
dGhvZCB3aXRoIGEKKyAgICAgICAgdmVyc2lvbiB0aGF0IHJldHVybnMgdGhlIGN1cnJlbnQgZG9j
dW1lbnQncyBsb2FkZXIuCisgICAgICAgIChXZWJDb3JlOjpsaW5rTG9hZEV2ZW50U2VuZGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5k
aW5nTG9hZEV2ZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOiBQ
YXNzIHRoZSBvbGQgZG9jdW1lbnQgdGhyb3VnaAorICAgICAgICB0byB0aGUgbG9hZGVyIHNvIHRo
ZSBjb3JyZWN0IGxvYWQgZXZlbnRzIGNhbiBiZSB1cGRhdGVkLgorICAgICAgICAqIGh0bWwvSFRN
TFN0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50Ojpz
dHlsZUxvYWRFdmVudFNlbmRlcik6IFJlcGxhY2Ugc3RhdGljIG1ldGhvZCB3aXRoIGEKKyAgICAg
ICAgdmVyc2lvbiB0aGF0IHJldHVybnMgdGhlIGN1cnJlbnQgZG9jdW1lbnQncyBsb2FkZXIuCisg
ICAgICAgIChXZWJDb3JlOjpzdHlsZUxvYWRFdmVudFNlbmRlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOiBQYXNzIHRoZSBvbGQgZG9jdW1lbnQgdGhyb3Vn
aAorICAgICAgICB0byB0aGUgbG9hZGVyIHNvIHRoZSBjb3JyZWN0IGxvYWQgZXZlbnRzIGNhbiBi
ZSB1cGRhdGVkLgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChX
VEY6Oj46OmNoZWNrQ29uc2lzdGVuY3kpOiBGdW5jdGlvbiBkZWNsYXJhdGlvbiBuZWVkcyB0byBi
ZSBpbiBoZWFkZXIgc28gZmlsZXMKKyAgICAgICAgdGhhdCBpbmNsdWRlIHRoZSBoZWFkZXIgdXNl
IHRoZSBjb3JyZWN0IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VMb2FkZXI6OmJlZm9yZUxvYWRFdmVudFNlbmRlcik6IFJlcGxhY2Ugc3RhdGljIGZ1bmN0
aW9uIHdpdGggYSB2ZXJzaW9uCisgICAgICAgIHRoYXQgcmV0dXJucyB0aGUgY3VycmVudCBkb2N1
bWVudCdzIGxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpsb2FkRXZlbnRT
ZW5kZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjplcnJvckV2ZW50
U2VuZGVyKTogREl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6c2V0SW1hZ2Up
OiBBZGQgYW4gYXJndW1lbnQgc28gZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50KCkgY2FuCisg
ICAgICAgIHBhc3MgdGhlIG9sZCBkb2N1bWVudCBzbyB0aGUgY29ycmVjdCBsb2FkIGV2ZW50cyBj
YW4gYmUgdXBkYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpzZXRJbWFnZVdp
dGhvdXRDb25zaWRlcmluZ1BlbmRpbmdMb2FkRXZlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6IFNwZWNpZnkgbmV3IGFyZ3VtZW50Lgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OmVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpiZWZvcmVMb2FkRXZlbnRTZW5kZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6bG9hZEV2ZW50U2VuZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmVycm9yRXZlbnRTZW5kZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudHMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0Vy
cm9yRXZlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOiBQYXNzIHRoZSBvbGQgZG9jdW1lbnQg
dGhyb3VnaAorICAgICAgICB0byB0aGUgbG9hZGVyIHNvIHRoZSBjb3JyZWN0IGxvYWQgZXZlbnRz
IGNhbiBiZSB1cGRhdGVkLgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZCk6IENhbGwg
aW50byBjdXJyZW50IGRvY3VtZW50J3MgbG9hZGVyIGluc3RlYWQgb2YKKyAgICAgICAgY2FsbGlu
ZyBhIHN0YXRpYyBmdW5jdGlvbi4KKwogMjAxNC0wOC0yNyAgR3l1eW91bmcgS2ltICA8Z3l1eW91
bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFVuc2tpcCBjb21wb3NpdGluZyB0
ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOGRmNGUyMTg3ZGViYzEwMjllMDkzMTg3NjMzMDc1ZGE5ZDI3ZTA0ZC4uOGJiMzdh
ZDMxYWZjYzNhNjRlMDA0NDliMzljOTk5YzRlNGUyZjBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTY1LDYgKzk2NSw3IEBA
CiAJCTFDRjZCRTE0MEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjZCRTEy
MEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSAqLzsgfTsKIAkJ
MUNGNkJFMTUwRTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0Y2QkUxMzBFOUJC
NDY3MDAyNUUxQ0QgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLzsgfTsKIAkJMUNGQUUz
MjMwQTZENkEzRjAwMzI1OTNEIC8qIGxpYm9iamMuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0ZBRTMyMjBBNkQ2QTNGMDAzMjU5M0QgLyog
bGlib2JqYy5keWxpYiAqLzsgfTsKKwkJMUNGRDNERjIxOUFFM0EwRTAwRTJDODgxIC8qIEV2ZW50
U2VuZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RTVDQjFCMzE0RURBQjZGMDBCQjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRjNDM0JFQTEzNUNBRjNDMDBCOEMx
QUMgLyogTWVkaWFDb250cm9scy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxRjNDM0JFODEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5j
cHAgKi87IH07CiAJCTFGM0MzQkVCMTM1Q0FGM0MwMEI4QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjNDM0JFOTEz
NUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5oICovOyB9OwogCQkxRjNGMTk1MzE0OTlD
QTc2MDBBNUFFQTcgLyogUE9ERnJlZUxpc3RBcmVuYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYzRjE5NTIxNDk5Q0E3NjAwQTVBRUE3IC8qIFBPREZy
ZWVMaXN0QXJlbmEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMjQzNzQsNiArMjQzNzUsNyBAQAogCQkJCUE4REYzRkNFMDk3RkEwRkMwMDUyOTgx
QiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgx
MzY5RDAwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxGb3JtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTg3MURFMkIwQTE1MkFDODAwQjEyQTY4IC8qIEhUTUxGcmFtZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTFDRkQzREYyMTlBRTNBMEUwMEUyQzg4MSAvKiBFdmVudFNlbmRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTRGRkUzMUQwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFt
ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0UyNDFGRjBCMkI0RTQwMDBDNzMy
QTEgLyogSFRNTEZyYW1lT3duZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREUy
ODBBMTUyQUM4MDBCMTJBNjggLyogSFRNTEZyYW1lU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAxYjRhYzc3Nzg2OTI4OGUwNjIxMzhkN2QzMDRm
OTM1ZTM4NGQ3ZmFhLi5kNDc5M2M2OWM2MjhjNjE0M2IyYjcwMzA2MjNlOGUwNDk4MWFjZDRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUxMyw2ICs1MTMsMTEgQEAgRG9jdW1lbnQ6OkRv
Y3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xh
c3NlcywgdW5zaWcKICNlbmRpZgogICAgICwgbV9kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1l
cih0aGlzLCAmRG9jdW1lbnQ6OmRpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyRmlyZWQpCiAg
ICAgLCBtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0NvdW50KDApCisgICAgLCBtX2JlZm9yZUxv
YWRJbWFnZUV2ZW50U2VuZGVyKGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQpCisgICAgLCBt
X2xvYWRJbWFnZUV2ZW50U2VuZGVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpCisgICAgLCBtX2Vy
cm9ySW1hZ2VFdmVudFNlbmRlcihldmVudE5hbWVzKCkuZXJyb3JFdmVudCkKKyAgICAsIG1fbGlu
a0xvYWRFdmVudFNlbmRlcihldmVudE5hbWVzKCkubG9hZEV2ZW50KQorICAgICwgbV9zdHlsZUxv
YWRFdmVudFNlbmRlcihldmVudE5hbWVzKCkubG9hZEV2ZW50KQogICAgICwgbV9oYXNJbmplY3Rl
ZFBsdWdJbnNTY3JpcHQoZmFsc2UpCiAgICAgLCBtX3JlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZChm
YWxzZSkKICAgICAsIG1faGFzUHJlcGFyZWRGb3JEZXN0cnVjdGlvbihmYWxzZSkKQEAgLTIzODIs
MTIgKzIzODcsMTIgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpCiAgICAgICAgIGYt
PmFuaW1hdGlvbigpLnN0YXJ0QW5pbWF0aW9uc0lmTm90U3VzcGVuZGVkKHRoaXMpOwogICAgIH0K
IAotICAgIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnRzKCk7Ci0g
ICAgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKLSAgICBJbWFnZUxv
YWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJyb3JFdmVudHMoKTsKKyAgICBiZWZvcmVMb2FkSW1hZ2VF
dmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOworICAgIGxvYWRJbWFnZUV2ZW50
U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7CisgICAgZXJyb3JJbWFnZUV2ZW50U2Vu
ZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7CiAKLSAgICBIVE1MTGlua0VsZW1lbnQ6OmRp
c3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKLSAgICBIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRj
aFBlbmRpbmdMb2FkRXZlbnRzKCk7CisgICAgbGlua0xvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNo
UGVuZGluZ0V2ZW50cygpOworICAgIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5k
aW5nRXZlbnRzKCk7CiAKICAgICAvLyBUbyBhbGlnbiB0aGUgSFRNTCBsb2FkIGV2ZW50IGFuZCB0
aGUgU1ZHTG9hZCBldmVudCBmb3IgdGhlIG91dGVybW9zdCA8c3ZnPiBlbGVtZW50LCBmaXJlIGl0
IGZyb20KICAgICAvLyBoZXJlLCBpbnN0ZWFkIG9mIGRvaW5nIGl0IGZyb20gU1ZHRWxlbWVudDo6
ZmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4gKGlmIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ9ImZh
bHNlIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYjZjNTEwZDBmYTg0Y2Q2MmQ3NDJiOGZkNWM5
YTBjNTk4OTJiM2Q4Yi4uN2FiNDM3OGQyYWVjNTA5NTdhYTk5MWVmNGQ0ODdiNmViYjE2Zjk1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM0LDggKzM0LDEwIEBACiAjaW5jbHVkZSAiRG9jdW1l
bnRFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5o
IgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCisjaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIK
ICNpbmNsdWRlICJGb2N1c0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkljb25VUkwuaCIKKyNpbmNs
dWRlICJJbWFnZUxvYWRlci5oIgogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXIuaCIKICNpbmNs
dWRlICJQYWdlVmlzaWJpbGl0eVN0YXRlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIK
QEAgLTEwOCwxMCArMTEwLDEyIEBAIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKIGNsYXNz
IEhUTUxIZWFkRWxlbWVudDsKIGNsYXNzIEhUTUxJRnJhbWVFbGVtZW50OwogY2xhc3MgSFRNTElt
YWdlRWxlbWVudDsKK2NsYXNzIEhUTUxMaW5rRWxlbWVudDsKIGNsYXNzIEhUTUxNYXBFbGVtZW50
OwogY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIEhUTUxOYW1lQ29sbGVjdGlvbjsKIGNs
YXNzIEhUTUxTY3JpcHRFbGVtZW50OworY2xhc3MgSFRNTFN0eWxlRWxlbWVudDsKIGNsYXNzIEhp
dFRlc3RSZXF1ZXN0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEludFBvaW50OwpAQCAt
MTYwLDYgKzE2NCwxMCBAQCBjbGFzcyBYUGF0aEV4cHJlc3Npb247CiBjbGFzcyBYUGF0aE5TUmVz
b2x2ZXI7CiBjbGFzcyBYUGF0aFJlc3VsdDsKIAordHlwZWRlZiBFdmVudFNlbmRlcjxJbWFnZUxv
YWRlcj4gSW1hZ2VFdmVudFNlbmRlcjsKK3R5cGVkZWYgRXZlbnRTZW5kZXI8SFRNTExpbmtFbGVt
ZW50PiBMaW5rRXZlbnRTZW5kZXI7Cit0eXBlZGVmIEV2ZW50U2VuZGVyPEhUTUxTdHlsZUVsZW1l
bnQ+IFN0eWxlRXZlbnRTZW5kZXI7CisKICNpZiBFTkFCTEUoWFNMVCkKIGNsYXNzIFRyYW5zZm9y
bVNvdXJjZTsKICNlbmRpZgpAQCAtMTI4MCw2ICsxMjg4LDEyIEBAIHB1YmxpYzoKICAgICBib29s
IGhhc1N0eWxlV2l0aFZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX2hhc1N0eWxlV2l0
aFZpZXdwb3J0VW5pdHM7IH0KICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0VW5pdHNPblJlc2l6ZSgp
OwogCisgICAgSW1hZ2VFdmVudFNlbmRlciYgYmVmb3JlTG9hZEltYWdlRXZlbnRTZW5kZXIoKSB7
IHJldHVybiBtX2JlZm9yZUxvYWRJbWFnZUV2ZW50U2VuZGVyOyB9CisgICAgSW1hZ2VFdmVudFNl
bmRlciYgbG9hZEltYWdlRXZlbnRTZW5kZXIoKSB7IHJldHVybiBtX2xvYWRJbWFnZUV2ZW50U2Vu
ZGVyOyB9CisgICAgSW1hZ2VFdmVudFNlbmRlciYgZXJyb3JJbWFnZUV2ZW50U2VuZGVyKCkgeyBy
ZXR1cm4gbV9lcnJvckltYWdlRXZlbnRTZW5kZXI7IH0KKyAgICBMaW5rRXZlbnRTZW5kZXImIGxp
bmtMb2FkRXZlbnRTZW5kZXIoKSB7IHJldHVybiBtX2xpbmtMb2FkRXZlbnRTZW5kZXI7IH0KKyAg
ICBTdHlsZUV2ZW50U2VuZGVyJiBzdHlsZUxvYWRFdmVudFNlbmRlcigpIHsgcmV0dXJuIG1fc3R5
bGVMb2FkRXZlbnRTZW5kZXI7IH0KKwogcHJvdGVjdGVkOgogICAgIGVudW0gQ29uc3RydWN0aW9u
RmxhZ3MgeyBTeW50aGVzaXplZCA9IDEsIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIgPSAxIDw8IDEg
fTsKICAgICBEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIHVuc2lnbmVkID0gRGVmYXVsdERv
Y3VtZW50Q2xhc3MsIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzID0gMCk7CkBAIC0xNjkyLDYg
KzE3MDYsMTIgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFJlZlB0cjxFbGVtZW50Pj4gbV9hc3Nv
Y2lhdGVkRm9ybUNvbnRyb2xzOwogICAgIHVuc2lnbmVkIG1fZGlzYWJsZWRGaWVsZHNldEVsZW1l
bnRzQ291bnQ7CiAKKyAgICBJbWFnZUV2ZW50U2VuZGVyIG1fYmVmb3JlTG9hZEltYWdlRXZlbnRT
ZW5kZXI7CisgICAgSW1hZ2VFdmVudFNlbmRlciBtX2xvYWRJbWFnZUV2ZW50U2VuZGVyOworICAg
IEltYWdlRXZlbnRTZW5kZXIgbV9lcnJvckltYWdlRXZlbnRTZW5kZXI7CisgICAgTGlua0V2ZW50
U2VuZGVyIG1fbGlua0xvYWRFdmVudFNlbmRlcjsKKyAgICBTdHlsZUV2ZW50U2VuZGVyIG1fc3R5
bGVMb2FkRXZlbnRTZW5kZXI7CisKICAgICBib29sIG1faGFzSW5qZWN0ZWRQbHVnSW5zU2NyaXB0
OwogICAgIGJvb2wgbV9yZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQ7CiAgICAgYm9vbCBtX2hhc1By
ZXBhcmVkRm9yRGVzdHJ1Y3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAppbmRleCBmNzAwOTM5NjgwZGY1YWY1YmE5NWZlYzAwNWYxZWEyNjIwNjM0YjlhLi42YzJm
MTA2YjJiYTExMDIxOTg4NWYxNDEzMmYzMWM0YTEwOTU3YTAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTQ2MCw3ICs0NjAsNyBAQCB2b2lkIEhUTUxJbWFn
ZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1
cmxzKSBjb25zdAogCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50
KERvY3VtZW50KiBvbGREb2N1bWVudCkKIHsKLSAgICBtX2ltYWdlTG9hZGVyLmVsZW1lbnREaWRN
b3ZlVG9OZXdEb2N1bWVudCgpOworICAgIG1faW1hZ2VMb2FkZXIuZWxlbWVudERpZE1vdmVUb05l
d0RvY3VtZW50KG9sZERvY3VtZW50KTsKICAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9j
dW1lbnQob2xkRG9jdW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAppbmRleCAzZTY2ODUzNDFiZmYyYWI1MWFhMmQ5OGUzNDAzZWY1MThmODhhNGE3Li5l
NTU2MjQ5MWM3ZDYzMDNiZTI1Y2ZhMjBhNWQ3NmFhZTgyNjZjYzJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE0NTYsNyArMTQ1Niw3IEBAIHZvaWQgSFRN
TElucHV0RWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQp
CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBv
bGREb2N1bWVudCkKIHsKICAgICBpZiAoaGFzSW1hZ2VMb2FkZXIoKSkKLSAgICAgICAgaW1hZ2VM
b2FkZXIoKS0+ZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50KCk7CisgICAgICAgIGltYWdlTG9h
ZGVyKCktPmVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CiAKICAgICBi
b29sIG5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrID0gdGhpcy0+bmVlZHNTdXNwZW5zaW9uQ2FsbGJh
Y2soKTsKICAgICBpZiAob2xkRG9jdW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcAppbmRleCBiODUxMTQ1ZjA4ZjcxODIyODQ1YTM4YjU0MTYwMzZhOWQzNjdhNTU0
Li45NWU0MzViZjQyYTdmZWU5MjVjOGUxOThiNjE1Yzg0YTc2ZjM0MGNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC01NywxMiArNTcsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBMaW5rRXZl
bnRTZW5kZXImIGxpbmtMb2FkRXZlbnRTZW5kZXIoKQotewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChMaW5rRXZlbnRTZW5kZXIsIHNoYXJlZExvYWRFdmVudFNlbmRlciwgKGV2
ZW50TmFtZXMoKS5sb2FkRXZlbnQpKTsKLSAgICByZXR1cm4gc2hhcmVkTG9hZEV2ZW50U2VuZGVy
OwotfQotCiBpbmxpbmUgSFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBh
cnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9saW5r
TG9hZGVyKHRoaXMpCkBAIC05Nyw2ICs5MSwxMSBAQCBIVE1MTGlua0VsZW1lbnQ6On5IVE1MTGlu
a0VsZW1lbnQoKQogICAgIGxpbmtMb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0aGlzKTsK
IH0KIAorTGlua0V2ZW50U2VuZGVyJiBIVE1MTGlua0VsZW1lbnQ6OmxpbmtMb2FkRXZlbnRTZW5k
ZXIoKQoreworICAgIHJldHVybiBkb2N1bWVudCgpLmxpbmtMb2FkRXZlbnRTZW5kZXIoKTsKK30K
Kwogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVkU3RhdGUoYm9vbCBkaXNhYmxlZCkK
IHsKICAgICBEaXNhYmxlZFN0YXRlIG9sZERpc2FibGVkU3RhdGUgPSBtX2Rpc2FibGVkU3RhdGU7
CkBAIC0zNjEsMTEgKzM2MCw2IEBAIGJvb2wgSFRNTExpbmtFbGVtZW50OjpzaGVldExvYWRlZCgp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQ
ZW5kaW5nTG9hZEV2ZW50cygpCi17Ci0gICAgbGlua0xvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNo
UGVuZGluZ0V2ZW50cygpOwotfQotCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5k
aW5nRXZlbnQoTGlua0V2ZW50U2VuZGVyKiBldmVudFNlbmRlcikKIHsKICAgICBBU1NFUlRfVU5V
U0VEKGV2ZW50U2VuZGVyLCBldmVudFNlbmRlciA9PSAmbGlua0xvYWRFdmVudFNlbmRlcigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCmluZGV4IDY1YjMyNDE3NjAxMDgxOTNh
MjljOTczYTA5YzlkMWU1YzVkNzNlNTkuLmNmZDBhODQ1MzE0Yzc1ZWJjYjYxODAwNDgyYzRiMDg1
MDBmNDQ3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApAQCAtNjksNyAr
NjksNiBAQCBwdWJsaWM6CiAgICAgRE9NU2V0dGFibGVUb2tlbkxpc3QqIHNpemVzKCkgY29uc3Q7
CiAKICAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0V2ZW50KExpbmtFdmVudFNlbmRlciopOwotICAg
IHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKIAogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwpAQCAtOTEsNiArOTAsOCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBsaW5rTG9hZGVkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGxp
bmtMb2FkaW5nRXJyb3JlZCgpIG92ZXJyaWRlOwogCisgICAgTGlua0V2ZW50U2VuZGVyJiBsaW5r
TG9hZEV2ZW50U2VuZGVyKCk7CisKICAgICBib29sIGlzQWx0ZXJuYXRlKCkgY29uc3QgeyByZXR1
cm4gbV9kaXNhYmxlZFN0YXRlID09IFVuc2V0ICYmIG1fcmVsQXR0cmlidXRlLm1faXNBbHRlcm5h
dGU7IH0KICAgICAKICAgICB2b2lkIHNldERpc2FibGVkU3RhdGUoYm9vbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCA0OTZlZDViMDBh
MGJjNGI4NjFmMWVmNWYzZmVhMzZhOWQxYjI0ODMwLi5hMzJmYTNmYmU0NWZjZThhOGQ1ODZlNzYx
M2M0MWE3MzhlMjBlNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKICAgICB9
CiAKICAgICBpZiAobV9pbWFnZUxvYWRlcikKLSAgICAgICAgbV9pbWFnZUxvYWRlci0+ZWxlbWVu
dERpZE1vdmVUb05ld0RvY3VtZW50KCk7CisgICAgICAgIG1faW1hZ2VMb2FkZXItPmVsZW1lbnRE
aWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CiAKICAgICBIVE1MUGx1Z0luRWxlbWVu
dDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXggYzU5ZWYxNjg1ZDZiYmM2ZTVjOTdlYjdjYjFh
Nzg1MWUyNzcxN2E2OS4uNmQyNjMzMTc1MjBiNWFlZDkxYjNiNGQ4OTY1ZjM0ZjMzNWE2Yzc5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCkBAIC0zOSwxMiArMzks
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
LXN0YXRpYyBTdHlsZUV2ZW50U2VuZGVyJiBzdHlsZUxvYWRFdmVudFNlbmRlcigpCi17Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlRXZlbnRTZW5kZXIsIHNoYXJlZExv
YWRFdmVudFNlbmRlciwgKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpKTsKLSAgICByZXR1cm4gc2hh
cmVkTG9hZEV2ZW50U2VuZGVyOwotfQotCiBpbmxpbmUgSFRNTFN0eWxlRWxlbWVudDo6SFRNTFN0
eWxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpCiAgICAgLCBtX3N0eWxlU2hlZXRPd25lcihkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2Vy
KQpAQCAtNjgsNiArNjIsMTEgQEAgUGFzc1JlZlB0cjxIVE1MU3R5bGVFbGVtZW50PiBIVE1MU3R5
bGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmEKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEhUTUxTdHlsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRC
eVBhcnNlcikpOwogfQogCitTdHlsZUV2ZW50U2VuZGVyJiBIVE1MU3R5bGVFbGVtZW50OjpzdHls
ZUxvYWRFdmVudFNlbmRlcigpCit7CisgICAgcmV0dXJuIGRvY3VtZW50KCkuc3R5bGVMb2FkRXZl
bnRTZW5kZXIoKTsKK30KKwogdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewog
ICAgIGlmIChuYW1lID09IHRpdGxlQXR0ciAmJiBzaGVldCgpKQpAQCAtMTE0LDExICsxMTMsNiBA
QCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5n
ZSYgY2hhbmdlKQogICAgIG1fc3R5bGVTaGVldE93bmVyLmNoaWxkcmVuQ2hhbmdlZCgqdGhpcyk7
CiB9CiAKLXZvaWQgSFRNTFN0eWxlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygp
Ci17Ci0gICAgc3R5bGVMb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsK
LX0KLQogdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudChTdHlsZUV2
ZW50U2VuZGVyKiBldmVudFNlbmRlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGV2ZW50U2VuZGVy
LCBldmVudFNlbmRlciA9PSAmc3R5bGVMb2FkRXZlbnRTZW5kZXIoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFN0eWxlRWxlbWVudC5oCmluZGV4IDk5NTdiYTUwNzAyODIxYWJhZWY2OGQwNzIyZmU3
ZDU2ZjE2NDQzODAuLmZmZmQ0MDI0NzQ0Nzg0MTM3NTZiOGRlNTI2YTE5YmZhYjUzZTRmNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCkBAIC00NSw3ICs0NSw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldERpc2FibGVkKGJvb2wpOwogCiAgICAgdm9pZCBkaXNwYXRjaFBl
bmRpbmdFdmVudChTdHlsZUV2ZW50U2VuZGVyKik7Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hQ
ZW5kaW5nTG9hZEV2ZW50cygpOwogCiBwcml2YXRlOgogICAgIEhUTUxTdHlsZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwpAQCAt
NjUsNiArNjQsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICBT
dHlsZUV2ZW50U2VuZGVyJiBzdHlsZUxvYWRFdmVudFNlbmRlcigpOworCiAgICAgSW5saW5lU3R5
bGVTaGVldE93bmVyIG1fc3R5bGVTaGVldE93bmVyOwogICAgIGJvb2wgbV9maXJlZExvYWQ7CiAg
ICAgYm9vbCBtX2xvYWRlZFNoZWV0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKaW5kZXggYjhiOWVlOWNhZWY5YzdiNWZlMjdhODlkMjQ0NDNmYTUwMDMzYWNiMi4uZDFk
ZDc0MWRmM2M0MTgzZDI2OGMzNGYyYjcwNGRkMTY1NjVjOTgzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBIVE1MVmlk
ZW9FbGVtZW50OjpzZXRXZWJraXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRp
c2FibGVkKQogdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1
bWVudCogb2xkRG9jdW1lbnQpCiB7CiAgICAgaWYgKG1faW1hZ2VMb2FkZXIpCi0gICAgICAgIG1f
aW1hZ2VMb2FkZXItPmVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudCgpOworICAgICAgICBtX2lt
YWdlTG9hZGVyLT5lbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOwogICAg
IEhUTUxNZWRpYUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggN2Q5NGZjODZmNzZhOGVj
Njg2NWE2NzBiNDA5ZDk5YjA2MjY2ZjE5OC4uYmUyNjA5YTk3ZjlmMzFmM2IwOTU1ODIwZjAxZWI3
NTc4ZDE4ZDQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC00Nywz
OCArNDcsMzAgQEAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAvLyBJbWFnZUxvYWRlciBvYmplY3Rz
IGFyZSBhbGxvY2F0ZWQgYXMgbWVtYmVycyBvZiBvdGhlciBvYmplY3RzLCBzbyBnZW5lcmljIHBv
aW50ZXIgY2hlY2sgd291bGQgYWx3YXlzIGZhaWwuCiBuYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxh
dGU8PiBzdHJ1Y3QgVmFsdWVDaGVjazxXZWJDb3JlOjpJbWFnZUxvYWRlcio+IHsKLSAgICB0eXBl
ZGVmIFdlYkNvcmU6OkltYWdlTG9hZGVyKiBUcmFpdFR5cGU7Ci0gICAgc3RhdGljIHZvaWQgY2hl
Y2tDb25zaXN0ZW5jeShjb25zdCBXZWJDb3JlOjpJbWFnZUxvYWRlciogcCkKLSAgICB7Ci0gICAg
ICAgIGlmICghcCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgVmFsdWVDaGVjazxXZWJD
b3JlOjpFbGVtZW50Kj46OmNoZWNrQ29uc2lzdGVuY3koJnAtPmVsZW1lbnQoKSk7Ci0gICAgfQot
fTsKLQordm9pZCBWYWx1ZUNoZWNrPFdlYkNvcmU6OkltYWdlTG9hZGVyKj46OmNoZWNrQ29uc2lz
dGVuY3koY29uc3QgV2ViQ29yZTo6SW1hZ2VMb2FkZXIqIHApCit7CisgICAgaWYgKCFwKQorICAg
ICAgICByZXR1cm47CisgICAgVmFsdWVDaGVjazxXZWJDb3JlOjpFbGVtZW50Kj46OmNoZWNrQ29u
c2lzdGVuY3koJnAtPmVsZW1lbnQoKSk7Cit9CiB9CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgSW1hZ2VFdmVudFNlbmRlciYgYmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkK
K0ltYWdlRXZlbnRTZW5kZXImIEltYWdlTG9hZGVyOjpiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKQog
ewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJbWFnZUV2ZW50U2VuZGVyPiBzZW5kZXIoZXZl
bnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCk7Ci0gICAgcmV0dXJuIHNlbmRlcjsKKyAgICByZXR1
cm4gZWxlbWVudCgpLmRvY3VtZW50KCkuYmVmb3JlTG9hZEltYWdlRXZlbnRTZW5kZXIoKTsKIH0K
IAotc3RhdGljIEltYWdlRXZlbnRTZW5kZXImIGxvYWRFdmVudFNlbmRlcigpCitJbWFnZUV2ZW50
U2VuZGVyJiBJbWFnZUxvYWRlcjo6bG9hZEV2ZW50U2VuZGVyKCkKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2VFdmVudFNlbmRlcj4gc2VuZGVyKGV2ZW50TmFtZXMoKS5sb2FkRXZl
bnQpOwotICAgIHJldHVybiBzZW5kZXI7CisgICAgcmV0dXJuIGVsZW1lbnQoKS5kb2N1bWVudCgp
LmxvYWRJbWFnZUV2ZW50U2VuZGVyKCk7CiB9CiAKLXN0YXRpYyBJbWFnZUV2ZW50U2VuZGVyJiBl
cnJvckV2ZW50U2VuZGVyKCkKK0ltYWdlRXZlbnRTZW5kZXImIEltYWdlTG9hZGVyOjplcnJvckV2
ZW50U2VuZGVyKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2VFdmVudFNlbmRl
cj4gc2VuZGVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsKLSAgICByZXR1cm4gc2VuZGVyOwor
ICAgIHJldHVybiBlbGVtZW50KCkuZG9jdW1lbnQoKS5lcnJvckltYWdlRXZlbnRTZW5kZXIoKTsK
IH0KIAogc3RhdGljIGlubGluZSBib29sIHBhZ2VJc0JlaW5nRGlzbWlzc2VkKERvY3VtZW50JiBk
b2N1bWVudCkKQEAgLTEyMywzMyArMTE1LDMzIEBAIEltYWdlTG9hZGVyOjp+SW1hZ2VMb2FkZXIo
KQogICAgICAgICBlbGVtZW50KCkuZGVyZWYoKTsKIH0KIAotdm9pZCBJbWFnZUxvYWRlcjo6c2V0
SW1hZ2UoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlKQordm9pZCBJbWFnZUxvYWRlcjo6c2V0SW1hZ2Uo
Q2FjaGVkSW1hZ2UqIG5ld0ltYWdlLCBEb2N1bWVudCogb2xkSW1hZ2VEb2N1bWVudCkKIHsKLSAg
ICBzZXRJbWFnZVdpdGhvdXRDb25zaWRlcmluZ1BlbmRpbmdMb2FkRXZlbnQobmV3SW1hZ2UpOwor
ICAgIHNldEltYWdlV2l0aG91dENvbnNpZGVyaW5nUGVuZGluZ0xvYWRFdmVudChuZXdJbWFnZSwg
b2xkSW1hZ2VEb2N1bWVudCA/IG9sZEltYWdlRG9jdW1lbnQgOiAmZWxlbWVudCgpLmRvY3VtZW50
KCkpOwogCiAgICAgLy8gT25seSBjb25zaWRlciB1cGRhdGluZyB0aGUgcHJvdGVjdGlvbiByZWYt
Y291bnQgb2YgdGhlIEVsZW1lbnQgaW1tZWRpYXRlbHkgYmVmb3JlIHJldHVybmluZwogICAgIC8v
IGZyb20gdGhpcyBmdW5jdGlvbiBhcyBkb2luZyBzbyBtaWdodCByZXN1bHQgaW4gdGhlIGRlc3Ry
dWN0aW9uIG9mIHRoaXMgSW1hZ2VMb2FkZXIuCiAgICAgdXBkYXRlZEhhc1BlbmRpbmdFdmVudCgp
OwogfQogCi12b2lkIEltYWdlTG9hZGVyOjpzZXRJbWFnZVdpdGhvdXRDb25zaWRlcmluZ1BlbmRp
bmdMb2FkRXZlbnQoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlKQordm9pZCBJbWFnZUxvYWRlcjo6c2V0
SW1hZ2VXaXRob3V0Q29uc2lkZXJpbmdQZW5kaW5nTG9hZEV2ZW50KENhY2hlZEltYWdlKiBuZXdJ
bWFnZSwgRG9jdW1lbnQqIG9sZEltYWdlRG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKG1fZmFpbGVk
TG9hZFVSTC5pc0VtcHR5KCkpOwogICAgIENhY2hlZEltYWdlKiBvbGRJbWFnZSA9IG1faW1hZ2Uu
Z2V0KCk7CiAgICAgaWYgKG5ld0ltYWdlICE9IG9sZEltYWdlKSB7Ci0gICAgICAgIG1faW1hZ2Ug
PSBuZXdJbWFnZTsKICAgICAgICAgaWYgKG1faGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCkgewot
ICAgICAgICAgICAgYmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQodGhpcyk7Cisg
ICAgICAgICAgICBvbGRJbWFnZURvY3VtZW50LT5iZWZvcmVMb2FkSW1hZ2VFdmVudFNlbmRlcigp
LmNhbmNlbEV2ZW50KHRoaXMpOwogICAgICAgICAgICAgbV9oYXNQZW5kaW5nQmVmb3JlTG9hZEV2
ZW50ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1faGFzUGVuZGluZ0xvYWRFdmVu
dCkgewotICAgICAgICAgICAgbG9hZEV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQodGhpcyk7Cisg
ICAgICAgICAgICBvbGRJbWFnZURvY3VtZW50LT5sb2FkSW1hZ2VFdmVudFNlbmRlcigpLmNhbmNl
bEV2ZW50KHRoaXMpOwogICAgICAgICAgICAgbV9oYXNQZW5kaW5nTG9hZEV2ZW50ID0gZmFsc2U7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1faGFzUGVuZGluZ0Vycm9yRXZlbnQpIHsKLSAgICAg
ICAgICAgIGVycm9yRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0aGlzKTsKKyAgICAgICAgICAg
IG9sZEltYWdlRG9jdW1lbnQtPmVycm9ySW1hZ2VFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRo
aXMpOwogICAgICAgICAgICAgbV9oYXNQZW5kaW5nRXJyb3JFdmVudCA9IGZhbHNlOwogICAgICAg
ICB9CisgICAgICAgIG1faW1hZ2UgPSBuZXdJbWFnZTsKICAgICAgICAgbV9pbWFnZUNvbXBsZXRl
ID0gdHJ1ZTsKICAgICAgICAgaWYgKG5ld0ltYWdlKQogICAgICAgICAgICAgbmV3SW1hZ2UtPmFk
ZENsaWVudCh0aGlzKTsKQEAgLTI4OCw3ICsyODAsNyBAQCB2b2lkIEltYWdlTG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgICAgICYmICFlbGVtZW50
KCkuZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KGltYWdlKCktPnJlc3Bv
bnNlKCkudXJsKCkpCiAgICAgICAgICYmICFyZXNvdXJjZS0+cGFzc2VzQWNjZXNzQ29udHJvbENo
ZWNrKGVsZW1lbnQoKS5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAKLSAgICAgICAg
c2V0SW1hZ2VXaXRob3V0Q29uc2lkZXJpbmdQZW5kaW5nTG9hZEV2ZW50KDApOworICAgICAgICBz
ZXRJbWFnZVdpdGhvdXRDb25zaWRlcmluZ1BlbmRpbmdMb2FkRXZlbnQobnVsbHB0ciwgJmVsZW1l
bnQoKS5kb2N1bWVudCgpKTsKIAogICAgICAgICBtX2hhc1BlbmRpbmdFcnJvckV2ZW50ID0gdHJ1
ZTsKICAgICAgICAgZXJyb3JFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOwpA
QCAtNDQ4LDI1ICs0NDAsMTAgQEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJy
b3JFdmVudCgpCiAgICAgdXBkYXRlZEhhc1BlbmRpbmdFdmVudCgpOwogfQogCi12b2lkIEltYWdl
TG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnRzKCkKLXsKLSAgICBiZWZvcmVM
b2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKLX0KLQotdm9pZCBJbWFn
ZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpCi17Ci0gICAgbG9hZEV2ZW50U2Vu
ZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgSW1hZ2VMb2FkZXI6OmRp
c3BhdGNoUGVuZGluZ0Vycm9yRXZlbnRzKCkKLXsKLSAgICBlcnJvckV2ZW50U2VuZGVyKCkuZGlz
cGF0Y2hQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgSW1hZ2VMb2FkZXI6OmVsZW1lbnREaWRN
b3ZlVG9OZXdEb2N1bWVudCgpCit2b2lkIEltYWdlTG9hZGVyOjplbGVtZW50RGlkTW92ZVRvTmV3
RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogewogICAgIGNsZWFyRmFpbGVkTG9hZFVS
TCgpOwotICAgIHNldEltYWdlKDApOworICAgIHNldEltYWdlKG51bGxwdHIsIG9sZERvY3VtZW50
KTsKIH0KIAogaW5saW5lIHZvaWQgSW1hZ2VMb2FkZXI6OmNsZWFyRmFpbGVkTG9hZFVSTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCmluZGV4IDVmMzcyNGNjYWJiNjVlZmE3OGJmZGY4
NjdkYTFmMjc4ZDRkZGQ3M2QuLjYyYTBkNTUwZWRiZmU3NjM2ZDZmNTA0ZGU1ZDljYzQ2ZWQwNzhj
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50Owog
Y2xhc3MgSW1hZ2VMb2FkZXI7CiBjbGFzcyBSZW5kZXJJbWFnZVJlc291cmNlOwpAQCAtNTAsNyAr
NTEsNyBAQCBwdWJsaWM6CiAgICAgLy8gZG9lc24ndCBjaGFuZ2U7IHN0YXJ0cyBuZXcgbG9hZCB1
bmNvbmRpdGlvbmFsbHkgKG1hdGNoZXMgRmlyZWZveCBhbmQgT3BlcmEgYmVoYXZpb3IpLgogICAg
IHZvaWQgdXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKTsKIAotICAgIHZv
aWQgZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50KCk7CisgICAgdm9pZCBlbGVtZW50RGlkTW92
ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KTsKIAogICAgIEVsZW1lbnQmIGVs
ZW1lbnQoKSB7IHJldHVybiBtX2VsZW1lbnQ7IH0KICAgICBjb25zdCBFbGVtZW50JiBlbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGltYWdlQ29tcGxldGUoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQ29tcGxldGU7
IH0KIAogICAgIENhY2hlZEltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0
KCk7IH0KLSAgICB2b2lkIHNldEltYWdlKENhY2hlZEltYWdlKik7IC8vIENhbmNlbHMgcGVuZGlu
ZyBiZWZvcmVsb2FkIGFuZCBsb2FkIGV2ZW50cywgYW5kIGRvZXNuJ3QgZGlzcGF0Y2ggbmV3IG9u
ZXMuCisgICAgdm9pZCBzZXRJbWFnZShDYWNoZWRJbWFnZSosIERvY3VtZW50KiBvbGRJbWFnZURv
Y3VtZW50ID0gbnVsbHB0cik7IC8vIENhbmNlbHMgcGVuZGluZyBiZWZvcmVsb2FkIGFuZCBsb2Fk
IGV2ZW50cywgYW5kIGRvZXNuJ3QgZGlzcGF0Y2ggbmV3IG9uZXMuCiAKICAgICB2b2lkIHNldExv
YWRNYW51YWxseShib29sIGxvYWRNYW51YWxseSkgeyBtX2xvYWRNYW51YWxseSA9IGxvYWRNYW51
YWxseTsgfQogCkBAIC02NywxMCArNjgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpc3BhdGNo
UGVuZGluZ0V2ZW50KEltYWdlRXZlbnRTZW5kZXIqKTsKIAotICAgIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudHMoKTsKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFBl
bmRpbmdMb2FkRXZlbnRzKCk7Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hQZW5kaW5nRXJyb3JF
dmVudHMoKTsKLQogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEltYWdlTG9hZGVyKEVsZW1lbnQm
KTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVy
cmlkZTsKQEAgLTc5LDYgKzc2LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoTG9hZEV2ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZVVSSShjb25zdCBB
dG9taWNTdHJpbmcmKSBjb25zdCA9IDA7CiAKKyAgICBJbWFnZUV2ZW50U2VuZGVyJiBiZWZvcmVM
b2FkRXZlbnRTZW5kZXIoKTsKKyAgICBJbWFnZUV2ZW50U2VuZGVyJiBsb2FkRXZlbnRTZW5kZXIo
KTsKKyAgICBJbWFnZUV2ZW50U2VuZGVyJiBlcnJvckV2ZW50U2VuZGVyKCk7CisKICAgICB2b2lk
IHVwZGF0ZWRIYXNQZW5kaW5nRXZlbnQoKTsKIAogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nQmVm
b3JlTG9hZEV2ZW50KCk7CkBAIC04OCw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVySW1h
Z2VSZXNvdXJjZSogcmVuZGVySW1hZ2VSZXNvdXJjZSgpOwogICAgIHZvaWQgdXBkYXRlUmVuZGVy
ZXIoKTsKIAotICAgIHZvaWQgc2V0SW1hZ2VXaXRob3V0Q29uc2lkZXJpbmdQZW5kaW5nTG9hZEV2
ZW50KENhY2hlZEltYWdlKik7CisgICAgdm9pZCBzZXRJbWFnZVdpdGhvdXRDb25zaWRlcmluZ1Bl
bmRpbmdMb2FkRXZlbnQoQ2FjaGVkSW1hZ2UqLCBEb2N1bWVudCogb2xkSW1hZ2VEb2N1bWVudCk7
CiAgICAgdm9pZCBjbGVhckZhaWxlZExvYWRVUkwoKTsKIAogICAgIHZvaWQgdGltZXJGaXJlZChU
aW1lcjxJbWFnZUxvYWRlcj4mKTsKQEAgLTEwNyw0ICsxMDgsMTQgQEAgcHJpdmF0ZToKIAogfQog
CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorLy8gSW1hZ2VMb2FkZXIgb2JqZWN0cyBhcmUgYWxsb2Nh
dGVkIGFzIG1lbWJlcnMgb2Ygb3RoZXIgb2JqZWN0cywgc28gZ2VuZXJpYyBwb2ludGVyIGNoZWNr
IHdvdWxkIGFsd2F5cyBmYWlsLgorbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBW
YWx1ZUNoZWNrPFdlYkNvcmU6OkltYWdlTG9hZGVyKj4geworICAgIHR5cGVkZWYgV2ViQ29yZTo6
SW1hZ2VMb2FkZXIqIFRyYWl0VHlwZTsKKyAgICBzdGF0aWMgdm9pZCBjaGVja0NvbnNpc3RlbmN5
KGNvbnN0IFdlYkNvcmU6OkltYWdlTG9hZGVyKiBwKTsKK307Cit9CisjZW5kaWYKKwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDU3NDg3NjU2ZDQ0Y2E0
ZTVjMzZkMDBjNGIyYWRkYjVlMTEyZDQyMTUuLjhkYjhjOTRmYTI0Mjg2MGIyOTQyYWViOTNlYWJh
YzM5NDBhN2UxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCkBAIC0y
MDgsNyArMjA4LDcgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogCiB2b2lkIFNWR0ltYWdlRWxl
bWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogewotICAg
IG1faW1hZ2VMb2FkZXIuZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50KCk7CisgICAgbV9pbWFn
ZUxvYWRlci5lbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOwogICAgIFNW
R0dyYXBoaWNzRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmlu
ZGV4IDExZTM0N2UwM2E1YmYzMGUyMzNlMjYzNjAwYTVlOTMyMTY1M2E1MzMuLjgwYzIxNmE4NTlh
M2FkZDE3OWI1NjFjMDk4NjBhMWQ3ODRiZThkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xMjIsNyArMTIyLDggQEAgdm9pZCBY
TUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW5wdXRTb3Vy
Y2UpCiAgICAgZG9Xcml0ZShzb3VyY2UudG9TdHJpbmcoKSk7CiAKICAgICAvLyBBZnRlciBwYXJz
aW5nLCBnbyBhaGVhZCBhbmQgZGlzcGF0Y2ggaW1hZ2UgYmVmb3JlbG9hZCBldmVudHMuCi0gICAg
SW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudHMoKTsKKyAgICBpZiAo
YXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKQorICAgICAgICBkb2N1bWVudC0+YmVm
b3JlTG9hZEltYWdlRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKIH0KIAog
dm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpFcnJvclR5cGUg
dHlwZSwgY29uc3QgY2hhciogbSwgVGV4dFBvc2l0aW9uIHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA1Mjcz
NWQzNWJiMGFkMDA3M2Y3YzU4YmQyMWFlNzRkYWE0OTNlNjMuLmM0YjcwMjM2NjQyN2E4NDdlNDU1
ZTA5OWJmMmFhNjBjMTg5MDQ5ODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wOC0yNyAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIERyYXdp
bmcgdGV4dCBpbiBhbiBTVkcgZm9udCBjYXVzZXMgbG9hZCBldmVudHMgdG8gYmUgZmlyZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjI2OQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTU3MjQ5MTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzdXJlIHRoYXQgZHJhd2luZyB0ZXh0IHVzaW5n
IGFuIFNWRyBmb250IHRoYXQgaXMgc3BlY2lmaWVkIGluIGFub3RoZXIgZG9jdW1lbnQgZG9lcyBu
b3QgY2F1c2UKKyAgICAgICAgbG9hZCBldmVudHMgdG8gYmUgZmlyZWQuCisKKyAgICAgICAgKiBm
YXN0L3RleHQvc3ZnLWZvbnQtdHJpZ2dlci1sb2FkLWV2ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC90ZXh0L3N2Zy1mb250LXRyaWdnZXItbG9hZC1ldmVudC5odG1sOiBB
ZGRlZC4KKwogMjAxNC0wOC0yNyAgTWljaGHFgiBQYWt1xYJhIHZlbCBSdXRrYSAgPG0ucGFrdWxh
QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgRUZMIGdhcmRlbmluZwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3N2Zy1mb250LXRyaWdnZXItbG9hZC1ldmVudC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvc3ZnLWZvbnQtdHJpZ2dlci1sb2Fk
LWV2ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzIyM2JkYWJkZGUyZTBmZGQzMDk5NzZm
NWRhNWQwODZiMzE3ZTI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L3N2Zy1mb250LXRyaWdnZXItbG9hZC1ldmVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBA
CitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGRyYXdpbmcgdGV4dCBpbiBhbiBTVkcgZm9udCB0
aGF0IHJlc2lkZXMgaW4gYW5vdGhlciBkb2N1bWVudCBkb2Vzbid0IGNhdXNlIGxvYWQgZXZlbnRz
IHRvIGJlIGZpcmVkLiBUaGUgdGVzdCBpcyBzdWNjZXNzZnVsIGlmIHRoZSBpbWFnZSBsb2FkIGhh
bmRlciBsaW5lIGJsb3cgb2NjdXJzIGFmdGVyIHRoZSBsaW5lIHRoYXQgc2F5cyBpdCBzaG91bGQg
YmUgYmVmb3JlIHRoZSBpbWFnZSBsb2FkIGhhbmRsZXIuCitUaGlzIGxpbmUgc2hvdWxkIG9jY3Vy
IGJlZm9yZSB0aGUgaW1hZ2UgbG9hZCBoYW5kbGVyLgorSW1hZ2UgbG9hZCBoYW5kbGVyIG9jY3Vy
cmVkLgorCitUaGlzIGlzIHNvbWUgZHVtbXkgdGV4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L3N2Zy1mb250LXRyaWdnZXItbG9hZC1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L3N2Zy1mb250LXRyaWdnZXItbG9hZC1ldmVudC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1
YzBjZTFhYjYwODI3NThjMDg3NjExYzYzN2Y5NmQ4NWJjMDM3ZDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvc3ZnLWZvbnQtdHJpZ2dlci1sb2FkLWV2ZW50Lmh0bWwK
QEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxl
PgorQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1pbHk6ICdTVkdyYWZmaXRpJzsKKyAgICBzcmM6
IHVybCgiLi4vLi4vc3ZnL2N1c3RvbS9yZXNvdXJjZXMvZ3JhZmZpdGkuc3ZnIikgZm9ybWF0KHN2
ZykKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRo
YXQgZHJhd2luZyB0ZXh0IGluIGFuIFNWRyBmb250IHRoYXQgcmVzaWRlcyBpbiBhbm90aGVyIGRv
Y3VtZW50IGRvZXNuJ3QgY2F1c2UgbG9hZCBldmVudHMgdG8gYmUgZmlyZWQuIFRoZSB0ZXN0IGlz
IHN1Y2Nlc3NmdWwgaWYgdGhlIGltYWdlIGxvYWQgaGFuZGVyIGxpbmUgYmxvdyBvY2N1cnMgYWZ0
ZXIgdGhlIGxpbmUgdGhhdCBzYXlzIGl0IHNob3VsZCBiZSBiZWZvcmUgdGhlIGltYWdlIGxvYWQg
aGFuZGxlci4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nTGlu
ZShsaW5lKSB7CisgICAgdmFyIGxvZ0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bG9nIik7CisgICAgdmFyIGxpbmVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CisgICAgbGluZUVsZW1lbnQudGV4dENvbnRlbnQgPSBsaW5lOworICAgIGxvZ0VsZW1lbnQu
YXBwZW5kQ2hpbGQobGluZUVsZW1lbnQpOworfQorZnVuY3Rpb24gaW1hZ2VMb2FkSGFuZGxlcigp
IHsKKyAgICBsb2dMaW5lKCJJbWFnZSBsb2FkIGhhbmRsZXIgb2NjdXJyZWQuIik7Cit9CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cis8L3Njcmlw
dD4KKzxpbWcgc3JjPSJkYXRhOmltYWdlL3BuZztjaGFyc2V0PWJpbmFyeTtiYXNlNjQsaVZCT1J3
MEtHZ29BQUFBTlNVaEVVZ0FBQUVJQUFBQWFDQVlBQUFGMGpycmtBQUFDbVdsVVdIUllUVXc2WTI5
dExtRmtiMkpsTG5odGNBQUFBQUFBUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1
Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpV0UxUUlFTnZjbVVnTlM0eExqSWlQZ29nSUNBOGNtUm1P
bEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1q
SXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBnb2dJQ0FnSUNBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhK
a1pqcGhZbTkxZEQwaUlnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0Ix
Y213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlQZ29nSUNBZ0lDQWdJQ0E4WkdNNmNtbG5h
SFJ6UGdvZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT2tGc2RENEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BI
SmtaanBzYVNCNGJXdzZiR0Z1WnowaWVDMWtaV1poZFd4MElqNURiM0I1Y21sbmFIUWd3cWtnTWpB
eE15QkJjSEJzWlNCSmJtTXVJRUZzYkNCeWFXZG9kSE1nY21WelpYSjJaV1F1UEM5eVpHWTZiR2sr
Q2lBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT2tGc2RENEtJQ0FnSUNBZ0lDQWdQQzlrWXpweWFXZG9k
SE0rQ2lBZ0lDQWdJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQZ29nSUNBZ0lDQThjbVJtT2tSbGMy
TnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenA0YlhB
OUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4
ZUcxd09rTnlaV0YwYjNKVWIyOXNQa0ZrYjJKbElFbHRZV2RsVW1WaFpIazhMM2h0Y0RwRGNtVmhk
Rzl5Vkc5dmJENEtJQ0FnSUNBZ1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0NpQWdJRHd2Y21SbU9s
SkVSajRLUEM5NE9uaHRjRzFsZEdFK0Nsa01jTVVBQUFHY1NVUkJWRmdKN1preFRnTXhFRVYzRWFt
Z0NxS0ZGZ25FQ1lBandCMmdwd3dkUGRTVUVMaEN1QUp3QXNRQlFndUlpaW9TNFQ4anJ5d1U3VVJZ
TUpHY2tTWjJZcS8vbisreHZkbXRML3MzNDZyZDZvWDI5dS9XYVRwMXB1azBxZzFPSnAreENXTjFx
QzBPbGlMMzZyQnJvVmlEN0tpREhZczFpdHF6d2puUUFMYzVvUXhnbURNQTEzL21EbUJtRFNpdDVz
cmdHV3E1V2RrYW50Rll4L1pjR2VJNHZ5blpxbGE0MEpNRStLL3luamNKaUp4Nms3Z1dpZVZGcURq
WnRuQWZ3ZlphSGMzS2dJVFhkSndCSHMyTFJFOEVHalc4U0NEQ2k3Y1M0TE5SY1lTNzVRVFkyQjBm
bnRNQlBqYVlCUkxIM2lTZXBNVFFtOFFXOCtGSjRnZ0NtQmVKa2JEN2dZRWppVzRrUU9sMWdLVWMv
cXMrRk5DbS9HTVNvRmRLVE9MeTE3K3RDK0JkSGhia1Q3Q1NoQ0QyanB4N3VVTytwRmFhRURIMksx
WHd4a29WQWdISUNyS0RMSEU3TnNDZUJXTy9ZTjlZS3prajRrUXNxWEl4RjZLcVRpVEV2dWUvOFRn
alhpVlBpUGJrUElDdFNoWGlUYkZ2eUhsS0ZhekVwZkdneUZmbGpRZ29VWm9RNTRvNXZFWWcrTlJL
V2hyaERVWWFmRnIvQXQ0Uk91ZzFqQmUwQUFBQUFFbEZUa1N1UW1DQyIgb25sb2FkPSJpbWFnZUxv
YWRIYW5kbGVyKCk7Ij4KKzxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBTVkdyYWZmaXRpOyI+VGhp
cyBpcyBzb21lIGR1bW15IHRleHQ8L2Rpdj4KKzxzY3JpcHQ+Citsb2dMaW5lKCJUaGlzIGxpbmUg
c2hvdWxkIG9jY3VyIGJlZm9yZSB0aGUgaW1hZ2UgbG9hZCBoYW5kbGVyLiIpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="261944"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237260</attachid>
            <date>2014-08-27 15:15:19 -0700</date>
            <delta_ts>2014-08-27 15:56:23 -0700</delta_ts>
            <desc>Smaller patch</desc>
            <filename>bug-136269.diff</filename>
            <type>text/plain</type>
            <size>6868</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YzRhZDA3Li5kODFlYjQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQtMDgt
MjcgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIERyYXdpbmcg
dGV4dCBpbiBhbiBTVkcgZm9udCBjYXVzZXMgbG9hZCBldmVudHMgdG8gYmUgZmlyZWQuCisgICAg
ICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzYyNjk+CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xNTcyNDkxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvdGV4dC9zdmctZm9udC10cmlnZ2VyLWxvYWQtZXZlbnQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvc3ZnLWZvbnQtdHJpZ2dlci1sb2FkLWV2ZW50
Lmh0bWw6IEFkZGVkLgorCiAyMDE0LTA4LTI3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0aW5nIGF0dHJpYnV0ZXMgb24gSFRNTCBlbGVtZW50
cyBkbyBub3QgaW52YWxpZGF0ZSB0aGUgc3R5bGUgY29ycmVjdGx5IHVubGVzcyB0aGUgYXR0cmli
dXRlIG5hbWUgaXMgbG93ZXJjYXNlIGluIHRoZSBzdHlsZXNoZWV0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3RleHQvc3ZnLWZvbnQtdHJpZ2dlci1sb2FkLWV2ZW50LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9zdmctZm9udC10cmlnZ2VyLWxvYWQtZXZlbnQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMjIzYmQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvc3ZnLWZvbnQtdHJpZ2dlci1s
b2FkLWV2ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMgdGVzdCBtYWtlcyBz
dXJlIHRoYXQgZHJhd2luZyB0ZXh0IGluIGFuIFNWRyBmb250IHRoYXQgcmVzaWRlcyBpbiBhbm90
aGVyIGRvY3VtZW50IGRvZXNuJ3QgY2F1c2UgbG9hZCBldmVudHMgdG8gYmUgZmlyZWQuIFRoZSB0
ZXN0IGlzIHN1Y2Nlc3NmdWwgaWYgdGhlIGltYWdlIGxvYWQgaGFuZGVyIGxpbmUgYmxvdyBvY2N1
cnMgYWZ0ZXIgdGhlIGxpbmUgdGhhdCBzYXlzIGl0IHNob3VsZCBiZSBiZWZvcmUgdGhlIGltYWdl
IGxvYWQgaGFuZGxlci4KK1RoaXMgbGluZSBzaG91bGQgb2NjdXIgYmVmb3JlIHRoZSBpbWFnZSBs
b2FkIGhhbmRsZXIuCitJbWFnZSBsb2FkIGhhbmRsZXIgb2NjdXJyZWQuCisKK1RoaXMgaXMgc29t
ZSBkdW1teSB0ZXh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvc3ZnLWZvbnQt
dHJpZ2dlci1sb2FkLWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvc3ZnLWZvbnQt
dHJpZ2dlci1sb2FkLWV2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNTg5M2Q0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9zdmct
Zm9udC10cmlnZ2VyLWxvYWQtZXZlbnQuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitAZm9udC1mYWNlIHsKKyAgICBmb250LWZh
bWlseTogJ1NWR3JhZmZpdGknOworICAgIHNyYzogdXJsKCIuLi8uLi9zdmcvY3VzdG9tL3Jlc291
cmNlcy9ncmFmZml0aS5zdmciKSBmb3JtYXQoc3ZnKQorfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBkcmF3aW5nIHRleHQgaW4gYW4gU1ZHIGZv
bnQgdGhhdCByZXNpZGVzIGluIGFub3RoZXIgZG9jdW1lbnQgZG9lc24ndCBjYXVzZSBsb2FkIGV2
ZW50cyB0byBiZSBmaXJlZC4gVGhlIHRlc3QgaXMgc3VjY2Vzc2Z1bCBpZiB0aGUgaW1hZ2UgbG9h
ZCBoYW5kZXIgbGluZSBibG93IG9jY3VycyBhZnRlciB0aGUgbGluZSB0aGF0IHNheXMgaXQgc2hv
dWxkIGJlIGJlZm9yZSB0aGUgaW1hZ2UgbG9hZCBoYW5kbGVyLgorPHByZSBpZD0ibG9nIj48L3By
ZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobGluZSkgeworICAgIGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoIiNsb2ciKS5pbm5lclRleHQgKz0gbGluZSArICdcbic7Cit9CitmdW5jdGlvbiBpbWFn
ZUxvYWRIYW5kbGVyKCkgeworICAgIGxvZygiSW1hZ2UgbG9hZCBoYW5kbGVyIG9jY3VycmVkLiIp
OworfQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworPC9zY3JpcHQ+Cis8aW1nIHNyYz0iZGF0YTppbWFnZS9wbmc7Y2hhcnNldD1iaW5hcnk7YmFz
ZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFSUFBQUFhQ0FZQUFBRjBqcnJrQUFBQ21XbFVX
SFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBT
SmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVdFMVFJRU52Y21VZ05TNHhMaklpUGdv
Z0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1
T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lDQThjbVJtT2tSbGMyTnlh
WEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenBrWXowaWFI
UjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpUGdvZ0lDQWdJQ0FnSUNB
OFpHTTZjbWxuYUhSelBnb2dJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9rRnNkRDRLSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdQSEprWmpwc2FTQjRiV3c2YkdGdVp6MGllQzFrWldaaGRXeDBJajVEYjNCNWNtbG5h
SFFnd3FrZ01qQXhNeUJCY0hCc1pTQkpibU11SUVGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVBD
OXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJRHd2Y21SbU9rRnNkRDRLSUNBZ0lDQWdJQ0FnUEM5
a1l6cHlhV2RvZEhNK0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQWdJQ0E4
Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRi
V3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpUGdvZ0lD
QWdJQ0FnSUNBOGVHMXdPa055WldGMGIzSlViMjlzUGtGa2IySmxJRWx0WVdkbFVtVmhaSGs4TDNo
dGNEcERjbVZoZEc5eVZHOXZiRDRLSUNBZ0lDQWdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtDaUFn
SUR3dmNtUm1PbEpFUmo0S1BDOTRPbmh0Y0cxbGRHRStDbGtNY01VQUFBR2NTVVJCVkZnSjdaa3hU
Z014RUVWM0VhbWdDcUtGRmduRUNZQWp3QjJncHd3ZFBkU1VFTGhDdUFKd0FzUUJRZ3VJaWlvUzRU
OGpyeXdVN1VSWU1KR2NrU1oyWXEvL24rK3h2ZG10TC9zMzQ2cmQ2b1gyOXUvV2FUcDFwdWswcWcx
T0pwK3hDV04xcUMwT2xpTDM2ckJyb1ZpRDdLaURIWXMxaXRxendqblFBTGM1b1F4Z21ETUExMy9t
RG1CbURTaXQ1c3JnR1dxNVdka2FudEZZeC9aY0dlSTR2eW5acWxhNDBKTUUrSy95bmpjSmlKeDZr
N2dXaWVWRnFEalp0bkFmd2ZaYUhjM0tnSVRYZEp3QkhzMkxSRThFR2pXOFNDRENpN2NTNExOUmNZ
Uzc1UVRZMkIwZm50TUJQamFZQlJMSDNpU2VwTVRRbThRVzgrRko0Z2dDbUJlSmtiRDdnWUVqaVc0
a1FPbDFnS1VjL3FzK0ZOQ20vR01Tb0ZkS1RPTHkxNyt0QytCZEhoYmtUN0NTaENEMmpweDd1VU8r
cEZhYUVESDJLMVh3eGtvVkFnSElDcktETEhFN05zQ2VCV08vWU45WUt6a2o0a1FzcVhJeEY2S3FU
aVRFdnVlLzhUZ2pYaVZQaVBia1BJQ3RTaFhpVGJGdnlIbEtGYXpFcGZHZ3lGZmxqUWdvVVpvUTU0
bzV2RVlnK05SS1docmhEVVlhZkZyL0F0NFJPdWcxakJlMEFBQUFBRWxGVGtTdVFtQ0MiIG9ubG9h
ZD0iaW1hZ2VMb2FkSGFuZGxlcigpOyI+Cis8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogU1ZHcmFm
Zml0aTsiPlRoaXMgaXMgc29tZSBkdW1teSB0ZXh0PC9kaXY+Cis8c2NyaXB0PgorbG9nKCJUaGlz
IGxpbmUgc2hvdWxkIG9jY3VyIGJlZm9yZSB0aGUgaW1hZ2UgbG9hZCBoYW5kbGVyLiIpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWFlYWRjMS4uZGEzYzJiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE0LTA4LTI3ICBBbmRyZWFzIEtsaW5nICA8
YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBEcmF3aW5nIHRleHQgaW4gYW4gU1ZHIGZvbnQg
Y2F1c2VzIGxvYWQgZXZlbnRzIHRvIGJlIGZpcmVkLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTM2MjY5PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTU3MjQ5MTU+CisKKyAgICAg
ICAgRG9uJ3QgZmx1c2ggcGVuZGluZyBsb2FkIGV2ZW50cyBpbiBEb2N1bWVudDo6aW1wbGljaXRD
bG9zZSgpIGZvciBmcmFtZWxlc3MgZG9jdW1lbnRzLgorICAgICAgICBUaGlzIGlzIGEgdGFyZ2V0
ZWQgZml4IGZvciBhbiBpc3N1ZSB3aGVyZSBwYXJzaW5nIFNWRyBmb250cyBkdXJpbmcgbGF5b3V0
IHdvdWxkIGNhdXNlCisgICAgICAgIGV2ZW50IGRpc3BhdGNoIHRvIGhhcHBlbiBpbiB0aGUgbWFp
biBkb2N1bWVudCwgbGVhZGluZyB0byBhcmJpdHJhcnkgSlMgZXhlY3V0aW9uLgorCisgICAgICAg
IE5vdGUgdGhhdCB0aGUgdGVzdGNhc2Ugb25seSB3b3JrcyBpbiBEUlQvV1RSLCBzaW5jZSBvbmNl
IHRoZSBTVkcgZm9udCBpcyBpbiBjYWNoZWQKKyAgICAgICAgYnkgV2ViQ29yZSwgd2Ugd29uJ3Qg
cmVwYXJzZSBpdCBhZ2Fpbi4gQ2FjaGVzIGFyZSBjbGVhcmVkIGJldHdlZW4gdGVzdHMsIHNvIGl0
IHdpbGwKKyAgICAgICAgY29ycmVjdGx5IGZhaWwgaWYgdGhpcyBzaG91bGQgcmVncmVzcy4KKwor
ICAgICAgICBMb25nZXItdGVybSwgd2Ugc2hvdWxkIGNsZWFuIHRoaXMgdXAgYW5kIGdldCByaWQg
b2YgdGhlIGdsb2JhbCBkaXNwYXRjaCBlbnRpcmVseS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L3RleHQvc3ZnLWZvbnQtdHJpZ2dl
ci1sb2FkLWV2ZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6CisKIDIwMTQtMDgtMjcgIEJlbmph
bWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRpbmcgYXR0
cmlidXRlcyBvbiBIVE1MIGVsZW1lbnRzIGRvIG5vdCBpbnZhbGlkYXRlIHRoZSBzdHlsZSBjb3Jy
ZWN0bHkgdW5sZXNzIHRoZSBhdHRyaWJ1dGUgbmFtZSBpcyBsb3dlcmNhc2UgaW4gdGhlIHN0eWxl
c2hlZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDFiNGFjNzcuLjNhMTdlOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjM4MCwxNCArMjM4MCwxNiBAQCB2b2lkIERvY3VtZW50
OjppbXBsaWNpdENsb3NlKCkKICAgICBpZiAoZikgewogICAgICAgICBmLT5sb2FkZXIoKS5pY29u
KCkuc3RhcnRMb2FkZXIoKTsKICAgICAgICAgZi0+YW5pbWF0aW9uKCkuc3RhcnRBbmltYXRpb25z
SWZOb3RTdXNwZW5kZWQodGhpcyk7Ci0gICAgfQotCi0gICAgSW1hZ2VMb2FkZXI6OmRpc3BhdGNo
UGVuZGluZ0JlZm9yZUxvYWRFdmVudHMoKTsKLSAgICBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5k
aW5nTG9hZEV2ZW50cygpOwotICAgIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdFcnJvckV2
ZW50cygpOwogCi0gICAgSFRNTExpbmtFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRz
KCk7Ci0gICAgSFRNTFN0eWxlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOwor
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGRpc3BhdGNoaW5nIHBlbmRpbmcgZXZl
bnRzIGdsb2JhbGx5IG9uIGFsbCBEb2N1bWVudHMgaGVyZS4KKyAgICAgICAgLy8gRm9yIG5vdywg
b25seSBkbyB0aGlzIHdoZW4gdGhlcmUgaXMgYSBGcmFtZSwgb3RoZXJ3aXNlIHRoaXMgY291bGQg
Y2F1c2UgSlMgcmVlbnRyYW5jeQorICAgICAgICAvLyBiZWxvdyBTVkcgZm9udCBwYXJzaW5nLCBm
b3IgZXhhbXBsZS4gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEzNjI2OT4KKyAgICAgICAgSW1hZ2VM
b2FkZXI6OmRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudHMoKTsKKyAgICAgICAgSW1hZ2VM
b2FkZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKKyAgICAgICAgSW1hZ2VMb2FkZXI6
OmRpc3BhdGNoUGVuZGluZ0Vycm9yRXZlbnRzKCk7CisgICAgICAgIEhUTUxMaW5rRWxlbWVudDo6
ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOworICAgICAgICBIVE1MU3R5bGVFbGVtZW50Ojpk
aXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7CisgICAgfQogCiAgICAgLy8gVG8gYWxpZ24gdGhl
IEhUTUwgbG9hZCBldmVudCBhbmQgdGhlIFNWR0xvYWQgZXZlbnQgZm9yIHRoZSBvdXRlcm1vc3Qg
PHN2Zz4gZWxlbWVudCwgZmlyZSBpdCBmcm9tCiAgICAgLy8gaGVyZSwgaW5zdGVhZCBvZiBkb2lu
ZyBpdCBmcm9tIFNWR0VsZW1lbnQ6OmZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuIChpZiBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkPSJmYWxzZSIsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>