<?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>142801</bug_id>
          
          <creation_ts>2015-03-17 16:40:52 -0700</creation_ts>
          <short_desc>&lt;attachment&gt; should put URLs on the pasteboard so that Finder can accept drops</short_desc>
          <delta_ts>2015-03-19 15:00:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1078024</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-03-17 16:40:52 -0700</bug_when>
    <thetext>Tracks the work required to be able to drag an attachment element out of a WebKit view and into a different target.

rdar://problem/19982527</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078028</commentid>
    <comment_count>1</comment_count>
      <attachid>248886</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-03-17 16:48:24 -0700</bug_when>
    <thetext>Created attachment 248886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078029</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-17 16:49:58 -0700</bug_when>
    <thetext>Attachment 248886 did not pass style-queue:


ERROR: Source/WebCore/page/DragController.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078030</commentid>
    <comment_count>3</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-03-17 16:50:23 -0700</bug_when>
    <thetext>I fixed the include order in DragController.cpp after posting the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078034</commentid>
    <comment_count>4</comment_count>
      <attachid>248886</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-03-17 17:01:33 -0700</bug_when>
    <thetext>Comment on attachment 248886
Patch

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

&gt; Source/WebCore/page/DragController.cpp:629
&gt; +    // Attachment elements can have DragSourceActionNone even if
&gt; +    // selected, if the selection contains only the attachement element.

This is not a &apos;why?&apos; comment, but I wish it were.

&gt; Source/WebCore/page/DragController.cpp:759
&gt; +    m_draggingAttachmentURL = URL();

Vaguely interesting that you reset m_draggingAttachmentURL here, but this isn&apos;t where m_draggingImageURL is reset. But maybe there&apos;s a reason!

&gt; Source/WebCore/rendering/HitTestResult.cpp:330
&gt; +    return m_innerNonSharedNode-&gt;document().completeURL(attachmentFile-&gt;path());

This doesn&apos;t look right... is it? Is the file relative to the document&apos;s URL? Why are we completeURLing?

&gt; Source/WebKit2/UIProcess/mac/PageClientImpl.mm:410
&gt;  void PageClientImpl::setPromisedData(const String&amp; pasteboardName, PassRefPtr&lt;SharedBuffer&gt; imageBuffer, const String&amp; filename, const String&amp; extension, const String&amp; title, const String&amp; url, const String&amp; visibleUrl, PassRefPtr&lt;SharedBuffer&gt; archiveBuffer)

It&apos;s pretty weird that this function takes an ImageBuffer and we call it even in the non-image case. Maybe it needs a rename and duplication?

&gt; Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:413
&gt; +    RefPtr&lt;SharedMemory&gt; sharedMemoryImage = (!imageHandle.isNull()) ? SharedMemory::create(imageHandle, SharedMemory::ReadOnly) : nullptr;

Ditto here, I think this should be written differently. Maybe split into setPromisedData and setPromisedImage (and setPromisedImage calls setPromisedData after extracting the data?)

&gt; Source/WebKit/mac/Misc/WebNSPasteboardExtras.mm:275
&gt; +    NSMutableArray *types = [[NSMutableArray alloc] initWithObjects:NSFilesPromisePboardType, nil];

Isn&apos;t this leaking?

&gt; Source/WebKit/mac/Misc/WebNSPasteboardExtras.mm:292
&gt; +            [paths.get() addObject:title];

no .get()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078056</commentid>
    <comment_count>5</comment_count>
      <attachid>248893</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-03-17 17:55:03 -0700</bug_when>
    <thetext>Created attachment 248893
Patch that fixes builds and style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078058</commentid>
    <comment_count>6</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-03-17 18:07:32 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 248886 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=248886&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/DragController.cpp:629
&gt; &gt; +    // Attachment elements can have DragSourceActionNone even if
&gt; &gt; +    // selected, if the selection contains only the attachement element.
&gt; 
&gt; This is not a &apos;why?&apos; comment, but I wish it were.
I don&apos;t understand your comment. This is exactly what we do. What am I missing?
&gt; 
&gt; &gt; Source/WebCore/page/DragController.cpp:759
&gt; &gt; +    m_draggingAttachmentURL = URL();
&gt; 
&gt; Vaguely interesting that you reset m_draggingAttachmentURL here, but this
&gt; isn&apos;t where m_draggingImageURL is reset. But maybe there&apos;s a reason!
Moved it up simply not to add another #if ENABLE(ATTACHMENT_ELEMENT)
&gt; 
&gt; &gt; Source/WebCore/rendering/HitTestResult.cpp:330
&gt; &gt; +    return m_innerNonSharedNode-&gt;document().completeURL(attachmentFile-&gt;path());
&gt; 
&gt; This doesn&apos;t look right... is it? Is the file relative to the document&apos;s
&gt; URL? Why are we completeURLing?
I believe you are right, copy paste mistake.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/PageClientImpl.mm:410
&gt; &gt;  void PageClientImpl::setPromisedData(const String&amp; pasteboardName, PassRefPtr&lt;SharedBuffer&gt; imageBuffer, const String&amp; filename, const String&amp; extension, const String&amp; title, const String&amp; url, const String&amp; visibleUrl, PassRefPtr&lt;SharedBuffer&gt; archiveBuffer)
&gt; 
&gt; It&apos;s pretty weird that this function takes an ImageBuffer and we call it
&gt; even in the non-image case. Maybe it needs a rename and duplication?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:413
&gt; &gt; +    RefPtr&lt;SharedMemory&gt; sharedMemoryImage = (!imageHandle.isNull()) ? SharedMemory::create(imageHandle, SharedMemory::ReadOnly) : nullptr;
&gt; 
&gt; Ditto here, I think this should be written differently. Maybe split into
&gt; setPromisedData and setPromisedImage (and setPromisedImage calls
&gt; setPromisedData after extracting the data?)
&gt;
I was not entirely convinced to duplicate the code, but maybe I should...
 
&gt; &gt; Source/WebKit/mac/Misc/WebNSPasteboardExtras.mm:275
&gt; &gt; +    NSMutableArray *types = [[NSMutableArray alloc] initWithObjects:NSFilesPromisePboardType, nil];
&gt; 
&gt; Isn&apos;t this leaking?
I only moved up an existing line. I&apos;ve noticed that in many places where declareTypes is called we don&apos;t worry about the array we pass.
&gt; 
&gt; &gt; Source/WebKit/mac/Misc/WebNSPasteboardExtras.mm:292
&gt; &gt; +            [paths.get() addObject:title];
&gt; 
&gt; no .get()
ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078062</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-03-17 18:14:44 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; Comment on attachment 248886 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=248886&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/DragController.cpp:629
&gt; &gt; &gt; +    // Attachment elements can have DragSourceActionNone even if
&gt; &gt; &gt; +    // selected, if the selection contains only the attachement element.
&gt; &gt; 
&gt; &gt; This is not a &apos;why?&apos; comment, but I wish it were.
&gt; I don&apos;t understand your comment. This is exactly what we do. What am I
&gt; missing?

Exactly. The comment is describing what the code does, but not why it does that. If I wanted to know what it does, I would read the code. If I wanted to know why it does it... I would come ask you, because the comment doesn&apos;t help me.

&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/DragController.cpp:759
&gt; &gt; &gt; +    m_draggingAttachmentURL = URL();
&gt; &gt; 
&gt; &gt; Vaguely interesting that you reset m_draggingAttachmentURL here, but this
&gt; &gt; isn&apos;t where m_draggingImageURL is reset. But maybe there&apos;s a reason!
&gt; Moved it up simply not to add another #if ENABLE(ATTACHMENT_ELEMENT)

Ah! OK.

&gt; &gt; &gt; Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:413
&gt; &gt; &gt; +    RefPtr&lt;SharedMemory&gt; sharedMemoryImage = (!imageHandle.isNull()) ? SharedMemory::create(imageHandle, SharedMemory::ReadOnly) : nullptr;
&gt; &gt; 
&gt; &gt; Ditto here, I think this should be written differently. Maybe split into
&gt; &gt; setPromisedData and setPromisedImage (and setPromisedImage calls
&gt; &gt; setPromisedData after extracting the data?)
&gt; &gt;
&gt; I was not entirely convinced to duplicate the code, but maybe I should...

It doesn&apos;t need to be much duplication (I think!) if you have setPromisedImage extract the image data and then just go ahead and call setPromisedData.

&gt; &gt; &gt; Source/WebKit/mac/Misc/WebNSPasteboardExtras.mm:275
&gt; &gt; &gt; +    NSMutableArray *types = [[NSMutableArray alloc] initWithObjects:NSFilesPromisePboardType, nil];
&gt; &gt; 
&gt; &gt; Isn&apos;t this leaking?
&gt; I only moved up an existing line. I&apos;ve noticed that in many places where
&gt; declareTypes is called we don&apos;t worry about the array we pass.

Oh! No, there&apos;s an explicit -release sent there (it&apos;s now far away from the alloc/init, so I missed it).

This should probably use RetainPtr, but I don&apos;t care if you fix it in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078069</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-17 18:34:13 -0700</bug_when>
    <thetext>Does this patch introduce sandbox escape opportunities? Can malicious native code running inside WebContent process fool UI process into giving it full file system access?

Files inside drag normally result in getting such access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078345</commentid>
    <comment_count>9</comment_count>
      <attachid>248979</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-03-18 16:23:44 -0700</bug_when>
    <thetext>Created attachment 248979
Patch3

This patch addresses the comments and the security concerns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078355</commentid>
    <comment_count>10</comment_count>
      <attachid>248983</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-03-18 16:36:48 -0700</bug_when>
    <thetext>Created attachment 248983
Patch4

Trying to make EWS happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078361</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-18 16:39:59 -0700</bug_when>
    <thetext>Attachment 248983 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/PageClient.h:198:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078625</commentid>
    <comment_count>12</comment_count>
      <attachid>248983</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-03-19 14:01:43 -0700</bug_when>
    <thetext>Comment on attachment 248983
Patch4

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

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:105
&gt; +    NSURL* nsURL = (NSURL *)url;

one of the stars is on the wrong side

&gt; Source/WebKit/mac/Misc/WebNSPasteboardExtras.mm:292
&gt; +            [paths.get() addObject:title];

no .get()

&gt; LayoutTests/ChangeLog:13
&gt; +&lt;&lt;&lt;&lt;&lt;&lt;&lt; .mine

Something bad happened here.

&gt; LayoutTests/editing/pasteboard/drag-and-drop-attachment-contenteditable.html:1
&gt; +

blank line?

&gt; LayoutTests/editing/pasteboard/drag-and-drop-attachment-contenteditable.html:26
&gt; +   shouldBe(&apos;target.getElementsByTagName(&quot;attachment&quot;).length&apos;, &apos;1&apos;);

indentation error

