<?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>167618</bug_id>
          
          <creation_ts>2017-01-30 17:27:24 -0800</creation_ts>
          <short_desc>The current frame of an image should not deleted if another frame is asynchronously being decoded</short_desc>
          <delta_ts>2017-03-06 14:53:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
    
    <cc>jonlee</cc>
    
    <cc>sam</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>1271503</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-01-30 17:27:24 -0800</bug_when>
    <thetext>Decoding multiple frames from the same image is not thread-safe. Since the next frame may not be ready at the time BitmapImage::draw() is called, the current frame has to be drawn. If the current frame is not available, drawing the current frame will invoke the image decoding from the drawing commit thread. This may lead to a crash when two threads update the image decoded frames data at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271535</commentid>
    <comment_count>1</comment_count>
      <attachid>300174</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-01-30 18:14:08 -0800</bug_when>
    <thetext>Created attachment 300174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271536</commentid>
    <comment_count>2</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-01-30 18:14:56 -0800</bug_when>
    <thetext>I will see if I can come up with a test for this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271546</commentid>
    <comment_count>3</comment_count>
      <attachid>300174</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-01-30 18:38:58 -0800</bug_when>
    <thetext>Comment on attachment 300174
Patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        be destroyed expect the current frame.

expect -&gt; except

&gt; Source/WebCore/platform/graphics/ImageFrameCache.cpp:73
&gt; +void ImageFrameCache::destroyDecodedData(bool destroyAll, size_t currentFrame)

&apos;currentFrame&apos; is a bit confusing here. Does it mean &quot;just destroy data for the current frame&quot;, or &quot;destroy data for all frames up to and including currentFrame&quot;?

&gt; Source/WebCore/platform/graphics/ImageFrameCache.cpp:87
&gt; +bool ImageFrameCache::destroyDecodedDataIfNecessary(bool destroyAll, size_t currentFrame)

Same comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271868</commentid>
    <comment_count>4</comment_count>
      <attachid>300254</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-01-31 13:42:36 -0800</bug_when>
    <thetext>Created attachment 300254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271869</commentid>
    <comment_count>5</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-01-31 13:44:29 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 300174 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=300174&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:18
&gt; &gt; +        be destroyed expect the current frame.
&gt; 
&gt; expect -&gt; except
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ImageFrameCache.cpp:73
&gt; &gt; +void ImageFrameCache::destroyDecodedData(bool destroyAll, size_t currentFrame)
&gt; 
&gt; &apos;currentFrame&apos; is a bit confusing here. Does it mean &quot;just destroy data for
&gt; the current frame&quot;, or &quot;destroy data for all frames up to and including
&gt; currentFrame&quot;?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ImageFrameCache.cpp:87
&gt; &gt; +bool ImageFrameCache::destroyDecodedDataIfNecessary(bool destroyAll, size_t currentFrame)
&gt; 
&gt; Same comment.

I did not see these comments before uploading the new patch. Please ignore it till I fix these issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271965</commentid>
    <comment_count>6</comment_count>
      <attachid>300279</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-01-31 16:01:25 -0800</bug_when>
    <thetext>Created attachment 300279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271970</commentid>
    <comment_count>7</comment_count>
      <attachid>300174</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-01-31 16:06:04 -0800</bug_when>
    <thetext>Comment on attachment 300174
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:18
&gt;&gt;&gt; +        be destroyed expect the current frame.
&gt;&gt; 
&gt;&gt; expect -&gt; except
&gt; 
&gt; I did not see these comments before uploading the new patch. Please ignore it till I fix these issues.

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/ImageFrameCache.cpp:73
&gt;&gt; +void ImageFrameCache::destroyDecodedData(bool destroyAll, size_t currentFrame)
&gt; 
&gt; &apos;currentFrame&apos; is a bit confusing here. Does it mean &quot;just destroy data for the current frame&quot;, or &quot;destroy data for all frames up to and including currentFrame&quot;?

All the logic is moved to BitmapImage::destroyDecodedData(). BitmapImage::destroyDecodedDataIfNecessary() also checks the decoded data  size and then decides to call BitmapImage::destroyDecodedData() or not. The ImageSource is just a wrapper for the ImageFrameCache functions. The ImageFrameCache::destroyDecodedData() deletes a range of ImageFrame unconditionally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273018</commentid>
    <comment_count>8</comment_count>
      <attachid>300557</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-02-03 12:25:56 -0800</bug_when>
    <thetext>Created attachment 300557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274957</commentid>
    <comment_count>9</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-02-09 12:00:21 -0800</bug_when>
    <thetext>rdar://problem/30231732</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276400</commentid>
    <comment_count>10</comment_count>
      <attachid>300557</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-02-13 15:18:05 -0800</bug_when>
    <thetext>Comment on attachment 300557
Patch

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

&gt; Source/WTF/wtf/Assertions.h:306
&gt; +    CRASH(); \
&gt; +} \

The indentation is off here.

&gt; Source/WebCore/ChangeLog:16
&gt; +        We can avoid that by destroying all the frames expect the current frame if

expect -&gt; except</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276421</commentid>
    <comment_count>11</comment_count>
      <attachid>301408</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-02-13 16:10:40 -0800</bug_when>
    <thetext>Created attachment 301408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276478</commentid>
    <comment_count>12</comment_count>
      <attachid>301408</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-13 17:31:03 -0800</bug_when>
    <thetext>Comment on attachment 301408
Patch

Clearing flags on attachment: 301408

Committed r212265: &lt;http://trac.webkit.org/changeset/212265&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276479</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-13 17:31:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283982</commentid>
    <comment_count>14</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-03-06 14:53:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/30231732&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300174</attachid>
            <date>2017-01-30 18:14:08 -0800</date>
            <delta_ts>2017-01-31 13:42:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167618-20170130181158.patch</filename>
            <type>text/plain</type>
            <size>8591</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MyOTdkNGY4N2MzNzM1
MDVlOTA5MTRiZjc3MWRkNDdjYWU0ZWRkYi4uYjg5MmY4Y2JlNWU1MjI2MTBjY2M4NGM3MDI4MWJi
NTJmOWFkYTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE3LTAxLTMwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIGN1
cnJlbnQgZnJhbWUgb2YgYW4gaW1hZ2Ugc2hvdWxkIG5vdCBkZWxldGVkIGlmIGFub3RoZXIgZnJh
bWUgaXMgYXN5bmNocm9ub3VzbHkgYmVpbmcgZGVjb2RlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3NjE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgdGhlIG1lbW9yeSBjYWNoZSBhc2tzIHRoZSBC
aXRtYXBJbWFnZSB0byBkZXN0cm95IGFsbCBpdHMgZnJhbWVzIHdoaWxlCisgICAgICAgIHRoZSBu
ZXh0IGZyYW1lIGlzIGJlaW5nIGRlY29kZWQsIGEgdGhyZWFkIGNvbnRlbnRpb24gbWF5IGhhcHBl
bi4gVGhpcyBjYW4KKyAgICAgICAgaGFwcGVuIHdoZW4gQml0bWFwSW1hZ2U6OmRyYXcoKSBpcyBj
YWxsZWQgYW5kIHRoZSBuZXh0IGZyYW1lIGlzIG5vdCByZWFkeQorICAgICAgICB5ZXQsIHNvIHRo
ZSBjdXJyZW50IGZyYW1lIGhhcyB0byBiZSBkcmF3bi4gVGhpcyB3aWxsIGludm9rZSB0aGUgYW4g
aW1hZ2UKKyAgICAgICAgZGVjb2RpbmcgaW4gdGhlIHNhbWUgaW1hZ2UgZnJvbSB0aGUgZHJhd2lu
ZyBjb21taXR0aW5nIHRocmVhZC4KKworICAgICAgICBXZSBjYW4gYXZvaWQgdGhhdCBieSBkZXN0
cm95aW5nIHRoZSBmcmFtZXMgd2hpY2ggY29tZXMgYmVmb3JlIHRoZSBjdXJyZW50CisgICAgICAg
IGZyYW1lIGlmIHRoZSBpbWFnZSBpcyBhc3luY2hyb25vdXNseSBkZWNvZGluZyBpdHMgZnJhbWVz
LiBUaGlzIHNob3VsZCBub3QKKyAgICAgICAgYWRkIGV4dHJhIG1lbW9yeSBvdmVyaGVhZCBiZWNh
dXNlIGJ1aWxkaW5nIHRoZSBpbWFnZSBmcmFtZSBjYWNoZSBpcyBhbiAKKyAgICAgICAgb24tZ29p
bmcgcHJvY2Vzcy4gRnJhbWVzIHdpbGwgYmUgYWxsb2NhdGVkIGFuZCBkZWNvZGVkIGJ1dCBhbGwg
b2YgdGhlbSBjYW4KKyAgICAgICAgYmUgZGVzdHJveWVkIGV4cGVjdCB0aGUgY3VycmVudCBmcmFt
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNh
Y2hlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNh
Y2hlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorCiAyMDE3LTAx
LTI0ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIGFsd2F5cyB0cnVlIHNlbGVjdGlvbkluY2x1ZGVzQWx0SW1hZ2VUZXh0IHNldHRpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRl
eCA3ZWI3YTcxM2ZmNWQ4Yzg0ZWJmZTg1NDY1YWY2OGJkMmIxMGM1NzRiLi4wNmFjZjVlOTQ0Mjc0
ZTEwOTk1Yjg4ZTkwN2ZmY2QxZjczYWMyMjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0xNTcsNiArMTU3LDcgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnMKICAgICBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsID0gYWxsb3dT
dWJzYW1wbGluZygpID8gbV9zb3VyY2Uuc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKHNjYWxlKSA6
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7CiAgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdl
ICVwIGRyYXcgLSBzdWJzYW1wbGluZ0xldmVsICVkIGF0IHNjYWxlICUuNGYiLCB0aGlzLCBzdGF0
aWNfY2FzdDxpbnQ+KG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwpLCBzY2FsZSk7CiAKKyAgICBB
U1NFUlQocmVzdWx0ICE9IFN0YXJ0QW5pbWF0aW9uUmVzdWx0OjpEZWNvZGluZ0FjdGl2ZSB8fCBt
X3NvdXJjZS5mcmFtZUhhc1ZhbGlkTmF0aXZlSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBt
X2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSk7CiAgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VB
dEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsLCAmY29udGV4
dCk7CiAgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBh
biBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCmluZGV4IDgxZmIxZjk4NjhmMzEw
ZTUzNTlkMTYxZGMyZGFjYTVjYzdkM2FlZDcuLmVkOTBkNjM5NTQ0NmJiYWQ4ODAyN2YxZmQ0MDJj
ODMyN2M0YjRjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlRnJhbWVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VGcmFtZUNhY2hlLmNwcApAQCAtNzAsMTkgKzcwLDIxIEBAIEltYWdlRnJhbWVDYWNo
ZTo6fkltYWdlRnJhbWVDYWNoZSgpCiAgICAgQVNTRVJUKCFoYXNEZWNvZGluZ1F1ZXVlKCkpOwog
fQogCi12b2lkIEltYWdlRnJhbWVDYWNoZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJv
eUFsbCwgc2l6ZV90IGNvdW50KQordm9pZCBJbWFnZUZyYW1lQ2FjaGU6OmRlc3Ryb3lEZWNvZGVk
RGF0YShib29sIGRlc3Ryb3lBbGwsIHNpemVfdCBjdXJyZW50RnJhbWUpCiB7Ci0gICAgaWYgKGRl
c3Ryb3lBbGwpCi0gICAgICAgIGNvdW50ID0gbV9mcmFtZXMuc2l6ZSgpOwotICAgIAorICAgIHNp
emVfdCBjb3VudCA9IGRlc3Ryb3lBbGwgPyBtX2ZyYW1lcy5zaXplKCkgOiBjdXJyZW50RnJhbWU7
CiAgICAgdW5zaWduZWQgZGVjb2RlZFNpemUgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgIGNvdW50OyArK2kpCisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICBjb3VudDsgKytp
KSB7CisgICAgICAgIGlmIChoYXNEZWNvZGluZ1F1ZXVlKCkgJiYgaSA9PSBjdXJyZW50RnJhbWUp
CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgZGVjb2RlZFNpemUgKz0gbV9mcmFtZXNb
aV0uY2xlYXJJbWFnZSgpOworICAgIH0KIAogICAgIGRlY29kZWRTaXplUmVzZXQoZGVjb2RlZFNp
emUpOwogfQogCi1ib29sIEltYWdlRnJhbWVDYWNoZTo6ZGVzdHJveURlY29kZWREYXRhSWZOZWNl
c3NhcnkoYm9vbCBkZXN0cm95QWxsLCBzaXplX3QgY291bnQpCitib29sIEltYWdlRnJhbWVDYWNo
ZTo6ZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkoYm9vbCBkZXN0cm95QWxsLCBzaXplX3Qg
Y3VycmVudEZyYW1lKQogewogICAgIHVuc2lnbmVkIGRlY29kZWRTaXplID0gMDsKICAgICBmb3Ig
KGF1dG8mIGZyYW1lIDogbV9mcmFtZXMpCkBAIC05MSw3ICs5Myw3IEBAIGJvb2wgSW1hZ2VGcmFt
ZUNhY2hlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwsIHNp
emVfdCBjb3VuCiAgICAgaWYgKGRlY29kZWRTaXplIDwgTGFyZ2VBbmltYXRpb25DdXRvZmYpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBkZXN0cm95RGVjb2RlZERhdGEoZGVzdHJv
eUFsbCwgY291bnQpOworICAgIGRlc3Ryb3lEZWNvZGVkRGF0YShkZXN0cm95QWxsLCBjdXJyZW50
RnJhbWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCmluZGV4IDMyZWUyMWU4Njk5NDNhZTA3
ZjY1YTc5YTgxMDE3M2U0NDc2OGVkY2QuLmVjNjAxNjVjOWRkNDExMGJiOWY5YjM5OTI2NjdmODYz
ZTg2NDVkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWVDYWNoZS5oCkBAIC01OSw4ICs1OSw4IEBAIHB1YmxpYzoKICAgICBJbWFnZURlY29k
ZXIqIGRlY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXI7IH0KIAogICAgIHVuc2lnbmVk
IGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQotICAgIHZvaWQg
ZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCA9IHRydWUsIHNpemVfdCBjb3VudCA9
IDApOwotICAgIGJvb2wgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkoYm9vbCBkZXN0cm95
QWxsID0gdHJ1ZSwgc2l6ZV90IGNvdW50ID0gMCk7CisgICAgdm9pZCBkZXN0cm95RGVjb2RlZERh
dGEoYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSwgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IDApOworICAg
IGJvb2wgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkoYm9vbCBkZXN0cm95QWxsID0gdHJ1
ZSwgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IDApOwogICAgIHZvaWQgZGVzdHJveUluY29tcGxldGVE
ZWNvZGVkRGF0YSgpOwogCiAgICAgdm9pZCBncm93RnJhbWVzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggOTEwZDYxZGE2ZTFm
NDNjOTJhM2FmYzA0OTk4ZjI2MmNhZWVkYWFmZC4uZDAzZTQxYjE1ZGY4Mzg5NmQyOTA5ZDEzYzlm
YzYwMzVhMzQ5ZjNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcApAQCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSkKICAgICBtX2RlY29k
ZXItPmNsZWFyRnJhbWVCdWZmZXJDYWNoZShjbGVhckJlZm9yZUZyYW1lKTsKIH0KIAotdm9pZCBJ
bWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsLCBzaXplX3QgY291bnQsIFNoYXJlZEJ1
ZmZlciogZGF0YSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbCwgc2l6
ZV90IGN1cnJlbnRGcmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIC8vIFRoZXJlJ3Mg
bm8gbmVlZCB0byB0aHJvdyBhd2F5IHRoZSBkZWNvZGVyIHVubGVzcyB3ZSdyZSBleHBsaWNpdGx5
IGFza2VkCiAgICAgLy8gdG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1lcy4KICAgICBpZiAoIWRl
c3Ryb3lBbGwgfHwgbV9mcmFtZUNhY2hlLT5oYXNEZWNvZGluZ1F1ZXVlKCkpIHsKLSAgICAgICAg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNvdW50KTsKKyAgICAgICAgY2xlYXJGcmFtZUJ1ZmZlckNh
Y2hlKGN1cnJlbnRGcmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgyLDIzICs4
MiwyMyBAQCB2b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGwsIHNpemVfdCBj
b3VudCwgU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHNldERhdGEoZGF0YSwgaXNBbGxEYXRhUmVj
ZWl2ZWQoKSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShTaGFy
ZWRCdWZmZXIqIGRhdGEsIGJvb2wgZGVzdHJveUFsbCwgc2l6ZV90IGNvdW50KQordm9pZCBJbWFn
ZVNvdXJjZTo6ZGVzdHJveURlY29kZWREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBkZXN0
cm95QWxsLCBzaXplX3QgY3VycmVudEZyYW1lKQogewotICAgIG1fZnJhbWVDYWNoZS0+ZGVzdHJv
eURlY29kZWREYXRhKGRlc3Ryb3lBbGwsIGNvdW50KTsKLSAgICBjbGVhcihkZXN0cm95QWxsLCBj
b3VudCwgZGF0YSk7CisgICAgbV9mcmFtZUNhY2hlLT5kZXN0cm95RGVjb2RlZERhdGEoZGVzdHJv
eUFsbCwgY3VycmVudEZyYW1lKTsKKyAgICBjbGVhcihkZXN0cm95QWxsLCBjdXJyZW50RnJhbWUs
IGRhdGEpOwogfQogCi1ib29sIEltYWdlU291cmNlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vz
c2FyeShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgZGVzdHJveUFsbCwgc2l6ZV90IGNvdW50KQor
Ym9vbCBJbWFnZVNvdXJjZTo6ZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBib29sIGRlc3Ryb3lBbGwsIHNpemVfdCBjdXJyZW50RnJhbWUpCiB7CiAgICAg
Ly8gSWYgd2UgaGF2ZSBkZWNvZGVkIGZyYW1lcyBidXQgdGhlcmUgaXMgbm8gZW5jb2RlZCBkYXRh
LCB3ZSBzaG91bGRuJ3QgZGVzdHJveQogICAgIC8vIHRoZSBkZWNvZGVkIGltYWdlIHNpbmNlIHdl
IHdvbid0IGJlIGFibGUgdG8gcmVjb25zdHJ1Y3QgaXQgbGF0ZXIuCiAgICAgaWYgKCFkYXRhICYm
IG1fZnJhbWVDYWNoZS0+ZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpZiAoIW1fZnJhbWVDYWNoZS0+ZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkoZGVzdHJv
eUFsbCwgY291bnQpKQorICAgIGlmICghbV9mcmFtZUNhY2hlLT5kZXN0cm95RGVjb2RlZERhdGFJ
Zk5lY2Vzc2FyeShkZXN0cm95QWxsLCBjdXJyZW50RnJhbWUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBjbGVhcihkZXN0cm95QWxsLCBjb3VudCwgZGF0YSk7CisgICAgY2xlYXIoZGVz
dHJveUFsbCwgY3VycmVudEZyYW1lLCBkYXRhKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggNzM4
MThkOWYwNWQ4MWViODMyYzI0YzcyZjE5YjY0MGVhMjRlNmRhMS4uN2JhOTk4MGVlOTJmMjkxZjU3
Y2E0ZmVlNDU1ZDUzYTQxMDUzYTVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAgICBJbWFn
ZVNvdXJjZShJbWFnZSosIEFscGhhT3B0aW9uID0gQWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQs
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246
OkFwcGxpZWQpOwogICAgIH5JbWFnZVNvdXJjZSgpOwogCi0gICAgdm9pZCBkZXN0cm95RGVjb2Rl
ZERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGRlc3Ryb3lBbGwgPSB0cnVlLCBzaXplX3Qg
Y291bnQgPSAwKTsKLSAgICBib29sIGRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KFNoYXJl
ZEJ1ZmZlciogZGF0YSwgYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSwgc2l6ZV90IGNvdW50ID0gMCk7
CisgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGRl
c3Ryb3lBbGwgPSB0cnVlLCBzaXplX3QgY3VycmVudEZyYW1lID0gMCk7CisgICAgYm9vbCBkZXN0
cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgZGVzdHJv
eUFsbCA9IHRydWUsIHNpemVfdCBjdXJyZW50RnJhbWUgPSAwKTsKIAogICAgIGJvb2wgZW5zdXJl
RGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqKTsKICAgICBib29sIGlzRGVjb2RlckF2YWls
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300254</attachid>
            <date>2017-01-31 13:42:36 -0800</date>
            <delta_ts>2017-01-31 16:01:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167618-20170131134025.patch</filename>
            <type>text/plain</type>
            <size>14515</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE0Yzc5NjgxN2YyYjNlZGY4YmYyYjAz
