<?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>163325</bug_id>
          
          <creation_ts>2016-10-12 02:59:22 -0700</creation_ts>
          <short_desc>Update serializer and iterator binding generated code</short_desc>
          <delta_ts>2016-10-13 23:21:55 -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></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>alex</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1239227</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-12 02:59:22 -0700</bug_when>
    <thetext>Serializer can use the direct attribute getter functions.
Serializer and iterator operations can use BindingCaller::callOperation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239228</commentid>
    <comment_count>1</comment_count>
      <attachid>291347</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-12 03:03:12 -0700</bug_when>
    <thetext>Created attachment 291347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239235</commentid>
    <comment_count>2</comment_count>
      <attachid>291349</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-12 04:19:52 -0700</bug_when>
    <thetext>Created attachment 291349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239307</commentid>
    <comment_count>3</comment_count>
      <attachid>291349</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-12 09:21:50 -0700</bug_when>
    <thetext>Comment on attachment 291349
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMIterator.h:135
&gt; +    JSDOMGlobalObject&amp; globalObject = *thisObject.globalObject();

I suggest auto&amp; here instead of naming a type.

&gt; Source/WebCore/bindings/js/JSDOMIterator.h:197
&gt;              break;

I think it would be better to do &quot;return { };&quot; here instead of break.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240120</commentid>
    <comment_count>4</comment_count>
      <attachid>291349</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-13 23:21:50 -0700</bug_when>
    <thetext>Comment on attachment 291349
Patch

Clearing flags on attachment: 291349

Committed r207324: &lt;http://trac.webkit.org/changeset/207324&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240121</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-13 23:21:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291347</attachid>
            <date>2016-10-12 03:03:12 -0700</date>
            <delta_ts>2016-10-12 04:19:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163325-20161012115946.patch</filename>
            <type>text/plain</type>
            <size>22386</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWEwODE0YjE3ZGE5ZWYz
