<?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>157060</bug_id>
          
          <creation_ts>2016-04-26 22:03:40 -0700</creation_ts>
          <short_desc>[Web IDL] Clean up support for [Clamp] IDL extended attribute</short_desc>
          <delta_ts>2016-04-27 10:05:16 -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>Bindings</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1187651</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-26 22:03:40 -0700</bug_when>
    <thetext>Clean up support for [Clamp] IDL extended attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187653</commentid>
    <comment_count>1</comment_count>
      <attachid>277442</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-26 22:09:30 -0700</bug_when>
    <thetext>Created attachment 277442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187655</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-26 22:10:27 -0700</bug_when>
    <thetext>Attachment 277442 did not pass style-queue:


ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1043:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1058:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2298:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2315:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 4 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187744</commentid>
    <comment_count>3</comment_count>
      <attachid>277442</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-27 08:09:17 -0700</bug_when>
    <thetext>Comment on attachment 277442
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:375
&gt; +    switch (configuration) {

Note that I tried to keep this patch minimal but I think we should move IntegerConversionConfiguration to be a template parameter instead since all the call sites know the configuration at compile time and this would optimize out the branches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187757</commentid>
    <comment_count>4</comment_count>
      <attachid>277442</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-27 08:38:27 -0700</bug_when>
    <thetext>Comment on attachment 277442
Patch

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

EFL build is failing, maybe because of a difference in the version of gcc it’s using?

Why no use of this new feature in any IDL file yet?

&gt;&gt; Source/WebCore/bindings/js/JSDOMBinding.h:375
&gt;&gt; +    switch (configuration) {
&gt; 
&gt; Note that I tried to keep this patch minimal but I think we should move IntegerConversionConfiguration to be a template parameter instead since all the call sites know the configuration at compile time and this would optimize out the branches.

Often, inlining and constant folding is enough to optimize out the branches. So maybe we don’t have to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187765</commentid>
    <comment_count>5</comment_count>
      <attachid>277442</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-27 09:18:26 -0700</bug_when>
    <thetext>Comment on attachment 277442
Patch

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

[Clamp] is used in our IDL although not a lot at the moment.

&gt;&gt;&gt; Source/WebCore/bindings/js/JSDOMBinding.h:375
&gt;&gt;&gt; +    switch (configuration) {
&gt;&gt; 
&gt;&gt; Note that I tried to keep this patch minimal but I think we should move IntegerConversionConfiguration to be a template parameter instead since all the call sites know the configuration at compile time and this would optimize out the branches.
&gt; 
&gt; Often, inlining and constant folding is enough to optimize out the branches. So maybe we don’t have to do that.

Well, but only 2 of them are inlined in the header. All of the others are in the cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187768</commentid>
    <comment_count>6</comment_count>
      <attachid>277483</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-27 09:20:54 -0700</bug_when>
    <thetext>Created attachment 277483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187769</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-27 09:22:25 -0700</bug_when>
    <thetext>Attachment 277483 did not pass style-queue:


ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1043:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:1058:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2298:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2315:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 4 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187781</commentid>
    <comment_count>8</comment_count>
      <attachid>277483</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-27 10:05:11 -0700</bug_when>
    <thetext>Comment on attachment 277483
Patch

Clearing flags on attachment: 277483

Committed r200131: &lt;http://trac.webkit.org/changeset/200131&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187782</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-27 10:05:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277442</attachid>
            <date>2016-04-26 22:09:30 -0700</date>
            <delta_ts>2016-04-27 09:20:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157060-20160426221000.patch</filename>
            <type>text/plain</type>
            <size>36166</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTMzMWIzZDU4ZmFmODAw
YzMwZjc4OTg4MTFiNjI0ZTRjNThkMDg1NC4uNGRjYTc4M2RjYTljMTZjYmM0MjdkODJlODUxNTA5
MGYyYWUwNjBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcxIEBACiAyMDE2LTA0LTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW1dlYiBJRExdIENsZWFuIHVw
IHN1cHBvcnQgZm9yIFtDbGFtcF0gSURMIGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgc3VwcG9ydCBmb3Ig
W0NsYW1wXSBJREwgZXh0ZW5kZWQgYXR0cmlidXRlOgorICAgICAgICAxLiAgTW92ZSBbQ2xhbXBd
IGhhbmRsaW5nIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IgZnJvbSB0aGUgcGFyYW1ldGVyCisg
ICAgICAgICAgICBjb252ZXJzaW9uIHRvIEpTVmFsdWVUb05hdGl2ZSgpLiBUaGlzIGhhcyB0aGUg
YmVuZWZpdCBvZgorICAgICAgICAgICAgc2ltcGxpZnlpbmcgdGhlIHBhcmFtZXRlciBjb252ZXJz
aW9uIGNvZGUsIGFkZGluZyBzdXBwb3J0IGZvciBbQ2xhbXBdCisgICAgICAgICAgICBvbiBub24t
cmVhZG9ubHkgYXR0cmlidXRlcywgYW5kIGltcHJvdmluZyBjb25zaXN0ZW5jeSBieSBoYW5kbGlu
ZworICAgICAgICAgICAgdGhpcyBpbiB0aGUgc2FtZSBwbGFjZSBhcyBbRW5mb3JjZVJhbmdlXS4K
KyAgICAgICAgMi4gIEFkZCAnQ2xhbXAnIHRvIHRoZSBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3Vy
YXRpb24gZW51bWVyYXRpb24gaW4KKyAgICAgICAgICAgIEpTRE9NYmluZGluZ3MuaCBhbmQgYWRk
IHN1cHBvcnQgZm9yIGl0IHRvIHRoZSB2YXJpb3VzIHRvSW50KigpIC8KKyAgICAgICAgICAgIHRv
VUludCooKSBmdW5jdGlvbnMsIHNpbWlsYXJ5IHRvIFtFbmZvcmNlUmFuZ2VdLiBDYWxsIHRoZXNl
IGZyb20KKyAgICAgICAgICAgIHRoZSBnZW5lcmF0ZWQgYmluZGluZ3MuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9TbWFsbGVy
SW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU21hbGxlclVJbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9JbnQzMkVuZm9yY2VSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjp0b0ludDMyQ2xhbXAp
OgorICAgICAgICAoV2ViQ29yZTo6dG9VSW50MzJDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjp0
b1VJbnQzMkVuZm9yY2VSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjp0b0ludDY0KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvVUludDgpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6dG9VSW50MTYpOiBEZWxldGVkLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6dG9JbnQzMik6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1VJbnQzMik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAo
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgorICAgICAgICAod2Via2l0
X2RvbV90ZXN0X29ial9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29i
al9nZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19pbml0
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfY2xhc3NfbWV0aG9kX3dpdGhfZW5mb3Jj
ZV9yYW5nZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9jbGFtcGVkX3Nob3J0
X2F0dHIpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfY2xhbXBlZF9zaG9ydF9h
dHRyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2VuZm9yY2VfcmFuZ2Vfc2hv
cnRfYXR0cik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9lbmZvcmNlX3Jhbmdl
X3Nob3J0X2F0dHIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqRW5mb3JjZVJhbmdlU2hvcnRBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqRW5mb3JjZVJhbmdlU2hvcnRBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXApOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdp
dGhFbmZvcmNlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZDIpOiBEZWxldGVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhD
bGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
SW1tdXRhYmxlUG9pbnRGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmoubW06CisgICAgICAgICgtW0RPTVRlc3RPYmogY2xhbXBlZFNo
b3J0QXR0cl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHNldENsYW1wZWRTaG9ydEF0dHI6XSk6
CisgICAgICAgICgtW0RPTVRlc3RPYmogZW5mb3JjZVJhbmdlU2hvcnRBdHRyXSk6CisgICAgICAg
ICgtW0RPTVRlc3RPYmogc2V0RW5mb3JjZVJhbmdlU2hvcnRBdHRyOl0pOgorICAgICAgICAoLVtE
T01UZXN0T2JqIGNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZTpvYmpBcmdzTG9uZzpdKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisKKzIwMTYtMDQtMjYg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBbV2ViIElETF0gU3Bl
Y2lmeSBkZWZhdWx0IHZhbHVlcyBmb3Igb3B0aW9uYWwgcGFyYW1ldGVycyBvZiB0eXBlICd1bnNp
Z25lZCBsb25nJwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU3MDQzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
CmluZGV4IDNjYjJhNTUyODAyYTRkZGNhMTRmZTg0NWZiOWMxOTdhY2MyZjYzZjIuLjVkYmZhMmVi
NjA4YzA0M2I5NjRiMjFiMDQ5YmU0NjVjNWQyYzVmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtNDE4LDIwICs0MTgsMzEgQEAgc3RhdGljIGlu
bGluZSBUIHRvU21hbGxlckludChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEludGVn
ZXJDb252ZXJzaW9uQ28KICAgICAgICAgaW50MzJfdCBkID0gdmFsdWUuYXNJbnQzMigpOwogICAg
ICAgICBpZiAoZCA+PSBMaW1pdHNUcmFpdDo6bWluVmFsdWUgJiYgZCA8PSBMaW1pdHNUcmFpdDo6
bWF4VmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oZCk7Ci0gICAgICAg
IGlmIChjb25maWd1cmF0aW9uID09IEVuZm9yY2VSYW5nZSkgeworICAgICAgICBzd2l0Y2ggKGNv
bmZpZ3VyYXRpb24pIHsKKyAgICAgICAgY2FzZSBOb3JtYWxDb252ZXJzaW9uOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRW5mb3JjZVJhbmdlOgogICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYyk7CiAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDbGFt
cDoKKyAgICAgICAgICAgIHJldHVybiBkIDwgTGltaXRzVHJhaXQ6Om1pblZhbHVlID8gTGltaXRz
VHJhaXQ6Om1pblZhbHVlIDogTGltaXRzVHJhaXQ6Om1heFZhbHVlOwogICAgICAgICB9CiAgICAg
ICAgIGQgJT0gTGltaXRzVHJhaXQ6Om51bWJlck9mVmFsdWVzOwogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VD4oZCA+IExpbWl0c1RyYWl0OjptYXhWYWx1ZSA/IGQgLSBMaW1pdHNUcmFpdDo6
bnVtYmVyT2ZWYWx1ZXMgOiBkKTsKICAgICB9CiAKICAgICBkb3VibGUgeCA9IHZhbHVlLnRvTnVt
YmVyKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAoVU5MSUtF
TFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChj
b25maWd1cmF0aW9uID09IEVuZm9yY2VSYW5nZSkKKyAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24p
IHsKKyAgICBjYXNlIE5vcm1hbENvbnZlcnNpb246CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RW5mb3JjZVJhbmdlOgogICAgICAgICByZXR1cm4gZW5mb3JjZVJhbmdlKGV4ZWMsIHgsIExpbWl0
c1RyYWl0OjptaW5WYWx1ZSwgTGltaXRzVHJhaXQ6Om1heFZhbHVlKTsKKyAgICBjYXNlIENsYW1w
OgorICAgICAgICByZXR1cm4gc3RkOjppc25hbih4KSA/IDAgOiBjbGFtcFRvPFQ+KHgpOworICAg
IH0KIAogICAgIGlmIChzdGQ6OmlzbmFuKHgpIHx8IHN0ZDo6aXNpbmYoeCkgfHwgIXgpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtNDUxLDE5ICs0NjIsMjkgQEAgc3RhdGljIGlubGluZSBUIHRvU21h
bGxlclVJbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lv
bkMKICAgICAgICAgdWludDMyX3QgZCA9IHZhbHVlLmFzVUludDMyKCk7CiAgICAgICAgIGlmIChk
IDw9IExpbWl0c1RyYWl0OjptYXhWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxUPihkKTsKLSAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24gPT0gRW5mb3JjZVJhbmdlKSB7Cisg
ICAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgeworICAgICAgICBjYXNlIE5vcm1hbENvbnZl
cnNpb246CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oZCk7CisgICAgICAgIGNh
c2UgRW5mb3JjZVJhbmdlOgogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CiAgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDbGFtcDoKKyAgICAgICAgICAgIHJldHVy
biBMaW1pdHNUcmFpdDo6bWF4VmFsdWU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFQ+KGQpOwogICAgIH0KIAogICAgIGRvdWJsZSB4ID0gdmFsdWUudG9OdW1iZXIoZXhl
Yyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgIGlmIChVTkxJS0VMWShleGVj
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKGNvbmZpZ3Vy
YXRpb24gPT0gRW5mb3JjZVJhbmdlKQorICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgeworICAg
IGNhc2UgTm9ybWFsQ29udmVyc2lvbjoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFbmZvcmNl
UmFuZ2U6CiAgICAgICAgIHJldHVybiBlbmZvcmNlUmFuZ2UoZXhlYywgeCwgMCwgTGltaXRzVHJh
aXQ6Om1heFZhbHVlKTsKKyAgICBjYXNlIENsYW1wOgorICAgICAgICByZXR1cm4gc3RkOjppc25h
bih4KSA/IDAgOiBjbGFtcFRvPFQ+KHgpOworICAgIH0KIAogICAgIGlmIChzdGQ6OmlzbmFuKHgp
IHx8IHN0ZDo6aXNpbmYoeCkgfHwgIXgpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNTAzLDExICs1
MjQsMzMgQEAgaW50MzJfdCB0b0ludDMyRW5mb3JjZVJhbmdlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuIHZhbHVlLmFzSW50MzIoKTsKIAogICAgIGRvdWJs
ZSB4ID0gdmFsdWUudG9OdW1iZXIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
biAwOwogICAgIHJldHVybiBlbmZvcmNlUmFuZ2UoZXhlYywgeCwga01pbkludDMyLCBrTWF4SW50
MzIpOwogfQogCitpbnQzMl90IHRvSW50MzJDbGFtcChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUpCit7CisgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVl
LmFzSW50MzIoKTsKKworICAgIGRvdWJsZSB4ID0gdmFsdWUudG9OdW1iZXIoZXhlYyk7CisgICAg
aWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIHN0ZDo6aXNuYW4oeCkgPyAwIDogY2xhbXBUbzxpbnQzMl90Pih4KTsKK30KKwor
dWludDMyX3QgdG9VSW50MzJDbGFtcChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7
CisgICAgaWYgKHZhbHVlLmlzVUludDMyKCkpCisgICAgICAgIHJldHVybiB2YWx1ZS5hc1VJbnQz
MigpOworCisgICAgZG91YmxlIHggPSB2YWx1ZS50b051bWJlcihleGVjKTsKKyAgICBpZiAoVU5M
SUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gc3RkOjppc25hbih4KSA/IDAgOiBjbGFtcFRvPHVpbnQzMl90Pih4KTsKK30KKwogLy8gaHR0
cDovL3d3dy53My5vcmcvVFIvV2ViSURMLyNlcy11bnNpZ25lZC1sb25nCiB1aW50MzJfdCB0b1VJ
bnQzMkVuZm9yY2VSYW5nZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CkBAIC01
MTUsNyArNTU4LDcgQEAgdWludDMyX3QgdG9VSW50MzJFbmZvcmNlUmFuZ2UoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm4gdmFsdWUuYXNVSW50MzIoKTsKIAog
ICAgIGRvdWJsZSB4ID0gdmFsdWUudG9OdW1iZXIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIHJldHVybiBlbmZvcmNlUmFuZ2UoZXhlYywgeCwgMCwga01heFVJ
bnQzMik7CiB9CkBAIC01MjcsMTEgKzU3MCwxNyBAQCBpbnQ2NF90IHRvSW50NjQoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gYwog
ICAgICAgICByZXR1cm4gdmFsdWUuYXNJbnQzMigpOwogCiAgICAgZG91YmxlIHggPSB2YWx1ZS50
b051bWJlcihleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgaWYgKFVO
TElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBp
ZiAoY29uZmlndXJhdGlvbiA9PSBFbmZvcmNlUmFuZ2UpCisgICAgc3dpdGNoIChjb25maWd1cmF0
aW9uKSB7CisgICAgY2FzZSBOb3JtYWxDb252ZXJzaW9uOgorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEVuZm9yY2VSYW5nZToKICAgICAgICAgcmV0dXJuIGVuZm9yY2VSYW5nZShleGVjLCB4LCAt
a0pTTWF4SW50ZWdlciwga0pTTWF4SW50ZWdlcik7CisgICAgY2FzZSBDbGFtcDoKKyAgICAgICAg
cmV0dXJuIHN0ZDo6aXNuYW4oeCkgPyAwIDogc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjptaW48
ZG91YmxlPihzdGQ6Om1heDxkb3VibGU+KHgsIC1rSlNNYXhJbnRlZ2VyKSwga0pTTWF4SW50ZWdl
cikpOworICAgIH0KIAogICAgIC8vIE1hcCBOYU5zIGFuZCArLy1JbmZpbml0eSB0byAwOyBjb252
ZXJ0IGZpbml0ZSB2YWx1ZXMgbW9kdWxvIDJeNjQuCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIG47
CkBAIC01NDYsMTEgKzU5NSwxNyBAQCB1aW50NjRfdCB0b1VJbnQ2NChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbgogICAgICAgICBy
ZXR1cm4gdmFsdWUuYXNVSW50MzIoKTsKIAogICAgIGRvdWJsZSB4ID0gdmFsdWUudG9OdW1iZXIo
ZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgIGlmIChVTkxJS0VMWShl
eGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKGNvbmZp
Z3VyYXRpb24gPT0gRW5mb3JjZVJhbmdlKQorICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgewor
ICAgIGNhc2UgTm9ybWFsQ29udmVyc2lvbjoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFbmZv
cmNlUmFuZ2U6CiAgICAgICAgIHJldHVybiBlbmZvcmNlUmFuZ2UoZXhlYywgeCwgMCwga0pTTWF4
SW50ZWdlcik7CisgICAgY2FzZSBDbGFtcDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6aXNuYW4oeCkg
PyAwIDogc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bWluPGRvdWJsZT4oc3RkOjptYXg8ZG91
YmxlPih4LCAwKSwga0pTTWF4SW50ZWdlcikpOworICAgIH0KIAogICAgIC8vIE1hcCBOYU5zIGFu
ZCArLy1JbmZpbml0eSB0byAwOyBjb252ZXJ0IGZpbml0ZSB2YWx1ZXMgbW9kdWxvIDJeNjQuCiAg
ICAgdW5zaWduZWQgbG9uZyBsb25nIG47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oCmluZGV4IDc1ODc0MWYwYWFkMTBhNTBhMjM5YjNlY2Y4YzUyZDUyMjM3YWYyNzcu
LjFhODg5MmU4OGY0MzNkN2NkOThhYmI4Nzc2ZDdlNDQyYTRkODYzMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0zMzcsMTIgKzMzNywxNSBAQCBpbmxp
bmUgaW50MzJfdCBmaW5pdGVJbnQzMlZhbHVlKEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIGJvb2wmCiBlbnVtIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiB7
CiAgICAgTm9ybWFsQ29udmVyc2lvbiwKICAgICBFbmZvcmNlUmFuZ2UsCi0gICAgLy8gRklYTUU6
IEltcGxlbWVudCBDbGFtcAorICAgIENsYW1wCiB9OwogCiBXRUJDT1JFX0VYUE9SVCBpbnQzMl90
IHRvSW50MzJFbmZvcmNlUmFuZ2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOwogV0VC
Q09SRV9FWFBPUlQgdWludDMyX3QgdG9VSW50MzJFbmZvcmNlUmFuZ2UoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTVmFsdWUpOwogCitXRUJDT1JFX0VYUE9SVCBpbnQzMl90IHRvSW50MzJDbGFtcChK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7CitXRUJDT1JFX0VYUE9SVCB1aW50MzJfdCB0
b1VJbnQzMkNsYW1wKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKKwogV0VCQ09SRV9F
WFBPUlQgaW50OF90IHRvSW50OChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSW50ZWdl
ckNvbnZlcnNpb25Db25maWd1cmF0aW9uKTsKIFdFQkNPUkVfRVhQT1JUIHVpbnQ4X3QgdG9VSW50
OChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1
cmF0aW9uKTsKIApAQCAtMzU3LDE2ICszNjAsMjYgQEAgV0VCQ09SRV9FWFBPUlQgdWludDE2X3Qg
dG9VSW50MTYoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEludGVnZXJDb252ZXJzaW8K
ICovCiBpbmxpbmUgaW50MzJfdCB0b0ludDMyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpT
VmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9u
KQogewotICAgIGlmIChjb25maWd1cmF0aW9uID09IEVuZm9yY2VSYW5nZSkKKyAgICBzd2l0Y2gg
KGNvbmZpZ3VyYXRpb24pIHsKKyAgICBjYXNlIE5vcm1hbENvbnZlcnNpb246CisgICAgICAgIHJl
dHVybiB2YWx1ZS50b0ludDMyKGV4ZWMpOworICAgIGNhc2UgRW5mb3JjZVJhbmdlOgogICAgICAg
ICByZXR1cm4gdG9JbnQzMkVuZm9yY2VSYW5nZShleGVjLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIHZh
bHVlLnRvSW50MzIoZXhlYyk7CisgICAgY2FzZSBDbGFtcDoKKyAgICAgICAgcmV0dXJuIHRvSW50
MzJDbGFtcChleGVjLCB2YWx1ZSk7CisgICAgfQogfQogCiBpbmxpbmUgdWludDMyX3QgdG9VSW50
MzIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZl
cnNpb25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgaWYgKGNvbmZpZ3VyYXRp
b24gPT0gRW5mb3JjZVJhbmdlKQorICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgeworICAgIGNh
c2UgTm9ybWFsQ29udmVyc2lvbjoKKyAgICAgICAgcmV0dXJuIHZhbHVlLnRvVUludDMyKGV4ZWMp
OworICAgIGNhc2UgRW5mb3JjZVJhbmdlOgogICAgICAgICByZXR1cm4gdG9VSW50MzJFbmZvcmNl
UmFuZ2UoZXhlYywgdmFsdWUpOwotICAgIHJldHVybiB2YWx1ZS50b1VJbnQzMihleGVjKTsKKyAg
ICBjYXNlIENsYW1wOgorICAgICAgICByZXR1cm4gdG9VSW50MzJDbGFtcChleGVjLCB2YWx1ZSk7
CisgICAgfQogfQogCiBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHRvSW50NjQoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmlu
ZGV4IDhmNmVkMGM2YzY1ODlkYmViNDhlYTk1N2Q0N2Q5ZjlhYTY3N2U2OWQuLjhkMWU0ZmRkOGY5
YzczMmI2ZDc2MzNhYTZlNjZmYmZiMzY5YjNlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0zNTM1LDE0ICszNTM1LDYg
QEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgJHZhbHVlID0gIldURk1vdmUoJG5hbWUpIjsKLSAgICAgICAg
fSBlbHNpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNsYW1wIn0pIHsKLSAg
ICAgICAgICAgIG15ICRuYXRpdmVWYWx1ZSA9ICIke25hbWV9TmF0aXZlVmFsdWUiOwotICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICRhcmdUeXBlICRuYW1lID0gMDtcbiIpOwot
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGRvdWJsZSAkbmF0aXZlVmFsdWUg
PSBzdGF0ZS0+YXJndW1lbnQoJGFyZ3NJbmRleCkudG9OdW1iZXIoc3RhdGUpO1xuIik7Ci0gICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcblxuIik7Ci0gICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFzdGQ6OmlzbmFuKCRuYXRpdmVWYWx1
ZSkpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgJG5hbWUg
PSBjbGFtcFRvPCRhcmdUeXBlPigkbmF0aXZlVmFsdWUpO1xuXG4iKTsKICAgICAgICAgfSBlbHNp
ZiAoJHBhcmFtZXRlci0+aXNWYXJpYWRpYykgewogICAgICAgICAgICAgbXkgJG5hdGl2ZUVsZW1l
bnRUeXBlOwogICAgICAgICAgICAgaWYgKCRhcmdUeXBlIGVxICJET01TdHJpbmciKSB7CkBAIC00
MjY3LDcgKzQyNTksOSBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgcmV0dXJuICIkdmFsdWUu
dG9OdW1iZXIoc3RhdGUpIiBpZiAkdHlwZSBlcSAiZG91YmxlIiBvciAkdHlwZSBlcSAidW5yZXN0
cmljdGVkIGRvdWJsZSIgOwogICAgIHJldHVybiAiJHZhbHVlLnRvRmxvYXQoc3RhdGUpIiBpZiAk
dHlwZSBlcSAiZmxvYXQiIG9yICR0eXBlIGVxICJ1bnJlc3RyaWN0ZWQgZmxvYXQiIDsKIAotICAg
IG15ICRpbnRDb252ZXJzaW9uID0gJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkVu
Zm9yY2VSYW5nZSJ9ID8gIkVuZm9yY2VSYW5nZSIgOiAiTm9ybWFsQ29udmVyc2lvbiI7CisgICAg
bXkgJGludENvbnZlcnNpb24gPSAiTm9ybWFsQ29udmVyc2lvbiI7CisgICAgJGludENvbnZlcnNp
b24gPSAiRW5mb3JjZVJhbmdlIiBpZiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
RW5mb3JjZVJhbmdlIn07CisgICAgJGludENvbnZlcnNpb24gPSAiQ2xhbXAiIGlmICRzaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDbGFtcCJ9OwogICAgIHJldHVybiAidG9JbnQ4KHN0
YXRlLCAkdmFsdWUsICRpbnRDb252ZXJzaW9uKSIgaWYgJHR5cGUgZXEgImJ5dGUiOwogICAgIHJl
dHVybiAidG9VSW50OChzdGF0ZSwgJHZhbHVlLCAkaW50Q29udmVyc2lvbikiIGlmICR0eXBlIGVx
ICJvY3RldCI7CiAgICAgcmV0dXJuICJ0b0ludDE2KHN0YXRlLCAkdmFsdWUsICRpbnRDb252ZXJz
aW9uKSIgaWYgJHR5cGUgZXEgInNob3J0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5j
cHAKaW5kZXggNGViNzIzNTcxNDhhYjJjNzY2NWRmMjEzMzZiNjZjMmVmYjkzMTA0NS4uZTY2MTM0
ZGIwY2Q5Y2JmNTZiY2E3MDVjZTUwMDM3Mzk1ODQyMjYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdE9iai5jcHAKQEAgLTg0LDYgKzg0LDggQEAgZW51bSB7CiAgICAgUFJPUF9CWVRFX0FU
VFIsCiAgICAgUFJPUF9PQ1RFVF9BVFRSLAogICAgIFBST1BfU0hPUlRfQVRUUiwKKyAgICBQUk9Q
X0NMQU1QRURfU0hPUlRfQVRUUiwKKyAgICBQUk9QX0VORk9SQ0VfUkFOR0VfU0hPUlRfQVRUUiwK
ICAgICBQUk9QX1VOU0lHTkVEX1NIT1JUX0FUVFIsCiAgICAgUFJPUF9MT05HX0FUVFIsCiAgICAg
UFJPUF9MT05HX0xPTkdfQVRUUiwKQEAgLTE3MCw2ICsxNzIsMTIgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV90ZXN0X29ial9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
ZXJ0eUlkLAogICAgIGNhc2UgUFJPUF9TSE9SVF9BVFRSOgogICAgICAgICB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX3NldF9zaG9ydF9hdHRyKHNlbGYsIGdfdmFsdWVfZ2V0X2ludCh2YWx1ZSkpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQ0xBTVBFRF9TSE9SVF9BVFRSOgorICAgICAgICB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9jbGFtcGVkX3Nob3J0X2F0dHIoc2VsZiwgZ192YWx1ZV9n
ZXRfaW50KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkZPUkNFX1JB
TkdFX1NIT1JUX0FUVFI6CisgICAgICAgIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2VuZm9yY2Vf
cmFuZ2Vfc2hvcnRfYXR0cihzZWxmLCBnX3ZhbHVlX2dldF9pbnQodmFsdWUpKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBQUk9QX1VOU0lHTkVEX1NIT1JUX0FUVFI6CiAgICAgICAgIHdlYmtp
dF9kb21fdGVzdF9vYmpfc2V0X3Vuc2lnbmVkX3Nob3J0X2F0dHIoc2VsZiwgZ192YWx1ZV9nZXRf
dWludCh2YWx1ZSkpOwogICAgICAgICBicmVhazsKQEAgLTI5NSw2ICszMDMsMTIgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wZXJ0eUlkLAogICAgIGNhc2UgUFJPUF9TSE9SVF9BVFRSOgogICAgICAgICBnX3Zh
bHVlX3NldF9pbnQodmFsdWUsIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Nob3J0X2F0dHIoc2Vs
ZikpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQ0xBTVBFRF9TSE9SVF9BVFRSOgor
ICAgICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUsIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2Ns
YW1wZWRfc2hvcnRfYXR0cihzZWxmKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9F
TkZPUkNFX1JBTkdFX1NIT1JUX0FUVFI6CisgICAgICAgIGdfdmFsdWVfc2V0X2ludCh2YWx1ZSwg
d2Via2l0X2RvbV90ZXN0X29ial9nZXRfZW5mb3JjZV9yYW5nZV9zaG9ydF9hdHRyKHNlbGYpKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1VOU0lHTkVEX1NIT1JUX0FUVFI6CiAgICAg
ICAgIGdfdmFsdWVfc2V0X3VpbnQodmFsdWUsIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Vuc2ln
bmVkX3Nob3J0X2F0dHIoc2VsZikpOwogICAgICAgICBicmVhazsKQEAgLTU2Myw2ICs1NzcsMjYg
QEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19pbml0KFdlYktpdERPTVRl
c3RPYmpDbGFzcyogcmVxdWVzdENsYXNzKQogCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENsYXNzLAorICAgICAgICBQUk9QX0NMQU1QRURfU0hP
UlRfQVRUUiwKKyAgICAgICAgZ19wYXJhbV9zcGVjX2ludCgKKyAgICAgICAgICAgICJjbGFtcGVk
LXNob3J0LWF0dHIiLAorICAgICAgICAgICAgIlRlc3RPYmo6Y2xhbXBlZC1zaG9ydC1hdHRyIiwK
KyAgICAgICAgICAgICJyZWFkLXdyaXRlIGdzaG9ydCBUZXN0T2JqOmNsYW1wZWQtc2hvcnQtYXR0
ciIsCisgICAgICAgICAgICBHX01JTklOVCwgR19NQVhJTlQsIDAsCisgICAgICAgICAgICBXRUJL
SVRfUEFSQU1fUkVBRFdSSVRFKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KAorICAgICAgICBnb2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfRU5GT1JDRV9SQU5HRV9T
SE9SVF9BVFRSLAorICAgICAgICBnX3BhcmFtX3NwZWNfaW50KAorICAgICAgICAgICAgImVuZm9y
Y2UtcmFuZ2Utc2hvcnQtYXR0ciIsCisgICAgICAgICAgICAiVGVzdE9iajplbmZvcmNlLXJhbmdl
LXNob3J0LWF0dHIiLAorICAgICAgICAgICAgInJlYWQtd3JpdGUgZ3Nob3J0IFRlc3RPYmo6ZW5m
b3JjZS1yYW5nZS1zaG9ydC1hdHRyIiwKKyAgICAgICAgICAgIEdfTUlOSU5ULCBHX01BWElOVCwg
MCwKKyAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKworICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdvYmplY3RDbGFzcywKICAgICAgICAg
UFJPUF9VTlNJR05FRF9TSE9SVF9BVFRSLAogICAgICAgICBnX3BhcmFtX3NwZWNfdWludCgKICAg
ICAgICAgICAgICJ1bnNpZ25lZC1zaG9ydC1hdHRyIiwKQEAgLTE3NjMsNiArMTc5NywxNCBAQCB2
b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfY29uZGl0aW9uYWxfbWV0aG9kMyhXZWJLaXRET01UZXN0
T2JqKiBzZWxmKQogI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMikgKi8KIH0KIAordm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NsYXNzX21ldGhvZF93aXRo
X2VuZm9yY2VfcmFuZ2UoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ3VzaG9ydCBvYmpBcmdzU2hv
cnQsIGd1bG9uZyBvYmpBcmdzTG9uZykKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JK
KHNlbGYpKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OworICAgIGl0ZW0tPmNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZShvYmpBcmdzU2hvcnQsIG9i
akFyZ3NMb25nKTsKK30KKwogdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NvbnZlcnQxKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3ROb2RlKiB2YWx1ZSkKIHsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC0xOTgzLDYgKzIwMjUsNDAgQEAg
dm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9zaG9ydF9hdHRyKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYsIGdzaG9ydCB2YWx1ZSkKICAgICBpdGVtLT5zZXRTaG9ydEF0dHIodmFsdWUpOwogfQog
Citnc2hvcnQgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfY2xhbXBlZF9zaG9ydF9hdHRyKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkoo
c2VsZiksIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7CisgICAgZ3Nob3J0IHJlc3VsdCA9IGl0ZW0tPmNsYW1wZWRTaG9ydEF0dHIoKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2NsYW1wZWRf
c2hvcnRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnc2hvcnQgdmFsdWUpCit7CisgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT5zZXRDbGFtcGVkU2hvcnRBdHRy
KHZhbHVlKTsKK30KKworZ3Nob3J0IHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2VuZm9yY2VfcmFu
Z2Vfc2hvcnRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQoreworICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdzaG9ydCByZXN1bHQgPSBpdGVtLT5lbmZvcmNl
UmFuZ2VTaG9ydEF0dHIoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIHdlYmtpdF9k
b21fdGVzdF9vYmpfc2V0X2VuZm9yY2VfcmFuZ2Vfc2hvcnRfYXR0cihXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBnc2hvcnQgdmFsdWUpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihz
ZWxmKSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
KyAgICBpdGVtLT5zZXRFbmZvcmNlUmFuZ2VTaG9ydEF0dHIodmFsdWUpOworfQorCiBndXNob3J0
IHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Vuc2lnbmVkX3Nob3J0X2F0dHIoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZikKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKaW5kZXggYTc5MjhlNDk4MTJkYmRkOTI1MmE5
ZmZhNzE1YTMyZDhjYmY1YzYwYi4uNmQ4Y2UyZmNiMDZiYzE4M2Q5OTQxYjQ5ZDIyZTQ3NzNkOGY3
NjU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaApAQCAtNzE4LDYgKzcxOCwxNyBA
QCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfY29uZGl0aW9uYWxfbWV0aG9k
MyhXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X2NsYXNzX21ldGhvZF93aXRoX2VuZm9yY2VfcmFuZ2U6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9N
VGVzdE9iagorICogQG9iakFyZ3NTaG9ydDogQSAjZ3VzaG9ydAorICogQG9iakFyZ3NMb25nOiBB
ICNndWxvbmcKKyAqCisgKiBTdGFiaWxpdHk6IFVuc3RhYmxlCisqKi8KK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19tZXRob2Rfd2l0aF9lbmZvcmNlX3JhbmdlKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYsIGd1c2hvcnQgb2JqQXJnc1Nob3J0LCBndWxvbmcgb2JqQXJn
c0xvbmcpOworCisvKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfY29udmVydDE6CiAgKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NVGVzdE9iagogICogQHZhbHVlOiBBICNXZWJLaXRET01UZXN0Tm9kZQpA
QCAtOTU4LDYgKzk2OSw0OCBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpf
c2V0X3Nob3J0X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ3Nob3J0IHZhbHVlKTsKIAog
LyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9jbGFtcGVkX3Nob3J0X2F0dHI6CisgKiBA
c2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6IEEgI2dzaG9ydAorICoK
KyAqIFN0YWJpbGl0eTogVW5zdGFibGUKKyoqLworV0VCS0lUX0FQSSBnc2hvcnQKK3dlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X2NsYW1wZWRfc2hvcnRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxm
KTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9jbGFtcGVkX3Nob3J0X2F0dHI6
CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNnc2hvcnQKKyAq
CisgKiBTdGFiaWxpdHk6IFVuc3RhYmxlCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2Rv
bV90ZXN0X29ial9zZXRfY2xhbXBlZF9zaG9ydF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYs
IGdzaG9ydCB2YWx1ZSk7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfZW5mb3Jj
ZV9yYW5nZV9zaG9ydF9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisg
KiBSZXR1cm5zOiBBICNnc2hvcnQKKyAqCisgKiBTdGFiaWxpdHk6IFVuc3RhYmxlCisqKi8KK1dF
QktJVF9BUEkgZ3Nob3J0Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9lbmZvcmNlX3JhbmdlX3No
b3J0X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90
ZXN0X29ial9zZXRfZW5mb3JjZV9yYW5nZV9zaG9ydF9hdHRyOgorICogQHNlbGY6IEEgI1dlYktp
dERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAjZ3Nob3J0CisgKgorICogU3RhYmlsaXR5OiBVbnN0
YWJsZQorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2VuZm9y
Y2VfcmFuZ2Vfc2hvcnRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnc2hvcnQgdmFsdWUp
OworCisvKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Vuc2lnbmVkX3Nob3J0X2F0dHI6
CiAgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNWJmY2Zh
Y2M2ODVjZjE0OTk5Zjc5ZTNkNTg4OTI3MDhiOGE4MGI0NS4uOTU4MTE0ZDA1YzQ2NmFkYWRhNWVm
YzExZTI5NmZkZTQyMTFkMzJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE4Miw2ICsxODIsNyBAQCBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
bkNsYXNzTWV0aG9kMihKU0M6OgogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMShKU0M6OkV4ZWNTdGF0
ZSopOwogI2VuZGlmCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcChKU0M6OkV4ZWNTdGF0ZSopOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0Fy
cmF5RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbihK
U0M6OkV4ZWNTdGF0ZSopOwpAQCAtMjM1LDYgKzIzNiwxMCBAQCBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iak9jdGV0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQwogYm9vbCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2xhbXBlZFNob3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0
T2JqQ2xhbXBlZFNob3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbmZv
cmNlUmFuZ2VTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdE9iakVuZm9yY2VSYW5nZVNob3J0QXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJv
b2wgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqTG9uZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CkBAIC01NTYsNiArNTYxLDggQEAgc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogICAgIHsgImJ5dGVB
dHRyIiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQnl0ZUF0dHIpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RP
YmpCeXRlQXR0cikgfSB9LAogICAgIHsgIm9jdGV0QXR0ciIsIEN1c3RvbUFjY2Vzc29yLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdE9iak9jdGV0QXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iak9jdGV0QXR0cikgfSB9LAogICAgIHsg
InNob3J0QXR0ciIsIEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialNob3J0QXR0ciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdE9ialNob3J0QXR0cikgfSB9LAorICAgIHsgImNsYW1wZWRTaG9ydEF0dHIiLCBDdXN0
b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDbGFtcGVkU2hvcnRBdHRyKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2Jq
Q2xhbXBlZFNob3J0QXR0cikgfSB9LAorICAgIHsgImVuZm9yY2VSYW5nZVNob3J0QXR0ciIsIEN1
c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakVuZm9yY2VSYW5nZVNob3J0QXR0ciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdE9iakVuZm9yY2VSYW5nZVNob3J0QXR0cikgfSB9LAogICAgIHsgInVuc2lnbmVkU2hvcnRB
dHRyIiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cikgfSB9LAogICAgIHsgImxvbmdBdHRyIiwgQ3Vz
dG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTG9uZ0F0dHIpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpMb25nQXR0
cikgfSB9LAogICAgIHsgImxvbmdMb25nQXR0ciIsIEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE9iakxvbmdMb25nQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iakxvbmdMb25nQXR0cikgfSB9LApAQCAtNzQ3
LDYgKzc1NCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5
cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJvdmVybG9hZGVkTWV0aG9kIiwgSlNDOjpGdW5jdGlv
biwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QpLCAoaW50cHRyX3QpICgy
KSB9IH0sCiAgICAgeyAib3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlciIsIEpT
Qzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9w
dGlvbmFsUGFyYW1ldGVyKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgImNsYXNzTWV0aG9k
V2l0aENsYW1wIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0
aG9kV2l0aENsYW1wKSwgKGludHB0cl90KSAoMikgfSB9LAorICAgIHsgImNsYXNzTWV0aG9kV2l0
aEVuZm9yY2VSYW5nZSIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFz
c01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UpLCAoaW50cHRyX3QpICgyKSB9IH0sCiAgICAgeyAibWV0
aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSksIChpbnRwdHJfdCkgKDEp
IH0gfSwKICAgICB7ICJzdHJpbmdBcnJheUZ1bmN0aW9uIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24pLCAoaW50cHRyX3QpICgxKSB9IH0s
CiAgICAgeyAiZG9tU3RyaW5nTGlzdEZ1bmN0aW9uIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbiksIChpbnRwdHJfdCkgKDEpIH0gfSwK
QEAgLTEwMjQsNiArMTAzMiwzNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTaG9ydEF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcgogfQogCiAKK0Vu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKKyAgICBKU1ZhbHVlIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKKyAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsK
KyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNsYW1wZWRTaG9ydEF0dHIiKTsKKyAg
ICB9CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuY2xhbXBlZFNob3J0QXR0cigpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKKworRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
RW5mb3JjZVJhbmdlU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CisgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgeworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJlbmZvcmNlUmFuZ2VTaG9ydEF0dHIiKTsKKyAgICB9CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKGltcGwuZW5mb3JjZVJhbmdlU2hvcnRBdHRyKCkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKK30KKworCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25l
ZFNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwpAQCAtMjI1MCw2ICsyMjg4
LDQwIEBAIGJvb2wgc2V0SlNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTCiB9CiAKIAorYm9vbCBzZXRKU1Rlc3RPYmpD
bGFtcGVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgImNsYW1wZWRTaG9ydEF0dHIiKTsKKyAgICB9CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpbnQxNl90IG5hdGl2ZVZhbHVlID0gdG9JbnQxNihzdGF0
ZSwgdmFsdWUsIENsYW1wKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGltcGwuc2V0Q2xhbXBlZFNob3J0QXR0cihu
YXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKworYm9vbCBzZXRKU1Rlc3RPYmpF
bmZvcmNlUmFuZ2VTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAiZW5mb3JjZVJhbmdlU2hvcnRBdHRyIik7CisgICAgfQorICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaW50MTZfdCBuYXRpdmVWYWx1ZSA9IHRv
SW50MTYoc3RhdGUsIHZhbHVlLCBFbmZvcmNlUmFuZ2UpOworICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaW1wbC5zZXRF
bmZvcmNlUmFuZ2VTaG9ydEF0dHIobmF0aXZlVmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQor
CisKIGJvb2wgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAt
NDkxNiwyNiArNDk4OCwzNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXAoRXhlYwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICB1bnNpZ25lZCBzaG9ydCBv
YmpBcmdzU2hvcnQgPSAwOwotICAgIGRvdWJsZSBvYmpBcmdzU2hvcnROYXRpdmVWYWx1ZSA9IHN0
YXRlLT5hcmd1bWVudCgwKS50b051bWJlcihzdGF0ZSk7CisgICAgdWludDE2X3Qgb2JqQXJnc1No
b3J0ID0gdG9VSW50MTYoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgQ2xhbXApOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgaWYgKCFzdGQ6OmlzbmFuKG9iakFyZ3NT
aG9ydE5hdGl2ZVZhbHVlKSkKLSAgICAgICAgb2JqQXJnc1Nob3J0ID0gY2xhbXBUbzx1bnNpZ25l
ZCBzaG9ydD4ob2JqQXJnc1Nob3J0TmF0aXZlVmFsdWUpOwotCi0gICAgdW5zaWduZWQgbG9uZyBv
YmpBcmdzTG9uZyA9IDA7Ci0gICAgZG91YmxlIG9iakFyZ3NMb25nTmF0aXZlVmFsdWUgPSBzdGF0
ZS0+YXJndW1lbnQoMSkudG9OdW1iZXIoc3RhdGUpOworICAgIHVuc2lnbmVkIG9iakFyZ3NMb25n
ID0gdG9VSW50MzIoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgxKSwgQ2xhbXApOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgaWYgKCFzdGQ6OmlzbmFuKG9iakFyZ3NMb25n
TmF0aXZlVmFsdWUpKQotICAgICAgICBvYmpBcmdzTG9uZyA9IGNsYW1wVG88dW5zaWduZWQgbG9u
Zz4ob2JqQXJnc0xvbmdOYXRpdmVWYWx1ZSk7Ci0KICAgICBpbXBsLmNsYXNzTWV0aG9kV2l0aENs
YW1wKG9iakFyZ3NTaG9ydCwgb2JqQXJnc0xvbmcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UoRXhlY1N0
YXRlKiBzdGF0ZSkKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNsYXNzTWV0aG9kV2l0aEVuZm9y
Y2VSYW5nZSIpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKKyAgICB1aW50MTZfdCBvYmpBcmdzU2hvcnQgPSB0b1VJbnQxNihzdGF0ZSwgc3Rh
dGUtPmFyZ3VtZW50KDApLCBFbmZvcmNlUmFuZ2UpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIHVuc2lnbmVkIG9iakFyZ3NMb25nID0gdG9VSW50MzIoc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgxKSwgRW5mb3JjZVJhbmdlKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBpbXBsLmNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZShvYmpBcmdzU2hvcnQs
IG9iakFyZ3NMb25nKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcAppbmRleCA3NmVkOTViNzBjNjY1NzBhMzA5ZWI1ODEwZjI2MGVjYTIyNjM1NjJmLi5j
NDFlNDg5OGIzNzQ3YTI3OWZlNTNlYzNmMGJmMWRhNjJkMWZlOTkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVm
cy5jcHAKQEAgLTU1MCwyOSArNTUwLDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXAoRXhlY1N0CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwotICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBhcmcxID0gMDsKLSAgICBkb3VibGUgYXJnMU5hdGl2ZVZhbHVlID0gc3RhdGUt
PmFyZ3VtZW50KDApLnRvTnVtYmVyKHN0YXRlKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYXJn
MSA9IHRvVUludDY0KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIENsYW1wKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGlmICghc3RkOjppc25hbihhcmcxTmF0aXZl
VmFsdWUpKQotICAgICAgICBhcmcxID0gY2xhbXBUbzx1bnNpZ25lZCBsb25nIGxvbmc+KGFyZzFO
YXRpdmVWYWx1ZSk7Ci0KLQogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGF0ZS0+YXJndW1lbnRD
b3VudCgpOwogICAgIGlmIChhcmdzQ291bnQgPD0gMSkgewogICAgICAgICBpbXBsLmZ1bmNXaXRo
Q2xhbXAoYXJnMSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbG9uZyBsb25nIGFyZzIgPSAwOwotICAgIGRvdWJs
ZSBhcmcyTmF0aXZlVmFsdWUgPSBzdGF0ZS0+YXJndW1lbnQoMSkudG9OdW1iZXIoc3RhdGUpOwor
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBhcmcyID0gdG9VSW50NjQoc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgxKSwgQ2xhbXApOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAg
aWYgKCFzdGQ6OmlzbmFuKGFyZzJOYXRpdmVWYWx1ZSkpCi0gICAgICAgIGFyZzIgPSBjbGFtcFRv
PHVuc2lnbmVkIGxvbmcgbG9uZz4oYXJnMk5hdGl2ZVZhbHVlKTsKLQogICAgIGltcGwuZnVuY1dp
dGhDbGFtcChhcmcxLCBhcmcyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdE9iai5oCmluZGV4IDdhYWNiMTA5YzVkMThjZjk4MjE2ZGU5YWY3ZDA0
NzU3NzRkMTcxZjMuLjkyMDUyMzAzZDNlNDNjOTg4YmE4MzdmZmFlMDE5MmE0MGEwNWFjZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0T2JqLmgKQEAgLTY3LDYgKzY3LDggQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBE
T01UZXN0T2JqIDogRE9NT2JqZWN0CiBAcHJvcGVydHkgY2hhciBieXRlQXR0cjsKIEBwcm9wZXJ0
eSB1bnNpZ25lZCBjaGFyIG9jdGV0QXR0cjsKIEBwcm9wZXJ0eSBzaG9ydCBzaG9ydEF0dHI7CitA
cHJvcGVydHkgc2hvcnQgY2xhbXBlZFNob3J0QXR0cjsKK0Bwcm9wZXJ0eSBzaG9ydCBlbmZvcmNl
UmFuZ2VTaG9ydEF0dHI7CiBAcHJvcGVydHkgdW5zaWduZWQgc2hvcnQgdW5zaWduZWRTaG9ydEF0
dHI7CiBAcHJvcGVydHkgaW50IGxvbmdBdHRyOwogQHByb3BlcnR5IGxvbmcgbG9uZyBsb25nTG9u
Z0F0dHI7CkBAIC0xOTMsNiArMTk1LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBET01U
ZXN0T2JqIDogRE9NT2JqZWN0CiAtICh2b2lkKWNsYXNzTWV0aG9kOwogLSAoaW50KWNsYXNzTWV0
aG9kV2l0aE9wdGlvbmFsOihpbnQpYXJnOwogLSAodm9pZCljbGFzc01ldGhvZDI6KGludClhcmc7
CistICh2b2lkKWNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZToodW5zaWduZWQgc2hvcnQpb2Jq
QXJnc1Nob3J0IG9iakFyZ3NMb25nOih1bnNpZ25lZClvYmpBcmdzTG9uZzsKIC0gKERPTVNWR0Rv
Y3VtZW50ICopZ2V0U1ZHRG9jdW1lbnQ7CiAtICh2b2lkKWNvbnZlcnQxOihET01UZXN0Tm9kZSAq
KXZhbHVlOwogLSAodm9pZCljb252ZXJ0MjooRE9NVGVzdE5vZGUgKil2YWx1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
bW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2Jq
Lm1tCmluZGV4IGFjMTJkMDQ2ZTM1N2UyNjQxMDRiY2I5N2JhNDdkNDJlOGU3Yjc0MmQuLmJhNTlj
MTdlNjRjMWE3NDZiYTIyYjdjYTA0Zjg0Y2IwNTJlYmUwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAt
MTUxLDYgKzE1MSwzMCBAQCAtICh2b2lkKXNldFNob3J0QXR0cjooc2hvcnQpbmV3U2hvcnRBdHRy
CiAgICAgSU1QTC0+c2V0U2hvcnRBdHRyKG5ld1Nob3J0QXR0cik7CiB9CiAKKy0gKHNob3J0KWNs
YW1wZWRTaG9ydEF0dHIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CisgICAgcmV0dXJuIElNUEwtPmNsYW1wZWRTaG9ydEF0dHIoKTsKK30KKworLSAodm9pZClz
ZXRDbGFtcGVkU2hvcnRBdHRyOihzaG9ydCluZXdDbGFtcGVkU2hvcnRBdHRyCit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPnNldENsYW1wZWRT
aG9ydEF0dHIobmV3Q2xhbXBlZFNob3J0QXR0cik7Cit9CisKKy0gKHNob3J0KWVuZm9yY2VSYW5n
ZVNob3J0QXR0cgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICByZXR1cm4gSU1QTC0+ZW5mb3JjZVJhbmdlU2hvcnRBdHRyKCk7Cit9CisKKy0gKHZvaWQp
c2V0RW5mb3JjZVJhbmdlU2hvcnRBdHRyOihzaG9ydCluZXdFbmZvcmNlUmFuZ2VTaG9ydEF0dHIK
K3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+
c2V0RW5mb3JjZVJhbmdlU2hvcnRBdHRyKG5ld0VuZm9yY2VSYW5nZVNob3J0QXR0cik7Cit9CisK
IC0gKHVuc2lnbmVkIHNob3J0KXVuc2lnbmVkU2hvcnRBdHRyCiB7CiAgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtMTQyMCw2ICsxNDQ0LDEyIEBAIC0gKHZvaWQp
b3ZlcmxvYWRlZE1ldGhvZDE6KE5TU3RyaW5nICopdHlwZQogCiAjZW5kaWYKIAorLSAodm9pZClj
bGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2U6KHVuc2lnbmVkIHNob3J0KW9iakFyZ3NTaG9ydCBv
YmpBcmdzTG9uZzoodW5zaWduZWQpb2JqQXJnc0xvbmcKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+Y2xhc3NNZXRob2RXaXRoRW5mb3JjZVJh
bmdlKG9iakFyZ3NTaG9ydCwgb2JqQXJnc0xvbmcpOworfQorCiAtIChET01TVkdEb2N1bWVudCAq
KWdldFNWR0RvY3VtZW50CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmou
aWRsCmluZGV4IGU2MDQyNzhlNGJkMDI0MDNiN2QwZWY5MGIyMjcxNTAxYmNiMTc5ZDEuLjFjYzQ0
MDEwYjVjODY1MmE2MzRjMzJlOTk5MzdjYmYxMDdkNDZiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTUxLDYgKzUxLDggQEAg
ZW51bSBfb3B0aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFsdWUxIiwgIk9wdGlvbmFsVmFsdWUyIiwg
Ik9wdGlvbmFsVmFsdWUzIiB9OwogICAgIGF0dHJpYnV0ZSBieXRlICAgICAgICAgICAgICAgICAg
ICAgYnl0ZUF0dHI7CiAgICAgYXR0cmlidXRlIG9jdGV0ICAgICAgICAgICAgICAgICAgICBvY3Rl
dEF0dHI7CiAgICAgYXR0cmlidXRlIHNob3J0ICAgICAgICAgICAgICAgICAgICBzaG9ydEF0dHI7
CisgICAgW0NsYW1wXSBhdHRyaWJ1dGUgc2hvcnQgICAgICAgICAgICBjbGFtcGVkU2hvcnRBdHRy
OworICAgIFtFbmZvcmNlUmFuZ2VdIGF0dHJpYnV0ZSBzaG9ydCAgICAgZW5mb3JjZVJhbmdlU2hv
cnRBdHRyOwogICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCAgICAgICAgICAgdW5zaWduZWRT
aG9ydEF0dHI7CiAgICAgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICAgICAgICAgICBsb25nQXR0
cjsKICAgICBhdHRyaWJ1dGUgbG9uZyBsb25nICAgICAgICAgICAgICAgIGxvbmdMb25nQXR0cjsK
QEAgLTI2OCw2ICsyNzAsNyBAQCBlbnVtIF9vcHRpb25hbCB7ICIiLCAiT3B0aW9uYWxWYWx1ZTEi
LCAiT3B0aW9uYWxWYWx1ZTIiLCAiT3B0aW9uYWxWYWx1ZTMiIH07CiAgICAgW0NvbmRpdGlvbmFs
PUNvbmRpdGlvbjFdIHN0YXRpYyB2b2lkIG92ZXJsb2FkZWRNZXRob2QxKFtTdHJpY3RUeXBlQ2hl
Y2tpbmddIERPTVN0cmluZyB0eXBlKTsKIAogICAgIHZvaWQgY2xhc3NNZXRob2RXaXRoQ2xhbXAo
W0NsYW1wXSB1bnNpZ25lZCBzaG9ydCBvYmpBcmdzU2hvcnQsIFtDbGFtcF0gdW5zaWduZWQgbG9u
ZyBvYmpBcmdzTG9uZyk7CisgICAgdm9pZCBjbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UoW0Vu
Zm9yY2VSYW5nZV0gdW5zaWduZWQgc2hvcnQgb2JqQXJnc1Nob3J0LCBbRW5mb3JjZVJhbmdlXSB1
bnNpZ25lZCBsb25nIG9iakFyZ3NMb25nKTsKIAogI2lmIGRlZmluZWQoVEVTVElOR19KUykKICAg
ICB2b2lkIG1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShzZXF1ZW5jZTx1bnNpZ25lZCBs
b25nPiB1bnNpZ25lZExvbmdTZXF1ZW5jZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277483</attachid>
            <date>2016-04-27 09:20:54 -0700</date>
            <delta_ts>2016-04-27 10:05:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157060-20160427092123.patch</filename>
            <type>text/plain</type>
            <size>36024</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTMzMWIzZDU4ZmFmODAw
YzMwZjc4OTg4MTFiNjI0ZTRjNThkMDg1NC4uNWIxNzgxOGNlYjdmYzBlOGRlNTNjMjdkNThjZjJj
MzIzMTc5MDU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcxIEBACiAyMDE2LTA0LTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW1dlYiBJRExdIENsZWFuIHVw
IHN1cHBvcnQgZm9yIFtDbGFtcF0gSURMIGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQ2xlYW4gdXAgc3VwcG9ydCBmb3IgW0Ns
YW1wXSBJREwgZXh0ZW5kZWQgYXR0cmlidXRlOgorICAgICAgICAxLiAgTW92ZSBbQ2xhbXBdIGhh
bmRsaW5nIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IgZnJvbSB0aGUgcGFyYW1ldGVyCisgICAg
ICAgICAgICBjb252ZXJzaW9uIHRvIEpTVmFsdWVUb05hdGl2ZSgpLiBUaGlzIGhhcyB0aGUgYmVu
ZWZpdCBvZgorICAgICAgICAgICAgc2ltcGxpZnlpbmcgdGhlIHBhcmFtZXRlciBjb252ZXJzaW9u
IGNvZGUsIGFkZGluZyBzdXBwb3J0IGZvciBbQ2xhbXBdCisgICAgICAgICAgICBvbiBub24tcmVh
ZG9ubHkgYXR0cmlidXRlcywgYW5kIGltcHJvdmluZyBjb25zaXN0ZW5jeSBieSBoYW5kbGluZwor
ICAgICAgICAgICAgdGhpcyBpbiB0aGUgc2FtZSBwbGFjZSBhcyBbRW5mb3JjZVJhbmdlXS4KKyAg
ICAgICAgMi4gIEFkZCAnQ2xhbXAnIHRvIHRoZSBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRp
b24gZW51bWVyYXRpb24gaW4KKyAgICAgICAgICAgIEpTRE9NYmluZGluZ3MuaCBhbmQgYWRkIHN1
cHBvcnQgZm9yIGl0IHRvIHRoZSB2YXJpb3VzIHRvSW50KigpIC8KKyAgICAgICAgICAgIHRvVUlu
dCooKSBmdW5jdGlvbnMsIHNpbWlsYXJ5IHRvIFtFbmZvcmNlUmFuZ2VdLiBDYWxsIHRoZXNlIGZy
b20KKyAgICAgICAgICAgIHRoZSBnZW5lcmF0ZWQgYmluZGluZ3MuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9TbWFsbGVySW50
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU21hbGxlclVJbnQpOgorICAgICAgICAoV2ViQ29yZTo6
dG9JbnQzMkVuZm9yY2VSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjp0b0ludDMyQ2xhbXApOgor
ICAgICAgICAoV2ViQ29yZTo6dG9VSW50MzJDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjp0b1VJ
bnQzMkVuZm9yY2VSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjp0b0ludDY0KToKKyAgICAgICAg
KFdlYkNvcmU6OnRvVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvVUludDgpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6dG9VSW50MTYpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6dG9JbnQzMik6CisgICAg
ICAgIChXZWJDb3JlOjp0b1VJbnQzMik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG06CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAoR2Vu
ZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgorICAgICAgICAod2Via2l0X2Rv
bV90ZXN0X29ial9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9n
ZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19pbml0KToK
KyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfY2xhc3NfbWV0aG9kX3dpdGhfZW5mb3JjZV9y
YW5nZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9jbGFtcGVkX3Nob3J0X2F0
dHIpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfY2xhbXBlZF9zaG9ydF9hdHRy
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2VuZm9yY2VfcmFuZ2Vfc2hvcnRf
YXR0cik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9lbmZvcmNlX3JhbmdlX3No
b3J0X2F0dHIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqRW5mb3JjZVJhbmdlU2hvcnRBdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqRW5mb3JjZVJhbmdlU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXApOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhF
bmZvcmNlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZDIpOiBEZWxldGVkLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFt
cCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uSW1t
dXRhYmxlUG9pbnRGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RPYmoubW06CisgICAgICAgICgtW0RPTVRlc3RPYmogY2xhbXBlZFNob3J0
QXR0cl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHNldENsYW1wZWRTaG9ydEF0dHI6XSk6Cisg
ICAgICAgICgtW0RPTVRlc3RPYmogZW5mb3JjZVJhbmdlU2hvcnRBdHRyXSk6CisgICAgICAgICgt
W0RPTVRlc3RPYmogc2V0RW5mb3JjZVJhbmdlU2hvcnRBdHRyOl0pOgorICAgICAgICAoLVtET01U
ZXN0T2JqIGNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZTpvYmpBcmdzTG9uZzpdKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisKKzIwMTYtMDQtMjYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBbV2ViIElETF0gU3BlY2lm
eSBkZWZhdWx0IHZhbHVlcyBmb3Igb3B0aW9uYWwgcGFyYW1ldGVycyBvZiB0eXBlICd1bnNpZ25l
ZCBsb25nJwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3MDQzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmlu
ZGV4IDNjYjJhNTUyODAyYTRkZGNhMTRmZTg0NWZiOWMxOTdhY2MyZjYzZjIuLjVkYmZhMmViNjA4
YzA0M2I5NjRiMjFiMDQ5YmU0NjVjNWQyYzVmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtNDE4LDIwICs0MTgsMzEgQEAgc3RhdGljIGlubGlu
ZSBUIHRvU21hbGxlckludChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEludGVnZXJD
b252ZXJzaW9uQ28KICAgICAgICAgaW50MzJfdCBkID0gdmFsdWUuYXNJbnQzMigpOwogICAgICAg
ICBpZiAoZCA+PSBMaW1pdHNUcmFpdDo6bWluVmFsdWUgJiYgZCA8PSBMaW1pdHNUcmFpdDo6bWF4
VmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oZCk7Ci0gICAgICAgIGlm
IChjb25maWd1cmF0aW9uID09IEVuZm9yY2VSYW5nZSkgeworICAgICAgICBzd2l0Y2ggKGNvbmZp
Z3VyYXRpb24pIHsKKyAgICAgICAgY2FzZSBOb3JtYWxDb252ZXJzaW9uOgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRW5mb3JjZVJhbmdlOgogICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYyk7CiAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDbGFtcDoK
KyAgICAgICAgICAgIHJldHVybiBkIDwgTGltaXRzVHJhaXQ6Om1pblZhbHVlID8gTGltaXRzVHJh
aXQ6Om1pblZhbHVlIDogTGltaXRzVHJhaXQ6Om1heFZhbHVlOwogICAgICAgICB9CiAgICAgICAg
IGQgJT0gTGltaXRzVHJhaXQ6Om51bWJlck9mVmFsdWVzOwogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8VD4oZCA+IExpbWl0c1RyYWl0OjptYXhWYWx1ZSA/IGQgLSBMaW1pdHNUcmFpdDo6bnVt
YmVyT2ZWYWx1ZXMgOiBkKTsKICAgICB9CiAKICAgICBkb3VibGUgeCA9IHZhbHVlLnRvTnVtYmVy
KGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAoVU5MSUtFTFko
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChjb25m
aWd1cmF0aW9uID09IEVuZm9yY2VSYW5nZSkKKyAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24pIHsK
KyAgICBjYXNlIE5vcm1hbENvbnZlcnNpb246CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRW5m
b3JjZVJhbmdlOgogICAgICAgICByZXR1cm4gZW5mb3JjZVJhbmdlKGV4ZWMsIHgsIExpbWl0c1Ry
YWl0OjptaW5WYWx1ZSwgTGltaXRzVHJhaXQ6Om1heFZhbHVlKTsKKyAgICBjYXNlIENsYW1wOgor
ICAgICAgICByZXR1cm4gc3RkOjppc25hbih4KSA/IDAgOiBjbGFtcFRvPFQ+KHgpOworICAgIH0K
IAogICAgIGlmIChzdGQ6OmlzbmFuKHgpIHx8IHN0ZDo6aXNpbmYoeCkgfHwgIXgpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtNDUxLDE5ICs0NjIsMjkgQEAgc3RhdGljIGlubGluZSBUIHRvU21hbGxl
clVJbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkMK
ICAgICAgICAgdWludDMyX3QgZCA9IHZhbHVlLmFzVUludDMyKCk7CiAgICAgICAgIGlmIChkIDw9
IExpbWl0c1RyYWl0OjptYXhWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxU
PihkKTsKLSAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24gPT0gRW5mb3JjZVJhbmdlKSB7CisgICAg
ICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgeworICAgICAgICBjYXNlIE5vcm1hbENvbnZlcnNp
b246CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oZCk7CisgICAgICAgIGNhc2Ug
RW5mb3JjZVJhbmdlOgogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CiAgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDbGFtcDoKKyAgICAgICAgICAgIHJldHVybiBM
aW1pdHNUcmFpdDo6bWF4VmFsdWU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFQ+KGQpOwogICAgIH0KIAogICAgIGRvdWJsZSB4ID0gdmFsdWUudG9OdW1iZXIoZXhlYyk7
Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgIGlmIChVTkxJS0VMWShleGVjLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKGNvbmZpZ3VyYXRp
b24gPT0gRW5mb3JjZVJhbmdlKQorICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgeworICAgIGNh
c2UgTm9ybWFsQ29udmVyc2lvbjoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFbmZvcmNlUmFu
Z2U6CiAgICAgICAgIHJldHVybiBlbmZvcmNlUmFuZ2UoZXhlYywgeCwgMCwgTGltaXRzVHJhaXQ6
Om1heFZhbHVlKTsKKyAgICBjYXNlIENsYW1wOgorICAgICAgICByZXR1cm4gc3RkOjppc25hbih4
KSA/IDAgOiBjbGFtcFRvPFQ+KHgpOworICAgIH0KIAogICAgIGlmIChzdGQ6OmlzbmFuKHgpIHx8
IHN0ZDo6aXNpbmYoeCkgfHwgIXgpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNTAzLDExICs1MjQs
MzMgQEAgaW50MzJfdCB0b0ludDMyRW5mb3JjZVJhbmdlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuIHZhbHVlLmFzSW50MzIoKTsKIAogICAgIGRvdWJsZSB4
ID0gdmFsdWUudG9OdW1iZXIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiAw
OwogICAgIHJldHVybiBlbmZvcmNlUmFuZ2UoZXhlYywgeCwga01pbkludDMyLCBrTWF4SW50MzIp
OwogfQogCitpbnQzMl90IHRvSW50MzJDbGFtcChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUpCit7CisgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlLmFz
SW50MzIoKTsKKworICAgIGRvdWJsZSB4ID0gdmFsdWUudG9OdW1iZXIoZXhlYyk7CisgICAgaWYg
KFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIHN0ZDo6aXNuYW4oeCkgPyAwIDogY2xhbXBUbzxpbnQzMl90Pih4KTsKK30KKwordWlu
dDMyX3QgdG9VSW50MzJDbGFtcChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgaWYgKHZhbHVlLmlzVUludDMyKCkpCisgICAgICAgIHJldHVybiB2YWx1ZS5hc1VJbnQzMigp
OworCisgICAgZG91YmxlIHggPSB2YWx1ZS50b051bWJlcihleGVjKTsKKyAgICBpZiAoVU5MSUtF
TFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
c3RkOjppc25hbih4KSA/IDAgOiBjbGFtcFRvPHVpbnQzMl90Pih4KTsKK30KKwogLy8gaHR0cDov
L3d3dy53My5vcmcvVFIvV2ViSURMLyNlcy11bnNpZ25lZC1sb25nCiB1aW50MzJfdCB0b1VJbnQz
MkVuZm9yY2VSYW5nZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CkBAIC01MTUs
NyArNTU4LDcgQEAgdWludDMyX3QgdG9VSW50MzJFbmZvcmNlUmFuZ2UoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm4gdmFsdWUuYXNVSW50MzIoKTsKIAogICAg
IGRvdWJsZSB4ID0gdmFsdWUudG9OdW1iZXIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybiAwOwogICAgIHJldHVybiBlbmZvcmNlUmFuZ2UoZXhlYywgeCwgMCwga01heFVJbnQz
Mik7CiB9CkBAIC01MjcsMTEgKzU3MCwxNyBAQCBpbnQ2NF90IHRvSW50NjQoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gYwogICAg
ICAgICByZXR1cm4gdmFsdWUuYXNJbnQzMigpOwogCiAgICAgZG91YmxlIHggPSB2YWx1ZS50b051
bWJlcihleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAo
Y29uZmlndXJhdGlvbiA9PSBFbmZvcmNlUmFuZ2UpCisgICAgc3dpdGNoIChjb25maWd1cmF0aW9u
KSB7CisgICAgY2FzZSBOb3JtYWxDb252ZXJzaW9uOgorICAgICAgICBicmVhazsKKyAgICBjYXNl
IEVuZm9yY2VSYW5nZToKICAgICAgICAgcmV0dXJuIGVuZm9yY2VSYW5nZShleGVjLCB4LCAta0pT
TWF4SW50ZWdlciwga0pTTWF4SW50ZWdlcik7CisgICAgY2FzZSBDbGFtcDoKKyAgICAgICAgcmV0
dXJuIHN0ZDo6aXNuYW4oeCkgPyAwIDogc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjptaW48ZG91
YmxlPihzdGQ6Om1heDxkb3VibGU+KHgsIC1rSlNNYXhJbnRlZ2VyKSwga0pTTWF4SW50ZWdlcikp
OworICAgIH0KIAogICAgIC8vIE1hcCBOYU5zIGFuZCArLy1JbmZpbml0eSB0byAwOyBjb252ZXJ0
IGZpbml0ZSB2YWx1ZXMgbW9kdWxvIDJeNjQuCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIG47CkBA
IC01NDYsMTEgKzU5NSwxNyBAQCB1aW50NjRfdCB0b1VJbnQ2NChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbgogICAgICAgICByZXR1
cm4gdmFsdWUuYXNVSW50MzIoKTsKIAogICAgIGRvdWJsZSB4ID0gdmFsdWUudG9OdW1iZXIoZXhl
Yyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgIGlmIChVTkxJS0VMWShleGVj
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKGNvbmZpZ3Vy
YXRpb24gPT0gRW5mb3JjZVJhbmdlKQorICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgeworICAg
IGNhc2UgTm9ybWFsQ29udmVyc2lvbjoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFbmZvcmNl
UmFuZ2U6CiAgICAgICAgIHJldHVybiBlbmZvcmNlUmFuZ2UoZXhlYywgeCwgMCwga0pTTWF4SW50
ZWdlcik7CisgICAgY2FzZSBDbGFtcDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6aXNuYW4oeCkgPyAw
IDogc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bWluPGRvdWJsZT4oc3RkOjptYXg8ZG91Ymxl
Pih4LCAwKSwga0pTTWF4SW50ZWdlcikpOworICAgIH0KIAogICAgIC8vIE1hcCBOYU5zIGFuZCAr
Ly1JbmZpbml0eSB0byAwOyBjb252ZXJ0IGZpbml0ZSB2YWx1ZXMgbW9kdWxvIDJeNjQuCiAgICAg
dW5zaWduZWQgbG9uZyBsb25nIG47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCmluZGV4IDc1ODc0MWYwYWFkMTBhNTBhMjM5YjNlY2Y4YzUyZDUyMjM3YWYyNzcuLjZj
Y2QzYTUxN2RmYWQzN2RjYWM1OGMxYmFhYWI3ZDhhZTQ2MTk0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0zMzcsMTIgKzMzNywxNSBAQCBpbmxpbmUg
aW50MzJfdCBmaW5pdGVJbnQzMlZhbHVlKEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIGJvb2wmCiBlbnVtIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiB7CiAg
ICAgTm9ybWFsQ29udmVyc2lvbiwKICAgICBFbmZvcmNlUmFuZ2UsCi0gICAgLy8gRklYTUU6IElt
cGxlbWVudCBDbGFtcAorICAgIENsYW1wCiB9OwogCiBXRUJDT1JFX0VYUE9SVCBpbnQzMl90IHRv
SW50MzJFbmZvcmNlUmFuZ2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOwogV0VCQ09S
RV9FWFBPUlQgdWludDMyX3QgdG9VSW50MzJFbmZvcmNlUmFuZ2UoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUpOwogCitXRUJDT1JFX0VYUE9SVCBpbnQzMl90IHRvSW50MzJDbGFtcChKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7CitXRUJDT1JFX0VYUE9SVCB1aW50MzJfdCB0b1VJ
bnQzMkNsYW1wKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKKwogV0VCQ09SRV9FWFBP
UlQgaW50OF90IHRvSW50OChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSW50ZWdlckNv
bnZlcnNpb25Db25maWd1cmF0aW9uKTsKIFdFQkNPUkVfRVhQT1JUIHVpbnQ4X3QgdG9VSW50OChK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0
aW9uKTsKIApAQCAtMzU3LDE1ICszNjAsMjcgQEAgV0VCQ09SRV9FWFBPUlQgdWludDE2X3QgdG9V
SW50MTYoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEludGVnZXJDb252ZXJzaW8KICov
CiBpbmxpbmUgaW50MzJfdCB0b0ludDMyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFs
dWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQog
ewotICAgIGlmIChjb25maWd1cmF0aW9uID09IEVuZm9yY2VSYW5nZSkKKyAgICBzd2l0Y2ggKGNv
bmZpZ3VyYXRpb24pIHsKKyAgICBjYXNlIE5vcm1hbENvbnZlcnNpb246CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRW5mb3JjZVJhbmdlOgogICAgICAgICByZXR1cm4gdG9JbnQzMkVuZm9yY2VS
YW5nZShleGVjLCB2YWx1ZSk7CisgICAgY2FzZSBDbGFtcDoKKyAgICAgICAgcmV0dXJuIHRvSW50
MzJDbGFtcChleGVjLCB2YWx1ZSk7CisgICAgfQogICAgIHJldHVybiB2YWx1ZS50b0ludDMyKGV4
ZWMpOwogfQogCiBpbmxpbmUgdWludDMyX3QgdG9VSW50MzIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb24pCiB7Ci0gICAgaWYgKGNvbmZpZ3VyYXRpb24gPT0gRW5mb3JjZVJhbmdlKQorICAg
IHN3aXRjaCAoY29uZmlndXJhdGlvbikgeworICAgIGNhc2UgTm9ybWFsQ29udmVyc2lvbjoKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBFbmZvcmNlUmFuZ2U6CiAgICAgICAgIHJldHVybiB0b1VJ
bnQzMkVuZm9yY2VSYW5nZShleGVjLCB2YWx1ZSk7CisgICAgY2FzZSBDbGFtcDoKKyAgICAgICAg
cmV0dXJuIHRvVUludDMyQ2xhbXAoZXhlYywgdmFsdWUpOworICAgIH0KICAgICByZXR1cm4gdmFs
dWUudG9VSW50MzIoZXhlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggOGY2ZWQwYzZjNjU4OWRiZWI0OGVhOTU3
ZDQ3ZDlmOWFhNjc3ZTY5ZC4uOGQxZTRmZGQ4ZjljNzMyYjZkNzYzM2FhNmU2NmZiZmIzNjliM2Vk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KQEAgLTM1MzUsMTQgKzM1MzUsNiBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2sKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAkdmFsdWUg
PSAiV1RGTW92ZSgkbmFtZSkiOwotICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVyLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ2xhbXAifSkgewotICAgICAgICAgICAgbXkgJG5hdGl2ZVZhbHVlID0g
IiR7bmFtZX1OYXRpdmVWYWx1ZSI7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgJGFyZ1R5cGUgJG5hbWUgPSAwO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgZG91YmxlICRuYXRpdmVWYWx1ZSA9IHN0YXRlLT5hcmd1bWVudCgkYXJnc0luZGV4
KS50b051bWJlcihzdGF0ZSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwotICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpO1xuXG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBpZiAoIXN0ZDo6aXNuYW4oJG5hdGl2ZVZhbHVlKSlcbiIpOwotICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICAgICAkbmFtZSA9IGNsYW1wVG88JGFyZ1R5cGU+KCRuYXRpdmVW
YWx1ZSk7XG5cbiIpOwogICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVyLT5pc1ZhcmlhZGljKSB7
CiAgICAgICAgICAgICBteSAkbmF0aXZlRWxlbWVudFR5cGU7CiAgICAgICAgICAgICBpZiAoJGFy
Z1R5cGUgZXEgIkRPTVN0cmluZyIpIHsKQEAgLTQyNjcsNyArNDI1OSw5IEBAIHN1YiBKU1ZhbHVl
VG9OYXRpdmUKICAgICByZXR1cm4gIiR2YWx1ZS50b051bWJlcihzdGF0ZSkiIGlmICR0eXBlIGVx
ICJkb3VibGUiIG9yICR0eXBlIGVxICJ1bnJlc3RyaWN0ZWQgZG91YmxlIiA7CiAgICAgcmV0dXJu
ICIkdmFsdWUudG9GbG9hdChzdGF0ZSkiIGlmICR0eXBlIGVxICJmbG9hdCIgb3IgJHR5cGUgZXEg
InVucmVzdHJpY3RlZCBmbG9hdCIgOwogCi0gICAgbXkgJGludENvbnZlcnNpb24gPSAkc2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5mb3JjZVJhbmdlIn0gPyAiRW5mb3JjZVJhbmdl
IiA6ICJOb3JtYWxDb252ZXJzaW9uIjsKKyAgICBteSAkaW50Q29udmVyc2lvbiA9ICJOb3JtYWxD
b252ZXJzaW9uIjsKKyAgICAkaW50Q29udmVyc2lvbiA9ICJFbmZvcmNlUmFuZ2UiIGlmICRzaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFbmZvcmNlUmFuZ2UifTsKKyAgICAkaW50Q29u
dmVyc2lvbiA9ICJDbGFtcCIgaWYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNs
YW1wIn07CiAgICAgcmV0dXJuICJ0b0ludDgoc3RhdGUsICR2YWx1ZSwgJGludENvbnZlcnNpb24p
IiBpZiAkdHlwZSBlcSAiYnl0ZSI7CiAgICAgcmV0dXJuICJ0b1VJbnQ4KHN0YXRlLCAkdmFsdWUs
ICRpbnRDb252ZXJzaW9uKSIgaWYgJHR5cGUgZXEgIm9jdGV0IjsKICAgICByZXR1cm4gInRvSW50
MTYoc3RhdGUsICR2YWx1ZSwgJGludENvbnZlcnNpb24pIiBpZiAkdHlwZSBlcSAic2hvcnQiOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAppbmRleCA0ZWI3MjM1NzE0OGFiMmM3NjY1
ZGYyMTMzNmI2NmMyZWZiOTMxMDQ1Li5lNjYxMzRkYjBjZDljYmY1NmJjYTcwNWNlNTAwMzczOTU4
NDIyNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApAQCAtODQsNiArODQs
OCBAQCBlbnVtIHsKICAgICBQUk9QX0JZVEVfQVRUUiwKICAgICBQUk9QX09DVEVUX0FUVFIsCiAg
ICAgUFJPUF9TSE9SVF9BVFRSLAorICAgIFBST1BfQ0xBTVBFRF9TSE9SVF9BVFRSLAorICAgIFBS
T1BfRU5GT1JDRV9SQU5HRV9TSE9SVF9BVFRSLAogICAgIFBST1BfVU5TSUdORURfU0hPUlRfQVRU
UiwKICAgICBQUk9QX0xPTkdfQVRUUiwKICAgICBQUk9QX0xPTkdfTE9OR19BVFRSLApAQCAtMTcw
LDYgKzE3MiwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsCiAgICAgY2FzZSBQUk9QX1NIT1JU
X0FUVFI6CiAgICAgICAgIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3Nob3J0X2F0dHIoc2VsZiwg
Z192YWx1ZV9nZXRfaW50KHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9D
TEFNUEVEX1NIT1JUX0FUVFI6CisgICAgICAgIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2NsYW1w
ZWRfc2hvcnRfYXR0cihzZWxmLCBnX3ZhbHVlX2dldF9pbnQodmFsdWUpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX0VORk9SQ0VfUkFOR0VfU0hPUlRfQVRUUjoKKyAgICAgICAgd2Vi
a2l0X2RvbV90ZXN0X29ial9zZXRfZW5mb3JjZV9yYW5nZV9zaG9ydF9hdHRyKHNlbGYsIGdfdmFs
dWVfZ2V0X2ludCh2YWx1ZSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfVU5TSUdO
RURfU0hPUlRfQVRUUjoKICAgICAgICAgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfdW5zaWduZWRf
c2hvcnRfYXR0cihzZWxmLCBnX3ZhbHVlX2dldF91aW50KHZhbHVlKSk7CiAgICAgICAgIGJyZWFr
OwpAQCAtMjk1LDYgKzMwMywxMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dl
dF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsCiAgICAgY2FzZSBQ
Uk9QX1NIT1JUX0FUVFI6CiAgICAgICAgIGdfdmFsdWVfc2V0X2ludCh2YWx1ZSwgd2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfc2hvcnRfYXR0cihzZWxmKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9DTEFNUEVEX1NIT1JUX0FUVFI6CisgICAgICAgIGdfdmFsdWVfc2V0X2ludCh2YWx1
ZSwgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfY2xhbXBlZF9zaG9ydF9hdHRyKHNlbGYpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VORk9SQ0VfUkFOR0VfU0hPUlRfQVRUUjoKKyAg
ICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVlLCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9lbmZv
cmNlX3JhbmdlX3Nob3J0X2F0dHIoc2VsZikpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBS
T1BfVU5TSUdORURfU0hPUlRfQVRUUjoKICAgICAgICAgZ192YWx1ZV9zZXRfdWludCh2YWx1ZSwg
d2Via2l0X2RvbV90ZXN0X29ial9nZXRfdW5zaWduZWRfc2hvcnRfYXR0cihzZWxmKSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtNTYzLDYgKzU3NywyNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVzdE9iakNsYXNzKiByZXF1ZXN0Q2xhc3MpCiAK
ICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAogICAgICAgICBnb2JqZWN0Q2xh
c3MsCisgICAgICAgIFBST1BfQ0xBTVBFRF9TSE9SVF9BVFRSLAorICAgICAgICBnX3BhcmFtX3Nw
ZWNfaW50KAorICAgICAgICAgICAgImNsYW1wZWQtc2hvcnQtYXR0ciIsCisgICAgICAgICAgICAi
VGVzdE9iajpjbGFtcGVkLXNob3J0LWF0dHIiLAorICAgICAgICAgICAgInJlYWQtd3JpdGUgZ3No
b3J0IFRlc3RPYmo6Y2xhbXBlZC1zaG9ydC1hdHRyIiwKKyAgICAgICAgICAgIEdfTUlOSU5ULCBH
X01BWElOVCwgMCwKKyAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKworICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdvYmplY3RDbGFzcywK
KyAgICAgICAgUFJPUF9FTkZPUkNFX1JBTkdFX1NIT1JUX0FUVFIsCisgICAgICAgIGdfcGFyYW1f
c3BlY19pbnQoCisgICAgICAgICAgICAiZW5mb3JjZS1yYW5nZS1zaG9ydC1hdHRyIiwKKyAgICAg
ICAgICAgICJUZXN0T2JqOmVuZm9yY2UtcmFuZ2Utc2hvcnQtYXR0ciIsCisgICAgICAgICAgICAi
cmVhZC13cml0ZSBnc2hvcnQgVGVzdE9iajplbmZvcmNlLXJhbmdlLXNob3J0LWF0dHIiLAorICAg
ICAgICAgICAgR19NSU5JTlQsIEdfTUFYSU5ULCAwLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURXUklURSkpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAg
ICAgICAgZ29iamVjdENsYXNzLAogICAgICAgICBQUk9QX1VOU0lHTkVEX1NIT1JUX0FUVFIsCiAg
ICAgICAgIGdfcGFyYW1fc3BlY191aW50KAogICAgICAgICAgICAgInVuc2lnbmVkLXNob3J0LWF0
dHIiLApAQCAtMTc2Myw2ICsxNzk3LDE0IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9jb25k
aXRpb25hbF9tZXRob2QzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiAjZW5kaWYgLyogRU5BQkxF
KENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKSAqLwogfQogCit2b2lkIHdlYmtpdF9k
b21fdGVzdF9vYmpfY2xhc3NfbWV0aG9kX3dpdGhfZW5mb3JjZV9yYW5nZShXZWJLaXRET01UZXN0
T2JqKiBzZWxmLCBndXNob3J0IG9iakFyZ3NTaG9ydCwgZ3Vsb25nIG9iakFyZ3NMb25nKQorewor
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOworICAgIFdlYkNvcmU6OlRlc3RP
YmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+Y2xhc3NNZXRob2RXaXRo
RW5mb3JjZVJhbmdlKG9iakFyZ3NTaG9ydCwgb2JqQXJnc0xvbmcpOworfQorCiB2b2lkIHdlYmtp
dF9kb21fdGVzdF9vYmpfY29udmVydDEoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9N
VGVzdE5vZGUqIHZhbHVlKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKQEAgLTE5ODMsNiArMjAyNSw0MCBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0
X3Nob3J0X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ3Nob3J0IHZhbHVlKQogICAgIGl0
ZW0tPnNldFNob3J0QXR0cih2YWx1ZSk7CiB9CiAKK2dzaG9ydCB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X2dldF9jbGFtcGVkX3Nob3J0X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKK3sKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7CisgICAgV2ViQ29yZTo6VGVz
dE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnc2hvcnQgcmVzdWx0ID0gaXRl
bS0+Y2xhbXBlZFNob3J0QXR0cigpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgd2Vi
a2l0X2RvbV90ZXN0X29ial9zZXRfY2xhbXBlZF9zaG9ydF9hdHRyKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYsIGdzaG9ydCB2YWx1ZSkKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNl
bGYpKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwor
ICAgIGl0ZW0tPnNldENsYW1wZWRTaG9ydEF0dHIodmFsdWUpOworfQorCitnc2hvcnQgd2Via2l0
X2RvbV90ZXN0X29ial9nZXRfZW5mb3JjZV9yYW5nZV9zaG9ydF9hdHRyKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDAp
OworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAg
Z3Nob3J0IHJlc3VsdCA9IGl0ZW0tPmVuZm9yY2VSYW5nZVNob3J0QXR0cigpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3ZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfZW5mb3JjZV9yYW5n
ZV9zaG9ydF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdzaG9ydCB2YWx1ZSkKK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKKyAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGl0ZW0tPnNldEVuZm9yY2VSYW5nZVNo
b3J0QXR0cih2YWx1ZSk7Cit9CisKIGd1c2hvcnQgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfdW5z
aWduZWRfc2hvcnRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmou
aAppbmRleCBhNzkyOGU0OTgxMmRiZGQ5MjUyYTlmZmE3MTVhMzJkOGNiZjVjNjBiLi42ZDhjZTJm
Y2IwNmJjMTgzZDk5NDFiNDlkMjJlNDc3M2Q4Zjc2NTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdE9iai5oCkBAIC03MTgsNiArNzE4LDE3IEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2Rv
bV90ZXN0X29ial9jb25kaXRpb25hbF9tZXRob2QzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOwog
CiAvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfY2xhc3NfbWV0aG9kX3dpdGhfZW5mb3JjZV9y
YW5nZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAb2JqQXJnc1Nob3J0OiBB
ICNndXNob3J0CisgKiBAb2JqQXJnc0xvbmc6IEEgI2d1bG9uZworICoKKyAqIFN0YWJpbGl0eTog
VW5zdGFibGUKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NsYXNz
X21ldGhvZF93aXRoX2VuZm9yY2VfcmFuZ2UoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ3VzaG9y
dCBvYmpBcmdzU2hvcnQsIGd1bG9uZyBvYmpBcmdzTG9uZyk7CisKKy8qKgogICogd2Via2l0X2Rv
bV90ZXN0X29ial9jb252ZXJ0MToKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCiAgKiBA
dmFsdWU6IEEgI1dlYktpdERPTVRlc3ROb2RlCkBAIC05NTgsNiArOTY5LDQ4IEBAIFdFQktJVF9B
UEkgdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfc2hvcnRfYXR0cihXZWJLaXRET01UZXN0
T2JqKiBzZWxmLCBnc2hvcnQgdmFsdWUpOwogCiAvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpf
Z2V0X2NsYW1wZWRfc2hvcnRfYXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisg
KgorICogUmV0dXJuczogQSAjZ3Nob3J0CisgKgorICogU3RhYmlsaXR5OiBVbnN0YWJsZQorKiov
CitXRUJLSVRfQVBJIGdzaG9ydAord2Via2l0X2RvbV90ZXN0X29ial9nZXRfY2xhbXBlZF9zaG9y
dF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVz
dF9vYmpfc2V0X2NsYW1wZWRfc2hvcnRfYXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0
T2JqCisgKiBAdmFsdWU6IEEgI2dzaG9ydAorICoKKyAqIFN0YWJpbGl0eTogVW5zdGFibGUKKyoq
LworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9jbGFtcGVkX3Nob3J0
X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ3Nob3J0IHZhbHVlKTsKKworLyoqCisgKiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9lbmZvcmNlX3JhbmdlX3Nob3J0X2F0dHI6CisgKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6IEEgI2dzaG9ydAorICoKKyAq
IFN0YWJpbGl0eTogVW5zdGFibGUKKyoqLworV0VCS0lUX0FQSSBnc2hvcnQKK3dlYmtpdF9kb21f
dGVzdF9vYmpfZ2V0X2VuZm9yY2VfcmFuZ2Vfc2hvcnRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBz
ZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9lbmZvcmNlX3JhbmdlX3No
b3J0X2F0dHI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNn
c2hvcnQKKyAqCisgKiBTdGFiaWxpdHk6IFVuc3RhYmxlCisqKi8KK1dFQktJVF9BUEkgdm9pZAor
d2Via2l0X2RvbV90ZXN0X29ial9zZXRfZW5mb3JjZV9yYW5nZV9zaG9ydF9hdHRyKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYsIGdzaG9ydCB2YWx1ZSk7CisKKy8qKgogICogd2Via2l0X2RvbV90ZXN0
X29ial9nZXRfdW5zaWduZWRfc2hvcnRfYXR0cjoKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0
T2JqCiAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAppbmRleCA1YmZjZmFjYzY4NWNmMTQ5OTlmNzllM2Q1ODg5MjcwOGI4
YTgwYjQ1Li45NTgxMTRkMDVjNDY2YWRhZGE1ZWZjMTFlMjk2ZmRlNDIxMWQzMmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcApAQCAtMTgyLDYgKzE4Miw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QyKEpTQzo6CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2QxKEpTQzo6RXhlY1N0YXRlKik7CiAjZW5kaWYKIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9k
V2l0aENsYW1wKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFu
Z2UoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShK
U0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSop
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CkBAIC0yMzUsNiAr
MjM2LDEwIEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT2N0ZXRBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDCiBib29sIHNldEpTVGVzdE9iak9jdGV0
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNl
dEpTVGVzdE9ialNob3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDbGFt
cGVkU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDbGFtcGVkU2hvcnRBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVuZm9yY2VSYW5nZVNob3J0QXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0
SlNUZXN0T2JqRW5mb3JjZVJhbmdlU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nQXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTU1Niw2
ICs1NjEsOCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBl
VGFibGVWYWx1ZXNbXSA9CiAgICAgeyAiYnl0ZUF0dHIiLCBDdXN0b21BY2Nlc3NvciwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpCeXRlQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iakJ5dGVBdHRyKSB9IH0sCiAgICAgeyAib2N0
ZXRBdHRyIiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqT2N0ZXRBdHRyKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0T2JqT2N0ZXRBdHRyKSB9IH0sCiAgICAgeyAic2hvcnRBdHRyIiwgQ3VzdG9tQWNjZXNzb3Is
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0T2JqU2hvcnRBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqU2hvcnRBdHRyKSB9IH0sCisg
ICAgeyAiY2xhbXBlZFNob3J0QXR0ciIsIEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9i
akNsYW1wZWRTaG9ydEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpDbGFtcGVkU2hvcnRBdHRyKSB9IH0sCisgICAg
eyAiZW5mb3JjZVJhbmdlU2hvcnRBdHRyIiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqRW5mb3JjZVJhbmdlU2hvcnRBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqRW5mb3JjZVJhbmdlU2hvcnRBdHRy
KSB9IH0sCiAgICAgeyAidW5zaWduZWRTaG9ydEF0dHIiLCBDdXN0b21BY2Nlc3NvciwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRy
KSB9IH0sCiAgICAgeyAibG9uZ0F0dHIiLCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RP
YmpMb25nQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdE9iakxvbmdBdHRyKSB9IH0sCiAgICAgeyAibG9uZ0xvbmdBdHRy
IiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTG9uZ0xvbmdBdHRyKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
T2JqTG9uZ0xvbmdBdHRyKSB9IH0sCkBAIC03NDcsNiArNzU0LDcgQEAgc3RhdGljIGNvbnN0IEhh
c2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogICAgIHsgIm92
ZXJsb2FkZWRNZXRob2QiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZCksIChpbnRwdHJfdCkgKDIpIH0gfSwKICAgICB7ICJvdmVybG9hZGVkTWV0
aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIpLCAoaW50cHRyX3Qp
ICgxKSB9IH0sCiAgICAgeyAiY2xhc3NNZXRob2RXaXRoQ2xhbXAiLCBKU0M6OkZ1bmN0aW9uLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXApLCAoaW50cHRyX3QpICgy
KSB9IH0sCisgICAgeyAiY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlIiwgSlNDOjpGdW5jdGlv
biwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZSksIChp
bnRwdHJfdCkgKDIpIH0gfSwKICAgICB7ICJtZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2Ui
LCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVk
TG9uZ1NlcXVlbmNlKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInN0cmluZ0FycmF5RnVu
Y3Rpb24iLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlG
dW5jdGlvbiksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJkb21TdHJpbmdMaXN0RnVuY3Rp
b24iLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1
bmN0aW9uKSwgKGludHB0cl90KSAoMSkgfSB9LApAQCAtMTAyNCw2ICsxMDMyLDM2IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByCiB9CiAKIAorRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2xhbXBl
ZFNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOworICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiY2xhbXBlZFNob3J0QXR0ciIpOworICAgIH0KKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jbGFt
cGVkU2hvcnRBdHRyKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30K
KworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbmZvcmNlUmFuZ2VTaG9ydEF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKKyAg
ICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsK
KyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVk
VGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImVuZm9yY2VSYW5n
ZVNob3J0QXR0ciIpOworICAgIH0KKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5lbmZvcmNlUmFuZ2VTaG9y
dEF0dHIoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCisKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CkBAIC0yMjUwLDYgKzIyODgsNDAgQEAgYm9vbCBzZXRKU1Rlc3RPYmpTaG9y
dEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlMKIH0KIAogCitib29sIHNldEpTVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OworICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY2xhbXBlZFNob3J0QXR0ciIpOwor
ICAgIH0KKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGludDE2
X3QgbmF0aXZlVmFsdWUgPSB0b0ludDE2KHN0YXRlLCB2YWx1ZSwgQ2xhbXApOworICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaW1wbC5zZXRDbGFtcGVkU2hvcnRBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworCitib29sIHNldEpTVGVzdE9iakVuZm9yY2VSYW5nZVNob3J0QXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK3sKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CisgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgeworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJlbmZvcmNlUmFuZ2VTaG9y
dEF0dHIiKTsKKyAgICB9CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
KyAgICBpbnQxNl90IG5hdGl2ZVZhbHVlID0gdG9JbnQxNihzdGF0ZSwgdmFsdWUsIEVuZm9yY2VS
YW5nZSk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpbXBsLnNldEVuZm9yY2VSYW5nZVNob3J0QXR0cihuYXRpdmVW
YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKwogYm9vbCBzZXRKU1Rlc3RPYmpVbnNpZ25l
ZFNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CkBAIC00OTE2LDI2ICs0OTg4LDM2IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhv
ZFdpdGhDbGFtcChFeGVjCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwotICAgIHVuc2lnbmVkIHNob3J0IG9iakFyZ3NTaG9ydCA9IDA7Ci0gICAgZG91Ymxl
IG9iakFyZ3NTaG9ydE5hdGl2ZVZhbHVlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKHN0
YXRlKTsKKyAgICB1aW50MTZfdCBvYmpBcmdzU2hvcnQgPSB0b1VJbnQxNihzdGF0ZSwgc3RhdGUt
PmFyZ3VtZW50KDApLCBDbGFtcCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0K
LSAgICBpZiAoIXN0ZDo6aXNuYW4ob2JqQXJnc1Nob3J0TmF0aXZlVmFsdWUpKQotICAgICAgICBv
YmpBcmdzU2hvcnQgPSBjbGFtcFRvPHVuc2lnbmVkIHNob3J0PihvYmpBcmdzU2hvcnROYXRpdmVW
YWx1ZSk7Ci0KLSAgICB1bnNpZ25lZCBsb25nIG9iakFyZ3NMb25nID0gMDsKLSAgICBkb3VibGUg
b2JqQXJnc0xvbmdOYXRpdmVWYWx1ZSA9IHN0YXRlLT5hcmd1bWVudCgxKS50b051bWJlcihzdGF0
ZSk7CisgICAgdW5zaWduZWQgb2JqQXJnc0xvbmcgPSB0b1VJbnQzMihzdGF0ZSwgc3RhdGUtPmFy
Z3VtZW50KDEpLCBDbGFtcCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAg
ICBpZiAoIXN0ZDo6aXNuYW4ob2JqQXJnc0xvbmdOYXRpdmVWYWx1ZSkpCi0gICAgICAgIG9iakFy
Z3NMb25nID0gY2xhbXBUbzx1bnNpZ25lZCBsb25nPihvYmpBcmdzTG9uZ05hdGl2ZVZhbHVlKTsK
LQogICAgIGltcGwuY2xhc3NNZXRob2RXaXRoQ2xhbXAob2JqQXJnc1Nob3J0LCBvYmpBcmdzTG9u
Zyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNz
TWV0aG9kV2l0aEVuZm9yY2VSYW5nZShFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAiY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlIik7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDIpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIHVpbnQxNl90IG9iakFy
Z3NTaG9ydCA9IHRvVUludDE2KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIEVuZm9yY2VSYW5n
ZSk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgdW5zaWduZWQgb2JqQXJn
c0xvbmcgPSB0b1VJbnQzMihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDEpLCBFbmZvcmNlUmFuZ2Up
OworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGltcGwuY2xhc3NNZXRob2RX
aXRoRW5mb3JjZVJhbmdlKG9iakFyZ3NTaG9ydCwgb2JqQXJnc0xvbmcpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25n
U2VxdWVuY2UoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IDc2ZWQ5NWI3MGM2NjU3
MGEzMDllYjU4MTBmMjYwZWNhMjI2MzU2MmYuLmM0MWU0ODk4YjM3NDdhMjc5ZmU1M2VjM2YwYmYx
ZGE2MmQxZmU5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtNTUwLDI5ICs1NTAsMTkgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uRnVuY1dpdGhDbGFtcChFeGVjU3QKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIGFyZzEgPSAwOwotICAgIGRv
dWJsZSBhcmcxTmF0aXZlVmFsdWUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoc3RhdGUp
OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBhcmcxID0gdG9VSW50NjQoc3RhdGUsIHN0YXRlLT5h
cmd1bWVudCgwKSwgQ2xhbXApOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0g
ICAgaWYgKCFzdGQ6OmlzbmFuKGFyZzFOYXRpdmVWYWx1ZSkpCi0gICAgICAgIGFyZzEgPSBjbGFt
cFRvPHVuc2lnbmVkIGxvbmcgbG9uZz4oYXJnMU5hdGl2ZVZhbHVlKTsKLQotCiAgICAgc2l6ZV90
IGFyZ3NDb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKGFyZ3NDb3VudCA8
PSAxKSB7CiAgICAgICAgIGltcGwuZnVuY1dpdGhDbGFtcChhcmcxKTsKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBs
b25nIGxvbmcgYXJnMiA9IDA7Ci0gICAgZG91YmxlIGFyZzJOYXRpdmVWYWx1ZSA9IHN0YXRlLT5h
cmd1bWVudCgxKS50b051bWJlcihzdGF0ZSk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGFyZzIg
PSB0b1VJbnQ2NChzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDEpLCBDbGFtcCk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBpZiAoIXN0ZDo6aXNuYW4oYXJnMk5hdGl2ZVZh
bHVlKSkKLSAgICAgICAgYXJnMiA9IGNsYW1wVG88dW5zaWduZWQgbG9uZyBsb25nPihhcmcyTmF0
aXZlVmFsdWUpOwotCiAgICAgaW1wbC5mdW5jV2l0aENsYW1wKGFyZzEsIGFyZzIpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKaW5kZXgg
N2FhY2IxMDljNWQxOGNmOTgyMTZkZTlhZjdkMDQ3NTc3NGQxNzFmMy4uOTIwNTIzMDNkM2U0M2M5
ODhiYTgzN2ZmYWUwMTkyYTQwYTA1YWNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaApAQCAtNjcsNiArNjcsOCBA
QCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIERPTVRlc3RPYmogOiBET01PYmplY3QKIEBwcm9w
ZXJ0eSBjaGFyIGJ5dGVBdHRyOwogQHByb3BlcnR5IHVuc2lnbmVkIGNoYXIgb2N0ZXRBdHRyOwog
QHByb3BlcnR5IHNob3J0IHNob3J0QXR0cjsKK0Bwcm9wZXJ0eSBzaG9ydCBjbGFtcGVkU2hvcnRB
dHRyOworQHByb3BlcnR5IHNob3J0IGVuZm9yY2VSYW5nZVNob3J0QXR0cjsKIEBwcm9wZXJ0eSB1
bnNpZ25lZCBzaG9ydCB1bnNpZ25lZFNob3J0QXR0cjsKIEBwcm9wZXJ0eSBpbnQgbG9uZ0F0dHI7
CiBAcHJvcGVydHkgbG9uZyBsb25nIGxvbmdMb25nQXR0cjsKQEAgLTE5Myw2ICsxOTUsNyBAQCBX
RUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIERPTVRlc3RPYmogOiBET01PYmplY3QKIC0gKHZvaWQp
Y2xhc3NNZXRob2Q7CiAtIChpbnQpY2xhc3NNZXRob2RXaXRoT3B0aW9uYWw6KGludClhcmc7CiAt
ICh2b2lkKWNsYXNzTWV0aG9kMjooaW50KWFyZzsKKy0gKHZvaWQpY2xhc3NNZXRob2RXaXRoRW5m
b3JjZVJhbmdlOih1bnNpZ25lZCBzaG9ydClvYmpBcmdzU2hvcnQgb2JqQXJnc0xvbmc6KHVuc2ln
bmVkKW9iakFyZ3NMb25nOwogLSAoRE9NU1ZHRG9jdW1lbnQgKilnZXRTVkdEb2N1bWVudDsKIC0g
KHZvaWQpY29udmVydDE6KERPTVRlc3ROb2RlICopdmFsdWU7CiAtICh2b2lkKWNvbnZlcnQyOihE
T01UZXN0Tm9kZSAqKXZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KaW5kZXggYWMxMmQwNDZlMzU3ZTI2NDEw
NGJjYjk3YmE0N2Q0MmU4ZTdiNzQyZC4uYmE1OWMxN2U2NGMxYTc0NmJhMjJiN2NhMDRmODRjYjA1
MmViZTA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdE9iai5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCkBAIC0xNTEsNiArMTUxLDMwIEBAIC0gKHZvaWQpc2V0
U2hvcnRBdHRyOihzaG9ydCluZXdTaG9ydEF0dHIKICAgICBJTVBMLT5zZXRTaG9ydEF0dHIobmV3
U2hvcnRBdHRyKTsKIH0KIAorLSAoc2hvcnQpY2xhbXBlZFNob3J0QXR0cgoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Y2xhbXBl
ZFNob3J0QXR0cigpOworfQorCistICh2b2lkKXNldENsYW1wZWRTaG9ydEF0dHI6KHNob3J0KW5l
d0NsYW1wZWRTaG9ydEF0dHIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CisgICAgSU1QTC0+c2V0Q2xhbXBlZFNob3J0QXR0cihuZXdDbGFtcGVkU2hvcnRBdHRy
KTsKK30KKworLSAoc2hvcnQpZW5mb3JjZVJhbmdlU2hvcnRBdHRyCit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5lbmZvcmNlUmFu
Z2VTaG9ydEF0dHIoKTsKK30KKworLSAodm9pZClzZXRFbmZvcmNlUmFuZ2VTaG9ydEF0dHI6KHNo
b3J0KW5ld0VuZm9yY2VSYW5nZVNob3J0QXR0cgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5zZXRFbmZvcmNlUmFuZ2VTaG9ydEF0dHIobmV3
RW5mb3JjZVJhbmdlU2hvcnRBdHRyKTsKK30KKwogLSAodW5zaWduZWQgc2hvcnQpdW5zaWduZWRT
aG9ydEF0dHIKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBA
IC0xNDIwLDYgKzE0NDQsMTIgQEAgLSAodm9pZClvdmVybG9hZGVkTWV0aG9kMTooTlNTdHJpbmcg
Kil0eXBlCiAKICNlbmRpZgogCistICh2b2lkKWNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZToo
dW5zaWduZWQgc2hvcnQpb2JqQXJnc1Nob3J0IG9iakFyZ3NMb25nOih1bnNpZ25lZClvYmpBcmdz
TG9uZworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJ
TVBMLT5jbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2Uob2JqQXJnc1Nob3J0LCBvYmpBcmdzTG9u
Zyk7Cit9CisKIC0gKERPTVNWR0RvY3VtZW50ICopZ2V0U1ZHRG9jdW1lbnQKIHsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggZTYwNDI3OGU0YmQwMjQwM2I3
ZDBlZjkwYjIyNzE1MDFiY2IxNzlkMS4uMWNjNDQwMTBiNWM4NjUyYTYzNGMzMmU5OTkzN2NiZjEw
N2Q0NmIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbApAQCAtNTEsNiArNTEsOCBAQCBlbnVtIF9vcHRpb25hbCB7ICIiLCAiT3B0aW9u
YWxWYWx1ZTEiLCAiT3B0aW9uYWxWYWx1ZTIiLCAiT3B0aW9uYWxWYWx1ZTMiIH07CiAgICAgYXR0
cmlidXRlIGJ5dGUgICAgICAgICAgICAgICAgICAgICBieXRlQXR0cjsKICAgICBhdHRyaWJ1dGUg
b2N0ZXQgICAgICAgICAgICAgICAgICAgIG9jdGV0QXR0cjsKICAgICBhdHRyaWJ1dGUgc2hvcnQg
ICAgICAgICAgICAgICAgICAgIHNob3J0QXR0cjsKKyAgICBbQ2xhbXBdIGF0dHJpYnV0ZSBzaG9y
dCAgICAgICAgICAgIGNsYW1wZWRTaG9ydEF0dHI7CisgICAgW0VuZm9yY2VSYW5nZV0gYXR0cmli
dXRlIHNob3J0ICAgICBlbmZvcmNlUmFuZ2VTaG9ydEF0dHI7CiAgICAgYXR0cmlidXRlIHVuc2ln
bmVkIHNob3J0ICAgICAgICAgICB1bnNpZ25lZFNob3J0QXR0cjsKICAgICBhdHRyaWJ1dGUgbG9u
ZyAgICAgICAgICAgICAgICAgICAgIGxvbmdBdHRyOwogICAgIGF0dHJpYnV0ZSBsb25nIGxvbmcg
ICAgICAgICAgICAgICAgbG9uZ0xvbmdBdHRyOwpAQCAtMjY4LDYgKzI3MCw3IEBAIGVudW0gX29w
dGlvbmFsIHsgIiIsICJPcHRpb25hbFZhbHVlMSIsICJPcHRpb25hbFZhbHVlMiIsICJPcHRpb25h
bFZhbHVlMyIgfTsKICAgICBbQ29uZGl0aW9uYWw9Q29uZGl0aW9uMV0gc3RhdGljIHZvaWQgb3Zl
cmxvYWRlZE1ldGhvZDEoW1N0cmljdFR5cGVDaGVja2luZ10gRE9NU3RyaW5nIHR5cGUpOwogCiAg
ICAgdm9pZCBjbGFzc01ldGhvZFdpdGhDbGFtcChbQ2xhbXBdIHVuc2lnbmVkIHNob3J0IG9iakFy
Z3NTaG9ydCwgW0NsYW1wXSB1bnNpZ25lZCBsb25nIG9iakFyZ3NMb25nKTsKKyAgICB2b2lkIGNs
YXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZShbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBzaG9ydCBv
YmpBcmdzU2hvcnQsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgb2JqQXJnc0xvbmcpOwog
CiAjaWYgZGVmaW5lZChURVNUSU5HX0pTKQogICAgIHZvaWQgbWV0aG9kV2l0aFVuc2lnbmVkTG9u
Z1NlcXVlbmNlKHNlcXVlbmNlPHVuc2lnbmVkIGxvbmc+IHVuc2lnbmVkTG9uZ1NlcXVlbmNlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>