<?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>42014</bug_id>
          
          <creation_ts>2010-07-09 17:54:14 -0700</creation_ts>
          <short_desc>Tidy up lexer token ids</short_desc>
          <delta_ts>2010-07-10 12:48:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>249401</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-07-09 17:54:14 -0700</bug_when>
    <thetext>Tidy up lexer token ids</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249402</commentid>
    <comment_count>1</comment_count>
      <attachid>61127</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-07-09 17:55:51 -0700</bug_when>
    <thetext>Created attachment 61127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249405</commentid>
    <comment_count>2</comment_count>
      <attachid>61127</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-09 17:59:01 -0700</bug_when>
    <thetext>Comment on attachment 61127
Patch

You need to change parseEQUALmentExpression, m_EQUALmentCount, and initialEQUALments back.

Also, why do these token enum values all need TO SHOUT ALL THE TIME. I CAN HEAR THEM EVEN IN MIXED CASE.

Typically people do that with macros because they are so dangerous, but if they’re just normal C objects I suggest not using all capitals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249408</commentid>
    <comment_count>3</comment_count>
      <attachid>61130</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-07-09 18:11:30 -0700</bug_when>
    <thetext>Created attachment 61130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249417</commentid>
    <comment_count>4</comment_count>
      <attachid>61130</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-07-09 18:19:18 -0700</bug_when>
    <thetext>Comment on attachment 61130
Patch

r+, assuming you&apos;ve convinced Darin that the level of SHOUTiness is okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249424</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-07-09 18:26:22 -0700</bug_when>
    <thetext>Committed r63024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249441</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-09 19:07:30 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/63024 might have broken Qt Linux Release minimal
The following changes are on the blame list:
http://trac.webkit.org/changeset/63024
http://trac.webkit.org/changeset/63025</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249477</commentid>
    <comment_count>7</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-07-09 23:38:49 -0700</bug_when>
    <thetext>Uh, this patch will conflict with my patch submitted two days ago:
https://bugs.webkit.org/show_bug.cgi?id=41845

I will resolve the conflict on Monday, but any thoughts welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249543</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-07-10 12:30:35 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Uh, this patch will conflict with my patch submitted two days ago:
&gt; https://bugs.webkit.org/show_bug.cgi?id=41845
&gt; 
&gt; I will resolve the conflict on Monday, but any thoughts welcome.

