<?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>125535</bug_id>
          
          <creation_ts>2013-12-10 12:46:21 -0800</creation_ts>
          <short_desc>Reduce the mass templatizing of the JS parser</short_desc>
          <delta_ts>2013-12-10 13:16:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rego+ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>958466</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-12-10 12:46:21 -0800</bug_when>
    <thetext>Reduce the mass templatizing of the JS parser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958468</commentid>
    <comment_count>1</comment_count>
      <attachid>218895</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-12-10 12:49:18 -0800</bug_when>
    <thetext>Created attachment 218895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958470</commentid>
    <comment_count>2</comment_count>
      <attachid>218895</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-10 12:53:20 -0800</bug_when>
    <thetext>Comment on attachment 218895
Patch

Attachment 218895 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/46278343</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958474</commentid>
    <comment_count>3</comment_count>
      <attachid>218898</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-12-10 13:02:38 -0800</bug_when>
    <thetext>Created attachment 218898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958476</commentid>
    <comment_count>4</comment_count>
      <attachid>218895</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-10 13:04:10 -0800</bug_when>
    <thetext>Comment on attachment 218895
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        sites.  This reduces the code size by around 15%.

Code size of what? All of WebKit in Release? Just the parser?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958479</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-12-10 13:05:19 -0800</bug_when>
    <thetext>just the parser. fixed change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958487</commentid>
    <comment_count>6</comment_count>
      <attachid>218898</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-10 13:14:58 -0800</bug_when>
    <thetext>Comment on attachment 218898
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958490</commentid>
    <comment_count>7</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-12-10 13:16:43 -0800</bug_when>
    <thetext>Committed r160383: &lt;http://trac.webkit.org/changeset/160383&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218895</attachid>
            <date>2013-12-10 12:49:18 -0800</date>
            <delta_ts>2013-12-10 13:04:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125535-20131210124917.patch</filename>
            <type>text/plain</type>
            <size>32601</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MDAwZjkwYWI3ODBlZjMzZDU5M2E3ZDI2MGYwZjBiM2NjZjBhYmY4Li44NzExN2Q4MWNjYzJmZDQw
