<?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>176166</bug_id>
          
          <creation_ts>2017-08-31 09:46:06 -0700</creation_ts>
          <short_desc>Implement FileSystemFileEntry.file()</short_desc>
          <delta_ts>2017-09-02 21:02:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>https://wicg.github.io/entries-api/#dom-filesystemfileentry-file</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>175976</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1343956</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-31 09:46:06 -0700</bug_when>
    <thetext>Implement FileSystemFileEntry.file():
- https://wicg.github.io/entries-api/#dom-filesystemfileentry-file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343957</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-31 09:46:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/34187756&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344899</commentid>
    <comment_count>2</comment_count>
      <attachid>319752</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-02 19:45:51 -0700</bug_when>
    <thetext>Created attachment 319752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344906</commentid>
    <comment_count>3</comment_count>
      <attachid>319752</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-02 20:04:18 -0700</bug_when>
    <thetext>Comment on attachment 319752
Patch

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

&gt; Source/WebCore/Modules/entriesapi/DOMFileSystem.cpp:168
&gt; +    if (!getFileMetadata(fullPath, metadata, ShouldFollowSymbolicLinks::No))
&gt; +        return Exception { NotFoundError, ASCIILiteral(&quot;Path does not exist&quot;) };

Is it time we had a getFileMetadata that returned an std::optional&lt;FileMetadata&gt; or Expected&lt;FileMetadata&gt;?

&gt; Source/WebCore/Modules/entriesapi/DOMFileSystem.cpp:321
&gt; +    String virtualPath = fileEntry.virtualPath();
&gt; +    String fullPath = evaluatePath(virtualPath);

could use auto here.

&gt; Source/WebCore/Modules/entriesapi/FileSystemFileEntry.cpp:53
&gt; +        if (successCallback)
&gt; +            successCallback-&gt;handleEvent(result.releaseReturnValue());

I&apos;m possibly looking at the wrong version of the spec, https://wicg.github.io/entries-api/#api-fileentry, but it looks to me like success callback should not be nullable, so I think you can update the IDL and remove this null check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344907</commentid>
    <comment_count>4</comment_count>
      <attachid>319752</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-02 20:26:34 -0700</bug_when>
    <thetext>Comment on attachment 319752
Patch

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

&gt;&gt; Source/WebCore/Modules/entriesapi/DOMFileSystem.cpp:168
&gt;&gt; +        return Exception { NotFoundError, ASCIILiteral(&quot;Path does not exist&quot;) };
&gt; 
&gt; Is it time we had a getFileMetadata that returned an std::optional&lt;FileMetadata&gt; or Expected&lt;FileMetadata&gt;?

Yes, I can do this in a follow-up.

&gt;&gt; Source/WebCore/Modules/entriesapi/DOMFileSystem.cpp:321
&gt;&gt; +    String fullPath = evaluatePath(virtualPath);
&gt; 
&gt; could use auto here.

Hmm, OK. This is almost the same length :)

&gt;&gt; Source/WebCore/Modules/entriesapi/FileSystemFileEntry.cpp:53
&gt;&gt; +            successCallback-&gt;handleEvent(result.releaseReturnValue());
&gt; 
&gt; I&apos;m possibly looking at the wrong version of the spec, https://wicg.github.io/entries-api/#api-fileentry, but it looks to me like success callback should not be nullable, so I think you can update the IDL and remove this null check.

Hmm, you&apos;re right. Not sure how I got this wrong. Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344908</commentid>
    <comment_count>5</comment_count>
      <attachid>319755</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-02 20:32:43 -0700</bug_when>
    <thetext>Created attachment 319755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344918</commentid>
    <comment_count>6</comment_count>
      <attachid>319755</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-02 21:02:08 -0700</bug_when>
    <thetext>Comment on attachment 319755
Patch

Clearing flags on attachment: 319755

Committed r221544: &lt;http://trac.webkit.org/changeset/221544&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344919</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-02 21:02:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319752</attachid>
            <date>2017-09-02 19:45:51 -0700</date>
            <delta_ts>2017-09-02 20:32:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176166-20170902194549.patch</filename>
            <type>text/plain</type>
            <size>16063</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIzZWI1MDFlNDFlNmMy