&gt; LayoutTests/editing/pasteboard/drag-and-drop-attachment-contenteditable.html:32
&gt; +{

this { is inconsistent with the others.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078642</commentid>
    <comment_count>13</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-03-19 15:00:09 -0700</bug_when>
    <thetext>Committed revision 181760.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248886</attachid>
            <date>2015-03-17 16:48:24 -0700</date>
            <delta_ts>2015-03-17 17:55:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>drag-attachment-out.txt</filename>
            <type>text/plain</type>
            <size>34822</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTY3MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE1LTAzLTE3ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgPGF0dGFjaG1lbnQ+IHNob3Vs
ZCBwdXQgVVJMcyBvbiB0aGUgcGFzdGVib2FyZCBzbyB0aGF0IEZpbmRlciBjYW4gYWNjZXB0IGRy
b3BzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQy
ODAxCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzE5OTgyNTI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9wYXN0ZWJvYXJkL2Ry
YWctYW5kLWRyb3AtYXR0YWNobWVudC1jb250ZW50ZWRpdGFibGUuaHRtbAorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBhbGwgdGhlIG5lY2Vzc2FyeSBzdXBwb3J0IHRvIHdyaXRlIGF0dGFjaG1l
bnQgZWxlbWVudHMgaW50bworICAgICAgICB0aGUgcGFzdGVib2FyZCwgaW5jbHVkaW5nIHRoZSBw
cm9taXNlZCB0eXBlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdD
bGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZUF0
dGFjaG1lbnQpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9EcmFnQ29u
dHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdnaW5nQXR0
YWNobWVudFVSTCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9tYWMv
RHJhZ0NvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
ZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVBdHRh
Y2htZW50VVJMKToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorCiAyMDE1
LTAzLTE3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IENhbm5vdCBpbnZva2UgYWN0aW9uIG1lbnVzIGFueW1vcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4MTYx
NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjUyMyw3ICsyNTIzLDcgQEAKIAkJN0NDNjk5NDExOTFFQzVGNTAw
QUYyMjcwIC8qIEpTV2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0M2OTkzRjE5MUVDNUY1MDBBRjIyNzAgLyogSlNXZWJLaXRO
YW1lc3BhY2UuaCAqLzsgfTsKIAkJN0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlw
dFdoaXRlTGlzdC50eHQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDQzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0
ICovOyB9OwogCQk3Q0Q0OTRDQzFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Q0OTRD
QTFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAgKi87IH07Ci0JCTdDRDQ5
NENEMUE4NkVCMUQwMDBBODdFQyAvKiBSZW5kZXJBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Q0OTRDQjFBODZFQjFEMDAwQTg3RUMg
LyogUmVuZGVyQXR0YWNobWVudC5oICovOyB9OworCQk3Q0Q0OTRDRDFBODZFQjFEMDAwQTg3RUMg
LyogUmVuZGVyQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NENDk0Q0IxQTg2RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0RF
RUUxRTE5NzYxMEQ3MDBFMzUyQ0QgLyogVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDREVFRTFEMTk3NjEwRDcw
MEUzNTJDRCAvKiBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDRTY4MzQ0MTkyMTQzQTgwMEY0RDkyOCAv
KiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTY4MzQyMTkyMTQzQTgwMEY0RDkyOCAvKiBVc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmNwcCAqLzsgfTsKIAkJN0NFNjgzNDUxOTIxNDNBODAw
RjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTY4MzQzMTkyMTQzQTgwMEY0RDkyOCAv
KiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Fj
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgJ
KHJldmlzaW9uIDE4MTYxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIERyYWdTb3VyY2VBY3Rpb25JbWFnZSAgICAgICAgPSAyLAogICAgICAgICBEcmFnU291cmNl
QWN0aW9uTGluayAgICAgICAgID0gNCwKICAgICAgICAgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlv
biAgICA9IDgsCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICAgICAgRHJhZ1Nv
dXJjZUFjdGlvbkF0dGFjaG1lbnQgICA9IDE2LAorI2VuZGlmCiAgICAgICAgIERyYWdTb3VyY2VB
Y3Rpb25BbnkgICAgICAgICAgPSBVSU5UX01BWAogICAgIH0gRHJhZ1NvdXJjZUFjdGlvbjsKICAg
ICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5oCShyZXZpc2lvbiAxODE2MTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiAr
NTUsOSBAQCBwdWJsaWM6CiAgICAgLy8gTWFjLXNwZWNpZmljIGhlbHBlciBmdW5jdGlvbiB0byBh
bGxvdyBhY2Nlc3MgdG8gd2ViIGFyY2hpdmVzIGFuZCBOU1Bhc3RlYm9hcmQgZXh0cmFzIGluIFdl
YktpdC4KICAgICAvLyBUaGlzIGlzIG5vdCBhYnN0cmFjdCBhcyB0aGF0IHdvdWxkIHJlcXVpcmUg
YW5vdGhlciAjaWYgUExBVEZPUk0oQ09DT0EpIGZvciB0aGUgU1ZHSW1hZ2UgY2xpZW50IGVtcHR5
IGltcGxlbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KGNvbnN0IFN0cmluZyYsIEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBGcmFt
ZSopIHsgfQorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgdmlydHVhbCB2b2lk
IGRlY2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiwgRWxlbWVudCYsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYsIEZyYW1lKikgeyB9CisjZW5kaWYKICNlbmRpZgogCiAgICAg
dmlydHVhbCB+RHJhZ0NsaWVudCgpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDE4MTYxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKQEAgLTYyMyw2ICs2MjQsMTMgQEAgRWxlbWVu
dCogRHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVsZW1lbgogICAgIHN0YXRlLnR5cGUgPSAoc291
cmNlRnJhbWUtPnNlbGVjdGlvbigpLmNvbnRhaW5zKGRyYWdPcmlnaW4pKSA/IERyYWdTb3VyY2VB
Y3Rpb25TZWxlY3Rpb24gOiBEcmFnU291cmNlQWN0aW9uTm9uZTsKICAgICBpZiAoIXN0YXJ0RWxl
bWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKKyAgICAvLyBBdHRhY2htZW50IGVsZW1lbnRzIGNhbiBoYXZlIERyYWdTb3VyY2VBY3Rp
b25Ob25lIGV2ZW4gaWYKKyAgICAvLyBzZWxlY3RlZCwgaWYgdGhlIHNlbGVjdGlvbiBjb250YWlu
cyBvbmx5IHRoZSBhdHRhY2hlbWVudCBlbGVtZW50LgorICAgIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNlbGVjdGlvbiA9IHNvdXJjZUZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAg
ICBpZiAoc2VsZWN0aW9uLmlzUmFuZ2UoKSAmJiBpczxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KHNl
bGVjdGlvbi5zdGFydCgpLmFuY2hvck5vZGUoKSkgJiYgc2VsZWN0aW9uLnN0YXJ0KCkuYW5jaG9y
Tm9kZSgpID09IHNlbGVjdGlvbi5lbmQoKS5hbmNob3JOb2RlKCkpCisgICAgICAgIHN0YXRlLnR5
cGUgPSBEcmFnU291cmNlQWN0aW9uTm9uZTsKKyNlbmRpZgogCiAgICAgZm9yIChhdXRvIHJlbmRl
cmVyID0gc3RhcnRFbGVtZW50LT5yZW5kZXJlcigpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5k
ZXJlci0+cGFyZW50KCkpIHsKICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHJlbmRlcmVyLT5u
b25Qc2V1ZG9FbGVtZW50KCk7CkBAIC02NDksNiArNjU3LDE0IEBAIEVsZW1lbnQqIERyYWdDb250
cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW4KICAgICAgICAgICAgICAgICBzdGF0ZS50eXBlID0gc3Rh
dGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUudHlwZSB8IERyYWdTb3VyY2VBY3Rpb25M
aW5rKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgICAgIH0KKyNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICAgICAgICAgaWYgKChtX2RyYWdTb3Vy
Y2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQXR0YWNobWVudCkKKyAgICAgICAgICAgICAgICAm
JiBpczxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KCplbGVtZW50KQorICAgICAgICAgICAgICAgICYm
IGRvd25jYXN0PEhUTUxBdHRhY2htZW50RWxlbWVudD4oKmVsZW1lbnQpLmZpbGUoKSkgeworICAg
ICAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihz
dGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1lbnQpOworICAgICAgICAgICAgICAg
IHJldHVybiBlbGVtZW50OworICAgICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTczOCw2ICs3NTQsMTAgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZy
YW1lJiBzcgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgVVJMIGxpbmtVUkwgPSBoaXRUZXN0
UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwogICAgIFVSTCBpbWFnZVVSTCA9IGhpdFRlc3RSZXN1
bHQuYWJzb2x1dGVJbWFnZVVSTCgpOworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisg
ICAgVVJMIGF0dGFjaG1lbnRVUkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlQXR0YWNobWVudFVS
TCgpOworICAgIG1fZHJhZ2dpbmdBdHRhY2htZW50VVJMID0gVVJMKCk7CisjZW5kaWYKIAogICAg
IEludFBvaW50IG1vdXNlRHJhZ2dlZFBvaW50ID0gc3JjLnZpZXcoKS0+d2luZG93VG9Db250ZW50
cyhkcmFnRXZlbnQucG9zaXRpb24oKSk7CiAKQEAgLTg1Myw2ICs4NzMsMjMgQEAgYm9vbCBEcmFn
Q29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcgogICAgICAgICAgICAgZHJhZ0ltYWdlID0g
c2NhbGVEcmFnSW1hZ2UoZHJhZ0ltYWdlLCBGbG9hdFNpemUobV9wYWdlLmRldmljZVNjYWxlRmFj
dG9yKCksIG1fcGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAgICAgICAgIH0KICAgICAgICAg
ZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJhZ0xvYywgbW91c2VEcmFnZ2VkUG9pbnQsIGRhdGFU
cmFuc2Zlciwgc3JjLCB0cnVlKTsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
IH0gZWxzZSBpZiAoIWF0dGFjaG1lbnRVUkwuaXNFbXB0eSgpICYmIChtX2RyYWdTb3VyY2VBY3Rp
b24gJiBEcmFnU291cmNlQWN0aW9uQXR0YWNobWVudCkpIHsKKyAgICAgICAgaWYgKCFkYXRhVHJh
bnNmZXIucGFzdGVib2FyZCgpLmhhc0RhdGEoKSkgeworICAgICAgICAgICAgbV9kcmFnZ2luZ0F0
dGFjaG1lbnRVUkwgPSBhdHRhY2htZW50VVJMOworICAgICAgICAgICAgc2VsZWN0RWxlbWVudChl
bGVtZW50KTsKKyAgICAgICAgICAgIGRlY2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQoZGF0YVRyYW5z
ZmVyLCBlbGVtZW50LCBhdHRhY2htZW50VVJMKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgbV9jbGllbnQud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25B
dHRhY2htZW50LCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIpOworICAgICAgICAKKyAgICAgICAg
aWYgKCFkcmFnSW1hZ2UpIHsKKyAgICAgICAgICAgIGRyYWdJbWFnZSA9IGRpc3NvbHZlRHJhZ0lt
YWdlVG9GcmFjdGlvbihjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oc3JjKSwgRHJhZ0ltYWdl
QWxwaGEpOworICAgICAgICAgICAgZHJhZ0xvYyA9IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKHNy
Yyk7CisgICAgICAgICAgICBtX2RyYWdPZmZzZXQgPSBJbnRQb2ludChkcmFnT3JpZ2luLngoKSAt
IGRyYWdMb2MueCgpLCBkcmFnT3JpZ2luLnkoKSAtIGRyYWdMb2MueSgpKTsKKyAgICAgICAgfQor
ICAgICAgICBkb1N5c3RlbURyYWcoZHJhZ0ltYWdlLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBkYXRh
VHJhbnNmZXIsIHNyYywgZmFsc2UpOworI2VuZGlmCiAgICAgfSBlbHNlIGlmIChzdGF0ZS50eXBl
ID09IERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgewogICAgICAgICBpZiAoZHJhZ0ltYWdlKSB7CiAg
ICAgICAgICAgICBBU1NFUlQobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkRI
VE1MKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgJKHJldmlzaW9uIDE4
MTYxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNzMsNiArNzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wg
ZGlkSW5pdGlhdGVEcmFnKCkgY29uc3QgeyByZXR1cm4gbV9kaWRJbml0aWF0ZURyYWc7IH0KICAg
ICAgICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VEcmFnT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2VEcmFnT3BlcmF0aW9uOyB9CiAgICAgICAgIGNvbnN0IFVSTCYgZHJhZ2dpbmdJbWFn
ZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdJbWFnZVVSTDsgfQorI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgICAgIGNvbnN0IFVSTCYgZHJhZ2dpbmdBdHRhY2htZW50
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ0F0dGFjaG1lbnRVUkw7IH0KKyNlbmRpZgog
ICAgICAgICB2b2lkIHNldERyYWdPZmZzZXQoY29uc3QgSW50UG9pbnQmIG9mZnNldCkgeyBtX2Ry
YWdPZmZzZXQgPSBvZmZzZXQ7IH0KICAgICAgICAgY29uc3QgSW50UG9pbnQmIGRyYWdPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX2RyYWdPZmZzZXQ7IH0KICAgICAgICAgRHJhZ1NvdXJjZUFjdGlv
biBkcmFnU291cmNlQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnU291cmNlQWN0aW9uOyB9
CkBAIC0xMTQsNyArMTE3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRv
U3lzdGVtRHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQm
LCBEYXRhVHJhbnNmZXImLCBGcmFtZSYsIGJvb2wgZm9yTGluayk7CiAgICAgICAgIHZvaWQgY2xl
YW51cEFmdGVyU3lzdGVtRHJhZygpOwogICAgICAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJ
bWFnZShEYXRhVHJhbnNmZXImLCBFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBs
YWJlbCk7Ci0KKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICAgICB2b2lkIGRl
Y2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQoRGF0YVRyYW5zZmVyJiwgRWxlbWVudCYsIGNvbnN0IFVS
TCYpOworI2VuZGlmCiAgICAgICAgIFBhZ2UmIG1fcGFnZTsKICAgICAgICAgRHJhZ0NsaWVudCYg
bV9jbGllbnQ7CiAKQEAgLTEzMCw2ICsxMzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIERyYWdPcGVyYXRpb24gbV9zb3VyY2VEcmFnT3BlcmF0aW9uOyAvLyBTZXQgaW4gc3RhcnRE
cmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4gV2ViS2l0CiAg
ICAgICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsKICAgICAgICAgVVJMIG1fZHJhZ2dpbmdJbWFn
ZVVSTDsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICAgICBVUkwgbV9kcmFn
Z2luZ0F0dGFjaG1lbnRVUkw7CisjZW5kaWYKICAgICB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxODE2MTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyOTYsNiArMzI5Niw5
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGUKICAgICAgICAgdGhy
ZXNob2xkID0gVGV4dERyYWdIeXN0ZXJlc2lzOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERy
YWdTb3VyY2VBY3Rpb25JbWFnZToKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
IGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1lbnQ6CisjZW5kaWYKICAgICAgICAgdGhyZXNo
b2xkID0gSW1hZ2VEcmFnSHlzdGVyZXNpczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEcmFn
U291cmNlQWN0aW9uTGluazoKQEAgLTM0MTgsNiArMzQyMSw5IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVEcmFnKGNvbnN0IE1vdXMKICAgICAgICAgQVNTRVJUKChkcmFnU3RhdGUoKS50eXBl
ICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikpOwogICAgICAgICBBU1NFUlQoKGRyYWdTdGF0
ZSgpLnR5cGUgJiB+RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgPT0gRHJhZ1NvdXJjZUFjdGlv
bkRIVE1MCiAgICAgICAgICAgICB8fCAoZHJhZ1N0YXRlKCkudHlwZSAmIH5EcmFnU291cmNlQWN0
aW9uU2VsZWN0aW9uKSA9PSBEcmFnU291cmNlQWN0aW9uSW1hZ2UKKyNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorICAgICAgICAgICAgfHwgKGRyYWdTdGF0ZSgpLnR5cGUgJiB+RHJhZ1Nv
dXJjZUFjdGlvblNlbGVjdGlvbikgPT0gRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1lbnQKKyNlbmRp
ZgogICAgICAgICAgICAgfHwgKGRyYWdTdGF0ZSgpLnR5cGUgJiB+RHJhZ1NvdXJjZUFjdGlvblNl
bGVjdGlvbikgPT0gRHJhZ1NvdXJjZUFjdGlvbkxpbmspOwogICAgICAgICBkcmFnU3RhdGUoKS50
eXBlID0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gMTgxNjE1KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDkgQEAKICNpbXBvcnQgIkVkaXRvci5oIgogI2ltcG9ydCAiRWRp
dG9yQ2xpZW50LmgiCiAjaW1wb3J0ICJFbGVtZW50LmgiCisjaW1wb3J0ICJGaWxlLmgiCiAjaW1w
b3J0ICJGcmFtZVZpZXcuaCIKKyNpbXBvcnQgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2lt
cG9ydCAiTWFpbkZyYW1lLmgiCiAjaW1wb3J0ICJQYWdlLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJk
LmgiCkBAIC04Nyw2ICs4OSwxNCBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpjbGVhbnVwQWZ0ZXJT
eXN0ZW1ECiAgICAgICAgIGRyYWdFbmRlZCgpOwogfQogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKK3ZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQo
RGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYg
dXJsKQoreworICAgIGNvbnN0IEhUTUxBdHRhY2htZW50RWxlbWVudCYgYXR0YWNobWVudCA9IGRv
d25jYXN0PEhUTUxBdHRhY2htZW50RWxlbWVudD4oZWxlbWVudCk7CisgICAgbV9jbGllbnQuZGVj
bGFyZUFuZFdyaXRlQXR0YWNobWVudChkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLm5hbWUoKSwg
ZWxlbWVudCwgdXJsLCBhdHRhY2htZW50LmZpbGUoKS0+cGF0aCgpLCBlbGVtZW50LmRvY3VtZW50
KCkuZnJhbWUoKSk7Cit9CisjZW5kaWYKKyAgICAKIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgbV9j
bGllbnQuZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCku
bmFtZSgpLCBlbGVtZW50LCB1cmwsIGxhYmVsLCBlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCShyZXZp
c2lvbiAxODE2MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDExICsyNSwxMyBAQAogI2luY2x1ZGUgIkNhY2hlZElt
YWdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
RWRpdG9yLmgiCisjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJI
VE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxBcmVhRWxlbWVudC5oIgorI2luY2x1
ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxBdWRpb0VsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgpAQCAtMzEwLDYgKzMxMiwyNSBAQCBJbnRSZWN0IEhpdFRlc3RSZXN1bHQ6OmltYWdl
UmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJCb3go
KS0+YWJzb2x1dGVDb250ZW50UXVhZCgpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CiB9CiAKKyNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRl
QXR0YWNobWVudFVSTCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lubmVyTm9uU2hhcmVkTm9kZSkK
KyAgICAgICAgcmV0dXJuIFVSTCgpOworICAgIAorICAgIGlmICghKG1faW5uZXJOb25TaGFyZWRO
b2RlLT5yZW5kZXJlcigpICYmIG1faW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcigpLT5pc0F0
dGFjaG1lbnQoKSkpCisgICAgICAgIHJldHVybiBVUkwoKTsKKyAgICAKKyAgICBpZiAoIWlzPEhU
TUxBdHRhY2htZW50RWxlbWVudD4oKm1faW5uZXJOb25TaGFyZWROb2RlKSkKKyAgICAgICAgcmV0
dXJuIFVSTCgpOworICAgIEZpbGUqIGF0dGFjaG1lbnRGaWxlID0gZG93bmNhc3Q8SFRNTEF0dGFj
aG1lbnRFbGVtZW50PigqbV9pbm5lck5vblNoYXJlZE5vZGUpLmZpbGUoKTsKKyAgICBpZiAoIWF0
dGFjaG1lbnRGaWxlKQorICAgICAgICByZXR1cm4gVVJMKCk7CisgICAgCisgICAgcmV0dXJuIG1f
aW5uZXJOb25TaGFyZWROb2RlLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKGF0dGFjaG1lbnRGaWxl
LT5wYXRoKCkpOworfQorI2VuZGlmCisKIFVSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUltYWdl
VVJMKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCShyZXZpc2lvbiAxODE2MTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDYsNiArMTA2LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBhYnNv
bHV0ZVBERlVSTCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBhYnNvbHV0ZU1lZGlh
VVJMKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIGFic29sdXRlTGlua1VSTCgpIGNv
bnN0OworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgV0VCQ09SRV9FWFBPUlQg
VVJMIGFic29sdXRlQXR0YWNobWVudFVSTCgpIGNvbnN0OworI2VuZGlmCiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHRleHRDb250ZW50KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc0xpdmVMaW5rKCkgY29uc3Q7CiAgICAgYm9vbCBpc092ZXJMaW5rKCkgY29uc3Q7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxODE2NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxNS0wMy0xNyAgRW5yaWNhIENhc3Vj
Y2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAgICAgIDxhdHRhY2htZW50PiBzaG91bGQgcHV0
IFVSTHMgb24gdGhlIHBhc3RlYm9hcmQgc28gdGhhdCBGaW5kZXIgY2FuIGFjY2VwdCBkcm9wcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjgwMQor
ICAgICAgICByZGFyOi8vcHJvYmxlbS8xOTk4MjUyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhbGwgdGhlIG5lY2Vzc2Fy
eSBzdXBwb3J0IHRvIHdyaXRlIGF0dGFjaG1lbnQgZWxlbWVudHMgaW50bworICAgICAgICB0aGUg
cGFzdGVib2FyZCwgaW5jbHVkaW5nIHRoZSBwcm9taXNlZCB0eXBlIGluIFdLMi4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9zZXRQ
cm9taXNlZERhdGE6d2l0aEZpbGVOYW1lOndpdGhFeHRlbnNpb246d2l0aFRpdGxlOndpdGhVUkw6
d2l0aFZpc2libGVVUkw6d2l0aEFyY2hpdmU6Zm9yUGFzdGVib2FyZDpdKToKKyAgICAgICAgKC1b
V0tWaWV3IG5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0
UHJvbWlzZWREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJl
QW5kV3JpdGVBdHRhY2htZW50KToKKwogMjAxNS0wMy0xNyAgVGltIEhvcnRvbiAgPHRpbW90aHlf
aG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDYW5ub3QgaW52b2tlIGFjdGlvbiBtZW51cyBh
bnltb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
CShyZXZpc2lvbiAxODE2MTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzNDYsMTEgKzMzNDYsMjAgQEAgLSAodm9pZClf
c2V0UHJvbWlzZWREYXRhOihXZWJDb3JlOjpJbWFnZQogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVi
b2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhOYW1lOnBhc3RlYm9hcmROYW1lXTsK
ICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNGaWxlc1Byb21pc2VQYm9hcmRUeXBlLCBu
aWxdKTsKICAgICAKLSAgICBbdHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTphcmNoaXZlQnVmZmVy
ID8gUGFzdGVib2FyZFR5cGVzOjpmb3JJbWFnZXNXaXRoQXJjaGl2ZSgpIDogUGFzdGVib2FyZFR5
cGVzOjpmb3JJbWFnZXMoKV07CisgICAgaWYgKGltYWdlKQorICAgICAgICBbdHlwZXMgYWRkT2Jq
ZWN0c0Zyb21BcnJheTphcmNoaXZlQnVmZmVyID8gUGFzdGVib2FyZFR5cGVzOjpmb3JJbWFnZXNX
aXRoQXJjaGl2ZSgpIDogUGFzdGVib2FyZFR5cGVzOjpmb3JJbWFnZXMoKV07CisgICAgZWxzZQor
ICAgICAgICBbdHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpQYXN0ZWJvYXJkVHlwZXM6OmZvclVS
TCgpXTsKKwogICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczp0eXBlcy5nZXQoKSBvd25lcjpz
ZWxmXTsKICAgICBpZiAoIW1hdGNoZXNFeHRlbnNpb25PckVxdWl2YWxlbnQoZmlsZW5hbWUsIGV4
dGVuc2lvbikpCiAgICAgICAgIGZpbGVuYW1lID0gW1tmaWxlbmFtZSBzdHJpbmdCeUFwcGVuZGlu
Z1N0cmluZzpAIi4iXSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpleHRlbnNpb25dOwogCisgICAg
aWYgKCFpbWFnZSkgeworICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHBhdGhzID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtwYXRocy5n
ZXQoKSBhZGRPYmplY3Q6dGl0bGVdOworICAgICAgICBbcGFzdGVib2FyZCBzZXRQcm9wZXJ0eUxp
c3Q6cGF0aHMuZ2V0KCkgZm9yVHlwZTpOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdOworICAgIH0KICAg
ICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6dmlzaWJsZVVybCBmb3JUeXBlOk5TU3RyaW5nUGJvYXJk
VHlwZV07CiAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOnZpc2libGVVcmwgZm9yVHlwZTpQYXN0
ZWJvYXJkVHlwZXM6OldlYlVSTFBib2FyZFR5cGVdOwogICAgIFtwYXN0ZWJvYXJkIHNldFN0cmlu
Zzp0aXRsZSBmb3JUeXBlOlBhc3RlYm9hcmRUeXBlczo6V2ViVVJMTmFtZVBib2FyZFR5cGVdOwpA
QCAtMzQyOCwxMCArMzQzNywxMiBAQCAtIChOU0FycmF5ICopbmFtZXNPZlByb21pc2VkRmlsZXNE
cm9wcGVkCiAgICAgaWYgKF9kYXRhLT5fcHJvbWlzZWRJbWFnZSkgewogICAgICAgICBkYXRhID0g
X2RhdGEtPl9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB3
cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdp
dGhDb250ZW50czpkYXRhLmdldCgpXSk7Ci0gICAgICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZp
bGVuYW1lOl9kYXRhLT5fcHJvbWlzZWRGaWxlbmFtZV07Ci0gICAgfQorICAgIH0gZWxzZQorICAg
ICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOl9kYXRhLT5fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxl
V3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CiAgICAgCi0gICAgaWYgKCF3cmFw
cGVyKSB7CisgICAgaWYgKHdyYXBwZXIpCisgICAgICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZp
bGVuYW1lOl9kYXRhLT5fcHJvbWlzZWRGaWxlbmFtZV07CisgICAgZWxzZSB7CiAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBpbWFnZSBmaWxlLiIpOwogICAgICAgICByZXR1cm4g
bmlsOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbC5tbQkocmV2aXNpb24gMTgxNjE1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDA5LDggKzQwOSwx
MSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXREcmFnSW1hZ2UoY29uc3QgCiAKIHZvaWQgUGFn
ZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVXJsLCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcikKIHsKLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gQml0
bWFwSW1hZ2U6OmNyZWF0ZSgpOwotICAgIGltYWdlLT5zZXREYXRhKGltYWdlQnVmZmVyLmdldCgp
LCB0cnVlKTsKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOworICAgIGlmIChpbWFnZUJ1ZmZlcikg
eworICAgICAgICBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICAgICAgaW1hZ2Ut
PnNldERhdGEoaW1hZ2VCdWZmZXIuZ2V0KCksIHRydWUpOworICAgIH0KICAgICBbbV93a1ZpZXcg
X3NldFByb21pc2VkRGF0YTppbWFnZS5nZXQoKSB3aXRoRmlsZU5hbWU6ZmlsZW5hbWUgd2l0aEV4
dGVuc2lvbjpleHRlbnNpb24gd2l0aFRpdGxlOnRpdGxlIHdpdGhVUkw6dXJsIHdpdGhWaXNpYmxl
VVJMOnZpc2libGVVcmwgd2l0aEFyY2hpdmU6YXJjaGl2ZUJ1ZmZlci5nZXQoKSBmb3JQYXN0ZWJv
YXJkOnBhc3RlYm9hcmROYW1lXTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0JKHJldmlzaW9uIDE4MTYxNSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00MTAsOCArNDEwLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERyYWdJbWFnZShjb25z
dCBXZQogdm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIHVp
bnQ2NF90IGltYWdlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIGNv
bnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBhcmNoaXZlSGFuZGxlLCB1aW50NjRfdCBhcmNoaXZl
U2l6ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlJbWFnZSA9IFNo
YXJlZE1lbW9yeTo6Y3JlYXRlKGltYWdlSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlJlYWRPbmx5KTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlJbWFnZS0+ZGF0YSgp
KSwgaW1hZ2VTaXplKTsKKyAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlJbWFn
ZSA9ICghaW1hZ2VIYW5kbGUuaXNOdWxsKCkpID8gU2hhcmVkTWVtb3J5OjpjcmVhdGUoaW1hZ2VI
YW5kbGUsIFNoYXJlZE1lbW9yeTo6UmVhZE9ubHkpIDogbnVsbHB0cjsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IChzaGFyZWRNZW1vcnlJbWFnZSkgPyBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5SW1hZ2Ut
PmRhdGEoKSksIGltYWdlU2l6ZSkgOiBudWxscHRyOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGFyY2hpdmVCdWZmZXI7CiAgICAgCiAgICAgaWYgKCFhcmNoaXZlSGFuZGxlLmlzTnVsbCgpKSB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQuaAkocmV2aXNpb24gMTgxNjE1KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDYgKzUxLDkgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZpcnR1YWwgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgV2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CisjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKKyAgICB2aXJ0dWFsIHZvaWQgZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRl
OworI2VuZGlmCiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ry
b3llZCgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCShy
ZXZpc2lvbiAxODE2MTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nywx
NyBAQCBzdGF0aWMgV2ViQ29yZTo6Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlCiAgICAgcmV0dXJu
IGltYWdlOwogfQogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKK3ZvaWQgV2ViRHJh
Z0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBw
YXRoLCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCit7CisgICAgQVNTRVJUKHBhc3RlYm9hcmROYW1l
ID09IFN0cmluZyhOU0RyYWdQYm9hcmQpKTsKKyAgICAKKyAgICBOU1VSTCogbnNVUkwgPSAoTlNV
UkwgKil1cmw7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldFBy
b21pc2VkRGF0YShwYXN0ZWJvYXJkTmFtZSwgU2hhcmVkTWVtb3J5OjpIYW5kbGUoKSwgMCwgU3Ry
aW5nKG5zVVJMLmxhc3RQYXRoQ29tcG9uZW50KSwgU3RyaW5nKG5zVVJMLnBhdGhFeHRlbnNpb24p
LCBwYXRoLCBTdHJpbmcobnNVUkwuYWJzb2x1dGVTdHJpbmcpLCB1c2VyVmlzaWJsZVN0cmluZyhu
c1VSTCksIFNoYXJlZE1lbW9yeTo6SGFuZGxlKCksIDApKTsKK30KKyNlbmRpZgorCisKIHZvaWQg
V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBGcmFtZSopCiB7CiAgICAgQVNTRVJUKHBhc3RlYm9hcmROYW1lID09IFN0cmlu
ZyhOU0RyYWdQYm9hcmQpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTY3MCkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIzIEBACisyMDE1LTAzLTE3ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisK
KyAgICAgICAgPGF0dGFjaG1lbnQ+IHNob3VsZCBwdXQgVVJMcyBvbiB0aGUgcGFzdGVib2FyZCBz
byB0aGF0IEZpbmRlciBjYW4gYWNjZXB0IGRyb3BzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODAxCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzE5
OTgyNTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhZGRzIGFsbCB0aGUgbmVjZXNzYXJ5IHN1cHBvcnQgdG8gd3JpdGUgYXR0YWNo
bWVudCBlbGVtZW50cyBpbnRvCisgICAgICAgIHRoZSBwYXN0ZWJvYXJkLCBpbmNsdWRpbmcgdGhl
IHByb21pc2VkIHR5cGUgaW4gV0sxLgorCisgICAgICAgICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRF
eHRyYXMubW06CisgICAgICAgICgtW05TUGFzdGVib2FyZCBfd2ViX2RlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZUZvckVsZW1lbnQ6VVJMOnRpdGxlOmFyY2hpdmU6c291cmNlOl0pOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdy
aXRlQXR0YWNobWVudCk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlv
bjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlVJRGVsZWdhdGUuaDoKKwogMjAxNS0wMy0xNyAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDYW5ub3Qg
aW52b2tlIGFjdGlvbiBtZW51cyBhbnltb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQkocmV2aXNpb24gMTgxNjE1KQorKysgU291
cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRWxlbWVudC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9JbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckF0dGFjaG1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmVuZGVySW1hZ2UuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01FeHRlbnNpb25zLmg+CiAj
aW1wb3J0IDxXZWJLaXRMZWdhY3kvRE9NUHJpdmF0ZS5oPgpAQCAtMjcxLDE5ICsyNzIsMjkgQEAg
LSAoaWQpX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VGb3JFbAogICAgIEFTU0VSVChzZWxm
ID09IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhOYW1lOk5TRHJhZ1Bib2FyZF0pOwogCiAg
ICAgTlNTdHJpbmcgKmV4dGVuc2lvbiA9IEAiIjsKKyAgICBOU011dGFibGVBcnJheSAqdHlwZXMg
PSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNGaWxlc1Byb21pc2VQ
Ym9hcmRUeXBlLCBuaWxdOwogICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGNvcmUoZWxlbWVudCkt
PnJlbmRlcmVyKCkpIHsKICAgICAgICAgaWYgKGlzPFJlbmRlckltYWdlPigqcmVuZGVyZXIpKSB7
CiAgICAgICAgICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1h
Z2U+KCpyZW5kZXJlcikuY2FjaGVkSW1hZ2UoKSkgewogICAgICAgICAgICAgICAgIGV4dGVuc2lv
biA9IGltYWdlLT5pbWFnZSgpLT5maWxlbmFtZUV4dGVuc2lvbigpOwogICAgICAgICAgICAgICAg
IGlmICghW2V4dGVuc2lvbiBsZW5ndGhdKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgICAgICAgICBbdHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpbTlNQYXN0
ZWJvYXJkIF93ZWJfd3JpdGFibGVUeXBlc0ZvckltYWdlSW5jbHVkaW5nQXJjaGl2ZTooYXJjaGl2
ZSAhPSBuaWwpXV07CisgICAgICAgICAgICAgICAgW3NlbGYgZGVjbGFyZVR5cGVzOnR5cGVzIG93
bmVyOnNvdXJjZV07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorICAgICAgICBlbHNlIGlmIChpczxSZW5kZXJBdHRhY2htZW50PigqcmVu
ZGVyZXIpKSB7CisgICAgICAgICAgICBleHRlbnNpb24gPSBVUkwucGF0aEV4dGVuc2lvbjsKKyAg
ICAgICAgICAgIFt0eXBlcyBhZGRPYmplY3RzRnJvbUFycmF5OltOU1Bhc3RlYm9hcmQgX3dlYl9k
cmFnVHlwZXNGb3JVUkxdXTsKKyAgICAgICAgICAgIFtzZWxmIGRlY2xhcmVUeXBlczp0eXBlcyBv
d25lcjpzb3VyY2VdOworICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBwYXRo
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgICAgICAgICAg
W3BhdGhzLmdldCgpIGFkZE9iamVjdDp0aXRsZV07CisgICAgICAgICAgICBbc2VsZiBzZXRQcm9w
ZXJ0eUxpc3Q6cGF0aHMuZ2V0KCkgZm9yVHlwZTpOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdOworICAg
ICAgICB9CisjZW5kaWYKICAgICB9CiAKLSAgICBOU011dGFibGVBcnJheSAqdHlwZXMgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNGaWxlc1Byb21pc2VQYm9hcmRU
eXBlLCBuaWxdOwotICAgIFt0eXBlcyBhZGRPYmplY3RzRnJvbUFycmF5OltOU1Bhc3RlYm9hcmQg
X3dlYl93cml0YWJsZVR5cGVzRm9ySW1hZ2VJbmNsdWRpbmdBcmNoaXZlOihhcmNoaXZlICE9IG5p
bCldXTsKLSAgICBbc2VsZiBkZWNsYXJlVHlwZXM6dHlwZXMgb3duZXI6c291cmNlXTsgICAgCiAg
ICAgW3NlbGYgX3dlYl93cml0ZUltYWdlOm5pbCBlbGVtZW50OmVsZW1lbnQgVVJMOlVSTCB0aXRs
ZTp0aXRsZSBhcmNoaXZlOmFyY2hpdmUgdHlwZXM6dHlwZXMgc291cmNlOnNvdXJjZV07CiAgICAg
W3R5cGVzIHJlbGVhc2VdOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCShyZXZpc2lvbiAxODE2MTUpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDYgKzM5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFj
dGlvbiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiB3aW5kb3dQb2ludCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhXZWJD
b3JlOjpEcmFnSW1hZ2VSZWYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkcmFnUG9zLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgZXZlbnRQb3MsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYsIFdl
YkNvcmU6OkZyYW1lJiwgYm9vbCBsaW5rRHJhZykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBX
ZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiwgV2Vi
Q29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQor
ICAgIHZpcnR1YWwgdm9pZCBkZWNsYXJlQW5kV3JpdGVBdHRhY2htZW50KGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBTdHJpbmcmIHBhdGgsIFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CisjZW5kaWYKIHBy
aXZhdGU6CiAgICAgV2ViVmlldyogbV93ZWJWaWV3OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQkocmV2aXNpb24gMTgx
NjE1KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMywxNiBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6
OmRlY2xhcmVBbmRXcml0ZURyYWdJCiAgICAgW1tOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhO
YW1lOnBhc3RlYm9hcmROYW1lXSBfd2ViX2RlY2xhcmVBbmRXcml0ZURyYWdJbWFnZUZvckVsZW1l
bnQ6a2l0KCZlbGVtZW50KSBVUkw6dXJsIHRpdGxlOnRpdGxlIGFyY2hpdmU6YXJjaGl2ZSBzb3Vy
Y2U6c291cmNlXTsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCit2b2lkIFdl
YkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQoreworICAgIEFTU0VSVChwYXN0ZWJvYXJk
TmFtZSk7CisgICAgV2ViSFRNTFZpZXcgKnNvdXJjZSA9IGdldFRvcEhUTUxWaWV3KGZyYW1lKTsK
KyAgICAKKyAgICBbW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aE5hbWU6cGFzdGVib2FyZE5h
bWVdIF93ZWJfZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlRm9yRWxlbWVudDpraXQoJmVsZW1lbnQp
IFVSTDp1cmwgdGl0bGU6cGF0aCBhcmNoaXZlOm5pbCBzb3VyY2U6c291cmNlXTsKK30KKyNlbmRp
ZgorCiB2b2lkIFdlYkRyYWdDbGllbnQ6OmRyYWdDb250cm9sbGVyRGVzdHJveWVkKCkgCiB7CiAg
ICAgZGVsZXRlIHRoaXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0JKHJldmlzaW9uIDE4MTYxNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5NjEsMTIgKzM5NjEsMTIgQEAgc3RhdGlj
IGJvb2wgbWF0Y2hlc0V4dGVuc2lvbk9yRXF1aXZhbGVudAogLSAoTlNBcnJheSAqKW5hbWVzT2ZQ
cm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246KE5TVVJMICopZHJvcERlc3RpbmF0aW9u
CiB7CiAgICAgTlNGaWxlV3JhcHBlciAqd3JhcHBlciA9IG5pbDsKLSAgICBOU1VSTCAqZHJhZ2dp
bmdJbWFnZVVSTCA9IG5pbDsKKyAgICBOU1VSTCAqZHJhZ2dpbmdFbGVtZW50VVJMID0gbmlsOwog
ICAgIAogICAgIGlmIChXZWJDb3JlOjpDYWNoZWRJbWFnZSogdGlmZlJlc291cmNlID0gW3NlbGYg
cHJvbWlzZWREcmFnVElGRkRhdGFTb3VyY2VdKSB7CiAgICAgICAgIGlmIChhdXRvKiBidWZmZXIg
PSB0aWZmUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpIHsKICAgICAgICAgICAgIE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlID0gdGlmZlJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2Uo
KTsKLSAgICAgICAgICAgIGRyYWdnaW5nSW1hZ2VVUkwgPSBbcmVzcG9uc2UgVVJMXTsKKyAgICAg
ICAgICAgIGRyYWdnaW5nRWxlbWVudFVSTCA9IFtyZXNwb25zZSBVUkxdOwogICAgICAgICAgICAg
d3JhcHBlciA9IFtbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CiAgICAgICAg
ICAgICBOU1N0cmluZyogZmlsZW5hbWUgPSBbcmVzcG9uc2Ugc3VnZ2VzdGVkRmlsZW5hbWVdOwog
ICAgICAgICAgICAgTlNTdHJpbmcqIHRydWVFeHRlbnNpb24odGlmZlJlc291cmNlLT5pbWFnZSgp
LT5maWxlbmFtZUV4dGVuc2lvbigpKTsKQEAgLTM5ODcsMTAgKzM5ODcsMTQgQEAgLSAoTlNBcnJh
eSAqKW5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZAogICAgICAgICAgICAgcmV0dXJuIG5pbDsg
CiAgICAgICAgIAogICAgICAgICBjb25zdCBVUkwmIGltYWdlVVJMID0gcGFnZS0+ZHJhZ0NvbnRy
b2xsZXIoKS5kcmFnZ2luZ0ltYWdlVVJMKCk7Ci0gICAgICAgIEFTU0VSVCghaW1hZ2VVUkwuaXNF
bXB0eSgpKTsKLSAgICAgICAgZHJhZ2dpbmdJbWFnZVVSTCA9IGltYWdlVVJMOworICAgICAgICBp
ZiAoIWltYWdlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGRyYWdnaW5nRWxlbWVudFVSTCA9
IGltYWdlVVJMOworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGRyYWdnaW5nRWxlbWVudFVSTCA9IHBhZ2UtPmRyYWdDb250cm9sbGVyKCku
ZHJhZ2dpbmdBdHRhY2htZW50VVJMKCk7CisjZW5kaWYKIAotICAgICAgICB3cmFwcGVyID0gW1tz
ZWxmIF9kYXRhU291cmNlXSBfZmlsZVdyYXBwZXJGb3JVUkw6ZHJhZ2dpbmdJbWFnZVVSTF07Cisg
ICAgICAgIHdyYXBwZXIgPSBbW3NlbGYgX2RhdGFTb3VyY2VdIF9maWxlV3JhcHBlckZvclVSTDpk
cmFnZ2luZ0VsZW1lbnRVUkxdOwogICAgIH0KICAgICAKICAgICBpZiAod3JhcHBlciA9PSBuaWwp
IHsKQEAgLTQwMDQsOCArNDAwOCw4IEBAIC0gKE5TQXJyYXkgKiluYW1lc09mUHJvbWlzZWRGaWxl
c0Ryb3BwZWQKICAgICBpZiAoIVt3cmFwcGVyIHdyaXRlVG9VUkw6W05TVVJMIGZpbGVVUkxXaXRo
UGF0aDpwYXRoXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJXcml0aW5nV2l0aE5hbWVVcGRhdGluZyBv
cmlnaW5hbENvbnRlbnRzVVJMOm5pbCBlcnJvcjpudWxscHRyXSkKICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gY3JlYXRlIGltYWdlIGZpbGUgdmlhIC1bTlNGaWxlV3JhcHBlciB3cml0ZVRv
VVJMOm9wdGlvbnM6b3JpZ2luYWxDb250ZW50c1VSTDplcnJvcjpdIik7CiAgICAgCi0gICAgaWYg
KGRyYWdnaW5nSW1hZ2VVUkwpCi0gICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gX3dlYmtpdF9zZXRNZXRhZGF0YVVSTDpbZHJhZ2dpbmdJbWFnZVVSTCBhYnNvbHV0ZVN0cmlu
Z10gcmVmZXJyZXI6bmlsIGF0UGF0aDpwYXRoXTsKKyAgICBpZiAoZHJhZ2dpbmdFbGVtZW50VVJM
KQorICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIF93ZWJraXRfc2V0TWV0
YWRhdGFVUkw6W2RyYWdnaW5nRWxlbWVudFVSTCBhYnNvbHV0ZVN0cmluZ10gcmVmZXJyZXI6bmls
IGF0UGF0aDpwYXRoXTsKICAgICAKICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
OltwYXRoIGxhc3RQYXRoQ29tcG9uZW50XV07CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlVJRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlVJRGVsZWdhdGUuaAkocmV2aXNpb24gMTgxNjE1KQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw2ICsx
MTIsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgV2ViRHJhZ1NvCiAgICAgV2Vi
RHJhZ1NvdXJjZUFjdGlvbkltYWdlICAgICAgICA9IDIsCiAgICAgV2ViRHJhZ1NvdXJjZUFjdGlv
bkxpbmsgICAgICAgICA9IDQsCiAgICAgV2ViRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiAgICA9
IDgsCisgICAgV2ViRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1lbnQgICA9IDE2LAogICAgIFdlYkRy
YWdTb3VyY2VBY3Rpb25BbnkgICAgICAgICAgPSBVSU5UX01BWAogfTsKIApJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMTgxNjcwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTUtMDMtMTcgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxl
LmNvbT4KKworICAgICAgICA8YXR0YWNobWVudD4gc2hvdWxkIHB1dCBVUkxzIG9uIHRoZSBwYXN0
ZWJvYXJkIHNvIHRoYXQgRmluZGVyIGNhbiBhY2NlcHQgZHJvcHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI4MDEKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vMTk5ODI1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWFuZC1kcm9wLWF0dGFjaG1lbnQtY29u
dGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0
ZWJvYXJkL2RyYWctYW5kLWRyb3AtYXR0YWNobWVudC1jb250ZW50ZWRpdGFibGUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOiBTa2lwcGlu
ZyBuZXcgdGVzdCBvbiBXSzIgc2luY2UgaXQgdXNlcyBldmVudFNlbmRlci4KKwogMjAxNS0wMy0x
NyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsZSBsaW5l
IGxheW91dDogU3BsaXQgZnJhZ21lbnRzIG9uIHJlbmRlcmVyIGJvdW5kYXJ5IG9uIHRoZSBmbHku
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1hdHRh
Y2htZW50LWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctYW5kLWRyb3AtYXR0YWNobWVudC1jb250ZW50
ZWRpdGFibGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RyYWctYW5kLWRyb3AtYXR0YWNobWVudC1jb250ZW50ZWRpdGFibGUtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK1RoZXNlIHRlc3RzIGRy
YWdnaW5nIGFuIGF0dGFjaG1lbnQgZWxlbWVudCBpbnRvIGNvbnRlbnRlZGl0YWJsZQorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0YXJnZXQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImF0dGFjaG1lbnQiKS5sZW5ndGggaXMgMQorUEFTUyB0YXJnZXQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImF0dGFjaG1lbnQiKVswXS5maWxlLm5hbWUgaXMgImFwcGxlLmdpZiIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1hdHRhY2htZW50LWNvbnRlbnRl
ZGl0YWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9kcmFnLWFuZC1kcm9wLWF0dGFjaG1lbnQtY29udGVudGVkaXRhYmxlLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1hdHRh
Y2htZW50LWNvbnRlbnRlZGl0YWJsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMg
QEAKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisjdGFyZ2V0IHsK
KyAgICBoZWlnaHQ6IDIwMHB4OworICAgIHdpZHRoOiAyMjBweDsKKyAgICBib3JkZXI6IDVweCBz
b2xpZCBibHVlOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0idGVzdDEiPjxhdHRhY2htZW50
IGlkPSdhdHRhY2htZW50Jz48L2F0dGFjaG1lbnQ+PC9kaXY+Cis8ZGl2IGNvbnRlbnRlZGl0YWJs
ZT10cnVlIGlkPSJ0YXJnZXQiPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxz
Y3JpcHQ+CisgICAgZGVzY3JpcHRpb24oJ1RoZXNlIHRlc3RzIGRyYWdnaW5nIGFuIGF0dGFjaG1l
bnQgZWxlbWVudCBpbnRvIGNvbnRlbnRlZGl0YWJsZScpOwordmFyIGpzVGVzdElzQXN5bmMgPSB0
cnVlOwordmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKKwor
ZnVuY3Rpb24gY29udGVudEluc2VydGVkKCkgeworICAgc2hvdWxkQmUoJ3RhcmdldC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYXR0YWNobWVudCIpLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCd0YXJnZXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImF0dGFjaG1lbnQiKVsw
XS5maWxlLm5hbWUnLCAnYXBwbGUuZ2lmJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1
bmN0aW9uIHNldHVwQXR0YWNobWVudCgpCit7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICAgICAgdmFyIGF0dGFjaG1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXR0YWNo
bWVudCcpOworICAgICAgICBhdHRhY2htZW50LmZpbGUgPSB3aW5kb3cuaW50ZXJuYWxzLmNyZWF0
ZUZpbGUoInJlc291cmNlcy9hcHBsZS5naWYiKTsKKyAgICB9Cit9CitmdW5jdGlvbiBydW5UZXN0
KCkgeworICAgIHNldHVwQXR0YWNobWVudCgpOworICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVy
KCdET01Ob2RlSW5zZXJ0ZWQnLCBjb250ZW50SW5zZXJ0ZWQsIGZhbHNlKTsKKyAgICBpZiAoIXdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisKKyAgICBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImF0dGFj
aG1lbnQiKTsKKyAgICB4ID0gZS5vZmZzZXRMZWZ0ICsgZS5vZmZzZXRXaWR0aCAvIDI7CisgICAg
eSA9IGUub2Zmc2V0VG9wICsgZS5vZmZzZXRIZWlnaHQgLyAyOworCisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZl
bnRTZW5kZXIubGVhcEZvcndhcmQoMTAwKTsKKyAgICBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRhcmdldCIpOworICAgIHggPSBlLm9mZnNldExlZnQgKyBlLm9mZnNldFdpZHRoIC8gMjsK
KyAgICB5ID0gZS5vZmZzZXRUb3AgKyBlLm9mZnNldEhlaWdodCAvIDI7CisKKyAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE4MTYxNSkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAt
MjMsNiArMjMsNyBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1zdGFuZGFsb25lLWltYWdlCiBl
ZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1pbWFnZS1jb250ZW50ZWRpdGFibGUuaHRt
bAogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctYW5kLWRyb3AtaW5wdXRpbWFnZS1jb250ZW50ZWRp
dGFibGUuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctYW5kLWRyb3Atb2JqZWN0aW1hZ2Ut
Y29udGVudGVkaXRhYmxlLmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWFuZC1kcm9wLWF0
dGFjaG1lbnQtY29udGVudGVkaXRhYmxlLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWRy
b3AtZGVhZC1mcmFtZS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWlucHV0LXRl
eHRhcmVhLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWRyb3AtbGlzdC5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248893</attachid>
            <date>2015-03-17 17:55:03 -0700</date>
            <delta_ts>2015-03-18 16:23:44 -0700</delta_ts>
            <desc>Patch that fixes builds and style</desc>
            <filename>drag-attachment-out.txt</filename>
            <type>text/plain</type>
            <size>35565</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE1LTAzLTE3ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgPGF0dGFjaG1lbnQ+IHNob3Vs
ZCBwdXQgVVJMcyBvbiB0aGUgcGFzdGVib2FyZCBzbyB0aGF0IEZpbmRlciBjYW4gYWNjZXB0IGRy
b3BzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQy
ODAxCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzE5OTgyNTI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9wYXN0ZWJvYXJkL2Ry
YWctYW5kLWRyb3AtYXR0YWNobWVudC1jb250ZW50ZWRpdGFibGUuaHRtbAorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBhbGwgdGhlIG5lY2Vzc2FyeSBzdXBwb3J0IHRvIHdyaXRlIGF0dGFjaG1l
bnQgZWxlbWVudHMgaW50bworICAgICAgICB0aGUgcGFzdGVib2FyZCwgaW5jbHVkaW5nIHRoZSBw
cm9taXNlZCB0eXBlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdD
bGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZUF0
dGFjaG1lbnQpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9EcmFnQ29u
dHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdnaW5nQXR0
YWNobWVudFVSTCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9tYWMv
RHJhZ0NvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
ZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudCk6CisgICAgICAgICogcGFnZS93aW4vRHJhZ0NvbnRy
b2xsZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVB
bmRXcml0ZUF0dGFjaG1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmFic29sdXRlQXR0YWNobWVudFVS
TCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKwogMjAxNS0wMy0xNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdW2lPU10gc2V0
U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoKSAvIHN0b3BTaGFyZWRUaW1lcigpIGFyZSBleHBlbnNp
dmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDE4MTY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjUyNyw3ICsyNTI3LDcg
QEAKIAkJN0NDNjk5NDExOTFFQzVGNTAwQUYyMjcwIC8qIEpTV2ViS2l0TmFtZXNwYWNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0M2OTkzRjE5MUVD
NUY1MDBBRjIyNzAgLyogSlNXZWJLaXROYW1lc3BhY2UuaCAqLzsgfTsKIAkJN0NDN0UzRDcxNzIw
OEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlzdC50eHQgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAv
KiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovOyB9OwogCQk3Q0Q0OTRDQzFBODZFQjFEMDAwQTg3
RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3Q0Q0OTRDQTFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNo
bWVudC5jcHAgKi87IH07Ci0JCTdDRDQ5NENEMUE4NkVCMUQwMDBBODdFQyAvKiBSZW5kZXJBdHRh
Y2htZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0Q0OTRDQjFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5oICovOyB9OworCQk3
Q0Q0OTRDRDFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NENDk0Q0IxQTg2RUIxRDAwMEE4
N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3Q0RFRUUxRTE5NzYxMEQ3MDBFMzUyQ0QgLyogVmlld1N0YXRl
Q2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDREVFRTFEMTk3NjEwRDcwMEUzNTJDRCAvKiBWaWV3U3RhdGVDaGFuZ2VPYnNlcnZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdD
RTY4MzQ0MTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTY4MzQy
MTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmNwcCAqLzsg
fTsKIAkJN0NFNjgzNDUxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
RTY4MzQzMTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdBY3Rpb25zLmgJKHJldmlzaW9uIDE4MTY3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERyYWdTb3VyY2VBY3Rpb25JbWFnZSAgICAgICAg
PSAyLAogICAgICAgICBEcmFnU291cmNlQWN0aW9uTGluayAgICAgICAgID0gNCwKICAgICAgICAg
RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiAgICA9IDgsCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKKyAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1lbnQgICA9IDE2LAorI2Vu
ZGlmCiAgICAgICAgIERyYWdTb3VyY2VBY3Rpb25BbnkgICAgICAgICAgPSBVSU5UX01BWAogICAg
IH0gRHJhZ1NvdXJjZUFjdGlvbjsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5o
CShyZXZpc2lvbiAxODE2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsOSBAQCBwdWJsaWM6CiAgICAgLy8gTWFjLXNwZWNp
ZmljIGhlbHBlciBmdW5jdGlvbiB0byBhbGxvdyBhY2Nlc3MgdG8gd2ViIGFyY2hpdmVzIGFuZCBO
U1Bhc3RlYm9hcmQgZXh0cmFzIGluIFdlYktpdC4KICAgICAvLyBUaGlzIGlzIG5vdCBhYnN0cmFj
dCBhcyB0aGF0IHdvdWxkIHJlcXVpcmUgYW5vdGhlciAjaWYgUExBVEZPUk0oQ09DT0EpIGZvciB0
aGUgU1ZHSW1hZ2UgY2xpZW50IGVtcHR5IGltcGxlbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQg
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQmLCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmLCBGcmFtZSopIHsgfQorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCisgICAgdmlydHVhbCB2b2lkIGRlY2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQoY29uc3Qg
U3RyaW5nJiwgRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIEZyYW1lKikgeyB9
CisjZW5kaWYKICNlbmRpZgogCiAgICAgdmlydHVhbCB+RHJhZ0NsaWVudCgpIHsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE4MTY3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBAIC02
MjMsNiArNjI0LDEzIEBAIEVsZW1lbnQqIERyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW4K
ICAgICBzdGF0ZS50eXBlID0gKHNvdXJjZUZyYW1lLT5zZWxlY3Rpb24oKS5jb250YWlucyhkcmFn
T3JpZ2luKSkgPyBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uIDogRHJhZ1NvdXJjZUFjdGlvbk5v
bmU7CiAgICAgaWYgKCFzdGFydEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOworI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgLy8gQXR0YWNobWVudCBlbGVtZW50cyBj
YW4gaGF2ZSBEcmFnU291cmNlQWN0aW9uTm9uZSBldmVuIGlmCisgICAgLy8gc2VsZWN0ZWQsIGlm
IHRoZSBzZWxlY3Rpb24gY29udGFpbnMgb25seSB0aGUgYXR0YWNoZW1lbnQgZWxlbWVudC4KKyAg
ICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBzb3VyY2VGcmFtZS0+c2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgaWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkgJiYgaXM8SFRN
TEF0dGFjaG1lbnRFbGVtZW50PihzZWxlY3Rpb24uc3RhcnQoKS5hbmNob3JOb2RlKCkpICYmIHNl
bGVjdGlvbi5zdGFydCgpLmFuY2hvck5vZGUoKSA9PSBzZWxlY3Rpb24uZW5kKCkuYW5jaG9yTm9k
ZSgpKQorICAgICAgICBzdGF0ZS50eXBlID0gRHJhZ1NvdXJjZUFjdGlvbk5vbmU7CisjZW5kaWYK
IAogICAgIGZvciAoYXV0byByZW5kZXJlciA9IHN0YXJ0RWxlbWVudC0+cmVuZGVyZXIoKTsgcmVu
ZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7CiAgICAgICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSByZW5kZXJlci0+bm9uUHNldWRvRWxlbWVudCgpOwpAQCAtNjQ5LDYgKzY1Nywx
NCBAQCBFbGVtZW50KiBEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlRWxlbWVuCiAgICAgICAgICAg
ICAgICAgc3RhdGUudHlwZSA9IHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLnR5
cGUgfCBEcmFnU291cmNlQWN0aW9uTGluayk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1l
bnQ7CiAgICAgICAgICAgICB9CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICAg
ICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1l
bnQpCisgICAgICAgICAgICAgICAgJiYgaXM8SFRNTEF0dGFjaG1lbnRFbGVtZW50PigqZWxlbWVu
dCkKKyAgICAgICAgICAgICAgICAmJiBkb3duY2FzdDxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KCpl
bGVtZW50KS5maWxlKCkpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS50eXBlID0gc3RhdGljX2Nh
c3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUudHlwZSB8IERyYWdTb3VyY2VBY3Rpb25BdHRhY2ht
ZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgICAgIH0KKyNl
bmRpZgogICAgICAgICB9CiAgICAgfQogCkBAIC03MzgsNiArNzU0LDEwIEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3IKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IFVSTCBsaW5rVVJMID0gaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBVUkwg
aW1hZ2VVUkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKKyNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQorICAgIFVSTCBhdHRhY2htZW50VVJMID0gaGl0VGVzdFJlc3Vs
dC5hYnNvbHV0ZUF0dGFjaG1lbnRVUkwoKTsKKyAgICBtX2RyYWdnaW5nQXR0YWNobWVudFVSTCA9
IFVSTCgpOworI2VuZGlmCiAKICAgICBJbnRQb2ludCBtb3VzZURyYWdnZWRQb2ludCA9IHNyYy52
aWV3KCktPndpbmRvd1RvQ29udGVudHMoZHJhZ0V2ZW50LnBvc2l0aW9uKCkpOwogCkBAIC04NTMs
NiArODczLDIzIEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3IKICAg
ICAgICAgICAgIGRyYWdJbWFnZSA9IHNjYWxlRHJhZ0ltYWdlKGRyYWdJbWFnZSwgRmxvYXRTaXpl
KG1fcGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpLCBtX3BhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSkp
OwogICAgICAgICB9CiAgICAgICAgIGRvU3lzdGVtRHJhZyhkcmFnSW1hZ2UsIGRyYWdMb2MsIG1v
dXNlRHJhZ2dlZFBvaW50LCBkYXRhVHJhbnNmZXIsIHNyYywgdHJ1ZSk7CisjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKKyAgICB9IGVsc2UgaWYgKCFhdHRhY2htZW50VVJMLmlzRW1wdHko
KSAmJiAobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1lbnQpKSB7
CisgICAgICAgIGlmICghZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5oYXNEYXRhKCkpIHsKKyAg
ICAgICAgICAgIG1fZHJhZ2dpbmdBdHRhY2htZW50VVJMID0gYXR0YWNobWVudFVSTDsKKyAgICAg
ICAgICAgIHNlbGVjdEVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgICAgICBkZWNsYXJlQW5kV3Jp
dGVBdHRhY2htZW50KGRhdGFUcmFuc2ZlciwgZWxlbWVudCwgYXR0YWNobWVudFVSTCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fY2xpZW50LndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFj
dGlvbihEcmFnU291cmNlQWN0aW9uQXR0YWNobWVudCwgZHJhZ09yaWdpbiwgZGF0YVRyYW5zZmVy
KTsKKyAgICAgICAgCisgICAgICAgIGlmICghZHJhZ0ltYWdlKSB7CisgICAgICAgICAgICBkcmFn
SW1hZ2UgPSBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oY3JlYXRlRHJhZ0ltYWdlRm9yU2Vs
ZWN0aW9uKHNyYyksIERyYWdJbWFnZUFscGhhKTsKKyAgICAgICAgICAgIGRyYWdMb2MgPSBkcmFn
TG9jRm9yU2VsZWN0aW9uRHJhZyhzcmMpOworICAgICAgICAgICAgbV9kcmFnT2Zmc2V0ID0gSW50
UG9pbnQoZHJhZ09yaWdpbi54KCkgLSBkcmFnTG9jLngoKSwgZHJhZ09yaWdpbi55KCkgLSBkcmFn
TG9jLnkoKSk7CisgICAgICAgIH0KKyAgICAgICAgZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJh
Z0xvYywgZHJhZ09yaWdpbiwgZGF0YVRyYW5zZmVyLCBzcmMsIGZhbHNlKTsKKyNlbmRpZgogICAg
IH0gZWxzZSBpZiAoc3RhdGUudHlwZSA9PSBEcmFnU291cmNlQWN0aW9uREhUTUwpIHsKICAgICAg
ICAgaWYgKGRyYWdJbWFnZSkgewogICAgICAgICAgICAgQVNTRVJUKG1fZHJhZ1NvdXJjZUFjdGlv
biAmIERyYWdTb3VyY2VBY3Rpb25ESFRNTCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5oCShyZXZpc2lvbiAxODE2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBib29sIGRpZEluaXRpYXRlRHJhZygpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlkSW5pdGlhdGVEcmFnOyB9CiAgICAgICAgIERyYWdPcGVyYXRpb24gc291cmNlRHJhZ09wZXJh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRHJhZ09wZXJhdGlvbjsgfQogICAgICAgICBj
b25zdCBVUkwmIGRyYWdnaW5nSW1hZ2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5nSW1h
Z2VVUkw7IH0KKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICAgICBjb25zdCBV
UkwmIGRyYWdnaW5nQXR0YWNobWVudFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdBdHRh
Y2htZW50VVJMOyB9CisjZW5kaWYKICAgICAgICAgdm9pZCBzZXREcmFnT2Zmc2V0KGNvbnN0IElu
dFBvaW50JiBvZmZzZXQpIHsgbV9kcmFnT2Zmc2V0ID0gb2Zmc2V0OyB9CiAgICAgICAgIGNvbnN0
IEludFBvaW50JiBkcmFnT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnT2Zmc2V0OyB9CiAg
ICAgICAgIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZHJhZ1NvdXJjZUFjdGlvbjsgfQpAQCAtMTE0LDcgKzExNyw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBkb1N5c3RlbURyYWcoRHJhZ0ltYWdlUmVmLCBjb25zdCBJbnRQ
b2ludCYsIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJiwgRnJhbWUmLCBib29sIGZvckxp
bmspOwogICAgICAgICB2b2lkIGNsZWFudXBBZnRlclN5c3RlbURyYWcoKTsKICAgICAgICAgdm9p
ZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRGF0YVRyYW5zZmVyJiwgRWxlbWVudCYsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgbGFiZWwpOwotCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKKyAgICAgICAgdm9pZCBkZWNsYXJlQW5kV3JpdGVBdHRhY2htZW50KERhdGFUcmFuc2Zl
ciYsIEVsZW1lbnQmLCBjb25zdCBVUkwmKTsKKyNlbmRpZgogICAgICAgICBQYWdlJiBtX3BhZ2U7
CiAgICAgICAgIERyYWdDbGllbnQmIG1fY2xpZW50OwogCkBAIC0xMzAsNiArMTM1LDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEcmFnT3BlcmF0aW9uIG1fc291cmNlRHJhZ09wZXJh
dGlvbjsgLy8gU2V0IGluIHN0YXJ0RHJhZyB3aGVuIGEgZHJhZyBzdGFydHMgZnJvbSBhIG1vdXNl
IGRvd24gd2l0aGluIFdlYktpdAogICAgICAgICBJbnRQb2ludCBtX2RyYWdPZmZzZXQ7CiAgICAg
ICAgIFVSTCBtX2RyYWdnaW5nSW1hZ2VVUkw7CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKKyAgICAgICAgVVJMIG1fZHJhZ2dpbmdBdHRhY2htZW50VVJMOworI2VuZGlmCiAgICAgfTsK
IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gMTgx
Njc0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzA4LDYgKzMzMDgsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVz
aXNFeGNlZWRlCiAgICAgICAgIHRocmVzaG9sZCA9IFRleHREcmFnSHlzdGVyZXNpczsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uSW1hZ2U6CisjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKKyAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25BdHRhY2htZW50Ogor
I2VuZGlmCiAgICAgICAgIHRocmVzaG9sZCA9IEltYWdlRHJhZ0h5c3RlcmVzaXM7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkxpbms6CkBAIC0zNDMwLDYgKzM0MzMs
OSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzCiAgICAgICAgIEFT
U0VSVCgoZHJhZ1N0YXRlKCkudHlwZSAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pKTsKICAg
ICAgICAgQVNTRVJUKChkcmFnU3RhdGUoKS50eXBlICYgfkRyYWdTb3VyY2VBY3Rpb25TZWxlY3Rp
b24pID09IERyYWdTb3VyY2VBY3Rpb25ESFRNTAogICAgICAgICAgICAgfHwgKGRyYWdTdGF0ZSgp
LnR5cGUgJiB+RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgPT0gRHJhZ1NvdXJjZUFjdGlvbklt
YWdlCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICAgICAgICAgIHx8IChkcmFn
U3RhdGUoKS50eXBlICYgfkRyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pID09IERyYWdTb3VyY2VB
Y3Rpb25BdHRhY2htZW50CisjZW5kaWYKICAgICAgICAgICAgIHx8IChkcmFnU3RhdGUoKS50eXBl
ICYgfkRyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pID09IERyYWdTb3VyY2VBY3Rpb25MaW5rKTsK
ICAgICAgICAgZHJhZ1N0YXRlKCkudHlwZSA9IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb247CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMu
bW0JKHJldmlzaW9uIDE4MTY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250
cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw5IEBACiAjaW1wb3J0ICJF
ZGl0b3IuaCIKICNpbXBvcnQgIkVkaXRvckNsaWVudC5oIgogI2ltcG9ydCAiRWxlbWVudC5oIgor
I2ltcG9ydCAiRmlsZS5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCisjaW1wb3J0ICJIVE1MQXR0
YWNobWVudEVsZW1lbnQuaCIKICNpbXBvcnQgIk1haW5GcmFtZS5oIgogI2ltcG9ydCAiUGFnZS5o
IgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgpAQCAtODcsNiArODksMTQgQEAgdm9pZCBEcmFnQ29u
dHJvbGxlcjo6Y2xlYW51cEFmdGVyU3lzdGVtRAogICAgICAgICBkcmFnRW5kZWQoKTsKIH0KIAor
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCit2b2lkIERyYWdDb250cm9sbGVyOjpkZWNs
YXJlQW5kV3JpdGVBdHRhY2htZW50KERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCkKK3sKKyAgICBjb25zdCBIVE1MQXR0YWNobWVudEVs
ZW1lbnQmIGF0dGFjaG1lbnQgPSBkb3duY2FzdDxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KGVsZW1l
bnQpOworICAgIG1fY2xpZW50LmRlY2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQoZGF0YVRyYW5zZmVy
LnBhc3RlYm9hcmQoKS5uYW1lKCksIGVsZW1lbnQsIHVybCwgYXR0YWNobWVudC5maWxlKCktPnBh
dGgoKSwgZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCkpOworfQorI2VuZGlmCisgICAgCiB2b2lk
IERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRGF0YVRyYW5zZmVyJiBk
YXRhVHJhbnNmZXIsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGxhYmVsKQogewogICAgIG1fY2xpZW50LmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShkYXRh
VHJhbnNmZXIucGFzdGVib2FyZCgpLm5hbWUoKSwgZWxlbWVudCwgdXJsLCBsYWJlbCwgZWxlbWVu
dC5kb2N1bWVudCgpLmZyYW1lKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJh
Z0NvbnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd2lu
L0RyYWdDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gMTgxNjc0KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2
ICs2OSwxMiBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpjbGVhbnVwQWZ0ZXJTeXN0ZW1ECiB7CiB9
CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQordm9pZCBEcmFnQ29udHJvbGxlcjo6
ZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudChEYXRhVHJhbnNmZXImLCBFbGVtZW50JiwgY29uc3Qg
VVJMJikKK3sKK30KKyNlbmRpZgorCiB2b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3Jp
dGVEcmFnSW1hZ2UoRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewogICAgIFBhc3RlYm9hcmQm
IHBhc3RlYm9hcmQgPSBkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAkocmV2aXNpb24gMTgxNjc0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSwxMSArMjUsMTMgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUg
IkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgorI2luY2x1
ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MQXJlYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MQXR0YWNobWVu
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQXVkaW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKQEAgLTMxMCw2
ICszMTIsMjUgQEAgSW50UmVjdCBIaXRUZXN0UmVzdWx0OjppbWFnZVJlY3QoKSBjb25zdAogICAg
IHJldHVybiBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyQm94KCktPmFic29sdXRlQ29udGVu
dFF1YWQoKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwogfQogCisjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKK1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUF0dGFjaG1lbnRVUkwoKSBj
b25zdAoreworICAgIGlmICghbV9pbm5lck5vblNoYXJlZE5vZGUpCisgICAgICAgIHJldHVybiBV
UkwoKTsKKyAgICAKKyAgICBpZiAoIShtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKSAm
JiBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKS0+aXNBdHRhY2htZW50KCkpKQorICAg
ICAgICByZXR1cm4gVVJMKCk7CisgICAgCisgICAgaWYgKCFpczxIVE1MQXR0YWNobWVudEVsZW1l
bnQ+KCptX2lubmVyTm9uU2hhcmVkTm9kZSkpCisgICAgICAgIHJldHVybiBVUkwoKTsKKyAgICBG
aWxlKiBhdHRhY2htZW50RmlsZSA9IGRvd25jYXN0PEhUTUxBdHRhY2htZW50RWxlbWVudD4oKm1f
aW5uZXJOb25TaGFyZWROb2RlKS5maWxlKCk7CisgICAgaWYgKCFhdHRhY2htZW50RmlsZSkKKyAg
ICAgICAgcmV0dXJuIFVSTCgpOworICAgIAorICAgIHJldHVybiBtX2lubmVyTm9uU2hhcmVkTm9k
ZS0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChhdHRhY2htZW50RmlsZS0+cGF0aCgpKTsKK30KKyNl
bmRpZgorCiBVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFnZVVSTCgpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2lubmVyTm9uU2hhcmVkTm9kZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuaAkocmV2aXNpb24gMTgxNjc0KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw5
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgYWJzb2x1dGVQREZVUkwoKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgYWJzb2x1dGVNZWRpYVVSTCgpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFVSTCBhYnNvbHV0ZUxpbmtVUkwoKSBjb25zdDsKKyNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQorICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBhYnNvbHV0ZUF0dGFj
aG1lbnRVUkwoKSBjb25zdDsKKyNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0ZXh0
Q29udGVudCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNMaXZlTGluaygpIGNv
bnN0OwogICAgIGJvb2wgaXNPdmVyTGluaygpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gMTgxNjc0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTUtMDMtMTcgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxl
LmNvbT4KKworICAgICAgICA8YXR0YWNobWVudD4gc2hvdWxkIHB1dCBVUkxzIG9uIHRoZSBwYXN0
ZWJvYXJkIHNvIHRoYXQgRmluZGVyIGNhbiBhY2NlcHQgZHJvcHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI4MDEKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vMTk5ODI1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYWxsIHRoZSBuZWNlc3Nhcnkgc3VwcG9ydCB0byB3cml0
ZSBhdHRhY2htZW50IGVsZW1lbnRzIGludG8KKyAgICAgICAgdGhlIHBhc3RlYm9hcmQsIGluY2x1
ZGluZyB0aGUgcHJvbWlzZWQgdHlwZSBpbiBXSzIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBfc2V0UHJvbWlzZWREYXRhOndpdGhG
aWxlTmFtZTp3aXRoRXh0ZW5zaW9uOndpdGhUaXRsZTp3aXRoVVJMOndpdGhWaXNpYmxlVVJMOndp
dGhBcmNoaXZlOmZvclBhc3RlYm9hcmQ6XSk6CisgICAgICAgICgtW1dLVmlldyBuYW1lc09mUHJv
bWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpz
ZXRQcm9taXNlZERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVu
dCk6CisKIDIwMTUtMDMtMTcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgQ2Fubm90IGludm9rZSBhY3Rpb24gbWVudXMgYW55bW9yZQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gMTgxNjc0
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMzg1LDExICszMzg1LDIwIEBAIC0gKHZvaWQpX3NldFByb21pc2VkRGF0YToo
V2ViQ29yZTo6SW1hZ2UKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJv
YXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpwYXN0ZWJvYXJkTmFtZV07CiAgICAgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhPYmplY3RzOk5TRmlsZXNQcm9taXNlUGJvYXJkVHlwZSwgbmlsXSk7CiAgICAgCi0gICAg
W3R5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6YXJjaGl2ZUJ1ZmZlciA/IFBhc3RlYm9hcmRUeXBl
czo6Zm9ySW1hZ2VzV2l0aEFyY2hpdmUoKSA6IFBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzKCld
OworICAgIGlmIChpbWFnZSkKKyAgICAgICAgW3R5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6YXJj
aGl2ZUJ1ZmZlciA/IFBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzV2l0aEFyY2hpdmUoKSA6IFBh
c3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzKCldOworICAgIGVsc2UKKyAgICAgICAgW3R5cGVzIGFk
ZE9iamVjdHNGcm9tQXJyYXk6UGFzdGVib2FyZFR5cGVzOjpmb3JVUkwoKV07CisKICAgICBbcGFz
dGVib2FyZCBkZWNsYXJlVHlwZXM6dHlwZXMuZ2V0KCkgb3duZXI6c2VsZl07CiAgICAgaWYgKCFt
YXRjaGVzRXh0ZW5zaW9uT3JFcXVpdmFsZW50KGZpbGVuYW1lLCBleHRlbnNpb24pKQogICAgICAg
ICBmaWxlbmFtZSA9IFtbZmlsZW5hbWUgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCIuIl0gc3Ry
aW5nQnlBcHBlbmRpbmdTdHJpbmc6ZXh0ZW5zaW9uXTsKIAorICAgIGlmICghaW1hZ2UpIHsKKyAg
ICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBwYXRocyA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgICAgICBbcGF0aHMuZ2V0KCkgYWRkT2JqZWN0OnRp
dGxlXTsKKyAgICAgICAgW3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0OnBhdGhzLmdldCgpIGZv
clR5cGU6TlNGaWxlbmFtZXNQYm9hcmRUeXBlXTsKKyAgICB9CiAgICAgW3Bhc3RlYm9hcmQgc2V0
U3RyaW5nOnZpc2libGVVcmwgZm9yVHlwZTpOU1N0cmluZ1Bib2FyZFR5cGVdOwogICAgIFtwYXN0
ZWJvYXJkIHNldFN0cmluZzp2aXNpYmxlVXJsIGZvclR5cGU6UGFzdGVib2FyZFR5cGVzOjpXZWJV
UkxQYm9hcmRUeXBlXTsKICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6dGl0bGUgZm9yVHlwZTpQ
YXN0ZWJvYXJkVHlwZXM6OldlYlVSTE5hbWVQYm9hcmRUeXBlXTsKQEAgLTM0NjcsMTAgKzM0NzYs
MTIgQEAgLSAoTlNBcnJheSAqKW5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZAogICAgIGlmIChf
ZGF0YS0+X3Byb21pc2VkSW1hZ2UpIHsKICAgICAgICAgZGF0YSA9IF9kYXRhLT5fcHJvbWlzZWRJ
bWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5n
ZXQoKV0pOwotICAgICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpfZGF0YS0+X3By
b21pc2VkRmlsZW5hbWVdOwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgd3JhcHBlciA9IGFk
b3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpfZGF0YS0+X3Byb21pc2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1t
ZWRpYXRlIGVycm9yOm5pbF0pOwogICAgIAotICAgIGlmICghd3JhcHBlcikgeworICAgIGlmICh3
cmFwcGVyKQorICAgICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpfZGF0YS0+X3By
b21pc2VkRmlsZW5hbWVdOworICAgIGVsc2UgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBjcmVhdGUgaW1hZ2UgZmlsZS4iKTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0JKHJl
dmlzaW9uIDE4MTY3NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwOSw4ICs0MDksMTEgQEAgdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c2V0RHJhZ0ltYWdlKGNvbnN0IAogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQ
cm9taXNlZERhdGEoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgdmlzaWJsZVVybCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVC
dWZmZXIpCiB7Ci0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUo
KTsKLSAgICBpbWFnZS0+c2V0RGF0YShpbWFnZUJ1ZmZlci5nZXQoKSwgdHJ1ZSk7CisgICAgUmVm
UHRyPEltYWdlPiBpbWFnZTsKKyAgICBpZiAoaW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgaW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgICAgIGltYWdlLT5zZXREYXRhKGltYWdlQnVm
ZmVyLmdldCgpLCB0cnVlKTsKKyAgICB9CiAgICAgW21fd2tWaWV3IF9zZXRQcm9taXNlZERhdGE6
aW1hZ2UuZ2V0KCkgd2l0aEZpbGVOYW1lOmZpbGVuYW1lIHdpdGhFeHRlbnNpb246ZXh0ZW5zaW9u
IHdpdGhUaXRsZTp0aXRsZSB3aXRoVVJMOnVybCB3aXRoVmlzaWJsZVVSTDp2aXNpYmxlVXJsIHdp
dGhBcmNoaXZlOmFyY2hpdmVCdWZmZXIuZ2V0KCkgZm9yUGFzdGVib2FyZDpwYXN0ZWJvYXJkTmFt
ZV07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCShyZXZpc2lvbiAxODE2NzQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDEwLDggKzQxMCw4
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmFnSW1hZ2UoY29uc3QgV2UKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRQcm9taXNlZERhdGEoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGltYWdlSGFuZGxlLCB1aW50NjRfdCBpbWFnZVNpemUs
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBjb25zdCBTaGFyZWRNZW1vcnk6
OkhhbmRsZSYgYXJjaGl2ZUhhbmRsZSwgdWludDY0X3QgYXJjaGl2ZVNpemUpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5SW1hZ2UgPSBTaGFyZWRNZW1vcnk6OmNyZWF0
ZShpbWFnZUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpSZWFkT25seSk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5SW1hZ2UtPmRhdGEoKSksIGltYWdlU2l6ZSk7Cisg
ICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5SW1hZ2UgPSAoIWltYWdlSGFuZGxl
LmlzTnVsbCgpKSA/IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKGltYWdlSGFuZGxlLCBTaGFyZWRNZW1v
cnk6OlJlYWRPbmx5KSA6IG51bGxwdHI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VC
dWZmZXIgPSAoc2hhcmVkTWVtb3J5SW1hZ2UpID8gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUltYWdlLT5kYXRhKCkpLCBpbWFnZVNp
emUpIDogbnVsbHB0cjsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOwog
ICAgIAogICAgIGlmICghYXJjaGl2ZUhhbmRsZS5pc051bGwoKSkgewpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmgJKHJldmlzaW9uIDE4MTY3NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw5
IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZGVj
bGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNv
cmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3Jl
OjpGcmFtZSopIG92ZXJyaWRlOworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAg
dmlydHVhbCB2b2lkIGRlY2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgV2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyNlbmRpZgogI2VuZGlm
CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRy
YWdDbGllbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQkocmV2aXNpb24gMTgxNjc0KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0Ns
aWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsMTcgQEAgc3RhdGljIFdlYkNv
cmU6OkNhY2hlZEltYWdlKiBjYWNoZWRJbWFnZQogICAgIHJldHVybiBpbWFnZTsKIH0KIAorI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCit2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVB
bmRXcml0ZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6RnJh
bWUqIGZyYW1lKQoreworICAgIEFTU0VSVChwYXN0ZWJvYXJkTmFtZSA9PSBTdHJpbmcoTlNEcmFn
UGJvYXJkKSk7CisgICAgCisgICAgTlNVUkwqIG5zVVJMID0gKE5TVVJMICopdXJsOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRQcm9taXNlZERhdGEocGFzdGVi
b2FyZE5hbWUsIFNoYXJlZE1lbW9yeTo6SGFuZGxlKCksIDAsIFN0cmluZyhuc1VSTC5sYXN0UGF0
aENvbXBvbmVudCksIFN0cmluZyhuc1VSTC5wYXRoRXh0ZW5zaW9uKSwgcGF0aCwgU3RyaW5nKG5z
VVJMLmFic29sdXRlU3RyaW5nKSwgdXNlclZpc2libGVTdHJpbmcobnNVUkwpLCBTaGFyZWRNZW1v
cnk6OkhhbmRsZSgpLCAwKSk7Cit9CisjZW5kaWYKKworCiB2b2lkIFdlYkRyYWdDbGllbnQ6OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRnJhbWUq
KQogewogICAgIEFTU0VSVChwYXN0ZWJvYXJkTmFtZSA9PSBTdHJpbmcoTlNEcmFnUGJvYXJkKSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODE2NzQpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxNS0wMy0x
NyAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAgICAgIDxhdHRhY2ht
ZW50PiBzaG91bGQgcHV0IFVSTHMgb24gdGhlIHBhc3RlYm9hcmQgc28gdGhhdCBGaW5kZXIgY2Fu
IGFjY2VwdCBkcm9wcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MjgwMQorICAgICAgICByZGFyOi8vcHJvYmxlbS8xOTk4MjUyNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBh
bGwgdGhlIG5lY2Vzc2FyeSBzdXBwb3J0IHRvIHdyaXRlIGF0dGFjaG1lbnQgZWxlbWVudHMgaW50
bworICAgICAgICB0aGUgcGFzdGVib2FyZCwgaW5jbHVkaW5nIHRoZSBwcm9taXNlZCB0eXBlIGlu
IFdLMS4KKworICAgICAgICAqIE1pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tOgorICAgICAg
ICAoLVtOU1Bhc3RlYm9hcmQgX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VGb3JFbGVtZW50
OlVSTDp0aXRsZTphcmNoaXZlOnNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5t
bToKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQpOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3
IG5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJVSURlbGVnYXRlLmg6CisKIDIwMTUtMDMtMTcgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBpT1MgYnVpbGQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCShy
ZXZpc2lvbiAxODE2NzQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TUGFzdGVib2Fy
ZEV4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyQXR0YWNobWVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJJbWFnZS5oPgogI2ltcG9ydCA8V2ViS2l0TGVn
YWN5L0RPTUV4dGVuc2lvbnMuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01Qcml2YXRlLmg+
CkBAIC0yNzEsMTkgKzI3MiwyOSBAQCAtIChpZClfd2ViX2RlY2xhcmVBbmRXcml0ZURyYWdJbWFn
ZUZvckVsCiAgICAgQVNTRVJUKHNlbGYgPT0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aE5h
bWU6TlNEcmFnUGJvYXJkXSk7CiAKICAgICBOU1N0cmluZyAqZXh0ZW5zaW9uID0gQCIiOworICAg
IE5TTXV0YWJsZUFycmF5ICp0eXBlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
T2JqZWN0czpOU0ZpbGVzUHJvbWlzZVBib2FyZFR5cGUsIG5pbF07CiAgICAgaWYgKGF1dG8qIHJl
bmRlcmVyID0gY29yZShlbGVtZW50KS0+cmVuZGVyZXIoKSkgewogICAgICAgICBpZiAoaXM8UmVu
ZGVySW1hZ2U+KCpyZW5kZXJlcikpIHsKICAgICAgICAgICAgIGlmIChDYWNoZWRJbWFnZSogaW1h
Z2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS5jYWNoZWRJbWFnZSgpKSB7CiAg
ICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gaW1hZ2UtPmltYWdlKCktPmZpbGVuYW1lRXh0ZW5z
aW9uKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFbZXh0ZW5zaW9uIGxlbmd0aF0pCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIFt0eXBlcyBhZGRP
YmplY3RzRnJvbUFycmF5OltOU1Bhc3RlYm9hcmQgX3dlYl93cml0YWJsZVR5cGVzRm9ySW1hZ2VJ
bmNsdWRpbmdBcmNoaXZlOihhcmNoaXZlICE9IG5pbCldXTsKKyAgICAgICAgICAgICAgICBbc2Vs
ZiBkZWNsYXJlVHlwZXM6dHlwZXMgb3duZXI6c291cmNlXTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgICAgIGVsc2UgaWYgKGlz
PFJlbmRlckF0dGFjaG1lbnQ+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgICAgIGV4dGVuc2lvbiA9
IFVSTC5wYXRoRXh0ZW5zaW9uOworICAgICAgICAgICAgW3R5cGVzIGFkZE9iamVjdHNGcm9tQXJy
YXk6W05TUGFzdGVib2FyZCBfd2ViX2RyYWdUeXBlc0ZvclVSTF1dOworICAgICAgICAgICAgW3Nl
bGYgZGVjbGFyZVR5cGVzOnR5cGVzIG93bmVyOnNvdXJjZV07CisgICAgICAgICAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IHBhdGhzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7CisgICAgICAgICAgICBbcGF0aHMuZ2V0KCkgYWRkT2JqZWN0OnRpdGxlXTsKKyAg
ICAgICAgICAgIFtzZWxmIHNldFByb3BlcnR5TGlzdDpwYXRocy5nZXQoKSBmb3JUeXBlOk5TRmls
ZW5hbWVzUGJvYXJkVHlwZV07CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KIAotICAgIE5TTXV0
YWJsZUFycmF5ICp0eXBlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0
czpOU0ZpbGVzUHJvbWlzZVBib2FyZFR5cGUsIG5pbF07Ci0gICAgW3R5cGVzIGFkZE9iamVjdHNG
cm9tQXJyYXk6W05TUGFzdGVib2FyZCBfd2ViX3dyaXRhYmxlVHlwZXNGb3JJbWFnZUluY2x1ZGlu
Z0FyY2hpdmU6KGFyY2hpdmUgIT0gbmlsKV1dOwotICAgIFtzZWxmIGRlY2xhcmVUeXBlczp0eXBl
cyBvd25lcjpzb3VyY2VdOyAgICAKICAgICBbc2VsZiBfd2ViX3dyaXRlSW1hZ2U6bmlsIGVsZW1l
bnQ6ZWxlbWVudCBVUkw6VVJMIHRpdGxlOnRpdGxlIGFyY2hpdmU6YXJjaGl2ZSB0eXBlczp0eXBl
cyBzb3VyY2U6c291cmNlXTsKICAgICBbdHlwZXMgcmVsZWFzZV07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgJKHJldmlzaW9u
IDE4MTY3NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OkRyYWdJbWFnZVJlZiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGRyYWdQb3MsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBldmVudFBvcywgV2Vi
Q29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RnJhbWUmLCBib29sIGxpbmtEcmFnKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgdmlydHVhbCB2b2lkIGRlY2xhcmVBbmRXcml0ZUF0
dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6RWxlbWVudCYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6RnJhbWUq
KSBvdmVycmlkZTsKKyNlbmRpZgogcHJpdmF0ZToKICAgICBXZWJWaWV3KiBtX3dlYlZpZXc7CiB9
OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50Lm1tCShyZXZpc2lvbiAxODE2NzQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDE2
IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0kKICAgICBbW05TUGFz
dGVib2FyZCBwYXN0ZWJvYXJkV2l0aE5hbWU6cGFzdGVib2FyZE5hbWVdIF93ZWJfZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlRm9yRWxlbWVudDpraXQoJmVsZW1lbnQpIFVSTDp1cmwgdGl0bGU6dGl0
bGUgYXJjaGl2ZTphcmNoaXZlIHNvdXJjZTpzb3VyY2VdOwogfQogCisjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKK3ZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlQXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCit7
CisgICAgQVNTRVJUKHBhc3RlYm9hcmROYW1lKTsKKyAgICBXZWJIVE1MVmlldyAqc291cmNlID0g
Z2V0VG9wSFRNTFZpZXcoZnJhbWUpOworICAgIAorICAgIFtbTlNQYXN0ZWJvYXJkIHBhc3RlYm9h
cmRXaXRoTmFtZTpwYXN0ZWJvYXJkTmFtZV0gX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VG
b3JFbGVtZW50OmtpdCgmZWxlbWVudCkgVVJMOnVybCB0aXRsZTpwYXRoIGFyY2hpdmU6bmlsIHNv
dXJjZTpzb3VyY2VdOworfQorI2VuZGlmCisKIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZHJhZ0NvbnRy
b2xsZXJEZXN0cm95ZWQoKSAKIHsKICAgICBkZWxldGUgdGhpczsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2aXNpb24gMTgxNjc0KQorKysgU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzk2
MiwxMiArMzk2MiwxMiBAQCBzdGF0aWMgYm9vbCBtYXRjaGVzRXh0ZW5zaW9uT3JFcXVpdmFsZW50
CiAtIChOU0FycmF5ICopbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjoo
TlNVUkwgKilkcm9wRGVzdGluYXRpb24KIHsKICAgICBOU0ZpbGVXcmFwcGVyICp3cmFwcGVyID0g
bmlsOwotICAgIE5TVVJMICpkcmFnZ2luZ0ltYWdlVVJMID0gbmlsOworICAgIE5TVVJMICpkcmFn
Z2luZ0VsZW1lbnRVUkwgPSBuaWw7CiAgICAgCiAgICAgaWYgKFdlYkNvcmU6OkNhY2hlZEltYWdl
KiB0aWZmUmVzb3VyY2UgPSBbc2VsZiBwcm9taXNlZERyYWdUSUZGRGF0YVNvdXJjZV0pIHsKICAg
ICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IHRpZmZSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkg
ewogICAgICAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSB0aWZmUmVzb3VyY2UtPnJl
c3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwotICAgICAgICAgICAgZHJhZ2dpbmdJbWFnZVVSTCA9
IFtyZXNwb25zZSBVUkxdOworICAgICAgICAgICAgZHJhZ2dpbmdFbGVtZW50VVJMID0gW3Jlc3Bv
bnNlIFVSTF07CiAgICAgICAgICAgICB3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
IGF1dG9yZWxlYXNlXTsKICAgICAgICAgICAgIE5TU3RyaW5nKiBmaWxlbmFtZSA9IFtyZXNwb25z
ZSBzdWdnZXN0ZWRGaWxlbmFtZV07CiAgICAgICAgICAgICBOU1N0cmluZyogdHJ1ZUV4dGVuc2lv
bih0aWZmUmVzb3VyY2UtPmltYWdlKCktPmZpbGVuYW1lRXh0ZW5zaW9uKCkpOwpAQCAtMzk4OCwx
MCArMzk4OCwxNCBAQCAtIChOU0FycmF5ICopbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkCiAg
ICAgICAgICAgICByZXR1cm4gbmlsOyAKICAgICAgICAgCiAgICAgICAgIGNvbnN0IFVSTCYgaW1h
Z2VVUkwgPSBwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdnaW5nSW1hZ2VVUkwoKTsKLSAgICAg
ICAgQVNTRVJUKCFpbWFnZVVSTC5pc0VtcHR5KCkpOwotICAgICAgICBkcmFnZ2luZ0ltYWdlVVJM
ID0gaW1hZ2VVUkw7CisgICAgICAgIGlmICghaW1hZ2VVUkwuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgZHJhZ2dpbmdFbGVtZW50VVJMID0gaW1hZ2VVUkw7CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZHJhZ2dpbmdFbGVtZW50VVJMID0g
cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnZ2luZ0F0dGFjaG1lbnRVUkwoKTsKKyNlbmRpZgog
Ci0gICAgICAgIHdyYXBwZXIgPSBbW3NlbGYgX2RhdGFTb3VyY2VdIF9maWxlV3JhcHBlckZvclVS
TDpkcmFnZ2luZ0ltYWdlVVJMXTsKKyAgICAgICAgd3JhcHBlciA9IFtbc2VsZiBfZGF0YVNvdXJj
ZV0gX2ZpbGVXcmFwcGVyRm9yVVJMOmRyYWdnaW5nRWxlbWVudFVSTF07CiAgICAgfQogICAgIAog
ICAgIGlmICh3cmFwcGVyID09IG5pbCkgewpAQCAtNDAwNSw4ICs0MDA5LDggQEAgLSAoTlNBcnJh
eSAqKW5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZAogICAgIGlmICghW3dyYXBwZXIgd3JpdGVU
b1VSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhdIG9wdGlvbnM6TlNGaWxlV3JhcHBlcldy
aXRpbmdXaXRoTmFtZVVwZGF0aW5nIG9yaWdpbmFsQ29udGVudHNVUkw6bmlsIGVycm9yOm51bGxw
dHJdKQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgaW1hZ2UgZmlsZSB2aWEg
LVtOU0ZpbGVXcmFwcGVyIHdyaXRlVG9VUkw6b3B0aW9uczpvcmlnaW5hbENvbnRlbnRzVVJMOmVy
cm9yOl0iKTsKICAgICAKLSAgICBpZiAoZHJhZ2dpbmdJbWFnZVVSTCkKLSAgICAgICAgW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBfd2Via2l0X3NldE1ldGFkYXRhVVJMOltkcmFnZ2lu
Z0ltYWdlVVJMIGFic29sdXRlU3RyaW5nXSByZWZlcnJlcjpuaWwgYXRQYXRoOnBhdGhdOworICAg
IGlmIChkcmFnZ2luZ0VsZW1lbnRVUkwpCisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gX3dlYmtpdF9zZXRNZXRhZGF0YVVSTDpbZHJhZ2dpbmdFbGVtZW50VVJMIGFic29s
dXRlU3RyaW5nXSByZWZlcnJlcjpuaWwgYXRQYXRoOnBhdGhdOwogICAgIAogICAgIHJldHVybiBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3Q6W3BhdGggbGFzdFBhdGhDb21wb25lbnRdXTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZS5oCShyZXZpc2lvbiAx
ODE2NzQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRl
Z2VyLCBXZWJEcmFnU28KICAgICBXZWJEcmFnU291cmNlQWN0aW9uSW1hZ2UgICAgICAgID0gMiwK
ICAgICBXZWJEcmFnU291cmNlQWN0aW9uTGluayAgICAgICAgID0gNCwKICAgICBXZWJEcmFnU291
cmNlQWN0aW9uU2VsZWN0aW9uICAgID0gOCwKKyAgICBXZWJEcmFnU291cmNlQWN0aW9uQXR0YWNo
bWVudCAgID0gMTYsCiAgICAgV2ViRHJhZ1NvdXJjZUFjdGlvbkFueSAgICAgICAgICA9IFVJTlRf
TUFYCiB9OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODE2NzQpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wMy0xNyAgRW5yaWNh
IENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAgICAgIDxhdHRhY2htZW50PiBzaG91
bGQgcHV0IFVSTHMgb24gdGhlIHBhc3RlYm9hcmQgc28gdGhhdCBGaW5kZXIgY2FuIGFjY2VwdCBk
cm9wcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
MjgwMQorICAgICAgICByZGFyOi8vcHJvYmxlbS8xOTk4MjUyNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWct
YW5kLWRyb3AtYXR0YWNobWVudC1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1hdHRhY2htZW50LWNv
bnRlbnRlZGl0YWJsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnM6IFNraXBwaW5nIG5ldyB0ZXN0IG9uIFdLMiBzaW5jZSBpdCB1c2VzIGV2
ZW50U2VuZGVyLgorCiAyMDE1LTAzLTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5j
b20+CiAKICAgICAgICAgRnVuY3Rpb24gYm9kaWVzIHNob3VsZCBhbHdheXMgaW5jbHVkZSBicmFj
ZXMKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWFuZC1kcm9wLWF0
dGFjaG1lbnQtY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1hdHRhY2htZW50LWNvbnRl
bnRlZGl0YWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1hdHRhY2htZW50LWNvbnRlbnRlZGl0YWJsZS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorVGhlc2UgdGVzdHMg
ZHJhZ2dpbmcgYW4gYXR0YWNobWVudCBlbGVtZW50IGludG8gY29udGVudGVkaXRhYmxlCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRhcmdldC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYXR0YWNobWVudCIpLmxlbmd0aCBpcyAxCitQQVNTIHRhcmdldC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYXR0YWNobWVudCIpWzBdLmZpbGUubmFtZSBpcyAiYXBwbGUuZ2lmIgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWFuZC1kcm9wLWF0dGFjaG1lbnQtY29udGVu
dGVkaXRhYmxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2RyYWctYW5kLWRyb3AtYXR0YWNobWVudC1jb250ZW50ZWRpdGFibGUuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWFuZC1kcm9wLWF0
dGFjaG1lbnQtY29udGVudGVkaXRhYmxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
MyBAQAorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyN0YXJnZXQg
eworICAgIGhlaWdodDogMjAwcHg7CisgICAgd2lkdGg6IDIyMHB4OworICAgIGJvcmRlcjogNXB4
IHNvbGlkIGJsdWU7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJ0ZXN0MSI+PGF0dGFjaG1l
bnQgaWQ9J2F0dGFjaG1lbnQnPjwvYXR0YWNobWVudD48L2Rpdj4KKzxkaXYgY29udGVudGVkaXRh
YmxlPXRydWUgaWQ9InRhcmdldCI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKwor
PHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbignVGhlc2UgdGVzdHMgZHJhZ2dpbmcgYW4gYXR0YWNo
bWVudCBlbGVtZW50IGludG8gY29udGVudGVkaXRhYmxlJyk7Cit2YXIganNUZXN0SXNBc3luYyA9
IHRydWU7Cit2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpOwor
CitmdW5jdGlvbiBjb250ZW50SW5zZXJ0ZWQoKSB7CisgICBzaG91bGRCZSgndGFyZ2V0LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJhdHRhY2htZW50IikubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ3RhcmdldC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYXR0YWNobWVudCIp
WzBdLmZpbGUubmFtZScsICdhcHBsZS5naWYnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
ZnVuY3Rpb24gc2V0dXBBdHRhY2htZW50KCkKK3sKKyAgICBpZiAod2luZG93LmludGVybmFscykg
eworICAgICAgICB2YXIgYXR0YWNobWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdHRh
Y2htZW50Jyk7CisgICAgICAgIGF0dGFjaG1lbnQuZmlsZSA9IHdpbmRvdy5pbnRlcm5hbHMuY3Jl
YXRlRmlsZSgicmVzb3VyY2VzL2FwcGxlLmdpZiIpOworICAgIH0KK30KK2Z1bmN0aW9uIHJ1blRl
c3QoKSB7CisgICAgc2V0dXBBdHRhY2htZW50KCk7CisgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVu
ZXIoJ0RPTU5vZGVJbnNlcnRlZCcsIGNvbnRlbnRJbnNlcnRlZCwgZmFsc2UpOworICAgIGlmICgh
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKworICAgIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXR0
YWNobWVudCIpOworICAgIHggPSBlLm9mZnNldExlZnQgKyBlLm9mZnNldFdpZHRoIC8gMjsKKyAg
ICB5ID0gZS5vZmZzZXRUb3AgKyBlLm9mZnNldEhlaWdodCAvIDI7CisKKyAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBl
dmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDApOworICAgIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGFyZ2V0Iik7CisgICAgeCA9IGUub2Zmc2V0TGVmdCArIGUub2Zmc2V0V2lkdGggLyAy
OworICAgIHkgPSBlLm9mZnNldFRvcCArIGUub2Zmc2V0SGVpZ2h0IC8gMjsKKworICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTgxNjc0KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw2ICsyMyw3IEBAIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXN0YW5kYWxvbmUtaW1hZ2UK
IGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWFuZC1kcm9wLWltYWdlLWNvbnRlbnRlZGl0YWJsZS5o
dG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1pbnB1dGltYWdlLWNvbnRlbnRl
ZGl0YWJsZS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1vYmplY3RpbWFn
ZS1jb250ZW50ZWRpdGFibGUuaHRtbAorZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctYW5kLWRyb3At
YXR0YWNobWVudC1jb250ZW50ZWRpdGFibGUuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWct
ZHJvcC1kZWFkLWZyYW1lLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWRyb3AtaW5wdXQt
dGV4dGFyZWEuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctZHJvcC1saXN0Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248979</attachid>
            <date>2015-03-18 16:23:44 -0700</date>
            <delta_ts>2015-03-18 16:36:48 -0700</delta_ts>
            <desc>Patch3</desc>
            <filename>drag-attachment-out.txt</filename>
            <type>text/plain</type>
            <size>51414</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE1LTAzLTE4ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgPGF0dGFjaG1lbnQ+IHNob3Vs
ZCBwdXQgVVJMcyBvbiB0aGUgcGFzdGVib2FyZCBzbyB0aGF0IEZpbmRlciBjYW4gYWNjZXB0IGRy
b3BzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQy
ODAxCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzE5OTgyNTI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9wYXN0ZWJvYXJkL2Ry
YWctYW5kLWRyb3AtYXR0YWNobWVudC1jb250ZW50ZWRpdGFibGUuaHRtbAorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBhbGwgdGhlIG5lY2Vzc2FyeSBzdXBwb3J0IHRvIHdyaXRlIGF0dGFjaG1l
bnQgZWxlbWVudHMgaW50bworICAgICAgICB0aGUgcGFzdGVib2FyZCwgaW5jbHVkaW5nIHRoZSBw
cm9taXNlZCB0eXBlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdD
bGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZUF0
dGFjaG1lbnQpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9EcmFnQ29u
dHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdnaW5nQXR0
YWNobWVudFVSTCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9tYWMv
RHJhZ0NvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
ZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudCk6CisgICAgICAgICogcGFnZS93aW4vRHJhZ0NvbnRy
b2xsZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVB
bmRXcml0ZUF0dGFjaG1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgpOgorICAgICAgICAqIHBs
YXRmb3JtL1VSTC5oOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmFic29sdXRlQXR0YWNobWVudFVSTCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKwogMjAxNS0wMy0xOCAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCByZXBhaW50
cyB3aGVuIGNoYW5naW5nIHRyYW5zZm9ybSBvbiBhbiBlbGVtZW50IHdpdGggbXVsdGlwbGUgYmFj
a2dyb3VuZCBpbWFnZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4MTY5OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjUy
Nyw3ICsyNTI3LDcgQEAKIAkJN0NDNjk5NDExOTFFQzVGNTAwQUYyMjcwIC8qIEpTV2ViS2l0TmFt
ZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0M2OTkzRjE5MUVDNUY1MDBBRjIyNzAgLyogSlNXZWJLaXROYW1lc3BhY2UuaCAqLzsgfTsKIAkJ
N0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlzdC50eHQgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQzdFM0Q2MTcyMDhD
MEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovOyB9OwogCQk3Q0Q0OTRDQzFB
ODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Q0OTRDQTFBODZFQjFEMDAwQTg3RUMgLyog
UmVuZGVyQXR0YWNobWVudC5jcHAgKi87IH07Ci0JCTdDRDQ5NENEMUE4NkVCMUQwMDBBODdFQyAv
KiBSZW5kZXJBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3Q0Q0OTRDQjFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5o
ICovOyB9OworCQk3Q0Q0OTRDRDFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NENDk0Q0Ix
QTg2RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0RFRUUxRTE5NzYxMEQ3MDBFMzUyQ0Qg
LyogVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDREVFRTFEMTk3NjEwRDcwMEUzNTJDRCAvKiBWaWV3U3RhdGVD
aGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdDRTY4MzQ0MTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDRTY4MzQyMTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlw
dG9yLmNwcCAqLzsgfTsKIAkJN0NFNjgzNDUxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdl
SGFuZGxlckRlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDRTY4MzQzMTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgJKHJldmlzaW9uIDE4MTY5OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NiArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERyYWdTb3VyY2VBY3Rpb25J
bWFnZSAgICAgICAgPSAyLAogICAgICAgICBEcmFnU291cmNlQWN0aW9uTGluayAgICAgICAgID0g
NCwKICAgICAgICAgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiAgICA9IDgsCisjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1lbnQg
ICA9IDE2LAorI2VuZGlmCiAgICAgICAgIERyYWdTb3VyY2VBY3Rpb25BbnkgICAgICAgICAgPSBV
SU5UX01BWAogICAgIH0gRHJhZ1NvdXJjZUFjdGlvbjsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NsaWVudC5oCShyZXZpc2lvbiAxODE2OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gTWFjLXNwZWNpZmljIGhlbHBlciBmdW5jdGlvbiB0byBhbGxvdyBhY2Nlc3MgdG8gd2ViIGFy
Y2hpdmVzIGFuZCBOU1Bhc3RlYm9hcmQgZXh0cmFzIGluIFdlYktpdC4KICAgICAvLyBUaGlzIGlz
IG5vdCBhYnN0cmFjdCBhcyB0aGF0IHdvdWxkIHJlcXVpcmUgYW5vdGhlciAjaWYgUExBVEZPUk0o
Q09DT0EpIGZvciB0aGUgU1ZHSW1hZ2UgY2xpZW50IGVtcHR5IGltcGxlbnRhdGlvbi4KICAgICB2
aXJ0dWFsIHZvaWQgZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYsIEVsZW1l
bnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBGcmFtZSopIHsgfQorI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgdmlydHVhbCB2b2lkIGRlY2xhcmVBbmRXcml0ZUF0dGFj
aG1lbnQoY29uc3QgU3RyaW5nJiwgRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYs
IEZyYW1lKikgeyB9CisjZW5kaWYKICNlbmRpZgogCiAgICAgdmlydHVhbCB+RHJhZ0NsaWVudCgp
IHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDE4MTY5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCkBAIC02MjMsNiArNjI0LDE0IEBAIEVsZW1lbnQqIERyYWdDb250cm9sbGVyOjpkcmFn
Z2FibGVFbGVtZW4KICAgICBzdGF0ZS50eXBlID0gKHNvdXJjZUZyYW1lLT5zZWxlY3Rpb24oKS5j
b250YWlucyhkcmFnT3JpZ2luKSkgPyBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uIDogRHJhZ1Nv
dXJjZUFjdGlvbk5vbmU7CiAgICAgaWYgKCFzdGFydEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgLy8gVW5saWtlIGlt
YWdlIGVsZW1lbnRzLCBhdHRhY2htZW50IGVsZW1lbnRzIGFyZSBpbW1lZGlhdGVseSBzZWxlY3Rl
ZCB1cG9uIG1vdXNlIGRvd24sCisgICAgLy8gYnV0IGZvciB0aG9zZSBlbGVtZW50cyB3ZSBzdGls
bCB3YW50IHRvIHVzZSB0aGUgc2luZ2xlIGVsZW1lbnQgZHJhZyBiZWhhdmlvciBhcyBsb25nIGFz
CisgICAgLy8gdGhlIGVsZW1lbnQgaXMgdGhlIG9ubHkgY29udGVudCBvZiB0aGUgc2VsZWN0aW9u
LgorICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IHNvdXJjZUZyYW1lLT5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAgICBpZiAoc2VsZWN0aW9uLmlzUmFuZ2UoKSAmJiBp
czxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KHNlbGVjdGlvbi5zdGFydCgpLmFuY2hvck5vZGUoKSkg
JiYgc2VsZWN0aW9uLnN0YXJ0KCkuYW5jaG9yTm9kZSgpID09IHNlbGVjdGlvbi5lbmQoKS5hbmNo
b3JOb2RlKCkpCisgICAgICAgIHN0YXRlLnR5cGUgPSBEcmFnU291cmNlQWN0aW9uTm9uZTsKKyNl
bmRpZgogCiAgICAgZm9yIChhdXRvIHJlbmRlcmVyID0gc3RhcnRFbGVtZW50LT5yZW5kZXJlcigp
OyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCkpIHsKICAgICAgICAgRWxl
bWVudCogZWxlbWVudCA9IHJlbmRlcmVyLT5ub25Qc2V1ZG9FbGVtZW50KCk7CkBAIC02NDksNiAr
NjU4LDE0IEBAIEVsZW1lbnQqIERyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW4KICAgICAg
ICAgICAgICAgICBzdGF0ZS50eXBlID0gc3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3Rh
dGUudHlwZSB8IERyYWdTb3VyY2VBY3Rpb25MaW5rKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZWxlbWVudDsKICAgICAgICAgICAgIH0KKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQor
ICAgICAgICAgICAgaWYgKChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQXR0
YWNobWVudCkKKyAgICAgICAgICAgICAgICAmJiBpczxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KCpl
bGVtZW50KQorICAgICAgICAgICAgICAgICYmIGRvd25jYXN0PEhUTUxBdHRhY2htZW50RWxlbWVu
dD4oKmVsZW1lbnQpLmZpbGUoKSkgeworICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBzdGF0
aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkF0
dGFjaG1lbnQpOworICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICAgICAg
fQorI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAKQEAgLTczOCw2ICs3NTUsMTAgQEAgYm9vbCBE
cmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgVVJMIGxpbmtVUkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwogICAg
IFVSTCBpbWFnZVVSTCA9IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpOworI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgVVJMIGF0dGFjaG1lbnRVUkwgPSBoaXRUZXN0
UmVzdWx0LmFic29sdXRlQXR0YWNobWVudFVSTCgpOworICAgIG1fZHJhZ2dpbmdBdHRhY2htZW50
VVJMID0gVVJMKCk7CisjZW5kaWYKIAogICAgIEludFBvaW50IG1vdXNlRHJhZ2dlZFBvaW50ID0g
c3JjLnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhkcmFnRXZlbnQucG9zaXRpb24oKSk7CiAKQEAg
LTg1Myw2ICs4NzQsMjMgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBz
cgogICAgICAgICAgICAgZHJhZ0ltYWdlID0gc2NhbGVEcmFnSW1hZ2UoZHJhZ0ltYWdlLCBGbG9h
dFNpemUobV9wYWdlLmRldmljZVNjYWxlRmFjdG9yKCksIG1fcGFnZS5kZXZpY2VTY2FsZUZhY3Rv
cigpKSk7CiAgICAgICAgIH0KICAgICAgICAgZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJhZ0xv
YywgbW91c2VEcmFnZ2VkUG9pbnQsIGRhdGFUcmFuc2Zlciwgc3JjLCB0cnVlKTsKKyNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIH0gZWxzZSBpZiAoIWF0dGFjaG1lbnRVUkwuaXNF
bXB0eSgpICYmIChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQXR0YWNobWVu
dCkpIHsKKyAgICAgICAgaWYgKCFkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLmhhc0RhdGEoKSkg
eworICAgICAgICAgICAgbV9kcmFnZ2luZ0F0dGFjaG1lbnRVUkwgPSBhdHRhY2htZW50VVJMOwor
ICAgICAgICAgICAgc2VsZWN0RWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgICAgIGRlY2xhcmVB
bmRXcml0ZUF0dGFjaG1lbnQoZGF0YVRyYW5zZmVyLCBlbGVtZW50LCBhdHRhY2htZW50VVJMKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9jbGllbnQud2lsbFBlcmZvcm1EcmFnU291
cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25BdHRhY2htZW50LCBkcmFnT3JpZ2luLCBkYXRhVHJh
bnNmZXIpOworICAgICAgICAKKyAgICAgICAgaWYgKCFkcmFnSW1hZ2UpIHsKKyAgICAgICAgICAg
IGRyYWdJbWFnZSA9IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihjcmVhdGVEcmFnSW1hZ2VG
b3JTZWxlY3Rpb24oc3JjKSwgRHJhZ0ltYWdlQWxwaGEpOworICAgICAgICAgICAgZHJhZ0xvYyA9
IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKHNyYyk7CisgICAgICAgICAgICBtX2RyYWdPZmZzZXQg
PSBJbnRQb2ludChkcmFnT3JpZ2luLngoKSAtIGRyYWdMb2MueCgpLCBkcmFnT3JpZ2luLnkoKSAt
IGRyYWdMb2MueSgpKTsKKyAgICAgICAgfQorICAgICAgICBkb1N5c3RlbURyYWcoZHJhZ0ltYWdl
LCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIsIHNyYywgZmFsc2UpOworI2VuZGlm
CiAgICAgfSBlbHNlIGlmIChzdGF0ZS50eXBlID09IERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgewog
ICAgICAgICBpZiAoZHJhZ0ltYWdlKSB7CiAgICAgICAgICAgICBBU1NFUlQobV9kcmFnU291cmNl
QWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmgJKHJldmlzaW9uIDE4MTY5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgZGlkSW5pdGlhdGVEcmFnKCkgY29uc3QgeyByZXR1
cm4gbV9kaWRJbml0aWF0ZURyYWc7IH0KICAgICAgICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VEcmFn
T3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VEcmFnT3BlcmF0aW9uOyB9CiAgICAg
ICAgIGNvbnN0IFVSTCYgZHJhZ2dpbmdJbWFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dp
bmdJbWFnZVVSTDsgfQorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgICAgIGNv
bnN0IFVSTCYgZHJhZ2dpbmdBdHRhY2htZW50VVJMKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2lu
Z0F0dGFjaG1lbnRVUkw7IH0KKyNlbmRpZgogICAgICAgICB2b2lkIHNldERyYWdPZmZzZXQoY29u
c3QgSW50UG9pbnQmIG9mZnNldCkgeyBtX2RyYWdPZmZzZXQgPSBvZmZzZXQ7IH0KICAgICAgICAg
Y29uc3QgSW50UG9pbnQmIGRyYWdPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2RyYWdPZmZzZXQ7
IH0KICAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9kcmFnU291cmNlQWN0aW9uOyB9CkBAIC0xMTQsNyArMTE3LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIGRvU3lzdGVtRHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0
IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYsIGJvb2wg
Zm9yTGluayk7CiAgICAgICAgIHZvaWQgY2xlYW51cEFmdGVyU3lzdGVtRHJhZygpOwogICAgICAg
ICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNmZXImLCBFbGVtZW50Jiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7Ci0KKyNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQorICAgICAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQoRGF0YVRy
YW5zZmVyJiwgRWxlbWVudCYsIGNvbnN0IFVSTCYpOworI2VuZGlmCiAgICAgICAgIFBhZ2UmIG1f
cGFnZTsKICAgICAgICAgRHJhZ0NsaWVudCYgbV9jbGllbnQ7CiAKQEAgLTEzMCw2ICsxMzUsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERyYWdPcGVyYXRpb24gbV9zb3VyY2VEcmFn
T3BlcmF0aW9uOyAvLyBTZXQgaW4gc3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEg
bW91c2UgZG93biB3aXRoaW4gV2ViS2l0CiAgICAgICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsK
ICAgICAgICAgVVJMIG1fZHJhZ2dpbmdJbWFnZVVSTDsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorICAgICAgICBVUkwgbV9kcmFnZ2luZ0F0dGFjaG1lbnRVUkw7CisjZW5kaWYKICAg
ICB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lv
biAxODE2OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzMDgsNiArMzMwOCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlz
dGVyZXNpc0V4Y2VlZGUKICAgICAgICAgdGhyZXNob2xkID0gVGV4dERyYWdIeXN0ZXJlc2lzOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25JbWFnZToKKyNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1l
bnQ6CisjZW5kaWYKICAgICAgICAgdGhyZXNob2xkID0gSW1hZ2VEcmFnSHlzdGVyZXNpczsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uTGluazoKQEAgLTM0MzAsNiAr
MzQzMyw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXMKICAgICAg
ICAgQVNTRVJUKChkcmFnU3RhdGUoKS50eXBlICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikp
OwogICAgICAgICBBU1NFUlQoKGRyYWdTdGF0ZSgpLnR5cGUgJiB+RHJhZ1NvdXJjZUFjdGlvblNl
bGVjdGlvbikgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1MCiAgICAgICAgICAgICB8fCAoZHJhZ1N0
YXRlKCkudHlwZSAmIH5EcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSA9PSBEcmFnU291cmNlQWN0
aW9uSW1hZ2UKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICAgICAgICAgfHwg
KGRyYWdTdGF0ZSgpLnR5cGUgJiB+RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgPT0gRHJhZ1Nv
dXJjZUFjdGlvbkF0dGFjaG1lbnQKKyNlbmRpZgogICAgICAgICAgICAgfHwgKGRyYWdTdGF0ZSgp
LnR5cGUgJiB+RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgPT0gRHJhZ1NvdXJjZUFjdGlvbkxp
bmspOwogICAgICAgICBkcmFnU3RhdGUoKS50eXBlID0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlv
bjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxl
ck1hYy5tbQkocmV2aXNpb24gMTgxNjk4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJh
Z0NvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDkgQEAKICNpbXBv
cnQgIkVkaXRvci5oIgogI2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCiAjaW1wb3J0ICJFbGVtZW50
LmgiCisjaW1wb3J0ICJGaWxlLmgiCiAjaW1wb3J0ICJGcmFtZVZpZXcuaCIKKyNpbXBvcnQgIkhU
TUxBdHRhY2htZW50RWxlbWVudC5oIgogI2ltcG9ydCAiTWFpbkZyYW1lLmgiCiAjaW1wb3J0ICJQ
YWdlLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCkBAIC04Nyw2ICs4OSwxNCBAQCB2b2lkIERy
YWdDb250cm9sbGVyOjpjbGVhbnVwQWZ0ZXJTeXN0ZW1ECiAgICAgICAgIGRyYWdFbmRlZCgpOwog
fQogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKK3ZvaWQgRHJhZ0NvbnRyb2xsZXI6
OmRlY2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQoRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsKQoreworICAgIGNvbnN0IEhUTUxBdHRhY2ht
ZW50RWxlbWVudCYgYXR0YWNobWVudCA9IGRvd25jYXN0PEhUTUxBdHRhY2htZW50RWxlbWVudD4o
ZWxlbWVudCk7CisgICAgbV9jbGllbnQuZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudChkYXRhVHJh
bnNmZXIucGFzdGVib2FyZCgpLm5hbWUoKSwgZWxlbWVudCwgdXJsLCBhdHRhY2htZW50LmZpbGUo
KS0+cGF0aCgpLCBlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKSk7Cit9CisjZW5kaWYKKyAgICAK
IHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNm
ZXImIGRhdGFUcmFuc2ZlciwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgbV9jbGllbnQuZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkubmFtZSgpLCBlbGVtZW50LCB1cmwsIGxhYmVsLCBl
bGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3dp
bi9EcmFnQ29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiAxODE2OTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY5LDYgKzY5LDEyIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNsZWFudXBBZnRlclN5c3RlbUQK
IHsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCit2b2lkIERyYWdDb250cm9s
bGVyOjpkZWNsYXJlQW5kV3JpdGVBdHRhY2htZW50KERhdGFUcmFuc2ZlciYsIEVsZW1lbnQmLCBj
b25zdCBVUkwmKQoreworfQorI2VuZGlmCisKIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVB
bmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgUGFzdGVi
b2FyZCYgcGFzdGVib2FyZCA9IGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTC5jcHAJKHJldmlzaW9uIDE4MTY5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMTksNCArMjExOSw5IEBAIFVSTCBV
Ukw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFMKICAgICByZXR1cm4gVVJMKFVSTCgp
LCAid2Via2l0LWZha2UtdXJsOi8vIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSArICcv
JyArIHJlbGF0aXZlUGFydCk7CiB9CiAKK1VSTCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBh
dGgoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICByZXR1cm4gVVJMKFVSTCgpLCAiZmls
ZTovLy8iICsgZmlsZVBhdGgpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAkocmV2
aXNpb24gMTgxNjk4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogICAgIFVSTChjb25zdCBVUkwmIGJhc2Us
IGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFRleHRFbmNvZGluZyYpOwogCiAgICAgc3Rh
dGljIFVSTCBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0
aWMgVVJMIGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoY29uc3QgU3RyaW5nJik7CiAKICAgICBT
dHJpbmcgc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJKHJldmlzaW9uIDE4MTY5OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjUsMTEgKzI1LDEzIEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRl
ICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNs
dWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkhUTUxBbmNob3JFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEF1ZGlvRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCkBAIC0zMTAs
NiArMzEyLDI1IEBAIEludFJlY3QgSGl0VGVzdFJlc3VsdDo6aW1hZ2VSZWN0KCkgY29uc3QKICAg
ICByZXR1cm4gbV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlckJveCgpLT5hYnNvbHV0ZUNvbnRl
bnRRdWFkKCkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCitVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVBdHRhY2htZW50VVJMKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQorICAgICAgICByZXR1cm4g
VVJMKCk7CisgICAgCisgICAgaWYgKCEobV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCkg
JiYgbV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCktPmlzQXR0YWNobWVudCgpKSkKKyAg
ICAgICAgcmV0dXJuIFVSTCgpOworICAgIAorICAgIGlmICghaXM8SFRNTEF0dGFjaG1lbnRFbGVt
ZW50PigqbV9pbm5lck5vblNoYXJlZE5vZGUpKQorICAgICAgICByZXR1cm4gVVJMKCk7CisgICAg
RmlsZSogYXR0YWNobWVudEZpbGUgPSBkb3duY2FzdDxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KCpt
X2lubmVyTm9uU2hhcmVkTm9kZSkuZmlsZSgpOworICAgIGlmICghYXR0YWNobWVudEZpbGUpCisg
ICAgICAgIHJldHVybiBVUkwoKTsKKyAgICAKKyAgICByZXR1cm4gVVJMOjpmaWxlVVJMV2l0aEZp
bGVTeXN0ZW1QYXRoKGF0dGFjaG1lbnRGaWxlLT5wYXRoKCkpOworfQorI2VuZGlmCisKIFVSTCBI
aXRUZXN0UmVzdWx0OjphYnNvbHV0ZUltYWdlVVJMKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5u
ZXJOb25TaGFyZWROb2RlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5oCShyZXZpc2lvbiAxODE2OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDkgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBhYnNvbHV0ZVBERlVSTCgpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFVSTCBhYnNvbHV0ZU1lZGlhVVJMKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgVVJMIGFic29sdXRlTGlua1VSTCgpIGNvbnN0OworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCisgICAgV0VCQ09SRV9FWFBPUlQgVVJMIGFic29sdXRlQXR0YWNobWVudFVSTCgpIGNv
bnN0OworI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRleHRDb250ZW50KCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0xpdmVMaW5rKCkgY29uc3Q7CiAgICAgYm9v
bCBpc092ZXJMaW5rKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODE3MDkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBA
QAorMjAxNS0wMy0xOCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIDxhdHRhY2htZW50PiBzaG91bGQgcHV0IFVSTHMgb24gdGhlIHBhc3RlYm9hcmQgc28gdGhh
dCBGaW5kZXIgY2FuIGFjY2VwdCBkcm9wcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MjgwMQorICAgICAgICByZGFyOi8vcHJvYmxlbS8xOTk4MjUy
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyBhbGwgdGhlIG5lY2Vzc2FyeSBzdXBwb3J0IHRvIHdyaXRlIGF0dGFjaG1lbnQg
ZWxlbWVudHMgaW50bworICAgICAgICB0aGUgcGFzdGVib2FyZCwgaW5jbHVkaW5nIHRoZSBwcm9t
aXNlZCB0eXBlIGluIFdLMi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bToKKyAgICAgICAgKC1bV0tWaWV3IF9zZXRQcm9taXNlZERhdGFGb3JJbWFnZTp3aXRoRmlsZU5h
bWU6d2l0aEV4dGVuc2lvbjp3aXRoVGl0bGU6d2l0aFVSTDp3aXRoVmlzaWJsZVVSTDp3aXRoQXJj
aGl2ZTpmb3JQYXN0ZWJvYXJkOl0pOgorICAgICAgICAoLVtXS1ZpZXcgX3NldFByb21pc2VkRGF0
YUZvckF0dGFjaG1lbnQ6d2l0aEV4dGVuc2lvbjp3aXRoVGl0bGU6d2l0aFVSTDp3aXRoVmlzaWJs
ZVVSTDpmb3JQYXN0ZWJvYXJkOl0pOgorICAgICAgICAoLVtXS1ZpZXcgbmFtZXNPZlByb21pc2Vk
RmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjpdKToKKyAgICAgICAgKC1bV0tWaWV3IF9zZXRQcm9t
aXNlZERhdGE6d2l0aEZpbGVOYW1lOndpdGhFeHRlbnNpb246d2l0aFRpdGxlOndpdGhVUkw6d2l0
aFZpc2libGVVUkw6d2l0aEFyY2hpdmU6Zm9yUGFzdGVib2FyZDpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpz
ZXRQcm9taXNlZERhdGFGb3JBdHRhY2htZW50KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OnNldFByb21pc2VkRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0
UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNl
dFByb21pc2VkRGF0YUZvckF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldFByb21pc2VkRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJh
Z0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisKIDIwMTUtMDMtMTggIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgV0tDb250
ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAkocmV2aXNpb24gMTgxNjk4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDggKzE5MSwxMyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCB2b2lkIHNldFByb21pc2Vk
RGF0YShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAorICAgIHZpcnR1YWwgdm9pZCBz
ZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXNz
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgdmlzaWJsZVVybCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGFy
Y2hpdmVCdWZmZXIpID0gMDsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHZp
cnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVXJsKSA9
IDA7CisKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxODE2OTgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2
OSw4ICs3NjksMTEgQEAgcHVibGljOgogICAgIHZvaWQgZHJhZ0VuZGVkKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCB1aW50NjRfdCBvcGVyYXRpb24pOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZvaWQgc2V0RHJhZ0ltYWdlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlv
biwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZUhhbmRsZSwgYm9vbCBp
c0xpbmtEcmFnKTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIHVpbnQ2
NF90IGltYWdlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRl
bnNpb24sCisgICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIHVp
bnQ2NF90IGltYWdlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgY29uc3QgU2hhcmVk
TWVtb3J5OjpIYW5kbGUmIGFyY2hpdmVIYW5kbGUsIHVpbnQ2NF90IGFyY2hpdmVTaXplKTsKKyNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9y
QXR0YWNobWVudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCk7CisjZW5kaWYKICNlbmRp
ZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpE
cmFnRGF0YSYsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2UpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAxODE2OTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDEwIEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBTZXREcmFnSW1hZ2UoV2ViQ29yZTo6SW50UG9pbnQg
Y2xpZW50UG9zaXRpb24sIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgZHJhZ0ltYWdl
LCBib29sIGxpbmtEcmFnKQotICAgIFNldFByb21pc2VkRGF0YShTdHJpbmcgcGFzdGVib2FyZE5h
bWUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGlt
YWdlU2l6ZSwgU3RyaW5nIGZpbGVuYW1lLCBTdHJpbmcgZXh0ZW5zaW9uLCBTdHJpbmcgdGl0bGUs
IFN0cmluZyB1cmwsIFN0cmluZyB2aXNpYmxlVVJMLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFu
ZGxlIGFyY2hpdmVIYW5kbGUsIHVpbnQ2NF90IGFyY2hpdmVTaXplKQorICAgIFNldFByb21pc2Vk
RGF0YUZvckltYWdlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OkhhbmRsZSBpbWFnZUhhbmRsZSwgdWludDY0X3QgaW1hZ2VTaXplLCBTdHJpbmcgZmlsZW5hbWUs
IFN0cmluZyBleHRlbnNpb24sIFN0cmluZyB0aXRsZSwgU3RyaW5nIHVybCwgU3RyaW5nIHZpc2li
bGVVUkwsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZSwgdWludDY0
X3QgYXJjaGl2ZVNpemUpCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBTZXRQ
cm9taXNlZERhdGFGb3JBdHRhY2htZW50KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIGZp
bGVuYW1lLCBTdHJpbmcgZXh0ZW5zaW9uLCBTdHJpbmcgdGl0bGUsIFN0cmluZyB1cmwsIFN0cmlu
ZyB2aXNpYmxlVVJMKQorI2VuZGlmCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspICYmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAgICAgU3RhcnREcmFnKFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRh
LCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGRyYWdJbWFnZSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDE4MTY5OCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTIxMyw3ICsxMjEzLDcgQEAgLSAodm9pZClfc2V0TW91c2VEb3duRXZlbnQ6KE5T
RXZlbnQgKilldgogICAgICAgICAgICAgTE9HKFRleHRJbnB1dCwgIiVzIHdhcyBoYW5kbGVkIGJ5
IHRleHQgaW5wdXQgY29udGV4dCIsIFN0cmluZygjU2VsZWN0b3IpLnN1YnN0cmluZygwLCBTdHJp
bmcoI1NlbGVjdG9yKS5maW5kKCJJbnRlcm5hbCIpKS5hc2NpaSgpLmRhdGEoKSk7IFwKICAgICAg
ICAgICAgIHJldHVybjsgXAogICAgICAgICB9IFwKLSAgICAgICAgaWYgKFtOU01lbnUgbWVudVR5
cGVGb3JFdmVudDp0aGVFdmVudF0gPT0gTlNNZW51VHlwZUFjdGlvbk1lbnUpIHsgXAorICAgICAg
ICBpZiAoW05TTWVudSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG1lbnVUeXBlRm9yRXZl
bnQ6KV0gJiYgW05TTWVudSBtZW51VHlwZUZvckV2ZW50OnRoZUV2ZW50XSA9PSBOU01lbnVUeXBl
QWN0aW9uTWVudSkgeyBcCiAgICAgICAgICAgICBbc3VwZXIgU2VsZWN0b3I6dGhlRXZlbnRdOyBc
CiAgICAgICAgICAgICByZXR1cm47IFwKICAgICAgICAgfSBcCkBAIC0zMzc5LDMxICszMzc5LDU0
IEBAIHN0YXRpYyBib29sIG1hdGNoZXNFeHRlbnNpb25PckVxdWl2YWxlbnQKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYmIGhhc0Nhc2VJbnNlbnNpdGl2ZVN1ZmZpeChmaWxlbmFtZSwgQCIuanBnIikpOwogfQogCi0t
ICh2b2lkKV9zZXRQcm9taXNlZERhdGE6KFdlYkNvcmU6OkltYWdlICopaW1hZ2Ugd2l0aEZpbGVO
YW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIHdpdGhFeHRlbnNpb246KE5TU3RyaW5nICopZXh0ZW5z
aW9uIHdpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRsZSB3aXRoVVJMOihOU1N0cmluZyAqKXVybCB3
aXRoVmlzaWJsZVVSTDooTlNTdHJpbmcgKil2aXNpYmxlVXJsIHdpdGhBcmNoaXZlOihXZWJDb3Jl
OjpTaGFyZWRCdWZmZXIqKSBhcmNoaXZlQnVmZmVyIGZvclBhc3RlYm9hcmQ6KE5TU3RyaW5nICop
cGFzdGVib2FyZE5hbWUKLQorLSAodm9pZClfc2V0RmlsZUFuZFVSTFR5cGVzOihOU1N0cmluZyAq
KWZpbGVuYW1lIHdpdGhFeHRlbnNpb246KE5TU3RyaW5nICopZXh0ZW5zaW9uIHdpdGhUaXRsZToo
TlNTdHJpbmcgKil0aXRsZSB3aXRoVVJMOihOU1N0cmluZyAqKXVybCB3aXRoVmlzaWJsZVVSTDoo
TlNTdHJpbmcgKil2aXNpYmxlVXJsIGZvclBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3Rl
Ym9hcmQKIHsKLSAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBh
c3RlYm9hcmRXaXRoTmFtZTpwYXN0ZWJvYXJkTmFtZV07Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhP
YmplY3RzOk5TRmlsZXNQcm9taXNlUGJvYXJkVHlwZSwgbmlsXSk7Ci0gICAgCi0gICAgW3R5cGVz
IGFkZE9iamVjdHNGcm9tQXJyYXk6YXJjaGl2ZUJ1ZmZlciA/IFBhc3RlYm9hcmRUeXBlczo6Zm9y
SW1hZ2VzV2l0aEFyY2hpdmUoKSA6IFBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzKCldOwotICAg
IFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczp0eXBlcy5nZXQoKSBvd25lcjpzZWxmXTsKICAgICBp
ZiAoIW1hdGNoZXNFeHRlbnNpb25PckVxdWl2YWxlbnQoZmlsZW5hbWUsIGV4dGVuc2lvbikpCiAg
ICAgICAgIGZpbGVuYW1lID0gW1tmaWxlbmFtZSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpAIi4i
XSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpleHRlbnNpb25dOwotCisgICAgCiAgICAgW3Bhc3Rl
Ym9hcmQgc2V0U3RyaW5nOnZpc2libGVVcmwgZm9yVHlwZTpOU1N0cmluZ1Bib2FyZFR5cGVdOwog
ICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzp2aXNpYmxlVXJsIGZvclR5cGU6UGFzdGVib2FyZFR5
cGVzOjpXZWJVUkxQYm9hcmRUeXBlXTsKICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6dGl0bGUg
Zm9yVHlwZTpQYXN0ZWJvYXJkVHlwZXM6OldlYlVSTE5hbWVQYm9hcmRUeXBlXTsKICAgICBbcGFz
dGVib2FyZCBzZXRQcm9wZXJ0eUxpc3Q6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3Q6dmlzaWJsZVVybF0sIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDp0
aXRsZV0sIG5pbF0gZm9yVHlwZTpQYXN0ZWJvYXJkVHlwZXM6OldlYlVSTHNXaXRoVGl0bGVzUGJv
YXJkVHlwZV07CiAgICAgW3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0OltOU0FycmF5IGFycmF5
V2l0aE9iamVjdDpleHRlbnNpb25dIGZvclR5cGU6TlNGaWxlc1Byb21pc2VQYm9hcmRUeXBlXTsK
KyAgICBfZGF0YS0+X3Byb21pc2VkRmlsZW5hbWUgPSBmaWxlbmFtZTsKKyAgICBfZGF0YS0+X3By
b21pc2VkVVJMID0gdXJsOworfQorCistICh2b2lkKV9zZXRQcm9taXNlZERhdGFGb3JJbWFnZToo
V2ViQ29yZTo6SW1hZ2UgKilpbWFnZSB3aXRoRmlsZU5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUg
d2l0aEV4dGVuc2lvbjooTlNTdHJpbmcgKilleHRlbnNpb24gd2l0aFRpdGxlOihOU1N0cmluZyAq
KXRpdGxlIHdpdGhVUkw6KE5TU3RyaW5nICopdXJsIHdpdGhWaXNpYmxlVVJMOihOU1N0cmluZyAq
KXZpc2libGVVcmwgd2l0aEFyY2hpdmU6KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopIGFyY2hpdmVC
dWZmZXIgZm9yUGFzdGVib2FyZDooTlNTdHJpbmcgKilwYXN0ZWJvYXJkTmFtZQorCit7CisgICAg
TlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aE5h
bWU6cGFzdGVib2FyZE5hbWVdOworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdHlwZXMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpOU0ZpbGVz
UHJvbWlzZVBib2FyZFR5cGUsIG5pbF0pOworICAgIAorICAgIFt0eXBlcyBhZGRPYmplY3RzRnJv
bUFycmF5OmFyY2hpdmVCdWZmZXIgPyBQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlc1dpdGhBcmNo
aXZlKCkgOiBQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlcygpXTsKKyAgICBbcGFzdGVib2FyZCBk
ZWNsYXJlVHlwZXM6dHlwZXMuZ2V0KCkgb3duZXI6c2VsZl07CisgICAgW3NlbGYgX3NldEZpbGVB
bmRVUkxUeXBlczpmaWxlbmFtZSB3aXRoRXh0ZW5zaW9uOmV4dGVuc2lvbiB3aXRoVGl0bGU6dGl0
bGUgd2l0aFVSTDp1cmwgd2l0aFZpc2libGVVUkw6dmlzaWJsZVVybCBmb3JQYXN0ZWJvYXJkOnBh
c3RlYm9hcmRdOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpCiAgICAgICAgIFtwYXN0ZWJvYXJk
IHNldERhdGE6YXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpQYXN0
ZWJvYXJkVHlwZXM6OldlYkFyY2hpdmVQYm9hcmRUeXBlXTsKIAogICAgIF9kYXRhLT5fcHJvbWlz
ZWRJbWFnZSA9IGltYWdlOwotICAgIF9kYXRhLT5fcHJvbWlzZWRGaWxlbmFtZSA9IGZpbGVuYW1l
OwotICAgIF9kYXRhLT5fcHJvbWlzZWRVUkwgPSB1cmw7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorLSAodm9pZClfc2V0UHJvbWlzZWREYXRhRm9yQXR0YWNobWVudDooTlNT
dHJpbmcgKilmaWxlbmFtZSB3aXRoRXh0ZW5zaW9uOihOU1N0cmluZyAqKWV4dGVuc2lvbiB3aXRo
VGl0bGU6KE5TU3RyaW5nICopdGl0bGUgd2l0aFVSTDooTlNTdHJpbmcgKil1cmwgd2l0aFZpc2li
bGVVUkw6KE5TU3RyaW5nICopdmlzaWJsZVVybCBmb3JQYXN0ZWJvYXJkOihOU1N0cmluZyAqKXBh
c3RlYm9hcmROYW1lCisKK3sKKyAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0
ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpwYXN0ZWJvYXJkTmFtZV07CisgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhPYmplY3RzOk5TRmlsZXNQcm9taXNlUGJvYXJkVHlwZSwgbmlsXSk7CisgICAgW3R5
cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6UGFzdGVib2FyZFR5cGVzOjpmb3JVUkwoKV07CisgICAg
W3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOnR5cGVzLmdldCgpIG93bmVyOnNlbGZdOworICAgIFtz
ZWxmIF9zZXRGaWxlQW5kVVJMVHlwZXM6ZmlsZW5hbWUgd2l0aEV4dGVuc2lvbjpleHRlbnNpb24g
d2l0aFRpdGxlOnRpdGxlIHdpdGhVUkw6dXJsIHdpdGhWaXNpYmxlVVJMOnZpc2libGVVcmwgZm9y
UGFzdGVib2FyZDpwYXN0ZWJvYXJkXTsKKworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4g
cGF0aHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBbcGF0
aHMgYWRkT2JqZWN0OnRpdGxlXTsKKyAgICBbcGFzdGVib2FyZCBzZXRQcm9wZXJ0eUxpc3Q6cGF0
aHMuZ2V0KCkgZm9yVHlwZTpOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdOworCisgICAgX2RhdGEtPl9w
cm9taXNlZEltYWdlID0gbnVsbHB0cjsKK30KKyNlbmRpZgorCiAtICh2b2lkKXBhc3RlYm9hcmRD
aGFuZ2VkT3duZXI6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQKIHsKICAgICBfZGF0YS0+X3By
b21pc2VkSW1hZ2UgPSAwOwpAQCAtMzQ2NywxMCArMzQ5MCwxMiBAQCAtIChOU0FycmF5ICopbmFt
ZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkCiAgICAgaWYgKF9kYXRhLT5fcHJvbWlzZWRJbWFnZSkg
ewogICAgICAgICBkYXRhID0gX2RhdGEtPl9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2Nd
IGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7Ci0gICAgICAgIFt3cmFw
cGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOl9kYXRhLT5fcHJvbWlzZWRGaWxlbmFtZV07Ci0gICAg
fQorICAgIH0gZWxzZQorICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOl9kYXRhLT5fcHJvbWlzZWRV
UkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CiAg
ICAgCi0gICAgaWYgKCF3cmFwcGVyKSB7CisgICAgaWYgKHdyYXBwZXIpCisgICAgICAgIFt3cmFw
cGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOl9kYXRhLT5fcHJvbWlzZWRGaWxlbmFtZV07CisgICAg
ZWxzZSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBpbWFnZSBmaWxlLiIp
OwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAkocmV2aXNpb24gMTgxNjk4KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAkod29y
a2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSwxMCBAQCBAaW50ZXJmYWNlIFdLVmlldyAoKQogLSAo
dm9pZClfc2V0UGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlOihXZWJLaXQ6OlBsdWdpbkNvbXBs
ZXhUZXh0SW5wdXRTdGF0ZSlwbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUgcGx1Z2luQ29tcGxl
eFRleHRJbnB1dElkZW50aWZpZXI6KHVpbnQ2NF90KXBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVu
dGlmaWVyOwogCiAtICh2b2lkKV9zZXREcmFnSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBhdDooTlNQ
b2ludCljbGllbnRQb2ludCBsaW5rRHJhZzooQk9PTClsaW5rRHJhZzsKLS0gKHZvaWQpX3NldFBy
b21pc2VkRGF0YTooV2ViQ29yZTo6SW1hZ2UgKilpbWFnZSB3aXRoRmlsZU5hbWU6KE5TU3RyaW5n
ICopZmlsZW5hbWUgd2l0aEV4dGVuc2lvbjooTlNTdHJpbmcgKilleHRlbnNpb24gd2l0aFRpdGxl
OihOU1N0cmluZyAqKXRpdGxlIHdpdGhVUkw6KE5TU3RyaW5nICopdXJsIHdpdGhWaXNpYmxlVVJM
OihOU1N0cmluZyAqKXZpc2libGVVcmwgd2l0aEFyY2hpdmU6KFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciopIGFyY2hpdmVCdWZmZXIgZm9yUGFzdGVib2FyZDooTlNTdHJpbmcgKilwYXN0ZWJvYXJkTmFt
ZTsKKy0gKHZvaWQpX3NldFByb21pc2VkRGF0YUZvckltYWdlOihXZWJDb3JlOjpJbWFnZSAqKWlt
YWdlIHdpdGhGaWxlTmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSB3aXRoRXh0ZW5zaW9uOihOU1N0
cmluZyAqKWV4dGVuc2lvbiB3aXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgd2l0aFVSTDooTlNT
dHJpbmcgKil1cmwgd2l0aFZpc2libGVVUkw6KE5TU3RyaW5nICopdmlzaWJsZVVybCB3aXRoQXJj
aGl2ZTooV2ViQ29yZTo6U2hhcmVkQnVmZmVyKikgYXJjaGl2ZUJ1ZmZlciBmb3JQYXN0ZWJvYXJk
OihOU1N0cmluZyAqKXBhc3RlYm9hcmROYW1lOworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCistICh2b2lkKV9zZXRQcm9taXNlZERhdGFGb3JBdHRhY2htZW50OihOU1N0cmluZyAqKWZp
bGVuYW1lIHdpdGhFeHRlbnNpb246KE5TU3RyaW5nICopZXh0ZW5zaW9uIHdpdGhUaXRsZTooTlNT
dHJpbmcgKil0aXRsZSB3aXRoVVJMOihOU1N0cmluZyAqKXVybCB3aXRoVmlzaWJsZVVSTDooTlNT
dHJpbmcgKil2aXNpYmxlVXJsIGZvclBhc3RlYm9hcmQ6KE5TU3RyaW5nICopcGFzdGVib2FyZE5h
bWU7CisjZW5kaWYKIC0gKHZvaWQpX3VwZGF0ZVNlY3VyZUlucHV0U3RhdGU7CiAtICh2b2lkKV9y
ZXNldFNlY3VyZUlucHV0U3RhdGU7CiAtICh2b2lkKV9ub3RpZnlJbnB1dENvbnRleHRBYm91dERp
c2NhcmRlZENvbXBvc2l0aW9uOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gMTgxNjk4KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw4ICs5
NCwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlVW5kb1JlZG8oV2ViUGFn
ZVByb3h5OjpVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZXhlY3V0ZVNh
dmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3Rvcikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldERyYWdJbWFnZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xp
ZW50UG9zaXRpb24sIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UsIGJvb2wg
aXNMaW5rRHJhZykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFByb21pc2VkRGF0YShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAorICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9t
aXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAogICAgICAg
ICBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVXJsLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcikgb3ZlcnJpZGU7CisjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvbWlzZWREYXRh
Rm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVybCkgb3ZlcnJpZGU7Cisj
ZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlv
bigpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsLm1tCShyZXZpc2lvbiAxODE2OTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MDcsMTMgKzQw
NywyMCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXREcmFnSW1hZ2UoY29uc3QgCiAgICAgW21f
d2tWaWV3IF9zZXREcmFnSW1hZ2U6ZHJhZ05TSW1hZ2UuZ2V0KCkgYXQ6Y2xpZW50UG9zaXRpb24g
bGlua0RyYWc6aXNMaW5rRHJhZ107CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21p
c2VkRGF0YShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB2aXNpYmxlVXJsLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZl
cikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVV
cmwsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyKQogewogICAgIFJlZlB0
cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgaW1hZ2UtPnNldERh
dGEoaW1hZ2VCdWZmZXIuZ2V0KCksIHRydWUpOwotICAgIFttX3drVmlldyBfc2V0UHJvbWlzZWRE
YXRhOmltYWdlLmdldCgpIHdpdGhGaWxlTmFtZTpmaWxlbmFtZSB3aXRoRXh0ZW5zaW9uOmV4dGVu
c2lvbiB3aXRoVGl0bGU6dGl0bGUgd2l0aFVSTDp1cmwgd2l0aFZpc2libGVVUkw6dmlzaWJsZVVy
bCB3aXRoQXJjaGl2ZTphcmNoaXZlQnVmZmVyLmdldCgpIGZvclBhc3RlYm9hcmQ6cGFzdGVib2Fy
ZE5hbWVdOworICAgIFttX3drVmlldyBfc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2U6aW1hZ2UuZ2V0
KCkgd2l0aEZpbGVOYW1lOmZpbGVuYW1lIHdpdGhFeHRlbnNpb246ZXh0ZW5zaW9uIHdpdGhUaXRs
ZTp0aXRsZSB3aXRoVVJMOnVybCB3aXRoVmlzaWJsZVVSTDp2aXNpYmxlVXJsIHdpdGhBcmNoaXZl
OmFyY2hpdmVCdWZmZXIuZ2V0KCkgZm9yUGFzdGVib2FyZDpwYXN0ZWJvYXJkTmFtZV07CiB9CiAK
KyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0
UHJvbWlzZWREYXRhRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVybCkK
K3sKKyAgICBbbV93a1ZpZXcgX3NldFByb21pc2VkRGF0YUZvckF0dGFjaG1lbnQ6ZmlsZW5hbWUg
d2l0aEV4dGVuc2lvbjpleHRlbnNpb24gd2l0aFRpdGxlOnRpdGxlIHdpdGhVUkw6dXJsIHdpdGhW
aXNpYmxlVVJMOnZpc2libGVVcmwgZm9yUGFzdGVib2FyZDpwYXN0ZWJvYXJkTmFtZV07Cit9Cisj
ZW5kaWYKKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6dXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpCiB7
CiAgICAgW21fd2tWaWV3IF91cGRhdGVTZWN1cmVJbnB1dFN0YXRlXTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCShyZXZpc2lvbiAx
ODE2OTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQCAtICh2b2lkKXNwZWFrU3RyaW5nOihO
U1N0cmluZyAqKXN0cmluZzsKIEBlbmQKIAogI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlv
bikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgcHJvY2VzcygpLmNvbm5lY3Rpb24oKSkK
KyNkZWZpbmUgTUVTU0FHRV9DSEVDS19VUkwodXJsKSBNRVNTQUdFX0NIRUNLX0JBU0UobV9wcm9j
ZXNzLT5jaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3ModXJsKSwgbV9wcm9jZXNzLT5jb25u
ZWN0aW9uKCkpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00MDcsOSArNDA4LDEx
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmFnSW1hZ2UoY29uc3QgV2UKICAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU3RhcnREcmFnKCksIG1fcGFnZUlEKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIHVpbnQ2
NF90IGltYWdlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRl
bnNpb24sCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGltYWdl
SGFuZGxlLCB1aW50NjRfdCBpbWFnZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNp
YmxlVVJMLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgYXJjaGl2ZUhhbmRsZSwgdWludDY0
X3QgYXJjaGl2ZVNpemUpCiB7CisgICAgTUVTU0FHRV9DSEVDS19VUkwodXJsKTsKKyAgICBNRVNT
QUdFX0NIRUNLX1VSTCh2aXNpYmxlVVJMKTsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFy
ZWRNZW1vcnlJbWFnZSA9IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKGltYWdlSGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlJlYWRPbmx5KTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRN
ZW1vcnlJbWFnZS0+ZGF0YSgpKSwgaW1hZ2VTaXplKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBhcmNoaXZlQnVmZmVyOwpAQCAtNDE4LDggKzQyMSwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0UHJvbWlzZWREYXRhKGNvbnN0CiAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJl
ZE1lbW9yeUFyY2hpdmUgPSBTaGFyZWRNZW1vcnk6OmNyZWF0ZShhcmNoaXZlSGFuZGxlLCBTaGFy
ZWRNZW1vcnk6OlJlYWRPbmx5KTs7CiAgICAgICAgIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5QXJjaGl2
ZS0+ZGF0YSgpKSwgYXJjaGl2ZVNpemUpOwogICAgIH0KLSAgICBtX3BhZ2VDbGllbnQuc2V0UHJv
bWlzZWREYXRhKHBhc3RlYm9hcmROYW1lLCBpbWFnZUJ1ZmZlciwgZmlsZW5hbWUsIGV4dGVuc2lv
biwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgYXJjaGl2ZUJ1ZmZlcik7CisgICAgbV9wYWdlQ2xp
ZW50LnNldFByb21pc2VkRGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBpbWFnZUJ1ZmZlciwg
ZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgYXJjaGl2ZUJ1ZmZl
cik7CiB9CisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQordm9pZCBXZWJQYWdlUHJv
eHk6OnNldFByb21pc2VkRGF0YUZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2li
bGVVUkwpCit7CisgICAgTUVTU0FHRV9DSEVDS19VUkwodXJsKTsKKyAgICBNRVNTQUdFX0NIRUNL
X1VSTCh2aXNpYmxlVVJMKTsKKyAgICBtX3BhZ2VDbGllbnQuc2V0UHJvbWlzZWREYXRhRm9yQXR0
YWNobWVudChwYXN0ZWJvYXJkTmFtZSwgZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwg
dmlzaWJsZVVSTCk7Cit9CisjZW5kaWYKICNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVy
Zm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
IHBvaW50KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgJKHJldmlzaW9uIDE4MTY5OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSw2ICs1MSw5IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2aXJ0dWFsIHZvaWQgZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgdmlydHVhbCB2b2lkIGRlY2xhcmVBbmRXcml0ZUF0dGFj
aG1lbnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6RWxlbWVudCYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6RnJhbWUqKSBv
dmVycmlkZTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhZ0NvbnRyb2xs
ZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbQkocmV2aXNpb24gMTgxNjk4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTcs
NiArOTcsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkNhY2hlZEltYWdlKiBjYWNoZWRJbWFnZQogICAg
IHJldHVybiBpbWFnZTsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCit2b2lk
IFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcGF0aCwgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQoreworICAgIEFTU0VSVChwYXN0ZWJv
YXJkTmFtZSA9PSBTdHJpbmcoTlNEcmFnUGJvYXJkKSk7CisgICAgCisgICAgTlNVUkwqIG5zVVJM
ID0gKE5TVVJMICopdXJsOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTZXRQcm9taXNlZERhdGFGb3JBdHRhY2htZW50KHBhc3RlYm9hcmROYW1lLCBTdHJpbmcobnNV
UkwubGFzdFBhdGhDb21wb25lbnQpLCBTdHJpbmcobnNVUkwucGF0aEV4dGVuc2lvbiksIHBhdGgs
IFN0cmluZyhuc1VSTC5hYnNvbHV0ZVN0cmluZyksIHVzZXJWaXNpYmxlU3RyaW5nKG5zVVJMKSkp
OworfQorI2VuZGlmCisKIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0lt
YWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGcmFtZSopCiB7CiAgICAgQVNTRVJUKHBh
c3RlYm9hcmROYW1lID09IFN0cmluZyhOU0RyYWdQYm9hcmQpKTsKQEAgLTE0Myw3ICsxNTMsNyBA
QCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJCiAgICAgICAgIG1lbWNw
eShhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCksIGFyY2hpdmVCdWZmZXItPmRhdGEo
KSwgYXJjaGl2ZVNpemUpOwogICAgICAgICBhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVh
dGVIYW5kbGUoYXJjaGl2ZUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpSZWFkT25seSk7CiAgICAgfQot
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRQcm9taXNlZERhdGEo
cGFzdGVib2FyZE5hbWUsIGltYWdlSGFuZGxlLCBpbWFnZVNpemUsIFN0cmluZyhbcmVzcG9uc2Ug
c3VnZ2VzdGVkRmlsZW5hbWVdKSwgZXh0ZW5zaW9uLCB0aXRsZSwgU3RyaW5nKFtbcmVzcG9uc2Ug
VVJMXSBhYnNvbHV0ZVN0cmluZ10pLCB1c2VyVmlzaWJsZVN0cmluZygoTlNVUkwgKil1cmwpLCBh
cmNoaXZlSGFuZGxlLCBhcmNoaXZlU2l6ZSkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTZXRQcm9taXNlZERhdGFGb3JJbWFnZShwYXN0ZWJvYXJkTmFtZSwgaW1h
Z2VIYW5kbGUsIGltYWdlU2l6ZSwgU3RyaW5nKFtyZXNwb25zZSBzdWdnZXN0ZWRGaWxlbmFtZV0p
LCBleHRlbnNpb24sIHRpdGxlLCBTdHJpbmcoW1tyZXNwb25zZSBVUkxdIGFic29sdXRlU3RyaW5n
XSksIHVzZXJWaXNpYmxlU3RyaW5nKChOU1VSTCAqKXVybCksIGFyY2hpdmVIYW5kbGUsIGFyY2hp
dmVTaXplKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTgxNzA5KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDMtMTggIEVucmljYSBDYXN1Y2NpICA8
ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAgICA8YXR0YWNobWVudD4gc2hvdWxkIHB1dCBVUkxz
IG9uIHRoZSBwYXN0ZWJvYXJkIHNvIHRoYXQgRmluZGVyIGNhbiBhY2NlcHQgZHJvcHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI4MDEKKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vMTk5ODI1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYWxsIHRoZSBuZWNlc3Nhcnkgc3Vw
cG9ydCB0byB3cml0ZSBhdHRhY2htZW50IGVsZW1lbnRzIGludG8KKyAgICAgICAgdGhlIHBhc3Rl
Ym9hcmQsIGluY2x1ZGluZyB0aGUgcHJvbWlzZWQgdHlwZSBpbiBXSzEuCisKKyAgICAgICAgKiBN
aXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNQYXN0ZWJvYXJkIF93
ZWJfZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlRm9yRWxlbWVudDpVUkw6dGl0bGU6YXJjaGl2ZTpz
b3VyY2U6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06CisgICAgICAgIChXZWJEcmFn
Q2xpZW50OjpkZWNsYXJlQW5kV3JpdGVBdHRhY2htZW50KToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBuYW1lc09mUHJvbWlzZWRGaWxl
c0Ryb3BwZWRBdERlc3RpbmF0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVUlEZWxlZ2F0
ZS5oOgorCiAyMDE1LTAzLTE3ICBDb25yYWQgU2h1bHR6ICA8Y29ucmFkX3NodWx0ekBhcHBsZS5j
b20+CiAKICAgICAgICAgSWdub3JlIHNvbWUgZGVwcmVjYXRpb24gd2FybmluZ3MKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCShyZXZp
c2lvbiAxODE2OTgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4
dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L01JTUVUeXBlUmVnaXN0cnkuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyQXR0YWNobWVudC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJJbWFnZS5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5
L0RPTUV4dGVuc2lvbnMuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01Qcml2YXRlLmg+CkBA
IC0yNzEsMjEgKzI3MiwzMCBAQCAtIChpZClfd2ViX2RlY2xhcmVBbmRXcml0ZURyYWdJbWFnZUZv
ckVsCiAgICAgQVNTRVJUKHNlbGYgPT0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aE5hbWU6
TlNEcmFnUGJvYXJkXSk7CiAKICAgICBOU1N0cmluZyAqZXh0ZW5zaW9uID0gQCIiOworICAgIFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4gdHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czpOU0ZpbGVzUHJvbWlzZVBib2FyZFR5cGUsIG5pbF0pOwog
ICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGNvcmUoZWxlbWVudCktPnJlbmRlcmVyKCkpIHsKICAg
ICAgICAgaWYgKGlzPFJlbmRlckltYWdlPigqcmVuZGVyZXIpKSB7CiAgICAgICAgICAgICBpZiAo
Q2FjaGVkSW1hZ2UqIGltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikuY2Fj
aGVkSW1hZ2UoKSkgewogICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IGltYWdlLT5pbWFnZSgp
LT5maWxlbmFtZUV4dGVuc2lvbigpOwogICAgICAgICAgICAgICAgIGlmICghW2V4dGVuc2lvbiBs
ZW5ndGhdKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
ICAgICBbdHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpbTlNQYXN0ZWJvYXJkIF93ZWJfd3JpdGFi
bGVUeXBlc0ZvckltYWdlSW5jbHVkaW5nQXJjaGl2ZTooYXJjaGl2ZSAhPSBuaWwpXV07CisgICAg
ICAgICAgICAgICAgW3NlbGYgZGVjbGFyZVR5cGVzOnR5cGVzLmdldCgpIG93bmVyOnNvdXJjZV07
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQorICAgICAgICBlbHNlIGlmIChpczxSZW5kZXJBdHRhY2htZW50PigqcmVuZGVyZXIpKSB7Cisg
ICAgICAgICAgICBleHRlbnNpb24gPSBVUkwucGF0aEV4dGVuc2lvbjsKKyAgICAgICAgICAgIFt0
eXBlcyBhZGRPYmplY3RzRnJvbUFycmF5OltOU1Bhc3RlYm9hcmQgX3dlYl9kcmFnVHlwZXNGb3JV
UkxdXTsKKyAgICAgICAgICAgIFtzZWxmIGRlY2xhcmVUeXBlczp0eXBlcy5nZXQoKSBvd25lcjpz
b3VyY2VdOworICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBwYXRocyA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgICAgICAgICAgW3BhdGhz
LmdldCgpIGFkZE9iamVjdDp0aXRsZV07CisgICAgICAgICAgICBbc2VsZiBzZXRQcm9wZXJ0eUxp
c3Q6cGF0aHMuZ2V0KCkgZm9yVHlwZTpOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdOworICAgICAgICB9
CisjZW5kaWYKICAgICB9CiAKLSAgICBOU011dGFibGVBcnJheSAqdHlwZXMgPSBbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNGaWxlc1Byb21pc2VQYm9hcmRUeXBlLCBu
aWxdOwotICAgIFt0eXBlcyBhZGRPYmplY3RzRnJvbUFycmF5OltOU1Bhc3RlYm9hcmQgX3dlYl93
cml0YWJsZVR5cGVzRm9ySW1hZ2VJbmNsdWRpbmdBcmNoaXZlOihhcmNoaXZlICE9IG5pbCldXTsK
LSAgICBbc2VsZiBkZWNsYXJlVHlwZXM6dHlwZXMgb3duZXI6c291cmNlXTsgICAgCi0gICAgW3Nl
bGYgX3dlYl93cml0ZUltYWdlOm5pbCBlbGVtZW50OmVsZW1lbnQgVVJMOlVSTCB0aXRsZTp0aXRs
ZSBhcmNoaXZlOmFyY2hpdmUgdHlwZXM6dHlwZXMgc291cmNlOnNvdXJjZV07Ci0gICAgW3R5cGVz
IHJlbGVhc2VdOworICAgIFtzZWxmIF93ZWJfd3JpdGVJbWFnZTpuaWwgZWxlbWVudDplbGVtZW50
IFVSTDpVUkwgdGl0bGU6dGl0bGUgYXJjaGl2ZTphcmNoaXZlIHR5cGVzOnR5cGVzLmdldCgpIHNv
dXJjZTpzb3VyY2VdOwogCiAgICAgTlNBcnJheSAqZXh0ZW5zaW9ucyA9IFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzOmV4dGVuc2lvbiwgbmlsXTsKICAgICBbc2VsZiBzZXRQcm9wZXJ0
eUxpc3Q6ZXh0ZW5zaW9ucyBmb3JUeXBlOk5TRmlsZXNQcm9taXNlUGJvYXJkVHlwZV07CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5o
CShyZXZpc2lvbiAxODE2OTgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFz
a0ZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2ludCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSW1hZ2VSZWYsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBkcmFnUG9zLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZXZl
bnRQb3MsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJiwgYm9vbCBsaW5r
RHJhZykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFn
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsK
KyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHZpcnR1YWwgdm9pZCBkZWNsYXJl
QW5kV3JpdGVBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6
OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdlYkNv
cmU6OkZyYW1lKikgb3ZlcnJpZGU7CisjZW5kaWYKIHByaXZhdGU6CiAgICAgV2ViVmlldyogbV93
ZWJWaWV3OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5tbQkocmV2aXNpb24gMTgxNjk4KQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI3
LDExICsxMjcsMTcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlUgog
dm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKIHsKICAgICBBU1NFUlQocGFz
dGVib2FyZE5hbWUpOwotICAgIFdlYkhUTUxWaWV3ICpzb3VyY2UgPSBnZXRUb3BIVE1MVmlldyhm
cmFtZSk7Ci0gICAgV2ViQXJjaGl2ZSAqYXJjaGl2ZSA9IFtraXQoJmVsZW1lbnQpIHdlYkFyY2hp
dmVdOworICAgIFtbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpwYXN0ZWJvYXJkTmFt
ZV0gX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VGb3JFbGVtZW50OmtpdCgmZWxlbWVudCkg
VVJMOnVybCB0aXRsZTp0aXRsZSBhcmNoaXZlOltraXQoJmVsZW1lbnQpIHdlYkFyY2hpdmVdIHNv
dXJjZTpnZXRUb3BIVE1MVmlldyhmcmFtZSldOworfQorCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKK3ZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCit7CisgICAg
QVNTRVJUKHBhc3RlYm9hcmROYW1lKTsKICAgICAKLSAgICBbW05TUGFzdGVib2FyZCBwYXN0ZWJv
YXJkV2l0aE5hbWU6cGFzdGVib2FyZE5hbWVdIF93ZWJfZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
Rm9yRWxlbWVudDpraXQoJmVsZW1lbnQpIFVSTDp1cmwgdGl0bGU6dGl0bGUgYXJjaGl2ZTphcmNo
aXZlIHNvdXJjZTpzb3VyY2VdOworICAgIFtbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFt
ZTpwYXN0ZWJvYXJkTmFtZV0gX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VGb3JFbGVtZW50
OmtpdCgmZWxlbWVudCkgVVJMOnVybCB0aXRsZTpwYXRoIGFyY2hpdmU6bmlsIHNvdXJjZTpnZXRU
b3BIVE1MVmlldyhmcmFtZSldOwogfQorI2VuZGlmCiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZHJh
Z0NvbnRyb2xsZXJEZXN0cm95ZWQoKSAKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQkocmV2aXNpb24gMTgxNjk4KQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzk2MiwxMiArMzk2Miwx
MiBAQCBzdGF0aWMgYm9vbCBtYXRjaGVzRXh0ZW5zaW9uT3JFcXVpdmFsZW50CiAtIChOU0FycmF5
ICopbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjooTlNVUkwgKilkcm9w
RGVzdGluYXRpb24KIHsKICAgICBOU0ZpbGVXcmFwcGVyICp3cmFwcGVyID0gbmlsOwotICAgIE5T
VVJMICpkcmFnZ2luZ0ltYWdlVVJMID0gbmlsOworICAgIE5TVVJMICpkcmFnZ2luZ0VsZW1lbnRV
UkwgPSBuaWw7CiAgICAgCiAgICAgaWYgKFdlYkNvcmU6OkNhY2hlZEltYWdlKiB0aWZmUmVzb3Vy
Y2UgPSBbc2VsZiBwcm9taXNlZERyYWdUSUZGRGF0YVNvdXJjZV0pIHsKICAgICAgICAgaWYgKGF1
dG8qIGJ1ZmZlciA9IHRpZmZSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewogICAgICAgICAg
ICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSB0aWZmUmVzb3VyY2UtPnJlc3BvbnNlKCkubnNV
UkxSZXNwb25zZSgpOwotICAgICAgICAgICAgZHJhZ2dpbmdJbWFnZVVSTCA9IFtyZXNwb25zZSBV
UkxdOworICAgICAgICAgICAgZHJhZ2dpbmdFbGVtZW50VVJMID0gW3Jlc3BvbnNlIFVSTF07CiAg
ICAgICAgICAgICB3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldIGF1dG9yZWxlYXNl
XTsKICAgICAgICAgICAgIE5TU3RyaW5nKiBmaWxlbmFtZSA9IFtyZXNwb25zZSBzdWdnZXN0ZWRG
aWxlbmFtZV07CiAgICAgICAgICAgICBOU1N0cmluZyogdHJ1ZUV4dGVuc2lvbih0aWZmUmVzb3Vy
Y2UtPmltYWdlKCktPmZpbGVuYW1lRXh0ZW5zaW9uKCkpOwpAQCAtMzk4OCwxMCArMzk4OCwxNCBA
QCAtIChOU0FycmF5ICopbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkCiAgICAgICAgICAgICBy
ZXR1cm4gbmlsOyAKICAgICAgICAgCiAgICAgICAgIGNvbnN0IFVSTCYgaW1hZ2VVUkwgPSBwYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdnaW5nSW1hZ2VVUkwoKTsKLSAgICAgICAgQVNTRVJUKCFp
bWFnZVVSTC5pc0VtcHR5KCkpOwotICAgICAgICBkcmFnZ2luZ0ltYWdlVVJMID0gaW1hZ2VVUkw7
CisgICAgICAgIGlmICghaW1hZ2VVUkwuaXNFbXB0eSgpKQorICAgICAgICAgICAgZHJhZ2dpbmdF
bGVtZW50VVJMID0gaW1hZ2VVUkw7CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZHJhZ2dpbmdFbGVtZW50VVJMID0gcGFnZS0+ZHJhZ0Nv
bnRyb2xsZXIoKS5kcmFnZ2luZ0F0dGFjaG1lbnRVUkwoKTsKKyNlbmRpZgogCi0gICAgICAgIHdy
YXBwZXIgPSBbW3NlbGYgX2RhdGFTb3VyY2VdIF9maWxlV3JhcHBlckZvclVSTDpkcmFnZ2luZ0lt
YWdlVVJMXTsKKyAgICAgICAgd3JhcHBlciA9IFtbc2VsZiBfZGF0YVNvdXJjZV0gX2ZpbGVXcmFw
cGVyRm9yVVJMOmRyYWdnaW5nRWxlbWVudFVSTF07CiAgICAgfQogICAgIAogICAgIGlmICh3cmFw
cGVyID09IG5pbCkgewpAQCAtNDAwNSw4ICs0MDA5LDggQEAgLSAoTlNBcnJheSAqKW5hbWVzT2ZQ
cm9taXNlZEZpbGVzRHJvcHBlZAogICAgIGlmICghW3dyYXBwZXIgd3JpdGVUb1VSTDpbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOnBhdGhdIG9wdGlvbnM6TlNGaWxlV3JhcHBlcldyaXRpbmdXaXRoTmFt
ZVVwZGF0aW5nIG9yaWdpbmFsQ29udGVudHNVUkw6bmlsIGVycm9yOm51bGxwdHJdKQogICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgaW1hZ2UgZmlsZSB2aWEgLVtOU0ZpbGVXcmFw
cGVyIHdyaXRlVG9VUkw6b3B0aW9uczpvcmlnaW5hbENvbnRlbnRzVVJMOmVycm9yOl0iKTsKICAg
ICAKLSAgICBpZiAoZHJhZ2dpbmdJbWFnZVVSTCkKLSAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBfd2Via2l0X3NldE1ldGFkYXRhVVJMOltkcmFnZ2luZ0ltYWdlVVJMIGFi
c29sdXRlU3RyaW5nXSByZWZlcnJlcjpuaWwgYXRQYXRoOnBhdGhdOworICAgIGlmIChkcmFnZ2lu
Z0VsZW1lbnRVUkwpCisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gX3dl
YmtpdF9zZXRNZXRhZGF0YVVSTDpbZHJhZ2dpbmdFbGVtZW50VVJMIGFic29sdXRlU3RyaW5nXSBy
ZWZlcnJlcjpuaWwgYXRQYXRoOnBhdGhdOwogICAgIAogICAgIHJldHVybiBbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3Q6W3BhdGggbGFzdFBhdGhDb21wb25lbnRdXTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZS5oCShyZXZpc2lvbiAxODE2OTgpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTEyLDYgKzExMiw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBXZWJEcmFn
U28KICAgICBXZWJEcmFnU291cmNlQWN0aW9uSW1hZ2UgICAgICAgID0gMiwKICAgICBXZWJEcmFn
U291cmNlQWN0aW9uTGluayAgICAgICAgID0gNCwKICAgICBXZWJEcmFnU291cmNlQWN0aW9uU2Vs
ZWN0aW9uICAgID0gOCwKKyAgICBXZWJEcmFnU291cmNlQWN0aW9uQXR0YWNobWVudCAgID0gMTYs
CiAgICAgV2ViRHJhZ1NvdXJjZUFjdGlvbkFueSAgICAgICAgICA9IFVJTlRfTUFYCiB9OwogCklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODE3MDkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wMy0xOCAgRW5yaWNhIENhc3VjY2kgIDxl
bnJpY2FAYXBwbGUuY29tPgorCisgICAgICAgIDxhdHRhY2htZW50PiBzaG91bGQgcHV0IFVSTHMg
b24gdGhlIHBhc3RlYm9hcmQgc28gdGhhdCBGaW5kZXIgY2FuIGFjY2VwdCBkcm9wcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjgwMQorICAgICAg
ICByZGFyOi8vcHJvYmxlbS8xOTk4MjUyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctYW5kLWRyb3AtYXR0
YWNobWVudC1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1hdHRhY2htZW50LWNvbnRlbnRlZGl0YWJs
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnM6CisKIDIwMTUtMDMtMTggIE1hcmNvcyBDaGF2YXJyw61hIFRlaWplaXJvICA8Y2hhdmFycmlh
MTk5MUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgR2FyZGVuaW5nIDE4dGgg
TWFyY2gKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWFuZC1kcm9w
LWF0dGFjaG1lbnQtY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1hdHRhY2htZW50LWNv
bnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1hdHRhY2htZW50LWNvbnRlbnRlZGl0YWJs
ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorVGhlc2UgdGVz
dHMgZHJhZ2dpbmcgYW4gYXR0YWNobWVudCBlbGVtZW50IGludG8gY29udGVudGVkaXRhYmxlCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRhcmdldC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYXR0YWNobWVudCIpLmxlbmd0aCBpcyAxCitQQVNTIHRhcmdldC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiYXR0YWNobWVudCIpWzBdLmZpbGUubmFtZSBpcyAiYXBwbGUuZ2lmIgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWFuZC1kcm9wLWF0dGFjaG1lbnQtY29u
dGVudGVkaXRhYmxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RyYWctYW5kLWRyb3AtYXR0YWNobWVudC1jb250ZW50ZWRpdGFibGUuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWFuZC1kcm9w
LWF0dGFjaG1lbnQtY29udGVudGVkaXRhYmxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2MyBAQAorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyN0YXJn
ZXQgeworICAgIGhlaWdodDogMjAwcHg7CisgICAgd2lkdGg6IDIyMHB4OworICAgIGJvcmRlcjog
NXB4IHNvbGlkIGJsdWU7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJ0ZXN0MSI+PGF0dGFj
aG1lbnQgaWQ9J2F0dGFjaG1lbnQnPjwvYXR0YWNobWVudD48L2Rpdj4KKzxkaXYgY29udGVudGVk
aXRhYmxlPXRydWUgaWQ9InRhcmdldCI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbignVGhlc2UgdGVzdHMgZHJhZ2dpbmcgYW4gYXR0
YWNobWVudCBlbGVtZW50IGludG8gY29udGVudGVkaXRhYmxlJyk7Cit2YXIganNUZXN0SXNBc3lu
YyA9IHRydWU7Cit2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcp
OworCitmdW5jdGlvbiBjb250ZW50SW5zZXJ0ZWQoKSB7CisgICBzaG91bGRCZSgndGFyZ2V0Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJhdHRhY2htZW50IikubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ3RhcmdldC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYXR0YWNobWVu
dCIpWzBdLmZpbGUubmFtZScsICdhcHBsZS5naWYnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
KworZnVuY3Rpb24gc2V0dXBBdHRhY2htZW50KCkKK3sKKyAgICBpZiAod2luZG93LmludGVybmFs
cykgeworICAgICAgICB2YXIgYXR0YWNobWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdh
dHRhY2htZW50Jyk7CisgICAgICAgIGF0dGFjaG1lbnQuZmlsZSA9IHdpbmRvdy5pbnRlcm5hbHMu
Y3JlYXRlRmlsZSgicmVzb3VyY2VzL2FwcGxlLmdpZiIpOworICAgIH0KK30KK2Z1bmN0aW9uIHJ1
blRlc3QoKSB7CisgICAgc2V0dXBBdHRhY2htZW50KCk7CisgICAgdGFyZ2V0LmFkZEV2ZW50TGlz
dGVuZXIoJ0RPTU5vZGVJbnNlcnRlZCcsIGNvbnRlbnRJbnNlcnRlZCwgZmFsc2UpOworICAgIGlm
ICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
YXR0YWNobWVudCIpOworICAgIHggPSBlLm9mZnNldExlZnQgKyBlLm9mZnNldFdpZHRoIC8gMjsK
KyAgICB5ID0gZS5vZmZzZXRUb3AgKyBlLm9mZnNldEhlaWdodCAvIDI7CisKKyAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAg
ICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDApOworICAgIGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0Iik7CisgICAgeCA9IGUub2Zmc2V0TGVmdCArIGUub2Zmc2V0V2lkdGgg
LyAyOworICAgIHkgPSBlLm9mZnNldFRvcCArIGUub2Zmc2V0SGVpZ2h0IC8gMjsKKworICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTgxNjk4KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw2ICsyMyw3IEBAIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXN0YW5kYWxvbmUtaW1h
Z2UKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWFuZC1kcm9wLWltYWdlLWNvbnRlbnRlZGl0YWJs
ZS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1pbnB1dGltYWdlLWNvbnRl
bnRlZGl0YWJsZS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1vYmplY3Rp
bWFnZS1jb250ZW50ZWRpdGFibGUuaHRtbAorZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctYW5kLWRy
b3AtYXR0YWNobWVudC1jb250ZW50ZWRpdGFibGUuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2Ry
YWctZHJvcC1kZWFkLWZyYW1lLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWRyb3AtaW5w
dXQtdGV4dGFyZWEuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctZHJvcC1saXN0Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248983</attachid>
            <date>2015-03-18 16:36:48 -0700</date>
            <delta_ts>2015-03-19 14:01:43 -0700</delta_ts>
            <desc>Patch4</desc>
            <filename>drag-attachment-out.txt</filename>
            <type>text/plain</type>
            <size>51781</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTcxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE1LTAzLTE4ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgPGF0dGFjaG1lbnQ+IHNob3Vs
ZCBwdXQgVVJMcyBvbiB0aGUgcGFzdGVib2FyZCBzbyB0aGF0IEZpbmRlciBjYW4gYWNjZXB0IGRy
b3BzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQy
ODAxCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzE5OTgyNTI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9wYXN0ZWJvYXJkL2Ry
YWctYW5kLWRyb3AtYXR0YWNobWVudC1jb250ZW50ZWRpdGFibGUuaHRtbAorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBhbGwgdGhlIG5lY2Vzc2FyeSBzdXBwb3J0IHRvIHdyaXRlIGF0dGFjaG1l
bnQgZWxlbWVudHMgaW50bworICAgICAgICB0aGUgcGFzdGVib2FyZCwgaW5jbHVkaW5nIHRoZSBw
cm9taXNlZCB0eXBlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKiBwYWdlL0RyYWdD
bGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZUF0
dGFjaG1lbnQpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9EcmFnQ29u
dHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdnaW5nQXR0
YWNobWVudFVSTCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9tYWMv
RHJhZ0NvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
ZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudCk6CisgICAgICAgICogcGFnZS93aW4vRHJhZ0NvbnRy
b2xsZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVB
bmRXcml0ZUF0dGFjaG1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgpOgorICAgICAgICAqIHBs
YXRmb3JtL1VSTC5oOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmFic29sdXRlQXR0YWNobWVudFVSTCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKwogMjAxNS0wMy0xOCAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCByZXBhaW50
cyB3aGVuIGNoYW5naW5nIHRyYW5zZm9ybSBvbiBhbiBlbGVtZW50IHdpdGggbXVsdGlwbGUgYmFj
a2dyb3VuZCBpbWFnZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4MTcxMikKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjUy
Nyw3ICsyNTI3LDcgQEAKIAkJN0NDNjk5NDExOTFFQzVGNTAwQUYyMjcwIC8qIEpTV2ViS2l0TmFt
ZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0M2OTkzRjE5MUVDNUY1MDBBRjIyNzAgLyogSlNXZWJLaXROYW1lc3BhY2UuaCAqLzsgfTsKIAkJ
N0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlzdC50eHQgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQzdFM0Q2MTcyMDhD
MEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovOyB9OwogCQk3Q0Q0OTRDQzFB
ODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Q0OTRDQTFBODZFQjFEMDAwQTg3RUMgLyog
UmVuZGVyQXR0YWNobWVudC5jcHAgKi87IH07Ci0JCTdDRDQ5NENEMUE4NkVCMUQwMDBBODdFQyAv
KiBSZW5kZXJBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3Q0Q0OTRDQjFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5o
ICovOyB9OworCQk3Q0Q0OTRDRDFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NENDk0Q0Ix
QTg2RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0RFRUUxRTE5NzYxMEQ3MDBFMzUyQ0Qg
LyogVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDREVFRTFEMTk3NjEwRDcwMEUzNTJDRCAvKiBWaWV3U3RhdGVD
aGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdDRTY4MzQ0MTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDRTY4MzQyMTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlw
dG9yLmNwcCAqLzsgfTsKIAkJN0NFNjgzNDUxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdl
SGFuZGxlckRlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDRTY4MzQzMTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgJKHJldmlzaW9uIDE4MTcxMikKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NiArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERyYWdTb3VyY2VBY3Rpb25J
bWFnZSAgICAgICAgPSAyLAogICAgICAgICBEcmFnU291cmNlQWN0aW9uTGluayAgICAgICAgID0g
NCwKICAgICAgICAgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiAgICA9IDgsCisjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1lbnQg
ICA9IDE2LAorI2VuZGlmCiAgICAgICAgIERyYWdTb3VyY2VBY3Rpb25BbnkgICAgICAgICAgPSBV
SU5UX01BWAogICAgIH0gRHJhZ1NvdXJjZUFjdGlvbjsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NsaWVudC5oCShyZXZpc2lvbiAxODE3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gTWFjLXNwZWNpZmljIGhlbHBlciBmdW5jdGlvbiB0byBhbGxvdyBhY2Nlc3MgdG8gd2ViIGFy
Y2hpdmVzIGFuZCBOU1Bhc3RlYm9hcmQgZXh0cmFzIGluIFdlYktpdC4KICAgICAvLyBUaGlzIGlz
IG5vdCBhYnN0cmFjdCBhcyB0aGF0IHdvdWxkIHJlcXVpcmUgYW5vdGhlciAjaWYgUExBVEZPUk0o
Q09DT0EpIGZvciB0aGUgU1ZHSW1hZ2UgY2xpZW50IGVtcHR5IGltcGxlbnRhdGlvbi4KICAgICB2
aXJ0dWFsIHZvaWQgZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYsIEVsZW1l
bnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBGcmFtZSopIHsgfQorI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgdmlydHVhbCB2b2lkIGRlY2xhcmVBbmRXcml0ZUF0dGFj
aG1lbnQoY29uc3QgU3RyaW5nJiwgRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYs
IEZyYW1lKikgeyB9CisjZW5kaWYKICNlbmRpZgogCiAgICAgdmlydHVhbCB+RHJhZ0NsaWVudCgp
IHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDE4MTcxMikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCkBAIC02MjMsNiArNjI0LDE0IEBAIEVsZW1lbnQqIERyYWdDb250cm9sbGVyOjpkcmFn
Z2FibGVFbGVtZW4KICAgICBzdGF0ZS50eXBlID0gKHNvdXJjZUZyYW1lLT5zZWxlY3Rpb24oKS5j
b250YWlucyhkcmFnT3JpZ2luKSkgPyBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uIDogRHJhZ1Nv
dXJjZUFjdGlvbk5vbmU7CiAgICAgaWYgKCFzdGFydEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgLy8gVW5saWtlIGlt
YWdlIGVsZW1lbnRzLCBhdHRhY2htZW50IGVsZW1lbnRzIGFyZSBpbW1lZGlhdGVseSBzZWxlY3Rl
ZCB1cG9uIG1vdXNlIGRvd24sCisgICAgLy8gYnV0IGZvciB0aG9zZSBlbGVtZW50cyB3ZSBzdGls
bCB3YW50IHRvIHVzZSB0aGUgc2luZ2xlIGVsZW1lbnQgZHJhZyBiZWhhdmlvciBhcyBsb25nIGFz
CisgICAgLy8gdGhlIGVsZW1lbnQgaXMgdGhlIG9ubHkgY29udGVudCBvZiB0aGUgc2VsZWN0aW9u
LgorICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IHNvdXJjZUZyYW1lLT5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAgICBpZiAoc2VsZWN0aW9uLmlzUmFuZ2UoKSAmJiBp
czxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KHNlbGVjdGlvbi5zdGFydCgpLmFuY2hvck5vZGUoKSkg
JiYgc2VsZWN0aW9uLnN0YXJ0KCkuYW5jaG9yTm9kZSgpID09IHNlbGVjdGlvbi5lbmQoKS5hbmNo
b3JOb2RlKCkpCisgICAgICAgIHN0YXRlLnR5cGUgPSBEcmFnU291cmNlQWN0aW9uTm9uZTsKKyNl
bmRpZgogCiAgICAgZm9yIChhdXRvIHJlbmRlcmVyID0gc3RhcnRFbGVtZW50LT5yZW5kZXJlcigp
OyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCkpIHsKICAgICAgICAgRWxl
bWVudCogZWxlbWVudCA9IHJlbmRlcmVyLT5ub25Qc2V1ZG9FbGVtZW50KCk7CkBAIC02NDksNiAr
NjU4LDE0IEBAIEVsZW1lbnQqIERyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW4KICAgICAg
ICAgICAgICAgICBzdGF0ZS50eXBlID0gc3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3Rh
dGUudHlwZSB8IERyYWdTb3VyY2VBY3Rpb25MaW5rKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZWxlbWVudDsKICAgICAgICAgICAgIH0KKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQor
ICAgICAgICAgICAgaWYgKChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQXR0
YWNobWVudCkKKyAgICAgICAgICAgICAgICAmJiBpczxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KCpl
bGVtZW50KQorICAgICAgICAgICAgICAgICYmIGRvd25jYXN0PEhUTUxBdHRhY2htZW50RWxlbWVu
dD4oKmVsZW1lbnQpLmZpbGUoKSkgeworICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBzdGF0
aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkF0
dGFjaG1lbnQpOworICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICAgICAg
fQorI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAKQEAgLTczOCw2ICs3NTUsMTAgQEAgYm9vbCBE
cmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgVVJMIGxpbmtVUkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwogICAg
IFVSTCBpbWFnZVVSTCA9IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpOworI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgVVJMIGF0dGFjaG1lbnRVUkwgPSBoaXRUZXN0
UmVzdWx0LmFic29sdXRlQXR0YWNobWVudFVSTCgpOworICAgIG1fZHJhZ2dpbmdBdHRhY2htZW50
VVJMID0gVVJMKCk7CisjZW5kaWYKIAogICAgIEludFBvaW50IG1vdXNlRHJhZ2dlZFBvaW50ID0g
c3JjLnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhkcmFnRXZlbnQucG9zaXRpb24oKSk7CiAKQEAg
LTg1Myw2ICs4NzQsMjMgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBz
cgogICAgICAgICAgICAgZHJhZ0ltYWdlID0gc2NhbGVEcmFnSW1hZ2UoZHJhZ0ltYWdlLCBGbG9h
dFNpemUobV9wYWdlLmRldmljZVNjYWxlRmFjdG9yKCksIG1fcGFnZS5kZXZpY2VTY2FsZUZhY3Rv
cigpKSk7CiAgICAgICAgIH0KICAgICAgICAgZG9TeXN0ZW1EcmFnKGRyYWdJbWFnZSwgZHJhZ0xv
YywgbW91c2VEcmFnZ2VkUG9pbnQsIGRhdGFUcmFuc2Zlciwgc3JjLCB0cnVlKTsKKyNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIH0gZWxzZSBpZiAoIWF0dGFjaG1lbnRVUkwuaXNF
bXB0eSgpICYmIChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQXR0YWNobWVu
dCkpIHsKKyAgICAgICAgaWYgKCFkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLmhhc0RhdGEoKSkg
eworICAgICAgICAgICAgbV9kcmFnZ2luZ0F0dGFjaG1lbnRVUkwgPSBhdHRhY2htZW50VVJMOwor
ICAgICAgICAgICAgc2VsZWN0RWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgICAgIGRlY2xhcmVB
bmRXcml0ZUF0dGFjaG1lbnQoZGF0YVRyYW5zZmVyLCBlbGVtZW50LCBhdHRhY2htZW50VVJMKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9jbGllbnQud2lsbFBlcmZvcm1EcmFnU291
cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25BdHRhY2htZW50LCBkcmFnT3JpZ2luLCBkYXRhVHJh
bnNmZXIpOworICAgICAgICAKKyAgICAgICAgaWYgKCFkcmFnSW1hZ2UpIHsKKyAgICAgICAgICAg
IGRyYWdJbWFnZSA9IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihjcmVhdGVEcmFnSW1hZ2VG
b3JTZWxlY3Rpb24oc3JjKSwgRHJhZ0ltYWdlQWxwaGEpOworICAgICAgICAgICAgZHJhZ0xvYyA9
IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKHNyYyk7CisgICAgICAgICAgICBtX2RyYWdPZmZzZXQg
PSBJbnRQb2ludChkcmFnT3JpZ2luLngoKSAtIGRyYWdMb2MueCgpLCBkcmFnT3JpZ2luLnkoKSAt
IGRyYWdMb2MueSgpKTsKKyAgICAgICAgfQorICAgICAgICBkb1N5c3RlbURyYWcoZHJhZ0ltYWdl
LCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIsIHNyYywgZmFsc2UpOworI2VuZGlm
CiAgICAgfSBlbHNlIGlmIChzdGF0ZS50eXBlID09IERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgewog
ICAgICAgICBpZiAoZHJhZ0ltYWdlKSB7CiAgICAgICAgICAgICBBU1NFUlQobV9kcmFnU291cmNl
QWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmgJKHJldmlzaW9uIDE4MTcxMikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgZGlkSW5pdGlhdGVEcmFnKCkgY29uc3QgeyByZXR1
cm4gbV9kaWRJbml0aWF0ZURyYWc7IH0KICAgICAgICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VEcmFn
T3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VEcmFnT3BlcmF0aW9uOyB9CiAgICAg
ICAgIGNvbnN0IFVSTCYgZHJhZ2dpbmdJbWFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dp
bmdJbWFnZVVSTDsgfQorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgICAgIGNv
bnN0IFVSTCYgZHJhZ2dpbmdBdHRhY2htZW50VVJMKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2lu
Z0F0dGFjaG1lbnRVUkw7IH0KKyNlbmRpZgogICAgICAgICB2b2lkIHNldERyYWdPZmZzZXQoY29u
c3QgSW50UG9pbnQmIG9mZnNldCkgeyBtX2RyYWdPZmZzZXQgPSBvZmZzZXQ7IH0KICAgICAgICAg
Y29uc3QgSW50UG9pbnQmIGRyYWdPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2RyYWdPZmZzZXQ7
IH0KICAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9kcmFnU291cmNlQWN0aW9uOyB9CkBAIC0xMTQsNyArMTE3LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIGRvU3lzdGVtRHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0
IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYsIGJvb2wg
Zm9yTGluayk7CiAgICAgICAgIHZvaWQgY2xlYW51cEFmdGVyU3lzdGVtRHJhZygpOwogICAgICAg
ICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNmZXImLCBFbGVtZW50Jiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7Ci0KKyNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQorICAgICAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQoRGF0YVRy
YW5zZmVyJiwgRWxlbWVudCYsIGNvbnN0IFVSTCYpOworI2VuZGlmCiAgICAgICAgIFBhZ2UmIG1f
cGFnZTsKICAgICAgICAgRHJhZ0NsaWVudCYgbV9jbGllbnQ7CiAKQEAgLTEzMCw2ICsxMzUsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERyYWdPcGVyYXRpb24gbV9zb3VyY2VEcmFn
T3BlcmF0aW9uOyAvLyBTZXQgaW4gc3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEg
bW91c2UgZG93biB3aXRoaW4gV2ViS2l0CiAgICAgICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsK
ICAgICAgICAgVVJMIG1fZHJhZ2dpbmdJbWFnZVVSTDsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorICAgICAgICBVUkwgbV9kcmFnZ2luZ0F0dGFjaG1lbnRVUkw7CisjZW5kaWYKICAg
ICB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lv
biAxODE3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzMDgsNiArMzMwOCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlz
dGVyZXNpc0V4Y2VlZGUKICAgICAgICAgdGhyZXNob2xkID0gVGV4dERyYWdIeXN0ZXJlc2lzOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25JbWFnZToKKyNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1l
bnQ6CisjZW5kaWYKICAgICAgICAgdGhyZXNob2xkID0gSW1hZ2VEcmFnSHlzdGVyZXNpczsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uTGluazoKQEAgLTM0MzAsNiAr
MzQzMyw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXMKICAgICAg
ICAgQVNTRVJUKChkcmFnU3RhdGUoKS50eXBlICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikp
OwogICAgICAgICBBU1NFUlQoKGRyYWdTdGF0ZSgpLnR5cGUgJiB+RHJhZ1NvdXJjZUFjdGlvblNl
bGVjdGlvbikgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1MCiAgICAgICAgICAgICB8fCAoZHJhZ1N0
YXRlKCkudHlwZSAmIH5EcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSA9PSBEcmFnU291cmNlQWN0
aW9uSW1hZ2UKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICAgICAgICAgfHwg
KGRyYWdTdGF0ZSgpLnR5cGUgJiB+RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgPT0gRHJhZ1Nv
dXJjZUFjdGlvbkF0dGFjaG1lbnQKKyNlbmRpZgogICAgICAgICAgICAgfHwgKGRyYWdTdGF0ZSgp
LnR5cGUgJiB+RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgPT0gRHJhZ1NvdXJjZUFjdGlvbkxp
bmspOwogICAgICAgICBkcmFnU3RhdGUoKS50eXBlID0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlv
bjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxl
ck1hYy5tbQkocmV2aXNpb24gMTgxNzEyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJh
Z0NvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDkgQEAKICNpbXBv
cnQgIkVkaXRvci5oIgogI2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCiAjaW1wb3J0ICJFbGVtZW50
LmgiCisjaW1wb3J0ICJGaWxlLmgiCiAjaW1wb3J0ICJGcmFtZVZpZXcuaCIKKyNpbXBvcnQgIkhU
TUxBdHRhY2htZW50RWxlbWVudC5oIgogI2ltcG9ydCAiTWFpbkZyYW1lLmgiCiAjaW1wb3J0ICJQ
YWdlLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCkBAIC04Nyw2ICs4OSwxNCBAQCB2b2lkIERy
YWdDb250cm9sbGVyOjpjbGVhbnVwQWZ0ZXJTeXN0ZW1ECiAgICAgICAgIGRyYWdFbmRlZCgpOwog
fQogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKK3ZvaWQgRHJhZ0NvbnRyb2xsZXI6
OmRlY2xhcmVBbmRXcml0ZUF0dGFjaG1lbnQoRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsKQoreworICAgIGNvbnN0IEhUTUxBdHRhY2ht
ZW50RWxlbWVudCYgYXR0YWNobWVudCA9IGRvd25jYXN0PEhUTUxBdHRhY2htZW50RWxlbWVudD4o
ZWxlbWVudCk7CisgICAgbV9jbGllbnQuZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudChkYXRhVHJh
bnNmZXIucGFzdGVib2FyZCgpLm5hbWUoKSwgZWxlbWVudCwgdXJsLCBhdHRhY2htZW50LmZpbGUo
KS0+cGF0aCgpLCBlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKSk7Cit9CisjZW5kaWYKKyAgICAK
IHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNm
ZXImIGRhdGFUcmFuc2ZlciwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgbV9jbGllbnQuZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkubmFtZSgpLCBlbGVtZW50LCB1cmwsIGxhYmVsLCBl
bGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3dp
bi9EcmFnQ29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiAxODE3MTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY5LDYgKzY5LDEyIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNsZWFudXBBZnRlclN5c3RlbUQK
IHsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCit2b2lkIERyYWdDb250cm9s
bGVyOjpkZWNsYXJlQW5kV3JpdGVBdHRhY2htZW50KERhdGFUcmFuc2ZlciYsIEVsZW1lbnQmLCBj
b25zdCBVUkwmKQoreworfQorI2VuZGlmCisKIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVB
bmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgUGFzdGVi
b2FyZCYgcGFzdGVib2FyZCA9IGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTC5jcHAJKHJldmlzaW9uIDE4MTcxMikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMTksNCArMjExOSw5IEBAIFVSTCBV
Ukw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFMKICAgICByZXR1cm4gVVJMKFVSTCgp
LCAid2Via2l0LWZha2UtdXJsOi8vIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSArICcv
JyArIHJlbGF0aXZlUGFydCk7CiB9CiAKK1VSTCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBh
dGgoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICByZXR1cm4gVVJMKFVSTCgpLCAiZmls
ZTovLy8iICsgZmlsZVBhdGgpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAkocmV2
aXNpb24gMTgxNzEyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogICAgIFVSTChjb25zdCBVUkwmIGJhc2Us
IGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFRleHRFbmNvZGluZyYpOwogCiAgICAgc3Rh
dGljIFVSTCBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0
aWMgVVJMIGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoY29uc3QgU3RyaW5nJik7CiAKICAgICBT
dHJpbmcgc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJKHJldmlzaW9uIDE4MTcxMikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjUsMTEgKzI1LDEzIEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRl
ICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNs
dWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkhUTUxBbmNob3JFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEF1ZGlvRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCkBAIC0zMTAs
NiArMzEyLDI1IEBAIEludFJlY3QgSGl0VGVzdFJlc3VsdDo6aW1hZ2VSZWN0KCkgY29uc3QKICAg
ICByZXR1cm4gbV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlckJveCgpLT5hYnNvbHV0ZUNvbnRl
bnRRdWFkKCkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCitVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVBdHRhY2htZW50VVJMKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQorICAgICAgICByZXR1cm4g
VVJMKCk7CisgICAgCisgICAgaWYgKCEobV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCkg
JiYgbV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCktPmlzQXR0YWNobWVudCgpKSkKKyAg
ICAgICAgcmV0dXJuIFVSTCgpOworICAgIAorICAgIGlmICghaXM8SFRNTEF0dGFjaG1lbnRFbGVt
ZW50PigqbV9pbm5lck5vblNoYXJlZE5vZGUpKQorICAgICAgICByZXR1cm4gVVJMKCk7CisgICAg
RmlsZSogYXR0YWNobWVudEZpbGUgPSBkb3duY2FzdDxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KCpt
X2lubmVyTm9uU2hhcmVkTm9kZSkuZmlsZSgpOworICAgIGlmICghYXR0YWNobWVudEZpbGUpCisg
ICAgICAgIHJldHVybiBVUkwoKTsKKyAgICAKKyAgICByZXR1cm4gVVJMOjpmaWxlVVJMV2l0aEZp
bGVTeXN0ZW1QYXRoKGF0dGFjaG1lbnRGaWxlLT5wYXRoKCkpOworfQorI2VuZGlmCisKIFVSTCBI
aXRUZXN0UmVzdWx0OjphYnNvbHV0ZUltYWdlVVJMKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5u
ZXJOb25TaGFyZWROb2RlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5oCShyZXZpc2lvbiAxODE3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDkgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBhYnNvbHV0ZVBERlVSTCgpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFVSTCBhYnNvbHV0ZU1lZGlhVVJMKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgVVJMIGFic29sdXRlTGlua1VSTCgpIGNvbnN0OworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCisgICAgV0VCQ09SRV9FWFBPUlQgVVJMIGFic29sdXRlQXR0YWNobWVudFVSTCgpIGNv
bnN0OworI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRleHRDb250ZW50KCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0xpdmVMaW5rKCkgY29uc3Q7CiAgICAgYm9v
bCBpc092ZXJMaW5rKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODE3MTIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBA
QAorMjAxNS0wMy0xOCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIDxhdHRhY2htZW50PiBzaG91bGQgcHV0IFVSTHMgb24gdGhlIHBhc3RlYm9hcmQgc28gdGhh
dCBGaW5kZXIgY2FuIGFjY2VwdCBkcm9wcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MjgwMQorICAgICAgICByZGFyOi8vcHJvYmxlbS8xOTk4MjUy
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyBhbGwgdGhlIG5lY2Vzc2FyeSBzdXBwb3J0IHRvIHdyaXRlIGF0dGFjaG1lbnQg
ZWxlbWVudHMgaW50bworICAgICAgICB0aGUgcGFzdGVib2FyZCwgaW5jbHVkaW5nIHRoZSBwcm9t
aXNlZCB0eXBlIGluIFdLMi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bToKKyAgICAgICAgKC1bV0tWaWV3IF9zZXRQcm9taXNlZERhdGFGb3JJbWFnZTp3aXRoRmlsZU5h
bWU6d2l0aEV4dGVuc2lvbjp3aXRoVGl0bGU6d2l0aFVSTDp3aXRoVmlzaWJsZVVSTDp3aXRoQXJj
aGl2ZTpmb3JQYXN0ZWJvYXJkOl0pOgorICAgICAgICAoLVtXS1ZpZXcgX3NldFByb21pc2VkRGF0
YUZvckF0dGFjaG1lbnQ6d2l0aEV4dGVuc2lvbjp3aXRoVGl0bGU6d2l0aFVSTDp3aXRoVmlzaWJs
ZVVSTDpmb3JQYXN0ZWJvYXJkOl0pOgorICAgICAgICAoLVtXS1ZpZXcgbmFtZXNPZlByb21pc2Vk
RmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjpdKToKKyAgICAgICAgKC1bV0tWaWV3IF9zZXRQcm9t
aXNlZERhdGE6d2l0aEZpbGVOYW1lOndpdGhFeHRlbnNpb246d2l0aFRpdGxlOndpdGhVUkw6d2l0
aFZpc2libGVVUkw6d2l0aEFyY2hpdmU6Zm9yUGFzdGVib2FyZDpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpz
ZXRQcm9taXNlZERhdGFGb3JBdHRhY2htZW50KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OnNldFByb21pc2VkRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0
UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNl
dFByb21pc2VkRGF0YUZvckF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldFByb21pc2VkRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJh
Z0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisKIDIwMTUtMDMtMTggIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgJiYgaW5z
dGVhZCBvZiAmIHdoZW4gZGVjaWRpbmcgaWYgdGhlIG5ldHdvcmsgY2FjaGUgc2hvdWxkIGJlIGNs
ZWFyZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24g
MTgxNzEyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTkxLDggKzE5MSwxMyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShB
UFBLSVQpCi0gICAgdmlydHVhbCB2b2lkIHNldFByb21pc2VkRGF0YShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25z
dCBTdHJpbmcmIHRpdGxlLAorICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFn
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmlu
ZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVybCwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXIpID0gMDsKKyNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNl
ZERhdGFGb3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRp
dGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVXJsKSA9IDA7CisKKyNlbmRpZgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShHVEspCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCShyZXZpc2lvbiAxODE3MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2OSw4ICs3NjksMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgZHJhZ0VuZGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3Np
dGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBv
cGVyYXRpb24pOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgc2V0RHJhZ0ltYWdlKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUmIGRyYWdJbWFnZUhhbmRsZSwgYm9vbCBpc0xpbmtEcmFnKTsKLSAgICB2b2lk
IHNldFByb21pc2VkRGF0YShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGltYWdlU2l6ZSwgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sCisgICAgdm9pZCBzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
aGFyZWRNZW1vcnk6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGltYWdlU2l6ZSwgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGFyY2hp
dmVIYW5kbGUsIHVpbnQ2NF90IGFyY2hpdmVTaXplKTsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9yQXR0YWNobWVudChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgdmlzaWJsZVVSTCk7CisjZW5kaWYKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYsIGNvbnN0IFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2UpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxODE3MTIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94
eSB7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ICAgICBTZXREcmFnSW1hZ2UoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgZHJhZ0ltYWdlLCBib29sIGxpbmtEcmFnKQotICAg
IFNldFByb21pc2VkRGF0YShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdlYktpdDo6U2hhcmVkTWVt
b3J5OjpIYW5kbGUgaW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGltYWdlU2l6ZSwgU3RyaW5nIGZpbGVu
YW1lLCBTdHJpbmcgZXh0ZW5zaW9uLCBTdHJpbmcgdGl0bGUsIFN0cmluZyB1cmwsIFN0cmluZyB2
aXNpYmxlVVJMLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGUsIHVp
bnQ2NF90IGFyY2hpdmVTaXplKQorICAgIFNldFByb21pc2VkRGF0YUZvckltYWdlKFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBpbWFnZUhhbmRsZSwg
dWludDY0X3QgaW1hZ2VTaXplLCBTdHJpbmcgZmlsZW5hbWUsIFN0cmluZyBleHRlbnNpb24sIFN0
cmluZyB0aXRsZSwgU3RyaW5nIHVybCwgU3RyaW5nIHZpc2libGVVUkwsIFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZSwgdWludDY0X3QgYXJjaGl2ZVNpemUpCisjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBTZXRQcm9taXNlZERhdGFGb3JBdHRhY2ht
ZW50KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIGZpbGVuYW1lLCBTdHJpbmcgZXh0ZW5z
aW9uLCBTdHJpbmcgdGl0bGUsIFN0cmluZyB1cmwsIFN0cmluZyB2aXNpYmxlVVJMKQorI2VuZGlm
CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAg
U3RhcnREcmFnKFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhLCBXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlIGRyYWdJbWFnZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDE4MTcxMikKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM3OSwzMSArMzM3
OSw1NCBAQCBzdGF0aWMgYm9vbCBtYXRjaGVzRXh0ZW5zaW9uT3JFcXVpdmFsZW50CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiBoYXNDYXNlSW5zZW5zaXRpdmVTdWZmaXgoZmlsZW5hbWUsIEAiLmpwZyIpKTsKIH0K
IAotLSAodm9pZClfc2V0UHJvbWlzZWREYXRhOihXZWJDb3JlOjpJbWFnZSAqKWltYWdlIHdpdGhG
aWxlTmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSB3aXRoRXh0ZW5zaW9uOihOU1N0cmluZyAqKWV4
dGVuc2lvbiB3aXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgd2l0aFVSTDooTlNTdHJpbmcgKil1
cmwgd2l0aFZpc2libGVVUkw6KE5TU3RyaW5nICopdmlzaWJsZVVybCB3aXRoQXJjaGl2ZTooV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKikgYXJjaGl2ZUJ1ZmZlciBmb3JQYXN0ZWJvYXJkOihOU1N0cmlu
ZyAqKXBhc3RlYm9hcmROYW1lCi0KKy0gKHZvaWQpX3NldEZpbGVBbmRVUkxUeXBlczooTlNTdHJp
bmcgKilmaWxlbmFtZSB3aXRoRXh0ZW5zaW9uOihOU1N0cmluZyAqKWV4dGVuc2lvbiB3aXRoVGl0
bGU6KE5TU3RyaW5nICopdGl0bGUgd2l0aFVSTDooTlNTdHJpbmcgKil1cmwgd2l0aFZpc2libGVV
Ukw6KE5TU3RyaW5nICopdmlzaWJsZVVybCBmb3JQYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilw
YXN0ZWJvYXJkCiB7Ci0gICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2Fy
ZCBwYXN0ZWJvYXJkV2l0aE5hbWU6cGFzdGVib2FyZE5hbWVdOwotICAgIFJldGFpblB0cjxOU011
dGFibGVBcnJheT4gdHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0czpOU0ZpbGVzUHJvbWlzZVBib2FyZFR5cGUsIG5pbF0pOwotICAgIAotICAgIFt0
eXBlcyBhZGRPYmplY3RzRnJvbUFycmF5OmFyY2hpdmVCdWZmZXIgPyBQYXN0ZWJvYXJkVHlwZXM6
OmZvckltYWdlc1dpdGhBcmNoaXZlKCkgOiBQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlcygpXTsK
LSAgICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6dHlwZXMuZ2V0KCkgb3duZXI6c2VsZl07CiAg
ICAgaWYgKCFtYXRjaGVzRXh0ZW5zaW9uT3JFcXVpdmFsZW50KGZpbGVuYW1lLCBleHRlbnNpb24p
KQogICAgICAgICBmaWxlbmFtZSA9IFtbZmlsZW5hbWUgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6
QCIuIl0gc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6ZXh0ZW5zaW9uXTsKLQorICAgIAogICAgIFtw
YXN0ZWJvYXJkIHNldFN0cmluZzp2aXNpYmxlVXJsIGZvclR5cGU6TlNTdHJpbmdQYm9hcmRUeXBl
XTsKICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6dmlzaWJsZVVybCBmb3JUeXBlOlBhc3RlYm9h
cmRUeXBlczo6V2ViVVJMUGJvYXJkVHlwZV07CiAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOnRp
dGxlIGZvclR5cGU6UGFzdGVib2FyZFR5cGVzOjpXZWJVUkxOYW1lUGJvYXJkVHlwZV07CiAgICAg
W3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0OltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0OnZpc2libGVVcmxdLCBbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3Q6dGl0bGVdLCBuaWxdIGZvclR5cGU6UGFzdGVib2FyZFR5cGVzOjpXZWJVUkxzV2l0aFRpdGxl
c1Bib2FyZFR5cGVdOwogICAgIFtwYXN0ZWJvYXJkIHNldFByb3BlcnR5TGlzdDpbTlNBcnJheSBh
cnJheVdpdGhPYmplY3Q6ZXh0ZW5zaW9uXSBmb3JUeXBlOk5TRmlsZXNQcm9taXNlUGJvYXJkVHlw
ZV07CisgICAgX2RhdGEtPl9wcm9taXNlZEZpbGVuYW1lID0gZmlsZW5hbWU7CisgICAgX2RhdGEt
Pl9wcm9taXNlZFVSTCA9IHVybDsKK30KKworLSAodm9pZClfc2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2U6KFdlYkNvcmU6OkltYWdlICopaW1hZ2Ugd2l0aEZpbGVOYW1lOihOU1N0cmluZyAqKWZpbGVu
YW1lIHdpdGhFeHRlbnNpb246KE5TU3RyaW5nICopZXh0ZW5zaW9uIHdpdGhUaXRsZTooTlNTdHJp
bmcgKil0aXRsZSB3aXRoVVJMOihOU1N0cmluZyAqKXVybCB3aXRoVmlzaWJsZVVSTDooTlNTdHJp
bmcgKil2aXNpYmxlVXJsIHdpdGhBcmNoaXZlOihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqKSBhcmNo
aXZlQnVmZmVyIGZvclBhc3RlYm9hcmQ6KE5TU3RyaW5nICopcGFzdGVib2FyZE5hbWUKKworewor
ICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdp
dGhOYW1lOnBhc3RlYm9hcmROYW1lXTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5
cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNG
aWxlc1Byb21pc2VQYm9hcmRUeXBlLCBuaWxdKTsKKyAgICAKKyAgICBbdHlwZXMgYWRkT2JqZWN0
c0Zyb21BcnJheTphcmNoaXZlQnVmZmVyID8gUGFzdGVib2FyZFR5cGVzOjpmb3JJbWFnZXNXaXRo
QXJjaGl2ZSgpIDogUGFzdGVib2FyZFR5cGVzOjpmb3JJbWFnZXMoKV07CisgICAgW3Bhc3RlYm9h
cmQgZGVjbGFyZVR5cGVzOnR5cGVzLmdldCgpIG93bmVyOnNlbGZdOworICAgIFtzZWxmIF9zZXRG
aWxlQW5kVVJMVHlwZXM6ZmlsZW5hbWUgd2l0aEV4dGVuc2lvbjpleHRlbnNpb24gd2l0aFRpdGxl
OnRpdGxlIHdpdGhVUkw6dXJsIHdpdGhWaXNpYmxlVVJMOnZpc2libGVVcmwgZm9yUGFzdGVib2Fy
ZDpwYXN0ZWJvYXJkXTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKQogICAgICAgICBbcGFzdGVi
b2FyZCBzZXREYXRhOmFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
UGFzdGVib2FyZFR5cGVzOjpXZWJBcmNoaXZlUGJvYXJkVHlwZV07CiAKICAgICBfZGF0YS0+X3By
b21pc2VkSW1hZ2UgPSBpbWFnZTsKLSAgICBfZGF0YS0+X3Byb21pc2VkRmlsZW5hbWUgPSBmaWxl
bmFtZTsKLSAgICBfZGF0YS0+X3Byb21pc2VkVVJMID0gdXJsOwogfQogCisjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKKy0gKHZvaWQpX3NldFByb21pc2VkRGF0YUZvckF0dGFjaG1lbnQ6
KE5TU3RyaW5nICopZmlsZW5hbWUgd2l0aEV4dGVuc2lvbjooTlNTdHJpbmcgKilleHRlbnNpb24g
d2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIHdpdGhVUkw6KE5TU3RyaW5nICopdXJsIHdpdGhW
aXNpYmxlVVJMOihOU1N0cmluZyAqKXZpc2libGVVcmwgZm9yUGFzdGVib2FyZDooTlNTdHJpbmcg
KilwYXN0ZWJvYXJkTmFtZQorCit7CisgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05T
UGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aE5hbWU6cGFzdGVib2FyZE5hbWVdOworICAgIFJldGFp
blB0cjxOU011dGFibGVBcnJheT4gdHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoT2JqZWN0czpOU0ZpbGVzUHJvbWlzZVBib2FyZFR5cGUsIG5pbF0pOworICAg
IFt0eXBlcyBhZGRPYmplY3RzRnJvbUFycmF5OlBhc3RlYm9hcmRUeXBlczo6Zm9yVVJMKCldOwor
ICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczp0eXBlcy5nZXQoKSBvd25lcjpzZWxmXTsKKyAg
ICBbc2VsZiBfc2V0RmlsZUFuZFVSTFR5cGVzOmZpbGVuYW1lIHdpdGhFeHRlbnNpb246ZXh0ZW5z
aW9uIHdpdGhUaXRsZTp0aXRsZSB3aXRoVVJMOnVybCB3aXRoVmlzaWJsZVVSTDp2aXNpYmxlVXJs
IGZvclBhc3RlYm9hcmQ6cGFzdGVib2FyZF07CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IHBhdGhzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAg
W3BhdGhzIGFkZE9iamVjdDp0aXRsZV07CisgICAgW3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0
OnBhdGhzLmdldCgpIGZvclR5cGU6TlNGaWxlbmFtZXNQYm9hcmRUeXBlXTsKKworICAgIF9kYXRh
LT5fcHJvbWlzZWRJbWFnZSA9IG51bGxwdHI7Cit9CisjZW5kaWYKKwogLSAodm9pZClwYXN0ZWJv
YXJkQ2hhbmdlZE93bmVyOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkCiB7CiAgICAgX2RhdGEt
Pl9wcm9taXNlZEltYWdlID0gMDsKQEAgLTM0NjcsMTAgKzM0OTAsMTIgQEAgLSAoTlNBcnJheSAq
KW5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZAogICAgIGlmIChfZGF0YS0+X3Byb21pc2VkSW1h
Z2UpIHsKICAgICAgICAgZGF0YSA9IF9kYXRhLT5fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwotICAgICAgICBb
d3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpfZGF0YS0+X3Byb21pc2VkRmlsZW5hbWVdOwot
ICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpfZGF0YS0+X3Byb21p
c2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0p
OwogICAgIAotICAgIGlmICghd3JhcHBlcikgeworICAgIGlmICh3cmFwcGVyKQorICAgICAgICBb
d3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpfZGF0YS0+X3Byb21pc2VkRmlsZW5hbWVdOwor
ICAgIGVsc2UgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgaW1hZ2UgZmls
ZS4iKTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgJKHJldmlzaW9uIDE4MTcx
MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsMTAgQEAgQGludGVyZmFjZSBXS1ZpZXcgKCkK
IC0gKHZvaWQpX3NldFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZTooV2ViS2l0OjpQbHVnaW5D
b21wbGV4VGV4dElucHV0U3RhdGUpcGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlIHBsdWdpbkNv
bXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyOih1aW50NjRfdClwbHVnaW5Db21wbGV4VGV4dElucHV0
SWRlbnRpZmllcjsKIAogLSAodm9pZClfc2V0RHJhZ0ltYWdlOihOU0ltYWdlICopaW1hZ2UgYXQ6
KE5TUG9pbnQpY2xpZW50UG9pbnQgbGlua0RyYWc6KEJPT0wpbGlua0RyYWc7Ci0tICh2b2lkKV9z
ZXRQcm9taXNlZERhdGE6KFdlYkNvcmU6OkltYWdlICopaW1hZ2Ugd2l0aEZpbGVOYW1lOihOU1N0
cmluZyAqKWZpbGVuYW1lIHdpdGhFeHRlbnNpb246KE5TU3RyaW5nICopZXh0ZW5zaW9uIHdpdGhU
aXRsZTooTlNTdHJpbmcgKil0aXRsZSB3aXRoVVJMOihOU1N0cmluZyAqKXVybCB3aXRoVmlzaWJs
ZVVSTDooTlNTdHJpbmcgKil2aXNpYmxlVXJsIHdpdGhBcmNoaXZlOihXZWJDb3JlOjpTaGFyZWRC
dWZmZXIqKSBhcmNoaXZlQnVmZmVyIGZvclBhc3RlYm9hcmQ6KE5TU3RyaW5nICopcGFzdGVib2Fy
ZE5hbWU7CistICh2b2lkKV9zZXRQcm9taXNlZERhdGFGb3JJbWFnZTooV2ViQ29yZTo6SW1hZ2Ug
KilpbWFnZSB3aXRoRmlsZU5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgd2l0aEV4dGVuc2lvbjoo
TlNTdHJpbmcgKilleHRlbnNpb24gd2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIHdpdGhVUkw6
KE5TU3RyaW5nICopdXJsIHdpdGhWaXNpYmxlVVJMOihOU1N0cmluZyAqKXZpc2libGVVcmwgd2l0
aEFyY2hpdmU6KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopIGFyY2hpdmVCdWZmZXIgZm9yUGFzdGVi
b2FyZDooTlNTdHJpbmcgKilwYXN0ZWJvYXJkTmFtZTsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorLSAodm9pZClfc2V0UHJvbWlzZWREYXRhRm9yQXR0YWNobWVudDooTlNTdHJpbmcg
KilmaWxlbmFtZSB3aXRoRXh0ZW5zaW9uOihOU1N0cmluZyAqKWV4dGVuc2lvbiB3aXRoVGl0bGU6
KE5TU3RyaW5nICopdGl0bGUgd2l0aFVSTDooTlNTdHJpbmcgKil1cmwgd2l0aFZpc2libGVVUkw6
KE5TU3RyaW5nICopdmlzaWJsZVVybCBmb3JQYXN0ZWJvYXJkOihOU1N0cmluZyAqKXBhc3RlYm9h
cmROYW1lOworI2VuZGlmCiAtICh2b2lkKV91cGRhdGVTZWN1cmVJbnB1dFN0YXRlOwogLSAodm9p
ZClfcmVzZXRTZWN1cmVJbnB1dFN0YXRlOwogLSAodm9pZClfbm90aWZ5SW5wdXRDb250ZXh0QWJv
dXREaXNjYXJkZWRDb21wb3NpdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHJldmlzaW9uIDE4MTcxMikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtOTQs
OCArOTQsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFdl
YlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGV4ZWN1
dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBzZXREcmFnSW1hZ2UoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJhZ0ltYWdlLCBi
b29sIGlzTGlua0RyYWcpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERh
dGEoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwKICAg
ICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVybCwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXIpIG92ZXJyaWRlOworI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgdmlydHVhbCB2b2lkIHNldFByb21pc2Vk
RGF0YUZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVcmwpIG92ZXJyaWRl
OworI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUlucHV0Q29udGV4dEFib3V0RGlzY2FyZGVkQ29tcG9z
aXRpb24oKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2aXNpb24gMTgxNzEyKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDA3LDEz
ICs0MDcsMjAgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0RHJhZ0ltYWdlKGNvbnN0IAogICAg
IFttX3drVmlldyBfc2V0RHJhZ0ltYWdlOmRyYWdOU0ltYWdlLmdldCgpIGF0OmNsaWVudFBvc2l0
aW9uIGxpbmtEcmFnOmlzTGlua0RyYWddOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQ
cm9taXNlZERhdGEoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgdmlzaWJsZVVybCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVC
dWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VC
dWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNp
YmxlVXJsLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcikKIHsKICAgICBS
ZWZQdHI8SW1hZ2U+IGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGltYWdlLT5z
ZXREYXRhKGltYWdlQnVmZmVyLmdldCgpLCB0cnVlKTsKLSAgICBbbV93a1ZpZXcgX3NldFByb21p
c2VkRGF0YTppbWFnZS5nZXQoKSB3aXRoRmlsZU5hbWU6ZmlsZW5hbWUgd2l0aEV4dGVuc2lvbjpl
eHRlbnNpb24gd2l0aFRpdGxlOnRpdGxlIHdpdGhVUkw6dXJsIHdpdGhWaXNpYmxlVVJMOnZpc2li
bGVVcmwgd2l0aEFyY2hpdmU6YXJjaGl2ZUJ1ZmZlci5nZXQoKSBmb3JQYXN0ZWJvYXJkOnBhc3Rl
Ym9hcmROYW1lXTsKKyAgICBbbV93a1ZpZXcgX3NldFByb21pc2VkRGF0YUZvckltYWdlOmltYWdl
LmdldCgpIHdpdGhGaWxlTmFtZTpmaWxlbmFtZSB3aXRoRXh0ZW5zaW9uOmV4dGVuc2lvbiB3aXRo
VGl0bGU6dGl0bGUgd2l0aFVSTDp1cmwgd2l0aFZpc2libGVVUkw6dmlzaWJsZVVybCB3aXRoQXJj
aGl2ZTphcmNoaXZlQnVmZmVyLmdldCgpIGZvclBhc3RlYm9hcmQ6cGFzdGVib2FyZE5hbWVdOwog
fQogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKK3ZvaWQgUGFnZUNsaWVudEltcGw6
OnNldFByb21pc2VkRGF0YUZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVV
cmwpCit7CisgICAgW21fd2tWaWV3IF9zZXRQcm9taXNlZERhdGFGb3JBdHRhY2htZW50OmZpbGVu
YW1lIHdpdGhFeHRlbnNpb246ZXh0ZW5zaW9uIHdpdGhUaXRsZTp0aXRsZSB3aXRoVVJMOnVybCB3
aXRoVmlzaWJsZVVSTDp2aXNpYmxlVXJsIGZvclBhc3RlYm9hcmQ6cGFzdGVib2FyZE5hbWVdOwor
fQorI2VuZGlmCisKIHZvaWQgUGFnZUNsaWVudEltcGw6OnVwZGF0ZVNlY3VyZUlucHV0U3RhdGUo
KQogewogICAgIFttX3drVmlldyBfdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZV07CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkocmV2aXNp
b24gMTgxNzEyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAgLSAodm9pZClzcGVha1N0cmlu
ZzooTlNTdHJpbmcgKilzdHJpbmc7CiBAZW5kCiAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3Nl
cnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIHByb2Nlc3MoKS5jb25uZWN0aW9u
KCkpCisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCkgTUVTU0FHRV9DSEVDS19CQVNFKG1f
cHJvY2Vzcy0+Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKHVybCksIG1fcHJvY2Vzcy0+
Y29ubmVjdGlvbigpKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDA3LDkgKzQw
OCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RHJhZ0ltYWdlKGNvbnN0IFdlCiAgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFN0YXJ0RHJhZygpLCBtX3BhZ2VJRCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGEoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGltYWdlSGFuZGxlLCB1
aW50NjRfdCBpbWFnZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uLAordm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBp
bWFnZUhhbmRsZSwgdWludDY0X3QgaW1hZ2VTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
dmlzaWJsZVVSTCwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGFyY2hpdmVIYW5kbGUsIHVp
bnQ2NF90IGFyY2hpdmVTaXplKQogeworICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCk7CisgICAg
TUVTU0FHRV9DSEVDS19VUkwodmlzaWJsZVVSTCk7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
c2hhcmVkTWVtb3J5SW1hZ2UgPSBTaGFyZWRNZW1vcnk6OmNyZWF0ZShpbWFnZUhhbmRsZSwgU2hh
cmVkTWVtb3J5OjpSZWFkT25seSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hh
cmVkTWVtb3J5SW1hZ2UtPmRhdGEoKSksIGltYWdlU2l6ZSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKQEAgLTQxOCw4ICs0MjEsMTcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFByb21pc2VkRGF0YShjb25zdAogICAgICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBz
aGFyZWRNZW1vcnlBcmNoaXZlID0gU2hhcmVkTWVtb3J5OjpjcmVhdGUoYXJjaGl2ZUhhbmRsZSwg
U2hhcmVkTWVtb3J5OjpSZWFkT25seSk7OwogICAgICAgICBhcmNoaXZlQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUFy
Y2hpdmUtPmRhdGEoKSksIGFyY2hpdmVTaXplKTsKICAgICB9Ci0gICAgbV9wYWdlQ2xpZW50LnNl
dFByb21pc2VkRGF0YShwYXN0ZWJvYXJkTmFtZSwgaW1hZ2VCdWZmZXIsIGZpbGVuYW1lLCBleHRl
bnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIGFyY2hpdmVCdWZmZXIpOworICAgIG1fcGFn
ZUNsaWVudC5zZXRQcm9taXNlZERhdGFGb3JJbWFnZShwYXN0ZWJvYXJkTmFtZSwgaW1hZ2VCdWZm
ZXIsIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIGFyY2hpdmVC
dWZmZXIpOwogfQorCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2
aXNpYmxlVVJMKQoreworICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCk7CisgICAgTUVTU0FHRV9D
SEVDS19VUkwodmlzaWJsZVVSTCk7CisgICAgbV9wYWdlQ2xpZW50LnNldFByb21pc2VkRGF0YUZv
ckF0dGFjaG1lbnQocGFzdGVib2FyZE5hbWUsIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1
cmwsIHZpc2libGVVUkwpOworfQorI2VuZGlmCiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiBwb2ludCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCShyZXZpc2lvbiAxODE3MTIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOSBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHZpcnR1YWwgdm9pZCBkZWNsYXJlQW5kV3JpdGVB
dHRhY2htZW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkVsZW1lbnQm
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdlYkNvcmU6OkZyYW1l
Kikgb3ZlcnJpZGU7CisjZW5kaWYKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRyYWdDb250
cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW0JKHJldmlzaW9uIDE4MTcxMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTk3LDYgKzk3LDE2IEBAIHN0YXRpYyBXZWJDb3JlOjpDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UK
ICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQor
dm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVBdHRhY2htZW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHBhdGgsIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKK3sKKyAgICBBU1NFUlQocGFz
dGVib2FyZE5hbWUgPT0gU3RyaW5nKE5TRHJhZ1Bib2FyZCkpOworICAgIAorICAgIE5TVVJMKiBu
c1VSTCA9IChOU1VSTCAqKXVybDsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2V0UHJvbWlzZWREYXRhRm9yQXR0YWNobWVudChwYXN0ZWJvYXJkTmFtZSwgU3RyaW5n
KG5zVVJMLmxhc3RQYXRoQ29tcG9uZW50KSwgU3RyaW5nKG5zVVJMLnBhdGhFeHRlbnNpb24pLCBw
YXRoLCBTdHJpbmcobnNVUkwuYWJzb2x1dGVTdHJpbmcpLCB1c2VyVmlzaWJsZVN0cmluZyhuc1VS
TCkpKTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRnJhbWUqKQogewogICAgIEFTU0VS
VChwYXN0ZWJvYXJkTmFtZSA9PSBTdHJpbmcoTlNEcmFnUGJvYXJkKSk7CkBAIC0xNDMsNyArMTUz
LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSQogICAgICAgICBt
ZW1jcHkoYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpLCBhcmNoaXZlQnVmZmVyLT5k
YXRhKCksIGFyY2hpdmVTaXplKTsKICAgICAgICAgYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlci0+
Y3JlYXRlSGFuZGxlKGFyY2hpdmVIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UmVhZE9ubHkpOwogICAg
IH0KLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0UHJvbWlzZWRE
YXRhKHBhc3RlYm9hcmROYW1lLCBpbWFnZUhhbmRsZSwgaW1hZ2VTaXplLCBTdHJpbmcoW3Jlc3Bv
bnNlIHN1Z2dlc3RlZEZpbGVuYW1lXSksIGV4dGVuc2lvbiwgdGl0bGUsIFN0cmluZyhbW3Jlc3Bv
bnNlIFVSTF0gYWJzb2x1dGVTdHJpbmddKSwgdXNlclZpc2libGVTdHJpbmcoKE5TVVJMICopdXJs
KSwgYXJjaGl2ZUhhbmRsZSwgYXJjaGl2ZVNpemUpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUs
IGltYWdlSGFuZGxlLCBpbWFnZVNpemUsIFN0cmluZyhbcmVzcG9uc2Ugc3VnZ2VzdGVkRmlsZW5h
bWVdKSwgZXh0ZW5zaW9uLCB0aXRsZSwgU3RyaW5nKFtbcmVzcG9uc2UgVVJMXSBhYnNvbHV0ZVN0
cmluZ10pLCB1c2VyVmlzaWJsZVN0cmluZygoTlNVUkwgKil1cmwpLCBhcmNoaXZlSGFuZGxlLCBh
cmNoaXZlU2l6ZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE4MTcxMikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE1LTAzLTE4ICBFbnJpY2EgQ2FzdWNj
aSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgPGF0dGFjaG1lbnQ+IHNob3VsZCBwdXQg
VVJMcyBvbiB0aGUgcGFzdGVib2FyZCBzbyB0aGF0IEZpbmRlciBjYW4gYWNjZXB0IGRyb3BzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODAxCisg
ICAgICAgIHJkYXI6Ly9wcm9ibGVtLzE5OTgyNTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGFsbCB0aGUgbmVjZXNzYXJ5
IHN1cHBvcnQgdG8gd3JpdGUgYXR0YWNobWVudCBlbGVtZW50cyBpbnRvCisgICAgICAgIHRoZSBw
YXN0ZWJvYXJkLCBpbmNsdWRpbmcgdGhlIHByb21pc2VkIHR5cGUgaW4gV0sxLgorCisgICAgICAg
ICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW06CisgICAgICAgICgtW05TUGFzdGVib2Fy
ZCBfd2ViX2RlY2xhcmVBbmRXcml0ZURyYWdJbWFnZUZvckVsZW1lbnQ6VVJMOnRpdGxlOmFyY2hp
dmU6c291cmNlOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
RHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudCk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbmFtZXNPZlByb21pc2Vk
RmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlVJRGVs
ZWdhdGUuaDoKKwogMjAxNS0wMy0xNyAgQ29ucmFkIFNodWx0eiAgPGNvbnJhZF9zaHVsdHpAYXBw
bGUuY29tPgogCiAgICAgICAgIElnbm9yZSBzb21lIGRlcHJlY2F0aW9uIHdhcm5pbmdzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQko
cmV2aXNpb24gMTgxNzEyKQorKysgU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9h
cmRFeHRyYXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbWFnZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckF0dGFjaG1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVySW1hZ2UuaD4KICNpbXBvcnQgPFdlYktpdExl
Z2FjeS9ET01FeHRlbnNpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvRE9NUHJpdmF0ZS5o
PgpAQCAtMjcxLDIxICsyNzIsMzAgQEAgLSAoaWQpX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1h
Z2VGb3JFbAogICAgIEFTU0VSVChzZWxmID09IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhO
YW1lOk5TRHJhZ1Bib2FyZF0pOwogCiAgICAgTlNTdHJpbmcgKmV4dGVuc2lvbiA9IEAiIjsKKyAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNGaWxlc1Byb21pc2VQYm9hcmRUeXBlLCBuaWxd
KTsKICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBjb3JlKGVsZW1lbnQpLT5yZW5kZXJlcigpKSB7
CiAgICAgICAgIGlmIChpczxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKSkgewogICAgICAgICAgICAg
aWYgKENhY2hlZEltYWdlKiBpbWFnZSA9IGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVyZXIp
LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgICAgICAgICBleHRlbnNpb24gPSBpbWFnZS0+aW1h
Z2UoKS0+ZmlsZW5hbWVFeHRlbnNpb24oKTsKICAgICAgICAgICAgICAgICBpZiAoIVtleHRlbnNp
b24gbGVuZ3RoXSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
ICAgICAgICAgW3R5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6W05TUGFzdGVib2FyZCBfd2ViX3dy
aXRhYmxlVHlwZXNGb3JJbWFnZUluY2x1ZGluZ0FyY2hpdmU6KGFyY2hpdmUgIT0gbmlsKV1dOwor
ICAgICAgICAgICAgICAgIFtzZWxmIGRlY2xhcmVUeXBlczp0eXBlcy5nZXQoKSBvd25lcjpzb3Vy
Y2VdOwogICAgICAgICAgICAgfQogICAgICAgICB9CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKKyAgICAgICAgZWxzZSBpZiAoaXM8UmVuZGVyQXR0YWNobWVudD4oKnJlbmRlcmVyKSkg
eworICAgICAgICAgICAgZXh0ZW5zaW9uID0gVVJMLnBhdGhFeHRlbnNpb247CisgICAgICAgICAg
ICBbdHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpbTlNQYXN0ZWJvYXJkIF93ZWJfZHJhZ1R5cGVz
Rm9yVVJMXV07CisgICAgICAgICAgICBbc2VsZiBkZWNsYXJlVHlwZXM6dHlwZXMuZ2V0KCkgb3du
ZXI6c291cmNlXTsKKyAgICAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gcGF0aHMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgICAgIFtw
YXRocy5nZXQoKSBhZGRPYmplY3Q6dGl0bGVdOworICAgICAgICAgICAgW3NlbGYgc2V0UHJvcGVy
dHlMaXN0OnBhdGhzLmdldCgpIGZvclR5cGU6TlNGaWxlbmFtZXNQYm9hcmRUeXBlXTsKKyAgICAg
ICAgfQorI2VuZGlmCiAgICAgfQogCi0gICAgTlNNdXRhYmxlQXJyYXkgKnR5cGVzID0gW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOk5TRmlsZXNQcm9taXNlUGJvYXJkVHlw
ZSwgbmlsXTsKLSAgICBbdHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpbTlNQYXN0ZWJvYXJkIF93
ZWJfd3JpdGFibGVUeXBlc0ZvckltYWdlSW5jbHVkaW5nQXJjaGl2ZTooYXJjaGl2ZSAhPSBuaWwp
XV07Ci0gICAgW3NlbGYgZGVjbGFyZVR5cGVzOnR5cGVzIG93bmVyOnNvdXJjZV07ICAgIAotICAg
IFtzZWxmIF93ZWJfd3JpdGVJbWFnZTpuaWwgZWxlbWVudDplbGVtZW50IFVSTDpVUkwgdGl0bGU6
dGl0bGUgYXJjaGl2ZTphcmNoaXZlIHR5cGVzOnR5cGVzIHNvdXJjZTpzb3VyY2VdOwotICAgIFt0
eXBlcyByZWxlYXNlXTsKKyAgICBbc2VsZiBfd2ViX3dyaXRlSW1hZ2U6bmlsIGVsZW1lbnQ6ZWxl
bWVudCBVUkw6VVJMIHRpdGxlOnRpdGxlIGFyY2hpdmU6YXJjaGl2ZSB0eXBlczp0eXBlcy5nZXQo
KSBzb3VyY2U6c291cmNlXTsKIAogICAgIE5TQXJyYXkgKmV4dGVuc2lvbnMgPSBbW05TQXJyYXkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czpleHRlbnNpb24sIG5pbF07CiAgICAgW3NlbGYgc2V0UHJv
cGVydHlMaXN0OmV4dGVuc2lvbnMgZm9yVHlwZTpOU0ZpbGVzUHJvbWlzZVBib2FyZFR5cGVdOwpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaAkocmV2aXNpb24gMTgxNzEyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlv
bk1hc2tGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6RHJhZ0ltYWdlUmVmLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZHJhZ1BvcywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGV2ZW50UG9zLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpGcmFtZSYsIGJvb2wg
bGlua0RyYWcpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFn
SW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6RWxlbWVudCYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJp
ZGU7CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICB2aXJ0dWFsIHZvaWQgZGVj
bGFyZUFuZFdyaXRlQXR0YWNobWVudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJD
b3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBX
ZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworI2VuZGlmCiBwcml2YXRlOgogICAgIFdlYlZpZXcq
IG1fd2ViVmlldzsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQubW0JKHJldmlzaW9uIDE4MTcxMikKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEyNywxMSArMTI3LDE3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJbWFn
ZVIKIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiB7CiAgICAgQVNTRVJU
KHBhc3RlYm9hcmROYW1lKTsKLSAgICBXZWJIVE1MVmlldyAqc291cmNlID0gZ2V0VG9wSFRNTFZp
ZXcoZnJhbWUpOwotICAgIFdlYkFyY2hpdmUgKmFyY2hpdmUgPSBba2l0KCZlbGVtZW50KSB3ZWJB
cmNoaXZlXTsKKyAgICBbW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aE5hbWU6cGFzdGVib2Fy
ZE5hbWVdIF93ZWJfZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlRm9yRWxlbWVudDpraXQoJmVsZW1l
bnQpIFVSTDp1cmwgdGl0bGU6dGl0bGUgYXJjaGl2ZTpba2l0KCZlbGVtZW50KSB3ZWJBcmNoaXZl
XSBzb3VyY2U6Z2V0VG9wSFRNTFZpZXcoZnJhbWUpXTsKK30KKworI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCit2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZUF0dGFjaG1l
bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQorewor
ICAgIEFTU0VSVChwYXN0ZWJvYXJkTmFtZSk7CiAgICAgCi0gICAgW1tOU1Bhc3RlYm9hcmQgcGFz
dGVib2FyZFdpdGhOYW1lOnBhc3RlYm9hcmROYW1lXSBfd2ViX2RlY2xhcmVBbmRXcml0ZURyYWdJ
bWFnZUZvckVsZW1lbnQ6a2l0KCZlbGVtZW50KSBVUkw6dXJsIHRpdGxlOnRpdGxlIGFyY2hpdmU6
YXJjaGl2ZSBzb3VyY2U6c291cmNlXTsKKyAgICBbW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0
aE5hbWU6cGFzdGVib2FyZE5hbWVdIF93ZWJfZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlRm9yRWxl
bWVudDpraXQoJmVsZW1lbnQpIFVSTDp1cmwgdGl0bGU6cGF0aCBhcmNoaXZlOm5pbCBzb3VyY2U6
Z2V0VG9wSFRNTFZpZXcoZnJhbWUpXTsKIH0KKyNlbmRpZgogCiB2b2lkIFdlYkRyYWdDbGllbnQ6
OmRyYWdDb250cm9sbGVyRGVzdHJveWVkKCkgCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDE4MTcxMikKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5NjIsMTIgKzM5
NjIsMTIgQEAgc3RhdGljIGJvb2wgbWF0Y2hlc0V4dGVuc2lvbk9yRXF1aXZhbGVudAogLSAoTlNB
cnJheSAqKW5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246KE5TVVJMICop
ZHJvcERlc3RpbmF0aW9uCiB7CiAgICAgTlNGaWxlV3JhcHBlciAqd3JhcHBlciA9IG5pbDsKLSAg
ICBOU1VSTCAqZHJhZ2dpbmdJbWFnZVVSTCA9IG5pbDsKKyAgICBOU1VSTCAqZHJhZ2dpbmdFbGVt
ZW50VVJMID0gbmlsOwogICAgIAogICAgIGlmIChXZWJDb3JlOjpDYWNoZWRJbWFnZSogdGlmZlJl
c291cmNlID0gW3NlbGYgcHJvbWlzZWREcmFnVElGRkRhdGFTb3VyY2VdKSB7CiAgICAgICAgIGlm
IChhdXRvKiBidWZmZXIgPSB0aWZmUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpIHsKICAgICAg
ICAgICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gdGlmZlJlc291cmNlLT5yZXNwb25zZSgp
Lm5zVVJMUmVzcG9uc2UoKTsKLSAgICAgICAgICAgIGRyYWdnaW5nSW1hZ2VVUkwgPSBbcmVzcG9u
c2UgVVJMXTsKKyAgICAgICAgICAgIGRyYWdnaW5nRWxlbWVudFVSTCA9IFtyZXNwb25zZSBVUkxd
OwogICAgICAgICAgICAgd3JhcHBlciA9IFtbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSBhdXRvcmVs
ZWFzZV07CiAgICAgICAgICAgICBOU1N0cmluZyogZmlsZW5hbWUgPSBbcmVzcG9uc2Ugc3VnZ2Vz
dGVkRmlsZW5hbWVdOwogICAgICAgICAgICAgTlNTdHJpbmcqIHRydWVFeHRlbnNpb24odGlmZlJl
c291cmNlLT5pbWFnZSgpLT5maWxlbmFtZUV4dGVuc2lvbigpKTsKQEAgLTM5ODgsMTAgKzM5ODgs
MTQgQEAgLSAoTlNBcnJheSAqKW5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZAogICAgICAgICAg
ICAgcmV0dXJuIG5pbDsgCiAgICAgICAgIAogICAgICAgICBjb25zdCBVUkwmIGltYWdlVVJMID0g
cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnZ2luZ0ltYWdlVVJMKCk7Ci0gICAgICAgIEFTU0VS
VCghaW1hZ2VVUkwuaXNFbXB0eSgpKTsKLSAgICAgICAgZHJhZ2dpbmdJbWFnZVVSTCA9IGltYWdl
VVJMOworICAgICAgICBpZiAoIWltYWdlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGRyYWdn
aW5nRWxlbWVudFVSTCA9IGltYWdlVVJMOworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRyYWdnaW5nRWxlbWVudFVSTCA9IHBhZ2UtPmRy
YWdDb250cm9sbGVyKCkuZHJhZ2dpbmdBdHRhY2htZW50VVJMKCk7CisjZW5kaWYKIAotICAgICAg
ICB3cmFwcGVyID0gW1tzZWxmIF9kYXRhU291cmNlXSBfZmlsZVdyYXBwZXJGb3JVUkw6ZHJhZ2dp
bmdJbWFnZVVSTF07CisgICAgICAgIHdyYXBwZXIgPSBbW3NlbGYgX2RhdGFTb3VyY2VdIF9maWxl
V3JhcHBlckZvclVSTDpkcmFnZ2luZ0VsZW1lbnRVUkxdOwogICAgIH0KICAgICAKICAgICBpZiAo
d3JhcHBlciA9PSBuaWwpIHsKQEAgLTQwMDUsOCArNDAwOSw4IEBAIC0gKE5TQXJyYXkgKiluYW1l
c09mUHJvbWlzZWRGaWxlc0Ryb3BwZWQKICAgICBpZiAoIVt3cmFwcGVyIHdyaXRlVG9VUkw6W05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJXcml0aW5nV2l0
aE5hbWVVcGRhdGluZyBvcmlnaW5hbENvbnRlbnRzVVJMOm5pbCBlcnJvcjpudWxscHRyXSkKICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGltYWdlIGZpbGUgdmlhIC1bTlNGaWxl
V3JhcHBlciB3cml0ZVRvVVJMOm9wdGlvbnM6b3JpZ2luYWxDb250ZW50c1VSTDplcnJvcjpdIik7
CiAgICAgCi0gICAgaWYgKGRyYWdnaW5nSW1hZ2VVUkwpCi0gICAgICAgIFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gX3dlYmtpdF9zZXRNZXRhZGF0YVVSTDpbZHJhZ2dpbmdJbWFnZVVS
TCBhYnNvbHV0ZVN0cmluZ10gcmVmZXJyZXI6bmlsIGF0UGF0aDpwYXRoXTsKKyAgICBpZiAoZHJh
Z2dpbmdFbGVtZW50VVJMKQorICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IF93ZWJraXRfc2V0TWV0YWRhdGFVUkw6W2RyYWdnaW5nRWxlbWVudFVSTCBhYnNvbHV0ZVN0cmlu
Z10gcmVmZXJyZXI6bmlsIGF0UGF0aDpwYXRoXTsKICAgICAKICAgICByZXR1cm4gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0OltwYXRoIGxhc3RQYXRoQ29tcG9uZW50XV07CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGUuaAkocmV2aXNpb24gMTgxNzEyKQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExMiw2ICsxMTIsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgV2Vi
RHJhZ1NvCiAgICAgV2ViRHJhZ1NvdXJjZUFjdGlvbkltYWdlICAgICAgICA9IDIsCiAgICAgV2Vi
RHJhZ1NvdXJjZUFjdGlvbkxpbmsgICAgICAgICA9IDQsCiAgICAgV2ViRHJhZ1NvdXJjZUFjdGlv
blNlbGVjdGlvbiAgICA9IDgsCisgICAgV2ViRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1lbnQgICA9
IDE2LAogICAgIFdlYkRyYWdTb3VyY2VBY3Rpb25BbnkgICAgICAgICAgPSBVSU5UX01BWAogfTsK
IApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTgxNzEyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTUtMDMtMTcgIEVucmljYSBDYXN1Y2Np
ICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAgICA8YXR0YWNobWVudD4gc2hvdWxkIHB1dCBV
UkxzIG9uIHRoZSBwYXN0ZWJvYXJkIHNvIHRoYXQgRmluZGVyIGNhbiBhY2NlcHQgZHJvcHMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI4MDEKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vMTk5ODI1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWFuZC1kcm9w
LWF0dGFjaG1lbnQtY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctYW5kLWRyb3AtYXR0YWNobWVudC1jb250ZW50ZWRp
dGFibGUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0
YXRpb25zOiBTa2lwcGluZyBuZXcgdGVzdCBvbiBXSzIgc2luY2UgaXQgdXNlcyBldmVudFNlbmRl
ci4KKworPDw8PDw8PCAubWluZQorMjAxNS0wMy0xOCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FA
YXBwbGUuY29tPgorCisgICAgICAgIDxhdHRhY2htZW50PiBzaG91bGQgcHV0IFVSTHMgb24gdGhl
IHBhc3RlYm9hcmQgc28gdGhhdCBGaW5kZXIgY2FuIGFjY2VwdCBkcm9wcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjgwMQorICAgICAgICByZGFy
Oi8vcHJvYmxlbS8xOTk4MjUyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctYW5kLWRyb3AtYXR0YWNobWVu
dC1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1hdHRhY2htZW50LWNvbnRlbnRlZGl0YWJsZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisK
Kz09PT09PT0KIDIwMTUtMDMtMTggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgd2ViYXVkaW8vY29udm9sdXRpb24tbW9uby1tb25vLmh0bWwgZmFpbHMgb24g
c29tZSBtYWNoaW5lcwpAQCAtMjEsNiArNDcsNyBAQAogICAgICAgICAqIGZhc3QvcmVwYWludC9t
dWx0aXBsZS1iYWNrZ3JvdW5kcy1zdHlsZS1jaGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KICAg
ICAgICAgKiBmYXN0L3JlcGFpbnQvbXVsdGlwbGUtYmFja2dyb3VuZHMtc3R5bGUtY2hhbmdlLmh0
bWw6IEFkZGVkLgogCis+Pj4+Pj4+IC5yMTgxNzEyCiAyMDE1LTAzLTE4ICBNYXJjb3MgQ2hhdmFy
csOtYSBUZWlqZWlybyAgPGNoYXZhcnJpYTE5OTFAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgR1RLIEdhcmRlbmluZyAxOHRoIE1hcmNoCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1hdHRhY2htZW50LWNvbnRlbnRlZGl0YWJsZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Ry
YWctYW5kLWRyb3AtYXR0YWNobWVudC1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctYW5kLWRyb3At
YXR0YWNobWVudC1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTEgQEAKK1RoZXNlIHRlc3RzIGRyYWdnaW5nIGFuIGF0dGFjaG1lbnQgZWxlbWVu
dCBpbnRvIGNvbnRlbnRlZGl0YWJsZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyB0YXJnZXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImF0dGFjaG1lbnQiKS5sZW5ndGggaXMg
MQorUEFTUyB0YXJnZXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImF0dGFjaG1lbnQiKVswXS5maWxl
Lm5hbWUgaXMgImFwcGxlLmdpZiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJh
Zy1hbmQtZHJvcC1hdHRhY2htZW50LWNvbnRlbnRlZGl0YWJsZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWFuZC1kcm9wLWF0dGFjaG1lbnQt
Y29udGVudGVkaXRhYmxlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvZHJhZy1hbmQtZHJvcC1hdHRhY2htZW50LWNvbnRlbnRlZGl0YWJsZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c3R5bGU+CisjdGFyZ2V0IHsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIHdp
ZHRoOiAyMjBweDsKKyAgICBib3JkZXI6IDVweCBzb2xpZCBibHVlOworfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0idGVzdDEiPjxhdHRhY2htZW50IGlkPSdhdHRhY2htZW50Jz48L2F0dGFjaG1l
bnQ+PC9kaXY+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZT10cnVlIGlkPSJ0YXJnZXQiPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oJ1Ro
ZXNlIHRlc3RzIGRyYWdnaW5nIGFuIGF0dGFjaG1lbnQgZWxlbWVudCBpbnRvIGNvbnRlbnRlZGl0
YWJsZScpOwordmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFyIHRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKKworZnVuY3Rpb24gY29udGVudEluc2VydGVkKCkg
eworICAgc2hvdWxkQmUoJ3RhcmdldC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYXR0YWNobWVudCIp
Lmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0YXJnZXQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImF0dGFjaG1lbnQiKVswXS5maWxlLm5hbWUnLCAnYXBwbGUuZ2lmJyk7
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHNldHVwQXR0YWNobWVudCgpCit7
CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgdmFyIGF0dGFjaG1lbnQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXR0YWNobWVudCcpOworICAgICAgICBhdHRhY2htZW50
LmZpbGUgPSB3aW5kb3cuaW50ZXJuYWxzLmNyZWF0ZUZpbGUoInJlc291cmNlcy9hcHBsZS5naWYi
KTsKKyAgICB9Cit9CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHNldHVwQXR0YWNobWVudCgp
OworICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCdET01Ob2RlSW5zZXJ0ZWQnLCBjb250ZW50
SW5zZXJ0ZWQsIGZhbHNlKTsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICBlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImF0dGFjaG1lbnQiKTsKKyAgICB4ID0gZS5vZmZzZXRM
ZWZ0ICsgZS5vZmZzZXRXaWR0aCAvIDI7CisgICAgeSA9IGUub2Zmc2V0VG9wICsgZS5vZmZzZXRI
ZWlnaHQgLyAyOworCisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAwKTsK
KyAgICBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOworICAgIHggPSBlLm9m
ZnNldExlZnQgKyBlLm9mZnNldFdpZHRoIC8gMjsKKyAgICB5ID0gZS5vZmZzZXRUb3AgKyBlLm9m
ZnNldEhlaWdodCAvIDI7CisKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJ
KHJldmlzaW9uIDE4MTcxMikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQCBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvY29weS1zdGFuZGFsb25lLWltYWdlCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1hbmQt
ZHJvcC1pbWFnZS1jb250ZW50ZWRpdGFibGUuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWct
YW5kLWRyb3AtaW5wdXRpbWFnZS1jb250ZW50ZWRpdGFibGUuaHRtbAogZWRpdGluZy9wYXN0ZWJv
YXJkL2RyYWctYW5kLWRyb3Atb2JqZWN0aW1hZ2UtY29udGVudGVkaXRhYmxlLmh0bWwKK2VkaXRp
bmcvcGFzdGVib2FyZC9kcmFnLWFuZC1kcm9wLWF0dGFjaG1lbnQtY29udGVudGVkaXRhYmxlLmh0
bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWRyb3AtZGVhZC1mcmFtZS5odG1sCiBlZGl0aW5n
L3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWlucHV0LXRleHRhcmVhLmh0bWwKIGVkaXRpbmcvcGFzdGVi
b2FyZC9kcmFnLWRyb3AtbGlzdC5odG1sCg==
</data>
<flag name="review"
          id="273825"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>