<?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>174230</bug_id>
          
          <creation_ts>2017-07-06 17:26:44 -0700</creation_ts>
          <short_desc>REGRESSION(r219045): A partially loaded image may not be repainted when its complete frame finishes decoding</short_desc>
          <delta_ts>2017-07-22 05:12:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1326260</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-06 17:26:44 -0700</bug_when>
    <thetext>After &lt;http://trac.webkit.org/changeset/219045&gt;, assume we have only one image in a page and this image is loaded into separate chunks. Assume the following sequence of events happens:

1. Part-1 of image is loaded.
2. Image rectangle is repainted.
3. BitmapImage::draw() is called.
4. Request-1 has been requested for Part-1 of this image.
5. RenderImage adds itself to CachedImage::m_pendingImageDrawingClients.
6. Part-2 of image is loaded.
7. Image rectangle is repainted.
8. BitmapImage::draw() is called.
9. Request-2 has been requested for Part-2 of this image. The request will happen BitmapImage::draw() allows multiple requests for the same frame if new data is added to the image source.
10. RenderImage will not add itself to CachedImage::m_pendingImageDrawingClients since it is already there.
11. BitmapImage::imageFrameAvailableAtIndex() is called for Request-1.
12. CachedImage::imageFrameAvailable() repaints the image rectangle and &quot;clears its m_pendingImageDrawingClients&quot;.
13. BitmapImage::draw() is called.
14. Frame for Request-1 is drawn.
15. BitmapImage::imageFrameAvailableAtIndex() is called for Request-2.
16. CachedImage::imageFrameAvailable() does not repaint the image rectangle because its m_pendingImageDrawingClients is empty.

Result: we end up having incomplete frame for the image even after the image finishes loading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326270</commentid>
    <comment_count>1</comment_count>
      <attachid>314780</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-06 17:45:35 -0700</bug_when>
    <thetext>Created attachment 314780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326272</commentid>
    <comment_count>2</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-06 17:46:23 -0700</bug_when>
    <thetext>I am trying to write a test for this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326275</commentid>
    <comment_count>3</comment_count>
      <attachid>314781</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-06 18:03:21 -0700</bug_when>
    <thetext>Created attachment 314781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327052</commentid>
    <comment_count>4</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-10 10:05:14 -0700</bug_when>
    <thetext>I tried to create a layout test for this patch. It took me a long time to do so. But at the end I was not able to find a test that fails without the patch and screed with it. The reason is there are three things that I need to control and overlap their timing:

1) Image loading
2) Image decoding
3) Page rendering

I could have controlled the timing of the image loading by changing http/tests/resources/load-and-stall.php and made it stall for specific period of time after sending a specific chunk of data.

I could also have controlled the timing of the image decoding be changing the decoding thread in ImageFrameCache::startAsyncDecodingQueue() to sleep for a specific period of time before sending the decoded frame to the main thread.

But I could not control the timing of the page rendering. The page repaint and rendering is efficient such that it coalesces multiple repaints in one rendering. Also the network layer may decide to delay sending small chunks of data to the Web process till it receives more data.

But more importantly I could not overlap the timing between these three entities in the same order I explained in the sequence above. I saw this bug with a test page with many large images: 50 images and on average each image is 3MB.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330096</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-07-18 13:42:04 -0700</bug_when>
    <thetext>&lt;rdar://problem/33384272&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330766</commentid>
    <comment_count>6</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-20 14:07:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/33436337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331097</commentid>
    <comment_count>7</comment_count>
      <attachid>314781</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-07-21 13:49:38 -0700</bug_when>
    <thetext>Comment on attachment 314781
Patch

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

&gt; Source/WebCore/ChangeLog:23
&gt; +        decoding, CachedImage will keep its HashSet of pending drawing clients as
&gt; +        is if the image frame is partially loaded frame.

&quot;as is if&quot;?

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:454
&gt; +    DecodingStatus decodingStatus = frameDecodingStatusAtIndex(m_currentFrame);
&gt; +    if (m_currentFrameDecodingStatus == DecodingStatus::Decoding)
&gt; +        m_currentFrameDecodingStatus = decodingStatus;

It&apos;s very confusing that you can&apos;t just assign frameDecodingStatusAtIndex(m_currentFrame) to m_currentFrameDecodingStatus. Why are these things not the same?

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:515
&gt; +    if (m_currentFrameDecodingStatus == DecodingStatus::Decoding)
&gt; +        m_currentFrameDecodingStatus = decodingStatus;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331323</commentid>
    <comment_count>8</comment_count>
      <attachid>316181</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-22 02:09:08 -0700</bug_when>
    <thetext>Created attachment 316181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331324</commentid>
    <comment_count>9</comment_count>
      <attachid>316182</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-22 02:11:15 -0700</bug_when>
    <thetext>Created attachment 316182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331346</commentid>
    <comment_count>10</comment_count>
      <attachid>316193</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-22 04:34:29 -0700</bug_when>
    <thetext>Created attachment 316193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331347</commentid>
    <comment_count>11</comment_count>
      <attachid>316193</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-22 05:12:37 -0700</bug_when>
    <thetext>Comment on attachment 316193
Patch

Clearing flags on attachment: 316193

Committed r219762: &lt;http://trac.webkit.org/changeset/219762&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331348</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-22 05:12:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314780</attachid>
            <date>2017-07-06 17:45:35 -0700</date>
            <delta_ts>2017-07-06 18:03:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174230-20170706174535.patch</filename>
            <type>text/plain</type>
            <size>23521</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTIyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE3LTA3LTA2ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TihyMjE5MDQ1KTogQSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG1heSBub3QgYmUgcmVwYWludGVk
IHdoZW4gaXRzIGNvbXBsZXRlIGZyYW1lIGZpbmlzaGVzIGRlY29kaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWNhdXNlIG9mIHIyMTkwNDUsIHdl
IG5vdyBvbmx5IHJlcGFpbnQgdGhlIENhY2hlZEltYWdlQ2xpbmV0cyB3aGljaCB0cmllZAorICAg
ICAgICB0byBkcmF3IHRoZSBpbWFnZSBidXQgdGhleSBjb3VsZCBub3QgYmVjYXVzZSB0aGV5IGhh
dmUgdG8gd2FpdCBmb3IgdGhlIGltYWdlCisgICAgICAgIGRlY29kaW5nIHRvIGZpbmlzaC4gVGhp
cyB3YXMgZG9uZSBieSBrZWVwaW5nIGEgSGFzaFNldCBvZiB0aGVzZSBjbGllbnRzIAorICAgICAg
ICBhbmQgbWFrZSBDYWNoZWRJbWFnZSBvd24gaXQuIFRoaXMgSGFzaFNldCBpcyBjbGVhcmVkIG9u
Y2UgdGhlIGltYWdlIGZyYW1lCisgICAgICAgIGZpbmlzaGVzIGRlY29kaW5nIGFuZCBhbGwgdGhl
IHdhaXRlZCBjbGllbnRzIGFyZSByZXBhaW50ZWQuCisKKyAgICAgICAgQnV0IE11bHRpcGxlIGFz
eW5jaHJvbm91cyBpbWFnZSBkZWNvZGluZyByZXF1ZXN0cyBhcmUgYWxsb3dlZCBmb3IgdGhlIHNh
bWUKKyAgICAgICAgZnJhbWUgaWYgbmV3IGRhdGEgaXMgYWRkZWQgdG8gdGhlIGltYWdlIHNvdXJj
ZS4gSWYgd2UgdHJpZWQgdG8gZHJhdyB0aGUgCisgICAgICAgIHNhbWUgaW1hZ2UgdHdpY2UgYmVm
b3JlIGl0IGZpbmlzaGVzIGRlY29kaW5nIHRoZSBmaXJzdCByZXF1ZXN0LCB3ZSB3aWxsCisgICAg
ICAgIG5vdCBiZSB0byByZWNvcmQgdGhpcyBzZWNvbmQgcmVxdWVzdCBzaW5jZSB0aGUgSGFzaFNl
dCB3aWxsIG5vdCBhZGQgdGhlCisgICAgICAgIHNhbWUgY2xpZW50IHR3aWNlLiBXaGVuIGhlIHNl
Y29uZCByZXF1ZXN0IGZpbmlzaGVzIGRlY29kaW5nLCBDYWNoZWRJbWFnZQorICAgICAgICB3aWxs
IG5vdCByZXBhaW50IGFueSBjbGllbnQgc2luY2UgaXRzIEhhc2hTZXQgaXMgZW1wdHkuCisKKyAg
ICAgICAgVG8gZml4IHRoaXMgcHJvYmxlbSB3ZSBjYW4gZG8gdGhlIGZvbGxvd2luZy4gV2hlbiBh
biBpbWFnZSBmcmFtZSBmaW5pc2hlcworICAgICAgICBkZWNvZGluZywgQ2FjaGVkSW1hZ2Ugd2ls
bCBrZWVwIGl0cyBIYXNoU2V0IG9mIHBlbmRpbmcgZHJhd2luZyBjbGllbnRzIGFzCisgICAgICAg
IGlzIGlmIHRoZSBpbWFnZSBmcmFtZSBpcyBwYXJ0aWFsbHkgbG9hZGVkIGZyYW1lLgorCisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjppbWFnZUZyYW1lQXZhaWxhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVz
dHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6aW50ZXJuYWxTdGFydEFuaW1hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6aW50ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6
OmRlY29kaW5nU3RhdHVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
Lmg6IE1vdmUgRGVjb2RpbmdTdGF0dXMgb3V0IG9mIHRoaXMgY2xhc3MKKyAgICAgICAgdG8gSW1h
Z2VUeXBlcy5oIHRvIGF2b2lkIGFkZGluZyBvdGhlciBoZWFkZXIgZmlsZXMgdG8gSW1hZ2VPYnZz
ZXZlci5oCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6c2V0TmF0aXZlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpjYWNoZU1ldGFkYXRhQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZUF0
SW5kZXhBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lQ2FjaGU6OnJlcXVlc3RG
cmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVD
YWNoZTo6ZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lRGVjb2RpbmdTdGF0dXNBdElu
ZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmg6CisKIDIwMTct
MDctMDYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q29jb2FdIENUUGFyYWdyYXBoU3R5bGUgbGVhayB1bmRlciBXZWJDb3JlOjpMaW5rSW1hZ2VMYXlv
dXQ6OkxpbmtJbWFnZUxheW91dApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyMTkyMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIsMTAgKzM2Miwx
MCBAQCBib29sIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpjCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmltYWdl
RnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmIGltYWdlLCBJbWFnZUFuaW1hdGluZ1N0YXRlIGFu
aW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0KQordm9pZCBDYWNoZWRJbWFn
ZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYg
aW1hZ2UsIEltYWdlQW5pbWF0aW5nU3RhdGUgYW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3Qq
IGNoYW5nZVJlY3QsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIGZvciAo
YXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKQotICAgICAgICBjYWNoZWRJbWFnZS0+
aW1hZ2VGcmFtZUF2YWlsYWJsZShpbWFnZSwgYW5pbWF0aW5nU3RhdGUsIGNoYW5nZVJlY3QpOwor
ICAgICAgICBjYWNoZWRJbWFnZS0+aW1hZ2VGcmFtZUF2YWlsYWJsZShpbWFnZSwgYW5pbWF0aW5n
U3RhdGUsIGNoYW5nZVJlY3QsIGRlY29kaW5nU3RhdHVzKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFn
ZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6Y2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYgaW1hZ2Us
IGNvbnN0IEludFJlY3QqIHJlY3QpCkBAIC01NDEsNyArNTQxLDcgQEAgYm9vbCBDYWNoZWRJbWFn
ZTo6Y2FuRGVzdHJveURlY29kZWREYXRhKAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENh
Y2hlZEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiBpbWFnZSwgSW1hZ2VB
bmltYXRpbmdTdGF0ZSBhbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCkK
K3ZvaWQgQ2FjaGVkSW1hZ2U6OmltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmIGltYWdl
LCBJbWFnZUFuaW1hdGluZ1N0YXRlIGFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFu
Z2VSZWN0LCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKIHsKICAgICBpZiAoJmltYWdl
ICE9IG1faW1hZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTU2MCw3ICs1NjAsOCBAQCB2b2lkIENh
Y2hlZEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlKGNvCiAgICAgaWYgKHZpc2libGVTdGF0ZSA9
PSBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlOjpObyAmJiBhbmltYXRpbmdTdGF0ZSA9PSBJbWFnZUFu
aW1hdGluZ1N0YXRlOjpZZXMpCiAgICAgICAgIG1faW1hZ2UtPnN0b3BBbmltYXRpb24oKTsKIAot
ICAgIG1fcGVuZGluZ0ltYWdlRHJhd2luZ0NsaWVudHMuY2xlYXIoKTsKKyAgICBpZiAoZGVjb2Rp
bmdTdGF0dXMgIT0gRGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwpCisgICAgICAgIG1fcGVuZGluZ0lt
YWdlRHJhd2luZ0NsaWVudHMuY2xlYXIoKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6Y2hhbmdl
ZEluUmVjdChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gMjE5MjEx
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGRpZERyYXco
Y29uc3QgSW1hZ2UmKSBmaW5hbDsKIAogICAgICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0
YShjb25zdCBJbWFnZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUo
Y29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VS
ZWN0ID0gbnVsbHB0cikgZmluYWw7CisgICAgICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShj
b25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJl
Y3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBm
aW5hbDsKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50
UmVjdCopIGZpbmFsOwogCiAgICAgICAgIEhhc2hTZXQ8Q2FjaGVkSW1hZ2UqPiBtX2NhY2hlZElt
YWdlczsKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVjb2RlZFNpemVD
aGFuZ2VkKGNvbnN0IEltYWdlJiwgbG9uZyBsb25nIGRlbHRhKTsKICAgICB2b2lkIGRpZERyYXco
Y29uc3QgSW1hZ2UmKTsKICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFn
ZSYpOwotICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5p
bWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyKTsKKyAgICB2
b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRl
LCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBE
ZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IElt
YWdlJiwgY29uc3QgSW50UmVjdCopOwogCiAgICAgdm9pZCBhZGRJbmNyZW1lbnRhbERhdGFCdWZm
ZXIoU2hhcmVkQnVmZmVyJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lvbiAyMTkyMTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDcgKzg5LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvbwog
ICAgICAgICBtX3NvdXJjZS5kZXN0cm95QWxsRGVjb2RlZERhdGFFeGNsdWRlRnJhbWUobV9jdXJy
ZW50RnJhbWUpOwogICAgIGVsc2UgewogICAgICAgICBtX3NvdXJjZS5kZXN0cm95QWxsRGVjb2Rl
ZERhdGEoKTsKLSAgICAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IEltYWdlRnJh
bWU6OkRlY29kaW5nU3RhdHVzOjpJbnZhbGlkOworICAgICAgICBtX2N1cnJlbnRGcmFtZURlY29k
aW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQ7CiAgICAgfQogCiAgICAgLy8gVGhl
cmUncyBubyBuZWVkIHRvIHRocm93IGF3YXkgdGhlIGRlY29kZXIgdW5sZXNzIHdlJ3JlIGV4cGxp
Y2l0bHkgYXNrZWQKQEAgLTEyMCw3ICsxMjAsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBCaXRtYXBJ
bWFnZTo6ZGF0YUNoYW5nCiAgICAgaWYgKCFzaG91bGRVc2VBc3luY0RlY29kaW5nRm9yTGFyZ2VJ
bWFnZXMoKSkKICAgICAgICAgbV9zb3VyY2UuZGVzdHJveUluY29tcGxldGVEZWNvZGVkRGF0YSgp
OwogCi0gICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IEltYWdlRnJhbWU6OkRlY29k
aW5nU3RhdHVzOjpJbnZhbGlkOworICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBE
ZWNvZGluZ1N0YXR1czo6SW52YWxpZDsKICAgICByZXR1cm4gbV9zb3VyY2UuZGF0YUNoYW5nZWQo
ZGF0YSgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCkBAIC0yMDIsMTMgKzIwMiwxMyBAQCBJbWFn
ZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpCiAKICAgICAgICAgLy8gSWYgdGhl
IGN1cnJlbnQgZnJhbWUgaXMgaW5jb21wbGV0ZSwgYSBuZXcgcmVxdWVzdCBmb3IgZGVjb2Rpbmcg
dGhpcyBmcmFtZSBoYXMgdG8gYmUgbWFkZSBldmVuIGlmCiAgICAgICAgIC8vIGl0IGlzIGN1cnJl
bnRseSBiZWluZyBkZWNvZGVkLiBOZXcgZGF0YSBtYXkgaGF2ZSBiZWVuIHJlY2VpdmVkIHNpbmNl
IHRoZSBwcmV2aW91cyByZXF1ZXN0IHdhcyBtYWRlLgotICAgICAgICBpZiAoKCFmcmFtZUlzQ29t
cGF0aWJsZSAmJiAhZnJhbWVJc0JlaW5nRGVjb2RlZCkgfHwgbV9jdXJyZW50RnJhbWVEZWNvZGlu
Z1N0YXR1cyA9PSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6SW52YWxpZCkgeworICAgICAg
ICBpZiAoKCFmcmFtZUlzQ29tcGF0aWJsZSAmJiAhZnJhbWVJc0JlaW5nRGVjb2RlZCkgfHwgbV9j
dXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCkgewog
ICAgICAgICAgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBb
cmVxdWVzdGluZyBsYXJnZSBhc3luYyBkZWNvZGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNv
dXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgbV9zb3VyY2Uu
cmVxdWVzdEZyYW1lQXN5bmNEZWNvZGluZ0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVu
dFN1YnNhbXBsaW5nTGV2ZWwsIHNpemVGb3JEcmF3aW5nKTsKLSAgICAgICAgICAgIG1fY3VycmVu
dEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6RGVjb2Rp
bmc7CisgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdT
dGF0dXM6OkRlY29kaW5nOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fY3VycmVudEZyYW1l
RGVjb2RpbmdTdGF0dXMgPT0gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nKQor
ICAgICAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBEZWNvZGluZ1N0YXR1
czo6RGVjb2RpbmcpCiAgICAgICAgICAgICByZXN1bHQgPSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJl
cXVlc3REZWNvZGluZzsKIAogICAgICAgICBpZiAoIWZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdl
Q29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vi
c2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpKSB7CkBAIC0yNDEsNyAr
MjQxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaQogICAgICAg
ICBpZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdl
IHlldC4KICAgICAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAK
LSAgICAgICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgIT0gSW1hZ2VGcmFtZTo6
RGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKQorICAgICAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNv
ZGluZ1N0YXR1cyAhPSBEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpCiAgICAgICAgICAgICArK21f
ZGVjb2RlQ291bnRGb3JUZXN0aW5nOwogICAgIH0KIApAQCAtNDAxLDcgKzQwMSw3IEBAIEJpdG1h
cEltYWdlOjpTdGFydEFuaW1hdGlvblN0YXR1cyBCaXRtYXAKICAgICAgICAgICAgIExPRyhJbWFn
ZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW2NhY2hlZEZyYW1lQ291bnQgPSAl
bGQgbmV4dEZyYW1lID0gJWxkXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgKyttX2NhY2hlZEZyYW1lQ291bnQsIG5leHRGcmFtZSk7CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV9zb3VyY2UucmVxdWVzdEZyYW1lQXN5bmNEZWNv
ZGluZ0F0SW5kZXgobmV4dEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKTsKLSAgICAg
ICAgICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBJbWFnZUZyYW1lOjpEZWNvZGlu
Z1N0YXR1czo6RGVjb2Rpbmc7CisgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3Rh
dHVzID0gRGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nOwogICAgICAgICAgICAgTE9HKEltYWdlcywg
IkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbcmVxdWVzdGluZyBhc3luYyBkZWNvZGlu
ZyBmb3IgbmV4dEZyYW1lID0gJWxkXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbmV4dEZyYW1lKTsKICAgICAgICAgfQogCkBAIC00NDks
MTAgKzQ0OSwxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpCiAK
ICAgICBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShmYWxzZSk7CiAKLSAgICBpZiAobV9j
dXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6
RGVjb2RpbmcpCi0gICAgICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBmcmFtZURl
Y29kaW5nU3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgRGVjb2RpbmdTdGF0dXMg
ZGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFt
ZSk7CisgICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPT0gRGVjb2RpbmdTdGF0
dXM6OkRlY29kaW5nKQorICAgICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gZGVj
b2RpbmdTdGF0dXM7CisKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQotICAgICAgICBpbWFnZU9i
c2VydmVyKCktPmltYWdlRnJhbWVBdmFpbGFibGUoKnRoaXMsIEltYWdlQW5pbWF0aW5nU3RhdGU6
Olllcyk7CisgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+aW1hZ2VGcmFtZUF2YWlsYWJsZSgqdGhp
cywgSW1hZ2VBbmltYXRpbmdTdGF0ZTo6WWVzLCBudWxscHRyLCBkZWNvZGluZ1N0YXR1cyk7CiAK
ICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFttX2N1cnJl
bnRGcmFtZSA9ICVsZF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCksIG1fY3VycmVudEZyYW1lKTsKIH0KQEAgLTUwNywxNCArNTA5LDE2IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmltYWdlRnJhbWVBdmFpbGFibGVBdEkKICAgICBBU1NFUlQoaW5k
ZXggPT0gbV9jdXJyZW50RnJhbWUgJiYgIW1fY3VycmVudEZyYW1lKTsKICAgICBpZiAobV9zb3Vy
Y2UuaXNBc3luY0RlY29kaW5nUXVldWVJZGxlKCkpCiAgICAgICAgIG1fc291cmNlLnN0b3BBc3lu
Y0RlY29kaW5nUXVldWUoKTsKLSAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9
PSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6RGVjb2RpbmcpCi0gICAgICAgIG1fY3VycmVu
dEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChtX2N1cnJl
bnRGcmFtZSk7CiAKLSAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBJbWFn
ZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpCisgICAgRGVjb2RpbmdTdGF0dXMgZGVj
b2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7
CisgICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPT0gRGVjb2RpbmdTdGF0dXM6
OkRlY29kaW5nKQorICAgICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gZGVjb2Rp
bmdTdGF0dXM7CisKKyAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBEZWNv
ZGluZ1N0YXR1czo6Q29tcGxldGUpCiAgICAgICAgICsrbV9kZWNvZGVDb3VudEZvclRlc3Rpbmc7
CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQotICAgICAgICBpbWFnZU9ic2VydmVyKCktPmlt
YWdlRnJhbWVBdmFpbGFibGUoKnRoaXMsIEltYWdlQW5pbWF0aW5nU3RhdGU6Ok5vKTsKKyAgICAg
ICAgaW1hZ2VPYnNlcnZlcigpLT5pbWFnZUZyYW1lQXZhaWxhYmxlKCp0aGlzLCBJbWFnZUFuaW1h
dGluZ1N0YXRlOjpObywgbnVsbHB0ciwgZGVjb2RpbmdTdGF0dXMpOwogfQogCiB1bnNpZ25lZCBC
aXRtYXBJbWFnZTo6ZGVjb2RlQ291bnRGb3JUZXN0aW5nKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMjE5
MjExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtODUsOCArODUsOCBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBzaXpl
UmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2Uuc2l6ZVJlc3Bl
Y3RpbmdPcmllbnRhdGlvbigpOyB9CiAgICAgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zb3VyY2Uuc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7
IH0KICAgICBib29sIGZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0aW9u
c0F0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0
aW9ucykgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29t
cGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChpbmRleCwgZGVjb2RpbmdPcHRpb25zKTsgfQotICAg
IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KHNp
emVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZnJhbWVEZWNvZGluZ1N0YXR1c0F0
SW5kZXgoaW5kZXgpOyB9Ci0gICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBp
bmRleCkgY29uc3QgeyByZXR1cm4gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgoaW5kZXgpID09
IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsgfQorICAgIERlY29kaW5nU3Rh
dHVzIGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2UuZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgoaW5kZXgpOyB9CisgICAgYm9v
bCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gZnJh
bWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgoaW5kZXgpID09IERlY29kaW5nU3RhdHVzOjpDb21wbGV0
ZTsgfQogICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7IH0KIAogICAgIGJv
b2wgZnJhbWVIYXNGdWxsU2l6ZU5hdGl2ZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgeyByZXR1cm4gbV9zb3VyY2UuZnJhbWVIYXNG
dWxsU2l6ZU5hdGl2ZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7IH0KQEAg
LTIwMyw3ICsyMDMsNyBAQCBwcml2YXRlOgogCiAgICAgc2l6ZV90IG1fY3VycmVudEZyYW1lIHsg
MCB9OyAvLyBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZnJhbWUgb2YgYW5pbWF0aW9uLgogICAg
IFN1YnNhbXBsaW5nTGV2ZWwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCB7IFN1YnNhbXBsaW5n
TGV2ZWw6OkRlZmF1bHQgfTsKLSAgICBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1cyBtX2N1cnJl
bnRGcmFtZURlY29kaW5nU3RhdHVzIHsgSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkludmFs
aWQgfTsKKyAgICBEZWNvZGluZ1N0YXR1cyBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzIHsg
RGVjb2RpbmdTdGF0dXM6OkludmFsaWQgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1f
ZnJhbWVUaW1lcjsKICAgICBSZXBldGl0aW9uQ291bnQgbV9yZXBldGl0aW9uc0NvbXBsZXRlIHsg
UmVwZXRpdGlvbkNvdW50Tm9uZSB9OyAvLyBIb3cgbWFueSByZXBldGl0aW9ucyB3ZSd2ZSBmaW5p
c2hlZC4KICAgICBNb25vdG9uaWNUaW1lIG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lOyAvLyBUaGUg
c3lzdGVtIHRpbWUgYXQgd2hpY2ggd2UgaG9wZSB0byBzZWUgdGhlIG5leHQgY2FsbCB0byBzdGFy
dEFuaW1hdGlvbigpLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VGcmFtZS5jcHAJKHJldmlzaW9uIDIxOTIxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3
Nyw3IEBAIHZvaWQgSW1hZ2VGcmFtZTo6c2V0RGVjb2RpbmdTdGF0dXMoRGVjb2QKICAgICBtX2Rl
Y29kaW5nU3RhdHVzID0gZGVjb2RpbmdTdGF0dXM7CiB9CiAKLUltYWdlRnJhbWU6OkRlY29kaW5n
U3RhdHVzIEltYWdlRnJhbWU6OmRlY29kaW5nU3RhdHVzKCkgY29uc3QKK0RlY29kaW5nU3RhdHVz
IEltYWdlRnJhbWU6OmRlY29kaW5nU3RhdHVzKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9kZWNv
ZGluZ1N0YXR1cyAhPSBEZWNvZGluZ1N0YXR1czo6RGVjb2RpbmcpOwogICAgIHJldHVybiBtX2Rl
Y29kaW5nU3RhdHVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlRnJhbWUuaAkocmV2aXNpb24gMjE5MjExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw2IEBA
IGNsYXNzIEltYWdlRnJhbWUgewogICAgIGZyaWVuZCBjbGFzcyBJbWFnZUZyYW1lQ2FjaGU7CiBw
dWJsaWM6CiAgICAgZW51bSBjbGFzcyBDYWNoaW5nIHsgTWV0YWRhdGEsIE1ldGFkYXRhQW5kSW1h
Z2UgfTsKLSAgICBlbnVtIGNsYXNzIERlY29kaW5nU3RhdHVzIHsgSW52YWxpZCwgUGFydGlhbCwg
Q29tcGxldGUsIERlY29kaW5nIH07CiAKICAgICBJbWFnZUZyYW1lKCk7CiAgICAgSW1hZ2VGcmFt
ZShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikgeyBvcGVyYXRvcj0ob3RoZXIpOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNo
ZS5jcHAJKHJldmlzaW9uIDIxOTIxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCwxOSArMTkwLDE5
IEBAIHZvaWQgSW1hZ2VGcmFtZUNhY2hlOjpzZXROYXRpdmVJbWFnZShOYXQKIAogICAgIGZyYW1l
Lm1fbmF0aXZlSW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKTsKIAotICAgIGZyYW1lLm1fZGVj
b2RpbmdTdGF0dXMgPSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6Q29tcGxldGU7CisgICAg
ZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsKICAgICBm
cmFtZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubV9uYXRpdmVJbWFnZSk7CiAgICAg
ZnJhbWUubV9oYXNBbHBoYSA9IG5hdGl2ZUltYWdlSGFzQWxwaGEoZnJhbWUubV9uYXRpdmVJbWFn
ZSk7CiB9CiAKLXZvaWQgSW1hZ2VGcmFtZUNhY2hlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZTo6
RGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2b2lkIEltYWdlRnJhbWVDYWNoZTo6Y2Fj
aGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWwsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIEFTU0VSVChp
bmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1l
c1tpbmRleF07CiAKICAgICBBU1NFUlQoaXNEZWNvZGVyQXZhaWxhYmxlKCkpOwotICAgIGlmIChk
ZWNvZGluZ1N0YXR1cyA9PSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6SW52YWxpZCkKLSAg
ICAgICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9IG1fZGVjb2Rlci0+ZnJhbWVJc0NvbXBsZXRl
QXRJbmRleChpbmRleCkgPyBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUgOiBJ
bWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6UGFydGlhbDsKKyAgICBpZiAoZGVjb2RpbmdTdGF0
dXMgPT0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpCisgICAgICAgIGZyYW1lLm1fZGVjb2RpbmdT
dGF0dXMgPSBtX2RlY29kZXItPmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpID8gRGVjb2Rp
bmdTdGF0dXM6OkNvbXBsZXRlIDogRGVjb2RpbmdTdGF0dXM6OlBhcnRpYWw7CiAgICAgZWxzZQog
ICAgICAgICBmcmFtZS5tX2RlY29kaW5nU3RhdHVzID0gZGVjb2RpbmdTdGF0dXM7CiAKQEAgLTIy
NCw3ICsyMjQsNyBAQCB2b2lkIEltYWdlRnJhbWVDYWNoZTo6Y2FjaGVNZXRhZGF0YUF0SW5kCiAg
ICAgICAgIGZyYW1lLm1fZHVyYXRpb24gPSBtX2RlY29kZXItPmZyYW1lRHVyYXRpb25BdEluZGV4
KGluZGV4KTsKIH0KIAotdm9pZCBJbWFnZUZyYW1lQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2VBdElu
ZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
bmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5n
T3B0aW9ucywgSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2b2lk
IEltYWdlRnJhbWVDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHIm
JiBuYXRpdmVJbWFnZSwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5n
TGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zLCBEZWNvZGluZ1N0
YXR1cyBkZWNvZGluZ1N0YXR1cykKIHsKICAgICBBU1NFUlQoaW5kZXggPCBtX2ZyYW1lcy5zaXpl
KCkpOwogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZXNbaW5kZXhdOwpAQCAtMjQ2LDcg
KzI0Niw3IEBAIHZvaWQgSW1hZ2VGcmFtZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlQXQKICAgICBk
ZWNvZGVkU2l6ZUluY3JlYXNlZChmcmFtZS5mcmFtZUJ5dGVzKCkpOwogfQogCi12b2lkIEltYWdl
RnJhbWVDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYm
IG5hdGl2ZUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdM
ZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIEltYWdlRnJhbWU6
OkRlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9pZCBJbWFnZUZyYW1lQ2FjaGU6OmNh
Y2hlTmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwg
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERl
Y29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zLCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0
YXR1cykKIHsKICAgICBpZiAoIWlzRGVjb2RlckF2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47
CkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBJbWFnZUZyYW1lQ2FjaGU6OnJlcXVlc3RGcmFtZUFz
eW5jRAogICAgICAgICBzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpOwogICAgIAogICAgIEFTU0VS
VChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7Ci0gICAgSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0
dXMgZGVjb2RpbmdTdGF0dXMgPSBtX2RlY29kZXItPmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5k
ZXgpID8gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlIDogSW1hZ2VGcmFtZTo6
RGVjb2RpbmdTdGF0dXM6OlBhcnRpYWw7CisgICAgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0
dXMgPSBtX2RlY29kZXItPmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpID8gRGVjb2RpbmdT
dGF0dXM6OkNvbXBsZXRlIDogRGVjb2RpbmdTdGF0dXM6OlBhcnRpYWw7CiAKICAgICBMT0coSW1h
Z2VzLCAiSW1hZ2VGcmFtZUNhY2hlOjolcyAtICVwIC0gdXJsOiAlcyBbZW5xdWV1aW5nIGZyYW1l
ICVsZCBmb3IgZGVjb2RpbmddIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleCk7CiAgICAgbV9mcmFtZVJlcXVlc3RRdWV1ZS5lbnF1
ZXVlKHsgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIHNpemVGb3JEcmF3aW5nLCBkZWNvZGluZ1N0
YXR1cyB9KTsKQEAgLTQ5OCw5ICs0OTgsOSBAQCBib29sIEltYWdlRnJhbWVDYWNoZTo6ZnJhbWVJ
c0JlaW5nRGVjb2RlCiAgICAgcmV0dXJuIGl0ICE9IG1fZnJhbWVDb21taXRRdWV1ZS5lbmQoKTsK
IH0KIAotSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXMgSW1hZ2VGcmFtZUNhY2hlOjpmcmFtZURl
Y29kaW5nU3RhdHVzQXRJbmRleChzaXplX3QgaW5kZXgpCitEZWNvZGluZ1N0YXR1cyBJbWFnZUZy
YW1lQ2FjaGU6OmZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAg
ICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8SW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM+
KGluZGV4LCAoJkltYWdlRnJhbWU6OmRlY29kaW5nU3RhdHVzKSk7CisgICAgcmV0dXJuIGZyYW1l
TWV0YWRhdGFBdEluZGV4PERlY29kaW5nU3RhdHVzPihpbmRleCwgKCZJbWFnZUZyYW1lOjpkZWNv
ZGluZ1N0YXR1cykpOwogfQogCiBib29sIEltYWdlRnJhbWVDYWNoZTo6ZnJhbWVIYXNBbHBoYUF0
SW5kZXgoc2l6ZV90IGluZGV4KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VGcmFtZUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmgJKHJldmlzaW9uIDIxOTIxMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEltYWdlRnJhbWUgbWV0YWRh
dGEgd2hpY2ggZG9lcyBub3QgcmVxdWlyZSBjYWNoaW5nIHRoZSBJbWFnZUZyYW1lLgogICAgIGJv
b2wgZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChz
aXplX3QsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpOwotICAgIEltYWdlRnJhbWU6OkRlY29kaW5n
U3RhdHVzIGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KHNpemVfdCk7CisgICAgRGVjb2RpbmdT
dGF0dXMgZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1l
SGFzQWxwaGFBdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0ltYWdlQXRJbmRleChz
aXplX3QpOwogICAgIGJvb2wgZnJhbWVIYXNGdWxsU2l6ZU5hdGl2ZUltYWdlQXRJbmRleChzaXpl
X3QsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mKTsKQEAgLTEzMSw5ICsx
MzEsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVjb2RlZFNpemVSZXNldCh1bnNpZ25lZCBkZWNv
ZGVkU2l6ZSk7CiAKICAgICB2b2lkIHNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYpOwot
ICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBJ
bWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1cyA9IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpJ
bnZhbGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRy
JiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgSW1h
Z2VGcmFtZTo6RGVjb2RpbmdTdGF0dXMgPSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6SW52
YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdl
UHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwg
SW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXMpOworICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5k
ZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3Rh
dHVzOjpJbnZhbGlkKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUlt
YWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9pZCBj
YWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOwog
CiAgICAgUmVmPFdvcmtRdWV1ZT4gZGVjb2RpbmdRdWV1ZSgpOwogCkBAIC0xNTEsNyArMTUxLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgc2l6ZV90IGluZGV4OwogICAgICAgICBTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWw7CiAgICAgICAgIERlY29kaW5nT3B0aW9ucyBkZWNvZGluZ09w
dGlvbnM7Ci0gICAgICAgIEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVz
OworICAgICAgICBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1czsKICAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEltYWdlRnJhbWVSZXF1ZXN0JiBvdGhlcikgY29uc3QKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIGluZGV4ID09IG90aGVyLmluZGV4ICYmIHN1YnNhbXBsaW5n
TGV2ZWwgPT0gb3RoZXIuc3Vic2FtcGxpbmdMZXZlbCAmJiBkZWNvZGluZ09wdGlvbnMgPT0gb3Ro
ZXIuZGVjb2RpbmdPcHRpb25zICYmIGRlY29kaW5nU3RhdHVzID09IG90aGVyLmRlY29kaW5nU3Rh
dHVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
T2JzZXJ2ZXIuaAkocmV2aXNpb24gMjE5MjExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpID0gMDsKIAog
ICAgIHZpcnR1YWwgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoY29uc3QgSW1hZ2UmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFn
ZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0cikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1h
Z2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERl
Y29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJl
Y3QgPSBudWxscHRyKSA9IDA7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgJKHJldmlzaW9uIDIxOTIxMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkxLDcgKzkxLDcgQEAgcHVibGljOgogCiAgICAgLy8gSW1hZ2VGcmFtZSBtZXRhZGF0YSB3aGlj
aCBkb2VzIG5vdCByZXF1aXJlIGNhY2hpbmcgdGhlIEltYWdlRnJhbWUuCiAgICAgYm9vbCBmcmFt
ZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KHNpemVfdCBp
bmRleCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMpIHsgcmV0dXJuIG1f
ZnJhbWVDYWNoZS0+ZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25z
QXRJbmRleChpbmRleCwgZGVjb2RpbmdPcHRpb25zKTsgfQotICAgIEltYWdlRnJhbWU6OkRlY29k
aW5nU3RhdHVzIGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1
cm4gbV9mcmFtZUNhY2hlLT5mcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChpbmRleCk7IH0KKyAg
ICBEZWNvZGluZ1N0YXR1cyBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChzaXplX3QgaW5kZXgp
IHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+ZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgoaW5kZXgp
OyB9CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIHsgcmV0dXJu
IG1fZnJhbWVDYWNoZS0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOyB9CiAgICAgYm9vbCBm
cmFtZUhhc0ltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+
ZnJhbWVIYXNJbWFnZUF0SW5kZXgoaW5kZXgpOyB9CiAgICAgYm9vbCBmcmFtZUhhc0Z1bGxTaXpl
TmF0aXZlSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJz
YW1wbGluZ0xldmVsPiYgc3Vic2FtcGxpbmdMZXZlbCkgeyByZXR1cm4gbV9mcmFtZUNhY2hlLT5m
cmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVs
KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlVHlw
ZXMuaAkocmV2aXNpb24gMjE5MjExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCwxMyBAQCBlbnVtIGNs
YXNzIEVuY29kZWREYXRhU3RhdHVzIHsKICAgICBDb21wbGV0ZQogfTsKIAorZW51bSBjbGFzcyBE
ZWNvZGluZ1N0YXR1cyB7CisgICAgSW52YWxpZCwKKyAgICBQYXJ0aWFsLAorICAgIENvbXBsZXRl
LAorICAgIERlY29kaW5nCit9OworCiBlbnVtIGNsYXNzIEltYWdlRHJhd1Jlc3VsdCB7CiAgICAg
RGlkTm90aGluZywKICAgICBEaWRSZXF1ZXN0RGVjb2RpbmcsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314781</attachid>
            <date>2017-07-06 18:03:21 -0700</date>
            <delta_ts>2017-07-22 02:09:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174230-20170706180321.patch</filename>
            <type>text/plain</type>
            <size>29905</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTIyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE3LTA3LTA2ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TihyMjE5MDQ1KTogQSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG1heSBub3QgYmUgcmVwYWludGVk