Nzg3OGM4NzQwZjc2YmJkMDUuLmJjMTRkZTUwNzJmYTk3MTg3OWMzNzk2ODhkNGI2NmNhMGM4NTVm
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDEtMzEgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgY3VycmVudCBmcmFtZSBvZiBh
biBpbWFnZSBzaG91bGQgbm90IGRlbGV0ZWQgaWYgYW5vdGhlciBmcmFtZSBpcyBhc3luY2hyb25v
dXNseSBiZWluZyBkZWNvZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjc2MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgQVNTRVJUX0lNUExJRVMoKSB3aGljaCBzaG91bGQgZmlyZSB3aGVuIGEg
Y29uZGl0aW9uIGlzIHRydWUgYnV0IHRoZQorICAgICAgICBhc3NlcnRpb24gaXMgZmFsc2UuCisK
KyAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5oOgorCiAyMDE3LTAxLTI0ICBLb25zdGFudGluIFRv
a2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBWUzIwMTUgc3VwcG9ydHMgcmVm
IHF1YWxpZmllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYzI5N2Q0Zjg3YzM3MzUwNWU5MDkxNGJmNzcxZGQ0
N2NhZTRlZGRiLi5lZGJhMDI4NDg1ZDVkYzRmNDdmZTM3ZTcwNmJkOTliN2M5M2FhMDI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTctMDEtMzEgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgY3VycmVudCBmcmFtZSBvZiBh
biBpbWFnZSBzaG91bGQgbm90IGRlbGV0ZWQgaWYgYW5vdGhlciBmcmFtZSBpcyBhc3luY2hyb25v
dXNseSBiZWluZyBkZWNvZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjc2MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0OiBmYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1kcmF3LXdoaWxlLWRl
Y29kZS5odG1sCisKKyAgICAgICAgSWYgdGhlIG1lbW9yeSBjYWNoZSBhc2tzIHRoZSBCaXRtYXBJ
bWFnZSB0byBkZXN0cm95IGFsbCBpdHMgZnJhbWVzIHdoaWxlCisgICAgICAgIHRoZSBuZXh0IGZy
YW1lIGlzIGJlaW5nIGRlY29kZWQsIGEgdGhyZWFkIGNvbnRlbnRpb24gbWF5IGhhcHBlbi4gVGhp
cyBjYW4KKyAgICAgICAgaGFwcGVuIHdoZW4gQml0bWFwSW1hZ2U6OmRyYXcoKSBpcyBjYWxsZWQg
YW5kIHRoZSBuZXh0IGZyYW1lIGlzIG5vdCByZWFkeQorICAgICAgICB5ZXQgZm9yIGRyYXdpbmcs
IHNvIHRoZSBjdXJyZW50IGZyYW1lIGhhcyB0byBiZSBkcmF3bi4gVGhpcyB3aWxsIGludm9rZQor
ICAgICAgICB0aGUgYW4gaW1hZ2UgZGVjb2RpbmcgaW4gdGhlIHNhbWUgaW1hZ2UgZnJvbSB0aGUg
ZHJhd2luZyBjb21taXR0aW5nIHRocmVhZC4KKworICAgICAgICBXZSBjYW4gYXZvaWQgdGhhdCBi
eSBkZXN0cm95aW5nIGFsbCB0aGUgZnJhbWVzIGV4cGVjdCB0aGUgY3VycmVudCBmcmFtZSBpZgor
ICAgICAgICB0aGUgaW1hZ2UgaXMgYXN5bmNocm9ub3VzbHkgZGVjb2RpbmcgaXRzIGZyYW1lcy4g
VGhpcyBzaG91bGQgbm90IGFkZCBleHRyYQorICAgICAgICBtZW1vcnkgb3ZlcmhlYWQgYmVjYXVz
ZSBidWlsZGluZyB0aGUgaW1hZ2UgZnJhbWUgY2FjaGUgYW5kIHRoZW4gZGVzdHJveWluZworICAg
ICAgICBpdCB3aGVuIG5lZWRlZCBpcyBhbiBvbi1nb2luZyBwcm9jZXNzLiBGcmFtZXMgd2lsbCBi
ZSBhbGxvY2F0ZWQgYW5kIGRlY29kZWQKKyAgICAgICAgYWxsIHRoZSB0aW1lIGJ1dCBhbGwgb2Yg
dGhlbSBjYW4gYmUgZGVzdHJveWVkIGV4cGVjdCB0aGUgY3VycmVudCBmcmFtZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpkZXN0cm95
RGVjb2RlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpkZXN0cm95
RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VGcmFtZUNhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorCiAyMDE3LTAxLTI0ICBKb3NlcGgg
UGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFsd2F5cyB0
cnVlIHNlbGVjdGlvbkluY2x1ZGVzQWx0SW1hZ2VUZXh0IHNldHRpbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaApp
bmRleCAyODY0MGE4NmZjODVkZWQwMjU2MmZmNTgwNGNjYzM0NGYxYzFlMTY3Li5mODMxMjNiYTBh
ZGQzNGJhOTEwOTg1ZDhiMGVhYzhmNTBjZTZmNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9Bc3NlcnRpb25zLmgKKysrIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCkBAIC0yNjAs
NiArMjYwLDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9p
ZCBXVEZDcmFzaFdpdGhTZWN1cml0eUltcGxpY2F0aW9uKCkKICNkZWZpbmUgQVNTRVJUKGFzc2Vy
dGlvbikgKCh2b2lkKTApCiAjZGVmaW5lIEFTU0VSVF9BVChhc3NlcnRpb24sIGZpbGUsIGxpbmUs
IGZ1bmN0aW9uKSAoKHZvaWQpMCkKICNkZWZpbmUgQVNTRVJUX05PVF9SRUFDSEVEKCkgKCh2b2lk
KTApCisjZGVmaW5lIEFTU0VSVF9JTVBMSUVTKGNvbmRpdGlvbiwgYXNzZXJ0aW9uKSAoKHZvaWQp
MCkKICNkZWZpbmUgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQKIAogI2RlZmluZSBBU1NFUlRfVU5V
U0VEKHZhcmlhYmxlLCBhc3NlcnRpb24pICgodm9pZCl2YXJpYWJsZSkKQEAgLTI5OCw2ICsyOTks
MTMgQEAgV1RGX0VYUE9SVF9QUklWQVRFIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBXVEZD
cmFzaFdpdGhTZWN1cml0eUltcGxpY2F0aW9uKCkKICAgICBDUkFTSCgpOyBcCiB9IHdoaWxlICgw
KQogCisjZGVmaW5lIEFTU0VSVF9JTVBMSUVTKGNvbmRpdGlvbiwgYXNzZXJ0aW9uKSBkbyB7IFwK
KyAgICBpZiAoKGNvbmRpdGlvbikgJiYgIShhc3NlcnRpb24pKSB7IFwKKyAgICAgICAgV1RGUmVw
b3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJ
T04sICNjb25kaXRpb24gIiA9PiAiICNhc3NlcnRpb24pOyBcCisgICAgQ1JBU0goKTsgXAorfSBc
Cit9IHdoaWxlICgwKQorCiAjZGVmaW5lIEFTU0VSVF9VTlVTRUQodmFyaWFibGUsIGFzc2VydGlv
bikgQVNTRVJUKGFzc2VydGlvbikKIAogI2RlZmluZSBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCBO
T19SRVRVUk5fRFVFX1RPX0NSQVNICmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggN2ViN2E3MTNmZjVkOGM4NGViZmU4NTQ2NWFmNjhi
ZDJiMTBjNTc0Yi4uNTkxZGZmYzM2MjE2MjQ1ZjQxMjRjNDExYzgwMWFhYmFhMDQxZjM2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApA
QCAtMTU3LDYgKzE1Nyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zCiAgICAgbV9jdXJyZW50
U3Vic2FtcGxpbmdMZXZlbCA9IGFsbG93U3Vic2FtcGxpbmcoKSA/IG1fc291cmNlLnN1YnNhbXBs
aW5nTGV2ZWxGb3JTY2FsZShzY2FsZSkgOiBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0OwogICAg
IExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZSAlcCBkcmF3IC0gc3Vic2FtcGxpbmdMZXZlbCAlZCBh
dCBzY2FsZSAlLjRmIiwgdGhpcywgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGlu
Z0xldmVsKSwgc2NhbGUpOwogCisgICAgQVNTRVJUX0lNUExJRVMocmVzdWx0ID09IFN0YXJ0QW5p
bWF0aW9uUmVzdWx0OjpEZWNvZGluZ0FjdGl2ZSwgbV9zb3VyY2UuZnJhbWVIYXNWYWxpZE5hdGl2
ZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCkp
OwogICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9j
dXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgJmNvbnRleHQpOwogICAgIGlmICghaW1hZ2UpIC8vIElm
IGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZUNhY2hlLmNwcAppbmRleCA4MWZiMWY5ODY4ZjMxMGU1MzU5ZDE2MWRjMmRhY2E1Y2M3ZDNhZWQ3
Li5lZDkwZDYzOTU0NDZiYmFkODgwMjdmMWZkNDAyYzgzMjdjNGI0Y2E0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKQEAg
LTcwLDE5ICs3MCwyMSBAQCBJbWFnZUZyYW1lQ2FjaGU6On5JbWFnZUZyYW1lQ2FjaGUoKQogICAg
IEFTU0VSVCghaGFzRGVjb2RpbmdRdWV1ZSgpKTsKIH0KIAotdm9pZCBJbWFnZUZyYW1lQ2FjaGU6
OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwsIHNpemVfdCBjb3VudCkKK3ZvaWQg
SW1hZ2VGcmFtZUNhY2hlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsLCBzaXpl
X3QgY3VycmVudEZyYW1lKQogewotICAgIGlmIChkZXN0cm95QWxsKQotICAgICAgICBjb3VudCA9
IG1fZnJhbWVzLnNpemUoKTsKLSAgICAKKyAgICBzaXplX3QgY291bnQgPSBkZXN0cm95QWxsID8g
bV9mcmFtZXMuc2l6ZSgpIDogY3VycmVudEZyYW1lOwogICAgIHVuc2lnbmVkIGRlY29kZWRTaXpl
ID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICBjb3VudDsgKytpKQorCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCAgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoaGFzRGVjb2Rp
bmdRdWV1ZSgpICYmIGkgPT0gY3VycmVudEZyYW1lKQorICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIGRlY29kZWRTaXplICs9IG1fZnJhbWVzW2ldLmNsZWFySW1hZ2UoKTsKKyAgICB9CiAK
ICAgICBkZWNvZGVkU2l6ZVJlc2V0KGRlY29kZWRTaXplKTsKIH0KIAotYm9vbCBJbWFnZUZyYW1l
Q2FjaGU6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCwgc2l6
ZV90IGNvdW50KQorYm9vbCBJbWFnZUZyYW1lQ2FjaGU6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVj
ZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCwgc2l6ZV90IGN1cnJlbnRGcmFtZSkKIHsKICAgICB1bnNp
Z25lZCBkZWNvZGVkU2l6ZSA9IDA7CiAgICAgZm9yIChhdXRvJiBmcmFtZSA6IG1fZnJhbWVzKQpA
QCAtOTEsNyArOTMsNyBAQCBib29sIEltYWdlRnJhbWVDYWNoZTo6ZGVzdHJveURlY29kZWREYXRh
SWZOZWNlc3NhcnkoYm9vbCBkZXN0cm95QWxsLCBzaXplX3QgY291bgogICAgIGlmIChkZWNvZGVk
U2l6ZSA8IExhcmdlQW5pbWF0aW9uQ3V0b2ZmKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ci0gICAgZGVzdHJveURlY29kZWREYXRhKGRlc3Ryb3lBbGwsIGNvdW50KTsKKyAgICBkZXN0cm95
RGVjb2RlZERhdGEoZGVzdHJveUFsbCwgY3VycmVudEZyYW1lKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
Q2FjaGUuaAppbmRleCAzMmVlMjFlODY5OTQzYWUwN2Y2NWE3OWE4MTAxNzNlNDQ3NjhlZGNkLi5l
YzYwMTY1YzlkZDQxMTBiYjlmOWIzOTkyNjY3Zjg2M2U4NjQ1ZDAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaApAQCAtNTksOCAr
NTksOCBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEZWNvZGVyKiBkZWNvZGVyKCkgY29uc3QgeyByZXR1
cm4gbV9kZWNvZGVyOyB9CiAKICAgICB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVjb2RlZFNpemU7IH0KLSAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRl
c3Ryb3lBbGwgPSB0cnVlLCBzaXplX3QgY291bnQgPSAwKTsKLSAgICBib29sIGRlc3Ryb3lEZWNv
ZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCA9IHRydWUsIHNpemVfdCBjb3VudCA9
IDApOworICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCA9IHRydWUs
IHNpemVfdCBjdXJyZW50RnJhbWUgPSAwKTsKKyAgICBib29sIGRlc3Ryb3lEZWNvZGVkRGF0YUlm
TmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCA9IHRydWUsIHNpemVfdCBjdXJyZW50RnJhbWUgPSAw
KTsKICAgICB2b2lkIGRlc3Ryb3lJbmNvbXBsZXRlRGVjb2RlZERhdGEoKTsKIAogICAgIHZvaWQg
Z3Jvd0ZyYW1lcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCmluZGV4IDkxMGQ2MWRhNmUxZjQzYzkyYTNhZmMwNDk5OGYyNjJjYWVlZGFh
ZmQuLmQwM2U0MWIxNWRmODM4OTZkMjkwOWQxM2M5ZmM2MDM1YTM0OWYzZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTY4LDEy
ICs2OCwxMiBAQCB2b2lkIEltYWdlU291cmNlOjpjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90
IGNsZWFyQmVmb3JlRnJhbWUpCiAgICAgbV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUo
Y2xlYXJCZWZvcmVGcmFtZSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVz
dHJveUFsbCwgc2l6ZV90IGNvdW50LCBTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIEltYWdlU291
cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGwsIHNpemVfdCBjdXJyZW50RnJhbWUsIFNoYXJlZEJ1
ZmZlciogZGF0YSkKIHsKICAgICAvLyBUaGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdheSB0aGUg
ZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBhc2tlZAogICAgIC8vIHRvIGRlc3Ryb3kg
YWxsIG9mIHRoZSBmcmFtZXMuCiAgICAgaWYgKCFkZXN0cm95QWxsIHx8IG1fZnJhbWVDYWNoZS0+
aGFzRGVjb2RpbmdRdWV1ZSgpKSB7Ci0gICAgICAgIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShjb3Vu
dCk7CisgICAgICAgIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShjdXJyZW50RnJhbWUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC04MiwyMyArODIsMjMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6
Y2xlYXIoYm9vbCBkZXN0cm95QWxsLCBzaXplX3QgY291bnQsIFNoYXJlZEJ1ZmZlciogZGF0YSkK
ICAgICBzZXREYXRhKGRhdGEsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQogCi12b2lkIEltYWdl
U291cmNlOjpkZXN0cm95RGVjb2RlZERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGRlc3Ry
b3lBbGwsIHNpemVfdCBjb3VudCkKK3ZvaWQgSW1hZ2VTb3VyY2U6OmRlc3Ryb3lEZWNvZGVkRGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgZGVzdHJveUFsbCwgc2l6ZV90IGN1cnJlbnRGcmFt
ZSkKIHsKLSAgICBtX2ZyYW1lQ2FjaGUtPmRlc3Ryb3lEZWNvZGVkRGF0YShkZXN0cm95QWxsLCBj
b3VudCk7Ci0gICAgY2xlYXIoZGVzdHJveUFsbCwgY291bnQsIGRhdGEpOworICAgIG1fZnJhbWVD
YWNoZS0+ZGVzdHJveURlY29kZWREYXRhKGRlc3Ryb3lBbGwsIGN1cnJlbnRGcmFtZSk7CisgICAg
Y2xlYXIoZGVzdHJveUFsbCwgY3VycmVudEZyYW1lLCBkYXRhKTsKIH0KIAotYm9vbCBJbWFnZVNv
dXJjZTo6ZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkoU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGRlc3Ryb3lBbGwsIHNpemVfdCBjb3VudCkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmRlc3Ryb3lE
ZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBkZXN0cm95QWxs
LCBzaXplX3QgY3VycmVudEZyYW1lKQogewogICAgIC8vIElmIHdlIGhhdmUgZGVjb2RlZCBmcmFt
ZXMgYnV0IHRoZXJlIGlzIG5vIGVuY29kZWQgZGF0YSwgd2Ugc2hvdWxkbid0IGRlc3Ryb3kKICAg
ICAvLyB0aGUgZGVjb2RlZCBpbWFnZSBzaW5jZSB3ZSB3b24ndCBiZSBhYmxlIHRvIHJlY29uc3Ry
dWN0IGl0IGxhdGVyLgogICAgIGlmICghZGF0YSAmJiBtX2ZyYW1lQ2FjaGUtPmZyYW1lQ291bnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFtX2ZyYW1lQ2FjaGUtPmRlc3Ry
b3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGRlc3Ryb3lBbGwsIGNvdW50KSkKKyAgICBpZiAoIW1f
ZnJhbWVDYWNoZS0+ZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkoZGVzdHJveUFsbCwgY3Vy
cmVudEZyYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY2xlYXIoZGVzdHJveUFs
bCwgY291bnQsIGRhdGEpOworICAgIGNsZWFyKGRlc3Ryb3lBbGwsIGN1cnJlbnRGcmFtZSwgZGF0
YSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IDczODE4ZDlmMDVkODFlYjgzMmMyNGM3MmYxOWI2
NDBlYTI0ZTZkYTEuLjdiYTk5ODBlZTkyZjI5MWY1N2NhNGZlZTQ1NWQ1M2E0MTA1M2E1YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAt
NTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgSW1hZ2VTb3VyY2UoSW1hZ2UqLCBBbHBoYU9wdGlv
biA9IEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biA9IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKTsKICAgICB+SW1hZ2VTb3Vy
Y2UoKTsKIAotICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Ym9vbCBkZXN0cm95QWxsID0gdHJ1ZSwgc2l6ZV90IGNvdW50ID0gMCk7Ci0gICAgYm9vbCBkZXN0
cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgZGVzdHJv
eUFsbCA9IHRydWUsIHNpemVfdCBjb3VudCA9IDApOworICAgIHZvaWQgZGVzdHJveURlY29kZWRE
YXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSwgc2l6ZV90IGN1
cnJlbnRGcmFtZSA9IDApOworICAgIGJvb2wgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3Nhcnko
U2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGRlc3Ryb3lBbGwgPSB0cnVlLCBzaXplX3QgY3VycmVu
dEZyYW1lID0gMCk7CiAKICAgICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVm
ZmVyKik7CiAgICAgYm9vbCBpc0RlY29kZXJBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2Rl
Y29kZXIuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZWFhMTFmM2E3ZTcwZWVkOGIyYWMyMWU3ZjkyOWJkYzI1
YjY3Yjk5Li4zN2Y3OGE4Y2Y2YWMyOGU2MGQyZjdiMTMwYTEzZjc3N2MxMmFkYjdjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTctMDEtMzEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgY3VycmVudCBmcmFtZSBvZiBhbiBpbWFnZSBz
aG91bGQgbm90IGRlbGV0ZWQgaWYgYW5vdGhlciBmcmFtZSBpcyBhc3luY2hyb25vdXNseSBiZWlu
ZyBkZWNvZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjc2MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHRlc3QgZGlkIG5vdCBjcmFzaCBvbiBNYWMgd2hlbiBydW5uaW5nIGl0IHdpdGhvdXQg
dGhpcyBwYXRjaC4gQnV0CisgICAgICAgIHRoZSBuZXcgQVNTRVJUX0lNUExJRVMoKSwgd2hpY2gg
aXMgYWRkZWQgdG8gQml0bWFwSW1hZ2U6OmRyYXcoKSwgZmlyZWQKKyAgICAgICAgd2hlbiB0aGUg
Y2hhbmdlIGluIEltYWdlRnJhbWVDYWNoZTo6ZGVzdHJveURlY29kZWREYXRhKCkgd2FzIG5vdCBp
bmNsdWRlZC4KKyAgICAgICAgU28gdGhlIGJ1ZyBjb3VsZCBoYXZlIGhhcHBlbmVkIHdpdGhvdXQg
dGhlIHBhdGNoIGJ1dCB0aGUgY3Jhc2ggZGlkIG5vdAorICAgICAgICBzaW5jZSBpdCByZXF1aXJl
cyBhIHRocmVhZCBjb250ZW50aW9uIGluIHRoZSBzeXN0ZW0gdW5kZXJseWluZyBjb21wb25lbnRz
LgorCisgICAgICAgICogZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaW1hZ2UtZHJhdy13aGlsZS1kZWNv
ZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9hbmltYXRlZC1p
bWFnZS1kcmF3LXdoaWxlLWRlY29kZS5odG1sOiBBZGRlZC4KKwogMjAxNy0wMS0yNCAgUnlhbiBI
YWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBtb2Rlcm4tbWVkaWEtY29u
dHJvbHMgTGF5b3V0VGVzdCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1kcmF3LXdoaWxlLWRlY29kZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1kcmF3LXdoaWxlLWRlY29kZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFmYTBiZmQxNTg5YzFjY2I1MGY0ZDUzMWJhZjRkYzVj
NjUxMzM5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1h
dGVkLWltYWdlLWRyYXctd2hpbGUtZGVjb2RlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitQ
QVNTLiBXZWJLaXQgZGlkbid0IGNyYXNoLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9p
bWFnZXMvYW5pbWF0ZWQtaW1hZ2UtZHJhdy13aGlsZS1kZWNvZGUuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWltYWdlLWRyYXctd2hpbGUtZGVjb2RlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTc1NTYzZTg5NTIzMTA0MjVhMDM2NTM1MTA3NzZhMjk4Zjk5OGMxZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWltYWdlLWRyYXctd2hp
bGUtZGVjb2RlLmh0bWwKQEAgLTAsMCArMSw2NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxzdHlsZT4KKyAgICBjYW52YXMgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhl
aWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4gICAgCis8Ym9keT4KKyAgICA8Y2FudmFzIGlk
PSJjYW52YXMiPjwvY2FudmFzPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIGRyYXdG
cmFtZShpbWFnZSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9
PiB7CisgICAgICAgICAgICAgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKKyAgICAgICAgICAgICAgICBsZXQgY29udGV4dCA9IGNhbnZhcy5nZXRDb250
ZXh0KCIyZCIpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAw
LCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoKCkgPT4geworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAg
ICAgfSwgMyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGRyYXdJbWFnZShpbWFnZSwgZnJhbWVDb3VudCkgeworICAgICAgICAgICAgbGV0IHByb21pc2Ug
PSBkcmF3RnJhbWUoaW1hZ2UpOworICAgICAgICAgICAgZm9yIChsZXQgZnJhbWUgPSAxOyBmcmFt
ZSA8IGZyYW1lQ291bnQ7ICsrZnJhbWUpIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlID0gcHJv
bWlzZS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBmb3JjZXMgZGVz
dHJveURlY29kZWREYXRhKCkgdG8gYmUgY2FsbGVkLgorICAgICAgICAgICAgICAgICAgICBpbnRl
cm5hbHMucHJ1bmVNZW1vcnlDYWNoZVRvU2l6ZSgwKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGRyYXdGcmFtZShpbWFnZSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGxvYWRJbWFnZShzcmMsIGZyYW1lQ291bnQpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcg
UHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICAgICAgICAgIGxldCBpbWFnZSA9IG5ldyBJ
bWFnZTsKKyAgICAgICAgICAgICAgICBpbWFnZS5vbmxvYWQgPSAoKCkgPT4geworICAgICAgICAg
ICAgICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZm9yY2VzIGF5c25jIGltYWdl
IGRlY29kaW5nLgorICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0SW1hZ2VGcmFtZURl
Y29kaW5nRHVyYXRpb24oaW1hZ2UsIDAuMDMpOworICAgICAgICAgICAgICAgICAgICBkcmF3SW1h
Z2UoaW1hZ2UsIGZyYW1lQ291bnQpLnRoZW4ocmVzb2x2ZSk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgaW1hZ2Uuc3JjID0gc3JjOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKworICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgbG9hZEltYWdlKCJyZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJs
dWUuZ2lmIiwgMTApLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiUEFTUy4gV2Vi
S2l0IGRpZG4ndCBjcmFzaC4iKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
KCk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300279</attachid>
            <date>2017-01-31 16:01:25 -0800</date>
            <delta_ts>2017-02-03 12:25:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167618-20170131155914.patch</filename>
            <type>text/plain</type>
            <size>18358</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE0Yzc5NjgxN2YyYjNlZGY4YmYyYjAz