MzRiYTI4NmQzMTFhN2RjMmE0M2I3MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxMy0xMi0xMCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSB0aGUgbWFzcyB0ZW1wbGF0aXppbmcgb2YgdGhlIEpTIHBhcnNlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NTM1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHZhcmlv
dXMgY2FjaGVzIHdlIGhhdmUgbm93IGhhdmUgcmVtb3ZlZCB0aGUgbmVlZCBmb3IgbWFueSBvZgor
ICAgICAgICB0aGUgdGVtcGxhdGUgdnMuIHJlZ3VsYXIgcGFyYW1ldGVycy4gIFRoaXMgcGF0Y2gg
Y29udmVydHMgdGhvc2UKKyAgICAgICAgdGVtcGxhdGUgcGFyYW1ldGVycyB0byByZWd1bGFyIHBh
cmFtZXRlcnMgYW5kIHVwZGF0ZXMgdGhlIGNhbGwKKyAgICAgICAgc2l0ZXMuICBUaGlzIHJlZHVj
ZXMgdGhlIGNvZGUgc2l6ZSBieSBhcm91bmQgMTUlLgorCisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6OjpwYXJzZUlubmVyKToK
KyAgICAgICAgKEpTQzo6OjpwYXJzZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6Ojpw
YXJzZVZhckRlY2xhcmF0aW9uTGlzdCk6CisgICAgICAgIChKU0M6Ojo6Y3JlYXRlQmluZGluZ1Bh
dHRlcm4pOgorICAgICAgICAoSlNDOjo6OnRyeVBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuRXhw
cmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4pOgor
ICAgICAgICAoSlNDOjo6OnBhcnNlU3dpdGNoQ2xhdXNlcyk6CisgICAgICAgIChKU0M6Ojo6cGFy
c2VTd2l0Y2hEZWZhdWx0Q2xhdXNlKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUJsb2NrU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZvcm1hbFBhcmFtZXRlcnMpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9u
RGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VTdHJpY3RP
YmplY3RMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZU1lbWJlckV4cHJlc3Npb24pOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tl
ci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgor
CiAyMDEzLTEyLTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAg
SW1wb3NlIGFuZCBlbmZvcmNlIHNvbWUgYmFzaWMgcnVsZXMgb2Ygc2FuaXR5IGZvciB3aGVyZSBQ
aGkgZnVuY3Rpb25zIGFyZSBhbGxvd2VkIHRvIG9jY3VyIGFuZCB3aGVyZSB0aGVpciAob3B0aW9u
YWwpIGNvcnJlc3BvbmRpbmcgTW92SGludHMgY2FuIGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGVhYzFlN2QzZDMyZThiYzY3MTdjMTk3YzE5YTFhZmE5
MGQ1NTVjMjMuLmM2YTEyMjlhYmQwMzIyYzliNDIyODQ4YjQ5ZmRlNjQ3MDNmNmFhY2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0yOTMsNyArMjkzLDcg
QEAgcHVibGljOgogICAgICAgICBib2R5LT5zZXRGdW5jdGlvbk5hbWVTdGFydChmdW5jdGlvbk5h
bWVTdGFydCk7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUq
IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFBh
cmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgdW5zaWduZWQgb3Bl
bkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0YXJ0TGlu
ZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4pCisgICAgTkVWRVJf
SU5MSU5FIFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwg
Y29uc3QgSWRlbnRpZmllciogbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJv
ZHlOb2RlKiBib2R5LCB1bnNpZ25lZCBvcGVuQnJhY2VPZmZzZXQsIHVuc2lnbmVkIGNsb3NlQnJh
Y2VPZmZzZXQsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUsIHVuc2lnbmVkIGJv
ZHlTdGFydENvbHVtbikKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKICAgICAgICAgYm9k
eS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNl
dCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKQEAgLTMwMSw3ICszMDEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIFByb3BlcnR5Tm9kZShtX3ZtLCAqbmFtZSwgbmV3
IChtX3ZtKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJ
ZGVudGlmaWVyLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlT2Zm
c2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRMaW5lLCBib2R5U3RhcnRDb2x1bW4pLCBw
YXJhbXMpLCB0eXBlKTsKICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5
Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShWTSosIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBkb3VibGUgbmFtZSwgUGFy
YW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCB1bnNpZ25lZCBvcGVu
QnJhY2VPZmZzZXQsIHVuc2lnbmVkIGNsb3NlQnJhY2VPZmZzZXQsIGludCBib2R5U3RhcnRMaW5l
LCBpbnQgYm9keUVuZExpbmUsIHVuc2lnbmVkIGJvZHlTdGFydENvbHVtbikKKyAgICBORVZFUl9J
TkxJTkUgUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KFZNKiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJv
b2wsIGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUq
IGJvZHksIHVuc2lnbmVkIG9wZW5CcmFjZU9mZnNldCwgdW5zaWduZWQgY2xvc2VCcmFjZU9mZnNl
dCwgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSwgdW5zaWduZWQgYm9keVN0YXJ0
Q29sdW1uKQogICAgIHsKICAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlF
bmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsK
ICAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2RlKG1fdm0sIG5hbWUsIG5ldyAo
bV92bSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRl
bnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZU9mZnNl
dCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSwgcGFy
YW1zKSwgdHlwZSk7CkBAIC0zMTIsMTQgKzMxMiwxNCBAQCBwdWJsaWM6CiAgICAgQXJndW1lbnRM
aXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcgKG1fdm0pIEFyZ3VtZW50TGlz
dE5vZGUobG9jYXRpb24sIGFyZyk7IH0KICAgICBBcmd1bWVudExpc3ROb2RlKiBjcmVhdGVBcmd1
bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEFyZ3VtZW50TGlzdE5v
ZGUqIGFyZ3MsIEV4cHJlc3Npb25Ob2RlKiBhcmcpIHsgcmV0dXJuIG5ldyAobV92bSkgQXJndW1l
bnRMaXN0Tm9kZShsb2NhdGlvbiwgYXJncywgYXJnKTsgfQogCi0gICAgdGVtcGxhdGUgPGJvb2w+
IFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogcHJvcGVydHlO
YW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUpCisgICAg
UHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5h
bWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCkK
ICAgICB7CiAgICAgICAgIGlmIChub2RlLT5pc0Z1bmNFeHByTm9kZSgpKQogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4obm9kZSktPmJvZHkoKS0+c2V0SW5mZXJyZWROYW1l
KCpwcm9wZXJ0eU5hbWUpOwogICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBQcm9wZXJ0eU5vZGUo
bV92bSwgKnByb3BlcnR5TmFtZSwgbm9kZSwgdHlwZSk7CiAgICAgfQotICAgIHRlbXBsYXRlIDxi
b29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KFZNKiwgZG91YmxlIHByb3BlcnR5TmFt
ZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlKSB7IHJldHVy
biBuZXcgKG1fdm0pIFByb3BlcnR5Tm9kZShtX3ZtLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUp
OyB9Ci0gICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoVk0q
LCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUpIHsgcmV0dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2RlKG1f
dm0sIHByb3BlcnR5TmFtZSwgbm9kZSwgdHlwZSk7IH0KKyAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0
ZVByb3BlcnR5KFZNKiwgZG91YmxlIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUs
IFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sKSB7IHJldHVybiBuZXcgKG1fdm0pIFByb3Bl
cnR5Tm9kZShtX3ZtLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUpOyB9CisgICAgUHJvcGVydHlO
b2RlKiBjcmVhdGVQcm9wZXJ0eShWTSosIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eU5hbWUsIEV4
cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCkgeyByZXR1
cm4gbmV3IChtX3ZtKSBQcm9wZXJ0eU5vZGUobV92bSwgcHJvcGVydHlOYW1lLCBub2RlLCB0eXBl
KTsgfQogICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5KSB7IHJldHVybiBu
ZXcgKG1fdm0pIFByb3BlcnR5TGlzdE5vZGUobG9jYXRpb24sIHByb3BlcnR5KTsgfQogICAgIFBy
b3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5LCBQcm9wZXJ0eUxpc3ROb2RlKiB0YWls
KSB7IHJldHVybiBuZXcgKG1fdm0pIFByb3BlcnR5TGlzdE5vZGUobG9jYXRpb24sIHByb3BlcnR5
LCB0YWlsKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXgg
YzJlYzk4OTViNjY2OTBiZDBhMDQxZjFmZTY3ZDY2YmRmNGFlNTQxOC4uNWZlMmQyZjk2ZDI0ODg0
MTA3ZTE2YTk0MjcwM2YyZmUyODM1NzZjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VJbm5lcigpCiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nKCkpCiAgICAgICAgIG1f
c3RhdGVtZW50RGVwdGgtLTsKICAgICBTY29wZVJlZiBzY29wZSA9IGN1cnJlbnRTY29wZSgpOwot
ICAgIFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHM8
Q2hlY2tGb3JTdHJpY3RNb2RlPihjb250ZXh0KTsKKyAgICBTb3VyY2VFbGVtZW50cyogc291cmNl
RWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9k
ZSk7CiAgICAgaWYgKCFzb3VyY2VFbGVtZW50cyB8fCAhY29uc3VtZShFT0ZUT0spKSB7CiAgICAg
ICAgIGlmIChoYXNFcnJvcigpKQogICAgICAgICAgICAgcGFyc2VFcnJvciA9IG1fZXJyb3JNZXNz
YWdlOwpAQCAtMjg5LDcgKzI4OSw3IEBAIGJvb2wgUGFyc2VyPExleGVyVHlwZT46OmFsbG93QXV0
b21hdGljU2VtaWNvbG9uKCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRl
bXBsYXRlIDxTb3VyY2VFbGVtZW50c01vZGUgbW9kZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
b3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTb3VyY2VFbGVtZW50cyhUcmVl
QnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJj
ZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWls
ZGVyJiBjb250ZXh0LCBTb3VyY2VFbGVtZW50c01vZGUgbW9kZSkKIHsKICAgICBjb25zdCB1bnNp
Z25lZCBsZW5ndGhPZlVzZVN0cmljdExpdGVyYWwgPSAxMjsgLy8gInVzZSBzdHJpY3QiLmxlbmd0
aAogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzb3VyY2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRl
U291cmNlRWxlbWVudHMoKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xh
cmF0aQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGFzdElk
ZW50ID0gMDsKLSAgICAgICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcnNlRGVjb25zdHJ1Y3Rpb25Q
YXR0ZXJuPERlY29uc3RydWN0VG9WYXJpYWJsZXM+KGNvbnRleHQpOworICAgICAgICAgICAgYXV0
byBwYXR0ZXJuID0gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4oY29udGV4dCwgRGVjb25zdHJ1
Y3RUb1ZhcmlhYmxlcyk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXR0ZXJuLCAiQ2Fubm90
IHBhcnNlIHRoaXMgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybiIpOwogICAgICAgICAgICAgaGFzSW5p
dGlhbGl6ZXIgPSBtYXRjaChFUVVBTCk7CiAgICAgICAgICAgICBsYXN0UGF0dGVybiA9IHBhdHRl
cm47CkBAIC00NjUsMTIgKzQ2NSwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aQogICAgICAg
ICB9CiAgICAgfSB3aGlsZSAobWF0Y2goQ09NTUEpKTsKICAgICBpZiAobGFzdElkZW50KQotICAg
ICAgICBsYXN0UGF0dGVybiA9IGNyZWF0ZUJpbmRpbmdQYXR0ZXJuPERlY29uc3RydWN0VG9WYXJp
YWJsZXM+KGNvbnRleHQsICpsYXN0SWRlbnQsIDApOworICAgICAgICBsYXN0UGF0dGVybiA9IGNy
ZWF0ZUJpbmRpbmdQYXR0ZXJuKGNvbnRleHQsIERlY29uc3RydWN0VG9WYXJpYWJsZXMsICpsYXN0
SWRlbnQsIDApOwogICAgIHJldHVybiB2YXJEZWNsczsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KLXRlbXBsYXRlIDxEZWNvbnN0cnVjdGlvbktpbmQga2luZCwgY2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OmNy
ZWF0ZUJpbmRpbmdQYXR0ZXJuKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBpbnQgZGVwdGgpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNv
bnN0cnVjdGlvblBhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUJpbmRpbmdQYXR0ZXJu
KFRyZWVCdWlsZGVyJiBjb250ZXh0LCBEZWNvbnN0cnVjdGlvbktpbmQga2luZCwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgaW50IGRlcHRoKQogewogICAgIEFTU0VSVCghbmFtZS5pc0VtcHR5KCkp
OwogICAgIEFTU0VSVCghbmFtZS5pc051bGwoKSk7CkBAIC01MjQsMTEgKzUyNCwxMSBAQCB0ZW1w
bGF0ZSA8RGVjb25zdHJ1Y3Rpb25LaW5kIGtpbmQsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVj
b25zdHJ1Y3Rpb25QYXR0ZXJuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIFBhcnNlcjxM
ZXhlclR5cGU+Ojp0cnlQYXJzZURlY29uc3RydWN0aW9uUGF0dGVybkV4cHJlc3Npb24oVHJlZUJ1
aWxkZXImIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIHBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJu
PERlY29uc3RydWN0VG9FeHByZXNzaW9ucz4oY29udGV4dCk7CisgICAgcmV0dXJuIHBhcnNlRGVj
b25zdHJ1Y3Rpb25QYXR0ZXJuKGNvbnRleHQsIERlY29uc3RydWN0VG9FeHByZXNzaW9ucyk7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8RGVjb25zdHJ1Y3Rp
b25LaW5kIGtpbmQsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJu
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihUcmVlQnVpbGRl
ciYgY29udGV4dCwgaW50IGRlcHRoKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlY29uc3RydWN0
aW9uUGF0dGVybihUcmVlQnVpbGRlciYgY29udGV4dCwgRGVjb25zdHJ1Y3Rpb25LaW5kIGtpbmQs
IGludCBkZXB0aCkKIHsKICAgICBmYWlsSWZTdGFja092ZXJmbG93KCk7CiAgICAgaW50IG5vbkxI
U0NvdW50ID0gbV9ub25MSFNDb3VudDsKQEAgLTU0Nyw3ICs1NDcsNyBAQCB0ZW1wbGF0ZSA8RGVj
b25zdHJ1Y3Rpb25LaW5kIGtpbmQsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdHJ1Y3Rp
b25QYXR0ZXJuCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwog
ICAgICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uID0gbV90b2tlbi5tX2xvY2F0aW9u
OwotICAgICAgICAgICAgYXV0byBpbm5lclBhdHRlcm4gPSBwYXJzZURlY29uc3RydWN0aW9uUGF0
dGVybjxraW5kPihjb250ZXh0LCBkZXB0aCArIDEpOworICAgICAgICAgICAgYXV0byBpbm5lclBh
dHRlcm4gPSBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBraW5kLCBkZXB0aCAr
IDEpOwogICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zICYm
ICFpbm5lclBhdHRlcm4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBm
YWlsSWZGYWxzZShpbm5lclBhdHRlcm4sICJDYW5ub3QgcGFyc2UgdGhpcyBkZWNvbnN0cnVjdGlv
biBwYXR0ZXJuIik7CkBAIC01NzgsOSArNTc4LDkgQEAgdGVtcGxhdGUgPERlY29uc3RydWN0aW9u
S2luZCBraW5kLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3RydWN0aW9uUGF0dGVybgog
ICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9ICptX3Rva2VuLm1fZGF0YS5pZGVudDsKICAg
ICAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoQ09MT04p
KQotICAgICAgICAgICAgICAgICAgICBpbm5lclBhdHRlcm4gPSBwYXJzZURlY29uc3RydWN0aW9u
UGF0dGVybjxraW5kPihjb250ZXh0LCBkZXB0aCArIDEpOworICAgICAgICAgICAgICAgICAgICBp
bm5lclBhdHRlcm4gPSBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBraW5kLCBk
ZXB0aCArIDEpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaW5u
ZXJQYXR0ZXJuID0gY3JlYXRlQmluZGluZ1BhdHRlcm48a2luZD4oY29udGV4dCwgcHJvcGVydHlO
YW1lLCBkZXB0aCk7CisgICAgICAgICAgICAgICAgICAgIGlubmVyUGF0dGVybiA9IGNyZWF0ZUJp
bmRpbmdQYXR0ZXJuKGNvbnRleHQsIGtpbmQsIHByb3BlcnR5TmFtZSwgZGVwdGgpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBKU1Rva2VuVHlwZSB0b2tlblR5cGUgPSBt
X3Rva2VuLm1fdHlwZTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7
CkBAIC02MTAsNyArNjEwLDcgQEAgdGVtcGxhdGUgPERlY29uc3RydWN0aW9uS2luZCBraW5kLCBj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3RydWN0aW9uUGF0dGVybgogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKCJFeHBlY3RlZCBh
ICc6JyBwcmlvciB0byBuYW1lZCBwcm9wZXJ0eSBkZWNvbnN0cnVjdGlvbiIpOwogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBpbm5lclBhdHRlcm4gPSBwYXJzZURlY29uc3RydWN0
aW9uUGF0dGVybjxraW5kPihjb250ZXh0LCBkZXB0aCArIDEpOworICAgICAgICAgICAgICAgIGlu
bmVyUGF0dGVybiA9IHBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKGNvbnRleHQsIGtpbmQsIGRl
cHRoICsgMSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0
cnVjdFRvRXhwcmVzc2lvbnMgJiYgIWlubmVyUGF0dGVybikKICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKQEAgLTYzMSw3ICs2MzEsNyBAQCB0ZW1wbGF0ZSA8RGVjb25zdHJ1Y3Rpb25LaW5kIGtp
bmQsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuCiAgICAgICAg
ICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoInZhcmlhYmxlIG5hbWUiKTsKICAgICAg
ICAgICAgIGZhaWxXaXRoTWVzc2FnZSgiRXhwZWN0ZWQgYSBwYXJhbWV0ZXIgcGF0dGVybiBvciBh
ICcpJyBpbiBwYXJhbWV0ZXIgbGlzdCIpOwogICAgICAgICB9Ci0gICAgICAgIHBhdHRlcm4gPSBj
cmVhdGVCaW5kaW5nUGF0dGVybjxraW5kPihjb250ZXh0LCAqbV90b2tlbi5tX2RhdGEuaWRlbnQs
IGRlcHRoKTsKKyAgICAgICAgcGF0dGVybiA9IGNyZWF0ZUJpbmRpbmdQYXR0ZXJuKGNvbnRleHQs
IGtpbmQsICptX3Rva2VuLm1fZGF0YS5pZGVudCwgZGVwdGgpOwogICAgICAgICBuZXh0KCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTk2MSw3ICs5NjEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVDbGF1c2VMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN3aXRj
aENsYXVzZQogICAgIFRyZWVFeHByZXNzaW9uIGNvbmRpdGlvbiA9IHBhcnNlRXhwcmVzc2lvbihj
b250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShjb25kaXRpb24sICJDYW5ub3QgcGFyc2Ugc3dpdGNo
IGNsYXVzZSIpOwogICAgIGNvbnN1bWVPckZhaWwoQ09MT04sICJFeHBlY3RlZCBhICc6JyBhZnRl
ciBzd2l0Y2ggY2xhdXNlIGV4cHJlc3Npb24iKTsKLSAgICBUcmVlU291cmNlRWxlbWVudHMgc3Rh
dGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHM8RG9udENoZWNrRm9yU3RyaWN0TW9kZT4oY29u
dGV4dCk7CisgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVs
ZW1lbnRzKGNvbnRleHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUpOwogICAgIGZhaWxJZkZhbHNl
KHN0YXRlbWVudHMsICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYSBzd2l0Y2ggY2xhdXNlIik7
CiAgICAgVHJlZUNsYXVzZSBjbGF1c2UgPSBjb250ZXh0LmNyZWF0ZUNsYXVzZShjb25kaXRpb24s
IHN0YXRlbWVudHMpOwogICAgIFRyZWVDbGF1c2VMaXN0IGNsYXVzZUxpc3QgPSBjb250ZXh0LmNy
ZWF0ZUNsYXVzZUxpc3QoY2xhdXNlKTsKQEAgLTk3Miw3ICs5NzIsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGF1c2VMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN3
aXRjaENsYXVzZQogICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb25kaXRpb24gPSBwYXJzZUV4cHJl
c3Npb24oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGNvbmRpdGlvbiwgIkNhbm5vdCBw
YXJzZSBzd2l0Y2ggY2FzZSBleHByZXNzaW9uIik7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ09M
T04sICJFeHBlY3RlZCBhICc6JyBhZnRlciBzd2l0Y2ggY2xhdXNlIGV4cHJlc3Npb24iKTsKLSAg
ICAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRz
PERvbnRDaGVja0ZvclN0cmljdE1vZGU+KGNvbnRleHQpOworICAgICAgICBUcmVlU291cmNlRWxl
bWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgRG9udENoZWNr
Rm9yU3RyaWN0TW9kZSk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudHMsICJDYW5ub3Qg
cGFyc2UgdGhlIGJvZHkgb2YgYSBzd2l0Y2ggY2xhdXNlIik7CiAgICAgICAgIGNsYXVzZSA9IGNv
bnRleHQuY3JlYXRlQ2xhdXNlKGNvbmRpdGlvbiwgc3RhdGVtZW50cyk7CiAgICAgICAgIHRhaWwg
PSBjb250ZXh0LmNyZWF0ZUNsYXVzZUxpc3QodGFpbCwgY2xhdXNlKTsKQEAgLTk4Nyw3ICs5ODcs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGF1c2UgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlU3dpdGNoRGVmYXVsdENsYQogICAgICAgICByZXR1cm4gMDsKICAgICBuZXh0
KCk7CiAgICAgY29uc3VtZU9yRmFpbChDT0xPTiwgIkV4cGVjdGVkIGEgJzonIGFmdGVyIHN3aXRj
aCBkZWZhdWx0IGNsYXVzZSIpOwotICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdGF0ZW1lbnRzID0g
cGFyc2VTb3VyY2VFbGVtZW50czxEb250Q2hlY2tGb3JTdHJpY3RNb2RlPihjb250ZXh0KTsKKyAg
ICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29u
dGV4dCwgRG9udENoZWNrRm9yU3RyaWN0TW9kZSk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50
cywgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhIHN3aXRjaCBkZWZhdWx0IGNsYXVzZSIpOwog
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNsYXVzZSgwLCBzdGF0ZW1lbnRzKTsKIH0KQEAgLTEw
NjUsNyArMTA2NSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCbG9ja1N0YXRlbWVuCiAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobG9jYXRpb24sIDAs
IHN0YXJ0LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUpOwogICAgIH0KLSAgICBUcmVlU291
cmNlRWxlbWVudHMgc3VidHJlZSA9IHBhcnNlU291cmNlRWxlbWVudHM8RG9udENoZWNrRm9yU3Ry
aWN0TW9kZT4oY29udGV4dCk7CisgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN1YnRyZWUgPSBwYXJz
ZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUpOwogICAgIGZh
aWxJZkZhbHNlKHN1YnRyZWUsICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhlIGJsb2NrIHN0
YXRlbWVudCIpOwogICAgIG1hdGNoT3JGYWlsKENMT1NFQlJBQ0UsICJFeHBlY3RlZCBhIGNsb3Np
bmcgJ30nIGF0IHRoZSBlbmQgb2YgYSBibG9jayBzdGF0ZW1lbnQiKTsKICAgICBuZXh0KCk7CkBA
IC0xMTQzLDEyICsxMTQzLDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnQoVHJlCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRm9y
bWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJz
KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewotICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZWNv
bnN0cnVjdGlvblBhdHRlcm48RGVjb25zdHJ1Y3RUb1BhcmFtZXRlcnM+KGNvbnRleHQpOworICAg
IGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4oY29udGV4dCwgRGVj
b25zdHJ1Y3RUb1BhcmFtZXRlcnMpOwogICAgIGZhaWxJZkZhbHNlKHBhcmFtZXRlciwgIkNhbm5v
dCBwYXJzZSBwYXJhbWV0ZXIgcGF0dGVybiIpOwogICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0
IGxpc3QgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QocGFyYW1ldGVyKTsKICAg
ICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCB0YWlsID0gbGlzdDsKICAgICB3aGlsZSAoY29uc3Vt
ZShDT01NQSkpIHsKLSAgICAgICAgcGFyYW1ldGVyID0gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRl
cm48RGVjb25zdHJ1Y3RUb1BhcmFtZXRlcnM+KGNvbnRleHQpOworICAgICAgICBwYXJhbWV0ZXIg
PSBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBEZWNvbnN0cnVjdFRvUGFyYW1l
dGVycyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcmFtZXRlciwgIkNhbm5vdCBwYXJzZSBwYXJh
bWV0ZXIgcGF0dGVybiIpOwogICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJh
bWV0ZXJMaXN0KHRhaWwsIHBhcmFtZXRlcik7CiAgICAgfQpAQCAtMTE4OSw3ICsxMTg5LDcgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShGdW5jdGlvblBhcnNlTW9k
ZSBtb2RlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPEZ1
bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgRnVuY3Rpb25QYXJzZU1vZGUgbW9kZSwg
Ym9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBj
b25zdCBJZGVudGlmaWVyKiYgbmFtZSwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QmIHBhcmFtZXRl
cnMsIFRyZWVGdW5jdGlvbkJvZHkmIGJvZHksIHVuc2lnbmVkJiBvcGVuQnJhY2VPZmZzZXQsIHVu
c2lnbmVkJiBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQmIGJvZHlTdGFydExpbmUsIHVuc2lnbmVkJiBi
b2R5U3RhcnRDb2x1bW4pCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5j
dGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUsIGJv
b2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIGNvbnN0IElkZW50aWZpZXIqJiBuYW1lLCBUcmVl
Rm9ybWFsUGFyYW1ldGVyTGlzdCYgcGFyYW1ldGVycywgVHJlZUZ1bmN0aW9uQm9keSYgYm9keSwg
dW5zaWduZWQmIG9wZW5CcmFjZU9mZnNldCwgdW5zaWduZWQmIGNsb3NlQnJhY2VPZmZzZXQsIGlu
dCYgYm9keVN0YXJ0TGluZSwgdW5zaWduZWQmIGJvZHlTdGFydENvbHVtbikKIHsKICAgICBBdXRv
UG9wU2NvcGVSZWYgZnVuY3Rpb25TY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CiAgICAgZnVuY3Rp
b25TY29wZS0+c2V0SXNGdW5jdGlvbigpOwpAQCAtMTMxMSw3ICsxMzExLDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUZ1bmN0aW9uRGVjbGEKICAgICB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0ID0gMDsKICAgICBp
bnQgYm9keVN0YXJ0TGluZSA9IDA7CiAgICAgdW5zaWduZWQgYm9keVN0YXJ0Q29sdW1uID0gMDsK
LSAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25OZWVkc05hbWUsIEZ1
bmN0aW9uTW9kZSwgdHJ1ZT4oY29udGV4dCwgbmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJy
YWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRMaW5lLCBib2R5U3RhcnRDb2x1
bW4pKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CisgICAgZmFpbElmRmFsc2UoKHBh
cnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmVlZHNOYW1lLCBGdW5jdGlvbk1vZGUs
IHRydWUsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFj
ZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSksICJDYW5ub3QgcGFyc2Ug
dGhpcyBmdW5jdGlvbiIpOwogICAgIGZhaWxJZkZhbHNlKG5hbWUsICJGdW5jdGlvbiBzdGF0ZW1l
bnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGRlY2xhcmVW
YXJpYWJsZShuYW1lKSwgIkNhbm5vdCBkZWNsYXJlIGEgZnVuY3Rpb24gbmFtZWQgJyIsIG5hbWUt
PmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jRGVjbFN0YXRlbWVudChsb2NhdGlvbiwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJy
YWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRMaW5lLCBtX2xhc3RUb2tlbkVu
ZFBvc2l0aW9uLmxpbmUsIGJvZHlTdGFydENvbHVtbik7CkBAIC0xNjczLDcgKzE2NzMsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUJpbmFyeUV4cHJlcwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgotdGVtcGxhdGUgPGJvb2wgY29tcGxldGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVy
dHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHkoVHJlZUJ1aWxkZXImIGNvbnRleHQp
Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VQcm9wZXJ0eShUcmVlQnVpbGRlciYgY29udGV4dCwgYm9vbCBjb21wbGV0ZSkK
IHsKICAgICBib29sIHdhc0lkZW50ID0gZmFsc2U7CiAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlw
ZSkgewpAQCAtMTY5MSw3ICsxNjkxLDcgQEAgdGVtcGxhdGUgPGJvb2wgY29tcGxldGUsIGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnMKICAgICAg
ICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFz
c2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICAgICAgZmFpbElmRmFsc2Uobm9k
ZSwgIkNhbm5vdCBwYXJzZSBleHByZXNzaW9uIGZvciBwcm9wZXJ0eSBkZWNsYXJhdGlvbiIpOwot
ICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUgY3JlYXRlUHJvcGVydHk8Y29tcGxl
dGU+KGlkZW50LCBub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKKyAgICAgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBub2RlLCBQcm9wZXJ0eU5vZGU6OkNv
bnN0YW50LCBjb21wbGV0ZSk7CiAgICAgICAgIH0KICAgICAgICAgZmFpbElmRmFsc2Uod2FzSWRl
bnQsICJFeHBlY3RlZCBhbiBpZGVudGlmaWVyIGFzIHByb3BlcnR5IG5hbWUiKTsKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciogYWNjZXNzb3JOYW1lID0gMDsKQEAgLTE3MjAsMTQgKzE3MjAsMTQg
QEAgdGVtcGxhdGUgPGJvb2wgY29tcGxldGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVy
dHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnMKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAo
dHlwZSA9PSBQcm9wZXJ0eU5vZGU6OkdldHRlcikgewogICAgICAgICAgICAgZmFpbElmRmFsc2Uo
bWF0Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9yIGdldHRlciBk
ZWZpbml0aW9uIik7Ci0gICAgICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88
RnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgR2V0dGVyTW9kZSwgZmFsc2U+KGNvbnRleHQsIGFjY2Vz
c29yTmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zm
c2V0LCBib2R5U3RhcnRMaW5lLCBib2R5U3RhcnRDb2x1bW4pKSwgIkNhbm5vdCBwYXJzZSBnZXR0
ZXIgZGVmaW5pdGlvbiIpOworICAgICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25J
bmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIEdldHRlck1vZGUsIGZhbHNlLCBh
Y2Nlc3Nvck5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFj
ZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSksICJDYW5ub3QgcGFyc2Ug
Z2V0dGVyIGRlZmluaXRpb24iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZhaWxJ
ZkZhbHNlKG1hdGNoKE9QRU5QQVJFTiksICJFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBz
ZXR0ZXIgZGVmaW5pdGlvbiIpOwotICAgICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rp
b25JbmZvPEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIFNldHRlck1vZGUsIGZhbHNlPihjb250ZXh0
LCBhY2Nlc3Nvck5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VC
cmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSksICJDYW5ub3QgcGFy
c2Ugc2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1
bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBTZXR0ZXJNb2RlLCBm
YWxzZSwgYWNjZXNzb3JOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VPZmZzZXQsIGNs
b3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIGJvZHlTdGFydENvbHVtbikpLCAiQ2Fubm90
IHBhcnNlIHNldHRlciBkZWZpbml0aW9uIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHN0cmlu
Z1Byb3BlcnR5TmFtZSkKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnRlbXBsYXRlIGNyZWF0
ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+KGxvY2F0aW9uLCB0eXBlLCBzdHJpbmdQ
cm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFj
ZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lLCBib2R5
U3RhcnRDb2x1bW4pOwotICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0
ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihjb25zdF9jYXN0PFZNKj4obV92bSksIGxvY2F0
aW9uLCB0eXBlLCBudW1lcmljUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJh
Y2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIG1fbGFzdFRva2VuRW5k
UG9zaXRpb24ubGluZSwgYm9keVN0YXJ0Q29sdW1uKTsKKyAgICAgICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkobG9jYXRpb24sIHR5cGUsIGNvbXBsZXRl
LCBzdHJpbmdQcm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZU9mZnNldCwg
Y2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5s
aW5lLCBib2R5U3RhcnRDb2x1bW4pOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVHZXR0
ZXJPclNldHRlclByb3BlcnR5KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbG9jYXRpb24sIHR5cGUs
IGNvbXBsZXRlLCBudW1lcmljUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJh
Y2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIG1fbGFzdFRva2VuRW5k
UG9zaXRpb24ubGluZSwgYm9keVN0YXJ0Q29sdW1uKTsKICAgICB9CiAgICAgY2FzZSBOVU1CRVI6
IHsKICAgICAgICAgZG91YmxlIHByb3BlcnR5TmFtZSA9IG1fdG9rZW4ubV9kYXRhLmRvdWJsZVZh
bHVlOwpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdGVtcGxhdGUgPGJvb2wgY29tcGxldGUsIGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnMKICAgICAg
ICAgY29uc3VtZU9yRmFpbChDT0xPTiwgIkV4cGVjdGVkICc6JyBhZnRlciBwcm9wZXJ0eSBuYW1l
Iik7CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNz
aW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShub2RlLCAiQ2Fubm90IHBhcnNlIGV4
cHJlc3Npb24gZm9yIHByb3BlcnR5IGRlY2xhcmF0aW9uIik7Ci0gICAgICAgIHJldHVybiBjb250
ZXh0LnRlbXBsYXRlIGNyZWF0ZVByb3BlcnR5PGNvbXBsZXRlPihjb25zdF9jYXN0PFZNKj4obV92
bSksIHByb3BlcnR5TmFtZSwgbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCk7CisgICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgcHJv
cGVydHlOYW1lLCBub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBjb21wbGV0ZSk7CiAgICAg
fQogICAgIGNhc2UgT1BFTkJSQUNLRVQ6IHsKICAgICAgICAgbmV4dCgpOwpAQCAtMTc0Niw3ICsx
NzQ2LDcgQEAgdGVtcGxhdGUgPGJvb2wgY29tcGxldGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
UHJvcGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnMKICAgICAgICAgY29uc3VtZU9yRmFpbChD
T0xPTiwgIkV4cGVjdGVkICc6JyBhZnRlciBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgIFRyZWVF
eHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAg
ICAgICBmYWlsSWZGYWxzZShub2RlLCAiQ2Fubm90IHBhcnNlIGV4cHJlc3Npb24gZm9yIHByb3Bl
cnR5IGRlY2xhcmF0aW9uIik7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LnRlbXBsYXRlIGNyZWF0
ZVByb3BlcnR5PGNvbXBsZXRlPihjb25zdF9jYXN0PFZNKj4obV92bSksIHByb3BlcnR5TmFtZSwg
bm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZVByb3BlcnR5KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgcHJvcGVydHlOYW1lLCBub2RlLCBQ
cm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBjb21wbGV0ZSk7CiAgICAgfQogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIGZhaWxJZkZhbHNlKG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZywgIkV4
cGVjdGVkIGEgcHJvcGVydHkgbmFtZSIpOwpAQCAtMTc2OCw3ICsxNzY4LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VPYmplY3RMaXRlcmEKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJh
bChsb2NhdGlvbik7CiAgICAgfQogICAgIAotICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eSA9IHBh
cnNlUHJvcGVydHk8ZmFsc2U+KGNvbnRleHQpOworICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eSA9
IHBhcnNlUHJvcGVydHkoY29udGV4dCwgZmFsc2UpOwogICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5
LCAiQ2Fubm90IHBhcnNlIG9iamVjdCBsaXRlcmFsIHByb3BlcnR5Iik7CiAgICAgaWYgKCFtX3N5
bnRheEFscmVhZHlWYWxpZGF0ZWQgJiYgY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSAhPSBQcm9w
ZXJ0eU5vZGU6OkNvbnN0YW50KSB7CiAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50
KTsKQEAgLTE3ODIsNyArMTc4Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlT2JqZWN0TGl0ZXJhCiAgICAgICAg
IGlmIChtYXRjaChDTE9TRUJSQUNFKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBKU1Rv
a2VuTG9jYXRpb24gcHJvcGVydHlMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwotICAgICAgICBw
cm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8ZmFsc2U+KGNvbnRleHQpOworICAgICAgICBwcm9wZXJ0
eSA9IHBhcnNlUHJvcGVydHkoY29udGV4dCwgZmFsc2UpOwogICAgICAgICBmYWlsSWZGYWxzZShw
cm9wZXJ0eSwgIkNhbm5vdCBwYXJzZSBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0eSIpOwogICAgICAg
ICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCAmJiBjb250ZXh0LmdldFR5cGUocHJvcGVy
dHkpICE9IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpIHsKICAgICAgICAgICAgIHJlc3RvcmVTYXZl
UG9pbnQoc2F2ZVBvaW50KTsKQEAgLTE4MTIsNyArMTgxMiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0
T2JqZWN0CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobG9jYXRp
b24pOwogICAgIH0KICAgICAKLSAgICBUcmVlUHJvcGVydHkgcHJvcGVydHkgPSBwYXJzZVByb3Bl
cnR5PHRydWU+KGNvbnRleHQpOworICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eSA9IHBhcnNlUHJv
cGVydHkoY29udGV4dCwgdHJ1ZSk7CiAgICAgZmFpbElmRmFsc2UocHJvcGVydHksICJDYW5ub3Qg
cGFyc2Ugb2JqZWN0IGxpdGVyYWwgcHJvcGVydHkiKTsKICAgICAKICAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFN0cmluZ0ltcGw+LCB1bnNpZ25lZCwgSWRlbnRpZmllclJlcEhhc2g+IE9iamVj
dFZhbGlkYXRpb25NYXA7CkBAIC0xODI5LDcgKzE4MjksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0cmljdE9i
amVjdAogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIHByb3BlcnR5TG9jYXRpb24odG9rZW5Mb2NhdGlvbigp
KTsKLSAgICAgICAgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5PHRydWU+KGNvbnRleHQpOworICAg
ICAgICBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHkoY29udGV4dCwgdHJ1ZSk7CiAgICAgICAgIGZh
aWxJZkZhbHNlKHByb3BlcnR5LCAiQ2Fubm90IHBhcnNlIG9iamVjdCBsaXRlcmFsIHByb3BlcnR5
Iik7CiAgICAgICAgIGlmICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkICYmIGNvbnRleHQuZ2V0
TmFtZShwcm9wZXJ0eSkpIHsKICAgICAgICAgICAgIE9iamVjdFZhbGlkYXRpb25NYXA6OkFkZFJl
c3VsdCBwcm9wZXJ0eUVudHJ5ID0gb2JqZWN0VmFsaWRhdG9yLmFkZChjb250ZXh0LmdldE5hbWUo
cHJvcGVydHkpLT5pbXBsKCksIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkpOwpAQCAtMjA3Niw3
ICsyMDc2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgdW5zaWduZWQgYm9k
eVN0YXJ0Q29sdW1uID0gMDsKICAgICAgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAg
ICAgICAgIG5leHQoKTsKLSAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1
bmN0aW9uTm9SZXF1aXJlbWVudHMsIEZ1bmN0aW9uTW9kZSwgZmFsc2U+KGNvbnRleHQsIG5hbWUs
IHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9k
eVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhw
cmVzc2lvbiIpOworICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4
dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgRnVuY3Rpb25Nb2RlLCBmYWxzZSwgbmFtZSwgcGFy
YW1ldGVycywgYm9keSwgb3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3Rh
cnRMaW5lLCBib2R5U3RhcnRDb2x1bW4pKSwgIkNhbm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNz
aW9uIik7CiAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlv
biwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zm
c2V0LCBib2R5U3RhcnRMaW5lLCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUsIGJvZHlTdGFy
dENvbHVtbik7CiAgICAgfSBlbHNlCiAgICAgICAgIGJhc2UgPSBwYXJzZVByaW1hcnlFeHByZXNz
aW9uKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYjA5
MWY3NjdjNWVhZTQ2Y2ViZGI3YWZlNGM4NmNlYTkyZjVmODgzMC4uYjY5OGVmOTM2OGNiOGM4ZjE5
N2NjZDAwMGFjYWE2ZGZiMTFiYTI0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCkBAIC02OTksNyArNjk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPFNvdXJjZUVsZW1lbnRzTW9kZSBtb2RlLCBjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU291cmNlRWxlbWVudHMoVHJl
ZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VF
bGVtZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlRWxlbWVudHNN
b2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFy
c2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1
bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDApOwogICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHJl
ZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgcGFyc2VWYXJEZWNsYXJhdGlvbihUcmVlQnVpbGRlciYpOwpAQCAtNzIwLDcgKzcyMCw3IEBA
IHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IHBhcnNlRXhwcmVzc2lvblN0YXRlbWVudChUcmVlQnVpbGRlciYpOwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUV4cHJlc3Npb25PckxhYmVsU3Rh
dGVtZW50KFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IHBhcnNlSWZTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImKTsKLSAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZVN0YXRlbWVudCBwYXJzZUJs
b2NrU3RhdGVtZW50KFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlQmxvY2tTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImKTsKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlRXhwcmVz
c2lvbihUcmVlQnVpbGRlciYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihUcmVlQnVpbGRlciYpOwogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRXhwcmVzc2lv
biBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihUcmVlQnVpbGRlciYpOwpAQCAtNzMwLDE5ICs3
MzAsMTkgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZ
U19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VQcmltYXJ5RXhwcmVzc2lvbihUcmVlQnVpbGRl
ciYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVl
RXhwcmVzc2lvbiBwYXJzZUFycmF5TGl0ZXJhbChUcmVlQnVpbGRlciYpOwogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRXhwcmVzc2lvbiBwYXJzZU9i
amVjdExpdGVyYWwoVHJlZUJ1aWxkZXImKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VTdHJpY3RPYmplY3RMaXRlcmFs
KFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9J
TkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKFRyZWVCdWlsZGVy
Jik7CiAgICAgZW51bSBTcHJlYWRNb2RlIHsgQWxsb3dTcHJlYWQsIERvbnRBbGxvd1NwcmVhZCB9
OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlQXJn
dW1lbnRzIHBhcnNlQXJndW1lbnRzKFRyZWVCdWlsZGVyJiwgU3ByZWFkTW9kZSk7Ci0gICAgdGVt
cGxhdGUgPGJvb2wgc3RyaWN0LCBjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVl
UHJvcGVydHkgcGFyc2VQcm9wZXJ0eShUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlUHJvcGVydHkoVHJlZUJ1aWxkZXImLCBi
b29sIHN0cmljdCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5M
SU5FIFRyZWVGdW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImKTsKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZvcm1hbFBh
cmFtZXRlckxpc3QgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7Ci0gICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBh
cnNlVmFyRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwgaW50JiBkZWNsYXJhdGlvbnMsIFRy
ZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4mIGxhc3RQYXR0ZXJuLCBUcmVlRXhwcmVzc2lvbiYgbGFz
dEluaXRpYWxpemVyLCBKU1RleHRQb3NpdGlvbiYgaWRlbnRTdGFydCwgSlNUZXh0UG9zaXRpb24m
IGluaXRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRFbmQpOwotICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlQ29uc3REZWNsTGlzdCBwYXJzZUNvbnN0
RGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVZhckRlY2xhcmF0aW9uTGlzdChUcmVlQnVpbGRl
ciYsIGludCYgZGVjbGFyYXRpb25zLCBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuJiBsYXN0UGF0
dGVybiwgVHJlZUV4cHJlc3Npb24mIGxhc3RJbml0aWFsaXplciwgSlNUZXh0UG9zaXRpb24mIGlk
ZW50U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0
RW5kKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVl
Q29uc3REZWNsTGlzdCBwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJik7CiAK
LSAgICB0ZW1wbGF0ZSA8RGVjb25zdHJ1Y3Rpb25LaW5kLCBjbGFzcyBUcmVlQnVpbGRlcj4gQUxX
QVlTX0lOTElORSBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIGNyZWF0ZUJpbmRpbmdQYXR0ZXJu
KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciYsIGludCBkZXB0aCk7Ci0gICAgdGVtcGxh
dGUgPERlY29uc3RydWN0aW9uS2luZCwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNvbnN0cnVj
dGlvblBhdHRlcm4gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4oVHJlZUJ1aWxkZXImLCBpbnQg
ZGVwdGggPSAwKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElO
RSBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIGNyZWF0ZUJpbmRpbmdQYXR0ZXJuKFRyZWVCdWls
ZGVyJiwgRGVjb25zdHJ1Y3Rpb25LaW5kLCBjb25zdCBJZGVudGlmaWVyJiwgaW50IGRlcHRoKTsK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlRGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuIHBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKFRyZWVCdWlsZGVyJiwg
RGVjb25zdHJ1Y3Rpb25LaW5kLCBpbnQgZGVwdGggPSAwKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIHRyeVBh
cnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuRXhwcmVzc2lvbihUcmVlQnVpbGRlciYpOwotICAgIHRl
bXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50cywgRnVuY3Rpb25QYXJzZU1vZGUsIGJvb2wgbmFt
ZUlzSW5Db250YWluaW5nU2NvcGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIHBhcnNlRnVuY3Rp
b25JbmZvKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomLCBUcmVlRm9ybWFsUGFyYW1l
dGVyTGlzdCYsIFRyZWVGdW5jdGlvbkJvZHkmLCB1bnNpZ25lZCYgb3BlbkJyYWNlT2Zmc2V0LCB1
bnNpZ25lZCYgY2xvc2VCcmFjZU9mZnNldCwgaW50JiBib2R5U3RhcnRMaW5lLCB1bnNpZ25lZCYg
Ym9keVN0YXJ0Q29sdW1uKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVS
X0lOTElORSBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1
aXJlbWVudHMsIEZ1bmN0aW9uUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3Bl
LCBjb25zdCBJZGVudGlmaWVyKiYsIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0JiwgVHJlZUZ1bmN0
aW9uQm9keSYsIHVuc2lnbmVkJiBvcGVuQnJhY2VPZmZzZXQsIHVuc2lnbmVkJiBjbG9zZUJyYWNl
T2Zmc2V0LCBpbnQmIGJvZHlTdGFydExpbmUsIHVuc2lnbmVkJiBib2R5U3RhcnRDb2x1bW4pOwog
ICAgIEFMV0FZU19JTkxJTkUgaW50IGlzQmluYXJ5T3BlcmF0b3IoSlNUb2tlblR5cGUpOwogICAg
IGJvb2wgYWxsb3dBdXRvbWF0aWNTZW1pY29sb24oKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggMjU0ODIyYmQzY2M5YmNiNTFhYzJk
MjRmZmIwZmUxNWJlYmYxMWRmZS4uNzFlODcxYThlOThhNjg2NDczYTdjYTc4NTUxMzMyMDUyMDdl
ZmUyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVj
a2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgK
QEAgLTE2MCwyMCArMTYwLDIwIEBAIHB1YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVT
cHJlYWRFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBp
bnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xpc3Qo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0
ZUFyZ3VtZW50c0xpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBjb21wbGV0ZT4gUHJvcGVydHkgY3JlYXRlUHJvcGVy
dHkoY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSkK
KyAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQs
IFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sIGNvbXBsZXRlKQogICAgIHsKICAgICAgICAg
aWYgKCFjb21wbGV0ZSkKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICAg
ICAgQVNTRVJUKG5hbWUpOwogICAgICAgICByZXR1cm4gUHJvcGVydHkobmFtZSwgdHlwZSk7CiAg
ICAgfQotICAgIHRlbXBsYXRlIDxib29sIGNvbXBsZXRlPiBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0
eShWTSogdm0sIGRvdWJsZSBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlKQorICAg
IFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KFZNKiB2bSwgZG91YmxlIG5hbWUsIGludCwgUHJvcGVy
dHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wgY29tcGxldGUpCiAgICAgewogICAgICAgICBpZiAoIWNv
bXBsZXRlKQogICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwogICAgICAgICByZXR1
cm4gUHJvcGVydHkoJnZtLT5wYXJzZXJBcmVuYS0+aWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVy
aWNJZGVudGlmaWVyKHZtLCBuYW1lKSwgdHlwZSk7CiAgICAgfQotICAgIHRlbXBsYXRlIDxib29s
IGNvbXBsZXRlPiBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShWTSosIEV4cHJlc3Npb25Ob2RlKiwg
aW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSkKKyAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0
eShWTSosIEV4cHJlc3Npb25Ob2RlKiwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9v
bCkKICAgICB7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICB9CkBAIC0yMTIs
MTQgKzIxMiwxNCBAQCBwdWJsaWM6CiAgICAgaW50IGNyZWF0ZURlYnVnZ2VyKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUNvbnN0
U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KICAgICBpbnQgYXBwZW5kQ29uc3REZWNsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGlu
dCwgY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gMTsgfQotICAgIHRlbXBsYXRlIDxi
b29sIHN0cmljdD4gUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmll
ciogbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQorICAgIFByb3BlcnR5
IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wgc3RyaWN0LCBjb25zdCBJZGVudGlmaWVyKiBuYW1l
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpCiAgICAgewogICAgICAgICBBU1NF
UlQobmFtZSk7CiAgICAgICAgIGlmICghc3RyaWN0KQogICAgICAgICAgICAgcmV0dXJuIFByb3Bl
cnR5KHR5cGUpOwogICAgICAgICByZXR1cm4gUHJvcGVydHkobmFtZSwgdHlwZSk7CiAgICAgfQot
ICAgIHRlbXBsYXRlIDxib29sIHN0cmljdD4gUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQ
cm9wZXJ0eShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlw
ZSB0eXBlLCBkb3VibGUgbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQor
ICAgIFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0qIHZtLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCBzdHJpY3QsIGRv
dWJsZSBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpCiAgICAgewogICAg
ICAgICBpZiAoIXN0cmljdCkKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218898</attachid>
            <date>2013-12-10 13:02:38 -0800</date>
            <delta_ts>2013-12-10 13:14:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125535-20131210130237.patch</filename>
            <type>text/plain</type>
            <size>33256</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MDAwZjkwYWI3ODBlZjMzZDU5M2E3ZDI2MGYwZjBiM2NjZjBhYmY4Li44NzExN2Q4MWNjYzJmZDQw