IHdoZW4gaXRzIGNvbXBsZXRlIGZyYW1lIGZpbmlzaGVzIGRlY29kaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWNhdXNlIG9mIHIyMTkwNDUsIHdl
IG5vdyBvbmx5IHJlcGFpbnQgdGhlIENhY2hlZEltYWdlQ2xpbmV0cyB3aGljaCB0cmllZAorICAg
ICAgICB0byBkcmF3IHRoZSBpbWFnZSBidXQgdGhleSBjb3VsZCBub3QgYmVjYXVzZSB0aGV5IGhh
dmUgdG8gd2FpdCBmb3IgdGhlIGltYWdlCisgICAgICAgIGRlY29kaW5nIHRvIGZpbmlzaC4gVGhp
cyB3YXMgZG9uZSBieSBrZWVwaW5nIGEgSGFzaFNldCBvZiB0aGVzZSBjbGllbnRzIAorICAgICAg
ICBhbmQgbWFrZSBDYWNoZWRJbWFnZSBvd24gaXQuIFRoaXMgSGFzaFNldCBpcyBjbGVhcmVkIG9u
Y2UgdGhlIGltYWdlIGZyYW1lCisgICAgICAgIGZpbmlzaGVzIGRlY29kaW5nIGFuZCBhbGwgdGhl
IHdhaXRlZCBjbGllbnRzIGFyZSByZXBhaW50ZWQuCisKKyAgICAgICAgQnV0IE11bHRpcGxlIGFz
eW5jaHJvbm91cyBpbWFnZSBkZWNvZGluZyByZXF1ZXN0cyBhcmUgYWxsb3dlZCBmb3IgdGhlIHNh
bWUKKyAgICAgICAgZnJhbWUgaWYgbmV3IGRhdGEgaXMgYWRkZWQgdG8gdGhlIGltYWdlIHNvdXJj
ZS4gSWYgd2UgdHJpZWQgdG8gZHJhdyB0aGUgCisgICAgICAgIHNhbWUgaW1hZ2UgdHdpY2UgYmVm
b3JlIGl0IGZpbmlzaGVzIGRlY29kaW5nIHRoZSBmaXJzdCByZXF1ZXN0LCB3ZSB3aWxsCisgICAg
ICAgIG5vdCBiZSB0byByZWNvcmQgdGhpcyBzZWNvbmQgcmVxdWVzdCBzaW5jZSB0aGUgSGFzaFNl
dCB3aWxsIG5vdCBhZGQgdGhlCisgICAgICAgIHNhbWUgY2xpZW50IHR3aWNlLiBXaGVuIGhlIHNl
Y29uZCByZXF1ZXN0IGZpbmlzaGVzIGRlY29kaW5nLCBDYWNoZWRJbWFnZQorICAgICAgICB3aWxs
IG5vdCByZXBhaW50IGFueSBjbGllbnQgc2luY2UgaXRzIEhhc2hTZXQgaXMgZW1wdHkuCisKKyAg
ICAgICAgVG8gZml4IHRoaXMgcHJvYmxlbSB3ZSBjYW4gZG8gdGhlIGZvbGxvd2luZy4gV2hlbiBh
biBpbWFnZSBmcmFtZSBmaW5pc2hlcworICAgICAgICBkZWNvZGluZywgQ2FjaGVkSW1hZ2Ugd2ls
bCBrZWVwIGl0cyBIYXNoU2V0IG9mIHBlbmRpbmcgZHJhd2luZyBjbGllbnRzIGFzCisgICAgICAg
IGlzIGlmIHRoZSBpbWFnZSBmcmFtZSBpcyBwYXJ0aWFsbHkgbG9hZGVkIGZyYW1lLgorCisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjppbWFnZUZyYW1lQXZhaWxhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVz
dHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6aW50ZXJuYWxTdGFydEFuaW1hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6aW50ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6
OmRlY29kaW5nU3RhdHVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
Lmg6IE1vdmUgRGVjb2RpbmdTdGF0dXMgb3V0IG9mIHRoaXMgY2xhc3MKKyAgICAgICAgdG8gSW1h
Z2VUeXBlcy5oIHRvIGF2b2lkIGFkZGluZyBvdGhlciBoZWFkZXIgZmlsZXMgdG8gSW1hZ2VPYnZz
ZXZlci5oCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6c2V0TmF0aXZlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpjYWNoZU1ldGFkYXRhQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZUF0
SW5kZXhBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lQ2FjaGU6OnJlcXVlc3RG
cmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVD
YWNoZTo6ZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lRGVjb2RpbmdTdGF0dXNBdElu
ZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmg6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVApOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpQRUdJbWFnZURlY29kZXI6OmpwZWdDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
TkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFn
ZURlY29kZXI6OnBuZ0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rl
cjo6ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29k
ZXI6OmRlY29kZSk6CisKIDIwMTctMDctMDYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFw
cGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIENUUGFyYWdyYXBoU3R5bGUgbGVhayB1bmRlciBX
ZWJDb3JlOjpMaW5rSW1hZ2VMYXlvdXQ6OkxpbmtJbWFnZUxheW91dApJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyMTkyMTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNjIsMTAgKzM2MiwxMCBAQCBib29sIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9i
c2VydmVyOjpjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hl
ZEltYWdlT2JzZXJ2ZXI6OmltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmIGltYWdlLCBJ
bWFnZUFuaW1hdGluZ1N0YXRlIGFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VS
ZWN0KQordm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6aW1hZ2VGcmFtZUF2
YWlsYWJsZShjb25zdCBJbWFnZSYgaW1hZ2UsIEltYWdlQW5pbWF0aW5nU3RhdGUgYW5pbWF0aW5n
U3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QsIERlY29kaW5nU3RhdHVzIGRlY29kaW5n
U3RhdHVzKQogewogICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKQot
ICAgICAgICBjYWNoZWRJbWFnZS0+aW1hZ2VGcmFtZUF2YWlsYWJsZShpbWFnZSwgYW5pbWF0aW5n
U3RhdGUsIGNoYW5nZVJlY3QpOworICAgICAgICBjYWNoZWRJbWFnZS0+aW1hZ2VGcmFtZUF2YWls
YWJsZShpbWFnZSwgYW5pbWF0aW5nU3RhdGUsIGNoYW5nZVJlY3QsIGRlY29kaW5nU3RhdHVzKTsK
IH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6Y2hhbmdlZEluUmVj
dChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCkBAIC01NDEsNyArNTQx
LDcgQEAgYm9vbCBDYWNoZWRJbWFnZTo6Y2FuRGVzdHJveURlY29kZWREYXRhKAogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIENhY2hlZEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0
IEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSBhbmltYXRpbmdTdGF0ZSwgY29uc3Qg
SW50UmVjdCogY2hhbmdlUmVjdCkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmltYWdlRnJhbWVBdmFpbGFi
bGUoY29uc3QgSW1hZ2UmIGltYWdlLCBJbWFnZUFuaW1hdGluZ1N0YXRlIGFuaW1hdGluZ1N0YXRl
LCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0LCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1
cykKIHsKICAgICBpZiAoJmltYWdlICE9IG1faW1hZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTU2
MCw3ICs1NjAsOCBAQCB2b2lkIENhY2hlZEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlKGNvCiAg
ICAgaWYgKHZpc2libGVTdGF0ZSA9PSBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlOjpObyAmJiBhbmlt
YXRpbmdTdGF0ZSA9PSBJbWFnZUFuaW1hdGluZ1N0YXRlOjpZZXMpCiAgICAgICAgIG1faW1hZ2Ut
PnN0b3BBbmltYXRpb24oKTsKIAotICAgIG1fcGVuZGluZ0ltYWdlRHJhd2luZ0NsaWVudHMuY2xl
YXIoKTsKKyAgICBpZiAoZGVjb2RpbmdTdGF0dXMgIT0gRGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwp
CisgICAgICAgIG1fcGVuZGluZ0ltYWdlRHJhd2luZ0NsaWVudHMuY2xlYXIoKTsKIH0KIAogdm9p
ZCBDYWNoZWRJbWFnZTo6Y2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IElu
dFJlY3QqIHJlY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAkocmV2aXNpb24gMjE5MjExKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgog
ICAgICAgICB2b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UmKSBmaW5hbDsKIAogICAgICAgICBib29s
IGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpIGZpbmFsOwotICAgICAgICB2b2lk
IGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBj
b25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0cikgZmluYWw7CisgICAgICAgIHZvaWQg
aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNv
bnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29k
aW5nU3RhdHVzOjpJbnZhbGlkKSBmaW5hbDsKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNv
bnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopIGZpbmFsOwogCiAgICAgICAgIEhhc2hTZXQ8Q2Fj
aGVkSW1hZ2UqPiBtX2NhY2hlZEltYWdlczsKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdlJiwgbG9uZyBsb25nIGRlbHRh
KTsKICAgICB2b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UmKTsKICAgICBib29sIGNhbkRlc3Ryb3lE
ZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpOwotICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShj
b25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJl
Y3QgPSBudWxscHRyKTsKKyAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2Um
LCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0
ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CiAgICAgdm9pZCBj
aGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogCiAgICAgdm9pZCBh
ZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lvbiAy
MTkyMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZGVz
dHJveURlY29kZWREYXRhKGJvbwogICAgICAgICBtX3NvdXJjZS5kZXN0cm95QWxsRGVjb2RlZERh
dGFFeGNsdWRlRnJhbWUobV9jdXJyZW50RnJhbWUpOwogICAgIGVsc2UgewogICAgICAgICBtX3Nv
dXJjZS5kZXN0cm95QWxsRGVjb2RlZERhdGEoKTsKLSAgICAgICAgbV9jdXJyZW50RnJhbWVEZWNv
ZGluZ1N0YXR1cyA9IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpJbnZhbGlkOworICAgICAg
ICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQ7
CiAgICAgfQogCiAgICAgLy8gVGhlcmUncyBubyBuZWVkIHRvIHRocm93IGF3YXkgdGhlIGRlY29k
ZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQKQEAgLTEyMCw3ICsxMjAsNyBAQCBFbmNv
ZGVkRGF0YVN0YXR1cyBCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nCiAgICAgaWYgKCFzaG91bGRVc2VB
c3luY0RlY29kaW5nRm9yTGFyZ2VJbWFnZXMoKSkKICAgICAgICAgbV9zb3VyY2UuZGVzdHJveUlu
Y29tcGxldGVEZWNvZGVkRGF0YSgpOwogCi0gICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1
cyA9IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpJbnZhbGlkOworICAgIG1fY3VycmVudEZy
YW1lRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZDsKICAgICByZXR1cm4g
bV9zb3VyY2UuZGF0YUNoYW5nZWQoZGF0YSgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCkBAIC0y
MDIsMTMgKzIwMiwxMyBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
CiAKICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgZnJhbWUgaXMgaW5jb21wbGV0ZSwgYSBuZXcg
cmVxdWVzdCBmb3IgZGVjb2RpbmcgdGhpcyBmcmFtZSBoYXMgdG8gYmUgbWFkZSBldmVuIGlmCiAg
ICAgICAgIC8vIGl0IGlzIGN1cnJlbnRseSBiZWluZyBkZWNvZGVkLiBOZXcgZGF0YSBtYXkgaGF2
ZSBiZWVuIHJlY2VpdmVkIHNpbmNlIHRoZSBwcmV2aW91cyByZXF1ZXN0IHdhcyBtYWRlLgotICAg
ICAgICBpZiAoKCFmcmFtZUlzQ29tcGF0aWJsZSAmJiAhZnJhbWVJc0JlaW5nRGVjb2RlZCkgfHwg
bV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1
czo6SW52YWxpZCkgeworICAgICAgICBpZiAoKCFmcmFtZUlzQ29tcGF0aWJsZSAmJiAhZnJhbWVJ
c0JlaW5nRGVjb2RlZCkgfHwgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBEZWNvZGlu
Z1N0YXR1czo6SW52YWxpZCkgewogICAgICAgICAgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdl
OjolcyAtICVwIC0gdXJsOiAlcyBbcmVxdWVzdGluZyBsYXJnZSBhc3luYyBkZWNvZGluZ10iLCBf
X0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICAgICAgbV9zb3VyY2UucmVxdWVzdEZyYW1lQXN5bmNEZWNvZGluZ0F0SW5kZXgobV9j
dXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIHNpemVGb3JEcmF3aW5nKTsK
LSAgICAgICAgICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBJbWFnZUZyYW1lOjpE
ZWNvZGluZ1N0YXR1czo6RGVjb2Rpbmc7CisgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZURlY29k
aW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPT0gSW1hZ2VGcmFtZTo6RGVjb2Rp
bmdTdGF0dXM6OkRlY29kaW5nKQorICAgICAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0
YXR1cyA9PSBEZWNvZGluZ1N0YXR1czo6RGVjb2RpbmcpCiAgICAgICAgICAgICByZXN1bHQgPSBJ
bWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZzsKIAogICAgICAgICBpZiAoIWZyYW1l
SGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJl
bnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdNb2RlOjpBc3luY2hy
b25vdXMpKSB7CkBAIC0yNDEsNyArMjQxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaQogICAgICAgICBpZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3
ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KICAgICAgICAgICAgIHJldHVybiBJbWFnZURyYXdS
ZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICAgICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdT
dGF0dXMgIT0gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKQorICAgICAgICBp
ZiAobV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyAhPSBEZWNvZGluZ1N0YXR1czo6Q29tcGxl
dGUpCiAgICAgICAgICAgICArK21fZGVjb2RlQ291bnRGb3JUZXN0aW5nOwogICAgIH0KIApAQCAt
NDAxLDcgKzQwMSw3IEBAIEJpdG1hcEltYWdlOjpTdGFydEFuaW1hdGlvblN0YXR1cyBCaXRtYXAK
ICAgICAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMg
W2NhY2hlZEZyYW1lQ291bnQgPSAlbGQgbmV4dEZyYW1lID0gJWxkXSIsIF9fRlVOQ1RJT05fXywg
dGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgKyttX2NhY2hlZEZyYW1l
Q291bnQsIG5leHRGcmFtZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV9zb3VyY2Uu
cmVxdWVzdEZyYW1lQXN5bmNEZWNvZGluZ0F0SW5kZXgobmV4dEZyYW1lLCBtX2N1cnJlbnRTdWJz
YW1wbGluZ0xldmVsKTsKLSAgICAgICAgICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMg
PSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6RGVjb2Rpbmc7CisgICAgICAgICAgICBtX2N1
cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nOwogICAg
ICAgICAgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbcmVx
dWVzdGluZyBhc3luYyBkZWNvZGluZyBmb3IgbmV4dEZyYW1lID0gJWxkXSIsIF9fRlVOQ1RJT05f
XywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbmV4dEZyYW1lKTsK
ICAgICAgICAgfQogCkBAIC00NDksMTAgKzQ0OSwxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnRl
cm5hbEFkdmFuY2VBbmltYXRpCiAKICAgICBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShm
YWxzZSk7CiAKLSAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBJbWFnZUZy
YW1lOjpEZWNvZGluZ1N0YXR1czo6RGVjb2RpbmcpCi0gICAgICAgIG1fY3VycmVudEZyYW1lRGVj
b2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7
CisgICAgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVz
QXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdT
dGF0dXMgPT0gRGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nKQorICAgICAgICBtX2N1cnJlbnRGcmFt
ZURlY29kaW5nU3RhdHVzID0gZGVjb2RpbmdTdGF0dXM7CisKICAgICBpZiAoaW1hZ2VPYnNlcnZl
cigpKQotICAgICAgICBpbWFnZU9ic2VydmVyKCktPmltYWdlRnJhbWVBdmFpbGFibGUoKnRoaXMs
IEltYWdlQW5pbWF0aW5nU3RhdGU6Olllcyk7CisgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+aW1h
Z2VGcmFtZUF2YWlsYWJsZSgqdGhpcywgSW1hZ2VBbmltYXRpbmdTdGF0ZTo6WWVzLCBudWxscHRy
LCBkZWNvZGluZ1N0YXR1cyk7CiAKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0g
JXAgLSB1cmw6ICVzIFttX2N1cnJlbnRGcmFtZSA9ICVsZF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMs
IHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fY3VycmVudEZyYW1lKTsKIH0K
QEAgLTUwNywxNCArNTA5LDE2IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmltYWdlRnJhbWVBdmFpbGFi
bGVBdEkKICAgICBBU1NFUlQoaW5kZXggPT0gbV9jdXJyZW50RnJhbWUgJiYgIW1fY3VycmVudEZy
YW1lKTsKICAgICBpZiAobV9zb3VyY2UuaXNBc3luY0RlY29kaW5nUXVldWVJZGxlKCkpCiAgICAg
ICAgIG1fc291cmNlLnN0b3BBc3luY0RlY29kaW5nUXVldWUoKTsKLSAgICBpZiAobV9jdXJyZW50
RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6RGVjb2Rp
bmcpCi0gICAgICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5n
U3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAKLSAgICBpZiAobV9jdXJyZW50RnJhbWVE
ZWNvZGluZ1N0YXR1cyA9PSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpCisg
ICAgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJ
bmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0
dXMgPT0gRGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nKQorICAgICAgICBtX2N1cnJlbnRGcmFtZURl
Y29kaW5nU3RhdHVzID0gZGVjb2RpbmdTdGF0dXM7CisKKyAgICBpZiAobV9jdXJyZW50RnJhbWVE
ZWNvZGluZ1N0YXR1cyA9PSBEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpCiAgICAgICAgICsrbV9k
ZWNvZGVDb3VudEZvclRlc3Rpbmc7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQotICAgICAg
ICBpbWFnZU9ic2VydmVyKCktPmltYWdlRnJhbWVBdmFpbGFibGUoKnRoaXMsIEltYWdlQW5pbWF0
aW5nU3RhdGU6Ok5vKTsKKyAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5pbWFnZUZyYW1lQXZhaWxh
YmxlKCp0aGlzLCBJbWFnZUFuaW1hdGluZ1N0YXRlOjpObywgbnVsbHB0ciwgZGVjb2RpbmdTdGF0
dXMpOwogfQogCiB1bnNpZ25lZCBCaXRtYXBJbWFnZTo6ZGVjb2RlQ291bnRGb3JUZXN0aW5nKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaAkocmV2aXNpb24gMjE5MjExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODUsOCArODUsOCBAQCBwdWJs
aWM6CiAgICAgSW50U2l6ZSBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2Uuc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpOyB9CiAgICAgQ29sb3Igc2lu
Z2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zb3VyY2Uuc2lu
Z2xlUGl4ZWxTb2xpZENvbG9yKCk7IH0KICAgICBib29sIGZyYW1lSXNCZWluZ0RlY29kZWRBbmRJ
c0NvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBEZWNvZGlu
Z09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZnJhbWVJ
c0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChpbmRleCwgZGVj
b2RpbmdPcHRpb25zKTsgfQotICAgIEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIGZyYW1lRGVj
b2RpbmdTdGF0dXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2Uu
ZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgoaW5kZXgpOyB9Ci0gICAgYm9vbCBmcmFtZUlzQ29t
cGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gZnJhbWVEZWNvZGluZ1N0
YXR1c0F0SW5kZXgoaW5kZXgpID09IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpDb21wbGV0
ZTsgfQorICAgIERlY29kaW5nU3RhdHVzIGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KHNpemVf
dCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5k
ZXgoaW5kZXgpOyB9CisgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgoaW5kZXgpID09IERl
Y29kaW5nU3RhdHVzOjpDb21wbGV0ZTsgfQogICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRl
eChpbmRleCk7IH0KIAogICAgIGJvb2wgZnJhbWVIYXNGdWxsU2l6ZU5hdGl2ZUltYWdlQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkgeyByZXR1
cm4gbV9zb3VyY2UuZnJhbWVIYXNGdWxsU2l6ZU5hdGl2ZUltYWdlQXRJbmRleChpbmRleCwgc3Vi
c2FtcGxpbmdMZXZlbCk7IH0KQEAgLTIwMyw3ICsyMDMsNyBAQCBwcml2YXRlOgogCiAgICAgc2l6
ZV90IG1fY3VycmVudEZyYW1lIHsgMCB9OyAvLyBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZnJh
bWUgb2YgYW5pbWF0aW9uLgogICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9jdXJyZW50U3Vic2FtcGxp
bmdMZXZlbCB7IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQgfTsKLSAgICBJbWFnZUZyYW1lOjpE
ZWNvZGluZ1N0YXR1cyBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzIHsgSW1hZ2VGcmFtZTo6
RGVjb2RpbmdTdGF0dXM6OkludmFsaWQgfTsKKyAgICBEZWNvZGluZ1N0YXR1cyBtX2N1cnJlbnRG
cmFtZURlY29kaW5nU3RhdHVzIHsgRGVjb2RpbmdTdGF0dXM6OkludmFsaWQgfTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VGltZXI+IG1fZnJhbWVUaW1lcjsKICAgICBSZXBldGl0aW9uQ291bnQgbV9y
ZXBldGl0aW9uc0NvbXBsZXRlIHsgUmVwZXRpdGlvbkNvdW50Tm9uZSB9OyAvLyBIb3cgbWFueSBy
ZXBldGl0aW9ucyB3ZSd2ZSBmaW5pc2hlZC4KICAgICBNb25vdG9uaWNUaW1lIG1fZGVzaXJlZEZy
YW1lU3RhcnRUaW1lOyAvLyBUaGUgc3lzdGVtIHRpbWUgYXQgd2hpY2ggd2UgaG9wZSB0byBzZWUg
dGhlIG5leHQgY2FsbCB0byBzdGFydEFuaW1hdGlvbigpLgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAJKHJldmlzaW9uIDIxOTIxMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgSW1hZ2VGcmFtZTo6c2V0RGVjb2RpbmdT
dGF0dXMoRGVjb2QKICAgICBtX2RlY29kaW5nU3RhdHVzID0gZGVjb2RpbmdTdGF0dXM7CiB9CiAK
LUltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIEltYWdlRnJhbWU6OmRlY29kaW5nU3RhdHVzKCkg
Y29uc3QKK0RlY29kaW5nU3RhdHVzIEltYWdlRnJhbWU6OmRlY29kaW5nU3RhdHVzKCkgY29uc3QK
IHsKICAgICBBU1NFUlQobV9kZWNvZGluZ1N0YXR1cyAhPSBEZWNvZGluZ1N0YXR1czo6RGVjb2Rp
bmcpOwogICAgIHJldHVybiBtX2RlY29kaW5nU3RhdHVzOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAkocmV2aXNpb24gMjE5MjExKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw3ICszOSw2IEBAIGNsYXNzIEltYWdlRnJhbWUgewogICAgIGZyaWVuZCBjbGFz
cyBJbWFnZUZyYW1lQ2FjaGU7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBDYWNoaW5nIHsgTWV0
YWRhdGEsIE1ldGFkYXRhQW5kSW1hZ2UgfTsKLSAgICBlbnVtIGNsYXNzIERlY29kaW5nU3RhdHVz
IHsgSW52YWxpZCwgUGFydGlhbCwgQ29tcGxldGUsIERlY29kaW5nIH07CiAKICAgICBJbWFnZUZy
YW1lKCk7CiAgICAgSW1hZ2VGcmFtZShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikgeyBvcGVyYXRv
cj0ob3RoZXIpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAJKHJldmlzaW9uIDIxOTIxMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5MCwxOSArMTkwLDE5IEBAIHZvaWQgSW1hZ2VGcmFtZUNhY2hlOjpzZXROYXRpdmVJ
bWFnZShOYXQKIAogICAgIGZyYW1lLm1fbmF0aXZlSW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdl
KTsKIAotICAgIGZyYW1lLm1fZGVjb2RpbmdTdGF0dXMgPSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0
YXR1czo6Q29tcGxldGU7CisgICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3Rh
dHVzOjpDb21wbGV0ZTsKICAgICBmcmFtZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUu
bV9uYXRpdmVJbWFnZSk7CiAgICAgZnJhbWUubV9oYXNBbHBoYSA9IG5hdGl2ZUltYWdlSGFzQWxw
aGEoZnJhbWUubV9uYXRpdmVJbWFnZSk7CiB9CiAKLXZvaWQgSW1hZ2VGcmFtZUNhY2hlOjpjYWNo
ZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxp
bmdMZXZlbCwgSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2b2lk
IEltYWdlRnJhbWVDYWNoZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJz
YW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3Rh
dHVzKQogewogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAgICAgSW1hZ2VG
cmFtZSYgZnJhbWUgPSBtX2ZyYW1lc1tpbmRleF07CiAKICAgICBBU1NFUlQoaXNEZWNvZGVyQXZh
aWxhYmxlKCkpOwotICAgIGlmIChkZWNvZGluZ1N0YXR1cyA9PSBJbWFnZUZyYW1lOjpEZWNvZGlu
Z1N0YXR1czo6SW52YWxpZCkKLSAgICAgICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9IG1fZGVj
b2Rlci0+ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkgPyBJbWFnZUZyYW1lOjpEZWNvZGlu
Z1N0YXR1czo6Q29tcGxldGUgOiBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6UGFydGlhbDsK
KyAgICBpZiAoZGVjb2RpbmdTdGF0dXMgPT0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpCisgICAg
ICAgIGZyYW1lLm1fZGVjb2RpbmdTdGF0dXMgPSBtX2RlY29kZXItPmZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgoaW5kZXgpID8gRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlIDogRGVjb2RpbmdTdGF0dXM6
OlBhcnRpYWw7CiAgICAgZWxzZQogICAgICAgICBmcmFtZS5tX2RlY29kaW5nU3RhdHVzID0gZGVj
b2RpbmdTdGF0dXM7CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEltYWdlRnJhbWVDYWNoZTo6
Y2FjaGVNZXRhZGF0YUF0SW5kCiAgICAgICAgIGZyYW1lLm1fZHVyYXRpb24gPSBtX2RlY29kZXIt
PmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KTsKIH0KIAotdm9pZCBJbWFnZUZyYW1lQ2FjaGU6
OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywgSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXMg
ZGVjb2RpbmdTdGF0dXMpCit2b2lkIEltYWdlRnJhbWVDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZUF0
SW5kZXgoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2Rp
bmdPcHRpb25zLCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKIHsKICAgICBBU1NFUlQo
aW5kZXggPCBtX2ZyYW1lcy5zaXplKCkpOwogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFt
ZXNbaW5kZXhdOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgSW1hZ2VGcmFtZUNhY2hlOjpjYWNo
ZU5hdGl2ZUltYWdlQXQKICAgICBkZWNvZGVkU2l6ZUluY3JlYXNlZChmcmFtZS5mcmFtZUJ5dGVz
KCkpOwogfQogCi12b2lkIEltYWdlRnJhbWVDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhB
c3luYyhOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGlu
Z09wdGlvbnMsIEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9p
ZCBJbWFnZUZyYW1lQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1h
Z2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zLCBEZWNv
ZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKIHsKICAgICBpZiAoIWlzRGVjb2RlckF2YWlsYWJs
ZSgpKQogICAgICAgICByZXR1cm47CkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBJbWFnZUZyYW1l
Q2FjaGU6OnJlcXVlc3RGcmFtZUFzeW5jRAogICAgICAgICBzdGFydEFzeW5jRGVjb2RpbmdRdWV1
ZSgpOwogICAgIAogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7Ci0gICAgSW1h
Z2VGcmFtZTo6RGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMgPSBtX2RlY29kZXItPmZyYW1l
SXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpID8gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkNv
bXBsZXRlIDogSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OlBhcnRpYWw7CisgICAgRGVjb2Rp
bmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMgPSBtX2RlY29kZXItPmZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgoaW5kZXgpID8gRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlIDogRGVjb2RpbmdTdGF0dXM6OlBh
cnRpYWw7CiAKICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VGcmFtZUNhY2hlOjolcyAtICVwIC0gdXJs
OiAlcyBbZW5xdWV1aW5nIGZyYW1lICVsZCBmb3IgZGVjb2RpbmddIiwgX19GVU5DVElPTl9fLCB0
aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleCk7CiAgICAgbV9m
cmFtZVJlcXVlc3RRdWV1ZS5lbnF1ZXVlKHsgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIHNpemVG
b3JEcmF3aW5nLCBkZWNvZGluZ1N0YXR1cyB9KTsKQEAgLTQ5OCw5ICs0OTgsOSBAQCBib29sIElt
YWdlRnJhbWVDYWNoZTo6ZnJhbWVJc0JlaW5nRGVjb2RlCiAgICAgcmV0dXJuIGl0ICE9IG1fZnJh
bWVDb21taXRRdWV1ZS5lbmQoKTsKIH0KIAotSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXMgSW1h
Z2VGcmFtZUNhY2hlOjpmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChzaXplX3QgaW5kZXgpCitE
ZWNvZGluZ1N0YXR1cyBJbWFnZUZyYW1lQ2FjaGU6OmZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4
KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8SW1hZ2VG
cmFtZTo6RGVjb2RpbmdTdGF0dXM+KGluZGV4LCAoJkltYWdlRnJhbWU6OmRlY29kaW5nU3RhdHVz
KSk7CisgICAgcmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4PERlY29kaW5nU3RhdHVzPihpbmRl
eCwgKCZJbWFnZUZyYW1lOjpkZWNvZGluZ1N0YXR1cykpOwogfQogCiBib29sIEltYWdlRnJhbWVD
YWNoZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmgJKHJldmlz
aW9uIDIxOTIxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJh
bWVDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIEltYWdlRnJhbWUgbWV0YWRhdGEgd2hpY2ggZG9lcyBub3QgcmVxdWlyZSBjYWNoaW5nIHRo
ZSBJbWFnZUZyYW1lLgogICAgIGJvb2wgZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJs
ZVdpdGhPcHRpb25zQXRJbmRleChzaXplX3QsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpOwotICAg
IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KHNp
emVfdCk7CisgICAgRGVjb2RpbmdTdGF0dXMgZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgoc2l6
ZV90KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBm
cmFtZUhhc0ltYWdlQXRJbmRleChzaXplX3QpOwogICAgIGJvb2wgZnJhbWVIYXNGdWxsU2l6ZU5h
dGl2ZUltYWdlQXRJbmRleChzaXplX3QsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdM
ZXZlbD4mKTsKQEAgLTEzMSw5ICsxMzEsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVjb2RlZFNp
emVSZXNldCh1bnNpZ25lZCBkZWNvZGVkU2l6ZSk7CiAKICAgICB2b2lkIHNldE5hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlUHRyJiYpOwotICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1cyA9IEltYWdlRnJh
bWU6OkRlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2VB
dEluZGV4KE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3Qg
RGVjb2RpbmdPcHRpb25zJiwgSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXMgPSBJbWFnZUZyYW1l
OjpEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlQXRJ
bmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29u
c3QgRGVjb2RpbmdPcHRpb25zJiwgSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXMpOworICAgIHZv
aWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGlu
Z1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZl
SW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6
SW52YWxpZCk7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUlt
YWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiwgRGVjb2RpbmdTdGF0dXMpOwogCiAgICAgUmVmPFdvcmtRdWV1ZT4gZGVjb2RpbmdRdWV1ZSgp
OwogCkBAIC0xNTEsNyArMTUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc2l6ZV90IGluZGV4Owog
ICAgICAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWw7CiAgICAgICAgIERlY29k
aW5nT3B0aW9ucyBkZWNvZGluZ09wdGlvbnM7Ci0gICAgICAgIEltYWdlRnJhbWU6OkRlY29kaW5n
U3RhdHVzIGRlY29kaW5nU3RhdHVzOworICAgICAgICBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0
YXR1czsKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEltYWdlRnJhbWVSZXF1ZXN0JiBv
dGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGluZGV4ID09IG90aGVy
LmluZGV4ICYmIHN1YnNhbXBsaW5nTGV2ZWwgPT0gb3RoZXIuc3Vic2FtcGxpbmdMZXZlbCAmJiBk
ZWNvZGluZ09wdGlvbnMgPT0gb3RoZXIuZGVjb2RpbmdPcHRpb25zICYmIGRlY29kaW5nU3RhdHVz
ID09IG90aGVyLmRlY29kaW5nU3RhdHVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAkocmV2aXNpb24gMjE5MjExKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhj
b25zdCBJbWFnZSYpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERh
dGEoY29uc3QgSW1hZ2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGltYWdlRnJhbWVBdmFpbGFi
bGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFu
Z2VSZWN0ID0gbnVsbHB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUZyYW1lQXZhaWxh
YmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hh
bmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFs
aWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNv
bnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyKSA9IDA7CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgJKHJldmlzaW9u
IDIxOTIxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogCiAgICAgLy8gSW1h
Z2VGcmFtZSBtZXRhZGF0YSB3aGljaCBkb2VzIG5vdCByZXF1aXJlIGNhY2hpbmcgdGhlIEltYWdl
RnJhbWUuCiAgICAgYm9vbCBmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9w
dGlvbnNBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGlu
Z09wdGlvbnMpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+ZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElz
Q29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChpbmRleCwgZGVjb2RpbmdPcHRpb25zKTsgfQot
ICAgIEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4
KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9mcmFtZUNhY2hlLT5mcmFtZURlY29kaW5nU3RhdHVz
QXRJbmRleChpbmRleCk7IH0KKyAgICBEZWNvZGluZ1N0YXR1cyBmcmFtZURlY29kaW5nU3RhdHVz
QXRJbmRleChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+ZnJhbWVEZWNvZGlu
Z1N0YXR1c0F0SW5kZXgoaW5kZXgpOyB9CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChz
aXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgo
aW5kZXgpOyB9CiAgICAgYm9vbCBmcmFtZUhhc0ltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpIHsg
cmV0dXJuIG1fZnJhbWVDYWNoZS0+ZnJhbWVIYXNJbWFnZUF0SW5kZXgoaW5kZXgpOyB9CiAgICAg
Ym9vbCBmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgY29u
c3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgc3Vic2FtcGxpbmdMZXZlbCkgeyBy
ZXR1cm4gbV9mcmFtZUNhY2hlLT5mcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdEluZGV4KGlu
ZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlVHlwZXMuaAkocmV2aXNpb24gMjE5MjExKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw2ICs3OCwxMyBAQCBlbnVtIGNsYXNzIEVuY29kZWREYXRhU3RhdHVzIHsKICAgICBDb21wbGV0
ZQogfTsKIAorZW51bSBjbGFzcyBEZWNvZGluZ1N0YXR1cyB7CisgICAgSW52YWxpZCwKKyAgICBQ
YXJ0aWFsLAorICAgIENvbXBsZXRlLAorICAgIERlY29kaW5nCit9OworCiBlbnVtIGNsYXNzIElt
YWdlRHJhd1Jlc3VsdCB7CiAgICAgRGlkTm90aGluZywKICAgICBEaWRSZXF1ZXN0RGVjb2Rpbmcs
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VSZWFkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAJKHJldmlzaW9uIDIxOTIxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6
ZGVjb2RlQk1QKGJvb2wgb25seQogICAgICAgICBpZiAoIW1fYnVmZmVyLT5pbml0aWFsaXplKG1f
cGFyZW50LT5zaXplKCksIG1fcGFyZW50LT5wcmVtdWx0aXBseUFscGhhKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIG1fcGFyZW50LT5zZXRGYWlsZWQoKTsgLy8gVW5hYmxlIHRvIGFsbG9jYXRlLgog
Ci0gICAgICAgIG1fYnVmZmVyLT5zZXREZWNvZGluZ1N0YXR1cyhJbWFnZUZyYW1lOjpEZWNvZGlu
Z1N0YXR1czo6UGFydGlhbCk7CisgICAgICAgIG1fYnVmZmVyLT5zZXREZWNvZGluZ1N0YXR1cyhE
ZWNvZGluZ1N0YXR1czo6UGFydGlhbCk7CiAgICAgICAgIG1fYnVmZmVyLT5zZXRIYXNBbHBoYShm
YWxzZSk7CiAKICAgICAgICAgaWYgKCFtX2lzVG9wRG93bikKQEAgLTExNyw3ICsxMTcsNyBAQCBi
b29sIEJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVAoYm9vbCBvbmx5CiAgICAgfQogCiAgICAgLy8g
RG9uZSEKLSAgICBtX2J1ZmZlci0+c2V0RGVjb2RpbmdTdGF0dXMoSW1hZ2VGcmFtZTo6RGVjb2Rp
bmdTdGF0dXM6OkNvbXBsZXRlKTsKKyAgICBtX2J1ZmZlci0+c2V0RGVjb2RpbmdTdGF0dXMoRGVj
b2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDIxOTIxMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDcsNyArMjQ3LDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmZyYW1l
Q29tcGxldGUodW5zaQogICAgIGlmIChidWZmZXIuaXNJbnZhbGlkKCkgJiYgIWluaXRGcmFtZUJ1
ZmZlcihmcmFtZUluZGV4KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBpbml0RnJhbWVCdWZm
ZXIoKSBoYXMgYWxyZWFkeSBjYWxsZWQgc2V0RmFpbGVkKCkuCiAKLSAgICBidWZmZXIuc2V0RGVj
b2RpbmdTdGF0dXMoSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsKKyAgICBi
dWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsKICAgICBi
dWZmZXIuc2V0RHVyYXRpb24oZnJhbWVEdXJhdGlvbik7CiAgICAgYnVmZmVyLnNldERpc3Bvc2Fs
TWV0aG9kKGRpc3Bvc2FsTWV0aG9kKTsKIApAQCAtNDAxLDcgKzQwMSw3IEBAIGJvb2wgR0lGSW1h
Z2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIodW4KICAgICBidWZmZXItPmJhY2tpbmdTdG9yZSgp
LT5zZXRGcmFtZVJlY3QoSW50UmVjdChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0g
dG9wKSk7CiAKICAgICAvLyBVcGRhdGUgb3VyIHN0YXR1cyB0byBiZSBwYXJ0aWFsbHkgY29tcGxl
dGUuCi0gICAgYnVmZmVyLT5zZXREZWNvZGluZ1N0YXR1cyhJbWFnZUZyYW1lOjpEZWNvZGluZ1N0
YXR1czo6UGFydGlhbCk7CisgICAgYnVmZmVyLT5zZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0
YXR1czo6UGFydGlhbCk7CiAKICAgICAvLyBSZXNldCB0aGUgYWxwaGEgcGl4ZWwgdHJhY2tlciBm
b3IgdGhpcyBmcmFtZS4KICAgICBtX2N1cnJlbnRCdWZmZXJTYXdBbHBoYSA9IGZhbHNlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiAyMTkyMTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDgsNyArNjA4LDcgQEAgYm9vbCBKUEVHSW1hZ2VE
ZWNvZGVyOjpvdXRwdXRTY2FubGluZXMoKQogICAgIGlmIChidWZmZXIuaXNJbnZhbGlkKCkpIHsK
ICAgICAgICAgaWYgKCFidWZmZXIuaW5pdGlhbGl6ZShzY2FsZWRTaXplKCksIG1fcHJlbXVsdGlw
bHlBbHBoYSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7Ci0gICAgICAgIGJ1ZmZl
ci5zZXREZWNvZGluZ1N0YXR1cyhJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6UGFydGlhbCk7
CisgICAgICAgIGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6UGFydGlh
bCk7CiAgICAgICAgIC8vIFRoZSBidWZmZXIgaXMgdHJhbnNwYXJlbnQgb3V0c2lkZSB0aGUgZGVj
b2RlZCBhcmVhIHdoaWxlIHRoZSBpbWFnZSBpcwogICAgICAgICAvLyBsb2FkaW5nLiBUaGUgY29t
cGxldGVkIGltYWdlIHdpbGwgYmUgbWFya2VkIGZ1bGx5IG9wYXF1ZSBpbiBqcGVnQ29tcGxldGUo
KS4KICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKHRydWUpOwpAQCAtNjUyLDcgKzY1Miw3IEBA
IHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6anBlZ0NvbXBsZXRlKCkKICAgICAvLyBlbXB0eS4KICAg
ICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07CiAgICAgYnVmZmVy
LnNldEhhc0FscGhhKGZhbHNlKTsKLSAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoSW1hZ2VG
cmFtZTo6RGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsKKyAgICBidWZmZXIuc2V0RGVjb2RpbmdT
dGF0dXMoRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsKIH0KIAogdm9pZCBKUEVHSW1hZ2VEZWNv
ZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gMjE5MjExKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93
QXZhaWxhYmxlKHVuc2lnCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBidWZm
ZXIuc2V0RGVjb2RpbmdTdGF0dXMoSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwp
OworICAgICAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OlBhcnRp
YWwpOwogICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwogCiAjaWYgRU5BQkxFKEFQ
TkcpCkBAIC01NTgsNyArNTU4LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnBuZ0NvbXBsZXRl
KCkKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIW1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkp
Ci0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5maXJzdCgpLnNldERlY29kaW5nU3RhdHVzKElt
YWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSk7CisgICAgICAgIG1fZnJhbWVCdWZm
ZXJDYWNoZS5maXJzdCgpLnNldERlY29kaW5nU3RhdHVzKERlY29kaW5nU3RhdHVzOjpDb21wbGV0
ZSk7CiB9CiAKIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgdW5z
aWduZWQgaGFsdEF0RnJhbWUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpAQCAtODI1LDcgKzgyNSw3
IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgSW1hZ2VGcmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlW21fY3VycmVu
dEZyYW1lXTsKLSAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoSW1hZ2VGcmFtZTo6RGVjb2Rp
bmdTdGF0dXM6OkNvbXBsZXRlKTsKKyAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2Rp
bmdTdGF0dXM6OkNvbXBsZXRlKTsKIAogICAgIHBuZ19ieXRlcCBpbnRlcmxhY2VCdWZmZXIgPSBt
X3JlYWRlci0+aW50ZXJsYWNlQnVmZmVyKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmNwcAkocmV2aXNpb24gMjE5MjExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE5LDcgKzExOSw3IEBAIGJvb2wgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25s
eVMKICAgICBpZiAoYnVmZmVyLmlzSW52YWxpZCgpKSB7CiAgICAgICAgIGlmICghYnVmZmVyLmlu
aXRpYWxpemUoc2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAgcmV0dXJu
IHNldEZhaWxlZCgpOwotICAgICAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoSW1hZ2VGcmFt
ZTo6RGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwpOworICAgICAgICBidWZmZXIuc2V0RGVjb2RpbmdT
dGF0dXMoRGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwpOwogICAgICAgICBidWZmZXIuc2V0SGFzQWxw
aGEobV9oYXNBbHBoYSk7CiAgICAgfQogCkBAIC0xMzcsNyArMTM3LDcgQEAgYm9vbCBXRUJQSW1h
Z2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5UwogCiAgICAgc3dpdGNoIChXZWJQSVVwZGF0ZSht
X2RlY29kZXIsIGRhdGFCeXRlcywgZGF0YVNpemUpKSB7CiAgICAgY2FzZSBWUDhfU1RBVFVTX09L
OgotICAgICAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoSW1hZ2VGcmFtZTo6RGVjb2RpbmdT
dGF0dXM6OkNvbXBsZXRlKTsKKyAgICAgICAgYnVmZmVyLnNldERlY29kaW5nU3RhdHVzKERlY29k
aW5nU3RhdHVzOjpDb21wbGV0ZSk7CiAgICAgICAgIGNsZWFyKCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGNhc2UgVlA4X1NUQVRVU19TVVNQRU5ERUQ6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316181</attachid>
            <date>2017-07-22 02:09:08 -0700</date>
            <delta_ts>2017-07-22 02:11:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174230-20170722020908.patch</filename>
            <type>text/plain</type>
            <size>33374</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE3MDhlNzYzMDFhNjVj