Nzg3OGM4NzQwZjc2YmJkMDUuLmJjMTRkZTUwNzJmYTk3MTg3OWMzNzk2ODhkNGI2NmNhMGM4NTVm
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDEtMzEgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgY3VycmVudCBmcmFtZSBvZiBh
biBpbWFnZSBzaG91bGQgbm90IGRlbGV0ZWQgaWYgYW5vdGhlciBmcmFtZSBpcyBhc3luY2hyb25v
dXNseSBiZWluZyBkZWNvZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjc2MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgQVNTRVJUX0lNUExJRVMoKSB3aGljaCBzaG91bGQgZmlyZSB3aGVuIGEg
Y29uZGl0aW9uIGlzIHRydWUgYnV0IHRoZQorICAgICAgICBhc3NlcnRpb24gaXMgZmFsc2UuCisK
KyAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5oOgorCiAyMDE3LTAxLTI0ICBLb25zdGFudGluIFRv
a2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBWUzIwMTUgc3VwcG9ydHMgcmVm
IHF1YWxpZmllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYzI5N2Q0Zjg3YzM3MzUwNWU5MDkxNGJmNzcxZGQ0
N2NhZTRlZGRiLi5kMjhlZTlmNzVjMmRlZDZlOGQ0ODNlMzZlYzgyZTg2ZTgxZmU5Yjk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTctMDEtMzEgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgY3VycmVudCBmcmFtZSBvZiBh
biBpbWFnZSBzaG91bGQgbm90IGRlbGV0ZWQgaWYgYW5vdGhlciBmcmFtZSBpcyBhc3luY2hyb25v
dXNseSBiZWluZyBkZWNvZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjc2MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0OiBmYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1kcmF3LXdoaWxlLWRl
Y29kZS5odG1sCisKKyAgICAgICAgSWYgdGhlIG1lbW9yeSBjYWNoZSBhc2tzIHRoZSBCaXRtYXBJ
bWFnZSB0byBkZXN0cm95IGFsbCBpdHMgZnJhbWVzIHdoaWxlCisgICAgICAgIHRoZSBuZXh0IGZy
YW1lIGlzIGJlaW5nIGRlY29kZWQsIGEgdGhyZWFkIGNvbnRlbnRpb24gbWF5IGhhcHBlbi4gVGhp
cyBjYW4KKyAgICAgICAgaGFwcGVuIHdoZW4gQml0bWFwSW1hZ2U6OmRyYXcoKSBpcyBjYWxsZWQg
YW5kIHRoZSBuZXh0IGZyYW1lIGlzIG5vdCByZWFkeQorICAgICAgICB5ZXQgZm9yIGRyYXdpbmcs
IHNvIHRoZSBjdXJyZW50IGZyYW1lIGhhcyB0byBiZSBkcmF3bi4gVGhpcyB3aWxsIGludm9rZQor
ICAgICAgICBhIGZyYW1lIGRlY29kaW5nIGluIHRoZSBzYW1lIGltYWdlIGZyb20gdGhlIGRyYXdp
bmcgY29tbWl0dGluZyB0aHJlYWQuCisKKyAgICAgICAgV2UgY2FuIGF2b2lkIHRoYXQgYnkgZGVz
dHJveWluZyBhbGwgdGhlIGZyYW1lcyBleHBlY3QgdGhlIGN1cnJlbnQgZnJhbWUgaWYKKyAgICAg
ICAgdGhlIGltYWdlIGlzIGFzeW5jaHJvbm91c2x5IGRlY29kaW5nIGl0cyBmcmFtZXMuIFRoaXMg
c2hvdWxkIG5vdCBhZGQgZXh0cmEKKyAgICAgICAgbWVtb3J5IG92ZXJoZWFkIGJlY2F1c2UgYnVp
bGRpbmcgdGhlIGltYWdlIGZyYW1lIGNhY2hlIGFuZCB0aGVuIGRlc3Ryb3lpbmcKKyAgICAgICAg
aXQsIHdoZW4gbmVlZGVkLCBpcyBhbiBvbi1nb2luZyBwcm9jZXNzLiBUaGUgZnJhbWVzIHdpbGwg
YmUgYWxsb2NhdGVkIGFuZAorICAgICAgICBkZWNvZGVkIGFsbCB0aGUgdGltZSBhbmQgYWxsIG9m
IHRoZW0gY2FuIGJlIGRlc3Ryb3llZCBleGNlcHQgdGhlIGN1cnJlbnQgb25lLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YSk6IAorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KTogCisgICAgICAgIFRoZSBs
b2dpYyBvZiBkZXN0cm95aW5nIHRoZSBJbWFnZUZyYW1lcyB3YXMgc3BsaXQgYW1vbmcgQml0bWFw
SW1hZ2UsIEltYWdlU291cmNlCisgICAgICAgIGFuZCBJbWFnZUZyYW1lQ2FjaGUuIE1vdmUgYWxs
IHRoZSBsb2dpYyB0byBCaXRtYXBJbWFnZSBhbmQgaGF2ZSBJbWFnZUZyYW1lQ2FjaGUgYmUKKyAg
ICAgICAgcmVzcG9uc2libGUgdW5jb25kaXRpb25hbGx5IGZvciBkZXN0cm95aW5nIGEgcmFuZ2Ug
b2YgSW1hZ2VGcmFtZXMuCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6IEFk
ZCBhbiBBU1NFUlRfSU1QTElFUyB0byBlbnN1cmUgdGhlIGN1cnJlbnQgZnJhbWUKKyAgICAgICAg
aXMgcmVhZHkgdG8gYmUgcmVuZGVyZWQgaWYgdGhlIG5leHQgZnJhbWUgaXMgYmVpbmcgZGVjb2Rl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOiBNb3ZlIGEgY29u
c3QgZnJvbSBJbWFnZUZyYW1lQ2FjaGUuaCB0byBCaXRtYXBJbWFnZS5oLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZUNhY2hlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZUNhY2hlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6IERlbGV0ZWQu
CisgICAgICAgIEhhdmUgYSBzaW5nbGUgZnVuY3Rpb24gaW4gSW1hZ2VGcmFtZUNhY2hlIHRvIGRl
c3Ryb3kgYSByYW5nZSBvZiBJbWFnZUZyYW1lcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUZyYW1lQ2FjaGUuaDogUmVtb3ZlIHVudXNlZCBjb25zdGFudC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6Y2xlYXIpOiBObyBuZWVkIHRvIGNhbGwgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkg
ZnJvbSBjbGVhcigpLgorICAgICAgICBUaGUgZGVjaXNpb24gdG8gY2FsbCBjbGVhckZyYW1lQnVm
ZmVyQ2FjaGUoKSBvciBjbGVhcigpIGlzIG1vdmVkIHRvCisgICAgICAgICBCaXRtYXBJbWFnZTo6
ZGVzdHJveURlY29kZWREYXRhKCkuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZGVz
dHJveURlY29kZWREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIFRoZXNl
IGZ1bmN0aW9ucyBhcmUgbW92ZWQgdG8gdGhlIGhlYWRlciBJbWFnZVNvdXJjZS5oLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZGVzdHJveURlY29kZWREYXRhKTogVGhpcyBpcyBqdXN0IGEgd3JhcHBlciB3
aGljaCBjYWxscyBJbWFnZUZyYW1lQ2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6aGFzRGVjb2RpbmdRdWV1ZSk6IERpdHRvLgorCiAyMDE3LTAxLTI0ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFsd2F5cyB0cnVlIHNl
bGVjdGlvbkluY2x1ZGVzQWx0SW1hZ2VUZXh0IHNldHRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0Fzc2VydGlvbnMuaCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAppbmRleCAy
ODY0MGE4NmZjODVkZWQwMjU2MmZmNTgwNGNjYzM0NGYxYzFlMTY3Li5mODMxMjNiYTBhZGQzNGJh
OTEwOTg1ZDhiMGVhYzhmNTBjZTZmNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Bc3Nl
cnRpb25zLmgKKysrIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCkBAIC0yNjAsNiArMjYw
LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBXVEZD
cmFzaFdpdGhTZWN1cml0eUltcGxpY2F0aW9uKCkKICNkZWZpbmUgQVNTRVJUKGFzc2VydGlvbikg
KCh2b2lkKTApCiAjZGVmaW5lIEFTU0VSVF9BVChhc3NlcnRpb24sIGZpbGUsIGxpbmUsIGZ1bmN0
aW9uKSAoKHZvaWQpMCkKICNkZWZpbmUgQVNTRVJUX05PVF9SRUFDSEVEKCkgKCh2b2lkKTApCisj
ZGVmaW5lIEFTU0VSVF9JTVBMSUVTKGNvbmRpdGlvbiwgYXNzZXJ0aW9uKSAoKHZvaWQpMCkKICNk
ZWZpbmUgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQKIAogI2RlZmluZSBBU1NFUlRfVU5VU0VEKHZh
cmlhYmxlLCBhc3NlcnRpb24pICgodm9pZCl2YXJpYWJsZSkKQEAgLTI5OCw2ICsyOTksMTMgQEAg
V1RGX0VYUE9SVF9QUklWQVRFIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBXVEZDcmFzaFdp
dGhTZWN1cml0eUltcGxpY2F0aW9uKCkKICAgICBDUkFTSCgpOyBcCiB9IHdoaWxlICgwKQogCisj
ZGVmaW5lIEFTU0VSVF9JTVBMSUVTKGNvbmRpdGlvbiwgYXNzZXJ0aW9uKSBkbyB7IFwKKyAgICBp
ZiAoKGNvbmRpdGlvbikgJiYgIShhc3NlcnRpb24pKSB7IFwKKyAgICAgICAgV1RGUmVwb3J0QXNz
ZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICNj
b25kaXRpb24gIiA9PiAiICNhc3NlcnRpb24pOyBcCisgICAgQ1JBU0goKTsgXAorfSBcCit9IHdo
aWxlICgwKQorCiAjZGVmaW5lIEFTU0VSVF9VTlVTRUQodmFyaWFibGUsIGFzc2VydGlvbikgQVNT
RVJUKGFzc2VydGlvbikKIAogI2RlZmluZSBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCBOT19SRVRV
Uk5fRFVFX1RPX0NSQVNICmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKaW5kZXggN2ViN2E3MTNmZjVkOGM4NGViZmU4NTQ2NWFmNjhiZDJiMTBj
NTc0Yi4uY2M2NTlmNTEwZjA0ZDg1NTY0YWNjMjM2MmQ3Y2Q4NGE1ZmQzZjQxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNjUs
MTMgKzY1LDM1IEBAIEJpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQogCiB2b2lkIEJpdG1hcElt
YWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQogewotICAgIG1fc291cmNl
LmRlc3Ryb3lEZWNvZGVkRGF0YShkYXRhKCksIGRlc3Ryb3lBbGwsIG1fY3VycmVudEZyYW1lKTsK
KyAgICBtX3NvdXJjZS5kZXN0cm95RGVjb2RlZERhdGEoMCwgbV9jdXJyZW50RnJhbWUpOworICAg
IAorICAgIGlmIChkZXN0cm95QWxsKSB7CisgICAgICAgIC8vIERvbid0IGRlbGV0ZSB0aGUgY3Vy
cmVudCBmcmFtZSBpZiB0aGUgZnJhbWVzIGFyZSBiZWluZyBhc3luY2hyb25vdXNseSBkZWNvZGVk
LgorICAgICAgICBzaXplX3QgbWluRnJhbWUgPSBtX3NvdXJjZS5oYXNEZWNvZGluZ1F1ZXVlKCkg
PyBtX2N1cnJlbnRGcmFtZSArIDEgOiBtX2N1cnJlbnRGcmFtZTsKKyAgICAgICAgbV9zb3VyY2Uu
ZGVzdHJveURlY29kZWREYXRhKG1pbkZyYW1lLCBmcmFtZUNvdW50KCkpOworICAgIH0KKworICAg
IC8vIFRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5IHRoZSBkZWNvZGVyIHVubGVzcyB3ZSdy
ZSBleHBsaWNpdGx5IGFza2VkCisgICAgLy8gdG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1lcy4K
KyAgICBpZiAoIWRlc3Ryb3lBbGwgfHwgbV9zb3VyY2UuaGFzRGVjb2RpbmdRdWV1ZSgpKQorICAg
ICAgICBtX3NvdXJjZS5jbGVhckZyYW1lQnVmZmVyQ2FjaGUobV9jdXJyZW50RnJhbWUpOworICAg
IGVsc2UKKyAgICAgICAgbV9zb3VyY2UuY2xlYXIoZGF0YSgpKTsKKwogICAgIGludmFsaWRhdGVQ
bGF0Zm9ybURhdGEoKTsKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRh
SWZOZWNlc3NhcnkoYm9vbCBkZXN0cm95QWxsKQogewotICAgIG1fc291cmNlLmRlc3Ryb3lEZWNv
ZGVkRGF0YUlmTmVjZXNzYXJ5KGRhdGEoKSwgZGVzdHJveUFsbCwgbV9jdXJyZW50RnJhbWUpOwor
ICAgIC8vIElmIHdlIGhhdmUgZGVjb2RlZCBmcmFtZXMgYnV0IHRoZXJlIGlzIG5vIGVuY29kZWQg
ZGF0YSwgd2Ugc2hvdWxkbid0IGRlc3Ryb3kKKyAgICAvLyB0aGUgZGVjb2RlZCBpbWFnZSBzaW5j
ZSB3ZSB3b24ndCBiZSBhYmxlIHRvIHJlY29uc3RydWN0IGl0IGxhdGVyLgorICAgIGlmICghZGF0
YSgpICYmIGZyYW1lQ291bnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc291cmNl
LmRlY29kZWRTaXplKCkgPCBMYXJnZUFuaW1hdGlvbkN1dG9mZikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZGVzdHJveURlY29kZWREYXRhKGRlc3Ryb3lBbGwpOwogfQogCiBib29sIEJpdG1hcElt
YWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKQEAgLTE1Nyw2ICsxNzksNyBA
QCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29ucwogICAgIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwg
PSBhbGxvd1N1YnNhbXBsaW5nKCkgPyBtX3NvdXJjZS5zdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUo
c2NhbGUpIDogU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdDsKICAgICBMT0coSW1hZ2VzLCAiQml0
bWFwSW1hZ2UgJXAgZHJhdyAtIHN1YnNhbXBsaW5nTGV2ZWwgJWQgYXQgc2NhbGUgJS40ZiIsIHRo
aXMsIHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCksIHNjYWxlKTsK
IAorICAgIEFTU0VSVF9JTVBMSUVTKHJlc3VsdCA9PSBTdGFydEFuaW1hdGlvblJlc3VsdDo6RGVj
b2RpbmdBY3RpdmUsIG1fc291cmNlLmZyYW1lSGFzVmFsaWROYXRpdmVJbWFnZUF0SW5kZXgobV9j
dXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwpKTsKICAgICBhdXRvIGltYWdl
ID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5n
TGV2ZWwsICZjb250ZXh0KTsKICAgICBpZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3
ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNDEyNGZhNjUzNGQx
MDgyNzc4YTZlZGViNDBhOTkyYjY4NDc2YWIzNS4uMWQ5MmIxZjZhNDZkNDNhOTcxMWUxMTU5OTYx
YjEwZjRlYzFjYjM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5oCkBAIC0xOTAsNiArMTkwLDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0Jp
dG1hcEltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgZHVt
cChUZXh0U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICAvLyBBbmltYXRlZCBpbWFnZXMg
b3ZlciBhIGNlcnRhaW4gc2l6ZSBhcmUgY29uc2lkZXJlZCBsYXJnZSBlbm91Z2ggdGhhdCB3ZSds
bCBvbmx5IGhhbmcgb24gdG8gb25lIGZyYW1lIGF0IGEgdGltZS4KKyNpZiAhUExBVEZPUk0oSU9T
KQorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBMYXJnZUFuaW1hdGlvbkN1dG9mZiA9IDUyNDI4
ODA7CisjZWxzZQorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBMYXJnZUFuaW1hdGlvbkN1dG9m
ZiA9IDIwOTcxNTI7CisjZW5kaWYKKwogICAgIG11dGFibGUgSW1hZ2VTb3VyY2UgbV9zb3VyY2U7
CiAKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWUgeyAwIH07IC8vIFRoZSBpbmRleCBvZiB0aGUg
Y3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAppbmRleCA4MWZiMWY5ODY4ZjMxMGU1
MzU5ZDE2MWRjMmRhY2E1Y2M3ZDNhZWQ3Li5hODZiZGIzOTQ5N2VmZGI0NDk4YzllYjJhYmJjYzU1
ZmFlODNkZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUZyYW1lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlRnJhbWVDYWNoZS5jcHAKQEAgLTcwLDMxICs3MCwxNiBAQCBJbWFnZUZyYW1lQ2FjaGU6
On5JbWFnZUZyYW1lQ2FjaGUoKQogICAgIEFTU0VSVCghaGFzRGVjb2RpbmdRdWV1ZSgpKTsKIH0K
IAotdm9pZCBJbWFnZUZyYW1lQ2FjaGU6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lB
bGwsIHNpemVfdCBjb3VudCkKK3ZvaWQgSW1hZ2VGcmFtZUNhY2hlOjpkZXN0cm95RGVjb2RlZERh
dGEoc2l6ZV90IG1pbkZyYW1lLCBzaXplX3QgbWF4RnJhbWUpCiB7Ci0gICAgaWYgKGRlc3Ryb3lB
bGwpCi0gICAgICAgIGNvdW50ID0gbV9mcmFtZXMuc2l6ZSgpOwotICAgIAogICAgIHVuc2lnbmVk
IGRlY29kZWRTaXplID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICBjb3VudDsgKytp
KQorCisgICAgZm9yIChzaXplX3QgaSA9IG1pbkZyYW1lOyBpIDwgIG1heEZyYW1lOyArK2kpCiAg
ICAgICAgIGRlY29kZWRTaXplICs9IG1fZnJhbWVzW2ldLmNsZWFySW1hZ2UoKTsKIAogICAgIGRl
Y29kZWRTaXplUmVzZXQoZGVjb2RlZFNpemUpOwogfQogCi1ib29sIEltYWdlRnJhbWVDYWNoZTo6
ZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkoYm9vbCBkZXN0cm95QWxsLCBzaXplX3QgY291
bnQpCi17Ci0gICAgdW5zaWduZWQgZGVjb2RlZFNpemUgPSAwOwotICAgIGZvciAoYXV0byYgZnJh
bWUgOiBtX2ZyYW1lcykKLSAgICAgICAgZGVjb2RlZFNpemUgKz0gZnJhbWUuZnJhbWVCeXRlcygp
OwotICAgIAotICAgIGlmIChkZWNvZGVkU2l6ZSA8IExhcmdlQW5pbWF0aW9uQ3V0b2ZmKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgZGVzdHJveURlY29kZWREYXRhKGRlc3Ryb3lB
bGwsIGNvdW50KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBJbWFnZUZyYW1lQ2FjaGU6
OmRlc3Ryb3lJbmNvbXBsZXRlRGVjb2RlZERhdGEoKQogewogICAgIHVuc2lnbmVkIGRlY29kZWRT
aXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZUNhY2hlLmgKaW5kZXggMzJlZTIxZTg2OTk0M2FlMDdmNjVhNzlhODEwMTczZTQ0NzY4ZWRj
ZC4uNmJiYWRiOWMxZjIxYjMzNzJmMTY0ODBiYmI1NDhmZjAyYmUwY2U3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmgKQEAgLTU5
LDggKzU5LDcgQEAgcHVibGljOgogICAgIEltYWdlRGVjb2RlciogZGVjb2RlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZGVjb2RlcjsgfQogCiAgICAgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7
IHJldHVybiBtX2RlY29kZWRTaXplOyB9Ci0gICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9v
bCBkZXN0cm95QWxsID0gdHJ1ZSwgc2l6ZV90IGNvdW50ID0gMCk7Ci0gICAgYm9vbCBkZXN0cm95
RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwgPSB0cnVlLCBzaXplX3QgY291
bnQgPSAwKTsKKyAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShzaXplX3QgbWluRnJhbWUsIHNp
emVfdCBtYXhGcmFtZSk7CiAgICAgdm9pZCBkZXN0cm95SW5jb21wbGV0ZURlY29kZWREYXRhKCk7
CiAKICAgICB2b2lkIGdyb3dGcmFtZXMoKTsKQEAgLTEyOCwxMyArMTI3LDYgQEAgcHJpdmF0ZToK
IAogICAgIGNvbnN0IEltYWdlRnJhbWUmIGZyYW1lQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwsIEltYWdlRnJhbWU6OkNhY2hpbmcpOwogCi0gICAgLy8gQW5pbWF0ZWQgaW1hZ2VzIG92
ZXIgYSBjZXJ0YWluIHNpemUgYXJlIGNvbnNpZGVyZWQgbGFyZ2UgZW5vdWdoIHRoYXQgd2UnbGwg
b25seSBoYW5nIG9uIHRvIG9uZSBmcmFtZSBhdCBhIHRpbWUuCi0jaWYgIVBMQVRGT1JNKElPUykK
LSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTGFyZ2VBbmltYXRpb25DdXRvZmYgPSA1MjQyODgw
OwotI2Vsc2UKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTGFyZ2VBbmltYXRpb25DdXRvZmYg
PSAyMDk3MTUyOwotI2VuZGlmCi0KICAgICBJbWFnZSogbV9pbWFnZSB7IG51bGxwdHIgfTsKICAg
ICBJbWFnZURlY29kZXIqIG1fZGVjb2RlciB7IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX2Rl
Y29kZWRTaXplIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwCmluZGV4IDkxMGQ2MWRhNmUxZjQzYzkyYTNhZmMwNDk5OGYyNjJjYWVl
ZGFhZmQuLmQ5NDI1MTIyYTk2NzIwYjNkNTU4ZjliMTBjNGI4YTA3YTBjMDZmOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTY4
LDQwICs2OCwxMyBAQCB2b2lkIEltYWdlU291cmNlOjpjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6
ZV90IGNsZWFyQmVmb3JlRnJhbWUpCiAgICAgbV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2Fj
aGUoY2xlYXJCZWZvcmVGcmFtZSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wg
ZGVzdHJveUFsbCwgc2l6ZV90IGNvdW50LCBTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIEltYWdl
U291cmNlOjpjbGVhcihTaGFyZWRCdWZmZXIqIGRhdGEpCiB7Ci0gICAgLy8gVGhlcmUncyBubyBu
ZWVkIHRvIHRocm93IGF3YXkgdGhlIGRlY29kZXIgdW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNr
ZWQKLSAgICAvLyB0byBkZXN0cm95IGFsbCBvZiB0aGUgZnJhbWVzLgotICAgIGlmICghZGVzdHJv
eUFsbCB8fCBtX2ZyYW1lQ2FjaGUtPmhhc0RlY29kaW5nUXVldWUoKSkgewotICAgICAgICBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoY291bnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAg
bV9kZWNvZGVyID0gbnVsbHB0cjsKICAgICBtX2ZyYW1lQ2FjaGUtPnNldERlY29kZXIobnVsbHB0
cik7CiAgICAgc2V0RGF0YShkYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIAotdm9pZCBJ
bWFnZVNvdXJjZTo6ZGVzdHJveURlY29kZWREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBk
ZXN0cm95QWxsLCBzaXplX3QgY291bnQpCi17Ci0gICAgbV9mcmFtZUNhY2hlLT5kZXN0cm95RGVj
b2RlZERhdGEoZGVzdHJveUFsbCwgY291bnQpOwotICAgIGNsZWFyKGRlc3Ryb3lBbGwsIGNvdW50
LCBkYXRhKTsKLX0KLQotYm9vbCBJbWFnZVNvdXJjZTo6ZGVzdHJveURlY29kZWREYXRhSWZOZWNl
c3NhcnkoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGRlc3Ryb3lBbGwsIHNpemVfdCBjb3VudCkK
LXsKLSAgICAvLyBJZiB3ZSBoYXZlIGRlY29kZWQgZnJhbWVzIGJ1dCB0aGVyZSBpcyBubyBlbmNv
ZGVkIGRhdGEsIHdlIHNob3VsZG4ndCBkZXN0cm95Ci0gICAgLy8gdGhlIGRlY29kZWQgaW1hZ2Ug
c2luY2Ugd2Ugd29uJ3QgYmUgYWJsZSB0byByZWNvbnN0cnVjdCBpdCBsYXRlci4KLSAgICBpZiAo
IWRhdGEgJiYgbV9mcmFtZUNhY2hlLT5mcmFtZUNvdW50KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGlmICghbV9mcmFtZUNhY2hlLT5kZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2Fy
eShkZXN0cm95QWxsLCBjb3VudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNsZWFy
KGRlc3Ryb3lBbGwsIGNvdW50LCBkYXRhKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBJ
bWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRhdGEpCiB7
CiAgICAgaWYgKCFkYXRhIHx8IGlzRGVjb2RlckF2YWlsYWJsZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggNzM4MThkOWYwNWQ4MWVi
ODMyYzI0YzcyZjE5YjY0MGVhMjRlNmRhMS4uMTVmMjQ3YmQxMTM5NTg2ZGQ0YzIyMTRiMmVhNDg0
MTg5YjU5NDVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oCkBAIC01Myw4ICs1Myw5IEBAIHB1YmxpYzoKICAgICBJbWFnZVNvdXJjZShJbWFn
ZSosIEFscGhhT3B0aW9uID0gQWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uID0gR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246OkFwcGxpZWQpOwog
ICAgIH5JbWFnZVNvdXJjZSgpOwogCi0gICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGRlc3Ryb3lBbGwgPSB0cnVlLCBzaXplX3QgY291bnQgPSAwKTsK
LSAgICBib29sIGRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSwgc2l6ZV90IGNvdW50ID0gMCk7CisgICAgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoc2l6ZV90IG1pbkZyYW1lLCBzaXplX3QgbWF4RnJhbWUpIHsgbV9m
cmFtZUNhY2hlLT5kZXN0cm95RGVjb2RlZERhdGEobWluRnJhbWUsIG1heEZyYW1lKTsgfQorICAg
IHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCk7CisgICAgdm9pZCBjbGVhcihTaGFy
ZWRCdWZmZXIqIGRhdGEpOwogCiAgICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJl
ZEJ1ZmZlciopOwogICAgIGJvb2wgaXNEZWNvZGVyQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9kZWNvZGVyLmdldCgpOyB9CkBAIC02Nyw2ICs2OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNBc3luY0RlY29kaW5nUmVxdWlyZWQoKTsKICAgICBib29sIHJlcXVlc3RGcmFtZUFzeW5jRGVj
b2RpbmdBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xl
dmVsKSB7IHJldHVybiBtX2ZyYW1lQ2FjaGUtPnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdElu
ZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsgfQorICAgIGJvb2wgaGFzRGVjb2RpbmdRdWV1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+aGFzRGVjb2RpbmdRdWV1ZSgpOyB9CiAg
ICAgdm9pZCBzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkgeyBtX2ZyYW1lQ2FjaGUtPnN0b3BBc3lu
Y0RlY29kaW5nUXVldWUoKTsgfQogCiAgICAgLy8gSW1hZ2UgbWV0YWRhdGEgd2hpY2ggaXMgY2Fs
Y3VsYXRlZCBieSB0aGUgZGVjb2RlciBvciBjYW4gZGVkdWNlZCBieSB0aGUgY2FzZSBvZiB0aGUg
bWVtb3J5IE5hdGl2ZUltYWdlLgpAQCAtMTAxLDggKzEwMyw2IEBAIHB1YmxpYzoKICAgICBOYXRp
dmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpOwotICAgIHZvaWQgY2xlYXIoYm9vbCBkZXN0cm95
QWxsLCBzaXplX3QgY291bnQsIFNoYXJlZEJ1ZmZlciogZGF0YSk7CiAgICAgdm9pZCBkdW1wKFRl
eHRTdHJlYW0mKTsKIAogICAgIHZvaWQgc2V0RGVjb2RlclRhcmdldENvbnRleHQoY29uc3QgR3Jh
cGhpY3NDb250ZXh0Kik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmVhYTExZjNhN2U3MGVlZDhiMmFjMjFlN2Y5MjliZGMy
NWI2N2I5OS4uZGI4ODU4MGZiYWQ0Mjg1ZDI2MGQ1NzZhMzQxMjVjNGFmOTViMGU5NCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDE3LTAxLTMxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFs
bGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIGN1cnJlbnQgZnJhbWUgb2YgYW4gaW1hZ2Ug
c2hvdWxkIG5vdCBkZWxldGVkIGlmIGFub3RoZXIgZnJhbWUgaXMgYXN5bmNocm9ub3VzbHkgYmVp
bmcgZGVjb2RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY3NjE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyB0ZXN0IGRpZCBub3QgY3Jhc2ggb24gTWFjIHdoZW4gcnVubmluZyBpdCB3aXRob3V0
IHRoaXMgcGF0Y2guIEJ1dAorICAgICAgICB0aGUgbmV3IEFTU0VSVF9JTVBMSUVTKCksIHdoaWNo
IGlzIGFkZGVkIHRvIEJpdG1hcEltYWdlOjpkcmF3KCksIGZpcmVzCisgICAgICAgIHdoZW4gdGhl
IG90aGVyIGNoYW5nZXMgYXJlIG5vdCBpbmNsdWRlZC4gU28gdGhlIGJ1ZyBjb3VsZCBoYXZlIGhh
cHBlbmVkCisgICAgICAgIHdpdGhvdXQgdGhlIHBhdGNoIGJ1dCB0aGUgY3Jhc2ggZGlkIG5vdCBz
aW5jZSBpdCByZXF1aXJlcyBhIHRocmVhZAorICAgICAgICBjb250ZW50aW9uIGluIHRoZSBzeXN0
ZW0gdW5kZXJseWluZyBjb21wb25lbnRzLgorCisgICAgICAgICogZmFzdC9pbWFnZXMvYW5pbWF0
ZWQtaW1hZ2UtZHJhdy13aGlsZS1kZWNvZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1kcmF3LXdoaWxlLWRlY29kZS5odG1sOiBBZGRl
ZC4KKwogMjAxNy0wMS0yNCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBtb2Rlcm4tbWVkaWEtY29udHJvbHMgTGF5b3V0VGVzdCBnYXJkZW5pbmcuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1kcmF3LXdoaWxl
LWRlY29kZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1p
bWFnZS1kcmF3LXdoaWxlLWRlY29kZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFmYTBiZmQx
NTg5YzFjY2I1MGY0ZDUzMWJhZjRkYzVjNjUxMzM5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWltYWdlLWRyYXctd2hpbGUtZGVjb2RlLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxIEBACitQQVNTLiBXZWJLaXQgZGlkbid0IGNyYXNoLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaW1hZ2UtZHJhdy13aGlsZS1k
ZWNvZGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWltYWdlLWRyYXct
d2hpbGUtZGVjb2RlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc1NTYzZTg5NTIzMTA0MjVhMDM2NTM1MTA3
NzZhMjk4Zjk5OGMxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2Vz
L2FuaW1hdGVkLWltYWdlLWRyYXctd2hpbGUtZGVjb2RlLmh0bWwKQEAgLTAsMCArMSw2NCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KKyAgICBjYW52YXMgeworICAgICAgICB3
aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4gICAg
Cis8Ym9keT4KKyAgICA8Y2FudmFzIGlkPSJjYW52YXMiPjwvY2FudmFzPgorICAgIDxzY3JpcHQ+
CisgICAgICAgIGZ1bmN0aW9uIGRyYXdGcmFtZShpbWFnZSkgeworICAgICAgICAgICAgcmV0dXJu
IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKKyAgICAgICAgICAgICAgICBsZXQg
Y29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICAgICAgICAgIGNvbnRl
eHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSwgMyk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGRyYXdJbWFnZShpbWFnZSwgZnJhbWVDb3VudCkgewor
ICAgICAgICAgICAgbGV0IHByb21pc2UgPSBkcmF3RnJhbWUoaW1hZ2UpOworICAgICAgICAgICAg
Zm9yIChsZXQgZnJhbWUgPSAxOyBmcmFtZSA8IGZyYW1lQ291bnQ7ICsrZnJhbWUpIHsKKyAgICAg
ICAgICAgICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBmb3JjZXMgZGVzdHJveURlY29kZWREYXRhKCkgdG8gYmUgY2FsbGVkLgor
ICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMucHJ1bmVNZW1vcnlDYWNoZVRvU2l6ZSgwKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRyYXdGcmFtZShpbWFnZSk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxvYWRJbWFnZShzcmMsIGZyYW1lQ291bnQpIHsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICAg
ICAgICAgIGxldCBpbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAgICAgICAgICBpbWFnZS5vbmxv
YWQgPSAoKCkgPT4geworICAgICAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIC8v
IFRoaXMgZm9yY2VzIGF5c25jIGltYWdlIGRlY29kaW5nLgorICAgICAgICAgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0SW1hZ2VGcmFtZURlY29kaW5nRHVyYXRpb24oaW1hZ2UsIDAuMDMpOworICAg
ICAgICAgICAgICAgICAgICBkcmF3SW1hZ2UoaW1hZ2UsIGZyYW1lQ291bnQpLnRoZW4ocmVzb2x2
ZSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgaW1hZ2Uuc3JjID0gc3Jj
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICAoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbG9hZEltYWdlKCJyZXNvdXJj
ZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUuZ2lmIiwgMTApLnRoZW4oKCkgPT4geworICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC53cml0ZSgiUEFTUy4gV2ViS2l0IGRpZG4ndCBjcmFzaC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pKCk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300557</attachid>
            <date>2017-02-03 12:25:56 -0800</date>
            <delta_ts>2017-02-13 16:10:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167618-20170203122340.patch</filename>
            <type>text/plain</type>
            <size>19345</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMTE2MzkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTAyLTAzICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIGN1cnJlbnQgZnJhbWUgb2Yg