NjQ5NmU2NjlhMTE0NGM5ODQ1ZjNjMDc3Yi4uZmQxYTRjOWQ2MTkyY2FlMGYwNmZiOGZiMDhlMDE5
YmM2Yzk4ZDFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTEwLTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgc2VyaWFsaXpl
ciBhbmQgaXRlcmF0b3IgYmluZGluZyBnZW5lcmF0ZWQgY29kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzI1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGJlaGF2aW9yLgorICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzIGFuZCByZWJhc2VkIGJpbmRpbmcgZ2VuZXJh
dGVkIGNvZGUuCisKKyAgICAgICAgTWFraW5nIHVzZSBvZiBCaW5kaW5nQ2FsbGVyOjpjYWxsT3Bl
cmF0aW9uIHdpdGhpbiBzZXJpYWxpemVyIGFuZCBpdGVyYXRvciBvcGVyYXRpb25zLgorICAgICAg
ICBSZWZhY3RvcmVkIHNlcmlhbGl6ZXIgY29kZSB0byB1c2UgZGlyZWN0IGF0dHJpYnV0ZSBnZXR0
ZXJzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oOgorICAgICAgICAo
V2ViQ29yZTo6aXRlcmF0b3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6aXRlcmF0b3JGb3JF
YWNoKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEdlbmVyYXRlU2VyaWFsaXplckZ1bmN0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlSW1w
bGVtZW50YXRpb25JdGVyYWJsZUZ1bmN0aW9ucyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEl0
ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvckNhbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXND
YWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlv
bkVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5j
dGlvbktleXNDYWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVQcm90b3R5
cGVGdW5jdGlvbktleXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVQcm90b3R5
cGVGdW5jdGlvblZhbHVlc0NhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJdGVyYWJs
ZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEl0ZXJh
YmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3ROb2RlUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvckNhbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQ2FsbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0NhbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25LZXlzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblZhbHVlc0NhbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaENhbGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNo
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRvSlNPTik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvSlNPTik6CisKIDIwMTYt
MTAtMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFj
dG9yIGJpbmRpbmcgZ2VuZXJhdGVkIGNhc3RlZC10aGlzIGNoZWNrcyBmb3IgbWV0aG9kcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCmluZGV4IGM5ZTA1ZWJhMjc1
MTFmMTBmZGI1ZGVmMjEwMzc2OTdkZGQ4NTViMDAuLmU5ZWI1NWRkMjcyMjgxNzdlNjA3MzAzMDMz
MjBkMDc4Njg2ODZmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJh
dG9yLmgKQEAgLTEyNCwyMSArMTI0LDE2IEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBKU1dyYXBwZXI+Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIGl0ZXJhdG9yQ3JlYXRlKEpTQzo6
RXhlY1N0YXRlJiwgSXRlcmF0aW9uS2luZCwgY29uc3QgY2hhciopOworSlNDOjpKU1ZhbHVlIGl0
ZXJhdG9yQ3JlYXRlKEpTV3JhcHBlciYsIEl0ZXJhdGlvbktpbmQpOwogdGVtcGxhdGU8dHlwZW5h
bWUgSlNXcmFwcGVyPgotSlNDOjpFbmNvZGVkSlNWYWx1ZSBpdGVyYXRvckZvckVhY2goSlNDOjpF
eGVjU3RhdGUmLCBjb25zdCBjaGFyKik7CitKU0M6OkpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpT
Qzo6RXhlY1N0YXRlJiwgSlNXcmFwcGVyJiwgSlNDOjpUaHJvd1Njb3BlJik7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEpTV3JhcHBlcj4KLUpTQzo6RW5jb2RlZEpTVmFsdWUgaXRlcmF0b3JDcmVhdGUo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBJdGVyYXRpb25LaW5kIGtpbmQsIGNvbnN0IGNoYXIqIHBy
b3BlcnR5TmFtZSkKK0pTQzo6SlNWYWx1ZSBpdGVyYXRvckNyZWF0ZShKU1dyYXBwZXImIHRoaXNP
YmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKIHsKLSAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZt
KCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgYXV0
byB3cmFwcGVyID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTV3JhcHBlcio+KHN0YXRlLnRoaXNWYWx1
ZSgpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXdyYXBwZXIpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgSlNXcmFwcGVyOjppbmZvKCktPmNsYXNzTmFtZSwg
cHJvcGVydHlOYW1lKTsKLSAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0ID0gKndy
YXBwZXItPmdsb2JhbE9iamVjdCgpOwotICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShK
U0RPTUl0ZXJhdG9yPEpTV3JhcHBlcj46OmNyZWF0ZShnbG9iYWxPYmplY3Qudm0oKSwgZ2V0RE9N
U3RydWN0dXJlPEpTRE9NSXRlcmF0b3I8SlNXcmFwcGVyPj4oZ2xvYmFsT2JqZWN0LnZtKCksIGds
b2JhbE9iamVjdCksICp3cmFwcGVyLCBraW5kKSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QuZ2xv
YmFsT2JqZWN0KCkpOworICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QgPSAqdGhp
c09iamVjdC5nbG9iYWxPYmplY3QoKTsKKyAgICByZXR1cm4gSlNET01JdGVyYXRvcjxKU1dyYXBw
ZXI+OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LnZtKCksIGdldERPTVN0cnVjdHVyZTxKU0RPTUl0ZXJh
dG9yPEpTV3JhcHBlcj4+KGdsb2JhbE9iamVjdC52bSgpLCBnbG9iYWxPYmplY3QpLCB0aGlzT2Jq
ZWN0LCBraW5kKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgpAQCAtMTgyLDMz
ICsxNzcsMjYgQEAgYXBwZW5kRm9yRWFjaEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEoKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgSlNXcmFwcGVyPgotSlNDOjpFbmNvZGVkSlNWYWx1ZSBpdGVyYXRvckZvckVhY2goSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpCitKU0M6OkpTVmFsdWUg
aXRlcmF0b3JGb3JFYWNoKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNXcmFwcGVyJiB0aGlzT2Jq
ZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKQogewotICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUu
dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBh
dXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcmFwcGVyKj4oc3RhdGUudGhpc1Zh
bHVlKCkpOwotICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikpCi0gICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCBKU1dyYXBwZXI6OmluZm8oKS0+Y2xhc3NOYW1l
LCBwcm9wZXJ0eU5hbWUpOwotCiAgICAgSlNDOjpKU1ZhbHVlIGNhbGxiYWNrID0gc3RhdGUuYXJn
dW1lbnQoMCk7CiAgICAgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDEp
OwogCiAgICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBKU0M6OkNhbGxUeXBlIGNhbGxU
eXBlID0gSlNDOjpnZXRDYWxsRGF0YShjYWxsYmFjaywgY2FsbERhdGEpOwogICAgIGlmIChjYWxs
VHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcigmc3RhdGUsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0
ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNhbGwgY2FsbGJhY2siKSk7CiAKLSAgICBh
dXRvIGl0ZXJhdG9yID0gd3JhcHBlci0+d3JhcHBlZCgpLmNyZWF0ZUl0ZXJhdG9yKCk7CisgICAg
YXV0byBpdGVyYXRvciA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLmNyZWF0ZUl0ZXJhdG9yKCk7CiAg
ICAgd2hpbGUgKGF1dG8gdmFsdWUgPSBpdGVyYXRvci5uZXh0KCkpIHsKICAgICAgICAgSlNDOjpN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgICAgIGFwcGVuZEZvckVhY2hBcmd1
bWVudHMoc3RhdGUsIHdyYXBwZXItPmdsb2JhbE9iamVjdCgpLCBhcmd1bWVudHMsIHZhbHVlKTsK
LSAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh3cmFwcGVyKTsKKyAgICAgICAgYXBwZW5kRm9yRWFj
aEFyZ3VtZW50cyhzdGF0ZSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgYXJndW1lbnRzLCB2
YWx1ZSk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoJnRoaXNPYmplY3QpOwogICAgICAgICBK
U0M6OmNhbGwoJnN0YXRlLCBjYWxsYmFjaywgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUs
IGFyZ3VtZW50cyk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCiAg
ICAgICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2Rl
KEpTQzo6anNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAwOWM4OGFmZDFiMWE2MmM0
YmYzOWNjNWMwNWM3MmQwMjMzNjhlYTNjLi45N2RmNzViMzFiOWEwMDBmYzk4NGNiMzU5NTAyMDlk
YWEyNGMyMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzkxNywyOCArMzkxNywyOSBAQCBzdWIgR2VuZXJhdGVTZXJp
YWxpemVyRnVuY3Rpb24KICAgICBteSAkc2VyaWFsaXplck5hdGl2ZUZ1bmN0aW9uTmFtZSA9ICRj
b2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRjbGFzc05hbWUpIC4gIlByb3RvdHlwZUZ1bmN0aW9u
IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRzZXJpYWxpemVyRnVuY3Rpb25OYW1lKTsK
IAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJPYmplY3RDb25zdHJ1Y3Rvci5oIik7Ci0gICAgcHVz
aChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7c2VyaWFsaXpl
ck5hdGl2ZUZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAgIHB1c2goQGlt
cGxDb250ZW50LCAic3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSAke3NlcmlhbGl6ZXJOYXRp
dmVGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUsIEpTJGludGVyZmFjZU5hbWUqIHRoaXNP
YmplY3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSlcbiIpOwogICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKHN0YXRl
KTtcbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpO1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKUyRpbnRlcmZhY2VOYW1lKj4odGhpc1ZhbHVlKTtc
biIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xu
Iik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKVxuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBcIiRpbnRl
cmZhY2VOYW1lXCIsIFwiJHNlcmlhbGl6ZXJGdW5jdGlvbk5hbWVcIik7XG4iKTsKLSAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
ICR7Y2xhc3NOYW1lfTo6aW5mbygpKTtcblxuIikgdW5sZXNzICRpbnRlcmZhY2VOYW1lIGVxICJF
dmVudFRhcmdldCI7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgdm0gPSBzdGF0
ZS0+dm0oKTtcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHJlc3VsdCA9
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHN0YXRlKTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50
LCAiXG4iKTsKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmli
dXRlc30pIHsKICAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7
CiAgICAgICAgIGlmIChncmVwICRfIGVxICRuYW1lLCBAeyRpbnRlcmZhY2UtPnNlcmlhbGl6YWJs
ZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgICAgIG15ICRnZXRGdW5jdGlvbk5hbWUgPSBHZXRB
dHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byAke25hbWV9VmFsdWUgPSAk
e2dldEZ1bmN0aW9uTmFtZX0oc3RhdGUsIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpLCBJZGVu
dGlmaWVyKCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRv
ICR7bmFtZX1WYWx1ZSA9ICR7Z2V0RnVuY3Rpb25OYW1lfUdldHRlcigqc3RhdGUsICp0aGlzT2Jq
ZWN0LCB0aHJvd1Njb3BlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTtcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCBcIiR7bmFtZX1cIiksIEpTVmFsdWU6OmRlY29kZSgke25hbWV9VmFsdWUp
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBcIiR7bmFtZX1cIiksICR7bmFt
ZX1WYWx1ZSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKICAg
ICAgICAgfQogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7
CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwg
IlxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMICR7c2VyaWFsaXplck5hdGl2ZUZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIp
OworICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlMkaW50ZXJmYWNlTmFtZT46OmNhbGxPcGVyYXRp
b248JHtzZXJpYWxpemVyTmF0aXZlRnVuY3Rpb25OYW1lfUNhbGxlcj4oc3RhdGUsIFwiJHNlcmlh
bGl6ZXJGdW5jdGlvbk5hbWVcIik7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIp
OworICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKIH0KIAogc3ViIEdlbmVyYXRlQ2FsbFdp
dGhVc2luZ1JlZmVyZW5jZXMKQEAgLTQ3NDAsMjcgKzQ3NDEsMzYgQEAgRU5ECiAgICAgICAgIG15
ICRwcm9wZXJ0eU5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgbXkg
JGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAk
ZnVuY3Rpb24pOwogCi0gICAgICAgIGlmIChub3QgJHByb3BlcnR5TmFtZSBlcSAiZm9yRWFjaCIp
IHsKKyAgICAgICAgaWYgKCRwcm9wZXJ0eU5hbWUgZXEgImZvckVhY2giKSB7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgJHtmdW5jdGlvbk5hbWV9Q2FsbGVyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTJGludGVyZmFjZU5h
bWUqIHRoaXNPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yRm9yRWFjaDwke2NsYXNzTmFtZX0+KCpzdGF0ZSwg
KnRoaXNPYmplY3QsIHRocm93U2NvcGUpKTsKK30KKworRU5ECisgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBteSAkaXRlcmF0aW9uS2luZCA9ICJLZXlWYWx1ZSI7CiAgICAgICAgICAgICAk
aXRlcmF0aW9uS2luZCA9ICJLZXkiIGlmICRwcm9wZXJ0eU5hbWUgZXEgImtleXMiOwogICAgICAg
ICAgICAgJGl0ZXJhdGlvbktpbmQgPSAiVmFsdWUiIGlmICRwcm9wZXJ0eU5hbWUgZXEgInZhbHVl
cyI7CiAgICAgICAgICAgICAkaXRlcmF0aW9uS2luZCA9ICJWYWx1ZSIgaWYgJHByb3BlcnR5TmFt
ZSBlcSAiW1N5bWJvbC5JdGVyYXRvcl0iIGFuZCBub3QgJGludGVyZmFjZS0+aXRlcmFibGUtPmlz
S2V5VmFsdWU7CisKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlICR7ZnVuY3Rpb25OYW1l
fUNhbGxlcihFeGVjU3RhdGUqLCBKUyRpbnRlcmZhY2VOYW1lKiB0aGlzT2JqZWN0LCBKU0M6OlRo
cm93U2NvcGUmKQogewotICAgIHJldHVybiBpdGVyYXRvckNyZWF0ZTwke2NsYXNzTmFtZX0+KCpz
dGF0ZSwgSXRlcmF0aW9uS2luZDo6JHtpdGVyYXRpb25LaW5kfSwgIiR7cHJvcGVydHlOYW1lfSIp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JDcmVhdGU8JHtjbGFzc05hbWV9
PigqdGhpc09iamVjdCwgSXRlcmF0aW9uS2luZDo6JHtpdGVyYXRpb25LaW5kfSkpOwogfQogCiBF
TkQKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxF
TkQpOworICAgICAgICB9CisKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaXRlcmF0b3JGb3JFYWNoPCR7Y2xhc3NOYW1l
fT4oKnN0YXRlLCAiJHtwcm9wZXJ0eU5hbWV9Iik7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
JGNsYXNzTmFtZT46OmNhbGxPcGVyYXRpb248JHtmdW5jdGlvbk5hbWV9Q2FsbGVyPihzdGF0ZSwg
IiR7cHJvcGVydHlOYW1lfSIpOwogfQogCiBFTkQKLSAgICAgICAgfQogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0
ZXJhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJdGVyYWJsZS5jcHAKaW5kZXggZTBlZDNlZGI2MGIwYjkwMzBmZTY1MWVjYWNkMDVjNWUwMmIy
MGJmMC4uYzUxMGE5ZjJiMTdjZjZhNzg1MjRjNzgyNzE1MDhiY2FjMjY0OWI5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SXRlcmFibGUuY3BwCkBAIC0xNzIsMjkgKzE3Miw1NCBAQCBjb25zdCBKU0M6OkNsYXNzSW5mbyBU
ZXN0SXRlcmFibGVJdGVyYXRvcjo6c19pbmZvID0geyAiVGVzdEl0ZXJhYmxlIEl0ZXJhdG9yIiwg
JgogdGVtcGxhdGU8PgogY29uc3QgSlNDOjpDbGFzc0luZm8gVGVzdEl0ZXJhYmxlSXRlcmF0b3JQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RJdGVyYWJsZSBJdGVyYXRvciIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVzdEl0ZXJhYmxlSXRlcmF0b3JQcm90b3R5cGUp
IH07CiAKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0SXRlcmFibGVQcm90b3R5
cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yQ2FsbGVyKEV4ZWNTdGF0ZSosIEpTVGVzdEl0ZXJhYmxl
KiB0aGlzT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmKQoreworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoaXRlcmF0b3JDcmVhdGU8SlNUZXN0SXRlcmFibGU+KCp0aGlzT2JqZWN0LCBJdGVyYXRp
b25LaW5kOjpWYWx1ZSkpOworfQorCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yKEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaXRlcmF0b3JDcmVhdGU8SlNUZXN0SXRlcmFibGU+
KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6VmFsdWUsICJbU3ltYm9sLkl0ZXJhdG9yXSIpOworICAg
IHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEl0ZXJhYmxlPjo6Y2FsbE9wZXJhdGlvbjxqc1Rl
c3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3JDYWxsZXI+KHN0YXRlLCAi
W1N5bWJvbC5JdGVyYXRvcl0iKTsKK30KKworc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllc0NhbGxlcihFeGVjU3RhdGUqLCBK
U1Rlc3RJdGVyYWJsZSogdGhpc09iamVjdCwgSlNDOjpUaHJvd1Njb3BlJikKK3sKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yQ3JlYXRlPEpTVGVzdEl0ZXJhYmxlPigqdGhpc09i
amVjdCwgSXRlcmF0aW9uS2luZDo6S2V5VmFsdWUpKTsKIH0KIAogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaXRlcmF0b3JDcmVhdGU8SlNUZXN0
SXRlcmFibGU+KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6S2V5VmFsdWUsICJlbnRyaWVzIik7Cisg
ICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0SXRlcmFibGU+OjpjYWxsT3BlcmF0aW9uPGpz
VGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQ2FsbGVyPihzdGF0ZSwgImVudHJp
ZXMiKTsKK30KKworc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJdGVyYWJsZVBy
b3RvdHlwZUZ1bmN0aW9uS2V5c0NhbGxlcihFeGVjU3RhdGUqLCBKU1Rlc3RJdGVyYWJsZSogdGhp
c09iamVjdCwgSlNDOjpUaHJvd1Njb3BlJikKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGl0ZXJhdG9yQ3JlYXRlPEpTVGVzdEl0ZXJhYmxlPigqdGhpc09iamVjdCwgSXRlcmF0aW9uS2lu
ZDo6S2V5KSk7CiB9CiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJ
dGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0g
ICAgcmV0dXJuIGl0ZXJhdG9yQ3JlYXRlPEpTVGVzdEl0ZXJhYmxlPigqc3RhdGUsIEl0ZXJhdGlv
bktpbmQ6OktleSwgImtleXMiKTsKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RJdGVy
YWJsZT46OmNhbGxPcGVyYXRpb248anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbktleXND
YWxsZXI+KHN0YXRlLCAia2V5cyIpOworfQorCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxsZXIoRXhlY1N0YXRlKiwg
SlNUZXN0SXRlcmFibGUqIHRoaXNPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYpCit7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShpdGVyYXRvckNyZWF0ZTxKU1Rlc3RJdGVyYWJsZT4oKnRoaXNP
YmplY3QsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlKSk7CiB9CiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaXRlcmF0b3JDcmVhdGU8SlNUZXN0SXRl
cmFibGU+KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6VmFsdWUsICJ2YWx1ZXMiKTsKKyAgICByZXR1
cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RJdGVyYWJsZT46OmNhbGxPcGVyYXRpb248anNUZXN0SXRl
cmFibGVQcm90b3R5cGVGdW5jdGlvblZhbHVlc0NhbGxlcj4oc3RhdGUsICJ2YWx1ZXMiKTsKK30K
Kworc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1
bmN0aW9uRm9yRWFjaENhbGxlcihFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RJdGVyYWJsZSogdGhp
c09iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoaXRlcmF0b3JGb3JFYWNoPEpTVGVzdEl0ZXJhYmxlPigqc3RhdGUsICp0aGlz
T2JqZWN0LCB0aHJvd1Njb3BlKSk7CiB9CiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yRm9yRWFjaDxKU1Rlc3RJdGVyYWJsZT4o
KnN0YXRlLCAiZm9yRWFjaCIpOworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEl0ZXJh
YmxlPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFj
aENhbGxlcj4oc3RhdGUsICJmb3JFYWNoIik7CiB9CiAKIGJvb2wgSlNUZXN0SXRlcmFibGVPd25l
cjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCA1YmJi
ZDE5YTE5MzQ2NTZiMWNhM2VkNjYzYmY0ZWEwZTliMDU4NTQ0Li43MmExMzA0YWMwOTgxZjMwMmJj
N2VhOWUxZGU1Y2JhN2NiYTA4MDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0yNzQsNDkgKzI3NCw3MyBA
QCBjb25zdCBKU0M6OkNsYXNzSW5mbyBUZXN0Tm9kZUl0ZXJhdG9yOjpzX2luZm8gPSB7ICJUZXN0
Tm9kZSBJdGVyYXRvciIsICZCYXNlOjpzXwogdGVtcGxhdGU8PgogY29uc3QgSlNDOjpDbGFzc0lu
Zm8gVGVzdE5vZGVJdGVyYXRvclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5vZGUgSXRlcmF0
b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlc3ROb2RlSXRlcmF0
b3JQcm90b3R5cGUpIH07CiAKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9k
ZVByb3RvdHlwZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3JDYWxsZXIoRXhlY1N0YXRlKiwgSlNUZXN0
Tm9kZSogdGhpc09iamVjdCwgSlNDOjpUaHJvd1Njb3BlJikKK3sKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGl0ZXJhdG9yQ3JlYXRlPEpTVGVzdE5vZGU+KCp0aGlzT2JqZWN0LCBJdGVyYXRp
b25LaW5kOjpWYWx1ZSkpOworfQorCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3IoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlKQogewotICAgIHJldHVybiBpdGVyYXRvckNyZWF0ZTxKU1Rlc3ROb2RlPigqc3RhdGUs
IEl0ZXJhdGlvbktpbmQ6OlZhbHVlLCAiW1N5bWJvbC5JdGVyYXRvcl0iKTsKKyAgICByZXR1cm4g
QmluZGluZ0NhbGxlcjxKU1Rlc3ROb2RlPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3ROb2RlUHJvdG90
eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvckNhbGxlcj4oc3RhdGUsICJbU3ltYm9sLkl0ZXJhdG9y
XSIpOworfQorCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5
cGVGdW5jdGlvbkVudHJpZXNDYWxsZXIoRXhlY1N0YXRlKiwgSlNUZXN0Tm9kZSogdGhpc09iamVj
dCwgSlNDOjpUaHJvd1Njb3BlJikKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJh
dG9yQ3JlYXRlPEpTVGVzdE5vZGU+KCp0aGlzT2JqZWN0LCBJdGVyYXRpb25LaW5kOjpLZXlWYWx1
ZSkpOwogfQogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVBy
b3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0
dXJuIGl0ZXJhdG9yQ3JlYXRlPEpTVGVzdE5vZGU+KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6S2V5
VmFsdWUsICJlbnRyaWVzIik7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0Tm9kZT46
OmNhbGxPcGVyYXRpb248anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllc0NhbGxlcj4o
c3RhdGUsICJlbnRyaWVzIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNU
ZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0NhbGxlcihFeGVjU3RhdGUqLCBKU1Rlc3ROb2Rl
KiB0aGlzT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmKQoreworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoaXRlcmF0b3JDcmVhdGU8SlNUZXN0Tm9kZT4oKnRoaXNPYmplY3QsIEl0ZXJhdGlvbktp
bmQ6OktleSkpOwogfQogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAg
cmV0dXJuIGl0ZXJhdG9yQ3JlYXRlPEpTVGVzdE5vZGU+KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6
S2V5LCAia2V5cyIpOworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vZGU+OjpjYWxs
T3BlcmF0aW9uPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbktleXNDYWxsZXI+KHN0YXRlLCAi
a2V5cyIpOworfQorCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90
b3R5cGVGdW5jdGlvblZhbHVlc0NhbGxlcihFeGVjU3RhdGUqLCBKU1Rlc3ROb2RlKiB0aGlzT2Jq
ZWN0LCBKU0M6OlRocm93U2NvcGUmKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaXRl
cmF0b3JDcmVhdGU8SlNUZXN0Tm9kZT4oKnRoaXNPYmplY3QsIEl0ZXJhdGlvbktpbmQ6OlZhbHVl
KSk7CiB9CiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJv
dG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVy
biBpdGVyYXRvckNyZWF0ZTxKU1Rlc3ROb2RlPigqc3RhdGUsIEl0ZXJhdGlvbktpbmQ6OlZhbHVl
LCAidmFsdWVzIik7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0Tm9kZT46OmNhbGxP
cGVyYXRpb248anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzQ2FsbGVyPihzdGF0ZSwg
InZhbHVlcyIpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkZvckVh
Y2hDYWxsZXIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0Tm9kZSogdGhpc09iamVjdCwgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIHJldHVybiBpdGVyYXRvckZvckVhY2g8SlNU
ZXN0Tm9kZT4oKnN0YXRlLCAiZm9yRWFjaCIpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
aXRlcmF0b3JGb3JFYWNoPEpTVGVzdE5vZGU+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHRocm93U2Nv
cGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90
eXBlRnVuY3Rpb25Ub0pTT04oRXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKLSAgICBBU1NFUlQoc3RhdGUpOwotICAgIGF1dG8gdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0Tm9kZSo+KHRoaXNWYWx1ZSk7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Ci0g
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9kZSIsICJ0b0pTT04iKTsKLSAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE5vZGU6OmluZm8oKSk7CisgICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0Tm9kZT46OmNhbGxPcGVyYXRpb248anNUZXN0Tm9kZVBy
b3RvdHlwZUZ1bmN0aW9uRm9yRWFjaENhbGxlcj4oc3RhdGUsICJmb3JFYWNoIik7Cit9CiAKK3N0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9K
U09OKEV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE5vZGUqIHRoaXNPYmplY3QsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBhdXRvJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1
dG8qIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHN0YXRlKTsKLSAgICBhdXRvIG5hbWVW
YWx1ZSA9IGpzVGVzdE5vZGVOYW1lKHN0YXRlLCBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKSwg
SWRlbnRpZmllcigpKTsKKworICAgIGF1dG8gbmFtZVZhbHVlID0ganNUZXN0Tm9kZU5hbWVHZXR0
ZXIoKnN0YXRlLCAqdGhpc09iamVjdCwgdGhyb3dTY29wZSk7CiAgICAgQVNTRVJUKCF0aHJvd1Nj
b3BlLmV4Y2VwdGlvbigpKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJuYW1lIiksIEpTVmFsdWU6OmRlY29kZShuYW1lVmFsdWUpKTsKKyAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJuYW1l
IiksIG5hbWVWYWx1ZSk7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0
aW9uVG9KU09OKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0Tm9kZT46OmNhbGxPcGVyYXRpb248anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9K
U09OQ2FsbGVyPihzdGF0ZSwgInRvSlNPTiIpOworfQorCiB2b2lkIEpTVGVzdE5vZGU6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5vZGUqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXgg
OWY5NDU4ZTkxNzY3ZjliZjU2NDZiMTM0YmQ0NjBkYTgwOTI2NjRiOC4uNDUyY2RmMzkyYTdjYWJh
NDRhMjc1NWE3YjM0Y2MzYjg4Zjc3Yzk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTc3MzIsMzMgKzc3MzIs
MzUgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVG9TdHJpbmdDYWxsZXIoSlNDOjoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Ub0pTT04oRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oRXhlY1N0YXRlKiBz
dGF0ZSwgSlNUZXN0T2JqKiB0aGlzT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CiB7Ci0gICAgQVNTRVJUKHN0YXRlKTsKLSAgICBhdXRvIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKLSAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Ci0gICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqIiwgInRvSlNPTiIpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotCisgICAgYXV0byYgdm0gPSBzdGF0ZS0+
dm0oKTsKICAgICBhdXRvKiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChzdGF0ZSk7Ci0g
ICAgYXV0byByZWFkT25seVN0cmluZ0F0dHJWYWx1ZSA9IGpzVGVzdE9ialJlYWRPbmx5U3RyaW5n
QXR0cihzdGF0ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSksIElkZW50aWZpZXIoKSk7CisK
KyAgICBhdXRvIHJlYWRPbmx5U3RyaW5nQXR0clZhbHVlID0ganNUZXN0T2JqUmVhZE9ubHlTdHJp
bmdBdHRyR2V0dGVyKCpzdGF0ZSwgKnRoaXNPYmplY3QsIHRocm93U2NvcGUpOwogICAgIEFTU0VS
VCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicmVhZE9ubHlTdHJpbmdBdHRyIiksIEpTVmFsdWU6
OmRlY29kZShyZWFkT25seVN0cmluZ0F0dHJWYWx1ZSkpOwotICAgIGF1dG8gZW51bUF0dHJWYWx1
ZSA9IGpzVGVzdE9iakVudW1BdHRyKHN0YXRlLCBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKSwg
SWRlbnRpZmllcigpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJyZWFkT25seVN0cmluZ0F0dHIiKSwgcmVhZE9ubHlTdHJpbmdBdHRyVmFs
dWUpOworCisgICAgYXV0byBlbnVtQXR0clZhbHVlID0ganNUZXN0T2JqRW51bUF0dHJHZXR0ZXIo
KnN0YXRlLCAqdGhpc09iamVjdCwgdGhyb3dTY29wZSk7CiAgICAgQVNTRVJUKCF0aHJvd1Njb3Bl
LmV4Y2VwdGlvbigpKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJlbnVtQXR0ciIpLCBKU1ZhbHVlOjpkZWNvZGUoZW51bUF0dHJWYWx1ZSkp
OwotICAgIGF1dG8gbG9uZ0F0dHJWYWx1ZSA9IGpzVGVzdE9iakxvbmdBdHRyKHN0YXRlLCBKU1Zh
bHVlOjplbmNvZGUodGhpc1ZhbHVlKSwgSWRlbnRpZmllcigpKTsKKyAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJlbnVtQXR0ciIpLCBlbnVtQXR0
clZhbHVlKTsKKworICAgIGF1dG8gbG9uZ0F0dHJWYWx1ZSA9IGpzVGVzdE9iakxvbmdBdHRyR2V0
dGVyKCpzdGF0ZSwgKnRoaXNPYmplY3QsIHRocm93U2NvcGUpOwogICAgIEFTU0VSVCghdGhyb3dT
Y29wZS5leGNlcHRpb24oKSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAibG9uZ0F0dHIiKSwgSlNWYWx1ZTo6ZGVjb2RlKGxvbmdBdHRyVmFs
dWUpKTsKLSAgICBhdXRvIGNyZWF0ZVZhbHVlID0ganNUZXN0T2JqQ3JlYXRlKHN0YXRlLCBKU1Zh
bHVlOjplbmNvZGUodGhpc1ZhbHVlKSwgSWRlbnRpZmllcigpKTsKKyAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJsb25nQXR0ciIpLCBsb25nQXR0
clZhbHVlKTsKKworICAgIGF1dG8gY3JlYXRlVmFsdWUgPSBqc1Rlc3RPYmpDcmVhdGVHZXR0ZXIo
KnN0YXRlLCAqdGhpc09iamVjdCwgdGhyb3dTY29wZSk7CiAgICAgQVNTRVJUKCF0aHJvd1Njb3Bl
LmV4Y2VwdGlvbigpKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJjcmVhdGUiKSwgSlNWYWx1ZTo6ZGVjb2RlKGNyZWF0ZVZhbHVlKSk7Cisg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY3Jl
YXRlIiksIGNyZWF0ZVZhbHVlKTsKKwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblRvSlNPTihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25U
b0pTT05DYWxsZXI+KHN0YXRlLCAidG9KU09OIik7Cit9CisKIHZvaWQgSlNUZXN0T2JqOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihjZWxsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291349</attachid>
            <date>2016-10-12 04:19:52 -0700</date>
            <delta_ts>2016-10-13 23:21:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163325-20161012131627.patch</filename>
            <type>text/plain</type>
            <size>22413</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQzMDUyMzY1MDdjMDZl