MzYwNjUzNDI0YzdmN2M0MDAyZTg0MDVjMC4uODg4NGU0MTliMDRmNWY5NjJjNTllMTI1MDYxZTU2
ZjFhNzcyNDQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE3LTA3LTIyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVT
U0lPTihyMjE5MDQ1KTogQSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG1heSBub3QgYmUgcmVwYWlu
dGVkIHdoZW4gaXRzIGNvbXBsZXRlIGZyYW1lIGZpbmlzaGVzIGRlY29kaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgQmVjYXVzZSBvZiByMjE5MDQ1LCB3
ZSBub3cgb25seSByZXBhaW50IHRoZSBDYWNoZWRJbWFnZUNsaW5ldHMgd2hpY2ggdHJpZWQKKyAg
ICAgICAgdG8gZHJhdyB0aGUgaW1hZ2UgYnV0IHRoZXkgY291bGQgbm90IGJlY2F1c2UgdGhleSBo
YXZlIHRvIHdhaXQgZm9yIHRoZSBpbWFnZQorICAgICAgICBkZWNvZGluZyB0byBmaW5pc2guIFRo
aXMgd2FzIGRvbmUgYnkga2VlcGluZyBhIEhhc2hTZXQgb2YgdGhlc2UgY2xpZW50cyAKKyAgICAg
ICAgYW5kIG1ha2UgQ2FjaGVkSW1hZ2Ugb3duIGl0LiBUaGlzIEhhc2hTZXQgaXMgY2xlYXJlZCBv
bmNlIHRoZSBpbWFnZSBmcmFtZQorICAgICAgICBmaW5pc2hlcyBkZWNvZGluZyBhbmQgYWxsIHRo
ZSB3YWl0ZWQgY2xpZW50cyBhcmUgcmVwYWludGVkLgorCisgICAgICAgIEJ1dCBNdWx0aXBsZSBh
c3luY2hyb25vdXMgaW1hZ2UgZGVjb2RpbmcgcmVxdWVzdHMgYXJlIGFsbG93ZWQgZm9yIHRoZSBz
YW1lCisgICAgICAgIGZyYW1lIGlmIG5ldyBkYXRhIGlzIGFkZGVkIHRvIHRoZSBpbWFnZSBzb3Vy
Y2UuIElmIHdlIHRyaWVkIHRvIGRyYXcgdGhlIAorICAgICAgICBzYW1lIGltYWdlIHR3aWNlIGJl
Zm9yZSBpdCBmaW5pc2hlcyBkZWNvZGluZyB0aGUgZmlyc3QgcmVxdWVzdCwgd2Ugd2lsbAorICAg
ICAgICBub3QgYmUgdG8gcmVjb3JkIHRoaXMgc2Vjb25kIHJlcXVlc3Qgc2luY2UgdGhlIEhhc2hT
ZXQgd2lsbCBub3QgYWRkIHRoZQorICAgICAgICBzYW1lIGNsaWVudCB0d2ljZS4gV2hlbiBoZSBz
ZWNvbmQgcmVxdWVzdCBmaW5pc2hlcyBkZWNvZGluZywgQ2FjaGVkSW1hZ2UKKyAgICAgICAgd2ls
bCBub3QgcmVwYWludCBhbnkgY2xpZW50IHNpbmNlIGl0cyBIYXNoU2V0IGlzIGVtcHR5LgorCisg
ICAgICAgIFRvIGZpeCB0aGlzIHByb2JsZW0gd2UgY2FuIGRvIHRoZSBmb2xsb3dpbmcuIFdoZW4g
YW4gaW1hZ2UgZnJhbWUgZmluaXNoZXMKKyAgICAgICAgZGVjb2RpbmcsIENhY2hlZEltYWdlIHdp
bGwga2VlcCBpdHMgSGFzaFNldCBvZiBwZW5kaW5nIGRyYXdpbmcgY2xpZW50cyBhcworICAgICAg
ICBpcyBpZiB0aGUgaW1hZ2UgZnJhbWUgaXMgcGFydGlhbGx5IGxvYWRlZCBmcmFtZS4KKworICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6aW1hZ2VGcmFtZUF2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6aW1hZ2VGcmFtZUF2YWlsYWJsZSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRl
c3Ryb3lEZWNvZGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGF0YUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNldEN1cnJlbnRGcmFtZURl
Y29kaW5nU3RhdHVzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmludGVybmFsU3RhcnRBbmlt
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmludGVybmFsQWR2YW5jZUFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aW1hZ2VGcmFtZUF2YWls
YWJsZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lOjpkZWNvZGluZ1N0YXR1cyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZS5oOiBNb3ZlIERlY29kaW5nU3RhdHVzIG91dCBvZiB0aGlzIGNs
YXNzCisgICAgICAgIHRvIEltYWdlVHlwZXMuaCB0byBhdm9pZCBhZGRpbmcgb3RoZXIgaGVhZGVy
IGZpbGVzIHRvIEltYWdlT2J2c2V2ZXIuaAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWVDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lQ2FjaGU6OnNl
dE5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6Y2FjaGVN
ZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpjYWNo
ZU5hdGl2ZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lQ2FjaGU6
OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZUNhY2hlOjpyZXF1ZXN0RnJhbWVBc3luY0RlY29kaW5nQXRJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lQ2FjaGU6OmZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFt
ZURlY29kaW5nU3RhdHVzQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VUeXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1Q
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6ZnJhbWVDb21wbGV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcyk6
CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpqcGVnQ29tcGxldGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpwbmdDb21wbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6ZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3KToKKwogMjAxNy0wNy0yMSAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUm91bmQtdHJpcHBpbmcgc3Ry
b2tlLXdpZHRoIHN0eWxlcyB0aHJvdWdoIGdldENvbXB1dGVkU3R5bGUgY2F1c2UgdGhlIHRleHQg
dG8gZ2FpbiBhIHN0cm9rZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCmluZGV4IDk3MDI2ZTZmNDU3ZjRiM2JjNjFiZjAxOTU1ZDMwMDNiNDJkZmFlOTQuLjQx
M2YwNDE0YjczNzM4Mjc1MmQxMWM2ZWRkYWRjM2FhMzJjNmQzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMzc0LDEwICszNzQsMTAgQEAgYm9v
bCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6Y2FuRGVzdHJveURlY29kZWREYXRh
KGNvbnN0IEltYWdlJiBpbWFnZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDYWNoZWRJ
bWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFn
ZSYgaW1hZ2UsIEltYWdlQW5pbWF0aW5nU3RhdGUgYW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJl
Y3QqIGNoYW5nZVJlY3QpCit2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpp
bWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0
ZSBhbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCwgRGVjb2RpbmdTdGF0
dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgZm9yIChhdXRvIGNhY2hlZEltYWdlIDogbV9jYWNo
ZWRJbWFnZXMpCi0gICAgICAgIGNhY2hlZEltYWdlLT5pbWFnZUZyYW1lQXZhaWxhYmxlKGltYWdl
LCBhbmltYXRpbmdTdGF0ZSwgY2hhbmdlUmVjdCk7CisgICAgICAgIGNhY2hlZEltYWdlLT5pbWFn
ZUZyYW1lQXZhaWxhYmxlKGltYWdlLCBhbmltYXRpbmdTdGF0ZSwgY2hhbmdlUmVjdCwgZGVjb2Rp
bmdTdGF0dXMpOwogfQogCiB2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpj
aGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiBpbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKQEAg
LTU0OCw3ICs1NDgsNyBAQCBib29sIENhY2hlZEltYWdlOjpjYW5EZXN0cm95RGVjb2RlZERhdGEo
Y29uc3QgSW1hZ2UmIGltYWdlKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENhY2hlZElt
YWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRp
bmdTdGF0ZSBhbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCkKK3ZvaWQg
Q2FjaGVkSW1hZ2U6OmltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmIGltYWdlLCBJbWFn
ZUFuaW1hdGluZ1N0YXRlIGFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0
LCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKIHsKICAgICBpZiAoJmltYWdlICE9IG1f
aW1hZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTU2Nyw3ICs1NjcsOCBAQCB2b2lkIENhY2hlZElt
YWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRp
bmdTdGF0ZSBhbgogICAgIGlmICh2aXNpYmxlU3RhdGUgPT0gVmlzaWJsZUluVmlld3BvcnRTdGF0
ZTo6Tm8gJiYgYW5pbWF0aW5nU3RhdGUgPT0gSW1hZ2VBbmltYXRpbmdTdGF0ZTo6WWVzKQogICAg
ICAgICBtX2ltYWdlLT5zdG9wQW5pbWF0aW9uKCk7CiAKLSAgICBtX3BlbmRpbmdJbWFnZURyYXdp
bmdDbGllbnRzLmNsZWFyKCk7CisgICAgaWYgKGRlY29kaW5nU3RhdHVzICE9IERlY29kaW5nU3Rh
dHVzOjpQYXJ0aWFsKQorICAgICAgICBtX3BlbmRpbmdJbWFnZURyYXdpbmdDbGllbnRzLmNsZWFy
KCk7CiB9CiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmIGlt
YWdlLCBjb25zdCBJbnRSZWN0KiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaAppbmRleCBmMDk1YWMyMjgwMTVhZWQ3ZTE5OWZlNGRmOWQ3ZjUzNDU5ZTc0N2Nk
Li44ZWE2ZjJlMTBlYTAzN2I5ZjQyMDhiMzUwN2NjZjZiMjhlNTMyODNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpIGZpbmFsOwogCiAgICAgICAg
IGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJikgZmluYWw7Ci0gICAgICAg
IHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3Rh
dGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyKSBmaW5hbDsKKyAgICAgICAg
dm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0
ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0g
RGVjb2RpbmdTdGF0dXM6OkludmFsaWQpIGZpbmFsOwogICAgICAgICB2b2lkIGNoYW5nZWRJblJl
Y3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KikgZmluYWw7CiAKICAgICAgICAgSGFzaFNl
dDxDYWNoZWRJbWFnZSo+IG1fY2FjaGVkSW1hZ2VzOwpAQCAtMTQzLDcgKzE0Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1hZ2UmLCBsb25nIGxvbmcg
ZGVsdGEpOwogICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpOwogICAgIGJvb2wgY2FuRGVz
dHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJik7Ci0gICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxh
YmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hh
bmdlUmVjdCA9IG51bGxwdHIpOworICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJ
bWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBu
dWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKICAgICB2
b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAKICAgICB2
b2lkIGFkZEluY3JlbWVudGFsRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBkZDVmYzhj
ZTM5NWMyODhjYWMzYjg0MGI1NDE5Y2QzZDA5OTViODdkLi44ODY3N2FmYjhkMDc0MzE2NTI3Yjk4
ZWRkMGQ5YWMzMmRhNTczZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIG1fc291cmNlLmRl
c3Ryb3lBbGxEZWNvZGVkRGF0YUV4Y2x1ZGVGcmFtZShtX2N1cnJlbnRGcmFtZSk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIG1fc291cmNlLmRlc3Ryb3lBbGxEZWNvZGVkRGF0YSgpOwotICAgICAgICBt
X2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6
OkludmFsaWQ7CisgICAgICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGlu
Z1N0YXR1czo6SW52YWxpZDsKICAgICB9CiAKICAgICAvLyBUaGVyZSdzIG5vIG5lZWQgdG8gdGhy
b3cgYXdheSB0aGUgZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBhc2tlZApAQCAtMTEw
LDkgKzExMCwxOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQo
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgaWYgKG1fc291cmNlLmRlY29kZWRTaXplKCkgJiYg
IWNhblVzZUFzeW5jRGVjb2RpbmdGb3JMYXJnZUltYWdlcygpKQogICAgICAgICBtX3NvdXJjZS5k
ZXN0cm95SW5jb21wbGV0ZURlY29kZWREYXRhKCk7CiAKLSAgICBtX2N1cnJlbnRGcmFtZURlY29k
aW5nU3RhdHVzID0gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkludmFsaWQ7CisgICAgbV9j
dXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkOwogICAg
IHJldHVybiBtX3NvdXJjZS5kYXRhQ2hhbmdlZChkYXRhKCksIGFsbERhdGFSZWNlaXZlZCk7CiB9
CisgICAgCit2b2lkIEJpdG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lm
TmVjZXNzYXJ5KERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQoreworICAgIC8vIFdoZW4g
bmV3IGRhdGEgaXMgcmVjaXZlZCwgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyBpcyBzZXQg
dG8gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQKKyAgICAvLyB0byBmb3JjZSBkZW9kaW5nIHRoZSBm
cmFtZSB3aGVuIGl0J3MgZHJhd24uIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgc2hvdWxk
IG5vdCBiZQorICAgIC8vIGNoYW5nZWQgaW4gdGhpcyBjYXNlIHRpbGwgZHJhdygpIGlzIGNhbGxl
ZCBhbmQgc2V0cyBpdHMgdmFsdWUgdG8gRGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nLgorICAgIGlm
IChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzICE9IERlY29kaW5nU3RhdHVzOjpEZWNvZGlu
ZykKKyAgICAgICAgcmV0dXJuOworICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBk
ZWNvZGluZ1N0YXR1czsKK30KIAogTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1h
Z2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewpA
QCAtMTkyLDEzICsyMDIsMTMgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKIAogICAgICAgICAv
LyBJZiB0aGUgY3VycmVudCBmcmFtZSBpcyBpbmNvbXBsZXRlLCBhIG5ldyByZXF1ZXN0IGZvciBk
ZWNvZGluZyB0aGlzIGZyYW1lIGhhcyB0byBiZSBtYWRlIGV2ZW4gaWYKICAgICAgICAgLy8gaXQg
aXMgY3VycmVudGx5IGJlaW5nIGRlY29kZWQuIE5ldyBkYXRhIG1heSBoYXZlIGJlZW4gcmVjZWl2
ZWQgc2luY2UgdGhlIHByZXZpb3VzIHJlcXVlc3Qgd2FzIG1hZGUuCi0gICAgICAgIGlmICgoIWZy
YW1lSXNDb21wYXRpYmxlICYmICFmcmFtZUlzQmVpbmdEZWNvZGVkKSB8fCBtX2N1cnJlbnRGcmFt
ZURlY29kaW5nU3RhdHVzID09IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSB7
CisgICAgICAgIGlmICgoIWZyYW1lSXNDb21wYXRpYmxlICYmICFmcmFtZUlzQmVpbmdEZWNvZGVk
KSB8fCBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID09IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkKSB7CiAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1
cmw6ICVzIFtyZXF1ZXN0aW5nIGxhcmdlIGFzeW5jIGRlY29kaW5nXSIsIF9fRlVOQ1RJT05fXywg
dGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBt
X3NvdXJjZS5yZXF1ZXN0RnJhbWVBc3luY0RlY29kaW5nQXRJbmRleChtX2N1cnJlbnRGcmFtZSwg
bV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgc2l6ZUZvckRyYXdpbmcpOwotICAgICAgICAgICAg
bV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVz
OjpEZWNvZGluZzsKKyAgICAgICAgICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBE
ZWNvZGluZ1N0YXR1czo6RGVjb2Rpbmc7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9jdXJy
ZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6RGVj
b2RpbmcpCisgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID09IERlY29k
aW5nU3RhdHVzOjpEZWNvZGluZykKICAgICAgICAgICAgIHJlc3VsdCA9IEltYWdlRHJhd1Jlc3Vs
dDo6RGlkUmVxdWVzdERlY29kaW5nOwogCiAgICAgICAgIGlmICghZnJhbWVIYXNEZWNvZGVkTmF0
aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1
cnJlbnRTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykpIHsKQEAg
LTIzMSw3ICsyNDEsNyBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgICAgICBpZiAoIWlt
YWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KICAg
ICAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICAgICAg
aWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgIT0gSW1hZ2VGcmFtZTo6RGVjb2RpbmdT
dGF0dXM6OkNvbXBsZXRlKQorICAgICAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1
cyAhPSBEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpCiAgICAgICAgICAgICArK21fZGVjb2RlQ291
bnRGb3JUZXN0aW5nOwogICAgIH0KIApAQCAtMzkxLDcgKzQwMSw3IEBAIEJpdG1hcEltYWdlOjpT
dGFydEFuaW1hdGlvblN0YXR1cyBCaXRtYXBJbWFnZTo6aW50ZXJuYWxTdGFydEFuaW1hdGlvbigp
CiAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVz
IFtjYWNoZWRGcmFtZUNvdW50ID0gJWxkIG5leHRGcmFtZSA9ICVsZF0iLCBfX0ZVTkNUSU9OX18s
IHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksICsrbV9jYWNoZWRGcmFt
ZUNvdW50LCBuZXh0RnJhbWUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fc291cmNl
LnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KG5leHRGcmFtZSwgbV9jdXJyZW50U3Vi
c2FtcGxpbmdMZXZlbCk7Ci0gICAgICAgICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVz
ID0gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nOworICAgICAgICAgICAgbV9j
dXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpEZWNvZGluZzsKICAg
ICAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW3Jl
cXVlc3RpbmcgYXN5bmMgZGVjb2RpbmcgZm9yIG5leHRGcmFtZSA9ICVsZF0iLCBfX0ZVTkNUSU9O
X18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG5leHRGcmFtZSk7
CiAgICAgICAgIH0KIApAQCAtNDM5LDEwICs0NDksMTEgQEAgdm9pZCBCaXRtYXBJbWFnZTo6aW50
ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKCkKIAogICAgIGRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNz
YXJ5KGZhbHNlKTsKIAotICAgIGlmIChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID09IElt
YWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpEZWNvZGluZykKLSAgICAgICAgbV9jdXJyZW50RnJh
bWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZy
YW1lKTsKKyAgICBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdT
dGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKKyAgICBzZXRDdXJyZW50RnJhbWVEZWNvZGlu
Z1N0YXR1c0lmTmVjZXNzYXJ5KGRlY29kaW5nU3RhdHVzKTsKKyAgICAKICAgICBpZiAoaW1hZ2VP
YnNlcnZlcigpKQotICAgICAgICBpbWFnZU9ic2VydmVyKCktPmltYWdlRnJhbWVBdmFpbGFibGUo
KnRoaXMsIEltYWdlQW5pbWF0aW5nU3RhdGU6Olllcyk7CisgICAgICAgIGltYWdlT2JzZXJ2ZXIo
KS0+aW1hZ2VGcmFtZUF2YWlsYWJsZSgqdGhpcywgSW1hZ2VBbmltYXRpbmdTdGF0ZTo6WWVzLCBu
dWxscHRyLCBkZWNvZGluZ1N0YXR1cyk7CiAKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6
OiVzIC0gJXAgLSB1cmw6ICVzIFttX2N1cnJlbnRGcmFtZSA9ICVsZF0iLCBfX0ZVTkNUSU9OX18s
IHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fY3VycmVudEZyYW1l
KTsKIH0KQEAgLTQ5NywxNCArNTA4LDE1IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmltYWdlRnJhbWVB
dmFpbGFibGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBBU1NFUlQoaW5kZXggPT0gbV9jdXJy
ZW50RnJhbWUgJiYgIW1fY3VycmVudEZyYW1lKTsKICAgICBpZiAobV9zb3VyY2UuaXNBc3luY0Rl
Y29kaW5nUXVldWVJZGxlKCkpCiAgICAgICAgIG1fc291cmNlLnN0b3BBc3luY0RlY29kaW5nUXVl
dWUoKTsKLSAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBJbWFnZUZyYW1l
OjpEZWNvZGluZ1N0YXR1czo6RGVjb2RpbmcpCi0gICAgICAgIG1fY3VycmVudEZyYW1lRGVjb2Rp
bmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAK
LSAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBJbWFnZUZyYW1lOjpEZWNv
ZGluZ1N0YXR1czo6Q29tcGxldGUpCisgICAgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMg
PSBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgc2V0Q3Vy
cmVudEZyYW1lRGVjb2RpbmdTdGF0dXNJZk5lY2Vzc2FyeShkZWNvZGluZ1N0YXR1cyk7CisgICAg
CisgICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPT0gRGVjb2RpbmdTdGF0dXM6
OkNvbXBsZXRlKQogICAgICAgICArK21fZGVjb2RlQ291bnRGb3JUZXN0aW5nOwogCiAgICAgaWYg
KGltYWdlT2JzZXJ2ZXIoKSkKLSAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5pbWFnZUZyYW1lQXZh
aWxhYmxlKCp0aGlzLCBJbWFnZUFuaW1hdGluZ1N0YXRlOjpObyk7CisgICAgICAgIGltYWdlT2Jz
ZXJ2ZXIoKS0+aW1hZ2VGcmFtZUF2YWlsYWJsZSgqdGhpcywgSW1hZ2VBbmltYXRpbmdTdGF0ZTo6
Tm8sIG51bGxwdHIsIGRlY29kaW5nU3RhdHVzKTsKIH0KIAogdW5zaWduZWQgQml0bWFwSW1hZ2U6
OmRlY29kZUNvdW50Rm9yVGVzdGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCA0NGRkNzczN2E1OWJhMDJiZWQwNDIzMTAz
MjkxOWMxNjI0YzNkNGUzLi5kZjliYjc4YTFkYjM0ODA3ZWZlNjhkMmEwMmMxM2Y5NzdmYzhjYzM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgK
QEAgLTg1LDggKzg1LDggQEAgcHVibGljOgogICAgIEludFNpemUgc2l6ZVJlc3BlY3RpbmdPcmll
bnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnNpemVSZXNwZWN0aW5nT3JpZW50YXRp
b24oKTsgfQogICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fc291cmNlLnNpbmdsZVBpeGVsU29saWRDb2xvcigpOyB9CiAgICAgYm9vbCBm
cmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KHNpemVf
dCBpbmRleCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMpIGNvbnN0IHsg
cmV0dXJuIG1fc291cmNlLmZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0
aW9uc0F0SW5kZXgoaW5kZXgsIGRlY29kaW5nT3B0aW9ucyk7IH0KLSAgICBJbWFnZUZyYW1lOjpE
ZWNvZGluZ1N0YXR1cyBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChzaXplX3QgaW5kZXgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlLmZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KGluZGV4KTsg
fQotICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KGluZGV4KSA9PSBJbWFnZUZyYW1lOjpE
ZWNvZGluZ1N0YXR1czo6Q29tcGxldGU7IH0KKyAgICBEZWNvZGluZ1N0YXR1cyBmcmFtZURlY29k
aW5nU3RhdHVzQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmZy
YW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KGluZGV4KTsgfQorICAgIGJvb2wgZnJhbWVJc0NvbXBs
ZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGZyYW1lRGVjb2RpbmdTdGF0
dXNBdEluZGV4KGluZGV4KSA9PSBEZWNvZGluZ1N0YXR1czo6Q29tcGxldGU7IH0KICAgICBib29s
IGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOyB9CiAKICAgICBib29sIGZyYW1lSGFzRnVs
bFNpemVOYXRpdmVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1
YnNhbXBsaW5nTGV2ZWwpIHsgcmV0dXJuIG1fc291cmNlLmZyYW1lSGFzRnVsbFNpemVOYXRpdmVJ
bWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOyB9CkBAIC0xOTMsNiArMTkzLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyVGltZXIoKTsKICAgICB2b2lkIHN0YXJ0VGltZXIo
U2Vjb25kcyBkZWxheSk7CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoKTsKKyAgICB2
b2lkIHNldEN1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzSWZOZWNlc3NhcnkoRGVjb2RpbmdTdGF0
dXMpOwogICAgIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0y
MDMsNyArMjA0LDcgQEAgcHJpdmF0ZToKIAogICAgIHNpemVfdCBtX2N1cnJlbnRGcmFtZSB7IDAg
fTsgLy8gVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGZyYW1lIG9mIGFuaW1hdGlvbi4KICAgICBT
dWJzYW1wbGluZ0xldmVsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1wbGluZ0xl
dmVsOjpEZWZhdWx0IH07Ci0gICAgSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXMgbV9jdXJyZW50
RnJhbWVEZWNvZGluZ1N0YXR1cyB7IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpJbnZhbGlk
IH07CisgICAgRGVjb2RpbmdTdGF0dXMgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyB7IERl
Y29kaW5nU3RhdHVzOjpJbnZhbGlkIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBtX2Zy
YW1lVGltZXI7CiAgICAgUmVwZXRpdGlvbkNvdW50IG1fcmVwZXRpdGlvbnNDb21wbGV0ZSB7IFJl
cGV0aXRpb25Db3VudE5vbmUgfTsgLy8gSG93IG1hbnkgcmVwZXRpdGlvbnMgd2UndmUgZmluaXNo
ZWQuCiAgICAgTW9ub3RvbmljVGltZSBtX2Rlc2lyZWRGcmFtZVN0YXJ0VGltZTsgLy8gVGhlIHN5
c3RlbSB0aW1lIGF0IHdoaWNoIHdlIGhvcGUgdG8gc2VlIHRoZSBuZXh0IGNhbGwgdG8gc3RhcnRB
bmltYXRpb24oKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZS5jcHAKaW5kZXggOGU3OGE2NmUzMzIyZjQxNDg3YjlkMDU1NzRhNWRjMzE5YzcyYTE5OS4u
ODE2NTQ4NmI2NDBmMWM4MDA3NDNiYmVjYTFmN2M0MGZkZTFhZmZiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKQEAgLTc3LDcgKzc3LDcg
QEAgdm9pZCBJbWFnZUZyYW1lOjpzZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1cyBkZWNv
ZGluZ1N0YXR1cykKICAgICBtX2RlY29kaW5nU3RhdHVzID0gZGVjb2RpbmdTdGF0dXM7CiB9CiAK
LUltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIEltYWdlRnJhbWU6OmRlY29kaW5nU3RhdHVzKCkg
Y29uc3QKK0RlY29kaW5nU3RhdHVzIEltYWdlRnJhbWU6OmRlY29kaW5nU3RhdHVzKCkgY29uc3QK
IHsKICAgICBBU1NFUlQobV9kZWNvZGluZ1N0YXR1cyAhPSBEZWNvZGluZ1N0YXR1czo6RGVjb2Rp
bmcpOwogICAgIHJldHVybiBtX2RlY29kaW5nU3RhdHVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCmluZGV4IDIxMmEyY2I3ZmI5YzUyYTU2ZDgwZjQ3
NWRkNDE1ODdiNTRmZjMzZjIuLjE4MjE4NjM2M2M3OWJjNzI5Nzk5OWEzOWUyMDBlMjAxODIzNjg4
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgK
QEAgLTM5LDcgKzM5LDYgQEAgY2xhc3MgSW1hZ2VGcmFtZSB7CiAgICAgZnJpZW5kIGNsYXNzIElt
YWdlRnJhbWVDYWNoZTsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIENhY2hpbmcgeyBNZXRhZGF0
YSwgTWV0YWRhdGFBbmRJbWFnZSB9OwotICAgIGVudW0gY2xhc3MgRGVjb2RpbmdTdGF0dXMgeyBJ
bnZhbGlkLCBQYXJ0aWFsLCBDb21wbGV0ZSwgRGVjb2RpbmcgfTsKIAogICAgIEltYWdlRnJhbWUo
KTsKICAgICBJbWFnZUZyYW1lKGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKSB7IG9wZXJhdG9yPShv
dGhlcik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lQ2FjaGUuY3BwCmluZGV4IDhjMzM2ZjQxYmU5N2Y4MWJjYjE2NGI2MDIxMzU1ZmI5MTVl
NGE1ZDIuLmI1NjQ2OThlYzgyNWJiMzY1YjkwNWVlYzEwYTk0ZTc3ZDQzZTdkNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNw
cApAQCAtMTkwLDE5ICsxOTAsMTkgQEAgdm9pZCBJbWFnZUZyYW1lQ2FjaGU6OnNldE5hdGl2ZUlt
YWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UpCiAKICAgICBmcmFtZS5tX25hdGl2ZUlt
YWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CiAKLSAgICBmcmFtZS5tX2RlY29kaW5nU3RhdHVz
ID0gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlOworICAgIGZyYW1lLm1fZGVj
b2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6Q29tcGxldGU7CiAgICAgZnJhbWUubV9zaXpl
ID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1lLm1fbmF0aXZlSW1hZ2UpOwogICAgIGZyYW1lLm1faGFz
QWxwaGEgPSBuYXRpdmVJbWFnZUhhc0FscGhhKGZyYW1lLm1fbmF0aXZlSW1hZ2UpOwogfQogCi12
b2lkIEltYWdlRnJhbWVDYWNoZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWU6OkRlY29kaW5nU3Rh
dHVzIGRlY29kaW5nU3RhdHVzKQordm9pZCBJbWFnZUZyYW1lQ2FjaGU6OmNhY2hlTWV0YWRhdGFB
dEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBE
ZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKIHsKICAgICBBU1NFUlQoaW5kZXggPCBtX2Zy
YW1lcy5zaXplKCkpOwogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZXNbaW5kZXhdOwog
CiAgICAgQVNTRVJUKGlzRGVjb2RlckF2YWlsYWJsZSgpKTsKLSAgICBpZiAoZGVjb2RpbmdTdGF0
dXMgPT0gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkludmFsaWQpCi0gICAgICAgIGZyYW1l
Lm1fZGVjb2RpbmdTdGF0dXMgPSBtX2RlY29kZXItPmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5k
ZXgpID8gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlIDogSW1hZ2VGcmFtZTo6
RGVjb2RpbmdTdGF0dXM6OlBhcnRpYWw7CisgICAgaWYgKGRlY29kaW5nU3RhdHVzID09IERlY29k
aW5nU3RhdHVzOjpJbnZhbGlkKQorICAgICAgICBmcmFtZS5tX2RlY29kaW5nU3RhdHVzID0gbV9k
ZWNvZGVyLT5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSA/IERlY29kaW5nU3RhdHVzOjpD
b21wbGV0ZSA6IERlY29kaW5nU3RhdHVzOjpQYXJ0aWFsOwogICAgIGVsc2UKICAgICAgICAgZnJh
bWUubV9kZWNvZGluZ1N0YXR1cyA9IGRlY29kaW5nU3RhdHVzOwogCkBAIC0yMjQsNyArMjI0LDcg
QEAgdm9pZCBJbWFnZUZyYW1lQ2FjaGU6OmNhY2hlTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW0KICAgICAgICAgZnJhbWUubV9kdXJhdGlvbiA9IG1f
ZGVjb2Rlci0+ZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgpOwogfQogCi12b2lkIEltYWdlRnJh
bWVDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJ
bWFnZSwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zLCBJbWFnZUZyYW1lOjpEZWNvZGlu
Z1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKK3ZvaWQgSW1hZ2VGcmFtZUNhY2hlOjpjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleChOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAg
IEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUg
PSBtX2ZyYW1lc1tpbmRleF07CkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBJbWFnZUZyYW1lQ2Fj
aGU6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2Us
IHNpemUKICAgICBkZWNvZGVkU2l6ZUluY3JlYXNlZChmcmFtZS5mcmFtZUJ5dGVzKCkpOwogfQog
Ci12b2lkIEltYWdlRnJhbWVDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3luYyhOYXRp
dmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMs
IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9pZCBJbWFnZUZy
YW1lQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHImJiBu
YXRpdmVJbWFnZSwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zLCBEZWNvZGluZ1N0YXR1
cyBkZWNvZGluZ1N0YXR1cykKIHsKICAgICBpZiAoIWlzRGVjb2RlckF2YWlsYWJsZSgpKQogICAg
ICAgICByZXR1cm47CkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBJbWFnZUZyYW1lQ2FjaGU6OnJl
cXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmcK
ICAgICAgICAgc3RhcnRBc3luY0RlY29kaW5nUXVldWUoKTsKICAgICAKICAgICBBU1NFUlQoaW5k
ZXggPCBtX2ZyYW1lcy5zaXplKCkpOwotICAgIEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIGRl
Y29kaW5nU3RhdHVzID0gbV9kZWNvZGVyLT5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSA/
IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSA6IEltYWdlRnJhbWU6OkRlY29k
aW5nU3RhdHVzOjpQYXJ0aWFsOworICAgIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzID0g
bV9kZWNvZGVyLT5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSA/IERlY29kaW5nU3RhdHVz
OjpDb21wbGV0ZSA6IERlY29kaW5nU3RhdHVzOjpQYXJ0aWFsOwogCiAgICAgTE9HKEltYWdlcywg
IkltYWdlRnJhbWVDYWNoZTo6JXMgLSAlcCAtIHVybDogJXMgW2VucXVldWluZyBmcmFtZSAlbGQg
Zm9yIGRlY29kaW5nXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgaW5kZXgpOwogICAgIG1fZnJhbWVSZXF1ZXN0UXVldWUuZW5xdWV1ZSh7
IGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBzaXplRm9yRHJhd2luZywgZGVjb2RpbmdTdGF0dXMg
fSk7CkBAIC00OTksOSArNDk5LDkgQEAgYm9vbCBJbWFnZUZyYW1lQ2FjaGU6OmZyYW1lSXNCZWlu
Z0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgoc2l6ZV8KICAgICByZXR1
cm4gaXQgIT0gbV9mcmFtZUNvbW1pdFF1ZXVlLmVuZCgpOwogfQogCi1JbWFnZUZyYW1lOjpEZWNv
ZGluZ1N0YXR1cyBJbWFnZUZyYW1lQ2FjaGU6OmZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KHNp
emVfdCBpbmRleCkKK0RlY29kaW5nU3RhdHVzIEltYWdlRnJhbWVDYWNoZTo6ZnJhbWVEZWNvZGlu
Z1N0YXR1c0F0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleDxJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1cz4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6
ZGVjb2RpbmdTdGF0dXMpKTsKKyAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8RGVjb2Rp
bmdTdGF0dXM+KGluZGV4LCAoJkltYWdlRnJhbWU6OmRlY29kaW5nU3RhdHVzKSk7CiB9CiAKIGJv
b2wgSW1hZ2VGcmFtZUNhY2hlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5o
CmluZGV4IGM3N2I5MjczYzQ3ZDM4MTg4OTYxMzY4N2RmMjkzMzAwZThiODUyMmMuLjY0OWFiZmMy
MzYyYzg0NWUzYmMxYWY3NzA0OGMzNDA1YjViOWU2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCkBAIC05Myw3ICs5Myw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIEltYWdlRnJhbWUgbWV0YWRhdGEgd2hpY2ggZG9lcyBub3QgcmVx
dWlyZSBjYWNoaW5nIHRoZSBJbWFnZUZyYW1lLgogICAgIGJvb2wgZnJhbWVJc0JlaW5nRGVjb2Rl
ZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChzaXplX3QsIGNvbnN0IERlY29kaW5n
T3B0aW9ucyYpOwotICAgIEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIGZyYW1lRGVjb2RpbmdT
dGF0dXNBdEluZGV4KHNpemVfdCk7CisgICAgRGVjb2RpbmdTdGF0dXMgZnJhbWVEZWNvZGluZ1N0
YXR1c0F0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVf
dCk7CiAgICAgYm9vbCBmcmFtZUhhc0ltYWdlQXRJbmRleChzaXplX3QpOwogICAgIGJvb2wgZnJh
bWVIYXNGdWxsU2l6ZU5hdGl2ZUltYWdlQXRJbmRleChzaXplX3QsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U3Vic2FtcGxpbmdMZXZlbD4mKTsKQEAgLTEzMSw5ICsxMzEsOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGVjb2RlZFNpemVSZXNldCh1bnNpZ25lZCBkZWNvZGVkU2l6ZSk7CiAKICAgICB2b2lk
IHNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYpOwotICAgIHZvaWQgY2FjaGVNZXRhZGF0
YUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0
YXR1cyA9IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKLSAgICB2b2lkIGNh
Y2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0
dXMgPSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNo
ZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgSW1hZ2VGcmFtZTo6RGVjb2RpbmdT
dGF0dXMpOworICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKKyAgICB2
b2lkIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBE
ZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlQXRJbmRl
eEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3Qg
RGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOwogCiAgICAgUmVmPFdvcmtRdWV1ZT4g
ZGVjb2RpbmdRdWV1ZSgpOwogCkBAIC0xNTEsNyArMTUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
c2l6ZV90IGluZGV4OwogICAgICAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWw7
CiAgICAgICAgIERlY29kaW5nT3B0aW9ucyBkZWNvZGluZ09wdGlvbnM7Ci0gICAgICAgIEltYWdl
RnJhbWU6OkRlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzOworICAgICAgICBEZWNvZGluZ1N0
YXR1cyBkZWNvZGluZ1N0YXR1czsKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEltYWdl
RnJhbWVSZXF1ZXN0JiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IGluZGV4ID09IG90aGVyLmluZGV4ICYmIHN1YnNhbXBsaW5nTGV2ZWwgPT0gb3RoZXIuc3Vic2Ft
cGxpbmdMZXZlbCAmJiBkZWNvZGluZ09wdGlvbnMgPT0gb3RoZXIuZGVjb2RpbmdPcHRpb25zICYm
IGRlY29kaW5nU3RhdHVzID09IG90aGVyLmRlY29kaW5nU3RhdHVzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCmluZGV4IDgwMDYyY2FkMWUw
ZTc3OWY3MmE3NjVkYzcwNzhmMzZiMzlmMDA3YWYuLmEwNjg1MWVjMWU3NmVhYTZkNzhhNzViZjQ5
ZWM1M2IyZGUyNDkwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZU9ic2VydmVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWREcmF3KGNvbnN0IEltYWdlJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGNhbkRl
c3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW1h
Z2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0
IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGlt
YWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25z
dCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGlu
Z1N0YXR1czo6SW52YWxpZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkSW5SZWN0KGNv
bnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIpID0gMDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmlu
ZGV4IGIzNmM2YWEzODM5MTIyZTFkNzIyNjZkZjAyNTliNDdjNzZkMmQwNzYuLmY0ZGQ0ZDg4ODQ0
ZDUyNTNmNjk5OTczYjM3OGEwZWUzNDA5N2E0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBJbWFnZUZyYW1lIG1ldGFkYXRhIHdoaWNoIGRvZXMgbm90IHJlcXVpcmUgY2FjaGlu
ZyB0aGUgSW1hZ2VGcmFtZS4KICAgICBib29sIGZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBh
dGlibGVXaXRoT3B0aW9uc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBEZWNvZGluZ09wdGlv
bnMmIGRlY29kaW5nT3B0aW9ucykgeyByZXR1cm4gbV9mcmFtZUNhY2hlLT5mcmFtZUlzQmVpbmdE
ZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KGluZGV4LCBkZWNvZGluZ09w
dGlvbnMpOyB9Ci0gICAgSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXMgZnJhbWVEZWNvZGluZ1N0
YXR1c0F0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX2ZyYW1lQ2FjaGUtPmZyYW1lRGVj
b2RpbmdTdGF0dXNBdEluZGV4KGluZGV4KTsgfQorICAgIERlY29kaW5nU3RhdHVzIGZyYW1lRGVj
b2RpbmdTdGF0dXNBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9mcmFtZUNhY2hlLT5m
cmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChpbmRleCk7IH0KICAgICBib29sIGZyYW1lSGFzQWxw
aGFBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9mcmFtZUNhY2hlLT5mcmFtZUhhc0Fs
cGhhQXRJbmRleChpbmRleCk7IH0KICAgICBib29sIGZyYW1lSGFzSW1hZ2VBdEluZGV4KHNpemVf
dCBpbmRleCkgeyByZXR1cm4gbV9mcmFtZUNhY2hlLT5mcmFtZUhhc0ltYWdlQXRJbmRleChpbmRl
eCk7IH0KICAgICBib29sIGZyYW1lSGFzRnVsbFNpemVOYXRpdmVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBzdWJzYW1wbGlu
Z0xldmVsKSB7IHJldHVybiBtX2ZyYW1lQ2FjaGUtPmZyYW1lSGFzRnVsbFNpemVOYXRpdmVJbWFn
ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmgKaW5kZXggYmE3YjI1NGVlZjQyZjFjYzk0YzVm
MzJlYTY2ZmE2OGI0YTZlOWJmYy4uMGZiYjk5ZTMzY2ZjOGNhN2E4ZTg2NzkyZTk1ZGM0ZmUyMTA3
NzZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VU
eXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlVHlwZXMu
aApAQCAtNzgsNiArNzgsMTMgQEAgZW51bSBjbGFzcyBFbmNvZGVkRGF0YVN0YXR1cyB7CiAgICAg
Q29tcGxldGUKIH07CiAKK2VudW0gY2xhc3MgRGVjb2RpbmdTdGF0dXMgeworICAgIEludmFsaWQs
CisgICAgUGFydGlhbCwKKyAgICBDb21wbGV0ZSwKKyAgICBEZWNvZGluZworfTsKKwogZW51bSBj
bGFzcyBJbWFnZURyYXdSZXN1bHQgewogICAgIERpZE5vdGhpbmcsCiAgICAgRGlkUmVxdWVzdERl
Y29kaW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAKaW5kZXggOGQ2OGE0MDAwOGE2NDU5OGE5
ZDdjNjRkODNlOTVhNTA5MzA4YmJhMi4uMDE2ODM0MzM0NTM5OTRhN2U5YjRmYjI3OWRlNTAwZTM4
NmUyNDEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGJv
b2wgQk1QSW1hZ2VSZWFkZXI6OmRlY29kZUJNUChib29sIG9ubHlTaXplKQogICAgICAgICBpZiAo
IW1fYnVmZmVyLT5pbml0aWFsaXplKG1fcGFyZW50LT5zaXplKCksIG1fcGFyZW50LT5wcmVtdWx0
aXBseUFscGhhKCkpKQogICAgICAgICAgICAgcmV0dXJuIG1fcGFyZW50LT5zZXRGYWlsZWQoKTsg
Ly8gVW5hYmxlIHRvIGFsbG9jYXRlLgogCi0gICAgICAgIG1fYnVmZmVyLT5zZXREZWNvZGluZ1N0
YXR1cyhJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6UGFydGlhbCk7CisgICAgICAgIG1fYnVm
ZmVyLT5zZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6UGFydGlhbCk7CiAgICAgICAg
IG1fYnVmZmVyLT5zZXRIYXNBbHBoYShmYWxzZSk7CiAKICAgICAgICAgaWYgKCFtX2lzVG9wRG93
bikKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVAoYm9v
bCBvbmx5U2l6ZSkKICAgICB9CiAKICAgICAvLyBEb25lIQotICAgIG1fYnVmZmVyLT5zZXREZWNv
ZGluZ1N0YXR1cyhJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpOworICAgIG1f
YnVmZmVyLT5zZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpOwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMGNj
NzUwOTlmNWJhNDJkZTk5OWM4NzIwMTQzNmQwNTMzOTk3YmUuLjljYWMxMTM4ZmZhYTg1M2U2MjM4
YmIzNzJlZGQ4ZmFmOWRkYzgzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0y
NDcsNyArMjQ3LDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUodW5zaWdu
ZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlvbiwKICAgICBpZiAoYnVmZmVyLmlz
SW52YWxpZCgpICYmICFpbml0RnJhbWVCdWZmZXIoZnJhbWVJbmRleCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsgLy8gaW5pdEZyYW1lQnVmZmVyKCkgaGFzIGFscmVhZHkgY2FsbGVkIHNldEZhaWxl
ZCgpLgogCi0gICAgYnVmZmVyLnNldERlY29kaW5nU3RhdHVzKEltYWdlRnJhbWU6OkRlY29kaW5n
U3RhdHVzOjpDb21wbGV0ZSk7CisgICAgYnVmZmVyLnNldERlY29kaW5nU3RhdHVzKERlY29kaW5n
U3RhdHVzOjpDb21wbGV0ZSk7CiAgICAgYnVmZmVyLnNldER1cmF0aW9uKGZyYW1lRHVyYXRpb24p
OwogICAgIGJ1ZmZlci5zZXREaXNwb3NhbE1ldGhvZChkaXNwb3NhbE1ldGhvZCk7CiAKQEAgLTQw
MSw3ICs0MDEsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuc2ln
bmVkIGZyYW1lSW5kZXgpCiAgICAgYnVmZmVyLT5iYWNraW5nU3RvcmUoKS0+c2V0RnJhbWVSZWN0
KEludFJlY3QobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCkpOwogCiAgICAg
Ly8gVXBkYXRlIG91ciBzdGF0dXMgdG8gYmUgcGFydGlhbGx5IGNvbXBsZXRlLgotICAgIGJ1ZmZl
ci0+c2V0RGVjb2RpbmdTdGF0dXMoSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwp
OworICAgIGJ1ZmZlci0+c2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwp
OwogCiAgICAgLy8gUmVzZXQgdGhlIGFscGhhIHBpeGVsIHRyYWNrZXIgZm9yIHRoaXMgZnJhbWUu
CiAgICAgbV9jdXJyZW50QnVmZmVyU2F3QWxwaGEgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwCmluZGV4IDU1MWFmNmU0NDMxM2UxMDZjZDZjNjExNmZmZmFiMDAxM2VkNGJj
NTAuLjc0Y2ExMTEzOTlhMzZjMjdlMjc5OGU5OGUxMWY5MzZkNWVlYjZiMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtNjA4LDcgKzYwOCw3IEBAIGJvb2wgSlBFR0ltYWdl
RGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKCkKICAgICBpZiAoYnVmZmVyLmlzSW52YWxpZCgpKSB7
CiAgICAgICAgIGlmICghYnVmZmVyLmluaXRpYWxpemUoc2NhbGVkU2l6ZSgpLCBtX3ByZW11bHRp
cGx5QWxwaGEpKQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwotICAgICAgICBidWZm
ZXIuc2V0RGVjb2RpbmdTdGF0dXMoSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwp
OworICAgICAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OlBhcnRp
YWwpOwogICAgICAgICAvLyBUaGUgYnVmZmVyIGlzIHRyYW5zcGFyZW50IG91dHNpZGUgdGhlIGRl
Y29kZWQgYXJlYSB3aGlsZSB0aGUgaW1hZ2UgaXMKICAgICAgICAgLy8gbG9hZGluZy4gVGhlIGNv
bXBsZXRlZCBpbWFnZSB3aWxsIGJlIG1hcmtlZCBmdWxseSBvcGFxdWUgaW4ganBlZ0NvbXBsZXRl
KCkuCiAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYSh0cnVlKTsKQEAgLTY1Miw3ICs2NTIsNyBA
QCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmpwZWdDb21wbGV0ZSgpCiAgICAgLy8gZW1wdHkuCiAg
ICAgSW1hZ2VGcmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwogICAgIGJ1ZmZl
ci5zZXRIYXNBbHBoYShmYWxzZSk7Ci0gICAgYnVmZmVyLnNldERlY29kaW5nU3RhdHVzKEltYWdl
RnJhbWU6OkRlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSk7CisgICAgYnVmZmVyLnNldERlY29kaW5n
U3RhdHVzKERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSk7CiB9CiAKIHZvaWQgSlBFR0ltYWdlRGVj
b2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyZmI2YzQ0MGQ0MzZkYWI5NjBkZDhhMDAwZTlhMmNl
Y2RhYzkzNTRiLi5lY2RhMThkZjdiZTdhZDIxYjYyZDE1NzI3YWQ4ZjgyNTJhYjBmNzI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgUE5HSW1h
Z2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25l
ZCByb3dJbmRleCwKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGJ1ZmZlci5z
ZXREZWNvZGluZ1N0YXR1cyhJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6UGFydGlhbCk7Cisg
ICAgICAgIGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6UGFydGlhbCk7
CiAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShmYWxzZSk7CiAKICNpZiBFTkFCTEUoQVBORykK
QEAgLTU1OCw3ICs1NTgsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cG5nQ29tcGxldGUoKQog
ICAgIH0KICNlbmRpZgogICAgIGlmICghbV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKLSAg
ICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLmZpcnN0KCkuc2V0RGVjb2RpbmdTdGF0dXMoSW1hZ2VG
cmFtZTo6RGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsKKyAgICAgICAgbV9mcmFtZUJ1ZmZlckNh
Y2hlLmZpcnN0KCkuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsK
IH0KIAogdm9pZCBQTkdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCB1bnNpZ25l
ZCBoYWx0QXRGcmFtZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCkBAIC04MjUsNyArODI1LDcgQEAg
dm9pZCBQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUoKQogICAgICAgICByZXR1cm47CiAK
ICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50RnJh
bWVdOwotICAgIGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhJbWFnZUZyYW1lOjpEZWNvZGluZ1N0
YXR1czo6Q29tcGxldGUpOworICAgIGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0
YXR1czo6Q29tcGxldGUpOwogCiAgICAgcG5nX2J5dGVwIGludGVybGFjZUJ1ZmZlciA9IG1fcmVh
ZGVyLT5pbnRlcmxhY2VCdWZmZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAK
aW5kZXggNDQ1NTFkY2IwMGM0ZTljZDU3NmFkMTU3MDhkOGQ0MjM1NGE3ZGIwMC4uYjNhNjMyZmE3
MTNhMjM3NDE2Mjg5MTcwZGM2NTg4NzJhM2RhNmVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURl
Y29kZXIuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNv
ZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCkKICAgICBpZiAoYnVmZmVyLmlzSW52YWxpZCgpKSB7CiAg
ICAgICAgIGlmICghYnVmZmVyLmluaXRpYWxpemUoc2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEp
KQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwotICAgICAgICBidWZmZXIuc2V0RGVj
b2RpbmdTdGF0dXMoSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwpOworICAgICAg
ICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwpOwogICAg
ICAgICBidWZmZXIuc2V0SGFzQWxwaGEobV9oYXNBbHBoYSk7CiAgICAgfQogCkBAIC0xMzcsNyAr
MTM3LDcgQEAgYm9vbCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9v
bCkKIAogICAgIHN3aXRjaCAoV2ViUElVcGRhdGUobV9kZWNvZGVyLCBkYXRhQnl0ZXMsIGRhdGFT
aXplKSkgewogICAgIGNhc2UgVlA4X1NUQVRVU19PSzoKLSAgICAgICAgYnVmZmVyLnNldERlY29k
aW5nU3RhdHVzKEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSk7CisgICAgICAg
IGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpOwogICAg
ICAgICBjbGVhcigpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFZQOF9TVEFUVVNf
U1VTUEVOREVEOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKaW5kZXggMDFlZDAwNTk2NzU4OGQ2MjFlNTM5ZDNjMzkxN2QyN2RiMzMzZWY1
Zi4uZTM5NjQwYjM2MDM1ZTUyNTYyMzMwODQxZGI5ODE2Y2EwY2JlOWZhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0zMjQs
OCArMzI0LDYgQEAgRGVjb2RpbmdNb2RlIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkZWNvZGluZ01v
ZGVGb3JJbWFnZURyYXcoY29uc3QgSW1hZ2UmIGltYWdlLAogICAgIGlmIChJT1NBcHBsaWNhdGlv
bjo6aXNJQm9va3NTdG9yeXRpbWUoKSkKICAgICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXM7CiAjZW5kaWYKLSAgICBpZiAoZG9jdW1lbnQoKS5pc0ltYWdlRG9jdW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXM7CiAgICAgaWYgKCFzZXR0
aW5ncygpLmxhcmdlSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4g
RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91czsKICAgICBpZiAoIWJpdG1hcEltYWdlLmNhblVzZUFz
eW5jRGVjb2RpbmdGb3JMYXJnZUltYWdlcygpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316182</attachid>
            <date>2017-07-22 02:11:15 -0700</date>
            <delta_ts>2017-07-22 04:34:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174230-20170722021114.patch</filename>
            <type>text/plain</type>
            <size>33378</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE3MDhlNzYzMDFhNjVj
