<?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>217735</bug_id>
          
          <creation_ts>2020-10-14 15:35:16 -0700</creation_ts>
          <short_desc>[GPU Process] Enable Document based ImageBitmap and OffscreenCanvas drawing to use GPU Process rendering</short_desc>
          <delta_ts>2020-11-04 13:31:57 -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>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=218482</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>218264</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>kbr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1697918</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-14 15:35:16 -0700</bug_when>
    <thetext>We need to create RemoteImageBuffer for ImageBitmap and OffscreenCanvas. Later we need to especially record drawing the ImageBitmap and OffscreenCanvas into another 2D canvas or RenderLayer such that the backend of the ImageBuffer is not accessed in the Web Process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697927</commentid>
    <comment_count>1</comment_count>
      <attachid>411382</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-14 15:55:59 -0700</bug_when>
    <thetext>Created attachment 411382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697944</commentid>
    <comment_count>2</comment_count>
      <attachid>411386</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-14 16:29:10 -0700</bug_when>
    <thetext>Created attachment 411386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697964</commentid>
    <comment_count>3</comment_count>
      <attachid>411389</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-14 16:59:49 -0700</bug_when>
    <thetext>Created attachment 411389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698022</commentid>
    <comment_count>4</comment_count>
      <attachid>411408</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-14 22:52:59 -0700</bug_when>
    <thetext>Created attachment 411408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698034</commentid>
    <comment_count>5</comment_count>
      <attachid>411416</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-15 00:55:50 -0700</bug_when>
    <thetext>Created attachment 411416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698163</commentid>
    <comment_count>6</comment_count>
      <attachid>411416</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-15 10:16:56 -0700</bug_when>
    <thetext>Comment on attachment 411416
Patch

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

&gt; Source/WebCore/html/ImageBitmap.cpp:84
&gt; +    auto document = scriptExecutionContext.isDocument() ? &amp;downcast&lt;Document&gt;(scriptExecutionContext) : nullptr;
&gt; +    auto hostWindow = (document &amp;&amp; document-&gt;view() &amp;&amp; document-&gt;view()-&gt;root()) ? document-&gt;view()-&gt;root()-&gt;hostWindow() : nullptr;

ImageBitmap is:

Exposed=(Window,Worker),

so this needs to work in Workers too, where scriptExecutionContext.isDocument() will be false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698205</commentid>
    <comment_count>7</comment_count>
      <attachid>411416</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-10-15 11:20:06 -0700</bug_when>
    <thetext>Comment on attachment 411416
Patch

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

&gt;&gt; Source/WebCore/html/ImageBitmap.cpp:84
&gt;&gt; +    auto hostWindow = (document &amp;&amp; document-&gt;view() &amp;&amp; document-&gt;view()-&gt;root()) ? document-&gt;view()-&gt;root()-&gt;hostWindow() : nullptr;
&gt; 
&gt; ImageBitmap is:
&gt; 
&gt; Exposed=(Window,Worker),
&gt; 
&gt; so this needs to work in Workers too, where scriptExecutionContext.isDocument() will be false.

Yes - are there wpt or layout tests covering creation and use of ImageBitmaps on workers? If not, please add one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700426</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-21 15:36:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/70548262&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703811</commentid>
    <comment_count>9</comment_count>
      <attachid>413003</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-02 21:04:32 -0800</bug_when>
    <thetext>Created attachment 413003
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703826</commentid>
    <comment_count>10</comment_count>
      <attachid>413006</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-02 23:38:49 -0800</bug_when>
    <thetext>Created attachment 413006
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703836</commentid>
    <comment_count>11</comment_count>
      <attachid>411416</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-03 00:34:42 -0800</bug_when>
    <thetext>Comment on attachment 411416
Patch

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

&gt;&gt;&gt; Source/WebCore/html/ImageBitmap.cpp:84
&gt;&gt;&gt; +    auto hostWindow = (document &amp;&amp; document-&gt;view() &amp;&amp; document-&gt;view()-&gt;root()) ? document-&gt;view()-&gt;root()-&gt;hostWindow() : nullptr;
&gt;&gt; 
&gt;&gt; ImageBitmap is:
&gt;&gt; 
&gt;&gt; Exposed=(Window,Worker),
&gt;&gt; 
&gt;&gt; so this needs to work in Workers too, where scriptExecutionContext.isDocument() will be false.
&gt; 
&gt; Yes - are there wpt or layout tests covering creation and use of ImageBitmaps on workers? If not, please add one.

Getting the the worker ImageBitmap to create a remote ImageBuffer will need many changes in different areas of the code:

1. We need to have a way to create an ImageBuffer without having to have a HostWindow, for example PlatformStrategies::createImageBuffer().
2. The RemoteImageBufferProxy needs to be created on the main thread. WebProcess::ensureGPUProcessConnection() asserts  RELEASE_ASSERT(RunLoop::isMain());
3. Executing any operation on this RemoteImageBufferProxy has to be on the main thread also because it creates the WeakPtr&lt;RemoteRenderingBackendProxy&gt; on the main thread.

So I would suggest making this bug for the document based ImageBitmap. Enabling the GPU rendering for the worker ImageBitmap can be tracked by a separate bug.

These tests use ImageBitmaps on workers:
imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-in-worker-transfer.html
imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-serializable.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703846</commentid>
    <comment_count>12</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-03 00:45:13 -0800</bug_when>
    <thetext>See bug 218482</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704058</commentid>
    <comment_count>13</comment_count>
      <attachid>413006</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-03 10:15:20 -0800</bug_when>
    <thetext>Comment on attachment 413006
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [GPU Process] Enable Document based ImageBitmap and OffscreenCanvas drawing to go through GPU

&quot;to go through GPU&quot; -&gt; &quot;to use GPU Process rendering&quot;

&gt; Source/WebCore/html/ImageBitmap.cpp:84
&gt; +    auto document = scriptExecutionContext.isDocument() ? &amp;downcast&lt;Document&gt;(scriptExecutionContext) : nullptr;
&gt; +    auto hostWindow = (document &amp;&amp; document-&gt;view() &amp;&amp; document-&gt;view()-&gt;root()) ? document-&gt;view()-&gt;root()-&gt;hostWindow() : nullptr;

Does this code ever run in a Worker thread? If so, this is very non-threadsafe.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3808
&gt;      WebProcess::singleton().setUseGPUProcessForMedia(settings.useGPUProcessForMediaEnabled());
&gt; +    WebProcess::singleton().setUseGPUProcessForCanvas(m_shouldRenderCanvasInGPUProcess);

Why are these two lines different?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704340</commentid>
    <comment_count>14</comment_count>
      <attachid>413143</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-03 23:57:21 -0800</bug_when>
    <thetext>Created attachment 413143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704341</commentid>
    <comment_count>15</comment_count>
      <attachid>413006</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-04 00:00:11 -0800</bug_when>
    <thetext>Comment on attachment 413006
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        [GPU Process] Enable Document based ImageBitmap and OffscreenCanvas drawing to go through GPU
&gt; 
&gt; &quot;to go through GPU&quot; -&gt; &quot;to use GPU Process rendering&quot;

Title was changed.

&gt;&gt; Source/WebCore/html/ImageBitmap.cpp:84
&gt;&gt; +    auto hostWindow = (document &amp;&amp; document-&gt;view() &amp;&amp; document-&gt;view()-&gt;root()) ? document-&gt;view()-&gt;root()-&gt;hostWindow() : nullptr;
&gt; 
&gt; Does this code ever run in a Worker thread? If so, this is very non-threadsafe.

This code was cleaned up.

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3808
&gt;&gt; +    WebProcess::singleton().setUseGPUProcessForCanvas(m_shouldRenderCanvasInGPUProcess);
&gt; 
&gt; Why are these two lines different?

This part was removed from this bug and is being tracked by bug 218549.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704587</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-04 13:31:56 -0800</bug_when>
    <thetext>Committed r269381: &lt;https://trac.webkit.org/changeset/269381&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413143.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411382</attachid>
            <date>2020-10-14 15:55:59 -0700</date>
            <delta_ts>2020-10-14 16:36:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217735-20201014155558.patch</filename>
            <type>text/plain</type>
            <size>28386</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRjYTU2ZjYwYTRjYTVm
ZmMzN2M3ZWRkYmI3Zjk1OTkzYTgzYmQzNC4uN2JkOTkyZjAwYmE5OGZjYTcwMDM2ZGY0YWFmZGNi
M2RhMjY5YmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIwLTEwLTE0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXSBFbmFibGUgSW1hZ2VCaXRtYXAgYW5kIE9mZnNjcmVlbkNhbnZhcyBkcmF3aW5nIHRv
IGdvIHRocm91Z2ggR1BVCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTc3MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBuZXcgSW1hZ2VCdWZmZXI6OmNyZWF0ZSgpIG1ldGhvZCB3aGljaCB0YWtl
cyBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8g
Z2V0IHRoZSBIb3N0V2luZG93LiBJZiB0aGVyZSBpcyBIb3N0V2luZG93IGFzc29jaWF0ZWQKKyAg
ICAgICAgd2l0aCB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdGhlIGNhbGwgd2lsbCBiZSBk
ZWxlZ2F0ZWQgdG8gV2ViQ2hyb21lQ2xpZW50LgorICAgICAgICBUaGlzIHdpbGwgY3JlYXRlIGEg
UmVtb3RlSW1hZ2VCdWZmZXIgaW4gV2ViIFByb2Nlc3MgYW5kIGEgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eQorICAgICAgICBpbiB0aGUgR1BVIFByb2Nlc3MuIE5vIG90aGVyIGNoYW5nZXMgaW4gbmVl
ZGVkLgorCisgICAgICAgICJydW4td2Via2l0LXRlc3RzIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvIC0tdXNlLWdwdS1wcm9jZXNzIgorICAgICAgICByZXN1bHRlZCBpbiBjb3VwbGUg
b2YgbGF5b3V0IHRlc3QgZmFpbHVyZXMgd2hpY2ggY2FuIGJlIGFkZHJlc3NlZCBsYXRlci4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAg
KiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OnJlc29sdmVXaXRoQmxhbmtJ
bWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcik6Cisg
ICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5oOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2Fu
dmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6T2Zmc2NyZWVuQ2FudmFzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIgY29u
c3QpOgorICAgICAgICBSZW5hbWUgYWxsIHRoZSBwYXJhbWV0ZXJzIHdob3NlIG5hbWVzIGFyZSBj
b250ZXh0IGFuZCB3aG9zZSB0eXBlcyBpcworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
IHRvIGJlIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgdG8gbm90IGNvbmZ1c2UgaXQKKyAgICAgICAg
d2l0aCBHcmFwaGljc0NvbnRleHQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorCiAyMDIwLTEwLTEyICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQ
VSBQcm9jZXNzXTogUmVwbGFjZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyIiBieSBhIGdlbmVyaWMg
aWRlbnRpZmllciBuYW1lZCAiUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBl
YzQwNTkyNjY4MGY4OTQ0NTBlYzhiMmIxZGUzZTZiMmM1MDAyMDQ5Li42ZGQzNjQ3OTMwNTc3Mjk4
ZGE2NTBmNjhlYjliNWRjNmNjOTY0YWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIw
LTEwLTE0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0dQVSBQcm9jZXNzXSBFbmFibGUgSW1hZ2VCaXRtYXAgYW5kIE9mZnNjcmVlbkNhbnZh
cyBkcmF3aW5nIHRvIGdvIHRocm91Z2ggR1BVCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyLmg6CisgICAgICAgIHB1dEltYWdlRGF0YSgpIG1pZ2h0IGJlIGNhbGxlZCBpbW1lZGlh
dGVseSBhZnRlciBjcmVhdGluZyB0aGUgSW1hZ2VCdWZmZXIKKyAgICAgICAgYW5kIGJlZm9yZSBy
ZWNlaXZpbmcgdGhlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuQ3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kCisgICAgICAgIG1lc3NhZ2UuIFdlIG5lZWQgdG8gY29uc2lkZXIgZm9yIHRoaXMgY2FzZS4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyOjp+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcik6CisgICAgICAgIFRo
aXMgaXMgYSBidWcuIEN1cnJlbnRseSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVt
b3RlUmVzb3VyY2UoKQorICAgICAgICBpcyBuZXZlciBjYWxsZWQuIFdlIG5lZWQgdG8gcmVtb3Zl
IHRoZSBlbnRyeSBmcm9tIHRoZSBIYXNoTWFwIHdoZW4gaXQgaXMKKyAgICAgICAgYmVpbmcgZGVz
dHJveWVkLgorCiAyMDIwLTEwLTEyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXTogUmVwbGFjZSAiSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyIiBieSBhIGdlbmVyaWMgaWRlbnRpZmllciBuYW1lZCAiUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZjhlMWU1NzQ1YThkZGMxZTEzM2U5NjJkZjRkOTdkMTdi
MDVkZTZjMi4uMWJlMjdmMjU5NGU0MDAwMGVhZjRlOGRjZDQ4ZGFlZjE3ZmQ5ZjMwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCkBAIC0yOTg4LDcgKzI5ODgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShGbG9hdFNpemUobG9naWNhbFNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCByZXNvbHV0aW9uU2NhbGUpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEds
b2JhbE9iamVjdCksIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBy
ZXNvbHV0aW9uU2NhbGUpOwogICAgICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICAgICAgZmFp
bCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJp
dG1hcC5jcHAKaW5kZXggNDM5YjZhOWQ3ZDgxMjBkOTFlMWUxYWZjNTZkMWFhZjZiZTBiNDllNC4u
OTg5YzZkZGMwYWEwOWFkYzM4MTI3MmUwNjExZTBhZDcyYzNkY2UzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZUJpdG1hcC5jcHAKQEAgLTY3LDkgKzY3LDkgQEAgc3RhdGljIFJlbmRlcmluZ01vZGUg
YnVmZmVyUmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkOwogc3RhdGlj
IFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQ7CiAjZW5kaWYKIAotUmVmPEltYWdlQml0bWFwPiBJbWFnZUJpdG1hcDo6Y3JlYXRl
KEludFNpemUgc2l6ZSkKK1JlZjxJbWFnZUJpdG1hcD4gSW1hZ2VCaXRtYXA6OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBJbnRTaXpl
JiBzaXplKQogewotICAgIHJldHVybiBjcmVhdGUoeyBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0
U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlKSB9
KTsKKyAgICByZXR1cm4gY3JlYXRlKHsgSW1hZ2VCdWZmZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBzaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlKSB9KTsKIH0KIAogUmVmPEltYWdl
Qml0bWFwPiBJbWFnZUJpdG1hcDo6Y3JlYXRlKE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4m
JiBiYWNraW5nU3RvcmUpCkBAIC0yMjYsMTIgKzIyNiwxMiBAQCBzdGF0aWMgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9uRm9yUHJlbXVsdGlwbHlBbHBoYShJbWFn
ZUJpdAogICAgIHJldHVybiBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkOwog
fQogCi12b2lkIEltYWdlQml0bWFwOjpyZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoYm9vbCBv
cmlnaW5DbGVhbiwgUHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpyZXNvbHZl
V2l0aEJsYW5rSW1hZ2VCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgYm9vbCBvcmlnaW5DbGVhbiwgUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAg
Ly8gU291cmNlIHJlY3RhbmdsZSBsaWtlbHkgZG9lc24ndCBpbnRlcnNlY3QgdGhlIHNvdXJjZSBp
bWFnZS4KICAgICAvLyBCZWhhdmlvciBpc24ndCB3ZWxsIHNwZWNpZmllZCwgYnV0IFdQVCB0ZXN0
cyBleHBlY3Qgbm8gUHJvbWlzZSByZWplY3Rpb24gKGFuZCBvZiBjb3Vyc2Ugbm8gY3Jhc2hlcyku
CiAgICAgLy8gUmVzb2x2ZSBQcm9taXNlIHdpdGggYSBibGFuayAxeDEgSW1hZ2VCaXRtYXAuCi0g
ICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUoMSwgMSks
IGJ1ZmZlclJlbmRlcmluZ01vZGUpOworICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRmxvYXRTaXplKDEsIDEpLCBidWZmZXJS
ZW5kZXJpbmdNb2RlKTsKIAogICAgIC8vIDkuIElmIHRoZSBvcmlnaW4gb2YgaW1hZ2UncyBpbWFn
ZSBpcyBub3QgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBvcmlnaW4gc3BlY2lmaWVkIGJ5IHRoZQog
ICAgIC8vICAgIGVudHJ5IHNldHRpbmdzIG9iamVjdCwgdGhlbiBzZXQgdGhlIG9yaWdpbi1jbGVh
biBmbGFnIG9mIHRoZSBJbWFnZUJpdG1hcCBvYmplY3QncwpAQCAtMjkxLDcgKzI5MSw3IEBAIHZv
aWQgSW1hZ2VCaXRtYXA6OnJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihib29sIG9yaWdpbkNs
ZWFuLCBQcm9taXNlJiYgcHJvbWlzCiAKIC8vIDEzLiBSZXR1cm4gb3V0cHV0LgogCi12b2lkIElt
YWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8
SFRNTEltYWdlRWxlbWVudD4mIGltYWdlRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0
aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9t
aXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4mIGlt
YWdlRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVj
dD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIDIuIElm
IGltYWdlIGlzIG5vdCBjb21wbGV0ZWx5IGF2YWlsYWJsZSwgdGhlbiByZXR1cm4gYSBwcm9taXNl
IHJlamVjdGVkIHdpdGgKICAgICAvLyBhbiAiSW52YWxpZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlv
biBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC0zNTAsNyArMzUwLDggQEAgdm9pZCBJbWFnZUJp
dG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJ
bWFnZUVsZW1lbnQKICAgICB9CiAKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9y
U291cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZS5yZXR1cm5WYWx1ZSgpLCBvcHRpb25zKTsK
LSAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShvdXRw
dXRTaXplLndpZHRoKCksIG91dHB1dFNpemUuaGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2Rl
KTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUpOworCiAgICAgYXV0
byBpbWFnZUZvclJlbmRlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlRWxl
bWVudC0+cmVuZGVyZXIoKSk7CiAgICAgaWYgKCFpbWFnZUZvclJlbmRlcikgewogICAgICAgICBw
cm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgSW1hZ2VCaXRt
YXAgZnJvbSBpbWFnZSB0aGF0IGNhbid0IGJlIHJlbmRlcmVkIik7CkBAIC0zNTgsNyArMzU5LDcg
QEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQKICAgICB9CiAKICAgICBpZiAoIWJpdG1hcERhdGEp
IHsKLSAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKCF0YWludHNPcmlnaW4oKmNh
Y2hlZEltYWdlKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIHJlc29sdmVXaXRoQmxhbmtJ
bWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCAhdGFpbnRzT3JpZ2luKCpjYWNoZWRJ
bWFnZSksIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0z
ODQsMTkgKzM4NSwxOSBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudAogICAgIHByb21pc2UucmVz
b2x2ZShXVEZNb3ZlKGltYWdlQml0bWFwKSk7CiB9CiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmUHRyPEhUTUxDYW52
YXNFbGVtZW50PiYgY2FudmFzRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywg
T3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQor
dm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBjYW52YXNF
bGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiBy
ZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCiB7Ci0gICAgY3JlYXRlUHJvbWlz
ZShjb250ZXh0LCAqY2FudmFzRWxlbWVudCwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWN0
KSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgY3JlYXRlUHJvbWlzZShzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCAqY2FudmFzRWxlbWVudCwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWN0KSwg
V1RGTW92ZShwcm9taXNlKSk7CiB9CiAKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKLXZv
aWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgUmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4mIGNhbnZhc0VsZW1lbnQsIEltYWdlQml0bWFw
T3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQ
cm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPE9mZnNjcmVl
bkNhbnZhcz4mIGNhbnZhc0VsZW1lbnQsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9w
dGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsK
LSAgICBjcmVhdGVQcm9taXNlKGNvbnRleHQsICpjYW52YXNFbGVtZW50LCBXVEZNb3ZlKG9wdGlv
bnMpLCBXVEZNb3ZlKHJlY3QpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBjcmVhdGVQcm9taXNl
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICpjYW52YXNFbGVtZW50LCBXVEZNb3ZlKG9wdGlvbnMp
LCBXVEZNb3ZlKHJlY3QpLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KICNlbmRpZgogCi12b2lkIElt
YWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBDYW52YXNC
YXNlJiBjYW52YXMsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJl
Y3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRt
YXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgQ2FudmFzQmFzZSYgY2FudmFzLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25z
LCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2Up
CiB7CiAgICAgLy8gMi4gSWYgdGhlIGNhbnZhcyBlbGVtZW50J3MgYml0bWFwIGhhcyBlaXRoZXIg
YSBob3Jpem9udGFsIGRpbWVuc2lvbiBvciBhIHZlcnRpY2FsCiAgICAgLy8gICAgZGltZW5zaW9u
IGVxdWFsIHRvIHplcm8sIHRoZW4gcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuICJJ
bnZhbGlkU3RhdGVFcnJvciIKQEAgLTQxNyw3ICs0MTgsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpj
cmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBDYW52YXNCYXNlJiBjYW52YXMs
IEltYQogICAgIH0KIAogICAgIGF1dG8gb3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VS
ZWN0YW5nbGUoc291cmNlUmVjdGFuZ2xlLnJldHVyblZhbHVlKCksIG9wdGlvbnMpOwotICAgIGF1
dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKG91dHB1dFNpemUu
d2lkdGgoKSwgb3V0cHV0U2l6ZS5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOworICAg
IGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgb3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CiAKICAgICBhdXRvIGltYWdl
Rm9yUmVuZGVyID0gY2FudmFzLmNvcGllZEltYWdlKCk7CiAgICAgaWYgKCFpbWFnZUZvclJlbmRl
cikgewpAQCAtNDI2LDcgKzQyNyw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENhbnZhc0Jhc2UmIGNhbnZhcywgSW1hCiAgICAgfQog
CiAgICAgaWYgKCFiaXRtYXBEYXRhKSB7Ci0gICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1
ZmZlcihjYW52YXMub3JpZ2luQ2xlYW4oKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIHJl
c29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjYW52YXMu
b3JpZ2luQ2xlYW4oKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTQ4OSw3ICs0OTAsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgYXV0byBv
dXRwdXRTaXplID0gb3V0cHV0U2l6ZUZvclNvdXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUs
IG9wdGlvbnMpOwogICAgIGF1dG8gYml0bWFwRGF0YSA9IHZpZGVvLT5jcmVhdGVCdWZmZXJGb3JQ
YWludGluZyhvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6
OkFjY2VsZXJhdGVkID8gU2hvdWxkQWNjZWxlcmF0ZTo6WWVzIDogU2hvdWxkQWNjZWxlcmF0ZTo6
Tm8pOwogICAgIGlmICghYml0bWFwRGF0YSkgewotICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1h
Z2VCdWZmZXIoIXRhaW50c09yaWdpbihzY3JpcHRFeGVjdXRpb25Db250ZXh0LnNlY3VyaXR5T3Jp
Z2luKCksICp2aWRlbyksIFdURk1vdmUocHJvbWlzZSkpOworICAgICAgICByZXNvbHZlV2l0aEJs
YW5rSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgIXRhaW50c09yaWdpbihzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LnNlY3VyaXR5T3JpZ2luKCksICp2aWRlbyksIFdURk1vdmUocHJv
bWlzZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MzQsNyArNTM1LDcgQEAgdm9p
ZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVm
UHRyPFR5cGVkT01DU1NJbWFnZVYKIH0KICNlbmRpZgogCi12b2lkIEltYWdlQml0bWFwOjpjcmVh
dGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VCaXRtYXA+JiBl
eGlzdGluZ0ltYWdlQml0bWFwLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25h
bDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIElt
YWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIFJlZlB0cjxJbWFnZUJpdG1hcD4mIGV4aXN0aW5nSW1hZ2VCaXRtYXAs
IEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIElt
YWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICAvLyAyLiBJZiBpbWFnZSdzIFtb
RGV0YWNoZWRdXSBpbnRlcm5hbCBzbG90IHZhbHVlIGlzIHRydWUsIHJldHVybiBhIHByb21pc2UK
ICAgICAvLyAgICByZWplY3RlZCB3aXRoIGFuICJJbnZhbGlkU3RhdGVFcnJvciIgRE9NRXhjZXB0
aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KQEAgLTU1MiwxMCArNTUzLDEwIEBAIHZvaWQgSW1h
Z2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJ
bWFnZUJpdG1hcD4mIGV4CiAgICAgfQogCiAgICAgYXV0byBvdXRwdXRTaXplID0gb3V0cHV0U2l6
ZUZvclNvdXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUucmV0dXJuVmFsdWUoKSwgb3B0aW9u
cyk7Ci0gICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUo
b3V0cHV0U2l6ZS53aWR0aCgpLCBvdXRwdXRTaXplLmhlaWdodCgpKSwgYnVmZmVyUmVuZGVyaW5n
TW9kZSk7CisgICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKIAogICAg
IGlmICghYml0bWFwRGF0YSkgewotICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIo
ZXhpc3RpbmdJbWFnZUJpdG1hcC0+b3JpZ2luQ2xlYW4oKSwgV1RGTW92ZShwcm9taXNlKSk7Cisg
ICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBleGlzdGluZ0ltYWdlQml0bWFwLT5vcmlnaW5DbGVhbigpLCBXVEZNb3ZlKHByb21pc2UpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjk4LDcgKzY5OSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBJbWFnZUJpdG1hcDo6Y3Jl
YXRlRnJvbUJ1ZmZlcihtX2FycmF5QnVmZmVyVG9Qcm9jZXNzLnJlbGVhc2VOb25OdWxsKCksIG1f
YmxvYi0+dHlwZSgpLCBtX2Jsb2ItPnNpemUoKSwgbV9ibG9iTG9hZGVyLnVybCgpLCBXVEZNb3Zl
KG1fb3B0aW9ucyksIFdURk1vdmUobV9yZWN0KSwgV1RGTW92ZShtX3Byb21pc2UpKTsKKyAgICAg
ICAgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgbV9hcnJheUJ1ZmZlclRvUHJvY2Vzcy5yZWxlYXNlTm9uTnVsbCgpLCBtX2Jsb2ItPnR5cGUo
KSwgbV9ibG9iLT5zaXplKCksIG1fYmxvYkxvYWRlci51cmwoKSwgV1RGTW92ZShtX29wdGlvbnMp
LCBXVEZNb3ZlKG1fcmVjdCksIFdURk1vdmUobV9wcm9taXNlKSk7CiAgICAgfQogCiAgICAgRmls
ZVJlYWRlckxvYWRlciBtX2Jsb2JMb2FkZXI7CkBAIC03MTAsMTQgKzcxMSw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2FycmF5QnVmZmVyVG9Qcm9jZXNzOwogfTsKIAot
dm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcigKLSAgICBSZWY8QXJyYXlCdWZmZXI+
JiYgYXJyYXlCdWZmZXIsCi0gICAgU3RyaW5nIG1pbWVUeXBlLAotICAgIGxvbmcgbG9uZyBleHBl
Y3RlZENvbnRlbnRMZW5ndGgsCi0gICAgY29uc3QgVVJMJiBzb3VyY2VVcmwsCi0gICAgSW1hZ2VC
aXRtYXBPcHRpb25zJiYgb3B0aW9ucywKLSAgICBPcHRpb25hbDxJbnRSZWN0PiByZWN0LAotICAg
IEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZUZyb21CdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgUmVmPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLCBTdHJpbmcgbWltZVR5cGUsIGxvbmcg
bG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBJbWFnZUJp
dG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBQcm9taXNlJiYg
cHJvbWlzZSkKIHsKICAgICBpZiAoIWFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpIHsKICAgICAg
ICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIGFuIElt
YWdlQml0bWFwIGZyb20gYW4gZW1wdHkgYnVmZmVyIik7CkBAIC03MjUsNyArNzE5LDcgQEAgdm9p
ZCBJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcigKICAgICB9CiAKICAgICBhdXRvIHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihh
cnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAgYXV0
byBvYnNlcnZlciA9IEltYWdlQml0bWFwSW1hZ2VPYnNlcnZlcjo6Y3JlYXRlKG1pbWVUeXBlLCBl
eHBlY3RlZENvbnRlbnRMZW5ndGgsIHNvdXJjZVVybCk7CisgICAgYXV0byBvYnNlcnZlciA9IElt
YWdlQml0bWFwSW1hZ2VPYnNlcnZlcjo6Y3JlYXRlKG1pbWVUeXBlLCBleHBlY3RlZENvbnRlbnRM
ZW5ndGgsIHNvdXJjZVVSTCk7CiAgICAgYXV0byBpbWFnZSA9IEltYWdlOjpjcmVhdGUob2JzZXJ2
ZXIuZ2V0KCkpOwogICAgIGlmICghaW1hZ2UpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52
YWxpZFN0YXRlRXJyb3IsICJUaGUgdHlwZSBvZiB0aGUgYXJndW1lbnQgdG8gY3JlYXRlSW1hZ2VC
aXRtYXAgaXMgbm90IHN1cHBvcnRlZCIpOwpAQCAtNzQ1LDcgKzczOSw3IEBAIHZvaWQgSW1hZ2VC
aXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoCiAgICAgfQogCiAgICAgYXV0byBvdXRwdXRTaXplID0g
b3V0cHV0U2l6ZUZvclNvdXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUucmV0dXJuVmFsdWUo
KSwgb3B0aW9ucyk7Ci0gICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShG
bG9hdFNpemUob3V0cHV0U2l6ZS53aWR0aCgpLCBvdXRwdXRTaXplLmhlaWdodCgpKSwgYnVmZmVy
UmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBGbG9hdFNpemUob3V0cHV0U2l6ZS53aWR0aCgpLCBv
dXRwdXRTaXplLmhlaWdodCgpKSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCFiaXRt
YXBEYXRhKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fu
bm90IGNyZWF0ZSBhbiBpbWFnZSBidWZmZXIgZnJvbSB0aGUgYXJndW1lbnQgdG8gY3JlYXRlSW1h
Z2VCaXRtYXAiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNzY5LDcgKzc2Myw3IEBAIHZvaWQgSW1h
Z2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwKICAgICBQZW5kaW5nSW1hZ2VCaXRtYXA6OmZldGNoKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIFdURk1vdmUoYmxvYiksIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUocmVj
dCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9t
aXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VEYXRhPiYgaW1hZ2VEYXRh
LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJ
bWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQ
cm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJl
ZlB0cjxJbWFnZURhdGE+JiBpbWFnZURhdGEsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMs
IE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkK
IHsKICAgICAvLyA2LjEuIExldCBidWZmZXIgYmUgaW1hZ2UncyBkYXRhIGF0dHJpYnV0ZSB2YWx1
ZSdzIFtbVmlld2VkQXJyYXlCdWZmZXJdXQogICAgIC8vICAgICAgaW50ZXJuYWwgc2xvdC4KQEAg
LTc4OSwxMCArNzgzLDEwIEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZURhdGE+JiBpbWFnCiAgICAgfQogCiAgICAg
YXV0byBvdXRwdXRTaXplID0gb3V0cHV0U2l6ZUZvclNvdXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0
YW5nbGUucmV0dXJuVmFsdWUoKSwgb3B0aW9ucyk7Ci0gICAgYXV0byBiaXRtYXBEYXRhID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUob3V0cHV0U2l6ZS53aWR0aCgpLCBvdXRwdXRTaXpl
LmhlaWdodCgpKSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byBiaXRtYXBEYXRhID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBvdXRwdXRTaXplLCBi
dWZmZXJSZW5kZXJpbmdNb2RlKTsKIAogICAgIGlmICghYml0bWFwRGF0YSkgewotICAgICAgICBy
ZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIodHJ1ZSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAg
ICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0
cnVlLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODEx
LDcgKzgwNSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZURhdGE+JiBpbWFnCiAKICAgICAvLyA2LjMuIFNldCBp
bWFnZUJpdG1hcCdzIGJpdG1hcCBkYXRhIHRvIGltYWdlJ3MgaW1hZ2UgZGF0YSwgY3JvcHBlZCB0
byB0aGUKICAgICAvLyAgICAgIHNvdXJjZSByZWN0YW5nbGUgd2l0aCBmb3JtYXR0aW5nLgotICAg
IGF1dG8gdGVtcEJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShpbWFn
ZURhdGEtPndpZHRoKCksIGltYWdlRGF0YS0+aGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2Rl
KTsKKyAgICBhdXRvIHRlbXBCaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBGbG9hdFNpemUob3V0cHV0U2l6ZS53aWR0aCgpLCBvdXRwdXRTaXpl
LmhlaWdodCgpKSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CiAgICAgdGVtcEJpdG1hcERhdGEtPnB1
dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsICppbWFn
ZURhdGEsIEludFJlY3QoMCwgMCwgaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFnZURhdGEtPmhlaWdo
dCgpKSwgeyB9LCBhbHBoYVByZW11bHRpcGxpY2F0aW9uKTsKICAgICBGbG9hdFJlY3QgZGVzdFJl
Y3QoRmxvYXRQb2ludCgpLCBvdXRwdXRTaXplKTsKICAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCku
ZHJhd0ltYWdlQnVmZmVyKCp0ZW1wQml0bWFwRGF0YSwgZGVzdFJlY3QsIHNvdXJjZVJlY3Rhbmds
ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1
YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KSwgaW1hZ2VPcmllbnRhdGlvbkZvck9yaWVudGF0
aW9uKG9wdGlvbnMuaW1hZ2VPcmllbnRhdGlvbikgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlQml0bWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFw
LmgKaW5kZXggMDFmMjgzZDk4MDUxNjc2M2VjYTg5ZjYyMmRmMmZkMTM1NzY4ZTg1My4uMzdmYjgw
OGFhZDUxZjNiZmUxMWNkODlhYTkwMzhmNjkxZmI1ZjcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VC
aXRtYXAuaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY3JlYXRl
UHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgU291cmNlJiYsIEltYWdlQml0bWFwT3B0
aW9ucyYmLCBQcm9taXNlJiYpOwogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFNvdXJjZSYmLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgaW50IHN4
LCBpbnQgc3ksIGludCBzdywgaW50IHNoLCBQcm9taXNlJiYpOwogCi0gICAgc3RhdGljIFJlZjxJ
bWFnZUJpdG1hcD4gY3JlYXRlKEludFNpemUpOworICAgIHN0YXRpYyBSZWY8SW1hZ2VCaXRtYXA+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgSW50U2l6ZSYpOwogICAgIHN0
YXRpYyBSZWY8SW1hZ2VCaXRtYXA+IGNyZWF0ZShPcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+
JiYpOwogCiAgICAgfkltYWdlQml0bWFwKCk7CkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0ZToK
IAogICAgIEltYWdlQml0bWFwKE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4mJik7CiAKLSAg
ICBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoYm9vbCBvcmlnaW5DbGVh
biwgUHJvbWlzZSYmKTsKKyAgICBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZm
ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGJvb2wgb3JpZ2luQ2xlYW4sIFByb21pc2UmJik7
CiAKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4mLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgT3B0aW9u
YWw8SW50UmVjdD4sIFByb21pc2UmJik7CiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtMTI3LDcgKzEy
Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgY3JlYXRlUHJvbWlzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgUmVmUHRyPEJsb2I+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlv
bmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZURhdGE+JiwgSW1hZ2VCaXRtYXBP
cHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwogICAgIHN0YXRpYyB2b2lk
IGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxUeXBlZE9NQ1NT
SW1hZ2VWYWx1ZT4mLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgT3B0aW9uYWw8SW50UmVjdD4sIFBy
b21pc2UmJik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlRnJvbUJ1ZmZlcihSZWY8QXJyYXlCdWZm
ZXI+JiYsIFN0cmluZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwg
Y29uc3QgVVJMJiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9t
aXNlJiYpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZyb21CdWZmZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgU3RyaW5nIG1pbWVUeXBlLCBsb25nIGxvbmcg
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBVUkwmLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwg
T3B0aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7CiAKICAgICBPcHRpb25hbDxJbWFnZUJpdG1h
cEJhY2tpbmc+IG1fYmFja2luZ1N0b3JlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVu
Q2FudmFzLmNwcAppbmRleCAxZTI2MDMzZjIzODAwODNhMzE2YTVkNDZiYjExYjFkNzQyYThmZjVi
Li43YmU3NTVkZWY5MmFjMmUzN2U3NmFiM2E2YmY1OGMyODg2YWQzNzdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCkBAIC03MywxMiArNzMsMTIgQEAgV2Vha1B0cjxI
VE1MQ2FudmFzRWxlbWVudD4gRGV0YWNoZWRPZmZzY3JlZW5DYW52YXM6OnRha2VQbGFjZWhvbGRl
ckNhbnZhcygpCiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9wbGFjZWhvbGRlckNhbnZhcywg
bnVsbHB0cik7CiB9CiAKLVJlZjxPZmZzY3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVkIHdpZHRoLCB1bnNp
Z25lZCBoZWlnaHQpCitSZWY8T2Zmc2NyZWVuQ2FudmFzPiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB1bnNpZ25l
ZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9m
ZnNjcmVlbkNhbnZhcyhjb250ZXh0LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgT2Zmc2NyZWVuQ2FudmFzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHdpZHRoLCBo
ZWlnaHQpKTsKIH0KIAotUmVmPE9mZnNjcmVlbkNhbnZhcz4gT2Zmc2NyZWVuQ2FudmFzOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPERldGFj
aGVkT2Zmc2NyZWVuQ2FudmFzPiYmIGRldGFjaGVkQ2FudmFzKQorUmVmPE9mZnNjcmVlbkNhbnZh
cz4gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFz
PiYmIGRldGFjaGVkQ2FudmFzKQogewogICAgIFJlZjxPZmZzY3JlZW5DYW52YXM+IGNsb25lID0g
YWRvcHRSZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMoY29udGV4dCwgZGV0YWNoZWRDYW52YXMtPnNp
emUoKS53aWR0aCgpLCBkZXRhY2hlZENhbnZhcy0+c2l6ZSgpLmhlaWdodCgpKSk7CiAgICAgY2xv
bmUtPnNldEltYWdlQnVmZmVyKGRldGFjaGVkQ2FudmFzLT50YWtlSW1hZ2VCdWZmZXIoKSk7CkBA
IC0xMDAsMTYgKzEwMCwxNiBAQCBSZWY8T2Zmc2NyZWVuQ2FudmFzPiBPZmZzY3JlZW5DYW52YXM6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdAogICAgIHJldHVybiBj
bG9uZTsKIH0KIAotUmVmPE9mZnNjcmVlbkNhbnZhcz4gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZh
cykKK1JlZjxPZmZzY3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEhUTUxDYW52YXNFbGVtZW50
JiBjYW52YXMpCiB7Ci0gICAgYXV0byBvZmZzY3JlZW4gPSBhZG9wdFJlZigqbmV3IE9mZnNjcmVl
bkNhbnZhcyhjb250ZXh0LCBjYW52YXMud2lkdGgoKSwgY2FudmFzLmhlaWdodCgpKSk7CisgICAg
YXV0byBvZmZzY3JlZW4gPSBhZG9wdFJlZigqbmV3IE9mZnNjcmVlbkNhbnZhcyhzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBjYW52YXMud2lkdGgoKSwgY2FudmFzLmhlaWdodCgpKSk7CiAgICAgb2Zm
c2NyZWVuLT5zZXRQbGFjZWhvbGRlckNhbnZhcyhjYW52YXMpOwogICAgIHJldHVybiBvZmZzY3Jl
ZW47CiB9CiAKLU9mZnNjcmVlbkNhbnZhczo6T2Zmc2NyZWVuQ2FudmFzKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCitPZmZz
Y3JlZW5DYW52YXM6Ok9mZnNjcmVlbkNhbnZhcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogICAg
IDogQ2FudmFzQmFzZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKQotICAgICwgQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXIoJmNvbnRleHQpCisgICAgLCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cigmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKIH0KIApAQCAtMjU1LDggKzI1NSwxMCBAQCBF
eGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVy
VG9JbWFnZUJpdG1hcCgpCiAgICAgICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAg
ICAgICAgICByZXR1cm4geyBSZWZQdHI8SW1hZ2VCaXRtYXA+IHsgbnVsbHB0ciB9IH07CiAKLSAg
ICAgICAgaWYgKCFtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7
IEltYWdlQml0bWFwOjpjcmVhdGUoSW1hZ2VCaXRtYXBCYWNraW5nKEltYWdlQnVmZmVyOjpjcmVh
dGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSkpIH07CisgICAgICAgIGlm
ICghbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZSgqY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKKyAgICAgICAgICAgIHJldHVy
biB7IEltYWdlQml0bWFwOjpjcmVhdGUoSW1hZ2VCaXRtYXBCYWNraW5nKFdURk1vdmUoYnVmZmVy
KSkpIH07CisgICAgICAgIH0KIAogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VJbWFnZUJ1ZmZl
cigpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI3Myw3ICsyNzUsNyBAQCBFeGNlcHRpb25P
cjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJp
dG1hcCgpCiAgICAgICAgIC8vIHN0b3JlIGZyb20gdGhpcyBjYW52YXMgKG9yIGl0cyBjb250ZXh0
KSwgYnV0IGZvciBub3cgd2UnbGwganVzdAogICAgICAgICAvLyBjcmVhdGUgYSBuZXcgYml0bWFw
IGFuZCBwYWludCBpbnRvIGl0LgogCi0gICAgICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBJbWFnZUJp
dG1hcDo6Y3JlYXRlKHNpemUoKSk7CisgICAgICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBJbWFnZUJp
dG1hcDo6Y3JlYXRlKCpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzaXplKCkp
OwogICAgICAgICBpZiAoIWltYWdlQml0bWFwLT5idWZmZXIoKSkKICAgICAgICAgICAgIHJldHVy
biB7IFJlZlB0cjxJbWFnZUJpdG1hcD4geyBudWxscHRyIH0gfTsKIApAQCAtNDcyLDcgKzQ3NCw3
IEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAg
aWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQpKTsKKyAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKCpjYW52
YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzaXplKCksIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBPZmZzY3Jl
ZW5DYW52YXM6OnRha2VJbWFnZUJ1ZmZlcigpIGNvbnN0CkBAIC00ODgsNyArNDkwLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBPZmZzY3JlZW5DYW52YXM6OnRha2VJbWFnZUJ1ZmZl
cigpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgY2xlYXJDb3BpZWRJbWFn
ZSgpOwotICAgIHJldHVybiBzZXRJbWFnZUJ1ZmZlcihtX2RldGFjaGVkID8gbnVsbHB0ciA6IElt
YWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSk7
CisgICAgcmV0dXJuIHNldEltYWdlQnVmZmVyKG1fZGV0YWNoZWQgPyBudWxscHRyIDogSW1hZ2VC
dWZmZXI6OmNyZWF0ZSgqY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSk7CiB9CiAKIHZvaWQgT2Zmc2NyZWVuQ2Fu
dmFzOjpyZXNldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHAKaW5kZXggOTI1OTMzZTg2M2I0NTlhYmJmMThkNjRlMjVlZTA3MTI0YzM4NjA0
Zi4uMWQ2OGI5NmQ3ZGQ4MjI3MzllZGNmZGQ4Y2U0NTg3MWY0ZjUwZTE0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcApAQCAtMjgsMTYg
KzI4LDI5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
IAorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybUltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhDbGFt
cGVkTGVuZ3RoID0gNDA5NjsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhDbGFtcGVkQXJlYSA9IE1h
eENsYW1wZWRMZW5ndGggKiBNYXhDbGFtcGVkTGVuZ3RoOwogCitzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlKQoreworICAgIGF1dG8gZG9jdW1lbnQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0LmlzRG9j
dW1lbnQoKSA/ICZkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgOiBu
dWxscHRyOworICAgIGF1dG8gaG9zdFdpbmRvdyA9IChkb2N1bWVudCAmJiBkb2N1bWVudC0+dmll
dygpICYmIGRvY3VtZW50LT52aWV3KCktPnJvb3QoKSkgPyBkb2N1bWVudC0+dmlldygpLT5yb290
KCktPmhvc3RXaW5kb3coKSA6IG51bGxwdHI7CisKKyAgICBhdXRvIGFjY2VsZXJhdGUgPSByZW5k
ZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkID8gU2hvdWxkQWNjZWxlcmF0
ZTo6WWVzIDogU2hvdWxkQWNjZWxlcmF0ZTo6Tm87CisgICAgYXV0byB1c2VEaXNwbGF5TGlzdCA9
IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKKworICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUsIGFjY2VsZXJhdGUsIHVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpD
YW52YXMsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgaG9zdFdpbmRvdyk7Cit9CisKIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9h
dFNpemUmIHNpemUsIFNob3VsZEFjY2VsZXJhdGUgc2hvdWxkQWNjZWxlcmF0ZSwgU2hvdWxkVXNl
RGlzcGxheUxpc3Qgc2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9z
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBpbWFnZUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCmluZGV4IGQxNDY0OTJjNGE4ZGY5MzVjYWY5NGI5ZmI5NTU5MDlhYWQxY2JhZjAu
LjYxMTdhNzJiZTI2ZjlkN2RkMGU4MDk0NjE2NzM2MmI2MGM5YTBkZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMzYsOSArMzYsMTIg
QEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERyYXdpbmdDb250ZXh0OwogfQogCitj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCiBjbGFzcyBJbWFnZUJ1ZmZlciB7CiBwdWJs
aWM6CiAgICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWls
dXJlLgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0IpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmLCBTaG91bGRBY2NlbGVyYXRlLCBTaG91bGRVc2VEaXNwbGF5
TGlzdCwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JT
cGFjZSA9IENvbG9yU3BhY2U6OlNSR0IsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpTUkdCLCBjb25zdCBIb3N0V2luZG93KiA9
IG51bGxwdHIpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0
ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaAppbmRleCBlODQ5MTY2NDUxNDU5NjI4N2VmMmM3OGY5MDc2ZTFkNDM4MjE5MWYyLi4zZjM0
MmJjN2JjMDZkMjBhYjFlYzdiZjRiMTQxODVmMDZhN2I4OTFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
CkBAIC05MSw3ICs5MSw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIC8vIFRoZSBtYXRo
IGluc2lkZSBJbWFnZURhdGE6OmNyZWF0ZSgpIGRvZXNuJ3QgYWdyZWUgd2l0aCB0aGUgbWF0aCBp
bnNpZGUgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRJbWFnZURhdGEoKSBhYm91dCBob3cgbV9yZXNv
bHV0aW9uU2NhbGUgaW50ZXJhY3RzIHdpdGggdGhlIGRhdGEgaW4gdGhlIEltYWdlQnVmZmVyLgog
ICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgcHV0SW1hZ2VEYXRhKCkgaXMgb25seSBjYWxsZWQg
d2hlbiBtX3Jlc29sdXRpb25TY2FsZSA9PSAxLgotICAgICAgICBBU1NFUlQobV9iYWNrZW5kLT5y
ZXNvbHV0aW9uU2NhbGUoKSA9PSAxKTsKKyAgICAgICAgQVNTRVJUX0lNUExJRVMobV9iYWNrZW5k
LCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpID09IDEpOwogICAgICAgICBtX2RyYXdpbmdD
b250ZXh0LnJlY29yZGVyKCkucHV0SW1hZ2VEYXRhKGlucHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNy
Y1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcAppbmRleCA0ZTliNzYyZDhlMGNmNWZmZjg3
ZjFjNDI4NDVhZjAwNGE4ZGExZGFiLi40N2Y3YTAxNGNmNDBkMjRiNDAxNzE4ZDQ4ZDEzZTVkNDg0
Y2MyYjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5j
cHAKQEAgLTQ4LDYgKzQ4LDcgQEAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6flJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoKQogICAgIC8vIFJlbGVhc2UgdGhlIFJlbW90
ZUltYWdlQnVmZmVyUHJveHkuCiAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCiAg
ICAgICAgIHJldHVybjsKKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbGVhc2VSZW1v
dGVSZXNvdXJjZShtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZC0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7CiB9CiAK
</data>
<flag name="commit-queue"
          id="427574"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411386</attachid>
            <date>2020-10-14 16:29:10 -0700</date>
            <delta_ts>2020-10-14 16:59:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217735-20201014162909.patch</filename>
            <type>text/plain</type>
            <size>31194</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRjYTU2ZjYwYTRjYTVm
ZmMzN2M3ZWRkYmI3Zjk1OTkzYTgzYmQzNC4uNWMzNTQxMDlmMTQwMGMzYTI5Zjk1ODIyYzYxMjY4
NmQ2M2I5NGNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEwLTE0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXSBFbmFibGUgSW1hZ2VCaXRtYXAgYW5kIE9mZnNjcmVlbkNhbnZhcyBkcmF3aW5nIHRv
IGdvIHRocm91Z2ggR1BVCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTc3MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBuZXcgSW1hZ2VCdWZmZXI6OmNyZWF0ZSgpIG1ldGhvZCB3aGljaCB0YWtl
cyBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8g
Z2V0IHRoZSBIb3N0V2luZG93LiBJZiB0aGVyZSBpcyBIb3N0V2luZG93IGFzc29jaWF0ZWQKKyAg
ICAgICAgd2l0aCB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdGhlIGNhbGwgd2lsbCBiZSBk
ZWxlZ2F0ZWQgdG8gV2ViQ2hyb21lQ2xpZW50LgorICAgICAgICBUaGlzIHdpbGwgY3JlYXRlIGEg
UmVtb3RlSW1hZ2VCdWZmZXIgaW4gV2ViIFByb2Nlc3MgYW5kIGEgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eQorICAgICAgICBpbiB0aGUgR1BVIFByb2Nlc3MuIE5vIG90aGVyIGNoYW5nZXMgaW4gbmVl
ZGVkLgorCisgICAgICAgICJydW4td2Via2l0LXRlc3RzIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvIC0tdXNlLWdwdS1wcm9jZXNzIgorICAgICAgICByZXN1bHRlZCBpbiBjb3VwbGUg
b2YgbGF5b3V0IHRlc3QgZmFpbHVyZXMgd2hpY2ggY2FuIGJlIGFkZHJlc3NlZCBsYXRlci4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAg
KiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OnJlc29sdmVXaXRoQmxhbmtJ
bWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcik6Cisg
ICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5oOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2Fu
dmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6T2Zmc2NyZWVuQ2FudmFzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlQ29udGV4dFdlYkdMKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpjc3NWYWx1ZVBvb2wpOgorICAgICAg
ICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnRha2VJbWFnZUJ1ZmZlciBjb25zdCk6
CisgICAgICAgIFJlbmFtZSBhbGwgdGhlIHBhcmFtZXRlcnMgd2hvc2UgbmFtZXMgYXJlIGNvbnRl
eHQgYW5kIHdob3NlIHR5cGVzIGlzCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgdG8g
YmUgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB0byBub3QgY29uZnVzZSBpdAorICAgICAgICB3aXRo
IEdyYXBoaWNzQ29udGV4dCBvciBDYW52YXNSZW5kZXJpbmdDb250ZXh0LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaDoKKwogMjAyMC0xMC0xMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc106IFJlcGxhY2UgIkltYWdlQnVmZmVySWRl
bnRpZmllciIgYnkgYSBnZW5lcmljIGlkZW50aWZpZXIgbmFtZWQgIlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggZWM0MDU5MjY2ODBmODk0NDUwZWM4YjJiMWRlM2U2YjJjNTAw
MjA0OS4uNmRkMzY0NzkzMDU3NzI5OGRhNjUwZjY4ZWI5YjVkYzZjYzk2NGFiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMSBAQAorMjAyMC0xMC0xNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gRW5hYmxlIEltYWdlQml0
bWFwIGFuZCBPZmZzY3JlZW5DYW52YXMgZHJhd2luZyB0byBnbyB0aHJvdWdoIEdQVQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICBwdXRJbWFnZURhdGEoKSBt
aWdodCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgY3JlYXRpbmcgdGhlIEltYWdlQnVmZmVy
CisgICAgICAgIGFuZCBiZWZvcmUgcmVjZWl2aW5nIHRoZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LkNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZAorICAgICAgICBtZXNzYWdlLiBXZSBuZWVkIHRvIGNv
bnNpZGVyIGZvciB0aGlzIGNhc2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6flJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXIpOgorICAgICAgICBUaGlzIGlzIGEgYnVnLiBDdXJyZW50bHkgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKCkKKyAgICAgICAgaXMgbmV2ZXIgY2Fs
bGVkLiBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgZW50cnkgZnJvbSB0aGUgSGFzaE1hcCB3aGVuIGl0
IGlzCisgICAgICAgIGJlaW5nIGRlc3Ryb3llZC4KKwogMjAyMC0xMC0xMiAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc106
IFJlcGxhY2UgIkltYWdlQnVmZmVySWRlbnRpZmllciIgYnkgYSBnZW5lcmljIGlkZW50aWZpZXIg
bmFtZWQgIlJlbW90ZVJlc291cmNlSWRlbnRpZmllciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGY4ZTFlNTc0NWE4
ZGRjMWUxMzNlOTYyZGY0ZDk3ZDE3YjA1ZGU2YzIuLjFiZTI3ZjI1OTRlNDAwMDBlYWY0ZThkY2Q0
OGRhZWYxN2ZkOWYzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjk4OCw3ICsyOTg4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRv
IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGxvZ2ljYWxTaXplKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJv
bUV4ZWNTdGF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QpLCBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlKTsKICAgICAgICAgaWYgKCFidWZm
ZXIpIHsKICAgICAgICAgICAgIGZhaWwoKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCmluZGV4IDQzOWI2YTlkN2Q4MTIwZDkxZTFl
MWFmYzU2ZDFhYWY2YmUwYjQ5ZTQuLjk4OWM2ZGRjMGFhMDlhZGMzODEyNzJlMDYxMWUwYWQ3MmMz
ZGNlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCkBAIC02Nyw5ICs2Nyw5IEBA
IHN0YXRpYyBSZW5kZXJpbmdNb2RlIGJ1ZmZlclJlbmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2Rl
OjpBY2NlbGVyYXRlZDsKIHN0YXRpYyBSZW5kZXJpbmdNb2RlIGJ1ZmZlclJlbmRlcmluZ01vZGUg
PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogI2VuZGlmCiAKLVJlZjxJbWFnZUJpdG1h
cD4gSW1hZ2VCaXRtYXA6OmNyZWF0ZShJbnRTaXplIHNpemUpCitSZWY8SW1hZ2VCaXRtYXA+IElt
YWdlQml0bWFwOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlKHsgSW1h
Z2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSwg
YnVmZmVyUmVuZGVyaW5nTW9kZSkgfSk7CisgICAgcmV0dXJuIGNyZWF0ZSh7IEltYWdlQnVmZmVy
OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9k
ZSkgfSk7CiB9CiAKIFJlZjxJbWFnZUJpdG1hcD4gSW1hZ2VCaXRtYXA6OmNyZWF0ZShPcHRpb25h
bDxJbWFnZUJpdG1hcEJhY2tpbmc+JiYgYmFja2luZ1N0b3JlKQpAQCAtMjI2LDEyICsyMjYsMTIg
QEAgc3RhdGljIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbkZv
clByZW11bHRpcGx5QWxwaGEoSW1hZ2VCaXQKICAgICByZXR1cm4gQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZDsKIH0KIAotdm9pZCBJbWFnZUJpdG1hcDo6cmVzb2x2ZVdpdGhC
bGFua0ltYWdlQnVmZmVyKGJvb2wgb3JpZ2luQ2xlYW4sIFByb21pc2UmJiBwcm9taXNlKQordm9p
ZCBJbWFnZUJpdG1hcDo6cmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGJvb2wgb3JpZ2luQ2xlYW4sIFByb21p
c2UmJiBwcm9taXNlKQogewogICAgIC8vIFNvdXJjZSByZWN0YW5nbGUgbGlrZWx5IGRvZXNuJ3Qg
aW50ZXJzZWN0IHRoZSBzb3VyY2UgaW1hZ2UuCiAgICAgLy8gQmVoYXZpb3IgaXNuJ3Qgd2VsbCBz
cGVjaWZpZWQsIGJ1dCBXUFQgdGVzdHMgZXhwZWN0IG5vIFByb21pc2UgcmVqZWN0aW9uIChhbmQg
b2YgY291cnNlIG5vIGNyYXNoZXMpLgogICAgIC8vIFJlc29sdmUgUHJvbWlzZSB3aXRoIGEgYmxh
bmsgMXgxIEltYWdlQml0bWFwLgotICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoRmxvYXRTaXplKDEsIDEpLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGJp
dG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEZs
b2F0U2l6ZSgxLCAxKSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CiAKICAgICAvLyA5LiBJZiB0aGUg
b3JpZ2luIG9mIGltYWdlJ3MgaW1hZ2UgaXMgbm90IHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgb3Jp
Z2luIHNwZWNpZmllZCBieSB0aGUKICAgICAvLyAgICBlbnRyeSBzZXR0aW5ncyBvYmplY3QsIHRo
ZW4gc2V0IHRoZSBvcmlnaW4tY2xlYW4gZmxhZyBvZiB0aGUgSW1hZ2VCaXRtYXAgb2JqZWN0J3MK
QEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpyZXNvbHZlV2l0aEJsYW5rSW1h
Z2VCdWZmZXIoYm9vbCBvcmlnaW5DbGVhbiwgUHJvbWlzZSYmIHByb21pcwogCiAvLyAxMy4gUmV0
dXJuIG91dHB1dC4KIAotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiBpbWFnZUVsZW1lbnQsIElt
YWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdl
Qml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21p
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRy
PEhUTUxJbWFnZUVsZW1lbnQ+JiBpbWFnZUVsZW1lbnQsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9w
dGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJv
bWlzZSkKIHsKICAgICAvLyAyLiBJZiBpbWFnZSBpcyBub3QgY29tcGxldGVseSBhdmFpbGFibGUs
IHRoZW4gcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoCiAgICAgLy8gYW4gIkludmFsaWRT
dGF0ZUVycm9yIiBET01FeGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgpAQCAtMzUwLDcg
KzM1MCw4IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50CiAgICAgfQogCiAgICAgYXV0byBvdXRw
dXRTaXplID0gb3V0cHV0U2l6ZUZvclNvdXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUucmV0
dXJuVmFsdWUoKSwgb3B0aW9ucyk7Ci0gICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShGbG9hdFNpemUob3V0cHV0U2l6ZS53aWR0aCgpLCBvdXRwdXRTaXplLmhlaWdodCgp
KSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBvdXRwdXRTaXplLCBidWZmZXJSZW5k
ZXJpbmdNb2RlKTsKKwogICAgIGF1dG8gaW1hZ2VGb3JSZW5kZXIgPSBjYWNoZWRJbWFnZS0+aW1h
Z2VGb3JSZW5kZXJlcihpbWFnZUVsZW1lbnQtPnJlbmRlcmVyKCkpOwogICAgIGlmICghaW1hZ2VG
b3JSZW5kZXIpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJD
YW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gaW1hZ2UgdGhhdCBjYW4ndCBiZSByZW5kZXJl
ZCIpOwpAQCAtMzU4LDcgKzM1OSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50CiAgICAgfQog
CiAgICAgaWYgKCFiaXRtYXBEYXRhKSB7Ci0gICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1
ZmZlcighdGFpbnRzT3JpZ2luKCpjYWNoZWRJbWFnZSksIFdURk1vdmUocHJvbWlzZSkpOworICAg
ICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
IXRhaW50c09yaWdpbigqY2FjaGVkSW1hZ2UpLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMzg0LDE5ICszODUsMTkgQEAgdm9pZCBJbWFnZUJpdG1hcDo6
Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVs
ZW1lbnQKICAgICBwcm9taXNlLnJlc29sdmUoV1RGTW92ZShpbWFnZUJpdG1hcCkpOwogfQogCi12
b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4mIGNhbnZhc0VsZW1lbnQsIEltYWdlQml0
bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFw
OjpQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEhUTUxD
YW52YXNFbGVtZW50PiYgY2FudmFzRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9u
cywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNl
KQogewotICAgIGNyZWF0ZVByb21pc2UoY29udGV4dCwgKmNhbnZhc0VsZW1lbnQsIFdURk1vdmUo
b3B0aW9ucyksIFdURk1vdmUocmVjdCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIGNyZWF0ZVBy
b21pc2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgKmNhbnZhc0VsZW1lbnQsIFdURk1vdmUob3B0
aW9ucyksIFdURk1vdmUocmVjdCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiAjaWYgRU5BQkxF
KE9GRlNDUkVFTl9DQU5WQVMpCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiBjYW52
YXNFbGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0
PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiBjYW52YXNFbGVtZW50LCBJbWFnZUJpdG1h
cE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6
UHJvbWlzZSYmIHByb21pc2UpCiB7Ci0gICAgY3JlYXRlUHJvbWlzZShjb250ZXh0LCAqY2FudmFz
RWxlbWVudCwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWN0KSwgV1RGTW92ZShwcm9taXNl
KSk7CisgICAgY3JlYXRlUHJvbWlzZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCAqY2FudmFzRWxl
bWVudCwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWN0KSwgV1RGTW92ZShwcm9taXNlKSk7
CiB9CiAjZW5kaWYKIAotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgQ2FudmFzQmFzZSYgY2FudmFzLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBv
cHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHBy
b21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIENhbnZhc0Jhc2UmIGNhbnZhcywgSW1hZ2VC
aXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRt
YXA6OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIDIuIElmIHRoZSBjYW52YXMgZWxlbWVu
dCdzIGJpdG1hcCBoYXMgZWl0aGVyIGEgaG9yaXpvbnRhbCBkaW1lbnNpb24gb3IgYSB2ZXJ0aWNh
bAogICAgIC8vICAgIGRpbWVuc2lvbiBlcXVhbCB0byB6ZXJvLCB0aGVuIHJldHVybiBhIHByb21p
c2UgcmVqZWN0ZWQgd2l0aCBhbiAiSW52YWxpZFN0YXRlRXJyb3IiCkBAIC00MTcsNyArNDE4LDcg
QEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgQ2FudmFzQmFzZSYgY2FudmFzLCBJbWEKICAgICB9CiAKICAgICBhdXRvIG91dHB1dFNpemUg
PSBvdXRwdXRTaXplRm9yU291cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZS5yZXR1cm5WYWx1
ZSgpLCBvcHRpb25zKTsKLSAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KEZsb2F0U2l6ZShvdXRwdXRTaXplLndpZHRoKCksIG91dHB1dFNpemUuaGVpZ2h0KCkpLCBidWZm
ZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01v
ZGUpOwogCiAgICAgYXV0byBpbWFnZUZvclJlbmRlciA9IGNhbnZhcy5jb3BpZWRJbWFnZSgpOwog
ICAgIGlmICghaW1hZ2VGb3JSZW5kZXIpIHsKQEAgLTQyNiw3ICs0MjcsNyBAQCB2b2lkIEltYWdl
Qml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBDYW52YXNCYXNl
JiBjYW52YXMsIEltYQogICAgIH0KIAogICAgIGlmICghYml0bWFwRGF0YSkgewotICAgICAgICBy
ZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoY2FudmFzLm9yaWdpbkNsZWFuKCksIFdURk1vdmUo
cHJvbWlzZSkpOworICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgY2FudmFzLm9yaWdpbkNsZWFuKCksIFdURk1vdmUocHJvbWlzZSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00ODksNyArNDkwLDcgQEAgdm9pZCBJbWFnZUJp
dG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LAogICAgIGF1dG8gb3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0
YW5nbGUoc291cmNlUmVjdGFuZ2xlLCBvcHRpb25zKTsKICAgICBhdXRvIGJpdG1hcERhdGEgPSB2
aWRlby0+Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcob3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5n
TW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA/IFNob3VsZEFjY2VsZXJhdGU6Olll
cyA6IFNob3VsZEFjY2VsZXJhdGU6Ok5vKTsKICAgICBpZiAoIWJpdG1hcERhdGEpIHsKLSAgICAg
ICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKCF0YWludHNPcmlnaW4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigpLCAqdmlkZW8pLCBXVEZNb3ZlKHByb21pc2UpKTsK
KyAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsICF0YWludHNPcmlnaW4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigp
LCAqdmlkZW8pLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNTM0LDcgKzUzNSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxUeXBlZE9NQ1NTSW1hZ2VWCiB9CiAjZW5kaWYKIAot
dm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
UmVmUHRyPEltYWdlQml0bWFwPiYgZXhpc3RpbmdJbWFnZUJpdG1hcCwgSW1hZ2VCaXRtYXBPcHRp
b25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21p
c2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SW1hZ2VCaXRtYXA+
JiBleGlzdGluZ0ltYWdlQml0bWFwLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRp
b25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCiB7CiAg
ICAgLy8gMi4gSWYgaW1hZ2UncyBbW0RldGFjaGVkXV0gaW50ZXJuYWwgc2xvdCB2YWx1ZSBpcyB0
cnVlLCByZXR1cm4gYSBwcm9taXNlCiAgICAgLy8gICAgcmVqZWN0ZWQgd2l0aCBhbiAiSW52YWxp
ZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC01NTIs
MTAgKzU1MywxMCBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VCaXRtYXA+JiBleAogICAgIH0KIAogICAgIGF1dG8g
b3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0YW5nbGUoc291cmNlUmVjdGFuZ2xl
LnJldHVyblZhbHVlKCksIG9wdGlvbnMpOwotICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoRmxvYXRTaXplKG91dHB1dFNpemUud2lkdGgoKSwgb3V0cHV0U2l6ZS5oZWln
aHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOworICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgb3V0cHV0U2l6ZSwgYnVmZmVy
UmVuZGVyaW5nTW9kZSk7CiAKICAgICBpZiAoIWJpdG1hcERhdGEpIHsKLSAgICAgICAgcmVzb2x2
ZVdpdGhCbGFua0ltYWdlQnVmZmVyKGV4aXN0aW5nSW1hZ2VCaXRtYXAtPm9yaWdpbkNsZWFuKCks
IFdURk1vdmUocHJvbWlzZSkpOworICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZXhpc3RpbmdJbWFnZUJpdG1hcC0+b3JpZ2luQ2xlYW4o
KSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY5OCw3
ICs2OTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIobV9hcnJheUJ1ZmZlclRvUHJvY2Vz
cy5yZWxlYXNlTm9uTnVsbCgpLCBtX2Jsb2ItPnR5cGUoKSwgbV9ibG9iLT5zaXplKCksIG1fYmxv
YkxvYWRlci51cmwoKSwgV1RGTW92ZShtX29wdGlvbnMpLCBXVEZNb3ZlKG1fcmVjdCksIFdURk1v
dmUobV9wcm9taXNlKSk7CisgICAgICAgIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fYXJyYXlCdWZmZXJUb1Byb2Nlc3MucmVsZWFzZU5v
bk51bGwoKSwgbV9ibG9iLT50eXBlKCksIG1fYmxvYi0+c2l6ZSgpLCBtX2Jsb2JMb2FkZXIudXJs
KCksIFdURk1vdmUobV9vcHRpb25zKSwgV1RGTW92ZShtX3JlY3QpLCBXVEZNb3ZlKG1fcHJvbWlz
ZSkpOwogICAgIH0KIAogICAgIEZpbGVSZWFkZXJMb2FkZXIgbV9ibG9iTG9hZGVyOwpAQCAtNzEw
LDE0ICs3MTEsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9hcnJheUJ1
ZmZlclRvUHJvY2VzczsKIH07CiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIo
Ci0gICAgUmVmPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIFN0cmluZyBtaW1lVHlw
ZSwKLSAgICBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLAotICAgIGNvbnN0IFVSTCYg
c291cmNlVXJsLAotICAgIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsCi0gICAgT3B0aW9u
YWw8SW50UmVjdD4gcmVjdCwKLSAgICBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2
b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwg
U3RyaW5nIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBV
UkwmIHNvdXJjZVVSTCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50
UmVjdD4gcmVjdCwgUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKCFhcnJheUJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9y
LCAiQ2Fubm90IGNyZWF0ZSBhbiBJbWFnZUJpdG1hcCBmcm9tIGFuIGVtcHR5IGJ1ZmZlciIpOwpA
QCAtNzI1LDcgKzcxOSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoCiAg
ICAgfQogCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5i
eXRlTGVuZ3RoKCkpOwotICAgIGF1dG8gb2JzZXJ2ZXIgPSBJbWFnZUJpdG1hcEltYWdlT2JzZXJ2
ZXI6OmNyZWF0ZShtaW1lVHlwZSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBzb3VyY2VVcmwpOwor
ICAgIGF1dG8gb2JzZXJ2ZXIgPSBJbWFnZUJpdG1hcEltYWdlT2JzZXJ2ZXI6OmNyZWF0ZShtaW1l
VHlwZSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBzb3VyY2VVUkwpOwogICAgIGF1dG8gaW1hZ2Ug
PSBJbWFnZTo6Y3JlYXRlKG9ic2VydmVyLmdldCgpKTsKICAgICBpZiAoIWltYWdlKSB7CiAgICAg
ICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiVGhlIHR5cGUgb2YgdGhlIGFy
Z3VtZW50IHRvIGNyZWF0ZUltYWdlQml0bWFwIGlzIG5vdCBzdXBwb3J0ZWQiKTsKQEAgLTc0NSw3
ICs3MzksNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKAogICAgIH0KIAog
ICAgIGF1dG8gb3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0YW5nbGUoc291cmNl
UmVjdGFuZ2xlLnJldHVyblZhbHVlKCksIG9wdGlvbnMpOwotICAgIGF1dG8gYml0bWFwRGF0YSA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKG91dHB1dFNpemUud2lkdGgoKSwgb3V0cHV0
U2l6ZS5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOworICAgIGF1dG8gYml0bWFwRGF0
YSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRmxvYXRTaXpl
KG91dHB1dFNpemUud2lkdGgoKSwgb3V0cHV0U2l6ZS5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmlu
Z01vZGUpOwogICAgIGlmICghYml0bWFwRGF0YSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChJ
bnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGZyb20gdGhl
IGFyZ3VtZW50IHRvIGNyZWF0ZUltYWdlQml0bWFwIik7CiAgICAgICAgIHJldHVybjsKQEAgLTc2
OSw3ICs3NjMsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgUGVuZGluZ0ltYWdlQml0
bWFwOjpmZXRjaChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXVEZNb3ZlKGJsb2IpLCBXVEZNb3Zl
KG9wdGlvbnMpLCBXVEZNb3ZlKHJlY3QpLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAotdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRy
PEltYWdlRGF0YT4mIGltYWdlRGF0YSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0
aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQordm9p
ZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SW1hZ2VEYXRhPiYgaW1hZ2VEYXRhLCBJbWFnZUJp
dG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1h
cDo6UHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgLy8gNi4xLiBMZXQgYnVmZmVyIGJlIGltYWdl
J3MgZGF0YSBhdHRyaWJ1dGUgdmFsdWUncyBbW1ZpZXdlZEFycmF5QnVmZmVyXV0KICAgICAvLyAg
ICAgIGludGVybmFsIHNsb3QuCkBAIC03ODksMTAgKzc4MywxMCBAQCB2b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VEYXRh
PiYgaW1hZwogICAgIH0KIAogICAgIGF1dG8gb3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3Vy
Y2VSZWN0YW5nbGUoc291cmNlUmVjdGFuZ2xlLnJldHVyblZhbHVlKCksIG9wdGlvbnMpOwotICAg
IGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKG91dHB1dFNp
emUud2lkdGgoKSwgb3V0cHV0U2l6ZS5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOwor
ICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgb3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CiAKICAgICBpZiAoIWJp
dG1hcERhdGEpIHsKLSAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKHRydWUsIFdU
Rk1vdmUocHJvbWlzZSkpOworICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgdHJ1ZSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTgxMSw3ICs4MDUsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVh
dGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VEYXRhPiYgaW1h
ZwogCiAgICAgLy8gNi4zLiBTZXQgaW1hZ2VCaXRtYXAncyBiaXRtYXAgZGF0YSB0byBpbWFnZSdz
IGltYWdlIGRhdGEsIGNyb3BwZWQgdG8gdGhlCiAgICAgLy8gICAgICBzb3VyY2UgcmVjdGFuZ2xl
IHdpdGggZm9ybWF0dGluZy4KLSAgICBhdXRvIHRlbXBCaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShGbG9hdFNpemUoaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFnZURhdGEtPmhlaWdodCgp
KSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byB0ZW1wQml0bWFwRGF0YSA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRmxvYXRTaXplKG91dHB1dFNp
emUud2lkdGgoKSwgb3V0cHV0U2l6ZS5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOwog
ICAgIHRlbXBCaXRtYXBEYXRhLT5wdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkLCAqaW1hZ2VEYXRhLCBJbnRSZWN0KDAsIDAsIGltYWdlRGF0YS0+d2lk
dGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSksIHsgfSwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7
CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7CiAgICAg
Yml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqdGVtcEJpdG1hcERhdGEsIGRl
c3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xh
dGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSksIGltYWdl
T3JpZW50YXRpb25Gb3JPcmllbnRhdGlvbihvcHRpb25zLmltYWdlT3JpZW50YXRpb24pIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCmluZGV4IDAxZjI4M2Q5ODA1MTY3NjNlY2E4OWY2MjJk
ZjJmZDEzNTc2OGU4NTMuLjM3ZmI4MDhhYWQ1MWYzYmZlMTFjZDg5YWE5MDM4ZjY5MWZiNWY3Mjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNv
dXJjZSYmLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgUHJvbWlzZSYmKTsKICAgICBzdGF0aWMgdm9p
ZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTb3VyY2UmJiwgSW1hZ2VC
aXRtYXBPcHRpb25zJiYsIGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwgUHJvbWlzZSYm
KTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VCaXRtYXA+IGNyZWF0ZShJbnRTaXplKTsKKyAgICBz
dGF0aWMgUmVmPEltYWdlQml0bWFwPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IEludFNpemUmKTsKICAgICBzdGF0aWMgUmVmPEltYWdlQml0bWFwPiBjcmVhdGUoT3B0aW9u
YWw8SW1hZ2VCaXRtYXBCYWNraW5nPiYmKTsKIAogICAgIH5JbWFnZUJpdG1hcCgpOwpAQCAtMTEy
LDcgKzExMiw3IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZUJpdG1hcChPcHRpb25hbDxJbWFnZUJp
dG1hcEJhY2tpbmc+JiYpOwogCi0gICAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhCbGFua0ltYWdl
QnVmZmVyKGJvb2wgb3JpZ2luQ2xlYW4sIFByb21pc2UmJik7CisgICAgc3RhdGljIHZvaWQgcmVz
b2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBib29sIG9y
aWdpbkNsZWFuLCBQcm9taXNlJiYpOwogCiAgICAgc3RhdGljIHZvaWQgY3JlYXRlUHJvbWlzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiwgSW1hZ2VC
aXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwogI2lmIEVOQUJM
RShWSURFTykKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGNy
ZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxCbG9iPiYsIEltYWdl
Qml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKICAgICBzdGF0
aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1h
Z2VEYXRhPiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlz
ZSYmKTsKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBSZWZQdHI8VHlwZWRPTUNTU0ltYWdlVmFsdWU+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYs
IE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZy
b21CdWZmZXIoUmVmPEFycmF5QnVmZmVyPiYmLCBTdHJpbmcgbWltZVR5cGUsIGxvbmcgbG9uZyBl
eHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IFVSTCYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBP
cHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVGcm9t
QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFN0cmlu
ZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgVVJMJiwg
SW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwogCiAg
ICAgT3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPiBtX2JhY2tpbmdTdG9yZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKaW5kZXggMWUyNjAzM2YyMzgwMDgzYTMx
NmE1ZDQ2YmIxMWIxZDc0MmE4ZmY1Yi4uNzhmODRiYjZhYzJkZTVmYWRjMmYzNDBiYWM1NjA2MTBl
ODI3ZmRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtNzMs
MTQgKzczLDE0IEBAIFdlYWtQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IERldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzOjp0YWtlUGxhY2Vob2xkZXJDYW52YXMoKQogICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdl
KG1fcGxhY2Vob2xkZXJDYW52YXMsIG51bGxwdHIpOwogfQogCi1SZWY8T2Zmc2NyZWVuQ2FudmFz
PiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorUmVmPE9mZnNjcmVlbkNhbnZhcz4g
T2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMoY29udGV4dCwgd2lkdGgsIGhlaWdo
dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9mZnNjcmVlbkNhbnZhcyhzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKLVJlZjxPZmZzY3JlZW5DYW52YXM+
IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4mJiBkZXRhY2hlZENhbnZh
cykKK1JlZjxPZmZzY3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxE
ZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4mJiBkZXRhY2hlZENhbnZhcykKIHsKLSAgICBSZWY8T2Zm
c2NyZWVuQ2FudmFzPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgT2Zmc2NyZWVuQ2FudmFzKGNvbnRl
eHQsIGRldGFjaGVkQ2FudmFzLT5zaXplKCkud2lkdGgoKSwgZGV0YWNoZWRDYW52YXMtPnNpemUo
KS5oZWlnaHQoKSkpOworICAgIFJlZjxPZmZzY3JlZW5DYW52YXM+IGNsb25lID0gYWRvcHRSZWYo
Km5ldyBPZmZzY3JlZW5DYW52YXMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZGV0YWNoZWRDYW52
YXMtPnNpemUoKS53aWR0aCgpLCBkZXRhY2hlZENhbnZhcy0+c2l6ZSgpLmhlaWdodCgpKSk7CiAg
ICAgY2xvbmUtPnNldEltYWdlQnVmZmVyKGRldGFjaGVkQ2FudmFzLT50YWtlSW1hZ2VCdWZmZXIo
KSk7CiAgICAgaWYgKCFkZXRhY2hlZENhbnZhcy0+b3JpZ2luQ2xlYW4oKSkKICAgICAgICAgY2xv
bmUtPnNldE9yaWdpblRhaW50ZWQoKTsKQEAgLTEwMCwxNiArMTAwLDE2IEBAIFJlZjxPZmZzY3Jl
ZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIHN0CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8T2Zmc2NyZWVuQ2FudmFz
PiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzKQorUmVmPE9mZnNjcmVlbkNhbnZhcz4gT2Zmc2Ny
ZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcykKIHsKLSAgICBhdXRvIG9mZnNjcmVl
biA9IGFkb3B0UmVmKCpuZXcgT2Zmc2NyZWVuQ2FudmFzKGNvbnRleHQsIGNhbnZhcy53aWR0aCgp
LCBjYW52YXMuaGVpZ2h0KCkpKTsKKyAgICBhdXRvIG9mZnNjcmVlbiA9IGFkb3B0UmVmKCpuZXcg
T2Zmc2NyZWVuQ2FudmFzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNhbnZhcy53aWR0aCgpLCBj
YW52YXMuaGVpZ2h0KCkpKTsKICAgICBvZmZzY3JlZW4tPnNldFBsYWNlaG9sZGVyQ2FudmFzKGNh
bnZhcyk7CiAgICAgcmV0dXJuIG9mZnNjcmVlbjsKIH0KIAotT2Zmc2NyZWVuQ2FudmFzOjpPZmZz
Y3JlZW5DYW52YXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgd2lk
dGgsIHVuc2lnbmVkIGhlaWdodCkKK09mZnNjcmVlbkNhbnZhczo6T2Zmc2NyZWVuQ2FudmFzKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHVuc2lnbmVkIHdp
ZHRoLCB1bnNpZ25lZCBoZWlnaHQpCiAgICAgOiBDYW52YXNCYXNlKEludFNpemUod2lkdGgsIGhl
aWdodCkpCi0gICAgLCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmY29udGV4dCkKKyAgICAs
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewog
fQogCkBAIC0xODAsMTMgKzE4MCwxMyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlQ29u
dGV4dFdlYkdMKFJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBXZWJHTAogewogICAg
IEFTU0VSVCghbV9jb250ZXh0KTsKIAotICAgIGF1dG8gY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7Ci0g
ICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPigqY29udGV4dCk7CisgICAgYXV0byBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmIChzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAgICAgICAgV29ya2VyR2xvYmFsU2Nv
cGUmIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KTsKICAgICAgICAgaWYgKCFzaG91bGRFbmFibGVXZWJHTCh3b3Jr
ZXJHbG9iYWxTY29wZS53ZWJHTEVuYWJsZWQoKSwgd29ya2VyR2xvYmFsU2NvcGUuYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNl
IGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgYXV0byYgc2V0dGluZ3MgPSBk
b3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLnNldHRpbmdzKCk7CisgICAgfSBlbHNlIGlmIChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpIHsKKyAgICAgICAgYXV0byYgc2V0
dGluZ3MgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNldHRp
bmdzKCk7CiAgICAgICAgIGlmICghc2hvdWxkRW5hYmxlV2ViR0woc2V0dGluZ3Mud2ViR0xFbmFi
bGVkKCksIHNldHRpbmdzLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgIH0gZWxzZQpAQCAtMjU1LDggKzI1NSwxMCBAQCBFeGNlcHRpb25P
cjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJp
dG1hcCgpCiAgICAgICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAgICAgICAgICBy
ZXR1cm4geyBSZWZQdHI8SW1hZ2VCaXRtYXA+IHsgbnVsbHB0ciB9IH07CiAKLSAgICAgICAgaWYg
KCFtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7IEltYWdlQml0
bWFwOjpjcmVhdGUoSW1hZ2VCaXRtYXBCYWNraW5nKEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSkpIH07CisgICAgICAgIGlmICghbV9oYXND
cmVhdGVkSW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSgqY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2l6ZSgpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKKyAgICAgICAgICAgIHJldHVybiB7IEltYWdl
Qml0bWFwOjpjcmVhdGUoSW1hZ2VCaXRtYXBCYWNraW5nKFdURk1vdmUoYnVmZmVyKSkpIH07Cisg
ICAgICAgIH0KIAogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VJbWFnZUJ1ZmZlcigpOwogICAg
ICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI3Myw3ICsyNzUsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8
SW1hZ2VCaXRtYXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpCiAg
ICAgICAgIC8vIHN0b3JlIGZyb20gdGhpcyBjYW52YXMgKG9yIGl0cyBjb250ZXh0KSwgYnV0IGZv
ciBub3cgd2UnbGwganVzdAogICAgICAgICAvLyBjcmVhdGUgYSBuZXcgYml0bWFwIGFuZCBwYWlu
dCBpbnRvIGl0LgogCi0gICAgICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBJbWFnZUJpdG1hcDo6Y3Jl
YXRlKHNpemUoKSk7CisgICAgICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBJbWFnZUJpdG1hcDo6Y3Jl
YXRlKCpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzaXplKCkpOwogICAgICAg
ICBpZiAoIWltYWdlQml0bWFwLT5idWZmZXIoKSkKICAgICAgICAgICAgIHJldHVybiB7IFJlZlB0
cjxJbWFnZUJpdG1hcD4geyBudWxscHRyIH0gfTsKIApAQCAtMzY5LDExICszNzEsMTEgQEAgdm9p
ZCBPZmZzY3JlZW5DYW52YXM6OmNsZWFyQ29waWVkSW1hZ2UoKSBjb25zdAogCiBTZWN1cml0eU9y
aWdpbiogT2Zmc2NyZWVuQ2FudmFzOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7Ci0gICAgYXV0
byYgY29udGV4dCA9ICpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlm
IChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgIHJldHVybiAmZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnRvcE9yaWdpbigpOworICAgIGF1dG8mIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgPSAqY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
KQorICAgICAgICByZXR1cm4gJmRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KS50b3BPcmlnaW4oKTsKIAotICAgIHJldHVybiAmZG93bmNhc3Q8RG9jdW1l
bnQ+KGNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgcmV0dXJuICZkb3duY2FzdDxEb2N1
bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuc2VjdXJpdHlPcmlnaW4oKTsKIH0KIAogYm9v
bCBPZmZzY3JlZW5DYW52YXM6OmNhbkRldGFjaCgpIGNvbnN0CkBAIC00NTcsMTEgKzQ1OSwxMSBA
QCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6c2NoZWR1bGVDb21taXRUb1BsYWNlaG9sZGVyQ2FudmFz
KCkKIAogQ1NTVmFsdWVQb29sJiBPZmZzY3JlZW5DYW52YXM6OmNzc1ZhbHVlUG9vbCgpCiB7Ci0g
ICAgYXV0byogY29udGV4dCA9IGNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgaWYgKGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkKLSAgICAgICAgcmV0dXJuIGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCkuY3NzVmFsdWVQb29sKCk7CisgICAg
YXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CisgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyR2xvYmFs
U2NvcGUoKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkuY3NzVmFsdWVQb29sKCk7CiAKLSAgICBBU1NFUlQoY29udGV4
dC0+aXNEb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNE
b2N1bWVudCgpKTsKICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKIH0KIApA
QCAtNDcyLDcgKzQ3NCw3IEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGVJbWFnZUJ1ZmZl
cigpIGNvbnN0CiAgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgc2V0SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpKTsKKyAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKCpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzaXplKCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBPZmZzY3JlZW5DYW52YXM6OnRha2VJbWFnZUJ1ZmZlcigpIGNvbnN0CkBAIC00ODgs
NyArNDkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBPZmZzY3JlZW5DYW52YXM6
OnRha2VJbWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Y2xlYXJDb3BpZWRJbWFnZSgpOwotICAgIHJldHVybiBzZXRJbWFnZUJ1ZmZlcihtX2RldGFjaGVk
ID8gbnVsbHB0ciA6IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkKSk7CisgICAgcmV0dXJuIHNldEltYWdlQnVmZmVyKG1fZGV0YWNoZWQgPyBu
dWxscHRyIDogSW1hZ2VCdWZmZXI6OmNyZWF0ZSgqY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSk7CiB9CiAKIHZv
aWQgT2Zmc2NyZWVuQ2FudmFzOjpyZXNldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKaW5kZXggOTI1OTMzZTg2M2I0NTlhYmJmMThkNjRl
MjVlZTA3MTI0YzM4NjA0Zi4uMWQ2OGI5NmQ3ZGQ4MjI3MzllZGNmZGQ4Y2U0NTg3MWY0ZjUwZTE0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmNwcApAQCAtMjgsMTYgKzI4LDI5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKIAorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJJbWFnZURh
dGEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25z
dCBmbG9hdCBNYXhDbGFtcGVkTGVuZ3RoID0gNDA5NjsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhD
bGFtcGVkQXJlYSA9IE1heENsYW1wZWRMZW5ndGggKiBNYXhDbGFtcGVkTGVuZ3RoOwogCitzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIGF1dG8gZG9jdW1lbnQgPSBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LmlzRG9jdW1lbnQoKSA/ICZkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkgOiBudWxscHRyOworICAgIGF1dG8gaG9zdFdpbmRvdyA9IChkb2N1bWVudCAm
JiBkb2N1bWVudC0+dmlldygpICYmIGRvY3VtZW50LT52aWV3KCktPnJvb3QoKSkgPyBkb2N1bWVu
dC0+dmlldygpLT5yb290KCktPmhvc3RXaW5kb3coKSA6IG51bGxwdHI7CisKKyAgICBhdXRvIGFj
Y2VsZXJhdGUgPSByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkID8g
U2hvdWxkQWNjZWxlcmF0ZTo6WWVzIDogU2hvdWxkQWNjZWxlcmF0ZTo6Tm87CisgICAgYXV0byB1
c2VEaXNwbGF5TGlzdCA9IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKKworICAgIHJldHVybiBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGFjY2VsZXJhdGUsIHVzZURpc3BsYXlMaXN0LCBSZW5k
ZXJpbmdQdXJwb3NlOjpDYW52YXMsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgaG9zdFdp
bmRvdyk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFNob3VsZEFjY2VsZXJhdGUgc2hvdWxkQWNjZWxl
cmF0ZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Qgc2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmlu
Z1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGQxNDY0OTJjNGE4ZGY5MzVjYWY5NGI5ZmI5
NTU5MDlhYWQxY2JhZjAuLjYxMTdhNzJiZTI2ZjlkN2RkMGU4MDk0NjE2NzM2MmI2MGM5YTBkZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApA
QCAtMzYsOSArMzYsMTIgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERyYXdpbmdD
b250ZXh0OwogfQogCitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCiBjbGFzcyBJbWFn
ZUJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24g
YWxsb2NhdGlvbiBmYWlsdXJlLgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiwgUmVu
ZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9y
U3BhY2U6OlNSR0IpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBTaG91bGRBY2NlbGVyYXRlLCBT
aG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0IsIGNvbnN0IEhvc3RXaW5kb3cq
ID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpTUkdCLCBjb25z
dCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCBlODQ5MTY2NDUxNDU5NjI4N2VmMmM3OGY5MDc2ZTFk
NDM4MjE5MWYyLi4zZjM0MmJjN2JjMDZkMjBhYjFlYzdiZjRiMTQxODVmMDZhN2I4OTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlci5oCkBAIC05MSw3ICs5MSw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAg
ICAgIC8vIFRoZSBtYXRoIGluc2lkZSBJbWFnZURhdGE6OmNyZWF0ZSgpIGRvZXNuJ3QgYWdyZWUg
d2l0aCB0aGUgbWF0aCBpbnNpZGUgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRJbWFnZURhdGEoKSBh
Ym91dCBob3cgbV9yZXNvbHV0aW9uU2NhbGUgaW50ZXJhY3RzIHdpdGggdGhlIGRhdGEgaW4gdGhl
IEltYWdlQnVmZmVyLgogICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgcHV0SW1hZ2VEYXRhKCkg
aXMgb25seSBjYWxsZWQgd2hlbiBtX3Jlc29sdXRpb25TY2FsZSA9PSAxLgotICAgICAgICBBU1NF
UlQobV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSA9PSAxKTsKKyAgICAgICAgQVNTRVJUX0lN
UExJRVMobV9iYWNrZW5kLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpID09IDEpOwogICAg
ICAgICBtX2RyYXdpbmdDb250ZXh0LnJlY29yZGVyKCkucHV0SW1hZ2VEYXRhKGlucHV0Rm9ybWF0
LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcAppbmRleCA0ZTli
NzYyZDhlMGNmNWZmZjg3ZjFjNDI4NDVhZjAwNGE4ZGExZGFiLi40N2Y3YTAxNGNmNDBkMjRiNDAx
NzE4ZDQ4ZDEzZTVkNDg0Y2MyYjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlci5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcjo6flJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoKQogICAgIC8vIFJl
bGVhc2UgdGhlIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuCiAgICAgaWYgKCFtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQpCiAgICAgICAgIHJldHVybjsKKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQtPnJlbGVhc2VSZW1vdGVSZXNvdXJjZShtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShtX3JlbW90ZVJlc291cmNlSWRl
bnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411389</attachid>
            <date>2020-10-14 16:59:49 -0700</date>
            <delta_ts>2020-10-14 22:52:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217735-20201014165948.patch</filename>
            <type>text/plain</type>
            <size>31200</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRjYTU2ZjYwYTRjYTVm
ZmMzN2M3ZWRkYmI3Zjk1OTkzYTgzYmQzNC4uNWMzNTQxMDlmMTQwMGMzYTI5Zjk1ODIyYzYxMjY4
NmQ2M2I5NGNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEwLTE0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXSBFbmFibGUgSW1hZ2VCaXRtYXAgYW5kIE9mZnNjcmVlbkNhbnZhcyBkcmF3aW5nIHRv
IGdvIHRocm91Z2ggR1BVCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTc3MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBuZXcgSW1hZ2VCdWZmZXI6OmNyZWF0ZSgpIG1ldGhvZCB3aGljaCB0YWtl
cyBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8g
Z2V0IHRoZSBIb3N0V2luZG93LiBJZiB0aGVyZSBpcyBIb3N0V2luZG93IGFzc29jaWF0ZWQKKyAg
ICAgICAgd2l0aCB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdGhlIGNhbGwgd2lsbCBiZSBk
ZWxlZ2F0ZWQgdG8gV2ViQ2hyb21lQ2xpZW50LgorICAgICAgICBUaGlzIHdpbGwgY3JlYXRlIGEg
UmVtb3RlSW1hZ2VCdWZmZXIgaW4gV2ViIFByb2Nlc3MgYW5kIGEgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eQorICAgICAgICBpbiB0aGUgR1BVIFByb2Nlc3MuIE5vIG90aGVyIGNoYW5nZXMgaW4gbmVl
ZGVkLgorCisgICAgICAgICJydW4td2Via2l0LXRlc3RzIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvIC0tdXNlLWdwdS1wcm9jZXNzIgorICAgICAgICByZXN1bHRlZCBpbiBjb3VwbGUg
b2YgbGF5b3V0IHRlc3QgZmFpbHVyZXMgd2hpY2ggY2FuIGJlIGFkZHJlc3NlZCBsYXRlci4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAg
KiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OnJlc29sdmVXaXRoQmxhbmtJ
bWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcik6Cisg
ICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5oOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2Fu
dmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6T2Zmc2NyZWVuQ2FudmFzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlQ29udGV4dFdlYkdMKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpjc3NWYWx1ZVBvb2wpOgorICAgICAg
ICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnRha2VJbWFnZUJ1ZmZlciBjb25zdCk6
CisgICAgICAgIFJlbmFtZSBhbGwgdGhlIHBhcmFtZXRlcnMgd2hvc2UgbmFtZXMgYXJlIGNvbnRl
eHQgYW5kIHdob3NlIHR5cGVzIGlzCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgdG8g
YmUgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB0byBub3QgY29uZnVzZSBpdAorICAgICAgICB3aXRo
IEdyYXBoaWNzQ29udGV4dCBvciBDYW52YXNSZW5kZXJpbmdDb250ZXh0LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaDoKKwogMjAyMC0xMC0xMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc106IFJlcGxhY2UgIkltYWdlQnVmZmVySWRl
bnRpZmllciIgYnkgYSBnZW5lcmljIGlkZW50aWZpZXIgbmFtZWQgIlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggZWM0MDU5MjY2ODBmODk0NDUwZWM4YjJiMWRlM2U2YjJjNTAw
MjA0OS4uNmRkMzY0NzkzMDU3NzI5OGRhNjUwZjY4ZWI5YjVkYzZjYzk2NGFiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMSBAQAorMjAyMC0xMC0xNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gRW5hYmxlIEltYWdlQml0
bWFwIGFuZCBPZmZzY3JlZW5DYW52YXMgZHJhd2luZyB0byBnbyB0aHJvdWdoIEdQVQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICBwdXRJbWFnZURhdGEoKSBt
aWdodCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgY3JlYXRpbmcgdGhlIEltYWdlQnVmZmVy
CisgICAgICAgIGFuZCBiZWZvcmUgcmVjZWl2aW5nIHRoZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LkNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZAorICAgICAgICBtZXNzYWdlLiBXZSBuZWVkIHRvIGNv
bnNpZGVyIGZvciB0aGlzIGNhc2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6flJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXIpOgorICAgICAgICBUaGlzIGlzIGEgYnVnLiBDdXJyZW50bHkgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKCkKKyAgICAgICAgaXMgbmV2ZXIgY2Fs
bGVkLiBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgZW50cnkgZnJvbSB0aGUgSGFzaE1hcCB3aGVuIGl0
IGlzCisgICAgICAgIGJlaW5nIGRlc3Ryb3llZC4KKwogMjAyMC0xMC0xMiAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc106
IFJlcGxhY2UgIkltYWdlQnVmZmVySWRlbnRpZmllciIgYnkgYSBnZW5lcmljIGlkZW50aWZpZXIg
bmFtZWQgIlJlbW90ZVJlc291cmNlSWRlbnRpZmllciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGY4ZTFlNTc0NWE4
ZGRjMWUxMzNlOTYyZGY0ZDk3ZDE3YjA1ZGU2YzIuLjFiZTI3ZjI1OTRlNDAwMDBlYWY0ZThkY2Q0
OGRhZWYxN2ZkOWYzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjk4OCw3ICsyOTg4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRv
IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGxvZ2ljYWxTaXplKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJv
bUV4ZWNTdGF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QpLCBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlKTsKICAgICAgICAgaWYgKCFidWZm
ZXIpIHsKICAgICAgICAgICAgIGZhaWwoKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCmluZGV4IDQzOWI2YTlkN2Q4MTIwZDkxZTFl
MWFmYzU2ZDFhYWY2YmUwYjQ5ZTQuLjk4OWM2ZGRjMGFhMDlhZGMzODEyNzJlMDYxMWUwYWQ3MmMz
ZGNlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCkBAIC02Nyw5ICs2Nyw5IEBA
IHN0YXRpYyBSZW5kZXJpbmdNb2RlIGJ1ZmZlclJlbmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2Rl
OjpBY2NlbGVyYXRlZDsKIHN0YXRpYyBSZW5kZXJpbmdNb2RlIGJ1ZmZlclJlbmRlcmluZ01vZGUg
PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogI2VuZGlmCiAKLVJlZjxJbWFnZUJpdG1h
cD4gSW1hZ2VCaXRtYXA6OmNyZWF0ZShJbnRTaXplIHNpemUpCitSZWY8SW1hZ2VCaXRtYXA+IElt
YWdlQml0bWFwOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlKHsgSW1h
Z2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSwg
YnVmZmVyUmVuZGVyaW5nTW9kZSkgfSk7CisgICAgcmV0dXJuIGNyZWF0ZSh7IEltYWdlQnVmZmVy
OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9k
ZSkgfSk7CiB9CiAKIFJlZjxJbWFnZUJpdG1hcD4gSW1hZ2VCaXRtYXA6OmNyZWF0ZShPcHRpb25h
bDxJbWFnZUJpdG1hcEJhY2tpbmc+JiYgYmFja2luZ1N0b3JlKQpAQCAtMjI2LDEyICsyMjYsMTIg
QEAgc3RhdGljIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbkZv
clByZW11bHRpcGx5QWxwaGEoSW1hZ2VCaXQKICAgICByZXR1cm4gQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZDsKIH0KIAotdm9pZCBJbWFnZUJpdG1hcDo6cmVzb2x2ZVdpdGhC
bGFua0ltYWdlQnVmZmVyKGJvb2wgb3JpZ2luQ2xlYW4sIFByb21pc2UmJiBwcm9taXNlKQordm9p
ZCBJbWFnZUJpdG1hcDo6cmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGJvb2wgb3JpZ2luQ2xlYW4sIFByb21p
c2UmJiBwcm9taXNlKQogewogICAgIC8vIFNvdXJjZSByZWN0YW5nbGUgbGlrZWx5IGRvZXNuJ3Qg
aW50ZXJzZWN0IHRoZSBzb3VyY2UgaW1hZ2UuCiAgICAgLy8gQmVoYXZpb3IgaXNuJ3Qgd2VsbCBz
cGVjaWZpZWQsIGJ1dCBXUFQgdGVzdHMgZXhwZWN0IG5vIFByb21pc2UgcmVqZWN0aW9uIChhbmQg
b2YgY291cnNlIG5vIGNyYXNoZXMpLgogICAgIC8vIFJlc29sdmUgUHJvbWlzZSB3aXRoIGEgYmxh
bmsgMXgxIEltYWdlQml0bWFwLgotICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoRmxvYXRTaXplKDEsIDEpLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGJp
dG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEZs
b2F0U2l6ZSgxLCAxKSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CiAKICAgICAvLyA5LiBJZiB0aGUg
b3JpZ2luIG9mIGltYWdlJ3MgaW1hZ2UgaXMgbm90IHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgb3Jp
Z2luIHNwZWNpZmllZCBieSB0aGUKICAgICAvLyAgICBlbnRyeSBzZXR0aW5ncyBvYmplY3QsIHRo
ZW4gc2V0IHRoZSBvcmlnaW4tY2xlYW4gZmxhZyBvZiB0aGUgSW1hZ2VCaXRtYXAgb2JqZWN0J3MK
QEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpyZXNvbHZlV2l0aEJsYW5rSW1h
Z2VCdWZmZXIoYm9vbCBvcmlnaW5DbGVhbiwgUHJvbWlzZSYmIHByb21pcwogCiAvLyAxMy4gUmV0
dXJuIG91dHB1dC4KIAotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiBpbWFnZUVsZW1lbnQsIElt
YWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdl
Qml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21p
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRy
PEhUTUxJbWFnZUVsZW1lbnQ+JiBpbWFnZUVsZW1lbnQsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9w
dGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJv
bWlzZSkKIHsKICAgICAvLyAyLiBJZiBpbWFnZSBpcyBub3QgY29tcGxldGVseSBhdmFpbGFibGUs
IHRoZW4gcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoCiAgICAgLy8gYW4gIkludmFsaWRT
dGF0ZUVycm9yIiBET01FeGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgpAQCAtMzUwLDcg
KzM1MCw4IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50CiAgICAgfQogCiAgICAgYXV0byBvdXRw
dXRTaXplID0gb3V0cHV0U2l6ZUZvclNvdXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUucmV0
dXJuVmFsdWUoKSwgb3B0aW9ucyk7Ci0gICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShGbG9hdFNpemUob3V0cHV0U2l6ZS53aWR0aCgpLCBvdXRwdXRTaXplLmhlaWdodCgp
KSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBvdXRwdXRTaXplLCBidWZmZXJSZW5k
ZXJpbmdNb2RlKTsKKwogICAgIGF1dG8gaW1hZ2VGb3JSZW5kZXIgPSBjYWNoZWRJbWFnZS0+aW1h
Z2VGb3JSZW5kZXJlcihpbWFnZUVsZW1lbnQtPnJlbmRlcmVyKCkpOwogICAgIGlmICghaW1hZ2VG
b3JSZW5kZXIpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJD
YW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gaW1hZ2UgdGhhdCBjYW4ndCBiZSByZW5kZXJl
ZCIpOwpAQCAtMzU4LDcgKzM1OSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50CiAgICAgfQog
CiAgICAgaWYgKCFiaXRtYXBEYXRhKSB7Ci0gICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1
ZmZlcighdGFpbnRzT3JpZ2luKCpjYWNoZWRJbWFnZSksIFdURk1vdmUocHJvbWlzZSkpOworICAg
ICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
IXRhaW50c09yaWdpbigqY2FjaGVkSW1hZ2UpLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMzg0LDE5ICszODUsMTkgQEAgdm9pZCBJbWFnZUJpdG1hcDo6
Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVs
ZW1lbnQKICAgICBwcm9taXNlLnJlc29sdmUoV1RGTW92ZShpbWFnZUJpdG1hcCkpOwogfQogCi12
b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4mIGNhbnZhc0VsZW1lbnQsIEltYWdlQml0
bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFw
OjpQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEhUTUxD
YW52YXNFbGVtZW50PiYgY2FudmFzRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9u
cywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNl
KQogewotICAgIGNyZWF0ZVByb21pc2UoY29udGV4dCwgKmNhbnZhc0VsZW1lbnQsIFdURk1vdmUo
b3B0aW9ucyksIFdURk1vdmUocmVjdCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIGNyZWF0ZVBy
b21pc2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgKmNhbnZhc0VsZW1lbnQsIFdURk1vdmUob3B0
aW9ucyksIFdURk1vdmUocmVjdCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiAjaWYgRU5BQkxF
KE9GRlNDUkVFTl9DQU5WQVMpCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiBjYW52
YXNFbGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0
PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiBjYW52YXNFbGVtZW50LCBJbWFnZUJpdG1h
cE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6
UHJvbWlzZSYmIHByb21pc2UpCiB7Ci0gICAgY3JlYXRlUHJvbWlzZShjb250ZXh0LCAqY2FudmFz
RWxlbWVudCwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWN0KSwgV1RGTW92ZShwcm9taXNl
KSk7CisgICAgY3JlYXRlUHJvbWlzZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCAqY2FudmFzRWxl
bWVudCwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWN0KSwgV1RGTW92ZShwcm9taXNlKSk7
CiB9CiAjZW5kaWYKIAotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgQ2FudmFzQmFzZSYgY2FudmFzLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBv
cHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHBy
b21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIENhbnZhc0Jhc2UmIGNhbnZhcywgSW1hZ2VC
aXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRt
YXA6OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIDIuIElmIHRoZSBjYW52YXMgZWxlbWVu
dCdzIGJpdG1hcCBoYXMgZWl0aGVyIGEgaG9yaXpvbnRhbCBkaW1lbnNpb24gb3IgYSB2ZXJ0aWNh
bAogICAgIC8vICAgIGRpbWVuc2lvbiBlcXVhbCB0byB6ZXJvLCB0aGVuIHJldHVybiBhIHByb21p
c2UgcmVqZWN0ZWQgd2l0aCBhbiAiSW52YWxpZFN0YXRlRXJyb3IiCkBAIC00MTcsNyArNDE4LDcg
QEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgQ2FudmFzQmFzZSYgY2FudmFzLCBJbWEKICAgICB9CiAKICAgICBhdXRvIG91dHB1dFNpemUg
PSBvdXRwdXRTaXplRm9yU291cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZS5yZXR1cm5WYWx1
ZSgpLCBvcHRpb25zKTsKLSAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KEZsb2F0U2l6ZShvdXRwdXRTaXplLndpZHRoKCksIG91dHB1dFNpemUuaGVpZ2h0KCkpLCBidWZm
ZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01v
ZGUpOwogCiAgICAgYXV0byBpbWFnZUZvclJlbmRlciA9IGNhbnZhcy5jb3BpZWRJbWFnZSgpOwog
ICAgIGlmICghaW1hZ2VGb3JSZW5kZXIpIHsKQEAgLTQyNiw3ICs0MjcsNyBAQCB2b2lkIEltYWdl
Qml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBDYW52YXNCYXNl
JiBjYW52YXMsIEltYQogICAgIH0KIAogICAgIGlmICghYml0bWFwRGF0YSkgewotICAgICAgICBy
ZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoY2FudmFzLm9yaWdpbkNsZWFuKCksIFdURk1vdmUo
cHJvbWlzZSkpOworICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgY2FudmFzLm9yaWdpbkNsZWFuKCksIFdURk1vdmUocHJvbWlzZSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00ODksNyArNDkwLDcgQEAgdm9pZCBJbWFnZUJp
dG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LAogICAgIGF1dG8gb3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0
YW5nbGUoc291cmNlUmVjdGFuZ2xlLCBvcHRpb25zKTsKICAgICBhdXRvIGJpdG1hcERhdGEgPSB2
aWRlby0+Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcob3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5n
TW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA/IFNob3VsZEFjY2VsZXJhdGU6Olll
cyA6IFNob3VsZEFjY2VsZXJhdGU6Ok5vKTsKICAgICBpZiAoIWJpdG1hcERhdGEpIHsKLSAgICAg
ICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKCF0YWludHNPcmlnaW4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigpLCAqdmlkZW8pLCBXVEZNb3ZlKHByb21pc2UpKTsK
KyAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsICF0YWludHNPcmlnaW4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigp
LCAqdmlkZW8pLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNTM0LDcgKzUzNSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxUeXBlZE9NQ1NTSW1hZ2VWCiB9CiAjZW5kaWYKIAot
dm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
UmVmUHRyPEltYWdlQml0bWFwPiYgZXhpc3RpbmdJbWFnZUJpdG1hcCwgSW1hZ2VCaXRtYXBPcHRp
b25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21p
c2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SW1hZ2VCaXRtYXA+
JiBleGlzdGluZ0ltYWdlQml0bWFwLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRp
b25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCiB7CiAg
ICAgLy8gMi4gSWYgaW1hZ2UncyBbW0RldGFjaGVkXV0gaW50ZXJuYWwgc2xvdCB2YWx1ZSBpcyB0
cnVlLCByZXR1cm4gYSBwcm9taXNlCiAgICAgLy8gICAgcmVqZWN0ZWQgd2l0aCBhbiAiSW52YWxp
ZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC01NTIs
MTAgKzU1MywxMCBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VCaXRtYXA+JiBleAogICAgIH0KIAogICAgIGF1dG8g
b3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0YW5nbGUoc291cmNlUmVjdGFuZ2xl
LnJldHVyblZhbHVlKCksIG9wdGlvbnMpOwotICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoRmxvYXRTaXplKG91dHB1dFNpemUud2lkdGgoKSwgb3V0cHV0U2l6ZS5oZWln
aHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOworICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgb3V0cHV0U2l6ZSwgYnVmZmVy
UmVuZGVyaW5nTW9kZSk7CiAKICAgICBpZiAoIWJpdG1hcERhdGEpIHsKLSAgICAgICAgcmVzb2x2
ZVdpdGhCbGFua0ltYWdlQnVmZmVyKGV4aXN0aW5nSW1hZ2VCaXRtYXAtPm9yaWdpbkNsZWFuKCks
IFdURk1vdmUocHJvbWlzZSkpOworICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZXhpc3RpbmdJbWFnZUJpdG1hcC0+b3JpZ2luQ2xlYW4o
KSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY5OCw3
ICs2OTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIobV9hcnJheUJ1ZmZlclRvUHJvY2Vz
cy5yZWxlYXNlTm9uTnVsbCgpLCBtX2Jsb2ItPnR5cGUoKSwgbV9ibG9iLT5zaXplKCksIG1fYmxv
YkxvYWRlci51cmwoKSwgV1RGTW92ZShtX29wdGlvbnMpLCBXVEZNb3ZlKG1fcmVjdCksIFdURk1v
dmUobV9wcm9taXNlKSk7CisgICAgICAgIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fYXJyYXlCdWZmZXJUb1Byb2Nlc3MucmVsZWFzZU5v
bk51bGwoKSwgbV9ibG9iLT50eXBlKCksIG1fYmxvYi0+c2l6ZSgpLCBtX2Jsb2JMb2FkZXIudXJs
KCksIFdURk1vdmUobV9vcHRpb25zKSwgV1RGTW92ZShtX3JlY3QpLCBXVEZNb3ZlKG1fcHJvbWlz
ZSkpOwogICAgIH0KIAogICAgIEZpbGVSZWFkZXJMb2FkZXIgbV9ibG9iTG9hZGVyOwpAQCAtNzEw
LDE0ICs3MTEsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9hcnJheUJ1
ZmZlclRvUHJvY2VzczsKIH07CiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIo
Ci0gICAgUmVmPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIFN0cmluZyBtaW1lVHlw
ZSwKLSAgICBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLAotICAgIGNvbnN0IFVSTCYg
c291cmNlVXJsLAotICAgIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsCi0gICAgT3B0aW9u
YWw8SW50UmVjdD4gcmVjdCwKLSAgICBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2
b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwg
U3RyaW5nIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBV
UkwmIHNvdXJjZVVSTCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50
UmVjdD4gcmVjdCwgUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKCFhcnJheUJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9y
LCAiQ2Fubm90IGNyZWF0ZSBhbiBJbWFnZUJpdG1hcCBmcm9tIGFuIGVtcHR5IGJ1ZmZlciIpOwpA
QCAtNzI1LDcgKzcxOSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoCiAg
ICAgfQogCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5i
eXRlTGVuZ3RoKCkpOwotICAgIGF1dG8gb2JzZXJ2ZXIgPSBJbWFnZUJpdG1hcEltYWdlT2JzZXJ2
ZXI6OmNyZWF0ZShtaW1lVHlwZSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBzb3VyY2VVcmwpOwor
ICAgIGF1dG8gb2JzZXJ2ZXIgPSBJbWFnZUJpdG1hcEltYWdlT2JzZXJ2ZXI6OmNyZWF0ZShtaW1l
VHlwZSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBzb3VyY2VVUkwpOwogICAgIGF1dG8gaW1hZ2Ug
PSBJbWFnZTo6Y3JlYXRlKG9ic2VydmVyLmdldCgpKTsKICAgICBpZiAoIWltYWdlKSB7CiAgICAg
ICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiVGhlIHR5cGUgb2YgdGhlIGFy
Z3VtZW50IHRvIGNyZWF0ZUltYWdlQml0bWFwIGlzIG5vdCBzdXBwb3J0ZWQiKTsKQEAgLTc0NSw3
ICs3MzksNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKAogICAgIH0KIAog
ICAgIGF1dG8gb3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0YW5nbGUoc291cmNl
UmVjdGFuZ2xlLnJldHVyblZhbHVlKCksIG9wdGlvbnMpOwotICAgIGF1dG8gYml0bWFwRGF0YSA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKG91dHB1dFNpemUud2lkdGgoKSwgb3V0cHV0
U2l6ZS5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOworICAgIGF1dG8gYml0bWFwRGF0
YSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRmxvYXRTaXpl
KG91dHB1dFNpemUud2lkdGgoKSwgb3V0cHV0U2l6ZS5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmlu
Z01vZGUpOwogICAgIGlmICghYml0bWFwRGF0YSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChJ
bnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGZyb20gdGhl
IGFyZ3VtZW50IHRvIGNyZWF0ZUltYWdlQml0bWFwIik7CiAgICAgICAgIHJldHVybjsKQEAgLTc2
OSw3ICs3NjMsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgUGVuZGluZ0ltYWdlQml0
bWFwOjpmZXRjaChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXVEZNb3ZlKGJsb2IpLCBXVEZNb3Zl
KG9wdGlvbnMpLCBXVEZNb3ZlKHJlY3QpLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAotdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRy
PEltYWdlRGF0YT4mIGltYWdlRGF0YSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0
aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQordm9p
ZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SW1hZ2VEYXRhPiYgaW1hZ2VEYXRhLCBJbWFnZUJp
dG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1h
cDo6UHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgLy8gNi4xLiBMZXQgYnVmZmVyIGJlIGltYWdl
J3MgZGF0YSBhdHRyaWJ1dGUgdmFsdWUncyBbW1ZpZXdlZEFycmF5QnVmZmVyXV0KICAgICAvLyAg
ICAgIGludGVybmFsIHNsb3QuCkBAIC03ODksMTAgKzc4MywxMCBAQCB2b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VEYXRh
PiYgaW1hZwogICAgIH0KIAogICAgIGF1dG8gb3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3Vy
Y2VSZWN0YW5nbGUoc291cmNlUmVjdGFuZ2xlLnJldHVyblZhbHVlKCksIG9wdGlvbnMpOwotICAg
IGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKG91dHB1dFNp
emUud2lkdGgoKSwgb3V0cHV0U2l6ZS5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOwor
ICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgb3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CiAKICAgICBpZiAoIWJp
dG1hcERhdGEpIHsKLSAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKHRydWUsIFdU
Rk1vdmUocHJvbWlzZSkpOworICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgdHJ1ZSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTgxMSw3ICs4MDUsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVh
dGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VEYXRhPiYgaW1h
ZwogCiAgICAgLy8gNi4zLiBTZXQgaW1hZ2VCaXRtYXAncyBiaXRtYXAgZGF0YSB0byBpbWFnZSdz
IGltYWdlIGRhdGEsIGNyb3BwZWQgdG8gdGhlCiAgICAgLy8gICAgICBzb3VyY2UgcmVjdGFuZ2xl
IHdpdGggZm9ybWF0dGluZy4KLSAgICBhdXRvIHRlbXBCaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShGbG9hdFNpemUoaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFnZURhdGEtPmhlaWdodCgp
KSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byB0ZW1wQml0bWFwRGF0YSA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRmxvYXRTaXplKG91dHB1dFNp
emUud2lkdGgoKSwgb3V0cHV0U2l6ZS5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOwog
ICAgIHRlbXBCaXRtYXBEYXRhLT5wdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkLCAqaW1hZ2VEYXRhLCBJbnRSZWN0KDAsIDAsIGltYWdlRGF0YS0+d2lk
dGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSksIHsgfSwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7
CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7CiAgICAg
Yml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqdGVtcEJpdG1hcERhdGEsIGRl
c3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xh
dGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSksIGltYWdl
T3JpZW50YXRpb25Gb3JPcmllbnRhdGlvbihvcHRpb25zLmltYWdlT3JpZW50YXRpb24pIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCmluZGV4IDAxZjI4M2Q5ODA1MTY3NjNlY2E4OWY2MjJk
ZjJmZDEzNTc2OGU4NTMuLjM3ZmI4MDhhYWQ1MWYzYmZlMTFjZDg5YWE5MDM4ZjY5MWZiNWY3Mjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNv
dXJjZSYmLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgUHJvbWlzZSYmKTsKICAgICBzdGF0aWMgdm9p
ZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTb3VyY2UmJiwgSW1hZ2VC
aXRtYXBPcHRpb25zJiYsIGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwgUHJvbWlzZSYm
KTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VCaXRtYXA+IGNyZWF0ZShJbnRTaXplKTsKKyAgICBz
dGF0aWMgUmVmPEltYWdlQml0bWFwPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IEludFNpemUmKTsKICAgICBzdGF0aWMgUmVmPEltYWdlQml0bWFwPiBjcmVhdGUoT3B0aW9u
YWw8SW1hZ2VCaXRtYXBCYWNraW5nPiYmKTsKIAogICAgIH5JbWFnZUJpdG1hcCgpOwpAQCAtMTEy
LDcgKzExMiw3IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZUJpdG1hcChPcHRpb25hbDxJbWFnZUJp
dG1hcEJhY2tpbmc+JiYpOwogCi0gICAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhCbGFua0ltYWdl
QnVmZmVyKGJvb2wgb3JpZ2luQ2xlYW4sIFByb21pc2UmJik7CisgICAgc3RhdGljIHZvaWQgcmVz
b2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBib29sIG9y
aWdpbkNsZWFuLCBQcm9taXNlJiYpOwogCiAgICAgc3RhdGljIHZvaWQgY3JlYXRlUHJvbWlzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiwgSW1hZ2VC
aXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwogI2lmIEVOQUJM
RShWSURFTykKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGNy
ZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxCbG9iPiYsIEltYWdl
Qml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKICAgICBzdGF0
aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1h
Z2VEYXRhPiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlz
ZSYmKTsKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBSZWZQdHI8VHlwZWRPTUNTU0ltYWdlVmFsdWU+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYs
IE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZy
b21CdWZmZXIoUmVmPEFycmF5QnVmZmVyPiYmLCBTdHJpbmcgbWltZVR5cGUsIGxvbmcgbG9uZyBl
eHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IFVSTCYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBP
cHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVGcm9t
QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFN0cmlu
ZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgVVJMJiwg
SW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwogCiAg
ICAgT3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPiBtX2JhY2tpbmdTdG9yZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKaW5kZXggMWUyNjAzM2YyMzgwMDgzYTMx
NmE1ZDQ2YmIxMWIxZDc0MmE4ZmY1Yi4uOGE2MDYwMzI2ZDc3MDVmZTNiZjAxOGRiMGY5ZDZiMTI3
NGIwYmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtNzMs
MTQgKzczLDE0IEBAIFdlYWtQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IERldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzOjp0YWtlUGxhY2Vob2xkZXJDYW52YXMoKQogICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdl
KG1fcGxhY2Vob2xkZXJDYW52YXMsIG51bGxwdHIpOwogfQogCi1SZWY8T2Zmc2NyZWVuQ2FudmFz
PiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorUmVmPE9mZnNjcmVlbkNhbnZhcz4g
T2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMoY29udGV4dCwgd2lkdGgsIGhlaWdo
dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9mZnNjcmVlbkNhbnZhcyhzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKLVJlZjxPZmZzY3JlZW5DYW52YXM+
IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4mJiBkZXRhY2hlZENhbnZh
cykKK1JlZjxPZmZzY3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxE
ZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4mJiBkZXRhY2hlZENhbnZhcykKIHsKLSAgICBSZWY8T2Zm
c2NyZWVuQ2FudmFzPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgT2Zmc2NyZWVuQ2FudmFzKGNvbnRl
eHQsIGRldGFjaGVkQ2FudmFzLT5zaXplKCkud2lkdGgoKSwgZGV0YWNoZWRDYW52YXMtPnNpemUo
KS5oZWlnaHQoKSkpOworICAgIFJlZjxPZmZzY3JlZW5DYW52YXM+IGNsb25lID0gYWRvcHRSZWYo
Km5ldyBPZmZzY3JlZW5DYW52YXMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZGV0YWNoZWRDYW52
YXMtPnNpemUoKS53aWR0aCgpLCBkZXRhY2hlZENhbnZhcy0+c2l6ZSgpLmhlaWdodCgpKSk7CiAg
ICAgY2xvbmUtPnNldEltYWdlQnVmZmVyKGRldGFjaGVkQ2FudmFzLT50YWtlSW1hZ2VCdWZmZXIo
KSk7CiAgICAgaWYgKCFkZXRhY2hlZENhbnZhcy0+b3JpZ2luQ2xlYW4oKSkKICAgICAgICAgY2xv
bmUtPnNldE9yaWdpblRhaW50ZWQoKTsKQEAgLTEwMCwxNiArMTAwLDE2IEBAIFJlZjxPZmZzY3Jl
ZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIHN0CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8T2Zmc2NyZWVuQ2FudmFz
PiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzKQorUmVmPE9mZnNjcmVlbkNhbnZhcz4gT2Zmc2Ny
ZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcykKIHsKLSAgICBhdXRvIG9mZnNjcmVl
biA9IGFkb3B0UmVmKCpuZXcgT2Zmc2NyZWVuQ2FudmFzKGNvbnRleHQsIGNhbnZhcy53aWR0aCgp
LCBjYW52YXMuaGVpZ2h0KCkpKTsKKyAgICBhdXRvIG9mZnNjcmVlbiA9IGFkb3B0UmVmKCpuZXcg
T2Zmc2NyZWVuQ2FudmFzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNhbnZhcy53aWR0aCgpLCBj
YW52YXMuaGVpZ2h0KCkpKTsKICAgICBvZmZzY3JlZW4tPnNldFBsYWNlaG9sZGVyQ2FudmFzKGNh
bnZhcyk7CiAgICAgcmV0dXJuIG9mZnNjcmVlbjsKIH0KIAotT2Zmc2NyZWVuQ2FudmFzOjpPZmZz
Y3JlZW5DYW52YXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgd2lk
dGgsIHVuc2lnbmVkIGhlaWdodCkKK09mZnNjcmVlbkNhbnZhczo6T2Zmc2NyZWVuQ2FudmFzKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHVuc2lnbmVkIHdp
ZHRoLCB1bnNpZ25lZCBoZWlnaHQpCiAgICAgOiBDYW52YXNCYXNlKEludFNpemUod2lkdGgsIGhl
aWdodCkpCi0gICAgLCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmY29udGV4dCkKKyAgICAs
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewog
fQogCkBAIC0xODAsMTMgKzE4MCwxMyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlQ29u
dGV4dFdlYkdMKFJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBXZWJHTAogewogICAg
IEFTU0VSVCghbV9jb250ZXh0KTsKIAotICAgIGF1dG8gY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7Ci0g
ICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPigqY29udGV4dCk7CisgICAgYXV0byBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0gdGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmIChzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAgICAgICAgV29ya2VyR2xv
YmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICAgICAgaWYgKCFzaG91bGRFbmFibGVXZWJH
TCh3b3JrZXJHbG9iYWxTY29wZS53ZWJHTEVuYWJsZWQoKSwgd29ya2VyR2xvYmFsU2NvcGUuYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
fSBlbHNlIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgYXV0byYgc2V0dGlu
Z3MgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLnNldHRpbmdzKCk7CisgICAgfSBlbHNl
IGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpIHsKKyAgICAgICAgYXV0
byYgc2V0dGluZ3MgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
LnNldHRpbmdzKCk7CiAgICAgICAgIGlmICghc2hvdWxkRW5hYmxlV2ViR0woc2V0dGluZ3Mud2Vi
R0xFbmFibGVkKCksIHNldHRpbmdzLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkpKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZQpAQCAtMjU1LDggKzI1NSwxMCBAQCBFeGNl
cHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9J
bWFnZUJpdG1hcCgpCiAgICAgICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAgICAg
ICAgICByZXR1cm4geyBSZWZQdHI8SW1hZ2VCaXRtYXA+IHsgbnVsbHB0ciB9IH07CiAKLSAgICAg
ICAgaWYgKCFtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7IElt
YWdlQml0bWFwOjpjcmVhdGUoSW1hZ2VCaXRtYXBCYWNraW5nKEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSkpIH07CisgICAgICAgIGlmICgh
bV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZSgqY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2l6
ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKKyAgICAgICAgICAgIHJldHVybiB7
IEltYWdlQml0bWFwOjpjcmVhdGUoSW1hZ2VCaXRtYXBCYWNraW5nKFdURk1vdmUoYnVmZmVyKSkp
IH07CisgICAgICAgIH0KIAogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VJbWFnZUJ1ZmZlcigp
OwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTI3Myw3ICsyNzUsNyBAQCBFeGNlcHRpb25PcjxS
ZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1h
cCgpCiAgICAgICAgIC8vIHN0b3JlIGZyb20gdGhpcyBjYW52YXMgKG9yIGl0cyBjb250ZXh0KSwg
YnV0IGZvciBub3cgd2UnbGwganVzdAogICAgICAgICAvLyBjcmVhdGUgYSBuZXcgYml0bWFwIGFu
ZCBwYWludCBpbnRvIGl0LgogCi0gICAgICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBJbWFnZUJpdG1h
cDo6Y3JlYXRlKHNpemUoKSk7CisgICAgICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBJbWFnZUJpdG1h
cDo6Y3JlYXRlKCpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzaXplKCkpOwog
ICAgICAgICBpZiAoIWltYWdlQml0bWFwLT5idWZmZXIoKSkKICAgICAgICAgICAgIHJldHVybiB7
IFJlZlB0cjxJbWFnZUJpdG1hcD4geyBudWxscHRyIH0gfTsKIApAQCAtMzY5LDExICszNzEsMTEg
QEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OmNsZWFyQ29waWVkSW1hZ2UoKSBjb25zdAogCiBTZWN1
cml0eU9yaWdpbiogT2Zmc2NyZWVuQ2FudmFzOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7Ci0g
ICAgYXV0byYgY29udGV4dCA9ICpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwot
ICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgIHJldHVybiAm
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnRvcE9yaWdpbigpOworICAgIGF1
dG8mIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSAqY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpKQorICAgICAgICByZXR1cm4gJmRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KS50b3BPcmlnaW4oKTsKIAotICAgIHJldHVybiAmZG93bmNhc3Q8
RG9jdW1lbnQ+KGNvbnRleHQpLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgcmV0dXJuICZkb3duY2Fz
dDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuc2VjdXJpdHlPcmlnaW4oKTsKIH0K
IAogYm9vbCBPZmZzY3JlZW5DYW52YXM6OmNhbkRldGFjaCgpIGNvbnN0CkBAIC00NTcsMTEgKzQ1
OSwxMSBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6c2NoZWR1bGVDb21taXRUb1BsYWNlaG9sZGVy
Q2FudmFzKCkKIAogQ1NTVmFsdWVQb29sJiBPZmZzY3JlZW5DYW52YXM6OmNzc1ZhbHVlUG9vbCgp
CiB7Ci0gICAgYXV0byogY29udGV4dCA9IGNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgaWYgKGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkKLSAgICAgICAgcmV0
dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCkuY3NzVmFsdWVQb29sKCk7
CisgICAgYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGNhbnZhc0Jhc2VTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CisgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2Vy
R2xvYmFsU2NvcGUoKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuY3NzVmFsdWVQb29sKCk7CiAKLSAgICBBU1NFUlQo
Y29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+aXNEb2N1bWVudCgpKTsKICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsK
IH0KIApAQCAtNDcyLDcgKzQ3NCw3IEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGVJbWFn
ZUJ1ZmZlcigpIGNvbnN0CiAgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgc2V0SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCks
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpKTsKKyAgICBzZXRJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKCpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzaXpl
KCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBPZmZzY3JlZW5DYW52YXM6OnRha2VJbWFnZUJ1ZmZlcigpIGNvbnN0CkBA
IC00ODgsNyArNDkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBPZmZzY3JlZW5D
YW52YXM6OnRha2VJbWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgY2xlYXJDb3BpZWRJbWFnZSgpOwotICAgIHJldHVybiBzZXRJbWFnZUJ1ZmZlcihtX2Rl
dGFjaGVkID8gbnVsbHB0ciA6IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkKSk7CisgICAgcmV0dXJuIHNldEltYWdlQnVmZmVyKG1fZGV0YWNo
ZWQgPyBudWxscHRyIDogSW1hZ2VCdWZmZXI6OmNyZWF0ZSgqY2FudmFzQmFzZVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSk7CiB9
CiAKIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpyZXNldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKaW5kZXggOTI1OTMzZTg2M2I0NTlhYmJm
MThkNjRlMjVlZTA3MTI0YzM4NjA0Zi4uMWQ2OGI5NmQ3ZGQ4MjI3MzllZGNmZGQ4Y2U0NTg3MWY0
ZjUwZTE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmNwcApAQCAtMjgsMTYgKzI4LDI5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSW1hZ2VCdWZmZXIuaCIKIAorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJJ
bWFnZURhdGEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRp
YyBjb25zdCBmbG9hdCBNYXhDbGFtcGVkTGVuZ3RoID0gNDA5NjsKIHN0YXRpYyBjb25zdCBmbG9h
dCBNYXhDbGFtcGVkQXJlYSA9IE1heENsYW1wZWRMZW5ndGggKiBNYXhDbGFtcGVkTGVuZ3RoOwog
CitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIGF1dG8gZG9jdW1lbnQgPSBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LmlzRG9jdW1lbnQoKSA/ICZkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkgOiBudWxscHRyOworICAgIGF1dG8gaG9zdFdpbmRvdyA9IChkb2N1
bWVudCAmJiBkb2N1bWVudC0+dmlldygpICYmIGRvY3VtZW50LT52aWV3KCktPnJvb3QoKSkgPyBk
b2N1bWVudC0+dmlldygpLT5yb290KCktPmhvc3RXaW5kb3coKSA6IG51bGxwdHI7CisKKyAgICBh
dXRvIGFjY2VsZXJhdGUgPSByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJh
dGVkID8gU2hvdWxkQWNjZWxlcmF0ZTo6WWVzIDogU2hvdWxkQWNjZWxlcmF0ZTo6Tm87CisgICAg
YXV0byB1c2VEaXNwbGF5TGlzdCA9IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKKworICAgIHJl
dHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGFjY2VsZXJhdGUsIHVzZURpc3BsYXlMaXN0
LCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
aG9zdFdpbmRvdyk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFNob3VsZEFjY2VsZXJhdGUgc2hvdWxk
QWNjZWxlcmF0ZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Qgc2hvdWxkVXNlRGlzcGxheUxpc3QsIFJl
bmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGQxNDY0OTJjNGE4ZGY5MzVjYWY5
NGI5ZmI5NTU5MDlhYWQxY2JhZjAuLjYxMTdhNzJiZTI2ZjlkN2RkMGU4MDk0NjE2NzM2MmI2MGM5
YTBkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaApAQCAtMzYsOSArMzYsMTIgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERy
YXdpbmdDb250ZXh0OwogfQogCitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCiBjbGFz
cyBJbWFnZUJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50
ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJlLgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRmxvYXRTaXpl
JiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9
IENvbG9yU3BhY2U6OlNSR0IpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBTaG91bGRBY2NlbGVy
YXRlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0IsIGNvbnN0IEhvc3RX
aW5kb3cqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpTUkdC
LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCBlODQ5MTY2NDUxNDU5NjI4N2VmMmM3OGY5
MDc2ZTFkNDM4MjE5MWYyLi4zZjM0MmJjN2JjMDZkMjBhYjFlYzdiZjRiMTQxODVmMDZhN2I4OTFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC05MSw3ICs5MSw3IEBAIHByb3RlY3RlZDoKICAgICB7
CiAgICAgICAgIC8vIFRoZSBtYXRoIGluc2lkZSBJbWFnZURhdGE6OmNyZWF0ZSgpIGRvZXNuJ3Qg
YWdyZWUgd2l0aCB0aGUgbWF0aCBpbnNpZGUgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRJbWFnZURh
dGEoKSBhYm91dCBob3cgbV9yZXNvbHV0aW9uU2NhbGUgaW50ZXJhY3RzIHdpdGggdGhlIGRhdGEg
aW4gdGhlIEltYWdlQnVmZmVyLgogICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgcHV0SW1hZ2VE
YXRhKCkgaXMgb25seSBjYWxsZWQgd2hlbiBtX3Jlc29sdXRpb25TY2FsZSA9PSAxLgotICAgICAg
ICBBU1NFUlQobV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSA9PSAxKTsKKyAgICAgICAgQVNT
RVJUX0lNUExJRVMobV9iYWNrZW5kLCBtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpID09IDEp
OwogICAgICAgICBtX2RyYXdpbmdDb250ZXh0LnJlY29yZGVyKCkucHV0SW1hZ2VEYXRhKGlucHV0
Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcAppbmRl
eCA0ZTliNzYyZDhlMGNmNWZmZjg3ZjFjNDI4NDVhZjAwNGE4ZGExZGFiLi40N2Y3YTAxNGNmNDBk
MjRiNDAxNzE4ZDQ4ZDEzZTVkNDg0Y2MyYjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlci5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlcjo6flJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoKQogICAg
IC8vIFJlbGVhc2UgdGhlIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuCiAgICAgaWYgKCFtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCiAgICAgICAgIHJldHVybjsKKyAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQtPnJlbGVhc2VSZW1vdGVSZXNvdXJjZShtX3JlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CiAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShtX3JlbW90ZVJlc291
cmNlSWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411408</attachid>
            <date>2020-10-14 22:52:59 -0700</date>
            <delta_ts>2020-10-15 00:55:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217735-20201014225258.patch</filename>
            <type>text/plain</type>
            <size>31127</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRjYTU2ZjYwYTRjYTVm
ZmMzN2M3ZWRkYmI3Zjk1OTkzYTgzYmQzNC4uNWMzNTQxMDlmMTQwMGMzYTI5Zjk1ODIyYzYxMjY4
NmQ2M2I5NGNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEwLTE0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXSBFbmFibGUgSW1hZ2VCaXRtYXAgYW5kIE9mZnNjcmVlbkNhbnZhcyBkcmF3aW5nIHRv
IGdvIHRocm91Z2ggR1BVCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTc3MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBuZXcgSW1hZ2VCdWZmZXI6OmNyZWF0ZSgpIG1ldGhvZCB3aGljaCB0YWtl
cyBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8g
Z2V0IHRoZSBIb3N0V2luZG93LiBJZiB0aGVyZSBpcyBIb3N0V2luZG93IGFzc29jaWF0ZWQKKyAg
ICAgICAgd2l0aCB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdGhlIGNhbGwgd2lsbCBiZSBk
ZWxlZ2F0ZWQgdG8gV2ViQ2hyb21lQ2xpZW50LgorICAgICAgICBUaGlzIHdpbGwgY3JlYXRlIGEg
UmVtb3RlSW1hZ2VCdWZmZXIgaW4gV2ViIFByb2Nlc3MgYW5kIGEgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eQorICAgICAgICBpbiB0aGUgR1BVIFByb2Nlc3MuIE5vIG90aGVyIGNoYW5nZXMgaW4gbmVl
ZGVkLgorCisgICAgICAgICJydW4td2Via2l0LXRlc3RzIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvIC0tdXNlLWdwdS1wcm9jZXNzIgorICAgICAgICByZXN1bHRlZCBpbiBjb3VwbGUg
b2YgbGF5b3V0IHRlc3QgZmFpbHVyZXMgd2hpY2ggY2FuIGJlIGFkZHJlc3NlZCBsYXRlci4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAg
KiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OnJlc29sdmVXaXRoQmxhbmtJ
bWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcik6Cisg
ICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5oOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2Fu
dmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6T2Zmc2NyZWVuQ2FudmFzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlQ29udGV4dFdlYkdMKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpjc3NWYWx1ZVBvb2wpOgorICAgICAg
ICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnRha2VJbWFnZUJ1ZmZlciBjb25zdCk6
CisgICAgICAgIFJlbmFtZSBhbGwgdGhlIHBhcmFtZXRlcnMgd2hvc2UgbmFtZXMgYXJlIGNvbnRl
eHQgYW5kIHdob3NlIHR5cGVzIGlzCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgdG8g
YmUgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB0byBub3QgY29uZnVzZSBpdAorICAgICAgICB3aXRo
IEdyYXBoaWNzQ29udGV4dCBvciBDYW52YXNSZW5kZXJpbmdDb250ZXh0LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaDoKKwogMjAyMC0xMC0xMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc106IFJlcGxhY2UgIkltYWdlQnVmZmVySWRl
bnRpZmllciIgYnkgYSBnZW5lcmljIGlkZW50aWZpZXIgbmFtZWQgIlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggZWM0MDU5MjY2ODBmODk0NDUwZWM4YjJiMWRlM2U2YjJjNTAw
MjA0OS4uNmRkMzY0NzkzMDU3NzI5OGRhNjUwZjY4ZWI5YjVkYzZjYzk2NGFiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMSBAQAorMjAyMC0xMC0xNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gRW5hYmxlIEltYWdlQml0
bWFwIGFuZCBPZmZzY3JlZW5DYW52YXMgZHJhd2luZyB0byBnbyB0aHJvdWdoIEdQVQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICBwdXRJbWFnZURhdGEoKSBt
aWdodCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgY3JlYXRpbmcgdGhlIEltYWdlQnVmZmVy
CisgICAgICAgIGFuZCBiZWZvcmUgcmVjZWl2aW5nIHRoZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LkNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZAorICAgICAgICBtZXNzYWdlLiBXZSBuZWVkIHRvIGNv
bnNpZGVyIGZvciB0aGlzIGNhc2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6flJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXIpOgorICAgICAgICBUaGlzIGlzIGEgYnVnLiBDdXJyZW50bHkgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKCkKKyAgICAgICAgaXMgbmV2ZXIgY2Fs
bGVkLiBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgZW50cnkgZnJvbSB0aGUgSGFzaE1hcCB3aGVuIGl0
IGlzCisgICAgICAgIGJlaW5nIGRlc3Ryb3llZC4KKwogMjAyMC0xMC0xMiAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc106
IFJlcGxhY2UgIkltYWdlQnVmZmVySWRlbnRpZmllciIgYnkgYSBnZW5lcmljIGlkZW50aWZpZXIg
bmFtZWQgIlJlbW90ZVJlc291cmNlSWRlbnRpZmllciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGY4ZTFlNTc0NWE4
ZGRjMWUxMzNlOTYyZGY0ZDk3ZDE3YjA1ZGU2YzIuLjFiZTI3ZjI1OTRlNDAwMDBlYWY0ZThkY2Q0
OGRhZWYxN2ZkOWYzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjk4OCw3ICsyOTg4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRv
IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGxvZ2ljYWxTaXplKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJv
bUV4ZWNTdGF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QpLCBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlKTsKICAgICAgICAgaWYgKCFidWZm
ZXIpIHsKICAgICAgICAgICAgIGZhaWwoKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCmluZGV4IDQzOWI2YTlkN2Q4MTIwZDkxZTFl
MWFmYzU2ZDFhYWY2YmUwYjQ5ZTQuLmYwMWQ4NDdkNzI1OGY0YjQwY2UxYzhlNzRjZGY4ZTk4NGRm
ZTA1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCkBAIC02Nyw5ICs2Nyw5IEBA
IHN0YXRpYyBSZW5kZXJpbmdNb2RlIGJ1ZmZlclJlbmRlcmluZ01vZGUgPSBSZW5kZXJpbmdNb2Rl
OjpBY2NlbGVyYXRlZDsKIHN0YXRpYyBSZW5kZXJpbmdNb2RlIGJ1ZmZlclJlbmRlcmluZ01vZGUg
PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogI2VuZGlmCiAKLVJlZjxJbWFnZUJpdG1h
cD4gSW1hZ2VCaXRtYXA6OmNyZWF0ZShJbnRTaXplIHNpemUpCitSZWY8SW1hZ2VCaXRtYXA+IElt
YWdlQml0bWFwOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlKHsgSW1h
Z2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSwg
YnVmZmVyUmVuZGVyaW5nTW9kZSkgfSk7CisgICAgcmV0dXJuIGNyZWF0ZSh7IEltYWdlQnVmZmVy
OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9k
ZSkgfSk7CiB9CiAKIFJlZjxJbWFnZUJpdG1hcD4gSW1hZ2VCaXRtYXA6OmNyZWF0ZShPcHRpb25h
bDxJbWFnZUJpdG1hcEJhY2tpbmc+JiYgYmFja2luZ1N0b3JlKQpAQCAtMjI2LDEyICsyMjYsMTIg
QEAgc3RhdGljIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbkZv
clByZW11bHRpcGx5QWxwaGEoSW1hZ2VCaXQKICAgICByZXR1cm4gQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZDsKIH0KIAotdm9pZCBJbWFnZUJpdG1hcDo6cmVzb2x2ZVdpdGhC
bGFua0ltYWdlQnVmZmVyKGJvb2wgb3JpZ2luQ2xlYW4sIFByb21pc2UmJiBwcm9taXNlKQordm9p
ZCBJbWFnZUJpdG1hcDo6cmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGJvb2wgb3JpZ2luQ2xlYW4sIFByb21p
c2UmJiBwcm9taXNlKQogewogICAgIC8vIFNvdXJjZSByZWN0YW5nbGUgbGlrZWx5IGRvZXNuJ3Qg
aW50ZXJzZWN0IHRoZSBzb3VyY2UgaW1hZ2UuCiAgICAgLy8gQmVoYXZpb3IgaXNuJ3Qgd2VsbCBz
cGVjaWZpZWQsIGJ1dCBXUFQgdGVzdHMgZXhwZWN0IG5vIFByb21pc2UgcmVqZWN0aW9uIChhbmQg
b2YgY291cnNlIG5vIGNyYXNoZXMpLgogICAgIC8vIFJlc29sdmUgUHJvbWlzZSB3aXRoIGEgYmxh
bmsgMXgxIEltYWdlQml0bWFwLgotICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoRmxvYXRTaXplKDEsIDEpLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGJp
dG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEZs
b2F0U2l6ZSgxLCAxKSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CiAKICAgICAvLyA5LiBJZiB0aGUg
b3JpZ2luIG9mIGltYWdlJ3MgaW1hZ2UgaXMgbm90IHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgb3Jp
Z2luIHNwZWNpZmllZCBieSB0aGUKICAgICAvLyAgICBlbnRyeSBzZXR0aW5ncyBvYmplY3QsIHRo
ZW4gc2V0IHRoZSBvcmlnaW4tY2xlYW4gZmxhZyBvZiB0aGUgSW1hZ2VCaXRtYXAgb2JqZWN0J3MK
QEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpyZXNvbHZlV2l0aEJsYW5rSW1h
Z2VCdWZmZXIoYm9vbCBvcmlnaW5DbGVhbiwgUHJvbWlzZSYmIHByb21pcwogCiAvLyAxMy4gUmV0
dXJuIG91dHB1dC4KIAotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiBpbWFnZUVsZW1lbnQsIElt
YWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdl
Qml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21p
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRy
PEhUTUxJbWFnZUVsZW1lbnQ+JiBpbWFnZUVsZW1lbnQsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9w
dGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJv
bWlzZSkKIHsKICAgICAvLyAyLiBJZiBpbWFnZSBpcyBub3QgY29tcGxldGVseSBhdmFpbGFibGUs
IHRoZW4gcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoCiAgICAgLy8gYW4gIkludmFsaWRT
dGF0ZUVycm9yIiBET01FeGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgpAQCAtMzUwLDcg
KzM1MCw4IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50CiAgICAgfQogCiAgICAgYXV0byBvdXRw
dXRTaXplID0gb3V0cHV0U2l6ZUZvclNvdXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUucmV0
dXJuVmFsdWUoKSwgb3B0aW9ucyk7Ci0gICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShGbG9hdFNpemUob3V0cHV0U2l6ZS53aWR0aCgpLCBvdXRwdXRTaXplLmhlaWdodCgp
KSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBvdXRwdXRTaXplLCBidWZmZXJSZW5k
ZXJpbmdNb2RlKTsKKwogICAgIGF1dG8gaW1hZ2VGb3JSZW5kZXIgPSBjYWNoZWRJbWFnZS0+aW1h
Z2VGb3JSZW5kZXJlcihpbWFnZUVsZW1lbnQtPnJlbmRlcmVyKCkpOwogICAgIGlmICghaW1hZ2VG
b3JSZW5kZXIpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJD
YW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20gaW1hZ2UgdGhhdCBjYW4ndCBiZSByZW5kZXJl
ZCIpOwpAQCAtMzU4LDcgKzM1OSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50CiAgICAgfQog
CiAgICAgaWYgKCFiaXRtYXBEYXRhKSB7Ci0gICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1
ZmZlcighdGFpbnRzT3JpZ2luKCpjYWNoZWRJbWFnZSksIFdURk1vdmUocHJvbWlzZSkpOworICAg
ICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
IXRhaW50c09yaWdpbigqY2FjaGVkSW1hZ2UpLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMzg0LDE5ICszODUsMTkgQEAgdm9pZCBJbWFnZUJpdG1hcDo6
Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVs
ZW1lbnQKICAgICBwcm9taXNlLnJlc29sdmUoV1RGTW92ZShpbWFnZUJpdG1hcCkpOwogfQogCi12
b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4mIGNhbnZhc0VsZW1lbnQsIEltYWdlQml0
bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFw
OjpQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEhUTUxD
YW52YXNFbGVtZW50PiYgY2FudmFzRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9u
cywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNl
KQogewotICAgIGNyZWF0ZVByb21pc2UoY29udGV4dCwgKmNhbnZhc0VsZW1lbnQsIFdURk1vdmUo
b3B0aW9ucyksIFdURk1vdmUocmVjdCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIGNyZWF0ZVBy
b21pc2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgKmNhbnZhc0VsZW1lbnQsIFdURk1vdmUob3B0
aW9ucyksIFdURk1vdmUocmVjdCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiAjaWYgRU5BQkxF
KE9GRlNDUkVFTl9DQU5WQVMpCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiBjYW52
YXNFbGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0
PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiBjYW52YXNFbGVtZW50LCBJbWFnZUJpdG1h
cE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6
UHJvbWlzZSYmIHByb21pc2UpCiB7Ci0gICAgY3JlYXRlUHJvbWlzZShjb250ZXh0LCAqY2FudmFz
RWxlbWVudCwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWN0KSwgV1RGTW92ZShwcm9taXNl
KSk7CisgICAgY3JlYXRlUHJvbWlzZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCAqY2FudmFzRWxl
bWVudCwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWN0KSwgV1RGTW92ZShwcm9taXNlKSk7
CiB9CiAjZW5kaWYKIAotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgQ2FudmFzQmFzZSYgY2FudmFzLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBv
cHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHBy
b21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIENhbnZhc0Jhc2UmIGNhbnZhcywgSW1hZ2VC
aXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRt
YXA6OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIDIuIElmIHRoZSBjYW52YXMgZWxlbWVu
dCdzIGJpdG1hcCBoYXMgZWl0aGVyIGEgaG9yaXpvbnRhbCBkaW1lbnNpb24gb3IgYSB2ZXJ0aWNh
bAogICAgIC8vICAgIGRpbWVuc2lvbiBlcXVhbCB0byB6ZXJvLCB0aGVuIHJldHVybiBhIHByb21p
c2UgcmVqZWN0ZWQgd2l0aCBhbiAiSW52YWxpZFN0YXRlRXJyb3IiCkBAIC00MTcsNyArNDE4LDcg
QEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgQ2FudmFzQmFzZSYgY2FudmFzLCBJbWEKICAgICB9CiAKICAgICBhdXRvIG91dHB1dFNpemUg
PSBvdXRwdXRTaXplRm9yU291cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZS5yZXR1cm5WYWx1
ZSgpLCBvcHRpb25zKTsKLSAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KEZsb2F0U2l6ZShvdXRwdXRTaXplLndpZHRoKCksIG91dHB1dFNpemUuaGVpZ2h0KCkpLCBidWZm
ZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01v
ZGUpOwogCiAgICAgYXV0byBpbWFnZUZvclJlbmRlciA9IGNhbnZhcy5jb3BpZWRJbWFnZSgpOwog
ICAgIGlmICghaW1hZ2VGb3JSZW5kZXIpIHsKQEAgLTQyNiw3ICs0MjcsNyBAQCB2b2lkIEltYWdl
Qml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBDYW52YXNCYXNl
JiBjYW52YXMsIEltYQogICAgIH0KIAogICAgIGlmICghYml0bWFwRGF0YSkgewotICAgICAgICBy
ZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoY2FudmFzLm9yaWdpbkNsZWFuKCksIFdURk1vdmUo
cHJvbWlzZSkpOworICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgY2FudmFzLm9yaWdpbkNsZWFuKCksIFdURk1vdmUocHJvbWlzZSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00ODksNyArNDkwLDcgQEAgdm9pZCBJbWFnZUJp
dG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LAogICAgIGF1dG8gb3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0
YW5nbGUoc291cmNlUmVjdGFuZ2xlLCBvcHRpb25zKTsKICAgICBhdXRvIGJpdG1hcERhdGEgPSB2
aWRlby0+Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcob3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5n
TW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA/IFNob3VsZEFjY2VsZXJhdGU6Olll
cyA6IFNob3VsZEFjY2VsZXJhdGU6Ok5vKTsKICAgICBpZiAoIWJpdG1hcERhdGEpIHsKLSAgICAg
ICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKCF0YWludHNPcmlnaW4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigpLCAqdmlkZW8pLCBXVEZNb3ZlKHByb21pc2UpKTsK
KyAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsICF0YWludHNPcmlnaW4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigp
LCAqdmlkZW8pLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNTM0LDcgKzUzNSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxUeXBlZE9NQ1NTSW1hZ2VWCiB9CiAjZW5kaWYKIAot
dm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
UmVmUHRyPEltYWdlQml0bWFwPiYgZXhpc3RpbmdJbWFnZUJpdG1hcCwgSW1hZ2VCaXRtYXBPcHRp
b25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21p
c2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SW1hZ2VCaXRtYXA+
JiBleGlzdGluZ0ltYWdlQml0bWFwLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRp
b25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCiB7CiAg
ICAgLy8gMi4gSWYgaW1hZ2UncyBbW0RldGFjaGVkXV0gaW50ZXJuYWwgc2xvdCB2YWx1ZSBpcyB0
cnVlLCByZXR1cm4gYSBwcm9taXNlCiAgICAgLy8gICAgcmVqZWN0ZWQgd2l0aCBhbiAiSW52YWxp
ZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC01NTIs
MTAgKzU1MywxMCBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VCaXRtYXA+JiBleAogICAgIH0KIAogICAgIGF1dG8g
b3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0YW5nbGUoc291cmNlUmVjdGFuZ2xl
LnJldHVyblZhbHVlKCksIG9wdGlvbnMpOwotICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoRmxvYXRTaXplKG91dHB1dFNpemUud2lkdGgoKSwgb3V0cHV0U2l6ZS5oZWln
aHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOworICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgb3V0cHV0U2l6ZSwgYnVmZmVy
UmVuZGVyaW5nTW9kZSk7CiAKICAgICBpZiAoIWJpdG1hcERhdGEpIHsKLSAgICAgICAgcmVzb2x2
ZVdpdGhCbGFua0ltYWdlQnVmZmVyKGV4aXN0aW5nSW1hZ2VCaXRtYXAtPm9yaWdpbkNsZWFuKCks
IFdURk1vdmUocHJvbWlzZSkpOworICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZXhpc3RpbmdJbWFnZUJpdG1hcC0+b3JpZ2luQ2xlYW4o
KSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY5OCw3
ICs2OTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIobV9hcnJheUJ1ZmZlclRvUHJvY2Vz
cy5yZWxlYXNlTm9uTnVsbCgpLCBtX2Jsb2ItPnR5cGUoKSwgbV9ibG9iLT5zaXplKCksIG1fYmxv
YkxvYWRlci51cmwoKSwgV1RGTW92ZShtX29wdGlvbnMpLCBXVEZNb3ZlKG1fcmVjdCksIFdURk1v
dmUobV9wcm9taXNlKSk7CisgICAgICAgIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fYXJyYXlCdWZmZXJUb1Byb2Nlc3MucmVsZWFzZU5v
bk51bGwoKSwgbV9ibG9iLT50eXBlKCksIG1fYmxvYi0+c2l6ZSgpLCBtX2Jsb2JMb2FkZXIudXJs
KCksIFdURk1vdmUobV9vcHRpb25zKSwgV1RGTW92ZShtX3JlY3QpLCBXVEZNb3ZlKG1fcHJvbWlz
ZSkpOwogICAgIH0KIAogICAgIEZpbGVSZWFkZXJMb2FkZXIgbV9ibG9iTG9hZGVyOwpAQCAtNzEw
LDE0ICs3MTEsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9hcnJheUJ1
ZmZlclRvUHJvY2VzczsKIH07CiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIo
Ci0gICAgUmVmPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAotICAgIFN0cmluZyBtaW1lVHlw
ZSwKLSAgICBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLAotICAgIGNvbnN0IFVSTCYg
c291cmNlVXJsLAotICAgIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsCi0gICAgT3B0aW9u
YWw8SW50UmVjdD4gcmVjdCwKLSAgICBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2
b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwg
U3RyaW5nIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBV
UkwmIHNvdXJjZVVSTCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50
UmVjdD4gcmVjdCwgUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKCFhcnJheUJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9y
LCAiQ2Fubm90IGNyZWF0ZSBhbiBJbWFnZUJpdG1hcCBmcm9tIGFuIGVtcHR5IGJ1ZmZlciIpOwpA
QCAtNzI1LDcgKzcxOSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoCiAg
ICAgfQogCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5i
eXRlTGVuZ3RoKCkpOwotICAgIGF1dG8gb2JzZXJ2ZXIgPSBJbWFnZUJpdG1hcEltYWdlT2JzZXJ2
ZXI6OmNyZWF0ZShtaW1lVHlwZSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBzb3VyY2VVcmwpOwor
ICAgIGF1dG8gb2JzZXJ2ZXIgPSBJbWFnZUJpdG1hcEltYWdlT2JzZXJ2ZXI6OmNyZWF0ZShtaW1l
VHlwZSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBzb3VyY2VVUkwpOwogICAgIGF1dG8gaW1hZ2Ug
PSBJbWFnZTo6Y3JlYXRlKG9ic2VydmVyLmdldCgpKTsKICAgICBpZiAoIWltYWdlKSB7CiAgICAg
ICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiVGhlIHR5cGUgb2YgdGhlIGFy
Z3VtZW50IHRvIGNyZWF0ZUltYWdlQml0bWFwIGlzIG5vdCBzdXBwb3J0ZWQiKTsKQEAgLTc0NSw3
ICs3MzksNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKAogICAgIH0KIAog
ICAgIGF1dG8gb3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0YW5nbGUoc291cmNl
UmVjdGFuZ2xlLnJldHVyblZhbHVlKCksIG9wdGlvbnMpOwotICAgIGF1dG8gYml0bWFwRGF0YSA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKG91dHB1dFNpemUud2lkdGgoKSwgb3V0cHV0
U2l6ZS5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOworICAgIGF1dG8gYml0bWFwRGF0
YSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgb3V0cHV0U2l6
ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCFiaXRtYXBEYXRhKSB7CiAgICAgICAg
IHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBhbiBpbWFn
ZSBidWZmZXIgZnJvbSB0aGUgYXJndW1lbnQgdG8gY3JlYXRlSW1hZ2VCaXRtYXAiKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNzY5LDcgKzc2Myw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVBy
b21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAg
ICBQZW5kaW5nSW1hZ2VCaXRtYXA6OmZldGNoKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURk1v
dmUoYmxvYiksIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUocmVjdCksIFdURk1vdmUocHJvbWlz
ZSkpOwogfQogCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VEYXRhPiYgaW1hZ2VEYXRhLCBJbWFnZUJpdG1hcE9wdGlv
bnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlz
ZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZlB0cjxJbWFnZURhdGE+JiBp
bWFnZURhdGEsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+
IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICAvLyA2LjEuIExl
dCBidWZmZXIgYmUgaW1hZ2UncyBkYXRhIGF0dHJpYnV0ZSB2YWx1ZSdzIFtbVmlld2VkQXJyYXlC
dWZmZXJdXQogICAgIC8vICAgICAgaW50ZXJuYWwgc2xvdC4KQEAgLTc4OSwxMCArNzgzLDEwIEBA
IHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFJlZlB0cjxJbWFnZURhdGE+JiBpbWFnCiAgICAgfQogCiAgICAgYXV0byBvdXRwdXRTaXplID0g
b3V0cHV0U2l6ZUZvclNvdXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUucmV0dXJuVmFsdWUo
KSwgb3B0aW9ucyk7Ci0gICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShG
bG9hdFNpemUob3V0cHV0U2l6ZS53aWR0aCgpLCBvdXRwdXRTaXplLmhlaWdodCgpKSwgYnVmZmVy
UmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2Rl
KTsKIAogICAgIGlmICghYml0bWFwRGF0YSkgewotICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1h
Z2VCdWZmZXIodHJ1ZSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIHJlc29sdmVXaXRoQmxh
bmtJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0cnVlLCBXVEZNb3ZlKHByb21p
c2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODExLDcgKzgwNSw3IEBAIHZvaWQg
SW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0
cjxJbWFnZURhdGE+JiBpbWFnCiAKICAgICAvLyA2LjMuIFNldCBpbWFnZUJpdG1hcCdzIGJpdG1h
cCBkYXRhIHRvIGltYWdlJ3MgaW1hZ2UgZGF0YSwgY3JvcHBlZCB0byB0aGUKICAgICAvLyAgICAg
IHNvdXJjZSByZWN0YW5nbGUgd2l0aCBmb3JtYXR0aW5nLgotICAgIGF1dG8gdGVtcEJpdG1hcERh
dGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShpbWFnZURhdGEtPndpZHRoKCksIGlt
YWdlRGF0YS0+aGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIHRlbXBC
aXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBp
bWFnZURhdGEtPnNpemUoKSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CiAgICAgdGVtcEJpdG1hcERh
dGEtPnB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQs
ICppbWFnZURhdGEsIEludFJlY3QoMCwgMCwgaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFnZURhdGEt
PmhlaWdodCgpKSwgeyB9LCBhbHBoYVByZW11bHRpcGxpY2F0aW9uKTsKICAgICBGbG9hdFJlY3Qg
ZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBvdXRwdXRTaXplKTsKICAgICBiaXRtYXBEYXRhLT5jb250
ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCp0ZW1wQml0bWFwRGF0YSwgZGVzdFJlY3QsIHNvdXJjZVJl
Y3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJl
c2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KSwgaW1hZ2VPcmllbnRhdGlvbkZvck9y
aWVudGF0aW9uKG9wdGlvbnMuaW1hZ2VPcmllbnRhdGlvbikgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
Qml0bWFwLmgKaW5kZXggMDFmMjgzZDk4MDUxNjc2M2VjYTg5ZjYyMmRmMmZkMTM1NzY4ZTg1My4u
MzdmYjgwOGFhZDUxZjNiZmUxMWNkODlhYTkwMzhmNjkxZmI1ZjcyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VCaXRtYXAuaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgU291cmNlJiYsIEltYWdlQml0
bWFwT3B0aW9ucyYmLCBQcm9taXNlJiYpOwogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNvdXJjZSYmLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwg
aW50IHN4LCBpbnQgc3ksIGludCBzdywgaW50IHNoLCBQcm9taXNlJiYpOwogCi0gICAgc3RhdGlj
IFJlZjxJbWFnZUJpdG1hcD4gY3JlYXRlKEludFNpemUpOworICAgIHN0YXRpYyBSZWY8SW1hZ2VC
aXRtYXA+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgSW50U2l6ZSYpOwog
ICAgIHN0YXRpYyBSZWY8SW1hZ2VCaXRtYXA+IGNyZWF0ZShPcHRpb25hbDxJbWFnZUJpdG1hcEJh
Y2tpbmc+JiYpOwogCiAgICAgfkltYWdlQml0bWFwKCk7CkBAIC0xMTIsNyArMTEyLDcgQEAgcHJp
dmF0ZToKIAogICAgIEltYWdlQml0bWFwKE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4mJik7
CiAKLSAgICBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoYm9vbCBvcmln
aW5DbGVhbiwgUHJvbWlzZSYmKTsKKyAgICBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aEJsYW5rSW1h
Z2VCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGJvb2wgb3JpZ2luQ2xlYW4sIFByb21p
c2UmJik7CiAKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4mLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwg
T3B0aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7CiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtMTI3
LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgY3JlYXRlUHJvbWlzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEJsb2I+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYs
IE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVBy
b21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZURhdGE+JiwgSW1hZ2VC
aXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwogICAgIHN0YXRp
YyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxUeXBl
ZE9NQ1NTSW1hZ2VWYWx1ZT4mLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgT3B0aW9uYWw8SW50UmVj
dD4sIFByb21pc2UmJik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlRnJvbUJ1ZmZlcihSZWY8QXJy
YXlCdWZmZXI+JiYsIFN0cmluZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExl
bmd0aCwgY29uc3QgVVJMJiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+
LCBQcm9taXNlJiYpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZyb21CdWZmZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFJlZjxBcnJheUJ1ZmZlcj4mJiwgU3RyaW5nIG1pbWVUeXBlLCBsb25n
IGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBVUkwmLCBJbWFnZUJpdG1hcE9wdGlv
bnMmJiwgT3B0aW9uYWw8SW50UmVjdD4sIFByb21pc2UmJik7CiAKICAgICBPcHRpb25hbDxJbWFn
ZUJpdG1hcEJhY2tpbmc+IG1fYmFja2luZ1N0b3JlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zm
c2NyZWVuQ2FudmFzLmNwcAppbmRleCAxZTI2MDMzZjIzODAwODNhMzE2YTVkNDZiYjExYjFkNzQy
YThmZjViLi44YTYwNjAzMjZkNzcwNWZlM2JmMDE4ZGIwZjlkNmIxMjc0YjBiYmIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCkBAIC03MywxNCArNzMsMTQgQEAgV2Vh
a1B0cjxIVE1MQ2FudmFzRWxlbWVudD4gRGV0YWNoZWRPZmZzY3JlZW5DYW52YXM6OnRha2VQbGFj
ZWhvbGRlckNhbnZhcygpCiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9wbGFjZWhvbGRlckNh
bnZhcywgbnVsbHB0cik7CiB9CiAKLVJlZjxPZmZzY3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZh
czo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVkIHdpZHRo
LCB1bnNpZ25lZCBoZWlnaHQpCitSZWY8T2Zmc2NyZWVuQ2FudmFzPiBPZmZzY3JlZW5DYW52YXM6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB1
bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE9mZnNjcmVlbkNhbnZhcyhjb250ZXh0LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgT2Zmc2NyZWVuQ2FudmFzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHdp
ZHRoLCBoZWlnaHQpKTsKIH0KIAotUmVmPE9mZnNjcmVlbkNhbnZhcz4gT2Zmc2NyZWVuQ2FudmFz
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3RkOjp1bmlxdWVfcHRy
PERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPiYmIGRldGFjaGVkQ2FudmFzKQorUmVmPE9mZnNjcmVl
bkNhbnZhcz4gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzPiYmIGRldGFjaGVkQ2FudmFzKQogewotICAgIFJlZjxPZmZzY3JlZW5DYW52YXM+IGNs
b25lID0gYWRvcHRSZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMoY29udGV4dCwgZGV0YWNoZWRDYW52
YXMtPnNpemUoKS53aWR0aCgpLCBkZXRhY2hlZENhbnZhcy0+c2l6ZSgpLmhlaWdodCgpKSk7Cisg
ICAgUmVmPE9mZnNjcmVlbkNhbnZhcz4gY2xvbmUgPSBhZG9wdFJlZigqbmV3IE9mZnNjcmVlbkNh
bnZhcyhzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBkZXRhY2hlZENhbnZhcy0+c2l6ZSgpLndpZHRo
KCksIGRldGFjaGVkQ2FudmFzLT5zaXplKCkuaGVpZ2h0KCkpKTsKICAgICBjbG9uZS0+c2V0SW1h
Z2VCdWZmZXIoZGV0YWNoZWRDYW52YXMtPnRha2VJbWFnZUJ1ZmZlcigpKTsKICAgICBpZiAoIWRl
dGFjaGVkQ2FudmFzLT5vcmlnaW5DbGVhbigpKQogICAgICAgICBjbG9uZS0+c2V0T3JpZ2luVGFp
bnRlZCgpOwpAQCAtMTAwLDE2ICsxMDAsMTYgQEAgUmVmPE9mZnNjcmVlbkNhbnZhcz4gT2Zmc2Ny
ZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3QKICAg
ICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxPZmZzY3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZh
czo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEhUTUxDYW52YXNFbGVt
ZW50JiBjYW52YXMpCitSZWY8T2Zmc2NyZWVuQ2FudmFzPiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBIVE1MQ2Fu
dmFzRWxlbWVudCYgY2FudmFzKQogewotICAgIGF1dG8gb2Zmc2NyZWVuID0gYWRvcHRSZWYoKm5l
dyBPZmZzY3JlZW5DYW52YXMoY29udGV4dCwgY2FudmFzLndpZHRoKCksIGNhbnZhcy5oZWlnaHQo
KSkpOworICAgIGF1dG8gb2Zmc2NyZWVuID0gYWRvcHRSZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY2FudmFzLndpZHRoKCksIGNhbnZhcy5oZWlnaHQoKSkp
OwogICAgIG9mZnNjcmVlbi0+c2V0UGxhY2Vob2xkZXJDYW52YXMoY2FudmFzKTsKICAgICByZXR1
cm4gb2Zmc2NyZWVuOwogfQogCi1PZmZzY3JlZW5DYW52YXM6Ok9mZnNjcmVlbkNhbnZhcyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVp
Z2h0KQorT2Zmc2NyZWVuQ2FudmFzOjpPZmZzY3JlZW5DYW52YXMoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhl
aWdodCkKICAgICA6IENhbnZhc0Jhc2UoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkKLSAgICAsIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZjb250ZXh0KQorICAgICwgQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiB9CiAKQEAgLTE4MCwxMyAr
MTgwLDEzIEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGVDb250ZXh0V2ViR0woUmVuZGVy
aW5nQ29udGV4dFR5cGUgY29udGV4dFR5cGUsIFdlYkdMCiB7CiAgICAgQVNTRVJUKCFtX2NvbnRl
eHQpOwogCi0gICAgYXV0byBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAg
IGlmIChjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKLSAgICAgICAgV29ya2VyR2xv
YmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KCpjb250ZXh0KTsKKyAgICBhdXRvIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSB0aGlzLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlz
V29ya2VyR2xvYmFsU2NvcGUoKSkgeworICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2Vy
R2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOwogICAgICAgICBpZiAoIXNob3VsZEVuYWJsZVdlYkdMKHdvcmtlckdsb2JhbFNj
b3BlLndlYkdMRW5hYmxlZCgpLCB3b3JrZXJHbG9iYWxTY29wZS5hY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZCgpKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICB9IGVsc2UgaWYgKGNvbnRl
eHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAgICBhdXRvJiBzZXR0aW5ncyA9IGRvd25jYXN0PERv
Y3VtZW50PigqY29udGV4dCkuc2V0dGluZ3MoKTsKKyAgICB9IGVsc2UgaWYgKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkgeworICAgICAgICBhdXRvJiBzZXR0aW5ncyA9IGRv
d25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuc2V0dGluZ3MoKTsKICAg
ICAgICAgaWYgKCFzaG91bGRFbmFibGVXZWJHTChzZXR0aW5ncy53ZWJHTEVuYWJsZWQoKSwgc2V0
dGluZ3MuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfSBlbHNlCkBAIC0yNTUsOCArMjU1LDEwIEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxJ
bWFnZUJpdG1hcD4+IE9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKCkKICAg
ICAgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAgICAgIHJldHVybiB7IFJl
ZlB0cjxJbWFnZUJpdG1hcD4geyBudWxscHRyIH0gfTsKIAotICAgICAgICBpZiAoIW1faGFzQ3Jl
YXRlZEltYWdlQnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIHsgSW1hZ2VCaXRtYXA6OmNyZWF0
ZShJbWFnZUJpdG1hcEJhY2tpbmcoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQpKSkgfTsKKyAgICAgICAgaWYgKCFtX2hhc0NyZWF0ZWRJbWFn
ZUJ1ZmZlcikgeworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KCpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzaXplKCksIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQpOworICAgICAgICAgICAgcmV0dXJuIHsgSW1hZ2VCaXRtYXA6OmNy
ZWF0ZShJbWFnZUJpdG1hcEJhY2tpbmcoV1RGTW92ZShidWZmZXIpKSkgfTsKKyAgICAgICAgfQog
CiAgICAgICAgIGF1dG8gYnVmZmVyID0gdGFrZUltYWdlQnVmZmVyKCk7CiAgICAgICAgIGlmICgh
YnVmZmVyKQpAQCAtMjczLDcgKzI3NSw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1h
cD4+IE9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKCkKICAgICAgICAgLy8g
c3RvcmUgZnJvbSB0aGlzIGNhbnZhcyAob3IgaXRzIGNvbnRleHQpLCBidXQgZm9yIG5vdyB3ZSds
bCBqdXN0CiAgICAgICAgIC8vIGNyZWF0ZSBhIG5ldyBiaXRtYXAgYW5kIHBhaW50IGludG8gaXQu
CiAKLSAgICAgICAgYXV0byBpbWFnZUJpdG1hcCA9IEltYWdlQml0bWFwOjpjcmVhdGUoc2l6ZSgp
KTsKKyAgICAgICAgYXV0byBpbWFnZUJpdG1hcCA9IEltYWdlQml0bWFwOjpjcmVhdGUoKmNhbnZh
c0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNpemUoKSk7CiAgICAgICAgIGlmICghaW1h
Z2VCaXRtYXAtPmJ1ZmZlcigpKQogICAgICAgICAgICAgcmV0dXJuIHsgUmVmUHRyPEltYWdlQml0
bWFwPiB7IG51bGxwdHIgfSB9OwogCkBAIC0zNjksMTEgKzM3MSwxMSBAQCB2b2lkIE9mZnNjcmVl
bkNhbnZhczo6Y2xlYXJDb3BpZWRJbWFnZSgpIGNvbnN0CiAKIFNlY3VyaXR5T3JpZ2luKiBPZmZz
Y3JlZW5DYW52YXM6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKLSAgICBhdXRvJiBjb250ZXh0
ID0gKmNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKGlzPFdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuICZkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCkudG9wT3JpZ2luKCk7CisgICAgYXV0byYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCA9ICpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlm
IChpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCisgICAgICAg
IHJldHVybiAmZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLnRvcE9yaWdpbigpOwogCi0gICAgcmV0dXJuICZkb3duY2FzdDxEb2N1bWVudD4oY29udGV4
dCkuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICByZXR1cm4gJmRvd25jYXN0PERvY3VtZW50PihzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KS5zZWN1cml0eU9yaWdpbigpOwogfQogCiBib29sIE9mZnNjcmVl
bkNhbnZhczo6Y2FuRGV0YWNoKCkgY29uc3QKQEAgLTQ1NywxMSArNDU5LDExIEBAIHZvaWQgT2Zm
c2NyZWVuQ2FudmFzOjpzY2hlZHVsZUNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMoKQogCiBDU1NW
YWx1ZVBvb2wmIE9mZnNjcmVlbkNhbnZhczo6Y3NzVmFsdWVQb29sKCkKIHsKLSAgICBhdXRvKiBj
b250ZXh0ID0gY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoY29u
dGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KCpjb250ZXh0KS5jc3NWYWx1ZVBvb2woKTsKKyAgICBhdXRvKiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0gY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
KyAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKQor
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KS5jc3NWYWx1ZVBvb2woKTsKIAotICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3Vt
ZW50KCkpOworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkp
OwogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogfQogCkBAIC00NzIsNyAr
NDc0LDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QK
ICAgICBpZiAoIXdpZHRoKCkgfHwgIWhlaWdodCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
ZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCkpOworICAgIHNldEltYWdlQnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUo
KmNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IE9m
ZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyKCkgY29uc3QKQEAgLTQ4OCw3ICs0OTAsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IE9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdl
QnVmZmVyKCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBjbGVhckNvcGll
ZEltYWdlKCk7Ci0gICAgcmV0dXJuIHNldEltYWdlQnVmZmVyKG1fZGV0YWNoZWQgPyBudWxscHRy
IDogSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQpKTsKKyAgICByZXR1cm4gc2V0SW1hZ2VCdWZmZXIobV9kZXRhY2hlZCA/IG51bGxwdHIgOiBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKCpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBz
aXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpKTsKIH0KIAogdm9pZCBPZmZzY3Jl
ZW5DYW52YXM6OnJlc2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAppbmRleCA5MjU5MzNlODYzYjQ1OWFiYmYxOGQ2NGUyNWVlMDcxMjRj
Mzg2MDRmLi4xZDY4Yjk2ZDdkZDgyMjczOWVkY2ZkZDhjZTQ1ODcxZjRmNTBlMTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0y
OCwxNiArMjgsMjkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgogCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGZsb2F0IE1h
eENsYW1wZWRMZW5ndGggPSA0MDk2Owogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1wZWRBcmVh
ID0gTWF4Q2xhbXBlZExlbmd0aCAqIE1heENsYW1wZWRMZW5ndGg7CiAKK3N0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UpCit7CisgICAgYXV0byBkb2N1bWVudCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aXNEb2N1bWVudCgpID8gJmRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0
KSA6IG51bGxwdHI7CisgICAgYXV0byBob3N0V2luZG93ID0gKGRvY3VtZW50ICYmIGRvY3VtZW50
LT52aWV3KCkgJiYgZG9jdW1lbnQtPnZpZXcoKS0+cm9vdCgpKSA/IGRvY3VtZW50LT52aWV3KCkt
PnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKKworICAgIGF1dG8gYWNjZWxlcmF0ZSA9
IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgPyBTaG91bGRBY2Nl
bGVyYXRlOjpZZXMgOiBTaG91bGRBY2NlbGVyYXRlOjpObzsKKyAgICBhdXRvIHVzZURpc3BsYXlM
aXN0ID0gU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vOworCisgICAgcmV0dXJuIEltYWdlQnVmZmVy
OjpjcmVhdGUoc2l6ZSwgYWNjZWxlcmF0ZSwgdXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBv
c2U6OkNhbnZhcywgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBob3N0V2luZG93KTsKK30K
Kwogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2NlbGVyYXRlLCBTaG91
bGRVc2VEaXNwbGF5TGlzdCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSBw
dXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IGltYWdlQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgKaW5kZXggZDE0NjQ5MmM0YThkZjkzNWNhZjk0YjlmYjk1NTkwOWFhZDFj
YmFmMC4uNjExN2E3MmJlMjZmOWQ3ZGQwZTgwOTQ2MTY3MzYyYjYwYzlhMGRmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0zNiw5ICsz
NiwxMiBAQCBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRHJhd2luZ0NvbnRleHQ7CiB9
CiAKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKIGNsYXNzIEltYWdlQnVmZmVyIHsK
IHB1YmxpYzoKICAgICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9u
IGZhaWx1cmUuCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2Rl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JH
Qik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFNob3VsZEFjY2VsZXJhdGUsIFNob3VsZFVzZURp
c3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBD
b2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQiwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRy
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0IsIGNvbnN0IEhvc3RXaW5k
b3cqID0gbnVsbHB0cik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlci5oCmluZGV4IGU4NDkxNjY0NTE0NTk2Mjg3ZWYyYzc4ZjkwNzZlMWQ0MzgyMTkxZjIu
LjNmMzQyYmM3YmMwNmQyMGFiMWVjN2JmNGIxNDE4NWYwNmE3Yjg5MWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAgICAgLy8gVGhl
IG1hdGggaW5zaWRlIEltYWdlRGF0YTo6Y3JlYXRlKCkgZG9lc24ndCBhZ3JlZSB3aXRoIHRoZSBt
YXRoIGluc2lkZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dEltYWdlRGF0YSgpIGFib3V0IGhvdyBt
X3Jlc29sdXRpb25TY2FsZSBpbnRlcmFjdHMgd2l0aCB0aGUgZGF0YSBpbiB0aGUgSW1hZ2VCdWZm
ZXIuCiAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBwdXRJbWFnZURhdGEoKSBpcyBvbmx5IGNh
bGxlZCB3aGVuIG1fcmVzb2x1dGlvblNjYWxlID09IDEuCi0gICAgICAgIEFTU0VSVChtX2JhY2tl
bmQtPnJlc29sdXRpb25TY2FsZSgpID09IDEpOworICAgICAgICBBU1NFUlRfSU1QTElFUyhtX2Jh
Y2tlbmQsIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCkgPT0gMSk7CiAgICAgICAgIG1fZHJh
d2luZ0NvbnRleHQucmVjb3JkZXIoKS5wdXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0
YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCmluZGV4IDRlOWI3NjJkOGUwY2Y1
ZmZmODdmMWM0Mjg0NWFmMDA0YThkYTFkYWIuLjQ3ZjdhMDE0Y2Y0MGQyNGI0MDE3MThkNDhkMTNl
NWQ0ODRjYzJiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyLmNwcApAQCAtNDgsNiArNDgsNyBAQCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
Ojp+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcigpCiAgICAgLy8gUmVsZWFzZSB0aGUg
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS4KICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCkKICAgICAgICAgcmV0dXJuOworICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVsZWFz
ZVJlbW90ZVJlc291cmNlKG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6UmVsZWFzZVJlbW90ZVJlc291cmNlKG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsK
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411416</attachid>
            <date>2020-10-15 00:55:50 -0700</date>
            <delta_ts>2020-11-02 21:04:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217735-20201015005549.patch</filename>
            <type>text/plain</type>
            <size>29437</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRjYTU2ZjYwYTRjYTVm
ZmMzN2M3ZWRkYmI3Zjk1OTkzYTgzYmQzNC4uZGRiNmYwOTBiNmNmY2ZkMTIxODQ4ZTEzOGFmZGI2
MDcyMGZjNzQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTEwLTE1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXSBFbmFibGUgSW1hZ2VCaXRtYXAgYW5kIE9mZnNjcmVlbkNhbnZhcyBkcmF3aW5nIHRv
IGdvIHRocm91Z2ggR1BVCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTc3MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBuZXcgc3RhdGljIG1ldGhvZCBJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VC
dWZmZXIoKSB3aGljaCB0YWtlcyBhCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuIEl0
IGdldHMgSG9zdFdpbmRvdyBmcm9tIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuCisgICAgICAgIElm
IGEgSG9zdFdpbmRvdyBleGlzdHMsIGNyZWF0aW5nIHRoZSBJbWFnZUJ1ZmZlciB3aWxsIGJlIGRl
bGVnYXRlZCB0bworICAgICAgICBXZWJDaHJvbWVDbGllbnQgd2hpY2ggd2lsbCBjcmVhdGUgYSBS
ZW1vdGVJbWFnZUJ1ZmZlciBpbiBXZWIgUHJvY2VzcyBhbmQKKyAgICAgICAgYSBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5IGluIHRoZSBHUFUgUHJvY2Vzcy4KKworICAgICAgICBXaGVuICJydW4td2Vi
a2l0LXRlc3RzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvIC0tdXNlLWdwdS1wcm9j
ZXNzIiwKKyAgICAgICAgYSBjb3VwbGUgb2YgbGF5b3V0IHRlc3QgZmFpbHVyZXMgd2VyZSBmb3Vu
ZCBidXQgdGhleSBjYW4gYmUgYWRkcmVzc2VkIGxhdGVyLgorCisgICAgICAgICogYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVz
ZXJpYWxpemVyOjpyZWFkSW1hZ2VCaXRtYXApOgorICAgICAgICAqIGh0bWwvSW1hZ2VCaXRtYXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCaXRtYXA6OnJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9JbWFnZUJpdG1h
cC5oOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVl
bkNhbnZhczo6T2Zmc2NyZWVuQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNh
bnZhczo6Y3JlYXRlQ29udGV4dFdlYkdMKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNh
bnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVl
bkNhbnZhczo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2Ny
ZWVuQ2FudmFzOjpjc3NWYWx1ZVBvb2wpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3Jl
ZW5DYW52YXM6OnRha2VJbWFnZUJ1ZmZlciBjb25zdCk6CisKIDIwMjAtMTAtMTIgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nl
c3NdOiBSZXBsYWNlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIiIGJ5IGEgZ2VuZXJpYyBpZGVudGlm
aWVyIG5hbWVkICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVjNDA1OTI2
NjgwZjg5NDQ1MGVjOGIyYjFkZTNlNmIyYzUwMDIwNDkuLmM3ODY3OWZhNWQwYTZmODRlODViODY3
MWIyNzNjMWViODQxMzg3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMTAtMTUg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBb
R1BVIFByb2Nlc3NdIEVuYWJsZSBJbWFnZUJpdG1hcCBhbmQgT2Zmc2NyZWVuQ2FudmFzIGRyYXdp
bmcgdG8gZ28gdGhyb3VnaCBHUFUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzczNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgcHV0SW1hZ2VEYXRhKCkgbWlnaHQgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFm
dGVyIGNyZWF0aW5nIHRoZSBJbWFnZUJ1ZmZlcgorICAgICAgICBhbmQgYmVmb3JlIHJlY2Vpdmlu
ZyB0aGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5DcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQKKyAg
ICAgICAgbWVzc2FnZS4gV2UgbmVlZCB0byBoYW5kbGUgZm9yIHRoaXMgY2FzZSBhbmQgYXZvaWQg
YXNzZXJ0aW5nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXI6On5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKToK
KyAgICAgICAgVGhpcyBpcyBhIGJ1Zy4gQ3VycmVudGx5IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSgpCisgICAgICAgIGlzIG5ldmVyIGNhbGxlZC4gV2UgbmVl
ZCB0byByZW1vdmUgdGhlIFJlbW90ZUltYWdlQnVmZmVyIGVudHJ5IGZyb20gdGhlCisgICAgICAg
IEhhc2hNYXAgd2hlbiBpdCBpcyBiZWluZyBkZXN0cm95ZWQuCisKIDIwMjAtMTAtMTIgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFBy
b2Nlc3NdOiBSZXBsYWNlICJJbWFnZUJ1ZmZlcklkZW50aWZpZXIiIGJ5IGEgZ2VuZXJpYyBpZGVu
dGlmaWVyIG5hbWVkICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBmOGUx
ZTU3NDVhOGRkYzFlMTMzZTk2MmRmNGQ5N2QxN2IwNWRlNmMyLi40YWUwYzhmZDY5M2Y4MTNjODRk
NTg4NTdmMGJhMGViZTc2NDE0YzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTI5ODgsNyArMjk4OCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAg
ICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShsb2dpY2FsU2l6
ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSk7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QpLCBsb2dp
Y2FsU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlKTsK
ICAgICAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgICAgIGZhaWwoKTsKICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
Qml0bWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCmluZGV4IDQz
OWI2YTlkN2Q4MTIwZDkxZTFlMWFmYzU2ZDFhYWY2YmUwYjQ5ZTQuLjM3ZmExMDlkMmYxNGVmYTE2
OTliOWM4ZjMzNzgzMjExZjYxM2JjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJG
aWxlUmVhZGVyTG9hZGVyLmgiCiAjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlckNsaWVudC5oIgor
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5o
IgpAQCAtNjcsOSArNjgsOSBAQCBzdGF0aWMgUmVuZGVyaW5nTW9kZSBidWZmZXJSZW5kZXJpbmdN
b2RlID0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7CiBzdGF0aWMgUmVuZGVyaW5nTW9kZSBi
dWZmZXJSZW5kZXJpbmdNb2RlID0gUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKICNlbmRp
ZgogCi1SZWY8SW1hZ2VCaXRtYXA+IEltYWdlQml0bWFwOjpjcmVhdGUoSW50U2l6ZSBzaXplKQor
UmVmPEltYWdlQml0bWFwPiBJbWFnZUJpdG1hcDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAg
cmV0dXJuIGNyZWF0ZSh7IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpIH0pOworICAgIHJldHVybiBj
cmVhdGUoeyBjcmVhdGVJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBzaXplLCBi
dWZmZXJSZW5kZXJpbmdNb2RlKSB9KTsKIH0KIAogUmVmPEltYWdlQml0bWFwPiBJbWFnZUJpdG1h
cDo6Y3JlYXRlKE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4mJiBiYWNraW5nU3RvcmUpCkBA
IC03Nyw2ICs3OCwxNyBAQCBSZWY8SW1hZ2VCaXRtYXA+IEltYWdlQml0bWFwOjpjcmVhdGUoT3B0
aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPiYmIGJhY2tpbmdTdG9yZQogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEltYWdlQml0bWFwKFdURk1vdmUoYmFja2luZ1N0b3JlKSkpOwogfQogCitzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBGbG9h
dFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlKQoreworICAgIGF1dG8gZG9jdW1lbnQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0Lmlz
RG9jdW1lbnQoKSA/ICZkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkg
OiBudWxscHRyOworICAgIGF1dG8gaG9zdFdpbmRvdyA9IChkb2N1bWVudCAmJiBkb2N1bWVudC0+
dmlldygpICYmIGRvY3VtZW50LT52aWV3KCktPnJvb3QoKSkgPyBkb2N1bWVudC0+dmlldygpLT5y
b290KCktPmhvc3RXaW5kb3coKSA6IG51bGxwdHI7CisKKyAgICBhdXRvIGFjY2VsZXJhdGUgPSBy
ZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkID8gU2hvdWxkQWNjZWxl
cmF0ZTo6WWVzIDogU2hvdWxkQWNjZWxlcmF0ZTo6Tm87CisgICAgYXV0byB1c2VEaXNwbGF5TGlz
dCA9IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKKworICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIGFjY2VsZXJhdGUsIHVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3Nl
OjpDYW52YXMsIHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZTo6U1JHQiwgaG9zdFdpbmRvdyk7
Cit9CisKIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1hZ2VCaXRtYXA6OlNvdXJjZSYmIHNvdXJj
ZSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBw
cm9taXNlKQogewogICAgIFdURjo6c3dpdGNoT24oc291cmNlLApAQCAtMjI2LDEyICsyMzgsMTIg
QEAgc3RhdGljIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbkZv
clByZW11bHRpcGx5QWxwaGEoSW1hZ2VCaXQKICAgICByZXR1cm4gQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZDsKIH0KIAotdm9pZCBJbWFnZUJpdG1hcDo6cmVzb2x2ZVdpdGhC
bGFua0ltYWdlQnVmZmVyKGJvb2wgb3JpZ2luQ2xlYW4sIFByb21pc2UmJiBwcm9taXNlKQordm9p
ZCBJbWFnZUJpdG1hcDo6cmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGJvb2wgb3JpZ2luQ2xlYW4sIFByb21p
c2UmJiBwcm9taXNlKQogewogICAgIC8vIFNvdXJjZSByZWN0YW5nbGUgbGlrZWx5IGRvZXNuJ3Qg
aW50ZXJzZWN0IHRoZSBzb3VyY2UgaW1hZ2UuCiAgICAgLy8gQmVoYXZpb3IgaXNuJ3Qgd2VsbCBz
cGVjaWZpZWQsIGJ1dCBXUFQgdGVzdHMgZXhwZWN0IG5vIFByb21pc2UgcmVqZWN0aW9uIChhbmQg
b2YgY291cnNlIG5vIGNyYXNoZXMpLgogICAgIC8vIFJlc29sdmUgUHJvbWlzZSB3aXRoIGEgYmxh
bmsgMXgxIEltYWdlQml0bWFwLgotICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoRmxvYXRTaXplKDEsIDEpLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGJp
dG1hcERhdGEgPSBjcmVhdGVJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBGbG9h
dFNpemUoMSwgMSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOwogCiAgICAgLy8gOS4gSWYgdGhlIG9y
aWdpbiBvZiBpbWFnZSdzIGltYWdlIGlzIG5vdCB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIG9yaWdp
biBzcGVjaWZpZWQgYnkgdGhlCiAgICAgLy8gICAgZW50cnkgc2V0dGluZ3Mgb2JqZWN0LCB0aGVu
IHNldCB0aGUgb3JpZ2luLWNsZWFuIGZsYWcgb2YgdGhlIEltYWdlQml0bWFwIG9iamVjdCdzCkBA
IC0yOTEsNyArMzAzLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6cmVzb2x2ZVdpdGhCbGFua0ltYWdl
QnVmZmVyKGJvb2wgb3JpZ2luQ2xlYW4sIFByb21pc2UmJiBwcm9taXMKIAogLy8gMTMuIFJldHVy
biBvdXRwdXQuCiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiYgaW1hZ2VFbGVtZW50LCBJbWFn
ZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJp
dG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZlB0cjxI
VE1MSW1hZ2VFbGVtZW50PiYgaW1hZ2VFbGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRp
b25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21p
c2UpCiB7CiAgICAgLy8gMi4gSWYgaW1hZ2UgaXMgbm90IGNvbXBsZXRlbHkgYXZhaWxhYmxlLCB0
aGVuIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aAogICAgIC8vIGFuICJJbnZhbGlkU3Rh
dGVFcnJvciIgRE9NRXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KQEAgLTM1MCw3ICsz
NjIsOCBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudAogICAgIH0KIAogICAgIGF1dG8gb3V0cHV0
U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0YW5nbGUoc291cmNlUmVjdGFuZ2xlLnJldHVy
blZhbHVlKCksIG9wdGlvbnMpOwotICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoRmxvYXRTaXplKG91dHB1dFNpemUud2lkdGgoKSwgb3V0cHV0U2l6ZS5oZWlnaHQoKSks
IGJ1ZmZlclJlbmRlcmluZ01vZGUpOworICAgIGF1dG8gYml0bWFwRGF0YSA9IGNyZWF0ZUltYWdl
QnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmlu
Z01vZGUpOworCiAgICAgYXV0byBpbWFnZUZvclJlbmRlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZv
clJlbmRlcmVyKGltYWdlRWxlbWVudC0+cmVuZGVyZXIoKSk7CiAgICAgaWYgKCFpbWFnZUZvclJl
bmRlcikgewogICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5v
dCBjcmVhdGUgSW1hZ2VCaXRtYXAgZnJvbSBpbWFnZSB0aGF0IGNhbid0IGJlIHJlbmRlcmVkIik7
CkBAIC0zNTgsNyArMzcxLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQKICAgICB9CiAKICAg
ICBpZiAoIWJpdG1hcERhdGEpIHsKLSAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVy
KCF0YWludHNPcmlnaW4oKmNhY2hlZEltYWdlKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAg
IHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCAhdGFp
bnRzT3JpZ2luKCpjYWNoZWRJbWFnZSksIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0zODQsMTkgKzM5NywxOSBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVh
dGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SFRNTEltYWdlRWxlbWVu
dAogICAgIHByb21pc2UucmVzb2x2ZShXVEZNb3ZlKGltYWdlQml0bWFwKSk7CiB9CiAKLXZvaWQg
SW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiYgY2FudmFzRWxlbWVudCwgSW1hZ2VCaXRtYXBP
cHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlBy
b21pc2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SFRNTENhbnZh
c0VsZW1lbnQ+JiBjYW52YXNFbGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBP
cHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCiB7
Ci0gICAgY3JlYXRlUHJvbWlzZShjb250ZXh0LCAqY2FudmFzRWxlbWVudCwgV1RGTW92ZShvcHRp
b25zKSwgV1RGTW92ZShyZWN0KSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgY3JlYXRlUHJvbWlz
ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCAqY2FudmFzRWxlbWVudCwgV1RGTW92ZShvcHRpb25z
KSwgV1RGTW92ZShyZWN0KSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKICNpZiBFTkFCTEUoT0ZG
U0NSRUVOX0NBTlZBUykKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4mIGNhbnZhc0Vs
ZW1lbnQsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJl
Y3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNy
ZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgUmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4mIGNhbnZhc0VsZW1lbnQsIEltYWdlQml0bWFwT3B0
aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9t
aXNlJiYgcHJvbWlzZSkKIHsKLSAgICBjcmVhdGVQcm9taXNlKGNvbnRleHQsICpjYW52YXNFbGVt
ZW50LCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHJlY3QpLCBXVEZNb3ZlKHByb21pc2UpKTsK
KyAgICBjcmVhdGVQcm9taXNlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICpjYW52YXNFbGVtZW50
LCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHJlY3QpLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0K
ICNlbmRpZgogCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBDYW52YXNCYXNlJiBjYW52YXMsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlv
bnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlz
ZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQ2FudmFzQmFzZSYgY2FudmFzLCBJbWFnZUJpdG1h
cE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6
UHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgLy8gMi4gSWYgdGhlIGNhbnZhcyBlbGVtZW50J3Mg
Yml0bWFwIGhhcyBlaXRoZXIgYSBob3Jpem9udGFsIGRpbWVuc2lvbiBvciBhIHZlcnRpY2FsCiAg
ICAgLy8gICAgZGltZW5zaW9uIGVxdWFsIHRvIHplcm8sIHRoZW4gcmV0dXJuIGEgcHJvbWlzZSBy
ZWplY3RlZCB3aXRoIGFuICJJbnZhbGlkU3RhdGVFcnJvciIKQEAgLTQxNyw3ICs0MzAsNyBAQCB2
b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBD
YW52YXNCYXNlJiBjYW52YXMsIEltYQogICAgIH0KIAogICAgIGF1dG8gb3V0cHV0U2l6ZSA9IG91
dHB1dFNpemVGb3JTb3VyY2VSZWN0YW5nbGUoc291cmNlUmVjdGFuZ2xlLnJldHVyblZhbHVlKCks
IG9wdGlvbnMpOwotICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxv
YXRTaXplKG91dHB1dFNpemUud2lkdGgoKSwgb3V0cHV0U2l6ZS5oZWlnaHQoKSksIGJ1ZmZlclJl
bmRlcmluZ01vZGUpOworICAgIGF1dG8gYml0bWFwRGF0YSA9IGNyZWF0ZUltYWdlQnVmZmVyKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUpOwog
CiAgICAgYXV0byBpbWFnZUZvclJlbmRlciA9IGNhbnZhcy5jb3BpZWRJbWFnZSgpOwogICAgIGlm
ICghaW1hZ2VGb3JSZW5kZXIpIHsKQEAgLTQyNiw3ICs0MzksNyBAQCB2b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBDYW52YXNCYXNlJiBjYW52
YXMsIEltYQogICAgIH0KIAogICAgIGlmICghYml0bWFwRGF0YSkgewotICAgICAgICByZXNvbHZl
V2l0aEJsYW5rSW1hZ2VCdWZmZXIoY2FudmFzLm9yaWdpbkNsZWFuKCksIFdURk1vdmUocHJvbWlz
ZSkpOworICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgY2FudmFzLm9yaWdpbkNsZWFuKCksIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC00ODksNyArNTAyLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6
Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LAogICAgIGF1dG8gb3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0YW5nbGUo
c291cmNlUmVjdGFuZ2xlLCBvcHRpb25zKTsKICAgICBhdXRvIGJpdG1hcERhdGEgPSB2aWRlby0+
Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcob3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSA9
PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA/IFNob3VsZEFjY2VsZXJhdGU6OlllcyA6IFNo
b3VsZEFjY2VsZXJhdGU6Ok5vKTsKICAgICBpZiAoIWJpdG1hcERhdGEpIHsKLSAgICAgICAgcmVz
b2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKCF0YWludHNPcmlnaW4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5zZWN1cml0eU9yaWdpbigpLCAqdmlkZW8pLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAg
ICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICF0
YWludHNPcmlnaW4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigpLCAqdmlk
ZW8pLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTM0
LDcgKzU0Nyw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFJlZlB0cjxUeXBlZE9NQ1NTSW1hZ2VWCiB9CiAjZW5kaWYKIAotdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRy
PEltYWdlQml0bWFwPiYgZXhpc3RpbmdJbWFnZUJpdG1hcCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYg
b3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBw
cm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SW1hZ2VCaXRtYXA+JiBleGlz
dGluZ0ltYWdlQml0bWFwLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJ
bnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgLy8g
Mi4gSWYgaW1hZ2UncyBbW0RldGFjaGVkXV0gaW50ZXJuYWwgc2xvdCB2YWx1ZSBpcyB0cnVlLCBy
ZXR1cm4gYSBwcm9taXNlCiAgICAgLy8gICAgcmVqZWN0ZWQgd2l0aCBhbiAiSW52YWxpZFN0YXRl
RXJyb3IiIERPTUV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC01NTIsMTAgKzU2
NSwxMCBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBSZWZQdHI8SW1hZ2VCaXRtYXA+JiBleAogICAgIH0KIAogICAgIGF1dG8gb3V0cHV0
U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0YW5nbGUoc291cmNlUmVjdGFuZ2xlLnJldHVy
blZhbHVlKCksIG9wdGlvbnMpOwotICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoRmxvYXRTaXplKG91dHB1dFNpemUud2lkdGgoKSwgb3V0cHV0U2l6ZS5oZWlnaHQoKSks
IGJ1ZmZlclJlbmRlcmluZ01vZGUpOworICAgIGF1dG8gYml0bWFwRGF0YSA9IGNyZWF0ZUltYWdl
QnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmlu
Z01vZGUpOwogCiAgICAgaWYgKCFiaXRtYXBEYXRhKSB7Ci0gICAgICAgIHJlc29sdmVXaXRoQmxh
bmtJbWFnZUJ1ZmZlcihleGlzdGluZ0ltYWdlQml0bWFwLT5vcmlnaW5DbGVhbigpLCBXVEZNb3Zl
KHByb21pc2UpKTsKKyAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIGV4aXN0aW5nSW1hZ2VCaXRtYXAtPm9yaWdpbkNsZWFuKCksIFdURk1v
dmUocHJvbWlzZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02OTgsNyArNzExLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIElt
YWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKG1fYXJyYXlCdWZmZXJUb1Byb2Nlc3MucmVsZWFz
ZU5vbk51bGwoKSwgbV9ibG9iLT50eXBlKCksIG1fYmxvYi0+c2l6ZSgpLCBtX2Jsb2JMb2FkZXIu
dXJsKCksIFdURk1vdmUobV9vcHRpb25zKSwgV1RGTW92ZShtX3JlY3QpLCBXVEZNb3ZlKG1fcHJv
bWlzZSkpOworICAgICAgICBJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBtX2FycmF5QnVmZmVyVG9Qcm9jZXNzLnJlbGVhc2VOb25OdWxsKCks
IG1fYmxvYi0+dHlwZSgpLCBtX2Jsb2ItPnNpemUoKSwgbV9ibG9iTG9hZGVyLnVybCgpLCBXVEZN
b3ZlKG1fb3B0aW9ucyksIFdURk1vdmUobV9yZWN0KSwgV1RGTW92ZShtX3Byb21pc2UpKTsKICAg
ICB9CiAKICAgICBGaWxlUmVhZGVyTG9hZGVyIG1fYmxvYkxvYWRlcjsKQEAgLTcxMCwxNCArNzIz
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYXJyYXlCdWZmZXJUb1By
b2Nlc3M7CiB9OwogCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKAotICAgIFJl
ZjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICBTdHJpbmcgbWltZVR5cGUsCi0gICAg
bG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwKLSAgICBjb25zdCBVUkwmIHNvdXJjZVVy
bCwKLSAgICBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLAotICAgIE9wdGlvbmFsPEludFJl
Y3Q+IHJlY3QsCi0gICAgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQordm9pZCBJbWFn
ZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBSZWY8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsIFN0cmluZyBt
aW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgVVJMJiBzb3Vy
Y2VVUkwsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJl
Y3QsIFByb21pc2UmJiBwcm9taXNlKQogewogICAgIGlmICghYXJyYXlCdWZmZXItPmJ5dGVMZW5n
dGgoKSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5v
dCBjcmVhdGUgYW4gSW1hZ2VCaXRtYXAgZnJvbSBhbiBlbXB0eSBidWZmZXIiKTsKQEAgLTcyNSw3
ICs3MzEsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKAogICAgIH0KIAog
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKLSAgICBhdXRvIG9ic2VydmVyID0gSW1hZ2VCaXRtYXBJbWFnZU9ic2VydmVyOjpjcmVh
dGUobWltZVR5cGUsIGV4cGVjdGVkQ29udGVudExlbmd0aCwgc291cmNlVXJsKTsKKyAgICBhdXRv
IG9ic2VydmVyID0gSW1hZ2VCaXRtYXBJbWFnZU9ic2VydmVyOjpjcmVhdGUobWltZVR5cGUsIGV4
cGVjdGVkQ29udGVudExlbmd0aCwgc291cmNlVVJMKTsKICAgICBhdXRvIGltYWdlID0gSW1hZ2U6
OmNyZWF0ZShvYnNlcnZlci5nZXQoKSk7CiAgICAgaWYgKCFpbWFnZSkgewogICAgICAgICBwcm9t
aXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIlRoZSB0eXBlIG9mIHRoZSBhcmd1bWVudCB0
byBjcmVhdGVJbWFnZUJpdG1hcCBpcyBub3Qgc3VwcG9ydGVkIik7CkBAIC03NDUsNyArNzUxLDcg
QEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcigKICAgICB9CiAKICAgICBhdXRv
IG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3Rhbmds
ZS5yZXR1cm5WYWx1ZSgpLCBvcHRpb25zKTsKLSAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShvdXRwdXRTaXplLndpZHRoKCksIG91dHB1dFNpemUuaGVp
Z2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSBjcmVh
dGVJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBvdXRwdXRTaXplLCBidWZmZXJS
ZW5kZXJpbmdNb2RlKTsKICAgICBpZiAoIWJpdG1hcERhdGEpIHsKICAgICAgICAgcHJvbWlzZS5y
ZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBm
cm9tIHRoZSBhcmd1bWVudCB0byBjcmVhdGVJbWFnZUJpdG1hcCIpOwogICAgICAgICByZXR1cm47
CkBAIC03NjksNyArNzc1LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIFBlbmRpbmdJ
bWFnZUJpdG1hcDo6ZmV0Y2goc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RGTW92ZShibG9iKSwg
V1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWN0KSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAK
LXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFJlZlB0cjxJbWFnZURhdGE+JiBpbWFnZURhdGEsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlv
bnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlz
ZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEltYWdlRGF0YT4mIGltYWdlRGF0YSwg
SW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1h
Z2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIDYuMS4gTGV0IGJ1ZmZlciBi
ZSBpbWFnZSdzIGRhdGEgYXR0cmlidXRlIHZhbHVlJ3MgW1tWaWV3ZWRBcnJheUJ1ZmZlcl1dCiAg
ICAgLy8gICAgICBpbnRlcm5hbCBzbG90LgpAQCAtNzg5LDEwICs3OTUsMTAgQEAgdm9pZCBJbWFn
ZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPElt
YWdlRGF0YT4mIGltYWcKICAgICB9CiAKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXpl
Rm9yU291cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZS5yZXR1cm5WYWx1ZSgpLCBvcHRpb25z
KTsKLSAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShv
dXRwdXRTaXplLndpZHRoKCksIG91dHB1dFNpemUuaGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdN
b2RlKTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSBjcmVhdGVJbWFnZUJ1ZmZlcihzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKIAogICAgIGlm
ICghYml0bWFwRGF0YSkgewotICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIodHJ1
ZSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZl
cihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0cnVlLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtODExLDcgKzgxNyw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6
OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZURhdGE+
JiBpbWFnCiAKICAgICAvLyA2LjMuIFNldCBpbWFnZUJpdG1hcCdzIGJpdG1hcCBkYXRhIHRvIGlt
YWdlJ3MgaW1hZ2UgZGF0YSwgY3JvcHBlZCB0byB0aGUKICAgICAvLyAgICAgIHNvdXJjZSByZWN0
YW5nbGUgd2l0aCBmb3JtYXR0aW5nLgotICAgIGF1dG8gdGVtcEJpdG1hcERhdGEgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShpbWFnZURhdGEtPndpZHRoKCksIGltYWdlRGF0YS0+aGVp
Z2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIHRlbXBCaXRtYXBEYXRhID0g
Y3JlYXRlSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaW1hZ2VEYXRhLT5zaXpl
KCksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOwogICAgIHRlbXBCaXRtYXBEYXRhLT5wdXRJbWFnZURh
dGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCAqaW1hZ2VEYXRhLCBJ
bnRSZWN0KDAsIDAsIGltYWdlRGF0YS0+d2lkdGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSksIHsg
fSwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0
UG9pbnQoKSwgb3V0cHV0U2l6ZSk7CiAgICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFn
ZUJ1ZmZlcigqdGVtcEJpdG1hcERhdGEsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFz
ZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9w
dGlvbnMucmVzaXplUXVhbGl0eSksIGltYWdlT3JpZW50YXRpb25Gb3JPcmllbnRhdGlvbihvcHRp
b25zLmltYWdlT3JpZW50YXRpb24pIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZUJpdG1hcC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCmluZGV4
IDAxZjI4M2Q5ODA1MTY3NjNlY2E4OWY2MjJkZjJmZDEzNTc2OGU4NTMuLmMzODlkYzY2ODI1YzI3
ZTI1NWFjODgwYWE5OTY0ZTBjMDFlYjhjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VCaXRtYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgK
QEAgLTgyLDcgKzgyLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNvdXJjZSYmLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwg
UHJvbWlzZSYmKTsKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBTb3VyY2UmJiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIGludCBzeCwgaW50IHN5
LCBpbnQgc3csIGludCBzaCwgUHJvbWlzZSYmKTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VCaXRt
YXA+IGNyZWF0ZShJbnRTaXplKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRmxv
YXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSk7CisKKyAg
ICBzdGF0aWMgUmVmPEltYWdlQml0bWFwPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IEludFNpemUmKTsKICAgICBzdGF0aWMgUmVmPEltYWdlQml0bWFwPiBjcmVhdGUoT3B0
aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPiYmKTsKIAogICAgIH5JbWFnZUJpdG1hcCgpOwpAQCAt
MTEyLDcgKzExNCw3IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZUJpdG1hcChPcHRpb25hbDxJbWFn
ZUJpdG1hcEJhY2tpbmc+JiYpOwogCi0gICAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhCbGFua0lt
YWdlQnVmZmVyKGJvb2wgb3JpZ2luQ2xlYW4sIFByb21pc2UmJik7CisgICAgc3RhdGljIHZvaWQg
cmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBib29s
IG9yaWdpbkNsZWFuLCBQcm9taXNlJiYpOwogCiAgICAgc3RhdGljIHZvaWQgY3JlYXRlUHJvbWlz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiwgSW1h
Z2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwogI2lmIEVO
QUJMRShWSURFTykKQEAgLTEyNyw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lk
IGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxCbG9iPiYsIElt
YWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKICAgICBz
dGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8
SW1hZ2VEYXRhPiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJv
bWlzZSYmKTsKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBSZWZQdHI8VHlwZWRPTUNTU0ltYWdlVmFsdWU+JiwgSW1hZ2VCaXRtYXBPcHRpb25z
JiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwotICAgIHN0YXRpYyB2b2lkIGNyZWF0
ZUZyb21CdWZmZXIoUmVmPEFycmF5QnVmZmVyPiYmLCBTdHJpbmcgbWltZVR5cGUsIGxvbmcgbG9u
ZyBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IFVSTCYsIEltYWdlQml0bWFwT3B0aW9ucyYm
LCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVG
cm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFN0
cmluZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgVVJM
JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwog
CiAgICAgT3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPiBtX2JhY2tpbmdTdG9yZTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKaW5kZXggMWUyNjAzM2YyMzgwMDgz
YTMxNmE1ZDQ2YmIxMWIxZDc0MmE4ZmY1Yi4uZDQ2YjMzMGVmZGRlZTY2ODA1N2JkYWE3ZGVkYTZi
ZjNiYzBhMzA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52
YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAt
NzMsMTQgKzczLDE0IEBAIFdlYWtQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IERldGFjaGVkT2Zmc2Ny
ZWVuQ2FudmFzOjp0YWtlUGxhY2Vob2xkZXJDYW52YXMoKQogICAgIHJldHVybiBzdGQ6OmV4Y2hh
bmdlKG1fcGxhY2Vob2xkZXJDYW52YXMsIG51bGxwdHIpOwogfQogCi1SZWY8T2Zmc2NyZWVuQ2Fu
dmFzPiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorUmVmPE9mZnNjcmVlbkNhbnZh
cz4gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMoY29udGV4dCwgd2lkdGgsIGhl
aWdodCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9mZnNjcmVlbkNhbnZhcyhzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKLVJlZjxPZmZzY3JlZW5DYW52
YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4mJiBkZXRhY2hlZENh
bnZhcykKK1JlZjxPZmZzY3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0
cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4mJiBkZXRhY2hlZENhbnZhcykKIHsKLSAgICBSZWY8
T2Zmc2NyZWVuQ2FudmFzPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgT2Zmc2NyZWVuQ2FudmFzKGNv
bnRleHQsIGRldGFjaGVkQ2FudmFzLT5zaXplKCkud2lkdGgoKSwgZGV0YWNoZWRDYW52YXMtPnNp
emUoKS5oZWlnaHQoKSkpOworICAgIFJlZjxPZmZzY3JlZW5DYW52YXM+IGNsb25lID0gYWRvcHRS
ZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZGV0YWNoZWRD
YW52YXMtPnNpemUoKS53aWR0aCgpLCBkZXRhY2hlZENhbnZhcy0+c2l6ZSgpLmhlaWdodCgpKSk7
CiAgICAgY2xvbmUtPnNldEltYWdlQnVmZmVyKGRldGFjaGVkQ2FudmFzLT50YWtlSW1hZ2VCdWZm
ZXIoKSk7CiAgICAgaWYgKCFkZXRhY2hlZENhbnZhcy0+b3JpZ2luQ2xlYW4oKSkKICAgICAgICAg
Y2xvbmUtPnNldE9yaWdpblRhaW50ZWQoKTsKQEAgLTEwMCwxNiArMTAwLDE2IEBAIFJlZjxPZmZz
Y3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIHN0CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8T2Zmc2NyZWVuQ2Fu
dmFzPiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzKQorUmVmPE9mZnNjcmVlbkNhbnZhcz4gT2Zm
c2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcykKIHsKLSAgICBhdXRvIG9mZnNj
cmVlbiA9IGFkb3B0UmVmKCpuZXcgT2Zmc2NyZWVuQ2FudmFzKGNvbnRleHQsIGNhbnZhcy53aWR0
aCgpLCBjYW52YXMuaGVpZ2h0KCkpKTsKKyAgICBhdXRvIG9mZnNjcmVlbiA9IGFkb3B0UmVmKCpu
ZXcgT2Zmc2NyZWVuQ2FudmFzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNhbnZhcy53aWR0aCgp
LCBjYW52YXMuaGVpZ2h0KCkpKTsKICAgICBvZmZzY3JlZW4tPnNldFBsYWNlaG9sZGVyQ2FudmFz
KGNhbnZhcyk7CiAgICAgcmV0dXJuIG9mZnNjcmVlbjsKIH0KIAotT2Zmc2NyZWVuQ2FudmFzOjpP
ZmZzY3JlZW5DYW52YXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQg
d2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKK09mZnNjcmVlbkNhbnZhczo6T2Zmc2NyZWVuQ2FudmFz
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHVuc2lnbmVk
IHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCiAgICAgOiBDYW52YXNCYXNlKEludFNpemUod2lkdGgs
IGhlaWdodCkpCi0gICAgLCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmY29udGV4dCkKKyAg
ICAsIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQog
ewogfQogCkBAIC0xODAsMTMgKzE4MCwxMyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRl
Q29udGV4dFdlYkdMKFJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBXZWJHTAogewog
ICAgIEFTU0VSVCghbV9jb250ZXh0KTsKIAotICAgIGF1dG8gY29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7
Ci0gICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCk7CisgICAgYXV0byBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0gdGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmIChzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAgICAgICAgV29ya2Vy
R2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICAgICAgaWYgKCFzaG91bGRFbmFibGVX
ZWJHTCh3b3JrZXJHbG9iYWxTY29wZS53ZWJHTEVuYWJsZWQoKSwgd29ya2VyR2xvYmFsU2NvcGUu
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgfSBlbHNlIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgYXV0byYgc2V0
dGluZ3MgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLnNldHRpbmdzKCk7CisgICAgfSBl
bHNlIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpIHsKKyAgICAgICAg
YXV0byYgc2V0dGluZ3MgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLnNldHRpbmdzKCk7CiAgICAgICAgIGlmICghc2hvdWxkRW5hYmxlV2ViR0woc2V0dGluZ3Mu
d2ViR0xFbmFibGVkKCksIHNldHRpbmdzLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZQpAQCAtMjU1LDggKzI1NSwxMCBAQCBF
eGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVy
VG9JbWFnZUJpdG1hcCgpCiAgICAgICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAg
ICAgICAgICByZXR1cm4geyBSZWZQdHI8SW1hZ2VCaXRtYXA+IHsgbnVsbHB0ciB9IH07CiAKLSAg
ICAgICAgaWYgKCFtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7
IEltYWdlQml0bWFwOjpjcmVhdGUoSW1hZ2VCaXRtYXBCYWNraW5nKEltYWdlQnVmZmVyOjpjcmVh
dGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSkpIH07CisgICAgICAgIGlm
ICghbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
SW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOworICAgICAg
ICAgICAgcmV0dXJuIHsgSW1hZ2VCaXRtYXA6OmNyZWF0ZShJbWFnZUJpdG1hcEJhY2tpbmcoV1RG
TW92ZShidWZmZXIpKSkgfTsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gdGFr
ZUltYWdlQnVmZmVyKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMjczLDcgKzI3NSw3IEBA
IEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IE9mZnNjcmVlbkNhbnZhczo6dHJhbnNm
ZXJUb0ltYWdlQml0bWFwKCkKICAgICAgICAgLy8gc3RvcmUgZnJvbSB0aGlzIGNhbnZhcyAob3Ig
aXRzIGNvbnRleHQpLCBidXQgZm9yIG5vdyB3ZSdsbCBqdXN0CiAgICAgICAgIC8vIGNyZWF0ZSBh
IG5ldyBiaXRtYXAgYW5kIHBhaW50IGludG8gaXQuCiAKLSAgICAgICAgYXV0byBpbWFnZUJpdG1h
cCA9IEltYWdlQml0bWFwOjpjcmVhdGUoc2l6ZSgpKTsKKyAgICAgICAgYXV0byBpbWFnZUJpdG1h
cCA9IEltYWdlQml0bWFwOjpjcmVhdGUoKmNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIHNpemUoKSk7CiAgICAgICAgIGlmICghaW1hZ2VCaXRtYXAtPmJ1ZmZlcigpKQogICAgICAg
ICAgICAgcmV0dXJuIHsgUmVmUHRyPEltYWdlQml0bWFwPiB7IG51bGxwdHIgfSB9OwogCkBAIC0z
NjksMTEgKzM3MSwxMSBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y2xlYXJDb3BpZWRJbWFnZSgp
IGNvbnN0CiAKIFNlY3VyaXR5T3JpZ2luKiBPZmZzY3JlZW5DYW52YXM6OnNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QKIHsKLSAgICBhdXRvJiBjb250ZXh0ID0gKmNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAg
ICAgICAgcmV0dXJuICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudG9wT3Jp
Z2luKCk7CisgICAgYXV0byYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9ICpjYW52YXNCYXNlU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkpCisgICAgICAgIHJldHVybiAmZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRvcE9yaWdpbigpOwogCi0gICAgcmV0
dXJuICZkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBy
ZXR1cm4gJmRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zZWN1cml0
eU9yaWdpbigpOwogfQogCiBib29sIE9mZnNjcmVlbkNhbnZhczo6Y2FuRGV0YWNoKCkgY29uc3QK
QEAgLTQ1NywxMSArNDU5LDExIEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpzY2hlZHVsZUNvbW1p
dFRvUGxhY2Vob2xkZXJDYW52YXMoKQogCiBDU1NWYWx1ZVBvb2wmIE9mZnNjcmVlbkNhbnZhczo6
Y3NzVmFsdWVQb29sKCkKIHsKLSAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQmFzZVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgp
KQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpjb250ZXh0KS5j
c3NWYWx1ZVBvb2woKTsKKyAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gY2FudmFz
QmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5jc3NWYWx1ZVBvb2woKTsK
IAotICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpOwogfQogCkBAIC00NzIsNyArNDc0LDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52
YXM6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKICAgICBpZiAoIXdpZHRoKCkgfHwgIWhlaWdo
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCkpOworICAgIHNldElt
YWdlQnVmZmVyKEltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqY2FudmFzQmFzZVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
KSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gT2Zmc2NyZWVuQ2FudmFzOjp0
YWtlSW1hZ2VCdWZmZXIoKSBjb25zdApAQCAtNDg4LDcgKzQ5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gT2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIoKSBjb25zdAog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGNsZWFyQ29waWVkSW1hZ2UoKTsKLSAgICBy
ZXR1cm4gc2V0SW1hZ2VCdWZmZXIobV9kZXRhY2hlZCA/IG51bGxwdHIgOiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCkpOworICAgIHJldHVy
biBzZXRJbWFnZUJ1ZmZlcihtX2RldGFjaGVkID8gbnVsbHB0ciA6IEltYWdlQml0bWFwOjpjcmVh
dGVJbWFnZUJ1ZmZlcigqY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSk7CiB9CiAKIHZvaWQgT2Zmc2NyZWVuQ2Fu
dmFzOjpyZXNldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXggZTg0OTE2NjQ1MTQ1OTYyODdlZjJj
NzhmOTA3NmUxZDQzODIxOTFmMi4uM2YzNDJiYzdiYzA2ZDIwYWIxZWM3YmY0YjE0MTg1ZjA2YTdi
ODkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtOTEsNyArOTEsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgewogICAgICAgICAvLyBUaGUgbWF0aCBpbnNpZGUgSW1hZ2VEYXRhOjpjcmVhdGUoKSBkb2Vz
bid0IGFncmVlIHdpdGggdGhlIG1hdGggaW5zaWRlIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0SW1h
Z2VEYXRhKCkgYWJvdXQgaG93IG1fcmVzb2x1dGlvblNjYWxlIGludGVyYWN0cyB3aXRoIHRoZSBk
YXRhIGluIHRoZSBJbWFnZUJ1ZmZlci4KICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHB1dElt
YWdlRGF0YSgpIGlzIG9ubHkgY2FsbGVkIHdoZW4gbV9yZXNvbHV0aW9uU2NhbGUgPT0gMS4KLSAg
ICAgICAgQVNTRVJUKG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCkgPT0gMSk7CisgICAgICAg
IEFTU0VSVF9JTVBMSUVTKG1fYmFja2VuZCwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSA9
PSAxKTsKICAgICAgICAgbV9kcmF3aW5nQ29udGV4dC5yZWNvcmRlcigpLnB1dEltYWdlRGF0YShp
bnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5jcHAK
aW5kZXggNGU5Yjc2MmQ4ZTBjZjVmZmY4N2YxYzQyODQ1YWYwMDRhOGRhMWRhYi4uNDdmN2EwMTRj
ZjQwZDI0YjQwMTcxOGQ0OGQxM2U1ZDQ4NGNjMmIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCkBAIC00OCw2ICs0OCw3IEBAIFJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXI6On5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKCkK
ICAgICAvLyBSZWxlYXNlIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgogICAgIGlmICghbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQogICAgICAgICByZXR1cm47CisgICAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLT5yZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOwogICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413003</attachid>
            <date>2020-11-02 21:04:32 -0800</date>
            <delta_ts>2020-11-02 23:38:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217735-20201102210431.patch</filename>
            <type>text/plain</type>
            <size>35162</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5Mjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWRkMWM0ZTU0N2Q1ZWVh
NGEzMzNlZGI5ZDUxMzE0M2RiZjgzYzU0ZC4uNzk0NmQ1Nzc4ZmMxMDZmMzUyYTY5MDE4ZjRlYjUz
MGRhM2E0MDZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTExLTAyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
RW5hYmxlIERvY3VtZW50IGJhc2VkIEltYWdlQml0bWFwIGFuZCBPZmZzY3JlZW5DYW52YXMgZHJh
d2luZyB0byBnbyB0aHJvdWdoIEdQVQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3NzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHN0YXRpYyBtZXRob2QgSW1hZ2VCaXRtYXA6OmNyZWF0
ZUltYWdlQnVmZmVyKCkgd2hpY2ggdGFrZXMgYQorICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0LiBJdCBnZXRzIEhvc3RXaW5kb3cgZnJvbSBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorICAg
ICAgICBJZiBhIEhvc3RXaW5kb3cgZXhpc3RzLCBjcmVhdGluZyB0aGUgSW1hZ2VCdWZmZXIgd2ls
bCBiZSBkZWxlZ2F0ZWQgdG8KKyAgICAgICAgV2ViQ2hyb21lQ2xpZW50IHdoaWNoIHdpbGwgY3Jl
YXRlIGEgUmVtb3RlSW1hZ2VCdWZmZXIgaW4gV2ViIFByb2Nlc3MgYW5kCisgICAgICAgIGEgUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eSBpbiB0aGUgR1BVIFByb2Nlc3MuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xv
bmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6CisgICAgICAgICogaHRtbC9JbWFnZUJp
dG1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJpdG1hcDo6cmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAgICAgICAgKiBodG1sL0ltYWdl
Qml0bWFwLmg6CisgICAgICAgICogaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6T2Zm
c2NyZWVuQ2FudmFzOjpPZmZzY3JlZW5DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2Ny
ZWVuQ2FudmFzOjpjcmVhdGVDb250ZXh0V2ViR0wpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2Ny
ZWVuQ2FudmFzOjp0cmFuc2ZlclRvSW1hZ2VCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6T2Zm
c2NyZWVuQ2FudmFzOjpzZWN1cml0eU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpP
ZmZzY3JlZW5DYW52YXM6OmNzc1ZhbHVlUG9vbCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3Jl
ZW5DYW52YXM6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9m
ZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyIGNvbnN0KToKKwogMjAyMC0xMS0wMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNjky
MjcpOiBDcmFzaCBpbiBXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFy
ZUZvckRlc3RydWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIxOWRlOWU5MTYyOWEwZDhlOTBmN2YxY2RiZTRl
NmIwYzU3YTg4MWEuLmE3MGY5MjhhNGE1MDZjOTBmODRlNTFiNzA2OTBmN2EyNzFmODQ5NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjAtMTEtMDIgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBFbmFibGUgRG9jdW1lbnQg
YmFzZWQgSW1hZ2VCaXRtYXAgYW5kIE9mZnNjcmVlbkNhbnZhcyBkcmF3aW5nIHRvIGdvIHRocm91
Z2ggR1BVCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTc3MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
b3ZlIHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcigpIGZyb20gV2ViUGFnZSB0byBXZWJQcm9j
ZXNzIGJlY2F1c2UgdGhlCisgICAgICAgIHdvcmtlciBiYXNlZCBJbWFnZUJpdG1hcHMgZG8gbm90
IGhhdmUgYWNjZXNzIHRvIGEgV2ViUGFnZS4gSG93ZXZlciB0aGlzCisgICAgICAgIHBhdGNoIGRv
ZXMgbm90IGNvdmVyIHRoZSB3b3JrZXIgYmFzZWQgY2FzZS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgcHV0SW1h
Z2VEYXRhKCkgbWlnaHQgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGNyZWF0aW5nIHRoZSBJ
bWFnZUJ1ZmZlcgorICAgICAgICBhbmQgYmVmb3JlIHJlY2VpdmluZyB0aGUgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5DcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQKKyAgICAgICAgbWVzc2FnZS4gV2Ug
bmVlZCB0byBoYW5kbGUgZm9yIHRoaXMgY2FzZSBhbmQgYXZvaWQgYXNzZXJ0aW5nLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcDoKKyAgICAgICAgSWYgdGhlIHNpemUgb2YgdGhlIEltYWdlQnVmZmVyIGlzIHZlcnkgYmln
LCBubyByZW1vdGUgSW1hZ2VCdWZmZXIgY2FuIGJlCisgICAgICAgIGNyZWF0ZWQuIFNvIHdlIGhh
dmUgdG8gYmUgYmFpbCBvdXQgcXVpZXRseSBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzaG91bGRV
c2VSZW1vdGVSZW5kZXJpbmdGb3IpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0ZvckNhbnZhcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0Zvcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKIDIwMjAtMTEtMDIgIEphbWVz
IFNhdmFnZSAgPGphbWVzLnNhdmFnZUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlcyB0byBT
V0lGVF9NT0RVTEVfT05MWV9BUkNIUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZjhlMWU1NzQ1YThkZGMxZTEzM2U5
NjJkZjRkOTdkMTdiMDVkZTZjMi4uNGFlMGM4ZmQ2OTNmODEzYzg0ZDU4ODU3ZjBiYTBlYmU3NjQx
NGM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCkBAIC0yOTg4LDcgKzI5ODgsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUobG9naWNhbFNpemUpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUpOworICAgICAgICBhdXRvIGJ1ZmZlciA9
IEltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZy
b21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgbG9naWNhbFNpemUsIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSk7CiAgICAgICAgIGlmICghYnVm
ZmVyKSB7CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAppbmRleCA1MDIxYmQwNmI0ZjA2MGEyMTUz
OGEzNjU1NzU3YTJhZDI0ZDlhYWZjLi5kYzdmZWRiNjg1ZWE3ZjliY2RkOTdiY2I4MDcyOGJmYzY5
MTAyODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlci5o
IgogI2luY2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJGcmFtZVZp
ZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFz
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKQEAgLTY3LDkgKzY4LDkg
QEAgc3RhdGljIFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01v
ZGU6OkFjY2VsZXJhdGVkOwogc3RhdGljIFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9k
ZSA9IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAjZW5kaWYKIAotUmVmPEltYWdlQml0
bWFwPiBJbWFnZUJpdG1hcDo6Y3JlYXRlKEludFNpemUgc2l6ZSkKK1JlZjxJbWFnZUJpdG1hcD4g
SW1hZ2VCaXRtYXA6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIHJldHVybiBjcmVhdGUoeyBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkp
LCBidWZmZXJSZW5kZXJpbmdNb2RlKSB9KTsKKyAgICByZXR1cm4gY3JlYXRlKHsgY3JlYXRlSW1h
Z2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9k
ZSkgfSk7CiB9CiAKIFJlZjxJbWFnZUJpdG1hcD4gSW1hZ2VCaXRtYXA6OmNyZWF0ZShPcHRpb25h
bDxJbWFnZUJpdG1hcEJhY2tpbmc+JiYgYmFja2luZ1N0b3JlKQpAQCAtNzcsNiArNzgsMTMgQEAg
UmVmPEltYWdlQml0bWFwPiBJbWFnZUJpdG1hcDo6Y3JlYXRlKE9wdGlvbmFsPEltYWdlQml0bWFw
QmFja2luZz4mJiBiYWNraW5nU3RvcmUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZUJp
dG1hcChXVEZNb3ZlKGJhY2tpbmdTdG9yZSkpKTsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKK3sKKyAgICBh
dXRvIGRvY3VtZW50ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5pc0RvY3VtZW50KCkgPyAmZG93
bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIDogbnVsbHB0cjsKKyAgICBh
dXRvIGhvc3RXaW5kb3cgPSAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnZpZXcoKSAmJiBkb2N1bWVu
dC0+dmlldygpLT5yb290KCkpID8gZG9jdW1lbnQtPnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93
KCkgOiBudWxscHRyOworICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRl
cmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6Q2Fu
dmFzLCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2U6OlNSR0IsIGhvc3RXaW5kb3cpOworfQor
CiB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltYWdlQml0bWFwOjpTb3VyY2UmJiBzb3VyY2UsIElt
YWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlz
ZSkKIHsKICAgICBXVEY6OnN3aXRjaE9uKHNvdXJjZSwKQEAgLTIyNiwxMiArMjM0LDEyIEBAIHN0
YXRpYyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb25Gb3JQcmVt
dWx0aXBseUFscGhhKEltYWdlQml0CiAgICAgcmV0dXJuIEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlByZW11bHRpcGxpZWQ7CiB9CiAKLXZvaWQgSW1hZ2VCaXRtYXA6OnJlc29sdmVXaXRoQmxhbmtJ
bWFnZUJ1ZmZlcihib29sIG9yaWdpbkNsZWFuLCBQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1h
Z2VCaXRtYXA6OnJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBib29sIG9yaWdpbkNsZWFuLCBQcm9taXNlJiYg
cHJvbWlzZSkKIHsKICAgICAvLyBTb3VyY2UgcmVjdGFuZ2xlIGxpa2VseSBkb2Vzbid0IGludGVy
c2VjdCB0aGUgc291cmNlIGltYWdlLgogICAgIC8vIEJlaGF2aW9yIGlzbid0IHdlbGwgc3BlY2lm
aWVkLCBidXQgV1BUIHRlc3RzIGV4cGVjdCBubyBQcm9taXNlIHJlamVjdGlvbiAoYW5kIG9mIGNv
dXJzZSBubyBjcmFzaGVzKS4KICAgICAvLyBSZXNvbHZlIFByb21pc2Ugd2l0aCBhIGJsYW5rIDF4
MSBJbWFnZUJpdG1hcC4KLSAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KEZsb2F0U2l6ZSgxLCAxKSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byBiaXRtYXBE
YXRhID0gY3JlYXRlSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRmxvYXRTaXpl
KDEsIDEpLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKIAogICAgIC8vIDkuIElmIHRoZSBvcmlnaW4g
b2YgaW1hZ2UncyBpbWFnZSBpcyBub3QgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBvcmlnaW4gc3Bl
Y2lmaWVkIGJ5IHRoZQogICAgIC8vICAgIGVudHJ5IHNldHRpbmdzIG9iamVjdCwgdGhlbiBzZXQg
dGhlIG9yaWdpbi1jbGVhbiBmbGFnIG9mIHRoZSBJbWFnZUJpdG1hcCBvYmplY3QncwpAQCAtMjkx
LDcgKzI5OSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OnJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZl
cihib29sIG9yaWdpbkNsZWFuLCBQcm9taXNlJiYgcHJvbWlzCiAKIC8vIDEzLiBSZXR1cm4gb3V0
cHV0LgogCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4mIGltYWdlRWxlbWVudCwgSW1hZ2VCaXRt
YXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6
OlByb21pc2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SFRNTElt
YWdlRWxlbWVudD4mIGltYWdlRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywg
T3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQog
ewogICAgIC8vIDIuIElmIGltYWdlIGlzIG5vdCBjb21wbGV0ZWx5IGF2YWlsYWJsZSwgdGhlbiBy
ZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGgKICAgICAvLyBhbiAiSW52YWxpZFN0YXRlRXJy
b3IiIERPTUV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC0zNTAsNyArMzU4LDcg
QEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQKICAgICB9CiAKICAgICBhdXRvIG91dHB1dFNpemUg
PSBvdXRwdXRTaXplRm9yU291cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZS5yZXR1cm5WYWx1
ZSgpLCBvcHRpb25zKTsKLSAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KEZsb2F0U2l6ZShvdXRwdXRTaXplLndpZHRoKCksIG91dHB1dFNpemUuaGVpZ2h0KCkpLCBidWZm
ZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSBjcmVhdGVJbWFnZUJ1ZmZl
cihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2Rl
KTsKICAgICBhdXRvIGltYWdlRm9yUmVuZGVyID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVy
ZXIoaW1hZ2VFbGVtZW50LT5yZW5kZXJlcigpKTsKICAgICBpZiAoIWltYWdlRm9yUmVuZGVyKSB7
CiAgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0
ZSBJbWFnZUJpdG1hcCBmcm9tIGltYWdlIHRoYXQgY2FuJ3QgYmUgcmVuZGVyZWQiKTsKQEAgLTM1
OCw3ICszNjYsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudAogICAgIH0KIAogICAgIGlmICgh
Yml0bWFwRGF0YSkgewotICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoIXRhaW50
c09yaWdpbigqY2FjaGVkSW1hZ2UpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgcmVzb2x2
ZVdpdGhCbGFua0ltYWdlQnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICF0YWludHNPcmln
aW4oKmNhY2hlZEltYWdlKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTM4NCwxOSArMzkyLDE5IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21p
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50CiAgICAg
cHJvbWlzZS5yZXNvbHZlKFdURk1vdmUoaW1hZ2VCaXRtYXApKTsKIH0KIAotdm9pZCBJbWFnZUJp
dG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWZQ
dHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBjYW52YXNFbGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMm
JiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYm
IHByb21pc2UpCit2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVu
dD4mIGNhbnZhc0VsZW1lbnQsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFs
PEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKLSAgICBj
cmVhdGVQcm9taXNlKGNvbnRleHQsICpjYW52YXNFbGVtZW50LCBXVEZNb3ZlKG9wdGlvbnMpLCBX
VEZNb3ZlKHJlY3QpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBjcmVhdGVQcm9taXNlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsICpjYW52YXNFbGVtZW50LCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZN
b3ZlKHJlY3QpLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogI2lmIEVOQUJMRShPRkZTQ1JFRU5f
Q0FOVkFTKQotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPiYgY2FudmFzRWxlbWVudCwg
SW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1h
Z2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJv
bWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQ
dHI8T2Zmc2NyZWVuQ2FudmFzPiYgY2FudmFzRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYg
b3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBw
cm9taXNlKQogewotICAgIGNyZWF0ZVByb21pc2UoY29udGV4dCwgKmNhbnZhc0VsZW1lbnQsIFdU
Rk1vdmUob3B0aW9ucyksIFdURk1vdmUocmVjdCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIGNy
ZWF0ZVByb21pc2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgKmNhbnZhc0VsZW1lbnQsIFdURk1v
dmUob3B0aW9ucyksIFdURk1vdmUocmVjdCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogI2VuZGlm
CiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIENhbnZhc0Jhc2UmIGNhbnZhcywgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0
aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQordm9p
ZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBDYW52YXNCYXNlJiBjYW52YXMsIEltYWdlQml0bWFwT3B0aW9u
cyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNl
JiYgcHJvbWlzZSkKIHsKICAgICAvLyAyLiBJZiB0aGUgY2FudmFzIGVsZW1lbnQncyBiaXRtYXAg
aGFzIGVpdGhlciBhIGhvcml6b250YWwgZGltZW5zaW9uIG9yIGEgdmVydGljYWwKICAgICAvLyAg
ICBkaW1lbnNpb24gZXF1YWwgdG8gemVybywgdGhlbiByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVk
IHdpdGggYW4gIkludmFsaWRTdGF0ZUVycm9yIgpAQCAtNDE3LDcgKzQyNSw3IEBAIHZvaWQgSW1h
Z2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENhbnZhc0Jh
c2UmIGNhbnZhcywgSW1hCiAgICAgfQogCiAgICAgYXV0byBvdXRwdXRTaXplID0gb3V0cHV0U2l6
ZUZvclNvdXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUucmV0dXJuVmFsdWUoKSwgb3B0aW9u
cyk7Ci0gICAgYXV0byBiaXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUo
b3V0cHV0U2l6ZS53aWR0aCgpLCBvdXRwdXRTaXplLmhlaWdodCgpKSwgYnVmZmVyUmVuZGVyaW5n
TW9kZSk7CisgICAgYXV0byBiaXRtYXBEYXRhID0gY3JlYXRlSW1hZ2VCdWZmZXIoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgb3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CiAKICAgICBh
dXRvIGltYWdlRm9yUmVuZGVyID0gY2FudmFzLmNvcGllZEltYWdlKCk7CiAgICAgaWYgKCFpbWFn
ZUZvclJlbmRlcikgewpAQCAtNDI2LDcgKzQzNCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENhbnZhc0Jhc2UmIGNhbnZhcywgSW1h
CiAgICAgfQogCiAgICAgaWYgKCFiaXRtYXBEYXRhKSB7Ci0gICAgICAgIHJlc29sdmVXaXRoQmxh
bmtJbWFnZUJ1ZmZlcihjYW52YXMub3JpZ2luQ2xlYW4oKSwgV1RGTW92ZShwcm9taXNlKSk7Cisg
ICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBjYW52YXMub3JpZ2luQ2xlYW4oKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTQ4OSw3ICs0OTcsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQ
cm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAg
ICAgYXV0byBvdXRwdXRTaXplID0gb3V0cHV0U2l6ZUZvclNvdXJjZVJlY3RhbmdsZShzb3VyY2VS
ZWN0YW5nbGUsIG9wdGlvbnMpOwogICAgIGF1dG8gYml0bWFwRGF0YSA9IHZpZGVvLT5jcmVhdGVC
dWZmZXJGb3JQYWludGluZyhvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKICAgICBp
ZiAoIWJpdG1hcERhdGEpIHsKLSAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKCF0
YWludHNPcmlnaW4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigpLCAqdmlk
ZW8pLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVm
ZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICF0YWludHNPcmlnaW4oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5zZWN1cml0eU9yaWdpbigpLCAqdmlkZW8pLCBXVEZNb3ZlKHByb21pc2UpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTM0LDcgKzU0Miw3IEBAIHZvaWQgSW1hZ2VCaXRt
YXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxUeXBlZE9N
Q1NTSW1hZ2VWCiB9CiAjZW5kaWYKIAotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEltYWdlQml0bWFwPiYgZXhpc3RpbmdJbWFn
ZUJpdG1hcCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4g
cmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6
Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBSZWZQdHI8SW1hZ2VCaXRtYXA+JiBleGlzdGluZ0ltYWdlQml0bWFwLCBJbWFnZUJpdG1h
cE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6
UHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgLy8gMi4gSWYgaW1hZ2UncyBbW0RldGFjaGVkXV0g
aW50ZXJuYWwgc2xvdCB2YWx1ZSBpcyB0cnVlLCByZXR1cm4gYSBwcm9taXNlCiAgICAgLy8gICAg
cmVqZWN0ZWQgd2l0aCBhbiAiSW52YWxpZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlvbiBhbmQgYWJv
cnQgdGhlc2Ugc3RlcHMuCkBAIC01NTIsMTAgKzU2MCwxMCBAQCB2b2lkIEltYWdlQml0bWFwOjpj
cmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VCaXRtYXA+
JiBleAogICAgIH0KIAogICAgIGF1dG8gb3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VS
ZWN0YW5nbGUoc291cmNlUmVjdGFuZ2xlLnJldHVyblZhbHVlKCksIG9wdGlvbnMpOwotICAgIGF1
dG8gYml0bWFwRGF0YSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKG91dHB1dFNpemUu
d2lkdGgoKSwgb3V0cHV0U2l6ZS5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOworICAg
IGF1dG8gYml0bWFwRGF0YSA9IGNyZWF0ZUltYWdlQnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUpOwogCiAgICAgaWYgKCFiaXRtYXBE
YXRhKSB7Ci0gICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihleGlzdGluZ0ltYWdl
Qml0bWFwLT5vcmlnaW5DbGVhbigpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgcmVzb2x2
ZVdpdGhCbGFua0ltYWdlQnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGV4aXN0aW5nSW1h
Z2VCaXRtYXAtPm9yaWdpbkNsZWFuKCksIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC02OTgsNyArNzA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVy
KG1fYXJyYXlCdWZmZXJUb1Byb2Nlc3MucmVsZWFzZU5vbk51bGwoKSwgbV9ibG9iLT50eXBlKCks
IG1fYmxvYi0+c2l6ZSgpLCBtX2Jsb2JMb2FkZXIudXJsKCksIFdURk1vdmUobV9vcHRpb25zKSwg
V1RGTW92ZShtX3JlY3QpLCBXVEZNb3ZlKG1fcHJvbWlzZSkpOworICAgICAgICBJbWFnZUJpdG1h
cDo6Y3JlYXRlRnJvbUJ1ZmZlcigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX2FycmF5QnVm
ZmVyVG9Qcm9jZXNzLnJlbGVhc2VOb25OdWxsKCksIG1fYmxvYi0+dHlwZSgpLCBtX2Jsb2ItPnNp
emUoKSwgbV9ibG9iTG9hZGVyLnVybCgpLCBXVEZNb3ZlKG1fb3B0aW9ucyksIFdURk1vdmUobV9y
ZWN0KSwgV1RGTW92ZShtX3Byb21pc2UpKTsKICAgICB9CiAKICAgICBGaWxlUmVhZGVyTG9hZGVy
IG1fYmxvYkxvYWRlcjsKQEAgLTcxMCwxNCArNzE4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IG1fYXJyYXlCdWZmZXJUb1Byb2Nlc3M7CiB9OwogCi12b2lkIEltYWdlQml0
bWFwOjpjcmVhdGVGcm9tQnVmZmVyKAotICAgIFJlZjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZl
ciwKLSAgICBTdHJpbmcgbWltZVR5cGUsCi0gICAgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExl
bmd0aCwKLSAgICBjb25zdCBVUkwmIHNvdXJjZVVybCwKLSAgICBJbWFnZUJpdG1hcE9wdGlvbnMm
JiBvcHRpb25zLAotICAgIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsCi0gICAgSW1hZ2VCaXRtYXA6
OlByb21pc2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWY8QXJyYXlC
dWZmZXI+JiYgYXJyYXlCdWZmZXIsIFN0cmluZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVk
Q29udGVudExlbmd0aCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIEltYWdlQml0bWFwT3B0aW9ucyYm
IG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIFByb21pc2UmJiBwcm9taXNlKQogewog
ICAgIGlmICghYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkgewogICAgICAgICBwcm9taXNlLnJl
amVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgYW4gSW1hZ2VCaXRtYXAgZnJv
bSBhbiBlbXB0eSBidWZmZXIiKTsKQEAgLTcyNSw3ICs3MjYsNyBAQCB2b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVGcm9tQnVmZmVyKAogICAgIH0KIAogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5k
YXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICBhdXRvIG9ic2VydmVyID0g
SW1hZ2VCaXRtYXBJbWFnZU9ic2VydmVyOjpjcmVhdGUobWltZVR5cGUsIGV4cGVjdGVkQ29udGVu
dExlbmd0aCwgc291cmNlVXJsKTsKKyAgICBhdXRvIG9ic2VydmVyID0gSW1hZ2VCaXRtYXBJbWFn
ZU9ic2VydmVyOjpjcmVhdGUobWltZVR5cGUsIGV4cGVjdGVkQ29udGVudExlbmd0aCwgc291cmNl
VVJMKTsKICAgICBhdXRvIGltYWdlID0gSW1hZ2U6OmNyZWF0ZShvYnNlcnZlci5nZXQoKSk7CiAg
ICAgaWYgKCFpbWFnZSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJv
ciwgIlRoZSB0eXBlIG9mIHRoZSBhcmd1bWVudCB0byBjcmVhdGVJbWFnZUJpdG1hcCBpcyBub3Qg
c3VwcG9ydGVkIik7CkBAIC03NDUsNyArNzQ2LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRl
RnJvbUJ1ZmZlcigKICAgICB9CiAKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9y
U291cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZS5yZXR1cm5WYWx1ZSgpLCBvcHRpb25zKTsK
LSAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShvdXRw
dXRTaXplLndpZHRoKCksIG91dHB1dFNpemUuaGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2Rl
KTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSBjcmVhdGVJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKICAgICBpZiAoIWJp
dG1hcERhdGEpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJD
YW5ub3QgY3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBmcm9tIHRoZSBhcmd1bWVudCB0byBjcmVhdGVJ
bWFnZUJpdG1hcCIpOwogICAgICAgICByZXR1cm47CkBAIC03NjksNyArNzcwLDcgQEAgdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LAogICAgIFBlbmRpbmdJbWFnZUJpdG1hcDo6ZmV0Y2goc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgV1RGTW92ZShibG9iKSwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShy
ZWN0KSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVBy
b21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZURhdGE+JiBpbWFnZURh
dGEsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3Qs
IEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
UmVmUHRyPEltYWdlRGF0YT4mIGltYWdlRGF0YSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9u
cywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNl
KQogewogICAgIC8vIDYuMS4gTGV0IGJ1ZmZlciBiZSBpbWFnZSdzIGRhdGEgYXR0cmlidXRlIHZh
bHVlJ3MgW1tWaWV3ZWRBcnJheUJ1ZmZlcl1dCiAgICAgLy8gICAgICBpbnRlcm5hbCBzbG90LgpA
QCAtNzg5LDEwICs3OTAsMTAgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEltYWdlRGF0YT4mIGltYWcKICAgICB9CiAKICAg
ICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291cmNlUmVjdGFuZ2xlKHNvdXJjZVJl
Y3RhbmdsZS5yZXR1cm5WYWx1ZSgpLCBvcHRpb25zKTsKLSAgICBhdXRvIGJpdG1hcERhdGEgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShvdXRwdXRTaXplLndpZHRoKCksIG91dHB1dFNp
emUuaGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGJpdG1hcERhdGEg
PSBjcmVhdGVJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBvdXRwdXRTaXplLCBi
dWZmZXJSZW5kZXJpbmdNb2RlKTsKIAogICAgIGlmICghYml0bWFwRGF0YSkgewotICAgICAgICBy
ZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIodHJ1ZSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAg
ICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0
cnVlLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODEx
LDcgKzgxMiw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZURhdGE+JiBpbWFnCiAKICAgICAvLyA2LjMuIFNldCBp
bWFnZUJpdG1hcCdzIGJpdG1hcCBkYXRhIHRvIGltYWdlJ3MgaW1hZ2UgZGF0YSwgY3JvcHBlZCB0
byB0aGUKICAgICAvLyAgICAgIHNvdXJjZSByZWN0YW5nbGUgd2l0aCBmb3JtYXR0aW5nLgotICAg
IGF1dG8gdGVtcEJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShpbWFn
ZURhdGEtPndpZHRoKCksIGltYWdlRGF0YS0+aGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2Rl
KTsKKyAgICBhdXRvIHRlbXBCaXRtYXBEYXRhID0gY3JlYXRlSW1hZ2VCdWZmZXIoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgaW1hZ2VEYXRhLT5zaXplKCksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOwog
ICAgIHRlbXBCaXRtYXBEYXRhLT5wdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkLCAqaW1hZ2VEYXRhLCBJbnRSZWN0KDAsIDAsIGltYWdlRGF0YS0+d2lk
dGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSksIHsgfSwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7
CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7CiAgICAg
Yml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqdGVtcEJpdG1hcERhdGEsIGRl
c3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xh
dGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSksIGltYWdl
T3JpZW50YXRpb25Gb3JPcmllbnRhdGlvbihvcHRpb25zLmltYWdlT3JpZW50YXRpb24pIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCmluZGV4IDAxZjI4M2Q5ODA1MTY3NjNlY2E4OWY2MjJk
ZjJmZDEzNTc2OGU4NTMuLmMzODlkYzY2ODI1YzI3ZTI1NWFjODgwYWE5OTY0ZTBjMDFlYjhjYTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgKQEAgLTgyLDcgKzgyLDkgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNv
dXJjZSYmLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgUHJvbWlzZSYmKTsKICAgICBzdGF0aWMgdm9p
ZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTb3VyY2UmJiwgSW1hZ2VC
aXRtYXBPcHRpb25zJiYsIGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwgUHJvbWlzZSYm
KTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VCaXRtYXA+IGNyZWF0ZShJbnRTaXplKTsKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlID0gMSk7CisKKyAgICBzdGF0aWMgUmVmPEltYWdlQml0bWFwPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEludFNpemUmKTsKICAgICBzdGF0
aWMgUmVmPEltYWdlQml0bWFwPiBjcmVhdGUoT3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPiYm
KTsKIAogICAgIH5JbWFnZUJpdG1hcCgpOwpAQCAtMTEyLDcgKzExNCw3IEBAIHByaXZhdGU6CiAK
ICAgICBJbWFnZUJpdG1hcChPcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+JiYpOwogCi0gICAg
c3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKGJvb2wgb3JpZ2luQ2xlYW4s
IFByb21pc2UmJik7CisgICAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBib29sIG9yaWdpbkNsZWFuLCBQcm9taXNlJiYpOwog
CiAgICAgc3RhdGljIHZvaWQgY3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
UmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFs
PEludFJlY3Q+LCBQcm9taXNlJiYpOwogI2lmIEVOQUJMRShWSURFTykKQEAgLTEyNyw3ICsxMjks
NyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFJlZlB0cjxCbG9iPiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25h
bDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VEYXRhPiYsIEltYWdlQml0bWFwT3B0
aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKICAgICBzdGF0aWMgdm9pZCBj
cmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8VHlwZWRPTUNTU0lt
YWdlVmFsdWU+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9t
aXNlJiYpOwotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZyb21CdWZmZXIoUmVmPEFycmF5QnVmZmVy
PiYmLCBTdHJpbmcgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNv
bnN0IFVSTCYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlz
ZSYmKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFN0cmluZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4
cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgVVJMJiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9w
dGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwogCiAgICAgT3B0aW9uYWw8SW1hZ2VCaXRtYXBC
YWNraW5nPiBtX2JhY2tpbmdTdG9yZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL09mZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNh
bnZhcy5jcHAKaW5kZXggNTI3M2VhMTMwODdhYTdkY2Q4N2NhNGIzNDA4ZmNiYjJjNmM5NjI2OC4u
ZjZjMTRiY2QyMzdmMzRmYjgzYzk5ZDM2ZTE4NTM4ZjllMDI5MDE4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtNzMsMTQgKzczLDE0IEBAIFdlYWtQdHI8SFRN
TENhbnZhc0VsZW1lbnQ+IERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzOjp0YWtlUGxhY2Vob2xkZXJD
YW52YXMoKQogICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fcGxhY2Vob2xkZXJDYW52YXMsIG51
bGxwdHIpOwogfQogCi1SZWY8T2Zmc2NyZWVuQ2FudmFzPiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWdu
ZWQgaGVpZ2h0KQorUmVmPE9mZnNjcmVlbkNhbnZhcz4gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdW5zaWduZWQg
d2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZz
Y3JlZW5DYW52YXMoY29udGV4dCwgd2lkdGgsIGhlaWdodCkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE9mZnNjcmVlbkNhbnZhcyhzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB3aWR0aCwgaGVp
Z2h0KSk7CiB9CiAKLVJlZjxPZmZzY3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hl
ZE9mZnNjcmVlbkNhbnZhcz4mJiBkZXRhY2hlZENhbnZhcykKK1JlZjxPZmZzY3JlZW5DYW52YXM+
IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4m
JiBkZXRhY2hlZENhbnZhcykKIHsKLSAgICBSZWY8T2Zmc2NyZWVuQ2FudmFzPiBjbG9uZSA9IGFk
b3B0UmVmKCpuZXcgT2Zmc2NyZWVuQ2FudmFzKGNvbnRleHQsIGRldGFjaGVkQ2FudmFzLT5zaXpl
KCkud2lkdGgoKSwgZGV0YWNoZWRDYW52YXMtPnNpemUoKS5oZWlnaHQoKSkpOworICAgIFJlZjxP
ZmZzY3JlZW5DYW52YXM+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgZGV0YWNoZWRDYW52YXMtPnNpemUoKS53aWR0aCgpLCBkZXRh
Y2hlZENhbnZhcy0+c2l6ZSgpLmhlaWdodCgpKSk7CiAgICAgY2xvbmUtPnNldEltYWdlQnVmZmVy
KGRldGFjaGVkQ2FudmFzLT50YWtlSW1hZ2VCdWZmZXIoKSk7CiAgICAgaWYgKCFkZXRhY2hlZENh
bnZhcy0+b3JpZ2luQ2xlYW4oKSkKICAgICAgICAgY2xvbmUtPnNldE9yaWdpblRhaW50ZWQoKTsK
QEAgLTk4LDE2ICs5OCwxNiBAQCBSZWY8T2Zmc2NyZWVuQ2FudmFzPiBPZmZzY3JlZW5DYW52YXM6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdAogICAgIHJldHVybiBj
bG9uZTsKIH0KIAotUmVmPE9mZnNjcmVlbkNhbnZhcz4gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZh
cykKK1JlZjxPZmZzY3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEhUTUxDYW52YXNFbGVtZW50
JiBjYW52YXMpCiB7Ci0gICAgYXV0byBvZmZzY3JlZW4gPSBhZG9wdFJlZigqbmV3IE9mZnNjcmVl
bkNhbnZhcyhjb250ZXh0LCBjYW52YXMud2lkdGgoKSwgY2FudmFzLmhlaWdodCgpKSk7CisgICAg
YXV0byBvZmZzY3JlZW4gPSBhZG9wdFJlZigqbmV3IE9mZnNjcmVlbkNhbnZhcyhzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBjYW52YXMud2lkdGgoKSwgY2FudmFzLmhlaWdodCgpKSk7CiAgICAgb2Zm
c2NyZWVuLT5zZXRQbGFjZWhvbGRlckNhbnZhcyhjYW52YXMpOwogICAgIHJldHVybiBvZmZzY3Jl
ZW47CiB9CiAKLU9mZnNjcmVlbkNhbnZhczo6T2Zmc2NyZWVuQ2FudmFzKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCitPZmZz
Y3JlZW5DYW52YXM6Ok9mZnNjcmVlbkNhbnZhcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogICAg
IDogQ2FudmFzQmFzZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKQotICAgICwgQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXIoJmNvbnRleHQpCisgICAgLCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cigmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAsIG1fcGxhY2Vob2xkZXJEYXRhKFBsYWNl
aG9sZGVyRGF0YTo6Y3JlYXRlKCkpCiB7CiB9CkBAIC0xNzksMTMgKzE3OSwxMyBAQCB2b2lkIE9m
ZnNjcmVlbkNhbnZhczo6Y3JlYXRlQ29udGV4dFdlYkdMKFJlbmRlcmluZ0NvbnRleHRUeXBlIGNv
bnRleHRUeXBlLCBXZWJHTAogewogICAgIEFTU0VSVCghbV9jb250ZXh0KTsKIAotICAgIGF1dG8g
Y29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dC0+aXNX
b3JrZXJHbG9iYWxTY29wZSgpKSB7CisgICAgYXV0byBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
dGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmIChzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgV29ya2VyR2xvYmFsU2Nv
cGUmIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpjb250
ZXh0KTsKICAgICAgICAgaWYgKCFzaG91bGRFbmFibGVXZWJHTCh3b3JrZXJHbG9iYWxTY29wZS53
ZWJHTEVuYWJsZWQoKSwgd29ya2VyR2xvYmFsU2NvcGUuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQoKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNlIGlmIChjb250ZXh0LT5p
c0RvY3VtZW50KCkpIHsKLSAgICAgICAgYXV0byYgc2V0dGluZ3MgPSBkb3duY2FzdDxEb2N1bWVu
dD4oKmNvbnRleHQpLnNldHRpbmdzKCk7CisgICAgfSBlbHNlIGlmIChzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5pc0RvY3VtZW50KCkpIHsKKyAgICAgICAgYXV0byYgc2V0dGluZ3MgPSBkb3duY2Fz
dDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnNldHRpbmdzKCk7CiAgICAgICAg
IGlmICghc2hvdWxkRW5hYmxlV2ViR0woc2V0dGluZ3Mud2ViR0xFbmFibGVkKCksIHNldHRpbmdz
LmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgIH0gZWxzZQpAQCAtMjU0LDggKzI1NCwxMCBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VC
aXRtYXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpCiAgICAgICAg
IGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAgICAgICAgICByZXR1cm4geyBSZWZQdHI8
SW1hZ2VCaXRtYXA+IHsgbnVsbHB0ciB9IH07CiAKLSAgICAgICAgaWYgKCFtX2hhc0NyZWF0ZWRJ
bWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7IEltYWdlQml0bWFwOjpjcmVhdGUoSW1h
Z2VCaXRtYXBCYWNraW5nKEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkKSkpIH07CisgICAgICAgIGlmICghbV9oYXNDcmVhdGVkSW1hZ2VCdWZm
ZXIpIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdl
QnVmZmVyKCpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzaXplKCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOworICAgICAgICAgICAgcmV0dXJuIHsgSW1hZ2VCaXRt
YXA6OmNyZWF0ZShJbWFnZUJpdG1hcEJhY2tpbmcoV1RGTW92ZShidWZmZXIpKSkgfTsKKyAgICAg
ICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gdGFrZUltYWdlQnVmZmVyKCk7CiAgICAgICAg
IGlmICghYnVmZmVyKQpAQCAtMjcyLDcgKzI3NCw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFn
ZUJpdG1hcD4+IE9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKCkKICAgICAg
ICAgLy8gc3RvcmUgZnJvbSB0aGlzIGNhbnZhcyAob3IgaXRzIGNvbnRleHQpLCBidXQgZm9yIG5v
dyB3ZSdsbCBqdXN0CiAgICAgICAgIC8vIGNyZWF0ZSBhIG5ldyBiaXRtYXAgYW5kIHBhaW50IGlu
dG8gaXQuCiAKLSAgICAgICAgYXV0byBpbWFnZUJpdG1hcCA9IEltYWdlQml0bWFwOjpjcmVhdGUo
c2l6ZSgpKTsKKyAgICAgICAgYXV0byBpbWFnZUJpdG1hcCA9IEltYWdlQml0bWFwOjpjcmVhdGUo
KmNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNpemUoKSk7CiAgICAgICAgIGlm
ICghaW1hZ2VCaXRtYXAtPmJ1ZmZlcigpKQogICAgICAgICAgICAgcmV0dXJuIHsgUmVmUHRyPElt
YWdlQml0bWFwPiB7IG51bGxwdHIgfSB9OwogCkBAIC0zNjgsMTEgKzM3MCwxMSBAQCB2b2lkIE9m
ZnNjcmVlbkNhbnZhczo6Y2xlYXJDb3BpZWRJbWFnZSgpIGNvbnN0CiAKIFNlY3VyaXR5T3JpZ2lu
KiBPZmZzY3JlZW5DYW52YXM6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKLSAgICBhdXRvJiBj
b250ZXh0ID0gKmNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKGlz
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuICZkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudG9wT3JpZ2luKCk7CisgICAgYXV0byYgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCA9ICpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwor
ICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCisg
ICAgICAgIHJldHVybiAmZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpLnRvcE9yaWdpbigpOwogCi0gICAgcmV0dXJuICZkb3duY2FzdDxEb2N1bWVudD4o
Y29udGV4dCkuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICByZXR1cm4gJmRvd25jYXN0PERvY3VtZW50
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zZWN1cml0eU9yaWdpbigpOwogfQogCiBib29sIE9m
ZnNjcmVlbkNhbnZhczo6Y2FuRGV0YWNoKCkgY29uc3QKQEAgLTQ1MSwxMSArNDUzLDExIEBAIHZv
aWQgT2Zmc2NyZWVuQ2FudmFzOjpzY2hlZHVsZUNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMoKQog
CiBDU1NWYWx1ZVBvb2wmIE9mZnNjcmVlbkNhbnZhczo6Y3NzVmFsdWVQb29sKCkKIHsKLSAgICBh
dXRvKiBjb250ZXh0ID0gY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBp
ZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKQotICAgICAgICByZXR1cm4gZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpjb250ZXh0KS5jc3NWYWx1ZVBvb2woKTsKKyAgICBhdXRv
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKKyAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29w
ZSgpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KS5jc3NWYWx1ZVBvb2woKTsKIAotICAgIEFTU0VSVChjb250ZXh0LT5p
c0RvY3VtZW50KCkpOworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3Vt
ZW50KCkpOwogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogfQogCkBAIC00
NjYsNyArNDY4LDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZUltYWdlQnVmZmVyKCkg
Y29uc3QKICAgICBpZiAoIXdpZHRoKCkgfHwgIWhlaWdodCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCkpOworICAgIHNldEltYWdlQnVmZmVyKEltYWdlQml0bWFwOjpj
cmVhdGVJbWFnZUJ1ZmZlcigqY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2l6
ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gT2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIoKSBjb25zdApA
QCAtNDgyLDcgKzQ4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gT2Zmc2NyZWVu
Q2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIoKSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIGNsZWFyQ29waWVkSW1hZ2UoKTsKLSAgICByZXR1cm4gc2V0SW1hZ2VCdWZmZXIobV9k
ZXRhY2hlZCA/IG51bGxwdHIgOiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCkpOworICAgIHJldHVybiBzZXRJbWFnZUJ1ZmZlcihtX2RldGFj
aGVkID8gbnVsbHB0ciA6IEltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqY2FudmFzQmFz
ZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkKSk7CiB9CiAKIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpyZXNldCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCmluZGV4IDIyNjRlYmNiNjY2NGQ3MWZmZjBhNDAwNDJmYjI1NDJjYTgw
NjZlYjQuLmU0MDM2NzZjNDg2NTNmZWY4MmUzNWY2MjlmYmM5ZjE0YTRlNGZiYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHJvdGVjdGVkOgogICAg
IHsKICAgICAgICAgLy8gVGhlIG1hdGggaW5zaWRlIEltYWdlRGF0YTo6Y3JlYXRlKCkgZG9lc24n
dCBhZ3JlZSB3aXRoIHRoZSBtYXRoIGluc2lkZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dEltYWdl
RGF0YSgpIGFib3V0IGhvdyBtX3Jlc29sdXRpb25TY2FsZSBpbnRlcmFjdHMgd2l0aCB0aGUgZGF0
YSBpbiB0aGUgSW1hZ2VCdWZmZXIuCiAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBwdXRJbWFn
ZURhdGEoKSBpcyBvbmx5IGNhbGxlZCB3aGVuIG1fcmVzb2x1dGlvblNjYWxlID09IDEuCi0gICAg
ICAgIEFTU0VSVChtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpID09IDEpOworICAgICAgICBB
U1NFUlRfSU1QTElFUyhtX2JhY2tlbmQsIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCkgPT0g
MSk7CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5wdXRJbWFnZURhdGEoaW5w
dXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsKICAg
ICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCgpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA3YTAxOTMwYWI2NmM0NDczMDUxMDkz
MDM0ZDRmMzZkMmMwZTY0OGEyLi40M2M1OWUyNDRmOTNlNTdlNmQ3ZjE2Mzg3ODRmYzQzYzE0N2Vi
MWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0xMDMs
NyArMTAzLDYgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnMKICAgICAgICAgcmV0dXJuIGltYWdl
QnVmZmVyOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBu
dWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDI0NDUyYjY4MmY0OTNmMDQw
M2RjZmU2MWJjYWE3MjBjNmU0ZmEwOGIuLmI2ODllMTRhOWU3ZTczMjg1MzhmY2QyYjNkNTA2MmEw
OTI2ZTgwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC05MTIsNyArOTEyLDcgQEAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBXZWJDaHJvbWVDbGllbnQ6OmVuc3VyZVJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSgKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBXZWJD
aHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKSBjb25zdAogewotICAgIGlm
ICghbV9wYWdlLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihwdXJwb3NlKSkKKyAgICBpZiAo
IVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihwdXJw
b3NlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gZW5zdXJlUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5n
TW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYjE0OGNlODU4MjliYjRiNGY2MGU2NDhh
OTI4YjdhMzM0MjgxNjMyZS4uZmU5MDg2MDE0MDQyMzE2YjIzMTI3YjdiNmVhNGRlNzBmOTY5ZTFj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTM4MDUsNiArMzgwNSw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgc3RhdGljX2Nhc3Q8V2ViTWVkaWFTdHJh
dGVneSY+KHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkpLnNldFVzZUdQVVBy
b2Nlc3Moc2V0dGluZ3MudXNlR1BVUHJvY2Vzc0Zvck1lZGlhRW5hYmxlZCgpKTsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcj4o
KS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0dGluZ3MpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShzZXR0aW5ncy51c2VHUFVQcm9jZXNzRm9yTWVk
aWFFbmFibGVkKCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nl
c3NGb3JDYW52YXMobV9zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MpOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQpAQCAtNzIyMSwyMyArNzIyMiw2IEBAIHZvaWQg
V2ViUGFnZTo6c3luY2hyb25pemVDT1JTRGlzYWJsaW5nUGF0dGVybnNXaXRoTmV0d29ya1Byb2Nl
c3MoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6U2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKG1faWRlbnRpZmllciwgbV9jb3Jz
RGlzYWJsaW5nUGF0dGVybnMpLCAwKTsKIH0KIAotYm9vbCBXZWJQYWdlOjpzaG91bGRVc2VSZW1v
dGVSZW5kZXJpbmdGb3IoUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlKQotewotI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKLSAgICBzd2l0Y2ggKHB1cnBvc2UpIHsKLSAgICBjYXNlIFJlbmRlcmluZ1B1
cnBvc2U6OkNhbnZhczoKLSAgICAgICAgcmV0dXJuIG1fc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQ
cm9jZXNzOwotICAgIGNhc2UgUmVuZGVyaW5nUHVycG9zZTo6TWVkaWFQYWludGluZzoKLSAgICAg
ICAgcmV0dXJuIG1fcGFnZS0+c2V0dGluZ3MoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVk
KCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0ocHVycG9zZSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiBF
TkFCTEUoTUVESUFfVVNBR0UpCiB2b2lkIFdlYlBhZ2U6OmFkZE1lZGlhVXNhZ2VNYW5hZ2VyU2Vz
c2lvbihNZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYnVu
ZGxlSWRlbnRpZmllciwgY29uc3QgVVJMJiBwYWdlVVJMKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGYwNWZjODA2M2M3ZjEwZDNhOTg4YjcwMjY5
OTdhZWQyOTRkMWYzZjkuLjU5MjViMDVlNzFhYWI4MWM4ZWRlZjJlNzdmMDQzMzRjNjcyYjc2MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTc3LDcg
Kzc3LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BvaW50ZXJJ
RC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgpAQCAtMTM2Miw4ICsx
MzYxLDYgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtz
KCkgeyByZXR1cm4gbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M7IH0KICNlbmRpZgog
Ci0gICAgYm9vbCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5n
UHVycG9zZSk7Ci0KICNpZiBFTkFCTEUoTUVESUFfVVNBR0UpCiAgICAgdm9pZCBhZGRNZWRpYVVz
YWdlTWFuYWdlclNlc3Npb24oV2ViQ29yZTo6TWVkaWFTZXNzaW9uSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgVVJMJik7CiAgICAgdm9pZCB1cGRhdGVNZWRpYVVzYWdlTWFuYWdlclNl
c3Npb25TdGF0ZShXZWJDb3JlOjpNZWRpYVNlc3Npb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpNZWRpYVVzYWdlSW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IGRmYTU3YzY1NWFkYTdjZjk3MTg5Yjc1N2M1OWFhOTAxOTUwYWE5ZTguLjIyNTkwMjAy
ODk1MjZmNGZkMTQ3NzNjYzM3YWFkZTM5MDVjNjRlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTIwMTMsNiArMjAxMywxMSBAQCB2b2lkIFdlYlByb2Nlc3M6
OnNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YUltbWVkaWF0ZWx5KENvbXBsZXRpb25IYW5k
bGVyPHZvaQogI2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCit2b2lkIFdlYlByb2Nl
c3M6OnNldFVzZUdQVVByb2Nlc3NGb3JDYW52YXMoYm9vbCB1c2VHUFVQcm9jZXNzRm9yQ2FudmFz
KQoreworICAgIG1fdXNlR1BVUHJvY2Vzc0ZvckNhbnZhcyA9IHVzZUdQVVByb2Nlc3NGb3JDYW52
YXM7Cit9CisKIHZvaWQgV2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKGJvb2wg
dXNlR1BVUHJvY2Vzc0Zvck1lZGlhKQogewogICAgIGlmICh1c2VHUFVQcm9jZXNzRm9yTWVkaWEg
PT0gbV91c2VHUFVQcm9jZXNzRm9yTWVkaWEpCkBAIC0yMDUxLDYgKzIwNTYsMTkgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpzZXRVc2VHUFVQcm9jZXNzRm9yTWVkaWEoYm9vbCB1c2VHUFVQcm9jZXNzRm9y
TWVkaWEpCiAgICAgICAgIExlZ2FjeUNETTo6cmVzZXRGYWN0b3JpZXMoKTsKICNlbmRpZgogfQor
Citib29sIFdlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQ
dXJwb3NlIHB1cnBvc2UpCit7CisgICAgc3dpdGNoIChwdXJwb3NlKSB7CisgICAgY2FzZSBSZW5k
ZXJpbmdQdXJwb3NlOjpDYW52YXM6CisgICAgICAgIHJldHVybiBtX3VzZUdQVVByb2Nlc3NGb3JD
YW52YXM7CisgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpNZWRpYVBhaW50aW5nOgorICAgICAg
ICByZXR1cm4gbV91c2VHUFVQcm9jZXNzRm9yTWVkaWE7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxF
KFZQOSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGU4OTQ4ZTkxN2Nl
Mjk1NDdlNGUwMTdhMTVlNGEyMDBkZjEzOTgxNzMuLmRjN2IxNmE1NTgzM2EwNjM2ZmQxMGVkMTJl
ZmFlNTJiZjEzNTAwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAt
NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxl
RG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+
CiAjaW5jbHVkZSA8cGFsL0h5c3RlcmVzaXNBY3Rpdml0eS5oPgpAQCAtMzQ0LDcgKzM0NSw5IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIHZvaWQgc2V0
VXNlR1BVUHJvY2Vzc0ZvckNhbnZhcyhib29sKTsKICAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NG
b3JNZWRpYShib29sKTsKKyAgICBib29sIHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihXZWJD
b3JlOjpSZW5kZXJpbmdQdXJwb3NlKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKQEAgLTY4
Nyw3ICs2OTAsMTAgQEAgcHJpdmF0ZToKICAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IG1fcGVu
ZGluZ1Bhc3RlYm9hcmRXcml0ZUNvdW50czsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQorICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9yQ2FudmFzIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fdXNlR1BVUHJvY2Vzc0Zvck1lZGlhIHsgZmFsc2UgfTsKKyNlbmRpZgogCiAjaWYgRU5B
QkxFKFZQOSkKICAgICBib29sIG1fdnA5RGVjb2RlckVuYWJsZWQgeyBmYWxzZSB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413006</attachid>
            <date>2020-11-02 23:38:49 -0800</date>
            <delta_ts>2020-11-03 23:57:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217735-20201102233848.patch</filename>
            <type>text/plain</type>
            <size>35471</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5Mjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWRkMWM0ZTU0N2Q1ZWVh
NGEzMzNlZGI5ZDUxMzE0M2RiZjgzYzU0ZC4uOTAwMGNmNzgzZGQyODhmNDEwODU4ZDgwZTBjYmFj
MTBmODg4ZDFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIwLTExLTAyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
RW5hYmxlIERvY3VtZW50IGJhc2VkIEltYWdlQml0bWFwIGFuZCBPZmZzY3JlZW5DYW52YXMgZHJh
d2luZyB0byBnbyB0aHJvdWdoIEdQVQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3NzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHN0YXRpYyBtZXRob2QgSW1hZ2VCaXRtYXA6OmNyZWF0
ZUltYWdlQnVmZmVyKCkgd2hpY2ggdGFrZXMgYQorICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0LiBJdCBnZXRzIEhvc3RXaW5kb3cgZnJvbSBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorICAg
ICAgICBJZiBhIEhvc3RXaW5kb3cgZXhpc3RzLCBjcmVhdGluZyB0aGUgSW1hZ2VCdWZmZXIgd2ls
bCBiZSBkZWxlZ2F0ZWQgdG8KKyAgICAgICAgV2ViQ2hyb21lQ2xpZW50IHdoaWNoIHdpbGwgY3Jl
YXRlIGEgUmVtb3RlSW1hZ2VCdWZmZXIgaW4gV2ViIFByb2Nlc3MgYW5kCisgICAgICAgIGEgUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eSBpbiB0aGUgR1BVIFByb2Nlc3MuCisKKyAgICAgICAgUmVuYW1l
IGFsbCB0aGUgdmFyaWFibGVzIG9mIHR5cGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB0byAnc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCcKKyAgICAgICAgdG8gYXZvaWQgY29uZnVzaW5nIGl0IHdpdGgg
R3JhcGhpY3NDb250ZXh0LCBDYW52YXNSZW5kZXJpbmdDb250ZXh0IGFuZAorICAgICAgICBXZWJH
TFJlbmRlcmluZ0NvbnRleHQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJ
bWFnZUJpdG1hcCk6CisgICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0
bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6
cmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0
bWFwOjpjcmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVh
dGVGcm9tQnVmZmVyKToKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmg6CisgICAgICAgICog
aHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpPZmZzY3Jl
ZW5DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGVDb250
ZXh0V2ViR0wpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjp0cmFuc2ZlclRv
SW1hZ2VCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpzZWN1cml0
eU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OmNzc1Zh
bHVlUG9vbCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZUltYWdl
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6dGFrZUlt
YWdlQnVmZmVyIGNvbnN0KToKKwogMjAyMC0xMS0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNjkyMjcpOiBDcmFzaCBpbiBXZWJDb3Jl
OjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGIxOWRlOWU5MTYyOWEwZDhlOTBmN2YxY2RiZTRlNmIwYzU3YTg4MWEuLmE3MGY5Mjhh
NGE1MDZjOTBmODRlNTFiNzA2OTBmN2EyNzFmODQ5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMjAtMTEtMDIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0dQVSBQcm9jZXNzXSBFbmFibGUgRG9jdW1lbnQgYmFzZWQgSW1hZ2VCaXRtYXAgYW5k
IE9mZnNjcmVlbkNhbnZhcyBkcmF3aW5nIHRvIGdvIHRocm91Z2ggR1BVCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHNob3VsZFVzZVJlbW90ZVJl
bmRlcmluZ0ZvcigpIGZyb20gV2ViUGFnZSB0byBXZWJQcm9jZXNzIGJlY2F1c2UgdGhlCisgICAg
ICAgIHdvcmtlciBiYXNlZCBJbWFnZUJpdG1hcHMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIGEgV2Vi
UGFnZS4gSG93ZXZlciB0aGlzCisgICAgICAgIHBhdGNoIGRvZXMgbm90IGNvdmVyIHRoZSB3b3Jr
ZXIgYmFzZWQgY2FzZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgcHV0SW1hZ2VEYXRhKCkgbWlnaHQgYmUgY2Fs
bGVkIGltbWVkaWF0ZWx5IGFmdGVyIGNyZWF0aW5nIHRoZSBJbWFnZUJ1ZmZlcgorICAgICAgICBh
bmQgYmVmb3JlIHJlY2VpdmluZyB0aGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5DcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQKKyAgICAgICAgbWVzc2FnZS4gV2UgbmVlZCB0byBoYW5kbGUgZm9yIHRo
aXMgY2FzZSBhbmQgYXZvaWQgYXNzZXJ0aW5nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgSWYgdGhl
IHNpemUgb2YgdGhlIEltYWdlQnVmZmVyIGlzIHZlcnkgYmlnLCBubyByZW1vdGUgSW1hZ2VCdWZm
ZXIgY2FuIGJlCisgICAgICAgIGNyZWF0ZWQuIFNvIHdlIGhhdmUgdG8gYmUgYmFpbCBvdXQgcXVp
ZXRseSBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6
Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3Ip
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0ZvckNhbnZhcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0Zvcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmg6CisKIDIwMjAtMTEtMDIgIEphbWVzIFNhdmFnZSAgPGphbWVzLnNhdmFn
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlcyB0byBTV0lGVF9NT0RVTEVfT05MWV9BUkNI
UwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKaW5kZXggZjhlMWU1NzQ1YThkZGMxZTEzM2U5NjJkZjRkOTdkMTdiMDVkZTZjMi4u
NGFlMGM4ZmQ2OTNmODEzYzg0ZDU4ODU3ZjBiYTBlYmU3NjQxNGM4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0y
OTg4LDcgKzI5ODgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShG
bG9hdFNpemUobG9naWNhbFNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCByZXNv
bHV0aW9uU2NhbGUpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQml0bWFwOjpjcmVhdGVJ
bWFnZUJ1ZmZlcigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IHJlc29sdXRpb25TY2FsZSk7CiAgICAgICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgICAgICBm
YWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
Qml0bWFwLmNwcAppbmRleCA1MDIxYmQwNmI0ZjA2MGEyMTUzOGEzNjU1NzU3YTJhZDI0ZDlhYWZj
Li5kYzdmZWRiNjg1ZWE3ZjliY2RkOTdiY2I4MDcyOGJmYzY5MTAyODhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlQml0bWFwLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlv
bk9yLmgiCiAjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlci5oIgogI2luY2x1ZGUgIkZpbGVSZWFk
ZXJMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKQEAgLTY3LDkgKzY4LDkgQEAgc3RhdGljIFJlbmRlcmluZ01v
ZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkOwogc3Rh
dGljIFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQ7CiAjZW5kaWYKIAotUmVmPEltYWdlQml0bWFwPiBJbWFnZUJpdG1hcDo6Y3Jl
YXRlKEludFNpemUgc2l6ZSkKK1JlZjxJbWFnZUJpdG1hcD4gSW1hZ2VCaXRtYXA6OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBJbnRT
aXplJiBzaXplKQogewotICAgIHJldHVybiBjcmVhdGUoeyBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZs
b2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2Rl
KSB9KTsKKyAgICByZXR1cm4gY3JlYXRlKHsgY3JlYXRlSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgc2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSkgfSk7CiB9CiAKIFJlZjxJbWFn
ZUJpdG1hcD4gSW1hZ2VCaXRtYXA6OmNyZWF0ZShPcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+
JiYgYmFja2luZ1N0b3JlKQpAQCAtNzcsNiArNzgsMTMgQEAgUmVmPEltYWdlQml0bWFwPiBJbWFn
ZUJpdG1hcDo6Y3JlYXRlKE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4mJiBiYWNraW5nU3Rv
cmUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZUJpdG1hcChXVEZNb3ZlKGJhY2tpbmdT
dG9yZSkpKTsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJpdG1hcDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKK3sKKyAgICBhdXRvIGRvY3VtZW50ID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5pc0RvY3VtZW50KCkgPyAmZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpIDogbnVsbHB0cjsKKyAgICBhdXRvIGhvc3RXaW5kb3cgPSAoZG9j
dW1lbnQgJiYgZG9jdW1lbnQtPnZpZXcoKSAmJiBkb2N1bWVudC0+dmlldygpLT5yb290KCkpID8g
ZG9jdW1lbnQtPnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkgOiBudWxscHRyOworICAgIHJl
dHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURp
c3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2U6OlNSR0IsIGhvc3RXaW5kb3cpOworfQorCiB2b2lkIEltYWdlQml0bWFwOjpj
cmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIEltYWdlQml0bWFwOjpTb3VyY2UmJiBzb3VyY2UsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9w
dGlvbnMsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBXVEY6OnN3aXRj
aE9uKHNvdXJjZSwKQEAgLTIyNiwxMiArMjM0LDEyIEBAIHN0YXRpYyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb25Gb3JQcmVtdWx0aXBseUFscGhhKEltYWdlQml0
CiAgICAgcmV0dXJuIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQ7CiB9CiAK
LXZvaWQgSW1hZ2VCaXRtYXA6OnJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihib29sIG9yaWdp
bkNsZWFuLCBQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OnJlc29sdmVXaXRo
QmxhbmtJbWFnZUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBib29sIG9yaWdpbkNsZWFuLCBQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICAvLyBT
b3VyY2UgcmVjdGFuZ2xlIGxpa2VseSBkb2Vzbid0IGludGVyc2VjdCB0aGUgc291cmNlIGltYWdl
LgogICAgIC8vIEJlaGF2aW9yIGlzbid0IHdlbGwgc3BlY2lmaWVkLCBidXQgV1BUIHRlc3RzIGV4
cGVjdCBubyBQcm9taXNlIHJlamVjdGlvbiAoYW5kIG9mIGNvdXJzZSBubyBjcmFzaGVzKS4KICAg
ICAvLyBSZXNvbHZlIFByb21pc2Ugd2l0aCBhIGJsYW5rIDF4MSBJbWFnZUJpdG1hcC4KLSAgICBh
dXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSgxLCAxKSwgYnVm
ZmVyUmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byBiaXRtYXBEYXRhID0gY3JlYXRlSW1hZ2VCdWZm
ZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRmxvYXRTaXplKDEsIDEpLCBidWZmZXJSZW5kZXJp
bmdNb2RlKTsKIAogICAgIC8vIDkuIElmIHRoZSBvcmlnaW4gb2YgaW1hZ2UncyBpbWFnZSBpcyBu
b3QgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBvcmlnaW4gc3BlY2lmaWVkIGJ5IHRoZQogICAgIC8v
ICAgIGVudHJ5IHNldHRpbmdzIG9iamVjdCwgdGhlbiBzZXQgdGhlIG9yaWdpbi1jbGVhbiBmbGFn
IG9mIHRoZSBJbWFnZUJpdG1hcCBvYmplY3QncwpAQCAtMjkxLDcgKzI5OSw3IEBAIHZvaWQgSW1h
Z2VCaXRtYXA6OnJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihib29sIG9yaWdpbkNsZWFuLCBQ
cm9taXNlJiYgcHJvbWlzCiAKIC8vIDEzLiBSZXR1cm4gb3V0cHV0LgogCi12b2lkIEltYWdlQml0
bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SFRNTElt
YWdlRWxlbWVudD4mIGltYWdlRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywg
T3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQor
dm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4mIGltYWdlRWxl
bWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVj
dCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIDIuIElmIGltYWdl
IGlzIG5vdCBjb21wbGV0ZWx5IGF2YWlsYWJsZSwgdGhlbiByZXR1cm4gYSBwcm9taXNlIHJlamVj
dGVkIHdpdGgKICAgICAvLyBhbiAiSW52YWxpZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlvbiBhbmQg
YWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC0zNTAsNyArMzU4LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6
Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVs
ZW1lbnQKICAgICB9CiAKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291cmNl
UmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZS5yZXR1cm5WYWx1ZSgpLCBvcHRpb25zKTsKLSAgICBh
dXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShvdXRwdXRTaXpl
LndpZHRoKCksIG91dHB1dFNpemUuaGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKKyAg
ICBhdXRvIGJpdG1hcERhdGEgPSBjcmVhdGVJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKICAgICBhdXRvIGltYWdlRm9y
UmVuZGVyID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50LT5yZW5k
ZXJlcigpKTsKICAgICBpZiAoIWltYWdlRm9yUmVuZGVyKSB7CiAgICAgICAgIHByb21pc2UucmVq
ZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBmcm9tIGlt
YWdlIHRoYXQgY2FuJ3QgYmUgcmVuZGVyZWQiKTsKQEAgLTM1OCw3ICszNjYsNyBAQCB2b2lkIElt
YWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8
SFRNTEltYWdlRWxlbWVudAogICAgIH0KIAogICAgIGlmICghYml0bWFwRGF0YSkgewotICAgICAg
ICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoIXRhaW50c09yaWdpbigqY2FjaGVkSW1hZ2Up
LCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVy
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICF0YWludHNPcmlnaW4oKmNhY2hlZEltYWdlKSwgV1RG
TW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM4NCwxOSArMzky
LDE5IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50CiAgICAgcHJvbWlzZS5yZXNvbHZlKFdURk1v
dmUoaW1hZ2VCaXRtYXApKTsKIH0KIAotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+
JiBjYW52YXNFbGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRpb25hbDxJ
bnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEltYWdl
Qml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4mIGNhbnZhc0VsZW1lbnQsIElt
YWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdl
Qml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKLSAgICBjcmVhdGVQcm9taXNlKGNvbnRleHQs
ICpjYW52YXNFbGVtZW50LCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHJlY3QpLCBXVEZNb3Zl
KHByb21pc2UpKTsKKyAgICBjcmVhdGVQcm9taXNlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICpj
YW52YXNFbGVtZW50LCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHJlY3QpLCBXVEZNb3ZlKHBy
b21pc2UpKTsKIH0KIAogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQotdm9pZCBJbWFnZUJp
dG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWZQ
dHI8T2Zmc2NyZWVuQ2FudmFzPiYgY2FudmFzRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYg
b3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBw
cm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPiYg
Y2FudmFzRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50
UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewotICAgIGNyZWF0
ZVByb21pc2UoY29udGV4dCwgKmNhbnZhc0VsZW1lbnQsIFdURk1vdmUob3B0aW9ucyksIFdURk1v
dmUocmVjdCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIGNyZWF0ZVByb21pc2Uoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgKmNhbnZhc0VsZW1lbnQsIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUo
cmVjdCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogI2VuZGlmCiAKLXZvaWQgSW1hZ2VCaXRtYXA6
OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENhbnZhc0Jhc2UmIGNhbnZh
cywgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwg
SW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRl
UHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBD
YW52YXNCYXNlJiBjYW52YXMsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFs
PEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICAv
LyAyLiBJZiB0aGUgY2FudmFzIGVsZW1lbnQncyBiaXRtYXAgaGFzIGVpdGhlciBhIGhvcml6b250
YWwgZGltZW5zaW9uIG9yIGEgdmVydGljYWwKICAgICAvLyAgICBkaW1lbnNpb24gZXF1YWwgdG8g
emVybywgdGhlbiByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gIkludmFsaWRTdGF0
ZUVycm9yIgpAQCAtNDE3LDcgKzQyNSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21p
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENhbnZhc0Jhc2UmIGNhbnZhcywgSW1hCiAgICAg
fQogCiAgICAgYXV0byBvdXRwdXRTaXplID0gb3V0cHV0U2l6ZUZvclNvdXJjZVJlY3RhbmdsZShz
b3VyY2VSZWN0YW5nbGUucmV0dXJuVmFsdWUoKSwgb3B0aW9ucyk7Ci0gICAgYXV0byBiaXRtYXBE
YXRhID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUob3V0cHV0U2l6ZS53aWR0aCgpLCBv
dXRwdXRTaXplLmhlaWdodCgpKSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byBiaXRt
YXBEYXRhID0gY3JlYXRlSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgb3V0cHV0
U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CiAKICAgICBhdXRvIGltYWdlRm9yUmVuZGVyID0g
Y2FudmFzLmNvcGllZEltYWdlKCk7CiAgICAgaWYgKCFpbWFnZUZvclJlbmRlcikgewpAQCAtNDI2
LDcgKzQzNCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIENhbnZhc0Jhc2UmIGNhbnZhcywgSW1hCiAgICAgfQogCiAgICAgaWYgKCFi
aXRtYXBEYXRhKSB7Ci0gICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihjYW52YXMu
b3JpZ2luQ2xlYW4oKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIHJlc29sdmVXaXRoQmxh
bmtJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjYW52YXMub3JpZ2luQ2xlYW4o
KSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ4OSw3
ICs0OTcsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgYXV0byBvdXRwdXRTaXplID0g
b3V0cHV0U2l6ZUZvclNvdXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUsIG9wdGlvbnMpOwog
ICAgIGF1dG8gYml0bWFwRGF0YSA9IHZpZGVvLT5jcmVhdGVCdWZmZXJGb3JQYWludGluZyhvdXRw
dXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKICAgICBpZiAoIWJpdG1hcERhdGEpIHsKLSAg
ICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKCF0YWludHNPcmlnaW4oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigpLCAqdmlkZW8pLCBXVEZNb3ZlKHByb21pc2Up
KTsKKyAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsICF0YWludHNPcmlnaW4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zZWN1cml0eU9yaWdp
bigpLCAqdmlkZW8pLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtNTM0LDcgKzU0Miw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxUeXBlZE9NQ1NTSW1hZ2VWCiB9CiAjZW5kaWYK
IAotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgUmVmUHRyPEltYWdlQml0bWFwPiYgZXhpc3RpbmdJbWFnZUJpdG1hcCwgSW1hZ2VCaXRtYXBP
cHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlBy
b21pc2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SW1hZ2VCaXRt
YXA+JiBleGlzdGluZ0ltYWdlQml0bWFwLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBP
cHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCiB7
CiAgICAgLy8gMi4gSWYgaW1hZ2UncyBbW0RldGFjaGVkXV0gaW50ZXJuYWwgc2xvdCB2YWx1ZSBp
cyB0cnVlLCByZXR1cm4gYSBwcm9taXNlCiAgICAgLy8gICAgcmVqZWN0ZWQgd2l0aCBhbiAiSW52
YWxpZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC01
NTIsMTAgKzU2MCwxMCBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VCaXRtYXA+JiBleAogICAgIH0KIAogICAgIGF1
dG8gb3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0YW5nbGUoc291cmNlUmVjdGFu
Z2xlLnJldHVyblZhbHVlKCksIG9wdGlvbnMpOwotICAgIGF1dG8gYml0bWFwRGF0YSA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKG91dHB1dFNpemUud2lkdGgoKSwgb3V0cHV0U2l6ZS5o
ZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOworICAgIGF1dG8gYml0bWFwRGF0YSA9IGNy
ZWF0ZUltYWdlQnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG91dHB1dFNpemUsIGJ1ZmZl
clJlbmRlcmluZ01vZGUpOwogCiAgICAgaWYgKCFiaXRtYXBEYXRhKSB7Ci0gICAgICAgIHJlc29s
dmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihleGlzdGluZ0ltYWdlQml0bWFwLT5vcmlnaW5DbGVhbigp
LCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVy
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGV4aXN0aW5nSW1hZ2VCaXRtYXAtPm9yaWdpbkNsZWFu
KCksIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02OTgs
NyArNzA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKG1fYXJyYXlCdWZmZXJUb1Byb2Nl
c3MucmVsZWFzZU5vbk51bGwoKSwgbV9ibG9iLT50eXBlKCksIG1fYmxvYi0+c2l6ZSgpLCBtX2Js
b2JMb2FkZXIudXJsKCksIFdURk1vdmUobV9vcHRpb25zKSwgV1RGTW92ZShtX3JlY3QpLCBXVEZN
b3ZlKG1fcHJvbWlzZSkpOworICAgICAgICBJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcigq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX2FycmF5QnVmZmVyVG9Qcm9jZXNzLnJlbGVhc2VO
b25OdWxsKCksIG1fYmxvYi0+dHlwZSgpLCBtX2Jsb2ItPnNpemUoKSwgbV9ibG9iTG9hZGVyLnVy
bCgpLCBXVEZNb3ZlKG1fb3B0aW9ucyksIFdURk1vdmUobV9yZWN0KSwgV1RGTW92ZShtX3Byb21p
c2UpKTsKICAgICB9CiAKICAgICBGaWxlUmVhZGVyTG9hZGVyIG1fYmxvYkxvYWRlcjsKQEAgLTcx
MCwxNCArNzE4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYXJyYXlC
dWZmZXJUb1Byb2Nlc3M7CiB9OwogCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVy
KAotICAgIFJlZjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICBTdHJpbmcgbWltZVR5
cGUsCi0gICAgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwKLSAgICBjb25zdCBVUkwm
IHNvdXJjZVVybCwKLSAgICBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLAotICAgIE9wdGlv
bmFsPEludFJlY3Q+IHJlY3QsCi0gICAgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQor
dm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWY8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIs
IFN0cmluZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3Qg
VVJMJiBzb3VyY2VVUkwsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPElu
dFJlY3Q+IHJlY3QsIFByb21pc2UmJiBwcm9taXNlKQogewogICAgIGlmICghYXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJv
ciwgIkNhbm5vdCBjcmVhdGUgYW4gSW1hZ2VCaXRtYXAgZnJvbSBhbiBlbXB0eSBidWZmZXIiKTsK
QEAgLTcyNSw3ICs3MjYsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKAog
ICAgIH0KIAogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpKTsKLSAgICBhdXRvIG9ic2VydmVyID0gSW1hZ2VCaXRtYXBJbWFnZU9ic2Vy
dmVyOjpjcmVhdGUobWltZVR5cGUsIGV4cGVjdGVkQ29udGVudExlbmd0aCwgc291cmNlVXJsKTsK
KyAgICBhdXRvIG9ic2VydmVyID0gSW1hZ2VCaXRtYXBJbWFnZU9ic2VydmVyOjpjcmVhdGUobWlt
ZVR5cGUsIGV4cGVjdGVkQ29udGVudExlbmd0aCwgc291cmNlVVJMKTsKICAgICBhdXRvIGltYWdl
ID0gSW1hZ2U6OmNyZWF0ZShvYnNlcnZlci5nZXQoKSk7CiAgICAgaWYgKCFpbWFnZSkgewogICAg
ICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIlRoZSB0eXBlIG9mIHRoZSBh
cmd1bWVudCB0byBjcmVhdGVJbWFnZUJpdG1hcCBpcyBub3Qgc3VwcG9ydGVkIik7CkBAIC03NDUs
NyArNzQ2LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcigKICAgICB9CiAK
ICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291cmNlUmVjdGFuZ2xlKHNvdXJj
ZVJlY3RhbmdsZS5yZXR1cm5WYWx1ZSgpLCBvcHRpb25zKTsKLSAgICBhdXRvIGJpdG1hcERhdGEg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShvdXRwdXRTaXplLndpZHRoKCksIG91dHB1
dFNpemUuaGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGJpdG1hcERh
dGEgPSBjcmVhdGVJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBvdXRwdXRTaXpl
LCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKICAgICBpZiAoIWJpdG1hcERhdGEpIHsKICAgICAgICAg
cHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIGFuIGltYWdl
IGJ1ZmZlciBmcm9tIHRoZSBhcmd1bWVudCB0byBjcmVhdGVJbWFnZUJpdG1hcCIpOwogICAgICAg
ICByZXR1cm47CkBAIC03NjksNyArNzcwLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJv
bWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAg
IFBlbmRpbmdJbWFnZUJpdG1hcDo6ZmV0Y2goc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RGTW92
ZShibG9iKSwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWN0KSwgV1RGTW92ZShwcm9taXNl
KSk7CiB9CiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFJlZlB0cjxJbWFnZURhdGE+JiBpbWFnZURhdGEsIEltYWdlQml0bWFwT3B0aW9u
cyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNl
JiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEltYWdlRGF0YT4mIGlt
YWdlRGF0YSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4g
cmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIDYuMS4gTGV0
IGJ1ZmZlciBiZSBpbWFnZSdzIGRhdGEgYXR0cmlidXRlIHZhbHVlJ3MgW1tWaWV3ZWRBcnJheUJ1
ZmZlcl1dCiAgICAgLy8gICAgICBpbnRlcm5hbCBzbG90LgpAQCAtNzg5LDEwICs3OTAsMTAgQEAg
dm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
UmVmUHRyPEltYWdlRGF0YT4mIGltYWcKICAgICB9CiAKICAgICBhdXRvIG91dHB1dFNpemUgPSBv
dXRwdXRTaXplRm9yU291cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZS5yZXR1cm5WYWx1ZSgp
LCBvcHRpb25zKTsKLSAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZs
b2F0U2l6ZShvdXRwdXRTaXplLndpZHRoKCksIG91dHB1dFNpemUuaGVpZ2h0KCkpLCBidWZmZXJS
ZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSBjcmVhdGVJbWFnZUJ1ZmZlcihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsK
IAogICAgIGlmICghYml0bWFwRGF0YSkgewotICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VC
dWZmZXIodHJ1ZSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIHJlc29sdmVXaXRoQmxhbmtJ
bWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0cnVlLCBXVEZNb3ZlKHByb21pc2Up
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODExLDcgKzgxMiw3IEBAIHZvaWQgSW1h
Z2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJ
bWFnZURhdGE+JiBpbWFnCiAKICAgICAvLyA2LjMuIFNldCBpbWFnZUJpdG1hcCdzIGJpdG1hcCBk
YXRhIHRvIGltYWdlJ3MgaW1hZ2UgZGF0YSwgY3JvcHBlZCB0byB0aGUKICAgICAvLyAgICAgIHNv
dXJjZSByZWN0YW5nbGUgd2l0aCBmb3JtYXR0aW5nLgotICAgIGF1dG8gdGVtcEJpdG1hcERhdGEg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShpbWFnZURhdGEtPndpZHRoKCksIGltYWdl
RGF0YS0+aGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIHRlbXBCaXRt
YXBEYXRhID0gY3JlYXRlSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaW1hZ2VE
YXRhLT5zaXplKCksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOwogICAgIHRlbXBCaXRtYXBEYXRhLT5w
dXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCAqaW1h
Z2VEYXRhLCBJbnRSZWN0KDAsIDAsIGltYWdlRGF0YS0+d2lkdGgoKSwgaW1hZ2VEYXRhLT5oZWln
aHQoKSksIHsgfSwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CiAgICAgRmxvYXRSZWN0IGRlc3RS
ZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7CiAgICAgYml0bWFwRGF0YS0+Y29udGV4dCgp
LmRyYXdJbWFnZUJ1ZmZlcigqdGVtcEJpdG1hcERhdGEsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5n
bGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVR
dWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSksIGltYWdlT3JpZW50YXRpb25Gb3JPcmllbnRh
dGlvbihvcHRpb25zLmltYWdlT3JpZW50YXRpb24pIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1h
cC5oCmluZGV4IDAxZjI4M2Q5ODA1MTY3NjNlY2E4OWY2MjJkZjJmZDEzNTc2OGU4NTMuLmMzODlk
YzY2ODI1YzI3ZTI1NWFjODgwYWE5OTY0ZTBjMDFlYjhjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
Qml0bWFwLmgKQEAgLTgyLDcgKzgyLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNyZWF0
ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNvdXJjZSYmLCBJbWFnZUJpdG1hcE9w
dGlvbnMmJiwgUHJvbWlzZSYmKTsKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBTb3VyY2UmJiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIGludCBz
eCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwgUHJvbWlzZSYmKTsKIAotICAgIHN0YXRpYyBSZWY8
SW1hZ2VCaXRtYXA+IGNyZWF0ZShJbnRTaXplKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0g
MSk7CisKKyAgICBzdGF0aWMgUmVmPEltYWdlQml0bWFwPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IEludFNpemUmKTsKICAgICBzdGF0aWMgUmVmPEltYWdlQml0bWFwPiBj
cmVhdGUoT3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPiYmKTsKIAogICAgIH5JbWFnZUJpdG1h
cCgpOwpAQCAtMTEyLDcgKzExNCw3IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZUJpdG1hcChPcHRp
b25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+JiYpOwogCi0gICAgc3RhdGljIHZvaWQgcmVzb2x2ZVdp
dGhCbGFua0ltYWdlQnVmZmVyKGJvb2wgb3JpZ2luQ2xlYW4sIFByb21pc2UmJik7CisgICAgc3Rh
dGljIHZvaWQgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBib29sIG9yaWdpbkNsZWFuLCBQcm9taXNlJiYpOwogCiAgICAgc3RhdGljIHZvaWQgY3Jl
YXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1l
bnQ+JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYp
OwogI2lmIEVOQUJMRShWSURFTykKQEAgLTEyNyw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxC
bG9iPiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYm
KTsKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBSZWZQdHI8SW1hZ2VEYXRhPiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRS
ZWN0PiwgUHJvbWlzZSYmKTsKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8VHlwZWRPTUNTU0ltYWdlVmFsdWU+JiwgSW1hZ2VCaXRt
YXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwotICAgIHN0YXRpYyB2
b2lkIGNyZWF0ZUZyb21CdWZmZXIoUmVmPEFycmF5QnVmZmVyPiYmLCBTdHJpbmcgbWltZVR5cGUs
IGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IFVSTCYsIEltYWdlQml0bWFw
T3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKKyAgICBzdGF0aWMgdm9p
ZCBjcmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8QXJyYXlCdWZm
ZXI+JiYsIFN0cmluZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwg
Y29uc3QgVVJMJiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9t
aXNlJiYpOwogCiAgICAgT3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPiBtX2JhY2tpbmdTdG9y
ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKaW5kZXggNTI3M2Vh
MTMwODdhYTdkY2Q4N2NhNGIzNDA4ZmNiYjJjNmM5NjI2OC4uOWRlYTAxMmNiODZhY2FjYWY0ZTE3
NzMwNDgyNjQzZDk4MGU5ZTAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZz
Y3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFz
LmNwcApAQCAtNzMsMTQgKzczLDE0IEBAIFdlYWtQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IERldGFj
aGVkT2Zmc2NyZWVuQ2FudmFzOjp0YWtlUGxhY2Vob2xkZXJDYW52YXMoKQogICAgIHJldHVybiBz
dGQ6OmV4Y2hhbmdlKG1fcGxhY2Vob2xkZXJDYW52YXMsIG51bGxwdHIpOwogfQogCi1SZWY8T2Zm
c2NyZWVuQ2FudmFzPiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorUmVmPE9mZnNj
cmVlbkNhbnZhcz4gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdo
dCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMoY29udGV4dCwg
d2lkdGgsIGhlaWdodCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9mZnNjcmVlbkNhbnZh
cyhzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKLVJlZjxPZmZz
Y3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4mJiBk
ZXRhY2hlZENhbnZhcykKK1JlZjxPZmZzY3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0ZDo6
dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4mJiBkZXRhY2hlZENhbnZhcykKIHsK
LSAgICBSZWY8T2Zmc2NyZWVuQ2FudmFzPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgT2Zmc2NyZWVu
Q2FudmFzKGNvbnRleHQsIGRldGFjaGVkQ2FudmFzLT5zaXplKCkud2lkdGgoKSwgZGV0YWNoZWRD
YW52YXMtPnNpemUoKS5oZWlnaHQoKSkpOworICAgIFJlZjxPZmZzY3JlZW5DYW52YXM+IGNsb25l
ID0gYWRvcHRSZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
ZGV0YWNoZWRDYW52YXMtPnNpemUoKS53aWR0aCgpLCBkZXRhY2hlZENhbnZhcy0+c2l6ZSgpLmhl
aWdodCgpKSk7CiAgICAgY2xvbmUtPnNldEltYWdlQnVmZmVyKGRldGFjaGVkQ2FudmFzLT50YWtl
SW1hZ2VCdWZmZXIoKSk7CiAgICAgaWYgKCFkZXRhY2hlZENhbnZhcy0+b3JpZ2luQ2xlYW4oKSkK
ICAgICAgICAgY2xvbmUtPnNldE9yaWdpblRhaW50ZWQoKTsKQEAgLTk4LDE2ICs5OCwxNiBAQCBS
ZWY8T2Zmc2NyZWVuQ2FudmFzPiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBzdAogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPE9mZnNj
cmVlbkNhbnZhcz4gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcykKK1JlZjxPZmZzY3JlZW5DYW52
YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMpCiB7Ci0gICAgYXV0
byBvZmZzY3JlZW4gPSBhZG9wdFJlZigqbmV3IE9mZnNjcmVlbkNhbnZhcyhjb250ZXh0LCBjYW52
YXMud2lkdGgoKSwgY2FudmFzLmhlaWdodCgpKSk7CisgICAgYXV0byBvZmZzY3JlZW4gPSBhZG9w
dFJlZigqbmV3IE9mZnNjcmVlbkNhbnZhcyhzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjYW52YXMu
d2lkdGgoKSwgY2FudmFzLmhlaWdodCgpKSk7CiAgICAgb2Zmc2NyZWVuLT5zZXRQbGFjZWhvbGRl
ckNhbnZhcyhjYW52YXMpOwogICAgIHJldHVybiBvZmZzY3JlZW47CiB9CiAKLU9mZnNjcmVlbkNh
bnZhczo6T2Zmc2NyZWVuQ2FudmFzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVu
c2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCitPZmZzY3JlZW5DYW52YXM6Ok9mZnNjcmVl
bkNhbnZhcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB1
bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogICAgIDogQ2FudmFzQmFzZShJbnRTaXpl
KHdpZHRoLCBoZWlnaHQpKQotICAgICwgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmNvbnRl
eHQpCisgICAgLCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKICAgICAsIG1fcGxhY2Vob2xkZXJEYXRhKFBsYWNlaG9sZGVyRGF0YTo6Y3JlYXRlKCkp
CiB7CiB9CkBAIC0xNzksMTMgKzE3OSwxMyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRl
Q29udGV4dFdlYkdMKFJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBXZWJHTAogewog
ICAgIEFTU0VSVCghbV9jb250ZXh0KTsKIAotICAgIGF1dG8gY29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7
Ci0gICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCk7CisgICAgYXV0byBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0gdGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmIChzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAgICAgICAgV29ya2Vy
R2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICAgICAgaWYgKCFzaG91bGRFbmFibGVX
ZWJHTCh3b3JrZXJHbG9iYWxTY29wZS53ZWJHTEVuYWJsZWQoKSwgd29ya2VyR2xvYmFsU2NvcGUu
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgfSBlbHNlIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgYXV0byYgc2V0
dGluZ3MgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLnNldHRpbmdzKCk7CisgICAgfSBl
bHNlIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpIHsKKyAgICAgICAg
YXV0byYgc2V0dGluZ3MgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLnNldHRpbmdzKCk7CiAgICAgICAgIGlmICghc2hvdWxkRW5hYmxlV2ViR0woc2V0dGluZ3Mu
d2ViR0xFbmFibGVkKCksIHNldHRpbmdzLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZQpAQCAtMjU0LDggKzI1NCwxMCBAQCBF
eGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVy
VG9JbWFnZUJpdG1hcCgpCiAgICAgICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAg
ICAgICAgICByZXR1cm4geyBSZWZQdHI8SW1hZ2VCaXRtYXA+IHsgbnVsbHB0ciB9IH07CiAKLSAg
ICAgICAgaWYgKCFtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7
IEltYWdlQml0bWFwOjpjcmVhdGUoSW1hZ2VCaXRtYXBCYWNraW5nKEltYWdlQnVmZmVyOjpjcmVh
dGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSkpIH07CisgICAgICAgIGlm
ICghbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
SW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOworICAgICAg
ICAgICAgcmV0dXJuIHsgSW1hZ2VCaXRtYXA6OmNyZWF0ZShJbWFnZUJpdG1hcEJhY2tpbmcoV1RG
TW92ZShidWZmZXIpKSkgfTsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gdGFr
ZUltYWdlQnVmZmVyKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMjcyLDcgKzI3NCw3IEBA
IEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IE9mZnNjcmVlbkNhbnZhczo6dHJhbnNm
ZXJUb0ltYWdlQml0bWFwKCkKICAgICAgICAgLy8gc3RvcmUgZnJvbSB0aGlzIGNhbnZhcyAob3Ig
aXRzIGNvbnRleHQpLCBidXQgZm9yIG5vdyB3ZSdsbCBqdXN0CiAgICAgICAgIC8vIGNyZWF0ZSBh
IG5ldyBiaXRtYXAgYW5kIHBhaW50IGludG8gaXQuCiAKLSAgICAgICAgYXV0byBpbWFnZUJpdG1h
cCA9IEltYWdlQml0bWFwOjpjcmVhdGUoc2l6ZSgpKTsKKyAgICAgICAgYXV0byBpbWFnZUJpdG1h
cCA9IEltYWdlQml0bWFwOjpjcmVhdGUoKmNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIHNpemUoKSk7CiAgICAgICAgIGlmICghaW1hZ2VCaXRtYXAtPmJ1ZmZlcigpKQogICAgICAg
ICAgICAgcmV0dXJuIHsgUmVmUHRyPEltYWdlQml0bWFwPiB7IG51bGxwdHIgfSB9OwogCkBAIC0z
NjgsMTEgKzM3MCwxMSBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y2xlYXJDb3BpZWRJbWFnZSgp
IGNvbnN0CiAKIFNlY3VyaXR5T3JpZ2luKiBPZmZzY3JlZW5DYW52YXM6OnNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QKIHsKLSAgICBhdXRvJiBjb250ZXh0ID0gKmNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAg
ICAgICAgcmV0dXJuICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudG9wT3Jp
Z2luKCk7CisgICAgYXV0byYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9ICpjYW52YXNCYXNlU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkpCisgICAgICAgIHJldHVybiAmZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRvcE9yaWdpbigpOwogCi0gICAgcmV0
dXJuICZkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBy
ZXR1cm4gJmRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zZWN1cml0
eU9yaWdpbigpOwogfQogCiBib29sIE9mZnNjcmVlbkNhbnZhczo6Y2FuRGV0YWNoKCkgY29uc3QK
QEAgLTQ1MSwxMSArNDUzLDExIEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpzY2hlZHVsZUNvbW1p
dFRvUGxhY2Vob2xkZXJDYW52YXMoKQogCiBDU1NWYWx1ZVBvb2wmIE9mZnNjcmVlbkNhbnZhczo6
Y3NzVmFsdWVQb29sKCkKIHsKLSAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQmFzZVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgp
KQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpjb250ZXh0KS5j
c3NWYWx1ZVBvb2woKTsKKyAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gY2FudmFz
QmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5jc3NWYWx1ZVBvb2woKTsK
IAotICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpOwogfQogCkBAIC00NjYsNyArNDY4LDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52
YXM6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKICAgICBpZiAoIXdpZHRoKCkgfHwgIWhlaWdo
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCkpOworICAgIHNldElt
YWdlQnVmZmVyKEltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqY2FudmFzQmFzZVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
KSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gT2Zmc2NyZWVuQ2FudmFzOjp0
YWtlSW1hZ2VCdWZmZXIoKSBjb25zdApAQCAtNDgyLDcgKzQ4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gT2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIoKSBjb25zdAog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGNsZWFyQ29waWVkSW1hZ2UoKTsKLSAgICBy
ZXR1cm4gc2V0SW1hZ2VCdWZmZXIobV9kZXRhY2hlZCA/IG51bGxwdHIgOiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCkpOworICAgIHJldHVy
biBzZXRJbWFnZUJ1ZmZlcihtX2RldGFjaGVkID8gbnVsbHB0ciA6IEltYWdlQml0bWFwOjpjcmVh
dGVJbWFnZUJ1ZmZlcigqY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSk7CiB9CiAKIHZvaWQgT2Zmc2NyZWVuQ2Fu
dmFzOjpyZXNldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDIyNjRlYmNiNjY2
NGQ3MWZmZjBhNDAwNDJmYjI1NDJjYTgwNjZlYjQuLmU0MDM2NzZjNDg2NTNmZWY4MmUzNWY2Mjlm
YmM5ZjE0YTRlNGZiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0xMTgsNyAr
MTE4LDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICAgICAgLy8gVGhlIG1hdGggaW5zaWRlIElt
YWdlRGF0YTo6Y3JlYXRlKCkgZG9lc24ndCBhZ3JlZSB3aXRoIHRoZSBtYXRoIGluc2lkZSBJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OnB1dEltYWdlRGF0YSgpIGFib3V0IGhvdyBtX3Jlc29sdXRpb25TY2Fs
ZSBpbnRlcmFjdHMgd2l0aCB0aGUgZGF0YSBpbiB0aGUgSW1hZ2VCdWZmZXIuCiAgICAgICAgIC8v
IFRoaXMgbWVhbnMgdGhhdCBwdXRJbWFnZURhdGEoKSBpcyBvbmx5IGNhbGxlZCB3aGVuIG1fcmVz
b2x1dGlvblNjYWxlID09IDEuCi0gICAgICAgIEFTU0VSVChtX2JhY2tlbmQtPnJlc29sdXRpb25T
Y2FsZSgpID09IDEpOworICAgICAgICBBU1NFUlRfSU1QTElFUyhtX2JhY2tlbmQsIG1fYmFja2Vu
ZC0+cmVzb2x1dGlvblNjYWxlKCkgPT0gMSk7CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQucmVj
b3JkZXIoKS5wdXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVz
dFBvaW50LCBkZXN0Rm9ybWF0KTsKICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1p
dCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRl
eCA3YTAxOTMwYWI2NmM0NDczMDUxMDkzMDM0ZDRmMzZkMmMwZTY0OGEyLi40M2M1OWUyNDRmOTNl
NTdlNmQ3ZjE2Mzg3ODRmYzQzYzE0N2ViMWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwCkBAIC0xMDMsNyArMTAzLDYgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNv
bnMKICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CmluZGV4IDI0NDUyYjY4MmY0OTNmMDQwM2RjZmU2MWJjYWE3MjBjNmU0ZmEwOGIuLmI2ODllMTRh
OWU3ZTczMjg1MzhmY2QyYjNkNTA2MmEwOTI2ZTgwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CkBAIC05MTIsNyArOTEyLDcgQEAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBXZWJDaHJv
bWVDbGllbnQ6OmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgKIAogc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJp
bmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlKSBjb25zdAogewotICAgIGlmICghbV9wYWdlLnNob3VsZFVzZVJlbW90ZVJlbmRlcmlu
Z0ZvcihwdXJwb3NlKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVz
ZVJlbW90ZVJlbmRlcmluZ0ZvcihwdXJwb3NlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICByZXR1cm4gZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1h
Z2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
YjE0OGNlODU4MjliYjRiNGY2MGU2NDhhOTI4YjdhMzM0MjgxNjMyZS4uZmU5MDg2MDE0MDQyMzE2
YjIzMTI3YjdiNmVhNGRlNzBmOTY5ZTFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4MDUsNiArMzgwNSw3IEBAIHZvaWQgV2ViUGFnZTo6
dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAg
c3RhdGljX2Nhc3Q8V2ViTWVkaWFTdHJhdGVneSY+KHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRp
YVN0cmF0ZWd5KCkpLnNldFVzZUdQVVByb2Nlc3Moc2V0dGluZ3MudXNlR1BVUHJvY2Vzc0Zvck1l
ZGlhRW5hYmxlZCgpKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcj4oKS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0dGluZ3MpOwog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShzZXR0
aW5ncy51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCkpOworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JDYW52YXMobV9zaG91bGRSZW5kZXJDYW52YXNJ
bkdQVVByb2Nlc3MpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQpAQCAt
NzIyMSwyMyArNzIyMiw2IEBAIHZvaWQgV2ViUGFnZTo6c3luY2hyb25pemVDT1JTRGlzYWJsaW5n
UGF0dGVybnNXaXRoTmV0d29ya1Byb2Nlc3MoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q09SU0Rpc2FibGluZ1BhdHRl
cm5zKG1faWRlbnRpZmllciwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMpLCAwKTsKIH0KIAotYm9v
bCBXZWJQYWdlOjpzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoUmVuZGVyaW5nUHVycG9zZSBw
dXJwb3NlKQotewotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICBzd2l0Y2ggKHB1cnBvc2Up
IHsKLSAgICBjYXNlIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhczoKLSAgICAgICAgcmV0dXJuIG1f
c2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzOwotICAgIGNhc2UgUmVuZGVyaW5nUHVycG9z
ZTo6TWVkaWFQYWludGluZzoKLSAgICAgICAgcmV0dXJuIG1fcGFnZS0+c2V0dGluZ3MoKS51c2VH
UFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkKCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocHVycG9zZSk7Ci0jZW5kaWYKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiBFTkFCTEUoTUVESUFfVVNBR0UpCiB2b2lkIFdlYlBhZ2U6
OmFkZE1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihNZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgVVJMJiBwYWdlVVJM
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGYw
NWZjODA2M2M3ZjEwZDNhOTg4YjcwMjY5OTdhZWQyOTRkMWYzZjkuLjU5MjViMDVlNzFhYWI4MWM4
ZWRlZjJlNzdmMDQzMzRjNjcyYjc2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTc3LDcgKzc3LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdp
bkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BvaW50ZXJJRC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5n
TW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaW1w
bGVSYW5nZS5oPgpAQCAtMTM2Miw4ICsxMzYxLDYgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNJ
bkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKCkgeyByZXR1cm4gbV9uZWVkc0luQXBwQnJvd3NlclBy
aXZhY3lRdWlya3M7IH0KICNlbmRpZgogCi0gICAgYm9vbCBzaG91bGRVc2VSZW1vdGVSZW5kZXJp
bmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSk7Ci0KICNpZiBFTkFCTEUoTUVESUFfVVNB
R0UpCiAgICAgdm9pZCBhZGRNZWRpYVVzYWdlTWFuYWdlclNlc3Npb24oV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAgICAgdm9pZCB1
cGRhdGVNZWRpYVVzYWdlTWFuYWdlclNlc3Npb25TdGF0ZShXZWJDb3JlOjpNZWRpYVNlc3Npb25J
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYVVzYWdlSW5mbyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRmYTU3YzY1NWFkYTdjZjk3MTg5Yjc1N2M1
OWFhOTAxOTUwYWE5ZTguLjIyNTkwMjAyODk1MjZmNGZkMTQ3NzNjYzM3YWFkZTM5MDVjNjRlY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTIwMTMsNiArMjAx
MywxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OnNlbmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YUlt
bWVkaWF0ZWx5KENvbXBsZXRpb25IYW5kbGVyPHZvaQogI2VuZGlmCiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCit2b2lkIFdlYlByb2Nlc3M6OnNldFVzZUdQVVByb2Nlc3NGb3JDYW52YXMoYm9v
bCB1c2VHUFVQcm9jZXNzRm9yQ2FudmFzKQoreworICAgIG1fdXNlR1BVUHJvY2Vzc0ZvckNhbnZh
cyA9IHVzZUdQVVByb2Nlc3NGb3JDYW52YXM7Cit9CisKIHZvaWQgV2ViUHJvY2Vzczo6c2V0VXNl
R1BVUHJvY2Vzc0Zvck1lZGlhKGJvb2wgdXNlR1BVUHJvY2Vzc0Zvck1lZGlhKQogewogICAgIGlm
ICh1c2VHUFVQcm9jZXNzRm9yTWVkaWEgPT0gbV91c2VHUFVQcm9jZXNzRm9yTWVkaWEpCkBAIC0y
MDUxLDYgKzIwNTYsMTkgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRVc2VHUFVQcm9jZXNzRm9yTWVk
aWEoYm9vbCB1c2VHUFVQcm9jZXNzRm9yTWVkaWEpCiAgICAgICAgIExlZ2FjeUNETTo6cmVzZXRG
YWN0b3JpZXMoKTsKICNlbmRpZgogfQorCitib29sIFdlYlByb2Nlc3M6OnNob3VsZFVzZVJlbW90
ZVJlbmRlcmluZ0ZvcihSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgc3dpdGNoIChw
dXJwb3NlKSB7CisgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXM6CisgICAgICAgIHJl
dHVybiBtX3VzZUdQVVByb2Nlc3NGb3JDYW52YXM7CisgICAgY2FzZSBSZW5kZXJpbmdQdXJwb3Nl
OjpNZWRpYVBhaW50aW5nOgorICAgICAgICByZXR1cm4gbV91c2VHUFVQcm9jZXNzRm9yTWVkaWE7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCmluZGV4IGU4OTQ4ZTkxN2NlMjk1NDdlNGUwMTdhMTVlNGEyMDBkZjEzOTgxNzMuLmRj
N2IxNmE1NTgzM2EwNjM2ZmQxMGVkMTJlZmFlNTJiZjEzNTAwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5k
ZXJpbmdNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8cGFsL0h5c3RlcmVzaXNBY3Rpdml0
eS5oPgpAQCAtMzQ0LDcgKzM0NSw5IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQorICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0ZvckNhbnZhcyhib29sKTsKICAg
ICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShib29sKTsKKyAgICBib29sIHNob3VsZFVz
ZVJlbW90ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlKTsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFZQOSkKQEAgLTY4Nyw3ICs2OTAsMTAgQEAgcHJpdmF0ZToKICAgICBIYXNo
Q291bnRlZFNldDxTdHJpbmc+IG1fcGVuZGluZ1Bhc3RlYm9hcmRXcml0ZUNvdW50czsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzRm9y
Q2FudmFzIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlR1BVUHJvY2Vzc0Zvck1lZGlhIHsgZmFs
c2UgfTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKICAgICBib29sIG1fdnA5RGVjb2RlckVu
YWJsZWQgeyBmYWxzZSB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413143</attachid>
            <date>2020-11-03 23:57:21 -0800</date>
            <delta_ts>2020-11-04 13:31:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217735-20201103235720.patch</filename>
            <type>text/plain</type>
            <size>29047</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRmNGU3MWQ2ODFlMmZj
MDFhY2FiNDZkMTk1MmE4ZjJiNGJlYzk3Ny4uYmYwM2RkZTVmMDQ5NDUzNDVmODk2MmJkZThkMzU0
MTEzNDE5YzNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIwLTExLTAzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
RW5hYmxlIERvY3VtZW50IGJhc2VkIEltYWdlQml0bWFwIGFuZCBPZmZzY3JlZW5DYW52YXMgZHJh
d2luZyB0byB1c2UgR1BVIFByb2Nlc3MgcmVuZGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgc3RhdGljIG1ldGhvZCBJbWFnZUJp
dG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSB3aGljaCB0YWtlcyBhCisgICAgICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuIEl0IGdldHMgSG9zdFdpbmRvdyBmcm9tIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuCisgICAgICAgIElmIGEgSG9zdFdpbmRvdyBleGlzdHMsIGNyZWF0aW5nIHRoZSBJbWFn
ZUJ1ZmZlciB3aWxsIGJlIGRlbGVnYXRlZCB0bworICAgICAgICBXZWJDaHJvbWVDbGllbnQgd2hp
Y2ggd2lsbCBjcmVhdGUgYSBSZW1vdGVJbWFnZUJ1ZmZlciBpbiBXZWIgUHJvY2VzcyBhbmQKKyAg
ICAgICAgYSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IGluIHRoZSBHUFUgUHJvY2Vzcy4KKworICAg
ICAgICBSZW5hbWUgYWxsIHRoZSB2YXJpYWJsZXMgb2YgdHlwZSBTY3JpcHRFeGVjdXRpb25Db250
ZXh0IHRvICdzY3JpcHRFeGVjdXRpb25Db250ZXh0JworICAgICAgICB0byBhdm9pZCBjb25mdXNp
bmcgaXQgd2l0aCBHcmFwaGljc0NvbnRleHQsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgYW5kCisg
ICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFs
aXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQml0bWFwOjpyZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
aXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIpOgorICAgICAgICAqIGh0bWwvSW1hZ2VCaXRtYXAuaDoK
KyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpP
ZmZzY3JlZW5DYW52YXM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52
YXM6Ok9mZnNjcmVlbkNhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6
OmNyZWF0ZUNvbnRleHRXZWJHTCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6
OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52
YXM6OnNlY3VyaXR5T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNh
bnZhczo6Y3NzVmFsdWVQb29sKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6
Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjp0YWtlSW1hZ2VCdWZmZXIgY29uc3QpOgorCiAyMDIwLTExLTAzICBBbnRvaW5lIFF1aW50
ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIGFsaWduLWNvbnRlbnQgc2hvdWxkIGJl
IGEgZGlzY3JldGUgYW5pbWF0YWJsZSBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2Mzg4YjljM2EyYWRh
NzE5ODAyYTkxMjdmNWE2MDVhNTlmOThhMDgyLi4zNDg2YjE1NThlMjhmMDc3OTM0N2Q1N2ZhMzA5
OGJjZDhkMTQ0ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTExLTAzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
RW5hYmxlIERvY3VtZW50IGJhc2VkIEltYWdlQml0bWFwIGFuZCBPZmZzY3JlZW5DYW52YXMgZHJh
d2luZyB0byB1c2UgR1BVIFByb2Nlc3MgcmVuZGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgcHV0SW1hZ2VEYXRhKCkgbWlnaHQgYmUgY2Fs
bGVkIGltbWVkaWF0ZWx5IGFmdGVyIGNyZWF0aW5nIHRoZSBJbWFnZUJ1ZmZlcgorICAgICAgICBh
bmQgYmVmb3JlIHJlY2VpdmluZyB0aGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5DcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQKKyAgICAgICAgbWVzc2FnZS4gV2UgbmVlZCB0byBoYW5kbGUgZm9yIHRo
aXMgY2FzZSBhbmQgYXZvaWQgYXNzZXJ0aW5nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIElmIHRoZSBzaXplIG9mIHRoZSBJbWFnZUJ1ZmZlciBpcyB2ZXJ5IGJpZywgbm8gcmVtb3Rl
IEltYWdlQnVmZmVyIGNhbiBiZQorICAgICAgICBjcmVhdGVkLiBTbyB3ZSBoYXZlIHRvIGJlIGJh
aWwgb3V0IHF1aWV0bHkgaW4gdGhpcyBjYXNlLgorCiAyMDIwLTExLTAzICBCcmVudCBGdWxnaGFt
ICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gcmVtb3ZlIHN5c2N0bC5v
aWRmbXQuIGFjY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZjhlMWU1NzQ1YThkZGMxZTEzM2U5NjJkZjRkOTdk
MTdiMDVkZTZjMi4uNGFlMGM4ZmQ2OTNmODEzYzg0ZDU4ODU3ZjBiYTBlYmU3NjQxNGM4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCkBAIC0yOTg4LDcgKzI5ODgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShGbG9hdFNpemUobG9naWNhbFNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQml0
bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3Rh
dGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSk7CiAgICAgICAgIGlmICghYnVmZmVyKSB7CiAg
ICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlQml0bWFwLmNwcAppbmRleCA1NDUzMGY4YjExMWZjMjE3ZGUzZWExNjg5ZGE0
NjJiMjU0NDQ4MGY1Li4wYzQ4M2E5NTA1N2ZkMzY3MjhhMmVkYjYzZjVhZTg4ZmZlNjA0NjMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlci5oIgogI2luY2x1
ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKQEAgLTY3LDkgKzY4LDkgQEAgc3RhdGlj
IFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OkFjY2Vs
ZXJhdGVkOwogc3RhdGljIFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAjZW5kaWYKIAotUmVmPEltYWdlQml0bWFwPiBJbWFn
ZUJpdG1hcDo6Y3JlYXRlKEludFNpemUgc2l6ZSkKK1JlZjxJbWFnZUJpdG1hcD4gSW1hZ2VCaXRt
YXA6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIHJldHVybiBjcmVhdGUoeyBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKEZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpLCBidWZmZXJS
ZW5kZXJpbmdNb2RlKSB9KTsKKyAgICByZXR1cm4gY3JlYXRlKHsgY3JlYXRlSW1hZ2VCdWZmZXIo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSkgfSk7CiB9
CiAKIFJlZjxJbWFnZUJpdG1hcD4gSW1hZ2VCaXRtYXA6OmNyZWF0ZShPcHRpb25hbDxJbWFnZUJp
dG1hcEJhY2tpbmc+JiYgYmFja2luZ1N0b3JlKQpAQCAtNzcsNiArNzgsMjAgQEAgUmVmPEltYWdl
Qml0bWFwPiBJbWFnZUJpdG1hcDo6Y3JlYXRlKE9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4m
JiBiYWNraW5nU3RvcmUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZUJpdG1hcChXVEZN
b3ZlKGJhY2tpbmdTdG9yZSkpKTsKIH0KIAorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJpdG1h
cDo6Y3JlYXRlSW1hZ2VCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKK3sKKyAgICBpZiAoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5pc0RvY3VtZW50KCkpIHsKKyAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2Fz
dDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIGlmIChkb2N1bWVu
dC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygpLT5yb290KCkpIHsKKyAgICAgICAgICAgIGF1dG8g
aG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCk7CisgICAg
ICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBT
aG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlOjpTUkdCLCBob3N0V2luZG93KTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIC8vIEZJWE1FIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTg0ODI+IEVuYWJsZSB3
b3JrZXIgYmFzZWQgSW1hZ2VCaXRtYXAgYW5kIE9mZnNjcmVlbkNhbnZhcyBkcmF3aW5nIHRvIHVz
ZSBHUFUgUHJvY2VzcyByZW5kZXJpbmcKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShz
aXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUpOworfQorCiB2b2lkIEltYWdlQml0
bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIEltYWdlQml0bWFwOjpTb3VyY2UmJiBzb3VyY2UsIEltYWdlQml0bWFwT3B0aW9u
cyYmIG9wdGlvbnMsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBXVEY6
OnN3aXRjaE9uKHNvdXJjZSwKQEAgLTIyNiwxMiArMjQxLDEyIEBAIHN0YXRpYyBBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb25Gb3JQcmVtdWx0aXBseUFscGhhKElt
YWdlQml0CiAgICAgcmV0dXJuIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQ7
CiB9CiAKLXZvaWQgSW1hZ2VCaXRtYXA6OnJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihib29s
IG9yaWdpbkNsZWFuLCBQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OnJlc29s
dmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBib29sIG9yaWdpbkNsZWFuLCBQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAg
ICAvLyBTb3VyY2UgcmVjdGFuZ2xlIGxpa2VseSBkb2Vzbid0IGludGVyc2VjdCB0aGUgc291cmNl
IGltYWdlLgogICAgIC8vIEJlaGF2aW9yIGlzbid0IHdlbGwgc3BlY2lmaWVkLCBidXQgV1BUIHRl
c3RzIGV4cGVjdCBubyBQcm9taXNlIHJlamVjdGlvbiAoYW5kIG9mIGNvdXJzZSBubyBjcmFzaGVz
KS4KICAgICAvLyBSZXNvbHZlIFByb21pc2Ugd2l0aCBhIGJsYW5rIDF4MSBJbWFnZUJpdG1hcC4K
LSAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSgxLCAx
KSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byBiaXRtYXBEYXRhID0gY3JlYXRlSW1h
Z2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRmxvYXRTaXplKDEsIDEpLCBidWZmZXJS
ZW5kZXJpbmdNb2RlKTsKIAogICAgIC8vIDkuIElmIHRoZSBvcmlnaW4gb2YgaW1hZ2UncyBpbWFn
ZSBpcyBub3QgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBvcmlnaW4gc3BlY2lmaWVkIGJ5IHRoZQog
ICAgIC8vICAgIGVudHJ5IHNldHRpbmdzIG9iamVjdCwgdGhlbiBzZXQgdGhlIG9yaWdpbi1jbGVh
biBmbGFnIG9mIHRoZSBJbWFnZUJpdG1hcCBvYmplY3QncwpAQCAtMjkxLDcgKzMwNiw3IEBAIHZv
aWQgSW1hZ2VCaXRtYXA6OnJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihib29sIG9yaWdpbkNs
ZWFuLCBQcm9taXNlJiYgcHJvbWlzCiAKIC8vIDEzLiBSZXR1cm4gb3V0cHV0LgogCi12b2lkIElt
YWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8
SFRNTEltYWdlRWxlbWVudD4mIGltYWdlRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0
aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9t
aXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4mIGlt
YWdlRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVj
dD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIDIuIElm
IGltYWdlIGlzIG5vdCBjb21wbGV0ZWx5IGF2YWlsYWJsZSwgdGhlbiByZXR1cm4gYSBwcm9taXNl
IHJlamVjdGVkIHdpdGgKICAgICAvLyBhbiAiSW52YWxpZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlv
biBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC0zNTAsNyArMzY1LDcgQEAgdm9pZCBJbWFnZUJp
dG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJ
bWFnZUVsZW1lbnQKICAgICB9CiAKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9y
U291cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZS5yZXR1cm5WYWx1ZSgpLCBvcHRpb25zKTsK
LSAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShvdXRw
dXRTaXplLndpZHRoKCksIG91dHB1dFNpemUuaGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2Rl
KTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSBjcmVhdGVJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKICAgICBhdXRvIGlt
YWdlRm9yUmVuZGVyID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50
LT5yZW5kZXJlcigpKTsKICAgICBpZiAoIWltYWdlRm9yUmVuZGVyKSB7CiAgICAgICAgIHByb21p
c2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNyZWF0ZSBJbWFnZUJpdG1hcCBm
cm9tIGltYWdlIHRoYXQgY2FuJ3QgYmUgcmVuZGVyZWQiKTsKQEAgLTM1OCw3ICszNzMsNyBAQCB2
b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBS
ZWZQdHI8SFRNTEltYWdlRWxlbWVudAogICAgIH0KIAogICAgIGlmICghYml0bWFwRGF0YSkgewot
ICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoIXRhaW50c09yaWdpbigqY2FjaGVk
SW1hZ2UpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdl
QnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICF0YWludHNPcmlnaW4oKmNhY2hlZEltYWdl
KSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM4NCwx
OSArMzk5LDE5IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50CiAgICAgcHJvbWlzZS5yZXNvbHZl
KFdURk1vdmUoaW1hZ2VCaXRtYXApKTsKIH0KIAotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJv
bWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWZQdHI8SFRNTENhbnZhc0Vs
ZW1lbnQ+JiBjYW52YXNFbGVtZW50LCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBPcHRp
b25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCit2b2lk
IEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4mIGNhbnZhc0VsZW1l
bnQsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3Qs
IEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKLSAgICBjcmVhdGVQcm9taXNlKGNv
bnRleHQsICpjYW52YXNFbGVtZW50LCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHJlY3QpLCBX
VEZNb3ZlKHByb21pc2UpKTsKKyAgICBjcmVhdGVQcm9taXNlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsICpjYW52YXNFbGVtZW50LCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHJlY3QpLCBXVEZN
b3ZlKHByb21pc2UpKTsKIH0KIAogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQotdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPiYgY2FudmFzRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRp
b25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21p
c2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8T2Zmc2NyZWVuQ2Fu
dmFzPiYgY2FudmFzRWxlbWVudCwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9u
YWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewotICAg
IGNyZWF0ZVByb21pc2UoY29udGV4dCwgKmNhbnZhc0VsZW1lbnQsIFdURk1vdmUob3B0aW9ucyks
IFdURk1vdmUocmVjdCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIGNyZWF0ZVByb21pc2Uoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgKmNhbnZhc0VsZW1lbnQsIFdURk1vdmUob3B0aW9ucyksIFdU
Rk1vdmUocmVjdCksIFdURk1vdmUocHJvbWlzZSkpOwogfQogI2VuZGlmCiAKLXZvaWQgSW1hZ2VC
aXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENhbnZhc0Jhc2Um
IGNhbnZhcywgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4g
cmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6
Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBDYW52YXNCYXNlJiBjYW52YXMsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9w
dGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsK
ICAgICAvLyAyLiBJZiB0aGUgY2FudmFzIGVsZW1lbnQncyBiaXRtYXAgaGFzIGVpdGhlciBhIGhv
cml6b250YWwgZGltZW5zaW9uIG9yIGEgdmVydGljYWwKICAgICAvLyAgICBkaW1lbnNpb24gZXF1
YWwgdG8gemVybywgdGhlbiByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gIkludmFs
aWRTdGF0ZUVycm9yIgpAQCAtNDE3LDcgKzQzMiw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIENhbnZhc0Jhc2UmIGNhbnZhcywgSW1h
CiAgICAgfQogCiAgICAgYXV0byBvdXRwdXRTaXplID0gb3V0cHV0U2l6ZUZvclNvdXJjZVJlY3Rh
bmdsZShzb3VyY2VSZWN0YW5nbGUucmV0dXJuVmFsdWUoKSwgb3B0aW9ucyk7Ci0gICAgYXV0byBi
aXRtYXBEYXRhID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUob3V0cHV0U2l6ZS53aWR0
aCgpLCBvdXRwdXRTaXplLmhlaWdodCgpKSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CisgICAgYXV0
byBiaXRtYXBEYXRhID0gY3JlYXRlSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
b3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSk7CiAKICAgICBhdXRvIGltYWdlRm9yUmVu
ZGVyID0gY2FudmFzLmNvcGllZEltYWdlKCk7CiAgICAgaWYgKCFpbWFnZUZvclJlbmRlcikgewpA
QCAtNDI2LDcgKzQ0MSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIENhbnZhc0Jhc2UmIGNhbnZhcywgSW1hCiAgICAgfQogCiAgICAg
aWYgKCFiaXRtYXBEYXRhKSB7Ci0gICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihj
YW52YXMub3JpZ2luQ2xlYW4oKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIHJlc29sdmVX
aXRoQmxhbmtJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjYW52YXMub3JpZ2lu
Q2xlYW4oKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTQ4OSw3ICs1MDQsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgYXV0byBvdXRwdXRT
aXplID0gb3V0cHV0U2l6ZUZvclNvdXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUsIG9wdGlv
bnMpOwogICAgIGF1dG8gYml0bWFwRGF0YSA9IHZpZGVvLT5jcmVhdGVCdWZmZXJGb3JQYWludGlu
ZyhvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKICAgICBpZiAoIWJpdG1hcERhdGEp
IHsKLSAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKCF0YWludHNPcmlnaW4oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigpLCAqdmlkZW8pLCBXVEZNb3ZlKHBy
b21pc2UpKTsKKyAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsICF0YWludHNPcmlnaW4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zZWN1cml0
eU9yaWdpbigpLCAqdmlkZW8pLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNTM0LDcgKzU0OSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21p
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxUeXBlZE9NQ1NTSW1hZ2VWCiB9CiAj
ZW5kaWYKIAotdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgUmVmUHRyPEltYWdlQml0bWFwPiYgZXhpc3RpbmdJbWFnZUJpdG1hcCwgSW1hZ2VC
aXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50UmVjdD4gcmVjdCwgSW1hZ2VCaXRt
YXA6OlByb21pc2UmJiBwcm9taXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWZQdHI8SW1h
Z2VCaXRtYXA+JiBleGlzdGluZ0ltYWdlQml0bWFwLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRp
b25zLCBPcHRpb25hbDxJbnRSZWN0PiByZWN0LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21p
c2UpCiB7CiAgICAgLy8gMi4gSWYgaW1hZ2UncyBbW0RldGFjaGVkXV0gaW50ZXJuYWwgc2xvdCB2
YWx1ZSBpcyB0cnVlLCByZXR1cm4gYSBwcm9taXNlCiAgICAgLy8gICAgcmVqZWN0ZWQgd2l0aCBh
biAiSW52YWxpZFN0YXRlRXJyb3IiIERPTUV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMu
CkBAIC01NTIsMTAgKzU2NywxMCBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1hZ2VCaXRtYXA+JiBleAogICAgIH0KIAog
ICAgIGF1dG8gb3V0cHV0U2l6ZSA9IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0YW5nbGUoc291cmNl
UmVjdGFuZ2xlLnJldHVyblZhbHVlKCksIG9wdGlvbnMpOwotICAgIGF1dG8gYml0bWFwRGF0YSA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKG91dHB1dFNpemUud2lkdGgoKSwgb3V0cHV0
U2l6ZS5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOworICAgIGF1dG8gYml0bWFwRGF0
YSA9IGNyZWF0ZUltYWdlQnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG91dHB1dFNpemUs
IGJ1ZmZlclJlbmRlcmluZ01vZGUpOwogCiAgICAgaWYgKCFiaXRtYXBEYXRhKSB7Ci0gICAgICAg
IHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihleGlzdGluZ0ltYWdlQml0bWFwLT5vcmlnaW5D
bGVhbigpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgcmVzb2x2ZVdpdGhCbGFua0ltYWdl
QnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGV4aXN0aW5nSW1hZ2VCaXRtYXAtPm9yaWdp
bkNsZWFuKCksIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC02OTgsNyArNzEzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKG1fYXJyYXlCdWZmZXJU
b1Byb2Nlc3MucmVsZWFzZU5vbk51bGwoKSwgbV9ibG9iLT50eXBlKCksIG1fYmxvYi0+c2l6ZSgp
LCBtX2Jsb2JMb2FkZXIudXJsKCksIFdURk1vdmUobV9vcHRpb25zKSwgV1RGTW92ZShtX3JlY3Qp
LCBXVEZNb3ZlKG1fcHJvbWlzZSkpOworICAgICAgICBJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1
ZmZlcigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX2FycmF5QnVmZmVyVG9Qcm9jZXNzLnJl
bGVhc2VOb25OdWxsKCksIG1fYmxvYi0+dHlwZSgpLCBtX2Jsb2ItPnNpemUoKSwgbV9ibG9iTG9h
ZGVyLnVybCgpLCBXVEZNb3ZlKG1fb3B0aW9ucyksIFdURk1vdmUobV9yZWN0KSwgV1RGTW92ZSht
X3Byb21pc2UpKTsKICAgICB9CiAKICAgICBGaWxlUmVhZGVyTG9hZGVyIG1fYmxvYkxvYWRlcjsK
QEAgLTcxMCwxNCArNzI1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1f
YXJyYXlCdWZmZXJUb1Byb2Nlc3M7CiB9OwogCi12b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9t
QnVmZmVyKAotICAgIFJlZjxBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKLSAgICBTdHJpbmcg
bWltZVR5cGUsCi0gICAgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwKLSAgICBjb25z
dCBVUkwmIHNvdXJjZVVybCwKLSAgICBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLAotICAg
IE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsCi0gICAgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9t
aXNlKQordm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWY8QXJyYXlCdWZmZXI+JiYgYXJyYXlC
dWZmZXIsIFN0cmluZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwg
Y29uc3QgVVJMJiBzb3VyY2VVUkwsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlv
bmFsPEludFJlY3Q+IHJlY3QsIFByb21pc2UmJiBwcm9taXNlKQogewogICAgIGlmICghYXJyYXlC
dWZmZXItPmJ5dGVMZW5ndGgoKSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3Rh
dGVFcnJvciwgIkNhbm5vdCBjcmVhdGUgYW4gSW1hZ2VCaXRtYXAgZnJvbSBhbiBlbXB0eSBidWZm
ZXIiKTsKQEAgLTcyNSw3ICs3MzMsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVm
ZmVyKAogICAgIH0KIAogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICBhdXRvIG9ic2VydmVyID0gSW1hZ2VCaXRtYXBJbWFn
ZU9ic2VydmVyOjpjcmVhdGUobWltZVR5cGUsIGV4cGVjdGVkQ29udGVudExlbmd0aCwgc291cmNl
VXJsKTsKKyAgICBhdXRvIG9ic2VydmVyID0gSW1hZ2VCaXRtYXBJbWFnZU9ic2VydmVyOjpjcmVh
dGUobWltZVR5cGUsIGV4cGVjdGVkQ29udGVudExlbmd0aCwgc291cmNlVVJMKTsKICAgICBhdXRv
IGltYWdlID0gSW1hZ2U6OmNyZWF0ZShvYnNlcnZlci5nZXQoKSk7CiAgICAgaWYgKCFpbWFnZSkg
ewogICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIlRoZSB0eXBlIG9m
IHRoZSBhcmd1bWVudCB0byBjcmVhdGVJbWFnZUJpdG1hcCBpcyBub3Qgc3VwcG9ydGVkIik7CkBA
IC03NDUsNyArNzUzLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcigKICAg
ICB9CiAKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291cmNlUmVjdGFuZ2xl
KHNvdXJjZVJlY3RhbmdsZS5yZXR1cm5WYWx1ZSgpLCBvcHRpb25zKTsKLSAgICBhdXRvIGJpdG1h
cERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShvdXRwdXRTaXplLndpZHRoKCks
IG91dHB1dFNpemUuaGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGJp
dG1hcERhdGEgPSBjcmVhdGVJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBvdXRw
dXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKICAgICBpZiAoIWJpdG1hcERhdGEpIHsKICAg
ICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIGFu
IGltYWdlIGJ1ZmZlciBmcm9tIHRoZSBhcmd1bWVudCB0byBjcmVhdGVJbWFnZUJpdG1hcCIpOwog
ICAgICAgICByZXR1cm47CkBAIC03NjksNyArNzc3LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3Jl
YXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LAogICAgIFBlbmRpbmdJbWFnZUJpdG1hcDo6ZmV0Y2goc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
V1RGTW92ZShibG9iKSwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShyZWN0KSwgV1RGTW92ZShw
cm9taXNlKSk7CiB9CiAKLXZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZURhdGE+JiBpbWFnZURhdGEsIEltYWdlQml0bWFw
T3B0aW9ucyYmIG9wdGlvbnMsIE9wdGlvbmFsPEludFJlY3Q+IHJlY3QsIEltYWdlQml0bWFwOjpQ
cm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmUHRyPEltYWdlRGF0
YT4mIGltYWdlRGF0YSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgT3B0aW9uYWw8SW50
UmVjdD4gcmVjdCwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIDYu
MS4gTGV0IGJ1ZmZlciBiZSBpbWFnZSdzIGRhdGEgYXR0cmlidXRlIHZhbHVlJ3MgW1tWaWV3ZWRB
cnJheUJ1ZmZlcl1dCiAgICAgLy8gICAgICBpbnRlcm5hbCBzbG90LgpAQCAtNzg5LDEwICs3OTcs
MTAgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgUmVmUHRyPEltYWdlRGF0YT4mIGltYWcKICAgICB9CiAKICAgICBhdXRvIG91dHB1dFNp
emUgPSBvdXRwdXRTaXplRm9yU291cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZS5yZXR1cm5W
YWx1ZSgpLCBvcHRpb25zKTsKLSAgICBhdXRvIGJpdG1hcERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKEZsb2F0U2l6ZShvdXRwdXRTaXplLndpZHRoKCksIG91dHB1dFNpemUuaGVpZ2h0KCkpLCBi
dWZmZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSBjcmVhdGVJbWFnZUJ1
ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdN
b2RlKTsKIAogICAgIGlmICghYml0bWFwRGF0YSkgewotICAgICAgICByZXNvbHZlV2l0aEJsYW5r
SW1hZ2VCdWZmZXIodHJ1ZSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIHJlc29sdmVXaXRo
QmxhbmtJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0cnVlLCBXVEZNb3ZlKHBy
b21pc2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODExLDcgKzgxOSw3IEBAIHZv
aWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJl
ZlB0cjxJbWFnZURhdGE+JiBpbWFnCiAKICAgICAvLyA2LjMuIFNldCBpbWFnZUJpdG1hcCdzIGJp
dG1hcCBkYXRhIHRvIGltYWdlJ3MgaW1hZ2UgZGF0YSwgY3JvcHBlZCB0byB0aGUKICAgICAvLyAg
ICAgIHNvdXJjZSByZWN0YW5nbGUgd2l0aCBmb3JtYXR0aW5nLgotICAgIGF1dG8gdGVtcEJpdG1h
cERhdGEgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShpbWFnZURhdGEtPndpZHRoKCks
IGltYWdlRGF0YS0+aGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIHRl
bXBCaXRtYXBEYXRhID0gY3JlYXRlSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
aW1hZ2VEYXRhLT5zaXplKCksIGJ1ZmZlclJlbmRlcmluZ01vZGUpOwogICAgIHRlbXBCaXRtYXBE
YXRhLT5wdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCAqaW1hZ2VEYXRhLCBJbnRSZWN0KDAsIDAsIGltYWdlRGF0YS0+d2lkdGgoKSwgaW1hZ2VEYXRh
LT5oZWlnaHQoKSksIHsgfSwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CiAgICAgRmxvYXRSZWN0
IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7CiAgICAgYml0bWFwRGF0YS0+Y29u
dGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqdGVtcEJpdG1hcERhdGEsIGRlc3RSZWN0LCBzb3VyY2VS
ZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JS
ZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSksIGltYWdlT3JpZW50YXRpb25Gb3JP
cmllbnRhdGlvbihvcHRpb25zLmltYWdlT3JpZW50YXRpb24pIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUJpdG1hcC5oCmluZGV4IGUyNTk5NGRmN2I1NWZhZTE3MjFiM2VmMjkwMWQyZDk5NmM3OTQxZDku
LjJhODlhZWY2MGQ5MmNmODZlNDViNTBhYjM2MGUxNDA4NGQwNDBhNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlQml0bWFwLmgKQEAgLTgyLDcgKzgyLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lk
IGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFNvdXJjZSYmLCBJbWFnZUJp
dG1hcE9wdGlvbnMmJiwgUHJvbWlzZSYmKTsKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTb3VyY2UmJiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYs
IGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwgUHJvbWlzZSYmKTsKIAotICAgIHN0YXRp
YyBSZWY8SW1hZ2VCaXRtYXA+IGNyZWF0ZShJbnRTaXplKTsKKyAgICBzdGF0aWMgUmVmUHRyPElt
YWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29u
c3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSk7
CisKKyAgICBzdGF0aWMgUmVmPEltYWdlQml0bWFwPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IEludFNpemUmKTsKICAgICBzdGF0aWMgUmVmPEltYWdlQml0bWFwPiBjcmVh
dGUoT3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPiYmKTsKIAogICAgIH5JbWFnZUJpdG1hcCgp
OwpAQCAtMTEyLDcgKzExNCw3IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZUJpdG1hcChPcHRpb25h
bDxJbWFnZUJpdG1hcEJhY2tpbmc+JiYpOwogCi0gICAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhC
bGFua0ltYWdlQnVmZmVyKGJvb2wgb3JpZ2luQ2xlYW4sIFByb21pc2UmJik7CisgICAgc3RhdGlj
IHZvaWQgcmVzb2x2ZVdpdGhCbGFua0ltYWdlQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBib29sIG9yaWdpbkNsZWFuLCBQcm9taXNlJiYpOwogCiAgICAgc3RhdGljIHZvaWQgY3JlYXRl
UHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+
JiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwog
I2lmIEVOQUJMRShWSURFTykKQEAgLTEyNyw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyB2b2lkIGNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxCbG9i
PiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsK
ICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBS
ZWZQdHI8SW1hZ2VEYXRhPiYsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0
PiwgUHJvbWlzZSYmKTsKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBSZWZQdHI8VHlwZWRPTUNTU0ltYWdlVmFsdWU+JiwgSW1hZ2VCaXRtYXBP
cHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNlJiYpOwotICAgIHN0YXRpYyB2b2lk
IGNyZWF0ZUZyb21CdWZmZXIoUmVmPEFycmF5QnVmZmVyPiYmLCBTdHJpbmcgbWltZVR5cGUsIGxv
bmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IFVSTCYsIEltYWdlQml0bWFwT3B0
aW9ucyYmLCBPcHRpb25hbDxJbnRSZWN0PiwgUHJvbWlzZSYmKTsKKyAgICBzdGF0aWMgdm9pZCBj
cmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8QXJyYXlCdWZmZXI+
JiYsIFN0cmluZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29u
c3QgVVJMJiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIE9wdGlvbmFsPEludFJlY3Q+LCBQcm9taXNl
JiYpOwogCiAgICAgT3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPiBtX2JhY2tpbmdTdG9yZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKaW5kZXggOTNiNTBhY2E0
NDI0YTFhNTcxZjk0NTViM2I5ZDdmNGEwZDUzZTdhYi4uMmVmMTBiMGE0ZjM0NmVmZTFiOTM4ZTQ2
ZTAwNTNhOGEzMzk0NTM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3Jl
ZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNw
cApAQCAtNzMsMTQgKzczLDE0IEBAIFdlYWtQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IERldGFjaGVk
T2Zmc2NyZWVuQ2FudmFzOjp0YWtlUGxhY2Vob2xkZXJDYW52YXMoKQogICAgIHJldHVybiBzdGQ6
OmV4Y2hhbmdlKG1fcGxhY2Vob2xkZXJDYW52YXMsIG51bGxwdHIpOwogfQogCi1SZWY8T2Zmc2Ny
ZWVuQ2FudmFzPiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQorUmVmPE9mZnNjcmVl
bkNhbnZhcz4gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMoY29udGV4dCwgd2lk
dGgsIGhlaWdodCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9mZnNjcmVlbkNhbnZhcyhz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKLVJlZjxPZmZzY3Jl
ZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4mJiBkZXRh
Y2hlZENhbnZhcykKK1JlZjxPZmZzY3JlZW5DYW52YXM+IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0ZDo6dW5p
cXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4mJiBkZXRhY2hlZENhbnZhcykKIHsKLSAg
ICBSZWY8T2Zmc2NyZWVuQ2FudmFzPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgT2Zmc2NyZWVuQ2Fu
dmFzKGNvbnRleHQsIGRldGFjaGVkQ2FudmFzLT5zaXplKCkud2lkdGgoKSwgZGV0YWNoZWRDYW52
YXMtPnNpemUoKS5oZWlnaHQoKSkpOworICAgIFJlZjxPZmZzY3JlZW5DYW52YXM+IGNsb25lID0g
YWRvcHRSZWYoKm5ldyBPZmZzY3JlZW5DYW52YXMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZGV0
YWNoZWRDYW52YXMtPnNpemUoKS53aWR0aCgpLCBkZXRhY2hlZENhbnZhcy0+c2l6ZSgpLmhlaWdo
dCgpKSk7CiAgICAgY2xvbmUtPnNldEltYWdlQnVmZmVyKGRldGFjaGVkQ2FudmFzLT50YWtlSW1h
Z2VCdWZmZXIoKSk7CiAgICAgaWYgKCFkZXRhY2hlZENhbnZhcy0+b3JpZ2luQ2xlYW4oKSkKICAg
ICAgICAgY2xvbmUtPnNldE9yaWdpblRhaW50ZWQoKTsKQEAgLTk4LDE2ICs5OCwxNiBAQCBSZWY8
T2Zmc2NyZWVuQ2FudmFzPiBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBzdAogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPE9mZnNjcmVl
bkNhbnZhcz4gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcykKK1JlZjxPZmZzY3JlZW5DYW52YXM+
IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMpCiB7Ci0gICAgYXV0byBv
ZmZzY3JlZW4gPSBhZG9wdFJlZigqbmV3IE9mZnNjcmVlbkNhbnZhcyhjb250ZXh0LCBjYW52YXMu
d2lkdGgoKSwgY2FudmFzLmhlaWdodCgpKSk7CisgICAgYXV0byBvZmZzY3JlZW4gPSBhZG9wdFJl
ZigqbmV3IE9mZnNjcmVlbkNhbnZhcyhzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjYW52YXMud2lk
dGgoKSwgY2FudmFzLmhlaWdodCgpKSk7CiAgICAgb2Zmc2NyZWVuLT5zZXRQbGFjZWhvbGRlckNh
bnZhcyhjYW52YXMpOwogICAgIHJldHVybiBvZmZzY3JlZW47CiB9CiAKLU9mZnNjcmVlbkNhbnZh
czo6T2Zmc2NyZWVuQ2FudmFzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2ln
bmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCitPZmZzY3JlZW5DYW52YXM6Ok9mZnNjcmVlbkNh
bnZhcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogICAgIDogQ2FudmFzQmFzZShJbnRTaXplKHdp
ZHRoLCBoZWlnaHQpKQotICAgICwgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmNvbnRleHQp
CisgICAgLCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKICAgICAsIG1fcGxhY2Vob2xkZXJEYXRhKFBsYWNlaG9sZGVyRGF0YTo6Y3JlYXRlKCkpCiB7
CiB9CkBAIC0xNzksMTMgKzE3OSwxMyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlQ29u
dGV4dFdlYkdMKFJlbmRlcmluZ0NvbnRleHRUeXBlIGNvbnRleHRUeXBlLCBXZWJHTAogewogICAg
IEFTU0VSVCghbV9jb250ZXh0KTsKIAotICAgIGF1dG8gY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7Ci0g
ICAgICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPigqY29udGV4dCk7CisgICAgYXV0byBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0gdGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmIChzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAgICAgICAgV29ya2VyR2xv
YmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICAgICAgaWYgKCFzaG91bGRFbmFibGVXZWJH
TCh3b3JrZXJHbG9iYWxTY29wZS53ZWJHTEVuYWJsZWQoKSwgd29ya2VyR2xvYmFsU2NvcGUuYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
fSBlbHNlIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgYXV0byYgc2V0dGlu
Z3MgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLnNldHRpbmdzKCk7CisgICAgfSBlbHNl
IGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpIHsKKyAgICAgICAgYXV0
byYgc2V0dGluZ3MgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
LnNldHRpbmdzKCk7CiAgICAgICAgIGlmICghc2hvdWxkRW5hYmxlV2ViR0woc2V0dGluZ3Mud2Vi
R0xFbmFibGVkKCksIHNldHRpbmdzLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkpKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZQpAQCAtMjU0LDggKzI1NCwxMCBAQCBFeGNl
cHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9J
bWFnZUJpdG1hcCgpCiAgICAgICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAgICAg
ICAgICByZXR1cm4geyBSZWZQdHI8SW1hZ2VCaXRtYXA+IHsgbnVsbHB0ciB9IH07CiAKLSAgICAg
ICAgaWYgKCFtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7IElt
YWdlQml0bWFwOjpjcmVhdGUoSW1hZ2VCaXRtYXBCYWNraW5nKEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSkpIH07CisgICAgICAgIGlmICgh
bV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gSW1h
Z2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOworICAgICAgICAg
ICAgcmV0dXJuIHsgSW1hZ2VCaXRtYXA6OmNyZWF0ZShJbWFnZUJpdG1hcEJhY2tpbmcoV1RGTW92
ZShidWZmZXIpKSkgfTsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gdGFrZUlt
YWdlQnVmZmVyKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMjcyLDcgKzI3NCw3IEBAIEV4
Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IE9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJU
b0ltYWdlQml0bWFwKCkKICAgICAgICAgLy8gc3RvcmUgZnJvbSB0aGlzIGNhbnZhcyAob3IgaXRz
IGNvbnRleHQpLCBidXQgZm9yIG5vdyB3ZSdsbCBqdXN0CiAgICAgICAgIC8vIGNyZWF0ZSBhIG5l
dyBiaXRtYXAgYW5kIHBhaW50IGludG8gaXQuCiAKLSAgICAgICAgYXV0byBpbWFnZUJpdG1hcCA9
IEltYWdlQml0bWFwOjpjcmVhdGUoc2l6ZSgpKTsKKyAgICAgICAgYXV0byBpbWFnZUJpdG1hcCA9
IEltYWdlQml0bWFwOjpjcmVhdGUoKmNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IHNpemUoKSk7CiAgICAgICAgIGlmICghaW1hZ2VCaXRtYXAtPmJ1ZmZlcigpKQogICAgICAgICAg
ICAgcmV0dXJuIHsgUmVmUHRyPEltYWdlQml0bWFwPiB7IG51bGxwdHIgfSB9OwogCkBAIC0zNjgs
MTEgKzM3MCwxMSBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y2xlYXJDb3BpZWRJbWFnZSgpIGNv
bnN0CiAKIFNlY3VyaXR5T3JpZ2luKiBPZmZzY3JlZW5DYW52YXM6OnNlY3VyaXR5T3JpZ2luKCkg
Y29uc3QKIHsKLSAgICBhdXRvJiBjb250ZXh0ID0gKmNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAg
ICAgcmV0dXJuICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudG9wT3JpZ2lu
KCk7CisgICAgYXV0byYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9ICpjYW52YXNCYXNlU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkpCisgICAgICAgIHJldHVybiAmZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRvcE9yaWdpbigpOwogCi0gICAgcmV0dXJu
ICZkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICByZXR1
cm4gJmRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zZWN1cml0eU9y
aWdpbigpOwogfQogCiBib29sIE9mZnNjcmVlbkNhbnZhczo6Y2FuRGV0YWNoKCkgY29uc3QKQEAg
LTQ1MSwxMSArNDUzLDExIEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpzY2hlZHVsZUNvbW1pdFRv
UGxhY2Vob2xkZXJDYW52YXMoKQogCiBDU1NWYWx1ZVBvb2wmIE9mZnNjcmVlbkNhbnZhczo6Y3Nz
VmFsdWVQb29sKCkKIHsKLSAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQmFzZVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKQot
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpjb250ZXh0KS5jc3NW
YWx1ZVBvb2woKTsKKyAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gY2FudmFzQmFz
ZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5jc3NWYWx1ZVBvb2woKTsKIAot
ICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIEFTU0VSVChzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpOwogfQogCkBAIC00NjYsNyArNDY4LDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6
OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKICAgICBpZiAoIXdpZHRoKCkgfHwgIWhlaWdodCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCkpOworICAgIHNldEltYWdl
QnVmZmVyKEltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqY2FudmFzQmFzZVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSk7
CiB9CiAKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gT2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZm
ZXIoKSBjb25zdApAQCAtNDgyLDcgKzQ4NCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gT2Zmc2Ny
ZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIoKSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGNsZWFyQ29waWVkSW1hZ2UoKTsKLSAgICByZXR1cm4gc2V0SW1hZ2VCdWZmZXIo
bV9kZXRhY2hlZCA/IG51bGxwdHIgOiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCkpOworICAgIHJldHVybiBzZXRJbWFnZUJ1ZmZlcihtX2Rl
dGFjaGVkID8gbnVsbHB0ciA6IEltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqY2FudmFz
QmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkKSk7CiB9CiAKIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpyZXNldCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IGY3N2YzN2VlNDcxN2YzNzExYmRlM2ZhZmRkODgwODJj
NmFhYjA4OTAuLmMwZWMxYmIxMzI5ZTg5NmYyY2Y2MTNmMzdmM2NhZTQyNTY3MTg3MGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0xMjAsNyArMTIwLDcgQEAgcHJvdGVjdGVkOgog
ICAgIHsKICAgICAgICAgLy8gVGhlIG1hdGggaW5zaWRlIEltYWdlRGF0YTo6Y3JlYXRlKCkgZG9l
c24ndCBhZ3JlZSB3aXRoIHRoZSBtYXRoIGluc2lkZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dElt
YWdlRGF0YSgpIGFib3V0IGhvdyBtX3Jlc29sdXRpb25TY2FsZSBpbnRlcmFjdHMgd2l0aCB0aGUg
ZGF0YSBpbiB0aGUgSW1hZ2VCdWZmZXIuCiAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBwdXRJ
bWFnZURhdGEoKSBpcyBvbmx5IGNhbGxlZCB3aGVuIG1fcmVzb2x1dGlvblNjYWxlID09IDEuCi0g
ICAgICAgIEFTU0VSVChtX2JhY2tlbmQtPnJlc29sdXRpb25TY2FsZSgpID09IDEpOworICAgICAg
ICBBU1NFUlRfSU1QTElFUyhtX2JhY2tlbmQsIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCkg
PT0gMSk7CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5wdXRJbWFnZURhdGEo
aW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBm
OWE3ZGM1ZGUwMjg3NzE0ZTY2ZWNiMTcxNzQxYzJlODk1MzhlOTEyLi5kNTU3OGM5ODIwMzllNmJh
ZDRkNTFiOGQ3YjEzODBhN2E1YTVjODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCkBAIC0xMDMsNyArMTAzLDYgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2kK
ICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>