OWUxZGZjODRlZDM2NTY1ZmYwMzU3MTg0Yi4uNzc2YTc5MWU3OGU2NTdiODExODU3ZmFmZDVhNGRh
OTRjYTljM2M1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTEwLTExICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgc2VyaWFsaXpl
ciBhbmQgaXRlcmF0b3IgYmluZGluZyBnZW5lcmF0ZWQgY29kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzI1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGJlaGF2aW9yLgorICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzIGFuZCByZWJhc2VkIGJpbmRpbmcgZ2VuZXJh
dGVkIGNvZGUuCisKKyAgICAgICAgTWFraW5nIHVzZSBvZiBCaW5kaW5nQ2FsbGVyOjpjYWxsT3Bl
cmF0aW9uIHdpdGhpbiBzZXJpYWxpemVyIGFuZCBpdGVyYXRvciBvcGVyYXRpb25zLgorICAgICAg
ICBSZWZhY3RvcmVkIHNlcmlhbGl6ZXIgY29kZSB0byB1c2UgZGlyZWN0IGF0dHJpYnV0ZSBnZXR0
ZXJzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oOgorICAgICAgICAo
V2ViQ29yZTo6aXRlcmF0b3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6aXRlcmF0b3JGb3JF
YWNoKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEdlbmVyYXRlU2VyaWFsaXplckZ1bmN0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlSW1w
bGVtZW50YXRpb25JdGVyYWJsZUZ1bmN0aW9ucyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEl0
ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvckNhbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXND
YWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlv
bkVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5j
dGlvbktleXNDYWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVQcm90b3R5
cGVGdW5jdGlvbktleXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVQcm90b3R5
cGVGdW5jdGlvblZhbHVlc0NhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJdGVyYWJs
ZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEl0ZXJh
YmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3ROb2RlUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvckNhbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQ2FsbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0NhbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25LZXlzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblZhbHVlc0NhbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaENhbGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNo
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRvSlNPTik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvSlNPTik6CisKIDIwMTYt
MTAtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEF0dHJp
YnV0ZSBzZXR0ZXIgYmluZGluZyBnZW5lcmF0ZWQgY29kZSBzaG91bGQgdXNlIG1vcmUgcmVmZXJl
bmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCmluZGV4IGM5
ZTA1ZWJhMjc1MTFmMTBmZGI1ZGVmMjEwMzc2OTdkZGQ4NTViMDAuLmU5ZWI1NWRkMjcyMjgxNzdl
NjA3MzAzMDMzMjBkMDc4Njg2ODZmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUl0ZXJhdG9yLmgKQEAgLTEyNCwyMSArMTI0LDE2IEBAIHByaXZhdGU6CiB9OwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBKU1dyYXBwZXI+Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIGl0ZXJhdG9yQ3Jl
YXRlKEpTQzo6RXhlY1N0YXRlJiwgSXRlcmF0aW9uS2luZCwgY29uc3QgY2hhciopOworSlNDOjpK
U1ZhbHVlIGl0ZXJhdG9yQ3JlYXRlKEpTV3JhcHBlciYsIEl0ZXJhdGlvbktpbmQpOwogdGVtcGxh
dGU8dHlwZW5hbWUgSlNXcmFwcGVyPgotSlNDOjpFbmNvZGVkSlNWYWx1ZSBpdGVyYXRvckZvckVh
Y2goSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKik7CitKU0M6OkpTVmFsdWUgaXRlcmF0b3JG
b3JFYWNoKEpTQzo6RXhlY1N0YXRlJiwgSlNXcmFwcGVyJiwgSlNDOjpUaHJvd1Njb3BlJik7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEpTV3JhcHBlcj4KLUpTQzo6RW5jb2RlZEpTVmFsdWUgaXRlcmF0
b3JDcmVhdGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBJdGVyYXRpb25LaW5kIGtpbmQsIGNvbnN0
IGNoYXIqIHByb3BlcnR5TmFtZSkKK0pTQzo6SlNWYWx1ZSBpdGVyYXRvckNyZWF0ZShKU1dyYXBw
ZXImIHRoaXNPYmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKIHsKLSAgICBKU0M6OlZNJiB2bSA9
IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
Ci0gICAgYXV0byB3cmFwcGVyID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTV3JhcHBlcio+KHN0YXRl
LnRoaXNWYWx1ZSgpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXdyYXBwZXIpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgSlNXcmFwcGVyOjppbmZvKCktPmNs
YXNzTmFtZSwgcHJvcGVydHlOYW1lKTsKLSAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0ID0gKndyYXBwZXItPmdsb2JhbE9iamVjdCgpOwotICAgIHJldHVybiBKU0M6OkpTVmFsdWU6
OmVuY29kZShKU0RPTUl0ZXJhdG9yPEpTV3JhcHBlcj46OmNyZWF0ZShnbG9iYWxPYmplY3Qudm0o
KSwgZ2V0RE9NU3RydWN0dXJlPEpTRE9NSXRlcmF0b3I8SlNXcmFwcGVyPj4oZ2xvYmFsT2JqZWN0
LnZtKCksIGdsb2JhbE9iamVjdCksICp3cmFwcGVyLCBraW5kKSk7CisgICAgQVNTRVJUKHRoaXNP
YmplY3QuZ2xvYmFsT2JqZWN0KCkpOworICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QgPSAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKTsKKyAgICByZXR1cm4gSlNET01JdGVyYXRv
cjxKU1dyYXBwZXI+OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LnZtKCksIGdldERPTVN0cnVjdHVyZTxK
U0RPTUl0ZXJhdG9yPEpTV3JhcHBlcj4+KGdsb2JhbE9iamVjdC52bSgpLCBnbG9iYWxPYmplY3Qp
LCB0aGlzT2JqZWN0LCBraW5kKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgpA
QCAtMTgyLDMzICsxNzcsMjYgQEAgYXBwZW5kRm9yRWFjaEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEoKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgSlNXcmFwcGVyPgotSlNDOjpFbmNvZGVkSlNWYWx1ZSBpdGVyYXRvckZvckVh
Y2goSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpCitKU0M6
OkpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNXcmFwcGVy
JiB0aGlzT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKQogewotICAgIEpTQzo6Vk0mIHZt
ID0gc3RhdGUudm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0KLSAgICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcmFwcGVyKj4oc3Rh
dGUudGhpc1ZhbHVlKCkpOwotICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCBKU1dyYXBwZXI6OmluZm8oKS0+
Y2xhc3NOYW1lLCBwcm9wZXJ0eU5hbWUpOwotCiAgICAgSlNDOjpKU1ZhbHVlIGNhbGxiYWNrID0g
c3RhdGUuYXJndW1lbnQoMCk7CiAgICAgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLmFy
Z3VtZW50KDEpOwogCiAgICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBKU0M6OkNhbGxU
eXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShjYWxsYmFjaywgY2FsbERhdGEpOwogICAg
IGlmIChjYWxsVHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNhbGwgY2FsbGJhY2siKSk7
CiAKLSAgICBhdXRvIGl0ZXJhdG9yID0gd3JhcHBlci0+d3JhcHBlZCgpLmNyZWF0ZUl0ZXJhdG9y
KCk7CisgICAgYXV0byBpdGVyYXRvciA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLmNyZWF0ZUl0ZXJh
dG9yKCk7CiAgICAgd2hpbGUgKGF1dG8gdmFsdWUgPSBpdGVyYXRvci5uZXh0KCkpIHsKICAgICAg
ICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgICAgIGFwcGVuZEZv
ckVhY2hBcmd1bWVudHMoc3RhdGUsIHdyYXBwZXItPmdsb2JhbE9iamVjdCgpLCBhcmd1bWVudHMs
IHZhbHVlKTsKLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh3cmFwcGVyKTsKKyAgICAgICAgYXBw
ZW5kRm9yRWFjaEFyZ3VtZW50cyhzdGF0ZSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgYXJn
dW1lbnRzLCB2YWx1ZSk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoJnRoaXNPYmplY3QpOwog
ICAgICAgICBKU0M6OmNhbGwoJnN0YXRlLCBjYWxsYmFjaywgY2FsbFR5cGUsIGNhbGxEYXRhLCB0
aGlzVmFsdWUsIGFyZ3VtZW50cyk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIEpTQzo6SlNWYWx1
ZTo6ZW5jb2RlKEpTQzo6anNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTQzo6anNVbmRlZmlu
ZWQoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBiNDI5MzI1
MWY3YzE2NDhlZDA0ZDY0N2UwZDQ3ZDRjODI1MDcwMGE1Li40MzhkYzVjZDE1MzRmMWRiYmUwOWI2
ZTNiOWU1NTJjMmQ5NTFhYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzkyMCwyOCArMzkyMCwyOSBAQCBzdWIgR2Vu
ZXJhdGVTZXJpYWxpemVyRnVuY3Rpb24KICAgICBteSAkc2VyaWFsaXplck5hdGl2ZUZ1bmN0aW9u
TmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRjbGFzc05hbWUpIC4gIlByb3RvdHlw
ZUZ1bmN0aW9uIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRzZXJpYWxpemVyRnVuY3Rp
b25OYW1lKTsKIAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJPYmplY3RDb25zdHJ1Y3Rvci5oIik7
Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7
c2VyaWFsaXplck5hdGl2ZUZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAg
IHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSAke3Nlcmlh
bGl6ZXJOYXRpdmVGdW5jdGlvbk5hbWV9Q2FsbGVyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTJGludGVy
ZmFjZU5hbWUqIHRoaXNPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSlcbiIpOwog
ICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgQVNTRVJUKHN0YXRlKTtcbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8g
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpO1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKUyRpbnRlcmZhY2VOYW1l
Kj4odGhpc1ZhbHVlKTtcbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpO1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKVxuIik7Ci0gICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiJHNlcmlhbGl6ZXJGdW5jdGlvbk5hbWVcIik7
XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsICR7Y2xhc3NOYW1lfTo6aW5mbygpKTtcblxuIikgdW5sZXNzICRpbnRl
cmZhY2VOYW1lIGVxICJFdmVudFRhcmdldCI7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
YXV0byYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGF1dG8qIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHN0YXRlKTtcbiIpOworICAgIHB1
c2goQGltcGxDb250ZW50LCAiXG4iKTsKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGlu
dGVyZmFjZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPm5hbWU7CiAgICAgICAgIGlmIChncmVwICRfIGVxICRuYW1lLCBAeyRpbnRlcmZh
Y2UtPnNlcmlhbGl6YWJsZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgICAgIG15ICRnZXRGdW5j
dGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUs
ICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byAk
e25hbWV9VmFsdWUgPSAke2dldEZ1bmN0aW9uTmFtZX0oc3RhdGUsIEpTVmFsdWU6OmVuY29kZSh0
aGlzVmFsdWUpLCBJZGVudGlmaWVyKCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBhdXRvICR7bmFtZX1WYWx1ZSA9ICR7Z2V0RnVuY3Rpb25OYW1lfUdldHRlcigq
c3RhdGUsICp0aGlzT2JqZWN0LCB0aHJvd1Njb3BlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTtcbiIpOwot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBcIiR7bmFtZX1cIiksIEpTVmFsdWU6OmRlY29k
ZSgke25hbWV9VmFsdWUpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBcIiR7
bmFtZX1cIiksICR7bmFtZX1WYWx1ZSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiXG4iKTsKICAgICAgICAgfQogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIn1cblxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgIlxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMICR7c2VyaWFsaXplck5hdGl2ZUZ1bmN0aW9uTmFtZX0oRXhlY1N0
YXRlKiBzdGF0ZSlcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlMkaW50ZXJmYWNlTmFt
ZT46OmNhbGxPcGVyYXRpb248JHtzZXJpYWxpemVyTmF0aXZlRnVuY3Rpb25OYW1lfUNhbGxlcj4o
c3RhdGUsIFwiJHNlcmlhbGl6ZXJGdW5jdGlvbk5hbWVcIik7XG4iKTsKKyAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKIH0KIAogc3Vi
IEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMKQEAgLTQ3NDMsMjcgKzQ3NDQsMzYgQEAg
RU5ECiAgICAgICAgIG15ICRwcm9wZXJ0eU5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFt
ZTsKICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNl
LCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOwogCi0gICAgICAgIGlmIChub3QgJHByb3BlcnR5TmFt
ZSBlcSAiZm9yRWFjaCIpIHsKKyAgICAgICAgaWYgKCRwcm9wZXJ0eU5hbWUgZXEgImZvckVhY2gi
KSB7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKK3N0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUgJHtmdW5jdGlvbk5hbWV9Q2FsbGVyKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTJGludGVyZmFjZU5hbWUqIHRoaXNPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yRm9yRWFjaDwke2NsYXNz
TmFtZX0+KCpzdGF0ZSwgKnRoaXNPYmplY3QsIHRocm93U2NvcGUpKTsKK30KKworRU5ECisgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBteSAkaXRlcmF0aW9uS2luZCA9ICJLZXlWYWx1ZSI7
CiAgICAgICAgICAgICAkaXRlcmF0aW9uS2luZCA9ICJLZXkiIGlmICRwcm9wZXJ0eU5hbWUgZXEg
ImtleXMiOwogICAgICAgICAgICAgJGl0ZXJhdGlvbktpbmQgPSAiVmFsdWUiIGlmICRwcm9wZXJ0
eU5hbWUgZXEgInZhbHVlcyI7CiAgICAgICAgICAgICAkaXRlcmF0aW9uS2luZCA9ICJWYWx1ZSIg
aWYgJHByb3BlcnR5TmFtZSBlcSAiW1N5bWJvbC5JdGVyYXRvcl0iIGFuZCBub3QgJGludGVyZmFj
ZS0+aXRlcmFibGUtPmlzS2V5VmFsdWU7CisKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAgPDxFTkQpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25O
YW1lfShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
ICR7ZnVuY3Rpb25OYW1lfUNhbGxlcihFeGVjU3RhdGUqLCBKUyRpbnRlcmZhY2VOYW1lKiB0aGlz
T2JqZWN0LCBKU0M6OlRocm93U2NvcGUmKQogewotICAgIHJldHVybiBpdGVyYXRvckNyZWF0ZTwk
e2NsYXNzTmFtZX0+KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6JHtpdGVyYXRpb25LaW5kfSwgIiR7
cHJvcGVydHlOYW1lfSIpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JDcmVh
dGU8JHtjbGFzc05hbWV9PigqdGhpc09iamVjdCwgSXRlcmF0aW9uS2luZDo6JHtpdGVyYXRpb25L
aW5kfSkpOwogfQogCiBFTkQKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAgPDxFTkQpOworICAgICAgICB9CisKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICA8PEVORCk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlv
bk5hbWV9KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaXRlcmF0b3JGb3JF
YWNoPCR7Y2xhc3NOYW1lfT4oKnN0YXRlLCAiJHtwcm9wZXJ0eU5hbWV9Iik7CisgICAgcmV0dXJu
IEJpbmRpbmdDYWxsZXI8JGNsYXNzTmFtZT46OmNhbGxPcGVyYXRpb248JHtmdW5jdGlvbk5hbWV9
Q2FsbGVyPihzdGF0ZSwgIiR7cHJvcGVydHlOYW1lfSIpOwogfQogCiBFTkQKLSAgICAgICAgfQog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKaW5kZXggZTBlZDNlZGI2MGIwYjkwMzBmZTY1
MWVjYWNkMDVjNWUwMmIyMGJmMC4uYzUxMGE5ZjJiMTdjZjZhNzg1MjRjNzgyNzE1MDhiY2FjMjY0
OWI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEl0ZXJhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCkBAIC0xNzIsMjkgKzE3Miw1NCBAQCBjb25zdCBK
U0M6OkNsYXNzSW5mbyBUZXN0SXRlcmFibGVJdGVyYXRvcjo6c19pbmZvID0geyAiVGVzdEl0ZXJh
YmxlIEl0ZXJhdG9yIiwgJgogdGVtcGxhdGU8PgogY29uc3QgSlNDOjpDbGFzc0luZm8gVGVzdEl0
ZXJhYmxlSXRlcmF0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RJdGVyYWJsZSBJdGVyYXRv
ciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVzdEl0ZXJhYmxlSXRl
cmF0b3JQcm90b3R5cGUpIH07CiAKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yQ2FsbGVyKEV4ZWNTdGF0ZSos
IEpTVGVzdEl0ZXJhYmxlKiB0aGlzT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmKQoreworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JDcmVhdGU8SlNUZXN0SXRlcmFibGU+KCp0aGlz
T2JqZWN0LCBJdGVyYXRpb25LaW5kOjpWYWx1ZSkpOworfQorCiBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJh
dG9yKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaXRlcmF0b3JDcmVhdGU8
SlNUZXN0SXRlcmFibGU+KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6VmFsdWUsICJbU3ltYm9sLkl0
ZXJhdG9yXSIpOworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEl0ZXJhYmxlPjo6Y2Fs
bE9wZXJhdGlvbjxqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3JD
YWxsZXI+KHN0YXRlLCAiW1N5bWJvbC5JdGVyYXRvcl0iKTsKK30KKworc3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllc0NhbGxl
cihFeGVjU3RhdGUqLCBKU1Rlc3RJdGVyYWJsZSogdGhpc09iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JikKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yQ3JlYXRlPEpTVGVzdEl0
ZXJhYmxlPigqdGhpc09iamVjdCwgSXRlcmF0aW9uS2luZDo6S2V5VmFsdWUpKTsKIH0KIAogSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVu
Y3Rpb25FbnRyaWVzKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaXRlcmF0
b3JDcmVhdGU8SlNUZXN0SXRlcmFibGU+KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6S2V5VmFsdWUs
ICJlbnRyaWVzIik7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0SXRlcmFibGU+Ojpj
YWxsT3BlcmF0aW9uPGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQ2FsbGVy
PihzdGF0ZSwgImVudHJpZXMiKTsKK30KKworc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0NhbGxlcihFeGVjU3RhdGUqLCBKU1Rl
c3RJdGVyYWJsZSogdGhpc09iamVjdCwgSlNDOjpUaHJvd1Njb3BlJikKK3sKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yQ3JlYXRlPEpTVGVzdEl0ZXJhYmxlPigqdGhpc09iamVj
dCwgSXRlcmF0aW9uS2luZDo6S2V5KSk7CiB9CiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yQ3JlYXRlPEpTVGVzdEl0ZXJhYmxlPigq
c3RhdGUsIEl0ZXJhdGlvbktpbmQ6OktleSwgImtleXMiKTsKKyAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RJdGVyYWJsZT46OmNhbGxPcGVyYXRpb248anNUZXN0SXRlcmFibGVQcm90b3R5
cGVGdW5jdGlvbktleXNDYWxsZXI+KHN0YXRlLCAia2V5cyIpOworfQorCitzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxs
ZXIoRXhlY1N0YXRlKiwgSlNUZXN0SXRlcmFibGUqIHRoaXNPYmplY3QsIEpTQzo6VGhyb3dTY29w
ZSYpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpdGVyYXRvckNyZWF0ZTxKU1Rlc3RJ
dGVyYWJsZT4oKnRoaXNPYmplY3QsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlKSk7CiB9CiAKIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0
aW9uVmFsdWVzKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gaXRlcmF0b3JD
cmVhdGU8SlNUZXN0SXRlcmFibGU+KCpzdGF0ZSwgSXRlcmF0aW9uS2luZDo6VmFsdWUsICJ2YWx1
ZXMiKTsKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RJdGVyYWJsZT46OmNhbGxPcGVy
YXRpb248anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvblZhbHVlc0NhbGxlcj4oc3RhdGUs
ICJ2YWx1ZXMiKTsKK30KKworc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJdGVy
YWJsZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaENhbGxlcihFeGVjU3RhdGUqIHN0YXRlLCBKU1Rl
c3RJdGVyYWJsZSogdGhpc09iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorewor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JGb3JFYWNoPEpTVGVzdEl0ZXJhYmxl
Pigqc3RhdGUsICp0aGlzT2JqZWN0LCB0aHJvd1Njb3BlKSk7CiB9CiAKIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFj
aChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yRm9yRWFjaDxK
U1Rlc3RJdGVyYWJsZT4oKnN0YXRlLCAiZm9yRWFjaCIpOworICAgIHJldHVybiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdEl0ZXJhYmxlPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RJdGVyYWJsZVByb3RvdHlw
ZUZ1bmN0aW9uRm9yRWFjaENhbGxlcj4oc3RhdGUsICJmb3JFYWNoIik7CiB9CiAKIGJvb2wgSlNU
ZXN0SXRlcmFibGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcAppbmRleCBkZTBjOGRiMDE5NDdkZTA1YjE2OTZkM2Y3ZmU5YmNhZDQyOTlmYWVmLi45NWU5
NjA3M2QzOTg4Zjc1ZWJlNjgzOTliMTNjNjBjNTQzOTEzZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0y
NzQsNDkgKzI3NCw3MyBAQCBjb25zdCBKU0M6OkNsYXNzSW5mbyBUZXN0Tm9kZUl0ZXJhdG9yOjpz
X2luZm8gPSB7ICJUZXN0Tm9kZSBJdGVyYXRvciIsICZCYXNlOjpzXwogdGVtcGxhdGU8PgogY29u
c3QgSlNDOjpDbGFzc0luZm8gVGVzdE5vZGVJdGVyYXRvclByb3RvdHlwZTo6c19pbmZvID0geyAi
VGVzdE5vZGUgSXRlcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KFRlc3ROb2RlSXRlcmF0b3JQcm90b3R5cGUpIH07CiAKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3JDYWxsZXIoRXhl
Y1N0YXRlKiwgSlNUZXN0Tm9kZSogdGhpc09iamVjdCwgSlNDOjpUaHJvd1Njb3BlJikKK3sKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yQ3JlYXRlPEpTVGVzdE5vZGU+KCp0aGlz
T2JqZWN0LCBJdGVyYXRpb25LaW5kOjpWYWx1ZSkpOworfQorCiBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3Io
SlNDOjpFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBpdGVyYXRvckNyZWF0ZTxKU1Rl
c3ROb2RlPigqc3RhdGUsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlLCAiW1N5bWJvbC5JdGVyYXRvcl0i
KTsKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3ROb2RlPjo6Y2FsbE9wZXJhdGlvbjxq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvckNhbGxlcj4oc3RhdGUsICJb
U3ltYm9sLkl0ZXJhdG9yXSIpOworfQorCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXNDYWxsZXIoRXhlY1N0YXRlKiwgSlNUZXN0
Tm9kZSogdGhpc09iamVjdCwgSlNDOjpUaHJvd1Njb3BlJikKK3sKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGl0ZXJhdG9yQ3JlYXRlPEpTVGVzdE5vZGU+KCp0aGlzT2JqZWN0LCBJdGVyYXRp
b25LaW5kOjpLZXlWYWx1ZSkpOwogfQogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUpCiB7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yQ3JlYXRlPEpTVGVzdE5vZGU+KCpzdGF0ZSwgSXRl
cmF0aW9uS2luZDo6S2V5VmFsdWUsICJlbnRyaWVzIik7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0Tm9kZT46OmNhbGxPcGVyYXRpb248anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9u
RW50cmllc0NhbGxlcj4oc3RhdGUsICJlbnRyaWVzIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0NhbGxlcihFeGVjU3Rh
dGUqLCBKU1Rlc3ROb2RlKiB0aGlzT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmKQoreworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JDcmVhdGU8SlNUZXN0Tm9kZT4oKnRoaXNPYmpl
Y3QsIEl0ZXJhdGlvbktpbmQ6OktleSkpOwogfQogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUpCiB7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yQ3JlYXRlPEpTVGVzdE5vZGU+KCpzdGF0ZSwg
SXRlcmF0aW9uS2luZDo6S2V5LCAia2V5cyIpOworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdE5vZGU+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbktleXND
YWxsZXI+KHN0YXRlLCAia2V5cyIpOworfQorCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblZhbHVlc0NhbGxlcihFeGVjU3RhdGUqLCBKU1Rl
c3ROb2RlKiB0aGlzT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmKQoreworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoaXRlcmF0b3JDcmVhdGU8SlNUZXN0Tm9kZT4oKnRoaXNPYmplY3QsIEl0ZXJh
dGlvbktpbmQ6OlZhbHVlKSk7CiB9CiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
KQogewotICAgIHJldHVybiBpdGVyYXRvckNyZWF0ZTxKU1Rlc3ROb2RlPigqc3RhdGUsIEl0ZXJh
dGlvbktpbmQ6OlZhbHVlLCAidmFsdWVzIik7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNU
ZXN0Tm9kZT46OmNhbGxPcGVyYXRpb248anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVz
Q2FsbGVyPihzdGF0ZSwgInZhbHVlcyIpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5
cGVGdW5jdGlvbkZvckVhY2hDYWxsZXIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0Tm9kZSogdGhp
c09iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIHJldHVybiBpdGVy
YXRvckZvckVhY2g8SlNUZXN0Tm9kZT4oKnN0YXRlLCAiZm9yRWFjaCIpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JGb3JFYWNoPEpTVGVzdE5vZGU+KCpzdGF0ZSwgKnRoaXNP
YmplY3QsIHRocm93U2NvcGUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oRXhlY1N0YXRlKiBzdGF0ZSkKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25G
b3JFYWNoKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICBBU1NFUlQoc3RhdGUpOwotICAg
IGF1dG8gdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZSo+KHRoaXNWYWx1ZSk7Ci0gICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9kZSIsICJ0b0pTT04iKTsK
LSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE5vZGU6Omlu
Zm8oKSk7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0Tm9kZT46OmNhbGxPcGVyYXRp
b248anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaENhbGxlcj4oc3RhdGUsICJmb3JF
YWNoIik7Cit9CiAKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZVByb3Rv
dHlwZUZ1bmN0aW9uVG9KU09OQ2FsbGVyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE5vZGUqIHRo
aXNPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBhdXRvJiB2bSA9
IHN0YXRlLT52bSgpOwogICAgIGF1dG8qIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHN0
YXRlKTsKLSAgICBhdXRvIG5hbWVWYWx1ZSA9IGpzVGVzdE5vZGVOYW1lKHN0YXRlLCBKU1ZhbHVl
OjplbmNvZGUodGhpc1ZhbHVlKSwgSWRlbnRpZmllcigpKTsKKworICAgIGF1dG8gbmFtZVZhbHVl
ID0ganNUZXN0Tm9kZU5hbWVHZXR0ZXIoKnN0YXRlLCAqdGhpc09iamVjdCwgdGhyb3dTY29wZSk7
CiAgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKLSAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJuYW1lIiksIEpTVmFsdWU6OmRl
Y29kZShuYW1lVmFsdWUpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJuYW1lIiksIG5hbWVWYWx1ZSk7CisKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAg
cmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0Tm9kZT46OmNhbGxPcGVyYXRpb248anNUZXN0Tm9k
ZVByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQ2FsbGVyPihzdGF0ZSwgInRvSlNPTiIpOworfQorCiB2
b2lkIEpTVGVzdE5vZGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5vZGUqPihj
ZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKaW5kZXggNDhkYTY0NmViNzAxNDYxMzU4NDk0NmFmMzE4YjNiYTE4YTkw
MDJmNS4uOTdlYzU1ZDU5MjMyZmFlMGE5NWVlN2M0ZWI3YTg2NjliMGEzYWE4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKQEAgLTc3MzUsMzMgKzc3MzUsMzUgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdDYWxsZXIoSlNDOjoKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oRXhlY1N0YXRlKiBzdGF0
ZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Ub0pTT05DYWxsZXIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiB0aGlzT2JqZWN0LCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgQVNTRVJUKHN0YXRlKTsKLSAgICBh
dXRvIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7Ci0gICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqIiwgInRvSlNPTiIpOwotICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwotCisgICAgYXV0byYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvKiByZXN1bHQgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChzdGF0ZSk7Ci0gICAgYXV0byByZWFkT25seVN0cmluZ0F0dHJWYWx1
ZSA9IGpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0cihzdGF0ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRo
aXNWYWx1ZSksIElkZW50aWZpZXIoKSk7CisKKyAgICBhdXRvIHJlYWRPbmx5U3RyaW5nQXR0clZh
bHVlID0ganNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRyR2V0dGVyKCpzdGF0ZSwgKnRoaXNPYmpl
Y3QsIHRocm93U2NvcGUpOwogICAgIEFTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7Ci0g
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicmVh
ZE9ubHlTdHJpbmdBdHRyIiksIEpTVmFsdWU6OmRlY29kZShyZWFkT25seVN0cmluZ0F0dHJWYWx1
ZSkpOwotICAgIGF1dG8gZW51bUF0dHJWYWx1ZSA9IGpzVGVzdE9iakVudW1BdHRyKHN0YXRlLCBK
U1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKSwgSWRlbnRpZmllcigpKTsKKyAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJyZWFkT25seVN0cmluZ0F0
dHIiKSwgcmVhZE9ubHlTdHJpbmdBdHRyVmFsdWUpOworCisgICAgYXV0byBlbnVtQXR0clZhbHVl
ID0ganNUZXN0T2JqRW51bUF0dHJHZXR0ZXIoKnN0YXRlLCAqdGhpc09iamVjdCwgdGhyb3dTY29w
ZSk7CiAgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKLSAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJlbnVtQXR0ciIpLCBKU1Zh
bHVlOjpkZWNvZGUoZW51bUF0dHJWYWx1ZSkpOwotICAgIGF1dG8gbG9uZ0F0dHJWYWx1ZSA9IGpz
VGVzdE9iakxvbmdBdHRyKHN0YXRlLCBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKSwgSWRlbnRp
ZmllcigpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJlbnVtQXR0ciIpLCBlbnVtQXR0clZhbHVlKTsKKworICAgIGF1dG8gbG9uZ0F0dHJW
YWx1ZSA9IGpzVGVzdE9iakxvbmdBdHRyR2V0dGVyKCpzdGF0ZSwgKnRoaXNPYmplY3QsIHRocm93
U2NvcGUpOwogICAgIEFTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7Ci0gICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibG9uZ0F0dHIiKSwg
SlNWYWx1ZTo6ZGVjb2RlKGxvbmdBdHRyVmFsdWUpKTsKLSAgICBhdXRvIGNyZWF0ZVZhbHVlID0g
anNUZXN0T2JqQ3JlYXRlKHN0YXRlLCBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKSwgSWRlbnRp
ZmllcigpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJsb25nQXR0ciIpLCBsb25nQXR0clZhbHVlKTsKKworICAgIGF1dG8gY3JlYXRlVmFs
dWUgPSBqc1Rlc3RPYmpDcmVhdGVHZXR0ZXIoKnN0YXRlLCAqdGhpc09iamVjdCwgdGhyb3dTY29w
ZSk7CiAgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKLSAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjcmVhdGUiKSwgSlNWYWx1
ZTo6ZGVjb2RlKGNyZWF0ZVZhbHVlKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY3JlYXRlIiksIGNyZWF0ZVZhbHVlKTsKKwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvSlNPTihFeGVjU3RhdGUqIHN0YXRl
KQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT05DYWxsZXI+KHN0YXRlLCAidG9KU09OIik7
Cit9CisKIHZvaWQgSlNUZXN0T2JqOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RP
YmoqPihjZWxsKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>