MzYwNjUzNDI0YzdmN2M0MDAyZTg0MDVjMC4uNjEwZmYyZDc4OWEzMDJmNjVlMTAwZjdjNjc5YjFl
OTkxYTViMzA0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE3LTA3LTIyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVT
U0lPTihyMjE5MDQ1KTogQSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG1heSBub3QgYmUgcmVwYWlu
dGVkIHdoZW4gaXRzIGNvbXBsZXRlIGZyYW1lIGZpbmlzaGVzIGRlY29kaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgQmVjYXVzZSBvZiByMjE5MDQ1LCB3
ZSBub3cgb25seSByZXBhaW50IHRoZSBDYWNoZWRJbWFnZUNsaW5ldHMgd2hpY2ggdHJpZWQKKyAg
ICAgICAgdG8gZHJhdyB0aGUgaW1hZ2UgYnV0IHRoZXkgY291bGQgbm90IGJlY2F1c2UgdGhleSBo
YXZlIHRvIHdhaXQgZm9yIHRoZSBpbWFnZQorICAgICAgICBkZWNvZGluZyB0byBmaW5pc2guIFRo
aXMgd2FzIGRvbmUgYnkga2VlcGluZyBhIEhhc2hTZXQgb2YgdGhlc2UgY2xpZW50cyAKKyAgICAg
ICAgYW5kIG1ha2UgQ2FjaGVkSW1hZ2Ugb3duIGl0LiBUaGlzIEhhc2hTZXQgaXMgY2xlYXJlZCBv
bmNlIHRoZSBpbWFnZSBmcmFtZQorICAgICAgICBmaW5pc2hlcyBkZWNvZGluZyBhbmQgYWxsIHRo
ZSB3YWl0ZWQgY2xpZW50cyBhcmUgcmVwYWludGVkLgorCisgICAgICAgIEJ1dCBNdWx0aXBsZSBh
c3luY2hyb25vdXMgaW1hZ2UgZGVjb2RpbmcgcmVxdWVzdHMgYXJlIGFsbG93ZWQgZm9yIHRoZSBz
YW1lCisgICAgICAgIGZyYW1lIGlmIG5ldyBkYXRhIGlzIGFkZGVkIHRvIHRoZSBpbWFnZSBzb3Vy
Y2UuIElmIHdlIHRyaWVkIHRvIGRyYXcgdGhlIAorICAgICAgICBzYW1lIGltYWdlIHR3aWNlIGJl
Zm9yZSBpdCBmaW5pc2hlcyBkZWNvZGluZyB0aGUgZmlyc3QgcmVxdWVzdCwgd2Ugd2lsbAorICAg
ICAgICBub3QgYmUgdG8gcmVjb3JkIHRoaXMgc2Vjb25kIHJlcXVlc3Qgc2luY2UgdGhlIEhhc2hT
ZXQgd2lsbCBub3QgYWRkIHRoZQorICAgICAgICBzYW1lIGNsaWVudCB0d2ljZS4gV2hlbiBoZSBz
ZWNvbmQgcmVxdWVzdCBmaW5pc2hlcyBkZWNvZGluZywgQ2FjaGVkSW1hZ2UKKyAgICAgICAgd2ls
bCBub3QgcmVwYWludCBhbnkgY2xpZW50IHNpbmNlIGl0cyBIYXNoU2V0IGlzIGVtcHR5LgorCisg
ICAgICAgIFRvIGZpeCB0aGlzIHByb2JsZW0gd2UgY2FuIGRvIHRoZSBmb2xsb3dpbmcuIFdoZW4g
YW4gaW1hZ2UgZnJhbWUgZmluaXNoZXMKKyAgICAgICAgZGVjb2RpbmcsIENhY2hlZEltYWdlIHdp
bGwga2VlcCBpdHMgSGFzaFNldCBvZiBwZW5kaW5nIGRyYXdpbmcgY2xpZW50cyBhcworICAgICAg
ICBsb25nIGFzIHRoZSBpbWFnZSBmcmFtZSBpcyBhIHBhcnRpYWxseSBsb2FkZWQgZnJhbWUuCisK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmltYWdlRnJhbWVBdmFpbGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmltYWdlRnJhbWVBdmFpbGFibGUpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRh
dGFDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzZXRDdXJyZW50RnJh
bWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjppbnRlcm5hbFN0YXJ0
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFu
Y2VBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmltYWdlRnJhbWVB
dmFpbGFibGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6ZGVjb2RpbmdTdGF0dXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaDogTW92ZSBEZWNvZGluZ1N0YXR1cyBvdXQgb2YgdGhp
cyBjbGFzcworICAgICAgICB0byBJbWFnZVR5cGVzLmggdG8gYXZvaWQgYWRkaW5nIG90aGVyIGhl
YWRlciBmaWxlcyB0byBJbWFnZU9idnNldmVyLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUZyYW1lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hl
OjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lQ2FjaGU6OmNh
Y2hlTWV0YWRhdGFBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6
Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNh
Y2hlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVDYWNoZTo6cmVxdWVzdEZyYW1lQXN5bmNEZWNvZGluZ0F0SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
ZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlVHlwZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OmRlY29k
ZUJNUCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpvdXRwdXRTY2FubGlu
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6anBlZ0NvbXBsZXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cG5nQ29tcGxldGUpOgorICAgICAgICAo
V2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmRlY29kaW5nTW9kZUZvckltYWdlRHJhdyk6CisKIDIwMTctMDctMjEgIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJvdW5kLXRyaXBwaW5n
IHN0cm9rZS13aWR0aCBzdHlsZXMgdGhyb3VnaCBnZXRDb21wdXRlZFN0eWxlIGNhdXNlIHRoZSB0
ZXh0IHRvIGdhaW4gYSBzdHJva2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcAppbmRleCA5NzAyNmU2ZjQ1N2Y0YjNiYzYxYmYwMTk1NWQzMDAzYjQyZGZhZTk0
Li40MTNmMDQxNGI3MzczODI3NTJkMTFjNmVkZGFkYzNhYTMyYzZkMzhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTM3NCwxMCArMzc0LDEwIEBA
IGJvb2wgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmNhbkRlc3Ryb3lEZWNvZGVk
RGF0YShjb25zdCBJbWFnZSYgaW1hZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ2Fj
aGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmltYWdlRnJhbWVBdmFpbGFibGUoY29uc3Qg
SW1hZ2UmIGltYWdlLCBJbWFnZUFuaW1hdGluZ1N0YXRlIGFuaW1hdGluZ1N0YXRlLCBjb25zdCBJ
bnRSZWN0KiBjaGFuZ2VSZWN0KQordm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZl
cjo6aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYgaW1hZ2UsIEltYWdlQW5pbWF0aW5n
U3RhdGUgYW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QsIERlY29kaW5n
U3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1f
Y2FjaGVkSW1hZ2VzKQotICAgICAgICBjYWNoZWRJbWFnZS0+aW1hZ2VGcmFtZUF2YWlsYWJsZShp
bWFnZSwgYW5pbWF0aW5nU3RhdGUsIGNoYW5nZVJlY3QpOworICAgICAgICBjYWNoZWRJbWFnZS0+
aW1hZ2VGcmFtZUF2YWlsYWJsZShpbWFnZSwgYW5pbWF0aW5nU3RhdGUsIGNoYW5nZVJlY3QsIGRl
Y29kaW5nU3RhdHVzKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZl
cjo6Y2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3Qp
CkBAIC01NDgsNyArNTQ4LDcgQEAgYm9vbCBDYWNoZWRJbWFnZTo6Y2FuRGVzdHJveURlY29kZWRE
YXRhKGNvbnN0IEltYWdlJiBpbWFnZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDYWNo
ZWRJbWFnZTo6aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYgaW1hZ2UsIEltYWdlQW5p
bWF0aW5nU3RhdGUgYW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QpCit2
b2lkIENhY2hlZEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiBpbWFnZSwg
SW1hZ2VBbmltYXRpbmdTdGF0ZSBhbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdl
UmVjdCwgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgaWYgKCZpbWFnZSAh
PSBtX2ltYWdlKQogICAgICAgICByZXR1cm47CkBAIC01NjcsNyArNTY3LDggQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYgaW1hZ2UsIEltYWdlQW5p
bWF0aW5nU3RhdGUgYW4KICAgICBpZiAodmlzaWJsZVN0YXRlID09IFZpc2libGVJblZpZXdwb3J0
U3RhdGU6Ok5vICYmIGFuaW1hdGluZ1N0YXRlID09IEltYWdlQW5pbWF0aW5nU3RhdGU6OlllcykK
ICAgICAgICAgbV9pbWFnZS0+c3RvcEFuaW1hdGlvbigpOwogCi0gICAgbV9wZW5kaW5nSW1hZ2VE
cmF3aW5nQ2xpZW50cy5jbGVhcigpOworICAgIGlmIChkZWNvZGluZ1N0YXR1cyAhPSBEZWNvZGlu
Z1N0YXR1czo6UGFydGlhbCkKKyAgICAgICAgbV9wZW5kaW5nSW1hZ2VEcmF3aW5nQ2xpZW50cy5j
bGVhcigpOwogfQogCiB2b2lkIENhY2hlZEltYWdlOjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdl
JiBpbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKaW5kZXggZjA5NWFjMjI4MDE1YWVkN2UxOTlmZTRkZjlkN2Y1MzQ1OWU3
NDdjZC4uOGVhNmYyZTEwZWEwMzdiOWY0MjA4YjM1MDdjY2Y2YjI4ZTUzMjgzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBw
cml2YXRlOgogICAgICAgICB2b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UmKSBmaW5hbDsKIAogICAg
ICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpIGZpbmFsOwotICAg
ICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGlu
Z1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0cikgZmluYWw7CisgICAg
ICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5n
U3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1
cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBmaW5hbDsKICAgICAgICAgdm9pZCBjaGFuZ2Vk
SW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopIGZpbmFsOwogCiAgICAgICAgIEhh
c2hTZXQ8Q2FjaGVkSW1hZ2UqPiBtX2NhY2hlZEltYWdlczsKQEAgLTE0Myw3ICsxNDMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdlJiwgbG9uZyBs
b25nIGRlbHRhKTsKICAgICB2b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UmKTsKICAgICBib29sIGNh
bkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpOwotICAgIHZvaWQgaW1hZ2VGcmFtZUF2
YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3Qq
IGNoYW5nZVJlY3QgPSBudWxscHRyKTsKKyAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29u
c3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0
ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CiAg
ICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogCiAg
ICAgdm9pZCBhZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggZGQ1
ZmM4Y2UzOTVjMjg4Y2FjM2I4NDBiNTQxOWNkM2QwOTk1Yjg3ZC4uODg2NzdhZmI4ZDA3NDMxNjUy
N2I5OGVkZDBkOWFjMzJkYTU3M2U1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIEJpdG1hcElt
YWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQogICAgICAgICBtX3NvdXJj
ZS5kZXN0cm95QWxsRGVjb2RlZERhdGFFeGNsdWRlRnJhbWUobV9jdXJyZW50RnJhbWUpOwogICAg
IGVsc2UgewogICAgICAgICBtX3NvdXJjZS5kZXN0cm95QWxsRGVjb2RlZERhdGEoKTsKLSAgICAg
ICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IEltYWdlRnJhbWU6OkRlY29kaW5nU3Rh
dHVzOjpJbnZhbGlkOworICAgICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gRGVj
b2RpbmdTdGF0dXM6OkludmFsaWQ7CiAgICAgfQogCiAgICAgLy8gVGhlcmUncyBubyBuZWVkIHRv
IHRocm93IGF3YXkgdGhlIGRlY29kZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQKQEAg
LTExMCw5ICsxMTAsMTkgQEAgRW5jb2RlZERhdGFTdGF0dXMgQml0bWFwSW1hZ2U6OmRhdGFDaGFu
Z2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIGlmIChtX3NvdXJjZS5kZWNvZGVkU2l6ZSgp
ICYmICFjYW5Vc2VBc3luY0RlY29kaW5nRm9yTGFyZ2VJbWFnZXMoKSkKICAgICAgICAgbV9zb3Vy
Y2UuZGVzdHJveUluY29tcGxldGVEZWNvZGVkRGF0YSgpOwogCi0gICAgbV9jdXJyZW50RnJhbWVE
ZWNvZGluZ1N0YXR1cyA9IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpJbnZhbGlkOworICAg
IG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZDsK
ICAgICByZXR1cm4gbV9zb3VyY2UuZGF0YUNoYW5nZWQoZGF0YSgpLCBhbGxEYXRhUmVjZWl2ZWQp
OwogfQorICAgIAordm9pZCBCaXRtYXBJbWFnZTo6c2V0Q3VycmVudEZyYW1lRGVjb2RpbmdTdGF0
dXNJZk5lY2Vzc2FyeShEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKK3sKKyAgICAvLyBX
aGVuIG5ldyBkYXRhIGlzIHJlY2l2ZWQsIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgaXMg
c2V0IHRvIERlY29kaW5nU3RhdHVzOjpJbnZhbGlkCisgICAgLy8gdG8gZm9yY2UgZGVvZGluZyB0
aGUgZnJhbWUgd2hlbiBpdCdzIGRyYXduLiBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzIHNo
b3VsZCBub3QgYmUKKyAgICAvLyBjaGFuZ2VkIGluIHRoaXMgY2FzZSB0aWxsIGRyYXcoKSBpcyBj
YWxsZWQgYW5kIHNldHMgaXRzIHZhbHVlIHRvIERlY29kaW5nU3RhdHVzOjpEZWNvZGluZy4KKyAg
ICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyAhPSBEZWNvZGluZ1N0YXR1czo6RGVj
b2RpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVz
ID0gZGVjb2RpbmdTdGF0dXM7Cit9CiAKIE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFt
ZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkK
IHsKQEAgLTE5MiwxMyArMjAyLDEzIEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJh
dyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAKICAgICAg
ICAgLy8gSWYgdGhlIGN1cnJlbnQgZnJhbWUgaXMgaW5jb21wbGV0ZSwgYSBuZXcgcmVxdWVzdCBm
b3IgZGVjb2RpbmcgdGhpcyBmcmFtZSBoYXMgdG8gYmUgbWFkZSBldmVuIGlmCiAgICAgICAgIC8v
IGl0IGlzIGN1cnJlbnRseSBiZWluZyBkZWNvZGVkLiBOZXcgZGF0YSBtYXkgaGF2ZSBiZWVuIHJl
Y2VpdmVkIHNpbmNlIHRoZSBwcmV2aW91cyByZXF1ZXN0IHdhcyBtYWRlLgotICAgICAgICBpZiAo
KCFmcmFtZUlzQ29tcGF0aWJsZSAmJiAhZnJhbWVJc0JlaW5nRGVjb2RlZCkgfHwgbV9jdXJyZW50
RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCkgeworICAgICAgICBpZiAoKCFmcmFtZUlzQ29tcGF0aWJsZSAmJiAhZnJhbWVJc0JlaW5nRGVj
b2RlZCkgfHwgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBEZWNvZGluZ1N0YXR1czo6
SW52YWxpZCkgewogICAgICAgICAgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVw
IC0gdXJsOiAlcyBbcmVxdWVzdGluZyBsYXJnZSBhc3luYyBkZWNvZGluZ10iLCBfX0ZVTkNUSU9O
X18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAg
ICAgbV9zb3VyY2UucmVxdWVzdEZyYW1lQXN5bmNEZWNvZGluZ0F0SW5kZXgobV9jdXJyZW50RnJh
bWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIHNpemVGb3JEcmF3aW5nKTsKLSAgICAgICAg
ICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0
YXR1czo6RGVjb2Rpbmc7CisgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVz
ID0gRGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1f
Y3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPT0gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6
OkRlY29kaW5nKQorICAgICAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBE
ZWNvZGluZ1N0YXR1czo6RGVjb2RpbmcpCiAgICAgICAgICAgICByZXN1bHQgPSBJbWFnZURyYXdS
ZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZzsKIAogICAgICAgICBpZiAoIWZyYW1lSGFzRGVjb2Rl
ZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwg
bV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpKSB7
CkBAIC0yMzEsNyArMjQxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICAgICAgaWYg
KCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQu
CiAgICAgICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAg
ICAgIGlmIChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzICE9IEltYWdlRnJhbWU6OkRlY29k
aW5nU3RhdHVzOjpDb21wbGV0ZSkKKyAgICAgICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdT
dGF0dXMgIT0gRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKQogICAgICAgICAgICAgKyttX2RlY29k
ZUNvdW50Rm9yVGVzdGluZzsKICAgICB9CiAKQEAgLTM5MSw3ICs0MDEsNyBAQCBCaXRtYXBJbWFn
ZTo6U3RhcnRBbmltYXRpb25TdGF0dXMgQml0bWFwSW1hZ2U6OmludGVybmFsU3RhcnRBbmltYXRp
b24oKQogICAgICAgICAgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJs
OiAlcyBbY2FjaGVkRnJhbWVDb3VudCA9ICVsZCBuZXh0RnJhbWUgPSAlbGRdIiwgX19GVU5DVElP
Tl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCArK21fY2FjaGVk
RnJhbWVDb3VudCwgbmV4dEZyYW1lKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX3Nv
dXJjZS5yZXF1ZXN0RnJhbWVBc3luY0RlY29kaW5nQXRJbmRleChuZXh0RnJhbWUsIG1fY3VycmVu
dFN1YnNhbXBsaW5nTGV2ZWwpOwotICAgICAgICAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0
YXR1cyA9IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpEZWNvZGluZzsKKyAgICAgICAgICAg
IG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6RGVjb2Rpbmc7
CiAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVz
IFtyZXF1ZXN0aW5nIGFzeW5jIGRlY29kaW5nIGZvciBuZXh0RnJhbWUgPSAlbGRdIiwgX19GVU5D
VElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBuZXh0RnJh
bWUpOwogICAgICAgICB9CiAKQEAgLTQzOSwxMCArNDQ5LDExIEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmludGVybmFsQWR2YW5jZUFuaW1hdGlvbigpCiAKICAgICBkZXN0cm95RGVjb2RlZERhdGFJZk5l
Y2Vzc2FyeShmYWxzZSk7CiAKLSAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9
PSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6RGVjb2RpbmcpCi0gICAgICAgIG1fY3VycmVu
dEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChtX2N1cnJl
bnRGcmFtZSk7CisgICAgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29k
aW5nU3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgc2V0Q3VycmVudEZyYW1lRGVj
b2RpbmdTdGF0dXNJZk5lY2Vzc2FyeShkZWNvZGluZ1N0YXR1cyk7CisgICAgCiAgICAgaWYgKGlt
YWdlT2JzZXJ2ZXIoKSkKLSAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5pbWFnZUZyYW1lQXZhaWxh
YmxlKCp0aGlzLCBJbWFnZUFuaW1hdGluZ1N0YXRlOjpZZXMpOworICAgICAgICBpbWFnZU9ic2Vy
dmVyKCktPmltYWdlRnJhbWVBdmFpbGFibGUoKnRoaXMsIEltYWdlQW5pbWF0aW5nU3RhdGU6Olll
cywgbnVsbHB0ciwgZGVjb2RpbmdTdGF0dXMpOwogCiAgICAgTE9HKEltYWdlcywgIkJpdG1hcElt
YWdlOjolcyAtICVwIC0gdXJsOiAlcyBbbV9jdXJyZW50RnJhbWUgPSAlbGRdIiwgX19GVU5DVElP
Tl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX2N1cnJlbnRG
cmFtZSk7CiB9CkBAIC00OTcsMTQgKzUwOCwxNSBAQCB2b2lkIEJpdG1hcEltYWdlOjppbWFnZUZy
YW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgQVNTRVJUKGluZGV4ID09IG1f
Y3VycmVudEZyYW1lICYmICFtX2N1cnJlbnRGcmFtZSk7CiAgICAgaWYgKG1fc291cmNlLmlzQXN5
bmNEZWNvZGluZ1F1ZXVlSWRsZSgpKQogICAgICAgICBtX3NvdXJjZS5zdG9wQXN5bmNEZWNvZGlu
Z1F1ZXVlKCk7Ci0gICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPT0gSW1hZ2VG
cmFtZTo6RGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nKQotICAgICAgICBtX2N1cnJlbnRGcmFtZURl
Y29kaW5nU3RhdHVzID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9jdXJyZW50RnJhbWUp
OwogCi0gICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPT0gSW1hZ2VGcmFtZTo6
RGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKQorICAgIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3Rh
dHVzID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9jdXJyZW50RnJhbWUpOworICAgIHNl
dEN1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzSWZOZWNlc3NhcnkoZGVjb2RpbmdTdGF0dXMpOwor
ICAgIAorICAgIGlmIChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID09IERlY29kaW5nU3Rh
dHVzOjpDb21wbGV0ZSkKICAgICAgICAgKyttX2RlY29kZUNvdW50Rm9yVGVzdGluZzsKIAogICAg
IGlmIChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+aW1hZ2VGcmFt
ZUF2YWlsYWJsZSgqdGhpcywgSW1hZ2VBbmltYXRpbmdTdGF0ZTo6Tm8pOworICAgICAgICBpbWFn
ZU9ic2VydmVyKCktPmltYWdlRnJhbWVBdmFpbGFibGUoKnRoaXMsIEltYWdlQW5pbWF0aW5nU3Rh
dGU6Ok5vLCBudWxscHRyLCBkZWNvZGluZ1N0YXR1cyk7CiB9CiAKIHVuc2lnbmVkIEJpdG1hcElt
YWdlOjpkZWNvZGVDb3VudEZvclRlc3RpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNDRkZDc3MzdhNTliYTAyYmVkMDQy
MzEwMzI5MTljMTYyNGMzZDRlMy4uZGY5YmI3OGExZGIzNDgwN2VmZTY4ZDJhMDJjMTNmOTc3ZmM4
Y2MzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCkBAIC04NSw4ICs4NSw4IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNpemVSZXNwZWN0aW5n
T3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5zaXplUmVzcGVjdGluZ09yaWVu
dGF0aW9uKCk7IH0KICAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3NvdXJjZS5zaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsgfQogICAgIGJv
b2wgZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChz
aXplX3QgaW5kZXgsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZS5mcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0
aE9wdGlvbnNBdEluZGV4KGluZGV4LCBkZWNvZGluZ09wdGlvbnMpOyB9Ci0gICAgSW1hZ2VGcmFt
ZTo6RGVjb2RpbmdTdGF0dXMgZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5mcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChpbmRl
eCk7IH0KLSAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25z
dCB7IHJldHVybiBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChpbmRleCkgPT0gSW1hZ2VGcmFt
ZTo6RGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlOyB9CisgICAgRGVjb2RpbmdTdGF0dXMgZnJhbWVE
ZWNvZGluZ1N0YXR1c0F0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZS5mcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChpbmRleCk7IH0KKyAgICBib29sIGZyYW1lSXND
b21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBmcmFtZURlY29kaW5n
U3RhdHVzQXRJbmRleChpbmRleCkgPT0gRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlOyB9CiAgICAg
Ym9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsgfQogCiAgICAgYm9vbCBmcmFtZUhh
c0Z1bGxTaXplTmF0aXZlSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW1wbGluZ0xldmVsKSB7IHJldHVybiBtX3NvdXJjZS5mcmFtZUhhc0Z1bGxTaXplTmF0
aXZlSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsgfQpAQCAtMTkzLDYgKzE5
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclRpbWVyKCk7CiAgICAgdm9pZCBzdGFydFRp
bWVyKFNlY29uZHMgZGVsYXkpOwogICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKCk7Cisg
ICAgdm9pZCBzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29kaW5n
U3RhdHVzKTsKICAgICBib29sIGlzQml0bWFwSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIApA
QCAtMjAzLDcgKzIwNCw3IEBAIHByaXZhdGU6CiAKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWUg
eyAwIH07IC8vIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCiAg
ICAgU3Vic2FtcGxpbmdMZXZlbCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsIHsgU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCB9OwotICAgIEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIG1fY3Vy
cmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgeyBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6SW52
YWxpZCB9OworICAgIERlY29kaW5nU3RhdHVzIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMg
eyBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4g
bV9mcmFtZVRpbWVyOwogICAgIFJlcGV0aXRpb25Db3VudCBtX3JlcGV0aXRpb25zQ29tcGxldGUg
eyBSZXBldGl0aW9uQ291bnROb25lIH07IC8vIEhvdyBtYW55IHJlcGV0aXRpb25zIHdlJ3ZlIGZp
bmlzaGVkLgogICAgIE1vbm90b25pY1RpbWUgbV9kZXNpcmVkRnJhbWVTdGFydFRpbWU7IC8vIFRo
ZSBzeXN0ZW0gdGltZSBhdCB3aGljaCB3ZSBob3BlIHRvIHNlZSB0aGUgbmV4dCBjYWxsIHRvIHN0
YXJ0QW5pbWF0aW9uKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWUuY3BwCmluZGV4IDhlNzhhNjZlMzMyMmY0MTQ4N2I5ZDA1NTc0YTVkYzMxOWM3MmEx
OTkuLjgxNjU0ODZiNjQwZjFjODAwNzQzYmJlY2ExZjdjNDBmZGUxYWZmYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCkBAIC03Nyw3ICs3
Nyw3IEBAIHZvaWQgSW1hZ2VGcmFtZTo6c2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXMg
ZGVjb2RpbmdTdGF0dXMpCiAgICAgbV9kZWNvZGluZ1N0YXR1cyA9IGRlY29kaW5nU3RhdHVzOwog
fQogCi1JbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1cyBJbWFnZUZyYW1lOjpkZWNvZGluZ1N0YXR1
cygpIGNvbnN0CitEZWNvZGluZ1N0YXR1cyBJbWFnZUZyYW1lOjpkZWNvZGluZ1N0YXR1cygpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKG1fZGVjb2RpbmdTdGF0dXMgIT0gRGVjb2RpbmdTdGF0dXM6OkRl
Y29kaW5nKTsKICAgICByZXR1cm4gbV9kZWNvZGluZ1N0YXR1czsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCAyMTJhMmNiN2ZiOWM1MmE1NmQ4
MGY0NzVkZDQxNTg3YjU0ZmYzM2YyLi4xODIxODYzNjNjNzliYzcyOTc5OTlhMzllMjAwZTIwMTgy
MzY4OGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZS5oCkBAIC0zOSw3ICszOSw2IEBAIGNsYXNzIEltYWdlRnJhbWUgewogICAgIGZyaWVuZCBjbGFz
cyBJbWFnZUZyYW1lQ2FjaGU7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBDYWNoaW5nIHsgTWV0
YWRhdGEsIE1ldGFkYXRhQW5kSW1hZ2UgfTsKLSAgICBlbnVtIGNsYXNzIERlY29kaW5nU3RhdHVz
IHsgSW52YWxpZCwgUGFydGlhbCwgQ29tcGxldGUsIERlY29kaW5nIH07CiAKICAgICBJbWFnZUZy
YW1lKCk7CiAgICAgSW1hZ2VGcmFtZShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikgeyBvcGVyYXRv
cj0ob3RoZXIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUZyYW1lQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VGcmFtZUNhY2hlLmNwcAppbmRleCA4YzMzNmY0MWJlOTdmODFiY2IxNjRiNjAyMTM1NWZi
OTE1ZTRhNWQyLi5iNTY0Njk4ZWM4MjViYjM2NWI5MDVlZWMxMGE5NGU3N2Q0M2U3ZDU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNo
ZS5jcHAKQEAgLTE5MCwxOSArMTkwLDE5IEBAIHZvaWQgSW1hZ2VGcmFtZUNhY2hlOjpzZXROYXRp
dmVJbWFnZShOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlKQogCiAgICAgZnJhbWUubV9uYXRp
dmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOwogCi0gICAgZnJhbWUubV9kZWNvZGluZ1N0
YXR1cyA9IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsKKyAgICBmcmFtZS5t
X2RlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlOwogICAgIGZyYW1lLm1f
c2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShmcmFtZS5tX25hdGl2ZUltYWdlKTsKICAgICBmcmFtZS5t
X2hhc0FscGhhID0gbmF0aXZlSW1hZ2VIYXNBbHBoYShmcmFtZS5tX25hdGl2ZUltYWdlKTsKIH0K
IAotdm9pZCBJbWFnZUZyYW1lQ2FjaGU6OmNhY2hlTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lOjpEZWNvZGlu
Z1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKK3ZvaWQgSW1hZ2VGcmFtZUNhY2hlOjpjYWNoZU1ldGFk
YXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCwgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgQVNTRVJUKGluZGV4IDwg
bV9mcmFtZXMuc2l6ZSgpKTsKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzW2luZGV4
XTsKIAogICAgIEFTU0VSVChpc0RlY29kZXJBdmFpbGFibGUoKSk7Ci0gICAgaWYgKGRlY29kaW5n
U3RhdHVzID09IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpJbnZhbGlkKQotICAgICAgICBm
cmFtZS5tX2RlY29kaW5nU3RhdHVzID0gbV9kZWNvZGVyLT5mcmFtZUlzQ29tcGxldGVBdEluZGV4
KGluZGV4KSA/IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSA6IEltYWdlRnJh
bWU6OkRlY29kaW5nU3RhdHVzOjpQYXJ0aWFsOworICAgIGlmIChkZWNvZGluZ1N0YXR1cyA9PSBE
ZWNvZGluZ1N0YXR1czo6SW52YWxpZCkKKyAgICAgICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9
IG1fZGVjb2Rlci0+ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkgPyBEZWNvZGluZ1N0YXR1
czo6Q29tcGxldGUgOiBEZWNvZGluZ1N0YXR1czo6UGFydGlhbDsKICAgICBlbHNlCiAgICAgICAg
IGZyYW1lLm1fZGVjb2RpbmdTdGF0dXMgPSBkZWNvZGluZ1N0YXR1czsKIApAQCAtMjI0LDcgKzIy
NCw3IEBAIHZvaWQgSW1hZ2VGcmFtZUNhY2hlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtCiAgICAgICAgIGZyYW1lLm1fZHVyYXRpb24g
PSBtX2RlY29kZXItPmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KTsKIH0KIAotdm9pZCBJbWFn
ZUZyYW1lQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0
aXZlSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVs
LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywgSW1hZ2VGcmFtZTo6RGVj
b2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2b2lkIEltYWdlRnJhbWVDYWNoZTo6Y2FjaGVO
YXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0
aW9ucyYgZGVjb2RpbmdPcHRpb25zLCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKIHsK
ICAgICBBU1NFUlQoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkpOwogICAgIEltYWdlRnJhbWUmIGZy
YW1lID0gbV9mcmFtZXNbaW5kZXhdOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgSW1hZ2VGcmFt
ZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUlt
YWdlLCBzaXplCiAgICAgZGVjb2RlZFNpemVJbmNyZWFzZWQoZnJhbWUuZnJhbWVCeXRlcygpKTsK
IH0KIAotdm9pZCBJbWFnZUZyYW1lQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMo
TmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRp
b25zLCBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKK3ZvaWQgSW1h
Z2VGcmFtZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRy
JiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywgRGVjb2RpbmdT
dGF0dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgaWYgKCFpc0RlY29kZXJBdmFpbGFibGUoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgSW1hZ2VGcmFtZUNhY2hl
OjpyZXF1ZXN0RnJhbWVBc3luY0RlY29kaW5nQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nCiAgICAgICAgIHN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKCk7CiAgICAgCiAgICAgQVNTRVJU
KGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpKTsKLSAgICBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1
cyBkZWNvZGluZ1N0YXR1cyA9IG1fZGVjb2Rlci0+ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRl
eCkgPyBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUgOiBJbWFnZUZyYW1lOjpE
ZWNvZGluZ1N0YXR1czo6UGFydGlhbDsKKyAgICBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1
cyA9IG1fZGVjb2Rlci0+ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkgPyBEZWNvZGluZ1N0
YXR1czo6Q29tcGxldGUgOiBEZWNvZGluZ1N0YXR1czo6UGFydGlhbDsKIAogICAgIExPRyhJbWFn
ZXMsICJJbWFnZUZyYW1lQ2FjaGU6OiVzIC0gJXAgLSB1cmw6ICVzIFtlbnF1ZXVpbmcgZnJhbWUg
JWxkIGZvciBkZWNvZGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4KTsKICAgICBtX2ZyYW1lUmVxdWVzdFF1ZXVlLmVucXVl
dWUoeyBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgc2l6ZUZvckRyYXdpbmcsIGRlY29kaW5nU3Rh
dHVzIH0pOwpAQCAtNDk5LDkgKzQ5OSw5IEBAIGJvb2wgSW1hZ2VGcmFtZUNhY2hlOjpmcmFtZUlz
QmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KHNpemVfCiAgICAg
cmV0dXJuIGl0ICE9IG1fZnJhbWVDb21taXRRdWV1ZS5lbmQoKTsKIH0KIAotSW1hZ2VGcmFtZTo6
RGVjb2RpbmdTdGF0dXMgSW1hZ2VGcmFtZUNhY2hlOjpmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRl
eChzaXplX3QgaW5kZXgpCitEZWNvZGluZ1N0YXR1cyBJbWFnZUZyYW1lQ2FjaGU6OmZyYW1lRGVj
b2RpbmdTdGF0dXNBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gZnJhbWVNZXRh
ZGF0YUF0SW5kZXg8SW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM+KGluZGV4LCAoJkltYWdlRnJh
bWU6OmRlY29kaW5nU3RhdHVzKSk7CisgICAgcmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4PERl
Y29kaW5nU3RhdHVzPihpbmRleCwgKCZJbWFnZUZyYW1lOjpkZWNvZGluZ1N0YXR1cykpOwogfQog
CiBib29sIEltYWdlRnJhbWVDYWNoZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2Fj
aGUuaAppbmRleCBjNzdiOTI3M2M0N2QzODE4ODk2MTM2ODdkZjI5MzMwMGU4Yjg1MjJjLi42NDlh
YmZjMjM2MmM4NDVlM2JjMWFmNzcwNDhjMzQwNWI1YjllNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaApAQCAtOTMsNyArOTMs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBJbWFnZUZyYW1lIG1ldGFkYXRhIHdoaWNoIGRvZXMgbm90
IHJlcXVpcmUgY2FjaGluZyB0aGUgSW1hZ2VGcmFtZS4KICAgICBib29sIGZyYW1lSXNCZWluZ0Rl
Y29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgoc2l6ZV90LCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmKTsKLSAgICBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1cyBmcmFtZURlY29k
aW5nU3RhdHVzQXRJbmRleChzaXplX3QpOworICAgIERlY29kaW5nU3RhdHVzIGZyYW1lRGVjb2Rp
bmdTdGF0dXNBdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChz
aXplX3QpOwogICAgIGJvb2wgZnJhbWVIYXNJbWFnZUF0SW5kZXgoc2l6ZV90KTsKICAgICBib29s
IGZyYW1lSGFzRnVsbFNpemVOYXRpdmVJbWFnZUF0SW5kZXgoc2l6ZV90LCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+Jik7CkBAIC0xMzEsOSArMTMxLDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRlY29kZWRTaXplUmVzZXQodW5zaWduZWQgZGVjb2RlZFNpemUpOwogCiAgICAg
dm9pZCBzZXROYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciYmKTsKLSAgICB2b2lkIGNhY2hlTWV0
YWRhdGFBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZTo6RGVjb2Rp
bmdTdGF0dXMgPSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7Ci0gICAgdm9p
ZCBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChOYXRpdmVJbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYsIEltYWdlRnJhbWU6OkRlY29kaW5n
U3RhdHVzID0gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkludmFsaWQpOwotICAgIHZvaWQg
Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmLCBzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYsIEltYWdlRnJhbWU6OkRlY29k
aW5nU3RhdHVzKTsKKyAgICB2b2lkIGNhY2hlTWV0YWRhdGFBdEluZGV4KHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7Cisg
ICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChOYXRpdmVJbWFnZVB0ciYmLCBzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVz
ID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpOworICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZUF0
SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVzKTsKIAogICAgIFJlZjxXb3JrUXVl
dWU+IGRlY29kaW5nUXVldWUoKTsKIApAQCAtMTUxLDcgKzE1MSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHNpemVfdCBpbmRleDsKICAgICAgICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xl
dmVsOwogICAgICAgICBEZWNvZGluZ09wdGlvbnMgZGVjb2RpbmdPcHRpb25zOwotICAgICAgICBJ
bWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1czsKKyAgICAgICAgRGVjb2Rp
bmdTdGF0dXMgZGVjb2RpbmdTdGF0dXM7CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJ
bWFnZUZyYW1lUmVxdWVzdCYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBpbmRleCA9PSBvdGhlci5pbmRleCAmJiBzdWJzYW1wbGluZ0xldmVsID09IG90aGVyLnN1
YnNhbXBsaW5nTGV2ZWwgJiYgZGVjb2RpbmdPcHRpb25zID09IG90aGVyLmRlY29kaW5nT3B0aW9u
cyAmJiBkZWNvZGluZ1N0YXR1cyA9PSBvdGhlci5kZWNvZGluZ1N0YXR1czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAppbmRleCA4MDA2MmNh
ZDFlMGU3NzlmNzJhNzY1ZGM3MDc4ZjM2YjM5ZjAwN2FmLi5hMDY4NTFlYzFlNzZlYWE2ZDc4YTc1
YmY0OWVjNTNiMmRlMjQ5MDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VPYnNlcnZlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBj
YW5EZXN0cm95RGVjb2RlZERhdGEoY29uc3QgSW1hZ2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBj
b25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0cikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwg
Y29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVj
b2RpbmdTdGF0dXM6OkludmFsaWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZEluUmVj
dChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyKSA9IDA7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aAppbmRleCBiMzZjNmFhMzgzOTEyMmUxZDcyMjY2ZGYwMjU5YjQ3Yzc2ZDJkMDc2Li5mNGRkNGQ4
ODg0NGQ1MjUzZjY5OTk3M2IzNzhhMGVlMzQwOTdhNDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gSW1hZ2VGcmFtZSBtZXRhZGF0YSB3aGljaCBkb2VzIG5vdCByZXF1aXJlIGNh
Y2hpbmcgdGhlIEltYWdlRnJhbWUuCiAgICAgYm9vbCBmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXND
b21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJiBkZWNvZGluZ09wdGlvbnMpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+ZnJhbWVJc0Jl
aW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChpbmRleCwgZGVjb2Rp
bmdPcHRpb25zKTsgfQotICAgIEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIGZyYW1lRGVjb2Rp
bmdTdGF0dXNBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9mcmFtZUNhY2hlLT5mcmFt
ZURlY29kaW5nU3RhdHVzQXRJbmRleChpbmRleCk7IH0KKyAgICBEZWNvZGluZ1N0YXR1cyBmcmFt
ZURlY29kaW5nU3RhdHVzQXRJbmRleChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fZnJhbWVDYWNo
ZS0+ZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgoaW5kZXgpOyB9CiAgICAgYm9vbCBmcmFtZUhh
c0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+ZnJhbWVI
YXNBbHBoYUF0SW5kZXgoaW5kZXgpOyB9CiAgICAgYm9vbCBmcmFtZUhhc0ltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+ZnJhbWVIYXNJbWFnZUF0SW5kZXgo
aW5kZXgpOyB9CiAgICAgYm9vbCBmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgc3Vic2Ft
cGxpbmdMZXZlbCkgeyByZXR1cm4gbV9mcmFtZUNhY2hlLT5mcmFtZUhhc0Z1bGxTaXplTmF0aXZl
SW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oCmluZGV4IGJhN2IyNTRlZWY0MmYxY2M5
NGM1ZjMyZWE2NmZhNjhiNGE2ZTliZmMuLjBmYmI5OWUzM2NmYzhjYTdhOGU4Njc5MmU5NWRjNGZl
MjEwNzc2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5
cGVzLmgKQEAgLTc4LDYgKzc4LDEzIEBAIGVudW0gY2xhc3MgRW5jb2RlZERhdGFTdGF0dXMgewog
ICAgIENvbXBsZXRlCiB9OwogCitlbnVtIGNsYXNzIERlY29kaW5nU3RhdHVzIHsKKyAgICBJbnZh
bGlkLAorICAgIFBhcnRpYWwsCisgICAgQ29tcGxldGUsCisgICAgRGVjb2RpbmcKK307CisKIGVu
dW0gY2xhc3MgSW1hZ2VEcmF3UmVzdWx0IHsKICAgICBEaWROb3RoaW5nLAogICAgIERpZFJlcXVl
c3REZWNvZGluZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDhkNjhhNDAwMDhhNjQ1
OThhOWQ3YzY0ZDgzZTk1YTUwOTMwOGJiYTIuLjAxNjgzNDMzNDUzOTk0YTdlOWI0ZmIyNzlkZTUw
MGUzODZlMjQxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcApAQCAtODEsNyArODEsNyBA
QCBib29sIEJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVAoYm9vbCBvbmx5U2l6ZSkKICAgICAgICAg
aWYgKCFtX2J1ZmZlci0+aW5pdGlhbGl6ZShtX3BhcmVudC0+c2l6ZSgpLCBtX3BhcmVudC0+cHJl
bXVsdGlwbHlBbHBoYSgpKSkKICAgICAgICAgICAgIHJldHVybiBtX3BhcmVudC0+c2V0RmFpbGVk
KCk7IC8vIFVuYWJsZSB0byBhbGxvY2F0ZS4KIAotICAgICAgICBtX2J1ZmZlci0+c2V0RGVjb2Rp
bmdTdGF0dXMoSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwpOworICAgICAgICBt
X2J1ZmZlci0+c2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwpOwogICAg
ICAgICBtX2J1ZmZlci0+c2V0SGFzQWxwaGEoZmFsc2UpOwogCiAgICAgICAgIGlmICghbV9pc1Rv
cERvd24pCkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1Q
KGJvb2wgb25seVNpemUpCiAgICAgfQogCiAgICAgLy8gRG9uZSEKLSAgICBtX2J1ZmZlci0+c2V0
RGVjb2RpbmdTdGF0dXMoSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsKKyAg
ICBtX2J1ZmZlci0+c2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBm
ZDBjYzc1MDk5ZjViYTQyZGU5OTljODcyMDE0MzZkMDUzMzk5N2JlLi45Y2FjMTEzOGZmYWE4NTNl
NjIzOGJiMzcyZWRkOGZhZjlkZGM4MzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApA
QCAtMjQ3LDcgKzI0Nyw3IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKHVu
c2lnbmVkIGZyYW1lSW5kZXgsIHVuc2lnbmVkIGZyYW1lRHVyYXRpb24sCiAgICAgaWYgKGJ1ZmZl
ci5pc0ludmFsaWQoKSAmJiAhaW5pdEZyYW1lQnVmZmVyKGZyYW1lSW5kZXgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7IC8vIGluaXRGcmFtZUJ1ZmZlcigpIGhhcyBhbHJlYWR5IGNhbGxlZCBzZXRG
YWlsZWQoKS4KIAotICAgIGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhJbWFnZUZyYW1lOjpEZWNv
ZGluZ1N0YXR1czo6Q29tcGxldGUpOworICAgIGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhEZWNv
ZGluZ1N0YXR1czo6Q29tcGxldGUpOwogICAgIGJ1ZmZlci5zZXREdXJhdGlvbihmcmFtZUR1cmF0
aW9uKTsKICAgICBidWZmZXIuc2V0RGlzcG9zYWxNZXRob2QoZGlzcG9zYWxNZXRob2QpOwogCkBA
IC00MDEsNyArNDAxLDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcih1
bnNpZ25lZCBmcmFtZUluZGV4KQogICAgIGJ1ZmZlci0+YmFja2luZ1N0b3JlKCktPnNldEZyYW1l
UmVjdChJbnRSZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApKTsKIAog
ICAgIC8vIFVwZGF0ZSBvdXIgc3RhdHVzIHRvIGJlIHBhcnRpYWxseSBjb21wbGV0ZS4KLSAgICBi
dWZmZXItPnNldERlY29kaW5nU3RhdHVzKEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpQYXJ0
aWFsKTsKKyAgICBidWZmZXItPnNldERlY29kaW5nU3RhdHVzKERlY29kaW5nU3RhdHVzOjpQYXJ0
aWFsKTsKIAogICAgIC8vIFJlc2V0IHRoZSBhbHBoYSBwaXhlbCB0cmFja2VyIGZvciB0aGlzIGZy
YW1lLgogICAgIG1fY3VycmVudEJ1ZmZlclNhd0FscGhhID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCA1NTFhZjZlNDQzMTNlMTA2Y2Q2YzYxMTZmZmZhYjAwMTNl
ZDRiYzUwLi43NGNhMTExMzk5YTM2YzI3ZTI3OThlOThlMTFmOTM2ZDVlZWI2YjA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTYwOCw3ICs2MDgsNyBAQCBib29sIEpQRUdJ
bWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcygpCiAgICAgaWYgKGJ1ZmZlci5pc0ludmFsaWQo
KSkgewogICAgICAgICBpZiAoIWJ1ZmZlci5pbml0aWFsaXplKHNjYWxlZFNpemUoKSwgbV9wcmVt
dWx0aXBseUFscGhhKSkKICAgICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKLSAgICAgICAg
YnVmZmVyLnNldERlY29kaW5nU3RhdHVzKEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpQYXJ0
aWFsKTsKKyAgICAgICAgYnVmZmVyLnNldERlY29kaW5nU3RhdHVzKERlY29kaW5nU3RhdHVzOjpQ
YXJ0aWFsKTsKICAgICAgICAgLy8gVGhlIGJ1ZmZlciBpcyB0cmFuc3BhcmVudCBvdXRzaWRlIHRo
ZSBkZWNvZGVkIGFyZWEgd2hpbGUgdGhlIGltYWdlIGlzCiAgICAgICAgIC8vIGxvYWRpbmcuIFRo
ZSBjb21wbGV0ZWQgaW1hZ2Ugd2lsbCBiZSBtYXJrZWQgZnVsbHkgb3BhcXVlIGluIGpwZWdDb21w
bGV0ZSgpLgogICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEodHJ1ZSk7CkBAIC02NTIsNyArNjUy
LDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpqcGVnQ29tcGxldGUoKQogICAgIC8vIGVtcHR5
LgogICAgIEltYWdlRnJhbWUmIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKICAgICBi
dWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwotICAgIGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhJ
bWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpOworICAgIGJ1ZmZlci5zZXREZWNv
ZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpOwogfQogCiB2b2lkIEpQRUdJbWFn
ZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMmZiNmM0NDBkNDM2ZGFiOTYwZGQ4YTAwMGU5
YTJjZWNkYWM5MzU0Yi4uZWNkYTE4ZGY3YmU3YWQyMWI2MmQxNTcyN2FkOGY4MjUyYWIwZjcyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIFBO
R0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5z
aWduZWQgcm93SW5kZXgsCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBidWZm
ZXIuc2V0RGVjb2RpbmdTdGF0dXMoSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwp
OworICAgICAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OlBhcnRp
YWwpOwogICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOwogCiAjaWYgRU5BQkxFKEFQ
TkcpCkBAIC01NTgsNyArNTU4LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnBuZ0NvbXBsZXRl
KCkKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIW1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkp
Ci0gICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5maXJzdCgpLnNldERlY29kaW5nU3RhdHVzKElt
YWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSk7CisgICAgICAgIG1fZnJhbWVCdWZm
ZXJDYWNoZS5maXJzdCgpLnNldERlY29kaW5nU3RhdHVzKERlY29kaW5nU3RhdHVzOjpDb21wbGV0
ZSk7CiB9CiAKIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgdW5z
aWduZWQgaGFsdEF0RnJhbWUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpAQCAtODI1LDcgKzgyNSw3
IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgSW1hZ2VGcmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlW21fY3VycmVu
dEZyYW1lXTsKLSAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoSW1hZ2VGcmFtZTo6RGVjb2Rp
bmdTdGF0dXM6OkNvbXBsZXRlKTsKKyAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2Rp
bmdTdGF0dXM6OkNvbXBsZXRlKTsKIAogICAgIHBuZ19ieXRlcCBpbnRlcmxhY2VCdWZmZXIgPSBt
X3JlYWRlci0+aW50ZXJsYWNlQnVmZmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwCmluZGV4IDQ0NTUxZGNiMDBjNGU5Y2Q1NzZhZDE1NzA4ZDhkNDIzNTRhN2RiMDAuLmIzYTYz
MmZhNzEzYTIzNzQxNjI4OTE3MGRjNjU4ODcyYTNkYTZlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wgV0VCUEltYWdlRGVjb2Rlcjo6
ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wpCiAgICAgaWYgKGJ1ZmZlci5pc0ludmFsaWQoKSkg
ewogICAgICAgICBpZiAoIWJ1ZmZlci5pbml0aWFsaXplKHNpemUoKSwgbV9wcmVtdWx0aXBseUFs
cGhhKSkKICAgICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKLSAgICAgICAgYnVmZmVyLnNl
dERlY29kaW5nU3RhdHVzKEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpQYXJ0aWFsKTsKKyAg
ICAgICAgYnVmZmVyLnNldERlY29kaW5nU3RhdHVzKERlY29kaW5nU3RhdHVzOjpQYXJ0aWFsKTsK
ICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKG1faGFzQWxwaGEpOwogICAgIH0KIApAQCAtMTM3
LDcgKzEzNyw3IEBAIGJvb2wgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUs
IGJvb2wpCiAKICAgICBzd2l0Y2ggKFdlYlBJVXBkYXRlKG1fZGVjb2RlciwgZGF0YUJ5dGVzLCBk
YXRhU2l6ZSkpIHsKICAgICBjYXNlIFZQOF9TVEFUVVNfT0s6Ci0gICAgICAgIGJ1ZmZlci5zZXRE
ZWNvZGluZ1N0YXR1cyhJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpOworICAg
ICAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsK
ICAgICAgICAgY2xlYXIoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBWUDhfU1RB
VFVTX1NVU1BFTkRFRDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCmluZGV4IDAxZWQwMDU5Njc1ODhkNjIxZTUzOWQzYzM5MTdkMjdkYjMz
M2VmNWYuLmUzOTY0MGIzNjAzNWU1MjU2MjMzMDg0MWRiOTgxNmNhMGNiZTlmYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAt
MzI0LDggKzMyNCw2IEBAIERlY29kaW5nTW9kZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZGVjb2Rp
bmdNb2RlRm9ySW1hZ2VEcmF3KGNvbnN0IEltYWdlJiBpbWFnZSwKICAgICBpZiAoSU9TQXBwbGlj
YXRpb246OmlzSUJvb2tzU3Rvcnl0aW1lKCkpCiAgICAgICAgIHJldHVybiBEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzOwogI2VuZGlmCi0gICAgaWYgKGRvY3VtZW50KCkuaXNJbWFnZURvY3VtZW50
KCkpCi0gICAgICAgIHJldHVybiBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzOwogICAgIGlmICgh
c2V0dGluZ3MoKS5sYXJnZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXM7CiAgICAgaWYgKCFiaXRtYXBJbWFnZS5jYW5V
c2VBc3luY0RlY29kaW5nRm9yTGFyZ2VJbWFnZXMoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316193</attachid>
            <date>2017-07-22 04:34:29 -0700</date>
            <delta_ts>2017-07-22 05:12:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174230-20170722043426.patch</filename>
            <type>text/plain</type>
            <size>33380</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE3MDhlNzYzMDFhNjVj