Argh, sorry i thought i had reviewed that :-(

I can have a look at resolving the conflicts if you want?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249548</commentid>
    <comment_count>9</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-07-10 12:48:27 -0700</bug_when>
    <thetext>&gt; I can have a look at resolving the conflicts if you want?

No need, thanks. This will be an easy task (hopefully). Will submit the patch on Monday.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61127</attachid>
            <date>2010-07-09 17:55:51 -0700</date>
            <delta_ts>2010-07-09 18:11:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42014-20100709175550.patch</filename>
            <type>text/plain</type>
            <size>51784</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiNjNiODI2MzBkMGQ3NmZjNTYwZWZlYTcwZjMwNzE3Zjk1YmQxZjMxLi5k
YzY0NzIyMWYzMjRhYmUzMGNiMzQ3ODU1NDRlNjEwNmMyZjM2ZjA3IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsNjIgQEAKIDIwMTAtMDctMDkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
IAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaWR5IHVw
IGxleGVyIHRva2VuIGlkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDIwMTQKKworICAgICAgICBTdG9wIHVzaW5nIGNoYXJhY3RlciBsaXRlcmFscyB0
byBpZGVudGlmeSBzaW5nbGUgY2hhcmFjdGVyIHRva2VucworICAgICAgICBhbmQgaW5zdGVhZCB1
c2Ugc3ltYm9saWMgbmFtZXMgZm9yIGFsbCB0b2tlbnMuCisKKyAgICAgICAgKiBwYXJzZXIvQVNU
QnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZSk6Cisg
ICAgICAgICogcGFyc2VyL0pTUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OmNv
bnN1bWUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6bWF0Y2gpOgorICAgICAgICAoSlNDOjpK
U1BhcnNlcjo6YXV0b1NlbWlDb2xvbik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpKU1BhcnNl
cik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVByb2dyYW0pOgorICAgICAgICAoSlND
OjpKU1BhcnNlcjo6YWxsb3dBdXRvbWF0aWNTZW1pY29sb24pOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6cGFyc2VEb1doaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlV2hpbGVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VWYXJEZWNs
YXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VDb25zdERlY2xhcmF0
aW9uTGlzdCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUZvclN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVJldHVyblN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkpTUGFyc2VyOjpwYXJzZVdpdGhTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNl
cjo6cGFyc2VTd2l0Y2hTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VT
d2l0Y2hDbGF1c2VzKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlU3dpdGNoRGVmYXVs
dENsYXVzZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVRyeVN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZURlYnVnZ2VyU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6SlNQYXJzZXI6OnBhcnNlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6
OnBhcnNlRm9ybWFsUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUZ1
bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25Pckxh
YmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlSWZTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKEpT
Qzo6SlNQYXJzZXI6OnBhcnNlRVFVQUxtZW50RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OkpT
UGFyc2VyOjpwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OmlzVW5h
cnlPcCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjppc0JpbmFyeU9wZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlQmluYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6
OkpTUGFyc2VyOjpwYXJzZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNl
T2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVN0cmljdE9iamVj
dExpdGVyYWwpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VBcnJheUxpdGVyYWwpOgor
ICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAg
IChKU0M6OkpTUGFyc2VyOjpwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkpTUGFyc2Vy
OjpwYXJzZU1lbWJlckV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VV
bmFyeUV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9KU1BhcnNlci5oOgorICAgICAgICAo
SlNDOjopOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Oik6Cisg
ICAgICAgIChKU0M6OkxleGVyOjpsZXgpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5oOgorCisy
MDEwLTA3LTA5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKICAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCiAKICAgICAgICAgUmVtb3ZlIGEgY291cGxlIG9mIGV4
Y2VzcyB3cml0ZXMgZnJvbSB0aGUgbGV4ZXIKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmlu
ZGV4IDlkNWRlMmRlYjhlYjYzMzhjYWEzODMzMWI3MzdlMDJjMDBlOTgzYjUuLjNiN2ZmYjU1ZTg0
NWM0NzMyYTI2OWJlOWQ2MGRlMjM4Nzc0ZmFhNGUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaApAQCAtNzYyLDEzICs3NjIsMTMgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VCaW5hcnlOb2RlKGludCB0b2tlbiwgcGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmEKICAgICBj
YXNlIEFORDoKICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dpY2FsT3BOb2Rl
KG1fZ2xvYmFsRGF0YSwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIE9wTG9naWNhbEFuZCk7CiAKLSAg
ICBjYXNlICd8JzoKKyAgICBjYXNlIEJJVE9SOgogICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEJpdE9yTm9kZShtX2dsb2JhbERhdGEsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMu
c2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCi0gICAgY2FzZSAnXic6CisgICAgY2FzZSBCSVRYT1I6
CiAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0WE9yTm9kZShtX2dsb2JhbERh
dGEsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCi0g
ICAgY2FzZSAnJic6CisgICAgY2FzZSBCSVRBTkQ6CiAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgQml0QW5kTm9kZShtX2dsb2JhbERhdGEsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBy
aHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBFUUVROgpAQCAtNzgzLDEwICs3
ODMsMTAgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaW5hcnlOb2RlKGludCB0
b2tlbiwgcGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmEKICAgICBjYXNlIFNUUk5FUToKICAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOb3RTdHJpY3RFcXVhbE5vZGUobV9nbG9iYWxE
YXRhLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAot
ICAgIGNhc2UgJzwnOgorICAgIGNhc2UgTFQ6CiAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgTGVzc05vZGUobV9nbG9iYWxEYXRhLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNl
Y29uZC5oYXNBc3NpZ25tZW50KTsKIAotICAgIGNhc2UgJz4nOgorICAgIGNhc2UgR1Q6CiAgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgR3JlYXRlck5vZGUobV9nbG9iYWxEYXRhLCBs
aHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNh
c2UgTEU6CkBAIC04MTYsMTkgKzgxNiwxOSBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZUJpbmFyeU5vZGUoaW50IHRva2VuLCBwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYQogICAg
IGNhc2UgVVJTSElGVDoKICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbnNpZ25l
ZFJpZ2h0U2hpZnROb2RlKG1fZ2xvYmFsRGF0YSwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKLSAgICBjYXNlICcrJzoKKyAgICBjYXNlIFBMVVM6CiAg
ICAgICAgIHJldHVybiBtYWtlQWRkTm9kZShsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29u
ZC5oYXNBc3NpZ25tZW50KTsKIAotICAgIGNhc2UgJy0nOgorICAgIGNhc2UgTUlOVVM6CiAgICAg
ICAgIHJldHVybiBtYWtlU3ViTm9kZShsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5o
YXNBc3NpZ25tZW50KTsKIAotICAgIGNhc2UgJyonOgorICAgIGNhc2UgVElNRVM6CiAgICAgICAg
IHJldHVybiBtYWtlTXVsdE5vZGUobGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CiAKLSAgICBjYXNlICcvJzoKKyAgICBjYXNlIERJVklERToKICAgICAgICAg
cmV0dXJuIG1ha2VEaXZOb2RlKGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fz
c2lnbm1lbnQpOwogCi0gICAgY2FzZSAnJSc6CisgICAgY2FzZSBNT0Q6CiAgICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgTW9kTm9kZShtX2dsb2JhbERhdGEsIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogICAgIH0KICAgICBDUkFTSCgpOwpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmNwcCBiL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9KU1BhcnNlci5jcHAKaW5kZXggODQyMzE2MmU4MmVmNTk0MWE4ZTQzYzkx
ZmQ4MDkzNzYwOGZkM2Q1Zi4uZjg2ZjUyZjFkMzVjZWQ0NzQ4ZTNlNjQ4OTIxOTU0ODg5NDg1OTQ5
OSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmNwcAorKysgYi9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHByaXZh
dGU6CiAgICAgICAgIG1fdG9rZW5Db3VudCsrOwogICAgIH0KIAotICAgIGJvb2wgY29uc3VtZShp
bnQgZXhwZWN0ZWQpCisgICAgYm9vbCBjb25zdW1lKEpTVG9rZW5UeXBlIGV4cGVjdGVkKQogICAg
IHsKICAgICAgICAgYm9vbCByZXN1bHQgPSBtX3Rva2VuLm1fdHlwZSA9PSBleHBlY3RlZDsKICAg
ICAgICAgZmFpbElmRmFsc2UocmVzdWx0KTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGJvb2wgbWF0Y2goaW50IGV4cGVj
dGVkKQorICAgIGJvb2wgbWF0Y2goSlNUb2tlblR5cGUgZXhwZWN0ZWQpCiAgICAgewogICAgICAg
ICByZXR1cm4gbV90b2tlbi5tX3R5cGUgPT0gZXhwZWN0ZWQ7CiAgICAgfQpAQCAtMTQzLDcgKzE0
Myw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IHBhcnNlSWZTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZVN0YXRlbWVudCBwYXJzZUJsb2NrU3Rh
dGVtZW50KFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBwYXJzZUV4cHJlc3Npb24oVHJlZUJ1aWxkZXImKTsKLSAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlQXNzaWdubWVudEV4cHJl
c3Npb24oVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIHBhcnNlRVFVQUxtZW50RXhwcmVzc2lvbihUcmVlQnVpbGRlciYpOwogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRXhwcmVzc2lv
biBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihUcmVlQnVpbGRlciYpOwogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRXhwcmVzc2lvbiBwYXJzZUJp
bmFyeUV4cHJlc3Npb24oVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VVbmFyeUV4cHJlc3Npb24o
VHJlZUJ1aWxkZXImKTsKQEAgLTE2MCwxMiArMTYwLDEyIEBAIHByaXZhdGU6CiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVDb25zdERlY2xMaXN0IHBh
cnNlQ29uc3REZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImIGNvbnRleHQpOwogICAgIGVudW0g
RnVuY3Rpb25SZXF1aXJlbWVudHMgeyBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBGdW5jdGlvbk5l
ZWRzTmFtZSB9OwogICAgIHRlbXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50cywgY2xhc3MgVHJl
ZUJ1aWxkZXI+IGJvb2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVu
dGlmaWVyKiYsIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0JiwgVHJlZUZ1bmN0aW9uQm9keSYsIGlu
dCYgb3BlbkJyYWNlLCBpbnQmIGNsb3NlQnJhY2UsIGludCYgYm9keVN0YXJ0TGluZSk7Ci0gICAg
aW50IGlzQmluYXJ5T3BlcmF0b3IoaW50IHRva2VuKTsKKyAgICBpbnQgaXNCaW5hcnlPcGVyYXRv
cihKU1Rva2VuVHlwZSB0b2tlbik7CiAgICAgYm9vbCBhbGxvd0F1dG9tYXRpY1NlbWljb2xvbigp
OwogCiAgICAgYm9vbCBhdXRvU2VtaUNvbG9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0b2tlbigp
Lm1fdHlwZSA9PSAnOycpIHsKKyAgICAgICAgaWYgKHRva2VuKCkubV90eXBlID09IFNFTUlDT0xP
TikgewogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KQEAgLTE5NCw3ICsxOTQsNyBAQCBwcml2YXRlOgogICAgIGludCBtX3Rva2VuQ291bnQ7
CiAgICAgaW50IG1fbGFzdExpbmU7CiAgICAgaW50IG1fbGFzdFRva2VuRW5kOwotICAgIGludCBt
X2Fzc2lnbm1lbnRDb3VudDsKKyAgICBpbnQgbV9FUVVBTG1lbnRDb3VudDsKICAgICBpbnQgbV9u
b25MSFNDb3VudDsKICAgICBib29sIG1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZDsKIH07CkBAIC0y
MTQsNyArMjE0LDcgQEAgSlNQYXJzZXI6OkpTUGFyc2VyKExleGVyKiBsZXhlciwgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VQcm92aWRlciogcHJvdmkKICAgICAsIG1fdG9rZW5Db3Vu
dCgwKQogICAgICwgbV9sYXN0TGluZSgwKQogICAgICwgbV9sYXN0VG9rZW5FbmQoMCkKLSAgICAs
IG1fYXNzaWdubWVudENvdW50KDApCisgICAgLCBtX0VRVUFMbWVudENvdW50KDApCiAgICAgLCBt
X25vbkxIU0NvdW50KDApCiAgICAgLCBtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQocHJvdmlkZXIt
PmlzVmFsaWQoKSkKIHsKQEAgLTIzMiw3ICsyMzIsNyBAQCBib29sIEpTUGFyc2VyOjpwYXJzZVBy
b2dyYW0oKQogewogICAgIEFTVEJ1aWxkZXIgY29udGV4dChtX2dsb2JhbERhdGEsIG1fbGV4ZXIp
OwogICAgIFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVu
dHM8QVNUQnVpbGRlcj4oY29udGV4dCk7Ci0gICAgaWYgKCFzb3VyY2VFbGVtZW50cyB8fCAhY29u
c3VtZSgwKSkKKyAgICBpZiAoIXNvdXJjZUVsZW1lbnRzIHx8ICFjb25zdW1lKEVPRlRPSykpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIG1fZ2xvYmFsRGF0YS0+cGFyc2VyLT5kaWRGaW5pc2hQ
YXJzaW5nKHNvdXJjZUVsZW1lbnRzLCBjb250ZXh0LnZhckRlY2xhcmF0aW9ucygpLCBjb250ZXh0
LmZ1bmNEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mZWF0dXJlcygpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXN0TGluZSwgY29udGV4dC5udW1Db25zdGFu
dHMoKSk7CkBAIC0yNDEsNyArMjQxLDcgQEAgYm9vbCBKU1BhcnNlcjo6cGFyc2VQcm9ncmFtKCkK
IAogYm9vbCBKU1BhcnNlcjo6YWxsb3dBdXRvbWF0aWNTZW1pY29sb24oKQogewotICAgIHJldHVy
biBtYXRjaChDTE9TRUJSQUNFKSB8fCBtYXRjaCgwKSB8fCBtX2xleGVyLT5wcmV2VGVybWluYXRv
cigpOworICAgIHJldHVybiBtYXRjaChDTE9TRUJSQUNFKSB8fCBtYXRjaChFT0ZUT0spIHx8IG1f
bGV4ZXItPnByZXZUZXJtaW5hdG9yKCk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIEpTUGFyc2VyOjpwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVC
dWlsZGVyJiBjb250ZXh0KQpAQCAtMjkyLDExICsyOTIsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZURvV2hpbGVTdGF0ZW1lbnQo
VHJlZUIKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIGludCBlbmRMaW5lID0gdG9r
ZW5MaW5lKCk7CiAgICAgY29uc3VtZU9yRmFpbChXSElMRSk7Ci0gICAgY29uc3VtZU9yRmFpbCgn
KCcpOworICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKICAgICBUcmVlRXhwcmVzc2lvbiBl
eHByID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGV4cHIpOwot
ICAgIGNvbnN1bWVPckZhaWwoJyknKTsKLSAgICBpZiAobWF0Y2goJzsnKSkKKyAgICBjb25zdW1l
T3JGYWlsKENMT1NFUEFSRU4pOworICAgIGlmIChtYXRjaChTRU1JQ09MT04pKQogICAgICAgICBu
ZXh0KCk7IC8vIEFsd2F5cyBwZXJmb3JtcyBhdXRvbWF0aWMgc2VtaWNvbG9uIGluc2VydGlvbi4K
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVEb1doaWxlU3RhdGVtZW50KHN0YXRlbWVudCwgZXhw
ciwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KQEAgLTMwNiwxMSArMzA2LDExIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VXaGlsZVN0
YXRlbWVudChUcmVlQnVpCiAgICAgQVNTRVJUKG1hdGNoKFdISUxFKSk7CiAgICAgaW50IHN0YXJ0
TGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKLSAgICBjb25zdW1lT3JGYWlsKCcoJyk7
CisgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIg
PSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAg
aW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICBjb25zdW1lT3JGYWlsKCcpJyk7CisgICAg
Y29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9
IHBhcnNlU3RhdGVtZW50KGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlV2hpbGVTdGF0ZW1lbnQoZXhwciwgc3RhdGVtZW50LCBz
dGFydExpbmUsIGVuZExpbmUpOwpAQCAtMzI5LDI1ICszMjksMjUgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VWYXJEZWNsYXJhdGlv
bkxpc3QoVHIKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbmFtZSA9IHRva2VuKCkubV9kYXRh
LmlkZW50OwogICAgICAgICBsYXN0SWRlbnQgPSBuYW1lOwogICAgICAgICBuZXh0KCk7Ci0gICAg
ICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBtYXRjaCgnPScpOworICAgICAgICBib29sIGhhc0lu
aXRpYWxpemVyID0gbWF0Y2goRVFVQUwpOwogICAgICAgICBjb250ZXh0LmFkZFZhcihuYW1lLCAo
aGFzSW5pdGlhbGl6ZXIgfHwgKCFtX2FsbG93c0luICYmIG1hdGNoKElOVE9LRU4pKSkgPyBEZWNs
YXJhdGlvblN0YWNrczo6SGFzSW5pdGlhbGl6ZXIgOiAwKTsKICAgICAgICAgaWYgKGhhc0luaXRp
YWxpemVyKSB7CiAgICAgICAgICAgICBpbnQgdmFyRGl2b3QgPSB0b2tlblN0YXJ0KCkgKyAxOwog
ICAgICAgICAgICAgaW5pdFN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgICAgICAgICAgbmV4dCgp
OyAvLyBjb25zdW1lICc9JwotICAgICAgICAgICAgaW50IGluaXRpYWxBc3NpZ25tZW50cyA9IG1f
YXNzaWdubWVudENvdW50OwotICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gaW5pdGlhbGl6ZXIg
PSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOworICAgICAgICAgICAgaW50IGlu
aXRpYWxFUVVBTG1lbnRzID0gbV9FUVVBTG1lbnRDb3VudDsKKyAgICAgICAgICAgIFRyZWVFeHBy
ZXNzaW9uIGluaXRpYWxpemVyID0gcGFyc2VFUVVBTG1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwog
ICAgICAgICAgICAgaW5pdEVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgbGFzdElu
aXRpYWxpemVyID0gaW5pdGlhbGl6ZXI7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShpbml0aWFs
aXplcik7CiAKLSAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBjb250ZXh0LmNyZWF0
ZUFzc2lnblJlc29sdmUoKm5hbWUsIGluaXRpYWxpemVyLCBpbml0aWFsQXNzaWdubWVudHMgIT0g
bV9hc3NpZ25tZW50Q291bnQsIHZhclN0YXJ0LCB2YXJEaXZvdCwgbGFzdFRva2VuRW5kKCkpOwor
ICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IGNvbnRleHQuY3JlYXRlQXNzaWduUmVz
b2x2ZSgqbmFtZSwgaW5pdGlhbGl6ZXIsIGluaXRpYWxFUVVBTG1lbnRzICE9IG1fRVFVQUxtZW50
Q291bnQsIHZhclN0YXJ0LCB2YXJEaXZvdCwgbGFzdFRva2VuRW5kKCkpOwogICAgICAgICAgICAg
aWYgKCF2YXJEZWNscykKICAgICAgICAgICAgICAgICB2YXJEZWNscyA9IG5vZGU7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdmFyRGVjbHMgPSBjb250ZXh0LmNvbWJpbmVDb21t
YU5vZGVzKHZhckRlY2xzLCBub2RlKTsKICAgICAgICAgfQotICAgIH0gd2hpbGUgKG1hdGNoKCcs
JykpOworICAgIH0gd2hpbGUgKG1hdGNoKENPTU1BKSk7CiAgICAgcmV0dXJuIHZhckRlY2xzOwog
fQogCkBAIC0zNjAsMTcgKzM2MCwxNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVDb25zdERlY2xMaXN0IEpTUGFyc2VyOjpwYXJzZUNvbnN0RGVjbGFyYXRpb25MaQogICAgICAg
ICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG5hbWUgPSB0
b2tlbigpLm1fZGF0YS5pZGVudDsKICAgICAgICAgbmV4dCgpOwotICAgICAgICBib29sIGhhc0lu
aXRpYWxpemVyID0gbWF0Y2goJz0nKTsKKyAgICAgICAgYm9vbCBoYXNJbml0aWFsaXplciA9IG1h
dGNoKEVRVUFMKTsKICAgICAgICAgY29udGV4dC5hZGRWYXIobmFtZSwgRGVjbGFyYXRpb25TdGFj
a3M6OklzQ29uc3RhbnQgfCAoaGFzSW5pdGlhbGl6ZXIgPyBEZWNsYXJhdGlvblN0YWNrczo6SGFz
SW5pdGlhbGl6ZXIgOiAwKSk7CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGluaXRpYWxpemVyID0g
MDsKICAgICAgICAgaWYgKGhhc0luaXRpYWxpemVyKSB7CiAgICAgICAgICAgICBuZXh0KCk7IC8v
IGNvbnN1bWUgJz0nCi0gICAgICAgICAgICBpbml0aWFsaXplciA9IHBhcnNlQXNzaWdubWVudEV4
cHJlc3Npb24oY29udGV4dCk7CisgICAgICAgICAgICBpbml0aWFsaXplciA9IHBhcnNlRVFVQUxt
ZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgfQogICAgICAgICB0YWlsID0gY29udGV4
dC5hcHBlbmRDb25zdERlY2wodGFpbCwgbmFtZSwgaW5pdGlhbGl6ZXIpOwogICAgICAgICBpZiAo
IWNvbnN0RGVjbHMpCiAgICAgICAgICAgICBjb25zdERlY2xzID0gdGFpbDsKLSAgICB9IHdoaWxl
IChtYXRjaCgnLCcpKTsKKyAgICB9IHdoaWxlIChtYXRjaChDT01NQSkpOwogICAgIHJldHVybiBj
b25zdERlY2xzOwogfQogCkBAIC0zNzksNyArMzc5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUZvclN0YXRlbWVudChUcmVlQnVp
bGQKICAgICBBU1NFUlQobWF0Y2goRk9SKSk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGlu
ZSgpOwogICAgIG5leHQoKTsKLSAgICBjb25zdW1lT3JGYWlsKCcoJyk7CisgICAgY29uc3VtZU9y
RmFpbChPUEVOUEFSRU4pOwogICAgIGludCBub25MSFNDb3VudCA9IG1fbm9uTEhTQ291bnQ7CiAg
ICAgaW50IGRlY2xhcmF0aW9ucyA9IDA7CiAgICAgaW50IGRlY2xzU3RhcnQgPSAwOwpAQCAtNDA0
LDcgKzQwNCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBK
U1BhcnNlcjo6cGFyc2VGb3JTdGF0ZW1lbnQoVHJlZUJ1aWxkCiAgICAgICAgICAgICBmYWlsKCk7
CiAKICAgICAgICAgLy8gUmVtYWluZGVyIG9mIGEgc3RhbmRhcmQgZm9yIGxvb3AgaXMgaGFuZGxl
ZCBpZGVudGljYWxseQotICAgICAgICBpZiAoZGVjbGFyYXRpb25zID4gMSB8fCBtYXRjaCgnOycp
KQorICAgICAgICBpZiAoZGVjbGFyYXRpb25zID4gMSB8fCBtYXRjaChTRU1JQ09MT04pKQogICAg
ICAgICAgICAgZ290byBzdGFuZGFyZEZvckxvb3A7CiAKICAgICAgICAgLy8gSGFuZGxlIGZvci1p
biB3aXRoIHZhciBkZWNsYXJhdGlvbgpAQCAtNDE3LDcgKzQxNyw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VGb3JTdGF0ZW1lbnQo
VHJlZUJ1aWxkCiAgICAgICAgIGludCBleHByRW5kID0gbGFzdFRva2VuRW5kKCk7CiAKICAgICAg
ICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICAgICAgY29uc3VtZU9yRmFpbCgnKScp
OworICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwogCiAgICAgICAgIFRyZWVTdGF0
ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAgICAgIGZhaWxJ
ZkZhbHNlKHN0YXRlbWVudCk7CkBAIC00MjUsNyArNDI1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUZvclN0YXRlbWVudChUcmVl
QnVpbGQKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGZvckluVGFyZ2V0
LCBmb3JJbkluaXRpYWxpemVyLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGluTG9jYXRp
b24sIGV4cHJFbmQsIGluaXRTdGFydCwgaW5pdEVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAg
ICB9CiAKLSAgICBpZiAoIW1hdGNoKCc7JykpIHsKKyAgICBpZiAoIW1hdGNoKFNFTUlDT0xPTikp
IHsKICAgICAgICAgbV9hbGxvd3NJbiA9IGZhbHNlOwogICAgICAgICBkZWNsc1N0YXJ0ID0gdG9r
ZW5TdGFydCgpOwogICAgICAgICBkZWNscyA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKQEAg
LTQzNCwyNSArNDM0LDI1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBKU1BhcnNlcjo6cGFyc2VGb3JTdGF0ZW1lbnQoVHJlZUJ1aWxkCiAgICAgICAgIGZhaWxJ
ZkZhbHNlKGRlY2xzKTsKICAgICB9CiAKLSAgICBpZiAobWF0Y2goJzsnKSkgeworICAgIGlmICht
YXRjaChTRU1JQ09MT04pKSB7CiAgICAgc3RhbmRhcmRGb3JMb29wOgogICAgICAgICAvLyBTdGFu
ZGFyZCBmb3IgbG9vcAogICAgICAgICBuZXh0KCk7CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGNv
bmRpdGlvbiA9IDA7CiAKLSAgICAgICAgaWYgKCFtYXRjaCgnOycpKSB7CisgICAgICAgIGlmICgh
bWF0Y2goU0VNSUNPTE9OKSkgewogICAgICAgICAgICAgY29uZGl0aW9uID0gcGFyc2VFeHByZXNz
aW9uKGNvbnRleHQpOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoY29uZGl0aW9uKTsKICAgICAg
ICAgfQotICAgICAgICBjb25zdW1lT3JGYWlsKCc7Jyk7CisgICAgICAgIGNvbnN1bWVPckZhaWwo
U0VNSUNPTE9OKTsKIAogICAgICAgICBUcmVlRXhwcmVzc2lvbiBpbmNyZW1lbnQgPSAwOwotICAg
ICAgICBpZiAoIW1hdGNoKCcpJykpIHsKKyAgICAgICAgaWYgKCFtYXRjaChDTE9TRVBBUkVOKSkg
ewogICAgICAgICAgICAgaW5jcmVtZW50ID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAg
ICAgICAgICAgZmFpbElmRmFsc2UoaW5jcmVtZW50KTsKICAgICAgICAgfQogICAgICAgICBpbnQg
ZW5kTGluZSA9IHRva2VuTGluZSgpOwotICAgICAgICBjb25zdW1lT3JGYWlsKCcpJyk7CisgICAg
ICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgc3Rh
dGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHN0
YXRlbWVudCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckxvb3AoZGVjbHMsIGNv
bmRpdGlvbiwgaW5jcmVtZW50LCBzdGF0ZW1lbnQsIGhhc0RlY2xhcmF0aW9uLCBzdGFydExpbmUs
IGVuZExpbmUpOwpAQCAtNDY1LDcgKzQ2NSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VGb3JTdGF0ZW1lbnQoVHJlZUJ1aWxkCiAg
ICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAgaW50IGV4cHJFbmQgPSBsYXN0VG9rZW5FbmQoKTsK
ICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwotICAgIGNvbnN1bWVPckZhaWwoJyknKTsK
KyAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwogICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVt
ZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50
KTsKICAgICAKQEAgLTUyMywxNCArNTIzLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VSZXR1cm5TdGF0ZW1lbnQoVHJlZUJ1CiAg
ICAgLy8gV2UgZG8gdGhlIGF1dG8gc2VtaWNvbG9uIGNoZWNrIGJlZm9yZSBhdHRlbXB0aW5nIHRv
IHBhcnNlIGFuIGV4cHJlc3Npb24KICAgICAvLyBhcyB3ZSBuZWVkIHRvIGVuc3VyZSB0aGUgYSBs
aW5lIGJyZWFrIGFmdGVyIHRoZSByZXR1cm4gY29ycmVjdGx5IHRlcm1pbmF0ZXMKICAgICAvLyB0
aGUgc3RhdGVtZW50Ci0gICAgaWYgKG1hdGNoKCc7JykpCisgICAgaWYgKG1hdGNoKFNFTUlDT0xP
TikpCiAgICAgICAgIGVuZExpbmUgID0gdG9rZW5MaW5lKCk7CiAgICAgaWYgKGF1dG9TZW1pQ29s
b24oKSkKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KDAsIHN0
YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAgVHJlZUV4cHJlc3Npb24gZXhwciA9
IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShleHByKTsKICAgICBl
bmQgPSBsYXN0VG9rZW5FbmQoKTsKLSAgICBpZiAobWF0Y2goJzsnKSkKKyAgICBpZiAobWF0Y2go
U0VNSUNPTE9OKSkKICAgICAgICAgZW5kTGluZSAgPSB0b2tlbkxpbmUoKTsKICAgICBmYWlsSWZG
YWxzZShhdXRvU2VtaUNvbG9uKCkpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJldHVyblN0
YXRlbWVudChleHByLCBzdGFydCwgZW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwpAQCAtNTU3LDE0
ICs1NTcsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpT
UGFyc2VyOjpwYXJzZVdpdGhTdGF0ZW1lbnQoVHJlZUJ1aWwKICAgICBBU1NFUlQobWF0Y2goV0lU
SCkpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7Ci0gICAg
Y29uc3VtZU9yRmFpbCgnKCcpOworICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKICAgICBp
bnQgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgVHJlZUV4cHJlc3Npb24gZXhwciA9IHBhcnNl
RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShleHByKTsKICAgICBpbnQgZW5k
ID0gbGFzdFRva2VuRW5kKCk7CiAKICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwotICAg
IGNvbnN1bWVPckZhaWwoJyknKTsKKyAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwogICAg
IAogICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7
CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKQEAgLTU3NywxMSArNTc3LDExIEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VTd2l0
Y2hTdGF0ZW1lbnQoVHJlZUJ1CiAgICAgQVNTRVJUKG1hdGNoKFNXSVRDSCkpOwogICAgIGludCBz
dGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7Ci0gICAgY29uc3VtZU9yRmFpbCgn
KCcpOworICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKICAgICBUcmVlRXhwcmVzc2lvbiBl
eHByID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGV4cHIpOwog
ICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgY29uc3VtZU9yRmFpbCgnKScpOwor
ICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOQlJB
Q0UpOwogCiAgICAgVHJlZUNsYXVzZUxpc3QgZmlyc3RDbGF1c2VzID0gcGFyc2VTd2l0Y2hDbGF1
c2VzKGNvbnRleHQpOwpAQCAtNjA1LDcgKzYwNSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUNsYXVzZUxpc3QgSlNQYXJzZXI6OnBhcnNlU3dpdGNoQ2xhdXNlcyhUcmVlQnVp
CiAgICAgbmV4dCgpOwogICAgIFRyZWVFeHByZXNzaW9uIGNvbmRpdGlvbiA9IHBhcnNlRXhwcmVz
c2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShjb25kaXRpb24pOwotICAgIGNvbnN1bWVP
ckZhaWwoJzonKTsKKyAgICBjb25zdW1lT3JGYWlsKENPTE9OKTsKICAgICBUcmVlU291cmNlRWxl
bWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCk7CiAgICAgZmFp
bElmRmFsc2Uoc3RhdGVtZW50cyk7CiAgICAgVHJlZUNsYXVzZSBjbGF1c2UgPSBjb250ZXh0LmNy
ZWF0ZUNsYXVzZShjb25kaXRpb24sIHN0YXRlbWVudHMpOwpAQCAtNjE2LDcgKzYxNiw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXVzZUxpc3QgSlNQYXJzZXI6OnBhcnNl
U3dpdGNoQ2xhdXNlcyhUcmVlQnVpCiAgICAgICAgIG5leHQoKTsKICAgICAgICAgVHJlZUV4cHJl
c3Npb24gY29uZGl0aW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWls
SWZGYWxzZShjb25kaXRpb24pOwotICAgICAgICBjb25zdW1lT3JGYWlsKCc6Jyk7CisgICAgICAg
IGNvbnN1bWVPckZhaWwoQ09MT04pOwogICAgICAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVt
ZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNl
KHN0YXRlbWVudHMpOwogICAgICAgICBjbGF1c2UgPSBjb250ZXh0LmNyZWF0ZUNsYXVzZShjb25k
aXRpb24sIHN0YXRlbWVudHMpOwpAQCAtNjMwLDcgKzYzMCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUNsYXVzZSBKU1BhcnNlcjo6cGFyc2VTd2l0Y2hEZWZhdWx0Q2xhdXNl
KFRyZWVCCiAgICAgaWYgKCFtYXRjaChERUZBVUxUKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
bmV4dCgpOwotICAgIGNvbnN1bWVPckZhaWwoJzonKTsKKyAgICBjb25zdW1lT3JGYWlsKENPTE9O
KTsKICAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVu
dHMoY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50cyk7CiAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlQ2xhdXNlKDAsIHN0YXRlbWVudHMpOwpAQCAtNjU0LDExICs2NTQsMTEgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJz
ZVRyeVN0YXRlbWVudChUcmVlQnVpbGQKIAogICAgIGlmIChtYXRjaChDQVRDSCkpIHsKICAgICAg
ICAgbmV4dCgpOwotICAgICAgICBjb25zdW1lT3JGYWlsKCcoJyk7CisgICAgICAgIGNvbnN1bWVP
ckZhaWwoT1BFTlBBUkVOKTsKICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgICAgICBp
ZGVudCA9IHRva2VuKCkubV9kYXRhLmlkZW50OwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIGNv
bnN1bWVPckZhaWwoJyknKTsKKyAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKICAg
ICAgICAgbWF0Y2hPckZhaWwoT1BFTkJSQUNFKTsKICAgICAgICAgaW50IGluaXRpYWxFdmFsQ291
bnQgPSBjb250ZXh0LmV2YWxDb3VudCgpOwogICAgICAgICBjYXRjaEJsb2NrID0gcGFyc2VCbG9j
a1N0YXRlbWVudChjb250ZXh0KTsKQEAgLTY4Miw3ICs2ODIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlRGVidWdnZXJTdGF0ZW1l
bnQoVHJlZQogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQgZW5kTGlu
ZSA9IHN0YXJ0TGluZTsKICAgICBuZXh0KCk7Ci0gICAgaWYgKG1hdGNoKCc7JykpCisgICAgaWYg
KG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAg
IGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
RGVidWdnZXIoc3RhcnRMaW5lLCBlbmRMaW5lKTsKQEAgLTcxNiw3ICs3MTYsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlU3RhdGVt
ZW50KFRyZWVCdWlsZGVyJgogICAgICAgICByZXR1cm4gcGFyc2VDb25zdERlY2xhcmF0aW9uKGNv
bnRleHQpOwogICAgIGNhc2UgRlVOQ1RJT046CiAgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9u
RGVjbGFyYXRpb24oY29udGV4dCk7Ci0gICAgY2FzZSAnOyc6CisgICAgY2FzZSBTRU1JQ09MT046
CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRW1wdHlTdGF0
ZW1lbnQoKTsKICAgICBjYXNlIElGOgpAQCAtNzQzLDcgKzc0Myw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VTdGF0ZW1lbnQoVHJl
ZUJ1aWxkZXImCiAgICAgICAgIHJldHVybiBwYXJzZVRyeVN0YXRlbWVudChjb250ZXh0KTsKICAg
ICBjYXNlIERFQlVHR0VSOgogICAgICAgICByZXR1cm4gcGFyc2VEZWJ1Z2dlclN0YXRlbWVudChj
b250ZXh0KTsKLSAgICBjYXNlIDA6CisgICAgY2FzZSBFT0ZUT0s6CiAgICAgY2FzZSBDQVNFOgog
ICAgIGNhc2UgQ0xPU0VCUkFDRToKICAgICBjYXNlIERFRkFVTFQ6CkBAIC03NjMsNyArNzYzLDcg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBK
U1BhcnNlcjo6cGFyc2VGb3JtYWxQYXJhbWUKICAgICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBs
aXN0ID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCp0b2tlbigpLm1fZGF0YS5p
ZGVudCk7CiAgICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgdGFpbCA9IGxpc3Q7CiAgICAgbmV4
dCgpOwotICAgIHdoaWxlIChtYXRjaCgnLCcpKSB7CisgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkg
ewogICAgICAgICBuZXh0KCk7CiAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQgPSB0b2tlbigpLm1fZGF0YS5pZGVudDsKQEAgLTc5MCwx
MyArNzkwLDEzIEBAIHRlbXBsYXRlIDxKU1BhcnNlcjo6RnVuY3Rpb25SZXF1aXJlbWVudHMgcmVx
dWlyZW1lbnRzLCBjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBKCiAgICAgICAgIG5leHQoKTsKICAg
ICB9IGVsc2UgaWYgKHJlcXVpcmVtZW50cyA9PSBGdW5jdGlvbk5lZWRzTmFtZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGNvbnN1bWVPckZhaWwoJygnKTsKKyAgICBjb25zdW1lT3JGYWls
KE9QRU5QQVJFTik7CiAgICAgYm9vbCB1c2VzQXJndW1lbnRzID0gZmFsc2U7Ci0gICAgaWYgKCFt
YXRjaCgnKScpKSB7CisgICAgaWYgKCFtYXRjaChDTE9TRVBBUkVOKSkgewogICAgICAgICBwYXJh
bWV0ZXJzID0gcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKGNvbnRleHQsIHVzZXNBcmd1bWVudHMpOwog
ICAgICAgICBmYWlsSWZGYWxzZShwYXJhbWV0ZXJzKTsKICAgICB9Ci0gICAgY29uc3VtZU9yRmFp
bCgnKScpOworICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgbWF0Y2hPckZhaWwo
T1BFTkJSQUNFKTsKIAogICAgIG9wZW5CcmFjZVBvcyA9IHRva2VuKCkubV9kYXRhLmludFZhbHVl
OwpAQCAtODQ3LDcgKzg0Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VFeHByZXNzaW9uT3JMYWJlbFN0YXRlCiAgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQoZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBt
X2xhc3RMaW5lKTsKICAgICBmYWlsSWZGYWxzZShjdXJyZW50VG9rZW4gKyAxID09IG1fdG9rZW5D
b3VudCk7CiAgICAgaW50IGVuZCA9IHRva2VuRW5kKCk7Ci0gICAgY29uc3VtZU9yRmFpbCgnOicp
OworICAgIGNvbnN1bWVPckZhaWwoQ09MT04pOwogICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50
ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsK
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVMYWJlbFN0YXRlbWVudChpZGVudCwgc3RhdGVtZW50
LCBzdGFydCwgZW5kKTsKQEAgLTg2OSwxMiArODY5LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VJZlN0YXRlbWVudChUcmVlQnVp
bGRlCiAgICAgaW50IHN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogCi0gICAgY29u
c3VtZU9yRmFpbCgnKCcpOworICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKIAogICAgIFRy
ZWVFeHByZXNzaW9uIGNvbmRpdGlvbiA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBm
YWlsSWZGYWxzZShjb25kaXRpb24pOwogICAgIGludCBlbmQgPSB0b2tlbkxpbmUoKTsKLSAgICBj
b25zdW1lT3JGYWlsKCcpJyk7CisgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKIAogICAg
IFRyZWVTdGF0ZW1lbnQgdHJ1ZUJsb2NrID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAg
ZmFpbElmRmFsc2UodHJ1ZUJsb2NrKTsKQEAgLTg5OCwxMiArODk4LDEyIEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VJZlN0YXRlbWVu
dChUcmVlQnVpbGRlCiAgICAgICAgIGludCBpbm5lclN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAg
ICAgIG5leHQoKTsKICAgICAgICAgCi0gICAgICAgIGNvbnN1bWVPckZhaWwoJygnKTsKKyAgICAg
ICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwogICAgICAgICAKICAgICAgICAgVHJlZUV4cHJl
c3Npb24gaW5uZXJDb25kaXRpb24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAg
IGZhaWxJZkZhbHNlKGlubmVyQ29uZGl0aW9uKTsKICAgICAgICAgaW50IGlubmVyRW5kID0gdG9r
ZW5MaW5lKCk7Ci0gICAgICAgIGNvbnN1bWVPckZhaWwoJyknKTsKKyAgICAgICAgY29uc3VtZU9y
RmFpbChDTE9TRVBBUkVOKTsKICAgICAgICAgCiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgaW5uZXJU
cnVlQmxvY2sgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2Uo
aW5uZXJUcnVlQmxvY2spOyAgICAgCkBAIC05NDAsMTggKzk0MCwxOCBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlSWZTdGF0ZW1lbnQo
VHJlZUJ1aWxkZQogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBK
U1BhcnNlcjo6cGFyc2VFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIGZh
aWxJZlN0YWNrT3ZlcmZsb3coKTsKLSAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gcGFyc2VBc3Np
Z25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKKyAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gcGFy
c2VFUVVBTG1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKG5vZGUpOwot
ICAgIGlmICghbWF0Y2goJywnKSkKKyAgICBpZiAoIW1hdGNoKENPTU1BKSkKICAgICAgICAgcmV0
dXJuIG5vZGU7CiAgICAgbmV4dCgpOwogICAgIG1fbm9uTEhTQ291bnQrKzsKLSAgICBUcmVlRXhw
cmVzc2lvbiByaWdodCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CisgICAg
VHJlZUV4cHJlc3Npb24gcmlnaHQgPSBwYXJzZUVRVUFMbWVudEV4cHJlc3Npb24oY29udGV4dCk7
CiAgICAgZmFpbElmRmFsc2UocmlnaHQpOwogICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpDb21t
YSBjb21tYU5vZGUgPSBjb250ZXh0LmNyZWF0ZUNvbW1hRXhwcihub2RlLCByaWdodCk7Ci0gICAg
d2hpbGUgKG1hdGNoKCcsJykpIHsKKyAgICB3aGlsZSAobWF0Y2goQ09NTUEpKSB7CiAgICAgICAg
IG5leHQoKTsKLSAgICAgICAgcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRl
eHQpOworICAgICAgICByaWdodCA9IHBhcnNlRVFVQUxtZW50RXhwcmVzc2lvbihjb250ZXh0KTsK
ICAgICAgICAgZmFpbElmRmFsc2UocmlnaHQpOwogICAgICAgICBjb250ZXh0LmFwcGVuZFRvQ29t
bWEoY29tbWFOb2RlLCByaWdodCk7CiAgICAgfQpAQCAtOTU5LDIzICs5NTksMjMgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VFeHBy
ZXNzaW9uKFRyZWVCdWlsZGUKIH0KIAogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKFRyZWVC
dWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VFUVVBTG1lbnRFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBj
b250ZXh0KQogewogICAgIGZhaWxJZlN0YWNrT3ZlcmZsb3coKTsKICAgICBpbnQgc3RhcnQgPSB0
b2tlblN0YXJ0KCk7Ci0gICAgaW50IGluaXRpYWxBc3NpZ25tZW50Q291bnQgPSBtX2Fzc2lnbm1l
bnRDb3VudDsKKyAgICBpbnQgaW5pdGlhbEVRVUFMbWVudENvdW50ID0gbV9FUVVBTG1lbnRDb3Vu
dDsKICAgICBpbnQgaW5pdGlhbE5vbkxIU0NvdW50ID0gbV9ub25MSFNDb3VudDsKICAgICBUcmVl
RXhwcmVzc2lvbiBsaHMgPSBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihjb250ZXh0KTsKICAg
ICBmYWlsSWZGYWxzZShsaHMpOwogICAgIGlmIChpbml0aWFsTm9uTEhTQ291bnQgIT0gbV9ub25M
SFNDb3VudCkKICAgICAgICAgcmV0dXJuIGxoczsKIAotICAgIGludCBhc3NpZ25tZW50U3RhY2sg
PSAwOworICAgIGludCBFUVVBTG1lbnRTdGFjayA9IDA7CiAgICAgT3BlcmF0b3Igb3A7Ci0gICAg
Ym9vbCBoYWRBc3NpZ25tZW50ID0gZmFsc2U7CisgICAgYm9vbCBoYWRFUVVBTG1lbnQgPSBmYWxz
ZTsKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBzd2l0Y2ggKHRva2VuKCkubV90eXBlKSB7
Ci0gICAgICAgIGNhc2UgJz0nOiBvcCA9IE9wRXF1YWw7IGJyZWFrOworICAgICAgICBjYXNlIEVR
VUFMOiBvcCA9IE9wRXF1YWw7IGJyZWFrOwogICAgICAgICBjYXNlIFBMVVNFUVVBTDogb3AgPSBP
cFBsdXNFcTsgYnJlYWs7CiAgICAgICAgIGNhc2UgTUlOVVNFUVVBTDogb3AgPSBPcE1pbnVzRXE7
IGJyZWFrOwogICAgICAgICBjYXNlIE1VTFRFUVVBTDogb3AgPSBPcE11bHRFcTsgYnJlYWs7CkBA
IC05OTAsMTAgKzk5MCwxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZUFzc2lnbm1lbnRFeHByZXNzaQogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgZ290byBlbmQ7CiAgICAgICAgIH0KLSAgICAgICAgaGFkQXNzaWdu
bWVudCA9IHRydWU7Ci0gICAgICAgIGNvbnRleHQuYXNzaWdubWVudFN0YWNrQXBwZW5kKGFzc2ln
bm1lbnRTdGFjaywgbGhzLCBzdGFydCwgdG9rZW5TdGFydCgpLCBtX2Fzc2lnbm1lbnRDb3VudCwg
b3ApOworICAgICAgICBoYWRFUVVBTG1lbnQgPSB0cnVlOworICAgICAgICBjb250ZXh0LmFzc2ln
bm1lbnRTdGFja0FwcGVuZChFUVVBTG1lbnRTdGFjaywgbGhzLCBzdGFydCwgdG9rZW5TdGFydCgp
LCBtX0VRVUFMbWVudENvdW50LCBvcCk7CiAgICAgICAgIHN0YXJ0ID0gdG9rZW5TdGFydCgpOwot
ICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOworICAgICAgICBtX0VRVUFMbWVudENvdW50Kys7
CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbGhzID0gcGFyc2VDb25kaXRpb25hbEV4cHJlc3Np
b24oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGxocyk7CkBAIC0xMDAxLDE0ICsxMDAx
LDE0IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQ
YXJzZXI6OnBhcnNlQXNzaWdubWVudEV4cHJlc3NpCiAgICAgICAgICAgICBicmVhazsKICAgICB9
CiBlbmQ6Ci0gICAgaWYgKGhhZEFzc2lnbm1lbnQpCisgICAgaWYgKGhhZEVRVUFMbWVudCkKICAg
ICAgICAgbV9ub25MSFNDb3VudCsrOwogCiAgICAgaWYgKCFBU1RCdWlsZGVyOjpDcmVhdGVzQVNU
KQogICAgICAgICByZXR1cm4gbGhzOwogCi0gICAgd2hpbGUgKGFzc2lnbm1lbnRTdGFjaykKLSAg
ICAgICAgbGhzID0gY29udGV4dC5jcmVhdGVBc3NpZ25tZW50KGFzc2lnbm1lbnRTdGFjaywgbGhz
LCBpbml0aWFsQXNzaWdubWVudENvdW50LCBtX2Fzc2lnbm1lbnRDb3VudCwgbGFzdFRva2VuRW5k
KCkpOworICAgIHdoaWxlIChFUVVBTG1lbnRTdGFjaykKKyAgICAgICAgbGhzID0gY29udGV4dC5j
cmVhdGVBc3NpZ25tZW50KEVRVUFMbWVudFN0YWNrLCBsaHMsIGluaXRpYWxFUVVBTG1lbnRDb3Vu
dCwgbV9FUVVBTG1lbnRDb3VudCwgbGFzdFRva2VuRW5kKCkpOwogCiAgICAgcmV0dXJuIGxoczsK
IH0KQEAgLTEwMTcsMjUgKzEwMTcsMjUgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24KIHsKICAg
ICBUcmVlRXhwcmVzc2lvbiBjb25kID0gcGFyc2VCaW5hcnlFeHByZXNzaW9uKGNvbnRleHQpOwog
ICAgIGZhaWxJZkZhbHNlKGNvbmQpOwotICAgIGlmICghbWF0Y2goJz8nKSkKKyAgICBpZiAoIW1h
dGNoKFFVRVNUSU9OKSkKICAgICAgICAgcmV0dXJuIGNvbmQ7CiAgICAgbV9ub25MSFNDb3VudCsr
OwogICAgIG5leHQoKTsKLSAgICBUcmVlRXhwcmVzc2lvbiBsaHMgPSBwYXJzZUFzc2lnbm1lbnRF
eHByZXNzaW9uKGNvbnRleHQpOwotICAgIGNvbnN1bWVPckZhaWwoJzonKTsKKyAgICBUcmVlRXhw
cmVzc2lvbiBsaHMgPSBwYXJzZUVRVUFMbWVudEV4cHJlc3Npb24oY29udGV4dCk7CisgICAgY29u
c3VtZU9yRmFpbChDT0xPTik7CiAKLSAgICBUcmVlRXhwcmVzc2lvbiByaHMgPSBwYXJzZUFzc2ln
bm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOworICAgIFRyZWVFeHByZXNzaW9uIHJocyA9IHBhcnNl
RVFVQUxtZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShyaHMpOwogICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbmRpdGlvbmFsRXhwcihjb25kLCBsaHMsIHJocyk7CiB9
CiAKLXN0YXRpYyBib29sIGlzVW5hcnlPcChpbnQgdG9rZW4pCitzdGF0aWMgYm9vbCBpc1VuYXJ5
T3AoSlNUb2tlblR5cGUgdG9rZW4pCiB7CiAgICAgc3dpdGNoICh0b2tlbikgewotICAgIGNhc2Ug
JyEnOgotICAgIGNhc2UgJ34nOgotICAgIGNhc2UgJy0nOgotICAgIGNhc2UgJysnOgorICAgIGNh
c2UgRVhDTEFNQVRJT046CisgICAgY2FzZSBUSUxERToKKyAgICBjYXNlIE1JTlVTOgorICAgIGNh
c2UgUExVUzoKICAgICBjYXNlIFBMVVNQTFVTOgogICAgIGNhc2UgQVVUT1BMVVNQTFVTOgogICAg
IGNhc2UgTUlOVVNNSU5VUzoKQEAgLTEwNDksNyArMTA0OSw3IEBAIHN0YXRpYyBib29sIGlzVW5h
cnlPcChpbnQgdG9rZW4pCiAgICAgfQogfQogCi1pbnQgSlNQYXJzZXI6OmlzQmluYXJ5T3BlcmF0
b3IoaW50IHRva2VuKQoraW50IEpTUGFyc2VyOjppc0JpbmFyeU9wZXJhdG9yKEpTVG9rZW5UeXBl
IHRva2VuKQogewogICAgIHN3aXRjaCAodG9rZW4pIHsKICAgICBjYXNlIE9SOgpAQCAtMTA1OCwx
MyArMTA1OCwxMyBAQCBpbnQgSlNQYXJzZXI6OmlzQmluYXJ5T3BlcmF0b3IoaW50IHRva2VuKQog
ICAgIGNhc2UgQU5EOgogICAgICAgICByZXR1cm4gMjsKIAotICAgIGNhc2UgJ3wnOgorICAgIGNh
c2UgQklUT1I6CiAgICAgICAgIHJldHVybiAzOwogCi0gICAgY2FzZSAnXic6CisgICAgY2FzZSBC
SVRYT1I6CiAgICAgICAgIHJldHVybiA0OwogCi0gICAgY2FzZSAnJic6CisgICAgY2FzZSBCSVRB
TkQ6CiAgICAgICAgIHJldHVybiA1OwogCiAgICAgY2FzZSBFUUVROgpAQCAtMTA3Myw4ICsxMDcz
LDggQEAgaW50IEpTUGFyc2VyOjppc0JpbmFyeU9wZXJhdG9yKGludCB0b2tlbikKICAgICBjYXNl
IFNUUk5FUToKICAgICAgICAgcmV0dXJuIDY7CiAKLSAgICBjYXNlICc8JzoKLSAgICBjYXNlICc+
JzoKKyAgICBjYXNlIExUOgorICAgIGNhc2UgR1Q6CiAgICAgY2FzZSBMRToKICAgICBjYXNlIEdF
OgogICAgIGNhc2UgSU5TVEFOQ0VPRjoKQEAgLTEwOTEsMTMgKzEwOTEsMTMgQEAgaW50IEpTUGFy
c2VyOjppc0JpbmFyeU9wZXJhdG9yKGludCB0b2tlbikKICAgICBjYXNlIFVSU0hJRlQ6CiAgICAg
ICAgIHJldHVybiA4OwogCi0gICAgY2FzZSAnKyc6Ci0gICAgY2FzZSAnLSc6CisgICAgY2FzZSBQ
TFVTOgorICAgIGNhc2UgTUlOVVM6CiAgICAgICAgIHJldHVybiA5OwogCi0gICAgY2FzZSAnKic6
Ci0gICAgY2FzZSAnLyc6Ci0gICAgY2FzZSAnJSc6CisgICAgY2FzZSBUSU1FUzoKKyAgICBjYXNl
IERJVklERToKKyAgICBjYXNlIE1PRDoKICAgICAgICAgcmV0dXJuIDEwOwogCiAgICAgZGVmYXVs
dDoKQEAgLTExMTIsMTEgKzExMTIsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VCaW5hcnlFeHByZXNzaW9uKFRyZWUKICAgICBp
bnQgb3BlcmF0b3JTdGFja0RlcHRoID0gMDsKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBp
bnQgZXhwclN0YXJ0ID0gdG9rZW5TdGFydCgpOwotICAgICAgICBpbnQgaW5pdGlhbEFzc2lnbm1l
bnRzID0gbV9hc3NpZ25tZW50Q291bnQ7CisgICAgICAgIGludCBpbml0aWFsRVFVQUxtZW50cyA9
IG1fRVFVQUxtZW50Q291bnQ7CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGN1cnJlbnQgPSBwYXJz
ZVVuYXJ5RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoY3VycmVudCk7
CiAKLSAgICAgICAgY29udGV4dC5hcHBlbmRCaW5hcnlFeHByZXNzaW9uSW5mbyhvcGVyYW5kU3Rh
Y2tEZXB0aCwgY3VycmVudCwgZXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgbGFzdFRva2VuRW5k
KCksIGluaXRpYWxBc3NpZ25tZW50cyAhPSBtX2Fzc2lnbm1lbnRDb3VudCk7CisgICAgICAgIGNv
bnRleHQuYXBwZW5kQmluYXJ5RXhwcmVzc2lvbkluZm8ob3BlcmFuZFN0YWNrRGVwdGgsIGN1cnJl
bnQsIGV4cHJTdGFydCwgbGFzdFRva2VuRW5kKCksIGxhc3RUb2tlbkVuZCgpLCBpbml0aWFsRVFV
QUxtZW50cyAhPSBtX0VRVUFMbWVudENvdW50KTsKICAgICAgICAgaW50IHByZWNlZGVuY2UgPSBp
c0JpbmFyeU9wZXJhdG9yKHRva2VuKCkubV90eXBlKTsKICAgICAgICAgaWYgKCFwcmVjZWRlbmNl
KQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTU4LDkgKzExNTgsOSBAQCB0ZW1wbGF0ZSA8Ym9v
bCBjb21wbGV0ZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBKU1BhcnNlcjo6cGFy
c2VQcm9wZXJ0eQogICAgIGNhc2UgU1RSSU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50ID0gdG9rZW4oKS5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAg
aWYgKG1hdGNoKCc6JykpIHsKKyAgICAgICAgaWYgKG1hdGNoKENPTE9OKSkgewogICAgICAgICAg
ICAgbmV4dCgpOwotICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IHBhcnNlQXNzaWdu
bWVudEV4cHJlc3Npb24oY29udGV4dCk7CisgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2Rl
ID0gcGFyc2VFUVVBTG1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICAgICAgZmFpbElm
RmFsc2Uobm9kZSk7CiAgICAgICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVQ
cm9wZXJ0eTxjb21wbGV0ZT4oaWRlbnQsIG5vZGUsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOwog
ICAgICAgICB9CkBAIC0xMTg1LDEzICsxMTg1LDE0IEBAIHRlbXBsYXRlIDxib29sIGNvbXBsZXRl
LCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IEpTUGFyc2VyOjpwYXJzZVByb3BlcnR5
CiAgICAgY2FzZSBOVU1CRVI6IHsKICAgICAgICAgZG91YmxlIHByb3BlcnR5TmFtZSA9IHRva2Vu
KCkubV9kYXRhLmRvdWJsZVZhbHVlOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIGNvbnN1bWVP
ckZhaWwoJzonKTsKLSAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IHBhcnNlQXNzaWdubWVu
dEV4cHJlc3Npb24oY29udGV4dCk7CisgICAgICAgIGNvbnN1bWVPckZhaWwoQ09MT04pOworICAg
ICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gcGFyc2VFUVVBTG1lbnRFeHByZXNzaW9uKGNvbnRl
eHQpOwogICAgICAgICBmYWlsSWZGYWxzZShub2RlKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQu
dGVtcGxhdGUgY3JlYXRlUHJvcGVydHk8Y29tcGxldGU+KG1fZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lLCBub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKICAgICB9CisgICAgZGVmYXVsdDoK
KyAgICAgICAgZmFpbCgpOwogICAgIH0KLSAgICBmYWlsKCk7CiB9CiAKIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlT2JqZWN0TGl0ZXJh
bChUcmVlQnVpbGRlciYgY29udGV4dCkKQEAgLTEyMTMsNyArMTIxNCw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlT2JqZWN0TGl0
ZXJhbChUcmVlQnVpCiAgICAgfQogICAgIFRyZWVQcm9wZXJ0eUxpc3QgcHJvcGVydHlMaXN0ID0g
Y29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QocHJvcGVydHkpOwogICAgIFRyZWVQcm9wZXJ0eUxp
c3QgdGFpbCA9IHByb3BlcnR5TGlzdDsKLSAgICB3aGlsZSAobWF0Y2goJywnKSkgeworICAgIHdo
aWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICAvLyBhbGxvdyBl
eHRyYSBjb21tYSwgc2VlIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5
MzkKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKQpAQCAtMTI1Myw3ICsxMjU0LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFy
c2VTdHJpY3RPYmplY3RMaXRlcmFsKFQKICAgICAKICAgICBUcmVlUHJvcGVydHlMaXN0IHByb3Bl
cnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KHByb3BlcnR5KTsKICAgICBUcmVl
UHJvcGVydHlMaXN0IHRhaWwgPSBwcm9wZXJ0eUxpc3Q7Ci0gICAgd2hpbGUgKG1hdGNoKCcsJykp
IHsKKyAgICB3aGlsZSAobWF0Y2goQ09NTUEpKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAg
Ly8gYWxsb3cgZXh0cmEgY29tbWEsIHNlZSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01OTM5CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkKQEAgLTEyODEsNDIg
KzEyODIsNDIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBK
U1BhcnNlcjo6cGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKFQKIAogdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VBcnJheUxpdGVyYWwoVHJl
ZUJ1aWxkZXImIGNvbnRleHQpCiB7Ci0gICAgY29uc3VtZU9yRmFpbCgnWycpOworICAgIGNvbnN1
bWVPckZhaWwoT1BFTkJSQUNLRVQpOwogCiAgICAgaW50IGVsaXNpb25zID0gMDsKLSAgICB3aGls
ZSAobWF0Y2goJywnKSkgeworICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4
dCgpOwogICAgICAgICBlbGlzaW9ucysrOwogICAgIH0KLSAgICBpZiAobWF0Y2goJ10nKSkgewor
ICAgIGlmIChtYXRjaChDTE9TRUJSQUNLRVQpKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkoZWxpc2lvbnMpOwogICAgIH0KIAotICAgIFRyZWVF
eHByZXNzaW9uIGVsZW0gPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOworICAg
IFRyZWVFeHByZXNzaW9uIGVsZW0gPSBwYXJzZUVRVUFMbWVudEV4cHJlc3Npb24oY29udGV4dCk7
CiAgICAgZmFpbElmRmFsc2UoZWxlbSk7CiAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkVsZW1l
bnRMaXN0IGVsZW1lbnRMaXN0ID0gY29udGV4dC5jcmVhdGVFbGVtZW50TGlzdChlbGlzaW9ucywg
ZWxlbSk7CiAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkVsZW1lbnRMaXN0IHRhaWwgPSBlbGVt
ZW50TGlzdDsKICAgICBlbGlzaW9ucyA9IDA7Ci0gICAgd2hpbGUgKG1hdGNoKCcsJykpIHsKKyAg
ICB3aGlsZSAobWF0Y2goQ09NTUEpKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgZWxpc2lv
bnMgPSAwOwogCi0gICAgICAgIHdoaWxlIChtYXRjaCgnLCcpKSB7CisgICAgICAgIHdoaWxlICht
YXRjaChDT01NQSkpIHsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGVsaXNpb25z
Kys7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobWF0Y2goJ10nKSkgeworICAgICAgICBpZiAo
bWF0Y2goQ0xPU0VCUkFDS0VUKSkgewogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkoZWxpc2lvbnMsIGVsZW1lbnRMaXN0KTsKICAgICAg
ICAgfQotICAgICAgICBUcmVlRXhwcmVzc2lvbiBlbGVtID0gcGFyc2VBc3NpZ25tZW50RXhwcmVz
c2lvbihjb250ZXh0KTsKKyAgICAgICAgVHJlZUV4cHJlc3Npb24gZWxlbSA9IHBhcnNlRVFVQUxt
ZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoZWxlbSk7CiAgICAg
ICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZUVsZW1lbnRMaXN0KHRhaWwsIGVsaXNpb25zLCBlbGVt
KTsKICAgICB9CiAKLSAgICBjb25zdW1lT3JGYWlsKCddJyk7CisgICAgY29uc3VtZU9yRmFpbChD
TE9TRUJSQUNLRVQpOwogCiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkoZWxlbWVudExp
c3QpOwogfQpAQCAtMTMyNiwxNCArMTMyNywxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZVByaW1hcnlFeHByZXNzaW9uKFRyZQog
ICAgIHN3aXRjaCAodG9rZW4oKS5tX3R5cGUpIHsKICAgICBjYXNlIE9QRU5CUkFDRToKICAgICAg
ICAgcmV0dXJuIHBhcnNlT2JqZWN0TGl0ZXJhbChjb250ZXh0KTsKLSAgICBjYXNlICdbJzoKKyAg
ICBjYXNlIE9QRU5CUkFDS0VUOgogICAgICAgICByZXR1cm4gcGFyc2VBcnJheUxpdGVyYWwoY29u
dGV4dCk7Ci0gICAgY2FzZSAnKCc6IHsKKyAgICBjYXNlIE9QRU5QQVJFTjogewogICAgICAgICBu
ZXh0KCk7CiAgICAgICAgIGludCBvbGROb25MSFNDb3VudCA9IG1fbm9uTEhTQ291bnQ7CiAgICAg
ICAgIFRyZWVFeHByZXNzaW9uIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAg
ICAgICAgbV9ub25MSFNDb3VudCA9IG9sZE5vbkxIU0NvdW50OwotICAgICAgICBjb25zdW1lT3JG
YWlsKCcpJyk7CisgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xMzcwLDcgKzEzNzEsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZVByaW1hcnlFeHBy
ZXNzaW9uKFRyZQogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCb29sZWFuKGZhbHNlKTsK
ICAgICB9CiAgICAgY2FzZSBESVZFUVVBTDoKLSAgICBjYXNlICcvJzogeworICAgIGNhc2UgRElW
SURFOiB7CiAgICAgICAgIC8qIHJlZ2V4cCAqLwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBw
YXR0ZXJuOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBmbGFnczsKQEAgLTEzODMsMjkgKzEz
ODQsMzAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1Bh
cnNlcjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbihUcmUKICAgICAgICAgbmV4dCgpOwogICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVSZWdleCgqcGF0dGVybiwgKmZsYWdzLCBzdGFydCk7CiAg
ICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIGZhaWwoKTsKICAgICB9Ci0gICAgZmFpbCgpOwog
fQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVBcmd1bWVudHMgSlNQYXJzZXI6
OnBhcnNlQXJndW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewotICAgIGNvbnN1bWVPckZh
aWwoJygnKTsKLSAgICBpZiAobWF0Y2goJyknKSkgeworICAgIGNvbnN1bWVPckZhaWwoT1BFTlBB
UkVOKTsKKyAgICBpZiAobWF0Y2goQ0xPU0VQQVJFTikpIHsKICAgICAgICAgbmV4dCgpOwogICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcmd1bWVudHMoKTsKICAgICB9Ci0gICAgVHJlZUV4
cHJlc3Npb24gZmlyc3RBcmcgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwor
ICAgIFRyZWVFeHByZXNzaW9uIGZpcnN0QXJnID0gcGFyc2VFUVVBTG1lbnRFeHByZXNzaW9uKGNv
bnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGZpcnN0QXJnKTsKIAogICAgIFRyZWVBcmd1bWVudHNM
aXN0IGFyZ0xpc3QgPSBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50c0xpc3QoZmlyc3RBcmcpOwogICAg
IFRyZWVBcmd1bWVudHNMaXN0IHRhaWwgPSBhcmdMaXN0OwotICAgIHdoaWxlIChtYXRjaCgnLCcp
KSB7CisgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAgICAgICBuZXh0KCk7Ci0gICAgICAg
IFRyZWVFeHByZXNzaW9uIGFyZyA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7
CisgICAgICAgIFRyZWVFeHByZXNzaW9uIGFyZyA9IHBhcnNlRVFVQUxtZW50RXhwcmVzc2lvbihj
b250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoYXJnKTsKICAgICAgICAgdGFpbCA9IGNvbnRl
eHQuY3JlYXRlQXJndW1lbnRzTGlzdCh0YWlsLCBhcmcpOwogICAgIH0KLSAgICBjb25zdW1lT3JG
YWlsKCcpJyk7CisgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVBcmd1bWVudHMoYXJnTGlzdCk7CiB9CiAKQEAgLTE0MzUsMjMgKzE0MzcsMjMg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6
cGFyc2VNZW1iZXJFeHByZXNzaW9uKFRyZWUKICAgICBmYWlsSWZGYWxzZShiYXNlKTsKICAgICB3
aGlsZSAodHJ1ZSkgewogICAgICAgICBzd2l0Y2ggKHRva2VuKCkubV90eXBlKSB7Ci0gICAgICAg
IGNhc2UgJ1snOiB7CisgICAgICAgIGNhc2UgT1BFTkJSQUNLRVQ6IHsKICAgICAgICAgICAgIGlu
dCBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAg
ICAgICAgICAgICBpbnQgbm9uTEhTQ291bnQgPSBtX25vbkxIU0NvdW50OwotICAgICAgICAgICAg
aW50IGluaXRpYWxBc3NpZ25tZW50cyA9IG1fYXNzaWdubWVudENvdW50OworICAgICAgICAgICAg
aW50IGluaXRpYWxFUVVBTG1lbnRzID0gbV9FUVVBTG1lbnRDb3VudDsKICAgICAgICAgICAgIFRy
ZWVFeHByZXNzaW9uIHByb3BlcnR5ID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAg
ICAgICAgZmFpbElmRmFsc2UocHJvcGVydHkpOwotICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQu
Y3JlYXRlQnJhY2tldEFjY2VzcyhiYXNlLCBwcm9wZXJ0eSwgaW5pdGlhbEFzc2lnbm1lbnRzICE9
IG1fYXNzaWdubWVudENvdW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2Vu
RW5kKCkpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKCddJykpCisgICAgICAgICAgICBiYXNl
ID0gY29udGV4dC5jcmVhdGVCcmFja2V0QWNjZXNzKGJhc2UsIHByb3BlcnR5LCBpbml0aWFsRVFV
QUxtZW50cyAhPSBtX0VRVUFMbWVudENvdW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25F
bmQsIHRva2VuRW5kKCkpOworICAgICAgICAgICAgaWYgKCFjb25zdW1lKENMT1NFQlJBQ0tFVCkp
CiAgICAgICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAgbV9ub25MSFNDb3VudCA9IG5v
bkxIU0NvdW50OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSAn
KCc6IHsKKyAgICAgICAgY2FzZSBPUEVOUEFSRU46IHsKICAgICAgICAgICAgIGlmIChuZXdDb3Vu
dCkgewogICAgICAgICAgICAgICAgIG5ld0NvdW50LS07Ci0gICAgICAgICAgICAgICAgaWYgKG1h
dGNoKCcoJykpIHsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSkgewogICAg
ICAgICAgICAgICAgICAgICBpbnQgZXhwckVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAg
ICAgICAgICAgICBUcmVlQXJndW1lbnRzIGFyZ3VtZW50cyA9IHBhcnNlQXJndW1lbnRzKGNvbnRl
eHQpOwogICAgICAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShhcmd1bWVudHMpOwpAQCAtMTQ2
OCw3ICsxNDcwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBKU1BhcnNlcjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKFRyZWUKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgJy4nOiB7CisgICAgICAg
IGNhc2UgRE9UOiB7CiAgICAgICAgICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVu
ZCgpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQp
OwpAQCAtMTUwMiwxNSArMTUwNCwxNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZVVuYXJ5RXhwcmVzc2lvbihUcmVlQgogICAgIGNh
c2UgUExVU1BMVVM6CiAgICAgICAgIG1fbm9uTEhTQ291bnQrKzsKICAgICAgICAgZXhwciA9IGNv
bnRleHQubWFrZVBvc3RmaXhOb2RlKGV4cHIsIE9wUGx1c1BsdXMsIHN1YkV4cHJTdGFydCwgbGFz
dFRva2VuRW5kKCksIHRva2VuRW5kKCkpOwotICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwor
ICAgICAgICBtX0VRVUFMbWVudENvdW50Kys7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNSU5VU01JTlVTOgogICAgICAgICBtX25vbkxIU0NvdW50Kys7CiAgICAg
ICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShleHByLCBPcE1pbnVzTWludXMsIHN1
YkV4cHJTdGFydCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOwotICAgICAgICBtX2Fzc2ln
bm1lbnRDb3VudCsrOworICAgICAgICBtX0VRVUFMbWVudENvdW50Kys7CiAgICAgICAgIG5leHQo
KTsKICAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
CiAgICAgaW50IGVuZCA9IGxhc3RUb2tlbkVuZCgpOwpAQCAtMTUyMCwyNyArMTUyNCwyNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJz
ZVVuYXJ5RXhwcmVzc2lvbihUcmVlQgogCiAgICAgd2hpbGUgKHRva2VuU3RhY2tEZXB0aCkgewog
ICAgICAgICBzd2l0Y2ggKGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFR5cGUodG9rZW5TdGFj
a0RlcHRoKSkgewotICAgICAgICBjYXNlICchJzoKKyAgICAgICAgY2FzZSBFWENMQU1BVElPTjoK
ICAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZUxvZ2ljYWxOb3QoZXhwcik7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnfic6CisgICAgICAgIGNhc2UgVElMREU6CiAg
ICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlQml0d2lzZU5vdE5vZGUoZXhwcik7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnLSc6CisgICAgICAgIGNhc2UgTUlOVVM6CiAg
ICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlTmVnYXRlTm9kZShleHByKTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlICcrJzoKKyAgICAgICAgY2FzZSBQTFVTOgogICAgICAg
ICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlVW5hcnlQbHVzKGV4cHIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgUExVU1BMVVM6CiAgICAgICAgIGNhc2UgQVVUT1BMVVNQTFVT
OgogICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUoZXhwciwgT3BQbHVz
UGx1cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwg
c3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKLSAgICAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7
CisgICAgICAgICAgICBtX0VRVUFMbWVudENvdW50Kys7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBNSU5VU01JTlVTOgogICAgICAgICBjYXNlIEFVVE9NSU5VU01JTlVTOgogICAg
ICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUoZXhwciwgT3BNaW51c01pbnVz
LCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBzdWJF
eHByU3RhcnQgKyAxLCBlbmQpOwotICAgICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsKKyAg
ICAgICAgICAgIG1fRVFVQUxtZW50Q291bnQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFRZUEVPRjoKICAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VUeXBlT2ZOb2Rl
KGV4cHIpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmggYi9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuaAppbmRleCAzMjAzMzViZDZmNGY4Mzc5Y2Q3
NTIwOTRmOTgzYzE1MDgwM2E1NmE2Li5iMzcyNzdlNmZmOWNlMDA4NWEzNDk4NWYzODEyMzNhNGQ1
MzJkMDZmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuaApAQCAtMzMsNjkgKzMzLDkzIEBAIGNs
YXNzIEpTR2xvYmFsRGF0YTsKIGNsYXNzIFNvdXJjZUNvZGU7CiAKIGVudW0gSlNUb2tlblR5cGUg
ewotICAgIE5VTExUT0tFTiA9IDI1OCwKLSAgICBUUlVFVE9LRU4gPSAyNTksCi0gICAgRkFMU0VU
T0tFTiA9IDI2MCwKLSAgICBCUkVBSyA9IDI2MSwKLSAgICBDQVNFID0gMjYyLAotICAgIERFRkFV
TFQgPSAyNjMsCi0gICAgRk9SID0gMjY0LAotICAgIE5FVyA9IDI2NSwKLSAgICBWQVIgPSAyNjYs
Ci0gICAgQ09OU1RUT0tFTiA9IDI2NywKLSAgICBDT05USU5VRSA9IDI2OCwKLSAgICBGVU5DVElP
TiA9IDI2OSwKLSAgICBSRVRVUk4gPSAyNzAsCi0gICAgVk9JRFRPS0VOID0gMjcxLAotICAgIERF
TEVURVRPS0VOID0gMjcyLAotICAgIElGID0gMjczLAotICAgIFRISVNUT0tFTiA9IDI3NCwKLSAg
ICBETyA9IDI3NSwKLSAgICBXSElMRSA9IDI3NiwKLSAgICBJTlRPS0VOID0gMjc3LAotICAgIElO
U1RBTkNFT0YgPSAyNzgsCi0gICAgVFlQRU9GID0gMjc5LAotICAgIFNXSVRDSCA9IDI4MCwKLSAg
ICBXSVRIID0gMjgxLAotICAgIFJFU0VSVkVEID0gMjgyLAotICAgIFRIUk9XID0gMjgzLAotICAg
IFRSWSA9IDI4NCwKLSAgICBDQVRDSCA9IDI4NSwKLSAgICBGSU5BTExZID0gMjg2LAotICAgIERF
QlVHR0VSID0gMjg3LAotICAgIElGX1dJVEhPVVRfRUxTRSA9IDI4OCwKLSAgICBFTFNFID0gMjg5
LAotICAgIEVRRVEgPSAyOTAsCi0gICAgTkUgPSAyOTEsCi0gICAgU1RSRVEgPSAyOTIsCi0gICAg
U1RSTkVRID0gMjkzLAotICAgIExFID0gMjk0LAotICAgIEdFID0gMjk1LAotICAgIE9SID0gMjk2
LAotICAgIEFORCA9IDI5NywKLSAgICBQTFVTUExVUyA9IDI5OCwKLSAgICBNSU5VU01JTlVTID0g
Mjk5LAotICAgIExTSElGVCA9IDMwMCwKLSAgICBSU0hJRlQgPSAzMDEsCi0gICAgVVJTSElGVCA9
IDMwMiwKLSAgICBQTFVTRVFVQUwgPSAzMDMsCi0gICAgTUlOVVNFUVVBTCA9IDMwNCwKLSAgICBN
VUxURVFVQUwgPSAzMDUsCi0gICAgRElWRVFVQUwgPSAzMDYsCi0gICAgTFNISUZURVFVQUwgPSAz
MDcsCi0gICAgUlNISUZURVFVQUwgPSAzMDgsCi0gICAgVVJTSElGVEVRVUFMID0gMzA5LAotICAg
IEFOREVRVUFMID0gMzEwLAotICAgIE1PREVRVUFMID0gMzExLAotICAgIFhPUkVRVUFMID0gMzEy
LAotICAgIE9SRVFVQUwgPSAzMTMsCi0gICAgT1BFTkJSQUNFID0gMzE0LAotICAgIENMT1NFQlJB
Q0UgPSAzMTUsCi0gICAgTlVNQkVSID0gMzE2LAotICAgIElERU5UID0gMzE3LAotICAgIFNUUklO
RyA9IDMxOCwKLSAgICBBVVRPUExVU1BMVVMgPSAzMTksCi0gICAgQVVUT01JTlVTTUlOVVMgPSAz
MjAKKyAgICBOVUxMVE9LRU4sCisgICAgVFJVRVRPS0VOLAorICAgIEZBTFNFVE9LRU4sCisgICAg
QlJFQUssCisgICAgQ0FTRSwKKyAgICBERUZBVUxULAorICAgIEZPUiwKKyAgICBORVcsCisgICAg
VkFSLAorICAgIENPTlNUVE9LRU4sCisgICAgQ09OVElOVUUsCisgICAgRlVOQ1RJT04sCisgICAg
UkVUVVJOLAorICAgIFZPSURUT0tFTiwKKyAgICBERUxFVEVUT0tFTiwKKyAgICBJRiwKKyAgICBU
SElTVE9LRU4sCisgICAgRE8sCisgICAgV0hJTEUsCisgICAgSU5UT0tFTiwKKyAgICBJTlNUQU5D
RU9GLAorICAgIFRZUEVPRiwKKyAgICBTV0lUQ0gsCisgICAgV0lUSCwKKyAgICBSRVNFUlZFRCwK
KyAgICBUSFJPVywKKyAgICBUUlksCisgICAgQ0FUQ0gsCisgICAgRklOQUxMWSwKKyAgICBERUJV
R0dFUiwKKyAgICBJRl9XSVRIT1VUX0VMU0UsCisgICAgRUxTRSwKKyAgICBFUVVBTCwKKyAgICBF
UUVRLAorICAgIE5FLAorICAgIFNUUkVRLAorICAgIFNUUk5FUSwKKyAgICBMVCwKKyAgICBHVCwK
KyAgICBMRSwKKyAgICBHRSwKKyAgICBPUiwKKyAgICBBTkQsCisgICAgUExVU1BMVVMsCisgICAg
TUlOVVNNSU5VUywKKyAgICBMU0hJRlQsCisgICAgUlNISUZULAorICAgIFVSU0hJRlQsCisgICAg
UExVU0VRVUFMLAorICAgIE1JTlVTRVFVQUwsCisgICAgTVVMVEVRVUFMLAorICAgIERJVkVRVUFM
LAorICAgIExTSElGVEVRVUFMLAorICAgIFJTSElGVEVRVUFMLAorICAgIFVSU0hJRlRFUVVBTCwK
KyAgICBBTkRFUVVBTCwKKyAgICBNT0RFUVVBTCwKKyAgICBYT1JFUVVBTCwKKyAgICBPUkVRVUFM
LAorICAgIEJJVE9SLAorICAgIEJJVEFORCwKKyAgICBCSVRYT1IsCisgICAgUExVUywKKyAgICBN
SU5VUywKKyAgICBUSU1FUywKKyAgICBESVZJREUsCisgICAgTU9ELAorICAgIE9QRU5CUkFDRSwK
KyAgICBDTE9TRUJSQUNFLAorICAgIE9QRU5QQVJFTiwKKyAgICBDTE9TRVBBUkVOLAorICAgIE9Q
RU5CUkFDS0VULAorICAgIENMT1NFQlJBQ0tFVCwKKyAgICBDT01NQSwKKyAgICBRVUVTVElPTiwK
KyAgICBUSUxERSwKKyAgICBFWENMQU1BVElPTiwKKyAgICBOVU1CRVIsCisgICAgSURFTlQsCisg
ICAgU1RSSU5HLAorICAgIEFVVE9QTFVTUExVUywKKyAgICBBVVRPTUlOVVNNSU5VUywKKyAgICBT
RU1JQ09MT04sCisgICAgQ09MT04sCisgICAgRE9ULAorICAgIEVSUk9SVE9LLAorICAgIEVPRlRP
SwogfTsKIAogdW5pb24gSlNUb2tlbkRhdGEgewpAQCAtMTEyLDcgKzEzNiw3IEBAIHN0cnVjdCBK
U1Rva2VuSW5mbyB7CiB9OwogCiBzdHJ1Y3QgSlNUb2tlbiB7Ci0gICAgaW50IG1fdHlwZTsKKyAg
ICBKU1Rva2VuVHlwZSBtX3R5cGU7CiAgICAgSlNUb2tlbkRhdGEgbV9kYXRhOwogICAgIEpTVG9r
ZW5JbmZvIG1faW5mbzsKIH07CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCAwYmJkZWRjMjBj
NWVhYjgzYjg0ZTA5NGY0YmRkNWFlMDEyYTRjMzBjLi40NWZlMDA3NTdhMGZiMDI2YTc3NmVmYzRi
NjhjMDFhYjg2ZjQ2ZmYyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTU2LDcgKzU2LDE0
IEBAIGVudW0gQ2hhcmFjdGVyVHlwZXMgewogCiAgICAgQ2hhcmFjdGVyTGluZVRlcm1pbmF0b3Is
CiAgICAgQ2hhcmFjdGVyRXhjbGFtYXRpb25NYXJrLAotICAgIENoYXJhY3RlclNpbXBsZSwKKyAg
ICBDaGFyYWN0ZXJPcGVuUGFyZW4sCisgICAgQ2hhcmFjdGVyQ2xvc2VQYXJlbiwKKyAgICBDaGFy
YWN0ZXJPcGVuQnJhY2tldCwKKyAgICBDaGFyYWN0ZXJDbG9zZUJyYWNrZXQsCisgICAgQ2hhcmFj
dGVyQ29tbWEsCisgICAgQ2hhcmFjdGVyQ29sb24sCisgICAgQ2hhcmFjdGVyUXVlc3Rpb24sCisg
ICAgQ2hhcmFjdGVyVGlsZGUsCiAgICAgQ2hhcmFjdGVyUXVvdGUsCiAgICAgQ2hhcmFjdGVyRG90
LAogICAgIENoYXJhY3RlclNsYXNoLApAQCAtODEsNyArODgsNyBAQCBlbnVtIENoYXJhY3RlclR5
cGVzIHsKIH07CiAKIC8vIDEyOCBhc2NpaSBjb2Rlcwotc3RhdGljIHVuc2lnbmVkIGNoYXIgQXNj
aWlDaGFyYWN0ZXJzWzEyOF0gPSB7CitzdGF0aWMgdW5zaWduZWQgc2hvcnQgQXNjaWlDaGFyYWN0
ZXJzWzEyOF0gPSB7CiAvKiAgIDAgLSBOdWxsICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySW52
YWxpZCwKIC8qICAgMSAtIFN0YXJ0IG9mIEhlYWRpbmcgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAog
LyogICAyIC0gU3RhcnQgb2YgVGV4dCAgICAgICovIENoYXJhY3RlckludmFsaWQsCkBAIC0xMjIs
MTEgKzEyOSwxMSBAQCBzdGF0aWMgdW5zaWduZWQgY2hhciBBc2NpaUNoYXJhY3RlcnNbMTI4XSA9
IHsKIC8qICAzNyAtICUgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJNb2R1bG8sCiAvKiAg
MzggLSAmICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQW5kLAogLyogIDM5IC0gJyAgICAg
ICAgICAgICAgICAgICovIENoYXJhY3RlclF1b3RlLAotLyogIDQwIC0gKCAgICAgICAgICAgICAg
ICAgICovIENoYXJhY3RlclNpbXBsZSwKLS8qICA0MSAtICkgICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJTaW1wbGUsCisvKiAgNDAgLSAoICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
T3BlblBhcmVuLAorLyogIDQxIC0gKSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckNsb3Nl
UGFyZW4sCiAvKiAgNDIgLSAqICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyTXVsdGlwbHks
CiAvKiAgNDMgLSArICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWRkLAotLyogIDQ0IC0g
LCAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlclNpbXBsZSwKKy8qICA0NCAtICwgICAgICAg
ICAgICAgICAgICAqLyBDaGFyYWN0ZXJDb21tYSwKIC8qICA0NSAtIC0gICAgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJTdWIsCiAvKiAgNDYgLSAuICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFj
dGVyRG90LAogLyogIDQ3IC0gLyAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlclNsYXNoLApA
QCAtMTQwLDEyICsxNDcsMTIgQEAgc3RhdGljIHVuc2lnbmVkIGNoYXIgQXNjaWlDaGFyYWN0ZXJz
WzEyOF0gPSB7CiAvKiAgNTUgLSA3ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyTnVtYmVy
LAogLyogIDU2IC0gOCAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rlck51bWJlciwKIC8qICA1
NyAtIDkgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJOdW1iZXIsCi0vKiAgNTggLSA6ICAg
ICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyU2ltcGxlLAorLyogIDU4IC0gOiAgICAgICAgICAg
ICAgICAgICovIENoYXJhY3RlckNvbG9uLAogLyogIDU5IC0gOyAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlclNlbWljb2xvbiwKIC8qICA2MCAtIDwgICAgICAgICAgICAgICAgICAqLyBDaGFy
YWN0ZXJMZXNzLAogLyogIDYxIC0gPSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckVxdWFs
LAogLyogIDYyIC0gPiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckdyZWF0ZXIsCi0vKiAg
NjMgLSA/ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyU2ltcGxlLAorLyogIDYzIC0gPyAg
ICAgICAgICAgICAgICAgICovIENoYXJhY3RlclF1ZXN0aW9uLAogLyogIDY0IC0gQCAgICAgICAg
ICAgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCiAvKiAgNjUgLSBBICAgICAgICAgICAgICAg
ICAgKi8gQ2hhcmFjdGVyQWxwaGEsCiAvKiAgNjYgLSBCICAgICAgICAgICAgICAgICAgKi8gQ2hh
cmFjdGVyQWxwaGEsCkBAIC0xNzMsOSArMTgwLDkgQEAgc3RhdGljIHVuc2lnbmVkIGNoYXIgQXNj
aWlDaGFyYWN0ZXJzWzEyOF0gPSB7CiAvKiAgODggLSBYICAgICAgICAgICAgICAgICAgKi8gQ2hh
cmFjdGVyQWxwaGEsCiAvKiAgODkgLSBZICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxw
aGEsCiAvKiAgOTAgLSBaICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAg
OTEgLSBbICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyU2ltcGxlLAorLyogIDkxIC0gWyAg
ICAgICAgICAgICAgICAgICovIENoYXJhY3Rlck9wZW5CcmFja2V0LAogLyogIDkyIC0gXCAgICAg
ICAgICAgICAgICAgICovIENoYXJhY3RlckJhY2tTbGFzaCwKLS8qICA5MyAtIF0gICAgICAgICAg
ICAgICAgICAqLyBDaGFyYWN0ZXJTaW1wbGUsCisvKiAgOTMgLSBdICAgICAgICAgICAgICAgICAg
Ki8gQ2hhcmFjdGVyQ2xvc2VCcmFja2V0LAogLyogIDk0IC0gXiAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlclhvciwKIC8qICA5NSAtIF8gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJB
bHBoYSwKIC8qICA5NiAtIGAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLApA
QCAtMjA4LDcgKzIxNSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBjaGFyIEFzY2lpQ2hhcmFjdGVyc1sx
MjhdID0gewogLyogMTIzIC0geyAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rlck9wZW5CcmFj
ZSwKIC8qIDEyNCAtIHwgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJPciwKIC8qIDEyNSAt
IH0gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJDbG9zZUJyYWNlLAotLyogMTI2IC0gfiAg
ICAgICAgICAgICAgICAgICovIENoYXJhY3RlclNpbXBsZSwKKy8qIDEyNiAtIH4gICAgICAgICAg
ICAgICAgICAqLyBDaGFyYWN0ZXJUaWxkZSwKIC8qIDEyNyAtIERlbGV0ZSAgICAgICAgICAgICAq
LyBDaGFyYWN0ZXJJbnZhbGlkLAogfTsKIApAQCAtNDY1LDEzICs0NzIsMTQgQEAgQUxXQVlTX0lO
TElORSBib29sIExleGVyOjpwYXJzZVN0cmluZyhKU1Rva2VuRGF0YSogbHZhbHApCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWludCBMZXhlcjo6bGV4KEpTVG9rZW5EYXRhKiBsdmFscCwgSlNUb2tl
bkluZm8qIGxsb2NwKQorSlNUb2tlblR5cGUgTGV4ZXI6OmxleChKU1Rva2VuRGF0YSogbHZhbHAs
IEpTVG9rZW5JbmZvKiBsbG9jcCkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3IpOwogICAgIEFTU0VS
VChtX2J1ZmZlcjguaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9idWZmZXIxNi5pc0VtcHR5KCkp
OwogCi0gICAgaW50IHRva2VuID0gMDsKKyAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IEVSUk9SVE9L
OworICAgIGludCBpZGVudENoYXIgPSAwOwogICAgIG1fdGVybWluYXRvciA9IGZhbHNlOwogCiBz
dGFydDoKQEAgLTQ4MSw3ICs0ODksNyBAQCBzdGFydDoKICAgICBpbnQgc3RhcnRPZmZzZXQgPSBj
dXJyZW50T2Zmc2V0KCk7CiAKICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09IC0xKSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBFT0ZUT0s7CiAKICAgICBtX2RlbGltaXRl
ZCA9IGZhbHNlOwogCkBAIC01MTYsNyArNTI0LDcgQEAgc3RhcnQ6CiAgICAgICAgICAgICAgICAg
dG9rZW4gPSBHRTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHRva2VuID0gJz4nOworICAgICAgICAgICAgdG9rZW4gPSBHVDsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENoYXJhY3RlckVxdWFsOgogICAgICAgICAgICAgc2hpZnQo
KTsKQEAgLTUzMCw3ICs1MzgsNyBAQCBzdGFydDoKICAgICAgICAgICAgICAgICB0b2tlbiA9IEVR
RVE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0
b2tlbiA9ICc9JzsKKyAgICAgICAgICAgIHRva2VuID0gRVFVQUw7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDaGFyYWN0ZXJMZXNzOgogICAgICAgICAgICAgc2hpZnQoKTsKQEAg
LTU1Myw3ICs1NjEsNyBAQCBzdGFydDoKICAgICAgICAgICAgICAgICB0b2tlbiA9IExFOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSAn
PCc7CisgICAgICAgICAgICB0b2tlbiA9IExUOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ2hhcmFjdGVyRXhjbGFtYXRpb25NYXJrOgogICAgICAgICAgICAgc2hpZnQoKTsKQEAg
LTU2Nyw3ICs1NzUsNyBAQCBzdGFydDoKICAgICAgICAgICAgICAgICB0b2tlbiA9IE5FOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSAn
ISc7CisgICAgICAgICAgICB0b2tlbiA9IEVYQ0xBTUFUSU9OOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ2hhcmFjdGVyQWRkOgogICAgICAgICAgICAgc2hpZnQoKTsKQEAgLTU4
MSw3ICs1ODksNyBAQCBzdGFydDoKICAgICAgICAgICAgICAgICB0b2tlbiA9IFBMVVNFUVVBTDsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2Vu
ID0gJysnOworICAgICAgICAgICAgdG9rZW4gPSBQTFVTOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ2hhcmFjdGVyU3ViOgogICAgICAgICAgICAgc2hpZnQoKTsKQEAgLTU5OSw3
ICs2MDcsNyBAQCBzdGFydDoKICAgICAgICAgICAgICAgICB0b2tlbiA9IE1JTlVTRVFVQUw7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9
ICctJzsKKyAgICAgICAgICAgIHRva2VuID0gTUlOVVM7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDaGFyYWN0ZXJNdWx0aXBseToKICAgICAgICAgICAgIHNoaWZ0KCk7CkBAIC02
MDgsNyArNjE2LDcgQEAgc3RhcnQ6CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBNVUxURVFVQUw7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tl
biA9ICcqJzsKKyAgICAgICAgICAgIHRva2VuID0gVElNRVM7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDaGFyYWN0ZXJTbGFzaDoKICAgICAgICAgICAgIHNoaWZ0KCk7CkBAIC02
MjUsNyArNjMzLDcgQEAgc3RhcnQ6CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBESVZFUVVBTDsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2Vu
ID0gJy8nOworICAgICAgICAgICAgdG9rZW4gPSBESVZJREU7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDaGFyYWN0ZXJBbmQ6CiAgICAgICAgICAgICBzaGlmdCgpOwpAQCAtNjM5
LDcgKzY0Nyw3IEBAIHN0YXJ0OgogICAgICAgICAgICAgICAgIHRva2VuID0gQU5ERVFVQUw7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9
ICcmJzsKKyAgICAgICAgICAgIHRva2VuID0gQklUQU5EOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ2hhcmFjdGVyWG9yOgogICAgICAgICAgICAgc2hpZnQoKTsKQEAgLTY0OCw3
ICs2NTYsNyBAQCBzdGFydDoKICAgICAgICAgICAgICAgICB0b2tlbiA9IFhPUkVRVUFMOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSAn
Xic7CisgICAgICAgICAgICB0b2tlbiA9IEJJVFhPUjsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENoYXJhY3Rlck1vZHVsbzoKICAgICAgICAgICAgIHNoaWZ0KCk7CkBAIC02NTcs
NyArNjY1LDcgQEAgc3RhcnQ6CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBNT0RFUVVBTDsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0g
JyUnOworICAgICAgICAgICAgdG9rZW4gPSBNT0Q7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDaGFyYWN0ZXJPcjoKICAgICAgICAgICAgIHNoaWZ0KCk7CkBAIC02NzEsNyArNjc5
LDcgQEAgc3RhcnQ6CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBPUjsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gJ3wnOworICAgICAg
ICAgICAgdG9rZW4gPSBCSVRPUjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENo
YXJhY3RlckRvdDoKICAgICAgICAgICAgIHNoaWZ0KCk7CkBAIC02NzksMTYgKzY4Nyw0NCBAQCBz
dGFydDoKICAgICAgICAgICAgICAgICByZWNvcmQ4KCcuJyk7CiAgICAgICAgICAgICAgICAgZ290
byBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
dG9rZW4gPSAnLic7CisgICAgICAgICAgICB0b2tlbiA9IERPVDsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENoYXJhY3RlclNpbXBsZToKLSAgICAgICAgICAgIHRva2VuID0gbV9j
dXJyZW50OworICAgICAgICBjYXNlIENoYXJhY3Rlck9wZW5QYXJlbjoKKyAgICAgICAgICAgIHRv
a2VuID0gT1BFTlBBUkVOOworICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIENoYXJhY3RlckNsb3NlUGFyZW46CisgICAgICAgICAgICB0b2tlbiA9
IENMT1NFUEFSRU47CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ2hhcmFjdGVyT3BlbkJyYWNrZXQ6CisgICAgICAgICAgICB0b2tlbiA9IE9Q
RU5CUkFDS0VUOworICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENoYXJhY3RlckNsb3NlQnJhY2tldDoKKyAgICAgICAgICAgIHRva2VuID0gQ0xP
U0VCUkFDS0VUOworICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENoYXJhY3RlckNvbW1hOgorICAgICAgICAgICAgdG9rZW4gPSBDT01NQTsKKyAg
ICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGFy
YWN0ZXJDb2xvbjoKKyAgICAgICAgICAgIHRva2VuID0gQ09MT047CisgICAgICAgICAgICBzaGlm
dCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hhcmFjdGVyUXVlc3Rpb246
CisgICAgICAgICAgICB0b2tlbiA9IFFVRVNUSU9OOworICAgICAgICAgICAgc2hpZnQoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENoYXJhY3RlclRpbGRlOgorICAgICAgICAg
ICAgdG9rZW4gPSBUSUxERTsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDaGFyYWN0ZXJTZW1pY29sb246CiAgICAgICAgICAgICBtX2RlbGlt
aXRlZCA9IHRydWU7CiAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgdG9rZW4gPSAn
Oyc7CisgICAgICAgICAgICB0b2tlbiA9IFNFTUlDT0xPTjsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENoYXJhY3Rlck9wZW5CcmFjZToKICAgICAgICAgICAgIGx2YWxwLT5pbnRW
YWx1ZSA9IGN1cnJlbnRPZmZzZXQoKTsKQEAgLTcyMyw3ICs3NTksNyBAQCBzdGFydDoKICAgICAg
ICAgICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOwogICAgICAgICAgICAgbV90ZXJtaW5hdG9yID0g
dHJ1ZTsKICAgICAgICAgICAgIGlmIChsYXN0VG9rZW5XYXNSZXN0cktleXdvcmQoKSkgewotICAg
ICAgICAgICAgICAgIHRva2VuID0gJzsnOworICAgICAgICAgICAgICAgIHRva2VuID0gU0VNSUNP
TE9OOwogICAgICAgICAgICAgICAgIGdvdG8gZG9uZVNlbWljb2xvbjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGdvdG8gc3RhcnQ7CkBAIC03NTgsMTAgKzc5NCwxMCBAQCBzdGFydElkZW50
aWZpZXJXaXRoQmFja3NsYXNoOiB7CiAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgc2hp
ZnQoKTsKIAotICAgIHRva2VuID0gZ2V0VW5pY29kZUNoYXJhY3RlcigpOwotICAgIGlmIChVTkxJ
S0VMWSh0b2tlbiA9PSAtMSkpCisgICAgaWRlbnRDaGFyID0gZ2V0VW5pY29kZUNoYXJhY3Rlcigp
OworICAgIGlmIChVTkxJS0VMWShpZGVudENoYXIgPT0gLTEpKQogICAgICAgICBnb3RvIHJldHVy
bkVycm9yOwotICAgIGlmIChVTkxJS0VMWSghaXNJZGVudFN0YXJ0KHRva2VuKSkpCisgICAgaWYg
KFVOTElLRUxZKCFpc0lkZW50U3RhcnQoaWRlbnRDaGFyKSkpCiAgICAgICAgIGdvdG8gcmV0dXJu
RXJyb3I7CiAgICAgZ290byBpbklkZW50aWZpZXJBZnRlckNoYXJhY3RlckNoZWNrOwogfQpAQCAt
Nzg0LDEzICs4MjAsMTMgQEAgc3RhcnRJZGVudGlmaWVyT3JLZXl3b3JkOiB7CiAgICAgICAgIGlm
IChVTkxJS0VMWShtX2N1cnJlbnQgIT0gJ3UnKSkKICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJy
b3I7CiAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgIHRva2VuID0gZ2V0VW5pY29kZUNoYXJhY3Rl
cigpOwotICAgICAgICBpZiAoVU5MSUtFTFkodG9rZW4gPT0gLTEpKQorICAgICAgICBpZGVudENo
YXIgPSBnZXRVbmljb2RlQ2hhcmFjdGVyKCk7CisgICAgICAgIGlmIChVTkxJS0VMWShpZGVudENo
YXIgPT0gLTEpKQogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKLSAgICAgICAgaWYgKFVO
TElLRUxZKCFpc0lkZW50UGFydCh0b2tlbikpKQorICAgICAgICBpZiAoVU5MSUtFTFkoIWlzSWRl
bnRQYXJ0KGlkZW50Q2hhcikpKQogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKIGluSWRl
bnRpZmllckFmdGVyQ2hhcmFjdGVyQ2hlY2s6Ci0gICAgICAgIHJlY29yZDE2KHRva2VuKTsKKyAg
ICAgICAgcmVjb3JkMTYoaWRlbnRDaGFyKTsKIAogICAgICAgICB3aGlsZSAoaXNJZGVudFBhcnQo
bV9jdXJyZW50KSkgewogICAgICAgICAgICAgcmVjb3JkMTYobV9jdXJyZW50KTsKQEAgLTgwMiw3
ICs4MzgsNyBAQCBpbklkZW50aWZpZXJBZnRlckNoYXJhY3RlckNoZWNrOgogaW5TaW5nbGVMaW5l
Q29tbWVudDoKICAgICB3aGlsZSAoIWlzTGluZVRlcm1pbmF0b3IobV9jdXJyZW50KSkgewogICAg
ICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09IC0xKSkKLSAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICAgICAgcmV0dXJuIEVPRlRPSzsKICAgICAgICAgc2hpZnQoKTsKICAgICB9CiAg
ICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwpAQCAtOTY5LDcgKzEwMDUsNyBAQCBkb25lTnVtZXJp
YzoKICAgICBnb3RvIHJldHVyblRva2VuOwogCiBkb25lU2VtaWNvbG9uOgotICAgIHRva2VuID0g
JzsnOworICAgIHRva2VuID0gU0VNSUNPTE9OOwogICAgIG1fZGVsaW1pdGVkID0gdHJ1ZTsKICAg
ICBnb3RvIHJldHVyblRva2VuOwogCkBAIC05ODYsNyArMTAyMiw3IEBAIGRvbmVJZGVudGlmaWVy
T3JLZXl3b3JkOiB7CiAgICAgbV9kZWxpbWl0ZWQgPSBmYWxzZTsKICAgICBtX2J1ZmZlcjE2LnJl
c2l6ZSgwKTsKICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gbV9rZXl3b3JkVGFibGUuZW50
cnkobV9nbG9iYWxEYXRhLCAqbHZhbHAtPmlkZW50KTsKLSAgICB0b2tlbiA9IGVudHJ5ID8gZW50
cnktPmxleGVyVmFsdWUoKSA6IHN0YXRpY19jYXN0PGludD4oSURFTlQpOworICAgIHRva2VuID0g
ZW50cnkgPyBzdGF0aWNfY2FzdDxKU1Rva2VuVHlwZT4oZW50cnktPmxleGVyVmFsdWUoKSkgOiBJ
REVOVDsKIAogICAgIC8vIEZhbGwgdGhyb3VnaCBpbnRvIHJldHVyblRva2VuLgogfQpAQCAtMTAw
Miw3ICsxMDM4LDcgQEAgcmV0dXJuVG9rZW46IHsKIAogcmV0dXJuRXJyb3I6CiAgICAgbV9lcnJv
ciA9IHRydWU7Ci0gICAgcmV0dXJuIC0xOworICAgIHJldHVybiBFUlJPUlRPSzsKIH0KIAogYm9v
bCBMZXhlcjo6c2NhblJlZ0V4cChjb25zdCBJZGVudGlmaWVyKiYgcGF0dGVybiwgY29uc3QgSWRl
bnRpZmllciomIGZsYWdzLCBVQ2hhciBwYXR0ZXJuUHJlZml4KQpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApp
bmRleCAwZjM2NmI0YWFlOTdjZGVkZTIzMzg4NWEzNzY0MDNlMmIxNDg1NTRjLi41YWI3YWQ3ZGYz
ZmY5NWI5YWI0YzFiMTg2ZjY4MWE5NzUzMzEwZTdkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAt
MjMsNiArMjMsNyBAQAogI2lmbmRlZiBMZXhlcl9oCiAjZGVmaW5lIExleGVyX2gKIAorI2luY2x1
ZGUgIkpTUGFyc2VyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJl
bmEuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCkBAIC0zNCw4ICszNSw2IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi0gICAgdW5pb24gSlNUb2tlbkRhdGE7Ci0gICAgc3RydWN0IEpTVG9rZW5J
bmZvOwogICAgIGNsYXNzIFJlZ0V4cDsKIAogICAgIGNsYXNzIExleGVyIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKQEAgLTUxLDcgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
c2V0SXNSZXBhcnNpbmcoKSB7IG1faXNSZXBhcnNpbmcgPSB0cnVlOyB9CiAKICAgICAgICAgLy8g
RnVuY3Rpb25zIGZvciB0aGUgcGFyc2VyIGl0c2VsZi4KLSAgICAgICAgaW50IGxleChKU1Rva2Vu
RGF0YSogbHZhbHAsIEpTVG9rZW5JbmZvKiBsbG9jcCk7CisgICAgICAgIEpTVG9rZW5UeXBlIGxl
eChKU1Rva2VuRGF0YSogbHZhbHAsIEpTVG9rZW5JbmZvKiBsbG9jcCk7CiAgICAgICAgIGludCBs
aW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CiAgICAgICAgIHZvaWQg
c2V0TGFzdExpbmVOdW1iZXIoaW50IGxhc3RMaW5lTnVtYmVyKSB7IG1fbGFzdExpbmVOdW1iZXIg
PSBsYXN0TGluZU51bWJlcjsgfQogICAgICAgICBpbnQgbGFzdExpbmVOdW1iZXIoKSBjb25zdCB7
IHJldHVybiBtX2xhc3RMaW5lTnVtYmVyOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61130</attachid>
            <date>2010-07-09 18:11:30 -0700</date>
            <delta_ts>2010-07-09 18:19:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42014-20100709181128.patch</filename>
            <type>text/plain</type>
            <size>44852</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiNjNiODI2MzBkMGQ3NmZjNTYwZWZlYTcwZjMwNzE3Zjk1YmQxZjMxLi43
OTg3NzgzMGI1YzY5OTU5YzAyODQ3NDYyMmIyODY3MDI2NWJjNGEyIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsNjIgQEAKIDIwMTAtMDctMDkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
IAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaWR5IHVw
IGxleGVyIHRva2VuIGlkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDIwMTQKKworICAgICAgICBTdG9wIHVzaW5nIGNoYXJhY3RlciBsaXRlcmFscyB0
byBpZGVudGlmeSBzaW5nbGUgY2hhcmFjdGVyIHRva2VucworICAgICAgICBhbmQgaW5zdGVhZCB1
c2Ugc3ltYm9saWMgbmFtZXMgZm9yIGFsbCB0b2tlbnMuCisKKyAgICAgICAgKiBwYXJzZXIvQVNU
QnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZSk6Cisg
ICAgICAgICogcGFyc2VyL0pTUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OmNv
bnN1bWUpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6bWF0Y2gpOgorICAgICAgICAoSlNDOjpK
U1BhcnNlcjo6YXV0b1NlbWlDb2xvbik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpKU1BhcnNl
cik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVByb2dyYW0pOgorICAgICAgICAoSlND
OjpKU1BhcnNlcjo6YWxsb3dBdXRvbWF0aWNTZW1pY29sb24pOgorICAgICAgICAoSlNDOjpKU1Bh
cnNlcjo6cGFyc2VEb1doaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBh
cnNlV2hpbGVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VWYXJEZWNs
YXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VDb25zdERlY2xhcmF0
aW9uTGlzdCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUZvclN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVJldHVyblN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkpTUGFyc2VyOjpwYXJzZVdpdGhTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNl
cjo6cGFyc2VTd2l0Y2hTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VT
d2l0Y2hDbGF1c2VzKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlU3dpdGNoRGVmYXVs
dENsYXVzZSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVRyeVN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZURlYnVnZ2VyU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6SlNQYXJzZXI6OnBhcnNlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6
OnBhcnNlRm9ybWFsUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUZ1
bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25Pckxh
YmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlSWZTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKEpT
Qzo6SlNQYXJzZXI6OnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpK
U1BhcnNlcjo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjppc1Vu
YXJ5T3ApOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6aXNCaW5hcnlPcGVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUJpbmFyeUV4cHJlc3Npb24pOgorICAgICAgICAoSlND
OjpKU1BhcnNlcjo6cGFyc2VQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJz
ZU9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VTdHJpY3RPYmpl
Y3RMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlQXJyYXlMaXRlcmFsKToK
KyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24pOgorICAgICAg
ICAoSlNDOjpKU1BhcnNlcjo6cGFyc2VBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKU1BhcnNl
cjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNl
VW5hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvSlNQYXJzZXIuaDoKKyAgICAgICAg
KEpTQzo6KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjopOgor
ICAgICAgICAoSlNDOjpMZXhlcjo6bGV4KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKwor
MjAxMC0wNy0wOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCiAgICAgICAgIFJl
dmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgogCiAgICAgICAgIFJlbW92ZSBhIGNvdXBsZSBvZiBl
eGNlc3Mgd3JpdGVzIGZyb20gdGhlIGxleGVyCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApp
bmRleCA5ZDVkZTJkZWI4ZWI2MzM4Y2FhMzgzMzFiNzM3ZTAyYzAwZTk4M2I1Li4zYjdmZmI1NWU4
NDVjNDczMmEyNjliZTlkNjBkZTIzODc3NGZhYTRlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgKQEAgLTc2MiwxMyArNzYyLDEzIEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlQmluYXJ5Tm9kZShpbnQgdG9rZW4sIHBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hCiAgICAg
Y2FzZSBBTkQ6CiAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNhbE9wTm9k
ZShtX2dsb2JhbERhdGEsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxBbmQpOwogCi0g
ICAgY2FzZSAnfCc6CisgICAgY2FzZSBCSVRPUjoKICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBCaXRPck5vZGUobV9nbG9iYWxEYXRhLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAotICAgIGNhc2UgJ14nOgorICAgIGNhc2UgQklUWE9S
OgogICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdFhPck5vZGUobV9nbG9iYWxE
YXRhLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAot
ICAgIGNhc2UgJyYnOgorICAgIGNhc2UgQklUQU5EOgogICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIEJpdEFuZE5vZGUobV9nbG9iYWxEYXRhLCBsaHMuZmlyc3QsIHJocy5maXJzdCwg
cmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgRVFFUToKQEAgLTc4MywxMCAr
NzgzLDEwIEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZShpbnQg
dG9rZW4sIHBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hCiAgICAgY2FzZSBTVFJORVE6CiAgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTm90U3RyaWN0RXF1YWxOb2RlKG1fZ2xvYmFs
RGF0YSwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAK
LSAgICBjYXNlICc8JzoKKyAgICBjYXNlIExUOgogICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIExlc3NOb2RlKG1fZ2xvYmFsRGF0YSwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKLSAgICBjYXNlICc+JzoKKyAgICBjYXNlIEdUOgogICAg
ICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEdyZWF0ZXJOb2RlKG1fZ2xvYmFsRGF0YSwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBj
YXNlIExFOgpAQCAtODE2LDE5ICs4MTYsMTkgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VCaW5hcnlOb2RlKGludCB0b2tlbiwgcGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmEKICAg
ICBjYXNlIFVSU0hJRlQ6CiAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5zaWdu
ZWRSaWdodFNoaWZ0Tm9kZShtX2dsb2JhbERhdGEsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMu
c2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCi0gICAgY2FzZSAnKyc6CisgICAgY2FzZSBQTFVTOgog
ICAgICAgICByZXR1cm4gbWFrZUFkZE5vZGUobGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNv
bmQuaGFzQXNzaWdubWVudCk7CiAKLSAgICBjYXNlICctJzoKKyAgICBjYXNlIE1JTlVTOgogICAg
ICAgICByZXR1cm4gbWFrZVN1Yk5vZGUobGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQu
aGFzQXNzaWdubWVudCk7CiAKLSAgICBjYXNlICcqJzoKKyAgICBjYXNlIFRJTUVTOgogICAgICAg
ICByZXR1cm4gbWFrZU11bHROb2RlKGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhh
c0Fzc2lnbm1lbnQpOwogCi0gICAgY2FzZSAnLyc6CisgICAgY2FzZSBESVZJREU6CiAgICAgICAg
IHJldHVybiBtYWtlRGl2Tm9kZShsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKIAotICAgIGNhc2UgJyUnOgorICAgIGNhc2UgTU9EOgogICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIE1vZE5vZGUobV9nbG9iYWxEYXRhLCBsaHMuZmlyc3QsIHJo
cy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKICAgICB9CiAgICAgQ1JBU0goKTsK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9KU1BhcnNlci5jcHAgYi9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuY3BwCmluZGV4IDg0MjMxNjJlODJlZjU5NDFhOGU0M2M5
MWZkODA5Mzc2MDhmZDNkNWYuLjg0ZmMxNjVmYTFhMDA3ODk1YTc0ODlkYjhiMjRlMTNhOTE2NGI3
ODYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9KU1BhcnNlci5jcHAKKysrIGIv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmNwcApAQCAtOTIsNyArOTIsNyBAQCBwcml2
YXRlOgogICAgICAgICBtX3Rva2VuQ291bnQrKzsKICAgICB9CiAKLSAgICBib29sIGNvbnN1bWUo
aW50IGV4cGVjdGVkKQorICAgIGJvb2wgY29uc3VtZShKU1Rva2VuVHlwZSBleHBlY3RlZCkKICAg
ICB7CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gbV90b2tlbi5tX3R5cGUgPT0gZXhwZWN0ZWQ7CiAg
ICAgICAgIGZhaWxJZkZhbHNlKHJlc3VsdCk7CkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBib29sIG1hdGNoKGludCBleHBl
Y3RlZCkKKyAgICBib29sIG1hdGNoKEpTVG9rZW5UeXBlIGV4cGVjdGVkKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIG1fdG9rZW4ubV90eXBlID09IGV4cGVjdGVkOwogICAgIH0KQEAgLTE2MCwxMiAr
MTYwLDEyIEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdB
WVNfSU5MSU5FIFRyZWVDb25zdERlY2xMaXN0IHBhcnNlQ29uc3REZWNsYXJhdGlvbkxpc3QoVHJl
ZUJ1aWxkZXImIGNvbnRleHQpOwogICAgIGVudW0gRnVuY3Rpb25SZXF1aXJlbWVudHMgeyBGdW5j
dGlvbk5vUmVxdWlyZW1lbnRzLCBGdW5jdGlvbk5lZWRzTmFtZSB9OwogICAgIHRlbXBsYXRlIDxG
dW5jdGlvblJlcXVpcmVtZW50cywgY2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgcGFyc2VGdW5jdGlv
bkluZm8oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYsIFRyZWVGb3JtYWxQYXJhbWV0
ZXJMaXN0JiwgVHJlZUZ1bmN0aW9uQm9keSYsIGludCYgb3BlbkJyYWNlLCBpbnQmIGNsb3NlQnJh
Y2UsIGludCYgYm9keVN0YXJ0TGluZSk7Ci0gICAgaW50IGlzQmluYXJ5T3BlcmF0b3IoaW50IHRv
a2VuKTsKKyAgICBpbnQgaXNCaW5hcnlPcGVyYXRvcihKU1Rva2VuVHlwZSB0b2tlbik7CiAgICAg
Ym9vbCBhbGxvd0F1dG9tYXRpY1NlbWljb2xvbigpOwogCiAgICAgYm9vbCBhdXRvU2VtaUNvbG9u
KCkKICAgICB7Ci0gICAgICAgIGlmICh0b2tlbigpLm1fdHlwZSA9PSAnOycpIHsKKyAgICAgICAg
aWYgKHRva2VuKCkubV90eXBlID09IFNFTUlDT0xPTikgewogICAgICAgICAgICAgbmV4dCgpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTIzMiw3ICsyMzIsNyBAQCBi
b29sIEpTUGFyc2VyOjpwYXJzZVByb2dyYW0oKQogewogICAgIEFTVEJ1aWxkZXIgY29udGV4dCht
X2dsb2JhbERhdGEsIG1fbGV4ZXIpOwogICAgIFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50
cyA9IHBhcnNlU291cmNlRWxlbWVudHM8QVNUQnVpbGRlcj4oY29udGV4dCk7Ci0gICAgaWYgKCFz
b3VyY2VFbGVtZW50cyB8fCAhY29uc3VtZSgwKSkKKyAgICBpZiAoIXNvdXJjZUVsZW1lbnRzIHx8
ICFjb25zdW1lKEVPRlRPSykpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIG1fZ2xvYmFsRGF0
YS0+cGFyc2VyLT5kaWRGaW5pc2hQYXJzaW5nKHNvdXJjZUVsZW1lbnRzLCBjb250ZXh0LnZhckRl
Y2xhcmF0aW9ucygpLCBjb250ZXh0LmZ1bmNEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mZWF0dXJl
cygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXN0TGlu
ZSwgY29udGV4dC5udW1Db25zdGFudHMoKSk7CkBAIC0yNDEsNyArMjQxLDcgQEAgYm9vbCBKU1Bh
cnNlcjo6cGFyc2VQcm9ncmFtKCkKIAogYm9vbCBKU1BhcnNlcjo6YWxsb3dBdXRvbWF0aWNTZW1p
Y29sb24oKQogewotICAgIHJldHVybiBtYXRjaChDTE9TRUJSQUNFKSB8fCBtYXRjaCgwKSB8fCBt
X2xleGVyLT5wcmV2VGVybWluYXRvcigpOworICAgIHJldHVybiBtYXRjaChDTE9TRUJSQUNFKSB8
fCBtYXRjaChFT0ZUT0spIHx8IG1fbGV4ZXItPnByZXZUZXJtaW5hdG9yKCk7CiB9CiAKIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIEpTUGFyc2VyOjpwYXJz
ZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQpAQCAtMjkyLDExICsyOTIsMTEg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpw
YXJzZURvV2hpbGVTdGF0ZW1lbnQoVHJlZUIKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwog
ICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgY29uc3VtZU9yRmFpbChXSElMRSk7
Ci0gICAgY29uc3VtZU9yRmFpbCgnKCcpOworICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsK
ICAgICBUcmVlRXhwcmVzc2lvbiBleHByID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAg
IGZhaWxJZkZhbHNlKGV4cHIpOwotICAgIGNvbnN1bWVPckZhaWwoJyknKTsKLSAgICBpZiAobWF0
Y2goJzsnKSkKKyAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOworICAgIGlmIChtYXRjaChT
RU1JQ09MT04pKQogICAgICAgICBuZXh0KCk7IC8vIEFsd2F5cyBwZXJmb3JtcyBhdXRvbWF0aWMg
c2VtaWNvbG9uIGluc2VydGlvbi4KICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVEb1doaWxlU3Rh
dGVtZW50KHN0YXRlbWVudCwgZXhwciwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KQEAgLTMwNiwx
MSArMzA2LDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBK
U1BhcnNlcjo6cGFyc2VXaGlsZVN0YXRlbWVudChUcmVlQnVpCiAgICAgQVNTRVJUKG1hdGNoKFdI
SUxFKSk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKLSAg
ICBjb25zdW1lT3JGYWlsKCcoJyk7CisgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwogICAg
IFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFp
bElmRmFsc2UoZXhwcik7CiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICBjb25z
dW1lT3JGYWlsKCcpJyk7CisgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKICAgICBUcmVl
U3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQpOwogICAgIGZhaWxJ
ZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlV2hpbGVTdGF0ZW1l
bnQoZXhwciwgc3RhdGVtZW50LCBzdGFydExpbmUsIGVuZExpbmUpOwpAQCAtMzI5LDcgKzMyOSw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6
OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KFRyCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG5h
bWUgPSB0b2tlbigpLm1fZGF0YS5pZGVudDsKICAgICAgICAgbGFzdElkZW50ID0gbmFtZTsKICAg
ICAgICAgbmV4dCgpOwotICAgICAgICBib29sIGhhc0luaXRpYWxpemVyID0gbWF0Y2goJz0nKTsK
KyAgICAgICAgYm9vbCBoYXNJbml0aWFsaXplciA9IG1hdGNoKEVRVUFMKTsKICAgICAgICAgY29u
dGV4dC5hZGRWYXIobmFtZSwgKGhhc0luaXRpYWxpemVyIHx8ICghbV9hbGxvd3NJbiAmJiBtYXRj
aChJTlRPS0VOKSkpID8gRGVjbGFyYXRpb25TdGFja3M6Okhhc0luaXRpYWxpemVyIDogMCk7CiAg
ICAgICAgIGlmIChoYXNJbml0aWFsaXplcikgewogICAgICAgICAgICAgaW50IHZhckRpdm90ID0g
dG9rZW5TdGFydCgpICsgMTsKQEAgLTM0Nyw3ICszNDcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZVZhckRlY2xhcmF0aW9uTGlz
dChUcgogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHZhckRlY2xzID0gY29udGV4
dC5jb21iaW5lQ29tbWFOb2Rlcyh2YXJEZWNscywgbm9kZSk7CiAgICAgICAgIH0KLSAgICB9IHdo
aWxlIChtYXRjaCgnLCcpKTsKKyAgICB9IHdoaWxlIChtYXRjaChDT01NQSkpOwogICAgIHJldHVy
biB2YXJEZWNsczsKIH0KIApAQCAtMzYwLDcgKzM2MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUNvbnN0RGVjbExpc3QgSlNQYXJzZXI6OnBhcnNlQ29uc3REZWNsYXJhdGlv
bkxpCiAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciogbmFtZSA9IHRva2VuKCkubV9kYXRhLmlkZW50OwogICAgICAgICBuZXh0KCk7Ci0gICAgICAg
IGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBtYXRjaCgnPScpOworICAgICAgICBib29sIGhhc0luaXRp
YWxpemVyID0gbWF0Y2goRVFVQUwpOwogICAgICAgICBjb250ZXh0LmFkZFZhcihuYW1lLCBEZWNs
YXJhdGlvblN0YWNrczo6SXNDb25zdGFudCB8IChoYXNJbml0aWFsaXplciA/IERlY2xhcmF0aW9u
U3RhY2tzOjpIYXNJbml0aWFsaXplciA6IDApKTsKICAgICAgICAgVHJlZUV4cHJlc3Npb24gaW5p
dGlhbGl6ZXIgPSAwOwogICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZXIpIHsKQEAgLTM3MCw3ICsz
NzAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDb25zdERlY2xMaXN0IEpT
UGFyc2VyOjpwYXJzZUNvbnN0RGVjbGFyYXRpb25MaQogICAgICAgICB0YWlsID0gY29udGV4dC5h
cHBlbmRDb25zdERlY2wodGFpbCwgbmFtZSwgaW5pdGlhbGl6ZXIpOwogICAgICAgICBpZiAoIWNv
bnN0RGVjbHMpCiAgICAgICAgICAgICBjb25zdERlY2xzID0gdGFpbDsKLSAgICB9IHdoaWxlICht
YXRjaCgnLCcpKTsKKyAgICB9IHdoaWxlIChtYXRjaChDT01NQSkpOwogICAgIHJldHVybiBjb25z
dERlY2xzOwogfQogCkBAIC0zNzksNyArMzc5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUZvclN0YXRlbWVudChUcmVlQnVpbGQK
ICAgICBBU1NFUlQobWF0Y2goRk9SKSk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgp
OwogICAgIG5leHQoKTsKLSAgICBjb25zdW1lT3JGYWlsKCcoJyk7CisgICAgY29uc3VtZU9yRmFp
bChPUEVOUEFSRU4pOwogICAgIGludCBub25MSFNDb3VudCA9IG1fbm9uTEhTQ291bnQ7CiAgICAg
aW50IGRlY2xhcmF0aW9ucyA9IDA7CiAgICAgaW50IGRlY2xzU3RhcnQgPSAwOwpAQCAtNDA0LDcg
KzQwNCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1Bh
cnNlcjo6cGFyc2VGb3JTdGF0ZW1lbnQoVHJlZUJ1aWxkCiAgICAgICAgICAgICBmYWlsKCk7CiAK
ICAgICAgICAgLy8gUmVtYWluZGVyIG9mIGEgc3RhbmRhcmQgZm9yIGxvb3AgaXMgaGFuZGxlZCBp
ZGVudGljYWxseQotICAgICAgICBpZiAoZGVjbGFyYXRpb25zID4gMSB8fCBtYXRjaCgnOycpKQor
ICAgICAgICBpZiAoZGVjbGFyYXRpb25zID4gMSB8fCBtYXRjaChTRU1JQ09MT04pKQogICAgICAg
ICAgICAgZ290byBzdGFuZGFyZEZvckxvb3A7CiAKICAgICAgICAgLy8gSGFuZGxlIGZvci1pbiB3
aXRoIHZhciBkZWNsYXJhdGlvbgpAQCAtNDE3LDcgKzQxNyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VGb3JTdGF0ZW1lbnQoVHJl
ZUJ1aWxkCiAgICAgICAgIGludCBleHByRW5kID0gbGFzdFRva2VuRW5kKCk7CiAKICAgICAgICAg
aW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICAgICAgY29uc3VtZU9yRmFpbCgnKScpOwor
ICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwogCiAgICAgICAgIFRyZWVTdGF0ZW1l
bnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZh
bHNlKHN0YXRlbWVudCk7CkBAIC00MjUsNyArNDI1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZUZvclN0YXRlbWVudChUcmVlQnVp
bGQKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGZvckluVGFyZ2V0LCBm
b3JJbkluaXRpYWxpemVyLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGluTG9jYXRpb24s
IGV4cHJFbmQsIGluaXRTdGFydCwgaW5pdEVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICB9
CiAKLSAgICBpZiAoIW1hdGNoKCc7JykpIHsKKyAgICBpZiAoIW1hdGNoKFNFTUlDT0xPTikpIHsK
ICAgICAgICAgbV9hbGxvd3NJbiA9IGZhbHNlOwogICAgICAgICBkZWNsc1N0YXJ0ID0gdG9rZW5T
dGFydCgpOwogICAgICAgICBkZWNscyA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTQz
NCwyNSArNDM0LDI1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBKU1BhcnNlcjo6cGFyc2VGb3JTdGF0ZW1lbnQoVHJlZUJ1aWxkCiAgICAgICAgIGZhaWxJZkZh
bHNlKGRlY2xzKTsKICAgICB9CiAKLSAgICBpZiAobWF0Y2goJzsnKSkgeworICAgIGlmIChtYXRj
aChTRU1JQ09MT04pKSB7CiAgICAgc3RhbmRhcmRGb3JMb29wOgogICAgICAgICAvLyBTdGFuZGFy
ZCBmb3IgbG9vcAogICAgICAgICBuZXh0KCk7CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGNvbmRp
dGlvbiA9IDA7CiAKLSAgICAgICAgaWYgKCFtYXRjaCgnOycpKSB7CisgICAgICAgIGlmICghbWF0
Y2goU0VNSUNPTE9OKSkgewogICAgICAgICAgICAgY29uZGl0aW9uID0gcGFyc2VFeHByZXNzaW9u
KGNvbnRleHQpOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoY29uZGl0aW9uKTsKICAgICAgICAg
fQotICAgICAgICBjb25zdW1lT3JGYWlsKCc7Jyk7CisgICAgICAgIGNvbnN1bWVPckZhaWwoU0VN
SUNPTE9OKTsKIAogICAgICAgICBUcmVlRXhwcmVzc2lvbiBpbmNyZW1lbnQgPSAwOwotICAgICAg
ICBpZiAoIW1hdGNoKCcpJykpIHsKKyAgICAgICAgaWYgKCFtYXRjaChDTE9TRVBBUkVOKSkgewog
ICAgICAgICAgICAgaW5jcmVtZW50ID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAg
ICAgICAgZmFpbElmRmFsc2UoaW5jcmVtZW50KTsKICAgICAgICAgfQogICAgICAgICBpbnQgZW5k
TGluZSA9IHRva2VuTGluZSgpOwotICAgICAgICBjb25zdW1lT3JGYWlsKCcpJyk7CisgICAgICAg
IGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVt
ZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHN0YXRl
bWVudCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckxvb3AoZGVjbHMsIGNvbmRp
dGlvbiwgaW5jcmVtZW50LCBzdGF0ZW1lbnQsIGhhc0RlY2xhcmF0aW9uLCBzdGFydExpbmUsIGVu
ZExpbmUpOwpAQCAtNDY1LDcgKzQ2NSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VGb3JTdGF0ZW1lbnQoVHJlZUJ1aWxkCiAgICAg
ZmFpbElmRmFsc2UoZXhwcik7CiAgICAgaW50IGV4cHJFbmQgPSBsYXN0VG9rZW5FbmQoKTsKICAg
ICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwotICAgIGNvbnN1bWVPckZhaWwoJyknKTsKKyAg
ICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwogICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50
ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsK
ICAgICAKQEAgLTUyMywxNCArNTIzLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VSZXR1cm5TdGF0ZW1lbnQoVHJlZUJ1CiAgICAg
Ly8gV2UgZG8gdGhlIGF1dG8gc2VtaWNvbG9uIGNoZWNrIGJlZm9yZSBhdHRlbXB0aW5nIHRvIHBh
cnNlIGFuIGV4cHJlc3Npb24KICAgICAvLyBhcyB3ZSBuZWVkIHRvIGVuc3VyZSB0aGUgYSBsaW5l
IGJyZWFrIGFmdGVyIHRoZSByZXR1cm4gY29ycmVjdGx5IHRlcm1pbmF0ZXMKICAgICAvLyB0aGUg
c3RhdGVtZW50Ci0gICAgaWYgKG1hdGNoKCc7JykpCisgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikp
CiAgICAgICAgIGVuZExpbmUgID0gdG9rZW5MaW5lKCk7CiAgICAgaWYgKGF1dG9TZW1pQ29sb24o
KSkKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KDAsIHN0YXJ0
LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAgVHJlZUV4cHJlc3Npb24gZXhwciA9IHBh
cnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShleHByKTsKICAgICBlbmQg
PSBsYXN0VG9rZW5FbmQoKTsKLSAgICBpZiAobWF0Y2goJzsnKSkKKyAgICBpZiAobWF0Y2goU0VN
SUNPTE9OKSkKICAgICAgICAgZW5kTGluZSAgPSB0b2tlbkxpbmUoKTsKICAgICBmYWlsSWZGYWxz
ZShhdXRvU2VtaUNvbG9uKCkpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJldHVyblN0YXRl
bWVudChleHByLCBzdGFydCwgZW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwpAQCAtNTU3LDE0ICs1
NTcsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFy
c2VyOjpwYXJzZVdpdGhTdGF0ZW1lbnQoVHJlZUJ1aWwKICAgICBBU1NFUlQobWF0Y2goV0lUSCkp
OwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7Ci0gICAgY29u
c3VtZU9yRmFpbCgnKCcpOworICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKICAgICBpbnQg
c3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgVHJlZUV4cHJlc3Npb24gZXhwciA9IHBhcnNlRXhw
cmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShleHByKTsKICAgICBpbnQgZW5kID0g
bGFzdFRva2VuRW5kKCk7CiAKICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwotICAgIGNv
bnN1bWVPckZhaWwoJyknKTsKKyAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwogICAgIAog
ICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CiAg
ICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKQEAgLTU3NywxMSArNTc3LDExIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VTd2l0Y2hT
dGF0ZW1lbnQoVHJlZUJ1CiAgICAgQVNTRVJUKG1hdGNoKFNXSVRDSCkpOwogICAgIGludCBzdGFy
dExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7Ci0gICAgY29uc3VtZU9yRmFpbCgnKCcp
OworICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKICAgICBUcmVlRXhwcmVzc2lvbiBleHBy
ID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGV4cHIpOwogICAg
IGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgY29uc3VtZU9yRmFpbCgnKScpOworICAg
IGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOQlJBQ0Up
OwogCiAgICAgVHJlZUNsYXVzZUxpc3QgZmlyc3RDbGF1c2VzID0gcGFyc2VTd2l0Y2hDbGF1c2Vz
KGNvbnRleHQpOwpAQCAtNjA1LDcgKzYwNSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUNsYXVzZUxpc3QgSlNQYXJzZXI6OnBhcnNlU3dpdGNoQ2xhdXNlcyhUcmVlQnVpCiAg
ICAgbmV4dCgpOwogICAgIFRyZWVFeHByZXNzaW9uIGNvbmRpdGlvbiA9IHBhcnNlRXhwcmVzc2lv
bihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShjb25kaXRpb24pOwotICAgIGNvbnN1bWVPckZh
aWwoJzonKTsKKyAgICBjb25zdW1lT3JGYWlsKENPTE9OKTsKICAgICBUcmVlU291cmNlRWxlbWVu
dHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCk7CiAgICAgZmFpbElm
RmFsc2Uoc3RhdGVtZW50cyk7CiAgICAgVHJlZUNsYXVzZSBjbGF1c2UgPSBjb250ZXh0LmNyZWF0
ZUNsYXVzZShjb25kaXRpb24sIHN0YXRlbWVudHMpOwpAQCAtNjE2LDcgKzYxNiw3IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXVzZUxpc3QgSlNQYXJzZXI6OnBhcnNlU3dp
dGNoQ2xhdXNlcyhUcmVlQnVpCiAgICAgICAgIG5leHQoKTsKICAgICAgICAgVHJlZUV4cHJlc3Np
b24gY29uZGl0aW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZG
YWxzZShjb25kaXRpb24pOwotICAgICAgICBjb25zdW1lT3JGYWlsKCc6Jyk7CisgICAgICAgIGNv
bnN1bWVPckZhaWwoQ09MT04pOwogICAgICAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVtZW50
cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHN0
YXRlbWVudHMpOwogICAgICAgICBjbGF1c2UgPSBjb250ZXh0LmNyZWF0ZUNsYXVzZShjb25kaXRp
b24sIHN0YXRlbWVudHMpOwpAQCAtNjMwLDcgKzYzMCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUNsYXVzZSBKU1BhcnNlcjo6cGFyc2VTd2l0Y2hEZWZhdWx0Q2xhdXNlKFRy
ZWVCCiAgICAgaWYgKCFtYXRjaChERUZBVUxUKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgbmV4
dCgpOwotICAgIGNvbnN1bWVPckZhaWwoJzonKTsKKyAgICBjb25zdW1lT3JGYWlsKENPTE9OKTsK
ICAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMo
Y29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50cyk7CiAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlQ2xhdXNlKDAsIHN0YXRlbWVudHMpOwpAQCAtNjU0LDExICs2NTQsMTEgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IEpTUGFyc2VyOjpwYXJzZVRy
eVN0YXRlbWVudChUcmVlQnVpbGQKIAogICAgIGlmIChtYXRjaChDQVRDSCkpIHsKICAgICAgICAg
bmV4dCgpOwotICAgICAgICBjb25zdW1lT3JGYWlsKCcoJyk7CisgICAgICAgIGNvbnN1bWVPckZh
aWwoT1BFTlBBUkVOKTsKICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgICAgICBpZGVu
dCA9IHRva2VuKCkubV9kYXRhLmlkZW50OwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIGNvbnN1
bWVPckZhaWwoJyknKTsKKyAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKICAgICAg
ICAgbWF0Y2hPckZhaWwoT1BFTkJSQUNFKTsKICAgICAgICAgaW50IGluaXRpYWxFdmFsQ291bnQg
PSBjb250ZXh0LmV2YWxDb3VudCgpOwogICAgICAgICBjYXRjaEJsb2NrID0gcGFyc2VCbG9ja1N0
YXRlbWVudChjb250ZXh0KTsKQEAgLTY4Miw3ICs2ODIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlRGVidWdnZXJTdGF0ZW1lbnQo
VHJlZQogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQgZW5kTGluZSA9
IHN0YXJ0TGluZTsKICAgICBuZXh0KCk7Ci0gICAgaWYgKG1hdGNoKCc7JykpCisgICAgaWYgKG1h
dGNoKFNFTUlDT0xPTikpCiAgICAgICAgIHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIGZh
aWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRGVi
dWdnZXIoc3RhcnRMaW5lLCBlbmRMaW5lKTsKQEAgLTcxNiw3ICs3MTYsNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgSlNQYXJzZXI6OnBhcnNlU3RhdGVtZW50
KFRyZWVCdWlsZGVyJgogICAgICAgICByZXR1cm4gcGFyc2VDb25zdERlY2xhcmF0aW9uKGNvbnRl
eHQpOwogICAgIGNhc2UgRlVOQ1RJT046CiAgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uRGVj
bGFyYXRpb24oY29udGV4dCk7Ci0gICAgY2FzZSAnOyc6CisgICAgY2FzZSBTRU1JQ09MT046CiAg
ICAgICAgIG5leHQoKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRW1wdHlTdGF0ZW1l
bnQoKTsKICAgICBjYXNlIElGOgpAQCAtNzQzLDcgKzc0Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VTdGF0ZW1lbnQoVHJlZUJ1
aWxkZXImCiAgICAgICAgIHJldHVybiBwYXJzZVRyeVN0YXRlbWVudChjb250ZXh0KTsKICAgICBj
YXNlIERFQlVHR0VSOgogICAgICAgICByZXR1cm4gcGFyc2VEZWJ1Z2dlclN0YXRlbWVudChjb250
ZXh0KTsKLSAgICBjYXNlIDA6CisgICAgY2FzZSBFT0ZUT0s6CiAgICAgY2FzZSBDQVNFOgogICAg
IGNhc2UgQ0xPU0VCUkFDRToKICAgICBjYXNlIERFRkFVTFQ6CkBAIC03NjMsNyArNzYzLDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBKU1Bh
cnNlcjo6cGFyc2VGb3JtYWxQYXJhbWUKICAgICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBsaXN0
ID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCp0b2tlbigpLm1fZGF0YS5pZGVu
dCk7CiAgICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgdGFpbCA9IGxpc3Q7CiAgICAgbmV4dCgp
OwotICAgIHdoaWxlIChtYXRjaCgnLCcpKSB7CisgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewog
ICAgICAgICBuZXh0KCk7CiAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICAgICAgY29u
c3QgSWRlbnRpZmllciogaWRlbnQgPSB0b2tlbigpLm1fZGF0YS5pZGVudDsKQEAgLTc5MCwxMyAr
NzkwLDEzIEBAIHRlbXBsYXRlIDxKU1BhcnNlcjo6RnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWly
ZW1lbnRzLCBjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBKCiAgICAgICAgIG5leHQoKTsKICAgICB9
IGVsc2UgaWYgKHJlcXVpcmVtZW50cyA9PSBGdW5jdGlvbk5lZWRzTmFtZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGNvbnN1bWVPckZhaWwoJygnKTsKKyAgICBjb25zdW1lT3JGYWlsKE9Q
RU5QQVJFTik7CiAgICAgYm9vbCB1c2VzQXJndW1lbnRzID0gZmFsc2U7Ci0gICAgaWYgKCFtYXRj
aCgnKScpKSB7CisgICAgaWYgKCFtYXRjaChDTE9TRVBBUkVOKSkgewogICAgICAgICBwYXJhbWV0
ZXJzID0gcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKGNvbnRleHQsIHVzZXNBcmd1bWVudHMpOwogICAg
ICAgICBmYWlsSWZGYWxzZShwYXJhbWV0ZXJzKTsKICAgICB9Ci0gICAgY29uc3VtZU9yRmFpbCgn
KScpOworICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgbWF0Y2hPckZhaWwoT1BF
TkJSQUNFKTsKIAogICAgIG9wZW5CcmFjZVBvcyA9IHRva2VuKCkubV9kYXRhLmludFZhbHVlOwpA
QCAtODQ3LDcgKzg0Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBKU1BhcnNlcjo6cGFyc2VFeHByZXNzaW9uT3JMYWJlbFN0YXRlCiAgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQoZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBtX2xh
c3RMaW5lKTsKICAgICBmYWlsSWZGYWxzZShjdXJyZW50VG9rZW4gKyAxID09IG1fdG9rZW5Db3Vu
dCk7CiAgICAgaW50IGVuZCA9IHRva2VuRW5kKCk7Ci0gICAgY29uc3VtZU9yRmFpbCgnOicpOwor
ICAgIGNvbnN1bWVPckZhaWwoQ09MT04pOwogICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0g
cGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVMYWJlbFN0YXRlbWVudChpZGVudCwgc3RhdGVtZW50LCBz
dGFydCwgZW5kKTsKQEAgLTg2OSwxMiArODY5LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VJZlN0YXRlbWVudChUcmVlQnVpbGRl
CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogCi0gICAgY29uc3Vt
ZU9yRmFpbCgnKCcpOworICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKIAogICAgIFRyZWVF
eHByZXNzaW9uIGNvbmRpdGlvbiA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWls
SWZGYWxzZShjb25kaXRpb24pOwogICAgIGludCBlbmQgPSB0b2tlbkxpbmUoKTsKLSAgICBjb25z
dW1lT3JGYWlsKCcpJyk7CisgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKIAogICAgIFRy
ZWVTdGF0ZW1lbnQgdHJ1ZUJsb2NrID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAgZmFp
bElmRmFsc2UodHJ1ZUJsb2NrKTsKQEAgLTg5OCwxMiArODk4LDEyIEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBKU1BhcnNlcjo6cGFyc2VJZlN0YXRlbWVudChU
cmVlQnVpbGRlCiAgICAgICAgIGludCBpbm5lclN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgICAg
IG5leHQoKTsKICAgICAgICAgCi0gICAgICAgIGNvbnN1bWVPckZhaWwoJygnKTsKKyAgICAgICAg
Y29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwogICAgICAgICAKICAgICAgICAgVHJlZUV4cHJlc3Np
b24gaW5uZXJDb25kaXRpb24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGZh
aWxJZkZhbHNlKGlubmVyQ29uZGl0aW9uKTsKICAgICAgICAgaW50IGlubmVyRW5kID0gdG9rZW5M
aW5lKCk7Ci0gICAgICAgIGNvbnN1bWVPckZhaWwoJyknKTsKKyAgICAgICAgY29uc3VtZU9yRmFp
bChDTE9TRVBBUkVOKTsKICAgICAgICAgCiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgaW5uZXJUcnVl
QmxvY2sgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoaW5u
ZXJUcnVlQmxvY2spOyAgICAgCkBAIC05NDIsMTQgKzk0MiwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZUV4cHJlc3Npb24oVHJl
ZUJ1aWxkZQogICAgIGZhaWxJZlN0YWNrT3ZlcmZsb3coKTsKICAgICBUcmVlRXhwcmVzc2lvbiBu
b2RlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxz
ZShub2RlKTsKLSAgICBpZiAoIW1hdGNoKCcsJykpCisgICAgaWYgKCFtYXRjaChDT01NQSkpCiAg
ICAgICAgIHJldHVybiBub2RlOwogICAgIG5leHQoKTsKICAgICBtX25vbkxIU0NvdW50Kys7CiAg
ICAgVHJlZUV4cHJlc3Npb24gcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRl
eHQpOwogICAgIGZhaWxJZkZhbHNlKHJpZ2h0KTsKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
Q29tbWEgY29tbWFOb2RlID0gY29udGV4dC5jcmVhdGVDb21tYUV4cHIobm9kZSwgcmlnaHQpOwot
ICAgIHdoaWxlIChtYXRjaCgnLCcpKSB7CisgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAg
ICAgICBuZXh0KCk7CiAgICAgICAgIHJpZ2h0ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihj
b250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UocmlnaHQpOwpAQCAtOTc1LDcgKzk3NSw3IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6
OnBhcnNlQXNzaWdubWVudEV4cHJlc3NpCiAgICAgYm9vbCBoYWRBc3NpZ25tZW50ID0gZmFsc2U7
CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgc3dpdGNoICh0b2tlbigpLm1fdHlwZSkgewot
ICAgICAgICBjYXNlICc9Jzogb3AgPSBPcEVxdWFsOyBicmVhazsKKyAgICAgICAgY2FzZSBFUVVB
TDogb3AgPSBPcEVxdWFsOyBicmVhazsKICAgICAgICAgY2FzZSBQTFVTRVFVQUw6IG9wID0gT3BQ
bHVzRXE7IGJyZWFrOwogICAgICAgICBjYXNlIE1JTlVTRVFVQUw6IG9wID0gT3BNaW51c0VxOyBi
cmVhazsKICAgICAgICAgY2FzZSBNVUxURVFVQUw6IG9wID0gT3BNdWx0RXE7IGJyZWFrOwpAQCAt
MTAxNywyNSArMTAxNywyNSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIEpTUGFyc2VyOjpwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbgogewogICAgIFRyZWVF
eHByZXNzaW9uIGNvbmQgPSBwYXJzZUJpbmFyeUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFp
bElmRmFsc2UoY29uZCk7Ci0gICAgaWYgKCFtYXRjaCgnPycpKQorICAgIGlmICghbWF0Y2goUVVF
U1RJT04pKQogICAgICAgICByZXR1cm4gY29uZDsKICAgICBtX25vbkxIU0NvdW50Kys7CiAgICAg
bmV4dCgpOwogICAgIFRyZWVFeHByZXNzaW9uIGxocyA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Np
b24oY29udGV4dCk7Ci0gICAgY29uc3VtZU9yRmFpbCgnOicpOworICAgIGNvbnN1bWVPckZhaWwo
Q09MT04pOwogCiAgICAgVHJlZUV4cHJlc3Npb24gcmhzID0gcGFyc2VBc3NpZ25tZW50RXhwcmVz
c2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShyaHMpOwogICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUNvbmRpdGlvbmFsRXhwcihjb25kLCBsaHMsIHJocyk7CiB9CiAKLXN0YXRpYyBib29s
IGlzVW5hcnlPcChpbnQgdG9rZW4pCitzdGF0aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUg
dG9rZW4pCiB7CiAgICAgc3dpdGNoICh0b2tlbikgewotICAgIGNhc2UgJyEnOgotICAgIGNhc2Ug
J34nOgotICAgIGNhc2UgJy0nOgotICAgIGNhc2UgJysnOgorICAgIGNhc2UgRVhDTEFNQVRJT046
CisgICAgY2FzZSBUSUxERToKKyAgICBjYXNlIE1JTlVTOgorICAgIGNhc2UgUExVUzoKICAgICBj
YXNlIFBMVVNQTFVTOgogICAgIGNhc2UgQVVUT1BMVVNQTFVTOgogICAgIGNhc2UgTUlOVVNNSU5V
UzoKQEAgLTEwNDksNyArMTA0OSw3IEBAIHN0YXRpYyBib29sIGlzVW5hcnlPcChpbnQgdG9rZW4p
CiAgICAgfQogfQogCi1pbnQgSlNQYXJzZXI6OmlzQmluYXJ5T3BlcmF0b3IoaW50IHRva2VuKQor
aW50IEpTUGFyc2VyOjppc0JpbmFyeU9wZXJhdG9yKEpTVG9rZW5UeXBlIHRva2VuKQogewogICAg
IHN3aXRjaCAodG9rZW4pIHsKICAgICBjYXNlIE9SOgpAQCAtMTA1OCwxMyArMTA1OCwxMyBAQCBp
bnQgSlNQYXJzZXI6OmlzQmluYXJ5T3BlcmF0b3IoaW50IHRva2VuKQogICAgIGNhc2UgQU5EOgog
ICAgICAgICByZXR1cm4gMjsKIAotICAgIGNhc2UgJ3wnOgorICAgIGNhc2UgQklUT1I6CiAgICAg
ICAgIHJldHVybiAzOwogCi0gICAgY2FzZSAnXic6CisgICAgY2FzZSBCSVRYT1I6CiAgICAgICAg
IHJldHVybiA0OwogCi0gICAgY2FzZSAnJic6CisgICAgY2FzZSBCSVRBTkQ6CiAgICAgICAgIHJl
dHVybiA1OwogCiAgICAgY2FzZSBFUUVROgpAQCAtMTA3Myw4ICsxMDczLDggQEAgaW50IEpTUGFy
c2VyOjppc0JpbmFyeU9wZXJhdG9yKGludCB0b2tlbikKICAgICBjYXNlIFNUUk5FUToKICAgICAg
ICAgcmV0dXJuIDY7CiAKLSAgICBjYXNlICc8JzoKLSAgICBjYXNlICc+JzoKKyAgICBjYXNlIExU
OgorICAgIGNhc2UgR1Q6CiAgICAgY2FzZSBMRToKICAgICBjYXNlIEdFOgogICAgIGNhc2UgSU5T
VEFOQ0VPRjoKQEAgLTEwOTEsMTMgKzEwOTEsMTMgQEAgaW50IEpTUGFyc2VyOjppc0JpbmFyeU9w
ZXJhdG9yKGludCB0b2tlbikKICAgICBjYXNlIFVSU0hJRlQ6CiAgICAgICAgIHJldHVybiA4Owog
Ci0gICAgY2FzZSAnKyc6Ci0gICAgY2FzZSAnLSc6CisgICAgY2FzZSBQTFVTOgorICAgIGNhc2Ug
TUlOVVM6CiAgICAgICAgIHJldHVybiA5OwogCi0gICAgY2FzZSAnKic6Ci0gICAgY2FzZSAnLyc6
Ci0gICAgY2FzZSAnJSc6CisgICAgY2FzZSBUSU1FUzoKKyAgICBjYXNlIERJVklERToKKyAgICBj
YXNlIE1PRDoKICAgICAgICAgcmV0dXJuIDEwOwogCiAgICAgZGVmYXVsdDoKQEAgLTExNTgsNyAr
MTE1OCw3IEBAIHRlbXBsYXRlIDxib29sIGNvbXBsZXRlLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVByb3BlcnR5IEpTUGFyc2VyOjpwYXJzZVByb3BlcnR5CiAgICAgY2FzZSBTVFJJTkc6IHsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSB0b2tlbigpLm1fZGF0YS5pZGVudDsKICAg
ICAgICAgbmV4dCgpOwotICAgICAgICBpZiAobWF0Y2goJzonKSkgeworICAgICAgICBpZiAobWF0
Y2goQ09MT04pKSB7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBUcmVlRXhwcmVz
c2lvbiBub2RlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKG5vZGUpOwpAQCAtMTE4NSwxMyArMTE4NSwxNCBAQCB0ZW1wbGF0ZSA8
Ym9vbCBjb21wbGV0ZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBKU1BhcnNlcjo6
cGFyc2VQcm9wZXJ0eQogICAgIGNhc2UgTlVNQkVSOiB7CiAgICAgICAgIGRvdWJsZSBwcm9wZXJ0
eU5hbWUgPSB0b2tlbigpLm1fZGF0YS5kb3VibGVWYWx1ZTsKICAgICAgICAgbmV4dCgpOwotICAg
ICAgICBjb25zdW1lT3JGYWlsKCc6Jyk7CisgICAgICAgIGNvbnN1bWVPckZhaWwoQ09MT04pOwog
ICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihj
b250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2Uobm9kZSk7CiAgICAgICAgIHJldHVybiBjb250
ZXh0LnRlbXBsYXRlIGNyZWF0ZVByb3BlcnR5PGNvbXBsZXRlPihtX2dsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSwgbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCk7CiAgICAgfQorICAgIGRlZmF1
bHQ6CisgICAgICAgIGZhaWwoKTsKICAgICB9Ci0gICAgZmFpbCgpOwogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZU9iamVjdExp
dGVyYWwoVHJlZUJ1aWxkZXImIGNvbnRleHQpCkBAIC0xMjEzLDcgKzEyMTQsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZU9iamVj
dExpdGVyYWwoVHJlZUJ1aQogICAgIH0KICAgICBUcmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlz
dCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KHByb3BlcnR5KTsKICAgICBUcmVlUHJvcGVy
dHlMaXN0IHRhaWwgPSBwcm9wZXJ0eUxpc3Q7Ci0gICAgd2hpbGUgKG1hdGNoKCcsJykpIHsKKyAg
ICB3aGlsZSAobWF0Y2goQ09NTUEpKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgLy8gYWxs
b3cgZXh0cmEgY29tbWEsIHNlZSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01OTM5CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkKQEAgLTEyNTMsNyArMTI1NCw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6
OnBhcnNlU3RyaWN0T2JqZWN0TGl0ZXJhbChUCiAgICAgCiAgICAgVHJlZVByb3BlcnR5TGlzdCBw
cm9wZXJ0eUxpc3QgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChwcm9wZXJ0eSk7CiAgICAg
VHJlZVByb3BlcnR5TGlzdCB0YWlsID0gcHJvcGVydHlMaXN0OwotICAgIHdoaWxlIChtYXRjaCgn
LCcpKSB7CisgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAgICAgICBuZXh0KCk7CiAgICAg
ICAgIC8vIGFsbG93IGV4dHJhIGNvbW1hLCBzZWUgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTkzOQogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpCkBAIC0xMjgx
LDE0ICsxMjgyLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gSlNQYXJzZXI6OnBhcnNlU3RyaWN0T2JqZWN0TGl0ZXJhbChUCiAKIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlQXJyYXlMaXRlcmFs
KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewotICAgIGNvbnN1bWVPckZhaWwoJ1snKTsKKyAgICBj
b25zdW1lT3JGYWlsKE9QRU5CUkFDS0VUKTsKIAogICAgIGludCBlbGlzaW9ucyA9IDA7Ci0gICAg
d2hpbGUgKG1hdGNoKCcsJykpIHsKKyAgICB3aGlsZSAobWF0Y2goQ09NTUEpKSB7CiAgICAgICAg
IG5leHQoKTsKICAgICAgICAgZWxpc2lvbnMrKzsKICAgICB9Ci0gICAgaWYgKG1hdGNoKCddJykp
IHsKKyAgICBpZiAobWF0Y2goQ0xPU0VCUkFDS0VUKSkgewogICAgICAgICBuZXh0KCk7CiAgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycmF5KGVsaXNpb25zKTsKICAgICB9CkBAIC0xMjk4
LDE2ICsxMjk5LDE2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gSlNQYXJzZXI6OnBhcnNlQXJyYXlMaXRlcmFsKFRyZWVCdWlsCiAgICAgdHlwZW5hbWUgVHJl
ZUJ1aWxkZXI6OkVsZW1lbnRMaXN0IGVsZW1lbnRMaXN0ID0gY29udGV4dC5jcmVhdGVFbGVtZW50
TGlzdChlbGlzaW9ucywgZWxlbSk7CiAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkVsZW1lbnRM
aXN0IHRhaWwgPSBlbGVtZW50TGlzdDsKICAgICBlbGlzaW9ucyA9IDA7Ci0gICAgd2hpbGUgKG1h
dGNoKCcsJykpIHsKKyAgICB3aGlsZSAobWF0Y2goQ09NTUEpKSB7CiAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgZWxpc2lvbnMgPSAwOwogCi0gICAgICAgIHdoaWxlIChtYXRjaCgnLCcpKSB7Cisg
ICAgICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgICAgIGVsaXNpb25zKys7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobWF0Y2goJ10nKSkg
eworICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDS0VUKSkgewogICAgICAgICAgICAgbmV4dCgp
OwogICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkoZWxpc2lvbnMsIGVsZW1l
bnRMaXN0KTsKICAgICAgICAgfQpAQCAtMTMxNiw3ICsxMzE3LDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VBcnJheUxpdGVyYWwo
VHJlZUJ1aWwKICAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlRWxlbWVudExpc3QodGFpbCwg
ZWxpc2lvbnMsIGVsZW0pOwogICAgIH0KIAotICAgIGNvbnN1bWVPckZhaWwoJ10nKTsKKyAgICBj
b25zdW1lT3JGYWlsKENMT1NFQlJBQ0tFVCk7CiAKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVB
cnJheShlbGVtZW50TGlzdCk7CiB9CkBAIC0xMzI2LDE0ICsxMzI3LDE0IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlUHJpbWFyeUV4
cHJlc3Npb24oVHJlCiAgICAgc3dpdGNoICh0b2tlbigpLm1fdHlwZSkgewogICAgIGNhc2UgT1BF
TkJSQUNFOgogICAgICAgICByZXR1cm4gcGFyc2VPYmplY3RMaXRlcmFsKGNvbnRleHQpOwotICAg
IGNhc2UgJ1snOgorICAgIGNhc2UgT1BFTkJSQUNLRVQ6CiAgICAgICAgIHJldHVybiBwYXJzZUFy
cmF5TGl0ZXJhbChjb250ZXh0KTsKLSAgICBjYXNlICcoJzogeworICAgIGNhc2UgT1BFTlBBUkVO
OiB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaW50IG9sZE5vbkxIU0NvdW50ID0gbV9ub25M
SFNDb3VudDsKICAgICAgICAgVHJlZUV4cHJlc3Npb24gcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9u
KGNvbnRleHQpOwogICAgICAgICBtX25vbkxIU0NvdW50ID0gb2xkTm9uTEhTQ291bnQ7Ci0gICAg
ICAgIGNvbnN1bWVPckZhaWwoJyknKTsKKyAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVO
KTsKIAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTEzNzAsNyArMTM3MSw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBh
cnNlUHJpbWFyeUV4cHJlc3Npb24oVHJlCiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJv
b2xlYW4oZmFsc2UpOwogICAgIH0KICAgICBjYXNlIERJVkVRVUFMOgotICAgIGNhc2UgJy8nOiB7
CisgICAgY2FzZSBESVZJREU6IHsKICAgICAgICAgLyogcmVnZXhwICovCiAgICAgICAgIGNvbnN0
IElkZW50aWZpZXIqIHBhdHRlcm47CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGZsYWdzOwpA
QCAtMTM4MywxNCArMTM4NCwxNSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZVByaW1hcnlFeHByZXNzaW9uKFRyZQogICAgICAgICBu
ZXh0KCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJlZ2V4KCpwYXR0ZXJuLCAqZmxh
Z3MsIHN0YXJ0KTsKICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgZmFpbCgpOwogICAgIH0K
LSAgICBmYWlsKCk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUFyZ3Vt
ZW50cyBKU1BhcnNlcjo6cGFyc2VBcmd1bWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7Ci0g
ICAgY29uc3VtZU9yRmFpbCgnKCcpOwotICAgIGlmIChtYXRjaCgnKScpKSB7CisgICAgY29uc3Vt
ZU9yRmFpbChPUEVOUEFSRU4pOworICAgIGlmIChtYXRjaChDTE9TRVBBUkVOKSkgewogICAgICAg
ICBuZXh0KCk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50cygpOwogICAg
IH0KQEAgLTEzOTksMTMgKzE0MDEsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlQXJndW1lbnRzIEpTUGFyc2VyOjpwYXJzZUFyZ3VtZW50cyhUcmVlQnVpbGRlciYKIAogICAg
IFRyZWVBcmd1bWVudHNMaXN0IGFyZ0xpc3QgPSBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50c0xpc3Qo
Zmlyc3RBcmcpOwogICAgIFRyZWVBcmd1bWVudHNMaXN0IHRhaWwgPSBhcmdMaXN0OwotICAgIHdo
aWxlIChtYXRjaCgnLCcpKSB7CisgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAgICAgICBu
ZXh0KCk7CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGFyZyA9IHBhcnNlQXNzaWdubWVudEV4cHJl
c3Npb24oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGFyZyk7CiAgICAgICAgIHRhaWwg
PSBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50c0xpc3QodGFpbCwgYXJnKTsKICAgICB9Ci0gICAgY29u
c3VtZU9yRmFpbCgnKScpOworICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlQXJndW1lbnRzKGFyZ0xpc3QpOwogfQogCkBAIC0xNDM1LDcgKzE0
MzcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFy
c2VyOjpwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJlZQogICAgIGZhaWxJZkZhbHNlKGJhc2UpOwog
ICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIHN3aXRjaCAodG9rZW4oKS5tX3R5cGUpIHsKLSAg
ICAgICAgY2FzZSAnWyc6IHsKKyAgICAgICAgY2FzZSBPUEVOQlJBQ0tFVDogewogICAgICAgICAg
ICAgaW50IGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5FbmQoKTsKICAgICAgICAgICAgIG5leHQo
KTsKICAgICAgICAgICAgIGludCBub25MSFNDb3VudCA9IG1fbm9uTEhTQ291bnQ7CkBAIC0xNDQz
LDE1ICsxNDQ1LDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gSlNQYXJzZXI6OnBhcnNlTWVtYmVyRXhwcmVzc2lvbihUcmVlCiAgICAgICAgICAgICBUcmVl
RXhwcmVzc2lvbiBwcm9wZXJ0eSA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5KTsKICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNy
ZWF0ZUJyYWNrZXRBY2Nlc3MoYmFzZSwgcHJvcGVydHksIGluaXRpYWxBc3NpZ25tZW50cyAhPSBt
X2Fzc2lnbm1lbnRDb3VudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVu
ZCgpKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZSgnXScpKQorICAgICAgICAgICAgaWYgKCFj
b25zdW1lKENMT1NFQlJBQ0tFVCkpCiAgICAgICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAg
ICAgbV9ub25MSFNDb3VudCA9IG5vbkxIU0NvdW50OwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSAgICAgICAgY2FzZSAnKCc6IHsKKyAgICAgICAgY2FzZSBPUEVOUEFSRU46IHsKICAg
ICAgICAgICAgIGlmIChuZXdDb3VudCkgewogICAgICAgICAgICAgICAgIG5ld0NvdW50LS07Ci0g
ICAgICAgICAgICAgICAgaWYgKG1hdGNoKCcoJykpIHsKKyAgICAgICAgICAgICAgICBpZiAobWF0
Y2goT1BFTlBBUkVOKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgZXhwckVuZCA9IGxhc3RU
b2tlbkVuZCgpOwogICAgICAgICAgICAgICAgICAgICBUcmVlQXJndW1lbnRzIGFyZ3VtZW50cyA9
IHBhcnNlQXJndW1lbnRzKGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICBmYWlsSWZGYWxz
ZShhcmd1bWVudHMpOwpAQCAtMTQ2OCw3ICsxNDcwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKFRy
ZWUKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAg
IGNhc2UgJy4nOiB7CisgICAgICAgIGNhc2UgRE9UOiB7CiAgICAgICAgICAgICBpbnQgZXhwcmVz
c2lvbkVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAg
ICAgbWF0Y2hPckZhaWwoSURFTlQpOwpAQCAtMTUxMSw2ICsxNTEzLDggQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNlcjo6cGFyc2VVbmFyeUV4cHJl
c3Npb24oVHJlZUIKICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAgICAgICAgbmV4dCgp
OwogICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBpbnQgZW5kID0gbGFzdFRva2VuRW5kKCk7CkBAIC0xNTIwLDE2ICsxNTI0LDE2IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNl
VW5hcnlFeHByZXNzaW9uKFRyZWVCCiAKICAgICB3aGlsZSAodG9rZW5TdGFja0RlcHRoKSB7CiAg
ICAgICAgIHN3aXRjaCAoY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0VHlwZSh0b2tlblN0YWNr
RGVwdGgpKSB7Ci0gICAgICAgIGNhc2UgJyEnOgorICAgICAgICBjYXNlIEVYQ0xBTUFUSU9OOgog
ICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlTG9naWNhbE5vdChleHByKTsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICd+JzoKKyAgICAgICAgY2FzZSBUSUxERToKICAg
ICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VCaXR3aXNlTm90Tm9kZShleHByKTsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICctJzoKKyAgICAgICAgY2FzZSBNSU5VUzoKICAg
ICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VOZWdhdGVOb2RlKGV4cHIpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJysnOgorICAgICAgICBjYXNlIFBMVVM6CiAgICAgICAg
ICAgICBleHByID0gY29udGV4dC5jcmVhdGVVbmFyeVBsdXMoZXhwcik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBQTFVTUExVUzoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9KU1BhcnNlci5oIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmgKaW5k
ZXggMzIwMzM1YmQ2ZjRmODM3OWNkNzUyMDk0Zjk4M2MxNTA4MDNhNTZhNi4uYjM3Mjc3ZTZmZjlj
ZTAwODVhMzQ5ODVmMzgxMjMzYTRkNTMyZDA2ZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0pTUGFyc2VyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmgK
QEAgLTMzLDY5ICszMyw5MyBAQCBjbGFzcyBKU0dsb2JhbERhdGE7CiBjbGFzcyBTb3VyY2VDb2Rl
OwogCiBlbnVtIEpTVG9rZW5UeXBlIHsKLSAgICBOVUxMVE9LRU4gPSAyNTgsCi0gICAgVFJVRVRP
S0VOID0gMjU5LAotICAgIEZBTFNFVE9LRU4gPSAyNjAsCi0gICAgQlJFQUsgPSAyNjEsCi0gICAg
Q0FTRSA9IDI2MiwKLSAgICBERUZBVUxUID0gMjYzLAotICAgIEZPUiA9IDI2NCwKLSAgICBORVcg
PSAyNjUsCi0gICAgVkFSID0gMjY2LAotICAgIENPTlNUVE9LRU4gPSAyNjcsCi0gICAgQ09OVElO
VUUgPSAyNjgsCi0gICAgRlVOQ1RJT04gPSAyNjksCi0gICAgUkVUVVJOID0gMjcwLAotICAgIFZP
SURUT0tFTiA9IDI3MSwKLSAgICBERUxFVEVUT0tFTiA9IDI3MiwKLSAgICBJRiA9IDI3MywKLSAg
ICBUSElTVE9LRU4gPSAyNzQsCi0gICAgRE8gPSAyNzUsCi0gICAgV0hJTEUgPSAyNzYsCi0gICAg
SU5UT0tFTiA9IDI3NywKLSAgICBJTlNUQU5DRU9GID0gMjc4LAotICAgIFRZUEVPRiA9IDI3OSwK
LSAgICBTV0lUQ0ggPSAyODAsCi0gICAgV0lUSCA9IDI4MSwKLSAgICBSRVNFUlZFRCA9IDI4MiwK
LSAgICBUSFJPVyA9IDI4MywKLSAgICBUUlkgPSAyODQsCi0gICAgQ0FUQ0ggPSAyODUsCi0gICAg
RklOQUxMWSA9IDI4NiwKLSAgICBERUJVR0dFUiA9IDI4NywKLSAgICBJRl9XSVRIT1VUX0VMU0Ug
PSAyODgsCi0gICAgRUxTRSA9IDI4OSwKLSAgICBFUUVRID0gMjkwLAotICAgIE5FID0gMjkxLAot
ICAgIFNUUkVRID0gMjkyLAotICAgIFNUUk5FUSA9IDI5MywKLSAgICBMRSA9IDI5NCwKLSAgICBH
RSA9IDI5NSwKLSAgICBPUiA9IDI5NiwKLSAgICBBTkQgPSAyOTcsCi0gICAgUExVU1BMVVMgPSAy
OTgsCi0gICAgTUlOVVNNSU5VUyA9IDI5OSwKLSAgICBMU0hJRlQgPSAzMDAsCi0gICAgUlNISUZU
ID0gMzAxLAotICAgIFVSU0hJRlQgPSAzMDIsCi0gICAgUExVU0VRVUFMID0gMzAzLAotICAgIE1J
TlVTRVFVQUwgPSAzMDQsCi0gICAgTVVMVEVRVUFMID0gMzA1LAotICAgIERJVkVRVUFMID0gMzA2
LAotICAgIExTSElGVEVRVUFMID0gMzA3LAotICAgIFJTSElGVEVRVUFMID0gMzA4LAotICAgIFVS
U0hJRlRFUVVBTCA9IDMwOSwKLSAgICBBTkRFUVVBTCA9IDMxMCwKLSAgICBNT0RFUVVBTCA9IDMx
MSwKLSAgICBYT1JFUVVBTCA9IDMxMiwKLSAgICBPUkVRVUFMID0gMzEzLAotICAgIE9QRU5CUkFD
RSA9IDMxNCwKLSAgICBDTE9TRUJSQUNFID0gMzE1LAotICAgIE5VTUJFUiA9IDMxNiwKLSAgICBJ
REVOVCA9IDMxNywKLSAgICBTVFJJTkcgPSAzMTgsCi0gICAgQVVUT1BMVVNQTFVTID0gMzE5LAot
ICAgIEFVVE9NSU5VU01JTlVTID0gMzIwCisgICAgTlVMTFRPS0VOLAorICAgIFRSVUVUT0tFTiwK
KyAgICBGQUxTRVRPS0VOLAorICAgIEJSRUFLLAorICAgIENBU0UsCisgICAgREVGQVVMVCwKKyAg
ICBGT1IsCisgICAgTkVXLAorICAgIFZBUiwKKyAgICBDT05TVFRPS0VOLAorICAgIENPTlRJTlVF
LAorICAgIEZVTkNUSU9OLAorICAgIFJFVFVSTiwKKyAgICBWT0lEVE9LRU4sCisgICAgREVMRVRF
VE9LRU4sCisgICAgSUYsCisgICAgVEhJU1RPS0VOLAorICAgIERPLAorICAgIFdISUxFLAorICAg
IElOVE9LRU4sCisgICAgSU5TVEFOQ0VPRiwKKyAgICBUWVBFT0YsCisgICAgU1dJVENILAorICAg
IFdJVEgsCisgICAgUkVTRVJWRUQsCisgICAgVEhST1csCisgICAgVFJZLAorICAgIENBVENILAor
ICAgIEZJTkFMTFksCisgICAgREVCVUdHRVIsCisgICAgSUZfV0lUSE9VVF9FTFNFLAorICAgIEVM
U0UsCisgICAgRVFVQUwsCisgICAgRVFFUSwKKyAgICBORSwKKyAgICBTVFJFUSwKKyAgICBTVFJO
RVEsCisgICAgTFQsCisgICAgR1QsCisgICAgTEUsCisgICAgR0UsCisgICAgT1IsCisgICAgQU5E
LAorICAgIFBMVVNQTFVTLAorICAgIE1JTlVTTUlOVVMsCisgICAgTFNISUZULAorICAgIFJTSElG
VCwKKyAgICBVUlNISUZULAorICAgIFBMVVNFUVVBTCwKKyAgICBNSU5VU0VRVUFMLAorICAgIE1V
TFRFUVVBTCwKKyAgICBESVZFUVVBTCwKKyAgICBMU0hJRlRFUVVBTCwKKyAgICBSU0hJRlRFUVVB
TCwKKyAgICBVUlNISUZURVFVQUwsCisgICAgQU5ERVFVQUwsCisgICAgTU9ERVFVQUwsCisgICAg
WE9SRVFVQUwsCisgICAgT1JFUVVBTCwKKyAgICBCSVRPUiwKKyAgICBCSVRBTkQsCisgICAgQklU
WE9SLAorICAgIFBMVVMsCisgICAgTUlOVVMsCisgICAgVElNRVMsCisgICAgRElWSURFLAorICAg
IE1PRCwKKyAgICBPUEVOQlJBQ0UsCisgICAgQ0xPU0VCUkFDRSwKKyAgICBPUEVOUEFSRU4sCisg
ICAgQ0xPU0VQQVJFTiwKKyAgICBPUEVOQlJBQ0tFVCwKKyAgICBDTE9TRUJSQUNLRVQsCisgICAg
Q09NTUEsCisgICAgUVVFU1RJT04sCisgICAgVElMREUsCisgICAgRVhDTEFNQVRJT04sCisgICAg
TlVNQkVSLAorICAgIElERU5ULAorICAgIFNUUklORywKKyAgICBBVVRPUExVU1BMVVMsCisgICAg
QVVUT01JTlVTTUlOVVMsCisgICAgU0VNSUNPTE9OLAorICAgIENPTE9OLAorICAgIERPVCwKKyAg
ICBFUlJPUlRPSywKKyAgICBFT0ZUT0sKIH07CiAKIHVuaW9uIEpTVG9rZW5EYXRhIHsKQEAgLTEx
Miw3ICsxMzYsNyBAQCBzdHJ1Y3QgSlNUb2tlbkluZm8gewogfTsKIAogc3RydWN0IEpTVG9rZW4g
ewotICAgIGludCBtX3R5cGU7CisgICAgSlNUb2tlblR5cGUgbV90eXBlOwogICAgIEpTVG9rZW5E
YXRhIG1fZGF0YTsKICAgICBKU1Rva2VuSW5mbyBtX2luZm87CiB9OwpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5jcHAKaW5kZXggMGJiZGVkYzIwYzVlYWI4M2I4NGUwOTRmNGJkZDVhZTAxMmE0YzMwYy4uNDVm
ZTAwNzU3YTBmYjAyNmE3NzZlZmM0YjY4YzAxYWI4NmY0NmZmMiAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuY3BwCkBAIC01Niw3ICs1NiwxNCBAQCBlbnVtIENoYXJhY3RlclR5cGVzIHsKIAogICAgIENo
YXJhY3RlckxpbmVUZXJtaW5hdG9yLAogICAgIENoYXJhY3RlckV4Y2xhbWF0aW9uTWFyaywKLSAg
ICBDaGFyYWN0ZXJTaW1wbGUsCisgICAgQ2hhcmFjdGVyT3BlblBhcmVuLAorICAgIENoYXJhY3Rl
ckNsb3NlUGFyZW4sCisgICAgQ2hhcmFjdGVyT3BlbkJyYWNrZXQsCisgICAgQ2hhcmFjdGVyQ2xv
c2VCcmFja2V0LAorICAgIENoYXJhY3RlckNvbW1hLAorICAgIENoYXJhY3RlckNvbG9uLAorICAg
IENoYXJhY3RlclF1ZXN0aW9uLAorICAgIENoYXJhY3RlclRpbGRlLAogICAgIENoYXJhY3RlclF1
b3RlLAogICAgIENoYXJhY3RlckRvdCwKICAgICBDaGFyYWN0ZXJTbGFzaCwKQEAgLTgxLDcgKzg4
LDcgQEAgZW51bSBDaGFyYWN0ZXJUeXBlcyB7CiB9OwogCiAvLyAxMjggYXNjaWkgY29kZXMKLXN0
YXRpYyB1bnNpZ25lZCBjaGFyIEFzY2lpQ2hhcmFjdGVyc1sxMjhdID0geworc3RhdGljIHVuc2ln
bmVkIHNob3J0IEFzY2lpQ2hhcmFjdGVyc1sxMjhdID0gewogLyogICAwIC0gTnVsbCAgICAgICAg
ICAgICAgICovIENoYXJhY3RlckludmFsaWQsCiAvKiAgIDEgLSBTdGFydCBvZiBIZWFkaW5nICAg
Ki8gQ2hhcmFjdGVySW52YWxpZCwKIC8qICAgMiAtIFN0YXJ0IG9mIFRleHQgICAgICAqLyBDaGFy
YWN0ZXJJbnZhbGlkLApAQCAtMTIyLDExICsxMjksMTEgQEAgc3RhdGljIHVuc2lnbmVkIGNoYXIg
QXNjaWlDaGFyYWN0ZXJzWzEyOF0gPSB7CiAvKiAgMzcgLSAlICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVyTW9kdWxvLAogLyogIDM4IC0gJiAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rl
ckFuZCwKIC8qICAzOSAtICcgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJRdW90ZSwKLS8q
ICA0MCAtICggICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJTaW1wbGUsCi0vKiAgNDEgLSAp
ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyU2ltcGxlLAorLyogIDQwIC0gKCAgICAgICAg
ICAgICAgICAgICovIENoYXJhY3Rlck9wZW5QYXJlbiwKKy8qICA0MSAtICkgICAgICAgICAgICAg
ICAgICAqLyBDaGFyYWN0ZXJDbG9zZVBhcmVuLAogLyogIDQyIC0gKiAgICAgICAgICAgICAgICAg
ICovIENoYXJhY3Rlck11bHRpcGx5LAogLyogIDQzIC0gKyAgICAgICAgICAgICAgICAgICovIENo
YXJhY3RlckFkZCwKLS8qICA0NCAtICwgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJTaW1w
bGUsCisvKiAgNDQgLSAsICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQ29tbWEsCiAvKiAg
NDUgLSAtICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyU3ViLAogLyogIDQ2IC0gLiAgICAg
ICAgICAgICAgICAgICovIENoYXJhY3RlckRvdCwKIC8qICA0NyAtIC8gICAgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJTbGFzaCwKQEAgLTE0MCwxMiArMTQ3LDEyIEBAIHN0YXRpYyB1bnNpZ25l
ZCBjaGFyIEFzY2lpQ2hhcmFjdGVyc1sxMjhdID0gewogLyogIDU1IC0gNyAgICAgICAgICAgICAg
ICAgICovIENoYXJhY3Rlck51bWJlciwKIC8qICA1NiAtIDggICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJOdW1iZXIsCiAvKiAgNTcgLSA5ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
TnVtYmVyLAotLyogIDU4IC0gOiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlclNpbXBsZSwK
Ky8qICA1OCAtIDogICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJDb2xvbiwKIC8qICA1OSAt
IDsgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJTZW1pY29sb24sCiAvKiAgNjAgLSA8ICAg
ICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyTGVzcywKIC8qICA2MSAtID0gICAgICAgICAgICAg
ICAgICAqLyBDaGFyYWN0ZXJFcXVhbCwKIC8qICA2MiAtID4gICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJHcmVhdGVyLAotLyogIDYzIC0gPyAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rl
clNpbXBsZSwKKy8qICA2MyAtID8gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJRdWVzdGlv
biwKIC8qICA2NCAtIEAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAogLyog
IDY1IC0gQSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAogLyogIDY2IC0gQiAg
ICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhhLApAQCAtMTczLDkgKzE4MCw5IEBAIHN0
YXRpYyB1bnNpZ25lZCBjaGFyIEFzY2lpQ2hhcmFjdGVyc1sxMjhdID0gewogLyogIDg4IC0gWCAg
ICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAogLyogIDg5IC0gWSAgICAgICAgICAg
ICAgICAgICovIENoYXJhY3RlckFscGhhLAogLyogIDkwIC0gWiAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlckFscGhhLAotLyogIDkxIC0gWyAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rl
clNpbXBsZSwKKy8qICA5MSAtIFsgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJPcGVuQnJh
Y2tldCwKIC8qICA5MiAtIFwgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJCYWNrU2xhc2gs
Ci0vKiAgOTMgLSBdICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyU2ltcGxlLAorLyogIDkz
IC0gXSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckNsb3NlQnJhY2tldCwKIC8qICA5NCAt
IF4gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJYb3IsCiAvKiAgOTUgLSBfICAgICAgICAg
ICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCiAvKiAgOTYgLSBgICAgICAgICAgICAgICAgICAg
Ki8gQ2hhcmFjdGVySW52YWxpZCwKQEAgLTIwOCw3ICsyMTUsNyBAQCBzdGF0aWMgdW5zaWduZWQg
Y2hhciBBc2NpaUNoYXJhY3RlcnNbMTI4XSA9IHsKIC8qIDEyMyAtIHsgICAgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJPcGVuQnJhY2UsCiAvKiAxMjQgLSB8ICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVyT3IsCiAvKiAxMjUgLSB9ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQ2xv
c2VCcmFjZSwKLS8qIDEyNiAtIH4gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJTaW1wbGUs
CisvKiAxMjYgLSB+ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyVGlsZGUsCiAvKiAxMjcg
LSBEZWxldGUgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKIH07CiAKQEAgLTQ2NSwx
MyArNDcyLDE0IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjo6cGFyc2VTdHJpbmcoSlNUb2tl
bkRhdGEqIGx2YWxwKQogICAgIHJldHVybiB0cnVlOwogfQogCi1pbnQgTGV4ZXI6OmxleChKU1Rv
a2VuRGF0YSogbHZhbHAsIEpTVG9rZW5JbmZvKiBsbG9jcCkKK0pTVG9rZW5UeXBlIExleGVyOjps
ZXgoSlNUb2tlbkRhdGEqIGx2YWxwLCBKU1Rva2VuSW5mbyogbGxvY3ApCiB7CiAgICAgQVNTRVJU
KCFtX2Vycm9yKTsKICAgICBBU1NFUlQobV9idWZmZXI4LmlzRW1wdHkoKSk7CiAgICAgQVNTRVJU
KG1fYnVmZmVyMTYuaXNFbXB0eSgpKTsKIAotICAgIGludCB0b2tlbiA9IDA7CisgICAgSlNUb2tl
blR5cGUgdG9rZW4gPSBFUlJPUlRPSzsKKyAgICBpbnQgaWRlbnRDaGFyID0gMDsKICAgICBtX3Rl
cm1pbmF0b3IgPSBmYWxzZTsKIAogc3RhcnQ6CkBAIC00ODEsNyArNDg5LDcgQEAgc3RhcnQ6CiAg
ICAgaW50IHN0YXJ0T2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOwogCiAgICAgaWYgKFVOTElLRUxZ
KG1fY3VycmVudCA9PSAtMSkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gRU9G
VE9LOwogCiAgICAgbV9kZWxpbWl0ZWQgPSBmYWxzZTsKIApAQCAtNTE2LDcgKzUyNCw3IEBAIHN0
YXJ0OgogICAgICAgICAgICAgICAgIHRva2VuID0gR0U7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9ICc+JzsKKyAgICAgICAgICAgIHRv
a2VuID0gR1Q7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDaGFyYWN0ZXJFcXVh
bDoKICAgICAgICAgICAgIHNoaWZ0KCk7CkBAIC01MzAsNyArNTM4LDcgQEAgc3RhcnQ6CiAgICAg
ICAgICAgICAgICAgdG9rZW4gPSBFUUVROwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSAnPSc7CisgICAgICAgICAgICB0b2tlbiA9IEVR
VUFMOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2hhcmFjdGVyTGVzczoKICAg
ICAgICAgICAgIHNoaWZ0KCk7CkBAIC01NTMsNyArNTYxLDcgQEAgc3RhcnQ6CiAgICAgICAgICAg
ICAgICAgdG9rZW4gPSBMRTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHRva2VuID0gJzwnOworICAgICAgICAgICAgdG9rZW4gPSBMVDsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENoYXJhY3RlckV4Y2xhbWF0aW9uTWFyazoKICAg
ICAgICAgICAgIHNoaWZ0KCk7CkBAIC01NjcsNyArNTc1LDcgQEAgc3RhcnQ6CiAgICAgICAgICAg
ICAgICAgdG9rZW4gPSBORTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHRva2VuID0gJyEnOworICAgICAgICAgICAgdG9rZW4gPSBFWENMQU1BVElP
TjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENoYXJhY3RlckFkZDoKICAgICAg
ICAgICAgIHNoaWZ0KCk7CkBAIC01ODEsNyArNTg5LDcgQEAgc3RhcnQ6CiAgICAgICAgICAgICAg
ICAgdG9rZW4gPSBQTFVTRVFVQUw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB0b2tlbiA9ICcrJzsKKyAgICAgICAgICAgIHRva2VuID0gUExVUzsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENoYXJhY3RlclN1YjoKICAgICAgICAg
ICAgIHNoaWZ0KCk7CkBAIC01OTksNyArNjA3LDcgQEAgc3RhcnQ6CiAgICAgICAgICAgICAgICAg
dG9rZW4gPSBNSU5VU0VRVUFMOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgdG9rZW4gPSAnLSc7CisgICAgICAgICAgICB0b2tlbiA9IE1JTlVTOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2hhcmFjdGVyTXVsdGlwbHk6CiAgICAg
ICAgICAgICBzaGlmdCgpOwpAQCAtNjA4LDcgKzYxNiw3IEBAIHN0YXJ0OgogICAgICAgICAgICAg
ICAgIHRva2VuID0gTVVMVEVRVUFMOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgdG9rZW4gPSAnKic7CisgICAgICAgICAgICB0b2tlbiA9IFRJTUVT
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2hhcmFjdGVyU2xhc2g6CiAgICAg
ICAgICAgICBzaGlmdCgpOwpAQCAtNjI1LDcgKzYzMyw3IEBAIHN0YXJ0OgogICAgICAgICAgICAg
ICAgIHRva2VuID0gRElWRVFVQUw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB0b2tlbiA9ICcvJzsKKyAgICAgICAgICAgIHRva2VuID0gRElWSURF
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2hhcmFjdGVyQW5kOgogICAgICAg
ICAgICAgc2hpZnQoKTsKQEAgLTYzOSw3ICs2NDcsNyBAQCBzdGFydDoKICAgICAgICAgICAgICAg
ICB0b2tlbiA9IEFOREVRVUFMOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgdG9rZW4gPSAnJic7CisgICAgICAgICAgICB0b2tlbiA9IEJJVEFORDsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENoYXJhY3RlclhvcjoKICAgICAgICAg
ICAgIHNoaWZ0KCk7CkBAIC02NDgsNyArNjU2LDcgQEAgc3RhcnQ6CiAgICAgICAgICAgICAgICAg
dG9rZW4gPSBYT1JFUVVBTDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHRva2VuID0gJ14nOworICAgICAgICAgICAgdG9rZW4gPSBCSVRYT1I7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDaGFyYWN0ZXJNb2R1bG86CiAgICAgICAg
ICAgICBzaGlmdCgpOwpAQCAtNjU3LDcgKzY2NSw3IEBAIHN0YXJ0OgogICAgICAgICAgICAgICAg
IHRva2VuID0gTU9ERVFVQUw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB0b2tlbiA9ICclJzsKKyAgICAgICAgICAgIHRva2VuID0gTU9EOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2hhcmFjdGVyT3I6CiAgICAgICAgICAgICBz
aGlmdCgpOwpAQCAtNjcxLDcgKzY3OSw3IEBAIHN0YXJ0OgogICAgICAgICAgICAgICAgIHRva2Vu
ID0gT1I7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB0b2tlbiA9ICd8JzsKKyAgICAgICAgICAgIHRva2VuID0gQklUT1I7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDaGFyYWN0ZXJEb3Q6CiAgICAgICAgICAgICBzaGlmdCgpOwpA
QCAtNjc5LDE2ICs2ODcsNDQgQEAgc3RhcnQ6CiAgICAgICAgICAgICAgICAgcmVjb3JkOCgnLicp
OwogICAgICAgICAgICAgICAgIGdvdG8gaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gJy4nOworICAgICAgICAgICAgdG9rZW4gPSBE
T1Q7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJTaW1wbGU6Ci0g
ICAgICAgICAgICB0b2tlbiA9IG1fY3VycmVudDsKKyAgICAgICAgY2FzZSBDaGFyYWN0ZXJPcGVu
UGFyZW46CisgICAgICAgICAgICB0b2tlbiA9IE9QRU5QQVJFTjsKKyAgICAgICAgICAgIHNoaWZ0
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGFyYWN0ZXJDbG9zZVBhcmVu
OgorICAgICAgICAgICAgdG9rZW4gPSBDTE9TRVBBUkVOOworICAgICAgICAgICAgc2hpZnQoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENoYXJhY3Rlck9wZW5CcmFja2V0Ogor
ICAgICAgICAgICAgdG9rZW4gPSBPUEVOQlJBQ0tFVDsKKyAgICAgICAgICAgIHNoaWZ0KCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGFyYWN0ZXJDbG9zZUJyYWNrZXQ6Cisg
ICAgICAgICAgICB0b2tlbiA9IENMT1NFQlJBQ0tFVDsKKyAgICAgICAgICAgIHNoaWZ0KCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGFyYWN0ZXJDb21tYToKKyAgICAgICAg
ICAgIHRva2VuID0gQ09NTUE7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ2hhcmFjdGVyQ29sb246CisgICAgICAgICAgICB0b2tlbiA9IENP
TE9OOworICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIENoYXJhY3RlclF1ZXN0aW9uOgorICAgICAgICAgICAgdG9rZW4gPSBRVUVTVElPTjsKKyAg
ICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGFy
YWN0ZXJUaWxkZToKKyAgICAgICAgICAgIHRva2VuID0gVElMREU7CiAgICAgICAgICAgICBzaGlm
dCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2hhcmFjdGVyU2VtaWNvbG9u
OgogICAgICAgICAgICAgbV9kZWxpbWl0ZWQgPSB0cnVlOwogICAgICAgICAgICAgc2hpZnQoKTsK
LSAgICAgICAgICAgIHRva2VuID0gJzsnOworICAgICAgICAgICAgdG9rZW4gPSBTRU1JQ09MT047
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDaGFyYWN0ZXJPcGVuQnJhY2U6CiAg
ICAgICAgICAgICBsdmFscC0+aW50VmFsdWUgPSBjdXJyZW50T2Zmc2V0KCk7CkBAIC03MjMsNyAr
NzU5LDcgQEAgc3RhcnQ6CiAgICAgICAgICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKICAgICAg
ICAgICAgIG1fdGVybWluYXRvciA9IHRydWU7CiAgICAgICAgICAgICBpZiAobGFzdFRva2VuV2Fz
UmVzdHJLZXl3b3JkKCkpIHsKLSAgICAgICAgICAgICAgICB0b2tlbiA9ICc7JzsKKyAgICAgICAg
ICAgICAgICB0b2tlbiA9IFNFTUlDT0xPTjsKICAgICAgICAgICAgICAgICBnb3RvIGRvbmVTZW1p
Y29sb247CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBnb3RvIHN0YXJ0OwpAQCAtNzU4LDEw
ICs3OTQsMTAgQEAgc3RhcnRJZGVudGlmaWVyV2l0aEJhY2tzbGFzaDogewogICAgICAgICBnb3Rv
IHJldHVybkVycm9yOwogICAgIHNoaWZ0KCk7CiAKLSAgICB0b2tlbiA9IGdldFVuaWNvZGVDaGFy
YWN0ZXIoKTsKLSAgICBpZiAoVU5MSUtFTFkodG9rZW4gPT0gLTEpKQorICAgIGlkZW50Q2hhciA9
IGdldFVuaWNvZGVDaGFyYWN0ZXIoKTsKKyAgICBpZiAoVU5MSUtFTFkoaWRlbnRDaGFyID09IC0x
KSkKICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKLSAgICBpZiAoVU5MSUtFTFkoIWlzSWRlbnRT
dGFydCh0b2tlbikpKQorICAgIGlmIChVTkxJS0VMWSghaXNJZGVudFN0YXJ0KGlkZW50Q2hhcikp
KQogICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgIGdvdG8gaW5JZGVudGlmaWVyQWZ0ZXJD
aGFyYWN0ZXJDaGVjazsKIH0KQEAgLTc4NCwxMyArODIwLDEzIEBAIHN0YXJ0SWRlbnRpZmllck9y
S2V5d29yZDogewogICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ICE9ICd1JykpCiAgICAg
ICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICBzaGlmdCgpOwotICAgICAgICB0b2tl
biA9IGdldFVuaWNvZGVDaGFyYWN0ZXIoKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKHRva2VuID09
IC0xKSkKKyAgICAgICAgaWRlbnRDaGFyID0gZ2V0VW5pY29kZUNoYXJhY3RlcigpOworICAgICAg
ICBpZiAoVU5MSUtFTFkoaWRlbnRDaGFyID09IC0xKSkKICAgICAgICAgICAgIGdvdG8gcmV0dXJu
RXJyb3I7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghaXNJZGVudFBhcnQodG9rZW4pKSkKKyAgICAg
ICAgaWYgKFVOTElLRUxZKCFpc0lkZW50UGFydChpZGVudENoYXIpKSkKICAgICAgICAgICAgIGdv
dG8gcmV0dXJuRXJyb3I7CiBpbklkZW50aWZpZXJBZnRlckNoYXJhY3RlckNoZWNrOgotICAgICAg
ICByZWNvcmQxNih0b2tlbik7CisgICAgICAgIHJlY29yZDE2KGlkZW50Q2hhcik7CiAKICAgICAg
ICAgd2hpbGUgKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkpIHsKICAgICAgICAgICAgIHJlY29yZDE2
KG1fY3VycmVudCk7CkBAIC04MDIsNyArODM4LDcgQEAgaW5JZGVudGlmaWVyQWZ0ZXJDaGFyYWN0
ZXJDaGVjazoKIGluU2luZ2xlTGluZUNvbW1lbnQ6CiAgICAgd2hpbGUgKCFpc0xpbmVUZXJtaW5h
dG9yKG1fY3VycmVudCkpIHsKICAgICAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAtMSkp
Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBFT0ZUT0s7CiAgICAg
ICAgIHNoaWZ0KCk7CiAgICAgfQogICAgIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKQEAgLTk2OSw3
ICsxMDA1LDcgQEAgZG9uZU51bWVyaWM6CiAgICAgZ290byByZXR1cm5Ub2tlbjsKIAogZG9uZVNl
bWljb2xvbjoKLSAgICB0b2tlbiA9ICc7JzsKKyAgICB0b2tlbiA9IFNFTUlDT0xPTjsKICAgICBt
X2RlbGltaXRlZCA9IHRydWU7CiAgICAgZ290byByZXR1cm5Ub2tlbjsKIApAQCAtOTg2LDcgKzEw
MjIsNyBAQCBkb25lSWRlbnRpZmllck9yS2V5d29yZDogewogICAgIG1fZGVsaW1pdGVkID0gZmFs
c2U7CiAgICAgbV9idWZmZXIxNi5yZXNpemUoMCk7CiAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRy
eSA9IG1fa2V5d29yZFRhYmxlLmVudHJ5KG1fZ2xvYmFsRGF0YSwgKmx2YWxwLT5pZGVudCk7Ci0g
ICAgdG9rZW4gPSBlbnRyeSA/IGVudHJ5LT5sZXhlclZhbHVlKCkgOiBzdGF0aWNfY2FzdDxpbnQ+
KElERU5UKTsKKyAgICB0b2tlbiA9IGVudHJ5ID8gc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+KGVu
dHJ5LT5sZXhlclZhbHVlKCkpIDogSURFTlQ7CiAKICAgICAvLyBGYWxsIHRocm91Z2ggaW50byBy
ZXR1cm5Ub2tlbi4KIH0KQEAgLTEwMDIsNyArMTAzOCw3IEBAIHJldHVyblRva2VuOiB7CiAKIHJl
dHVybkVycm9yOgogICAgIG1fZXJyb3IgPSB0cnVlOwotICAgIHJldHVybiAtMTsKKyAgICByZXR1
cm4gRVJST1JUT0s7CiB9CiAKIGJvb2wgTGV4ZXI6OnNjYW5SZWdFeHAoY29uc3QgSWRlbnRpZmll
ciomIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIqJiBmbGFncywgVUNoYXIgcGF0dGVyblByZWZp
eCkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggMGYzNjZiNGFhZTk3Y2RlZGUyMzM4ODVhMzc2NDAz
ZTJiMTQ4NTU0Yy4uNWFiN2FkN2RmM2ZmOTViOWFiNGMxYjE4NmY2ODFhOTc1MzMxMGU3ZCAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpZm5kZWYgTGV4ZXJfaAogI2Rl
ZmluZSBMZXhlcl9oCiAKKyNpbmNsdWRlICJKU1BhcnNlci5oIgogI2luY2x1ZGUgIkxvb2t1cC5o
IgogI2luY2x1ZGUgIlBhcnNlckFyZW5hLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgpAQCAt
MzQsOCArMzUsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIHVuaW9uIEpTVG9rZW5EYXRh
OwotICAgIHN0cnVjdCBKU1Rva2VuSW5mbzsKICAgICBjbGFzcyBSZWdFeHA7CiAKICAgICBjbGFz
cyBMZXhlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CkBAIC01MSw3ICs1MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIHNldElzUmVwYXJzaW5nKCkgeyBtX2lzUmVwYXJzaW5nID0g
dHJ1ZTsgfQogCiAgICAgICAgIC8vIEZ1bmN0aW9ucyBmb3IgdGhlIHBhcnNlciBpdHNlbGYuCi0g
ICAgICAgIGludCBsZXgoSlNUb2tlbkRhdGEqIGx2YWxwLCBKU1Rva2VuSW5mbyogbGxvY3ApOwor
ICAgICAgICBKU1Rva2VuVHlwZSBsZXgoSlNUb2tlbkRhdGEqIGx2YWxwLCBKU1Rva2VuSW5mbyog
bGxvY3ApOwogICAgICAgICBpbnQgbGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51
bWJlcjsgfQogICAgICAgICB2b2lkIHNldExhc3RMaW5lTnVtYmVyKGludCBsYXN0TGluZU51bWJl
cikgeyBtX2xhc3RMaW5lTnVtYmVyID0gbGFzdExpbmVOdW1iZXI7IH0KICAgICAgICAgaW50IGxh
c3RMaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGluZU51bWJlcjsgfQo=
</data>
<flag name="review"
          id="49110"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>