MzNkMmY1NzA2Njk1ZmJiOTlkODRiMmYzMS4uMjAzMTFlZTMxMjRjMmRkOTZmNGY5ZWQxZjFjMDQy
NDkyNjY1MTEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAyMDE3LTA5LTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0
ZW1GaWxlRW50cnkuZmlsZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzYxNjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0MTg3NzU2PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBG
aWxlU3lzdGVtRmlsZUVudHJ5LmZpbGUoKToKKyAgICAgICAgLSBodHRwczovL3dpY2cuZ2l0aHVi
LmlvL2VudHJpZXMtYXBpLyNkb20tZmlsZXN5c3RlbWZpbGVlbnRyeS1maWxlCisKKyAgICAgICAg
VGVzdDogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWZpbGVFbnRy
eS1maWxlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlUGF0aElzRXhwZWN0ZWRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Z2V0UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUZpbGVTeXN0ZW06OmdldEZpbGUpOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01G
aWxlU3lzdGVtLmg6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxl
RW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZpbGVFbnRyeTo6ZmlsZSk6
CisKKzIwMTctMDktMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAg
ICBJbXBsZW1lbnQgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmdldERpcmVjdG9yeSgpCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxNjgKICAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM0MTg3Nzg3PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IDQ4YzQxN2YxMGI1ZTFhYTlk
N2QzM2M1ODVhYjU5NDhmMTdmOTIxZmUuLjRmYWM5NzdlYWNjYTgwNzM5NGU3Y2NmMzc5ZDJmYmVm
MzRhNDZlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9E
T01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RE9NRmlsZVN5c3RlbS5jcHAKQEAgLTE1OSw2ICsxNTksMjAgQEAgUmVmPEZpbGVTeXN0ZW1FbnRy
eT4gRE9NRmlsZVN5c3RlbTo6ZmlsZUFzRW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkKICAgICByZXR1cm4gRmlsZVN5c3RlbUZpbGVFbnRyeTo6Y3JlYXRlKGNvbnRleHQsICp0
aGlzLCAiLyIgKyBtX2ZpbGUtPm5hbWUoKSk7CiB9CiAKK3N0YXRpYyBFeGNlcHRpb25PcjxTdHJp
bmc+IHZhbGlkYXRlUGF0aElzRXhwZWN0ZWRUeXBlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFN0
cmluZyYmIHZpcnR1YWxQYXRoLCBGaWxlTWV0YWRhdGE6OlR5cGUgZXhwZWN0ZWRUeXBlKQorewor
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworCisgICAgRmlsZU1ldGFkYXRhIG1ldGFkYXRh
OworICAgIGlmICghZ2V0RmlsZU1ldGFkYXRhKGZ1bGxQYXRoLCBtZXRhZGF0YSwgU2hvdWxkRm9s
bG93U3ltYm9saWNMaW5rczo6Tm8pKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90Rm91
bmRFcnJvciwgQVNDSUlMaXRlcmFsKCJQYXRoIGRvZXMgbm90IGV4aXN0IikgfTsKKworICAgIGlm
IChtZXRhZGF0YS50eXBlICE9IGV4cGVjdGVkVHlwZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVNaXNtYXRjaEVycm9yLCAiRW50cnkgYXQgcGF0aCBkb2VzIG5vdCBoYXZlIGV4cGVj
dGVkIHR5cGUiIH07CisKKyAgICByZXR1cm4gV1RGTW92ZSh2aXJ0dWFsUGF0aCk7Cit9CisKIC8v
IGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkvI3Jlc29sdmUtYS1yZWxhdGl2ZS1w
YXRoCiBzdGF0aWMgU3RyaW5nIHJlc29sdmVSZWxhdGl2ZVZpcnR1YWxQYXRoKGNvbnN0IFN0cmlu
ZyYgYmFzZVZpcnR1YWxQYXRoLCBTdHJpbmdWaWV3IHJlbGF0aXZlVmlydHVhbFBhdGgpCiB7CkBA
IC0yMjYsNyArMjQwLDcgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1EaXIKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgY29udGV4dCA9IG1h
a2VSZWYoY29udGV4dCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGZ1bGxQYXRoID0gZnVsbFBhdGguaXNvbGF0ZWRDb3B5KCksIGRpcmVjdG9yeVZpcnR1
YWxQYXRoID0gZGlyZWN0b3J5VmlydHVhbFBhdGguaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7
CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBjb250ZXh0ID0gbWFrZVJlZihjb250
ZXh0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZnVs
bFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9
IGNyb3NzVGhyZWFkQ29weShkaXJlY3RvcnlWaXJ0dWFsUGF0aCldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGF1dG8gbGlzdGVkQ2hpbGRyZW4gPSBsaXN0RGlyZWN0b3J5V2l0aE1ldGFkYXRhKGZ1bGxQ
YXRoKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgY29udGV4dCA9IFdURk1vdmUo
Y29udGV4dCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IGxpc3RlZENoaWxkcmVuID0gY3Jvc3NUaHJlYWRDb3B5KGxpc3RlZENoaWxkcmVuKSwgZGlyZWN0
b3J5VmlydHVhbFBhdGggPSBkaXJlY3RvcnlWaXJ0dWFsUGF0aC5pc29sYXRlZENvcHkoKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRvRmlsZVN5c3RlbUVudHJp
ZXMoY29udGV4dCwgKnRoaXMsIFdURk1vdmUobGlzdGVkQ2hpbGRyZW4pLCBkaXJlY3RvcnlWaXJ0
dWFsUGF0aCkpOwpAQCAtMjM0LDE1ICsyNDgsNiBAQCB2b2lkIERPTUZpbGVTeXN0ZW06Omxpc3RE
aXJlY3RvcnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbURpcgog
ICAgIH0pOwogfQogCi1zdGF0aWMgRXhjZXB0aW9uT3I8U3RyaW5nPiB2YWxpZGF0ZVBhdGhJc0Rp
cmVjdG9yeShjb25zdCBTdHJpbmcmIGZ1bGxQYXRoLCBTdHJpbmcmJiB2aXJ0dWFsUGF0aCkKLXsK
LSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLQotICAgIGlmICghZmlsZUlzRGlyZWN0b3J5
KGZ1bGxQYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCi0gICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiUGF0aCBubyBsb25nZXIgZXhpc3RzIG9yIGlz
IG5vIGxvbmdlciBhIGRpcmVjdG9yeSIgfTsKLSAgICByZXR1cm4gV1RGTW92ZSh2aXJ0dWFsUGF0
aCk7Ci19Ci0KIHZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0UGFyZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1FbnRyeSYgZW50cnksIEdldFBhcmVudENhbGxiYWNr
JiYgY29tcGxldGlvbkNhbGxiYWNrKQogewogICAgIEFTU0VSVCgmZW50cnkuZmlsZXN5c3RlbSgp
ID09IHRoaXMpOwpAQCAtMjUxLDcgKzI1Niw3IEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0UGFy
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1FbnRyeSYKICAg
ICBBU1NFUlQodmlydHVhbFBhdGhbMF0gPT0gJy8nKTsKICAgICBTdHJpbmcgZnVsbFBhdGggPSBl
dmFsdWF0ZVBhdGgodmlydHVhbFBhdGgpOwogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGZ1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5
KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBj
b21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGF1dG8gdmFsaWRhdGVkVmlydHVhbFBhdGggPSB2YWxpZGF0ZVBhdGhJc0Rp
cmVjdG9yeShmdWxsUGF0aCwgV1RGTW92ZSh2aXJ0dWFsUGF0aCkpOworICAgICAgICBhdXRvIHZh
bGlkYXRlZFZpcnR1YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVsbFBhdGgs
IFdURk1vdmUodmlydHVhbFBhdGgpLCBGaWxlTWV0YWRhdGE6OlR5cGVEaXJlY3RvcnkpOwogICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwg
dmFsaWRhdGVkVmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmFsaWRhdGVkVmlydHVhbFBh
dGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAodmFsaWRhdGVkVmlydHVhbFBhdGguaGFzRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKHZhbGlkYXRlZFZpcnR1
YWxQYXRoLnJlbGVhc2VFeGNlcHRpb24oKSk7CkBAIC0zMTAsNCArMzE1LDE5IEBAIHZvaWQgRE9N
RmlsZVN5c3RlbTo6Z2V0RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmls
ZVN5c3RlbURpcmVjdG9yCiAgICAgfSk7CiB9CiAKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0Rmls
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRmlsZUVudHJ5JiBm
aWxlRW50cnksIEdldEZpbGVDYWxsYmFjayYmIGNvbXBsZXRpb25DYWxsYmFjaykKK3sKKyAgICBT
dHJpbmcgdmlydHVhbFBhdGggPSBmaWxlRW50cnkudmlydHVhbFBhdGgoKTsKKyAgICBTdHJpbmcg
ZnVsbFBhdGggPSBldmFsdWF0ZVBhdGgodmlydHVhbFBhdGgpOworICAgIG1fd29ya1F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGZ1bGxQYXRoID0gY3Jv
c3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmly
dHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFj
ayldKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gdmFsaWRhdGVkVmlydHVhbFBhdGggPSB2YWxp
ZGF0ZVBhdGhJc0V4cGVjdGVkVHlwZShmdWxsUGF0aCwgV1RGTW92ZSh2aXJ0dWFsUGF0aCksIEZp
bGVNZXRhZGF0YTo6VHlwZUZpbGUpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBj
b250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVs
bFBhdGgpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weSh2YWxpZGF0ZWRW
aXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxi
YWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5o
YXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2sodmFsaWRh
dGVkVmlydHVhbFBhdGgucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soRmlsZTo6Y3JlYXRlKGZ1bGxQYXRoKSk7
CisgICAgICAgIH0pOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAppbmRl
eCAzMjRmMTU3Mzg0ODZmZDVhZWU4OWIxM2U1NDU2NWZmODBiZmRkZmQyLi4wNDdhNTc4YTNmZWYy
MmQ4NWM0MWJjNmYxMWYzNTRjY2ZmNjY2YzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKQEAgLTYxLDYgKzYxLDkgQEAgcHVibGlj
OgogICAgIHVzaW5nIEdldEVudHJ5Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0
aW9uT3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+JiYpPjsKICAgICB2b2lkIGdldEVudHJ5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmLCBjb25zdCBTdHJp
bmcmIHZpcnR1YWxQYXRoLCBjb25zdCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OkZsYWdzJiwg
R2V0RW50cnlDYWxsYmFjayYmKTsKIAorICAgIHVzaW5nIEdldEZpbGVDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxSZWY8RmlsZT4+JiYpPjsKKyAgICB2b2lkIGdldEZp
bGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1GaWxlRW50cnkmLCBHZXRGaWxl
Q2FsbGJhY2smJik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRE9NRmlsZVN5c3RlbShSZWY8
RmlsZT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2Fw
aS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcAppbmRleCBiODBiNjViOGNiNGQ1OTc2NzIwZDc4
YzkzMGM0Yjg4NTgyYmExMDQ1Li5lZGMxZTFiYTAzYjc4NWQ2OWE0ZTA2NjQwZjc2NTNhYWI5MjNl
OWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5
c3RlbUZpbGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBp
L0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwCkBAIC0yNyw3ICsyNyw5IEBACiAjaW5jbHVkZSAiRmls
ZVN5c3RlbUZpbGVFbnRyeS5oIgogCiAjaW5jbHVkZSAiRE9NRXhjZXB0aW9uLmgiCisjaW5jbHVk
ZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRl
ICJGaWxlQ2FsbGJhY2suaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiwxMCArMzgs
MjAgQEAgRmlsZVN5c3RlbUZpbGVFbnRyeTo6RmlsZVN5c3RlbUZpbGVFbnRyeShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBET01GaWwKIHsKIH0KIAotdm9pZCBGaWxlU3lzdGVtRmls
ZUVudHJ5OjpmaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZlB0cjxGaWxl
Q2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCit2b2lk
IEZpbGVTeXN0ZW1GaWxlRW50cnk6OmZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgUmVmUHRyPEZpbGVDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxFcnJvckNh
bGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgaWYgKGVycm9yQ2FsbGJhY2spCi0gICAg
ICAgIGVycm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhjZXB0aW9u
OjpjcmVhdGUoTm90U3VwcG9ydGVkRXJyb3IpKTsKKyAgICBpZiAoIXN1Y2Nlc3NDYWxsYmFjayAm
JiAhZXJyb3JDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgZmlsZXN5c3RlbSgpLmdl
dEZpbGUoY29udGV4dCwgKnRoaXMsIFtzdWNjZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHN1Y2Nlc3ND
YWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spXShhdXRvJiYg
cmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAg
ICAgIGlmIChlcnJvckNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2stPmhh
bmRsZUV2ZW50KERPTUV4Y2VwdGlvbjo6Y3JlYXRlKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3VjY2Vzc0Nh
bGxiYWNrKQorICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChyZXN1bHQu
cmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggMzRjYWJiNDg2YmNhMTE2YjNkYTJiM2E1ZWVmYjMzNWI1YjE4NzQ2Yi4uYWY1
OWY2NDc0OWM4MzI5NzAzYjkzODJlOWVkYjI0MjA3YmU1MjJhMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5
IEBACiAyMDE3LTA5LTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAg
ICAgSW1wbGVtZW50IEZpbGVTeXN0ZW1GaWxlRW50cnkuZmlsZSgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxNjYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzM0MTg3NzU2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4gSSBoYXZlIHZlcmlmaWVkIHRoYXQg
dGhpcyB0ZXN0IHBhc3NlcyBpbiBDaHJvbWUgYXMgd2VsbC4KKworICAgICAgICAqIGVkaXRpbmcv
cGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1maWxlRW50cnktZmlsZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXIt
aXRlbXMtZHJvcC1maWxlRW50cnktZmlsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93azIvVGVzdEV4cGVjdGF0aW9uczoKKworMjAxNy0wOS0wMiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCiAgICAgICAgIEltcGxlbWVudCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50
cnkuZ2V0RGlyZWN0b3J5KCkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NjE2OAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQxODc3ODc+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1z
LWRyb3AtZmlsZUVudHJ5LWZpbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWZpbGVFbnRyeS1maWxlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41YzBkNGVlOWIwMWFjYWFjYWJmZmQ0Yjk3MjY5NTVhZjY5YzY0ZWFk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0
cmFuc2Zlci1pdGVtcy1kcm9wLWZpbGVFbnRyeS1maWxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDMxIEBACitCYXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBmaWxlU3lzdGVtRmlsZUVudHJ5LmZpbGUo
KQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkYXRhVHJhbnNmZXIuaXRl
bXMubGVuZ3RoIGlzIDIKK1BBU1MgZmlyc3RFbnRyeS5uYW1lIGlzICJ0ZXN0LnR4dCIKK1BBU1Mg
Zmlyc3RFbnRyeS5mdWxsUGF0aCBpcyAiL3Rlc3QudHh0IgorUEFTUyBmaXJzdEVudHJ5LmlzRmls
ZSBpcyB0cnVlCitQQVNTIGZpbGVSZXN1bHQuX19wcm90b19fIGlzIEZpbGUucHJvdG90eXBlCitQ
QVNTIGZpbGVSZXN1bHQubmFtZSBpcyAidGVzdC50eHQiCitQQVNTIGZpbGVSZXN1bHQud2Via2l0
UmVsYXRpdmVQYXRoIGlzICIiCitQQVNTIGZpbGVSZXN1bHQuc2l6ZSBpcyA1CitQQVNTIGZpbGVS
ZXN1bHQudHlwZSBpcyAidGV4dC9wbGFpbiIKK1BBU1MgY29udGVudFJlc3VsdCBpcyAiSGVsbG8i
CitQQVNTIHNlY29uZEVudHJ5Lm5hbWUgaXMgInRlc3RGaWxlcyIKK1BBU1Mgc2Vjb25kRW50cnku
ZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMiCitQQVNTIHNlY29uZEVudHJ5LmlzRGlyZWN0b3J5IGlz
IHRydWUKK1BBU1MgZmlsZUVudHJ5UmVzdWx0Lm5hbWUgaXMgImZpbGUzLnR4dCIKK1BBU1MgZmls
ZUVudHJ5UmVzdWx0LmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjEvZmlsZTMudHh0
IgorUEFTUyBmaWxlRW50cnlSZXN1bHQuaXNGaWxlIGlzIHRydWUKK1BBU1MgZmlsZTNSZXN1bHQu
X19wcm90b19fIGlzIEZpbGUucHJvdG90eXBlCitQQVNTIGZpbGUzUmVzdWx0Lm5hbWUgaXMgImZp
bGUzLnR4dCIKK1BBU1MgZmlsZTNSZXN1bHQud2Via2l0UmVsYXRpdmVQYXRoIGlzICIiCitQQVNT
IGZpbGUzUmVzdWx0LnNpemUgaXMgMgorUEFTUyBmaWxlM1Jlc3VsdC50eXBlIGlzICJ0ZXh0L3Bs
YWluIgorUEFTUyBjb250ZW50UmVzdWx0IGlzICIzXG4iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWZpbGVFbnRyeS1maWxlLmh0
bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRy
b3AtZmlsZUVudHJ5LWZpbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OWM0ZWQ2MWMwMDU3ZmJkOTQyYWU4
MjcwZDhkOTgzZTViMTRlMzc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWZpbGVFbnRyeS1maWxlLmh0bWwK
QEAgLTAsMCArMSwxMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRy
b3B6b25lIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiBncmV5OyI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIkJhc2ljIHRlc3QgY292
ZXJhZ2UgZm9yIGZpbGVTeXN0ZW1GaWxlRW50cnkuZmlsZSgpIik7Citqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworZnVuY3Rpb24gZmlsZUFzUHJvbWlzZShmaWxlRW50cnkpCit7CisgICAgcmV0dXJu
IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgZmlsZUVudHJ5LmZp
bGUocmVzb2x2ZSwgcmVqZWN0KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gcmVhZFRleHRGaWxl
QXNQcm9taXNlKGZpbGUpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKKyAgICAgICAgbGV0IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAg
ICAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHJlc29s
dmUoZmlsZVJlYWRlci5yZXN1bHQpOworICAgICAgICB9CisgICAgICAgIGZpbGVSZWFkZXIucmVh
ZEFzVGV4dChmaWxlKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gZ2V0RmlsZUFzUHJvbWlzZShk
aXJlY3RvcnlFbnRyeSwgcGF0aCkKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUs
IHJlamVjdCkgPT4geworICAgICAgICBkaXJlY3RvcnlFbnRyeS5nZXRGaWxlKHBhdGgsIHt9LCBy
ZXNvbHZlLCByZWplY3QpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0MSgpCit7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaXJzdEVudHJ5Lm5hbWUiLCAidGVzdC50eHQiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpcnN0RW50cnkuZnVsbFBhdGgiLCAiL3Rlc3QudHh0
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJmaXJzdEVudHJ5LmlzRmlsZSIpOworICAgIHJldHVybiBm
aWxlQXNQcm9taXNlKGZpcnN0RW50cnkpLnRoZW4oZmlsZSA9PiB7CisgICAgICAgIGZpbGVSZXN1
bHQgPSBmaWxlOworICAgICAgICBzaG91bGRCZSgiZmlsZVJlc3VsdC5fX3Byb3RvX18iLCAiRmls
ZS5wcm90b3R5cGUiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxlUmVzdWx0
Lm5hbWUiLCAidGVzdC50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxl
UmVzdWx0LndlYmtpdFJlbGF0aXZlUGF0aCIsICIiKTsKKyAgICAgICAgc2hvdWxkQmUoImZpbGVS
ZXN1bHQuc2l6ZSIsICI1Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZVJl
c3VsdC50eXBlIiwgInRleHQvcGxhaW4iKTsKKyAgICB9LCBlID0+IHsKKyAgICAgICAgdGVzdEZh
aWxlZCgiZmlsZUVudHJ5LmZpbGUoKSBjYWxsIGZhaWxlZCB1bmV4cGVjdGVkbHk6ICIgKyBlKTsK
KyAgICB9KS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgIHJldHVybiByZWFkVGV4dEZpbGVBc1By
b21pc2UoZmlsZVJlc3VsdCkudGhlbihjb250ZW50ID0+IHsKKyAgICAgICAgICAgY29udGVudFJl
c3VsdCA9IGNvbnRlbnQ7CisgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGVu
dFJlc3VsdCIsICJIZWxsbyIpOworICAgICAgIH0pOworICAgIH0pOworfQorCitmdW5jdGlvbiB0
ZXN0MigpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWNvbmRFbnRyeS5uYW1lIiwg
InRlc3RGaWxlcyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2Vjb25kRW50cnkuZnVs
bFBhdGgiLCAiL3Rlc3RGaWxlcyIpOworICAgIHNob3VsZEJlVHJ1ZSgic2Vjb25kRW50cnkuaXNE
aXJlY3RvcnkiKTsKKworICAgIHJldHVybiBnZXRGaWxlQXNQcm9taXNlKHNlY29uZEVudHJ5LCAi
c3ViZm9sZGVyMS9maWxlMy50eHQiKS50aGVuKGZpbGVFbnRyeSA9PiB7CisgICAgICAgIGZpbGVF
bnRyeVJlc3VsdCA9IGZpbGVFbnRyeTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJm
aWxlRW50cnlSZXN1bHQubmFtZSIsICJmaWxlMy50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJmaWxlRW50cnlSZXN1bHQuZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9zdWJmb2xk
ZXIxL2ZpbGUzLnR4dCIpOworICAgICAgICBzaG91bGRCZVRydWUoImZpbGVFbnRyeVJlc3VsdC5p
c0ZpbGUiKTsKKyAgICB9LCBlID0+IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZGlyZWN0b3J5RW50
cnkuZ2V0RmlsZSgpIGNhbGwgZmFpbGVkIHVuZXhwZWN0ZWRseTogIiArIGUpOworICAgIH0pLnRo
ZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBmaWxlQXNQcm9taXNlKGZpbGVFbnRyeVJl
c3VsdCkudGhlbihmaWxlID0+IHsKKyAgICAgICAgICAgIGZpbGUzUmVzdWx0ID0gZmlsZTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJmaWxlM1Jlc3VsdC5fX3Byb3RvX18iLCAiRmlsZS5wcm90b3R5
cGUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZTNSZXN1bHQubmFt
ZSIsICJmaWxlMy50eHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmls
ZTNSZXN1bHQud2Via2l0UmVsYXRpdmVQYXRoIiwgIiIpOworICAgICAgICAgICAgc2hvdWxkQmUo
ImZpbGUzUmVzdWx0LnNpemUiLCAiMiIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJmaWxlM1Jlc3VsdC50eXBlIiwgInRleHQvcGxhaW4iKTsKKyAgICAgICAgfSwgZSA9PiB7
CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJmaWxlRW50cnkuZmlsZSgpIGNhbGwgZmFpbGVkIHVu
ZXhwZWN0ZWRseTogIiArIGUpOworICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgcmV0dXJuIHJlYWRUZXh0RmlsZUFzUHJvbWlzZShmaWxlM1Jlc3VsdCkudGhlbihjb250
ZW50ID0+IHsKKyAgICAgICAgICAgICAgICBjb250ZW50UmVzdWx0ID0gY29udGVudDsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRlbnRSZXN1bHQiLCAiM1xuIik7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZhciBkcm9wem9u
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcm9wem9uZScpOworZHJvcHpvbmUub25kcm9w
ID0gZnVuY3Rpb24oZSkgeworICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICBkYXRhVHJhbnNm
ZXIgPSBlLmRhdGFUcmFuc2ZlcjsKKworICAgIHNob3VsZEJlKCJkYXRhVHJhbnNmZXIuaXRlbXMu
bGVuZ3RoIiwgIjIiKTsKKworICAgIGZpcnN0RW50cnkgPSBkYXRhVHJhbnNmZXIuaXRlbXNbMF0u
d2Via2l0R2V0QXNFbnRyeSgpOworICAgIHNlY29uZEVudHJ5ID0gZGF0YVRyYW5zZmVyLml0ZW1z
WzFdLndlYmtpdEdldEFzRW50cnkoKTsKKworICAgIHRlc3QxKCkudGhlbih0ZXN0MikudGhlbihm
aW5pc2hKU1Rlc3QpOworfTsKKworZHJvcHpvbmUub25kcmFnb3ZlciA9IGZ1bmN0aW9uKGV2KSB7
CisgICAgZXYucHJldmVudERlZmF1bHQoKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7Cisg
ICAgZHJhZ0ZpbGVzT250b0VsZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4vZmFzdC9mb3Jtcy9yZXNv
dXJjZXMvdGVzdC50eHQnLCAnLi4vLi4vZmFzdC9mb3Jtcy9maWxlL3Jlc291cmNlcy90ZXN0Rmls
ZXMnXSk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNjc5NDhiNDlmMDc4ZDE4NGE0ZDMxOGE4OWIw
Zjk2NWVhMTMyYmIxZC4uODM0NjU1MTFjODRjNGIzZWEzOTY0ZTg1ZWQxOTEzODk3ZjMzZWRlZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTU2Niw2ICs1
NjYsNyBAQCBwbGF0Zm9ybS9tYWMvZmFzdC9ldmVudHMvb2JqYy1ldmVudC1hcGkuaHRtbAogZWRp
dGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci5o
dG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5
UmVhZGVyLWVycm9yLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMt
ZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC5odG1sCitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRy
YW5zZmVyLWl0ZW1zLWRyb3AtZmlsZUVudHJ5LWZpbGUuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbAogZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldERpcmVjdG9yeS5odG1sCiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0RmlsZS5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319755</attachid>
            <date>2017-09-02 20:32:43 -0700</date>
            <delta_ts>2017-09-02 21:02:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176166-20170902203241.patch</filename>
            <type>text/plain</type>
            <size>18728</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIzZWI1MDFlNDFlNmMy