MzYwNjUzNDI0YzdmN2M0MDAyZTg0MDVjMC4uNjEwZmYyZDc4OWEzMDJmNjVlMTAwZjdjNjc5YjFl
OTkxYTViMzA0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE3LTA3LTIyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVT
U0lPTihyMjE5MDQ1KTogQSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG1heSBub3QgYmUgcmVwYWlu
dGVkIHdoZW4gaXRzIGNvbXBsZXRlIGZyYW1lIGZpbmlzaGVzIGRlY29kaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgQmVjYXVzZSBvZiByMjE5MDQ1LCB3
ZSBub3cgb25seSByZXBhaW50IHRoZSBDYWNoZWRJbWFnZUNsaW5ldHMgd2hpY2ggdHJpZWQKKyAg
ICAgICAgdG8gZHJhdyB0aGUgaW1hZ2UgYnV0IHRoZXkgY291bGQgbm90IGJlY2F1c2UgdGhleSBo
YXZlIHRvIHdhaXQgZm9yIHRoZSBpbWFnZQorICAgICAgICBkZWNvZGluZyB0byBmaW5pc2guIFRo
aXMgd2FzIGRvbmUgYnkga2VlcGluZyBhIEhhc2hTZXQgb2YgdGhlc2UgY2xpZW50cyAKKyAgICAg
ICAgYW5kIG1ha2UgQ2FjaGVkSW1hZ2Ugb3duIGl0LiBUaGlzIEhhc2hTZXQgaXMgY2xlYXJlZCBv
bmNlIHRoZSBpbWFnZSBmcmFtZQorICAgICAgICBmaW5pc2hlcyBkZWNvZGluZyBhbmQgYWxsIHRo
ZSB3YWl0ZWQgY2xpZW50cyBhcmUgcmVwYWludGVkLgorCisgICAgICAgIEJ1dCBNdWx0aXBsZSBh
c3luY2hyb25vdXMgaW1hZ2UgZGVjb2RpbmcgcmVxdWVzdHMgYXJlIGFsbG93ZWQgZm9yIHRoZSBz
YW1lCisgICAgICAgIGZyYW1lIGlmIG5ldyBkYXRhIGlzIGFkZGVkIHRvIHRoZSBpbWFnZSBzb3Vy
Y2UuIElmIHdlIHRyaWVkIHRvIGRyYXcgdGhlIAorICAgICAgICBzYW1lIGltYWdlIHR3aWNlIGJl
Zm9yZSBpdCBmaW5pc2hlcyBkZWNvZGluZyB0aGUgZmlyc3QgcmVxdWVzdCwgd2Ugd2lsbAorICAg
ICAgICBub3QgYmUgdG8gcmVjb3JkIHRoaXMgc2Vjb25kIHJlcXVlc3Qgc2luY2UgdGhlIEhhc2hT
ZXQgd2lsbCBub3QgYWRkIHRoZQorICAgICAgICBzYW1lIGNsaWVudCB0d2ljZS4gV2hlbiBoZSBz
ZWNvbmQgcmVxdWVzdCBmaW5pc2hlcyBkZWNvZGluZywgQ2FjaGVkSW1hZ2UKKyAgICAgICAgd2ls
bCBub3QgcmVwYWludCBhbnkgY2xpZW50IHNpbmNlIGl0cyBIYXNoU2V0IGlzIGVtcHR5LgorCisg
ICAgICAgIFRvIGZpeCB0aGlzIHByb2JsZW0gd2UgY2FuIGRvIHRoZSBmb2xsb3dpbmcuIFdoZW4g
YW4gaW1hZ2UgZnJhbWUgZmluaXNoZXMKKyAgICAgICAgZGVjb2RpbmcsIENhY2hlZEltYWdlIHdp
bGwga2VlcCBpdHMgSGFzaFNldCBvZiBwZW5kaW5nIGRyYXdpbmcgY2xpZW50cyBhcworICAgICAg
ICBsb25nIGFzIHRoZSBpbWFnZSBmcmFtZSBpcyBhIHBhcnRpYWxseSBsb2FkZWQgZnJhbWUuCisK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmltYWdlRnJhbWVBdmFpbGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmltYWdlRnJhbWVBdmFpbGFibGUpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRh
dGFDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzZXRDdXJyZW50RnJh
bWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjppbnRlcm5hbFN0YXJ0
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFu
Y2VBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmltYWdlRnJhbWVB
dmFpbGFibGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6ZGVjb2RpbmdTdGF0dXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaDogTW92ZSBEZWNvZGluZ1N0YXR1cyBvdXQgb2YgdGhp
cyBjbGFzcworICAgICAgICB0byBJbWFnZVR5cGVzLmggdG8gYXZvaWQgYWRkaW5nIG90aGVyIGhl
YWRlciBmaWxlcyB0byBJbWFnZU9idnNldmVyLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUZyYW1lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hl
OjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lQ2FjaGU6OmNh
Y2hlTWV0YWRhdGFBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6
Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNh
Y2hlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVDYWNoZTo6cmVxdWVzdEZyYW1lQXN5bmNEZWNvZGluZ0F0SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
ZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlVHlwZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OmRlY29k
ZUJNUCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpvdXRwdXRTY2FubGlu
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6anBlZ0NvbXBsZXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cG5nQ29tcGxldGUpOgorICAgICAgICAo
V2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmRlY29kaW5nTW9kZUZvckltYWdlRHJhdyk6CisKIDIwMTctMDctMjEgIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJvdW5kLXRyaXBwaW5n
IHN0cm9rZS13aWR0aCBzdHlsZXMgdGhyb3VnaCBnZXRDb21wdXRlZFN0eWxlIGNhdXNlIHRoZSB0
ZXh0IHRvIGdhaW4gYSBzdHJva2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcAppbmRleCA5NzAyNmU2ZjQ1N2Y0YjNiYzYxYmYwMTk1NWQzMDAzYjQyZGZhZTk0
Li40MTNmMDQxNGI3MzczODI3NTJkMTFjNmVkZGFkYzNhYTMyYzZkMzhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTM3NCwxMCArMzc0LDEwIEBA
IGJvb2wgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmNhbkRlc3Ryb3lEZWNvZGVk
RGF0YShjb25zdCBJbWFnZSYgaW1hZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ2Fj
aGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmltYWdlRnJhbWVBdmFpbGFibGUoY29uc3Qg
SW1hZ2UmIGltYWdlLCBJbWFnZUFuaW1hdGluZ1N0YXRlIGFuaW1hdGluZ1N0YXRlLCBjb25zdCBJ
bnRSZWN0KiBjaGFuZ2VSZWN0KQordm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZl
cjo6aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYgaW1hZ2UsIEltYWdlQW5pbWF0aW5n
U3RhdGUgYW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QsIERlY29kaW5n
U3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1f
Y2FjaGVkSW1hZ2VzKQotICAgICAgICBjYWNoZWRJbWFnZS0+aW1hZ2VGcmFtZUF2YWlsYWJsZShp
bWFnZSwgYW5pbWF0aW5nU3RhdGUsIGNoYW5nZVJlY3QpOworICAgICAgICBjYWNoZWRJbWFnZS0+
aW1hZ2VGcmFtZUF2YWlsYWJsZShpbWFnZSwgYW5pbWF0aW5nU3RhdGUsIGNoYW5nZVJlY3QsIGRl
Y29kaW5nU3RhdHVzKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZl
cjo6Y2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3Qp
CkBAIC01NDgsNyArNTQ4LDcgQEAgYm9vbCBDYWNoZWRJbWFnZTo6Y2FuRGVzdHJveURlY29kZWRE
YXRhKGNvbnN0IEltYWdlJiBpbWFnZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDYWNo
ZWRJbWFnZTo6aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYgaW1hZ2UsIEltYWdlQW5p
bWF0aW5nU3RhdGUgYW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QpCit2
b2lkIENhY2hlZEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiBpbWFnZSwg
SW1hZ2VBbmltYXRpbmdTdGF0ZSBhbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdl
UmVjdCwgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgaWYgKCZpbWFnZSAh
PSBtX2ltYWdlKQogICAgICAgICByZXR1cm47CkBAIC01NjcsNyArNTY3LDggQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYgaW1hZ2UsIEltYWdlQW5p
bWF0aW5nU3RhdGUgYW4KICAgICBpZiAodmlzaWJsZVN0YXRlID09IFZpc2libGVJblZpZXdwb3J0
U3RhdGU6Ok5vICYmIGFuaW1hdGluZ1N0YXRlID09IEltYWdlQW5pbWF0aW5nU3RhdGU6OlllcykK
ICAgICAgICAgbV9pbWFnZS0+c3RvcEFuaW1hdGlvbigpOwogCi0gICAgbV9wZW5kaW5nSW1hZ2VE
cmF3aW5nQ2xpZW50cy5jbGVhcigpOworICAgIGlmIChkZWNvZGluZ1N0YXR1cyAhPSBEZWNvZGlu
Z1N0YXR1czo6UGFydGlhbCkKKyAgICAgICAgbV9wZW5kaW5nSW1hZ2VEcmF3aW5nQ2xpZW50cy5j
bGVhcigpOwogfQogCiB2b2lkIENhY2hlZEltYWdlOjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdl
JiBpbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKaW5kZXggZjA5NWFjMjI4MDE1YWVkN2UxOTlmZTRkZjlkN2Y1MzQ1OWU3
NDdjZC4uOGVhNmYyZTEwZWEwMzdiOWY0MjA4YjM1MDdjY2Y2YjI4ZTUzMjgzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBw
cml2YXRlOgogICAgICAgICB2b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UmKSBmaW5hbDsKIAogICAg
ICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpIGZpbmFsOwotICAg
ICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGlu
Z1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0cikgZmluYWw7CisgICAg
ICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5n
U3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1
cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBmaW5hbDsKICAgICAgICAgdm9pZCBjaGFuZ2Vk
SW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopIGZpbmFsOwogCiAgICAgICAgIEhh
c2hTZXQ8Q2FjaGVkSW1hZ2UqPiBtX2NhY2hlZEltYWdlczsKQEAgLTE0Myw3ICsxNDMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdlJiwgbG9uZyBs
b25nIGRlbHRhKTsKICAgICB2b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UmKTsKICAgICBib29sIGNh
bkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpOwotICAgIHZvaWQgaW1hZ2VGcmFtZUF2
YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3Qq
IGNoYW5nZVJlY3QgPSBudWxscHRyKTsKKyAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29u
c3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0
ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CiAg
ICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogCiAg
ICAgdm9pZCBhZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggZGQ1
ZmM4Y2UzOTVjMjg4Y2FjM2I4NDBiNTQxOWNkM2QwOTk1Yjg3ZC4uYmMxNmI0MDZlN2YyZmU5ZmUy
YjBjYzc1NmM1ZTY5ZmE2MmIwZjQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIEJpdG1hcElt
YWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQogICAgICAgICBtX3NvdXJj
ZS5kZXN0cm95QWxsRGVjb2RlZERhdGFFeGNsdWRlRnJhbWUobV9jdXJyZW50RnJhbWUpOwogICAg
IGVsc2UgewogICAgICAgICBtX3NvdXJjZS5kZXN0cm95QWxsRGVjb2RlZERhdGEoKTsKLSAgICAg
ICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IEltYWdlRnJhbWU6OkRlY29kaW5nU3Rh
dHVzOjpJbnZhbGlkOworICAgICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gRGVj
b2RpbmdTdGF0dXM6OkludmFsaWQ7CiAgICAgfQogCiAgICAgLy8gVGhlcmUncyBubyBuZWVkIHRv
IHRocm93IGF3YXkgdGhlIGRlY29kZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQKQEAg
LTExMCw5ICsxMTAsMTkgQEAgRW5jb2RlZERhdGFTdGF0dXMgQml0bWFwSW1hZ2U6OmRhdGFDaGFu
Z2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIGlmIChtX3NvdXJjZS5kZWNvZGVkU2l6ZSgp
ICYmICFjYW5Vc2VBc3luY0RlY29kaW5nRm9yTGFyZ2VJbWFnZXMoKSkKICAgICAgICAgbV9zb3Vy
Y2UuZGVzdHJveUluY29tcGxldGVEZWNvZGVkRGF0YSgpOwogCi0gICAgbV9jdXJyZW50RnJhbWVE
ZWNvZGluZ1N0YXR1cyA9IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpJbnZhbGlkOworICAg
IG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZDsK
ICAgICByZXR1cm4gbV9zb3VyY2UuZGF0YUNoYW5nZWQoZGF0YSgpLCBhbGxEYXRhUmVjZWl2ZWQp
OwogfQorICAgIAordm9pZCBCaXRtYXBJbWFnZTo6c2V0Q3VycmVudEZyYW1lRGVjb2RpbmdTdGF0
dXNJZk5lY2Vzc2FyeShEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKK3sKKyAgICAvLyBX
aGVuIG5ldyBkYXRhIGlzIHJlY2VpdmVkLCBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzIGlz
IHNldCB0byBEZWNvZGluZ1N0YXR1czo6SW52YWxpZAorICAgIC8vIHRvIGZvcmNlIGRlY29kaW5n
IHRoZSBmcmFtZSB3aGVuIGl0J3MgZHJhd24uIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMg
c2hvdWxkIG5vdCBiZQorICAgIC8vIGNoYW5nZWQgaW4gdGhpcyBjYXNlIHRpbGwgZHJhdygpIGlz
IGNhbGxlZCBhbmQgc2V0cyBpdHMgdmFsdWUgdG8gRGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nLgor
ICAgIGlmIChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzICE9IERlY29kaW5nU3RhdHVzOjpE
ZWNvZGluZykKKyAgICAgICAgcmV0dXJuOworICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0
dXMgPSBkZWNvZGluZ1N0YXR1czsKK30KIAogTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZy
YW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0
KQogewpAQCAtMTkyLDEzICsyMDIsMTMgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKIAogICAg
ICAgICAvLyBJZiB0aGUgY3VycmVudCBmcmFtZSBpcyBpbmNvbXBsZXRlLCBhIG5ldyByZXF1ZXN0
IGZvciBkZWNvZGluZyB0aGlzIGZyYW1lIGhhcyB0byBiZSBtYWRlIGV2ZW4gaWYKICAgICAgICAg
Ly8gaXQgaXMgY3VycmVudGx5IGJlaW5nIGRlY29kZWQuIE5ldyBkYXRhIG1heSBoYXZlIGJlZW4g
cmVjZWl2ZWQgc2luY2UgdGhlIHByZXZpb3VzIHJlcXVlc3Qgd2FzIG1hZGUuCi0gICAgICAgIGlm
ICgoIWZyYW1lSXNDb21wYXRpYmxlICYmICFmcmFtZUlzQmVpbmdEZWNvZGVkKSB8fCBtX2N1cnJl
bnRGcmFtZURlY29kaW5nU3RhdHVzID09IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpJbnZh
bGlkKSB7CisgICAgICAgIGlmICgoIWZyYW1lSXNDb21wYXRpYmxlICYmICFmcmFtZUlzQmVpbmdE
ZWNvZGVkKSB8fCBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID09IERlY29kaW5nU3RhdHVz
OjpJbnZhbGlkKSB7CiAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0g
JXAgLSB1cmw6ICVzIFtyZXF1ZXN0aW5nIGxhcmdlIGFzeW5jIGRlY29kaW5nXSIsIF9fRlVOQ1RJ
T05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
ICAgICBtX3NvdXJjZS5yZXF1ZXN0RnJhbWVBc3luY0RlY29kaW5nQXRJbmRleChtX2N1cnJlbnRG
cmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgc2l6ZUZvckRyYXdpbmcpOwotICAgICAg
ICAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IEltYWdlRnJhbWU6OkRlY29kaW5n
U3RhdHVzOjpEZWNvZGluZzsKKyAgICAgICAgICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0
dXMgPSBEZWNvZGluZ1N0YXR1czo6RGVjb2Rpbmc7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
bV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1
czo6RGVjb2RpbmcpCisgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID09
IERlY29kaW5nU3RhdHVzOjpEZWNvZGluZykKICAgICAgICAgICAgIHJlc3VsdCA9IEltYWdlRHJh
d1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nOwogCiAgICAgICAgIGlmICghZnJhbWVIYXNEZWNv
ZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KG1fY3VycmVudEZyYW1l
LCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykp
IHsKQEAgLTIzMSw3ICsyNDEsNyBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgICAgICBp
ZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHll
dC4KICAgICAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAg
ICAgICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgIT0gSW1hZ2VGcmFtZTo6RGVj
b2RpbmdTdGF0dXM6OkNvbXBsZXRlKQorICAgICAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGlu
Z1N0YXR1cyAhPSBEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpCiAgICAgICAgICAgICArK21fZGVj
b2RlQ291bnRGb3JUZXN0aW5nOwogICAgIH0KIApAQCAtMzkxLDcgKzQwMSw3IEBAIEJpdG1hcElt
YWdlOjpTdGFydEFuaW1hdGlvblN0YXR1cyBCaXRtYXBJbWFnZTo6aW50ZXJuYWxTdGFydEFuaW1h
dGlvbigpCiAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1
cmw6ICVzIFtjYWNoZWRGcmFtZUNvdW50ID0gJWxkIG5leHRGcmFtZSA9ICVsZF0iLCBfX0ZVTkNU
SU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksICsrbV9jYWNo
ZWRGcmFtZUNvdW50LCBuZXh0RnJhbWUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1f
c291cmNlLnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KG5leHRGcmFtZSwgbV9jdXJy
ZW50U3Vic2FtcGxpbmdMZXZlbCk7Ci0gICAgICAgICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5n
U3RhdHVzID0gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkRlY29kaW5nOworICAgICAgICAg
ICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpEZWNvZGlu
ZzsKICAgICAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDog
JXMgW3JlcXVlc3RpbmcgYXN5bmMgZGVjb2RpbmcgZm9yIG5leHRGcmFtZSA9ICVsZF0iLCBfX0ZV
TkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG5leHRG
cmFtZSk7CiAgICAgICAgIH0KIApAQCAtNDM5LDEwICs0NDksMTEgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6aW50ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKCkKIAogICAgIGRlc3Ryb3lEZWNvZGVkRGF0YUlm
TmVjZXNzYXJ5KGZhbHNlKTsKIAotICAgIGlmIChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVz
ID09IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpEZWNvZGluZykKLSAgICAgICAgbV9jdXJy
ZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3Vy
cmVudEZyYW1lKTsKKyAgICBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVj
b2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKKyAgICBzZXRDdXJyZW50RnJhbWVE
ZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KGRlY29kaW5nU3RhdHVzKTsKKyAgICAKICAgICBpZiAo
aW1hZ2VPYnNlcnZlcigpKQotICAgICAgICBpbWFnZU9ic2VydmVyKCktPmltYWdlRnJhbWVBdmFp
bGFibGUoKnRoaXMsIEltYWdlQW5pbWF0aW5nU3RhdGU6Olllcyk7CisgICAgICAgIGltYWdlT2Jz
ZXJ2ZXIoKS0+aW1hZ2VGcmFtZUF2YWlsYWJsZSgqdGhpcywgSW1hZ2VBbmltYXRpbmdTdGF0ZTo6
WWVzLCBudWxscHRyLCBkZWNvZGluZ1N0YXR1cyk7CiAKICAgICBMT0coSW1hZ2VzLCAiQml0bWFw
SW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFttX2N1cnJlbnRGcmFtZSA9ICVsZF0iLCBfX0ZVTkNU
SU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fY3VycmVu
dEZyYW1lKTsKIH0KQEAgLTQ5NywxNCArNTA4LDE1IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmltYWdl
RnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBBU1NFUlQoaW5kZXggPT0g
bV9jdXJyZW50RnJhbWUgJiYgIW1fY3VycmVudEZyYW1lKTsKICAgICBpZiAobV9zb3VyY2UuaXNB
c3luY0RlY29kaW5nUXVldWVJZGxlKCkpCiAgICAgICAgIG1fc291cmNlLnN0b3BBc3luY0RlY29k
aW5nUXVldWUoKTsKLSAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBJbWFn
ZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6RGVjb2RpbmcpCi0gICAgICAgIG1fY3VycmVudEZyYW1l
RGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFt
ZSk7CiAKLSAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9PSBJbWFnZUZyYW1l
OjpEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpCisgICAgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdT
dGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAg
c2V0Q3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXNJZk5lY2Vzc2FyeShkZWNvZGluZ1N0YXR1cyk7
CisgICAgCisgICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPT0gRGVjb2RpbmdT
dGF0dXM6OkNvbXBsZXRlKQogICAgICAgICArK21fZGVjb2RlQ291bnRGb3JUZXN0aW5nOwogCiAg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKLSAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5pbWFnZUZy
YW1lQXZhaWxhYmxlKCp0aGlzLCBJbWFnZUFuaW1hdGluZ1N0YXRlOjpObyk7CisgICAgICAgIGlt
YWdlT2JzZXJ2ZXIoKS0+aW1hZ2VGcmFtZUF2YWlsYWJsZSgqdGhpcywgSW1hZ2VBbmltYXRpbmdT
dGF0ZTo6Tm8sIG51bGxwdHIsIGRlY29kaW5nU3RhdHVzKTsKIH0KIAogdW5zaWduZWQgQml0bWFw
SW1hZ2U6OmRlY29kZUNvdW50Rm9yVGVzdGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCA0NGRkNzczN2E1OWJhMDJiZWQw
NDIzMTAzMjkxOWMxNjI0YzNkNGUzLi5kZjliYjc4YTFkYjM0ODA3ZWZlNjhkMmEwMmMxM2Y5Nzdm
YzhjYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKQEAgLTg1LDggKzg1LDggQEAgcHVibGljOgogICAgIEludFNpemUgc2l6ZVJlc3BlY3Rp
bmdPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnNpemVSZXNwZWN0aW5nT3Jp
ZW50YXRpb24oKTsgfQogICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fc291cmNlLnNpbmdsZVBpeGVsU29saWRDb2xvcigpOyB9CiAgICAg
Ym9vbCBmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4
KHNpemVfdCBpbmRleCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlLmZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVX
aXRoT3B0aW9uc0F0SW5kZXgoaW5kZXgsIGRlY29kaW5nT3B0aW9ucyk7IH0KLSAgICBJbWFnZUZy
YW1lOjpEZWNvZGluZ1N0YXR1cyBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChzaXplX3QgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KGlu
ZGV4KTsgfQotICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNv
bnN0IHsgcmV0dXJuIGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KGluZGV4KSA9PSBJbWFnZUZy
YW1lOjpEZWNvZGluZ1N0YXR1czo6Q29tcGxldGU7IH0KKyAgICBEZWNvZGluZ1N0YXR1cyBmcmFt
ZURlY29kaW5nU3RhdHVzQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlLmZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KGluZGV4KTsgfQorICAgIGJvb2wgZnJhbWVJ
c0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGZyYW1lRGVjb2Rp
bmdTdGF0dXNBdEluZGV4KGluZGV4KSA9PSBEZWNvZGluZ1N0YXR1czo6Q29tcGxldGU7IH0KICAg
ICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOyB9CiAKICAgICBib29sIGZyYW1l
SGFzRnVsbFNpemVOYXRpdmVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWwpIHsgcmV0dXJuIG1fc291cmNlLmZyYW1lSGFzRnVsbFNpemVO
YXRpdmVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOyB9CkBAIC0xOTMsNiAr
MTkzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyVGltZXIoKTsKICAgICB2b2lkIHN0YXJ0
VGltZXIoU2Vjb25kcyBkZWxheSk7CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoKTsK
KyAgICB2b2lkIHNldEN1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzSWZOZWNlc3NhcnkoRGVjb2Rp
bmdTdGF0dXMpOwogICAgIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwog
CkBAIC0yMDMsNyArMjA0LDcgQEAgcHJpdmF0ZToKIAogICAgIHNpemVfdCBtX2N1cnJlbnRGcmFt
ZSB7IDAgfTsgLy8gVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGZyYW1lIG9mIGFuaW1hdGlvbi4K
ICAgICBTdWJzYW1wbGluZ0xldmVsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0IH07Ci0gICAgSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXMgbV9j
dXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyB7IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpJ
bnZhbGlkIH07CisgICAgRGVjb2RpbmdTdGF0dXMgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1
cyB7IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVy
PiBtX2ZyYW1lVGltZXI7CiAgICAgUmVwZXRpdGlvbkNvdW50IG1fcmVwZXRpdGlvbnNDb21wbGV0
ZSB7IFJlcGV0aXRpb25Db3VudE5vbmUgfTsgLy8gSG93IG1hbnkgcmVwZXRpdGlvbnMgd2UndmUg
ZmluaXNoZWQuCiAgICAgTW9ub3RvbmljVGltZSBtX2Rlc2lyZWRGcmFtZVN0YXJ0VGltZTsgLy8g
VGhlIHN5c3RlbSB0aW1lIGF0IHdoaWNoIHdlIGhvcGUgdG8gc2VlIHRoZSBuZXh0IGNhbGwgdG8g
c3RhcnRBbmltYXRpb24oKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VGcmFtZS5jcHAKaW5kZXggOGU3OGE2NmUzMzIyZjQxNDg3YjlkMDU1NzRhNWRjMzE5Yzcy
YTE5OS4uODE2NTQ4NmI2NDBmMWM4MDA3NDNiYmVjYTFmN2M0MGZkZTFhZmZiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKQEAgLTc3LDcg
Kzc3LDcgQEAgdm9pZCBJbWFnZUZyYW1lOjpzZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1
cyBkZWNvZGluZ1N0YXR1cykKICAgICBtX2RlY29kaW5nU3RhdHVzID0gZGVjb2RpbmdTdGF0dXM7
CiB9CiAKLUltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIEltYWdlRnJhbWU6OmRlY29kaW5nU3Rh
dHVzKCkgY29uc3QKK0RlY29kaW5nU3RhdHVzIEltYWdlRnJhbWU6OmRlY29kaW5nU3RhdHVzKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQobV9kZWNvZGluZ1N0YXR1cyAhPSBEZWNvZGluZ1N0YXR1czo6
RGVjb2RpbmcpOwogICAgIHJldHVybiBtX2RlY29kaW5nU3RhdHVzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCmluZGV4IDIxMmEyY2I3ZmI5YzUyYTU2
ZDgwZjQ3NWRkNDE1ODdiNTRmZjMzZjIuLjE4MjE4NjM2M2M3OWJjNzI5Nzk5OWEzOWUyMDBlMjAx
ODIzNjg4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmgKQEAgLTM5LDcgKzM5LDYgQEAgY2xhc3MgSW1hZ2VGcmFtZSB7CiAgICAgZnJpZW5kIGNs
YXNzIEltYWdlRnJhbWVDYWNoZTsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIENhY2hpbmcgeyBN
ZXRhZGF0YSwgTWV0YWRhdGFBbmRJbWFnZSB9OwotICAgIGVudW0gY2xhc3MgRGVjb2RpbmdTdGF0
dXMgeyBJbnZhbGlkLCBQYXJ0aWFsLCBDb21wbGV0ZSwgRGVjb2RpbmcgfTsKIAogICAgIEltYWdl
RnJhbWUoKTsKICAgICBJbWFnZUZyYW1lKGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKSB7IG9wZXJh
dG9yPShvdGhlcik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUZyYW1lQ2FjaGUuY3BwCmluZGV4IDhjMzM2ZjQxYmU5N2Y4MWJjYjE2NGI2MDIxMzU1
ZmI5MTVlNGE1ZDIuLmI1NjQ2OThlYzgyNWJiMzY1YjkwNWVlYzEwYTk0ZTc3ZDQzZTdkNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNh
Y2hlLmNwcApAQCAtMTkwLDE5ICsxOTAsMTkgQEAgdm9pZCBJbWFnZUZyYW1lQ2FjaGU6OnNldE5h
dGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UpCiAKICAgICBmcmFtZS5tX25h
dGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CiAKLSAgICBmcmFtZS5tX2RlY29kaW5n
U3RhdHVzID0gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlOworICAgIGZyYW1l
Lm1fZGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6Q29tcGxldGU7CiAgICAgZnJhbWUu
bV9zaXplID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1lLm1fbmF0aXZlSW1hZ2UpOwogICAgIGZyYW1l
Lm1faGFzQWxwaGEgPSBuYXRpdmVJbWFnZUhhc0FscGhhKGZyYW1lLm1fbmF0aXZlSW1hZ2UpOwog
fQogCi12b2lkIEltYWdlRnJhbWVDYWNoZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWU6OkRlY29k
aW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9pZCBJbWFnZUZyYW1lQ2FjaGU6OmNhY2hlTWV0
YWRhdGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xl
dmVsLCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKIHsKICAgICBBU1NFUlQoaW5kZXgg
PCBtX2ZyYW1lcy5zaXplKCkpOwogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZXNbaW5k
ZXhdOwogCiAgICAgQVNTRVJUKGlzRGVjb2RlckF2YWlsYWJsZSgpKTsKLSAgICBpZiAoZGVjb2Rp
bmdTdGF0dXMgPT0gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkludmFsaWQpCi0gICAgICAg
IGZyYW1lLm1fZGVjb2RpbmdTdGF0dXMgPSBtX2RlY29kZXItPmZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgoaW5kZXgpID8gSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlIDogSW1hZ2VG
cmFtZTo6RGVjb2RpbmdTdGF0dXM6OlBhcnRpYWw7CisgICAgaWYgKGRlY29kaW5nU3RhdHVzID09
IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKQorICAgICAgICBmcmFtZS5tX2RlY29kaW5nU3RhdHVz
ID0gbV9kZWNvZGVyLT5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSA/IERlY29kaW5nU3Rh
dHVzOjpDb21wbGV0ZSA6IERlY29kaW5nU3RhdHVzOjpQYXJ0aWFsOwogICAgIGVsc2UKICAgICAg
ICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9IGRlY29kaW5nU3RhdHVzOwogCkBAIC0yMjQsNyAr
MjI0LDcgQEAgdm9pZCBJbWFnZUZyYW1lQ2FjaGU6OmNhY2hlTWV0YWRhdGFBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW0KICAgICAgICAgZnJhbWUubV9kdXJhdGlv
biA9IG1fZGVjb2Rlci0+ZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgpOwogfQogCi12b2lkIElt
YWdlRnJhbWVDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHImJiBu
YXRpdmVJbWFnZSwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zLCBJbWFnZUZyYW1lOjpE
ZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKK3ZvaWQgSW1hZ2VGcmFtZUNhY2hlOjpjYWNo
ZU5hdGl2ZUltYWdlQXRJbmRleChOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQog
ewogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAgICAgSW1hZ2VGcmFtZSYg
ZnJhbWUgPSBtX2ZyYW1lc1tpbmRleF07CkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBJbWFnZUZy
YW1lQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UsIHNpemUKICAgICBkZWNvZGVkU2l6ZUluY3JlYXNlZChmcmFtZS5mcmFtZUJ5dGVzKCkp
OwogfQogCi12b2lkIEltYWdlRnJhbWVDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3lu
YyhOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09w
dGlvbnMsIEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9pZCBJ
bWFnZUZyYW1lQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQ
dHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zLCBEZWNvZGlu
Z1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKIHsKICAgICBpZiAoIWlzRGVjb2RlckF2YWlsYWJsZSgp
KQogICAgICAgICByZXR1cm47CkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBJbWFnZUZyYW1lQ2Fj
aGU6OnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmcKICAgICAgICAgc3RhcnRBc3luY0RlY29kaW5nUXVldWUoKTsKICAgICAKICAgICBBU1NF
UlQoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkpOwotICAgIEltYWdlRnJhbWU6OkRlY29kaW5nU3Rh
dHVzIGRlY29kaW5nU3RhdHVzID0gbV9kZWNvZGVyLT5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGlu
ZGV4KSA/IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSA6IEltYWdlRnJhbWU6
OkRlY29kaW5nU3RhdHVzOjpQYXJ0aWFsOworICAgIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3Rh
dHVzID0gbV9kZWNvZGVyLT5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSA/IERlY29kaW5n
U3RhdHVzOjpDb21wbGV0ZSA6IERlY29kaW5nU3RhdHVzOjpQYXJ0aWFsOwogCiAgICAgTE9HKElt
YWdlcywgIkltYWdlRnJhbWVDYWNoZTo6JXMgLSAlcCAtIHVybDogJXMgW2VucXVldWluZyBmcmFt
ZSAlbGQgZm9yIGRlY29kaW5nXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXgpOwogICAgIG1fZnJhbWVSZXF1ZXN0UXVldWUuZW5x
dWV1ZSh7IGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBzaXplRm9yRHJhd2luZywgZGVjb2RpbmdT
dGF0dXMgfSk7CkBAIC00OTksOSArNDk5LDkgQEAgYm9vbCBJbWFnZUZyYW1lQ2FjaGU6OmZyYW1l
SXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgoc2l6ZV8KICAg
ICByZXR1cm4gaXQgIT0gbV9mcmFtZUNvbW1pdFF1ZXVlLmVuZCgpOwogfQogCi1JbWFnZUZyYW1l
OjpEZWNvZGluZ1N0YXR1cyBJbWFnZUZyYW1lQ2FjaGU6OmZyYW1lRGVjb2RpbmdTdGF0dXNBdElu
ZGV4KHNpemVfdCBpbmRleCkKK0RlY29kaW5nU3RhdHVzIEltYWdlRnJhbWVDYWNoZTo6ZnJhbWVE
ZWNvZGluZ1N0YXR1c0F0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1l
dGFkYXRhQXRJbmRleDxJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1cz4oaW5kZXgsICgmSW1hZ2VG
cmFtZTo6ZGVjb2RpbmdTdGF0dXMpKTsKKyAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8
RGVjb2RpbmdTdGF0dXM+KGluZGV4LCAoJkltYWdlRnJhbWU6OmRlY29kaW5nU3RhdHVzKSk7CiB9
CiAKIGJvb2wgSW1hZ2VGcmFtZUNhY2hlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5k
ZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVD
YWNoZS5oCmluZGV4IGM3N2I5MjczYzQ3ZDM4MTg4OTYxMzY4N2RmMjkzMzAwZThiODUyMmMuLjY0
OWFiZmMyMzYyYzg0NWUzYmMxYWY3NzA0OGMzNDA1YjViOWU2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCkBAIC05Myw3ICs5
Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEltYWdlRnJhbWUgbWV0YWRhdGEgd2hpY2ggZG9lcyBu
b3QgcmVxdWlyZSBjYWNoaW5nIHRoZSBJbWFnZUZyYW1lLgogICAgIGJvb2wgZnJhbWVJc0JlaW5n
RGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChzaXplX3QsIGNvbnN0IERl
Y29kaW5nT3B0aW9ucyYpOwotICAgIEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIGZyYW1lRGVj
b2RpbmdTdGF0dXNBdEluZGV4KHNpemVfdCk7CisgICAgRGVjb2RpbmdTdGF0dXMgZnJhbWVEZWNv
ZGluZ1N0YXR1c0F0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4
KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0ltYWdlQXRJbmRleChzaXplX3QpOwogICAgIGJv
b2wgZnJhbWVIYXNGdWxsU2l6ZU5hdGl2ZUltYWdlQXRJbmRleChzaXplX3QsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mKTsKQEAgLTEzMSw5ICsxMzEsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGVjb2RlZFNpemVSZXNldCh1bnNpZ25lZCBkZWNvZGVkU2l6ZSk7CiAKICAg
ICB2b2lkIHNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYpOwotICAgIHZvaWQgY2FjaGVN
ZXRhZGF0YUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lOjpEZWNv
ZGluZ1N0YXR1cyA9IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKLSAgICB2
b2lkIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgSW1hZ2VGcmFtZTo6RGVjb2Rp
bmdTdGF0dXMgPSBJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7Ci0gICAgdm9p
ZCBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgSW1hZ2VGcmFtZTo6RGVj
b2RpbmdTdGF0dXMpOworICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsK
KyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYsIHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0
dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdl
QXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOwogCiAgICAgUmVmPFdvcmtR
dWV1ZT4gZGVjb2RpbmdRdWV1ZSgpOwogCkBAIC0xNTEsNyArMTUxLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgc2l6ZV90IGluZGV4OwogICAgICAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5n
TGV2ZWw7CiAgICAgICAgIERlY29kaW5nT3B0aW9ucyBkZWNvZGluZ09wdGlvbnM7Ci0gICAgICAg
IEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzOworICAgICAgICBEZWNv
ZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1czsKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEltYWdlRnJhbWVSZXF1ZXN0JiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGluZGV4ID09IG90aGVyLmluZGV4ICYmIHN1YnNhbXBsaW5nTGV2ZWwgPT0gb3RoZXIu
c3Vic2FtcGxpbmdMZXZlbCAmJiBkZWNvZGluZ09wdGlvbnMgPT0gb3RoZXIuZGVjb2RpbmdPcHRp
b25zICYmIGRlY29kaW5nU3RhdHVzID09IG90aGVyLmRlY29kaW5nU3RhdHVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCmluZGV4IDgwMDYy
Y2FkMWUwZTc3OWY3MmE3NjVkYzcwNzhmMzZiMzlmMDA3YWYuLmEwNjg1MWVjMWU3NmVhYTZkNzhh
NzViZjQ5ZWM1M2IyZGUyNDkwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZU9ic2VydmVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWREcmF3KGNvbnN0IEltYWdlJikgPSAwOwogCiAgICAgdmlydHVhbCBib29s
IGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUs
IGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRl
LCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBE
ZWNvZGluZ1N0YXR1czo6SW52YWxpZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkSW5S
ZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIpID0g
MDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCmluZGV4IGIzNmM2YWEzODM5MTIyZTFkNzIyNjZkZjAyNTliNDdjNzZkMmQwNzYuLmY0ZGQ0
ZDg4ODQ0ZDUyNTNmNjk5OTczYjM3OGEwZWUzNDA5N2E0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtOTEsNyArOTEsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBJbWFnZUZyYW1lIG1ldGFkYXRhIHdoaWNoIGRvZXMgbm90IHJlcXVpcmUg
Y2FjaGluZyB0aGUgSW1hZ2VGcmFtZS4KICAgICBib29sIGZyYW1lSXNCZWluZ0RlY29kZWRBbmRJ
c0NvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBEZWNvZGlu
Z09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykgeyByZXR1cm4gbV9mcmFtZUNhY2hlLT5mcmFtZUlz
QmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KGluZGV4LCBkZWNv
ZGluZ09wdGlvbnMpOyB9Ci0gICAgSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXMgZnJhbWVEZWNv
ZGluZ1N0YXR1c0F0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX2ZyYW1lQ2FjaGUtPmZy
YW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KGluZGV4KTsgfQorICAgIERlY29kaW5nU3RhdHVzIGZy
YW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9mcmFtZUNh
Y2hlLT5mcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChpbmRleCk7IH0KICAgICBib29sIGZyYW1l
SGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9mcmFtZUNhY2hlLT5mcmFt
ZUhhc0FscGhhQXRJbmRleChpbmRleCk7IH0KICAgICBib29sIGZyYW1lSGFzSW1hZ2VBdEluZGV4
KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9mcmFtZUNhY2hlLT5mcmFtZUhhc0ltYWdlQXRJbmRl
eChpbmRleCk7IH0KICAgICBib29sIGZyYW1lSGFzRnVsbFNpemVOYXRpdmVJbWFnZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBzdWJz
YW1wbGluZ0xldmVsKSB7IHJldHVybiBtX2ZyYW1lQ2FjaGUtPmZyYW1lSGFzRnVsbFNpemVOYXRp
dmVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmgKaW5kZXggYmE3YjI1NGVlZjQyZjFj
Yzk0YzVmMzJlYTY2ZmE2OGI0YTZlOWJmYy4uMGZiYjk5ZTMzY2ZjOGNhN2E4ZTg2NzkyZTk1ZGM0
ZmUyMTA3NzZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
VHlwZXMuaApAQCAtNzgsNiArNzgsMTMgQEAgZW51bSBjbGFzcyBFbmNvZGVkRGF0YVN0YXR1cyB7
CiAgICAgQ29tcGxldGUKIH07CiAKK2VudW0gY2xhc3MgRGVjb2RpbmdTdGF0dXMgeworICAgIElu
dmFsaWQsCisgICAgUGFydGlhbCwKKyAgICBDb21wbGV0ZSwKKyAgICBEZWNvZGluZworfTsKKwog
ZW51bSBjbGFzcyBJbWFnZURyYXdSZXN1bHQgewogICAgIERpZE5vdGhpbmcsCiAgICAgRGlkUmVx
dWVzdERlY29kaW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAKaW5kZXggOGQ2OGE0MDAwOGE2
NDU5OGE5ZDdjNjRkODNlOTVhNTA5MzA4YmJhMi4uMDE2ODM0MzM0NTM5OTRhN2U5YjRmYjI3OWRl
NTAwZTM4NmUyNDEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCkBAIC04MSw3ICs4MSw3
IEBAIGJvb2wgQk1QSW1hZ2VSZWFkZXI6OmRlY29kZUJNUChib29sIG9ubHlTaXplKQogICAgICAg
ICBpZiAoIW1fYnVmZmVyLT5pbml0aWFsaXplKG1fcGFyZW50LT5zaXplKCksIG1fcGFyZW50LT5w
cmVtdWx0aXBseUFscGhhKCkpKQogICAgICAgICAgICAgcmV0dXJuIG1fcGFyZW50LT5zZXRGYWls
ZWQoKTsgLy8gVW5hYmxlIHRvIGFsbG9jYXRlLgogCi0gICAgICAgIG1fYnVmZmVyLT5zZXREZWNv
ZGluZ1N0YXR1cyhJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6UGFydGlhbCk7CisgICAgICAg
IG1fYnVmZmVyLT5zZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6UGFydGlhbCk7CiAg
ICAgICAgIG1fYnVmZmVyLT5zZXRIYXNBbHBoYShmYWxzZSk7CiAKICAgICAgICAgaWYgKCFtX2lz
VG9wRG93bikKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpkZWNvZGVC
TVAoYm9vbCBvbmx5U2l6ZSkKICAgICB9CiAKICAgICAvLyBEb25lIQotICAgIG1fYnVmZmVyLT5z
ZXREZWNvZGluZ1N0YXR1cyhJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpOwor
ICAgIG1fYnVmZmVyLT5zZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4
IGZkMGNjNzUwOTlmNWJhNDJkZTk5OWM4NzIwMTQzNmQwNTMzOTk3YmUuLjljYWMxMTM4ZmZhYTg1
M2U2MjM4YmIzNzJlZGQ4ZmFmOWRkYzgzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3Bw
CkBAIC0yNDcsNyArMjQ3LDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUo
dW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgZnJhbWVEdXJhdGlvbiwKICAgICBpZiAoYnVm
ZmVyLmlzSW52YWxpZCgpICYmICFpbml0RnJhbWVCdWZmZXIoZnJhbWVJbmRleCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsgLy8gaW5pdEZyYW1lQnVmZmVyKCkgaGFzIGFscmVhZHkgY2FsbGVkIHNl
dEZhaWxlZCgpLgogCi0gICAgYnVmZmVyLnNldERlY29kaW5nU3RhdHVzKEltYWdlRnJhbWU6OkRl
Y29kaW5nU3RhdHVzOjpDb21wbGV0ZSk7CisgICAgYnVmZmVyLnNldERlY29kaW5nU3RhdHVzKERl
Y29kaW5nU3RhdHVzOjpDb21wbGV0ZSk7CiAgICAgYnVmZmVyLnNldER1cmF0aW9uKGZyYW1lRHVy
YXRpb24pOwogICAgIGJ1ZmZlci5zZXREaXNwb3NhbE1ldGhvZChkaXNwb3NhbE1ldGhvZCk7CiAK
QEAgLTQwMSw3ICs0MDEsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVy
KHVuc2lnbmVkIGZyYW1lSW5kZXgpCiAgICAgYnVmZmVyLT5iYWNraW5nU3RvcmUoKS0+c2V0RnJh
bWVSZWN0KEludFJlY3QobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCkpOwog
CiAgICAgLy8gVXBkYXRlIG91ciBzdGF0dXMgdG8gYmUgcGFydGlhbGx5IGNvbXBsZXRlLgotICAg
IGJ1ZmZlci0+c2V0RGVjb2RpbmdTdGF0dXMoSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OlBh
cnRpYWwpOworICAgIGJ1ZmZlci0+c2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OlBh
cnRpYWwpOwogCiAgICAgLy8gUmVzZXQgdGhlIGFscGhhIHBpeGVsIHRyYWNrZXIgZm9yIHRoaXMg
ZnJhbWUuCiAgICAgbV9jdXJyZW50QnVmZmVyU2F3QWxwaGEgPSBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuY3BwCmluZGV4IDU1MWFmNmU0NDMxM2UxMDZjZDZjNjExNmZmZmFiMDAx
M2VkNGJjNTAuLjc0Y2ExMTEzOTlhMzZjMjdlMjc5OGU5OGUxMWY5MzZkNWVlYjZiMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtNjA4LDcgKzYwOCw3IEBAIGJvb2wgSlBF
R0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKCkKICAgICBpZiAoYnVmZmVyLmlzSW52YWxp
ZCgpKSB7CiAgICAgICAgIGlmICghYnVmZmVyLmluaXRpYWxpemUoc2NhbGVkU2l6ZSgpLCBtX3By
ZW11bHRpcGx5QWxwaGEpKQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwotICAgICAg
ICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OlBh
cnRpYWwpOworICAgICAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6
OlBhcnRpYWwpOwogICAgICAgICAvLyBUaGUgYnVmZmVyIGlzIHRyYW5zcGFyZW50IG91dHNpZGUg
dGhlIGRlY29kZWQgYXJlYSB3aGlsZSB0aGUgaW1hZ2UgaXMKICAgICAgICAgLy8gbG9hZGluZy4g
VGhlIGNvbXBsZXRlZCBpbWFnZSB3aWxsIGJlIG1hcmtlZCBmdWxseSBvcGFxdWUgaW4ganBlZ0Nv
bXBsZXRlKCkuCiAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYSh0cnVlKTsKQEAgLTY1Miw3ICs2
NTIsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmpwZWdDb21wbGV0ZSgpCiAgICAgLy8gZW1w
dHkuCiAgICAgSW1hZ2VGcmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwogICAg
IGJ1ZmZlci5zZXRIYXNBbHBoYShmYWxzZSk7Ci0gICAgYnVmZmVyLnNldERlY29kaW5nU3RhdHVz
KEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSk7CisgICAgYnVmZmVyLnNldERl
Y29kaW5nU3RhdHVzKERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSk7CiB9CiAKIHZvaWQgSlBFR0lt
YWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyZmI2YzQ0MGQ0MzZkYWI5NjBkZDhhMDAw
ZTlhMmNlY2RhYzkzNTRiLi5lY2RhMThkZjdiZTdhZDIxYjYyZDE1NzI3YWQ4ZjgyNTJhYjBmNzI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQg
UE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1
bnNpZ25lZCByb3dJbmRleCwKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGJ1
ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhJbWFnZUZyYW1lOjpEZWNvZGluZ1N0YXR1czo6UGFydGlh
bCk7CisgICAgICAgIGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6UGFy
dGlhbCk7CiAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShmYWxzZSk7CiAKICNpZiBFTkFCTEUo
QVBORykKQEAgLTU1OCw3ICs1NTgsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cG5nQ29tcGxl
dGUoKQogICAgIH0KICNlbmRpZgogICAgIGlmICghbV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHko
KSkKLSAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLmZpcnN0KCkuc2V0RGVjb2RpbmdTdGF0dXMo
SW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsKKyAgICAgICAgbV9mcmFtZUJ1
ZmZlckNhY2hlLmZpcnN0KCkuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OkNvbXBs
ZXRlKTsKIH0KIAogdm9pZCBQTkdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCB1
bnNpZ25lZCBoYWx0QXRGcmFtZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCkBAIC04MjUsNyArODI1
LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUoKQogICAgICAgICByZXR1
cm47CiAKICAgICBJbWFnZUZyYW1lJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJy
ZW50RnJhbWVdOwotICAgIGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhJbWFnZUZyYW1lOjpEZWNv
ZGluZ1N0YXR1czo6Q29tcGxldGUpOworICAgIGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhEZWNv
ZGluZ1N0YXR1czo6Q29tcGxldGUpOwogCiAgICAgcG5nX2J5dGVwIGludGVybGFjZUJ1ZmZlciA9
IG1fcmVhZGVyLT5pbnRlcmxhY2VCdWZmZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5jcHAKaW5kZXggNDQ1NTFkY2IwMGM0ZTljZDU3NmFkMTU3MDhkOGQ0MjM1NGE3ZGIwMC4uYjNh
NjMyZmE3MTNhMjM3NDE2Mjg5MTcwZGM2NTg4NzJhM2RhNmVmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBXRUJQSW1hZ2VEZWNvZGVy
OjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCkKICAgICBpZiAoYnVmZmVyLmlzSW52YWxpZCgp
KSB7CiAgICAgICAgIGlmICghYnVmZmVyLmluaXRpYWxpemUoc2l6ZSgpLCBtX3ByZW11bHRpcGx5
QWxwaGEpKQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwotICAgICAgICBidWZmZXIu
c2V0RGVjb2RpbmdTdGF0dXMoSW1hZ2VGcmFtZTo6RGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwpOwor
ICAgICAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwp
OwogICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEobV9oYXNBbHBoYSk7CiAgICAgfQogCkBAIC0x
MzcsNyArMTM3LDcgQEAgYm9vbCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6
ZSwgYm9vbCkKIAogICAgIHN3aXRjaCAoV2ViUElVcGRhdGUobV9kZWNvZGVyLCBkYXRhQnl0ZXMs
IGRhdGFTaXplKSkgewogICAgIGNhc2UgVlA4X1NUQVRVU19PSzoKLSAgICAgICAgYnVmZmVyLnNl
dERlY29kaW5nU3RhdHVzKEltYWdlRnJhbWU6OkRlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSk7Cisg
ICAgICAgIGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUp
OwogICAgICAgICBjbGVhcigpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFZQOF9T
VEFUVVNfU1VTUEVOREVEOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKaW5kZXggMDFlZDAwNTk2NzU4OGQ2MjFlNTM5ZDNjMzkxN2QyN2Ri
MzMzZWY1Zi4uZTM5NjQwYjM2MDM1ZTUyNTYyMzMwODQxZGI5ODE2Y2EwY2JlOWZhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBA
IC0zMjQsOCArMzI0LDYgQEAgRGVjb2RpbmdNb2RlIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkZWNv
ZGluZ01vZGVGb3JJbWFnZURyYXcoY29uc3QgSW1hZ2UmIGltYWdlLAogICAgIGlmIChJT1NBcHBs
aWNhdGlvbjo6aXNJQm9va3NTdG9yeXRpbWUoKSkKICAgICAgICAgcmV0dXJuIERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXM7CiAjZW5kaWYKLSAgICBpZiAoZG9jdW1lbnQoKS5pc0ltYWdlRG9jdW1l
bnQoKSkKLSAgICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXM7CiAgICAgaWYg
KCFzZXR0aW5ncygpLmxhcmdlSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91czsKICAgICBpZiAoIWJpdG1hcEltYWdlLmNh
blVzZUFzeW5jRGVjb2RpbmdGb3JMYXJnZUltYWdlcygpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>