YW4gaW1hZ2Ugc2hvdWxkIG5vdCBkZWxldGVkIGlmIGFub3RoZXIgZnJhbWUgaXMgYXN5bmNocm9u
b3VzbHkgYmVpbmcgZGVjb2RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY3NjE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIEFTU0VSVF9JTVBMSUVTKCkgd2hpY2ggc2hvdWxkIGZpcmUgd2hlbiBh
IGNvbmRpdGlvbiBpcyB0cnVlIGJ1dCB0aGUKKyAgICAgICAgYXNzZXJ0aW9uIGlzIGZhbHNlLgor
CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKwogMjAxNy0wMi0wMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIGluaXRp
YWwgaW1wbGVtZW50YXRpb24gb2YgcmVzb3VyY2UgdXNhZ2Ugb3ZlcmxheQpJbmRleDogU291cmNl
L1dURi93dGYvQXNzZXJ0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Fzc2Vy
dGlvbnMuaAkocmV2aXNpb24gMjExNjM5KQorKysgU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNiArMjYwLDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIE5P
X1JFVFVSTl9EVUVfVE9fQ1JBUwogI2RlZmluZSBBU1NFUlQoYXNzZXJ0aW9uKSAoKHZvaWQpMCkK
ICNkZWZpbmUgQVNTRVJUX0FUKGFzc2VydGlvbiwgZmlsZSwgbGluZSwgZnVuY3Rpb24pICgodm9p
ZCkwKQogI2RlZmluZSBBU1NFUlRfTk9UX1JFQUNIRUQoKSAoKHZvaWQpMCkKKyNkZWZpbmUgQVNT
RVJUX0lNUExJRVMoY29uZGl0aW9uLCBhc3NlcnRpb24pICgodm9pZCkwKQogI2RlZmluZSBOT19S
RVRVUk5fRFVFX1RPX0FTU0VSVAogCiAjZGVmaW5lIEFTU0VSVF9VTlVTRUQodmFyaWFibGUsIGFz
c2VydGlvbikgKCh2b2lkKXZhcmlhYmxlKQpAQCAtMjk4LDYgKzI5OSwxMyBAQCBXVEZfRVhQT1JU
X1BSSVZBVEUgTk9fUkVUVVJOX0RVRV9UT19DUkFTCiAgICAgQ1JBU0goKTsgXAogfSB3aGlsZSAo
MCkKIAorI2RlZmluZSBBU1NFUlRfSU1QTElFUyhjb25kaXRpb24sIGFzc2VydGlvbikgZG8geyBc
CisgICAgaWYgKChjb25kaXRpb24pICYmICEoYXNzZXJ0aW9uKSkgeyBcCisgICAgICAgIFdURlJl
cG9ydEFzc2VydGlvbkZhaWx1cmUoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNU
SU9OLCAjY29uZGl0aW9uICIgPT4gIiAjYXNzZXJ0aW9uKTsgXAorICAgIENSQVNIKCk7IFwKK30g
XAorfSB3aGlsZSAoMCkKKwogI2RlZmluZSBBU1NFUlRfVU5VU0VEKHZhcmlhYmxlLCBhc3NlcnRp
b24pIEFTU0VSVChhc3NlcnRpb24pCiAKICNkZWZpbmUgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQg
Tk9fUkVUVVJOX0RVRV9UT19DUkFTSApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjExNjQxKQor
KysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjMg
QEAKKzIwMTctMDItMDMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBUaGUgY3VycmVudCBmcmFtZSBvZiBhbiBpbWFnZSBzaG91bGQgbm90IGRl
bGV0ZWQgaWYgYW5vdGhlciBmcmFtZSBpcyBhc3luY2hyb25vdXNseSBiZWluZyBkZWNvZGVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc2MTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0
L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1kcmF3LXdoaWxlLWRlY29kZS5odG1sCisKKyAgICAgICAg
SWYgdGhlIG1lbW9yeSBjYWNoZSBhc2tzIHRoZSBCaXRtYXBJbWFnZSB0byBkZXN0cm95IGFsbCBp
dHMgZnJhbWVzIHdoaWxlCisgICAgICAgIHRoZSBuZXh0IGZyYW1lIGlzIGJlaW5nIGRlY29kZWQs
IGEgdGhyZWFkIGNvbnRlbnRpb24gbWF5IGhhcHBlbi4gVGhpcyBjYW4KKyAgICAgICAgaGFwcGVu
IHdoZW4gQml0bWFwSW1hZ2U6OmRyYXcoKSBpcyBjYWxsZWQgYW5kIHRoZSBuZXh0IGZyYW1lIGlz
IG5vdCByZWFkeQorICAgICAgICB5ZXQgZm9yIGRyYXdpbmcsIHNvIHRoZSBjdXJyZW50IGZyYW1l
IGhhcyB0byBiZSBkcmF3bi4gVGhpcyB3aWxsIGludm9rZQorICAgICAgICBhIGZyYW1lIGRlY29k
aW5nIGluIHRoZSBzYW1lIGltYWdlIGZyb20gdGhlIGRyYXdpbmcgY29tbWl0dGluZyB0aHJlYWQu
CisKKyAgICAgICAgV2UgY2FuIGF2b2lkIHRoYXQgYnkgZGVzdHJveWluZyBhbGwgdGhlIGZyYW1l
cyBleHBlY3QgdGhlIGN1cnJlbnQgZnJhbWUgaWYKKyAgICAgICAgdGhlIGltYWdlIGlzIGFzeW5j
aHJvbm91c2x5IGRlY29kaW5nIGl0cyBmcmFtZXMuIFRoaXMgc2hvdWxkIG5vdCBhZGQgZXh0cmEK
KyAgICAgICAgbWVtb3J5IG92ZXJoZWFkIGJlY2F1c2UgYnVpbGRpbmcgdGhlIGltYWdlIGZyYW1l
IGNhY2hlIGFuZCB0aGVuIGRlc3Ryb3lpbmcKKyAgICAgICAgaXQsIHdoZW4gbmVlZGVkLCBpcyBh
biBvbi1nb2luZyBwcm9jZXNzLiBUaGUgZnJhbWVzIHdpbGwgYmUgYWxsb2NhdGVkIGFuZAorICAg
ICAgICBkZWNvZGVkIGFsbCB0aGUgdGltZSBhbmQgYWxsIG9mIHRoZW0gY2FuIGJlIGRlc3Ryb3ll
ZCBleGNlcHQgdGhlIGN1cnJlbnQgb25lLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0
cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgIFRoZSBsb2dpYyBvZiBkZXN0cm95
aW5nIHRoZSBJbWFnZUZyYW1lcyB3YXMgc3BsaXQgYW1vbmcgQml0bWFwSW1hZ2UsIEltYWdlU291
cmNlCisgICAgICAgIGFuZCBJbWFnZUZyYW1lQ2FjaGUuIE1vdmUgYWxsIHRoZSBsb2dpYyB0byBC
aXRtYXBJbWFnZSBhbmQgaGF2ZSBJbWFnZUZyYW1lQ2FjaGUKKyAgICAgICAgYmUgcmVzcG9uc2li
bGUgb25seSBmb3IgZGVzdHJveWluZyBhIHJhbmdlIG9mIEltYWdlRnJhbWVzLgorCisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6IGFkZCBhbiBBU1NFUlRfSU1QTElFUyB0byBl
bnN1cmUgdGhlIGN1cnJlbnQgZnJhbWUKKyAgICAgICAgaXMgcmVhZHkgdG8gYmUgcmVuZGVyZWQg
aWYgdGhlIG5leHQgZnJhbWUgaXMgYmVpbmcgZGVjb2RlZC4KKyAgICAgICAgCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogTW92ZSBhIGNvbnN0IGZyb20gSW1hZ2VG
cmFtZUNhY2hlLmggdG8gQml0bWFwSW1hZ2UuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRnJhbWVDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lQ2Fj
aGU6OmRlc3Ryb3lEZWNvZGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lQ2Fj
aGU6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVDYWNoZTo6ZGVzdHJveUFsbERlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWVDYWNoZTo6ZGVzdHJveUFsbERlY29kZWREYXRhRXhjbHVkZUZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6ZGVzdHJveURlY29kZWREYXRhQmVmb3Jl
RnJhbWUpOgorICAgICAgICBNYWtlIEltYWdlRnJhbWVDYWNoZSBiZSByZXNwb25zaWJsZSBmb3Ig
ZGVzdHJveWluZyBhIHJhbmdlIG9mIEltYWdlRnJhbWVzLgorICAgICAgICBUaGlzIHJhbmdlIG1p
Z2h0IGluY2x1ZGUgYWxsIHRoZSBmcmFtZXMsIGFsbCB0aGUgZnJhbWVzIGJ1dCB1cCB0byBhIHNw
ZWNpZmljCisgICAgICAgIGZyYW1lLCBvciBhbGwgdGhlIGZyYW1lcyBidXQgZXhjbHVkZSBvbmUg
ZnJhbWUgaW4gdGhlIG1pZGRsZS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFy
KTogTm8gbmVlZCB0byBjYWxsIGNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpIGZyb20gY2xlYXIoKS4K
KyAgICAgICAgVGhlIGRlY2lzaW9uIHRvIGNhbGwgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgb3Ig
Y2xlYXIoKSBpcyBtb3ZlZCB0bworICAgICAgICBCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWRE
YXRhKCkuCisgICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpkZXN0cm95
RGVjb2RlZERhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRl
c3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgVGhlc2UgZnVu
Y3Rpb25zIGFyZSByZXBsYWNlZCBieSBhbm90aGVyIHNldCBvZiBmdW5jdGlvbnMgaW4gSW1hZ2VT
b3VyY2UuaC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpkZXN0cm95QWxsRGVjb2RlZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRlc3Ryb3lBbGxEZWNvZGVkRGF0
YUV4Y2x1ZGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZGVzdHJveURl
Y29kZWREYXRhQmVmb3JlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Omhh
c0RlY29kaW5nUXVldWUpOgorICAgICAgICBUaGVzZSBhcmUgbmV3IHdyYXBwZXJzIHdoaWNoIGNh
bGwgdGhlIGNvcnJlc3BvbmRpbmcgSW1hZ2VGcmFtZUNhY2hlIGZ1bmN0aW9ucy4KKwogMjAxNy0w
Mi0wMyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNb2Rl
cm4gTWVkaWEgQ29udHJvbHNdIFNraXAgYmFjayBidXR0b24gaXMgdmlzaWJsZSB3aXRoIGEgbGl2
ZSBicm9hZGNhc3QgdmlkZW8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHJldmlzaW9uIDIxMTYzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjUsMTMgKzY1LDM0IEBAIEJpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQogCiB2b2lkIEJpdG1h
cEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQogewotICAgIG1fc291
cmNlLmRlc3Ryb3lEZWNvZGVkRGF0YShkYXRhKCksIGRlc3Ryb3lBbGwsIG1fY3VycmVudEZyYW1l
KTsKKyAgICBpZiAoIWRlc3Ryb3lBbGwpCisgICAgICAgIG1fc291cmNlLmRlc3Ryb3lEZWNvZGVk
RGF0YUJlZm9yZUZyYW1lKG1fY3VycmVudEZyYW1lKTsKKyAgICBlbHNlIGlmIChtX3NvdXJjZS5o
YXNEZWNvZGluZ1F1ZXVlKCkpCisgICAgICAgIG1fc291cmNlLmRlc3Ryb3lBbGxEZWNvZGVkRGF0
YUV4Y2x1ZGVGcmFtZShtX2N1cnJlbnRGcmFtZSk7CisgICAgZWxzZQorICAgICAgICBtX3NvdXJj
ZS5kZXN0cm95QWxsRGVjb2RlZERhdGEoKTsKKworICAgIC8vIFRoZXJlJ3Mgbm8gbmVlZCB0byB0
aHJvdyBhd2F5IHRoZSBkZWNvZGVyIHVubGVzcyB3ZSdyZSBleHBsaWNpdGx5IGFza2VkCisgICAg
Ly8gdG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1lcy4KKyAgICBpZiAoIWRlc3Ryb3lBbGwgfHwg
bV9zb3VyY2UuaGFzRGVjb2RpbmdRdWV1ZSgpKQorICAgICAgICBtX3NvdXJjZS5jbGVhckZyYW1l
QnVmZmVyQ2FjaGUobV9jdXJyZW50RnJhbWUpOworICAgIGVsc2UKKyAgICAgICAgbV9zb3VyY2Uu
Y2xlYXIoZGF0YSgpKTsKKwogICAgIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsKIH0KIAogdm9p
ZCBCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkoYm9vbCBkZXN0cm95
QWxsKQogewotICAgIG1fc291cmNlLmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGRhdGEo
KSwgZGVzdHJveUFsbCwgbV9jdXJyZW50RnJhbWUpOworICAgIC8vIElmIHdlIGhhdmUgZGVjb2Rl
ZCBmcmFtZXMgYnV0IHRoZXJlIGlzIG5vIGVuY29kZWQgZGF0YSwgd2Ugc2hvdWxkbid0IGRlc3Ry
b3kKKyAgICAvLyB0aGUgZGVjb2RlZCBpbWFnZSBzaW5jZSB3ZSB3b24ndCBiZSBhYmxlIHRvIHJl
Y29uc3RydWN0IGl0IGxhdGVyLgorICAgIGlmICghZGF0YSgpICYmIGZyYW1lQ291bnQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc291cmNlLmRlY29kZWRTaXplKCkgPCBMYXJnZUFu
aW1hdGlvbkN1dG9mZikKKyAgICAgICAgcmV0dXJuOworCisgICAgZGVzdHJveURlY29kZWREYXRh
KGRlc3Ryb3lBbGwpOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFs
bERhdGFSZWNlaXZlZCkKQEAgLTE1Nyw2ICsxNzgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgCiAgICAgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCA9IGFsbG93
U3Vic2FtcGxpbmcoKSA/IG1fc291cmNlLnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShzY2FsZSkg
OiBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0OwogICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFn
ZSAlcCBkcmF3IC0gc3Vic2FtcGxpbmdMZXZlbCAlZCBhdCBzY2FsZSAlLjRmIiwgdGhpcywgc3Rh
dGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2NhbGUpOwogCisgICAg
QVNTRVJUX0lNUExJRVMocmVzdWx0ID09IFN0YXJ0QW5pbWF0aW9uUmVzdWx0OjpEZWNvZGluZ0Fj
dGl2ZSwgbV9zb3VyY2UuZnJhbWVIYXNWYWxpZE5hdGl2ZUltYWdlQXRJbmRleChtX2N1cnJlbnRG
cmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCkpOwogICAgIGF1dG8gaW1hZ2UgPSBmcmFt
ZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwg
JmNvbnRleHQpOwogICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0
IGhhdmUgYW4gaW1hZ2UgeWV0LgogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgJKHJldmlzaW9uIDIxMTYzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE5MCw2ICsxOTAsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQml0bWFw
SW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBkdW1wKFRl
eHRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIAorICAgIC8vIEFuaW1hdGVkIGltYWdlcyBvdmVy
IGEgY2VydGFpbiBzaXplIGFyZSBjb25zaWRlcmVkIGxhcmdlIGVub3VnaCB0aGF0IHdlJ2xsIG9u
bHkgaGFuZyBvbiB0byBvbmUgZnJhbWUgYXQgYSB0aW1lLgorI2lmICFQTEFURk9STShJT1MpCisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIExhcmdlQW5pbWF0aW9uQ3V0b2ZmID0gNTI0Mjg4MDsK
KyNlbHNlCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIExhcmdlQW5pbWF0aW9uQ3V0b2ZmID0g
MjA5NzE1MjsKKyNlbmRpZgorCiAgICAgbXV0YWJsZSBJbWFnZVNvdXJjZSBtX3NvdXJjZTsKIAog
ICAgIHNpemVfdCBtX2N1cnJlbnRGcmFtZSB7IDAgfTsgLy8gVGhlIGluZGV4IG9mIHRoZSBjdXJy
ZW50IGZyYW1lIG9mIGFuaW1hdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAkocmV2aXNpb24gMjExNjM5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzAsMjkgKzcwLDE5IEBAIEltYWdlRnJhbWVDYWNoZTo6fkltYWdl
RnJhbWVDYWNoZSgpCiAgICAgQVNTRVJUKCFoYXNEZWNvZGluZ1F1ZXVlKCkpOwogfQogCi12b2lk
IEltYWdlRnJhbWVDYWNoZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCwgc2l6
ZV90IGNvdW50KQordm9pZCBJbWFnZUZyYW1lQ2FjaGU6OmRlc3Ryb3lEZWNvZGVkRGF0YShzaXpl
X3QgZnJhbWVDb3VudCwgc2l6ZV90IGV4Y2x1ZGVGcmFtZSkKIHsKLSAgICBpZiAoZGVzdHJveUFs
bCkKLSAgICAgICAgY291bnQgPSBtX2ZyYW1lcy5zaXplKCk7Ci0gICAgCiAgICAgdW5zaWduZWQg
ZGVjb2RlZFNpemUgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgIGNvdW50OyArK2kp
Ci0gICAgICAgIGRlY29kZWRTaXplICs9IG1fZnJhbWVzW2ldLmNsZWFySW1hZ2UoKTsKIAotICAg
IGRlY29kZWRTaXplUmVzZXQoZGVjb2RlZFNpemUpOwotfQorICAgIEFTU0VSVChmcmFtZUNvdW50
IDw9IG1fZnJhbWVzLnNpemUoKSk7CiAKLWJvb2wgSW1hZ2VGcmFtZUNhY2hlOjpkZXN0cm95RGVj
b2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwsIHNpemVfdCBjb3VudCkKLXsKLSAg
ICB1bnNpZ25lZCBkZWNvZGVkU2l6ZSA9IDA7Ci0gICAgZm9yIChhdXRvJiBmcmFtZSA6IG1fZnJh
bWVzKQotICAgICAgICBkZWNvZGVkU2l6ZSArPSBmcmFtZS5mcmFtZUJ5dGVzKCk7Ci0gICAgCi0g
ICAgaWYgKGRlY29kZWRTaXplIDwgTGFyZ2VBbmltYXRpb25DdXRvZmYpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKLSAgICBkZXN0cm95RGVjb2RlZERhdGEoZGVzdHJveUFsbCwgY291bnQp
OwotICAgIHJldHVybiB0cnVlOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBm
cmFtZUNvdW50OyArK2luZGV4KSB7CisgICAgICAgIGlmIChpbmRleCA9PSBleGNsdWRlRnJhbWUp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZGVjb2RlZFNpemUgKz0gbV9mcmFtZXNb
aW5kZXgrK10uY2xlYXJJbWFnZSgpOworICAgIH0KKworICAgIGRlY29kZWRTaXplUmVzZXQoZGVj
b2RlZFNpemUpOwogfQogCiB2b2lkIEltYWdlRnJhbWVDYWNoZTo6ZGVzdHJveUluY29tcGxldGVE
ZWNvZGVkRGF0YSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUZyYW1lQ2FjaGUuaAkocmV2aXNpb24gMjExNjM5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU5LDggKzU5LDkgQEAgcHVibGljOgogICAgIEltYWdlRGVjb2RlciogZGVjb2RlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQogCiAgICAgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25z
dCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9Ci0gICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEo
Ym9vbCBkZXN0cm95QWxsID0gdHJ1ZSwgc2l6ZV90IGNvdW50ID0gMCk7Ci0gICAgYm9vbCBkZXN0
cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwgPSB0cnVlLCBzaXplX3Qg
Y291bnQgPSAwKTsKKyAgICB2b2lkIGRlc3Ryb3lBbGxEZWNvZGVkRGF0YSgpIHsgZGVzdHJveURl
Y29kZWREYXRhKGZyYW1lQ291bnQoKSwgZnJhbWVDb3VudCgpKTsgfQorICAgIHZvaWQgZGVzdHJv
eUFsbERlY29kZWREYXRhRXhjbHVkZUZyYW1lKHNpemVfdCBleGNsdWRlRnJhbWUpIHsgZGVzdHJv
eURlY29kZWREYXRhKGZyYW1lQ291bnQoKSwgZXhjbHVkZUZyYW1lKTsgfQorICAgIHZvaWQgZGVz
dHJveURlY29kZWREYXRhQmVmb3JlRnJhbWUoc2l6ZV90IGJlZm9yZUZyYW1lKSB7IGRlc3Ryb3lE
ZWNvZGVkRGF0YShiZWZvcmVGcmFtZSwgYmVmb3JlRnJhbWUpOyB9CiAgICAgdm9pZCBkZXN0cm95
SW5jb21wbGV0ZURlY29kZWREYXRhKCk7CiAKICAgICB2b2lkIGdyb3dGcmFtZXMoKTsKQEAgLTEx
Miw2ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIFQgZnJhbWVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6VW5kZWZpbmRlZCwg
SW1hZ2VGcmFtZTo6Q2FjaGluZyA9IEltYWdlRnJhbWU6OkNhY2hpbmc6OkVtcHR5LCBzdGQ6Om9w
dGlvbmFsPFQ+KiA9IG51bGxwdHIpOwogCiAgICAgYm9vbCBpc0RlY29kZXJBdmFpbGFibGUoKSBj
b25zdCB7IHJldHVybiBtX2RlY29kZXI7IH0KKyAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShz
aXplX3QgZnJhbWVDb3VudCwgc2l6ZV90IGV4Y2x1ZGVGcmFtZSk7CiAgICAgdm9pZCBkZWNvZGVk
U2l6ZUNoYW5nZWQobG9uZyBsb25nIGRlY29kZWRTaXplKTsKICAgICB2b2lkIGRpZERlY29kZVBy
b3BlcnRpZXModW5zaWduZWQgZGVjb2RlZFByb3BlcnRpZXNTaXplKTsKICAgICB2b2lkIGRlY29k
ZWRTaXplSW5jcmVhc2VkKHVuc2lnbmVkIGRlY29kZWRTaXplKTsKQEAgLTEyOCwxMyArMTMwLDYg
QEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IEltYWdlRnJhbWUmIGZyYW1lQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWU6OkNhY2hpbmcpOwogCi0gICAgLy8gQW5pbWF0
ZWQgaW1hZ2VzIG92ZXIgYSBjZXJ0YWluIHNpemUgYXJlIGNvbnNpZGVyZWQgbGFyZ2UgZW5vdWdo
IHRoYXQgd2UnbGwgb25seSBoYW5nIG9uIHRvIG9uZSBmcmFtZSBhdCBhIHRpbWUuCi0jaWYgIVBM
QVRGT1JNKElPUykKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTGFyZ2VBbmltYXRpb25DdXRv
ZmYgPSA1MjQyODgwOwotI2Vsc2UKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTGFyZ2VBbmlt
YXRpb25DdXRvZmYgPSAyMDk3MTUyOwotI2VuZGlmCi0KICAgICBJbWFnZSogbV9pbWFnZSB7IG51
bGxwdHIgfTsKICAgICBJbWFnZURlY29kZXIqIG1fZGVjb2RlciB7IG51bGxwdHIgfTsKICAgICB1
bnNpZ25lZCBtX2RlY29kZWRTaXplIHsgMCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAkocmV2aXNpb24gMjExNjM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02OCw0MCArNjgsMTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXJGcmFtZUJ1
ZmZlckNhY2hlKAogICAgIG1fZGVjb2Rlci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNsZWFyQmVm
b3JlRnJhbWUpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGws
IHNpemVfdCBjb3VudCwgU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBJbWFnZVNvdXJjZTo6Y2xl
YXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogewotICAgIC8vIFRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJv
dyBhd2F5IHRoZSBkZWNvZGVyIHVubGVzcyB3ZSdyZSBleHBsaWNpdGx5IGFza2VkCi0gICAgLy8g
dG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1lcy4KLSAgICBpZiAoIWRlc3Ryb3lBbGwgfHwgbV9m
cmFtZUNhY2hlLT5oYXNEZWNvZGluZ1F1ZXVlKCkpIHsKLSAgICAgICAgY2xlYXJGcmFtZUJ1ZmZl
ckNhY2hlKGNvdW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIG1fZGVjb2RlciA9
IG51bGxwdHI7CiAgICAgbV9mcmFtZUNhY2hlLT5zZXREZWNvZGVyKG51bGxwdHIpOwogICAgIHNl
dERhdGEoZGF0YSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6
OmRlc3Ryb3lEZWNvZGVkRGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgZGVzdHJveUFsbCwg
c2l6ZV90IGNvdW50KQotewotICAgIG1fZnJhbWVDYWNoZS0+ZGVzdHJveURlY29kZWREYXRhKGRl
c3Ryb3lBbGwsIGNvdW50KTsKLSAgICBjbGVhcihkZXN0cm95QWxsLCBjb3VudCwgZGF0YSk7Ci19
Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KFNoYXJl
ZEJ1ZmZlciogZGF0YSwgYm9vbCBkZXN0cm95QWxsLCBzaXplX3QgY291bnQpCi17Ci0gICAgLy8g
SWYgd2UgaGF2ZSBkZWNvZGVkIGZyYW1lcyBidXQgdGhlcmUgaXMgbm8gZW5jb2RlZCBkYXRhLCB3
ZSBzaG91bGRuJ3QgZGVzdHJveQotICAgIC8vIHRoZSBkZWNvZGVkIGltYWdlIHNpbmNlIHdlIHdv
bid0IGJlIGFibGUgdG8gcmVjb25zdHJ1Y3QgaXQgbGF0ZXIuCi0gICAgaWYgKCFkYXRhICYmIG1f
ZnJhbWVDYWNoZS0+ZnJhbWVDb3VudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoIW1fZnJhbWVDYWNoZS0+ZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkoZGVzdHJveUFs
bCwgY291bnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjbGVhcihkZXN0cm95QWxs
LCBjb3VudCwgZGF0YSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgSW1hZ2VTb3VyY2U6
OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICgh
ZGF0YSB8fCBpc0RlY29kZXJBdmFpbGFibGUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAkocmV2aXNpb24gMjExNjM5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNTMsOCArNTMsMTEgQEAgcHVibGljOgogICAgIEltYWdlU291cmNlKEltYWdlKiwgQWxw
aGFPcHRpb24gPSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7CiAgICAgfklt
YWdlU291cmNlKCk7CiAKLSAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShTaGFyZWRCdWZmZXIq
IGRhdGEsIGJvb2wgZGVzdHJveUFsbCA9IHRydWUsIHNpemVfdCBjb3VudCA9IDApOwotICAgIGJv
b2wgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29s
IGRlc3Ryb3lBbGwgPSB0cnVlLCBzaXplX3QgY291bnQgPSAwKTsKKyAgICB2b2lkIGRlc3Ryb3lB
bGxEZWNvZGVkRGF0YSgpIHsgbV9mcmFtZUNhY2hlLT5kZXN0cm95QWxsRGVjb2RlZERhdGEoKTsg
fQorICAgIHZvaWQgZGVzdHJveUFsbERlY29kZWREYXRhRXhjbHVkZUZyYW1lKHNpemVfdCBleGNs
dWRlRnJhbWUpIHsgbV9mcmFtZUNhY2hlLT5kZXN0cm95QWxsRGVjb2RlZERhdGFFeGNsdWRlRnJh
bWUoZXhjbHVkZUZyYW1lKTsgfQorICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhQmVmb3JlRnJh
bWUoc2l6ZV90IGJlZm9yZUZyYW1lKSB7IG1fZnJhbWVDYWNoZS0+ZGVzdHJveURlY29kZWREYXRh
QmVmb3JlRnJhbWUoYmVmb3JlRnJhbWUpOyB9CisgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2Fj
aGUoc2l6ZV90KTsKKyAgICB2b2lkIGNsZWFyKFNoYXJlZEJ1ZmZlciogZGF0YSk7CiAKICAgICBi
b29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKik7CiAgICAgYm9vbCBpc0Rl
Y29kZXJBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KQEAgLTY3
LDYgKzcwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0FzeW5jRGVjb2RpbmdSZXF1aXJlZCgp
OwogICAgIGJvb2wgcmVxdWVzdEZyYW1lQXN5bmNEZWNvZGluZ0F0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIHsgcmV0dXJuIG1fZnJhbWVDYWNo
ZS0+cmVxdWVzdEZyYW1lQXN5bmNEZWNvZGluZ0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2
ZWwpOyB9CisgICAgYm9vbCBoYXNEZWNvZGluZ1F1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFt
ZUNhY2hlLT5oYXNEZWNvZGluZ1F1ZXVlKCk7IH0KICAgICB2b2lkIHN0b3BBc3luY0RlY29kaW5n
UXVldWUoKSB7IG1fZnJhbWVDYWNoZS0+c3RvcEFzeW5jRGVjb2RpbmdRdWV1ZSgpOyB9CiAKICAg
ICAvLyBJbWFnZSBtZXRhZGF0YSB3aGljaCBpcyBjYWxjdWxhdGVkIGJ5IHRoZSBkZWNvZGVyIG9y
IGNhbiBkZWR1Y2VkIGJ5IHRoZSBjYXNlIG9mIHRoZSBtZW1vcnkgTmF0aXZlSW1hZ2UuCkBAIC0x
MDEsOCArMTA1LDYgQEAgcHVibGljOgogICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpOwogCiBwcml2YXRlOgotICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCk7Ci0gICAgdm9pZCBjbGVhcihib29sIGRlc3Ryb3lBbGwsIHNpemVfdCBjb3VudCwgU2hhcmVk
QnVmZmVyKiBkYXRhKTsKICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpOwogCiAgICAgdm9pZCBz
ZXREZWNvZGVyVGFyZ2V0Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQqKTsKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIxMTYzOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE5IEBACisyMDE3LTAyLTAzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91
aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIGN1cnJlbnQgZnJhbWUgb2YgYW4gaW1h
Z2Ugc2hvdWxkIG5vdCBkZWxldGVkIGlmIGFub3RoZXIgZnJhbWUgaXMgYXN5bmNocm9ub3VzbHkg
YmVpbmcgZGVjb2RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY3NjE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyB0ZXN0IGRpZCBub3QgY3Jhc2ggb24gTWFjIHdoZW4gcnVubmluZyBpdCB3aXRo
b3V0IHRoaXMgcGF0Y2guIEJ1dAorICAgICAgICB0aGUgbmV3IEFTU0VSVF9JTVBMSUVTKCksIHdo
aWNoIGlzIGFkZGVkIHRvIEJpdG1hcEltYWdlOjpkcmF3KCksIGZpcmVzCisgICAgICAgIHdoZW4g
dGhlIG90aGVyIGNoYW5nZXMgYXJlIG5vdCBpbmNsdWRlZC4gU28gdGhlIGJ1ZyBjb3VsZCBoYXZl
IGhhcHBlbmVkCisgICAgICAgIHdpdGhvdXQgdGhlIHBhdGNoIGJ1dCB0aGUgY3Jhc2ggZGlkIG5v
dCBzaW5jZSBpdCByZXF1aXJlcyBhIHRocmVhZAorICAgICAgICBjb250ZW50aW9uIGluIHRoZSBz
eXN0ZW0gdW5kZXJseWluZyBjb21wb25lbnRzLgorCisgICAgICAgICogZmFzdC9pbWFnZXMvYW5p
bWF0ZWQtaW1hZ2UtZHJhdy13aGlsZS1kZWNvZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1kcmF3LXdoaWxlLWRlY29kZS5odG1sOiBB
ZGRlZC4KKwogMjAxNy0wMi0wMyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgVGhlIENTUyBwcm9wZXJ0eSAtd2Via2l0LXRleHQtc3Ryb2tlIGlzIG5vdCBh
cHBsaWVkIG9uIGNhcHRpb25zLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0
ZWQtaW1hZ2UtZHJhdy13aGlsZS1kZWNvZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWltYWdlLWRyYXctd2hpbGUtZGVjb2RlLWV4
cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmlt
YXRlZC1pbWFnZS1kcmF3LXdoaWxlLWRlY29kZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSBAQAorUEFTUy4gV2ViS2l0IGRpZG4ndCBjcmFzaC4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWltYWdlLWRyYXctd2hpbGUtZGVjb2RlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaW1hZ2UtZHJhdy13
aGlsZS1kZWNvZGUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9hbmltYXRlZC1pbWFnZS1kcmF3LXdoaWxlLWRlY29kZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c3R5bGU+CisgICAgY2Fu
dmFzIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAg
IH0KKzwvc3R5bGU+ICAgIAorPGJvZHk+CisgICAgPGNhbnZhcyBpZD0iY2FudmFzIj48L2NhbnZh
cz4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBkcmF3RnJhbWUoaW1hZ2UpIHsKKyAg
ICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICAgICAg
ICAgIGxldCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CisgICAg
ICAgICAgICAgICAgbGV0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgMCwgMCwgY2FudmFzLndpZHRoLCBj
YW52YXMuaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0sIDIwKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZHJhd0ltYWdlKGltYWdl
LCBmcmFtZUNvdW50KSB7CisgICAgICAgICAgICBsZXQgcHJvbWlzZSA9IGRyYXdGcmFtZShpbWFn
ZSk7CisgICAgICAgICAgICBmb3IgKGxldCBmcmFtZSA9IDE7IGZyYW1lIDwgZnJhbWVDb3VudDsg
KytmcmFtZSkgeworICAgICAgICAgICAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGZvcmNlcyBkZXN0cm95RGVjb2RlZERhdGEo
KSB0byBiZSBjYWxsZWQuCisgICAgICAgICAgICAgICAgICAgIGludGVybmFscy5wcnVuZU1lbW9y
eUNhY2hlVG9TaXplKDApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZHJhd0ZyYW1lKGlt
YWdlKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiBwcm9taXNlOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbG9hZEltYWdlKHNy
YywgZnJhbWVDb3VudCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZl
KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGltYWdlID0gbmV3IEltYWdlOworICAgICAgICAg
ICAgICAgIGltYWdlLm9ubG9hZCA9ICgoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
d2luZG93LmludGVybmFscykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBmb3JjZXMgYXlzbmMgaW1hZ2UgZGVjb2RpbmcuCisgICAg
ICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRJbWFnZUZyYW1lRGVjb2RpbmdEdXJhdGlvbihp
bWFnZSwgMC4wMzApOworICAgICAgICAgICAgICAgICAgICBkcmF3SW1hZ2UoaW1hZ2UsIGZyYW1l
Q291bnQpLnRoZW4ocmVzb2x2ZSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgaW1hZ2Uuc3JjID0gc3JjOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAg
ICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
bG9hZEltYWdlKCJyZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUuZ2lmIiwgMTApLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiUEFTUy4gV2ViS2l0IGRpZG4ndCBjcmFz
aC4iKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0pKCk7CisgICAgPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301408</attachid>
            <date>2017-02-13 16:10:40 -0800</date>
            <delta_ts>2017-02-13 17:31:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167618-20170213160808.patch</filename>
            <type>text/plain</type>
            <size>19326</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMTIyNTUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTAyLTEzICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIGN1cnJlbnQgZnJhbWUgb2Yg