MzRiYTI4NmQzMTFhN2RjMmE0M2I3MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxMy0xMi0xMCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSB0aGUgbWFzcyB0ZW1wbGF0aXppbmcgb2YgdGhlIEpTIHBhcnNlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NTM1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHZhcmlv
dXMgY2FjaGVzIHdlIGhhdmUgbm93IGhhdmUgcmVtb3ZlZCB0aGUgbmVlZCBmb3IgbWFueSBvZgor
ICAgICAgICB0aGUgdGVtcGxhdGUgdnMuIHJlZ3VsYXIgcGFyYW1ldGVycy4gIFRoaXMgcGF0Y2gg
Y29udmVydHMgdGhvc2UKKyAgICAgICAgdGVtcGxhdGUgcGFyYW1ldGVycyB0byByZWd1bGFyIHBh
cmFtZXRlcnMgYW5kIHVwZGF0ZXMgdGhlIGNhbGwKKyAgICAgICAgc2l0ZXMuICBUaGlzIHJlZHVj
ZXMgdGhlIGNvZGUgc2l6ZSBieSBhcm91bmQgMTUlLgorCisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6OjpwYXJzZUlubmVyKToK
KyAgICAgICAgKEpTQzo6OjpwYXJzZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6Ojpw
YXJzZVZhckRlY2xhcmF0aW9uTGlzdCk6CisgICAgICAgIChKU0M6Ojo6Y3JlYXRlQmluZGluZ1Bh
dHRlcm4pOgorICAgICAgICAoSlNDOjo6OnRyeVBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuRXhw
cmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4pOgor
ICAgICAgICAoSlNDOjo6OnBhcnNlU3dpdGNoQ2xhdXNlcyk6CisgICAgICAgIChKU0M6Ojo6cGFy
c2VTd2l0Y2hEZWZhdWx0Q2xhdXNlKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUJsb2NrU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZvcm1hbFBhcmFtZXRlcnMpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9u
RGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VTdHJpY3RP
YmplY3RMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZU1lbWJlckV4cHJlc3Npb24pOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tl
ci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgor
CiAyMDEzLTEyLTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAg
SW1wb3NlIGFuZCBlbmZvcmNlIHNvbWUgYmFzaWMgcnVsZXMgb2Ygc2FuaXR5IGZvciB3aGVyZSBQ
aGkgZnVuY3Rpb25zIGFyZSBhbGxvd2VkIHRvIG9jY3VyIGFuZCB3aGVyZSB0aGVpciAob3B0aW9u
YWwpIGNvcnJlc3BvbmRpbmcgTW92SGludHMgY2FuIGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGVhYzFlN2QzZDMyZThiYzY3MTdjMTk3YzE5YTFhZmE5
MGQ1NTVjMjMuLmM2YTEyMjlhYmQwMzIyYzliNDIyODQ4YjQ5ZmRlNjQ3MDNmNmFhY2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0yOTMsNyArMjkzLDcg
QEAgcHVibGljOgogICAgICAgICBib2R5LT5zZXRGdW5jdGlvbk5hbWVTdGFydChmdW5jdGlvbk5h
bWVTdGFydCk7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUq
IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFBh
cmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgdW5zaWduZWQgb3Bl
bkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQgYm9keVN0YXJ0TGlu
ZSwgaW50IGJvZHlFbmRMaW5lLCB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4pCisgICAgTkVWRVJf
SU5MSU5FIFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwg
Y29uc3QgSWRlbnRpZmllciogbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJv
ZHlOb2RlKiBib2R5LCB1bnNpZ25lZCBvcGVuQnJhY2VPZmZzZXQsIHVuc2lnbmVkIGNsb3NlQnJh
Y2VPZmZzZXQsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUsIHVuc2lnbmVkIGJv
ZHlTdGFydENvbHVtbikKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKICAgICAgICAgYm9k
eS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNl
dCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKQEAgLTMwMSw3ICszMDEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBuZXcgKG1fdm0pIFByb3BlcnR5Tm9kZShtX3ZtLCAqbmFtZSwgbmV3
IChtX3ZtKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJ
ZGVudGlmaWVyLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlT2Zm
c2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRMaW5lLCBib2R5U3RhcnRDb2x1bW4pLCBw
YXJhbXMpLCB0eXBlKTsKICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5
Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShWTSosIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBkb3VibGUgbmFtZSwgUGFy
YW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCB1bnNpZ25lZCBvcGVu
QnJhY2VPZmZzZXQsIHVuc2lnbmVkIGNsb3NlQnJhY2VPZmZzZXQsIGludCBib2R5U3RhcnRMaW5l
LCBpbnQgYm9keUVuZExpbmUsIHVuc2lnbmVkIGJvZHlTdGFydENvbHVtbikKKyAgICBORVZFUl9J
TkxJTkUgUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KFZNKiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJv
b2wsIGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUq
IGJvZHksIHVuc2lnbmVkIG9wZW5CcmFjZU9mZnNldCwgdW5zaWduZWQgY2xvc2VCcmFjZU9mZnNl
dCwgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSwgdW5zaWduZWQgYm9keVN0YXJ0
Q29sdW1uKQogICAgIHsKICAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlF
bmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsK
ICAgICAgICAgcmV0dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2RlKG1fdm0sIG5hbWUsIG5ldyAo
bV92bSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRl
bnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZU9mZnNl
dCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSwgcGFy
YW1zKSwgdHlwZSk7CkBAIC0zMTIsMTQgKzMxMiwxNCBAQCBwdWJsaWM6CiAgICAgQXJndW1lbnRM
aXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcgKG1fdm0pIEFyZ3VtZW50TGlz
dE5vZGUobG9jYXRpb24sIGFyZyk7IH0KICAgICBBcmd1bWVudExpc3ROb2RlKiBjcmVhdGVBcmd1
bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEFyZ3VtZW50TGlzdE5v
ZGUqIGFyZ3MsIEV4cHJlc3Npb25Ob2RlKiBhcmcpIHsgcmV0dXJuIG5ldyAobV92bSkgQXJndW1l
bnRMaXN0Tm9kZShsb2NhdGlvbiwgYXJncywgYXJnKTsgfQogCi0gICAgdGVtcGxhdGUgPGJvb2w+
IFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogcHJvcGVydHlO
YW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUpCisgICAg
UHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5h
bWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCkK
ICAgICB7CiAgICAgICAgIGlmIChub2RlLT5pc0Z1bmNFeHByTm9kZSgpKQogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4obm9kZSktPmJvZHkoKS0+c2V0SW5mZXJyZWROYW1l
KCpwcm9wZXJ0eU5hbWUpOwogICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBQcm9wZXJ0eU5vZGUo
bV92bSwgKnByb3BlcnR5TmFtZSwgbm9kZSwgdHlwZSk7CiAgICAgfQotICAgIHRlbXBsYXRlIDxi
b29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KFZNKiwgZG91YmxlIHByb3BlcnR5TmFt
ZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlKSB7IHJldHVy
biBuZXcgKG1fdm0pIFByb3BlcnR5Tm9kZShtX3ZtLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUp
OyB9Ci0gICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoVk0q
LCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUpIHsgcmV0dXJuIG5ldyAobV92bSkgUHJvcGVydHlOb2RlKG1f
dm0sIHByb3BlcnR5TmFtZSwgbm9kZSwgdHlwZSk7IH0KKyAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0
ZVByb3BlcnR5KFZNKiwgZG91YmxlIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUs
IFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sKSB7IHJldHVybiBuZXcgKG1fdm0pIFByb3Bl
cnR5Tm9kZShtX3ZtLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUpOyB9CisgICAgUHJvcGVydHlO
b2RlKiBjcmVhdGVQcm9wZXJ0eShWTSosIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eU5hbWUsIEV4
cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCkgeyByZXR1
cm4gbmV3IChtX3ZtKSBQcm9wZXJ0eU5vZGUobV92bSwgcHJvcGVydHlOYW1lLCBub2RlLCB0eXBl
KTsgfQogICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5KSB7IHJldHVybiBu
ZXcgKG1fdm0pIFByb3BlcnR5TGlzdE5vZGUobG9jYXRpb24sIHByb3BlcnR5KTsgfQogICAgIFBy
b3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5LCBQcm9wZXJ0eUxpc3ROb2RlKiB0YWls
KSB7IHJldHVybiBuZXcgKG1fdm0pIFByb3BlcnR5TGlzdE5vZGUobG9jYXRpb24sIHByb3BlcnR5
LCB0YWlsKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXgg
YzJlYzk4OTViNjY2OTBiZDBhMDQxZjFmZTY3ZDY2YmRmNGFlNTQxOC4uMzk1YjJjNjZjZTA3ZTBm
ZTU3YTFhMzZjNWJlMDY5MDgyZWE1YWE2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VJbm5lcigpCiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nKCkpCiAgICAgICAgIG1f
c3RhdGVtZW50RGVwdGgtLTsKICAgICBTY29wZVJlZiBzY29wZSA9IGN1cnJlbnRTY29wZSgpOwot
ICAgIFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHM8
Q2hlY2tGb3JTdHJpY3RNb2RlPihjb250ZXh0KTsKKyAgICBTb3VyY2VFbGVtZW50cyogc291cmNl
RWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9k
ZSk7CiAgICAgaWYgKCFzb3VyY2VFbGVtZW50cyB8fCAhY29uc3VtZShFT0ZUT0spKSB7CiAgICAg
ICAgIGlmIChoYXNFcnJvcigpKQogICAgICAgICAgICAgcGFyc2VFcnJvciA9IG1fZXJyb3JNZXNz
YWdlOwpAQCAtMjg5LDcgKzI4OSw3IEBAIGJvb2wgUGFyc2VyPExleGVyVHlwZT46OmFsbG93QXV0
b21hdGljU2VtaWNvbG9uKCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRl
bXBsYXRlIDxTb3VyY2VFbGVtZW50c01vZGUgbW9kZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
b3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTb3VyY2VFbGVtZW50cyhUcmVl
QnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJj
ZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWls
ZGVyJiBjb250ZXh0LCBTb3VyY2VFbGVtZW50c01vZGUgbW9kZSkKIHsKICAgICBjb25zdCB1bnNp
Z25lZCBsZW5ndGhPZlVzZVN0cmljdExpdGVyYWwgPSAxMjsgLy8gInVzZSBzdHJpY3QiLmxlbmd0
aAogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzb3VyY2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRl
U291cmNlRWxlbWVudHMoKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xh
cmF0aQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGFzdElk
ZW50ID0gMDsKLSAgICAgICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcnNlRGVjb25zdHJ1Y3Rpb25Q
YXR0ZXJuPERlY29uc3RydWN0VG9WYXJpYWJsZXM+KGNvbnRleHQpOworICAgICAgICAgICAgYXV0
byBwYXR0ZXJuID0gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4oY29udGV4dCwgRGVjb25zdHJ1
Y3RUb1ZhcmlhYmxlcyk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXR0ZXJuLCAiQ2Fubm90
IHBhcnNlIHRoaXMgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybiIpOwogICAgICAgICAgICAgaGFzSW5p
dGlhbGl6ZXIgPSBtYXRjaChFUVVBTCk7CiAgICAgICAgICAgICBsYXN0UGF0dGVybiA9IHBhdHRl
cm47CkBAIC00NjUsMTIgKzQ2NSwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aQogICAgICAg
ICB9CiAgICAgfSB3aGlsZSAobWF0Y2goQ09NTUEpKTsKICAgICBpZiAobGFzdElkZW50KQotICAg
ICAgICBsYXN0UGF0dGVybiA9IGNyZWF0ZUJpbmRpbmdQYXR0ZXJuPERlY29uc3RydWN0VG9WYXJp
YWJsZXM+KGNvbnRleHQsICpsYXN0SWRlbnQsIDApOworICAgICAgICBsYXN0UGF0dGVybiA9IGNy
ZWF0ZUJpbmRpbmdQYXR0ZXJuKGNvbnRleHQsIERlY29uc3RydWN0VG9WYXJpYWJsZXMsICpsYXN0
SWRlbnQsIDApOwogICAgIHJldHVybiB2YXJEZWNsczsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KLXRlbXBsYXRlIDxEZWNvbnN0cnVjdGlvbktpbmQga2luZCwgY2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OmNy
ZWF0ZUJpbmRpbmdQYXR0ZXJuKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBpbnQgZGVwdGgpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNv
bnN0cnVjdGlvblBhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUJpbmRpbmdQYXR0ZXJu
KFRyZWVCdWlsZGVyJiBjb250ZXh0LCBEZWNvbnN0cnVjdGlvbktpbmQga2luZCwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgaW50IGRlcHRoKQogewogICAgIEFTU0VSVCghbmFtZS5pc0VtcHR5KCkp
OwogICAgIEFTU0VSVCghbmFtZS5pc051bGwoKSk7CkBAIC01MjQsMTEgKzUyNCwxMSBAQCB0ZW1w
bGF0ZSA8RGVjb25zdHJ1Y3Rpb25LaW5kIGtpbmQsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVj
b25zdHJ1Y3Rpb25QYXR0ZXJuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIFBhcnNlcjxM
ZXhlclR5cGU+Ojp0cnlQYXJzZURlY29uc3RydWN0aW9uUGF0dGVybkV4cHJlc3Npb24oVHJlZUJ1
aWxkZXImIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIHBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJu
PERlY29uc3RydWN0VG9FeHByZXNzaW9ucz4oY29udGV4dCk7CisgICAgcmV0dXJuIHBhcnNlRGVj
b25zdHJ1Y3Rpb25QYXR0ZXJuKGNvbnRleHQsIERlY29uc3RydWN0VG9FeHByZXNzaW9ucyk7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8RGVjb25zdHJ1Y3Rp
b25LaW5kIGtpbmQsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJu
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihUcmVlQnVpbGRl
ciYgY29udGV4dCwgaW50IGRlcHRoKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlY29uc3RydWN0
aW9uUGF0dGVybihUcmVlQnVpbGRlciYgY29udGV4dCwgRGVjb25zdHJ1Y3Rpb25LaW5kIGtpbmQs
IGludCBkZXB0aCkKIHsKICAgICBmYWlsSWZTdGFja092ZXJmbG93KCk7CiAgICAgaW50IG5vbkxI
U0NvdW50ID0gbV9ub25MSFNDb3VudDsKQEAgLTU0Nyw3ICs1NDcsNyBAQCB0ZW1wbGF0ZSA8RGVj
b25zdHJ1Y3Rpb25LaW5kIGtpbmQsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdHJ1Y3Rp
b25QYXR0ZXJuCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwog
ICAgICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uID0gbV90b2tlbi5tX2xvY2F0aW9u
OwotICAgICAgICAgICAgYXV0byBpbm5lclBhdHRlcm4gPSBwYXJzZURlY29uc3RydWN0aW9uUGF0
dGVybjxraW5kPihjb250ZXh0LCBkZXB0aCArIDEpOworICAgICAgICAgICAgYXV0byBpbm5lclBh
dHRlcm4gPSBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBraW5kLCBkZXB0aCAr
IDEpOwogICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zICYm
ICFpbm5lclBhdHRlcm4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBm
YWlsSWZGYWxzZShpbm5lclBhdHRlcm4sICJDYW5ub3QgcGFyc2UgdGhpcyBkZWNvbnN0cnVjdGlv
biBwYXR0ZXJuIik7CkBAIC01NzgsOSArNTc4LDkgQEAgdGVtcGxhdGUgPERlY29uc3RydWN0aW9u
S2luZCBraW5kLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3RydWN0aW9uUGF0dGVybgog
ICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9ICptX3Rva2VuLm1fZGF0YS5pZGVudDsKICAg
ICAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoQ09MT04p
KQotICAgICAgICAgICAgICAgICAgICBpbm5lclBhdHRlcm4gPSBwYXJzZURlY29uc3RydWN0aW9u
UGF0dGVybjxraW5kPihjb250ZXh0LCBkZXB0aCArIDEpOworICAgICAgICAgICAgICAgICAgICBp
bm5lclBhdHRlcm4gPSBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBraW5kLCBk
ZXB0aCArIDEpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaW5u
ZXJQYXR0ZXJuID0gY3JlYXRlQmluZGluZ1BhdHRlcm48a2luZD4oY29udGV4dCwgcHJvcGVydHlO
YW1lLCBkZXB0aCk7CisgICAgICAgICAgICAgICAgICAgIGlubmVyUGF0dGVybiA9IGNyZWF0ZUJp
bmRpbmdQYXR0ZXJuKGNvbnRleHQsIGtpbmQsIHByb3BlcnR5TmFtZSwgZGVwdGgpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBKU1Rva2VuVHlwZSB0b2tlblR5cGUgPSBt
X3Rva2VuLm1fdHlwZTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7
CkBAIC02MTAsNyArNjEwLDcgQEAgdGVtcGxhdGUgPERlY29uc3RydWN0aW9uS2luZCBraW5kLCBj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3RydWN0aW9uUGF0dGVybgogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKCJFeHBlY3RlZCBh
ICc6JyBwcmlvciB0byBuYW1lZCBwcm9wZXJ0eSBkZWNvbnN0cnVjdGlvbiIpOwogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBpbm5lclBhdHRlcm4gPSBwYXJzZURlY29uc3RydWN0
aW9uUGF0dGVybjxraW5kPihjb250ZXh0LCBkZXB0aCArIDEpOworICAgICAgICAgICAgICAgIGlu
bmVyUGF0dGVybiA9IHBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKGNvbnRleHQsIGtpbmQsIGRl
cHRoICsgMSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0
cnVjdFRvRXhwcmVzc2lvbnMgJiYgIWlubmVyUGF0dGVybikKICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKQEAgLTYzMSw3ICs2MzEsNyBAQCB0ZW1wbGF0ZSA8RGVjb25zdHJ1Y3Rpb25LaW5kIGtp
bmQsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuCiAgICAgICAg
ICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoInZhcmlhYmxlIG5hbWUiKTsKICAgICAg
ICAgICAgIGZhaWxXaXRoTWVzc2FnZSgiRXhwZWN0ZWQgYSBwYXJhbWV0ZXIgcGF0dGVybiBvciBh
ICcpJyBpbiBwYXJhbWV0ZXIgbGlzdCIpOwogICAgICAgICB9Ci0gICAgICAgIHBhdHRlcm4gPSBj
cmVhdGVCaW5kaW5nUGF0dGVybjxraW5kPihjb250ZXh0LCAqbV90b2tlbi5tX2RhdGEuaWRlbnQs
IGRlcHRoKTsKKyAgICAgICAgcGF0dGVybiA9IGNyZWF0ZUJpbmRpbmdQYXR0ZXJuKGNvbnRleHQs
IGtpbmQsICptX3Rva2VuLm1fZGF0YS5pZGVudCwgZGVwdGgpOwogICAgICAgICBuZXh0KCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTk2MSw3ICs5NjEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVDbGF1c2VMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN3aXRj
aENsYXVzZQogICAgIFRyZWVFeHByZXNzaW9uIGNvbmRpdGlvbiA9IHBhcnNlRXhwcmVzc2lvbihj
b250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShjb25kaXRpb24sICJDYW5ub3QgcGFyc2Ugc3dpdGNo
IGNsYXVzZSIpOwogICAgIGNvbnN1bWVPckZhaWwoQ09MT04sICJFeHBlY3RlZCBhICc6JyBhZnRl
ciBzd2l0Y2ggY2xhdXNlIGV4cHJlc3Npb24iKTsKLSAgICBUcmVlU291cmNlRWxlbWVudHMgc3Rh
dGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHM8RG9udENoZWNrRm9yU3RyaWN0TW9kZT4oY29u
dGV4dCk7CisgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVs
ZW1lbnRzKGNvbnRleHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUpOwogICAgIGZhaWxJZkZhbHNl
KHN0YXRlbWVudHMsICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYSBzd2l0Y2ggY2xhdXNlIik7
CiAgICAgVHJlZUNsYXVzZSBjbGF1c2UgPSBjb250ZXh0LmNyZWF0ZUNsYXVzZShjb25kaXRpb24s
IHN0YXRlbWVudHMpOwogICAgIFRyZWVDbGF1c2VMaXN0IGNsYXVzZUxpc3QgPSBjb250ZXh0LmNy
ZWF0ZUNsYXVzZUxpc3QoY2xhdXNlKTsKQEAgLTk3Miw3ICs5NzIsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGF1c2VMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN3
aXRjaENsYXVzZQogICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb25kaXRpb24gPSBwYXJzZUV4cHJl
c3Npb24oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGNvbmRpdGlvbiwgIkNhbm5vdCBw
YXJzZSBzd2l0Y2ggY2FzZSBleHByZXNzaW9uIik7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ09M
T04sICJFeHBlY3RlZCBhICc6JyBhZnRlciBzd2l0Y2ggY2xhdXNlIGV4cHJlc3Npb24iKTsKLSAg
ICAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRz
PERvbnRDaGVja0ZvclN0cmljdE1vZGU+KGNvbnRleHQpOworICAgICAgICBUcmVlU291cmNlRWxl
bWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgRG9udENoZWNr
Rm9yU3RyaWN0TW9kZSk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudHMsICJDYW5ub3Qg
cGFyc2UgdGhlIGJvZHkgb2YgYSBzd2l0Y2ggY2xhdXNlIik7CiAgICAgICAgIGNsYXVzZSA9IGNv
bnRleHQuY3JlYXRlQ2xhdXNlKGNvbmRpdGlvbiwgc3RhdGVtZW50cyk7CiAgICAgICAgIHRhaWwg
PSBjb250ZXh0LmNyZWF0ZUNsYXVzZUxpc3QodGFpbCwgY2xhdXNlKTsKQEAgLTk4Nyw3ICs5ODcs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGF1c2UgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlU3dpdGNoRGVmYXVsdENsYQogICAgICAgICByZXR1cm4gMDsKICAgICBuZXh0
KCk7CiAgICAgY29uc3VtZU9yRmFpbChDT0xPTiwgIkV4cGVjdGVkIGEgJzonIGFmdGVyIHN3aXRj
aCBkZWZhdWx0IGNsYXVzZSIpOwotICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdGF0ZW1lbnRzID0g
cGFyc2VTb3VyY2VFbGVtZW50czxEb250Q2hlY2tGb3JTdHJpY3RNb2RlPihjb250ZXh0KTsKKyAg
ICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29u
dGV4dCwgRG9udENoZWNrRm9yU3RyaWN0TW9kZSk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50
cywgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhIHN3aXRjaCBkZWZhdWx0IGNsYXVzZSIpOwog
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNsYXVzZSgwLCBzdGF0ZW1lbnRzKTsKIH0KQEAgLTEw
NjUsNyArMTA2NSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCbG9ja1N0YXRlbWVuCiAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobG9jYXRpb24sIDAs
IHN0YXJ0LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUpOwogICAgIH0KLSAgICBUcmVlU291
cmNlRWxlbWVudHMgc3VidHJlZSA9IHBhcnNlU291cmNlRWxlbWVudHM8RG9udENoZWNrRm9yU3Ry
aWN0TW9kZT4oY29udGV4dCk7CisgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN1YnRyZWUgPSBwYXJz
ZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUpOwogICAgIGZh
aWxJZkZhbHNlKHN1YnRyZWUsICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhlIGJsb2NrIHN0
YXRlbWVudCIpOwogICAgIG1hdGNoT3JGYWlsKENMT1NFQlJBQ0UsICJFeHBlY3RlZCBhIGNsb3Np
bmcgJ30nIGF0IHRoZSBlbmQgb2YgYSBibG9jayBzdGF0ZW1lbnQiKTsKICAgICBuZXh0KCk7CkBA
IC0xMTQzLDEyICsxMTQzLDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnQoVHJlCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRm9y
bWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJz
KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewotICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZWNv
bnN0cnVjdGlvblBhdHRlcm48RGVjb25zdHJ1Y3RUb1BhcmFtZXRlcnM+KGNvbnRleHQpOworICAg
IGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4oY29udGV4dCwgRGVj
b25zdHJ1Y3RUb1BhcmFtZXRlcnMpOwogICAgIGZhaWxJZkZhbHNlKHBhcmFtZXRlciwgIkNhbm5v
dCBwYXJzZSBwYXJhbWV0ZXIgcGF0dGVybiIpOwogICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0
IGxpc3QgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QocGFyYW1ldGVyKTsKICAg
ICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCB0YWlsID0gbGlzdDsKICAgICB3aGlsZSAoY29uc3Vt
ZShDT01NQSkpIHsKLSAgICAgICAgcGFyYW1ldGVyID0gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRl
cm48RGVjb25zdHJ1Y3RUb1BhcmFtZXRlcnM+KGNvbnRleHQpOworICAgICAgICBwYXJhbWV0ZXIg
PSBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBEZWNvbnN0cnVjdFRvUGFyYW1l
dGVycyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcmFtZXRlciwgIkNhbm5vdCBwYXJzZSBwYXJh
bWV0ZXIgcGF0dGVybiIpOwogICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJh
bWV0ZXJMaXN0KHRhaWwsIHBhcmFtZXRlcik7CiAgICAgfQpAQCAtMTE2OSw3ICsxMTY5LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uQm8KICAgICBEZXB0aE1hbmFnZXIgc3RhdGVtZW50RGVwdGgo
Jm1fc3RhdGVtZW50RGVwdGgpOwogICAgIG1fc3RhdGVtZW50RGVwdGggPSAwOwogICAgIHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpGdW5jdGlvbkJvZHlCdWlsZGVyIGJvZHlCdWlsZGVyKGNvbnN0X2Nh
c3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7Ci0gICAgZmFpbElmRmFsc2UocGFyc2VTb3Vy
Y2VFbGVtZW50czxDaGVja0ZvclN0cmljdE1vZGU+KGJvZHlCdWlsZGVyKSwgIkNhbm5vdCBwYXJz
ZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iKTsKKyAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVs
ZW1lbnRzKGJvZHlCdWlsZGVyLCBDaGVja0ZvclN0cmljdE1vZGUpLCAiQ2Fubm90IHBhcnNlIGJv
ZHkgb2YgdGhpcyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29s
dW1uKCk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRp
b24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgc3RyaWN0TW9kZSgp
KTsKIH0KQEAgLTExODksNyArMTE4OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JG
dW5jdGlvbk1vZGUoRnVuY3Rpb25QYXJzZU1vZGUgbW9kZSkKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVu
dHMsIEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUs
IGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
SW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciomIG5hbWUsIFRyZWVG
b3JtYWxQYXJhbWV0ZXJMaXN0JiBwYXJhbWV0ZXJzLCBUcmVlRnVuY3Rpb25Cb2R5JiBib2R5LCB1
bnNpZ25lZCYgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCYgY2xvc2VCcmFjZU9mZnNldCwgaW50
JiBib2R5U3RhcnRMaW5lLCB1bnNpZ25lZCYgYm9keVN0YXJ0Q29sdW1uKQordGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5m
byhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRz
LCBGdW5jdGlvblBhcnNlTW9kZSBtb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBj
b25zdCBJZGVudGlmaWVyKiYgbmFtZSwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QmIHBhcmFtZXRl
cnMsIFRyZWVGdW5jdGlvbkJvZHkmIGJvZHksIHVuc2lnbmVkJiBvcGVuQnJhY2VPZmZzZXQsIHVu
c2lnbmVkJiBjbG9zZUJyYWNlT2Zmc2V0LCBpbnQmIGJvZHlTdGFydExpbmUsIHVuc2lnbmVkJiBi
b2R5U3RhcnRDb2x1bW4pCiB7CiAgICAgQXV0b1BvcFNjb3BlUmVmIGZ1bmN0aW9uU2NvcGUodGhp
cywgcHVzaFNjb3BlKCkpOwogICAgIGZ1bmN0aW9uU2NvcGUtPnNldElzRnVuY3Rpb24oKTsKQEAg
LTEzMTEsNyArMTMxMSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhCiAgICAgdW5zaWduZWQg
Y2xvc2VCcmFjZU9mZnNldCA9IDA7CiAgICAgaW50IGJvZHlTdGFydExpbmUgPSAwOwogICAgIHVu
c2lnbmVkIGJvZHlTdGFydENvbHVtbiA9IDA7Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rp
b25JbmZvPEZ1bmN0aW9uTmVlZHNOYW1lLCBGdW5jdGlvbk1vZGUsIHRydWU+KGNvbnRleHQsIG5h
bWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwg
Ym9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSksICJDYW5ub3QgcGFyc2UgdGhpcyBmdW5j
dGlvbiIpOworICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5j
dGlvbk5lZWRzTmFtZSwgRnVuY3Rpb25Nb2RlLCB0cnVlLCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5
LCBvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIGJvZHlT
dGFydENvbHVtbikpLCAiQ2Fubm90IHBhcnNlIHRoaXMgZnVuY3Rpb24iKTsKICAgICBmYWlsSWZG
YWxzZShuYW1lLCAiRnVuY3Rpb24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CiAgICAg
ZmFpbElmRmFsc2VJZlN0cmljdChkZWNsYXJlVmFyaWFibGUobmFtZSksICJDYW5ub3QgZGVjbGFy
ZSBhIGZ1bmN0aW9uIG5hbWVkICciLCBuYW1lLT5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7
CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobG9jYXRpb24sIG5h
bWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwg
Ym9keVN0YXJ0TGluZSwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lLCBib2R5U3RhcnRDb2x1
bW4pOwpAQCAtMTY3Myw3ICsxNjczLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCaW5hcnlFeHByZXMKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxib29sIGNvbXBsZXRlLCBj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVBy
b3BlcnR5KFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlUHJvcGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHkoVHJlZUJ1aWxk
ZXImIGNvbnRleHQsIGJvb2wgY29tcGxldGUpCiB7CiAgICAgYm9vbCB3YXNJZGVudCA9IGZhbHNl
OwogICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKQEAgLTE2OTEsNyArMTY5MSw3IEBAIHRl
bXBsYXRlIDxib29sIGNvbXBsZXRlLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzCiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBU
cmVlRXhwcmVzc2lvbiBub2RlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsK
ICAgICAgICAgICAgIGZhaWxJZkZhbHNlKG5vZGUsICJDYW5ub3QgcGFyc2UgZXhwcmVzc2lvbiBm
b3IgcHJvcGVydHkgZGVjbGFyYXRpb24iKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnRl
bXBsYXRlIGNyZWF0ZVByb3BlcnR5PGNvbXBsZXRlPihpZGVudCwgbm9kZSwgUHJvcGVydHlOb2Rl
OjpDb25zdGFudCk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShp
ZGVudCwgbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgY29tcGxldGUpOwogICAgICAgICB9
CiAgICAgICAgIGZhaWxJZkZhbHNlKHdhc0lkZW50LCAiRXhwZWN0ZWQgYW4gaWRlbnRpZmllciBh
cyBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGFjY2Vzc29yTmFt
ZSA9IDA7CkBAIC0xNzIwLDE0ICsxNzIwLDE0IEBAIHRlbXBsYXRlIDxib29sIGNvbXBsZXRlLCBj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzCiAg
ICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKHR5cGUgPT0gUHJvcGVydHlOb2RlOjpHZXR0ZXIp
IHsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5QQVJFTiksICJFeHBlY3RlZCBh
IHBhcmFtZXRlciBsaXN0IGZvciBnZXR0ZXIgZGVmaW5pdGlvbiIpOwotICAgICAgICAgICAgZmFp
bElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIEdldHRl
ck1vZGUsIGZhbHNlPihjb250ZXh0LCBhY2Nlc3Nvck5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9w
ZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0
Q29sdW1uKSksICJDYW5ub3QgcGFyc2UgZ2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICAgICAgICAg
IGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWly
ZW1lbnRzLCBHZXR0ZXJNb2RlLCBmYWxzZSwgYWNjZXNzb3JOYW1lLCBwYXJhbWV0ZXJzLCBib2R5
LCBvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIGJvZHlT
dGFydENvbHVtbikpLCAiQ2Fubm90IHBhcnNlIGdldHRlciBkZWZpbml0aW9uIik7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShtYXRjaChPUEVOUEFSRU4pLCAiRXhw
ZWN0ZWQgYSBwYXJhbWV0ZXIgbGlzdCBmb3Igc2V0dGVyIGRlZmluaXRpb24iKTsKLSAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbzxGdW5jdGlvbk5vUmVxdWlyZW1lbnRz
LCBTZXR0ZXJNb2RlLCBmYWxzZT4oY29udGV4dCwgYWNjZXNzb3JOYW1lLCBwYXJhbWV0ZXJzLCBi
b2R5LCBvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIGJv
ZHlTdGFydENvbHVtbikpLCAiQ2Fubm90IHBhcnNlIHNldHRlciBkZWZpbml0aW9uIik7CisgICAg
ICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25O
b1JlcXVpcmVtZW50cywgU2V0dGVyTW9kZSwgZmFsc2UsIGFjY2Vzc29yTmFtZSwgcGFyYW1ldGVy
cywgYm9keSwgb3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBib2R5U3RhcnRMaW5l
LCBib2R5U3RhcnRDb2x1bW4pKSwgIkNhbm5vdCBwYXJzZSBzZXR0ZXIgZGVmaW5pdGlvbiIpOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChzdHJpbmdQcm9wZXJ0eU5hbWUpCi0gICAgICAgICAgICBy
ZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBs
ZXRlPihsb2NhdGlvbiwgdHlwZSwgc3RyaW5nUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5
LCBvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIG1fbGFz
dFRva2VuRW5kUG9zaXRpb24ubGluZSwgYm9keVN0YXJ0Q29sdW1uKTsKLSAgICAgICAgcmV0dXJu
IGNvbnRleHQudGVtcGxhdGUgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eTxjb21wbGV0ZT4o
Y29uc3RfY2FzdDxWTSo+KG1fdm0pLCBsb2NhdGlvbiwgdHlwZSwgbnVtZXJpY1Byb3BlcnR5TmFt
ZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBi
b2R5U3RhcnRMaW5lLCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUsIGJvZHlTdGFydENvbHVt
bik7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVHZXR0ZXJPclNldHRlclByb3Bl
cnR5KGxvY2F0aW9uLCB0eXBlLCBjb21wbGV0ZSwgc3RyaW5nUHJvcGVydHlOYW1lLCBwYXJhbWV0
ZXJzLCBib2R5LCBvcGVuQnJhY2VPZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExp
bmUsIG1fbGFzdFRva2VuRW5kUG9zaXRpb24ubGluZSwgYm9keVN0YXJ0Q29sdW1uKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdF9jYXN0
PFZNKj4obV92bSksIGxvY2F0aW9uLCB0eXBlLCBjb21wbGV0ZSwgbnVtZXJpY1Byb3BlcnR5TmFt
ZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNlT2Zmc2V0LCBjbG9zZUJyYWNlT2Zmc2V0LCBi
b2R5U3RhcnRMaW5lLCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUsIGJvZHlTdGFydENvbHVt
bik7CiAgICAgfQogICAgIGNhc2UgTlVNQkVSOiB7CiAgICAgICAgIGRvdWJsZSBwcm9wZXJ0eU5h
bWUgPSBtX3Rva2VuLm1fZGF0YS5kb3VibGVWYWx1ZTsKQEAgLTE3MzUsNyArMTczNSw3IEBAIHRl
bXBsYXRlIDxib29sIGNvbXBsZXRlLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzCiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ09MT04sICJFeHBl
Y3RlZCAnOicgYWZ0ZXIgcHJvcGVydHkgbmFtZSIpOwogICAgICAgICBUcmVlRXhwcmVzc2lvbiBu
b2RlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElm
RmFsc2Uobm9kZSwgIkNhbm5vdCBwYXJzZSBleHByZXNzaW9uIGZvciBwcm9wZXJ0eSBkZWNsYXJh
dGlvbiIpOwotICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVQcm9wZXJ0eTxj
b21wbGV0ZT4oY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIFByb3Bl
cnR5Tm9kZTo6Q29uc3RhbnQpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0
eShjb25zdF9jYXN0PFZNKj4obV92bSksIHByb3BlcnR5TmFtZSwgbm9kZSwgUHJvcGVydHlOb2Rl
OjpDb25zdGFudCwgY29tcGxldGUpOwogICAgIH0KICAgICBjYXNlIE9QRU5CUkFDS0VUOiB7CiAg
ICAgICAgIG5leHQoKTsKQEAgLTE3NDYsNyArMTc0Niw3IEBAIHRlbXBsYXRlIDxib29sIGNvbXBs
ZXRlLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzCiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ09MT04sICJFeHBlY3RlZCAnOicgYWZ0ZXIgcHJv
cGVydHkgbmFtZSIpOwogICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gcGFyc2VBc3NpZ25t
ZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2Uobm9kZSwgIkNhbm5v
dCBwYXJzZSBleHByZXNzaW9uIGZvciBwcm9wZXJ0eSBkZWNsYXJhdGlvbiIpOwotICAgICAgICBy
ZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVQcm9wZXJ0eTxjb21wbGV0ZT4oY29uc3RfY2Fz
dDxWTSo+KG1fdm0pLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQp
OworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShjb25zdF9jYXN0PFZNKj4o
bV92bSksIHByb3BlcnR5TmFtZSwgbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgY29tcGxl
dGUpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBmYWlsSWZGYWxzZShtX3Rva2VuLm1f
dHlwZSAmIEtleXdvcmRUb2tlbkZsYWcsICJFeHBlY3RlZCBhIHByb3BlcnR5IG5hbWUiKTsKQEAg
LTE3NjgsNyArMTc2OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlT2JqZWN0TGl0ZXJhCiAgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobG9jYXRpb24pOwogICAgIH0KICAgICAKLSAg
ICBUcmVlUHJvcGVydHkgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5PGZhbHNlPihjb250ZXh0KTsK
KyAgICBUcmVlUHJvcGVydHkgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5KGNvbnRleHQsIGZhbHNl
KTsKICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSwgIkNhbm5vdCBwYXJzZSBvYmplY3QgbGl0ZXJh
bCBwcm9wZXJ0eSIpOwogICAgIGlmICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkICYmIGNvbnRl
eHQuZ2V0VHlwZShwcm9wZXJ0eSkgIT0gUHJvcGVydHlOb2RlOjpDb25zdGFudCkgewogICAgICAg
ICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CkBAIC0xNzgyLDcgKzE3ODIsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZU9iamVjdExpdGVyYQogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIHByb3BlcnR5TG9jYXRpb24o
dG9rZW5Mb2NhdGlvbigpKTsKLSAgICAgICAgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5PGZhbHNl
Pihjb250ZXh0KTsKKyAgICAgICAgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5KGNvbnRleHQsIGZh
bHNlKTsKICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHksICJDYW5ub3QgcGFyc2Ugb2JqZWN0
IGxpdGVyYWwgcHJvcGVydHkiKTsKICAgICAgICAgaWYgKCFtX3N5bnRheEFscmVhZHlWYWxpZGF0
ZWQgJiYgY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSAhPSBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50
KSB7CiAgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CkBAIC0xODEyLDcg
KzE4MTIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0cmljdE9iamVjdAogICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVPYmplY3RMaXRlcmFsKGxvY2F0aW9uKTsKICAgICB9CiAgICAgCi0gICAgVHJlZVBy
b3BlcnR5IHByb3BlcnR5ID0gcGFyc2VQcm9wZXJ0eTx0cnVlPihjb250ZXh0KTsKKyAgICBUcmVl
UHJvcGVydHkgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5KGNvbnRleHQsIHRydWUpOwogICAgIGZh
aWxJZkZhbHNlKHByb3BlcnR5LCAiQ2Fubm90IHBhcnNlIG9iamVjdCBsaXRlcmFsIHByb3BlcnR5
Iik7CiAgICAgCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgdW5zaWdu
ZWQsIElkZW50aWZpZXJSZXBIYXNoPiBPYmplY3RWYWxpZGF0aW9uTWFwOwpAQCAtMTgyOSw3ICsx
ODI5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdHJpY3RPYmplY3QKICAgICAgICAgaWYgKG1hdGNoKENMT1NF
QlJBQ0UpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBwcm9w
ZXJ0eUxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7Ci0gICAgICAgIHByb3BlcnR5ID0gcGFyc2VQ
cm9wZXJ0eTx0cnVlPihjb250ZXh0KTsKKyAgICAgICAgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5
KGNvbnRleHQsIHRydWUpOwogICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSwgIkNhbm5vdCBw
YXJzZSBvYmplY3QgbGl0ZXJhbCBwcm9wZXJ0eSIpOwogICAgICAgICBpZiAoIW1fc3ludGF4QWxy
ZWFkeVZhbGlkYXRlZCAmJiBjb250ZXh0LmdldE5hbWUocHJvcGVydHkpKSB7CiAgICAgICAgICAg
ICBPYmplY3RWYWxpZGF0aW9uTWFwOjpBZGRSZXN1bHQgcHJvcGVydHlFbnRyeSA9IG9iamVjdFZh
bGlkYXRvci5hZGQoY29udGV4dC5nZXROYW1lKHByb3BlcnR5KS0+aW1wbCgpLCBjb250ZXh0Lmdl
dFR5cGUocHJvcGVydHkpKTsKQEAgLTIwNzYsNyArMjA3Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVy
RXhwcmVzCiAgICAgICAgIHVuc2lnbmVkIGJvZHlTdGFydENvbHVtbiA9IDA7CiAgICAgICAgIGxv
Y2F0aW9uID0gdG9rZW5Mb2NhdGlvbigpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIGZhaWxJ
ZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbzxGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBGdW5jdGlv
bk1vZGUsIGZhbHNlPihjb250ZXh0LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VP
ZmZzZXQsIGNsb3NlQnJhY2VPZmZzZXQsIGJvZHlTdGFydExpbmUsIGJvZHlTdGFydENvbHVtbikp
LCAiQ2Fubm90IHBhcnNlIGZ1bmN0aW9uIGV4cHJlc3Npb24iKTsKKyAgICAgICAgZmFpbElmRmFs
c2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIEZ1
bmN0aW9uTW9kZSwgZmFsc2UsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZU9mZnNl
dCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgYm9keVN0YXJ0Q29sdW1uKSksICJD
YW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogICAgICAgICBiYXNlID0gY29udGV4
dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRpb24sIG5hbWUsIGJvZHksIHBhcmFtZXRlcnMsIG9w
ZW5CcmFjZU9mZnNldCwgY2xvc2VCcmFjZU9mZnNldCwgYm9keVN0YXJ0TGluZSwgbV9sYXN0VG9r
ZW5FbmRQb3NpdGlvbi5saW5lLCBib2R5U3RhcnRDb2x1bW4pOwogICAgIH0gZWxzZQogICAgICAg
ICBiYXNlID0gcGFyc2VQcmltYXJ5RXhwcmVzc2lvbihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGIwOTFmNzY3YzVlYWU0NmNlYmRiN2FmZTRjODZjZWE5
MmY1Zjg4MzAuLmI2OThlZjkzNjhjYjhjOGYxOTdjY2QwMDBhY2FhNmRmYjExYmEyNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNjk5LDcgKzY5OSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlIDxT
b3VyY2VFbGVtZW50c01vZGUgbW9kZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVt
ZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50cyhU
cmVlQnVpbGRlciYsIFNvdXJjZUVsZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiwgY29u
c3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5n
dGggPSAwKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlVmFyRGVjbGFyYXRpb24oVHJlZUJ1
aWxkZXImKTsKQEAgLTcyMCw3ICs3MjAsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoVHJl
ZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgcGFyc2VFeHByZXNzaW9uT3JMYWJlbFN0YXRlbWVudChUcmVlQnVpbGRlciYpOwogICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUlmU3RhdGVtZW50
KFRyZWVCdWlsZGVyJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNf
SU5MSU5FIFRyZWVTdGF0ZW1lbnQgcGFyc2VCbG9ja1N0YXRlbWVudChUcmVlQnVpbGRlciYpOwor
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUJsb2Nr
U3RhdGVtZW50KFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzc2lvbiBwYXJzZUV4cHJlc3Npb24oVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlQXNzaWdubWVudEV4
cHJlc3Npb24oVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24o
VHJlZUJ1aWxkZXImKTsKQEAgLTczMCwxOSArNzMwLDE5IEBAIHByaXZhdGU6CiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBhcnNl
UHJpbWFyeUV4cHJlc3Npb24oVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VBcnJheUxpdGVyYWwo
VHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19J
TkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VPYmplY3RMaXRlcmFsKFRyZWVCdWlsZGVyJik7Ci0g
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVFeHByZXNz
aW9uIHBhcnNlU3RyaWN0T2JqZWN0TGl0ZXJhbChUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBhcnNlU3Ry
aWN0T2JqZWN0TGl0ZXJhbChUcmVlQnVpbGRlciYpOwogICAgIGVudW0gU3ByZWFkTW9kZSB7IEFs
bG93U3ByZWFkLCBEb250QWxsb3dTcHJlYWQgfTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUFyZ3VtZW50cyBwYXJzZUFyZ3VtZW50cyhUcmVlQnVp
bGRlciYsIFNwcmVhZE1vZGUpOwotICAgIHRlbXBsYXRlIDxib29sIHN0cmljdCwgY2xhc3MgVHJl
ZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZVByb3BlcnR5IHBhcnNlUHJvcGVydHkoVHJlZUJ1
aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBw
YXJzZVByb3BlcnR5KFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QpOwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVu
Y3Rpb25Cb2R5KFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBBTFdBWVNfSU5MSU5FIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcnNlRm9ybWFsUGFyYW1l
dGVycyhUcmVlQnVpbGRlciYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxX
QVlTX0lOTElORSBUcmVlRXhwcmVzc2lvbiBwYXJzZVZhckRlY2xhcmF0aW9uTGlzdChUcmVlQnVp
bGRlciYsIGludCYgZGVjbGFyYXRpb25zLCBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuJiBsYXN0
UGF0dGVybiwgVHJlZUV4cHJlc3Npb24mIGxhc3RJbml0aWFsaXplciwgSlNUZXh0UG9zaXRpb24m
IGlkZW50U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBp
bml0RW5kKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUg
VHJlZUNvbnN0RGVjbExpc3QgcGFyc2VDb25zdERlY2xhcmF0aW9uTGlzdChUcmVlQnVpbGRlciYp
OworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFyc2VW
YXJEZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9ucywgVHJlZURl
Y29uc3RydWN0aW9uUGF0dGVybiYgbGFzdFBhdHRlcm4sIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5p
dGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9uJiBpZGVudFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5p
dFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdEVuZCk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNvbnN0RGVjbExpc3QgcGFyc2VDb25zdERlY2xh
cmF0aW9uTGlzdChUcmVlQnVpbGRlciYpOwogCi0gICAgdGVtcGxhdGUgPERlY29uc3RydWN0aW9u
S2luZCwgY2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZURlY29uc3RydWN0aW9u
UGF0dGVybiBjcmVhdGVCaW5kaW5nUGF0dGVybihUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZp
ZXImLCBpbnQgZGVwdGgpOwotICAgIHRlbXBsYXRlIDxEZWNvbnN0cnVjdGlvbktpbmQsIGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIHBhcnNlRGVjb25zdHJ1Y3Rp
b25QYXR0ZXJuKFRyZWVCdWlsZGVyJiwgaW50IGRlcHRoID0gMCk7CisgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZURlY29uc3RydWN0aW9uUGF0dGVybiBj
cmVhdGVCaW5kaW5nUGF0dGVybihUcmVlQnVpbGRlciYsIERlY29uc3RydWN0aW9uS2luZCwgY29u
c3QgSWRlbnRpZmllciYsIGludCBkZXB0aCk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBORVZFUl9JTkxJTkUgVHJlZURlY29uc3RydWN0aW9uUGF0dGVybiBwYXJzZURlY29uc3Ry
dWN0aW9uUGF0dGVybihUcmVlQnVpbGRlciYsIERlY29uc3RydWN0aW9uS2luZCwgaW50IGRlcHRo
ID0gMCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJl
ZURlY29uc3RydWN0aW9uUGF0dGVybiB0cnlQYXJzZURlY29uc3RydWN0aW9uUGF0dGVybkV4cHJl
c3Npb24oVHJlZUJ1aWxkZXImKTsKLSAgICB0ZW1wbGF0ZSA8RnVuY3Rpb25SZXF1aXJlbWVudHMs
IEZ1bmN0aW9uUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBjbGFzcyBU
cmVlQnVpbGRlcj4gYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIGNvbnN0IElk
ZW50aWZpZXIqJiwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QmLCBUcmVlRnVuY3Rpb25Cb2R5Jiwg
dW5zaWduZWQmIG9wZW5CcmFjZU9mZnNldCwgdW5zaWduZWQmIGNsb3NlQnJhY2VPZmZzZXQsIGlu
dCYgYm9keVN0YXJ0TGluZSwgdW5zaWduZWQmIGJvZHlTdGFydENvbHVtbik7CisgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5m
byhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBGdW5jdGlvblBhcnNlTW9kZSwg
Ym9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgY29uc3QgSWRlbnRpZmllciomLCBUcmVlRm9y
bWFsUGFyYW1ldGVyTGlzdCYsIFRyZWVGdW5jdGlvbkJvZHkmLCB1bnNpZ25lZCYgb3BlbkJyYWNl
T2Zmc2V0LCB1bnNpZ25lZCYgY2xvc2VCcmFjZU9mZnNldCwgaW50JiBib2R5U3RhcnRMaW5lLCB1
bnNpZ25lZCYgYm9keVN0YXJ0Q29sdW1uKTsKICAgICBBTFdBWVNfSU5MSU5FIGludCBpc0JpbmFy
eU9wZXJhdG9yKEpTVG9rZW5UeXBlKTsKICAgICBib29sIGFsbG93QXV0b21hdGljU2VtaWNvbG9u
KCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
CmluZGV4IDI1NDgyMmJkM2NjOWJjYjUxYWMyZDI0ZmZiMGZlMTViZWJmMTFkZmUuLjcxZTg3MWE4
ZTk4YTY4NjQ3M2E3Y2E3ODU1MTMzMjA1MjA3ZWZlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xNjAsMjAgKzE2MCwyMCBAQCBwdWJsaWM6
CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlU3ByZWFkRXhwcmVzc2lvbihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQog
ICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCkg
eyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgdGVtcGxhdGUgPGJvb2wgY29t
cGxldGU+IFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIGlu
dCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUpCisgICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHko
Y29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9v
bCBjb21wbGV0ZSkKICAgICB7CiAgICAgICAgIGlmICghY29tcGxldGUpCiAgICAgICAgICAgICBy
ZXR1cm4gUHJvcGVydHkodHlwZSk7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKICAgICAgICAgcmV0
dXJuIFByb3BlcnR5KG5hbWUsIHR5cGUpOwogICAgIH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBjb21w
bGV0ZT4gUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoVk0qIHZtLCBkb3VibGUgbmFtZSwgaW50LCBQ
cm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSkKKyAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShWTSog
dm0sIGRvdWJsZSBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sIGNvbXBs
ZXRlKQogICAgIHsKICAgICAgICAgaWYgKCFjb21wbGV0ZSkKICAgICAgICAgICAgIHJldHVybiBQ
cm9wZXJ0eSh0eXBlKTsKICAgICAgICAgcmV0dXJuIFByb3BlcnR5KCZ2bS0+cGFyc2VyQXJlbmEt
PmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcih2bSwgbmFtZSksIHR5cGUp
OwogICAgIH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBjb21wbGV0ZT4gUHJvcGVydHkgY3JlYXRlUHJv
cGVydHkoVk0qLCBFeHByZXNzaW9uTm9kZSosIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUp
CisgICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoVk0qLCBFeHByZXNzaW9uTm9kZSosIGludCwg
UHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wpCiAgICAgewogICAgICAgICByZXR1cm4gUHJv
cGVydHkodHlwZSk7CiAgICAgfQpAQCAtMjEyLDE0ICsyMTIsMTQgQEAgcHVibGljOgogICAgIGlu
dCBjcmVhdGVEZWJ1Z2dlcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCkgeyByZXR1
cm4gMTsgfQogICAgIGludCBjcmVhdGVDb25zdFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGFwcGVuZENvbnN0RGVj
bChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsg
cmV0dXJuIDE7IH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdl
dHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2Rl
OjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCkKKyAgICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sIHN0
cmljdCwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50KQogICAgIHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwogICAgICAgICBpZiAoIXN0cmlj
dCkKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICAgICAgcmV0dXJuIFBy
b3BlcnR5KG5hbWUsIHR5cGUpOwogICAgIH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFBy
b3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0qIHZtLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkKKyAgICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNl
dHRlclByb3BlcnR5KFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2Rl
OjpUeXBlIHR5cGUsIGJvb2wgc3RyaWN0LCBkb3VibGUgbmFtZSwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KQogICAgIHsKICAgICAgICAgaWYgKCFzdHJpY3QpCiAgICAgICAgICAg
ICByZXR1cm4gUHJvcGVydHkodHlwZSk7Cg==
</data>
<flag name="review"
          id="242453"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>