<?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>105367</bug_id>
          
          <creation_ts>2012-12-18 16:32:04 -0800</creation_ts>
          <short_desc>[chromium] Creation of dedicated workers (isolates) leaks reference to HTMLDocument</short_desc>
          <delta_ts>2013-02-10 11:07:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>106016</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brandon Jones">bajones</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>abarth</cc>
    
    <cc>danno</cc>
    
    <cc>dimich</cc>
    
    <cc>gman</cc>
    
    <cc>haraken</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>kbr</cc>
    
    <cc>levin</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>pfeldman</cc>
    
    <cc>simonjam</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tonyg</cc>
    
    <cc>tzik</cc>
    
    <cc>ulan</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>794165</commentid>
    <comment_count>0</comment_count>
    <who name="Brandon Jones">bajones</who>
    <bug_when>2012-12-18 16:32:04 -0800</bug_when>
    <thetext>It appears that some C++ objects associated with Javascript wrappers are not being properly destroyed if a Worker was created during page execution.

We have primarily noticed this with WebGL contexts, which provide a convenient visualization of the issue in older versions of Chrome, but suspect that it may be happening with other objects as well. If a WebGL context and Worker object are both created on the same page, refreshing that page several times will force the WebGL context to aquire a smaller than requested backbuffer after hitting internal memory limits. On pages without workers these limits are not hit because objects are collected properly.

A more concrete illustration is to add some instrumentation to the WebKit source. In WebCore/html/canvas/WebGLRenderingContext.cpp, add a logging to the WebGLRenderingContext constructor and destructor so that you can monitor when they are created and destroyed. (This modification is included as a patch in the attached zip).