YW4gaW1hZ2Ugc2hvdWxkIG5vdCBkZWxldGVkIGlmIGFub3RoZXIgZnJhbWUgaXMgYXN5bmNocm9u
b3VzbHkgYmVpbmcgZGVjb2RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY3NjE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgor
CisgICAgICAgIEFkZCBBU1NFUlRfSU1QTElFUygpIHdoaWNoIHNob3VsZCBmaXJlIHdoZW4gYSBj
b25kaXRpb24gaXMgdHJ1ZSBidXQgdGhlCisgICAgICAgIGFzc2VydGlvbiBpcyBmYWxzZS4KKwor
ICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmg6CisKIDIwMTctMDItMTMgIE15bGVzIEMuIE1heGZp
ZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgY3VzdG9tIGxpbmUg
YnJlYWtpbmcgaXRlcmF0b3JzIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBVbmljb2RlCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvQXNzZXJ0aW9ucy5oCShyZXZpc2lvbiAyMTIyNTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9Bc3Nl
cnRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2MCw2ICsyNjAsNyBAQCBXVEZfRVhQT1JUX1BS
SVZBVEUgTk9fUkVUVVJOX0RVRV9UT19DUkFTCiAjZGVmaW5lIEFTU0VSVChhc3NlcnRpb24pICgo
dm9pZCkwKQogI2RlZmluZSBBU1NFUlRfQVQoYXNzZXJ0aW9uLCBmaWxlLCBsaW5lLCBmdW5jdGlv
bikgKCh2b2lkKTApCiAjZGVmaW5lIEFTU0VSVF9OT1RfUkVBQ0hFRCgpICgodm9pZCkwKQorI2Rl
ZmluZSBBU1NFUlRfSU1QTElFUyhjb25kaXRpb24sIGFzc2VydGlvbikgKCh2b2lkKTApCiAjZGVm
aW5lIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUCiAKICNkZWZpbmUgQVNTRVJUX1VOVVNFRCh2YXJp
YWJsZSwgYXNzZXJ0aW9uKSAoKHZvaWQpdmFyaWFibGUpCkBAIC0yOTgsNiArMjk5LDEzIEBAIFdU
Rl9FWFBPUlRfUFJJVkFURSBOT19SRVRVUk5fRFVFX1RPX0NSQVMKICAgICBDUkFTSCgpOyBcCiB9
IHdoaWxlICgwKQogCisjZGVmaW5lIEFTU0VSVF9JTVBMSUVTKGNvbmRpdGlvbiwgYXNzZXJ0aW9u
KSBkbyB7IFwKKyAgICBpZiAoKGNvbmRpdGlvbikgJiYgIShhc3NlcnRpb24pKSB7IFwKKyAgICAg
ICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVU
VFlfRlVOQ1RJT04sICNjb25kaXRpb24gIiA9PiAiICNhc3NlcnRpb24pOyBcCisgICAgICAgIENS
QVNIKCk7IFwKKyAgICB9IFwKK30gd2hpbGUgKDApCisKICNkZWZpbmUgQVNTRVJUX1VOVVNFRCh2
YXJpYWJsZSwgYXNzZXJ0aW9uKSBBU1NFUlQoYXNzZXJ0aW9uKQogCiAjZGVmaW5lIE5PX1JFVFVS
Tl9EVUVfVE9fQVNTRVJUIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxMjI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDYzIEBACisyMDE3LTAyLTEzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91
aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIGN1cnJlbnQgZnJhbWUgb2YgYW4gaW1h
Z2Ugc2hvdWxkIG5vdCBkZWxldGVkIGlmIGFub3RoZXIgZnJhbWUgaXMgYXN5bmNocm9ub3VzbHkg
YmVpbmcgZGVjb2RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY3NjE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAg
ICAgIFRlc3Q6IGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWltYWdlLWRyYXctd2hpbGUtZGVjb2RlLmh0
bWwKKworICAgICAgICBJZiB0aGUgbWVtb3J5IGNhY2hlIGFza3MgdGhlIEJpdG1hcEltYWdlIHRv
IGRlc3Ryb3kgYWxsIGl0cyBmcmFtZXMgd2hpbGUKKyAgICAgICAgdGhlIG5leHQgZnJhbWUgaXMg
YmVpbmcgZGVjb2RlZCwgYSB0aHJlYWQgY29udGVudGlvbiBtYXkgaGFwcGVuLiBUaGlzIGNhbgor
ICAgICAgICBoYXBwZW4gd2hlbiBCaXRtYXBJbWFnZTo6ZHJhdygpIGlzIGNhbGxlZCBhbmQgdGhl
IG5leHQgZnJhbWUgaXMgbm90IHJlYWR5CisgICAgICAgIHlldCBmb3IgZHJhd2luZywgc28gdGhl
IGN1cnJlbnQgZnJhbWUgaGFzIHRvIGJlIGRyYXduLiBUaGlzIHdpbGwgaW52b2tlCisgICAgICAg
IGEgZnJhbWUgZGVjb2RpbmcgaW4gdGhlIHNhbWUgaW1hZ2UgZnJvbSB0aGUgZHJhd2luZyBjb21t
aXR0aW5nIHRocmVhZC4KKworICAgICAgICBXZSBjYW4gYXZvaWQgdGhhdCBieSBkZXN0cm95aW5n
IGFsbCB0aGUgZnJhbWVzIGV4Y2VwdCB0aGUgY3VycmVudCBmcmFtZSBpZgorICAgICAgICB0aGUg
aW1hZ2UgaXMgYXN5bmNocm9ub3VzbHkgZGVjb2RpbmcgaXRzIGZyYW1lcy4gVGhpcyBzaG91bGQg
bm90IGFkZCBleHRyYQorICAgICAgICBtZW1vcnkgb3ZlcmhlYWQgYmVjYXVzZSBidWlsZGluZyB0
aGUgaW1hZ2UgZnJhbWUgY2FjaGUgYW5kIHRoZW4gZGVzdHJveWluZworICAgICAgICBpdCwgd2hl
biBuZWVkZWQsIGlzIGFuIG9uLWdvaW5nIHByb2Nlc3MuIFRoZSBmcmFtZXMgd2lsbCBiZSBhbGxv
Y2F0ZWQgYW5kCisgICAgICAgIGRlY29kZWQgYWxsIHRoZSB0aW1lIGFuZCBhbGwgb2YgdGhlbSBj
YW4gYmUgZGVzdHJveWVkIGV4Y2VwdCB0aGUgY3VycmVudCBvbmUuCisgICAgICAgIAorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAgICAgVGhlIGxv
Z2ljIG9mIGRlc3Ryb3lpbmcgdGhlIEltYWdlRnJhbWVzIHdhcyBzcGxpdCBhbW9uZyBCaXRtYXBJ
bWFnZSwgSW1hZ2VTb3VyY2UKKyAgICAgICAgYW5kIEltYWdlRnJhbWVDYWNoZS4gTW92ZSBhbGwg
dGhlIGxvZ2ljIHRvIEJpdG1hcEltYWdlIGFuZCBoYXZlIEltYWdlRnJhbWVDYWNoZQorICAgICAg
ICBiZSByZXNwb25zaWJsZSBvbmx5IGZvciBkZXN0cm95aW5nIGEgcmFuZ2Ugb2YgSW1hZ2VGcmFt
ZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KTogYWRkIGFuIEFTU0VS
VF9JTVBMSUVTIHRvIGVuc3VyZSB0aGUgY3VycmVudCBmcmFtZQorICAgICAgICBpcyByZWFkeSB0
byBiZSByZW5kZXJlZCBpZiB0aGUgbmV4dCBmcmFtZSBpcyBiZWluZyBkZWNvZGVkLgorICAgICAg
ICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOiBNb3ZlIGEgY29u
c3QgZnJvbSBJbWFnZUZyYW1lQ2FjaGUuaCB0byBCaXRtYXBJbWFnZS5oLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWVDYWNoZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWVDYWNoZTo6ZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpkZXN0cm95QWxsRGVjb2RlZERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpkZXN0cm95QWxsRGVjb2RlZERhdGFFeGNs
dWRlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpkZXN0cm95RGVj
b2RlZERhdGFCZWZvcmVGcmFtZSk6CisgICAgICAgIE1ha2UgSW1hZ2VGcmFtZUNhY2hlIGJlIHJl
c3BvbnNpYmxlIGZvciBkZXN0cm95aW5nIGEgcmFuZ2Ugb2YgSW1hZ2VGcmFtZXMuCisgICAgICAg
IFRoaXMgcmFuZ2UgbWlnaHQgaW5jbHVkZSBhbGwgdGhlIGZyYW1lcywgYWxsIHRoZSBmcmFtZXMg
YnV0IHVwIHRvIGEgc3BlY2lmaWMKKyAgICAgICAgZnJhbWUsIG9yIGFsbCB0aGUgZnJhbWVzIGJ1
dCBleGNsdWRlIG9uZSBmcmFtZSBpbiB0aGUgbWlkZGxlLgorICAgICAgICAKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6Y2xlYXIpOiBObyBuZWVkIHRvIGNhbGwgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkg
ZnJvbSBjbGVhcigpLgorICAgICAgICBUaGUgZGVjaXNpb24gdG8gY2FsbCBjbGVhckZyYW1lQnVm
ZmVyQ2FjaGUoKSBvciBjbGVhcigpIGlzIG1vdmVkIHRvCisgICAgICAgIEJpdG1hcEltYWdlOjpk
ZXN0cm95RGVjb2RlZERhdGEoKS4KKyAgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OmRlc3Ryb3lEZWNvZGVkRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAg
ICAgICBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlcGxhY2VkIGJ5IGFub3RoZXIgc2V0IG9mIGZ1bmN0
aW9ucyBpbiBJbWFnZVNvdXJjZS5oLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRlc3Ry
b3lBbGxEZWNvZGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZGVzdHJv
eUFsbERlY29kZWREYXRhRXhjbHVkZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpkZXN0cm95RGVjb2RlZERhdGFCZWZvcmVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6aGFzRGVjb2RpbmdRdWV1ZSk6CisgICAgICAgIFRoZXNlIGFyZSBuZXcgd3Jh
cHBlcnMgd2hpY2ggY2FsbCB0aGUgY29ycmVzcG9uZGluZyBJbWFnZUZyYW1lQ2FjaGUgZnVuY3Rp
b25zLgorCiAyMDE3LTAyLTEzICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgdW51c2VkIFdlYkNvcmVUaHJlYWRTYWZlLmgKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHJldmlz
aW9uIDIxMjI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTMgKzY1LDM0IEBAIEJpdG1hcEltYWdlOjp+
Qml0bWFwSW1hZ2UoKQogCiB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9v
bCBkZXN0cm95QWxsKQogewotICAgIG1fc291cmNlLmRlc3Ryb3lEZWNvZGVkRGF0YShkYXRhKCks
IGRlc3Ryb3lBbGwsIG1fY3VycmVudEZyYW1lKTsKKyAgICBpZiAoIWRlc3Ryb3lBbGwpCisgICAg
ICAgIG1fc291cmNlLmRlc3Ryb3lEZWNvZGVkRGF0YUJlZm9yZUZyYW1lKG1fY3VycmVudEZyYW1l
KTsKKyAgICBlbHNlIGlmIChtX3NvdXJjZS5oYXNEZWNvZGluZ1F1ZXVlKCkpCisgICAgICAgIG1f
c291cmNlLmRlc3Ryb3lBbGxEZWNvZGVkRGF0YUV4Y2x1ZGVGcmFtZShtX2N1cnJlbnRGcmFtZSk7
CisgICAgZWxzZQorICAgICAgICBtX3NvdXJjZS5kZXN0cm95QWxsRGVjb2RlZERhdGEoKTsKKwor
ICAgIC8vIFRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5IHRoZSBkZWNvZGVyIHVubGVzcyB3
ZSdyZSBleHBsaWNpdGx5IGFza2VkCisgICAgLy8gdG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1l
cy4KKyAgICBpZiAoIWRlc3Ryb3lBbGwgfHwgbV9zb3VyY2UuaGFzRGVjb2RpbmdRdWV1ZSgpKQor
ICAgICAgICBtX3NvdXJjZS5jbGVhckZyYW1lQnVmZmVyQ2FjaGUobV9jdXJyZW50RnJhbWUpOwor
ICAgIGVsc2UKKyAgICAgICAgbV9zb3VyY2UuY2xlYXIoZGF0YSgpKTsKKwogICAgIGludmFsaWRh
dGVQbGF0Zm9ybURhdGEoKTsKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWRE
YXRhSWZOZWNlc3NhcnkoYm9vbCBkZXN0cm95QWxsKQogewotICAgIG1fc291cmNlLmRlc3Ryb3lE
ZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGRhdGEoKSwgZGVzdHJveUFsbCwgbV9jdXJyZW50RnJhbWUp
OworICAgIC8vIElmIHdlIGhhdmUgZGVjb2RlZCBmcmFtZXMgYnV0IHRoZXJlIGlzIG5vIGVuY29k
ZWQgZGF0YSwgd2Ugc2hvdWxkbid0IGRlc3Ryb3kKKyAgICAvLyB0aGUgZGVjb2RlZCBpbWFnZSBz
aW5jZSB3ZSB3b24ndCBiZSBhYmxlIHRvIHJlY29uc3RydWN0IGl0IGxhdGVyLgorICAgIGlmICgh
ZGF0YSgpICYmIGZyYW1lQ291bnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc291
cmNlLmRlY29kZWRTaXplKCkgPCBMYXJnZUFuaW1hdGlvbkN1dG9mZikKKyAgICAgICAgcmV0dXJu
OworCisgICAgZGVzdHJveURlY29kZWREYXRhKGRlc3Ryb3lBbGwpOwogfQogCiBib29sIEJpdG1h
cEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKQEAgLTE1Nyw2ICsxNzgs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgCiAgICAgbV9jdXJy
ZW50U3Vic2FtcGxpbmdMZXZlbCA9IGFsbG93U3Vic2FtcGxpbmcoKSA/IG1fc291cmNlLnN1YnNh
bXBsaW5nTGV2ZWxGb3JTY2FsZShzY2FsZSkgOiBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0Owog
ICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZSAlcCBkcmF3IC0gc3Vic2FtcGxpbmdMZXZlbCAl
ZCBhdCBzY2FsZSAlLjRmIiwgdGhpcywgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1w
bGluZ0xldmVsKSwgc2NhbGUpOwogCisgICAgQVNTRVJUX0lNUExJRVMocmVzdWx0ID09IFN0YXJ0
QW5pbWF0aW9uUmVzdWx0OjpEZWNvZGluZ0FjdGl2ZSwgbV9zb3VyY2UuZnJhbWVIYXNWYWxpZE5h
dGl2ZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZl
bCkpOwogICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSwg
bV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgJmNvbnRleHQpOwogICAgIGlmICghaW1hZ2UpIC8v
IElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgogICAgICAgICBy
ZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgJKHJldmlzaW9uIDIxMjI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw2ICsxOTAsMTMgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzQml0bWFwSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIAor
ICAgIC8vIEFuaW1hdGVkIGltYWdlcyBvdmVyIGEgY2VydGFpbiBzaXplIGFyZSBjb25zaWRlcmVk
IGxhcmdlIGVub3VnaCB0aGF0IHdlJ2xsIG9ubHkgaGFuZyBvbiB0byBvbmUgZnJhbWUgYXQgYSB0
aW1lLgorI2lmICFQTEFURk9STShJT1MpCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIExhcmdl
QW5pbWF0aW9uQ3V0b2ZmID0gNTI0Mjg4MDsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIExhcmdlQW5pbWF0aW9uQ3V0b2ZmID0gMjA5NzE1MjsKKyNlbmRpZgorCiAgICAgbXV0YWJs
ZSBJbWFnZVNvdXJjZSBtX3NvdXJjZTsKIAogICAgIHNpemVfdCBtX2N1cnJlbnRGcmFtZSB7IDAg
fTsgLy8gVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGZyYW1lIG9mIGFuaW1hdGlvbi4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNh
Y2hlLmNwcAkocmV2aXNpb24gMjEyMjU1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMjkgKzcwLDE5
IEBAIEltYWdlRnJhbWVDYWNoZTo6fkltYWdlRnJhbWVDYWNoZSgpCiAgICAgQVNTRVJUKCFoYXNE
ZWNvZGluZ1F1ZXVlKCkpOwogfQogCi12b2lkIEltYWdlRnJhbWVDYWNoZTo6ZGVzdHJveURlY29k
ZWREYXRhKGJvb2wgZGVzdHJveUFsbCwgc2l6ZV90IGNvdW50KQordm9pZCBJbWFnZUZyYW1lQ2Fj
aGU6OmRlc3Ryb3lEZWNvZGVkRGF0YShzaXplX3QgZnJhbWVDb3VudCwgc2l6ZV90IGV4Y2x1ZGVG
cmFtZSkKIHsKLSAgICBpZiAoZGVzdHJveUFsbCkKLSAgICAgICAgY291bnQgPSBtX2ZyYW1lcy5z
aXplKCk7Ci0gICAgCiAgICAgdW5zaWduZWQgZGVjb2RlZFNpemUgPSAwOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgIGNvdW50OyArK2kpCi0gICAgICAgIGRlY29kZWRTaXplICs9IG1fZnJh
bWVzW2ldLmNsZWFySW1hZ2UoKTsKIAotICAgIGRlY29kZWRTaXplUmVzZXQoZGVjb2RlZFNpemUp
OwotfQorICAgIEFTU0VSVChmcmFtZUNvdW50IDw9IG1fZnJhbWVzLnNpemUoKSk7CiAKLWJvb2wg
SW1hZ2VGcmFtZUNhY2hlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ry
b3lBbGwsIHNpemVfdCBjb3VudCkKLXsKLSAgICB1bnNpZ25lZCBkZWNvZGVkU2l6ZSA9IDA7Ci0g
ICAgZm9yIChhdXRvJiBmcmFtZSA6IG1fZnJhbWVzKQotICAgICAgICBkZWNvZGVkU2l6ZSArPSBm
cmFtZS5mcmFtZUJ5dGVzKCk7Ci0gICAgCi0gICAgaWYgKGRlY29kZWRTaXplIDwgTGFyZ2VBbmlt
YXRpb25DdXRvZmYpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBkZXN0cm95RGVj
b2RlZERhdGEoZGVzdHJveUFsbCwgY291bnQpOwotICAgIHJldHVybiB0cnVlOworICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBmcmFtZUNvdW50OyArK2luZGV4KSB7CisgICAgICAg
IGlmIChpbmRleCA9PSBleGNsdWRlRnJhbWUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgZGVjb2RlZFNpemUgKz0gbV9mcmFtZXNbaW5kZXgrK10uY2xlYXJJbWFnZSgpOworICAgIH0K
KworICAgIGRlY29kZWRTaXplUmVzZXQoZGVjb2RlZFNpemUpOwogfQogCiB2b2lkIEltYWdlRnJh
bWVDYWNoZTo6ZGVzdHJveUluY29tcGxldGVEZWNvZGVkRGF0YSgpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaAkocmV2aXNp
b24gMjEyMjU1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDkgQEAgcHVibGljOgogICAgIElt
YWdlRGVjb2RlciogZGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQogCiAgICAg
dW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9Ci0g
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSwgc2l6ZV90
IGNvdW50ID0gMCk7Ci0gICAgYm9vbCBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29s
IGRlc3Ryb3lBbGwgPSB0cnVlLCBzaXplX3QgY291bnQgPSAwKTsKKyAgICB2b2lkIGRlc3Ryb3lB
bGxEZWNvZGVkRGF0YSgpIHsgZGVzdHJveURlY29kZWREYXRhKGZyYW1lQ291bnQoKSwgZnJhbWVD
b3VudCgpKTsgfQorICAgIHZvaWQgZGVzdHJveUFsbERlY29kZWREYXRhRXhjbHVkZUZyYW1lKHNp
emVfdCBleGNsdWRlRnJhbWUpIHsgZGVzdHJveURlY29kZWREYXRhKGZyYW1lQ291bnQoKSwgZXhj
bHVkZUZyYW1lKTsgfQorICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhQmVmb3JlRnJhbWUoc2l6
ZV90IGJlZm9yZUZyYW1lKSB7IGRlc3Ryb3lEZWNvZGVkRGF0YShiZWZvcmVGcmFtZSwgYmVmb3Jl
RnJhbWUpOyB9CiAgICAgdm9pZCBkZXN0cm95SW5jb21wbGV0ZURlY29kZWREYXRhKCk7CiAKICAg
ICB2b2lkIGdyb3dGcmFtZXMoKTsKQEAgLTExMiw2ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIFQg
ZnJhbWVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6VW5kZWZpbmRlZCwgSW1hZ2VGcmFtZTo6Q2FjaGluZyA9IEltYWdlRnJh
bWU6OkNhY2hpbmc6OkVtcHR5LCBzdGQ6Om9wdGlvbmFsPFQ+KiA9IG51bGxwdHIpOwogCiAgICAg
Ym9vbCBpc0RlY29kZXJBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXI7IH0KKyAg
ICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShzaXplX3QgZnJhbWVDb3VudCwgc2l6ZV90IGV4Y2x1
ZGVGcmFtZSk7CiAgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQobG9uZyBsb25nIGRlY29kZWRT
aXplKTsKICAgICB2b2lkIGRpZERlY29kZVByb3BlcnRpZXModW5zaWduZWQgZGVjb2RlZFByb3Bl
cnRpZXNTaXplKTsKICAgICB2b2lkIGRlY29kZWRTaXplSW5jcmVhc2VkKHVuc2lnbmVkIGRlY29k
ZWRTaXplKTsKQEAgLTEyOCwxMyArMTMwLDYgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IEltYWdl
RnJhbWUmIGZyYW1lQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWU6
OkNhY2hpbmcpOwogCi0gICAgLy8gQW5pbWF0ZWQgaW1hZ2VzIG92ZXIgYSBjZXJ0YWluIHNpemUg
YXJlIGNvbnNpZGVyZWQgbGFyZ2UgZW5vdWdoIHRoYXQgd2UnbGwgb25seSBoYW5nIG9uIHRvIG9u
ZSBmcmFtZSBhdCBhIHRpbWUuCi0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgTGFyZ2VBbmltYXRpb25DdXRvZmYgPSA1MjQyODgwOwotI2Vsc2UKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgTGFyZ2VBbmltYXRpb25DdXRvZmYgPSAyMDk3MTUyOwotI2VuZGlm
Ci0KICAgICBJbWFnZSogbV9pbWFnZSB7IG51bGxwdHIgfTsKICAgICBJbWFnZURlY29kZXIqIG1f
ZGVjb2RlciB7IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX2RlY29kZWRTaXplIHsgMCB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcAkocmV2aXNpb24gMjEyMjU1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw0MCArNjgsMTMgQEAgdm9p
ZCBJbWFnZVNvdXJjZTo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKAogICAgIG1fZGVjb2Rlci0+Y2xl
YXJGcmFtZUJ1ZmZlckNhY2hlKGNsZWFyQmVmb3JlRnJhbWUpOwogfQogCi12b2lkIEltYWdlU291
cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGwsIHNpemVfdCBjb3VudCwgU2hhcmVkQnVmZmVyKiBk
YXRhKQordm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogewotICAg
IC8vIFRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5IHRoZSBkZWNvZGVyIHVubGVzcyB3ZSdy
ZSBleHBsaWNpdGx5IGFza2VkCi0gICAgLy8gdG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1lcy4K
LSAgICBpZiAoIWRlc3Ryb3lBbGwgfHwgbV9mcmFtZUNhY2hlLT5oYXNEZWNvZGluZ1F1ZXVlKCkp
IHsKLSAgICAgICAgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNvdW50KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQogICAgIG1fZGVjb2RlciA9IG51bGxwdHI7CiAgICAgbV9mcmFtZUNhY2hlLT5z
ZXREZWNvZGVyKG51bGxwdHIpOwogICAgIHNldERhdGEoZGF0YSwgaXNBbGxEYXRhUmVjZWl2ZWQo
KSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShTaGFyZWRCdWZm
ZXIqIGRhdGEsIGJvb2wgZGVzdHJveUFsbCwgc2l6ZV90IGNvdW50KQotewotICAgIG1fZnJhbWVD
YWNoZS0+ZGVzdHJveURlY29kZWREYXRhKGRlc3Ryb3lBbGwsIGNvdW50KTsKLSAgICBjbGVhcihk
ZXN0cm95QWxsLCBjb3VudCwgZGF0YSk7Ci19Ci0KLWJvb2wgSW1hZ2VTb3VyY2U6OmRlc3Ryb3lE
ZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBkZXN0cm95QWxs
LCBzaXplX3QgY291bnQpCi17Ci0gICAgLy8gSWYgd2UgaGF2ZSBkZWNvZGVkIGZyYW1lcyBidXQg
dGhlcmUgaXMgbm8gZW5jb2RlZCBkYXRhLCB3ZSBzaG91bGRuJ3QgZGVzdHJveQotICAgIC8vIHRo
ZSBkZWNvZGVkIGltYWdlIHNpbmNlIHdlIHdvbid0IGJlIGFibGUgdG8gcmVjb25zdHJ1Y3QgaXQg
bGF0ZXIuCi0gICAgaWYgKCFkYXRhICYmIG1fZnJhbWVDYWNoZS0+ZnJhbWVDb3VudCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW1fZnJhbWVDYWNoZS0+ZGVzdHJveURlY29k
ZWREYXRhSWZOZWNlc3NhcnkoZGVzdHJveUFsbCwgY291bnQpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBjbGVhcihkZXN0cm95QWxsLCBjb3VudCwgZGF0YSk7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KIGJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVk
QnVmZmVyKiBkYXRhKQogewogICAgIGlmICghZGF0YSB8fCBpc0RlY29kZXJBdmFpbGFibGUoKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aAkocmV2aXNpb24gMjEyMjU1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMsMTEgQEAgcHVibGljOgog
ICAgIEltYWdlU291cmNlKEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBoYU9wdGlvbjo6UHJlbXVs
dGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbjo6QXBwbGllZCk7CiAgICAgfkltYWdlU291cmNlKCk7CiAKLSAgICB2b2lkIGRlc3Ry
b3lEZWNvZGVkRGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgZGVzdHJveUFsbCA9IHRydWUs
IHNpemVfdCBjb3VudCA9IDApOwotICAgIGJvb2wgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3Nh
cnkoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGRlc3Ryb3lBbGwgPSB0cnVlLCBzaXplX3QgY291
bnQgPSAwKTsKKyAgICB2b2lkIGRlc3Ryb3lBbGxEZWNvZGVkRGF0YSgpIHsgbV9mcmFtZUNhY2hl
LT5kZXN0cm95QWxsRGVjb2RlZERhdGEoKTsgfQorICAgIHZvaWQgZGVzdHJveUFsbERlY29kZWRE
YXRhRXhjbHVkZUZyYW1lKHNpemVfdCBleGNsdWRlRnJhbWUpIHsgbV9mcmFtZUNhY2hlLT5kZXN0
cm95QWxsRGVjb2RlZERhdGFFeGNsdWRlRnJhbWUoZXhjbHVkZUZyYW1lKTsgfQorICAgIHZvaWQg
ZGVzdHJveURlY29kZWREYXRhQmVmb3JlRnJhbWUoc2l6ZV90IGJlZm9yZUZyYW1lKSB7IG1fZnJh
bWVDYWNoZS0+ZGVzdHJveURlY29kZWREYXRhQmVmb3JlRnJhbWUoYmVmb3JlRnJhbWUpOyB9Cisg
ICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KTsKKyAgICB2b2lkIGNsZWFyKFNo
YXJlZEJ1ZmZlciogZGF0YSk7CiAKICAgICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hh
cmVkQnVmZmVyKik7CiAgICAgYm9vbCBpc0RlY29kZXJBdmFpbGFibGUoKSBjb25zdCB7IHJldHVy
biBtX2RlY29kZXIuZ2V0KCk7IH0KQEAgLTY3LDYgKzcwLDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCBpc0FzeW5jRGVjb2RpbmdSZXF1aXJlZCgpOwogICAgIGJvb2wgcmVxdWVzdEZyYW1lQXN5bmNE
ZWNvZGluZ0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5n
TGV2ZWwpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+cmVxdWVzdEZyYW1lQXN5bmNEZWNvZGluZ0F0
SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOyB9CisgICAgYm9vbCBoYXNEZWNvZGluZ1F1
ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUNhY2hlLT5oYXNEZWNvZGluZ1F1ZXVlKCk7IH0K
ICAgICB2b2lkIHN0b3BBc3luY0RlY29kaW5nUXVldWUoKSB7IG1fZnJhbWVDYWNoZS0+c3RvcEFz
eW5jRGVjb2RpbmdRdWV1ZSgpOyB9CiAKICAgICAvLyBJbWFnZSBtZXRhZGF0YSB3aGljaCBpcyBj
YWxjdWxhdGVkIGJ5IHRoZSBkZWNvZGVyIG9yIGNhbiBkZWR1Y2VkIGJ5IHRoZSBjYXNlIG9mIHRo
ZSBtZW1vcnkgTmF0aXZlSW1hZ2UuCkBAIC0xMDEsOCArMTA1LDYgQEAgcHVibGljOgogICAgIE5h
dGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogCiBwcml2YXRlOgotICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCk7Ci0gICAgdm9pZCBjbGVhcihib29sIGRlc3Ry
b3lBbGwsIHNpemVfdCBjb3VudCwgU2hhcmVkQnVmZmVyKiBkYXRhKTsKICAgICB2b2lkIGR1bXAo
VGV4dFN0cmVhbSYpOwogCiAgICAgdm9pZCBzZXREZWNvZGVyVGFyZ2V0Q29udGV4dChjb25zdCBH
cmFwaGljc0NvbnRleHQqKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMjI1NSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE3LTAyLTEz
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIGN1cnJlbnQgZnJhbWUgb2YgYW4gaW1hZ2Ugc2hvdWxkIG5vdCBkZWxldGVkIGlmIGFub3Ro
ZXIgZnJhbWUgaXMgYXN5bmNocm9ub3VzbHkgYmVpbmcgZGVjb2RlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3NjE4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIFRoaXMgdGVzdCBkaWQgbm90IGNyYXNoIG9u
IE1hYyB3aGVuIHJ1bm5pbmcgaXQgd2l0aG91dCB0aGlzIHBhdGNoLiBCdXQKKyAgICAgICAgdGhl
IG5ldyBBU1NFUlRfSU1QTElFUygpLCB3aGljaCBpcyBhZGRlZCB0byBCaXRtYXBJbWFnZTo6ZHJh
dygpLCBmaXJlcworICAgICAgICB3aGVuIHRoZSBvdGhlciBjaGFuZ2VzIGFyZSBub3QgaW5jbHVk
ZWQuIFNvIHRoZSBidWcgY291bGQgaGF2ZSBoYXBwZW5lZAorICAgICAgICB3aXRob3V0IHRoZSBw
YXRjaCBidXQgdGhlIGNyYXNoIGRpZCBub3Qgc2luY2UgaXQgcmVxdWlyZXMgYSB0aHJlYWQKKyAg
ICAgICAgY29udGVudGlvbiBpbiB0aGUgc3lzdGVtIHVuZGVybHlpbmcgY29tcG9uZW50cy4KKwor
ICAgICAgICAqIGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWltYWdlLWRyYXctd2hpbGUtZGVjb2RlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaW1hZ2Ut
ZHJhdy13aGlsZS1kZWNvZGUuaHRtbDogQWRkZWQuCisKIDIwMTctMDItMTMgIFJ5YW4gSGFkZGFk
ICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFyayB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9sYXRjaGVkLXRvLWRlbGV0ZWQtbm9kZS5odG1sIGFzIGZsYWt5IG9uIG1hYy13azIu
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1kcmF3LXdoaWxl
LWRlY29kZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvYW5pbWF0ZWQtaW1hZ2UtZHJhdy13aGlsZS1kZWNvZGUtZXhwZWN0ZWQudHh0CShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWltYWdlLWRyYXctd2hp
bGUtZGVjb2RlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxIEBACitQQVNT
LiBXZWJLaXQgZGlkbid0IGNyYXNoLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5p
bWF0ZWQtaW1hZ2UtZHJhdy13aGlsZS1kZWNvZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1kcmF3LXdoaWxlLWRlY29kZS5odG1sCShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWltYWdlLWRy
YXctd2hpbGUtZGVjb2RlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KKyAgICBjYW52YXMgeworICAgICAgICB3aWR0
aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4gICAgCis8
Ym9keT4KKyAgICA8Y2FudmFzIGlkPSJjYW52YXMiPjwvY2FudmFzPgorICAgIDxzY3JpcHQ+Cisg
ICAgICAgIGZ1bmN0aW9uIGRyYXdGcmFtZShpbWFnZSkgeworICAgICAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGNhbnZhcyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKKyAgICAgICAgICAgICAgICBsZXQgY29u
dGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlKGltYWdlLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgICAgICByZXNv
bHZlKCk7CisgICAgICAgICAgICAgICAgfSwgMjApOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBkcmF3SW1hZ2UoaW1hZ2UsIGZyYW1lQ291bnQpIHsKKyAg
ICAgICAgICAgIGxldCBwcm9taXNlID0gZHJhd0ZyYW1lKGltYWdlKTsKKyAgICAgICAgICAgIGZv
ciAobGV0IGZyYW1lID0gMTsgZnJhbWUgPCBmcmFtZUNvdW50OyArK2ZyYW1lKSB7CisgICAgICAg
ICAgICAgICAgcHJvbWlzZSA9IHByb21pc2UudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIFRoaXMgZm9yY2VzIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIHRvIGJlIGNhbGxlZC4KKyAg
ICAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnBydW5lTWVtb3J5Q2FjaGVUb1NpemUoMCk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBkcmF3RnJhbWUoaW1hZ2UpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBsb2FkSW1hZ2Uoc3JjLCBmcmFtZUNvdW50KSB7Cisg
ICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgICAg
ICAgICBsZXQgaW1hZ2UgPSBuZXcgSW1hZ2U7CisgICAgICAgICAgICAgICAgaW1hZ2Uub25sb2Fk
ID0gKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIGZvcmNlcyBheXNuYyBpbWFnZSBkZWNvZGluZy4KKyAgICAgICAgICAgICAgICAgICAgaW50
ZXJuYWxzLnNldEltYWdlRnJhbWVEZWNvZGluZ0R1cmF0aW9uKGltYWdlLCAwLjAzMCk7CisgICAg
ICAgICAgICAgICAgICAgIGRyYXdJbWFnZShpbWFnZSwgZnJhbWVDb3VudCkudGhlbihyZXNvbHZl
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBpbWFnZS5zcmMgPSBzcmM7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsb2FkSW1hZ2UoInJlc291cmNl
cy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS5naWYiLCAxMCkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LndyaXRlKCJQQVNTLiBXZWJLaXQgZGlkbid0IGNyYXNoLiIpOworICAgICAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSkoKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>