MzNkMmY1NzA2Njk1ZmJiOTlkODRiMmYzMS4uZDlkZDQ3N2EzODc2Mzc2NDdhMDA2NWM0YjMzMWE1
OTI5MmI0MmVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAyMDE3LTA5LTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0
ZW1GaWxlRW50cnkuZmlsZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzYxNjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0MTg3NzU2PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgSW1wbGVtZW50IEZpbGVT
eXN0ZW1GaWxlRW50cnkuZmlsZSgpOgorICAgICAgICAtIGh0dHBzOi8vd2ljZy5naXRodWIuaW8v
ZW50cmllcy1hcGkvI2RvbS1maWxlc3lzdGVtZmlsZWVudHJ5LWZpbGUKKworICAgICAgICBUZXN0
OiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZmlsZUVudHJ5LWZp
bGUuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSk6CisgICAgICAgIChXZWJD
b3JlOjpET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmls
ZVN5c3RlbTo6Z2V0RmlsZSk6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVT
eXN0ZW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRy
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRmlsZUVudHJ5OjpmaWxlKToKKwor
MjAxNy0wOS0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIElt
cGxlbWVudCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuZ2V0RGlyZWN0b3J5KCkKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjE2OAogICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzQxODc3ODc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggNDhjNDE3ZjEwYjVlMWFhOWQ3ZDMz
YzU4NWFiNTk0OGYxN2Y5MjFmZS4uZjhiNDU2NGE5NjU3NDg5NmY2YmIzNzFlN2YzZDY1M2NkMjM1
NDkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZp
bGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01G
aWxlU3lzdGVtLmNwcApAQCAtMTU5LDYgKzE1OSwyMCBAQCBSZWY8RmlsZVN5c3RlbUVudHJ5PiBE
T01GaWxlU3lzdGVtOjpmaWxlQXNFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KQogICAgIHJldHVybiBGaWxlU3lzdGVtRmlsZUVudHJ5OjpjcmVhdGUoY29udGV4dCwgKnRoaXMs
ICIvIiArIG1fZmlsZS0+bmFtZSgpKTsKIH0KIAorc3RhdGljIEV4Y2VwdGlvbk9yPFN0cmluZz4g
dmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCwgU3RyaW5n
JiYgdmlydHVhbFBhdGgsIEZpbGVNZXRhZGF0YTo6VHlwZSBleHBlY3RlZFR5cGUpCit7CisgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBGaWxlTWV0YWRhdGEgbWV0YWRhdGE7Cisg
ICAgaWYgKCFnZXRGaWxlTWV0YWRhdGEoZnVsbFBhdGgsIG1ldGFkYXRhLCBTaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVy
cm9yLCBBU0NJSUxpdGVyYWwoIlBhdGggZG9lcyBub3QgZXhpc3QiKSB9OworCisgICAgaWYgKG1l
dGFkYXRhLnR5cGUgIT0gZXhwZWN0ZWRUeXBlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
VHlwZU1pc21hdGNoRXJyb3IsICJFbnRyeSBhdCBwYXRoIGRvZXMgbm90IGhhdmUgZXhwZWN0ZWQg
dHlwZSIgfTsKKworICAgIHJldHVybiBXVEZNb3ZlKHZpcnR1YWxQYXRoKTsKK30KKwogLy8gaHR0
cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8jcmVzb2x2ZS1hLXJlbGF0aXZlLXBhdGgK
IHN0YXRpYyBTdHJpbmcgcmVzb2x2ZVJlbGF0aXZlVmlydHVhbFBhdGgoY29uc3QgU3RyaW5nJiBi
YXNlVmlydHVhbFBhdGgsIFN0cmluZ1ZpZXcgcmVsYXRpdmVWaXJ0dWFsUGF0aCkKIHsKQEAgLTIx
Nyw4ICsyMzEsOCBAQCB2b2lkIERPTUZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbURpcgogewogICAgIEFTU0VSVCgmZGly
ZWN0b3J5LmZpbGVzeXN0ZW0oKSA9PSB0aGlzKTsKIAotICAgIFN0cmluZyBkaXJlY3RvcnlWaXJ0
dWFsUGF0aCA9IGRpcmVjdG9yeS52aXJ0dWFsUGF0aCgpOwotICAgIFN0cmluZyBmdWxsUGF0aCA9
IGV2YWx1YXRlUGF0aChkaXJlY3RvcnlWaXJ0dWFsUGF0aCk7CisgICAgYXV0byBkaXJlY3RvcnlW
aXJ0dWFsUGF0aCA9IGRpcmVjdG9yeS52aXJ0dWFsUGF0aCgpOworICAgIGF1dG8gZnVsbFBhdGgg
PSBldmFsdWF0ZVBhdGgoZGlyZWN0b3J5VmlydHVhbFBhdGgpOwogICAgIGlmIChmdWxsUGF0aCA9
PSBtX3Jvb3RQYXRoKSB7CiAgICAgICAgIFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4gY2hp
bGRyZW47CiAgICAgICAgIGNoaWxkcmVuLmFwcGVuZChmaWxlQXNFbnRyeShjb250ZXh0KSk7CkBA
IC0yMjYsNyArMjQwLDcgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1EaXIKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgY29udGV4dCA9IG1h
a2VSZWYoY29udGV4dCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGZ1bGxQYXRoID0gZnVsbFBhdGguaXNvbGF0ZWRDb3B5KCksIGRpcmVjdG9yeVZpcnR1
YWxQYXRoID0gZGlyZWN0b3J5VmlydHVhbFBhdGguaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7
CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBjb250ZXh0ID0gbWFrZVJlZihjb250
ZXh0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZnVs
bFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9
IGNyb3NzVGhyZWFkQ29weShkaXJlY3RvcnlWaXJ0dWFsUGF0aCldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGF1dG8gbGlzdGVkQ2hpbGRyZW4gPSBsaXN0RGlyZWN0b3J5V2l0aE1ldGFkYXRhKGZ1bGxQ
YXRoKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgY29udGV4dCA9IFdURk1vdmUo
Y29udGV4dCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IGxpc3RlZENoaWxkcmVuID0gY3Jvc3NUaHJlYWRDb3B5KGxpc3RlZENoaWxkcmVuKSwgZGlyZWN0
b3J5VmlydHVhbFBhdGggPSBkaXJlY3RvcnlWaXJ0dWFsUGF0aC5pc29sYXRlZENvcHkoKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRvRmlsZVN5c3RlbUVudHJp
ZXMoY29udGV4dCwgKnRoaXMsIFdURk1vdmUobGlzdGVkQ2hpbGRyZW4pLCBkaXJlY3RvcnlWaXJ0
dWFsUGF0aCkpOwpAQCAtMjM0LDI0ICsyNDgsMTUgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpsaXN0
RGlyZWN0b3J5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1EaXIK
ICAgICB9KTsKIH0KIAotc3RhdGljIEV4Y2VwdGlvbk9yPFN0cmluZz4gdmFsaWRhdGVQYXRoSXNE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCwgU3RyaW5nJiYgdmlydHVhbFBhdGgpCi17
Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBpZiAoIWZpbGVJc0RpcmVjdG9y
eShmdWxsUGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQotICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIlBhdGggbm8gbG9uZ2VyIGV4aXN0cyBvciBp
cyBubyBsb25nZXIgYSBkaXJlY3RvcnkiIH07Ci0gICAgcmV0dXJuIFdURk1vdmUodmlydHVhbFBh
dGgpOwotfQotCiB2b2lkIERPTUZpbGVTeXN0ZW06OmdldFBhcmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRW50cnkmIGVudHJ5LCBHZXRQYXJlbnRDYWxsYmFj
ayYmIGNvbXBsZXRpb25DYWxsYmFjaykKIHsKICAgICBBU1NFUlQoJmVudHJ5LmZpbGVzeXN0ZW0o
KSA9PSB0aGlzKTsKIAotICAgIFN0cmluZyB2aXJ0dWFsUGF0aCA9IHJlc29sdmVSZWxhdGl2ZVZp
cnR1YWxQYXRoKGVudHJ5LnZpcnR1YWxQYXRoKCksICIuLiIpOworICAgIGF1dG8gdmlydHVhbFBh
dGggPSByZXNvbHZlUmVsYXRpdmVWaXJ0dWFsUGF0aChlbnRyeS52aXJ0dWFsUGF0aCgpLCAiLi4i
KTsKICAgICBBU1NFUlQodmlydHVhbFBhdGhbMF0gPT0gJy8nKTsKLSAgICBTdHJpbmcgZnVsbFBh
dGggPSBldmFsdWF0ZVBhdGgodmlydHVhbFBhdGgpOworICAgIGF1dG8gZnVsbFBhdGggPSBldmFs
dWF0ZVBhdGgodmlydHVhbFBhdGgpOwogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
Y29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGZ1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1
bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBjb21w
bGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7
Ci0gICAgICAgIGF1dG8gdmFsaWRhdGVkVmlydHVhbFBhdGggPSB2YWxpZGF0ZVBhdGhJc0RpcmVj
dG9yeShmdWxsUGF0aCwgV1RGTW92ZSh2aXJ0dWFsUGF0aCkpOworICAgICAgICBhdXRvIHZhbGlk
YXRlZFZpcnR1YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVsbFBhdGgsIFdU
Rk1vdmUodmlydHVhbFBhdGgpLCBGaWxlTWV0YWRhdGE6OlR5cGVEaXJlY3RvcnkpOwogICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgdmFs
aWRhdGVkVmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmFsaWRhdGVkVmlydHVhbFBhdGgp
LCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAodmFsaWRhdGVkVmlydHVhbFBhdGguaGFzRXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKHZhbGlkYXRlZFZpcnR1YWxQ
YXRoLnJlbGVhc2VFeGNlcHRpb24oKSk7CkBAIC0yODEsOSArMjg2LDkgQEAgdm9pZCBET01GaWxl
U3lzdGVtOjpnZXRFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lz
dGVtRGlyZWN0b3IKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFN0cmluZyByZXNvbHZl
ZFZpcnR1YWxQYXRoID0gcmVzb2x2ZVJlbGF0aXZlVmlydHVhbFBhdGgoZGlyZWN0b3J5LnZpcnR1
YWxQYXRoKCksIHZpcnR1YWxQYXRoKTsKKyAgICBhdXRvIHJlc29sdmVkVmlydHVhbFBhdGggPSBy
ZXNvbHZlUmVsYXRpdmVWaXJ0dWFsUGF0aChkaXJlY3RvcnkudmlydHVhbFBhdGgoKSwgdmlydHVh
bFBhdGgpOwogICAgIEFTU0VSVChyZXNvbHZlZFZpcnR1YWxQYXRoWzBdID09ICcvJyk7Ci0gICAg
U3RyaW5nIGZ1bGxQYXRoID0gZXZhbHVhdGVQYXRoKHJlc29sdmVkVmlydHVhbFBhdGgpOworICAg
IGF1dG8gZnVsbFBhdGggPSBldmFsdWF0ZVBhdGgocmVzb2x2ZWRWaXJ0dWFsUGF0aCk7CiAgICAg
aWYgKGZ1bGxQYXRoID09IG1fcm9vdFBhdGgpIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25DYWxsYmFjayhSZWY8RmlsZVN5c3RlbUVudHJ5PiB7IHJvb3QoY29udGV4dCkgfSk7CkBA
IC0zMTAsNCArMzE1LDE5IEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0RW50cnkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbURpcmVjdG9yCiAgICAgfSk7CiB9CiAK
K3ZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBGaWxlU3lzdGVtRmlsZUVudHJ5JiBmaWxlRW50cnksIEdldEZpbGVDYWxsYmFjayYmIGNv
bXBsZXRpb25DYWxsYmFjaykKK3sKKyAgICBhdXRvIHZpcnR1YWxQYXRoID0gZmlsZUVudHJ5LnZp
cnR1YWxQYXRoKCk7CisgICAgYXV0byBmdWxsUGF0aCA9IGV2YWx1YXRlUGF0aCh2aXJ0dWFsUGF0
aCk7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBjb250ZXh0ID0gbWFrZVJlZihj
b250ZXh0KSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2aXJ0dWFsUGF0
aCA9IGNyb3NzVGhyZWFkQ29weSh2aXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byB2YWxp
ZGF0ZWRWaXJ0dWFsUGF0aCA9IHZhbGlkYXRlUGF0aElzRXhwZWN0ZWRUeXBlKGZ1bGxQYXRoLCBX
VEZNb3ZlKHZpcnR1YWxQYXRoKSwgRmlsZU1ldGFkYXRhOjpUeXBlRmlsZSk7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCBmdWxsUGF0
aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHZhbGlkYXRlZFZpcnR1YWxQYXRoID0gY3Jv
c3NUaHJlYWRDb3B5KHZhbGlkYXRlZFZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxiYWNrID0g
V1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYg
KHZhbGlkYXRlZFZpcnR1YWxQYXRoLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25DYWxsYmFjayh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5yZWxlYXNlRXhjZXB0aW9uKCkp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhG
aWxlOjpjcmVhdGUoZnVsbFBhdGgpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRE9NRmlsZVN5c3RlbS5oCmluZGV4IDMyNGYxNTczODQ4NmZkNWFlZTg5YjEzZTU0NTY1ZmY4
MGJmZGRmZDIuLjA0N2E1NzhhM2ZlZjIyZDg1YzQxYmM2ZjExZjM1NGNjZmY2NjZjOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaApA
QCAtNjEsNiArNjEsOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgR2V0RW50cnlDYWxsYmFjayA9IFdU
Rjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4mJik+Owog
ICAgIHZvaWQgZ2V0RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1EaXJl
Y3RvcnlFbnRyeSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgsIGNvbnN0IEZpbGVTeXN0ZW1E
aXJlY3RvcnlFbnRyeTo6RmxhZ3MmLCBHZXRFbnRyeUNhbGxiYWNrJiYpOwogCisgICAgdXNpbmcg
R2V0RmlsZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZjxGaWxl
Pj4mJik+OworICAgIHZvaWQgZ2V0RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5
c3RlbUZpbGVFbnRyeSYsIEdldEZpbGVDYWxsYmFjayYmKTsKKwogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBET01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwCmluZGV4
IGI4MGI2NWI4Y2I0ZDU5NzY3MjBkNzhjOTMwYzRiODg1ODJiYTEwNDUuLjg4MjkwNDNjODRjZTkx
NDU4Njk4YTZhZjI2MGJmMjBiZDIzZmVmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5jcHAKQEAgLTI3LDcg
KzI3LDkgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCiAKICNpbmNsdWRlICJE
T01FeGNlcHRpb24uaCIKKyNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRXJy
b3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVDYWxsYmFjay5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTM2LDEwICszOCwxNiBAQCBGaWxlU3lzdGVtRmlsZUVudHJ5OjpGaWxlU3lz
dGVtRmlsZUVudHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIERPTUZpbAogewog
fQogCi12b2lkIEZpbGVTeXN0ZW1GaWxlRW50cnk6OmZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgUmVmUHRyPEZpbGVDYWxsYmFjaz4mJiwgUmVmUHRyPEVycm9yQ2FsbGJhY2s+
JiYgZXJyb3JDYWxsYmFjaykKK3ZvaWQgRmlsZVN5c3RlbUZpbGVFbnRyeTo6ZmlsZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8RmlsZUNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxs
YmFjaywgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKIHsKLSAgICBpZiAo
ZXJyb3JDYWxsYmFjaykKLSAgICAgICAgZXJyb3JDYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhj
b250ZXh0LCBET01FeGNlcHRpb246OmNyZWF0ZShOb3RTdXBwb3J0ZWRFcnJvcikpOworICAgIGZp
bGVzeXN0ZW0oKS5nZXRGaWxlKGNvbnRleHQsICp0aGlzLCBbc3VjY2Vzc0NhbGxiYWNrID0gV1RG
TW92ZShzdWNjZXNzQ2FsbGJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNhbGxi
YWNrKV0oYXV0byYmIHJlc3VsdCkgeworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KSB7CisgICAgICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgICAgICBlcnJv
ckNhbGxiYWNrLT5oYW5kbGVFdmVudChET01FeGNlcHRpb246OmNyZWF0ZShyZXN1bHQucmVsZWFz
ZUV4Y2VwdGlvbigpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
c3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkp
OworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaAppbmRl
eCA4OWJlOGRmNDEzY2IyNDRkNTRjMDBlNGUzNDQ0ZDVkMTA3MTNkNmYzLi4zNGY2MzIzNThjYjk0
Yzc0MjhjMjEzNzA5YzkzMzBjYWI3YjE2ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmgKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVtRmls
ZUVudHJ5KGNvbnRleHQsIGZpbGVzeXN0ZW0sIHZpcnR1YWxQYXRoKSk7CiAgICAgfQogCi0gICAg
dm9pZCBmaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8RmlsZUNhbGxiYWNrPiYm
LCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiA9IG51bGxwdHIpOworICAgIHZvaWQgZmlsZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPEZpbGVDYWxsYmFjaz4mJiwgUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+JiYgPSBudWxscHRyKTsKIAogcHJpdmF0ZToKICAgICBib29sIGlzRmlsZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmlkbAppbmRleCAxMzI1M2M3NDE3
NDZlYjc1ZjhmZDIwODM2ZjQ2YzIzZmExMjI5MmYwLi5kYWQ5N2I5YzQwNzBhY2NhZjdlYjNmMzFk
NzdlNWM5Mzk1NTQwYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaWRsCkBAIC0yNiw1ICsyNiw1IEBACiBb
CiAgICAgRW5hYmxlZEF0UnVudGltZT1EaXJlY3RvcnlVcGxvYWQsCiBdIGludGVyZmFjZSBGaWxl
U3lzdGVtRmlsZUVudHJ5IDogRmlsZVN5c3RlbUVudHJ5IHsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dF0gdm9pZCBmaWxlKEZpbGVDYWxsYmFjaz8gc3VjY2Vzc0NhbGxiYWNr
LCBvcHRpb25hbCBFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKKyAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9pZCBmaWxlKEZpbGVDYWxsYmFjayBzdWNjZXNzQ2Fs
bGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2s/IGVycm9yQ2FsbGJhY2spOwogfTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAzNGNhYmI0ODZiY2ExMTZiM2RhMmIzYTVlZWZiMzM1YjViMTg3NDZiLi40ZGU3Zjk5Y2NkNzM3
MjY5NmFhMjY3OGU0MDhkMGUwNjhlYzljNGIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTct
MDktMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBJbXBsZW1l
bnQgRmlsZVN5c3RlbUZpbGVFbnRyeS5maWxlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjE2NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQx
ODc3NTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICBBZGQg
bGF5b3V0IHRlc3QgY292ZXJhZ2UuIEkgaGF2ZSB2ZXJpZmllZCB0aGF0IHRoaXMgdGVzdCBwYXNz
ZXMgaW4gQ2hyb21lIGFzIHdlbGwuCisKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZmlsZUVudHJ5LWZpbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZmls
ZUVudHJ5LWZpbGUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2syL1Rlc3RFeHBl
Y3RhdGlvbnM6CisKKzIwMTctMDktMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KwogICAgICAgICBJbXBsZW1lbnQgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmdldERpcmVjdG9y
eSgpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYx
NjgKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0MTg3Nzg3PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWZpbGVFbnRy
eS1maWxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRh
dHJhbnNmZXItaXRlbXMtZHJvcC1maWxlRW50cnktZmlsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWMwZDRlZTliMDFhY2FhY2FiZmZkNGI5NzI2OTU1YWY2OWM2NGVhZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMt
ZHJvcC1maWxlRW50cnktZmlsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMSBAQAorQmFzaWMg
dGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbUZpbGVFbnRyeS5maWxlKCkKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGF0YVRyYW5zZmVyLml0ZW1zLmxlbmd0aCBpcyAy
CitQQVNTIGZpcnN0RW50cnkubmFtZSBpcyAidGVzdC50eHQiCitQQVNTIGZpcnN0RW50cnkuZnVs
bFBhdGggaXMgIi90ZXN0LnR4dCIKK1BBU1MgZmlyc3RFbnRyeS5pc0ZpbGUgaXMgdHJ1ZQorUEFT
UyBmaWxlUmVzdWx0Ll9fcHJvdG9fXyBpcyBGaWxlLnByb3RvdHlwZQorUEFTUyBmaWxlUmVzdWx0
Lm5hbWUgaXMgInRlc3QudHh0IgorUEFTUyBmaWxlUmVzdWx0LndlYmtpdFJlbGF0aXZlUGF0aCBp
cyAiIgorUEFTUyBmaWxlUmVzdWx0LnNpemUgaXMgNQorUEFTUyBmaWxlUmVzdWx0LnR5cGUgaXMg
InRleHQvcGxhaW4iCitQQVNTIGNvbnRlbnRSZXN1bHQgaXMgIkhlbGxvIgorUEFTUyBzZWNvbmRF
bnRyeS5uYW1lIGlzICJ0ZXN0RmlsZXMiCitQQVNTIHNlY29uZEVudHJ5LmZ1bGxQYXRoIGlzICIv
dGVzdEZpbGVzIgorUEFTUyBzZWNvbmRFbnRyeS5pc0RpcmVjdG9yeSBpcyB0cnVlCitQQVNTIGZp
bGVFbnRyeVJlc3VsdC5uYW1lIGlzICJmaWxlMy50eHQiCitQQVNTIGZpbGVFbnRyeVJlc3VsdC5m
dWxsUGF0aCBpcyAiL3Rlc3RGaWxlcy9zdWJmb2xkZXIxL2ZpbGUzLnR4dCIKK1BBU1MgZmlsZUVu
dHJ5UmVzdWx0LmlzRmlsZSBpcyB0cnVlCitQQVNTIGZpbGUzUmVzdWx0Ll9fcHJvdG9fXyBpcyBG
aWxlLnByb3RvdHlwZQorUEFTUyBmaWxlM1Jlc3VsdC5uYW1lIGlzICJmaWxlMy50eHQiCitQQVNT
IGZpbGUzUmVzdWx0LndlYmtpdFJlbGF0aXZlUGF0aCBpcyAiIgorUEFTUyBmaWxlM1Jlc3VsdC5z
aXplIGlzIDIKK1BBU1MgZmlsZTNSZXN1bHQudHlwZSBpcyAidGV4dC9wbGFpbiIKK1BBU1MgY29u
dGVudFJlc3VsdCBpcyAiM1xuIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1maWxlRW50cnktZmlsZS5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWZpbGVFbnRyeS1m
aWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDljNGVkNjFjMDA1N2ZiZDk0MmFlODI3MGQ4ZDk4M2U1YjE0
ZTM3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9k
YXRhdHJhbnNmZXItaXRlbXMtZHJvcC1maWxlRW50cnktZmlsZS5odG1sCkBAIC0wLDAgKzEsMTE0
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkcm9wem9uZSIgc3R5bGU9
IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsiPjwv
ZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJCYXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBmaWxl
U3lzdGVtRmlsZUVudHJ5LmZpbGUoKSIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0
aW9uIGZpbGVBc1Byb21pc2UoZmlsZUVudHJ5KQoreworICAgIHJldHVybiBuZXcgUHJvbWlzZSgo
cmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGZpbGVFbnRyeS5maWxlKHJlc29sdmUsIHJl
amVjdCk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHJlYWRUZXh0RmlsZUFzUHJvbWlzZShmaWxl
KQoreworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAg
ICAgIGxldCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKKyAgICAgICAgZmlsZVJlYWRl
ci5vbmxvYWQgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICByZXNvbHZlKGZpbGVSZWFkZXIu
cmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBmaWxlUmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7
CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGdldEZpbGVBc1Byb21pc2UoZGlyZWN0b3J5RW50cnks
IHBhdGgpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsK
KyAgICAgICAgZGlyZWN0b3J5RW50cnkuZ2V0RmlsZShwYXRoLCB7fSwgcmVzb2x2ZSwgcmVqZWN0
KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdDEoKQoreworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZmlyc3RFbnRyeS5uYW1lIiwgInRlc3QudHh0Iik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJmaXJzdEVudHJ5LmZ1bGxQYXRoIiwgIi90ZXN0LnR4dCIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiZmlyc3RFbnRyeS5pc0ZpbGUiKTsKKyAgICByZXR1cm4gZmlsZUFzUHJvbWlzZShm
aXJzdEVudHJ5KS50aGVuKGZpbGUgPT4geworICAgICAgICBmaWxlUmVzdWx0ID0gZmlsZTsKKyAg
ICAgICAgc2hvdWxkQmUoImZpbGVSZXN1bHQuX19wcm90b19fIiwgIkZpbGUucHJvdG90eXBlIik7
CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZVJlc3VsdC5uYW1lIiwgInRlc3Qu
dHh0Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZVJlc3VsdC53ZWJraXRS
ZWxhdGl2ZVBhdGgiLCAiIik7CisgICAgICAgIHNob3VsZEJlKCJmaWxlUmVzdWx0LnNpemUiLCAi
NSIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGVSZXN1bHQudHlwZSIsICJ0
ZXh0L3BsYWluIik7CisgICAgfSwgZSA9PiB7CisgICAgICAgIHRlc3RGYWlsZWQoImZpbGVFbnRy
eS5maWxlKCkgY2FsbCBmYWlsZWQgdW5leHBlY3RlZGx5OiAiICsgZSk7CisgICAgfSkudGhlbihm
dW5jdGlvbigpIHsKKyAgICAgICByZXR1cm4gcmVhZFRleHRGaWxlQXNQcm9taXNlKGZpbGVSZXN1
bHQpLnRoZW4oY29udGVudCA9PiB7CisgICAgICAgICAgIGNvbnRlbnRSZXN1bHQgPSBjb250ZW50
OworICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRlbnRSZXN1bHQiLCAiSGVs
bG8iKTsKKyAgICAgICB9KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdDIoKQoreworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygic2Vjb25kRW50cnkubmFtZSIsICJ0ZXN0RmlsZXMiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlY29uZEVudHJ5LmZ1bGxQYXRoIiwgIi90ZXN0
RmlsZXMiKTsKKyAgICBzaG91bGRCZVRydWUoInNlY29uZEVudHJ5LmlzRGlyZWN0b3J5Iik7CisK
KyAgICByZXR1cm4gZ2V0RmlsZUFzUHJvbWlzZShzZWNvbmRFbnRyeSwgInN1YmZvbGRlcjEvZmls
ZTMudHh0IikudGhlbihmaWxlRW50cnkgPT4geworICAgICAgICBmaWxlRW50cnlSZXN1bHQgPSBm
aWxlRW50cnk7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZUVudHJ5UmVzdWx0
Lm5hbWUiLCAiZmlsZTMudHh0Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmls
ZUVudHJ5UmVzdWx0LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMS9maWxlMy50eHQi
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJmaWxlRW50cnlSZXN1bHQuaXNGaWxlIik7CisgICAg
fSwgZSA9PiB7CisgICAgICAgIHRlc3RGYWlsZWQoImRpcmVjdG9yeUVudHJ5LmdldEZpbGUoKSBj
YWxsIGZhaWxlZCB1bmV4cGVjdGVkbHk6ICIgKyBlKTsKKyAgICB9KS50aGVuKGZ1bmN0aW9uKCkg
eworICAgICAgICByZXR1cm4gZmlsZUFzUHJvbWlzZShmaWxlRW50cnlSZXN1bHQpLnRoZW4oZmls
ZSA9PiB7CisgICAgICAgICAgICBmaWxlM1Jlc3VsdCA9IGZpbGU7CisgICAgICAgICAgICBzaG91
bGRCZSgiZmlsZTNSZXN1bHQuX19wcm90b19fIiwgIkZpbGUucHJvdG90eXBlIik7CisgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGUzUmVzdWx0Lm5hbWUiLCAiZmlsZTMudHh0
Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGUzUmVzdWx0LndlYmtp
dFJlbGF0aXZlUGF0aCIsICIiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJmaWxlM1Jlc3VsdC5z
aXplIiwgIjIiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZTNSZXN1
bHQudHlwZSIsICJ0ZXh0L3BsYWluIik7CisgICAgICAgIH0sIGUgPT4geworICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZmlsZUVudHJ5LmZpbGUoKSBjYWxsIGZhaWxlZCB1bmV4cGVjdGVkbHk6ICIg
KyBlKTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBy
ZWFkVGV4dEZpbGVBc1Byb21pc2UoZmlsZTNSZXN1bHQpLnRoZW4oY29udGVudCA9PiB7CisgICAg
ICAgICAgICAgICAgY29udGVudFJlc3VsdCA9IGNvbnRlbnQ7CisgICAgICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZW50UmVzdWx0IiwgIjNcbiIpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2YXIgZHJvcHpvbmUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZHJvcHpvbmUnKTsKK2Ryb3B6b25lLm9uZHJvcCA9IGZ1bmN0aW9uKGUp
IHsKKyAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgZGF0YVRyYW5zZmVyID0gZS5kYXRhVHJh
bnNmZXI7CisKKyAgICBzaG91bGRCZSgiZGF0YVRyYW5zZmVyLml0ZW1zLmxlbmd0aCIsICIyIik7
CisKKyAgICBmaXJzdEVudHJ5ID0gZGF0YVRyYW5zZmVyLml0ZW1zWzBdLndlYmtpdEdldEFzRW50
cnkoKTsKKyAgICBzZWNvbmRFbnRyeSA9IGRhdGFUcmFuc2Zlci5pdGVtc1sxXS53ZWJraXRHZXRB
c0VudHJ5KCk7CisKKyAgICB0ZXN0MSgpLnRoZW4odGVzdDIpLnRoZW4oZmluaXNoSlNUZXN0KTsK
K307CisKK2Ryb3B6b25lLm9uZHJhZ292ZXIgPSBmdW5jdGlvbihldikgeworICAgIGV2LnByZXZl
bnREZWZhdWx0KCk7Cit9CisKK29ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGRyYWdGaWxlc09u
dG9FbGVtZW50KGRyb3B6b25lLCBbJy4uLy4uL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3Rlc3QudHh0
JywgJy4uLy4uL2Zhc3QvZm9ybXMvZmlsZS9yZXNvdXJjZXMvdGVzdEZpbGVzJ10pOworfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDY3OTQ4YjQ5ZjA3OGQxODRhNGQzMThhODliMGY5NjVlYTEzMmJiMWQu
LjgzNDY1NTExYzg0YzRiM2VhMzk2NGU4NWVkMTkxMzg5N2YzM2VkZWUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCkBAIC01NjYsNiArNTY2LDcgQEAgcGxhdGZv
cm0vbWFjL2Zhc3QvZXZlbnRzL29iamMtZXZlbnQtYXBpLmh0bWwKIGVkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXIuaHRtbAogZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1lcnJvci5o
dG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5
UmVhZGVyLXJvb3QuaHRtbAorZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1k
cm9wLWZpbGVFbnRyeS1maWxlLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXIt
aXRlbXMtZHJvcC1nZXRBc0VudHJ5Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNm
ZXItaXRlbXMtZHJvcC1nZXREaXJlY3RvcnkuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0
cmFuc2Zlci1pdGVtcy1kcm9wLWdldEZpbGUuaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>