To see the issue using the attached tests extract them locally and make sure they are accessible from a local web server (If you don&apos;t have a local web server set up, navigate to the folder the files were extracted to and run &quot;python -m SimpleHTTPServer&quot;. The files should now be accessible at http://localhost:8000) Viewing index.html will then start the test, which loads a simple WebGL page with a worker in an iframe and refreshes it multiple times. If the WebGL backbuffer resolution is different than the requested resolution the canvas will turn red and the test will stop.

If you have added logging to the WebGLRenderingContext constructor and destructor you will see that the destructor is never called. Contrast this with the behavior of index-no-worker.html, which only differs in that the page does not create a worker and displays expected garbage collection patterns where the destructors are called in batches. In the case where the contexts are not destroyed the Chrome heap profiler indicates that there are no live WebGLRenderingContext objects other than the ones on the current instance of the page, but even a full GC will not force the destructors to be called properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794167</commentid>
    <comment_count>1</comment_count>
      <attachid>180056</attachid>
    <who name="Brandon Jones">bajones</who>
    <bug_when>2012-12-18 16:33:05 -0800</bug_when>
    <thetext>Created attachment 180056
Test pages to provoke the described error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794192</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-12-18 17:00:43 -0800</bug_when>
    <thetext>+some people who worked on the DOM bindings, isolates, and GC recently

Initially we thought this was a bug in V8&apos;s GC, but because the WebGLRenderingContext objects aren&apos;t alive according to the heap profiler, I think it&apos;s a bug in the DOM bindings related to isolates. I have a bad feeling that if a dedicated worker is created, it may be preventing C++ objects which are referred to by JavaScript objects (whether those objects are in the DOM or not -- the WebGLRenderingContext isn&apos;t) from being properly unreferenced and deleted.

I&apos;m raising this to P1 until the cause is at least understood, as this bug could be causing major memory leaks for applications using workers. I don&apos;t think it&apos;s specific to WebGL.

Please CC: anyone who may have worked in this area.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797646</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-12-27 12:34:45 -0800</bug_when>
    <thetext>I&apos;ve been investigating this and have some updates which I&apos;ll post shortly. Assigning to myself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797660</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-12-27 13:16:38 -0800</bug_when>
    <thetext>CC&apos;ing a few more people who may be interested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797663</commentid>
    <comment_count>5</comment_count>
      <attachid>180817</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-12-27 13:19:50 -0800</bug_when>
    <thetext>Created attachment 180817
Simplified test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797664</commentid>
    <comment_count>6</comment_count>
      <attachid>180818</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-12-27 13:22:10 -0800</bug_when>
    <thetext>Created attachment 180818
Patch used to debug problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797666</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-12-27 13:36:51 -0800</bug_when>
    <thetext>The problem is that the WebWorkerClientImpl instance (Source/WebKit/chromium/src/WebWorkerClientImpl.cpp) is never deleted, leaking a reference to the HTMLDocument via m_scriptExecutionContext. This prevents the destruction of all attached DOM elements, including the Canvas, so that when the JavaScript reference to the WebGLRenderingContext is GC&apos;d, it doesn&apos;t ultimately cause the Canvas to be deleted. Since the Canvas owns its m_context via OwnPtr, the WebGL context and all associated resources are never cleaned up.

Basically, any page using Workers in Chromium leaks the entire DOM when the page is reloaded.

I found that the same leak didn&apos;t exist in Safari, despite a strong hunch that the problem wasn&apos;t a leak of a reference outside Chromium&apos;s WebKit API boundary. That should have been a hint about where to look.

This bug was pretty tricky to track down. I&apos;d appreciate any suggestions about how it could have been done better or more efficiently. Basically, per the attached patch, I instrumented TreeShared::ref() and deref() to fire when operating upon HTMLDocuments, since I found from early debugging that the Canvas wasn&apos;t being deleted and that was because the Document had a nonzero refcount at the last call to unref(). However, ref/unref were called too often against the document to debug directly. I added a mechanism to suppress the firing inside ref/unref and added those suppressions throughout WebKit. That got pretty close to the bug, but it turned out I suppressed the key place (within a call to ScriptElement::executeScript) where the unmatched call to HTMLDocument::ref was being made. I only got lucky because I saw a call to unref in WorkerMessagingProxy::~WorkerMessagingProxy and didn&apos;t see the construction, so made the suppression in executeScript more precise, which exposed the unbalanced call from WebWorkerClientImpl::WebWorkerClientImpl.

I don&apos;t have a fix yet but am going to try to find one, as well as add a test to ensure this leak doesn&apos;t reappear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798371</commentid>
    <comment_count>8</comment_count>
      <attachid>180978</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-12-31 09:32:02 -0800</bug_when>
    <thetext>Created attachment 180978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798738</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-02 11:02:33 -0800</bug_when>
    <thetext>Interesting!  Who is the best person to review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798746</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2013-01-02 11:14:43 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Interesting!  Who is the best person to review this patch?

I&apos;d guess dimich@</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798923</commentid>
    <comment_count>11</comment_count>
      <attachid>180978</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2013-01-02 14:42:29 -0800</bug_when>
    <thetext>Comment on attachment 180978
Patch

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

r- due to &quot;void*&quot; comment.

&gt; Source/WebCore/workers/WorkerLoaderProxy.h:62
&gt; +        virtual void* toWebWorkerBase() = 0;

Lets try to forward-declare the return type here.

In general, it&apos;s unfortunate to introduce the &apos;embedder context&apos; into WorkerLoaderProxy. Is there a better solution?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799105</commentid>
    <comment_count>12</comment_count>
      <attachid>181115</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-01-02 17:08:57 -0800</bug_when>
    <thetext>Created attachment 181115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799118</commentid>
    <comment_count>13</comment_count>
      <attachid>180978</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-01-02 17:22:12 -0800</bug_when>
    <thetext>Comment on attachment 180978
Patch

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

&gt;&gt; Source/WebCore/workers/WorkerLoaderProxy.h:62
&gt;&gt; +        virtual void* toWebWorkerBase() = 0;
&gt; 
&gt; Lets try to forward-declare the return type here.
&gt; 
&gt; In general, it&apos;s unfortunate to introduce the &apos;embedder context&apos; into WorkerLoaderProxy. Is there a better solution?

New patch uploaded which forward declares the return type, and avoids static_casts in the implementations.

I gave this a lot of thought but can&apos;t come up with a better solution. The basic problem is that the class hierarchies of Chromium&apos;s dedicated and shared worker implementations now diverge significantly. It used to be the case in Chromium that every implementation of WorkerLoaderProxy that hung off the WorkerThread derived from WebWorkerBase. That is now no longer the case. For dedicated workers, WebCore&apos;s WorkerMessagingProxy is now used as the base class. WebSharedWorkerImpl continues to derive from WebWorkerBase. This means that it is no longer legal to cast between WebWorkerBase* and WorkerLoaderProxy*.

It would be possible to add a static method &quot;WebWorkerBase::fromWorkerLoaderProxy&quot;, and avoid touching WorkerLoaderProxy.h, but it would be very fragile. If any new implementation of WorkerLoaderProxy were added, the implementation of WebWorkerBase::fromWorkerLoaderProxy would have to be updated -- and there is no way to force a compilation failure to give the developer a hint that that code needs to be updated. The presence of the pure virtual in WorkerLoaderProxy provides this essential information.

In sum, as poor as it is to modify WorkerLoaderProxy with a Chromium-specific forward declaration and method, I think it is the best technical solution given the constraints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799131</commentid>
    <comment_count>14</comment_count>
      <attachid>181115</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2013-01-02 17:36:50 -0800</bug_when>
    <thetext>Comment on attachment 181115
Patch

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

r+ with a note.

&gt; Source/WebKit/chromium/src/WebWorkerClientImpl.cpp:73
&gt;  // Delegates implementation of Worker{Loader,Context,Object}Proxy to WorkerMessagingProxy.

This comment seems old now... thsi class does not really delegate, it is a WMP... Remove?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799133</commentid>
    <comment_count>15</comment_count>
      <attachid>181115</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-01-02 17:39:22 -0800</bug_when>
    <thetext>Comment on attachment 181115
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebWorkerClientImpl.cpp:73
&gt;&gt;  // Delegates implementation of Worker{Loader,Context,Object}Proxy to WorkerMessagingProxy.
&gt; 
&gt; This comment seems old now... thsi class does not really delegate, it is a WMP... Remove?

You&apos;re right. I&apos;ll update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799164</commentid>
    <comment_count>16</comment_count>
      <attachid>181129</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-01-02 18:41:54 -0800</bug_when>
    <thetext>Created attachment 181129
Patch for landing

Fixed comment and small typo in failure case of layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799190</commentid>
    <comment_count>17</comment_count>
      <attachid>181129</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-02 19:23:49 -0800</bug_when>
    <thetext>Comment on attachment 181129
Patch for landing

Clearing flags on attachment: 181129

Committed r138693: &lt;http://trac.webkit.org/changeset/138693&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799191</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-02 19:23:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>180056</attachid>
            <date>2012-12-18 16:33:05 -0800</date>
            <delta_ts>2012-12-18 16:33:05 -0800</delta_ts>
            <desc>Test pages to provoke the described error</desc>
            <filename>webgl-context-collection-test.zip</filename>
            <type>application/zip</type>
            <size>8124</size>
            <attacher name="Brandon Jones">bajones</attacher>
            
              <data encoding="base64">UEsDBBQAAAAIAFR+kkHKLziYxwEAAFAEAAA5ABwAd2ViZ2wtY29udGV4dC1jb2xsZWN0aW9uLXRl
c3QvV2ViR0xSZW5kZXJpbmdDb250ZXh0LnBhdGNoVVQJAANPAdFQvAHRUHV4CwABBGSyAgAEiBMA
AJ1R0W7aMBR9z1dcVZqULglJGVBGtamMUfrAtAmQ9jKpcuJr8BTbke1Q2KR9e50EaDWlDyUvsc89
99zrcyhnDKJozS2QeKlKnWH8E9OJ0hhvrMjjjMgtMRU2my9QUtRcridKWtzZTlYUkJ7V5nGH7YBi
F7td7HSurxLSTRhcJcmg1/OiKDpzHy8IgnN3ur2FqNcfhAMIqt8QHNDKHo1aYf9+9W0+qadMcxQo
7XsoiDFIGzCEH8SD6gtBPJi9tBs0/A/SqdZKm5VyOkbl6DOSG7x8pspSzOb/kcZ5rh6R+oLsjrUD
dKI4hb9eUImwwq1pmW+sW1iHcPGWZ8G74pe8CMFuuLm88YJmr/FyOV2sfPGQNSxXqfETMNOqLOBT
4+DkBTYaZRqJRb+9JfpMKD06ephZJdMfXlfJ9Icfm2S2itPX4qkVRKGxMn/loFLjndKCWH82+fAV
naHA6rvzyHtN5V97ym+3tV2o3dc4hgUKtUUgeQ4aGWqUGRqwqtnze/obM2vAKODMNeMeiMbqADkx
9rnlpFdzHrmTSxGYRqTu4J7/oukQAHDj+qvp1BGVqAnH2rpKp3OMLFWlpGOtyf5LydxEl3Ry4z0B
UEsDBBQAAAAIAJJokkHybUKDJAMAAJ4GAAAsABwAd2ViZ2wtY29udGV4dC1jb2xsZWN0aW9uLXRl
c3QvdGVzdC1wYWdlLmh0bWxVVAkAA2Pa0FDy9dBQdXgLAAEEZLICAASIEwAAfVRNb9s4EL37V0x4
cndj2VmgRRHLBho33QZokSLrRdBTQYljiQ1FaknaitH0v++QlB21TaODSGnevPl6ZH4ymYwA1rV0
0PIKobVmZ+7Qga8R0Fqjpdk6qLgtgrk0SmHppdFQYM130ljoatRgcWPR1SgyorvyUFrknmg43GLx
9wdy1B7vPXAtaN+03PYxLP63RedR0M4ZtY3c3gQbMfHSb7mCgpd3xXazQTtAZXC1CbA9EFnkcrxJ
m5LrHXdARZUKySqIkdgqi6hPQQ7chAysqD1In8AuRCeXDN6E5cilhSxjSb7mnshai7vYm740B9QP
BG08tYY6Qp1s0ar9z70LLZpMlqP85O31av350yXUvlH0HRZwfq9wwRpuK6nPYTansQghdRX2bElx
8xq5IHiDnkNZU8LoF2zrN5PXye6lV7j8Rzatwp+630lfw62xd2jzacKN8mlPWBixfz4+mB3ajTLd
OdRSCNR9RocWiQUrGdAfoEjC1wt29ur1jEGNsqopybPZyxmL5j5MRJ3DXy9ftffzHnb4ZEvISZ3g
Sq7iAGFDI4oiLdB7kkLoIkWfpvBxL+RuGQPcHGW1SskJ2aB2JBt3DrlruY7pHtXHlpNJPg3/l3lh
p4nkTVLfRVLe0wxJoQP3mFKfR+5KK1uf2KZTWJmmCVozW08yInkqqTGeiYFqO6kUaKRWQ5WUGN13
3EKzT8ODBQG6fpJj1sU1++rYi/noCC4JJUy5DRGzCv2lwrC92F+JMc2JoAdkpQhaBswqCWXM8J7E
Gwr2XE06LCp15JabcaWylGwWJwgnC+LIhOUdKSW16zYaHh6iCz2PLmnMT/m8j5YX8G306BOO5Moo
Y8dn2ewUZscXffYlfAdUDn/jdcD+6jUagkNJq+sP1zdfLv599+6Slqs1PATz28tP6/eDv4M2hFtM
D/KlSoTpskr1bYRQ4rw3JnDWGuc/onOk4zG7oZO3Z6fA/mDHrI5TIW0mBT8zxkf9DsbZX5rPuPWi
PZRyiJRJrdGuU+ZlP9s/gd0zepf94FKcxPCDw9MKOLg/Pet5PC2HU5JPwx0Ur6R4Jf4PUEsDBBQA
AAAIAEh/kkFU1V9wHgMAALUGAAAoABwAd2ViZ2wtY29udGV4dC1jb2xsZWN0aW9uLXRlc3QvaW5k
ZXguaHRtbFVUCQADFwPRUBgD0VB1eAsAAQRksgIABIgTAACtVN9P2zAQfs9fceRlRaXphLRpomml
wWBDQmJCaGiPbnxJLJw484+GDvjfd7bTDgrsaU9O7Lv7vrv77vK9ySQBuK6FgVJIBK7QQKssFKq1
TLTA2jV9cwwXWiydFW0FVoGtESqml6zyb1JiYYVqKdjSVRmc23cGVCvX0DndKYNACOSlsdRo6uBd
1EJy6HwADwRSqY7w6EqrlbpFiuXNKB4wZ1XDrCiYlOuM+CIY1tAb1mwllIaCtfTjPbkrkMNyDarD
lrgaHwaNnXigrLaNDBgDEZ+MsGBwhZpJsKJB79Cw1gWoZDJZJEm+9+Xy5Prn91Pw/osk3xzIOB0N
WkbZMG3QzlNny8mnlK6tsBIXN7j8egEnVD28s3CFEhlV45oY5dNokeTTIdBS8TUdotQ+OcHnaa2M
TcHYtcR52gtu6yM4/PCxu5tBjaKq7eY3XeTT6EcBuFgtLin9UD9OuUkqhvYtNIqaTH0wiKCc7Ryx
8NbRZwDmwnSSrQ3kDGoq1Dx9XsB08fw/n7JF9jTO1k+0HO8Gnx8C+9AJ6IWtCRx6pW9Rm2fuptCi
s4tkxTT45GFOmixcg63NKrSnEv3n8fqcj2Jx9mfB1gc+t9REr0JDXocf4kPhtCaP7Rs9vZ8lSena
INiNEM585qN9uKfui3L0wivfQYiW8CL8eDyL97HWmVTVKPXdTg9e2B5Aqkq634kcA/jkMqML4rtb
fm/wCChJR/cvwT5LSZLeVqJQTSfR0kwYVxRoTOlI2GlAeUwen1TCoww6HQrh61dJYhDI+A1A9G+o
qarPKjnYzmLF9iq5v0MHtVZ6lJ4x2izcq479ckIjxJEohpEotWogKi8dctdonW4jwxi9khmN+IqZ
LAwB7M2JWMY162mCj11Zor4JDw8PIcJf+zgmrzl8Cy9vkI4coyH0zIRR6rWifWHEbzyCFMbBb0B7
hcoY0juyegv33118Fb9QJKDC/k8GsDMAW1n0sc2M89MVdf1CGGo+UmVoQxqSIul2o5wReovt7IS/
jDNainMS7xXtNtLbkOQzkQ1gdCa7LPLpZhPQ57AXp3Ht/gFQSwMEFAAAAAgAF2iSQdyf31CFAAAA
qQAAACcAHAB3ZWJnbC1jb250ZXh0LWNvbGxlY3Rpb24tdGVzdC93b3JrZXIuanNVVAkAA33Z0FBF
/NBQdXgLAAEEZLICAASIEwAAPY0xDoJAFAX7PcULFTRyAEoLLbTShHqBJ2zY5ZP9H/X4YkysZzJT
17iFtEbiJXlmxqYcYII1y1NmomV3uqCXxfg2ZEZ6JbptVMiC45Ql0dU17hPhe9t8/MmLQR6w6R8O
ipCSN+awO/vhy/bOwblV1K5U9SPL4swYBa3kOBRV4/ooyrJqPlBLAwQUAAAACAA3f5JBOjuQHYQC
AAA4BQAANwAcAHdlYmdsLWNvbnRleHQtY29sbGVjdGlvbi10ZXN0L3Rlc3QtcGFnZS1uby13b3Jr
ZXIuaHRtbH5VVAkAA/kC0VD5AtFQdXgLAAEEZLICAASIEwAAfVTbbtswDH3PV7B6SrfaSQe0KBIn
wJqmW4EOLboMxZ4GxWJsoYrlScoN6/59lORchmXNgy2b55CHPIyzkyRpAUxKaaHmBQLdpcDKyZwr
cBocWpf4SFq6uTqD6cKB0Gih0g5yg9whcFhp84IGeCUomSvR4Ewb3ANro5f6BX2IKtgFpq0kGbay
k5uH0eT74xh8cnr2N7Buo3DA5twUsupBt0/KhJBV4c9sSBWyErkg+Bwdh7zkxqIbsIWbJVcx7qRT
OPwq57VCeMbpp3vIdeVw7WAlXampiecgOetEaCvrNDmnWmzelgB6iWam9KoHpRQ0rEZUzqsl9+Mb
sJwBvQEqJlw5YOeXV10GJcqiJJ3n3YsuC+GmTED14MPFZb3uN7DtIxtCRh6BJT9QeEdm0kWrpugc
Dd0Pkqp3YvlwFnI5DAWe8OeCDCTiKIoTco6VlbqyPchszasg12xhbJgkWce/H2ZT04lJPuZuQctw
vZjNqNzxDDxgDuhBUqMjs7mRtYvZltxADgPajXxBmVxaoBsr9MfrzZ1o0+xO+ztkoQiae8wo+tdm
uK7ReBGOq2SF00J5QmDIWbtQaRxEGqYKJwPKkQrDV+RebOE5BF5fA4V+e0oc/THO5xA5hV+tPUch
NyOttGmfp90z6O4u9Ni08BtQWfwPa4v9l9U6BPuWRg/3D08/rr/d3o7pdjeBVx++GT9OPh+8PRhD
zQ0NaK+XOhF6lRaqGSP4FvtNMILTWlv3Ba2l3WqzJ/o3bNgZsHdsp2rnCu1L3Ko3bNzv1IGdcU3e
ojWLtG1lWymVVYVmEpXnjbfvga0ZXfPGuFgnZviLcHwDtvTjXvfDBm83N+v470L4TIQv1R9QSwME
FAAAAAgAS3+SQaXa5d4sAwAA5gYAADIAHAB3ZWJnbC1jb250ZXh0LWNvbGxlY3Rpb24tdGVzdC9p
bmRleC1uby13b3JrZXIuaHRtbFVUCQADHgPRUB8D0VB1eAsAAQRksgIABIgTAACtVE1v2zgQvetX
THSpg9TyokAXRS0b6Ee6GyBoiyJosEdaHElEKVFLDq24bf77DknZbZ14Tz1R4nw9vnkz5dl8ngHc
tMpBrTSCNOigNwSV6UmoHkS/42+J8cKqjSfVN0AGqEVohN2IJti0xoqU6TnZxjcFXNETB6bXOxi8
HYxD4AocZbG26NoYXbVKSxhCglAItDED1+Mra7bmC3Ku4Mb5QHgynSBVCa13BeNFcKJjG7Ziq4yF
SvT8EyKlr1DCZgdmwJ6xupAGHc1DoXlv5qOxX9AWLXU6VpsghWcpAodbtEIDqQ5DaCd6H4tm8/k6
y8qztx/e3Pzz8RJC/Dor9wcKyUeHJPhdwjqkVe6pnr/I+ZoUaVzf4uava3jDPOIdwSfUKJiXG8YG
s/cGbiOu83KRvLNyMSXdGLnjQ9U2PFnJVd4aRzk42mlc5aOS1L6EZ8//HO6W0KJqWtr/5utykeI4
gVTb9QcmJbIq+Z2aKbKhsc5w67k7DhGMp8FTuQjeKWYqLJUbtNg5KAW0TNoqP0Vrvj5lKRdiXfyc
+5BL9RLvpujPCsfYMxgVtZDi3S+xrrJqoHW2FRYCG7Bi6Va+w56KBulSY/h8vbuSs8TW+TL6hqxX
xB0OYnUc9ex5MlTeWo442Nj0xzLLat9HXe9V8i5QMTuHbywNVc8eRJVHFZInPEh/cbFM94n8Qptm
lgcp5E8f+D6F3NR8f5Q5JQiPK5ytGO/pfgTXe0DNcvv2sOwrrVn5B04q0w0aiYfI+apC52rP+s9j
vfvs/idOQr1JzhMlgclGM5YIK6wMfsgt99aMRaMn32Xi7qzR50dw0FpjZ/k7watIBkGKf72yCGly
qmlyams6SKLMJxYskrd9QpiyN7rgnbAVrojzAWcrBlZIK0Ye9Ne+rtHeRsP37zHDD/80QY8F/B0t
J0AnjMkRRuHilI3W8Fpx6iu+hBwuYtxU7REoF5Dfsdepuv/fxUfrV4alVNHvRABHo3CQxZjaLKS8
3HLXr5Xj5iMzw4vUsShZwXvlzDB4HKYo/hVS8O5csYw/8dpjvU2P/EVkUzE+s2MU5WK/E/hzWpmL
tJ3/A1BLAwQUAAAACABKf5JBpdrl3iwDAADmBgAAMwAcAHdlYmdsLWNvbnRleHQtY29sbGVjdGlv
bi10ZXN0L2luZGV4LW5vLXdvcmtlci5odG1sflVUCQADGwPRUBwD0VB1eAsAAQRksgIABIgTAACt
VE1v2zgQvetXTHSpg9TyokAXRS0b6Ee6GyBoiyJosEdaHElEKVFLDq24bf77DknZbZ14Tz1R4nw9
vnkz5dl8ngHctMpBrTSCNOigNwSV6UmoHkS/42+J8cKqjSfVN0AGqEVohN2IJti0xoqU6TnZxjcF
XNETB6bXOxi8HYxD4AocZbG26NoYXbVKSxhCglAItDED1+Mra7bmC3Ku4Mb5QHgynSBVCa13BeNF
cKJjG7Ziq4yFSvT8EyKlr1DCZgdmwJ6xupAGHc1DoXlv5qOxX9AWLXU6VpsghWcpAodbtEIDqQ5D
aCd6H4tm8/k6y8qztx/e3Pzz8RJC/Dor9wcKyUeHJPhdwjqkVe6pnr/I+ZoUaVzf4uava3jDPOId
wSfUKJiXG8YGs/cGbiOu83KRvLNyMSXdGLnjQ9U2PFnJVd4aRzk42mlc5aOS1L6EZ8//HO6W0KJq
Wtr/5utykeI4gVTb9QcmJbIq+Z2aKbKhsc5w67k7DhGMp8FTuQjeKWYqLJUbtNg5KAW0TNoqP0Vr
vj5lKRdiXfyc+5BL9RLvpujPCsfYMxgVtZDi3S+xrrJqoHW2FRYCG7Bi6Va+w56KBulSY/h8vbuS
s8TW+TL6hqxXxB0OYnUc9ex5MlTeWo442Nj0xzLLat9HXe9V8i5QMTuHbywNVc8eRJVHFZInPEh/
cbFM94n8Qptmlgcp5E8f+D6F3NR8f5Q5JQiPK5ytGO/pfgTXe0DNcvv2sOwrrVn5B04q0w0aiYfI
+apC52rP+s9jvfvs/idOQr1JzhMlgclGM5YIK6wMfsgt99aMRaMn32Xi7qzR50dw0FpjZ/k7watI
BkGKf72yCGlyqmlyams6SKLMJxYskrd9QpiyN7rgnbAVrojzAWcrBlZIK0Ye9Ne+rtHeRsP37zHD
D/80QY8F/B0tJ0AnjMkRRuHilI3W8Fpx6iu+hBwuYtxU7REoF5Dfsdepuv/fxUfrV4alVNHvRABH
o3CQxZjaLKS83HLXr5Xj5iMzw4vUsShZwXvlzDB4HKYo/hVS8O5csYw/8dpjvU2P/EVkUzE+s2MU
5WK/E/hzWpmLtJ3/A1BLAwQUAAAACABIf5JBVNVfcB4DAAC1BgAAKQAcAHdlYmdsLWNvbnRleHQt
Y29sbGVjdGlvbi10ZXN0L2luZGV4Lmh0bWx+VVQJAAMXA9FQFwPRUHV4CwABBGSyAgAEiBMAAK1U
30/bMBB+z19x5GVFpemEtGmiaaXBYENCYkJoaI9ufEksnDjzj4YO+N93ttMOCuxpT07su/u+u/vu
8r3JJAG4roWBUkgErtBAqywUqrVMtMDaNX1zDBdaLJ0VbQVWga0RKqaXrPJvUmJhhWop2NJVGZzb
dwZUK9fQOd0pg0AI5KWx1Gjq4F3UQnLofAAPBFKpjvDoSquVukWK5c0oHjBnVcOsKJiU64z4IhjW
0BvWbCWUhoK19OM9uSuQw3INqsOWuBofBo2deKCsto0MGAMRn4ywYHCFmkmwokHv0LDWBahkMlkk
Sb735fLk+uf3U/D+iyTfHMg4HQ1aRtkwbdDOU2fLyaeUrq2wEhc3uPx6ASdUPbyzcIUSGVXjmhjl
02iR5NMh0FLxNR2i1D45wedprYxNwdi1xHnaC27rIzj88LG7m0GNoqrt5jdd5NPoRwG4WC0uKf1Q
P065SSqG9i00ippMfTCIoJztHLHw1tFnAObCdJKtDeQMairUPH1ewHTx/D+fskX2NM7WT7Qc7waf
HwL70Anoha0JHHqlb1GbZ+6m0KKzi2TFNPjkYU6aLFyDrc0qtKcS/efx+pyPYnH2Z8HWBz631ESv
QkNehx/iQ+G0Jo/tGz29nyVJ6dog2I0Qznzmo324p+6LcvTCK99BiJbwIvx4PIv3sdaZVNUo9d1O
D17YHkCqSrrfiRwD+OQyowviu1t+b/AIKElH9y/BPktJkt5WolBNJ9HSTBhXFGhM6UjYaUB5TB6f
VMKjDDodCuHrV0liEMj4DUD0b6ipqs8qOdjOYsX2Krm/Qwe1VnqUnjHaLNyrjv1yQiPEkSiGkSi1
aiAqLx1y12idbiPDGL2SGY34ipksDAHszYlYxjXraYKPXVmivgkPDw8hwl/7OCavOXwLL2+Qjhyj
IfTMhFHqtaJ9YcRvPIIUxsFvQHuFyhjSO7J6C/ffXXwVv1AkoML+TwawMwBbWfSxzYzz0xV1/UIY
aj5SZWhDGpIi6XajnBF6i+3shL+MM1qKcxLvFe020tuQ5DORDWB0Jrss8ulmE9DnsBence3+AVBL
AwQUAAAACAA3f5JBOjuQHYQCAAA4BQAANgAcAHdlYmdsLWNvbnRleHQtY29sbGVjdGlvbi10ZXN0
L3Rlc3QtcGFnZS1uby13b3JrZXIuaHRtbFVUCQAD+QLRUPoC0VB1eAsAAQRksgIABIgTAAB9VNtu
2zAMfc9XsHpKt9pJB7QoEifAmqZbgQ4tugzFngbFYmyhiuVJyg3r/n2U5FyGZc2DLZvnkIc8jLOT
JGkBTEppoeYFAt2lwMrJnCtwGhxal/hIWrq5OoPpwoHQaKHSDnKD3CFwWGnzggZ4JSiZK9HgTBvc
A2ujl/oFfYgq2AWmrSQZtrKTm4fR5PvjGHxyevY3sG6jcMDm3BSy6kG3T8qEkFXhz2xIFbISuSD4
HB2HvOTGohuwhZslVzHupFM4/CrntUJ4xumne8h15XDtYCVdqamJ5yA560RoK+s0OadabN6WAHqJ
Zqb0qgelFDSsRlTOqyX34xuwnAG9ASomXDlg55dXXQYlyqIknefdiy4L4aZMQPXgw8Vlve43sO0j
G0JGHoElP1B4R2bSRaum6BwN3Q+Sqndi+XAWcjkMBZ7w54IMJOIoihNyjpWVurI9yGzNqyDXbGFs
mCRZx78fZlPTiUk+5m5By3C9mM2o3PEMPGAO6EFSoyOzuZG1i9mW3EAOA9qNfEGZXFqgGyv0x+vN
nWjT7E77O2ShCJp7zCj612a4rtF4EY6rZIXTQnlCYMhZu1BpHEQapgonA8qRCsNX5F5s4TkEXl8D
hX57Shz9Mc7nEDmFX609RyE3I620aZ+n3TPo7i702LTwG1BZ/A9ri/2X1ToE+5ZGD/cPTz+uv93e
jul2N4FXH74ZP04+H7w9GEPNDQ1or5c6EXqVFqoZI/gW+00wgtNaW/cFraXdarMn+jds2Bmwd2yn
aucK7Uvcqjds3O/UgZ1xTd6iNYu0bWVbKZVVhWYSleeNt++BrRld88a4WCdm+ItwfAO29ONe98MG
bzc36/jvQvhMhC/VH1BLAwQKAAAAAABLf5JBAAAAAAAAAAAAAAAAHgAcAHdlYmdsLWNvbnRleHQt
Y29sbGVjdGlvbi10ZXN0L1VUCQADHgPRUB8D0VB1eAsAAQRksgIABIgTAABQSwECHgMUAAAACABU
fpJByi84mMcBAABQBAAAOQAYAAAAAAABAAAAoIEAAAAAd2ViZ2wtY29udGV4dC1jb2xsZWN0aW9u
LXRlc3QvV2ViR0xSZW5kZXJpbmdDb250ZXh0LnBhdGNoVVQFAANPAdFQdXgLAAEEZLICAASIEwAA
UEsBAh4DFAAAAAgAkmiSQfJtQoMkAwAAngYAACwAGAAAAAAAAQAAAKCBOgIAAHdlYmdsLWNvbnRl
eHQtY29sbGVjdGlvbi10ZXN0L3Rlc3QtcGFnZS5odG1sVVQFAANj2tBQdXgLAAEEZLICAASIEwAA
UEsBAh4DFAAAAAgASH+SQVTVX3AeAwAAtQYAACgAGAAAAAAAAQAAAKCBxAUAAHdlYmdsLWNvbnRl
eHQtY29sbGVjdGlvbi10ZXN0L2luZGV4Lmh0bWxVVAUAAxcD0VB1eAsAAQRksgIABIgTAABQSwEC
HgMUAAAACAAXaJJB3J/fUIUAAACpAAAAJwAYAAAAAAABAAAAoIFECQAAd2ViZ2wtY29udGV4dC1j
b2xsZWN0aW9uLXRlc3Qvd29ya2VyLmpzVVQFAAN92dBQdXgLAAEEZLICAASIEwAAUEsBAh4DFAAA
AAgAN3+SQTo7kB2EAgAAOAUAADcAGAAAAAAAAQAAAKCBKgoAAHdlYmdsLWNvbnRleHQtY29sbGVj
dGlvbi10ZXN0L3Rlc3QtcGFnZS1uby13b3JrZXIuaHRtbH5VVAUAA/kC0VB1eAsAAQRksgIABIgT
AABQSwECHgMUAAAACABLf5JBpdrl3iwDAADmBgAAMgAYAAAAAAABAAAAoIEfDQAAd2ViZ2wtY29u
dGV4dC1jb2xsZWN0aW9uLXRlc3QvaW5kZXgtbm8td29ya2VyLmh0bWxVVAUAAx4D0VB1eAsAAQRk
sgIABIgTAABQSwECHgMUAAAACABKf5JBpdrl3iwDAADmBgAAMwAYAAAAAAABAAAAoIG3EAAAd2Vi
Z2wtY29udGV4dC1jb2xsZWN0aW9uLXRlc3QvaW5kZXgtbm8td29ya2VyLmh0bWx+VVQFAAMbA9FQ
dXgLAAEEZLICAASIEwAAUEsBAh4DFAAAAAgASH+SQVTVX3AeAwAAtQYAACkAGAAAAAAAAQAAAKCB
UBQAAHdlYmdsLWNvbnRleHQtY29sbGVjdGlvbi10ZXN0L2luZGV4Lmh0bWx+VVQFAAMXA9FQdXgL
AAEEZLICAASIEwAAUEsBAh4DFAAAAAgAN3+SQTo7kB2EAgAAOAUAADYAGAAAAAAAAQAAAKCB0RcA
AHdlYmdsLWNvbnRleHQtY29sbGVjdGlvbi10ZXN0L3Rlc3QtcGFnZS1uby13b3JrZXIuaHRtbFVU
BQAD+QLRUHV4CwABBGSyAgAEiBMAAFBLAQIeAwoAAAAAAEt/kkEAAAAAAAAAAAAAAAAeABgAAAAA
AAAAEADoQcUaAAB3ZWJnbC1jb250ZXh0LWNvbGxlY3Rpb24tdGVzdC9VVAUAAx4D0VB1eAsAAQRk
sgIABIgTAABQSwUGAAAAAAoACgCJBAAAHRsAAAAA
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>180817</attachid>
            <date>2012-12-27 13:19:50 -0800</date>
            <delta_ts>2012-12-27 13:19:50 -0800</delta_ts>
            <desc>Simplified test case</desc>
            <filename>testcase.zip</filename>
            <type>application/zip</type>
            <size>1071</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAMyBm0EAAAAAAAAAAAAAAAAJABwAdGVzdGNhc2UvVVQJAAMvutxQOLrcUHV4CwAB
BPUBAAAEFAAAAFBLAwQUAAAACADGgZtBaegoTPIBAACRAwAAEgAcAHRlc3RjYXNlL21haW4uaHRt
bFVUCQADI7rcUOC43FB1eAsAAQT1AQAABBQAAAB9U01v2zAMvftXsDoUDrrG6QYUw2LnkCxdC2TI
UKQIdhpkm7G1KVIg0XGCov99kuX0C8N8MCnxvSf6UU7Pvi5nq58/5lDTVk6i9BSQly5skTgUNTcW
KWMNbS4/M7dNgiRO1ph/W8BMK8IDwT1K5BZhhZbSJCCi1BZG7GgSbRpVkNAKdEO7hmJLZgCPEUCp
i2aLioYV0lyiT6fHuzJmhVZWS2SDoVAKze3q+wIuMnBEuACW5mbCxtFTlCanI9KkbzrX5dGFUuxB
lNmz0CRN3JYrFFztuQ21LmXQipLqjF1dj0YMahRVTaeVpaPEjHWIL/Dp4+4w7hH9ygsHnVff238m
W9XCAjlLAJVtDLpFzQmCdUWwzgI3CCb4V8LO6B0aeYS2RgUcWm3+oAGn07gyG4yjKEmc7VvvlfcT
SIOtdev0jMGCIMea74U2kcIW1h09ZkFm+Nt2CntuoPch+88Mgj2O4PGVdNiw5ZH94GOGB9ev8Cwu
L1vMK+kZYgPxWSXDlE92PCieS/QNO4G3LnjOE6B0V8gzPL0/q7Messw1MCwNb4Wqps1mg2bdFc7P
Hdw/PTwM51/4264SOgJfLZzlZqalNvFoOPoAV/51ylw/AK86es94Ab9lRC/A2CWz5WJ5/2v6cHMz
d+FuNXh/a/vrmoQ/7y9QSwMEFAAAAAgAvJiYQawaGfdNAAAATwAAABIAHAB0ZXN0Y2FzZS93b3Jr
ZXIuanNVVAkAA+Tt2FDhuNxQdXgLAAEE9QEAAAQUAAAABcE7EkAwFAXQ3ipuSZUFKBUanUItcQeT
z8u8JFi+c4zBescciFfUU9EKD1RBVnnEExvtvMBJqvwqlIF7IWw7CyRhulQiOxeksB/G7gdQSwEC
HgMKAAAAAADMgZtBAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UEAAAAAdGVzdGNhc2UvVVQFAAMv
utxQdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAxoGbQWnoKEzyAQAAkQMAABIAGAAAAAAAAQAA
AKSBQwAAAHRlc3RjYXNlL21haW4uaHRtbFVUBQADI7rcUHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AAAIALyYmEGsGhn3TQAAAE8AAAASABgAAAAAAAEAAACkgYECAAB0ZXN0Y2FzZS93b3JrZXIuanNV
VAUAA+Tt2FB1eAsAAQT1AQAABBQAAABQSwUGAAAAAAMAAwD/AAAAGgMAAAAA
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>180818</attachid>
            <date>2012-12-27 13:22:10 -0800</date>
            <delta_ts>2012-12-27 13:22:10 -0800</delta_ts>
            <desc>Patch used to debug problem</desc>
            <filename>worker-debugging.patch</filename>
            <type>application/octet-stream</type>
            <size>21675</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUHJpdmF0ZVB0
ci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQcml2YXRlUHRyLmgKaW5k
ZXggMzFkMDlhOS4uYTc4MDIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJQcml2YXRlUHRyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJQcml2YXRlUHRyLmgKQEAgLTY0LDggKzY0LDExIEBAIHB1YmxpYzoKICAgICBXZWJQ
cml2YXRlUHRyPFQ+JiBvcGVyYXRvcj0oY29uc3QgV2ViUHJpdmF0ZVB0cjxUPiYgb3RoZXIpCiAg
ICAgewogICAgICAgICBUKiBwID0gb3RoZXIubV9wdHI7Ci0gICAgICAgIGlmIChwKQorICAgICAg
ICBpZiAocCkgeworICAgICAgICAgICAgcC0+c3RhcnRJZ25vcmluZ0RvY3VtZW50QWRkUmVmcygp
OwogICAgICAgICAgICAgcC0+cmVmKCk7CisgICAgICAgICAgICBwLT5zdG9wSWdub3JpbmdEb2N1
bWVudEFkZFJlZnMoKTsKKyAgICAgICAgfQogICAgICAgICBhc3NpZ24ocCk7CiAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICB9CkBAIC05Myw4ICs5NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
YXNzaWduKFQqIHApCiAgICAgewogICAgICAgICAvLyBwIGlzIGFscmVhZHkgcmVmJ2QgZm9yIHVz
IGJ5IHRoZSBjYWxsZXIKLSAgICAgICAgaWYgKG1fcHRyKQorICAgICAgICBpZiAobV9wdHIpIHsK
KyAgICAgICAgICAgIG1fcHRyLT5zdGFydElnbm9yaW5nRG9jdW1lbnRBZGRSZWZzKCk7CiAgICAg
ICAgICAgICBtX3B0ci0+ZGVyZWYoKTsKKyAgICAgICAgICAgIG1fcHRyLT5zdG9wSWdub3JpbmdE
b2N1bWVudEFkZFJlZnMoKTsKKyAgICAgICAgfQogICAgICAgICBtX3B0ciA9IHA7CiAgICAgfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9SZWZDb3VudGVkLmgKaW5kZXggMDUwNGI5ZS4uZDdlMWI5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvUmVmQ291bnRlZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50
ZWQuaApAQCAtMTE3LDYgKzExNywxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAmbV9yZWZD
b3VudDsKICAgICB9CiAKKyAgICB2b2lkIHN0YXJ0SWdub3JpbmdEb2N1bWVudEFkZFJlZnMoKQor
ICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHN0b3BJZ25vcmluZ0RvY3VtZW50QWRkUmVmcygpCisg
ICAgeworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFJlZkNvdW50ZWRCYXNlKCkKICAgICAgICAg
OiBtX3JlZkNvdW50KDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaAppbmRleCA0
NDAzNWU1Li41NjJjMDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmgKQEAg
LTk5LDYgKzk5LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludCBj
b25zdCB2b2xhdGlsZSAmPihtX3JlZkNvdW50KTsKICAgICB9CiAKKyAgICB2b2lkIHN0YXJ0SWdu
b3JpbmdEb2N1bWVudEFkZFJlZnMoKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHN0b3BJZ25v
cmluZ0RvY3VtZW50QWRkUmVmcygpCisgICAgeworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIC8v
IFJldHVybnMgd2hldGhlciB0aGUgcG9pbnRlciBzaG91bGQgYmUgZnJlZWQgb3Igbm90LgogICAg
IGJvb2wgZGVyZWZCYXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCA3
NWZkNzA0Li4wOTY0YThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC03
MjMsNiArNzIzLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpzdXNwZW5kUG9zdEF0dGFjaENhbGxi
YWNrcygpCiB2b2lkIENvbnRhaW5lck5vZGU6OnJlc3VtZVBvc3RBdHRhY2hDYWxsYmFja3MoKQog
ewogICAgIGlmIChzX2F0dGFjaERlcHRoID09IDEpIHsKKyAgICAgICAgU2NvcGVkSWdub3JlRG9j
dW1lbnRBZGRSZWZzIGlnbm9yZXIodGhpcyk7CiAgICAgICAgIFJlZlB0cjxDb250YWluZXJOb2Rl
PiBwcm90ZWN0KHRoaXMpOwogCiAgICAgICAgIGlmIChzX3Bvc3RBdHRhY2hDYWxsYmFja1F1ZXVl
KQpAQCAtMTA0MSw2ICsxMDQyLDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGlsZEluc2VydGlv
bkV2ZW50cyhOb2RlKiBjaGlsZCkKICAgICBBU1NFUlQoIU5vRXZlbnREaXNwYXRjaEFzc2VydGlv
bjo6aXNFdmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwogCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBj
aGlsZDsKKyAgICBTY29wZWRJZ25vcmVEb2N1bWVudEFkZFJlZnMgaWdub3JlcihjaGlsZC0+ZG9j
dW1lbnQoKSk7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IGNoaWxkLT5kb2N1bWVu
dCgpOwogCiAgICAgaWYgKGMtPnBhcmVudE5vZGUoKSAmJiBkb2N1bWVudC0+aGFzTGlzdGVuZXJU
eXBlKERvY3VtZW50OjpET01OT0RFSU5TRVJURURfTElTVEVORVIpKQpAQCAtMTA2OCw2ICsxMDcw
LDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoTm9kZSogY2hpbGQp
CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZShjaGlsZC0+
ZG9jdW1lbnQoKSwgY2hpbGQpOwogCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsKKyAgICBT
Y29wZWRJZ25vcmVEb2N1bWVudEFkZFJlZnMgaWdub3JlcihjaGlsZC0+ZG9jdW1lbnQoKSk7CiAg
ICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IGNoaWxkLT5kb2N1bWVudCgpOwogCiAgICAg
Ly8gZGlzcGF0Y2ggcHJlLXJlbW92YWwgbXV0YXRpb24gZXZlbnRzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCmluZGV4IDUzMTJkZDQuLmFjZjUyNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCkBAIC0yMTgs
NiArMjE4LDcgQEAgaW5saW5lIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlm
eShOb2RlKiBub2RlKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9N
Tm9kZShub2RlLT5kb2N1bWVudCgpLCBub2RlKTsKICNlbmRpZgogCisgICAgU2NvcGVkSWdub3Jl
RG9jdW1lbnRBZGRSZWZzIGlnbm9yZXIobm9kZS0+ZG9jdW1lbnQoKSk7CiAgICAgUmVmUHRyPERv
Y3VtZW50PiBwcm90ZWN0RG9jdW1lbnQobm9kZS0+ZG9jdW1lbnQoKSk7CiAgICAgUmVmUHRyPE5v
ZGU+IHByb3RlY3ROb2RlKG5vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1NmM3
NDNmLi5jYjU5ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEyMTQsNiArMTIxNCw3
IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFJlYWR5U3RhdGUoUmVhZHlTdGF0ZSByZWFkeVN0YXRlKQog
ICAgIH0KIAogICAgIG1fcmVhZHlTdGF0ZSA9IHJlYWR5U3RhdGU7CisgICAgU2NvcGVkSWdub3Jl
RG9jdW1lbnRBZGRSZWZzIGlnbm9yZXIodGhpcyk7CiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZWFkeXN0YXRlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkp
OwogICAgIAogICAgIGlmIChzZXR0aW5ncygpICYmIHNldHRpbmdzKCktPnN1cHByZXNzZXNJbmNy
ZW1lbnRhbFJlbmRlcmluZygpKQpAQCAtMTY3Niw2ICsxNjc3LDcgQEAgU2V0dGluZ3MqIERvY3Vt
ZW50OjpzZXR0aW5ncygpIGNvbnN0CiAKIFBhc3NSZWZQdHI8UmFuZ2U+IERvY3VtZW50OjpjcmVh
dGVSYW5nZSgpCiB7CisgICAgU2NvcGVkSWdub3JlRG9jdW1lbnRBZGRSZWZzIGlnbm9yZXIodGhp
cyk7CiAgICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUodGhpcyk7CiB9CiAKQEAgLTQzMTAsNiArNDMx
Miw3IEBAIGJvb2wgRG9jdW1lbnQ6Omhhc1NWR1Jvb3ROb2RlKCkgY29uc3QKIAogUGFzc1JlZlB0
cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmVuc3VyZUNhY2hlZENvbGxlY3Rpb24oQ29sbGVj
dGlvblR5cGUgdHlwZSkKIHsKKyAgICBTY29wZWRJZ25vcmVEb2N1bWVudEFkZFJlZnMgaWdub3Jl
cih0aGlzKTsKICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCkt
PmFkZENhY2hlV2l0aEF0b21pY05hbWU8SFRNTENvbGxlY3Rpb24+KHRoaXMsIHR5cGUpOwogfQog
CkBAIC00ODk4LDYgKzQ5MDEsNyBAQCB0ZW1wbGF0ZSB2b2lkIERvY3VtZW50OjpkaXNwbGF5QnVm
ZmVyTW9kaWZpZWRCeUVuY29kaW5nSW50ZXJuYWw8VUNoYXI+KFVDaGFyKiwgdQogCiB2b2lkIERv
Y3VtZW50OjplbnF1ZXVlUGFnZXNob3dFdmVudChQYWdlc2hvd0V2ZW50UGVyc2lzdGVuY2UgcGVy
c2lzdGVkKQogeworICAgIFNjb3BlZElnbm9yZURvY3VtZW50QWRkUmVmcyBpZ25vcmVyKHRoaXMp
OwogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzYzMzQgUGFnZXNob3cgZXZlbnQgbmVlZHMgdG8gZmlyZSBhc3luY2hyb25vdXNseS4KICAgICBk
aXNwYXRjaFdpbmRvd0V2ZW50KFBhZ2VUcmFuc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkucGFnZXNob3dFdmVudCwgcGVyc2lzdGVkKSwgdGhpcyk7CiB9CkBAIC00OTA5LDYgKzQ5MTMs
NyBAQCB2b2lkIERvY3VtZW50OjplbnF1ZXVlSGFzaGNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYg
b2xkVVJMLCBjb25zdCBTdHJpbmcmIG5ld1VSTAogCiB2b2lkIERvY3VtZW50OjplbnF1ZXVlUG9w
c3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3Qp
CiB7CisgICAgU2NvcGVkSWdub3JlRG9jdW1lbnRBZGRSZWZzIGlnbm9yZXIodGhpcyk7CiAgICAg
aWYgKCFDb250ZXh0RmVhdHVyZXM6OnB1c2hTdGF0ZUVuYWJsZWQodGhpcykpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtNTg0MSw2ICs1ODQ2LDggQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlSG92ZXJB
Y3RpdmVTdGF0ZShjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UKICAg
ICAvLyBMb2NhdGUgdGhlIGNvbW1vbiBhbmNlc3RvciByZW5kZXIgb2JqZWN0IGZvciB0aGUgdHdv
IHJlbmRlcmVycy4KICAgICBSZW5kZXJPYmplY3QqIGFuY2VzdG9yID0gbmVhcmVzdENvbW1vbkhv
dmVyQW5jZXN0b3Iob2xkSG92ZXJPYmosIG5ld0hvdmVyT2JqKTsKIAorICAgIFNjb3BlZElnbm9y
ZURvY3VtZW50QWRkUmVmcyBpZ25vcmVyKHRoaXMpOworCiAgICAgVmVjdG9yPFJlZlB0cjxOb2Rl
PiwgMzI+IG5vZGVzVG9SZW1vdmVGcm9tQ2hhaW47CiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiwg
MzI+IG5vZGVzVG9BZGRUb0NoYWluOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDViMTk0Yjku
LmIwZjkzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNTYxLDYgKzE1NjEsMjQgQEAgcHJp
dmF0ZToKICNlbmRpZgogfTsKIAorY2xhc3MgU2NvcGVkSWdub3JlRG9jdW1lbnRBZGRSZWZzIHsK
K3B1YmxpYzoKKyAgICBTY29wZWRJZ25vcmVEb2N1bWVudEFkZFJlZnMoTm9kZSogbm9kZSkgOiBt
X2RvY3VtZW50KDApIHsKKyAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNEb2N1bWVudE5vZGUo
KSkgeworICAgICAgICAgICAgbV9kb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obm9k
ZSk7CisgICAgICAgICAgICBtX2RvY3VtZW50LT5zdGFydElnbm9yaW5nRG9jdW1lbnRBZGRSZWZz
KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB+U2NvcGVkSWdub3JlRG9jdW1lbnRBZGRSZWZz
KCkgeworICAgICAgICBpZiAobV9kb2N1bWVudCkKKyAgICAgICAgICAgIG1fZG9jdW1lbnQtPnN0
b3BJZ25vcmluZ0RvY3VtZW50QWRkUmVmcygpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBEb2N1
bWVudCogbV9kb2N1bWVudDsKK307CisKIGlubGluZSB2b2lkIERvY3VtZW50Ojpub3RpZnlSZW1v
dmVQZW5kaW5nU2hlZXRJZk5lZWRlZCgpCiB7CiAgICAgaWYgKG1fbmVlZHNOb3RpZnlSZW1vdmVB
bGxQZW5kaW5nU3R5bGVzaGVldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAK
aW5kZXggZGJmMjRkNS4uM2JhMWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hl
ci5jcHAKQEAgLTEzMSw4ICsxMzEsMTMgQEAgYm9vbCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
RXZlbnQoTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxFdmVudERpc3BhdGNoTWVkaWF0b3IKIHsKICAg
ICBBU1NFUlQoIU5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6aXNFdmVudERpc3BhdGNoRm9yYmlk
ZGVuKCkpOwogCi0gICAgRXZlbnREaXNwYXRjaGVyIGRpc3BhdGNoZXIobm9kZSk7Ci0gICAgcmV0
dXJuIG1lZGlhdG9yLT5kaXNwYXRjaEV2ZW50KCZkaXNwYXRjaGVyKTsKKyAgICBTY29wZWRJZ25v
cmVEb2N1bWVudEFkZFJlZnMgaWdub3Jlcihub2RlLT5kb2N1bWVudCgpKTsKKyAgICBib29sIHJl
czsKKyAgICB7CisgICAgICAgIEV2ZW50RGlzcGF0Y2hlciBkaXNwYXRjaGVyKG5vZGUpOworICAg
ICAgICByZXMgPSBtZWRpYXRvci0+ZGlzcGF0Y2hFdmVudCgmZGlzcGF0Y2hlcik7CisgICAgfQor
ICAgIHJldHVybiByZXM7CiB9CiAKIGlubGluZSBzdGF0aWMgRXZlbnRUYXJnZXQqIGV2ZW50VGFy
Z2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKE5vZGUqIHJlZmVyZW5jZU5vZGUpCkBAIC0xOTUs
NiArMjAwLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmVuc3VyZUV2ZW50QW5jZXN0b3JzKEV2
ZW50KiBldmVudCkKICAgICAgICAgICAgIHRhcmdldFN0YWNrLmFwcGVuZChldmVudFRhcmdldFJl
c3BlY3RpbmdTVkdUYXJnZXRSdWxlcyhub2RlKSk7CiAgICAgICAgIGVsc2UgaWYgKHdhbGtlci5j
cm9zc2luZ0luc2VydGlvblBvaW50KCkpCiAgICAgICAgICAgICB0YXJnZXRTdGFjay5hcHBlbmQo
dGFyZ2V0U3RhY2subGFzdCgpKTsKKyAgICAgICAgU2NvcGVkSWdub3JlRG9jdW1lbnRBZGRSZWZz
IGlnbm9yZXIobm9kZSk7CiAgICAgICAgIG1fYW5jZXN0b3JzLmFwcGVuZChFdmVudENvbnRleHQo
bm9kZSwgZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMobm9kZSksIHRhcmdldFN0
YWNrLmxhc3QoKSkpOwogICAgICAgICBpZiAoIWluRG9jdW1lbnQpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0yNTMsNiArMjU5LDggQEAgYm9vbCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9
IHBycEV2ZW50OwogICAgIENoaWxkTm9kZXNMYXp5U25hcHNob3Q6OnRha2VDaGlsZE5vZGVzTGF6
eVNuYXBzaG90KCk7CiAKKyAgICBTY29wZWRJZ25vcmVEb2N1bWVudEFkZFJlZnMgaWdub3Jlciht
X25vZGUuZ2V0KCkpOworICAgIFNjb3BlZElnbm9yZURvY3VtZW50QWRkUmVmcyBpZ25vcmVyMiht
X25vZGUtPmRvY3VtZW50KCkpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQoZXZlbnRUYXJnZXRSZXNw
ZWN0aW5nU1ZHVGFyZ2V0UnVsZXMobV9ub2RlLmdldCgpKSk7CiAgICAgQVNTRVJUKCFOb0V2ZW50
RGlzcGF0Y2hBc3NlcnRpb246OmlzRXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKICAgICBBU1NF
UlQoZXZlbnQtPnRhcmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBhZTUzZmVlLi4wZjlhNTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMzM2LDYgKzIzMzYsNyBAQCBib29sIE5vZGU6OmRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT5pc01v
dXNlRXZlbnQoKSkKICAgICAgICAgcmV0dXJuIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVu
dCh0aGlzLCBNb3VzZUV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKGFkb3B0UmVmKHRvTW91
c2VFdmVudChldmVudC5sZWFrUmVmKCkpKSwgTW91c2VFdmVudERpc3BhdGNoTWVkaWF0b3I6OlN5
bnRoZXRpY01vdXNlRXZlbnQpKTsKKyAgICBTY29wZWRJZ25vcmVEb2N1bWVudEFkZFJlZnMgaWdu
b3Jlcihkb2N1bWVudCgpKTsKICAgICByZXR1cm4gRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2
ZW50KHRoaXMsIEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKGV2ZW50KSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCAzMDBhNDA4Li4xZmRmMjc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0yOTMsOCArMjkzLDExIEBAIHZvaWQg
U2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlKQogICAgIGlmICghbV9pc0V4dGVybmFsU2NyaXB0ICYmICFtX2VsZW1lbnQtPmRvY3Vt
ZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0lubGluZVNjcmlwdChtX2VsZW1l
bnQtPmRvY3VtZW50KCktPnVybCgpLCBtX3N0YXJ0TGluZU51bWJlcikpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+c3RhcnRJZ25vcmluZ0RvY3VtZW50QWRk
UmVmcygpOworICAgIHsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gbV9lbGVtZW50
LT5kb2N1bWVudCgpOwogICAgIEFTU0VSVChkb2N1bWVudCk7CisgICAgbV9lbGVtZW50LT5kb2N1
bWVudCgpLT5zdG9wSWdub3JpbmdEb2N1bWVudEFkZFJlZnMoKTsKICAgICBpZiAoRnJhbWUqIGZy
YW1lID0gZG9jdW1lbnQtPmZyYW1lKCkpIHsKICAgICAgICAgewogICAgICAgICAgICAgSWdub3Jl
RGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIgaWdub3JlRGVzY3RydWN0aXZlV3JpdGVD
b3VudEluY3JlbWVudGVyKG1faXNFeHRlcm5hbFNjcmlwdCA/IGRvY3VtZW50LmdldCgpIDogMCk7
CkBAIC0zMDQsNiArMzA3LDkgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0KGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiAgICAgICAgICAgICBmcmFtZS0+c2Ny
aXB0KCktPmV2YWx1YXRlKHNvdXJjZUNvZGUpOwogICAgICAgICB9CiAgICAgfQorICAgIG1fZWxl
bWVudC0+ZG9jdW1lbnQoKS0+c3RhcnRJZ25vcmluZ0RvY3VtZW50QWRkUmVmcygpOworICAgIH0K
KyAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnN0b3BJZ25vcmluZ0RvY3VtZW50QWRkUmVmcygp
OwogfQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OnN0b3BMb2FkUmVxdWVzdCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggYjlkNzY3ZS4uMGYzZjY2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmNwcApAQCAtODMsMTEgKzgzLDE0IEBAIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiBIVE1MRG9jdW1lbnQ6OkhUTUxEb2N1bWVudChGcmFtZSogZnJhbWUsIGNv
bnN0IEtVUkwmIHVybCkKICAgICA6IERvY3VtZW50KGZyYW1lLCB1cmwsIGZhbHNlLCB0cnVlKQog
eworICAgIGZwcmludGYoc3RkZXJyLCAiSFRNTERvY3VtZW50OjpIVE1MRG9jdW1lbnQgJXBcbiIs
IHRoaXMpOwogICAgIGNsZWFyWE1MVmVyc2lvbigpOworICAgIG1faUFtRG9jdW1lbnROb2RlID0g
dHJ1ZTsKIH0KIAogSFRNTERvY3VtZW50Ojp+SFRNTERvY3VtZW50KCkKIHsKKyAgICBmcHJpbnRm
KHN0ZGVyciwgIkhUTUxEb2N1bWVudDo6fkhUTUxEb2N1bWVudCAlcFxuIiwgdGhpcyk7CiB9CiAK
IGludCBIVE1MRG9jdW1lbnQ6OndpZHRoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGRlMmUyMmUuLjRiNzk1MGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtNDU2LDYgKzQ1Niw4IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50KiBwYXNzZWRDYW52YXMsIFBhCiAg
ICAgLCBtX3N5bnRoZXNpemVkRXJyb3JzVG9Db25zb2xlKGZhbHNlKQogICAgICwgbV9udW1HTEVy
cm9yc1RvQ29uc29sZUFsbG93ZWQobWF4R0xFcnJvcnNBbGxvd2VkVG9Db25zb2xlKQogeworICAg
IGZwcmludGYoc3RkZXJyLCAiV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRcbiIpOworCiAgICAgQVNTRVJUKG1fY29udGV4dCk7CiAgICAgbV9jb250ZXh0R3JvdXAg
PSBXZWJHTENvbnRleHRHcm91cDo6Y3JlYXRlKCk7CiAgICAgbV9jb250ZXh0R3JvdXAtPmFkZENv
bnRleHQodGhpcyk7CkBAIC01ODcsNiArNTg5LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdDM0RlbnVtIGZvcm1hdCkKIAogV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp+V2ViR0xSZW5kZXJpbmdDb250ZXh0KCkKIHsKKyAgICBmcHJpbnRm
KHN0ZGVyciwgIldlYkdMUmVuZGVyaW5nQ29udGV4dDo6fldlYkdMUmVuZGVyaW5nQ29udGV4dFxu
Iik7CisKICAgICAvLyBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gV2ViR0xPYmplY3RzIHNvIGlm
IHRoZXkgYXJlIHRoZSBsYXN0IHJlZmVyZW5jZQogICAgIC8vIHRoZXkgd2lsbCBiZSBmcmVlZCBi
ZWZvcmUgdGhlIGxhc3QgY29udGV4dCBpcyByZW1vdmVkIGZyb20gdGhlIGNvbnRleHQgZ3JvdXAu
CiAgICAgbV9ib3VuZEFycmF5QnVmZmVyID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCA2MjI2OWRlLi4yNzgzZjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwCkBAIC0xMDIsNiArMTAyLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGV4ZWN1dGVU
YXNrKEhUTUxDb25zdHJ1Y3Rpb25TaXRlVGFzayYgdGFzaykKIAogdm9pZCBIVE1MQ29uc3RydWN0
aW9uU2l0ZTo6YXR0YWNoTGF0ZXIoQ29udGFpbmVyTm9kZSogcGFyZW50LCBQYXNzUmVmUHRyPE5v
ZGU+IHBycENoaWxkLCBib29sIHNlbGZDbG9zaW5nKQogeworICAgIFNjb3BlZElnbm9yZURvY3Vt
ZW50QWRkUmVmcyBpZ25vcmVyKHBhcmVudCk7CisgICAgU2NvcGVkSWdub3JlRG9jdW1lbnRBZGRS
ZWZzIGlnbm9yZXIyKG1fZG9jdW1lbnQpOworICAgIHsKICAgICBIVE1MQ29uc3RydWN0aW9uU2l0
ZVRhc2sgdGFzazsKICAgICB0YXNrLnBhcmVudCA9IHBhcmVudDsKICAgICB0YXNrLmNoaWxkID0g
cHJwQ2hpbGQ7CkBAIC0xMTgsMTAgKzEyMSwxMiBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjphdHRhY2hMYXRlcihDb250YWluZXJOb2RlKiBwYXJlbnQsIFBhc3NSZWZQdHI8Tm9kZT4gcAog
CiAgICAgQVNTRVJUKHRhc2sucGFyZW50KTsKICAgICBtX2F0dGFjaG1lbnRRdWV1ZS5hcHBlbmQo
dGFzayk7CisgICAgfQogfQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpleGVjdXRlUXVl
dWVkVGFza3MoKQogeworICAgIFNjb3BlZElnbm9yZURvY3VtZW50QWRkUmVmcyBpZ25vcmVyKG1f
ZG9jdW1lbnQpOwogICAgIGNvbnN0IHNpemVfdCBzaXplID0gbV9hdHRhY2htZW50UXVldWUuc2l6
ZSgpOwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjI5LDYgKzIzNCw3IEBA
IHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydERvY3R5cGUoQXRvbWljSFRNTFRva2Vu
KiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6
RE9DVFlQRSk7CiAKKyAgICBTY29wZWRJZ25vcmVEb2N1bWVudEFkZFJlZnMgaWdub3JlcihtX2Rv
Y3VtZW50KTsKICAgICBSZWZQdHI8RG9jdW1lbnRUeXBlPiBkb2N0eXBlID0gRG9jdW1lbnRUeXBl
OjpjcmVhdGUobV9kb2N1bWVudCwgdG9rZW4tPm5hbWUoKSwgU3RyaW5nOjphZG9wdCh0b2tlbi0+
cHVibGljSWRlbnRpZmllcigpKSwgU3RyaW5nOjphZG9wdCh0b2tlbi0+c3lzdGVtSWRlbnRpZmll
cigpKSk7CiAgICAgYXR0YWNoTGF0ZXIobV9hdHRhY2htZW50Um9vdCwgZG9jdHlwZS5yZWxlYXNl
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA1ZWJkZmM4Li5l
MWJlZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTM4Nyw2ICsz
ODcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN1Ym1p
c3Npb24+IHN1Ym1pc3Npb24pCiAKIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKFVubG9h
ZEV2ZW50UG9saWN5IHVubG9hZEV2ZW50UG9saWN5KQogeworICAgIFNjb3BlZElnbm9yZURvY3Vt
ZW50QWRkUmVmcyBpZ25vcmVyKG1fZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIGlmIChtX2ZyYW1l
LT5kb2N1bWVudCgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPnBhcnNlcigpKQogICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKS0+c3RvcFBhcnNpbmcoKTsKIApAQCAtMjcyOSw2
ICsyNzMwLDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6ZmlyZUJlZm9yZVVubG9hZEV2ZW50KENocm9t
ZSogY2hyb21lKQogICAgIGlmICghZG9tV2luZG93KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAor
ICAgIFNjb3BlZElnbm9yZURvY3VtZW50QWRkUmVmcyBpZ25vcmVyKG1fZnJhbWUtPmRvY3VtZW50
KCkpOwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
OwogICAgIGlmICghZG9jdW1lbnQtPmJvZHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cAppbmRleCA3ZDI5NDYzLi42OWE0Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTcwMCw2ICs3MDAsNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UpIGNvbnN0CiB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkRG9u
ZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVy
PiBwcm90ZWN0RG9jdW1lbnRMb2FkZXIobV9kb2N1bWVudExvYWRlcik7CisgICAgU2NvcGVkSWdu
b3JlRG9jdW1lbnRBZGRSZWZzIGlnbm9yZXIobV9kb2N1bWVudCk7CiAgICAgUmVmUHRyPERvY3Vt
ZW50PiBwcm90ZWN0RG9jdW1lbnQobV9kb2N1bWVudCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
VElNSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGRiZWFmZjMuLjI1NDU2MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE2MzUsNiArMTYzNSw3IEBAIGJvb2wg
RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBFdmVudExpc3RlbmVyCiAKIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaExvYWRFdmVudCgp
CiB7CisgICAgU2NvcGVkSWdub3JlRG9jdW1lbnRBZGRSZWZzIGlnbm9yZXIoZG9jdW1lbnQoKSk7
CiAgICAgUmVmUHRyPEV2ZW50PiBsb2FkRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
bG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5s
b2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSAmJiAhbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50
TG9hZGVyKCktPnRpbWluZygpLT5sb2FkRXZlbnRTdGFydCgpKSB7CiAgICAgICAgIC8vIFRoZSBE
b2N1bWVudExvYWRlciAoYW5kIHRodXMgaXRzIERvY3VtZW50TG9hZFRpbWluZykgbWlnaHQgZ2V0
IGRlc3Ryb3llZCB3aGlsZSBkaXNwYXRjaGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IDYzMTNlZjIuLjgyNzkxNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCkBAIC0zMDI4LDYgKzMwMjgsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQpCiAgICAga2V5ZG93
bi0+c2V0VGFyZ2V0KG5vZGUpOwogCiAgICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0g
UGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgeworICAgICAgICBTY29wZWRJZ25vcmVEb2N1bWVu
dEFkZFJlZnMgaWdub3Jlcihub2RlLmdldCgpKTsKICAgICAgICAgbm9kZS0+ZGlzcGF0Y2hFdmVu
dChrZXlkb3duLCBlYyk7CiAgICAgICAgIC8vIElmIGZyYW1lIGNoYW5nZWQgYXMgYSByZXN1bHQg
b2Yga2V5ZG93biBkaXNwYXRjaCwgdGhlbiByZXR1cm4gdHJ1ZSB0byBhdm9pZCBzZW5kaW5nIGEg
c3Vic2VxdWVudCBrZXlwcmVzcyBtZXNzYWdlIHRvIHRoZSBuZXcgZnJhbWUuCiAgICAgICAgIGJv
b2wgY2hhbmdlZEZvY3VzZWRGcmFtZSA9IG1fZnJhbWUtPnBhZ2UoKSAmJiBtX2ZyYW1lICE9IG1f
ZnJhbWUtPnBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBmZTljZTBiLi44ZjQ5ZGNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcApAQCAtMTY1LDYgKzE2NSw4IEBAIGlubGluZSBGcmFtZTo6RnJhbWUoUGFnZSogcGFnZSwg
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTG9hZGVyCiAgICAgLCBt
X2luVmlld1NvdXJjZU1vZGUoZmFsc2UpCiAgICAgLCBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmlt
YXRpb25zU3VzcGVuZGVkQ291bnQoMCkKIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIkZyYW1lOjpG
cmFtZSAlcFxuIiwgdGhpcyk7CisKICAgICBBU1NFUlQocGFnZSk7CiAgICAgQXRvbWljU3RyaW5n
Ojppbml0KCk7CiAgICAgSFRNTE5hbWVzOjppbml0KCk7CkBAIC0yMDcsNiArMjA5LDggQEAgUGFz
c1JlZlB0cjxGcmFtZT4gRnJhbWU6OmNyZWF0ZShQYWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckVs
ZW1lbnQqIG93bmVyRWxlbWVudCwKIAogRnJhbWU6On5GcmFtZSgpCiB7CisgICAgZnByaW50Zihz
dGRlcnIsICJGcmFtZTo6fkZyYW1lICVwXG4iLCB0aGlzKTsKKwogICAgIHNldFZpZXcoMCk7CiAg
ICAgbG9hZGVyKCktPmNhbmNlbEFuZENsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAppbmRleCBhODQ4ZGViLi5lNmQ5M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC0yMjk4LDggKzIyOTgsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OnNlcnZpY2VTY3JpcHRlZEFuaW1h
dGlvbnMoZG91YmxlIG1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSkKICAgICB9CiAKICAgICBW
ZWN0b3I8UmVmUHRyPERvY3VtZW50PiA+IGRvY3VtZW50czsKLSAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9IG1fZnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNl
TmV4dCgpKQorICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS5nZXQoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgU2NvcGVkSWdu
b3JlRG9jdW1lbnRBZGRSZWZzIGlnbm9yZXIoZnJhbWUtPmRvY3VtZW50KCkpOwogICAgICAgICBk
b2N1bWVudHMuYXBwZW5kKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICB9CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGRvY3VtZW50cy5zaXplKCk7ICsraSkKICAgICAgICAgZG9jdW1lbnRz
W2ldLT5zZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKG1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGlt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKaW5kZXggMDk3MzdmOC4uMGEyZTdk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaApAQCAtNDEsNiArNDEsOCBAQCBw
cm90ZWN0ZWQ6CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAsIG1fYWRvcHRpb25Jc1JlcXVpcmVk
KHRydWUpCiAjZW5kaWYKKyAgICAgICAgLCBtX2lBbURvY3VtZW50Tm9kZShmYWxzZSkKKyAgICAg
ICAgLCBtX2lnbm9yZURvY3VtZW50QWRkUmVmTGV2ZWwoMCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAjaWZuZGVmIE5ERUJVRwpAQCAtNjAsNiArNjIsMTMgQEAgcHJv
dGVjdGVkOgogcHVibGljOgogICAgIHZvaWQgcmVmKCkKICAgICB7CisgICAgICAgIGlmIChtX2lB
bURvY3VtZW50Tm9kZSkgeworICAgICAgICAgICAgaWYgKCFtX2lnbm9yZURvY3VtZW50QWRkUmVm
TGV2ZWwpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkhUTUxEb2N1bWVudE5v
ZGU6OnJlZigpICVwIHJlZkNvdW50ID0+ICVkXG4iLCB0aGlzLCBtX3JlZkNvdW50ICsgMSk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAi
SWdub3JlZCBIVE1MRG9jdW1lbnROb2RlOjpyZWYoKVxuIik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKCFt
X2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1
bmN0aW9uKTsKQEAgLTY5LDYgKzc4LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVyZWYoKQog
ICAgIHsKKyAgICAgICAgaWYgKG1faUFtRG9jdW1lbnROb2RlKSB7CisgICAgICAgICAgICBpZiAo
IW1faWdub3JlRG9jdW1lbnRBZGRSZWZMZXZlbCkgeworICAgICAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiSFRNTERvY3VtZW50Tm9kZTo6ZGVyZWYoKSAlcCByZWZDb3VudCA9PiAlZFxuIiwg
dGhpcywgbV9yZWZDb3VudCAtIDEpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIklnbm9yZWQgSFRNTERvY3VtZW50Tm9kZTo6ZGVyZWYo
KVxuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgQVNTRVJUKG1fcmVmQ291bnQgPj0gMCk7CiAgICAgICAgIEFTU0VS
VCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKQEAgLTExNyw2ICsxMzMsMTYgQEAgcHVibGljOgogICAg
ICAgICBpbmZvLmFkZE1lbWJlcihtX3BhcmVudCk7CiAgICAgfQogCisgICAgdm9pZCBzdGFydEln
bm9yaW5nRG9jdW1lbnRBZGRSZWZzKCkKKyAgICB7CisgICAgICAgICsrbV9pZ25vcmVEb2N1bWVu
dEFkZFJlZkxldmVsOworICAgIH0KKworICAgIHZvaWQgc3RvcElnbm9yaW5nRG9jdW1lbnRBZGRS
ZWZzKCkKKyAgICB7CisgICAgICAgIC0tbV9pZ25vcmVEb2N1bWVudEFkZFJlZkxldmVsOworICAg
IH0KKwogcHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAgICAgZnJpZW5kIHZvaWQgYWRvcHRlZDw+
KFRyZWVTaGFyZWQ8Tm9kZVR5cGUsIFBhcmVudE5vZGVUeXBlPiopOwpAQCAtMTI4LDYgKzE1NCwx
MCBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1fYWRvcHRpb25Jc1JlcXVp
cmVkOwogI2VuZGlmCisKK3Byb3RlY3RlZDoKKyAgICBib29sIG1faUFtRG9jdW1lbnROb2RlOwor
ICAgIGludCBtX2lnbm9yZURvY3VtZW50QWRkUmVmTGV2ZWw7CiB9OwogCiAjaWZuZGVmIE5ERUJV
RwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQuY3BwCmluZGV4IDA5YTYy
ZDIuLjQ2ZTI1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudC5j
cHAKQEAgLTE2MSw2ICsxNjEsNyBAQCB2b2lkIFdlYkRvY3VtZW50OjppbWFnZXMoV2ViVmVjdG9y
PFdlYkVsZW1lbnQ+JiByZXN1bHRzKQogCiB2b2lkIFdlYkRvY3VtZW50Ojpmb3JtcyhXZWJWZWN0
b3I8V2ViRm9ybUVsZW1lbnQ+JiByZXN1bHRzKSBjb25zdAogeworICAgIFNjb3BlZElnbm9yZURv
Y3VtZW50QWRkUmVmcyBpZ25vcmVyKGNvbnN0X2Nhc3Q8RG9jdW1lbnQqPihjb25zdFVud3JhcDxE
b2N1bWVudD4oKSkpOwogICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZm9ybXMgPSBjb25zdF9j
YXN0PERvY3VtZW50Kj4oY29uc3RVbndyYXA8RG9jdW1lbnQ+KCkpLT5mb3JtcygpOwogICAgIHNp
emVfdCBzb3VyY2VMZW5ndGggPSBmb3Jtcy0+bGVuZ3RoKCk7CiAgICAgVmVjdG9yPFdlYkZvcm1F
bGVtZW50PiB0ZW1wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5j
cHAKaW5kZXggZjk0M2Y1Yi4uMjJiZWMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuY3BwCkBAIC0yMTksNiArMjE5LDggQEAgc3RhdGljIHZvaWQgZnJhbWVD
b250ZW50QXNQbGFpblRleHQoc2l6ZV90IG1heENoYXJzLCBGcmFtZSogZnJhbWUsIFZlY3RvcjxV
Q2hhcj4KICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKKyAgICBTY29wZWRJ
Z25vcmVEb2N1bWVudEFkZFJlZnMgaWdub3Jlcihkb2N1bWVudCk7CisKICAgICBpZiAoIWZyYW1l
LT52aWV3KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNzU4LDYgKzc2MCw3IEBAIFdlYkRvY3Vt
ZW50IFdlYkZyYW1lSW1wbDo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIGlmICghZnJhbWUoKSB8
fCAhZnJhbWUoKS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIFdlYkRvY3VtZW50KCk7Cisg
ICAgU2NvcGVkSWdub3JlRG9jdW1lbnRBZGRSZWZzIGlnbm9yZXIoZnJhbWUoKS0+ZG9jdW1lbnQo
KSk7CiAgICAgcmV0dXJuIFdlYkRvY3VtZW50KGZyYW1lKCktPmRvY3VtZW50KCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3Bw
CmluZGV4IGNmN2UwZDIuLjRlZmU1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCkBAIC0yNDksMTAgKzI0OSwxMiBAQCBXZWJX
b3JrZXJDbGllbnRJbXBsOjpXZWJXb3JrZXJDbGllbnRJbXBsKFdvcmtlciogd29ya2VyLCBXZWJG
cmFtZUltcGwqIHdlYkZyYW1lKQogICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHdvcmtl
ci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV93ZWJGcmFtZSh3ZWJGcmFtZSkg
ICAgCiB7CisgICAgZnByaW50ZihzdGRlcnIsICJXZWJXb3JrZXJDbGllbnRJbXBsOjpXZWJXb3Jr
ZXJDbGllbnRJbXBsICVwXG4iLCB0aGlzKTsKIH0KIAogV2ViV29ya2VyQ2xpZW50SW1wbDo6fldl
YldvcmtlckNsaWVudEltcGwoKQogeworICAgIGZwcmludGYoc3RkZXJyLCAiV2ViV29ya2VyQ2xp
ZW50SW1wbDo6fldlYldvcmtlckNsaWVudEltcGwgJXBcbiIsIHRoaXMpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180978</attachid>
            <date>2012-12-31 09:32:02 -0800</date>
            <delta_ts>2013-01-02 17:22:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105367-20121231122914.patch</filename>
            <type>text/plain</type>
            <size>34618</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjExOTY4ZjE5NThmOTgz
NzA5MDFlMjRiM2MzMDM5YjVlZDg0MmUxNC4uN2VhYzQ3NjUyMDRmODExZGM2MmExZDk4Mjc4OTk2
ODQ5Mzk2OGJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEyLTMxICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIENyZWF0
aW9uIG9mIGRlZGljYXRlZCB3b3JrZXJzIChpc29sYXRlcykgbGVha3MgcmVmZXJlbmNlIHRvIEhU
TUxEb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA1MzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRWxpbWluYXRlZCBhIENocm9taXVtLXNwZWNpZmljIG9iamVjdCB3cmFwcGluZyBXb3JrZXJN
ZXNzYWdpbmdQcm94eSBpbiBvcmRlciB0byBmaXggYQorICAgICAgICBsaWZldGltZSBtYW5hZ2Vt
ZW50IGJ1Zywgd2hpY2ggbGVha2VkIGV2ZXJ5IERvY3VtZW50IHdoaWNoIHN0YXJ0ZWQgYSBkZWRp
Y2F0ZWQgd29ya2VyLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvd29ya2Vycy93b3JrZXItZG9jdW1l
bnQtbGVhay5odG1sCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckxvYWRlclByb3h5Lmg6Cisg
ICAgICAgIChXb3JrZXJMb2FkZXJQcm94eSk6CisgICAgICAgICAgICBBZGRlZCBDaHJvbWl1bS1z
cGVjaWZpYyBjYXN0aW5nIG1ldGhvZCB0byBicmlkZ2UgdHdvIG5vdy1kaXN0aW5jdCBjbGFzcyBo
aWVyYXJjaGllcy4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5Lmg6Cisg
ICAgICAgIChXb3JrZXJNZXNzYWdpbmdQcm94eSk6CisgICAgICAgICAgICBNYWRlIGRlc3RydWN0
b3IgcHJvdGVjdGVkIGluc3RlYWQgb2YgcHJpdmF0ZSB0byBhbGxvdyBzdWJjbGFzc2luZy4KKwog
MjAxMi0xMi0zMCAgS29uZGFwYWxseSBLYWx5YW4gIDxrYWx5YW4ua29uZGFwYWxseUBpbnRlbC5j
b20+CiAKICAgICAgICAgW0VGTF0gW1dlYkdMXSBSZW5hbWUgRUdMQ29uZmlnSGVscGVyIGFzIEVH
TENvbmZpZ1NlbGVjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5NTQzNTVhYzVm
N2ZjOTFiZTcwZTMzYWJjMmFhOTQ3YzIxMDE2MzdjLi41M2Y1YzQ2ZmJkM2RiMWYzZmY3YjBkZmQ0
NDYwYzBjYmRjNTM3YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcy
IEBACisyMDEyLTEyLTMxICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBbY2hyb21pdW1dIENyZWF0aW9uIG9mIGRlZGljYXRlZCB3b3JrZXJzIChpc29sYXRlcykg
bGVha3MgcmVmZXJlbmNlIHRvIEhUTUxEb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1MzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWFkZSBXZWJXb3JrZXJDbGllbnRJbXBsIGEgc3ViY2xh
c3Mgb2YgV29ya2VyTWVzc2FnaW5nUHJveHkgcmF0aGVyIHRoYW4gYW4gb2JqZWN0IHdyYXBwaW5n
CisgICAgICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5LiBXb3JrZXJNZXNzYWdpbmdQcm94eSBtYW5h
Z2VzIGl0cyBvd24gbGlmZXRpbWUgYW5kIGl0IGlzIGltcG9zc2libGUgdG8KKyAgICAgICAgcHJv
cGVybHkgc3luY2hyb25pemUgdGhlIGxpZmV0aW1lIG9mIFdlYldvcmtlckNsaWVudEltcGwgc2Vw
YXJhdGVseS4KKworICAgICAgICBUaGlzIGFsbG93ZWQgbW9zdCBvZiBXZWJXb3JrZXJDbGllbnRJ
bXBsIHRvIGJlIGRlbGV0ZWQsIGJ1dCBmb3JjZWQgYSBkaXZlcmdlbmNlIGluIHRoZSBjbGFzcwor
ICAgICAgICBoaWVyYXJjaGllcyBvZiBXZWJXb3JrZXJDbGllbnRJbXBsIGFuZCBXZWJTaGFyZWRX
b3JrZXJJbXBsLiBDb252ZXJzaW9uIG1ldGhvZHMgd2VyZSBhZGRlZCB0bworICAgICAgICBXb3Jr
ZXJMb2FkZXJQcm94eSBhbmQgV2ViV29ya2VyQmFzZSB0byBicmlkZ2UgdGhlIGhpZXJhcmNoaWVz
IG9mIGluLXByb2Nlc3MgYW5kCisgICAgICAgIG91dC1vZi1wcm9jZXNzIHdvcmtlcnMuCisKKyAg
ICAgICAgKiBzcmMvRGF0YWJhc2VPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZU9ic2VydmVyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZSk6CisgICAgICAgICAgICBBZGp1c3Rl
ZCBob3cgV2ViV29ya2VyQmFzZSBpcyBvYnRhaW5lZCBmcm9tIFdvcmtlckxvYWRlclByb3h5Lgor
ICAgICAgICAqIHNyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlOjpzaWduYWxDb21wbGV0ZWQpOgorICAg
ICAgICAgICAgQWRqdXN0ZWQgaG93IFdvcmtlckxvYWRlclByb3h5J3MgbWV0aG9kcyBhcmUgY2Fs
bGVkLgorICAgICAgICAoV2ViS2l0OjpJREJGYWN0b3J5QmFja2VuZFByb3h5OjphbGxvd0luZGV4
ZWREQik6CisgICAgICAgICAgICBBZGp1c3RlZCBob3cgV2ViV29ya2VyQmFzZSBpcyBvYnRhaW5l
ZCBmcm9tIFdvcmtlckxvYWRlclByb3h5LgorICAgICAgICAqIHNyYy9Mb2NhbEZpbGVTeXN0ZW1D
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRmlsZVN5c3RlbUhlbHBlcik6Cisg
ICAgICAgICAgICBBZGp1c3RlZCBob3cgV2ViV29ya2VyQmFzZSBpcyBvYnRhaW5lZCBmcm9tIFdv
cmtlckxvYWRlclByb3h5LgorICAgICAgICAqIHNyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VySW1wbDo6dG9XZWJXb3JrZXJCYXNlKToK
KyAgICAgICAgICAgIEltcGxlbWVudGVkIG5ldyBjb252ZXJzaW9uIG1ldGhvZC4KKyAgICAgICAg
KiBzcmMvV2ViU2hhcmVkV29ya2VySW1wbC5oOgorICAgICAgICAoV2ViU2hhcmVkV29ya2VySW1w
bCk6CisgICAgICAgICAgICBFeHBsaWNpdGx5IGRlcml2ZSBmcm9tIFdvcmtlckxvYWRlclByb3h5
IG5vdyB0aGF0IFdlYldvcmtlckJhc2Ugbm8gbG9uZ2VyIGRvZXMuCisgICAgICAgIChXZWJLaXQ6
OldlYlNoYXJlZFdvcmtlckltcGw6OndvcmtlckxvYWRlclByb3h5KToKKyAgICAgICAgICAgIEFk
ZGVkIG5ldyBjb252ZXJzaW9uIG1ldGhvZC4KKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQmFzZS5o
OgorICAgICAgICAoV2ViV29ya2VyQmFzZSk6CisgICAgICAgICAgICBSZW1vdmVkIGRlcml2YXRp
b24gZnJvbSBXb3JrZXJMb2FkZXJQcm94eS4gQWRkZWQgbWV0aG9kIHRvIGNvbnZlcnQgdG8gV29y
a2VyTG9hZGVyUHJveHkuCisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgICAgIEFkanVzdGVkIGNvbW1lbnQuCisgICAgICAg
IChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OmNyZWF0ZVdvcmtlckNvbnRleHRQcm94eSk6
CisgICAgICAgICAgICBBZGp1c3RlZCB3aGl0ZXNwYWNlLgorICAgICAgICAoV2ViS2l0OjpXZWJX
b3JrZXJDbGllbnRJbXBsOjp0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KToKKyAgICAgICAgICAgIEVs
aW1pbmF0ZWQgZGVsZWdhdGlvbiB0byBzZXBhcmF0ZSBvYmplY3QuCisgICAgICAgIChXZWJLaXQ6
OldlYldvcmtlckNsaWVudEltcGw6OnRvV2ViV29ya2VyQmFzZSk6CisgICAgICAgICAgICBJbXBs
ZW1lbnRlZCBuZXcgY29udmVyc2lvbiBtZXRob2QuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
ckNsaWVudEltcGw6OnZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBs
OjphbGxvd0RhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6
YWxsb3dGaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6
b3BlbkZpbGVTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjph
bGxvd0luZGV4ZWREQik6CisgICAgICAgICAgICBFbGltaW5hdGVkIGRlbGVnYXRpb24gdG8gc2Vw
YXJhdGUgb2JqZWN0LgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpXZWJX
b3JrZXJDbGllbnRJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgICAgIENoYW5nZWQgdG8gaW5oZXJpdCBmcm9tIFdv
cmtlck1lc3NhZ2luZ1Byb3h5IGRpcmVjdGx5LgorICAgICAgICAoV2ViV29ya2VyQ2xpZW50SW1w
bCk6CisgICAgICAgICAgICBEZWxldGVkIG1vc3QgbWV0aG9kcyBwcmV2aW91c2x5IG92ZXJyaWRk
ZW4gZnJvbSBXb3JrZXJDb250ZXh0UHJveHksIGV0Yy4KKyAgICAgICAgKiBzcmMvV29ya2VyQXN5
bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW06OldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKToKKyAgICAgICAgICAgIEhvbGQgb24gdG8sIGFuZCB1
c2UsIFdvcmtlckxvYWRlclByb3h5IHJhdGhlciB0aGFuIFdlYldvcmtlckJhc2UuCisgICAgICAg
ICogc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bSk6CisgICAgICAgICAgICBIb2xkIG9uIHRvIFdvcmtlckxvYWRlclByb3h5IHJhdGhlciB0
aGFuIFdlYldvcmtlckJhc2UuCisKIDIwMTItMTItMjggIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUm9sbCBDaHJvbWl1bSBERVBTIHRvIHIxNzQ3MzkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAppbmRleCBkMmZjZjk2MmU4
YmYxZDQ0NjVhZmYxMzMzMDRlYzc1MTJjMWE2NmMxLi44MWRkMjE5NGMzYThlNDk5NGIyODAwMDdh
MTZmMTA4ZDEwNTVhZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckxvYWRlclByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQ
cm94eS5oCkBAIC01NSw2ICs1NSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8v
IHNwZWNpZmljIHN5bmNocm9ub3VzIGxvYWRpbmcgcmVxdWVzdHMgc28gdGhleSBjYW4gYmUgJ25l
c3RlZCcsIHBlciBzcGVjLgogICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHRhc2sgd2Fz
IHBvc3RlZCBzdWNjZXNzZnVsbHkuCiAgICAgICAgIHZpcnR1YWwgYm9vbCBwb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckNvbnRleHQoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiwgY29uc3QgU3RyaW5nJiBtb2RlKSA9IDA7CisKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAg
ICAgICAgLy8gU3BhbnMgZGl2ZXJnZW50IGNsYXNzIGhpZXJhcmNoaWVzIGZvciBkZWRpY2F0ZWQg
YW5kIHNoYXJlZCB3b3JrZXJzLiBJbXBsZW1lbnRhdGlvbiBtdXN0CisgICAgICAgIC8vIHN0YXRp
Y19jYXN0IHRvIFdlYldvcmtlckJhc2UqLgorICAgICAgICB2aXJ0dWFsIHZvaWQqIHRvV2ViV29y
a2VyQmFzZSgpID0gMDsKKyNlbmRpZgogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAppbmRleCBl
ODY5MjRlNzEyNTg0ZGVhYjBjNDQwODNkOGZlNmI4NzRiMjdjYzk0Li5kOGZiNjk5NTMyYzI2MGQw
OTFkNTYzM2VmNzc2OThhYjk0NjM3ZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5oCkBAIC04OSw2ICs4OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgLy8gT25seSB1c2UgdGhpcyBtZXRob2Qgb24gdGhlIHdvcmtlciBvYmplY3Qg
dGhyZWFkLgogICAgICAgICBib29sIGFza2VkVG9UZXJtaW5hdGUoKSBjb25zdCB7IHJldHVybiBt
X2Fza2VkVG9UZXJtaW5hdGU7IH0KIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB+
V29ya2VyTWVzc2FnaW5nUHJveHkoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBNZXNzYWdlV29ya2VyVGFzazsKICAgICAgICAgZnJpZW5kIGNsYXNzIFBvc3RNZXNzYWdl
VG9QYWdlSW5zcGVjdG9yVGFzazsKQEAgLTk2LDggKzk5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBmcmllbmQgY2xhc3MgV29ya2VyRXhjZXB0aW9uVGFzazsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzazsKIAotICAgICAgICB2aXJ0
dWFsIH5Xb3JrZXJNZXNzYWdpbmdQcm94eSgpOwotCiAgICAgICAgIHZvaWQgd29ya2VyQ29udGV4
dERlc3Ryb3llZEludGVybmFsKCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIHdvcmtlck9iamVjdERl
c3Ryb3llZEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJNZXNzYWdpbmdQ
cm94eSopOwogICAgICAgICB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eUludGVybmFsKGJvb2wg
Y29uZmlybWluZ01lc3NhZ2UsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRGF0YWJhc2VPYnNlcnZlci5jcHAKaW5kZXggMzIyZTgwMGVj
MjE2NGNiMWYwN2Y0ZDQ4NmMyODY3YTZiN2JlMjE5OS4uNjVjNTg1ODI2NDgyZWY2ZGMyMzMwYzk4
ODFjZDNkMzU0ZTYwYzMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RGF0YWJhc2VPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGF0
YWJhc2VPYnNlcnZlci5jcHAKQEAgLTE2NCw4ICsxNjQsNyBAQCBib29sIERhdGFiYXNlT2JzZXJ2
ZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dAogICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgICAgIFdvcmtlckNv
bnRleHQqIHdvcmtlckNvbnRleHQgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgICAgIFdvcmtlckxvYWRlclByb3h5KiB3b3JrZXJMb2Fk
ZXJQcm94eSA9ICZ3b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKTsK
LSAgICAgICAgV2ViV29ya2VyQmFzZSogd2ViV29ya2VyID0gc3RhdGljX2Nhc3Q8V2ViV29ya2Vy
QmFzZSo+KHdvcmtlckxvYWRlclByb3h5KTsKKyAgICAgICAgV2ViV29ya2VyQmFzZSogd2ViV29y
a2VyID0gc3RhdGljX2Nhc3Q8V2ViV29ya2VyQmFzZSo+KHdvcmtlckNvbnRleHQtPnRocmVhZCgp
LT53b3JrZXJMb2FkZXJQcm94eSgpLnRvV2ViV29ya2VyQmFzZSgpKTsKICAgICAgICAgV2ViVmll
dyogdmlldyA9IHdlYldvcmtlci0+dmlldygpOwogICAgICAgICBpZiAoIXZpZXcpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCmluZGV4IDBlNjU5NzE5NzQ5MzBkMzQ4M2U2Mjlm
NDk1ZTY3YmQ1MDM4MjQ2ZTQuLmM2MGEzY2JhOTRlMTM4YmU4MGFmMzEyYmJkODAxNmRhZjdkNTlm
ZWIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNr
ZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlC
YWNrZW5kUHJveHkuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogICAgICAgICBpZiAobV93ZWJXb3JrZXJC
YXNlKQotICAgICAgICAgICAgbV93ZWJXb3JrZXJCYXNlLT5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRDb21wbGV0ZSwgdGhpcywgcmVzdWx0KSwg
bW9kZSk7CisgICAgICAgICAgICBtX3dlYldvcmtlckJhc2UtPndvcmtlckxvYWRlclByb3h5KCkt
PnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJmRpZENv
bXBsZXRlLCB0aGlzLCByZXN1bHQpLCBtb2RlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNzIs
NyArMTcyLDcgQEAgYm9vbCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjphbGxvd0luZGV4ZWREQihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb24KICAgICAgICAgYWxsb3dlZCA9ICF3
ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgp
LT5hbGxvd0luZGV4ZWREQih3ZWJGcmFtZSwgbmFtZSwgb3JpZ2luKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gc3RhdGljX2Nhc3Q8V29ya2Vy
Q29udGV4dCo+KGNvbnRleHQpOwotICAgICAgICBXZWJXb3JrZXJCYXNlKiB3ZWJXb3JrZXJCYXNl
ID0gc3RhdGljX2Nhc3Q8V2ViV29ya2VyQmFzZSo+KCZ3b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+
d29ya2VyTG9hZGVyUHJveHkoKSk7CisgICAgICAgIFdlYldvcmtlckJhc2UqIHdlYldvcmtlckJh
c2UgPSBzdGF0aWNfY2FzdDxXZWJXb3JrZXJCYXNlKj4od29ya2VyQ29udGV4dC0+dGhyZWFkKCkt
PndvcmtlckxvYWRlclByb3h5KCkudG9XZWJXb3JrZXJCYXNlKCkpOwogICAgICAgICBXb3JrZXJS
dW5Mb29wJiBydW5Mb29wID0gd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPnJ1bkxvb3AoKTsKIAog
ICAgICAgICBTdHJpbmcgbW9kZSA9IGFsbG93SW5kZXhlZERCTW9kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsRmlsZVN5c3RlbUNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsRmlsZVN5c3RlbUNocm9taXVtLmNwcAppbmRl
eCA1ZmEwN2RkYWRkMjRkMTQzMDc5NWZhNGI5ZTQ3NmRjMzM4OWY0YWE1Li43ZmU1NDVkMTY0MzQ0
OTllMzkzNWZiOTYyMzBjMGM3NjYwOTg4YzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvTG9jYWxGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCkBAIC0yMDMsOCArMjAz
LDcgQEAgc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW1IZWxwZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgRmlsZVN5c3RlbVR5cGUKICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShX
T1JLRVJTKQogICAgICAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gc3RhdGljX2Nh
c3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpOwotICAgICAgICBXb3JrZXJMb2FkZXJQcm94eSog
d29ya2VyTG9hZGVyUHJveHkgPSAmd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlckxvYWRl
clByb3h5KCk7Ci0gICAgICAgIFdlYldvcmtlckJhc2UqIHdlYldvcmtlciA9IHN0YXRpY19jYXN0
PFdlYldvcmtlckJhc2UqPih3b3JrZXJMb2FkZXJQcm94eSk7CisgICAgICAgIFdlYldvcmtlckJh
c2UqIHdlYldvcmtlciA9IHN0YXRpY19jYXN0PFdlYldvcmtlckJhc2UqPih3b3JrZXJDb250ZXh0
LT50aHJlYWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKS50b1dlYldvcmtlckJhc2UoKSk7CiAgICAg
ICAgIGlmICghYWxsb3dGaWxlU3lzdGVtRm9yV29ya2VyKHdlYldvcmtlci0+Y29tbW9uQ2xpZW50
KCkpKQogICAgICAgICAgICAgYWxsb3dlZCA9IGZhbHNlOwogICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCmluZGV4
IDMxMDljNzVkM2ZiNGE3YTg0MWFiNDZkZTMwZGM5ZjFhNjhlNWQ5NGYuLmVjZGVhYmFhZTExNDkw
ZTkwNGY4NGRhMmFkOWVmZmZkNDE5MjRjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCkBAIC0zMjQsNiArMzI0LDEwIEBAIGJv
b2wgV2ViU2hhcmVkV29ya2VySW1wbDo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KAog
ICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkKiBXZWJTaGFyZWRXb3JrZXJJbXBsOjp0b1dlYldv
cmtlckJhc2UoKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJXb3JrZXJCYXNlKj4odGhp
cyk7Cit9CiAKIAogYm9vbCBXZWJTaGFyZWRXb3JrZXJJbXBsOjppc1N0YXJ0ZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5oCmluZGV4IDQ5
MTIxMWU1NGQ2ZjNmMDRkZTllNzk0Y2UxODUyMDFkMzdmNWUyNzQuLjAzMGVhNmEzMzE5MWEwNmRl
MzRhZTVmYjQyODVkZmEwYTlmZGJiOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmgKQEAgLTYxLDEwICs2MSwxMiBAQCBjbGFzcyBXZWJT
aGFyZWRXb3JrZXJDbGllbnQ7CiAvLyBJdCBjYW4ndCB1c2UgaXQgZGlyZWN0bHkgc2luY2UgaXQg
dXNlcyBXZWJLaXQgdHlwZXMsIHNvIHRoaXMgY2xhc3MgY29udmVydHMgdGhlIGRhdGEgdHlwZXMu
CiAvLyBXaGVuIHRoZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXIgb2JqZWN0IHdhbnRzIHRvIGNhbGwg
V2ViQ29yZTo6V29ya2VyUmVwb3J0aW5nUHJveHksIHRoaXMgY2xhc3Mgd2lsbAogLy8gY29udmVy
dCB0byBDaHJvbWUgZGF0YSB0eXBlcyBmaXJzdCBhbmQgdGhlbiBjYWxsIHRoZSBzdXBwbGllZCBX
ZWJDb21tb25Xb3JrZXJDbGllbnQuCi1jbGFzcyBXZWJTaGFyZWRXb3JrZXJJbXBsIDogcHVibGlj
IFdlYkNvcmU6Oldvcmtlck9iamVjdFByb3h5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICwg
cHVibGljIFdlYldvcmtlckJhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMg
V2ViRnJhbWVDbGllbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViU2hh
cmVkV29ya2VyIHsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlckltcGwKKyAgICA6IHB1YmxpYyBXZWJD
b3JlOjpXb3JrZXJPYmplY3RQcm94eQorICAgICwgcHVibGljIFdlYkNvcmU6OldvcmtlckxvYWRl
clByb3h5CisgICAgLCBwdWJsaWMgV2ViV29ya2VyQmFzZQorICAgICwgcHVibGljIFdlYkZyYW1l
Q2xpZW50CisgICAgLCBwdWJsaWMgV2ViU2hhcmVkV29ya2VyIHsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBXZWJTaGFyZWRXb3JrZXJJbXBsKFdlYlNoYXJlZFdvcmtlckNsaWVudCopOwogCkBAIC04
OCw2ICs5MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihQ
YXNzT3duUHRyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKICAgICB2
aXJ0dWFsIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KAogICAgICAgICBQYXNz
T3duUHRyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBXVEY6
OlN0cmluZyYgbW9kZSk7CisgICAgdmlydHVhbCB2b2lkKiB0b1dlYldvcmtlckJhc2UoKSBPVkVS
UklERTsKIAogICAgIC8vIFdlYkZyYW1lQ2xpZW50IG1ldGhvZHMgdG8gc3VwcG9ydCByZXNvdXJj
ZSBsb2FkaW5nIHRocnUgdGhlICdzaGFkb3cgcGFnZScuCiAgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZURhdGFTb3VyY2UoV2ViRnJhbWUqLCBXZWJEYXRhU291cmNlKik7CkBAIC0xMTEsNyArMTE0
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERldlRvb2xzTWVzc2FnZShj
b25zdCBXZWJTdHJpbmcmKTsKIAogCi0gICAgLy8gTmV3V2ViV29ya2VyQmFzZSBtZXRob2RzOgor
ICAgIC8vIFdlYldvcmtlckJhc2UgbWV0aG9kczoKKyAgICBXZWJDb3JlOjpXb3JrZXJMb2FkZXJQ
cm94eSogd29ya2VyTG9hZGVyUHJveHkoKSB7IHJldHVybiB0aGlzOyB9CiAgICAgV2ViQ29tbW9u
V29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFz
ZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCmluZGV4IGM0
M2M2MzkzMWIwNDE4NTA2NDdhNWU1MjJjZGU0Y2UwMTkxMzVjYmIuLmY4MzE1YWMxZjcwYjQ4ZmM0
OTdjMmM1ZmUwMDViMjA2MTE5MGIzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYldvcmtlckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJXb3JrZXJCYXNlLmgKQEAgLTQ4LDggKzQ4LDkgQEAgY2xhc3MgV2ViVmlldzsKIC8vIGNvbnRh
aW5pbmcgY29tbW9uIGludGVyZmFjZSBmb3Igc2hhcmVkIHdvcmtlcnMgYW5kIGRlZGljYXRlZCBp
bi1wcm9jIHdvcmtlcnMgaW1wbGVtZW50YXRpb24uCiAvLwogLy8gRklYTUU6IFJlbmFtZSB0aGlz
IGNsYXNzIGludG8gV2ViV29ya2VyQmFzZSwgbWVyZ2UgZXhpc3RpbmcgV2ViV29ya2VyQmFzZSBh
bmQgV2ViU2hhcmVkV29ya2VyLgotY2xhc3MgV2ViV29ya2VyQmFzZSA6IHB1YmxpYyBXZWJDb3Jl
OjpXb3JrZXJMb2FkZXJQcm94eSB7CitjbGFzcyBXZWJXb3JrZXJCYXNlIHsKIHB1YmxpYzoKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6OldvcmtlckxvYWRlclByb3h5KiB3b3JrZXJMb2FkZXJQcm94eSgp
ID0gMDsKICAgICB2aXJ0dWFsIFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50KCkg
PSAwOwogICAgIHZpcnR1YWwgV2ViVmlldyogdmlldygpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcAppbmRleCBj
ZjdlMGQyZjA5ZGMwYjk2OWZlNjNjNDZlMTBlMjMzZDQ2Njc0MjlkLi5mYTY0YjUzNzVlZmEwZjgz
NjJjMzVkOTQzMTZhNmZkOWExNzU1ZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcApAQCAtNjksNyArNjksNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLS8vIENocm9taXVtLXNw
ZWNpZmljIHdyYXBwZXIgb3ZlciBXb3JrZXJNZXNzYWdpbmdQcm94eS4KKy8vIENocm9taXVtLXNw
ZWNpZmljIGRlY29yYXRvciBvZiBXb3JrZXJNZXNzYWdpbmdQcm94eS4KIC8vIERlbGVnYXRlcyBp
bXBsZW1lbnRhdGlvbiBvZiBXb3JrZXJ7TG9hZGVyLENvbnRleHQsT2JqZWN0fVByb3h5IHRvIFdv
cmtlck1lc3NhZ2luZ1Byb3h5LgogCiAvLyBzdGF0aWMKQEAgLTc5LDEyNyArNzksNDMgQEAgV29y
a2VyQ29udGV4dFByb3h5KiBXZWJXb3JrZXJDbGllbnRJbXBsOjpjcmVhdGVXb3JrZXJDb250ZXh0
UHJveHkoV29ya2VyKiB3b3JrZXIKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPih3b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
ICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBXZWJGcmFtZUltcGw6OmZyb21GcmFtZShkb2N1
bWVudC0+ZnJhbWUoKSk7CiAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHByb3h5ID0gbmV3
IFdlYldvcmtlckNsaWVudEltcGwod29ya2VyLCB3ZWJGcmFtZSk7Ci0gICAgICAgIHJldHVybiBw
cm94eTsgCi0gICAgfSAKKyAgICAgICAgcmV0dXJuIHByb3h5OworICAgIH0KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJXb3JrZXJDbGllbnRJ
bXBsOjpzdGFydFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFy
dE1vZGUgc3RhcnRNb2RlKQotewotICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmlzRG9jdW1lbnQoKSk7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCkpOwotICAgIEdyb3VwU2V0dGlu
Z3MqIHNldHRpbmdzID0gMDsKLSAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKSkKLSAgICAgICAgc2V0
dGluZ3MgPSBkb2N1bWVudC0+cGFnZSgpLT5ncm91cCgpLmdyb3VwU2V0dGluZ3MoKTsKLSAgICBS
ZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhyZWFkPiB0aHJlYWQgPSBEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQ6OmNyZWF0ZShzY3JpcHRVUkwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsICp0
aGlzLCAqdGhpcywgc3RhcnRNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5jb250ZW50
U2VjdXJpdHlQb2xpY3koKS0+ZGVwcmVjYXRlZEhlYWRlcigpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+ZGVwcmVjYXRlZEhlYWRlclR5cGUoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC0+dG9wRG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSk7Ci0gICAgbV9wcm94eS0+d29ya2VyVGhyZWFkQ3JlYXRlZCh0aHJlYWQpOwotICAgIHRocmVh
ZC0+c3RhcnQoKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFN0YXJ0V29ya2Vy
Q29udGV4dChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCksIG1fcHJveHksIHNjcmlwdFVS
TCk7Ci19Ci0KIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6dGVybWluYXRlV29ya2VyQ29udGV4
dCgpCiB7CiAgICAgbV93ZWJGcmFtZSA9IDA7Ci0gICAgbV9wcm94eS0+dGVybWluYXRlV29ya2Vy
Q29udGV4dCgpOwotfQotCi12b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9X
b3JrZXJDb250ZXh0KAotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1
ZSwgCi0gICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gcG9ydHMpCi17Ci0g
ICAgbV9wcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQodmFsdWUsIHBvcnRzKTsKLX0K
LQotYm9vbCBXZWJXb3JrZXJDbGllbnRJbXBsOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3Byb3h5LT5oYXNQZW5kaW5nQWN0aXZpdHkoKTsKLX0KLQotdm9pZCBX
ZWJXb3JrZXJDbGllbnRJbXBsOjp3b3JrZXJPYmplY3REZXN0cm95ZWQoKQotewotICAgIG1fcHJv
eHktPndvcmtlck9iamVjdERlc3Ryb3llZCgpOwotfQotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
LXZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6Y29ubmVjdFRvSW5zcGVjdG9yKFBhZ2VJbnNwZWN0
b3IqIGluc3BlY3RvcikKLXsKLSAgICBtX3Byb3h5LT5jb25uZWN0VG9JbnNwZWN0b3IoaW5zcGVj
dG9yKTsKLX0KLQotdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpkaXNjb25uZWN0RnJvbUluc3Bl
Y3RvcigpCi17Ci0gICAgbV9wcm94eS0+ZGlzY29ubmVjdEZyb21JbnNwZWN0b3IoKTsKLX0KLQot
dm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKLXsKLSAgICBtX3Byb3h5LT5zZW5kTWVzc2FnZVRvSW5zcGVjdG9yKG1l
c3NhZ2UpOwotfQotCi12b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RNZXNzYWdlVG9QYWdl
SW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBtX3Byb3h5LT5wb3N0TWVz
c2FnZVRvUGFnZUluc3BlY3RvcihtZXNzYWdlKTsKLX0KLQotdm9pZCBXZWJXb3JrZXJDbGllbnRJ
bXBsOjp1cGRhdGVJbnNwZWN0b3JTdGF0ZUNvb2tpZShjb25zdCBTdHJpbmcmIGNvb2tpZSkKLXsK
LSAgICBtX3Byb3h5LT51cGRhdGVJbnNwZWN0b3JTdGF0ZUNvb2tpZShjb29raWUpOwotfQotI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCi0KLQotdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpw
b3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4g
dGFzaykKLXsKLSAgICBtX3Byb3h5LT5wb3N0VGFza1RvTG9hZGVyKHRhc2spOworICAgIFdlYkNv
cmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojp0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCk7CiB9CiAK
LWJvb2wgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0
KFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3Ry
aW5nJiBtb2RlKQordm9pZCogV2ViV29ya2VyQ2xpZW50SW1wbDo6dG9XZWJXb3JrZXJCYXNlKCkK
IHsKLSAgICByZXR1cm4gbV9wcm94eS0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KHRh
c2ssIG1vZGUpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJXb3JrZXJCYXNlKj4odGhpcyk7
CiB9CiAKLXZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVj
dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IHBvcnRzKQorV2ViVmlldyogV2ViV29ya2VyQ2xpZW50SW1w
bDo6dmlldygpIGNvbnN0CiB7Ci0gICAgbV9wcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVj
dCh2YWx1ZSwgcG9ydHMpOwotfQotCi12b2lkIFdlYldvcmtlckNsaWVudEltcGw6OmNvbmZpcm1N
ZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKLXsKLSAgICBt
X3Byb3h5LT5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoaGFzUGVuZGluZ0FjdGl2aXR5
KTsKLX0KLQotdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHko
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCi17Ci0gICAgbV9wcm94eS0+cmVwb3J0UGVuZGluZ0Fj
dGl2aXR5KGhhc1BlbmRpbmdBY3Rpdml0eSk7Ci19Ci0KLXZvaWQgV2ViV29ya2VyQ2xpZW50SW1w
bDo6d29ya2VyQ29udGV4dENsb3NlZCgpCi17Ci0gICAgbV9wcm94eS0+d29ya2VyQ29udGV4dENs
b3NlZCgpOwotfQotCi12b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKQotewotICAgIG1fcHJveHktPnBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7Ci19Ci0KLXZv
aWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3Qo
TWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCi17Ci0gICAg
bV9wcm94eS0+cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3Qoc291cmNlLCBsZXZlbCwg
bWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICBpZiAoYXNrZWRUb1Rlcm1pbmF0
ZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV93ZWJGcmFtZS0+dmlldygpOwog
fQogCi12b2lkIFdlYldvcmtlckNsaWVudEltcGw6OndvcmtlckNvbnRleHREZXN0cm95ZWQoKQor
Ym9vbCBXZWJXb3JrZXJDbGllbnRJbXBsOjphbGxvd0RhdGFiYXNlKFdlYkZyYW1lKiwgY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBs
b25nIGVzdGltYXRlZFNpemUpCiB7Ci0gICAgbV9wcm94eS0+d29ya2VyQ29udGV4dERlc3Ryb3ll
ZCgpOworICAgIGlmIChhc2tlZFRvVGVybWluYXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+dmlld0ltcGwo
KTsKKyAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
IXdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKSB8fCB3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50
KCktPmFsbG93RGF0YWJhc2UobV93ZWJGcmFtZSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRl
ZFNpemUpOwogfQogCiBib29sIFdlYldvcmtlckNsaWVudEltcGw6OmFsbG93RmlsZVN5c3RlbSgp
CiB7Ci0gICAgaWYgKG1fcHJveHktPmFza2VkVG9UZXJtaW5hdGUoKSkKKyAgICBpZiAoYXNrZWRU
b1Rlcm1pbmF0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViS2l0OjpXZWJWaWV3
SW1wbCogd2ViVmlldyA9IG1fd2ViRnJhbWUtPnZpZXdJbXBsKCk7CiAgICAgaWYgKCF3ZWJWaWV3
KQpAQCAtMjA3LDQ3ICsxMjMsMjkgQEAgYm9vbCBXZWJXb3JrZXJDbGllbnRJbXBsOjphbGxvd0Zp
bGVTeXN0ZW0oKQogICAgIHJldHVybiAhd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpIHx8IHdl
YlZpZXctPnBlcm1pc3Npb25DbGllbnQoKS0+YWxsb3dGaWxlU3lzdGVtKG1fd2ViRnJhbWUpOwog
fQogCi12b2lkIFdlYldvcmtlckNsaWVudEltcGw6Om9wZW5GaWxlU3lzdGVtKFdlYkZpbGVTeXN0
ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCAKK3ZvaWQgV2ViV29y
a2VyQ2xpZW50SW1wbDo6b3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBs
b25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKLSAgICBp
ZiAobV9wcm94eS0+YXNrZWRUb1Rlcm1pbmF0ZSgpKSB7CisgICAgaWYgKGFza2VkVG9UZXJtaW5h
dGUoKSkgewogICAgICAgICBjYWxsYmFja3MtPmRpZEZhaWwoV2ViRmlsZUVycm9yQWJvcnQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5vcGVuRmls
ZVN5c3RlbShtX3dlYkZyYW1lLCB0eXBlLCBzaXplLCBjcmVhdGUsIGNhbGxiYWNrcyk7CiB9CiAK
LWJvb2wgV2ViV29ya2VyQ2xpZW50SW1wbDo6YWxsb3dEYXRhYmFzZShXZWJGcmFtZSosIGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplKSAKLXsKLSAgICBpZiAobV9wcm94eS0+YXNrZWRUb1Rlcm1pbmF0
ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogd2Vi
VmlldyA9IG1fd2ViRnJhbWUtPnZpZXdJbXBsKCk7Ci0gICAgaWYgKCF3ZWJWaWV3KQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkg
fHwgd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpLT5hbGxvd0RhdGFiYXNlKG1fd2ViRnJhbWUs
IG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKLX0KLQogYm9vbCBXZWJXb3JrZXJD
bGllbnRJbXBsOjphbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJpbmcmIG5hbWUpCiB7Ci0gICAg
aWYgKG1fcHJveHktPmFza2VkVG9UZXJtaW5hdGUoKSkKKyAgICBpZiAoYXNrZWRUb1Rlcm1pbmF0
ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogd2Vi
VmlldyA9IG1fd2ViRnJhbWUtPnZpZXdJbXBsKCk7CiAgICAgaWYgKCF3ZWJWaWV3KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkg
fHwgd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpLT5hbGxvd0luZGV4ZWREQihtX3dlYkZyYW1l
LCBuYW1lLCBXZWJTZWN1cml0eU9yaWdpbigpKTsKIH0KLSAKLVdlYlZpZXcqIFdlYldvcmtlckNs
aWVudEltcGw6OnZpZXcoKSBjb25zdCAKLXsKLSAgICBpZiAobV9wcm94eS0+YXNrZWRUb1Rlcm1p
bmF0ZSgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV93ZWJGcmFtZS0+dmlldygp
OyAKLX0KIAogV2ViV29ya2VyQ2xpZW50SW1wbDo6V2ViV29ya2VyQ2xpZW50SW1wbChXb3JrZXIq
IHdvcmtlciwgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSkKLSAgICA6IG1fcHJveHkobmV3IFdvcmtl
ck1lc3NhZ2luZ1Byb3h5KHdvcmtlcikpCi0gICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
d29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX3dlYkZyYW1lKHdlYkZy
YW1lKSAgICAKKyAgICA6IFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KHdvcmtlcikKKyAg
ICAsIG1fd2ViRnJhbWUod2ViRnJhbWUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuaAppbmRleCAzODFhNDk1YmFmNGY2YWY4NGEx
MTQyMGNjNTQ1YzI0ZTMwMjAzYTg5Li5jNjc3NDMyMjY2ODY5ZGY5NjI0NDRhYzM4YWFjMmJmMzBl
NTVhN2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJD
bGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xp
ZW50SW1wbC5oCkBAIC01NCw5ICs1NCwxMyBAQCBjbGFzcyBXZWJGcmFtZUltcGw7CiAvLyBmb3Ig
aW4tcHJvYyBkZWRpY2F0ZWQgd29ya2Vycy4gSXQgYWxzbyBhY3RzIGFzIGEgYnJpZGdlIGZvciB3
b3JrZXJzIHRvIGNocm9taXVtIGltcGxlbWVudGF0aW9uIG9mIGZpbGUgc3lzdGVtcywKIC8vIGRh
dGFiYXNlcyBhbmQgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LgogLy8KLS8vIEluIGVzc2Vu
Y2UsIHRoaXMgY2xhc3Mgd3JhcHMgV29ya2VyTWVzc2FnaW5nUHJveHkuCi1jbGFzcyBXZWJXb3Jr
ZXJDbGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6OldvcmtlckNvbnRleHRQcm94eQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBXZWJDb3JlOjpXb3JrZXJPYmplY3RQcm94eQor
Ly8gSW4gZXNzZW5jZSwgdGhpcyBjbGFzcyBkZWNvcmF0ZXMgV29ya2VyTWVzc2FnaW5nUHJveHku
CisvLworLy8gSXQgaXMgaW1wZXJhdGl2ZSB0aGF0IHRoaXMgY2xhc3MgaW5oZXJpdCBmcm9tIFdv
cmtlck1lc3NhZ2luZ1Byb3h5IHJhdGhlciB0aGFuIGRlbGVnYXRlIHRvIGFuIGluc3RhbmNlIG9m
CisvLyBXb3JrZXJNZXNzYWdpbmdQcm94eSwgYmVjYXVzZSB0aGF0IGNsYXNzIHRyYWNrcyBhbmQg
cmVwb3J0cyBpdHMgYWN0aXZpdHkgdG8gb3V0c2lkZSBjYWxsZXJzLCBhbmQgbWFuYWdlcworLy8g
aXRzIG93biBsaWZldGltZSwgdmlhIGNhbGxzIHRvIHdvcmtlck9iamVjdERlc3Ryb3llZCwgd29y
a2VyQ29udGV4dERlc3Ryb3llZCwgd29ya2VyQ29udGV4dENsb3NlZCwgZXRjLiBJdAorLy8gaXMg
YmFzaWNhbGx5IGltcG9zc2libGUgdG8gY29ycmVjdGx5IG1hbmFnZSB0aGUgbGlmZXRpbWUgb2Yg
dGhpcyBjbGFzcyBzZXBhcmF0ZWx5IGZyb20gV29ya2VyTWVzc2FnaW5nUHJveHkuCitjbGFzcyBX
ZWJXb3JrZXJDbGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFdlYldvcmtlckJhc2UKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViQ29tbW9uV29ya2VyQ2xpZW50IHsKIHB1
YmxpYzoKQEAgLTY2LDU3ICs3MCwyNyBAQCBwdWJsaWM6CiAgICAgLy8gV2ViQ29yZTo6V29ya2Vy
Q29udGV4dFByb3h5IG1ldGhvZHM6CiAgICAgLy8gVGhlc2UgYXJlIGNhbGxlZCBvbiB0aGUgdGhy
ZWFkIHRoYXQgY3JlYXRlZCB0aGUgd29ya2VyLiAgSW4gdGhlIHJlbmRlcmVyCiAgICAgLy8gcHJv
Y2VzcywgdGhpcyB3aWxsIGJlIHRoZSBtYWluIFdlYktpdCB0aHJlYWQuCi0gICAgdmlydHVhbCB2
b2lkIHN0YXJ0V29ya2VyQ29udGV4dChjb25zdCBXZWJDb3JlOjpLVVJMJiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OldvcmtlclRocmVhZFN0YXJ0TW9kZSkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoCi0gICAg
ICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLAot
ICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFu
bmVscykgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSBP
VkVSUklERTsKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgdmlydHVhbCB2b2lkIGNvbm5l
Y3RUb0luc3BlY3RvcihXZWJDb3JlOjpXb3JrZXJDb250ZXh0UHJveHk6OlBhZ2VJbnNwZWN0b3Iq
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21JbnNwZWN0b3IoKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0luc3BlY3Rvcihjb25zdCBT
dHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1BhZ2VJbnNw
ZWN0b3IoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlu
c3BlY3RvclN0YXRlQ29va2llKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwotI2VuZGlmCi0gICAg
Ly8gV2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkgbWV0aG9kczoKLSAgICB2aXJ0dWFsIHZvaWQg
cG9zdFRhc2tUb0xvYWRlcihQYXNzT3duUHRyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJDb250ZXh0KFBhc3NPd25QdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSkgT1ZFUlJJREU7Ci0KLSAgICAvLyBXZWJDb3JlOjpX
b3JrZXJPYmplY3RQcm94eSBtZXRob2RzOgotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRv
V29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwg
UGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkg
T1ZFUlJJREU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJP
YmplY3QoV2ViQ29yZTo6TWVzc2FnZVNvdXJjZSwgV2ViQ29yZTo6TWVzc2FnZUxldmVsLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChi
b29sKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJv
b2wpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0Q2xvc2VkKCkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHdvcmtlckNvbnRleHREZXN0cm95ZWQoKSBPVkVSUklE
RTsKLQotICAgIC8vIFdlYldvcmtlckNsaWVudEJhc2UgbWV0aG9kczoKKworICAgIC8vIFdlYkNv
cmU6OldvcmtlckxvYWRlclByb3h5IG1ldGhvZHMKKyAgICB2aXJ0dWFsIHZvaWQqIHRvV2ViV29y
a2VyQmFzZSgpIE9WRVJSSURFOworCisgICAgLy8gV2ViV29ya2VyQmFzZSBtZXRob2RzOgorICAg
IHZpcnR1YWwgV2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkqIHdvcmtlckxvYWRlclByb3h5KCkg
T1ZFUlJJREUgeyByZXR1cm4gdGhpczsgfQorICAgIHZpcnR1YWwgV2ViQ29tbW9uV29ya2VyQ2xp
ZW50KiBjb21tb25DbGllbnQoKSBPVkVSUklERSB7IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVh
bCBXZWJWaWV3KiB2aWV3KCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICAvLyBXZWJDb21tb25Xb3Jr
ZXJDbGllbnQgbWV0aG9kczoKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dEYXRhYmFzZShXZWJGcmFt
ZSosIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wg
YWxsb3dGaWxlU3lzdGVtKCk7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5GaWxlU3lzdGVtKFdlYkZp
bGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCBhbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJpbmcmIG5hbWUpIE9W
RVJSSURFOwogCi0gICAgLy8gV2ViQ29tbWVudFdvcmtlckJhc2UgbWV0aG9kczoKLSAgICB2aXJ0
dWFsIFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50KCkgT1ZFUlJJREUgeyByZXR1
cm4gdGhpczsgfQotICAgIHZpcnR1YWwgV2ViVmlldyogdmlldygpIGNvbnN0IE9WRVJSSURFOwot
CiBwcml2YXRlOgogICAgIFdlYldvcmtlckNsaWVudEltcGwoV2ViQ29yZTo6V29ya2VyKiwgV2Vi
RnJhbWVJbXBsKik7CiAgICAgdmlydHVhbCB+V2ViV29ya2VyQ2xpZW50SW1wbCgpOwogCi0gICAg
V2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHkqIG1fcHJveHk7Ci0gICAgLy8gR3VhcmQgYWdh
aW5zdCBjb250ZXh0IGZyb20gYmVpbmcgZGVzdHJveWVkIGJlZm9yZSBhIHdvcmtlciBleGl0cy4K
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogICAgIFdlYkZyYW1lSW1wbCogbV93ZWJGcmFtZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5
c3RlbUNocm9taXVtLmNwcAppbmRleCA0YTVmNjlkYzI0ODk5MDJiMWU1YzNmMjc5NjA0ZTMwMDRh
NGM1ZDhmLi4yMjU5NTM3ZWRmMzA5MWNkZGQ5ZjU2MzM0NWNhNjc2OWVkODU2Y2NiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxl
U3lzdGVtQ2hyb21pdW0uY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1
ZGUgIldlYkZpbGVXcml0ZXIuaCIKLSNpbmNsdWRlICJXZWJXb3JrZXJCYXNlLmgiCiAjaW5jbHVk
ZSAiV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJXb3JrZXJDb250
ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oIgpAQCAt
NjIsOCArNjEsNyBAQCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6V29ya2VyQXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW0oU2NyaXB0RXhlY3V0aW9uQ29udAogewogICAgIEFTU0VSVChtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKIAotICAgIFdvcmtlckxv
YWRlclByb3h5KiB3b3JrZXJMb2FkZXJQcm94eSA9ICZtX3dvcmtlckNvbnRleHQtPnRocmVhZCgp
LT53b3JrZXJMb2FkZXJQcm94eSgpOwotICAgIG1fd29ya2VyID0gc3RhdGljX2Nhc3Q8V2ViV29y
a2VyQmFzZSo+KHdvcmtlckxvYWRlclByb3h5KTsKKyAgICBtX3dvcmtlckxvYWRlclByb3h5ID0g
Jm1fd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCk7CiB9CiAKIFdv
cmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjp+V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW0oKQpAQCAtMTk0LDcgKzE5Miw3IEBAIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZT4gV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0CiAgICAgbV9t
b2RlRm9yQ3VycmVudE9wZXJhdGlvbiA9IGZpbGVTeXN0ZW1PcGVyYXRpb25zTW9kZTsKICAgICBt
X21vZGVGb3JDdXJyZW50T3BlcmF0aW9uLmFwcGVuZChTdHJpbmc6Om51bWJlcihtX3dvcmtlckNv
bnRleHQtPnRocmVhZCgpLT5ydW5Mb29wKCkuY3JlYXRlVW5pcXVlSWQoKSkpOwogCi0gICAgbV9i
cmlkZ2VGb3JDdXJyZW50T3BlcmF0aW9uID0gV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZTo6Y3JlYXRlKG1fd29ya2VyLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG5ldyBXZWJLaXQ6
OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAgIG1fYnJpZGdlRm9y
Q3VycmVudE9wZXJhdGlvbiA9IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNyZWF0
ZShtX3dvcmtlckxvYWRlclByb3h5LCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG5ldyBXZWJL
aXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogICAgIHJldHVybiBt
X2JyaWRnZUZvckN1cnJlbnRPcGVyYXRpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oCmluZGV4
IDY3MjdkMWU0NzQ4MTE0MjhkMzA0MmJiODhjYjZmZWM3NGY1Y2M0NzEuLmZhNDU3MjYyOTA4MmMw
ZTA4MWYxZmVkZmVhNDRlZWQ5Yzg3YzIzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaApAQCAtNDEs
NyArNDEsNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGaWxlU3lzdGVtOwogY2xh
c3MgV2ViVVJMOwotY2xhc3MgV2ViV29ya2VyQmFzZTsKIGNsYXNzIFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2U7CiB9CiAKQEAgLTUwLDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIGNsYXNzIFdvcmtlckNvbnRleHQ7CitjbGFzcyBXb3JrZXJMb2FkZXJQcm94eTsK
IAogY2xhc3MgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0gOiBwdWJsaWMgQXN5bmNGaWxl
U3lzdGVtQ2hyb21pdW0gewogcHVibGljOgpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAg
IFBhc3NSZWZQdHI8V2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBjcmVh
dGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPik7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7Ci0gICAgV2ViS2l0OjpXZWJXb3JrZXJCYXNlKiBtX3dvcmtlcjsKKyAg
ICBXb3JrZXJMb2FkZXJQcm94eSogbV93b3JrZXJMb2FkZXJQcm94eTsKICAgICBXb3JrZXJDb250
ZXh0KiBtX3dvcmtlckNvbnRleHQ7CiAgICAgUmVmUHRyPFdlYktpdDo6V29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZT4gbV9icmlkZ2VGb3JDdXJyZW50T3BlcmF0aW9uOwogICAgIFN0cmlu
ZyBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDViMzY5NmQzNjVjOGMwYzM5NTA0
ZTZlMTE0MjU3NDU4M2YxYmQ5ODIuLjJkZjYxMDZjYTMzYTAzZjk5MDFmYzc2MDgyNTM0MzY4MDdk
ZDI4ZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMi0zMSAgS2VubmV0aCBSdXNzZWxs
ICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBDcmVhdGlvbiBvZiBkZWRp
Y2F0ZWQgd29ya2VycyAoaXNvbGF0ZXMpIGxlYWtzIHJlZmVyZW5jZSB0byBIVE1MRG9jdW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTM2Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC93
b3JrZXJzL3Jlc291cmNlcy9lbXB0eS13b3JrZXIuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
d29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWRvY3VtZW50LWxlYWstaWZyYW1lLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItZG9jdW1lbnQtbGVhay1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItZG9jdW1lbnQtbGVhay5o
dG1sOiBBZGRlZC4KKwogMjAxMi0xMi0zMSAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgW0VGTF0gY3NzMy9tYXNraW5nL2NsaXAtcGF0aC1jaXJjbGUtcmVs
YXRpdmUtb3ZlcmZsb3cuaHRtbCBuZWVkcyBleHBlY3RlZCByZXN1bHRzIHVwZGF0ZSBhZnRlciA5
NzIxNwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy9lbXB0
eS13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL2VtcHR5LXdv
cmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMGRiNDg0MzdiYmZmMGQ4NTZmMWJiNDI3NGUzOGRhZjY5ZWRi
ZDBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNl
cy9lbXB0eS13b3JrZXIuanMKQEAgLTAsMCArMSwyIEBACitwb3N0TWVzc2FnZSgiY2xvc2luZyIp
OworY2xvc2UoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJj
ZXMvd29ya2VyLWRvY3VtZW50LWxlYWstaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvcmVzb3VyY2VzL3dvcmtlci1kb2N1bWVudC1sZWFrLWlmcmFtZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU5MmJjZmVmYWE5YTQ5NGJmMzdhZWE0M2EwMzYxNTNlMTcwODNkZWMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1kb2N1bWVu
dC1sZWFrLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJ3b3JrZXItdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgordmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoJ2VtcHR5LXdvcmtlci5qcycpOword29ya2Vy
Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgd2FpdFVudGlsV29ya2VyVGhyZWFk
c0V4aXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHBhcmVudC5wb3N0TWVzc2FnZSgiZG9uZSIsICIq
Iik7CisgICAgfSk7Cit9OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWRvY3VtZW50LWxlYWstZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1kb2N1bWVudC1sZWFrLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MDA1YTlhZjdlYTk4YmFmNzliZDFmN2JiODFjZjVmNjcxNzhm
NDFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1k
b2N1bWVudC1sZWFrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1ZlcmlmeSB0aGF0IGNy
ZWF0aW9uIG9mIGEgd29ya2VyIGRvZXMgbm90IGxlYWsgaXRzIGNyZWF0aW5nIGRvY3VtZW50Lgor
CitQQVNTOiBkaWQgbm90IGxlYWsgZG9jdW1lbnRzIGR1cmluZyB0ZXN0IHJ1bgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWRvY3VtZW50LWxlYWsuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItZG9jdW1lbnQtbGVhay5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA2NzU2ZmU4NzQyNjJhNjU1ODdmODFjNjUyZjNjMjEwMmE0YmJmNmMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWRvY3VtZW50LWxlYWsu
aHRtbApAQCAtMCwwICsxLDg5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8
cD5WZXJpZnkgdGhhdCBjcmVhdGlvbiBvZiBhIHdvcmtlciBkb2VzIG5vdCBsZWFrIGl0cyBjcmVh
dGluZyBkb2N1bWVudC48L3A+Cis8ZGl2IGlkPSdjb25zb2xlJz48L2Rpdj4KKzxzY3JpcHQgc3Jj
PSdyZXNvdXJjZXMvd29ya2VyLXV0aWwuanMnPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9u
IGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIiku
aW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworfQorCisvLyBTZXQgdGhpcyBudW1iZXIgYXMgaGlnaCBhcyBwb3NzaWJsZSB3
aXRob3V0IGludHJvZHVjaW5nIHRpbWVvdXRzIGluIGRlYnVnIGJ1aWxkcy4KKy8vIFJlZHVjaW5n
IGl0IGRvZXMgbm90IHJlcXVpcmUgcmViYXNlbGluZXMuCit2YXIgbnVtSXRlcmF0aW9ucyA9IDY7
CisKK3ZhciBjdXJyZW50SXRlcmF0aW9uID0gMDsKK3ZhciBpZnJhbWUgPSBudWxsOwordmFyIG51
bUxpdmVBdFN0YXJ0ID0gMDsKK3ZhciBudW1MaXZlQXRFbmQgPSAwOworCit3aW5kb3cub25tZXNz
YWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBpZiAoZXZlbnQuZGF0YSA9PSAiZG9uZSIpIHsK
KyAgICAgICAgcnVuT25lSXRlcmF0aW9uKCk7CisgICAgfQorfTsKKworZnVuY3Rpb24gc3RhcnRU
ZXN0KCkKK3sKKyAgICBnYygpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5p
bnRlcm5hbHMubnVtYmVyT2ZMaXZlRG9jdW1lbnRzKSB7CisgICAgICAgIG51bUxpdmVBdFN0YXJ0
ID0gd2luZG93LmludGVybmFscy5udW1iZXJPZkxpdmVEb2N1bWVudHMoKTsKKyAgICAgICAgLy8g
RGVwZW5kaW5nIG9uIHdoaWNoIHRlc3RzIHJhbiBiZWZvcmUgdGhpcyBvbmUgaW4gRHVtcFJlbmRl
clRyZWUsCisgICAgICAgIC8vIHRoZWlyIERvY3VtZW50IGluc3RhbmNlcyBtYXkgbm90IGhhdmUg
YmVlbiBmdWxseSBjbGVhbmVkIHVwIHlldC4KKyAgICAgICAgLy8gV2hlbiB0aGlzIHRlc3QgaXMg
cnVuIGluIGlzb2xhdGlvbiwgdGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lCisgICAgICAgIC8vIGxp
dmUgZG9jdW1lbnQgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgcnVuT25lSXRlcmF0aW9uKCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbG9nKCJ3aW5kb3cuaW50ZXJuYWxzLm51bWJlck9mTGl2ZURv
Y3VtZW50cyBub3QgYXZhaWxhYmxlIC0tIG5vIHBvaW50IGluIHJ1bm5pbmcgdGVzdCIpOworICAg
ICAgICBmaW5pc2hUZXN0KCk7CisgICAgfQorfQorCitmdW5jdGlvbiBydW5PbmVJdGVyYXRpb24o
KSB7CisgICAgaWYgKGN1cnJlbnRJdGVyYXRpb24gPCBudW1JdGVyYXRpb25zKSB7CisgICAgICAg
ICsrY3VycmVudEl0ZXJhdGlvbjsKKworICAgICAgICB2YXIgY3JlYXRlZElmcmFtZSA9IGZhbHNl
OworICAgICAgICBpZiAoIWlmcmFtZSkgeworICAgICAgICAgICAgaWZyYW1lID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgICAgICBjcmVhdGVkSWZyYW1lID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgICAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCJzcmMiLCAicmVzb3Vy
Y2VzL3dvcmtlci1kb2N1bWVudC1sZWFrLWlmcmFtZS5odG1sIik7CisgICAgICAgIGlmIChjcmVh
dGVkSWZyYW1lKQorICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIGZpbmlzaFRlc3QoKQoreworICAgIGdjKCk7CisKKyAgICBpZiAod2luZG93LmludGVybmFs
cyAmJiB3aW5kb3cuaW50ZXJuYWxzLm51bWJlck9mTGl2ZURvY3VtZW50cykgeworICAgICAgICBu
dW1MaXZlQXRFbmQgPSB3aW5kb3cuaW50ZXJuYWxzLm51bWJlck9mTGl2ZURvY3VtZW50cygpOwor
ICAgICAgICAvLyBVbmRlciBubyBjaXJjdW1zdGFuY2VzIHNob3VsZCB0aGUgbnVtYmVyIG9mIGxp
dmUgZG9jdW1lbnRzCisgICAgICAgIC8vIGF0IHRoZSBlbmQgYmUgbW9yZSB0aGFuIDEgZ3JlYXRl
ciB0aGFuIHRoZSBudW1iZXIgYXQgdGhlCisgICAgICAgIC8vIGJlZ2lubmluZyAoYmVjYXVzZSBv
ZiB0aGUgaWZyYW1lKS4KKyAgICAgICAgaWYgKG51bUxpdmVBdEVuZCA+IG51bUxpdmVBdFN0YXJ0
ICsgMSkgeworICAgICAgICAgICAgbG9nKCJGQUlMOiBsZWFrZWQgZG9jdW1lbnRzIGR1cmluZyB0
ZXN0IHJ1biAoc3RhcnRlZCB3aXRoICIgKyBudW1MaXZlQXRTdGFydCArICIsIGVuZGVkIHdpdGgg
IiArIG51bUxpdmVBdEVuZCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2coIlBB
U1M6IGRpZCBub3QgbGVhayBkb2N1bWVudHMgZHVyaW5nIHRlc3QgcnVuIik7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworfQorCit3aW5kb3cub25sb2FkID0gc3RhcnRUZXN0OworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181115</attachid>
            <date>2013-01-02 17:08:57 -0800</date>
            <delta_ts>2013-01-02 18:41:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105367-20130102170604.patch</filename>
            <type>text/plain</type>
            <size>34791</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNjAzMjRmNDQzNGMw
MTFkZjlkMTYwZGE4ZGM2OTM1Yzc2NTc0NC4uMmRlMWYzMDE1MjM1MmNkOGRhZDhjMDRlYjkzODZi
YjlkMjhmZWNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTAxLTAyICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIENyZWF0
aW9uIG9mIGRlZGljYXRlZCB3b3JrZXJzIChpc29sYXRlcykgbGVha3MgcmVmZXJlbmNlIHRvIEhU
TUxEb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA1MzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRWxpbWluYXRlZCBhIENocm9taXVtLXNwZWNpZmljIG9iamVjdCB3cmFwcGluZyBXb3JrZXJN
ZXNzYWdpbmdQcm94eSBpbiBvcmRlciB0byBmaXggYQorICAgICAgICBsaWZldGltZSBtYW5hZ2Vt
ZW50IGJ1Zywgd2hpY2ggbGVha2VkIGV2ZXJ5IERvY3VtZW50IHdoaWNoIHN0YXJ0ZWQgYSBkZWRp
Y2F0ZWQgd29ya2VyLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvd29ya2Vycy93b3JrZXItZG9jdW1l
bnQtbGVhay5odG1sCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckxvYWRlclByb3h5Lmg6Cisg
ICAgICAgIChXb3JrZXJMb2FkZXJQcm94eSk6CisgICAgICAgICAgICBBZGRlZCBDaHJvbWl1bS1z
cGVjaWZpYyBjYXN0aW5nIG1ldGhvZCB0byBicmlkZ2UgdHdvIG5vdy1kaXN0aW5jdCBjbGFzcyBo
aWVyYXJjaGllcy4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5Lmg6Cisg
ICAgICAgIChXb3JrZXJNZXNzYWdpbmdQcm94eSk6CisgICAgICAgICAgICBNYWRlIGRlc3RydWN0
b3IgcHJvdGVjdGVkIGluc3RlYWQgb2YgcHJpdmF0ZSB0byBhbGxvdyBzdWJjbGFzc2luZy4KKwog
MjAxMy0wMS0wMiAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEdl
bmVyYXRlIGludGVybmFsLnNldHRpbmdzIGZyb20gU2V0dGluZ3MuaW4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggNDE1YWJmYjkyYWNjY2UwNWE4MzhhYmM3MjJiMDU3ZDllNjQ0ZDkyMS4u
OTU5NDMwMjJmZTc1Nzg3YzYxZTFkMGJlOWFhMWExNzUxYzc1ZDg1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxMy0wMS0wMiAgS2VubmV0aCBSdXNzZWxs
ICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBDcmVhdGlvbiBvZiBkZWRp
Y2F0ZWQgd29ya2VycyAoaXNvbGF0ZXMpIGxlYWtzIHJlZmVyZW5jZSB0byBIVE1MRG9jdW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTM2Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hZGUgV2Vi
V29ya2VyQ2xpZW50SW1wbCBhIHN1YmNsYXNzIG9mIFdvcmtlck1lc3NhZ2luZ1Byb3h5IHJhdGhl
ciB0aGFuIGFuIG9iamVjdCB3cmFwcGluZworICAgICAgICBXb3JrZXJNZXNzYWdpbmdQcm94eS4g
V29ya2VyTWVzc2FnaW5nUHJveHkgbWFuYWdlcyBpdHMgb3duIGxpZmV0aW1lIGFuZCBpdCBpcyBp
bXBvc3NpYmxlIHRvCisgICAgICAgIHByb3Blcmx5IHN5bmNocm9uaXplIHRoZSBsaWZldGltZSBv
ZiBXZWJXb3JrZXJDbGllbnRJbXBsIHNlcGFyYXRlbHkuCisKKyAgICAgICAgVGhpcyBhbGxvd2Vk
IG1vc3Qgb2YgV2ViV29ya2VyQ2xpZW50SW1wbCB0byBiZSBkZWxldGVkLCBidXQgZm9yY2VkIGEg
ZGl2ZXJnZW5jZSBpbiB0aGUgY2xhc3MKKyAgICAgICAgaGllcmFyY2hpZXMgb2YgV2ViV29ya2Vy
Q2xpZW50SW1wbCBhbmQgV2ViU2hhcmVkV29ya2VySW1wbC4gQ29udmVyc2lvbiBtZXRob2RzIHdl
cmUgYWRkZWQgdG8KKyAgICAgICAgV29ya2VyTG9hZGVyUHJveHkgYW5kIFdlYldvcmtlckJhc2Ug
dG8gYnJpZGdlIHRoZSBoaWVyYXJjaGllcyBvZiBpbi1wcm9jZXNzIGFuZAorICAgICAgICBvdXQt
b2YtcHJvY2VzcyB3b3JrZXJzLgorCisgICAgICAgICogc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPYnNlcnZlcjo6Y2FuRXN0YWJsaXNoRGF0YWJh
c2UpOgorICAgICAgICAgICAgQWRqdXN0ZWQgaG93IFdlYldvcmtlckJhc2UgaXMgb2J0YWluZWQg
ZnJvbSBXb3JrZXJMb2FkZXJQcm94eS4KKyAgICAgICAgKiBzcmMvSURCRmFjdG9yeUJhY2tlbmRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRn
ZTo6c2lnbmFsQ29tcGxldGVkKToKKyAgICAgICAgICAgIEFkanVzdGVkIGhvdyBXb3JrZXJMb2Fk
ZXJQcm94eSdzIG1ldGhvZHMgYXJlIGNhbGxlZC4KKyAgICAgICAgKFdlYktpdDo6SURCRmFjdG9y
eUJhY2tlbmRQcm94eTo6YWxsb3dJbmRleGVkREIpOgorICAgICAgICAgICAgQWRqdXN0ZWQgaG93
IFdlYldvcmtlckJhc2UgaXMgb2J0YWluZWQgZnJvbSBXb3JrZXJMb2FkZXJQcm94eS4KKyAgICAg
ICAgKiBzcmMvTG9jYWxGaWxlU3lzdGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
b3BlbkZpbGVTeXN0ZW1IZWxwZXIpOgorICAgICAgICAgICAgQWRqdXN0ZWQgaG93IFdlYldvcmtl
ckJhc2UgaXMgb2J0YWluZWQgZnJvbSBXb3JrZXJMb2FkZXJQcm94eS4KKyAgICAgICAgKiBzcmMv
V2ViU2hhcmVkV29ya2VySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtl
ckltcGw6OnRvV2ViV29ya2VyQmFzZSk6CisgICAgICAgICAgICBJbXBsZW1lbnRlZCBuZXcgY29u
dmVyc2lvbiBtZXRob2QuCisgICAgICAgICogc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuaDoKKyAg
ICAgICAgKFdlYlNoYXJlZFdvcmtlckltcGwpOgorICAgICAgICAgICAgRXhwbGljaXRseSBkZXJp
dmUgZnJvbSBXb3JrZXJMb2FkZXJQcm94eSBub3cgdGhhdCBXZWJXb3JrZXJCYXNlIG5vIGxvbmdl
ciBkb2VzLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJJbXBsOjp3b3JrZXJMb2Fk
ZXJQcm94eSk6CisgICAgICAgICAgICBBZGRlZCBuZXcgY29udmVyc2lvbiBtZXRob2QuCisgICAg
ICAgICogc3JjL1dlYldvcmtlckJhc2UuaDoKKyAgICAgICAgKFdlYldvcmtlckJhc2UpOgorICAg
ICAgICAgICAgUmVtb3ZlZCBkZXJpdmF0aW9uIGZyb20gV29ya2VyTG9hZGVyUHJveHkuIEFkZGVk
IG1ldGhvZCB0byBjb252ZXJ0IHRvIFdvcmtlckxvYWRlclByb3h5LgorICAgICAgICAqIHNyYy9X
ZWJXb3JrZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICAgICBB
ZGp1c3RlZCBjb21tZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpj
cmVhdGVXb3JrZXJDb250ZXh0UHJveHkpOgorICAgICAgICAgICAgQWRqdXN0ZWQgd2hpdGVzcGFj
ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6dGVybWluYXRlV29ya2Vy
Q29udGV4dCk6CisgICAgICAgICAgICBFbGltaW5hdGVkIGRlbGVnYXRpb24gdG8gc2VwYXJhdGUg
b2JqZWN0LgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjp0b1dlYldvcmtl
ckJhc2UpOgorICAgICAgICAgICAgSW1wbGVtZW50ZWQgbmV3IGNvbnZlcnNpb24gbWV0aG9kLgor
ICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjp2aWV3KToKKyAgICAgICAgKFdl
YktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6YWxsb3dEYXRhYmFzZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYldvcmtlckNsaWVudEltcGw6OmFsbG93RmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJL
aXQ6OldlYldvcmtlckNsaWVudEltcGw6Om9wZW5GaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYktp
dDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6YWxsb3dJbmRleGVkREIpOgorICAgICAgICAgICAgRWxp
bWluYXRlZCBkZWxlZ2F0aW9uIHRvIHNlcGFyYXRlIG9iamVjdC4KKyAgICAgICAgKFdlYktpdDo6
V2ViV29ya2VyQ2xpZW50SW1wbDo6V2ViV29ya2VyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3Jj
L1dlYldvcmtlckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICAgICBD
aGFuZ2VkIHRvIGluaGVyaXQgZnJvbSBXb3JrZXJNZXNzYWdpbmdQcm94eSBkaXJlY3RseS4KKyAg
ICAgICAgKFdlYldvcmtlckNsaWVudEltcGwpOgorICAgICAgICAgICAgRGVsZXRlZCBtb3N0IG1l
dGhvZHMgcHJldmlvdXNseSBvdmVycmlkZGVuIGZyb20gV29ya2VyQ29udGV4dFByb3h5LCBldGMu
CisgICAgICAgICogc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpXb3JrZXJBc3luY0Zp
bGVTeXN0ZW1DaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bTo6Y3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSk6CisgICAg
ICAgICAgICBIb2xkIG9uIHRvLCBhbmQgdXNlLCBXb3JrZXJMb2FkZXJQcm94eSByYXRoZXIgdGhh
biBXZWJXb3JrZXJCYXNlLgorICAgICAgICAqIHNyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0pOgorICAgICAgICAgICAgSG9sZCBvbiB0byBX
b3JrZXJMb2FkZXJQcm94eSByYXRoZXIgdGhhbiBXZWJXb3JrZXJCYXNlLgorCiAyMDEzLTAxLTAy
ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIFVzZSB0b3AgbGV2ZWwgZmllbGQgZm9yIGdlc3R1cmUgZXZlbnQgc291cmNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKaW5kZXggZDJmY2Y5NjJlOGJm
MWQ0NDY1YWZmMTMzMzA0ZWM3NTEyYzFhNjZjMS4uZTU0N2ZlZTZkOTNhOWNlNzEwYTBmMWFkYWRl
Njc5OGMwODliOTE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJM
b2FkZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJv
eHkuaApAQCAtMzcsNiArMzcsMTIgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKK25hbWVzcGFj
ZSBXZWJLaXQgeworY2xhc3MgV2ViV29ya2VyQmFzZTsKK30KKyNlbmRpZiAvLyBQTEFURk9STShD
SFJPTUlVTSkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgLy8gQSBwcm94eSB0byB0YWxr
IHRvIHRoZSBsb2FkZXIgY29udGV4dC4gTm9ybWFsbHksIHRoZSBkb2N1bWVudCBvbiB0aGUgbWFp
biB0aHJlYWQKQEAgLTU1LDYgKzYxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ly8gc3BlY2lmaWMgc3luY2hyb25vdXMgbG9hZGluZyByZXF1ZXN0cyBzbyB0aGV5IGNhbiBiZSAn
bmVzdGVkJywgcGVyIHNwZWMuCiAgICAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgdGFzayB3
YXMgcG9zdGVkIHN1Y2Nlc3NmdWxseS4KICAgICAgICAgdmlydHVhbCBib29sIHBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyQ29udGV4dChQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+LCBjb25zdCBTdHJpbmcmIG1vZGUpID0gMDsKKworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQor
ICAgICAgICAvLyBTcGFucyBkaXZlcmdlbnQgY2xhc3MgaGllcmFyY2hpZXMgZm9yIGRlZGljYXRl
ZCBhbmQgc2hhcmVkIHdvcmtlcnMuCisgICAgICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJXb3JrZXJC
YXNlKiB0b1dlYldvcmtlckJhc2UoKSA9IDA7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmgKaW5kZXggZTg2OTI0ZTcxMjU4NGRlYWIwYzQ0MDgzZDhmZTZiODc0YjI3Y2M5NC4uZDhm
YjY5OTUzMmMyNjBkMDkxZDU2MzNlZjc3Njk4YWI5NDYzN2U4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaApAQCAtODksNiArODksOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIE9ubHkgdXNlIHRoaXMgbWV0aG9kIG9uIHRoZSB3
b3JrZXIgb2JqZWN0IHRocmVhZC4KICAgICAgICAgYm9vbCBhc2tlZFRvVGVybWluYXRlKCkgY29u
c3QgeyByZXR1cm4gbV9hc2tlZFRvVGVybWluYXRlOyB9CiAKKyAgICBwcm90ZWN0ZWQ6CisgICAg
ICAgIHZpcnR1YWwgfldvcmtlck1lc3NhZ2luZ1Byb3h5KCk7CisKICAgICBwcml2YXRlOgogICAg
ICAgICBmcmllbmQgY2xhc3MgTWVzc2FnZVdvcmtlclRhc2s7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBQb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2s7CkBAIC05Niw4ICs5OSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdvcmtlckV4Y2VwdGlvblRhc2s7
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2s7CiAK
LSAgICAgICAgdmlydHVhbCB+V29ya2VyTWVzc2FnaW5nUHJveHkoKTsKLQogICAgICAgICB2b2lk
IHdvcmtlckNvbnRleHREZXN0cm95ZWRJbnRlcm5hbCgpOwogICAgICAgICBzdGF0aWMgdm9pZCB3
b3JrZXJPYmplY3REZXN0cm95ZWRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29y
a2VyTWVzc2FnaW5nUHJveHkqKTsKICAgICAgICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHlJ
bnRlcm5hbChib29sIGNvbmZpcm1pbmdNZXNzYWdlLCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9ic2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3BwCmlu
ZGV4IDMyMmU4MDBlYzIxNjRjYjFmMDdmNGQ0ODZjMjg2N2E2YjdiZTIxOTkuLjY1YzU4NTgyNjQ4
MmVmNmRjMjMzMGM5ODgxY2QzZDM1NGU2MGMzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3BwCkBAIC0xNjQsOCArMTY0LDcgQEAgYm9vbCBE
YXRhYmFzZU9ic2VydmVyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXQKICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShXT1JLRVJTKQogICAg
ICAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29u
dGV4dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgICAgICBXb3JrZXJMb2FkZXJQcm94
eSogd29ya2VyTG9hZGVyUHJveHkgPSAmd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlckxv
YWRlclByb3h5KCk7Ci0gICAgICAgIFdlYldvcmtlckJhc2UqIHdlYldvcmtlciA9IHN0YXRpY19j
YXN0PFdlYldvcmtlckJhc2UqPih3b3JrZXJMb2FkZXJQcm94eSk7CisgICAgICAgIFdlYldvcmtl
ckJhc2UqIHdlYldvcmtlciA9IHN0YXRpY19jYXN0PFdlYldvcmtlckJhc2UqPih3b3JrZXJDb250
ZXh0LT50aHJlYWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKS50b1dlYldvcmtlckJhc2UoKSk7CiAg
ICAgICAgIFdlYlZpZXcqIHZpZXcgPSB3ZWJXb3JrZXItPnZpZXcoKTsKICAgICAgICAgaWYgKCF2
aWV3KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAppbmRleCAwZTY1OTcxOTc0
OTMwZDM0ODNlNjI5ZjQ5NWU2N2JkNTAzODI0NmU0Li5jNjBhM2NiYTk0ZTEzOGJlODBhZjMxMmJi
ZDgwMTZkYWY3ZDU5ZmViIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICAgICAgaWYg
KG1fd2ViV29ya2VyQmFzZSkKLSAgICAgICAgICAgIG1fd2ViV29ya2VyQmFzZS0+cG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkQ29tcGxldGUsIHRo
aXMsIHJlc3VsdCksIG1vZGUpOworICAgICAgICAgICAgbV93ZWJXb3JrZXJCYXNlLT53b3JrZXJM
b2FkZXJQcm94eSgpLT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZkaWRDb21wbGV0ZSwgdGhpcywgcmVzdWx0KSwgbW9kZSk7CiAgICAgfQogCiBwcml2
YXRlOgpAQCAtMTcyLDcgKzE3Miw3IEBAIGJvb2wgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6YWxs
b3dJbmRleGVkREIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uCiAgICAgICAg
IGFsbG93ZWQgPSAhd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpIHx8IHdlYlZpZXctPnBlcm1p
c3Npb25DbGllbnQoKS0+YWxsb3dJbmRleGVkREIod2ViRnJhbWUsIG5hbWUsIG9yaWdpbik7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHN0YXRp
Y19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KTsKLSAgICAgICAgV2ViV29ya2VyQmFzZSog
d2ViV29ya2VyQmFzZSA9IHN0YXRpY19jYXN0PFdlYldvcmtlckJhc2UqPigmd29ya2VyQ29udGV4
dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCkpOworICAgICAgICBXZWJXb3JrZXJCYXNl
KiB3ZWJXb3JrZXJCYXNlID0gc3RhdGljX2Nhc3Q8V2ViV29ya2VyQmFzZSo+KHdvcmtlckNvbnRl
eHQtPnRocmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgpLnRvV2ViV29ya2VyQmFzZSgpKTsKICAg
ICAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9IHdvcmtlckNvbnRleHQtPnRocmVhZCgpLT5y
dW5Mb29wKCk7CiAKICAgICAgICAgU3RyaW5nIG1vZGUgPSBhbGxvd0luZGV4ZWREQk1vZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJv
bWl1bS5jcHAKaW5kZXggNWZhMDdkZGFkZDI0ZDE0MzA3OTVmYTRiOWU0NzZkYzMzODlmNGFhNS4u
N2ZlNTQ1ZDE2NDM0NDk5ZTM5MzVmYjk2MjMwYzBjNzY2MDk4OGMzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsRmlsZVN5c3RlbUNocm9taXVtLmNwcApA
QCAtMjAzLDggKzIwMyw3IEBAIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtSGVscGVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZpbGVTeXN0ZW1UeXBlCiAgICAgfSBlbHNlIHsK
ICNpZiBFTkFCTEUoV09SS0VSUykKICAgICAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4
dCA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KTsKLSAgICAgICAgV29ya2Vy
TG9hZGVyUHJveHkqIHdvcmtlckxvYWRlclByb3h5ID0gJndvcmtlckNvbnRleHQtPnRocmVhZCgp
LT53b3JrZXJMb2FkZXJQcm94eSgpOwotICAgICAgICBXZWJXb3JrZXJCYXNlKiB3ZWJXb3JrZXIg
PSBzdGF0aWNfY2FzdDxXZWJXb3JrZXJCYXNlKj4od29ya2VyTG9hZGVyUHJveHkpOworICAgICAg
ICBXZWJXb3JrZXJCYXNlKiB3ZWJXb3JrZXIgPSBzdGF0aWNfY2FzdDxXZWJXb3JrZXJCYXNlKj4o
d29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCkudG9XZWJXb3JrZXJC
YXNlKCkpOwogICAgICAgICBpZiAoIWFsbG93RmlsZVN5c3RlbUZvcldvcmtlcih3ZWJXb3JrZXIt
PmNvbW1vbkNsaWVudCgpKSkKICAgICAgICAgICAgIGFsbG93ZWQgPSBmYWxzZTsKICAgICAgICAg
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29y
a2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJ
bXBsLmNwcAppbmRleCAzMTA5Yzc1ZDNmYjRhN2E4NDFhYjQ2ZGUzMGRjOWYxYTY4ZTVkOTRmLi4z
MzUxNzM3M2E4NmQ3MTRkNWIxZDAwYzAyOThjNDZlNGRmNmQxMjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcApAQCAtMzI0LDYg
KzMyNCwxMCBAQCBib29sIFdlYlNoYXJlZFdvcmtlckltcGw6OnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyQ29udGV4dCgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorV2ViV29ya2VyQmFzZSogV2ViU2hh
cmVkV29ya2VySW1wbDo6dG9XZWJXb3JrZXJCYXNlKCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30K
IAogCiBib29sIFdlYlNoYXJlZFdvcmtlckltcGw6OmlzU3RhcnRlZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmgKaW5kZXggNDkxMjExZTU0
ZDZmM2YwNGRlOWU3OTRjZTE4NTIwMWQzN2Y1ZTI3NC4uZWI3NzE4Yjc4NGNjYzJiOTQ1OGQxZGRh
MjgyZWQ1YmY5Y2M3ZGQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2hhcmVkV29ya2VySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNoYXJlZFdvcmtlckltcGwuaApAQCAtNjEsMTAgKzYxLDEyIEBAIGNsYXNzIFdlYlNoYXJlZFdv
cmtlckNsaWVudDsKIC8vIEl0IGNhbid0IHVzZSBpdCBkaXJlY3RseSBzaW5jZSBpdCB1c2VzIFdl
YktpdCB0eXBlcywgc28gdGhpcyBjbGFzcyBjb252ZXJ0cyB0aGUgZGF0YSB0eXBlcy4KIC8vIFdo
ZW4gdGhlIFdlYkNvcmU6OlNoYXJlZFdvcmtlciBvYmplY3Qgd2FudHMgdG8gY2FsbCBXZWJDb3Jl
OjpXb3JrZXJSZXBvcnRpbmdQcm94eSwgdGhpcyBjbGFzcyB3aWxsCiAvLyBjb252ZXJ0IHRvIENo
cm9tZSBkYXRhIHR5cGVzIGZpcnN0IGFuZCB0aGVuIGNhbGwgdGhlIHN1cHBsaWVkIFdlYkNvbW1v
bldvcmtlckNsaWVudC4KLWNsYXNzIFdlYlNoYXJlZFdvcmtlckltcGwgOiBwdWJsaWMgV2ViQ29y
ZTo6V29ya2VyT2JqZWN0UHJveHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMg
V2ViV29ya2VyQmFzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBXZWJGcmFt
ZUNsaWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBXZWJTaGFyZWRXb3Jr
ZXIgeworY2xhc3MgV2ViU2hhcmVkV29ya2VySW1wbAorICAgIDogcHVibGljIFdlYkNvcmU6Oldv
cmtlck9iamVjdFByb3h5CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkK
KyAgICAsIHB1YmxpYyBXZWJXb3JrZXJCYXNlCisgICAgLCBwdWJsaWMgV2ViRnJhbWVDbGllbnQK
KyAgICAsIHB1YmxpYyBXZWJTaGFyZWRXb3JrZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IFdl
YlNoYXJlZFdvcmtlckltcGwoV2ViU2hhcmVkV29ya2VyQ2xpZW50Kik7CiAKQEAgLTg4LDYgKzkw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25Q
dHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwogICAgIHZpcnR1YWwg
Ym9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoCiAgICAgICAgIFBhc3NPd25QdHI8
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFdURjo6U3RyaW5n
JiBtb2RlKTsKKyAgICB2aXJ0dWFsIFdlYldvcmtlckJhc2UqIHRvV2ViV29ya2VyQmFzZSgpIE9W
RVJSSURFOwogCiAgICAgLy8gV2ViRnJhbWVDbGllbnQgbWV0aG9kcyB0byBzdXBwb3J0IHJlc291
cmNlIGxvYWRpbmcgdGhydSB0aGUgJ3NoYWRvdyBwYWdlJy4KICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRGF0YVNvdXJjZShXZWJGcmFtZSosIFdlYkRhdGFTb3VyY2UqKTsKQEAgLTExMSw3ICsx
MTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGV2VG9vbHNNZXNzYWdl
KGNvbnN0IFdlYlN0cmluZyYpOwogCiAKLSAgICAvLyBOZXdXZWJXb3JrZXJCYXNlIG1ldGhvZHM6
CisgICAgLy8gV2ViV29ya2VyQmFzZSBtZXRob2RzOgorICAgIFdlYkNvcmU6OldvcmtlckxvYWRl
clByb3h5KiB3b3JrZXJMb2FkZXJQcm94eSgpIHsgcmV0dXJuIHRoaXM7IH0KICAgICBXZWJDb21t
b25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJC
YXNlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmgKaW5kZXgg
YzQzYzYzOTMxYjA0MTg1MDY0N2E1ZTUyMmNkZTRjZTAxOTEzNWNiYi4uZjgzMTVhYzFmNzBiNDhm
YzQ5N2MyYzVmZTAwNWIyMDYxMTkwYjM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYldvcmtlckJhc2UuaApAQCAtNDgsOCArNDgsOSBAQCBjbGFzcyBXZWJWaWV3OwogLy8gY29u
dGFpbmluZyBjb21tb24gaW50ZXJmYWNlIGZvciBzaGFyZWQgd29ya2VycyBhbmQgZGVkaWNhdGVk
IGluLXByb2Mgd29ya2VycyBpbXBsZW1lbnRhdGlvbi4KIC8vCiAvLyBGSVhNRTogUmVuYW1lIHRo
aXMgY2xhc3MgaW50byBXZWJXb3JrZXJCYXNlLCBtZXJnZSBleGlzdGluZyBXZWJXb3JrZXJCYXNl
IGFuZCBXZWJTaGFyZWRXb3JrZXIuCi1jbGFzcyBXZWJXb3JrZXJCYXNlIDogcHVibGljIFdlYkNv
cmU6OldvcmtlckxvYWRlclByb3h5IHsKK2NsYXNzIFdlYldvcmtlckJhc2UgewogcHVibGljOgor
ICAgIHZpcnR1YWwgV2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkqIHdvcmtlckxvYWRlclByb3h5
KCkgPSAwOwogICAgIHZpcnR1YWwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQo
KSA9IDA7CiAgICAgdmlydHVhbCBXZWJWaWV3KiB2aWV3KCkgY29uc3QgPSAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCmluZGV4
IGNmN2UwZDJmMDlkYzBiOTY5ZmU2M2M0NmUxMGUyMzNkNDY2NzQyOWQuLjBiZjExMWZlMTg2Njk0
NjRmZTVjNTIyYzgzYTE4YzVlZDFiNmVmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotLy8gQ2hyb21pdW0t
c3BlY2lmaWMgd3JhcHBlciBvdmVyIFdvcmtlck1lc3NhZ2luZ1Byb3h5LgorLy8gQ2hyb21pdW0t
c3BlY2lmaWMgZGVjb3JhdG9yIG9mIFdvcmtlck1lc3NhZ2luZ1Byb3h5LgogLy8gRGVsZWdhdGVz
IGltcGxlbWVudGF0aW9uIG9mIFdvcmtlcntMb2FkZXIsQ29udGV4dCxPYmplY3R9UHJveHkgdG8g
V29ya2VyTWVzc2FnaW5nUHJveHkuCiAKIC8vIHN0YXRpYwpAQCAtNzksMTI3ICs3OSw0MyBAQCBX
b3JrZXJDb250ZXh0UHJveHkqIFdlYldvcmtlckNsaWVudEltcGw6OmNyZWF0ZVdvcmtlckNvbnRl
eHRQcm94eShXb3JrZXIqIHdvcmtlcgogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICAgICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGRv
Y3VtZW50LT5mcmFtZSgpKTsKICAgICAgICAgV2ViV29ya2VyQ2xpZW50SW1wbCogcHJveHkgPSBu
ZXcgV2ViV29ya2VyQ2xpZW50SW1wbCh3b3JrZXIsIHdlYkZyYW1lKTsKLSAgICAgICAgcmV0dXJu
IHByb3h5OyAKLSAgICB9IAorICAgICAgICByZXR1cm4gcHJveHk7CisgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwogfQogCi12b2lkIFdlYldvcmtlckNsaWVu
dEltcGw6OnN0YXJ0V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0
YXJ0TW9kZSBzdGFydE1vZGUpCi17Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+aXNEb2N1bWVudCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSk7Ci0gICAgR3JvdXBTZXR0
aW5ncyogc2V0dGluZ3MgPSAwOwotICAgIGlmIChkb2N1bWVudC0+cGFnZSgpKQotICAgICAgICBz
ZXR0aW5ncyA9IGRvY3VtZW50LT5wYWdlKCktPmdyb3VwKCkuZ3JvdXBTZXR0aW5ncygpOwotICAg
IFJlZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+IHRocmVhZCA9IERlZGljYXRlZFdvcmtlclRo
cmVhZDo6Y3JlYXRlKHNjcmlwdFVSTCwgdXNlckFnZW50LCBzZXR0aW5ncywgc291cmNlQ29kZSwg
KnRoaXMsICp0aGlzLCBzdGFydE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpLT5kZXByZWNhdGVkSGVhZGVyKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5kZXByZWNhdGVkSGVhZGVyVHlwZSgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT50b3BEb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpKTsKLSAgICBtX3Byb3h5LT53b3JrZXJUaHJlYWRDcmVhdGVkKHRocmVhZCk7Ci0gICAgdGhy
ZWFkLT5zdGFydCgpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU3RhcnRXb3Jr
ZXJDb250ZXh0KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSwgbV9wcm94eSwgc2NyaXB0
VVJMKTsKLX0KLQogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjp0ZXJtaW5hdGVXb3JrZXJDb250
ZXh0KCkKIHsKICAgICBtX3dlYkZyYW1lID0gMDsKLSAgICBtX3Byb3h5LT50ZXJtaW5hdGVXb3Jr
ZXJDb250ZXh0KCk7Ci19Ci0KLXZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VU
b1dvcmtlckNvbnRleHQoCi0gICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZh
bHVlLCAKLSAgICBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBwb3J0cykKLXsK
LSAgICBtX3Byb3h5LT5wb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCh2YWx1ZSwgcG9ydHMpOwot
fQotCi1ib29sIFdlYldvcmtlckNsaWVudEltcGw6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcHJveHktPmhhc1BlbmRpbmdBY3Rpdml0eSgpOwotfQotCi12b2lk
IFdlYldvcmtlckNsaWVudEltcGw6Ondvcmtlck9iamVjdERlc3Ryb3llZCgpCi17Ci0gICAgbV9w
cm94eS0+d29ya2VyT2JqZWN0RGVzdHJveWVkKCk7Ci19Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpjb25uZWN0VG9JbnNwZWN0b3IoUGFnZUluc3Bl
Y3RvciogaW5zcGVjdG9yKQotewotICAgIG1fcHJveHktPmNvbm5lY3RUb0luc3BlY3RvcihpbnNw
ZWN0b3IpOwotfQotCi12b2lkIFdlYldvcmtlckNsaWVudEltcGw6OmRpc2Nvbm5lY3RGcm9tSW5z
cGVjdG9yKCkKLXsKLSAgICBtX3Byb3h5LT5kaXNjb25uZWN0RnJvbUluc3BlY3RvcigpOwotfQot
Ci12b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9JbnNwZWN0b3IoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQotewotICAgIG1fcHJveHktPnNlbmRNZXNzYWdlVG9JbnNwZWN0b3Io
bWVzc2FnZSk7Ci19Ci0KLXZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1Bh
Z2VJbnNwZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIG1fcHJveHktPnBvc3RN
ZXNzYWdlVG9QYWdlSW5zcGVjdG9yKG1lc3NhZ2UpOwotfQotCi12b2lkIFdlYldvcmtlckNsaWVu
dEltcGw6OnVwZGF0ZUluc3BlY3RvclN0YXRlQ29va2llKGNvbnN0IFN0cmluZyYgY29va2llKQot
ewotICAgIG1fcHJveHktPnVwZGF0ZUluc3BlY3RvclN0YXRlQ29va2llKGNvb2tpZSk7Ci19Ci0j
ZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKLQotCi12b2lkIFdlYldvcmtlckNsaWVudEltcGw6
OnBvc3RUYXNrVG9Mb2FkZXIoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiB0YXNrKQotewotICAgIG1fcHJveHktPnBvc3RUYXNrVG9Mb2FkZXIodGFzayk7CisgICAgV2Vi
Q29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKTsKIH0K
IAotYm9vbCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRl
eHQoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBT
dHJpbmcmIG1vZGUpCitXZWJXb3JrZXJCYXNlKiBXZWJXb3JrZXJDbGllbnRJbXBsOjp0b1dlYldv
cmtlckJhc2UoKQogewotICAgIHJldHVybiBtX3Byb3h5LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckNvbnRleHQodGFzaywgbW9kZSk7CisgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXZvaWQgV2ViV29y
a2VyQ2xpZW50SW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJy
YXk+IHBvcnRzKQorV2ViVmlldyogV2ViV29ya2VyQ2xpZW50SW1wbDo6dmlldygpIGNvbnN0CiB7
Ci0gICAgbV9wcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdCh2YWx1ZSwgcG9ydHMpOwot
fQotCi12b2lkIFdlYldvcmtlckNsaWVudEltcGw6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9i
amVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKLXsKLSAgICBtX3Byb3h5LT5jb25maXJtTWVz
c2FnZUZyb21Xb3JrZXJPYmplY3QoaGFzUGVuZGluZ0FjdGl2aXR5KTsKLX0KLQotdm9pZCBXZWJX
b3JrZXJDbGllbnRJbXBsOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkpCi17Ci0gICAgbV9wcm94eS0+cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGhhc1BlbmRpbmdB
Y3Rpdml0eSk7Ci19Ci0KLXZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6d29ya2VyQ29udGV4dENs
b3NlZCgpCi17Ci0gICAgbV9wcm94eS0+d29ya2VyQ29udGV4dENsb3NlZCgpOwotfQotCi12b2lk
IFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKQotewotICAgIG1fcHJveHktPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChlcnJvck1l
c3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7Ci19Ci0KLXZvaWQgV2ViV29ya2VyQ2xpZW50
SW1wbDo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSBzb3Vy
Y2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCi17Ci0gICAgbV9wcm94eS0+cG9zdENvbnNv
bGVNZXNzYWdlVG9Xb3JrZXJPYmplY3Qoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJl
ciwgc291cmNlVVJMKTsKKyAgICBpZiAoYXNrZWRUb1Rlcm1pbmF0ZSgpKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbV93ZWJGcmFtZS0+dmlldygpOwogfQogCi12b2lkIFdlYldvcmtl
ckNsaWVudEltcGw6OndvcmtlckNvbnRleHREZXN0cm95ZWQoKQorYm9vbCBXZWJXb3JrZXJDbGll
bnRJbXBsOjphbGxvd0RhdGFiYXNlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUp
CiB7Ci0gICAgbV9wcm94eS0+d29ya2VyQ29udGV4dERlc3Ryb3llZCgpOworICAgIGlmIChhc2tl
ZFRvVGVybWluYXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBXZWJLaXQ6OldlYlZp
ZXdJbXBsKiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+dmlld0ltcGwoKTsKKyAgICBpZiAoIXdlYlZp
ZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gIXdlYlZpZXctPnBlcm1pc3Np
b25DbGllbnQoKSB8fCB3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCktPmFsbG93RGF0YWJhc2Uo
bV93ZWJGcmFtZSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOwogfQogCiBib29s
IFdlYldvcmtlckNsaWVudEltcGw6OmFsbG93RmlsZVN5c3RlbSgpCiB7Ci0gICAgaWYgKG1fcHJv
eHktPmFza2VkVG9UZXJtaW5hdGUoKSkKKyAgICBpZiAoYXNrZWRUb1Rlcm1pbmF0ZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogd2ViVmlldyA9IG1f
d2ViRnJhbWUtPnZpZXdJbXBsKCk7CiAgICAgaWYgKCF3ZWJWaWV3KQpAQCAtMjA3LDQ3ICsxMjMs
MjkgQEAgYm9vbCBXZWJXb3JrZXJDbGllbnRJbXBsOjphbGxvd0ZpbGVTeXN0ZW0oKQogICAgIHJl
dHVybiAhd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpIHx8IHdlYlZpZXctPnBlcm1pc3Npb25D
bGllbnQoKS0+YWxsb3dGaWxlU3lzdGVtKG1fd2ViRnJhbWUpOwogfQogCi12b2lkIFdlYldvcmtl
ckNsaWVudEltcGw6Om9wZW5GaWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9u
ZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCAKK3ZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6b3Bl
bkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9v
bCBjcmVhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKLSAgICBpZiAobV9wcm94eS0+YXNrZWRU
b1Rlcm1pbmF0ZSgpKSB7CisgICAgaWYgKGFza2VkVG9UZXJtaW5hdGUoKSkgewogICAgICAgICBj
YWxsYmFja3MtPmRpZEZhaWwoV2ViRmlsZUVycm9yQWJvcnQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5vcGVuRmlsZVN5c3RlbShtX3dlYkZyYW1l
LCB0eXBlLCBzaXplLCBjcmVhdGUsIGNhbGxiYWNrcyk7CiB9CiAKLWJvb2wgV2ViV29ya2VyQ2xp
ZW50SW1wbDo6YWxsb3dEYXRhYmFzZShXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXpl
KSAKLXsKLSAgICBpZiAobV9wcm94eS0+YXNrZWRUb1Rlcm1pbmF0ZSgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogd2ViVmlldyA9IG1fd2ViRnJhbWUt
PnZpZXdJbXBsKCk7Ci0gICAgaWYgKCF3ZWJWaWV3KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmlldy0+cGVybWlz
c2lvbkNsaWVudCgpLT5hbGxvd0RhdGFiYXNlKG1fd2ViRnJhbWUsIG5hbWUsIGRpc3BsYXlOYW1l
LCBlc3RpbWF0ZWRTaXplKTsKLX0KLQogYm9vbCBXZWJXb3JrZXJDbGllbnRJbXBsOjphbGxvd0lu
ZGV4ZWREQihjb25zdCBXZWJTdHJpbmcmIG5hbWUpCiB7Ci0gICAgaWYgKG1fcHJveHktPmFza2Vk
VG9UZXJtaW5hdGUoKSkKKyAgICBpZiAoYXNrZWRUb1Rlcm1pbmF0ZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogd2ViVmlldyA9IG1fd2ViRnJhbWUt
PnZpZXdJbXBsKCk7CiAgICAgaWYgKCF3ZWJWaWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmlldy0+cGVybWlz
c2lvbkNsaWVudCgpLT5hbGxvd0luZGV4ZWREQihtX3dlYkZyYW1lLCBuYW1lLCBXZWJTZWN1cml0
eU9yaWdpbigpKTsKIH0KLSAKLVdlYlZpZXcqIFdlYldvcmtlckNsaWVudEltcGw6OnZpZXcoKSBj
b25zdCAKLXsKLSAgICBpZiAobV9wcm94eS0+YXNrZWRUb1Rlcm1pbmF0ZSgpKQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICByZXR1cm4gbV93ZWJGcmFtZS0+dmlldygpOyAKLX0KIAogV2ViV29ya2Vy
Q2xpZW50SW1wbDo6V2ViV29ya2VyQ2xpZW50SW1wbChXb3JrZXIqIHdvcmtlciwgV2ViRnJhbWVJ
bXBsKiB3ZWJGcmFtZSkKLSAgICA6IG1fcHJveHkobmV3IFdvcmtlck1lc3NhZ2luZ1Byb3h5KHdv
cmtlcikpCi0gICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQod29ya2VyLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCi0gICAgLCBtX3dlYkZyYW1lKHdlYkZyYW1lKSAgICAKKyAgICA6IFdl
YkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KHdvcmtlcikKKyAgICAsIG1fd2ViRnJhbWUod2Vi
RnJhbWUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtl
ckNsaWVudEltcGwuaAppbmRleCAzODFhNDk1YmFmNGY2YWY4NGExMTQyMGNjNTQ1YzI0ZTMwMjAz
YTg5Li5mYzQwNjQzNjRhMWUzOTIwOGQ1Y2M1MDc0ZDJhZWQyNmRiM2VhM2MxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCkBAIC01NCw5
ICs1NCwxMyBAQCBjbGFzcyBXZWJGcmFtZUltcGw7CiAvLyBmb3IgaW4tcHJvYyBkZWRpY2F0ZWQg
d29ya2Vycy4gSXQgYWxzbyBhY3RzIGFzIGEgYnJpZGdlIGZvciB3b3JrZXJzIHRvIGNocm9taXVt
IGltcGxlbWVudGF0aW9uIG9mIGZpbGUgc3lzdGVtcywKIC8vIGRhdGFiYXNlcyBhbmQgb3RoZXIg
cmVsYXRlZCBmdW5jdGlvbmFsaXR5LgogLy8KLS8vIEluIGVzc2VuY2UsIHRoaXMgY2xhc3Mgd3Jh
cHMgV29ya2VyTWVzc2FnaW5nUHJveHkuCi1jbGFzcyBXZWJXb3JrZXJDbGllbnRJbXBsIDogcHVi
bGljIFdlYkNvcmU6OldvcmtlckNvbnRleHRQcm94eQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAsIHB1YmxpYyBXZWJDb3JlOjpXb3JrZXJPYmplY3RQcm94eQorLy8gSW4gZXNzZW5jZSwgdGhp
cyBjbGFzcyBkZWNvcmF0ZXMgV29ya2VyTWVzc2FnaW5nUHJveHkuCisvLworLy8gSXQgaXMgaW1w
ZXJhdGl2ZSB0aGF0IHRoaXMgY2xhc3MgaW5oZXJpdCBmcm9tIFdvcmtlck1lc3NhZ2luZ1Byb3h5
IHJhdGhlciB0aGFuIGRlbGVnYXRlIHRvIGFuIGluc3RhbmNlIG9mCisvLyBXb3JrZXJNZXNzYWdp
bmdQcm94eSwgYmVjYXVzZSB0aGF0IGNsYXNzIHRyYWNrcyBhbmQgcmVwb3J0cyBpdHMgYWN0aXZp
dHkgdG8gb3V0c2lkZSBjYWxsZXJzLCBhbmQgbWFuYWdlcworLy8gaXRzIG93biBsaWZldGltZSwg
dmlhIGNhbGxzIHRvIHdvcmtlck9iamVjdERlc3Ryb3llZCwgd29ya2VyQ29udGV4dERlc3Ryb3ll
ZCwgd29ya2VyQ29udGV4dENsb3NlZCwgZXRjLiBJdAorLy8gaXMgYmFzaWNhbGx5IGltcG9zc2li
bGUgdG8gY29ycmVjdGx5IG1hbmFnZSB0aGUgbGlmZXRpbWUgb2YgdGhpcyBjbGFzcyBzZXBhcmF0
ZWx5IGZyb20gV29ya2VyTWVzc2FnaW5nUHJveHkuCitjbGFzcyBXZWJXb3JrZXJDbGllbnRJbXBs
IDogcHVibGljIFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICwgcHVibGljIFdlYldvcmtlckJhc2UKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLCBwdWJsaWMgV2ViQ29tbW9uV29ya2VyQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTY2LDU3ICs3
MCwyNyBAQCBwdWJsaWM6CiAgICAgLy8gV2ViQ29yZTo6V29ya2VyQ29udGV4dFByb3h5IG1ldGhv
ZHM6CiAgICAgLy8gVGhlc2UgYXJlIGNhbGxlZCBvbiB0aGUgdGhyZWFkIHRoYXQgY3JlYXRlZCB0
aGUgd29ya2VyLiAgSW4gdGhlIHJlbmRlcmVyCiAgICAgLy8gcHJvY2VzcywgdGhpcyB3aWxsIGJl
IHRoZSBtYWluIFdlYktpdCB0aHJlYWQuCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0V29ya2VyQ29u
dGV4dChjb25zdCBXZWJDb3JlOjpLVVJMJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYkNvcmU6OldvcmtlclRocmVhZFN0YXJ0TW9kZSkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoCi0gICAgICAgIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLAotICAgICAgICBQYXNzT3duUHRy
PFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSBPVkVSUklERTsKLQotI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgdmlydHVhbCB2b2lkIGNvbm5lY3RUb0luc3BlY3RvcihXZWJD
b3JlOjpXb3JrZXJDb250ZXh0UHJveHk6OlBhZ2VJbnNwZWN0b3IqKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21JbnNwZWN0b3IoKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0luc3BlY3Rvcihjb25zdCBTdHJpbmcmKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3IoY29uc3QgU3RyaW5n
JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUluc3BlY3RvclN0YXRlQ29va2ll
KGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwotI2VuZGlmCi0gICAgLy8gV2ViQ29yZTo6V29ya2Vy
TG9hZGVyUHJveHkgbWV0aG9kczoKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihQ
YXNzT3duUHRyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KFBhc3NP
d25QdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmlu
ZyYgbW9kZSkgT1ZFUlJJREU7Ci0KLSAgICAvLyBXZWJDb3JlOjpXb3JrZXJPYmplY3RQcm94eSBt
ZXRob2RzOgotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NS
ZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxXZWJDb3Jl
OjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBw
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGlu
dCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgT1ZFUlJJREU7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6TWVz
c2FnZVNvdXJjZSwgV2ViQ29yZTo6TWVzc2FnZUxldmVsLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wpIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0Q2xvc2VkKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIHdvcmtlckNvbnRleHREZXN0cm95ZWQoKSBPVkVSUklERTsKLQotICAgIC8vIFdlYldv
cmtlckNsaWVudEJhc2UgbWV0aG9kczoKKworICAgIC8vIFdlYkNvcmU6OldvcmtlckxvYWRlclBy
b3h5IG1ldGhvZHMKKyAgICB2aXJ0dWFsIFdlYldvcmtlckJhc2UqIHRvV2ViV29ya2VyQmFzZSgp
IE9WRVJSSURFOworCisgICAgLy8gV2ViV29ya2VyQmFzZSBtZXRob2RzOgorICAgIHZpcnR1YWwg
V2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkqIHdvcmtlckxvYWRlclByb3h5KCkgT1ZFUlJJREUg
eyByZXR1cm4gdGhpczsgfQorICAgIHZpcnR1YWwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21t
b25DbGllbnQoKSBPVkVSUklERSB7IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVhbCBXZWJWaWV3
KiB2aWV3KCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICAvLyBXZWJDb21tb25Xb3JrZXJDbGllbnQg
bWV0aG9kczoKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dEYXRhYmFzZShXZWJGcmFtZSosIGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dGaWxl
U3lzdGVtKCk7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5GaWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06
OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBhbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJpbmcmIG5hbWUpIE9WRVJSSURFOwog
Ci0gICAgLy8gV2ViQ29tbWVudFdvcmtlckJhc2UgbWV0aG9kczoKLSAgICB2aXJ0dWFsIFdlYkNv
bW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50KCkgT1ZFUlJJREUgeyByZXR1cm4gdGhpczsg
fQotICAgIHZpcnR1YWwgV2ViVmlldyogdmlldygpIGNvbnN0IE9WRVJSSURFOwotCiBwcml2YXRl
OgogICAgIFdlYldvcmtlckNsaWVudEltcGwoV2ViQ29yZTo6V29ya2VyKiwgV2ViRnJhbWVJbXBs
Kik7CiAgICAgdmlydHVhbCB+V2ViV29ya2VyQ2xpZW50SW1wbCgpOwogCi0gICAgV2ViQ29yZTo6
V29ya2VyTWVzc2FnaW5nUHJveHkqIG1fcHJveHk7Ci0gICAgLy8gR3VhcmQgYWdhaW5zdCBjb250
ZXh0IGZyb20gYmVpbmcgZGVzdHJveWVkIGJlZm9yZSBhIHdvcmtlciBleGl0cy4KLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogICAgIFdlYkZyYW1lSW1wbCogbV93ZWJGcmFtZTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9t
aXVtLmNwcAppbmRleCA0YTVmNjlkYzI0ODk5MDJiMWU1YzNmMjc5NjA0ZTMwMDRhNGM1ZDhmLi4y
MjU5NTM3ZWRmMzA5MWNkZGQ5ZjU2MzM0NWNhNjc2OWVkODU2Y2NiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hy
b21pdW0uY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIldlYkZp
bGVXcml0ZXIuaCIKLSNpbmNsdWRlICJXZWJXb3JrZXJCYXNlLmgiCiAjaW5jbHVkZSAiV29ya2Vy
QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAj
aW5jbHVkZSAiV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oIgpAQCAtNjIsOCArNjEs
NyBAQCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6V29ya2VyQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW0oU2NyaXB0RXhlY3V0aW9uQ29udAogewogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKIAotICAgIFdvcmtlckxvYWRlclByb3h5
KiB3b3JrZXJMb2FkZXJQcm94eSA9ICZtX3dvcmtlckNvbnRleHQtPnRocmVhZCgpLT53b3JrZXJM
b2FkZXJQcm94eSgpOwotICAgIG1fd29ya2VyID0gc3RhdGljX2Nhc3Q8V2ViV29ya2VyQmFzZSo+
KHdvcmtlckxvYWRlclByb3h5KTsKKyAgICBtX3dvcmtlckxvYWRlclByb3h5ID0gJm1fd29ya2Vy
Q29udGV4dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCk7CiB9CiAKIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUNocm9taXVtOjp+V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0oKQpAQCAt
MTk0LDcgKzE5Miw3IEBAIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZT4gV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0CiAgICAgbV9tb2RlRm9yQ3Vy
cmVudE9wZXJhdGlvbiA9IGZpbGVTeXN0ZW1PcGVyYXRpb25zTW9kZTsKICAgICBtX21vZGVGb3JD
dXJyZW50T3BlcmF0aW9uLmFwcGVuZChTdHJpbmc6Om51bWJlcihtX3dvcmtlckNvbnRleHQtPnRo
cmVhZCgpLT5ydW5Mb29wKCkuY3JlYXRlVW5pcXVlSWQoKSkpOwogCi0gICAgbV9icmlkZ2VGb3JD
dXJyZW50T3BlcmF0aW9uID0gV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRl
KG1fd29ya2VyLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG5ldyBXZWJLaXQ6OldlYkZpbGVT
eXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAgIG1fYnJpZGdlRm9yQ3VycmVudE9w
ZXJhdGlvbiA9IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNyZWF0ZShtX3dvcmtl
ckxvYWRlclByb3h5LCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG5ldyBXZWJLaXQ6OldlYkZp
bGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogICAgIHJldHVybiBtX2JyaWRnZUZv
ckN1cnJlbnRPcGVyYXRpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oCmluZGV4IDY3MjdkMWU0
NzQ4MTE0MjhkMzA0MmJiODhjYjZmZWM3NGY1Y2M0NzEuLmZhNDU3MjYyOTA4MmMwZTA4MWYxZmVk
ZmVhNDRlZWQ5Yzg3YzIzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaApAQCAtNDEsNyArNDEsNiBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGaWxlU3lzdGVtOwogY2xhc3MgV2ViVVJM
OwotY2xhc3MgV2ViV29ya2VyQmFzZTsKIGNsYXNzIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2U7CiB9CiAKQEAgLTUwLDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IGNsYXNzIFdvcmtlckNvbnRleHQ7CitjbGFzcyBXb3JrZXJMb2FkZXJQcm94eTsKIAogY2xhc3Mg
V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0gOiBwdWJsaWMgQXN5bmNGaWxlU3lzdGVtQ2hy
b21pdW0gewogcHVibGljOgpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQ
dHI8V2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBjcmVhdGVXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Ci0gICAgV2ViS2l0OjpXZWJXb3JrZXJCYXNlKiBtX3dvcmtlcjsKKyAgICBXb3JrZXJM
b2FkZXJQcm94eSogbV93b3JrZXJMb2FkZXJQcm94eTsKICAgICBXb3JrZXJDb250ZXh0KiBtX3dv
cmtlckNvbnRleHQ7CiAgICAgUmVmUHRyPFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZT4gbV9icmlkZ2VGb3JDdXJyZW50T3BlcmF0aW9uOwogICAgIFN0cmluZyBtX21vZGVG
b3JDdXJyZW50T3BlcmF0aW9uOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ4ZWY2NDgzNmRlM2ZkMmQ5NzE3N2EyZTQyYmRj
NzZiNDViOWE3MDkuLjhhY2Y2YWUwOTMxOWRhOTBmNmFiZWVmMjg4N2U1ZjEyZGIyYjc1NDggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMS0wMiAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdv
b2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBDcmVhdGlvbiBvZiBkZWRpY2F0ZWQgd29y
a2VycyAoaXNvbGF0ZXMpIGxlYWtzIHJlZmVyZW5jZSB0byBIVE1MRG9jdW1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTM2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jl
c291cmNlcy9lbXB0eS13b3JrZXIuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9y
ZXNvdXJjZXMvd29ya2VyLWRvY3VtZW50LWxlYWstaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvd29ya2Vycy93b3JrZXItZG9jdW1lbnQtbGVhay1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItZG9jdW1lbnQtbGVhay5odG1sOiBBZGRl
ZC4KKwogMjAxMy0wMS0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBBZGQgYSBmYWlsaW5nIHRlc3QgZXhwZWN0YXRpb24gdG8gYSB0ZXN0IGFkZGVkIGJ5IHIx
MzY2OTcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL2Vt
cHR5LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvZW1wdHkt
d29ya2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwZGI0ODQzN2JiZmYwZDg1NmYxYmI0Mjc0ZTM4ZGFmNjll
ZGJkMGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3Vy
Y2VzL2VtcHR5LXdvcmtlci5qcwpAQCAtMCwwICsxLDIgQEAKK3Bvc3RNZXNzYWdlKCJjbG9zaW5n
Iik7CitjbG9zZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291
cmNlcy93b3JrZXItZG9jdW1lbnQtbGVhay1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWRvY3VtZW50LWxlYWstaWZyYW1lLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTkyYmNmZWZhYTlhNDk0YmYzN2FlYTQzYTAzNjE1M2UxNzA4M2RlYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWRvY3Vt
ZW50LWxlYWstaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Indvcmtlci11dGlsLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Cit2YXIgd29ya2VyID0gbmV3IFdvcmtlcignZW1wdHktd29ya2VyLmpzJyk7Cit3b3Jr
ZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB3YWl0VW50aWxXb3JrZXJUaHJl
YWRzRXhpdChmdW5jdGlvbigpIHsKKyAgICAgICAgcGFyZW50LnBvc3RNZXNzYWdlKCJkb25lIiwg
IioiKTsKKyAgICB9KTsKK307Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItZG9jdW1lbnQtbGVhay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWRvY3VtZW50LWxlYWstZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMDVhOWFmN2VhOThiYWY3OWJkMWY3YmI4MWNmNWY2NzE3
OGY0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2Vy
LWRvY3VtZW50LWxlYWstZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVmVyaWZ5IHRoYXQg
Y3JlYXRpb24gb2YgYSB3b3JrZXIgZG9lcyBub3QgbGVhayBpdHMgY3JlYXRpbmcgZG9jdW1lbnQu
CisKK1BBU1M6IGRpZCBub3QgbGVhayBkb2N1bWVudHMgZHVyaW5nIHRlc3QgcnVuCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItZG9jdW1lbnQtbGVhay5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1kb2N1bWVudC1sZWFrLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDY3NTZmZTg3NDI2MmE2NTU4N2Y4MWM2NTJmM2MyMTAyYTRiYmY2YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItZG9jdW1lbnQtbGVh
ay5odG1sCkBAIC0wLDAgKzEsODkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxwPlZlcmlmeSB0aGF0IGNyZWF0aW9uIG9mIGEgd29ya2VyIGRvZXMgbm90IGxlYWsgaXRzIGNy
ZWF0aW5nIGRvY3VtZW50LjwvcD4KKzxkaXYgaWQ9J2NvbnNvbGUnPjwvZGl2PgorPHNjcmlwdCBz
cmM9J3Jlc291cmNlcy93b3JrZXItdXRpbC5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUi
KS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Cit9CisKKy8vIFNldCB0aGlzIG51bWJlciBhcyBoaWdoIGFzIHBvc3NpYmxl
IHdpdGhvdXQgaW50cm9kdWNpbmcgdGltZW91dHMgaW4gZGVidWcgYnVpbGRzLgorLy8gUmVkdWNp
bmcgaXQgZG9lcyBub3QgcmVxdWlyZSByZWJhc2VsaW5lcy4KK3ZhciBudW1JdGVyYXRpb25zID0g
NjsKKwordmFyIGN1cnJlbnRJdGVyYXRpb24gPSAwOwordmFyIGlmcmFtZSA9IG51bGw7Cit2YXIg
bnVtTGl2ZUF0U3RhcnQgPSAwOwordmFyIG51bUxpdmVBdEVuZCA9IDA7CisKK3dpbmRvdy5vbm1l
c3NhZ2UgPSBmdW5jdGlvbihldmVudCkgeworICAgIGlmIChldmVudC5kYXRhID09ICJkb25lIikg
eworICAgICAgICBydW5PbmVJdGVyYXRpb24oKTsKKyAgICB9Cit9OworCitmdW5jdGlvbiBzdGFy
dFRlc3QoKQoreworICAgIGdjKCk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93
LmludGVybmFscy5udW1iZXJPZkxpdmVEb2N1bWVudHMpIHsKKyAgICAgICAgbnVtTGl2ZUF0U3Rh
cnQgPSB3aW5kb3cuaW50ZXJuYWxzLm51bWJlck9mTGl2ZURvY3VtZW50cygpOworICAgICAgICAv
LyBEZXBlbmRpbmcgb24gd2hpY2ggdGVzdHMgcmFuIGJlZm9yZSB0aGlzIG9uZSBpbiBEdW1wUmVu
ZGVyVHJlZSwKKyAgICAgICAgLy8gdGhlaXIgRG9jdW1lbnQgaW5zdGFuY2VzIG1heSBub3QgaGF2
ZSBiZWVuIGZ1bGx5IGNsZWFuZWQgdXAgeWV0LgorICAgICAgICAvLyBXaGVuIHRoaXMgdGVzdCBp
cyBydW4gaW4gaXNvbGF0aW9uLCB0aGVyZSBzaG91bGQgYmUgb25seSBvbmUKKyAgICAgICAgLy8g
bGl2ZSBkb2N1bWVudCBhdCB0aGlzIHBvaW50LgorICAgICAgICBydW5PbmVJdGVyYXRpb24oKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBsb2coIndpbmRvdy5pbnRlcm5hbHMubnVtYmVyT2ZMaXZl
RG9jdW1lbnRzIG5vdCBhdmFpbGFibGUgLS0gbm8gcG9pbnQgaW4gcnVubmluZyB0ZXN0Iik7Cisg
ICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1bk9uZUl0ZXJhdGlv
bigpIHsKKyAgICBpZiAoY3VycmVudEl0ZXJhdGlvbiA8IG51bUl0ZXJhdGlvbnMpIHsKKyAgICAg
ICAgKytjdXJyZW50SXRlcmF0aW9uOworCisgICAgICAgIHZhciBjcmVhdGVkSWZyYW1lID0gZmFs
c2U7CisgICAgICAgIGlmICghaWZyYW1lKSB7CisgICAgICAgICAgICBpZnJhbWUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgICAgIGNyZWF0ZWRJZnJhbWUgPSB0
cnVlOworICAgICAgICB9CisgICAgICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoInNyYyIsICJyZXNv
dXJjZXMvd29ya2VyLWRvY3VtZW50LWxlYWstaWZyYW1lLmh0bWwiKTsKKyAgICAgICAgaWYgKGNy
ZWF0ZWRJZnJhbWUpCisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFt
ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZmluaXNoVGVzdCgpOworICAgIH0KK30KKworZnVu
Y3Rpb24gZmluaXNoVGVzdCgpCit7CisgICAgZ2MoKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzICYmIHdpbmRvdy5pbnRlcm5hbHMubnVtYmVyT2ZMaXZlRG9jdW1lbnRzKSB7CisgICAgICAg
IG51bUxpdmVBdEVuZCA9IHdpbmRvdy5pbnRlcm5hbHMubnVtYmVyT2ZMaXZlRG9jdW1lbnRzKCk7
CisgICAgICAgIC8vIFVuZGVyIG5vIGNpcmN1bXN0YW5jZXMgc2hvdWxkIHRoZSBudW1iZXIgb2Yg
bGl2ZSBkb2N1bWVudHMKKyAgICAgICAgLy8gYXQgdGhlIGVuZCBiZSBtb3JlIHRoYW4gMSBncmVh
dGVyIHRoYW4gdGhlIG51bWJlciBhdCB0aGUKKyAgICAgICAgLy8gYmVnaW5uaW5nIChiZWNhdXNl
IG9mIHRoZSBpZnJhbWUpLgorICAgICAgICBpZiAobnVtTGl2ZUF0RW5kID4gbnVtTGl2ZUF0U3Rh
cnQgKyAxKSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IGxlYWtlZCBkb2N1bWVudHMgZHVyaW5n
IHRlc3QgcnVuIChzdGFydGVkIHdpdGggIiArIG51bUxpdmVBdFN0YXJ0ICsgIiwgZW5kZWQgd2l0
aCAiICsgbnVtTGl2ZUF0RW5kKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZygi
UEFTUzogZGlkIG5vdCBsZWFrIGRvY3VtZW50cyBkdXJpbmcgdGVzdCBydW4iKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBzdGFydFRlc3Q7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181129</attachid>
            <date>2013-01-02 18:41:54 -0800</date>
            <delta_ts>2013-01-02 19:23:49 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-105367-20130102183902.patch</filename>
            <type>text/plain</type>
            <size>34887</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE5MjUyM2RkZWMzNDRi
YjAzMjQ1NGQzN2UxNTk4N2IwN2M2YTg0Yi4uY2M1NjBjZjgwZmU1YmQ3MTI1YjM3OGRhNGVmNTIx
YmE5ZGZjYjM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTAxLTAyICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIENyZWF0
aW9uIG9mIGRlZGljYXRlZCB3b3JrZXJzIChpc29sYXRlcykgbGVha3MgcmVmZXJlbmNlIHRvIEhU
TUxEb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA1MzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRpdG92LgorCisgICAgICAg
IEVsaW1pbmF0ZWQgYSBDaHJvbWl1bS1zcGVjaWZpYyBvYmplY3Qgd3JhcHBpbmcgV29ya2VyTWVz
c2FnaW5nUHJveHkgaW4gb3JkZXIgdG8gZml4IGEKKyAgICAgICAgbGlmZXRpbWUgbWFuYWdlbWVu
dCBidWcsIHdoaWNoIGxlYWtlZCBldmVyeSBEb2N1bWVudCB3aGljaCBzdGFydGVkIGEgZGVkaWNh
dGVkIHdvcmtlci4KKworICAgICAgICBUZXN0OiBmYXN0L3dvcmtlcnMvd29ya2VyLWRvY3VtZW50
LWxlYWsuaHRtbAorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oOgorICAg
ICAgICAoV29ya2VyTG9hZGVyUHJveHkpOgorICAgICAgICAgICAgQWRkZWQgQ2hyb21pdW0tc3Bl
Y2lmaWMgY2FzdGluZyBtZXRob2QgdG8gYnJpZGdlIHR3byBub3ctZGlzdGluY3QgY2xhc3MgaGll
cmFyY2hpZXMuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oOgorICAg
ICAgICAoV29ya2VyTWVzc2FnaW5nUHJveHkpOgorICAgICAgICAgICAgTWFkZSBkZXN0cnVjdG9y
IHByb3RlY3RlZCBpbnN0ZWFkIG9mIHByaXZhdGUgdG8gYWxsb3cgc3ViY2xhc3NpbmcuCisKIDIw
MTMtMDEtMDIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbVjhd
IFY4RE9NV3JhcHBlci5jcHAgaGFzIG1hbnkgbW9yZSBpbmNsdWRlcyB0aGFuIG5lY2Vzc2FyeQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiN2I0MGU5YWVkNDQyYjQwNTc3MjZhMTk0YjU5
YTJkMTMzOGJkNmI0Li5iYTMyYmIwODM4ZDViNmQyZjIxZDcwN2I3NDUwMTA5MzQyNzBiM2IzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEzLTAxLTAyICBL
ZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIENy
ZWF0aW9uIG9mIGRlZGljYXRlZCB3b3JrZXJzIChpc29sYXRlcykgbGVha3MgcmVmZXJlbmNlIHRv
IEhUTUxEb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1MzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRpdG92LgorCisgICAg
ICAgIE1hZGUgV2ViV29ya2VyQ2xpZW50SW1wbCBhIHN1YmNsYXNzIG9mIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5IHJhdGhlciB0aGFuIGFuIG9iamVjdCB3cmFwcGluZworICAgICAgICBXb3JrZXJNZXNz
YWdpbmdQcm94eS4gV29ya2VyTWVzc2FnaW5nUHJveHkgbWFuYWdlcyBpdHMgb3duIGxpZmV0aW1l
IGFuZCBpdCBpcyBpbXBvc3NpYmxlIHRvCisgICAgICAgIHByb3Blcmx5IHN5bmNocm9uaXplIHRo
ZSBsaWZldGltZSBvZiBXZWJXb3JrZXJDbGllbnRJbXBsIHNlcGFyYXRlbHkuCisKKyAgICAgICAg
VGhpcyBhbGxvd2VkIG1vc3Qgb2YgV2ViV29ya2VyQ2xpZW50SW1wbCB0byBiZSBkZWxldGVkLCBi
dXQgZm9yY2VkIGEgZGl2ZXJnZW5jZSBpbiB0aGUgY2xhc3MKKyAgICAgICAgaGllcmFyY2hpZXMg
b2YgV2ViV29ya2VyQ2xpZW50SW1wbCBhbmQgV2ViU2hhcmVkV29ya2VySW1wbC4gQ29udmVyc2lv
biBtZXRob2RzIHdlcmUgYWRkZWQgdG8KKyAgICAgICAgV29ya2VyTG9hZGVyUHJveHkgYW5kIFdl
YldvcmtlckJhc2UgdG8gYnJpZGdlIHRoZSBoaWVyYXJjaGllcyBvZiBpbi1wcm9jZXNzIGFuZAor
ICAgICAgICBvdXQtb2YtcHJvY2VzcyB3b3JrZXJzLgorCisgICAgICAgICogc3JjL0RhdGFiYXNl
T2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPYnNlcnZlcjo6Y2FuRXN0
YWJsaXNoRGF0YWJhc2UpOgorICAgICAgICAgICAgQWRqdXN0ZWQgaG93IFdlYldvcmtlckJhc2Ug
aXMgb2J0YWluZWQgZnJvbSBXb3JrZXJMb2FkZXJQcm94eS4KKyAgICAgICAgKiBzcmMvSURCRmFj
dG9yeUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFsbG93SW5kZXhlZERCTWFp
blRocmVhZEJyaWRnZTo6c2lnbmFsQ29tcGxldGVkKToKKyAgICAgICAgICAgIEFkanVzdGVkIGhv
dyBXb3JrZXJMb2FkZXJQcm94eSdzIG1ldGhvZHMgYXJlIGNhbGxlZC4KKyAgICAgICAgKFdlYktp
dDo6SURCRmFjdG9yeUJhY2tlbmRQcm94eTo6YWxsb3dJbmRleGVkREIpOgorICAgICAgICAgICAg
QWRqdXN0ZWQgaG93IFdlYldvcmtlckJhc2UgaXMgb2J0YWluZWQgZnJvbSBXb3JrZXJMb2FkZXJQ
cm94eS4KKyAgICAgICAgKiBzcmMvTG9jYWxGaWxlU3lzdGVtQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6b3BlbkZpbGVTeXN0ZW1IZWxwZXIpOgorICAgICAgICAgICAgQWRqdXN0ZWQg
aG93IFdlYldvcmtlckJhc2UgaXMgb2J0YWluZWQgZnJvbSBXb3JrZXJMb2FkZXJQcm94eS4KKyAg
ICAgICAgKiBzcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlckltcGw6OnRvV2ViV29ya2VyQmFzZSk6CisgICAgICAgICAgICBJbXBsZW1l
bnRlZCBuZXcgY29udmVyc2lvbiBtZXRob2QuCisgICAgICAgICogc3JjL1dlYlNoYXJlZFdvcmtl
ckltcGwuaDoKKyAgICAgICAgKFdlYlNoYXJlZFdvcmtlckltcGwpOgorICAgICAgICAgICAgRXhw
bGljaXRseSBkZXJpdmUgZnJvbSBXb3JrZXJMb2FkZXJQcm94eSBub3cgdGhhdCBXZWJXb3JrZXJC
YXNlIG5vIGxvbmdlciBkb2VzLgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJJbXBs
Ojp3b3JrZXJMb2FkZXJQcm94eSk6CisgICAgICAgICAgICBBZGRlZCBuZXcgY29udmVyc2lvbiBt
ZXRob2QuCisgICAgICAgICogc3JjL1dlYldvcmtlckJhc2UuaDoKKyAgICAgICAgKFdlYldvcmtl
ckJhc2UpOgorICAgICAgICAgICAgUmVtb3ZlZCBkZXJpdmF0aW9uIGZyb20gV29ya2VyTG9hZGVy
UHJveHkuIEFkZGVkIG1ldGhvZCB0byBjb252ZXJ0IHRvIFdvcmtlckxvYWRlclByb3h5LgorICAg
ICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgICAgICBBZGp1c3RlZCBjb21tZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJD
bGllbnRJbXBsOjpjcmVhdGVXb3JrZXJDb250ZXh0UHJveHkpOgorICAgICAgICAgICAgQWRqdXN0
ZWQgd2hpdGVzcGFjZS4KKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6dGVy
bWluYXRlV29ya2VyQ29udGV4dCk6CisgICAgICAgICAgICBFbGltaW5hdGVkIGRlbGVnYXRpb24g
dG8gc2VwYXJhdGUgb2JqZWN0LgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBs
Ojp0b1dlYldvcmtlckJhc2UpOgorICAgICAgICAgICAgSW1wbGVtZW50ZWQgbmV3IGNvbnZlcnNp
b24gbWV0aG9kLgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjp2aWV3KToK
KyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6YWxsb3dEYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OmFsbG93RmlsZVN5c3RlbSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6Om9wZW5GaWxlU3lzdGVtKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6YWxsb3dJbmRleGVkREIpOgorICAg
ICAgICAgICAgRWxpbWluYXRlZCBkZWxlZ2F0aW9uIHRvIHNlcGFyYXRlIG9iamVjdC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6V2ViV29ya2VyQ2xpZW50SW1wbCk6Cisg
ICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgICAgICBDaGFuZ2VkIHRvIGluaGVyaXQgZnJvbSBXb3JrZXJNZXNzYWdpbmdQcm94eSBk
aXJlY3RseS4KKyAgICAgICAgKFdlYldvcmtlckNsaWVudEltcGwpOgorICAgICAgICAgICAgRGVs
ZXRlZCBtb3N0IG1ldGhvZHMgcHJldmlvdXNseSBvdmVycmlkZGVuIGZyb20gV29ya2VyQ29udGV4
dFByb3h5LCBldGMuCisgICAgICAgICogc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpX
b3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJB
c3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZSk6CisgICAgICAgICAgICBIb2xkIG9uIHRvLCBhbmQgdXNlLCBXb3JrZXJMb2FkZXJQcm94
eSByYXRoZXIgdGhhbiBXZWJXb3JrZXJCYXNlLgorICAgICAgICAqIHNyYy9Xb3JrZXJBc3luY0Zp
bGVTeXN0ZW1DaHJvbWl1bS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0pOgorICAgICAgICAgICAg
SG9sZCBvbiB0byBXb3JrZXJMb2FkZXJQcm94eSByYXRoZXIgdGhhbiBXZWJXb3JrZXJCYXNlLgor
CiAyMDEzLTAxLTAyICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBSZW1vdmUgdW51c2VkIHRyYW5zaXRpb25hbCAjZGVmaW5lcyBmcm9t
IFdlYktpdCBDbGllbnQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckxvYWRlclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclBy
b3h5LmgKaW5kZXggZDJmY2Y5NjJlOGJmMWQ0NDY1YWZmMTMzMzA0ZWM3NTEyYzFhNjZjMS4uZTU0
N2ZlZTZkOTNhOWNlNzEwYTBmMWFkYWRlNjc5OGMwODliOTE5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaApAQCAtMzcsNiArMzcsMTIgQEAKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKKyNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViV29ya2VyQmFzZTsK
K30KKyNlbmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgLy8gQSBwcm94eSB0byB0YWxrIHRvIHRoZSBsb2FkZXIgY29udGV4dC4gTm9ybWFsbHks
IHRoZSBkb2N1bWVudCBvbiB0aGUgbWFpbiB0aHJlYWQKQEAgLTU1LDYgKzYxLDExIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gc3BlY2lmaWMgc3luY2hyb25vdXMgbG9hZGluZyBy
ZXF1ZXN0cyBzbyB0aGV5IGNhbiBiZSAnbmVzdGVkJywgcGVyIHNwZWMuCiAgICAgICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgdGFzayB3YXMgcG9zdGVkIHN1Y2Nlc3NmdWxseS4KICAgICAgICAg
dmlydHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChQYXNzT3duUHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmIG1vZGUpID0gMDsKKwor
I2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgICAgICAvLyBTcGFucyBkaXZlcmdlbnQgY2xhc3Mg
aGllcmFyY2hpZXMgZm9yIGRlZGljYXRlZCBhbmQgc2hhcmVkIHdvcmtlcnMuCisgICAgICAgIHZp
cnR1YWwgV2ViS2l0OjpXZWJXb3JrZXJCYXNlKiB0b1dlYldvcmtlckJhc2UoKSA9IDA7CisjZW5k
aWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggZTg2OTI0ZTcxMjU4NGRlYWIwYzQ0
MDgzZDhmZTZiODc0YjI3Y2M5NC4uZDhmYjY5OTUzMmMyNjBkMDkxZDU2MzNlZjc3Njk4YWI5NDYz
N2U4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
aApAQCAtODksNiArODksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIE9ubHkg
dXNlIHRoaXMgbWV0aG9kIG9uIHRoZSB3b3JrZXIgb2JqZWN0IHRocmVhZC4KICAgICAgICAgYm9v
bCBhc2tlZFRvVGVybWluYXRlKCkgY29uc3QgeyByZXR1cm4gbV9hc2tlZFRvVGVybWluYXRlOyB9
CiAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgfldvcmtlck1lc3NhZ2luZ1Byb3h5
KCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTWVzc2FnZVdvcmtlclRh
c2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBQb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2s7
CkBAIC05Niw4ICs5OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZnJpZW5kIGNs
YXNzIFdvcmtlckV4Y2VwdGlvblRhc2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXb3JrZXJUaHJl
YWRBY3Rpdml0eVJlcG9ydFRhc2s7CiAKLSAgICAgICAgdmlydHVhbCB+V29ya2VyTWVzc2FnaW5n
UHJveHkoKTsKLQogICAgICAgICB2b2lkIHdvcmtlckNvbnRleHREZXN0cm95ZWRJbnRlcm5hbCgp
OwogICAgICAgICBzdGF0aWMgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWRJbnRlcm5hbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyTWVzc2FnaW5nUHJveHkqKTsKICAgICAgICAgdm9p
ZCByZXBvcnRQZW5kaW5nQWN0aXZpdHlJbnRlcm5hbChib29sIGNvbmZpcm1pbmdNZXNzYWdlLCBi
b29sIGhhc1BlbmRpbmdBY3Rpdml0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9EYXRhYmFzZU9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0RhdGFiYXNlT2JzZXJ2ZXIuY3BwCmluZGV4IDMyMmU4MDBlYzIxNjRjYjFmMDdmNGQ0ODZjMjg2
N2E2YjdiZTIxOTkuLjY1YzU4NTgyNjQ4MmVmNmRjMjMzMGM5ODgxY2QzZDM1NGU2MGMzM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3BwCkBA
IC0xNjQsOCArMTY0LDcgQEAgYm9vbCBEYXRhYmFzZU9ic2VydmVyOjpjYW5Fc3RhYmxpc2hEYXRh
YmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXQKICAgICB9IGVsc2Ugewog
I2lmIEVOQUJMRShXT1JLRVJTKQogICAgICAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0
ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwot
ICAgICAgICBXb3JrZXJMb2FkZXJQcm94eSogd29ya2VyTG9hZGVyUHJveHkgPSAmd29ya2VyQ29u
dGV4dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCk7Ci0gICAgICAgIFdlYldvcmtlckJh
c2UqIHdlYldvcmtlciA9IHN0YXRpY19jYXN0PFdlYldvcmtlckJhc2UqPih3b3JrZXJMb2FkZXJQ
cm94eSk7CisgICAgICAgIFdlYldvcmtlckJhc2UqIHdlYldvcmtlciA9IHN0YXRpY19jYXN0PFdl
YldvcmtlckJhc2UqPih3b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+d29ya2VyTG9hZGVyUHJveHko
KS50b1dlYldvcmtlckJhc2UoKSk7CiAgICAgICAgIFdlYlZpZXcqIHZpZXcgPSB3ZWJXb3JrZXIt
PnZpZXcoKTsKICAgICAgICAgaWYgKCF2aWV3KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFBy
b3h5LmNwcAppbmRleCAwZTY1OTcxOTc0OTMwZDM0ODNlNjI5ZjQ5NWU2N2JkNTAzODI0NmU0Li5j
NjBhM2NiYTk0ZTEzOGJlODBhZjMxMmJiZDgwMTZkYWY3ZDU5ZmViIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcApAQCAt
MTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX211dGV4KTsKICAgICAgICAgaWYgKG1fd2ViV29ya2VyQmFzZSkKLSAgICAgICAgICAgIG1f
d2ViV29ya2VyQmFzZS0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxi
YWNrVGFzaygmZGlkQ29tcGxldGUsIHRoaXMsIHJlc3VsdCksIG1vZGUpOworICAgICAgICAgICAg
bV93ZWJXb3JrZXJCYXNlLT53b3JrZXJMb2FkZXJQcm94eSgpLT5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRDb21wbGV0ZSwgdGhpcywgcmVzdWx0
KSwgbW9kZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTcyLDcgKzE3Miw3IEBAIGJvb2wgSURC
RmFjdG9yeUJhY2tlbmRQcm94eTo6YWxsb3dJbmRleGVkREIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uCiAgICAgICAgIGFsbG93ZWQgPSAhd2ViVmlldy0+cGVybWlzc2lvbkNs
aWVudCgpIHx8IHdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKS0+YWxsb3dJbmRleGVkREIod2Vi
RnJhbWUsIG5hbWUsIG9yaWdpbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgV29ya2VyQ29udGV4
dCogd29ya2VyQ29udGV4dCA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KTsK
LSAgICAgICAgV2ViV29ya2VyQmFzZSogd2ViV29ya2VyQmFzZSA9IHN0YXRpY19jYXN0PFdlYldv
cmtlckJhc2UqPigmd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCkp
OworICAgICAgICBXZWJXb3JrZXJCYXNlKiB3ZWJXb3JrZXJCYXNlID0gc3RhdGljX2Nhc3Q8V2Vi
V29ya2VyQmFzZSo+KHdvcmtlckNvbnRleHQtPnRocmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgp
LnRvV2ViV29ya2VyQmFzZSgpKTsKICAgICAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9IHdv
cmtlckNvbnRleHQtPnRocmVhZCgpLT5ydW5Mb29wKCk7CiAKICAgICAgICAgU3RyaW5nIG1vZGUg
PSBhbGxvd0luZGV4ZWREQk1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKaW5kZXggNWZhMDdkZGFkZDI0ZDE0MzA3
OTVmYTRiOWU0NzZkYzMzODlmNGFhNS4uN2ZlNTQ1ZDE2NDM0NDk5ZTM5MzVmYjk2MjMwYzBjNzY2
MDk4OGMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxGaWxl
U3lzdGVtQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xvY2Fs
RmlsZVN5c3RlbUNocm9taXVtLmNwcApAQCAtMjAzLDggKzIwMyw3IEBAIHN0YXRpYyB2b2lkIG9w
ZW5GaWxlU3lzdGVtSGVscGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZpbGVT
eXN0ZW1UeXBlCiAgICAgfSBlbHNlIHsKICNpZiBFTkFCTEUoV09SS0VSUykKICAgICAgICAgV29y
a2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihj
b250ZXh0KTsKLSAgICAgICAgV29ya2VyTG9hZGVyUHJveHkqIHdvcmtlckxvYWRlclByb3h5ID0g
JndvcmtlckNvbnRleHQtPnRocmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgpOwotICAgICAgICBX
ZWJXb3JrZXJCYXNlKiB3ZWJXb3JrZXIgPSBzdGF0aWNfY2FzdDxXZWJXb3JrZXJCYXNlKj4od29y
a2VyTG9hZGVyUHJveHkpOworICAgICAgICBXZWJXb3JrZXJCYXNlKiB3ZWJXb3JrZXIgPSBzdGF0
aWNfY2FzdDxXZWJXb3JrZXJCYXNlKj4od29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlckxv
YWRlclByb3h5KCkudG9XZWJXb3JrZXJCYXNlKCkpOwogICAgICAgICBpZiAoIWFsbG93RmlsZVN5
c3RlbUZvcldvcmtlcih3ZWJXb3JrZXItPmNvbW1vbkNsaWVudCgpKSkKICAgICAgICAgICAgIGFs
bG93ZWQgPSBmYWxzZTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcAppbmRleCAzMTA5Yzc1ZDNmYjRhN2E4NDFh
YjQ2ZGUzMGRjOWYxYTY4ZTVkOTRmLi4zMzUxNzM3M2E4NmQ3MTRkNWIxZDAwYzAyOThjNDZlNGRm
NmQxMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRX
b3JrZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRX
b3JrZXJJbXBsLmNwcApAQCAtMzI0LDYgKzMyNCwxMCBAQCBib29sIFdlYlNoYXJlZFdvcmtlcklt
cGw6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dCgKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorV2ViV29ya2VyQmFzZSogV2ViU2hhcmVkV29ya2VySW1wbDo6dG9XZWJXb3JrZXJCYXNlKCkK
K3sKKyAgICByZXR1cm4gdGhpczsKK30KIAogCiBib29sIFdlYlNoYXJlZFdvcmtlckltcGw6Omlz
U3RhcnRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFy
ZWRXb3JrZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3Jr
ZXJJbXBsLmgKaW5kZXggNDkxMjExZTU0ZDZmM2YwNGRlOWU3OTRjZTE4NTIwMWQzN2Y1ZTI3NC4u
ZWI3NzE4Yjc4NGNjYzJiOTQ1OGQxZGRhMjgyZWQ1YmY5Y2M3ZGQ5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuaApAQCAtNjEsMTAgKzYx
LDEyIEBAIGNsYXNzIFdlYlNoYXJlZFdvcmtlckNsaWVudDsKIC8vIEl0IGNhbid0IHVzZSBpdCBk
aXJlY3RseSBzaW5jZSBpdCB1c2VzIFdlYktpdCB0eXBlcywgc28gdGhpcyBjbGFzcyBjb252ZXJ0
cyB0aGUgZGF0YSB0eXBlcy4KIC8vIFdoZW4gdGhlIFdlYkNvcmU6OlNoYXJlZFdvcmtlciBvYmpl
Y3Qgd2FudHMgdG8gY2FsbCBXZWJDb3JlOjpXb3JrZXJSZXBvcnRpbmdQcm94eSwgdGhpcyBjbGFz
cyB3aWxsCiAvLyBjb252ZXJ0IHRvIENocm9tZSBkYXRhIHR5cGVzIGZpcnN0IGFuZCB0aGVuIGNh
bGwgdGhlIHN1cHBsaWVkIFdlYkNvbW1vbldvcmtlckNsaWVudC4KLWNsYXNzIFdlYlNoYXJlZFdv
cmtlckltcGwgOiBwdWJsaWMgV2ViQ29yZTo6V29ya2VyT2JqZWN0UHJveHkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViV29ya2VyQmFzZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAsIHB1YmxpYyBXZWJGcmFtZUNsaWVudAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAsIHB1YmxpYyBXZWJTaGFyZWRXb3JrZXIgeworY2xhc3MgV2ViU2hhcmVkV29ya2VySW1wbAor
ICAgIDogcHVibGljIFdlYkNvcmU6Oldvcmtlck9iamVjdFByb3h5CisgICAgLCBwdWJsaWMgV2Vi
Q29yZTo6V29ya2VyTG9hZGVyUHJveHkKKyAgICAsIHB1YmxpYyBXZWJXb3JrZXJCYXNlCisgICAg
LCBwdWJsaWMgV2ViRnJhbWVDbGllbnQKKyAgICAsIHB1YmxpYyBXZWJTaGFyZWRXb3JrZXIgewog
cHVibGljOgogICAgIGV4cGxpY2l0IFdlYlNoYXJlZFdvcmtlckltcGwoV2ViU2hhcmVkV29ya2Vy
Q2xpZW50Kik7CiAKQEAgLTg4LDYgKzkwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBw
b3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4pOwogICAgIHZpcnR1YWwgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRl
eHQoCiAgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4sIGNvbnN0IFdURjo6U3RyaW5nJiBtb2RlKTsKKyAgICB2aXJ0dWFsIFdlYldvcmtlckJh
c2UqIHRvV2ViV29ya2VyQmFzZSgpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViRnJhbWVDbGllbnQg
bWV0aG9kcyB0byBzdXBwb3J0IHJlc291cmNlIGxvYWRpbmcgdGhydSB0aGUgJ3NoYWRvdyBwYWdl
Jy4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGF0YVNvdXJjZShXZWJGcmFtZSosIFdlYkRh
dGFTb3VyY2UqKTsKQEAgLTExMSw3ICsxMTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGV2VG9vbHNNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYpOwogCiAKLSAgICAvLyBO
ZXdXZWJXb3JrZXJCYXNlIG1ldGhvZHM6CisgICAgLy8gV2ViV29ya2VyQmFzZSBtZXRob2RzOgor
ICAgIFdlYkNvcmU6OldvcmtlckxvYWRlclByb3h5KiB3b3JrZXJMb2FkZXJQcm94eSgpIHsgcmV0
dXJuIHRoaXM7IH0KICAgICBXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCgpIHsg
cmV0dXJuIG1fY2xpZW50OyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJXb3JrZXJCYXNlLmgKaW5kZXggYzQzYzYzOTMxYjA0MTg1MDY0N2E1ZTUyMmNkZTRjZTAx
OTEzNWNiYi4uZjgzMTVhYzFmNzBiNDhmYzQ5N2MyYzVmZTAwNWIyMDYxMTkwYjM5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaApAQCAtNDgsOCArNDgsOSBA
QCBjbGFzcyBXZWJWaWV3OwogLy8gY29udGFpbmluZyBjb21tb24gaW50ZXJmYWNlIGZvciBzaGFy
ZWQgd29ya2VycyBhbmQgZGVkaWNhdGVkIGluLXByb2Mgd29ya2VycyBpbXBsZW1lbnRhdGlvbi4K
IC8vCiAvLyBGSVhNRTogUmVuYW1lIHRoaXMgY2xhc3MgaW50byBXZWJXb3JrZXJCYXNlLCBtZXJn
ZSBleGlzdGluZyBXZWJXb3JrZXJCYXNlIGFuZCBXZWJTaGFyZWRXb3JrZXIuCi1jbGFzcyBXZWJX
b3JrZXJCYXNlIDogcHVibGljIFdlYkNvcmU6OldvcmtlckxvYWRlclByb3h5IHsKK2NsYXNzIFdl
YldvcmtlckJhc2UgewogcHVibGljOgorICAgIHZpcnR1YWwgV2ViQ29yZTo6V29ya2VyTG9hZGVy
UHJveHkqIHdvcmtlckxvYWRlclByb3h5KCkgPSAwOwogICAgIHZpcnR1YWwgV2ViQ29tbW9uV29y
a2VyQ2xpZW50KiBjb21tb25DbGllbnQoKSA9IDA7CiAgICAgdmlydHVhbCBXZWJWaWV3KiB2aWV3
KCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJXb3JrZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldv
cmtlckNsaWVudEltcGwuY3BwCmluZGV4IGNmN2UwZDJmMDlkYzBiOTY5ZmU2M2M0NmUxMGUyMzNk
NDY2NzQyOWQuLmU5NjQzODU2NGZmMTJlMmJjNzVjMzMwOTIzYTVmYTU0OTU4Y2M5ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3Bw
CkBAIC02OSw4ICs2OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotLy8gQ2hyb21pdW0tc3BlY2lmaWMgd3JhcHBlciBvdmVyIFdvcmtlck1lc3Nh
Z2luZ1Byb3h5LgotLy8gRGVsZWdhdGVzIGltcGxlbWVudGF0aW9uIG9mIFdvcmtlcntMb2FkZXIs
Q29udGV4dCxPYmplY3R9UHJveHkgdG8gV29ya2VyTWVzc2FnaW5nUHJveHkuCisvLyBDaHJvbWl1
bS1zcGVjaWZpYyBkZWNvcmF0b3Igb2YgV29ya2VyTWVzc2FnaW5nUHJveHkuCiAKIC8vIHN0YXRp
YwogV29ya2VyQ29udGV4dFByb3h5KiBXZWJXb3JrZXJDbGllbnRJbXBsOjpjcmVhdGVXb3JrZXJD
b250ZXh0UHJveHkoV29ya2VyKiB3b3JrZXIpCkBAIC03OSwxMjcgKzc4LDQzIEBAIFdvcmtlckNv
bnRleHRQcm94eSogV2ViV29ya2VyQ2xpZW50SW1wbDo6Y3JlYXRlV29ya2VyQ29udGV4dFByb3h5
KFdvcmtlciogd29ya2VyCiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0
PERvY3VtZW50Kj4od29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgICAgICBX
ZWJGcmFtZUltcGwqIHdlYkZyYW1lID0gV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZG9jdW1lbnQt
PmZyYW1lKCkpOwogICAgICAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiBwcm94eSA9IG5ldyBXZWJX
b3JrZXJDbGllbnRJbXBsKHdvcmtlciwgd2ViRnJhbWUpOwotICAgICAgICByZXR1cm4gcHJveHk7
IAotICAgIH0gCisgICAgICAgIHJldHVybiBwcm94eTsKKyAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6
c3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2Rl
IHN0YXJ0TW9kZSkKLXsKLSAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0Rv
Y3VtZW50KCkpOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50
Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpKTsKLSAgICBHcm91cFNldHRpbmdzKiBz
ZXR0aW5ncyA9IDA7Ci0gICAgaWYgKGRvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgIHNldHRpbmdz
ID0gZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5ncm91cFNldHRpbmdzKCk7Ci0gICAgUmVmUHRy
PERlZGljYXRlZFdvcmtlclRocmVhZD4gdGhyZWFkID0gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpj
cmVhdGUoc2NyaXB0VVJMLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCAqdGhpcywg
KnRoaXMsIHN0YXJ0TW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCktPmRlcHJlY2F0ZWRIZWFkZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVu
dC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmRlcHJlY2F0ZWRIZWFkZXJUeXBlKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQtPnRvcERvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwot
ICAgIG1fcHJveHktPndvcmtlclRocmVhZENyZWF0ZWQodGhyZWFkKTsKLSAgICB0aHJlYWQtPnN0
YXJ0KCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTdGFydFdvcmtlckNvbnRl
eHQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpLCBtX3Byb3h5LCBzY3JpcHRVUkwpOwot
fQotCiB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnRlcm1pbmF0ZVdvcmtlckNvbnRleHQoKQog
ewogICAgIG1fd2ViRnJhbWUgPSAwOwotICAgIG1fcHJveHktPnRlcm1pbmF0ZVdvcmtlckNvbnRl
eHQoKTsKLX0KLQotdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2Vy
Q29udGV4dCgKLSAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIAot
ICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IHBvcnRzKQotewotICAgIG1f
cHJveHktPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KHZhbHVlLCBwb3J0cyk7Ci19Ci0KLWJv
b2wgV2ViV29ya2VyQ2xpZW50SW1wbDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9wcm94eS0+aGFzUGVuZGluZ0FjdGl2aXR5KCk7Ci19Ci0KLXZvaWQgV2ViV29y
a2VyQ2xpZW50SW1wbDo6d29ya2VyT2JqZWN0RGVzdHJveWVkKCkKLXsKLSAgICBtX3Byb3h5LT53
b3JrZXJPYmplY3REZXN0cm95ZWQoKTsKLX0KLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi12b2lk
IFdlYldvcmtlckNsaWVudEltcGw6OmNvbm5lY3RUb0luc3BlY3RvcihQYWdlSW5zcGVjdG9yKiBp
bnNwZWN0b3IpCi17Ci0gICAgbV9wcm94eS0+Y29ubmVjdFRvSW5zcGVjdG9yKGluc3BlY3Rvcik7
Ci19Ci0KLXZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6ZGlzY29ubmVjdEZyb21JbnNwZWN0b3Io
KQotewotICAgIG1fcHJveHktPmRpc2Nvbm5lY3RGcm9tSW5zcGVjdG9yKCk7Ci19Ci0KLXZvaWQg
V2ViV29ya2VyQ2xpZW50SW1wbDo6c2VuZE1lc3NhZ2VUb0luc3BlY3Rvcihjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCi17Ci0gICAgbV9wcm94eS0+c2VuZE1lc3NhZ2VUb0luc3BlY3RvcihtZXNzYWdl
KTsKLX0KLQotdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0TWVzc2FnZVRvUGFnZUluc3Bl
Y3Rvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgbV9wcm94eS0+cG9zdE1lc3NhZ2VU
b1BhZ2VJbnNwZWN0b3IobWVzc2FnZSk7Ci19Ci0KLXZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6
dXBkYXRlSW5zcGVjdG9yU3RhdGVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWUpCi17Ci0gICAg
bV9wcm94eS0+dXBkYXRlSW5zcGVjdG9yU3RhdGVDb29raWUoY29va2llKTsKLX0KLSNlbmRpZiAv
LyBFTkFCTEUoSU5TUEVDVE9SKQotCi0KLXZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdFRh
c2tUb0xvYWRlcihQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2sp
Ci17Ci0gICAgbV9wcm94eS0+cG9zdFRhc2tUb0xvYWRlcih0YXNrKTsKKyAgICBXZWJDb3JlOjpX
b3JrZXJNZXNzYWdpbmdQcm94eTo6dGVybWluYXRlV29ya2VyQ29udGV4dCgpOwogfQogCi1ib29s
IFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChQYXNz
T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYg
bW9kZSkKK1dlYldvcmtlckJhc2UqIFdlYldvcmtlckNsaWVudEltcGw6OnRvV2ViV29ya2VyQmFz
ZSgpCiB7Ci0gICAgcmV0dXJuIG1fcHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4
dCh0YXNrLCBtb2RlKTsKKyAgICByZXR1cm4gdGhpczsKIH0KIAotdm9pZCBXZWJXb3JrZXJDbGll
bnRJbXBsOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gcG9y
dHMpCitXZWJWaWV3KiBXZWJXb3JrZXJDbGllbnRJbXBsOjp2aWV3KCkgY29uc3QKIHsKLSAgICBt
X3Byb3h5LT5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KHZhbHVlLCBwb3J0cyk7Ci19Ci0KLXZv
aWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJv
b2wgaGFzUGVuZGluZ0FjdGl2aXR5KQotewotICAgIG1fcHJveHktPmNvbmZpcm1NZXNzYWdlRnJv
bVdvcmtlck9iamVjdChoYXNQZW5kaW5nQWN0aXZpdHkpOwotfQotCi12b2lkIFdlYldvcmtlckNs
aWVudEltcGw6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkK
LXsKLSAgICBtX3Byb3h5LT5yZXBvcnRQZW5kaW5nQWN0aXZpdHkoaGFzUGVuZGluZ0FjdGl2aXR5
KTsKLX0KLQotdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjp3b3JrZXJDb250ZXh0Q2xvc2VkKCkK
LXsKLSAgICBtX3Byb3h5LT53b3JrZXJDb250ZXh0Q2xvc2VkKCk7Ci19Ci0KLXZvaWQgV2ViV29y
a2VyQ2xpZW50SW1wbDo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCi17
Ci0gICAgbV9wcm94eS0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGVycm9yTWVzc2FnZSwg
bGluZU51bWJlciwgc291cmNlVVJMKTsKLX0KLQotdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpw
b3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsKLSAgICBtX3Byb3h5LT5wb3N0Q29uc29sZU1lc3Nh
Z2VUb1dvcmtlck9iamVjdChzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3Vy
Y2VVUkwpOworICAgIGlmIChhc2tlZFRvVGVybWluYXRlKCkpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBtX3dlYkZyYW1lLT52aWV3KCk7CiB9CiAKLXZvaWQgV2ViV29ya2VyQ2xpZW50
SW1wbDo6d29ya2VyQ29udGV4dERlc3Ryb3llZCgpCitib29sIFdlYldvcmtlckNsaWVudEltcGw6
OmFsbG93RGF0YWJhc2UoV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YlN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKIHsKLSAg
ICBtX3Byb3h5LT53b3JrZXJDb250ZXh0RGVzdHJveWVkKCk7CisgICAgaWYgKGFza2VkVG9UZXJt
aW5hdGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFdlYktpdDo6V2ViVmlld0ltcGwq
IHdlYlZpZXcgPSBtX3dlYkZyYW1lLT52aWV3SW1wbCgpOworICAgIGlmICghd2ViVmlldykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAhd2ViVmlldy0+cGVybWlzc2lvbkNsaWVu
dCgpIHx8IHdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKS0+YWxsb3dEYXRhYmFzZShtX3dlYkZy
YW1lLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiB9CiAKIGJvb2wgV2ViV29y
a2VyQ2xpZW50SW1wbDo6YWxsb3dGaWxlU3lzdGVtKCkKIHsKLSAgICBpZiAobV9wcm94eS0+YXNr
ZWRUb1Rlcm1pbmF0ZSgpKQorICAgIGlmIChhc2tlZFRvVGVybWluYXRlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gbV93ZWJGcmFt
ZS0+dmlld0ltcGwoKTsKICAgICBpZiAoIXdlYlZpZXcpCkBAIC0yMDcsNDcgKzEyMiwyOSBAQCBi
b29sIFdlYldvcmtlckNsaWVudEltcGw6OmFsbG93RmlsZVN5c3RlbSgpCiAgICAgcmV0dXJuICF3
ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgp
LT5hbGxvd0ZpbGVTeXN0ZW0obV93ZWJGcmFtZSk7CiB9CiAKLXZvaWQgV2ViV29ya2VyQ2xpZW50
SW1wbDo6b3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcg
c2l6ZSwgYm9vbCBjcmVhdGUsIAordm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpvcGVuRmlsZVN5
c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewotICAgIGlmIChtX3Byb3h5LT5hc2tlZFRvVGVybWlu
YXRlKCkpIHsKKyAgICBpZiAoYXNrZWRUb1Rlcm1pbmF0ZSgpKSB7CiAgICAgICAgIGNhbGxiYWNr
cy0+ZGlkRmFpbChXZWJGaWxlRXJyb3JBYm9ydCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPm9wZW5GaWxlU3lzdGVtKG1fd2ViRnJhbWUsIHR5cGUs
IHNpemUsIGNyZWF0ZSwgY2FsbGJhY2tzKTsKIH0KIAotYm9vbCBXZWJXb3JrZXJDbGllbnRJbXBs
OjphbGxvd0RhdGFiYXNlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpIAotewot
ICAgIGlmIChtX3Byb3h5LT5hc2tlZFRvVGVybWluYXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+dmlld0lt
cGwoKTsKLSAgICBpZiAoIXdlYlZpZXcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gIXdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKSB8fCB3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xp
ZW50KCktPmFsbG93RGF0YWJhc2UobV93ZWJGcmFtZSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGlt
YXRlZFNpemUpOwotfQotCiBib29sIFdlYldvcmtlckNsaWVudEltcGw6OmFsbG93SW5kZXhlZERC
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSkKIHsKLSAgICBpZiAobV9wcm94eS0+YXNrZWRUb1Rlcm1p
bmF0ZSgpKQorICAgIGlmIChhc2tlZFRvVGVybWluYXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+dmlld0lt
cGwoKTsKICAgICBpZiAoIXdlYlZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1
cm4gIXdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKSB8fCB3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xp
ZW50KCktPmFsbG93SW5kZXhlZERCKG1fd2ViRnJhbWUsIG5hbWUsIFdlYlNlY3VyaXR5T3JpZ2lu
KCkpOwogfQotIAotV2ViVmlldyogV2ViV29ya2VyQ2xpZW50SW1wbDo6dmlldygpIGNvbnN0IAot
ewotICAgIGlmIChtX3Byb3h5LT5hc2tlZFRvVGVybWluYXRlKCkpCi0gICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiBtX3dlYkZyYW1lLT52aWV3KCk7IAotfQogCiBXZWJXb3JrZXJDbGllbnRJ
bXBsOjpXZWJXb3JrZXJDbGllbnRJbXBsKFdvcmtlciogd29ya2VyLCBXZWJGcmFtZUltcGwqIHdl
YkZyYW1lKQotICAgIDogbV9wcm94eShuZXcgV29ya2VyTWVzc2FnaW5nUHJveHkod29ya2VyKSkK
LSAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCh3b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKLSAgICAsIG1fd2ViRnJhbWUod2ViRnJhbWUpICAgIAorICAgIDogV2ViQ29yZTo6
V29ya2VyTWVzc2FnaW5nUHJveHkod29ya2VyKQorICAgICwgbV93ZWJGcmFtZSh3ZWJGcmFtZSkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2Vy
Q2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50
SW1wbC5oCmluZGV4IDM4MWE0OTViYWY0ZjZhZjg0YTExNDIwY2M1NDVjMjRlMzAyMDNhODkuLmZj
NDA2NDM2NGExZTM5MjA4ZDVjYzUwNzRkMmFlZDI2ZGIzZWEzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKQEAgLTU0LDkgKzU0LDEz
IEBAIGNsYXNzIFdlYkZyYW1lSW1wbDsKIC8vIGZvciBpbi1wcm9jIGRlZGljYXRlZCB3b3JrZXJz
LiBJdCBhbHNvIGFjdHMgYXMgYSBicmlkZ2UgZm9yIHdvcmtlcnMgdG8gY2hyb21pdW0gaW1wbGVt
ZW50YXRpb24gb2YgZmlsZSBzeXN0ZW1zLAogLy8gZGF0YWJhc2VzIGFuZCBvdGhlciByZWxhdGVk
IGZ1bmN0aW9uYWxpdHkuCiAvLwotLy8gSW4gZXNzZW5jZSwgdGhpcyBjbGFzcyB3cmFwcyBXb3Jr
ZXJNZXNzYWdpbmdQcm94eS4KLWNsYXNzIFdlYldvcmtlckNsaWVudEltcGwgOiBwdWJsaWMgV2Vi
Q29yZTo6V29ya2VyQ29udGV4dFByb3h5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVi
bGljIFdlYkNvcmU6Oldvcmtlck9iamVjdFByb3h5CisvLyBJbiBlc3NlbmNlLCB0aGlzIGNsYXNz
IGRlY29yYXRlcyBXb3JrZXJNZXNzYWdpbmdQcm94eS4KKy8vCisvLyBJdCBpcyBpbXBlcmF0aXZl
IHRoYXQgdGhpcyBjbGFzcyBpbmhlcml0IGZyb20gV29ya2VyTWVzc2FnaW5nUHJveHkgcmF0aGVy
IHRoYW4gZGVsZWdhdGUgdG8gYW4gaW5zdGFuY2Ugb2YKKy8vIFdvcmtlck1lc3NhZ2luZ1Byb3h5
LCBiZWNhdXNlIHRoYXQgY2xhc3MgdHJhY2tzIGFuZCByZXBvcnRzIGl0cyBhY3Rpdml0eSB0byBv
dXRzaWRlIGNhbGxlcnMsIGFuZCBtYW5hZ2VzCisvLyBpdHMgb3duIGxpZmV0aW1lLCB2aWEgY2Fs
bHMgdG8gd29ya2VyT2JqZWN0RGVzdHJveWVkLCB3b3JrZXJDb250ZXh0RGVzdHJveWVkLCB3b3Jr
ZXJDb250ZXh0Q2xvc2VkLCBldGMuIEl0CisvLyBpcyBiYXNpY2FsbHkgaW1wb3NzaWJsZSB0byBj
b3JyZWN0bHkgbWFuYWdlIHRoZSBsaWZldGltZSBvZiB0aGlzIGNsYXNzIHNlcGFyYXRlbHkgZnJv
bSBXb3JrZXJNZXNzYWdpbmdQcm94eS4KK2NsYXNzIFdlYldvcmtlckNsaWVudEltcGwgOiBwdWJs
aWMgV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLCBwdWJsaWMgV2ViV29ya2VyQmFzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAsIHB1
YmxpYyBXZWJDb21tb25Xb3JrZXJDbGllbnQgewogcHVibGljOgpAQCAtNjYsNTcgKzcwLDI3IEBA
IHB1YmxpYzoKICAgICAvLyBXZWJDb3JlOjpXb3JrZXJDb250ZXh0UHJveHkgbWV0aG9kczoKICAg
ICAvLyBUaGVzZSBhcmUgY2FsbGVkIG9uIHRoZSB0aHJlYWQgdGhhdCBjcmVhdGVkIHRoZSB3b3Jr
ZXIuICBJbiB0aGUgcmVuZGVyZXIKICAgICAvLyBwcm9jZXNzLCB0aGlzIHdpbGwgYmUgdGhlIG1h
aW4gV2ViS2l0IHRocmVhZC4KLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJDb250ZXh0KGNv
bnN0IFdlYkNvcmU6OktVUkwmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViQ29yZTo6V29ya2VyVGhyZWFkU3RhcnRNb2RlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgdGVybWluYXRlV29ya2VyQ29udGV4dCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBw
b3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCgKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsCi0gICAgICAgIFBhc3NPd25QdHI8V2ViQ29y
ZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpIE9WRVJSSURFOwotCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdFRvSW5zcGVjdG9yKFdlYkNvcmU6Oldv
cmtlckNvbnRleHRQcm94eTo6UGFnZUluc3BlY3RvciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNjb25uZWN0RnJvbUluc3BlY3RvcigpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBzZW5kTWVzc2FnZVRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvUGFnZUluc3BlY3Rvcihjb25zdCBTdHJpbmcmKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSW5zcGVjdG9yU3RhdGVDb29raWUoY29uc3Qg
U3RyaW5nJikgT1ZFUlJJREU7Ci0jZW5kaWYKLSAgICAvLyBXZWJDb3JlOjpXb3JrZXJMb2FkZXJQ
cm94eSBtZXRob2RzOgotICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25Q
dHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoUGFzc093blB0cjxX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2Rl
KSBPVkVSUklERTsKLQotICAgIC8vIFdlYkNvcmU6Oldvcmtlck9iamVjdFByb3h5IG1ldGhvZHM6
Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5PikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBPVkVSUklERTsKLQotICAgIHZpcnR1YWwg
dm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChXZWJDb3JlOjpNZXNzYWdlU291
cmNlLCBXZWJDb3JlOjpNZXNzYWdlTGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCkgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIHdvcmtlckNvbnRleHRDbG9zZWQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
d29ya2VyQ29udGV4dERlc3Ryb3llZCgpIE9WRVJSSURFOwotCi0gICAgLy8gV2ViV29ya2VyQ2xp
ZW50QmFzZSBtZXRob2RzOgorCisgICAgLy8gV2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkgbWV0
aG9kcworICAgIHZpcnR1YWwgV2ViV29ya2VyQmFzZSogdG9XZWJXb3JrZXJCYXNlKCkgT1ZFUlJJ
REU7CisKKyAgICAvLyBXZWJXb3JrZXJCYXNlIG1ldGhvZHM6CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpXb3JrZXJMb2FkZXJQcm94eSogd29ya2VyTG9hZGVyUHJveHkoKSBPVkVSUklERSB7IHJldHVy
biB0aGlzOyB9CisgICAgdmlydHVhbCBXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVu
dCgpIE9WRVJSSURFIHsgcmV0dXJuIHRoaXM7IH0KKyAgICB2aXJ0dWFsIFdlYlZpZXcqIHZpZXco
KSBjb25zdCBPVkVSUklERTsKKworICAgIC8vIFdlYkNvbW1vbldvcmtlckNsaWVudCBtZXRob2Rz
OgogICAgIHZpcnR1YWwgYm9vbCBhbGxvd0RhdGFiYXNlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVz
dGltYXRlZFNpemUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBhbGxvd0ZpbGVTeXN0ZW0o
KTsKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSwg
bG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IGFsbG93SW5kZXhlZERCKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkgT1ZFUlJJREU7CiAKLSAgICAv
LyBXZWJDb21tZW50V29ya2VyQmFzZSBtZXRob2RzOgotICAgIHZpcnR1YWwgV2ViQ29tbW9uV29y
a2VyQ2xpZW50KiBjb21tb25DbGllbnQoKSBPVkVSUklERSB7IHJldHVybiB0aGlzOyB9Ci0gICAg
dmlydHVhbCBXZWJWaWV3KiB2aWV3KCkgY29uc3QgT1ZFUlJJREU7Ci0KIHByaXZhdGU6CiAgICAg
V2ViV29ya2VyQ2xpZW50SW1wbChXZWJDb3JlOjpXb3JrZXIqLCBXZWJGcmFtZUltcGwqKTsKICAg
ICB2aXJ0dWFsIH5XZWJXb3JrZXJDbGllbnRJbXBsKCk7CiAKLSAgICBXZWJDb3JlOjpXb3JrZXJN
ZXNzYWdpbmdQcm94eSogbV9wcm94eTsKLSAgICAvLyBHdWFyZCBhZ2FpbnN0IGNvbnRleHQgZnJv
bSBiZWluZyBkZXN0cm95ZWQgYmVmb3JlIGEgd29ya2VyIGV4aXRzLgotICAgIFJlZlB0cjxXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAg
ICAgV2ViRnJhbWVJbXBsKiBtX3dlYkZyYW1lOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3Bw
CmluZGV4IDRhNWY2OWRjMjQ4OTkwMmIxZTVjM2YyNzk2MDRlMzAwNGE0YzVkOGYuLjIyNTk1Mzdl
ZGYzMDkxY2RkZDlmNTYzMzQ1Y2E2NzY5ZWQ4NTZjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5j
cHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVdyaXRl
ci5oIgotI2luY2x1ZGUgIldlYldvcmtlckJhc2UuaCIKICNpbmNsdWRlICJXb3JrZXJBc3luY0Zp
bGVXcml0ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRl
ICJXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmgiCkBAIC02Miw4ICs2MSw3IEBAIFdv
cmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bShTY3JpcHRFeGVjdXRpb25Db250CiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwogCi0gICAgV29ya2VyTG9hZGVyUHJveHkqIHdvcmtl
ckxvYWRlclByb3h5ID0gJm1fd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclBy
b3h5KCk7Ci0gICAgbV93b3JrZXIgPSBzdGF0aWNfY2FzdDxXZWJXb3JrZXJCYXNlKj4od29ya2Vy
TG9hZGVyUHJveHkpOworICAgIG1fd29ya2VyTG9hZGVyUHJveHkgPSAmbV93b3JrZXJDb250ZXh0
LT50aHJlYWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKTsKIH0KIAogV29ya2VyQXN5bmNGaWxlU3lz
dGVtQ2hyb21pdW06On5Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bSgpCkBAIC0xOTQsNyAr
MTkyLDcgQEAgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBXb3Jr
ZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXQKICAgICBtX21vZGVGb3JDdXJyZW50T3Bl
cmF0aW9uID0gZmlsZVN5c3RlbU9wZXJhdGlvbnNNb2RlOwogICAgIG1fbW9kZUZvckN1cnJlbnRP
cGVyYXRpb24uYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1fd29ya2VyQ29udGV4dC0+dGhyZWFkKCkt
PnJ1bkxvb3AoKS5jcmVhdGVVbmlxdWVJZCgpKSk7CiAKLSAgICBtX2JyaWRnZUZvckN1cnJlbnRP
cGVyYXRpb24gPSBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGUobV93b3Jr
ZXIsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNh
bGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV9icmlkZ2VGb3JDdXJyZW50T3BlcmF0aW9u
ID0gV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRlKG1fd29ya2VyTG9hZGVy
UHJveHksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3Rl
bUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiAgICAgcmV0dXJuIG1fYnJpZGdlRm9yQ3VycmVu
dE9wZXJhdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgKaW5kZXggNjcyN2QxZTQ3NDgxMTQy
OGQzMDQyYmI4OGNiNmZlYzc0ZjVjYzQ3MS4uZmE0NTcyNjI5MDgyYzBlMDgxZjFmZWRmZWE0NGVl
ZDljODdjMjM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2Vy
QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oCkBAIC00MSw3ICs0MSw2IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZpbGVTeXN0ZW07CiBjbGFzcyBXZWJVUkw7Ci1jbGFz
cyBXZWJXb3JrZXJCYXNlOwogY2xhc3MgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTsK
IH0KIApAQCAtNTAsNiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3Mg
V29ya2VyQ29udGV4dDsKK2NsYXNzIFdvcmtlckxvYWRlclByb3h5OwogCiBjbGFzcyBXb3JrZXJB
c3luY0ZpbGVTeXN0ZW1DaHJvbWl1bSA6IHB1YmxpYyBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bSB7
CiBwdWJsaWM6CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxXZWJL
aXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGNyZWF0ZVdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UoUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsK
IAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
LSAgICBXZWJLaXQ6OldlYldvcmtlckJhc2UqIG1fd29ya2VyOworICAgIFdvcmtlckxvYWRlclBy
b3h5KiBtX3dvcmtlckxvYWRlclByb3h5OwogICAgIFdvcmtlckNvbnRleHQqIG1fd29ya2VyQ29u
dGV4dDsKICAgICBSZWZQdHI8V2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
PiBtX2JyaWRnZUZvckN1cnJlbnRPcGVyYXRpb247CiAgICAgU3RyaW5nIG1fbW9kZUZvckN1cnJl
bnRPcGVyYXRpb247CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTdhNzdiZmYyNjg1OGUwMDc3M2E4ZDgyODZjMzY0NzA4ZWEz
OGVmNS4uY2E1ZGMxNDkyNTRiZmUxMzZlOGEwNzIzOWJiZjRkOWU0OThkZDc4MyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEzLTAxLTAyICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNv
bT4KKworICAgICAgICBbY2hyb21pdW1dIENyZWF0aW9uIG9mIGRlZGljYXRlZCB3b3JrZXJzIChp
c29sYXRlcykgbGVha3MgcmVmZXJlbmNlIHRvIEhUTUxEb2N1bWVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1MzY3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRG1pdHJ5IFRpdG92LgorCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy9l
bXB0eS13b3JrZXIuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9yZXNvdXJjZXMv
d29ya2VyLWRvY3VtZW50LWxlYWstaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
d29ya2Vycy93b3JrZXItZG9jdW1lbnQtbGVhay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvd29ya2Vycy93b3JrZXItZG9jdW1lbnQtbGVhay5odG1sOiBBZGRlZC4KKwogMjAx
My0wMS0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBNYWMg
YW5kIENocm9taXVtIHJlYmFzZWxpbmVzIGFmdGVyIHIxMzg2NTQuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL2VtcHR5LXdvcmtlci5qcyBiL0xheW91dFRl
c3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvZW1wdHktd29ya2VyLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUw
ZGI0ODQzN2JiZmYwZDg1NmYxYmI0Mjc0ZTM4ZGFmNjllZGJkMGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL2VtcHR5LXdvcmtlci5qcwpAQCAt
MCwwICsxLDIgQEAKK3Bvc3RNZXNzYWdlKCJjbG9zaW5nIik7CitjbG9zZSgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItZG9jdW1lbnQtbGVh
ay1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2Vy
LWRvY3VtZW50LWxlYWstaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTkyYmNmZWZhYTlhNDk0YmYz
N2FlYTQzYTAzNjE1M2UxNzA4M2RlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWRvY3VtZW50LWxlYWstaWZyYW1lLmh0bWwKQEAg
LTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9Indvcmtlci11dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgd29ya2VyID0gbmV3
IFdvcmtlcignZW1wdHktd29ya2VyLmpzJyk7Cit3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICB3YWl0VW50aWxXb3JrZXJUaHJlYWRzRXhpdChmdW5jdGlvbigpIHsKKyAg
ICAgICAgcGFyZW50LnBvc3RNZXNzYWdlKCJkb25lIiwgIioiKTsKKyAgICB9KTsKK307Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy93b3JrZXItZG9jdW1lbnQtbGVhay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvd29ya2VyLWRvY3VtZW50LWxlYWstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkw
MDVhOWFmN2VhOThiYWY3OWJkMWY3YmI4MWNmNWY2NzE3OGY0MWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWRvY3VtZW50LWxlYWstZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNCBAQAorVmVyaWZ5IHRoYXQgY3JlYXRpb24gb2YgYSB3b3JrZXIgZG9l
cyBub3QgbGVhayBpdHMgY3JlYXRpbmcgZG9jdW1lbnQuCisKK1BBU1M6IGRpZCBub3QgbGVhayBk
b2N1bWVudHMgZHVyaW5nIHRlc3QgcnVuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy93b3JrZXItZG9jdW1lbnQtbGVhay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3dvcmtlci1kb2N1bWVudC1sZWFrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWU2MDFjODRlNmIzNDI0
N2E0MzgyMjQ4Yzg5YmJmMGQ3YjlmZTZhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy93b3JrZXItZG9jdW1lbnQtbGVhay5odG1sCkBAIC0wLDAgKzEsODkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxwPlZlcmlmeSB0aGF0IGNyZWF0aW9u
IG9mIGEgd29ya2VyIGRvZXMgbm90IGxlYWsgaXRzIGNyZWF0aW5nIGRvY3VtZW50LjwvcD4KKzxk
aXYgaWQ9J2NvbnNvbGUnPjwvZGl2PgorPHNjcmlwdCBzcmM9J3Jlc291cmNlcy93b3JrZXItdXRp
bC5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSAr
ICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKKy8vIFNl
dCB0aGlzIG51bWJlciBhcyBoaWdoIGFzIHBvc3NpYmxlIHdpdGhvdXQgaW50cm9kdWNpbmcgdGlt
ZW91dHMgaW4gZGVidWcgYnVpbGRzLgorLy8gUmVkdWNpbmcgaXQgZG9lcyBub3QgcmVxdWlyZSBy
ZWJhc2VsaW5lcy4KK3ZhciBudW1JdGVyYXRpb25zID0gNjsKKwordmFyIGN1cnJlbnRJdGVyYXRp
b24gPSAwOwordmFyIGlmcmFtZSA9IG51bGw7Cit2YXIgbnVtTGl2ZUF0U3RhcnQgPSAwOwordmFy
IG51bUxpdmVBdEVuZCA9IDA7CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkg
eworICAgIGlmIChldmVudC5kYXRhID09ICJkb25lIikgeworICAgICAgICBydW5PbmVJdGVyYXRp
b24oKTsKKyAgICB9Cit9OworCitmdW5jdGlvbiBzdGFydFRlc3QoKQoreworICAgIGdjKCk7Cisg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmludGVybmFscy5udW1iZXJPZkxpdmVE
b2N1bWVudHMpIHsKKyAgICAgICAgbnVtTGl2ZUF0U3RhcnQgPSB3aW5kb3cuaW50ZXJuYWxzLm51
bWJlck9mTGl2ZURvY3VtZW50cygpOworICAgICAgICAvLyBEZXBlbmRpbmcgb24gd2hpY2ggdGVz
dHMgcmFuIGJlZm9yZSB0aGlzIG9uZSBpbiBEdW1wUmVuZGVyVHJlZSwKKyAgICAgICAgLy8gdGhl
aXIgRG9jdW1lbnQgaW5zdGFuY2VzIG1heSBub3QgaGF2ZSBiZWVuIGZ1bGx5IGNsZWFuZWQgdXAg
eWV0LgorICAgICAgICAvLyBXaGVuIHRoaXMgdGVzdCBpcyBydW4gaW4gaXNvbGF0aW9uLCB0aGVy
ZSBzaG91bGQgYmUgb25seSBvbmUKKyAgICAgICAgLy8gbGl2ZSBkb2N1bWVudCBhdCB0aGlzIHBv
aW50LgorICAgICAgICBydW5PbmVJdGVyYXRpb24oKTsKKyAgICB9IGVsc2UgeworICAgICAgICBs
b2coIndpbmRvdy5pbnRlcm5hbHMubnVtYmVyT2ZMaXZlRG9jdW1lbnRzIG5vdCBhdmFpbGFibGUg
LS0gbm8gcG9pbnQgaW4gcnVubmluZyB0ZXN0Iik7CisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHJ1bk9uZUl0ZXJhdGlvbigpIHsKKyAgICBpZiAoY3VycmVudEl0
ZXJhdGlvbiA8IG51bUl0ZXJhdGlvbnMpIHsKKyAgICAgICAgKytjdXJyZW50SXRlcmF0aW9uOwor
CisgICAgICAgIHZhciBjcmVhdGVkSWZyYW1lID0gZmFsc2U7CisgICAgICAgIGlmICghaWZyYW1l
KSB7CisgICAgICAgICAgICBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUi
KTsKKyAgICAgICAgICAgIGNyZWF0ZWRJZnJhbWUgPSB0cnVlOworICAgICAgICB9CisgICAgICAg
IGlmcmFtZS5zZXRBdHRyaWJ1dGUoInNyYyIsICJyZXNvdXJjZXMvd29ya2VyLWRvY3VtZW50LWxl
YWstaWZyYW1lLmh0bWwiKTsKKyAgICAgICAgaWYgKGNyZWF0ZWRJZnJhbWUpCisgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZmluaXNoVGVzdCgpOworICAgIH0KK30KKworZnVuY3Rpb24gZmluaXNoVGVzdCgpCit7Cisg
ICAgZ2MoKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzICYmIHdpbmRvdy5pbnRlcm5hbHMu
bnVtYmVyT2ZMaXZlRG9jdW1lbnRzKSB7CisgICAgICAgIG51bUxpdmVBdEVuZCA9IHdpbmRvdy5p
bnRlcm5hbHMubnVtYmVyT2ZMaXZlRG9jdW1lbnRzKCk7CisgICAgICAgIC8vIFVuZGVyIG5vIGNp
cmN1bXN0YW5jZXMgc2hvdWxkIHRoZSBudW1iZXIgb2YgbGl2ZSBkb2N1bWVudHMKKyAgICAgICAg
Ly8gYXQgdGhlIGVuZCBiZSBtb3JlIHRoYW4gMSBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBhdCB0
aGUKKyAgICAgICAgLy8gYmVnaW5uaW5nIChiZWNhdXNlIG9mIHRoZSBpZnJhbWUpLgorICAgICAg
ICBpZiAobnVtTGl2ZUF0RW5kID4gbnVtTGl2ZUF0U3RhcnQgKyAxKSB7CisgICAgICAgICAgICBs
b2coIkZBSUw6IGxlYWtlZCBkb2N1bWVudHMgZHVyaW5nIHRlc3QgcnVuIChzdGFydGVkIHdpdGgg
IiArIG51bUxpdmVBdFN0YXJ0ICsgIiwgZW5kZWQgd2l0aCAiICsgbnVtTGl2ZUF0RW5kICsgIiki
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZygiUEFTUzogZGlkIG5vdCBsZWFr
IGRvY3VtZW50cyBkdXJpbmcgdGVzdCBydW4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9
CisKK3dpbmRvdy5vbmxvYWQgPSBzdGFydFRlc3Q7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>