<?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>140317</bug_id>
          
          <creation_ts>2015-01-09 14:48:20 -0800</creation_ts>
          <short_desc>Perf dashboard should have the ability to post A/B testing builds</short_desc>
          <delta_ts>2016-02-16 13:53:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Perf Dashboard</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1060288</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-01-09 14:48:20 -0800</bug_when>
    <thetext>The UI for triggering A/B tests in the new perf dashboard should actually trigger new builds on builedbot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060359</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-01-09 17:44:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/19342056&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060379</commentid>
    <comment_count>2</comment_count>
      <attachid>244400</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-01-09 20:46:33 -0800</bug_when>
    <thetext>Created attachment 244400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060388</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-01-09 21:26:46 -0800</bug_when>
    <thetext>Committed r178234: &lt;http://trac.webkit.org/changeset/178234&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244400</attachid>
            <date>2015-01-09 20:46:33 -0800</date>
            <delta_ts>2015-01-09 21:25:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140317-20150109204638.patch</filename>
            <type>text/plain</type>
            <size>72851</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4MjI5KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3NCBAQAorMjAxNS0wMS0wOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBQZXJmIGRhc2hib2FyZCBzaG91bGQgaGF2ZSB0aGUgYWJpbGl0eSB0byBwb3N0
IEEvQiB0ZXN0aW5nIGJ1aWxkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQwMzE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBzdXBwb3J0IGZvciB0cmlnZ2VyaW5nIEEv
QiB0ZXN0aW5nIGZyb20gdGhlIHBlcmYgZGFzaGJvYXJkLgorCisgICAgICAgIFdlIGFkZCBhIGZl
dyBuZXcgdGFibGVzIHRvIHRoZSBkYXRhYmFzZS4gImJ1aWxkX3RyaWdnZXJhYmxlcyIsIHdoaWNo
IHJlcHJlc2VudHMgYSBzZXQgb2YgYnVpbGRlcnMKKyAgICAgICAgdGhhdCBhY2NlcHQgQS9CIHRl
c3RpbmcuICJ0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMiIGFzc29jaWF0ZXMgZWFjaCAidHJpZ2dl
cmFibGUiIHdpdGggYSBmaXhlZCBzZXQKKyAgICAgICAgb2YgcmVwb3NpdG9yaWVzIGZvciB3aGlj
aCBhbiBhcmJpdHJhcnkgcmV2aXNpb24gY2FuIGJlIHNwZWNpZmllZCBmb3IgQS9CIHRlc3Rpbmcu
CisgICAgICAgICJ0cmlnZ2VyYWJsZV9jb25maWd1cmF0aW9ucyIgc3BlY2lmaWVzIGEgdHJpZ2dl
cmFibGUgYXZhaWxhYmxlIG9uIGEgZ2l2ZW4gdGVzdCBvbiBhIGdpdmVuIHBsYXRmb3JtLgorICAg
ICAgICAicm9vdHMiIHRhYmxlIHdoaWNoIHNwZWNpZmllcyB0aGUgcmV2aXNpb24gdXNlZCBpbiBh
IGdpdmVuIHJvb3Qgc2V0IGluIGVhY2ggcmVwb3NpdG9yeS4KKworICAgICAgICAqIGluaXQtZGF0
YWJhc2Uuc3FsOiBBZGRlZCAiYnVpbGRfdHJpZ2dlcmFibGVzIiwgInRyaWdnZXJhYmxlX3JlcG9z
aXRvcmllcyIsCisgICAgICAgICJ0cmlnZ2VyYWJsZV9jb25maWd1cmF0aW9ucyIsIGFuZCAicm9v
dHMiIHRhYmxlcy4gQWRkZWQgcmVmZXJlbmNlcyB0byAiYnVpbGRfdHJpZ2dlcmFibGVzIiwKKyAg
ICAgICAgInBsYXRmb3JtcyIsIGFuZCAidGVzdHMiIHRhYmxlcyBhcyB3ZWxsIGFzIGNvbHVtbnMg
dG8gc3RvcmUgc3RhdHVzLCBzdGF0dXMgdXJsLCBhbmQgY3JlYXRpb24gdGltZQorICAgICAgICB0
byBidWlsZF9yZXF1ZXN0cyB0YWJsZS4gQWxzbyBtYWRlIGVhY2ggdGVzdCBncm91cCdzIG5hbWUg
dW5pcXVlIGluIGEgZ2l2ZW4gYW5hbHlzaXMgdGFzayBhcyBpdAorICAgICAgICB3b3VsZCBiZSBj
b25mdXNpbmcgdG8gaGF2ZSBtdWx0aXBsZSB0ZXN0IGdyb3VwcyBvZiB0aGUgc2FtZSBuYW1lLgor
CisgICAgICAgICogcHVibGljL2FkbWluL3Rlc3RzLnBocDogQWRkZWQgdGhlIFVJIGFuZCB0aGUg
Y29kZSB0byBhc3NvY2lhdGUgYSB0ZXN0IHdpdGggYSB0cmlnZ2VyYWJsZS4KKworICAgICAgICAq
IHB1YmxpYy9hZG1pbi90cmlnZ2VyYWJsZXMucGhwOiBBZGRlZC4gTWFuYWdlcyB0aGUgbGlzdCBv
ZiB0cmlnZ2VyYWJsZXMgYXMgd2VsbCBhcyByZXBvc2l0b3JpZXMKKyAgICAgICAgZm9yIHdoaWNo
IGEgc3BlY2lmaWMgcmV2aXNpb24gY2FuIGJlIHNldCBpbiBhbiBBL0IgdGVzdGluZyBvbiBhIGdp
dmVuIHRyaWdnZXJhYmxlLgorCisgICAgICAgICogcHVibGljL2FwaS9idWlsZC1yZXF1ZXN0cy5w
aHA6IEFkZGVkLiBSZXR1cm5zIHRoZSBsaXN0IG9mIG9wZW4gYnVpbGQgcmVxdWVzdHMgb24gYSBz
cGVjaWZpZWQKKyAgICAgICAgdHJpZ2dlcmFibGUuIEFsc28gdXBkYXRlcyB0aGUgc3RhdHVzJyBh
bmQgdGhlIHN0YXR1cyB1cmxzIG9mIHNwZWNpZmllZCBidWlsZCByZXF1ZXN0cyB3aGVuCisgICAg
ICAgIGJ1aWxkUmVxdWVzdFVwZGF0ZXMgaXMgcHJvdmlkZWQgaW4gdGhlIHJhdyBQT1NUIGRhdGEu
CisgICAgICAgIChtYWluKToKKworICAgICAgICAqIHB1YmxpYy9hcGkvcnVucy5waHA6CisgICAg
ICAgIChmZXRjaF9ydW5zX2Zvcl9jb25maWcpOiBEb24ndCBpbmNsdWRlIHJlc3VsdHMgYXNzb2Np
YXRlZCB3aXRoIGEgYnVpbGQgcmVxdWVzdCwgbWVhbmluZyB0aGV5IGFyZQorICAgICAgICByZXN1
bHRzIG9mIGFuIEEvQiB0ZXN0aW5nLgorCisgICAgICAgICogcHVibGljL2FwaS90ZXN0LWdyb3Vw
cy5waHA6CisgICAgICAgIChtYWluKTogVXNlIHRoZSBuZXdseSBhZGRlZCBCdWlsZFJlcXVlc3Rz
RmV0Y2hlci4gQWxzbyBtZXJnZWQgZmV0Y2hfdGVzdF9ncm91cHNfZm9yX3Rhc2sgYmFjay4KKwor
ICAgICAgICAqIHB1YmxpYy9hcGkvdHJpZ2dlcmFibGVzLnBocDogQWRkZWQuCisgICAgICAgICht
YWluKTogUmV0dXJucyBhIGxpc3Qgb2YgdHJpZ2dlcmFibGVzIG9yIGEgdHJpZ2dlcmFibGUgYXNz
b2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYW5hbHlzaXMgdGFzay4KKworICAgICAgICAqIHB1YmxpYy9p
bmNsdWRlL2FkbWluLWhlYWRlci5waHA6CisKKyAgICAgICAgKiBwdWJsaWMvaW5jbHVkZS9idWls
ZC1yZXF1ZXN0cy1mZXRjaGVyLnBocDogQWRkZWQuIEV4dHJhY3RlZCBmcm9tIHB1YmxpYy9hcGkv
dGVzdC1ncm91cHMucGhwLgorICAgICAgICAoQnVpbGRSZXF1ZXN0c0ZldGNoZXIpOiBUaGlzIGNs
YXNzIGFic3RyYWN0cyB0aGUgcHJvY2VzcyBvZiBmZXRjaGluZyBhIGxpc3Qgb2YgYnVpbGRzIHJl
cXVlc3RzCisgICAgICAgIGFuZCByb290IHNldHMgdXNlZCBpbiB0aG9zZSByZXF1ZXN0cy5ECisg
ICAgICAgIChCdWlsZFJlcXVlc3RzRmV0Y2hlcjo6X19jb25zdHJ1Y3QpOgorICAgICAgICAoQnVp
bGRSZXF1ZXN0c0ZldGNoZXI6OmZldGNoX2Zvcl90YXNrKToKKyAgICAgICAgKEJ1aWxkUmVxdWVz
dHNGZXRjaGVyOjpmZXRjaF9mb3JfZ3JvdXApOgorICAgICAgICAoQnVpbGRSZXF1ZXN0c0ZldGNo
ZXI6OmZldGNoX2luY29tcGxldGVfcmVxdWVzdHNfZm9yX3RyaWdnZXJhYmxlKToKKyAgICAgICAg
KEJ1aWxkUmVxdWVzdHNGZXRjaGVyOjpoYXNfcmVzdWx0cyk6CisgICAgICAgIChCdWlsZFJlcXVl
c3RzRmV0Y2hlcjo6cmVzdWx0cyk6CisgICAgICAgIChCdWlsZFJlcXVlc3RzRmV0Y2hlcjo6cmVz
dWx0c193aXRoX3Jlc29sdmVkX2lkcyk6CisgICAgICAgIChCdWlsZFJlcXVlc3RzRmV0Y2hlcjo6
cmVzdWx0c19pbnRlcm5hbCk6CisgICAgICAgIChCdWlsZFJlcXVlc3RzRmV0Y2hlcjo6cm9vdF9z
ZXRzKToKKyAgICAgICAgKEJ1aWxkUmVxdWVzdHNGZXRjaGVyOjpmZXRjaF9yb290c19mb3Jfc2V0
KToKKworICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL2RiLnBocDoKKyAgICAgICAgKERhdGFiYXNl
OjpwcmVmaXhlZF9jb2x1bW5fbmFtZXMpOiBEb24ndCByZXR1cm4gIiRwcmVmaXhfIiB3aGVuIHRo
ZXJlIGFyZSBubyBjb2x1bW5zLgorICAgICAgICAoRGF0YWJhc2U6Omluc2VydF9yb3cpOiBTdXBw
b3J0IHRha2luZyBhbiBlbXB0eSBhcnJheSBmb3IgdmFsdWVzLiBUaGlzIGlzIHVzZWZ1bCBpbiAi
cm9vdF9zZXRzIgorICAgICAgICB0YWJsZSBzaW5jZSBpdCBvbmx5IGhhcyB0aGUgcHJpbWFyeSBr
ZXksIGlkLCBjb2x1bW4uCisgICAgICAgIChEYXRhYmFzZTo6c2VsZWN0X29yX2luc2VydF9yb3cp
OgorICAgICAgICAoRGF0YWJhc2U6OnVwZGF0ZV9vcl9pbnNlcnRfcm93KToKKyAgICAgICAgKERh
dGFiYXNlOjp1cGRhdGVfcm93KTogQWRkZWQuCisgICAgICAgIChEYXRhYmFzZTo6X3NlbGVjdF91
cGRhdGVfb3JfaW5zZXJ0X3Jvdyk6IFRha2VzIGFuIGV4dHJhIGFyZ3VtZW50IHNwZWNpZnlpbmcg
d2hldGhlciBhIG5ldyByb3cKKyAgICAgICAgc2hvdWxkIGJlIGluc2VydGVkIHdoZW4gbm8gcm93
IG1hdGNoZXMgdGhlIHNwZWNpZmllZCBjcml0ZXJpYS4gVGhpcyBpcyB1c2VkIHdoaWxlIHVwZGF0
aW5nCisgICAgICAgIGJ1aWxkX3JlcXVlc3RzJyBzdGF0dXMgYW5kIHVybCBpbiBwdWJsaWMvYXBp
L2J1aWxkLXJlcXVlc3RzLnBocCBzaW5jZSB3ZSBzaG91bGRuJ3QgYmUgaW5zZXJ0aW5nCisgICAg
ICAgIG5ldyBidWlsZCByZXF1ZXN0cyBpbiB0aGF0IEFQSS4KKyAgICAgICAgKERhdGFiYXNlOjpz
ZWxlY3Rfcm93cyk6IEFsc28gdXNlICIxID09IDEiIGluIHRoZSBzZWxlY3QgcXVlcnkgd2hlbiB0
aGUgcXVlcnkgY3JpdGVyaWEgaXMgZW1wdHkuCisgICAgICAgIFRoaXMgaXMgdXNlZCBpbiBwdWJs
aWMvYXBpL3RyaWdnZXJhYmxlcy5waHAgd2hlbiBubyBhbmFseXNpcyB0YXNrIGlzIHNwZWNpZmll
ZC4KKworICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL2pzb24taGVhZGVyLnBocDoKKyAgICAgICAg
KGZpbmRfdHJpZ2dlcmFibGVfZm9yX3Rhc2spOiBBZGRlZC4gRmluZHMgYSB0cmlnZ2VyYWJsZSBh
dmFpbGFibGUgb24gYSBnaXZlbiB0ZXN0LiBXZSByZXR1cm4gdGhlCisgICAgICAgIHRyaWdnZXJh
YmxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2xvc2VzdCBhbmNlc3RvciBvZiB0aGUgdGVzdC4gU2lu
Y2UgaXNzdWluZyBhIG5ldyBxdWVyeSBmb3IgZWFjaAorICAgICAgICBhbmNlc3RvciB0ZXN0IGlz
IGV4cGVuc2l2ZSwgd2UgcmV0cmlldmUgdHJpZ2dlcmFibGUgZm9yIGFsbCBhbmNlc3RvciB0ZXN0
cyBhdCBvbmNlIGFuZCBtYW51YWxseQorICAgICAgICBmaW5kIHRoZSBjbG9zZXN0IGFuY2VzdG9y
IHdpdGggYSB0cmlnZ2VyYWJsZS4KKworICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL3JlcG9ydC1w
cm9jZXNzb3IucGhwOgorICAgICAgICAoUmVwb3J0UHJvY2Vzc29yOjpwcm9jZXNzKToKKyAgICAg
ICAgKFJlcG9ydFByb2Nlc3Nvcjo6cmVzb2x2ZV9idWlsZF9pZCk6IEFzc29jaWF0ZSBhIGJ1aWxk
IHJlcXVlc3Qgd2l0aCB0aGUgbmV3bHkgY3JlYXRlZCBidWlsZAorICAgICAgICBpZiBqb2JJZCBv
ciBidWlsZFJlcXVlc3QgaXMgc3BlY2lmaWVkLgorCisgICAgICAgICogcHVibGljL2luY2x1ZGUv
dGVzdC1uYW1lLXJlc29sdmVyLnBocDoKKyAgICAgICAgKFRlc3ROYW1lUmVzb2x2ZXI6Om1hcF9t
ZXRyaWNzX3RvX3Rlc3RzKTogU3RvcmUgdGhlIGVudGlyZSBtZXRyaWMgcm93IGluc3RlYWQgb2Yg
aXRzIG5hbWUgc28gdGhhdAorICAgICAgICB0ZXN0X2V4aXN0c19vbl9wbGF0Zm9ybSBjYW4gdXNl
IGl0LiBUaGUgbGFzdCBkaWZmIGluIHB1YmxpYy9hZG1pbi90ZXN0cy5waHAgYWRvcHRzIHRoaXMg
Y2hhbmdlLgorICAgICAgICAoVGVzdE5hbWVSZXNvbHZlcjo6dGVzdF9leGlzdHNfb25fcGxhdGZv
cm0pOiBBZGRlZC4gUmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBoYXMgZXZlciBydW4gb24KKyAg
ICAgICAgYSBnaXZlbiBwbGF0Zm9ybS4KKworICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL3Rlc3Qt
cGF0aC1yZXNvbHZlci5waHA6IEFkZGVkLgorICAgICAgICAoVGVzdFBhdGhSZXNvbHZlcik6IFRo
aXMgY2xhc3MgYWJzdHJhY3RzIHRoZSBhbmNlc3RvciBjaGFpbnMgb2YgYSB0ZXN0LiBJdCByZXRy
aWV2ZXMgdGhlIGVudGlyZQorICAgICAgICAidGVzdHMiIHRhYmxlIHRvIGRvIHRoaXMgc2luY2Ug
dGhlcmUgY291bGQgYmUgYXJiaXRyYXJ5IG51bWJlciBvZiBhbmNlc3RvcnMgZm9yIGEgZ2l2ZW4g
dGVzdC4KKyAgICAgICAgVGhpcyBjbGFzcyBpcyBhIGxvdCBtb3JlIGxpZ2h0d2VpZ2h0IHRoYW4g
VGVzdE5hbWVSZXNvbHZlciwgd2hpY2ggcmV0cmlldmVzIGEgd2hvbGUgYnVuY2ggb2YgdGFibGVz
CisgICAgICAgIGluIG9yZGVyIHRvIGNvbXB1dGUgZnVsbCB0ZXN0IG1ldHJpYyBuYW1lcy4KKyAg
ICAgICAgKFRlc3RQYXRoUmVzb2x2ZXI6Ol9fY29uc3RydWN0KToKKyAgICAgICAgKFRlc3RQYXRo
UmVzb2x2ZXI6OmFuY2VzdG9yc19mb3JfdGVzdCk6IFJldHVybnMgdGhlIG9yZGVyZWQgbGlzdCBv
ZiBhbmNlc3RvcnMgZnJvbSB0aGUgY2xvc2VzdCB0bworICAgICAgICB0aGUgaGlnaGVzdCAoYSB0
ZXN0IHdpdGhvdXQgYSBwYXJlbnQpLgorICAgICAgICAoVGVzdFBhdGhSZXNvbHZlcjo6cGF0aF9m
b3JfdGVzdCk6IFJldHVybnMgYSB0ZXN0ICJwYXRoIiwgdGhlIG9yZGVyZWQgbGlzdCBvZiB0ZXN0
IG5hbWVzIGZyb20KKyAgICAgICAgdGhlIGhpZ2hlc3QgYW5jZXN0b3IgdG8gdGhlIHRlc3QgaXRz
ZWxmLgorICAgICAgICAoVGVzdFBhdGhSZXNvbHZlcjo6ZW5zdXJlX2lkX3RvX3Rlc3RfbWFwKTog
RmV0Y2hlcyAidGVzdHMiIHRhYmxlIHRvIGNvbnN0cnVjdCBpZF90b190ZXN0X21hcC4KKworICAg
ICAgICAqIHB1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHA6IEFkZGVk
LiBBbiBBUEkgdG8gY3JlYXRlIEEvQiB0ZXN0aW5nIGdyb3Vwcy4KKyAgICAgICAgKG1haW4pOgor
ICAgICAgICAoY29tbWl0X3NldHNfZnJvbV9yb290X3NldHMpOiBHaXZlbiBhIGRpY3Rpb25hcnkg
b2YgcmVwb3NpdG9yeSBuYW1lcyB0byBhIHBhaXIgb2YgcmV2aXNpb25zCisgICAgICAgIGZvciBz
ZXRzIEEgYW5kIEIgcmVzcGVjdGl2ZWx5LCByZXR1cm5zIGEgcGFpciBvZiBhcnJheXMsIGVhY2gg
b2Ygd2hpY2ggY29udGFpbnMgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgc2V0IG9mICJjb21t
aXRzIiBmb3Igc2V0cyBBIGFuZCBCIHJlc3BlY3RpdmVseS4gZS5nLiB7IldlYktpdCI6IFsxLCAy
XSwgIlNhZmFyaSI6IFszLCA0XX0gd2lsbAorICAgICAgICByZXN1bHQgaW4gW1tXZWJLaXQgY29t
bWl0IGF0IHIxLCBTYWZhcmkgY29tbWl0IGF0IHIzXSwgW1dlYktpdCBjb21taXQgYXQgcjIsIFNh
ZmFyaSBjb21taXQgYXQgcjRdXS4KKworICAgICAgICAqIHB1YmxpYy92Mi9hbmFseXNpcy5qczoK
KyAgICAgICAgKEFwcC5BbmFseXNpc1Rhc2sudGVzdEdyb3Vwcyk6IFRha2VzIGFyZ3VtZW50cyBz
byB0aGF0IHNldCgndGVzdEdyb3VwcycpIHdpbGwgaW52YWxpZGF0ZSB0aGUgY2FjaGUuCisgICAg
ICAgIChBcHAuQW5hbHlzaXNUYXNrLnRyaWdnZXJhYmxlKTogQWRkZWQuIFJldHJpZXZlcyB0aGUg
dHJpZ2dlcmFibGUgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YXNrIGxhemlseS4KKyAgICAgICAgKEFw
cC5UZXN0R3JvdXAucm9vdFNldHMpOiBBZGRlZC4gUmV0dXJucyB0aGUgbGlzdCBvZiByb290IHNl
dCBpZHMgdXNlZCBpbiB0aGlzIEEvQiB0ZXN0aW5nIGdyb3VwLgorICAgICAgICAoQXBwLlRlc3RH
cm91cC5jcmVhdGUpOiBBZGRlZC4gQ3JlYXRlcyBhIG5ldyBBL0IgdGVzdGluZyBncm91cC4KKyAg
ICAgICAgKEFwcC5UcmlnZ2VyYWJsZSk6IEFkZGVkLgorICAgICAgICAoQXBwLlRyaWdnZXJhYmxl
QWRhcHRlcik6IEFkZGVkLgorICAgICAgICAoQXBwLlRyaWdnZXJhYmxlQWRhcHRlci5idWlsZFVS
TCk6IEFkZGVkLgorICAgICAgICAoQXBwLkJ1aWxkUmVxdWVzdC50ZXN0R3JvdXApOiBSZW5hbWVk
IGZyb20gZ3JvdXAuCisgICAgICAgIChBcHAuQnVpbGRSZXF1ZXN0Lm9yZGVyTGFiZWwpOiBBZGRl
ZC4gT25lLWJhc2VkIGluZGV4IHRvIGJlIHVzZWQgaW4gbGFiZWxzLgorICAgICAgICAoQXBwLkJ1
aWxkUmVxdWVzdC5jb25maWcpOiBBZGRlZC4gUmV0dXJucyBlaXRoZXIgJ0EnIG9yICdCJyBkZXBl
bmRpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24gdXNlZAorICAgICAgICBpbiB0aGlzIGJ1aWxkIHJl
cXVlc3QuCisgICAgICAgIChBcHAuQnVpbGRSZXF1ZXN0LnN0YXR1cyk6IEFkZGVkLgorICAgICAg
ICAoQXBwLkJ1aWxkUmVxdWVzdC5zdGF0dXNMYWJlbCk6IEFkZGVkLiBSZXR1cm5zIGEgaHVtYW4g
ZnJpZW5kbHkgbGFiZWwgZm9yIHRoZSBjdXJyZW50IHN0YXR1cy4KKyAgICAgICAgKEFwcC5CdWls
ZFJlcXVlc3QpOiBSZW1vdmVkIGJ1aWxkTnVtYmVyLCBidWlsZEJ1aWxkZXIsIGFzIHdlbGwgYXMg
YnVpbGRUaW1lIGFzIHRoZXkncmUgdW51c2VkLgorCisgICAgICAgICogcHVibGljL3YyL2FwcC5q
czoKKyAgICAgICAgKEFwcC5BbmFseXNpc1Rhc2tDb250cm9sbGVyLnRlc3RHcm91cHMpOiBBZGRl
ZC4KKyAgICAgICAgKEFwcC5BbmFseXNpc1Rhc2tDb250cm9sbGVyLnBvc3NpYmxlUmVwZXRpdGlv
bkNvdW50cyk6IEFkZGVkLgorICAgICAgICAoQXBwLkFuYWx5c2lzVGFza0NvbnRyb2xsZXIudXBk
YXRlUm9vdHMpOiBSZW5hbWVkIGZyb20gcm9vdHMuIFRoaXMgaXMgYWxzbyBubyBsb25nZXIgYSBw
cm9wZXJ0eQorICAgICAgICBidXQgYW4gb2JzZXJ2ZXIgdGhhdCB1cGRhdGVzICJyb290cyIgcHJv
cGVydHkuIEZpbHRlciBvdXQgdGhlIHJlcG9zaXRvcmllcyB0aGF0IGFyZSBub3QgYWNjZXB0ZWQK
KyAgICAgICAgYnkgdGhlIGFzc29jaWF0ZWQgdHJpZ2dlcmFibGUgYXMgdGhleSB3aWxsIGJlIGln
bm9yZWQuCisgICAgICAgIChBcHAuQW5hbHlzaXNUYXNrQ29udHJvbGxlci5hY3Rpb25zLmNyZWF0
ZVRlc3RHcm91cCk6IEFkZGVkLgorCisgICAgICAgICogcHVibGljL3YyL2luZGV4Lmh0bWw6IFVw
ZGF0ZWQgdGhlIFVJLCBhbmQgYWRkZWQgYSBmb3JtIGVsZW1lbnQgdG8gdHJpZ2dlciBjcmVhdGVU
ZXN0R3JvdXAgYWN0aW9uLgorCisgICAgICAgICogdG9vbHMvc3luYy13aXRoLWJ1aWxkYm90LnB5
OiBBZGRlZC4gVGhpcyBzY3JpcHRzIHBvc3RzIG5ldyBidWlsZHMgb24gYnVpbGRib3QgYW5kIHJl
cG9ydHMgYmFjaworICAgICAgICB0aGUgc3RhdHVzIG9mIHRob3NlIGJ1aWxkcyB0byB0aGUgcGVy
ZiBkYXNoYm9hcmQuIEEgc2ltaWxhciBzY3JpcHQgY2FuIGJlIHdyaXR0ZW4gdG8gc3VwcG9ydAor
ICAgICAgICBvdGhlciBjb250aW51b3VzIGJ1aWxkcyBzeXN0ZW1zLgorICAgICAgICAobWFpbik6
IEZldGNoZXMgdGhlIGxpc3Qgb2YgcGVuZGluZyBidWlsZHMgYXMgd2VsbCBhcyBjdXJyZW50bHkg
cnVubmluZyBvciBjb21wbGV0ZWQgYnVpbGRzIGZyb20KKyAgICAgICAgYSBidWlsZGJvdCwgYW5k
IHJlcG9ydCBuZXcgc3RhdHVzZXMgb2YgYnVpbGRzIHJlcXVlc3RzIHRvIHRoZSBwZXJmIGRhc2hi
b2FyZC4gSXQgd2lsbCB0aGVuIHNjaGVkdWxlCisgICAgICAgIGEgc2luZ2xlIG5ldyBidWlsZCBv
biBlYWNoIGJ1aWxkZXIgd2l0aCBubyBwZW5kaW5nIGJ1aWxkcywgYW5kIG1hcmtzIHRoZSBzZXQg
b2Ygb3BlbiBidWlsZCByZXF1ZXN0cworICAgICAgICB0aGF0IGhhdmUgYmVlbiBzY2hlZHVsZWQg
dG8gcnVuIG9uIHRoZSBidWlsZGJvdCBidXQgbm90IGZvdW5kIGluIHRoZSBmaXJzdCBzdGVwIGFz
IHN0YWxlLgorICAgICAgICAobG9hZF9jb25maWcpOiBMb2FkcyBhIEpTT04gdGhhdCBjb250YWlu
cyB0aGUgY29uZmlndXJhdGlvbnMgZm9yIGVhY2ggYnVpbGRlci4gZS5nLgorICAgICAgICBbCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1tYXZlcmlja3Mi
LAorICAgICAgICAgICAgICAgICJ0ZXN0IjogWyJQYXJzZXIiLCAiaHRtbDUtZnVsbC1yZW5kZXIu
aHRtbCJdLAorICAgICAgICAgICAgICAgICJidWlsZGVyIjogIlRydW5rIFN5cmFoIFByb2R1Y3Rp
b24gUGVyZiBBQiBUZXN0cyIsCisgICAgICAgICAgICAgICAgImFyZ3VtZW50cyI6IHsKKyAgICAg
ICAgICAgICAgICAgICAgImZvcmNlc2NoZWR1bGVyIjogImZvcmNlLW1hYy1tYXZlcmlja3MtcmVs
ZWFzZS1wZXJmIiwKKyAgICAgICAgICAgICAgICAgICAgIndlYmtpdF9yZXZpc2lvbiI6ICIkV2Vi
S2l0IiwKKyAgICAgICAgICAgICAgICAgICAgImpvYmlkIjogIiRidWlsZFJlcXVlc3QiCisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBdCisKKyAgICAgICAgKGZpbmRf
cmVxdWVzdF91cGRhdGVzKTogUmV0dXJuIGEgbGlzdCBvZiBidWlsZCByZXF1ZXN0IHN0YXR1cyB1
cGRhdGVzIHRvIG1ha2UgYmFzZWQgb24gdGhlIHBlbmRpbmcKKyAgICAgICAgYnVpbGRzIGFzIHdl
bGwgYXMgaW4tcHJvZ3Jlc3MgYW5kIGNvbXBsZXRlZCBidWlsZHMgb24gZWFjaCBidWlsZGVyIG9u
IHRoZSBidWlsZGJvdC4gV2hlbiBhIGJ1aWxkIGlzCisgICAgICAgIGNvbXBsZXRlZCwgd2UgdXNl
IHRoZSBzcGVjaWFsIHN0YXR1cyAiZmFpbGVkSWZOb3RDb21wbGV0ZWQiIHdoaWNoIHJlc3VsdHMg
aW4gImZhaWxlZCIgc3RhdHVzIG9ubHkKKyAgICAgICAgaWYgdGhlIGJ1aWxkIHJlcXVlc3QgaGFk
IG5vdCBiZWVuIGNvbXBsZXRlZC4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBhIGZhaWxlZCBi
dWlsZCB3aWxsIG5vdAorICAgICAgICByZXBvcnQgaXRzIGZhaWxlZC1uZXNzIGJhY2sgdG8gdGhl
IHBlcmYgZGFzaGJvYXJkIGluIHNvbWUgY2FzZXM7IGUuZy4gbG9zdCBzbGF2ZSBvciBzdm4gdXAg
ZmFpbHVyZS4KKyAgICAgICAgKHVwZGF0ZV9hbmRfZmV0Y2hfYnVpbGRfcmVxdWVzdHMpOiBTdWJt
aXQgdGhlIGJ1aWxkIHJlcXVlc3Qgc3RhdHVzIHVwZGF0ZXMgYW5kIHJldHJpZXZlIHRoZSBsaXN0
CisgICAgICAgIG9mIG9wZW4gcmVxdWVzdHMgdGhlIHBlcmYgZGFzaGJvYXJkIGhhcy4KKyAgICAg
ICAgKGZpbmRfc3RhbGVfcmVxdWVzdF91cGRhdGVzKTogQ29tcHV0ZSB0aGUgbGlzdCBvZiBidWls
ZCByZXF1ZXN0cyB0aGF0IGhhdmUgYmVlbiBzY2hlZHVsZWQgb24gdGhlCisgICAgICAgIGJ1aWxk
Ym90IGJ1dCBub3QgZm91bmQgaW4gZmluZF9yZXF1ZXN0X3VwZGF0ZXMuIFRoZXNlIGJ1aWxkIHJl
cXVlc3RzIGFyZSBsb3N0LiBlLmcuIGEgbWFzdGVyIHJlYm9vdAorICAgICAgICBvciBodW1hbiBj
YW5jZWxpbmcgYSBidWlsZCBtYXkgdHJpZ2dlciBzdWNoIGEgc3RhdGUuCisgICAgICAgIChzY2hl
ZHVsZV9yZXF1ZXN0KTogU2NoZWR1bGVzIGEgYnVpbGQgd2l0aCB0aGUgYXJndW1lbnRzIHNwZWNp
ZmllZCBpbiB0aGUgY29uZmlndXJhdGlvbiBKU09OIGFmdGVyCisgICAgICAgIHJlcGxhY2luZyBy
ZXBvc2l0b3J5IG5hbWVzIHdpdGggdGhlaXIgcmV2aXNpb25zIGFuZCBidWlsZFJlcXVlc3Qgd2l0
aCB0aGUgYnVpbGQgcmVxdWVzdCBpZC4KKyAgICAgICAgKGNvbmZpZ19mb3JfcmVxdWVzdCk6IEZp
bmRzIGEgYnVpbGRlciBmb3IgdGhlIHRlc3QgYW5kIHRoZSBwbGF0Zm9ybSBvZiBhIGJ1aWxkIHJl
cXVlc3QuCisgICAgICAgIChmZXRjaF9qc29uKTogRmV0Y2hlcyBhIEpTT04gZnJvbSB0aGUgc3Bl
Y2lmaWVkIFVSTCwgb3B0aW9uYWxseSB3aXRoIEJhc2ljQXV0aC4KKyAgICAgICAgKHByb3BlcnR5
X3ZhbHVlX2Zyb21fYnVpbGQpOiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiBhIHNwZWNpZmljIHByb3Bl
cnR5IGluIGEgYnVpbGRib3QgYnVpbGQuCisgICAgICAgIChyZXF1ZXN0X2lkX2Zyb21fYnVpbGQp
OiBSZXR1cm5zIHRoZSBidWlsZCByZXF1ZXN0IGlkIG9mIGEgZ2l2ZW4gYnVpbGRib3QgYnVpbGQg
aWYgdGhlcmUgaXMgb25lLgorCiAyMDE1LTAxLTA5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIENhY2hlLWNvbnRyb2wgc2hvdWxkIGJlIHNldCBvbmx5IG9uIGFw
aS9ydW5zCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3Fs
CShyZXZpc2lvbiAxNzgyMjcpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRh
YmFzZS5zcWwJKHdvcmtpbmcgY29weSkKQEAgLTE3LDEwICsxNywxNSBAQCBEUk9QIFRBQkxFIHJl
cG9ydHMgQ0FTQ0FERTsKIERST1AgVEFCTEUgdHJhY2tlcl9yZXBvc2l0b3JpZXMgQ0FTQ0FERTsK
IERST1AgVEFCTEUgYnVnX3RyYWNrZXJzIENBU0NBREU7CiBEUk9QIFRBQkxFIGFuYWx5c2lzX3Rh
c2tzIENBU0NBREU7CitEUk9QIFRBQkxFIGJ1aWxkX3RyaWdnZXJhYmxlcyBDQVNDQURFOworRFJP
UCBUQUJMRSB0cmlnZ2VyYWJsZV9jb25maWd1cmF0aW9ucyBDQVNDQURFOworRFJPUCBUQUJMRSB0
cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMgQ0FTQ0FERTsKIERST1AgVEFCTEUgYnVncyBDQVNDQURF
OwogRFJPUCBUQUJMRSBhbmFseXNpc190ZXN0X2dyb3VwcyBDQVNDQURFOwogRFJPUCBUQUJMRSBy
b290X3NldHMgQ0FTQ0FERTsKK0RST1AgVEFCTEUgcm9vdHMgQ0FTQ0FERTsKIERST1AgVEFCTEUg
YnVpbGRfcmVxdWVzdHMgQ0FTQ0FERTsKK0RST1AgVFlQRSBidWlsZF9yZXF1ZXN0X3N0YXR1c190
eXBlIENBU0NBREU7CiAKIAogQ1JFQVRFIFRBQkxFIHBsYXRmb3JtcyAoCkBAIC0xNzEsMjEgKzE3
Niw1MCBAQCBDUkVBVEUgVEFCTEUgYnVncyAoCiAgICAgYnVnX251bWJlciBpbnRlZ2VyIE5PVCBO
VUxMLAogICAgIENPTlNUUkFJTlQgYnVnX3Rhc2tfYW5kX3RyYWNrZXJfbXVzdF9iZV91bmlxdWUg
VU5JUVVFKGJ1Z190YXNrLCBidWdfdHJhY2tlcikpOwogCitDUkVBVEUgVEFCTEUgYnVpbGRfdHJp
Z2dlcmFibGVzICgKKyAgICB0cmlnZ2VyYWJsZV9pZCBzZXJpYWwgUFJJTUFSWSBLRVksCisgICAg
dHJpZ2dlcmFibGVfbmFtZSB2YXJjaGFyKDY0KSBOT1QgTlVMTCBVTklRVUUpOworCitDUkVBVEUg
VEFCTEUgdHJpZ2dlcmFibGVfcmVwb3NpdG9yaWVzICgKKyAgICB0cmlncmVwb190cmlnZ2VyYWJs
ZSBpbnRlZ2VyIFJFRkVSRU5DRVMgYnVpbGRfdHJpZ2dlcmFibGVzIE5PVCBOVUxMLAorICAgIHRy
aWdyZXBvX3JlcG9zaXRvcnkgaW50ZWdlciBSRUZFUkVOQ0VTIHJlcG9zaXRvcmllcyBOT1QgTlVM
TCwKKyAgICB0cmlncmVwb19zdWJfcm9vdHMgYm9vbGVhbiBOT1QgTlVMTCBERUZBVUxUIEZBTFNF
KTsKKworQ1JFQVRFIFRBQkxFIHRyaWdnZXJhYmxlX2NvbmZpZ3VyYXRpb25zICgKKyAgICB0cmln
Y29uZmlnX3Rlc3QgaW50ZWdlciBSRUZFUkVOQ0VTIHRlc3RzIE5PVCBOVUxMLAorICAgIHRyaWdj
b25maWdfcGxhdGZvcm0gaW50ZWdlciBSRUZFUkVOQ0VTIHBsYXRmb3JtcyBOT1QgTlVMTCwKKyAg
ICB0cmlnY29uZmlnX3RyaWdnZXJhYmxlIGludGVnZXIgUkVGRVJFTkNFUyBidWlsZF90cmlnZ2Vy
YWJsZXMgTk9UIE5VTEwsCisgICAgQ09OU1RSQUlOVCB0cmlnZ2VyYWJsZV9tdXN0X2JlX3VuaXF1
ZV9mb3JfdGVzdF9hbmRfcGxhdGZvcm0gVU5JUVVFKHRyaWdjb25maWdfdGVzdCwgdHJpZ2NvbmZp
Z19wbGF0Zm9ybSkpOworCiBDUkVBVEUgVEFCTEUgYW5hbHlzaXNfdGVzdF9ncm91cHMgKAogICAg
IHRlc3Rncm91cF9pZCBzZXJpYWwgUFJJTUFSWSBLRVksCiAgICAgdGVzdGdyb3VwX3Rhc2sgaW50
ZWdlciBSRUZFUkVOQ0VTIGFuYWx5c2lzX3Rhc2tzIE5PVCBOVUxMLAogICAgIHRlc3Rncm91cF9u
YW1lIHZhcmNoYXIoMjU2KSwKLSAgICB0ZXN0Z3JvdXBfYXV0aG9yIHZhcmNoYXIoMjU2KSBOT1Qg
TlVMTCwKLSAgICB0ZXN0Z3JvdXBfY3JlYXRlZF9hdCB0aW1lc3RhbXAgTk9UIE5VTEwgREVGQVVM
VCAoQ1VSUkVOVF9USU1FU1RBTVAgQVQgVElNRSBaT05FICdVVEMnKSk7CisgICAgdGVzdGdyb3Vw
X2F1dGhvciB2YXJjaGFyKDI1NiksCisgICAgdGVzdGdyb3VwX2NyZWF0ZWRfYXQgdGltZXN0YW1w
IE5PVCBOVUxMIERFRkFVTFQgKENVUlJFTlRfVElNRVNUQU1QIEFUIFRJTUUgWk9ORSAnVVRDJyks
CisgICAgQ09OU1RSQUlOVCB0ZXN0Z3JvdXBfbmFtZV9tdXN0X2JlX3VuaXF1ZV9mb3JfZWFjaF90
YXNrIFVOSVFVRSh0ZXN0Z3JvdXBfdGFzaywgdGVzdGdyb3VwX25hbWUpKTsKIENSRUFURSBJTkRF
WCB0ZXN0Z3JvdXBfdGFza19pbmRleCBPTiBhbmFseXNpc190ZXN0X2dyb3Vwcyh0ZXN0Z3JvdXBf
dGFzayk7CiAKIENSRUFURSBUQUJMRSByb290X3NldHMgKAogICAgIHJvb3RzZXRfaWQgc2VyaWFs
IFBSSU1BUlkgS0VZKTsKIAorQ1JFQVRFIFRBQkxFIHJvb3RzICgKKyAgICByb290X3NldCBpbnRl
Z2VyIFJFRkVSRU5DRVMgcm9vdF9zZXRzIE5PVCBOVUxMLAorICAgIHJvb3RfY29tbWl0IGludGVn
ZXIgUkVGRVJFTkNFUyBjb21taXRzIE5PVCBOVUxMKTsKKworQ1JFQVRFIFRZUEUgYnVpbGRfcmVx
dWVzdF9zdGF0dXNfdHlwZSBhcyBFTlVNICgncGVuZGluZycsICdzY2hlZHVsZWQnLCAncnVubmlu
ZycsICdmYWlsZWQnLCAnY29tcGxldGVkJyk7CiBDUkVBVEUgVEFCTEUgYnVpbGRfcmVxdWVzdHMg
KAogICAgIHJlcXVlc3RfaWQgc2VyaWFsIFBSSU1BUlkgS0VZLAorICAgIHJlcXVlc3RfdHJpZ2dl
cmFibGUgaW50ZWdlciBSRUZFUkVOQ0VTIGJ1aWxkX3RyaWdnZXJhYmxlcyBOT1QgTlVMTCwKKyAg
ICByZXF1ZXN0X3BsYXRmb3JtIGludGVnZXIgUkVGRVJFTkNFUyBwbGF0Zm9ybXMgTk9UIE5VTEws
CisgICAgcmVxdWVzdF90ZXN0IGludGVnZXIgUkVGRVJFTkNFUyB0ZXN0cyBOT1QgTlVMTCwKICAg
ICByZXF1ZXN0X2dyb3VwIGludGVnZXIgUkVGRVJFTkNFUyBhbmFseXNpc190ZXN0X2dyb3VwcyBO
T1QgTlVMTCwKICAgICByZXF1ZXN0X29yZGVyIGludGVnZXIgTk9UIE5VTEwsCiAgICAgcmVxdWVz
dF9yb290X3NldCBpbnRlZ2VyIFJFRkVSRU5DRVMgcm9vdF9zZXRzIE5PVCBOVUxMLAorICAgIHJl
cXVlc3Rfc3RhdHVzIGJ1aWxkX3JlcXVlc3Rfc3RhdHVzX3R5cGUgTk9UIE5VTEwgREVGQVVMVCAn
cGVuZGluZycsCisgICAgcmVxdWVzdF91cmwgdmFyY2hhcigxMDI0KSwKICAgICByZXF1ZXN0X2J1
aWxkIGludGVnZXIgUkVGRVJFTkNFUyBidWlsZHMsCisgICAgcmVxdWVzdF9jcmVhdGVkX2F0IHRp
bWVzdGFtcCBOT1QgTlVMTCBERUZBVUxUIChDVVJSRU5UX1RJTUVTVEFNUCBBVCBUSU1FIFpPTkUg
J1VUQycpLAogICAgIENPTlNUUkFJTlQgYnVpbGRfcmVxdWVzdF9vcmRlcl9tdXN0X2JlX3VuaXF1
ZV9pbl9ncm91cCBVTklRVUUocmVxdWVzdF9ncm91cCwgcmVxdWVzdF9vcmRlcikpOworQ1JFQVRF
IElOREVYIGJ1aWxkX3JlcXVlc3RfdHJpZ2dlcmFibGUgT04gYnVpbGRfcmVxdWVzdHMocmVxdWVz
dF90cmlnZ2VyYWJsZSk7ICAgIAorQ1JFQVRFIElOREVYIGJ1aWxkX3JlcXVlc3RfYnVpbGQgT04g
YnVpbGRfcmVxdWVzdHMocmVxdWVzdF9idWlsZCk7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL2FkbWluL3Rlc3RzLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL2FkbWluL3Rlc3RzLnBocAkocmV2aXNpb24gMTc4MjI3KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hZG1pbi90ZXN0cy5waHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDIyIEBAIGlmICgkYWN0aW9uID09ICdkYXNoYm9hcmQnKSB7CiB9
IGVsc2UgaWYgKCRhY3Rpb24gPT0gJ3VwZGF0ZScpIHsKICAgICBpZiAoIXVwZGF0ZV9maWVsZCgn
dGVzdHMnLCAndGVzdCcsICd1cmwnKSkKICAgICAgICAgbm90aWNlKCdJbnZhbGlkIHBhcmFtZXRl
cnMnKTsKK30gZWxzZSBpZiAoJGFjdGlvbiA9PSAndXBkYXRlLXRyaWdnZXJhYmxlJykgeworICAg
ICR0ZXN0X2lkID0gaW50dmFsKCRfUE9TVFsndGVzdCddKTsKKyAgICAkcGxhdGZvcm1faWQgPSBp
bnR2YWwoJF9QT1NUWydwbGF0Zm9ybSddKTsKKworICAgICR0cmlnZ2VyYWJsZV9pZCA9IGFycmF5
X2dldCgkX1BPU1QsICd0cmlnZ2VyYWJsZScpOworICAgIGlmICgkdHJpZ2dlcmFibGVfaWQpIHsK
KyAgICAgICAgJHRyaWdnZXJhYmxlX2lkID0gaW50dmFsKCR0cmlnZ2VyYWJsZV9pZCk7CisgICAg
ICAgICRhc3NvY2lhdGlvbiA9IGFycmF5KCd0ZXN0JyA9PiAkdGVzdF9pZCwgJ3BsYXRmb3JtJyA9
PiAkcGxhdGZvcm1faWQsICd0cmlnZ2VyYWJsZScgPT4gJHRyaWdnZXJhYmxlX2lkKTsKKyAgICAg
ICAgaWYgKCEkZGItPmluc2VydF9yb3coJ3RyaWdnZXJhYmxlX2NvbmZpZ3VyYXRpb25zJywgJ3Ry
aWdjb25maWcnLCAkYXNzb2NpYXRpb24sIE5VTEwpKSB7CisgICAgICAgICAgICAkc3VjZWVkZWQg
PSBGQUxTRTsKKyAgICAgICAgICAgIG5vdGljZSgiRmFpbGVkIHRvIGFzc29jaWF0ZSB0cmlnZ2Vy
YWJsZSAkdHJpZ2dlcmFibGVfaWQgd2l0aCB0ZXN0ICR0ZXN0X2lkIG9uIHBsYXRmb3JtICRwbGF0
Zm9ybV9pZC4iKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgICRkYi0+cXVlcnlf
YW5kX2dldF9hZmZlY3RlZF9yb3dzKCdERUxFVEUgRlJPTSB0cmlnZ2VyYWJsZV9jb25maWd1cmF0
aW9ucyBXSEVSRSB0cmlncmVwb190ZXN0ID0gJDEgQU5EIHRyaWdyZXBvX3BsYXRmb3JtID0gJDIn
LAorICAgICAgICAgICAgYXJyYXkoJHRlc3RfaWQsICRwbGF0Zm9ybV9pZCkpOworICAgIH0KIH0g
ZWxzZSBpZiAoJGFjdGlvbiA9PSAnYWRkJykgewogICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCd0
ZXN0X2lkJywgJF9QT1NUKSAmJiBhcnJheV9rZXlfZXhpc3RzKCdtZXRyaWNfbmFtZScsICRfUE9T
VCkpIHsKICAgICAgICAgJGlkID0gaW50dmFsKCRfUE9TVFsndGVzdF9pZCddKTsKQEAgLTU4LDYg
Kzc0LDcgQEAgaWYgKCRkYikgewogICAgICAgICBmb3JlYWNoICgkYWdncmVnYXRvcnNfdGFibGUg
YXMgJGFnZ3JlZ2F0b3Jfcm93KQogICAgICAgICAgICAgJGFnZ3JlZ2F0b3JzWyRhZ2dyZWdhdG9y
X3Jvd1snYWdncmVnYXRvcl9pZCddXSA9ICRhZ2dyZWdhdG9yX3Jvd1snYWdncmVnYXRvcl9uYW1l
J107CiAgICAgfQorICAgICRidWlsZF90cmlnZ2VyYWJsZV90YWJsZSA9ICRkYi0+ZmV0Y2hfdGFi
bGUoJ2J1aWxkX3RyaWdnZXJhYmxlcycsICd0cmlnZ2VyYWJsZV9uYW1lJykgb3IgYXJyYXkoKTsK
IAogICAgICR0ZXN0X25hbWVfcmVzb2x2ZXIgPSBuZXcgVGVzdE5hbWVSZXNvbHZlcigkZGIpOwog
ICAgIGlmICgkdGVzdF9uYW1lX3Jlc29sdmVyLT50ZXN0cygpKSB7CkBAIC03OCw3ICs5NSw3IEBA
IGlmICgkZGIpIHsKID8+CiA8dGFibGU+CiA8dGhlYWQ+Ci0gICAgPHRyPjx0ZD5UZXN0IElEPC90
ZD48dGQ+RnVsbCBOYW1lPC90ZD48dGQ+UGFyZW50IElEPC90ZD48dGQ+VVJMPC90ZD4KKyAgICA8
dHI+PHRkPlRlc3QgSUQ8L3RkPjx0ZD5GdWxsIE5hbWU8L3RkPjx0ZD5QYXJlbnQgSUQ8L3RkPjx0
ZD5VUkw8L3RkPjx0ZD5UcmlnZ2VyYWJsZXM8L3RkPgogICAgICAgICA8dGQ+TWV0cmljIElEPC90
ZD48dGQ+TWV0cmljIE5hbWU8L3RkPjx0ZD5BZ2dyZWdhdG9yPC90ZD48dGQ+RGFzaGJvYXJkPC90
ZD4KIDwvdGhlYWQ+CiA8dGJvZHk+CkBAIC0xMDMsNiArMTIwLDM3IEBAIGlmICgkZGIpIHsKIAog
ICAgICAgICAgICAgJHRlc3RfdXJsID0gaHRtbHNwZWNpYWxjaGFycygkdGVzdFsndGVzdF91cmwn
XSk7CiAKKyAgICAgICAgICAgICR0cmlnZ2VyYWJsZV9wbGF0Zm9ybXMgPSAkZGItPnF1ZXJ5X2Fu
ZF9mZXRjaF9hbGwoJ1NFTEVDVCAqIEZST00gcGxhdGZvcm1zIExFRlQgT1VURVIgSk9JTiB0cmln
Z2VyYWJsZV9jb25maWd1cmF0aW9ucworICAgICAgICAgICAgICAgIE9OIHRyaWdjb25maWdfcGxh
dGZvcm0gPSBwbGF0Zm9ybV9pZCBBTkQgdHJpZ2NvbmZpZ190ZXN0ID0gJDEgT1JERVIgQlkgcGxh
dGZvcm1fbmFtZScsIGFycmF5KCR0ZXN0X2lkKSk7CisgICAgICAgICAgICAkdHJpZ2dlcmFibGVz
ID0gJyc7CisgICAgICAgICAgICBmb3JlYWNoICgkdHJpZ2dlcmFibGVfcGxhdGZvcm1zIGFzICRw
bGF0Zm9ybV9yb3cpIHsKKyAgICAgICAgICAgICAgICBpZiAoISR0ZXN0X25hbWVfcmVzb2x2ZXIt
PnRlc3RfZXhpc3RzX29uX3BsYXRmb3JtKCR0ZXN0X2lkLCAkcGxhdGZvcm1fcm93WydwbGF0Zm9y
bV9pZCddKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAg
ICAkdHJpZ2dlcmFibGVzIC49IDw8PCBFTkQKKzxmb3JtIG1ldGhvZD0iUE9TVCI+CisgICAgPGlu
cHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGVzdCIgdmFsdWU9IiR0ZXN0X2lkIj4KKyAgICA8aW5w
dXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwbGF0Zm9ybSIgdmFsdWU9InskcGxhdGZvcm1fcm93Wydw
bGF0Zm9ybV9pZCddfSI+CisgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2
YWx1ZT0idXBkYXRlLXRyaWdnZXJhYmxlIj4KKyAgICA8bGFiZWw+CisgICAgICAgIHskcGxhdGZv
cm1fcm93WydwbGF0Zm9ybV9uYW1lJ119CisgICAgICAgIDxzZWxlY3QgbmFtZT0idHJpZ2dlcmFi
bGUiIG9uY2hhbmdlPSJ0aGlzLmZvcm0uc3VibWl0KCk7Ij4KKyAgICAgICAgICAgIDxvcHRpb24g
dmFsdWU9IiI+Tm9uZTwvb3B0aW9uPgorRU5EOworICAgICAgICAgICAgICAgICRzZWxlY3RlZF90
cmlnZ2VyYWJsZSA9IGFycmF5X2dldCgkcGxhdGZvcm1fcm93LCAndHJpZ3JlcG9fdHJpZ2dlcmFi
bGUnKTsKKyAgICAgICAgICAgICAgICBmb3JlYWNoICgkYnVpbGRfdHJpZ2dlcmFibGVfdGFibGUg
YXMgJHRyaWdnZXJhYmxlX3JvdykgeworICAgICAgICAgICAgICAgICAgICAkdHJpZ2dlcmFibGVf
aWQgPSAkdHJpZ2dlcmFibGVfcm93Wyd0cmlnZ2VyYWJsZV9pZCddOworICAgICAgICAgICAgICAg
ICAgICAkc2VsZWN0ZWQgPSAkdHJpZ2dlcmFibGVfaWQgPT0gJHNlbGVjdGVkX3RyaWdnZXJhYmxl
ID8gJyBzZWxlY3RlZCcgOiAnJzsKKyAgICAgICAgICAgICAgICAgICAgJHRyaWdnZXJhYmxlcyAu
PSAiPG9wdGlvbiB2YWx1ZT1cIiR0cmlnZ2VyYWJsZV9pZFwiJHNlbGVjdGVkPnskdHJpZ2dlcmFi
bGVfcm93Wyd0cmlnZ2VyYWJsZV9uYW1lJ119PC9vcHRpb24+IjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgJHRyaWdnZXJhYmxlcyAuPSA8PDwgRU5ECisgICAgICAgIDwvc2Vs
ZWN0PgorICAgIDwvbGFiZWw+Cis8L2Zvcm0+Cis8YnI+CitFTkQ7CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIGVjaG8gPDw8RU9GCiAgICAgPHRib2R5IGNsYXNzPSIkdGJvZHlfY2xhc3Mi
PgogICAgIDx0cj4KQEAgLTExMiw3ICsxNjAsOCBAQCBpZiAoJGRiKSB7CiAgICAgICAgIDx0ZCBy
b3dzcGFuPSIkcm93X2NvdW50Ij4KICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIj48aW5wdXQg
dHlwZT0iaGlkZGVuIiBuYW1lPSJpZCIgdmFsdWU9IiR0ZXN0X2lkIj4KICAgICAgICAgPGlucHV0
IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0idXBkYXRlIj4KLSAgICAgICAgPGlu
cHV0IHR5cGU9InVybCIgbmFtZT0idXJsIiB2YWx1ZT0iJHRlc3RfdXJsIiBzaXplPSI4MCI+PC9m
b3JtPjwvdGQ+CisgICAgICAgIDxpbnB1dCB0eXBlPSJ1cmwiIG5hbWU9InVybCIgdmFsdWU9IiR0
ZXN0X3VybCIgc2l6ZT0iMzAiPjwvZm9ybT48L3RkPgorICAgICAgICA8dGQgcm93c3Bhbj0iJHJv
d19jb3VudCI+JHRyaWdnZXJhYmxlczwvdGQ+CiBFT0Y7CiAKICAgICAgICAgICAgIGlmICgkdGVz
dF9tZXRyaWNzKSB7CkBAIC0xNjksOCArMjE4LDggQEAgRU9GOwogICAgICAgICA8bGFiZWw+TmFt
ZTxzZWxlY3QgbmFtZT0ibWV0cmljX25hbWUiPgogRU9GOwogCi0gICAgICAgICAgICAgICAgZm9y
ZWFjaCAoJGNoaWxkX21ldHJpY3MgYXMgJG1ldHJpY19uYW1lKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICRtZXRyaWNfbmFtZSA9IGh0bWxzcGVjaWFsY2hhcnMoJG1ldHJpY19uYW1lKTsKKyAgICAg
ICAgICAgICAgICBmb3JlYWNoICgkY2hpbGRfbWV0cmljcyBhcyAkbWV0cmljKSB7CisgICAgICAg
ICAgICAgICAgICAgICRtZXRyaWNfbmFtZSA9IGh0bWxzcGVjaWFsY2hhcnMoJG1ldHJpY1snbWV0
cmljX25hbWUnXSk7CiAgICAgICAgICAgICAgICAgICAgIGVjaG8gIgogICAgICAgICAgICAgPG9w
dGlvbj4kbWV0cmljX25hbWU8L29wdGlvbj4iOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYWRtaW4vdHJpZ2dlcmFibGVzLnBocAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FkbWluL3RyaWdnZXJh
Ymxlcy5waHAJKHJldmlzaW9uIDApCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L2FkbWluL3RyaWdnZXJhYmxlcy5waHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NyBAQAor
PD9waHAKKworcmVxdWlyZSgnLi4vaW5jbHVkZS9hZG1pbi1oZWFkZXIucGhwJyk7CisKK2lmICgk
ZGIpIHsKKworICAgIGlmICgkYWN0aW9uID09ICdhZGQnKSB7CisgICAgICAgIGlmICgkZGItPmlu
c2VydF9yb3coJ2J1aWxkX3RyaWdnZXJhYmxlcycsICd0cmlnZ2VyYWJsZScsIGFycmF5KCduYW1l
JyA9PiAkX1BPU1RbJ25hbWUnXSwgJ2xvY2F0aW9uJyA9PiAkX1BPU1RbJ2xvY2F0aW9uJ10pKSkg
eworICAgICAgICAgICAgbm90aWNlKCdJbnNlcnRlZCB0aGUgbmV3IHRyaWdnZXJhYmxlLicpOwor
ICAgICAgICAgICAgcmVnZW5lcmF0ZV9tYW5pZmVzdCgpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIG5vdGljZSgnQ291bGQgbm90IGFkZCB0aGUgdHJpZ2dlcmFibGUuJyk7CisgICAgfSBl
bHNlIGlmICgkYWN0aW9uID09ICd1cGRhdGUnKSB7CisgICAgICAgIGlmICh1cGRhdGVfZmllbGQo
J2J1aWxkX3RyaWdnZXJhYmxlcycsICd0cmlnZ2VyYWJsZScsICduYW1lJykpCisgICAgICAgICAg
ICByZWdlbmVyYXRlX21hbmlmZXN0KCk7CisgICAgICAgIGVsc2UgaWYgKHVwZGF0ZV9maWVsZCgn
YnVpbGRfdHJpZ2dlcmFibGVzJywgJ3RyaWdnZXJhYmxlJywgJ2xvY2F0aW9uJykpCisgICAgICAg
ICAgICByZWdlbmVyYXRlX21hbmlmZXN0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5v
dGljZSgnSW52YWxpZCBwYXJhbWV0ZXJzLicpOworICAgIH0gZWxzZSBpZiAoJGFjdGlvbiA9PSAn
dXBkYXRlLXJlcG9zaXRvcmllcycpIHsKKyAgICAgICAgJHRyaWdnZXJhYmxlX2lkID0gaW50dmFs
KCRfUE9TVFsnaWQnXSk7CisKKyAgICAgICAgJGRiLT5iZWdpbl90cmFuc2FjdGlvbigpOworICAg
ICAgICAkZGItPnF1ZXJ5X2FuZF9nZXRfYWZmZWN0ZWRfcm93cygiREVMRVRFIEZST00gdHJpZ2dl
cmFibGVfcmVwb3NpdG9yaWVzIFdIRVJFIHRyaWdyZXBvX3RyaWdnZXJhYmxlID0gJDEiLCBhcnJh
eSgkdHJpZ2dlcmFibGVfaWQpKTsKKworICAgICAgICAkcmVwb3NpdG9yaWVzID0gYXJyYXlfZ2V0
KCRfUE9TVCwgJ3JlcG9zaXRvcmllcycpOworICAgICAgICAkc3VjZWVkZWQgPSBUUlVFOworICAg
ICAgICBpZiAoJHJlcG9zaXRvcmllcykgeworICAgICAgICAgICAgZm9yZWFjaCAoJHJlcG9zaXRv
cmllcyBhcyAkcmVwb3NpdG9yeV9pZCkgeworICAgICAgICAgICAgICAgIGlmICghJGRiLT5pbnNl
cnRfcm93KCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMnLCAndHJpZ3JlcG8nLCBhcnJheSgndHJp
Z2dlcmFibGUnID0+ICR0cmlnZ2VyYWJsZV9pZCwgJ3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5
X2lkKSwgTlVMTCkpIHsKKyAgICAgICAgICAgICAgICAgICAgJHN1Y2VlZGVkID0gRkFMU0U7Cisg
ICAgICAgICAgICAgICAgICAgIG5vdGljZSgiRmFpbGVkIHRvIGFzc29jaWF0ZSByZXBvc2l0b3J5
ICRyZXBvc2l0b3J5X2lkIHdpdGggdHJpZ2dlcmFibGUgJHRyaWdnZXJhYmxlX2lkLiIpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRzdWNlZWRlZCkgeworICAgICAgICAgICAgJGRiLT5j
b21taXRfdHJhbnNhY3Rpb24oKTsKKyAgICAgICAgICAgIG5vdGljZSgnVXBkYXRlZCB0aGUgYXNz
b2NpYXRpb24uJyk7CisgICAgICAgICAgICByZWdlbmVyYXRlX21hbmlmZXN0KCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgJGRiLT5yb2xsYmFja190cmFuc2FjdGlvbigpOworICAgIH0K
KworICAgICRyZXBvc2l0b3J5X3Jvd3MgPSAkZGItPmZldGNoX3RhYmxlKCdyZXBvc2l0b3JpZXMn
LCAncmVwb3NpdG9yeV9uYW1lJyk7CisgICAgJHJlcG9zaXRvcnlfbmFtZXMgPSBhcnJheSgpOwor
CisKKyAgICAkcGFnZSA9IG5ldyBBZG1pbmlzdHJhdGl2ZVBhZ2UoJGRiLCAnYnVpbGRfdHJpZ2dl
cmFibGVzJywgJ3RyaWdnZXJhYmxlJywgYXJyYXkoCisgICAgICAgICduYW1lJyA9PiBhcnJheSgn
ZWRpdGluZ19tb2RlJyA9PiAnc3RyaW5nJyksCisgICAgICAgICdyZXBvc2l0b3JpZXMnID0+IGFy
cmF5KCdjdXN0b20nID0+IGZ1bmN0aW9uICgkdHJpZ2dlcmFibGVfcm93KSB1c2UgKCYkcmVwb3Np
dG9yeV9yb3dzKSB7CisgICAgICAgICAgICByZXR1cm4gYXJyYXkoZ2VuZXJhdGVfcmVwb3NpdG9y
eV9jaGVja2JveGVzKCR0cmlnZ2VyYWJsZV9yb3dbJ3RyaWdnZXJhYmxlX2lkJ10sICRyZXBvc2l0
b3J5X3Jvd3MpKTsKKyAgICAgICAgfSksCisgICAgKSk7CisKKyAgICBmdW5jdGlvbiBnZW5lcmF0
ZV9yZXBvc2l0b3J5X2NoZWNrYm94ZXMoJHRyaWdnZXJhYmxlX2lkLCAkcmVwb3NpdG9yeV9yb3dz
KSB7CisgICAgICAgIGdsb2JhbCAkZGI7CisKKyAgICAgICAgJHJlcG9zaXRvcnlfcm93cyA9ICRk
Yi0+cXVlcnlfYW5kX2ZldGNoX2FsbCgnU0VMRUNUICogRlJPTSByZXBvc2l0b3JpZXMgTEVGVCBP
VVRFUiBKT0lOIHRyaWdnZXJhYmxlX3JlcG9zaXRvcmllcworICAgICAgICAgICAgT04gdHJpZ3Jl
cG9fcmVwb3NpdG9yeSA9IHJlcG9zaXRvcnlfaWQgQU5EIHRyaWdyZXBvX3RyaWdnZXJhYmxlID0g
JDEgT1JERVIgQlkgcmVwb3NpdG9yeV9uYW1lJywgYXJyYXkoJHRyaWdnZXJhYmxlX2lkKSk7CisK
KyAgICAgICAgJGZvcm0gPSA8PDwgRU5ECis8Zm9ybSBtZXRob2Q9IlBPU1QiPgorPGlucHV0IHR5
cGU9ImhpZGRlbiIgbmFtZT0iaWQiIHZhbHVlPSIkdHJpZ2dlcmFibGVfaWQiPgorPGlucHV0IHR5
cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0idXBkYXRlLXJlcG9zaXRvcmllcyI+CitF
TkQ7CisKKyAgICAgICAgZm9yZWFjaCAoJHJlcG9zaXRvcnlfcm93cyBhcyAkcm93KSB7CisgICAg
ICAgICAgICAkY2hlY2tlZCA9ICRyb3dbJ3RyaWdyZXBvX3RyaWdnZXJhYmxlJ10gPyAnIGNoZWNr
ZWQnIDogJyc7CisgICAgICAgICAgICAkZm9ybSAuPSA8PDwgRU5ECis8bGFiZWw+PGlucHV0IHR5
cGU9ImNoZWNrYm94IiBuYW1lPSJyZXBvc2l0b3JpZXNbXSIgdmFsdWU9Inskcm93WydyZXBvc2l0
b3J5X2lkJ119IiRjaGVja2VkPnskcm93WydyZXBvc2l0b3J5X25hbWUnXX08L2xhYmVsPgorRU5E
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuICRmb3JtIC4gPDw8IEVORAorPGJ1dHRvbj5T
YXZlPC9idXR0b24+Cis8L2Zvcm0+CitFTkQ7CisgICAgfQorCisgICAgJHBhZ2UtPnJlbmRlcl90
YWJsZSgnbmFtZScpOworICAgICRwYWdlLT5yZW5kZXJfZm9ybV90b19hZGQoKTsKK30KKworcmVx
dWlyZSgnLi4vaW5jbHVkZS9hZG1pbi1mb290ZXIucGhwJyk7CisKKz8+CkluZGV4OiBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9idWlsZC1yZXF1ZXN0cy5waHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvYnVpbGQtcmVxdWVzdHMu
cGhwCShyZXZpc2lvbiAwKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkv
YnVpbGQtcmVxdWVzdHMucGhwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKzw/cGhw
CisKK3JlcXVpcmVfb25jZSgnLi4vaW5jbHVkZS9qc29uLWhlYWRlci5waHAnKTsKK3JlcXVpcmVf
b25jZSgnLi4vaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocCcpOworCitmdW5jdGlv
biBtYWluKCRwYXRoLCAkcG9zdF9kYXRhKSB7CisgICAgaWYgKGNvdW50KCRwYXRoKSA8IDEgfHwg
Y291bnQoJHBhdGgpID4gMikKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkUmVxdWVz
dCcpOworCisgICAgJGRiID0gbmV3IERhdGFiYXNlOworICAgIGlmICghJGRiLT5jb25uZWN0KCkp
CisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignRGF0YWJhc2VDb25uZWN0aW9uRmFpbHVyZScpOwor
CisgICAgJHRyaWdnZXJhYmxlX3F1ZXJ5ID0gYXJyYXkoJ25hbWUnID0+IGFycmF5X2dldCgkcGF0
aCwgMCkpOworICAgICR0cmlnZ2VyYWJsZSA9ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygnYnVpbGRf
dHJpZ2dlcmFibGVzJywgJ3RyaWdnZXJhYmxlJywgJHRyaWdnZXJhYmxlX3F1ZXJ5KTsKKyAgICBp
ZiAoISR0cmlnZ2VyYWJsZSkKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdUcmlnZ2VyYWJsZU5v
dEZvdW5kJywgJHRyaWdnZXJhYmxlX3F1ZXJ5KTsKKworICAgICRyZXBvcnQgPSAkcG9zdF9kYXRh
ID8ganNvbl9kZWNvZGUoJHBvc3RfZGF0YSwgdHJ1ZSkgOiBhcnJheSgpOworICAgICR1cGRhdGVz
ID0gYXJyYXlfZ2V0KCRyZXBvcnQsICdidWlsZFJlcXVlc3RVcGRhdGVzJyk7CisgICAgaWYgKCR1
cGRhdGVzKSB7CisgICAgICAgIHZlcmlmeV9zbGF2ZSgkZGIsICRyZXBvcnQpOworCisgICAgICAg
ICRkYi0+YmVnaW5fdHJhbnNhY3Rpb24oKTsKKyAgICAgICAgZm9yZWFjaCAoJHVwZGF0ZXMgYXMg
JGlkID0+ICRpbmZvKSB7CisgICAgICAgICAgICAkaWQgPSBpbnR2YWwoJGlkKTsKKyAgICAgICAg
ICAgICRzdGF0dXMgPSAkaW5mb1snc3RhdHVzJ107CisgICAgICAgICAgICAkdXJsID0gYXJyYXlf
Z2V0KCRpbmZvLCAndXJsJyk7CisgICAgICAgICAgICBpZiAoJHN0YXR1cyA9PSAnZmFpbGVkSWZO
b3RDb21wbGV0ZWQnKSB7CisgICAgICAgICAgICAgICAgJGRiLT5xdWVyeV9hbmRfZ2V0X2FmZmVj
dGVkX3Jvd3MoJ1VQREFURSBidWlsZF9yZXF1ZXN0cyBTRVQgKHJlcXVlc3Rfc3RhdHVzLCByZXF1
ZXN0X3VybCkgPSAoJDEsICQyKQorICAgICAgICAgICAgICAgICAgICBXSEVSRSByZXF1ZXN0X2lk
ID0gJDMgQU5EIHJlcXVlc3Rfc3RhdHVzICE9ICQxJywgYXJyYXkoJ2ZhaWxlZCcsICR1cmwsICRp
ZCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIWluX2FycmF5
KCRzdGF0dXMsIGFycmF5KCdwZW5kaW5nJywgJ3NjaGVkdWxlZCcsICdydW5uaW5nJywgJ2ZhaWxl
ZCcsICdjb21wbGV0ZWQnKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgJGRiLT5yb2xsYmFja190
cmFuc2FjdGlvbigpOworICAgICAgICAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ1Vua25v
d25CdWlsZFJlcXVlc3RTdGF0dXMnLCBhcnJheSgnYnVpbGRSZXF1ZXN0JyA9PiAkaWQsICdzdGF0
dXMnID0+ICRzdGF0dXMpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgJGRi
LT51cGRhdGVfcm93KCdidWlsZF9yZXF1ZXN0cycsICdyZXF1ZXN0JywgYXJyYXkoJ2lkJyA9PiAk
aWQpLCBhcnJheSgnc3RhdHVzJyA9PiAkc3RhdHVzLCAndXJsJyA9PiAkdXJsKSk7CisgICAgICAg
ICAgICB9IAorICAgICAgICB9CisgICAgICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9uKCk7Cisg
ICAgfQorCisgICAgJHJlcXVlc3RzX2ZldGNoZXIgPSBuZXcgQnVpbGRSZXF1ZXN0c0ZldGNoZXIo
JGRiKTsKKyAgICAkcmVxdWVzdHNfZmV0Y2hlci0+ZmV0Y2hfaW5jb21wbGV0ZV9yZXF1ZXN0c19m
b3JfdHJpZ2dlcmFibGUoJHRyaWdnZXJhYmxlWyd0cmlnZ2VyYWJsZV9pZCddKTsKKworICAgIGV4
aXRfd2l0aF9zdWNjZXNzKGFycmF5KAorICAgICAgICAnYnVpbGRSZXF1ZXN0cycgPT4gJHJlcXVl
c3RzX2ZldGNoZXItPnJlc3VsdHNfd2l0aF9yZXNvbHZlZF9pZHMoKSwKKyAgICAgICAgJ3Jvb3RT
ZXRzJyA9PiAkcmVxdWVzdHNfZmV0Y2hlci0+cm9vdF9zZXRzKCksCisgICAgICAgICd1cGRhdGVz
JyA9PiAkdXBkYXRlcywKKyAgICApKTsKK30KKworbWFpbihhcnJheV9rZXlfZXhpc3RzKCdQQVRI
X0lORk8nLCAkX1NFUlZFUikgPyBleHBsb2RlKCcvJywgdHJpbSgkX1NFUlZFUlsnUEFUSF9JTkZP
J10sICcvJykpIDogYXJyYXkoKSwKKyAgICBmaWxlX2dldF9jb250ZW50cygicGhwOi8vaW5wdXQi
KSk7CisKKz8+CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9ydW5z
LnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9y
dW5zLnBocAkocmV2aXNpb24gMTc4MjI3KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy9hcGkvcnVucy5waHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgZnVuY3Rp
b24gZmV0Y2hfcnVuc19mb3JfY29uZmlnKCRkYiwgJGNvbgogICAgICAgICAgICAgRlJPTSBidWls
ZHMKICAgICAgICAgICAgICAgICBMRUZUIE9VVEVSIEpPSU4gYnVpbGRfY29tbWl0cyBPTiBjb21t
aXRfYnVpbGQgPSBidWlsZF9pZAogICAgICAgICAgICAgICAgIExFRlQgT1VURVIgSk9JTiBjb21t
aXRzIE9OIGJ1aWxkX2NvbW1pdCA9IGNvbW1pdF9pZCwgdGVzdF9ydW5zCi0gICAgICAgICAgICBX
SEVSRSBydW5fYnVpbGQgPSBidWlsZF9pZCBBTkQgcnVuX2NvbmZpZyA9ICQxCisgICAgICAgICAg
ICBXSEVSRSBydW5fYnVpbGQgPSBidWlsZF9pZCBBTkQgcnVuX2NvbmZpZyA9ICQxIEFORCBOT1Qg
RVhJU1RTIChTRUxFQ1QgKiBGUk9NIGJ1aWxkX3JlcXVlc3RzIFdIRVJFIHJlcXVlc3RfYnVpbGQg
PSBidWlsZF9pZCkKICAgICAgICAgICAgIEdST1VQIEJZIGJ1aWxkX2lkLCBydW5faWQnLCBhcnJh
eSgkY29uZmlnWydjb25maWdfaWQnXSkpOwogCiAgICAgJGZvcm1hdHRlZF9ydW5zID0gYXJyYXko
KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL3Rlc3QtZ3JvdXBz
LnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS90
ZXN0LWdyb3Vwcy5waHAJKHJldmlzaW9uIDE3ODIyNykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDcgQEAKIDw/cGhwCiAKLXJlcXVpcmUoJy4uL2luY2x1ZGUvanNvbi1oZWFkZXIucGhwJyk7City
ZXF1aXJlX29uY2UoJy4uL2luY2x1ZGUvanNvbi1oZWFkZXIucGhwJyk7CityZXF1aXJlX29uY2Uo
Jy4uL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAnKTsKIAogZnVuY3Rpb24gbWFp
bigkcGF0aCkgewogICAgICRkYiA9IG5ldyBEYXRhYmFzZTsKQEAgLTEwLDI0ICsxMSwyNiBAQCBm
dW5jdGlvbiBtYWluKCRwYXRoKSB7CiAgICAgaWYgKGNvdW50KCRwYXRoKSA+IDEpCiAgICAgICAg
IGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFJlcXVlc3QnKTsKIAorICAgICRidWlsZF9yZXF1ZXN0
c19mZXRjaGVyID0gbmV3IEJ1aWxkUmVxdWVzdHNGZXRjaGVyKCRkYik7CisKICAgICBpZiAoY291
bnQoJHBhdGgpID4gMCAmJiAkcGF0aFswXSkgewogICAgICAgICAkZ3JvdXBfaWQgPSBpbnR2YWwo
JHBhdGhbMF0pOwogICAgICAgICAkZ3JvdXAgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2FuYWx5
c2lzX3Rlc3RfZ3JvdXBzJywgJ3Rlc3Rncm91cCcsIGFycmF5KCdpZCcgPT4gJGdyb3VwX2lkKSk7
CiAgICAgICAgIGlmICghJGdyb3VwKQogICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdHcm91
cE5vdEZvdW5kJywgYXJyYXkoJ2lkJyA9PiAkZ3JvdXBfaWQpKTsKICAgICAgICAgJHRlc3RfZ3Jv
dXBzID0gYXJyYXkoJGdyb3VwKTsKLSAgICAgICAgJGJ1aWxkX3JlcXVlc3RzID0gZmV0Y2hfYnVp
bGRfcmVxdWVzdHNfZm9yX2dyb3VwKCRkYiwgJGdyb3VwX2lkKTsKKyAgICAgICAgJGJ1aWxkX3Jl
cXVlc3RzX2ZldGNoZXItPmZldGNoX2Zvcl9ncm91cCgkZ3JvdXBfaWQpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgICR0YXNrX2lkID0gYXJyYXlfZ2V0KCRfR0VULCAndGFzaycpOwogICAgICAgICBp
ZiAoISR0YXNrX2lkKQogICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdUYXNrSWROb3RTcGVj
aWZpZWQnKTsKIAotICAgICAgICAkdGVzdF9ncm91cHMgPSBmZXRjaF90ZXN0X2dyb3Vwc19mb3Jf
dGFzaygkZGIsICR0YXNrX2lkKTsKKyAgICAgICAgJHRlc3RfZ3JvdXBzID0gJGRiLT5zZWxlY3Rf
cm93cygnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCAndGVzdGdyb3VwJywgYXJyYXkoJ3Rhc2snID0+
ICR0YXNrX2lkKSk7CiAgICAgICAgIGlmICghaXNfYXJyYXkoJHRlc3RfZ3JvdXBzKSkKICAgICAg
ICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9GZXRjaFRlc3RHcm91cHMnKTsKLSAgICAg
ICAgJGJ1aWxkX3JlcXVlc3RzID0gZmV0Y2hfYnVpbGRfcmVxdWVzdHNfZm9yX3Rhc2soJGRiLCAk
dGFza19pZCk7CisgICAgICAgICRidWlsZF9yZXF1ZXN0c19mZXRjaGVyLT5mZXRjaF9mb3JfdGFz
aygkdGFza19pZCk7CiAgICAgfQotICAgIGlmICghaXNfYXJyYXkoJGJ1aWxkX3JlcXVlc3RzKSkK
KyAgICBpZiAoISRidWlsZF9yZXF1ZXN0c19mZXRjaGVyLT5oYXNfcmVzdWx0cygpKQogICAgICAg
ICBleGl0X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvRmV0Y2hCdWlsZFJlcXVlc3RzJyk7CiAKICAgICAk
dGVzdF9ncm91cHMgPSBhcnJheV9tYXAoImZvcm1hdF90ZXN0X2dyb3VwIiwgJHRlc3RfZ3JvdXBz
KTsKQEAgLTM1LDI5ICszOCwxMyBAQCBmdW5jdGlvbiBtYWluKCRwYXRoKSB7CiAgICAgZm9yZWFj
aCAoJHRlc3RfZ3JvdXBzIGFzICYkZ3JvdXApCiAgICAgICAgICRncm91cF9ieV9pZFskZ3JvdXBb
J2lkJ11dID0gJiRncm91cDsKIAotICAgICRidWlsZF9yZXF1ZXN0cyA9IGFycmF5X21hcCgiZm9y
bWF0X2J1aWxkX3JlcXVlc3QiLCAkYnVpbGRfcmVxdWVzdHMpOworICAgICRidWlsZF9yZXF1ZXN0
cyA9ICRidWlsZF9yZXF1ZXN0c19mZXRjaGVyLT5yZXN1bHRzKCk7CiAgICAgZm9yZWFjaCAoJGJ1
aWxkX3JlcXVlc3RzIGFzICRyZXF1ZXN0KQogICAgICAgICBhcnJheV9wdXNoKCRncm91cF9ieV9p
ZFskcmVxdWVzdFsndGVzdEdyb3VwJ11dWydidWlsZFJlcXVlc3RzJ10sICRyZXF1ZXN0WydpZCdd
KTsKIAogICAgIGV4aXRfd2l0aF9zdWNjZXNzKGFycmF5KCd0ZXN0R3JvdXBzJyA9PiAkdGVzdF9n
cm91cHMsICdidWlsZFJlcXVlc3RzJyA9PiAkYnVpbGRfcmVxdWVzdHMpKTsKIH0KIAotZnVuY3Rp
b24gZmV0Y2hfdGVzdF9ncm91cHNfZm9yX3Rhc2soJGRiLCAkdGFza19pZCkgewotICAgIHJldHVy
biAkZGItPnNlbGVjdF9yb3dzKCdhbmFseXNpc190ZXN0X2dyb3VwcycsICd0ZXN0Z3JvdXAnLCBh
cnJheSgndGFzaycgPT4gJHRhc2tfaWQpKTsKLX0KLQotZnVuY3Rpb24gZmV0Y2hfYnVpbGRfcmVx
dWVzdHNfZm9yX3Rhc2soJGRiLCAkdGFza19pZCkgewotICAgIHJldHVybiAkZGItPnF1ZXJ5X2Fu
ZF9mZXRjaF9hbGwoJ1NFTEVDVCAqIEZST00gYnVpbGRfcmVxdWVzdHMsIGJ1aWxkcwotICAgICAg
ICBXSEVSRSByZXF1ZXN0X2J1aWxkID0gYnVpbGRfaWQKLSAgICAgICAgICAgIEFORCByZXF1ZXN0
X2dyb3VwIElOIChTRUxFQ1QgdGVzdGdyb3VwX2lkIEZST00gYW5hbHlzaXNfdGVzdF9ncm91cHMg
V0hFUkUgdGVzdGdyb3VwX3Rhc2sgPSAkMSkKLSAgICAgICAgT1JERVIgQlkgcmVxdWVzdF9ncm91
cCwgcmVxdWVzdF9vcmRlcicsIGFycmF5KCR0YXNrX2lkKSk7Ci19Ci0KLWZ1bmN0aW9uIGZldGNo
X2J1aWxkX3JlcXVlc3RzX2Zvcl9ncm91cCgkZGIsICR0ZXN0X2dyb3VwX2lkKSB7Ci0gICAgcmV0
dXJuICRkYi0+cXVlcnlfYW5kX2ZldGNoX2FsbCgnU0VMRUNUICogRlJPTSBidWlsZF9yZXF1ZXN0
cywgYnVpbGRzCi0gICAgICAgIFdIRVJFIHJlcXVlc3RfYnVpbGQgPSBidWlsZF9pZCBBTkQgcmVx
dWVzdF9ncm91cCA9ICQxIE9SREVSIEJZIHJlcXVlc3Rfb3JkZXInLCBhcnJheSgkdGVzdF9ncm91
cF9pZCkpOwotfQotCiBmdW5jdGlvbiBmb3JtYXRfdGVzdF9ncm91cCgkZ3JvdXBfcm93KSB7CiAg
ICAgcmV0dXJuIGFycmF5KAogICAgICAgICAnaWQnID0+ICRncm91cF9yb3dbJ3Rlc3Rncm91cF9p
ZCddLApAQCAtNjksMTkgKzU2LDYgQEAgZnVuY3Rpb24gZm9ybWF0X3Rlc3RfZ3JvdXAoJGdyb3Vw
X3JvdykgewogICAgICk7CiB9CiAKLWZ1bmN0aW9uIGZvcm1hdF9idWlsZF9yZXF1ZXN0KCRyZXF1
ZXN0X3JvdykgewotICAgIHJldHVybiBhcnJheSgKLSAgICAgICAgJ2lkJyA9PiAkcmVxdWVzdF9y
b3dbJ3JlcXVlc3RfaWQnXSwKLSAgICAgICAgJ3Rlc3RHcm91cCcgPT4gJHJlcXVlc3Rfcm93Wydy
ZXF1ZXN0X2dyb3VwJ10sCi0gICAgICAgICdvcmRlcicgPT4gJHJlcXVlc3Rfcm93WydyZXF1ZXN0
X29yZGVyJ10sCi0gICAgICAgICdyb290U2V0JyA9PiAkcmVxdWVzdF9yb3dbJ3JlcXVlc3Rfcm9v
dF9zZXQnXSwKLSAgICAgICAgJ2J1aWxkJyA9PiAkcmVxdWVzdF9yb3dbJ3JlcXVlc3RfYnVpbGQn
XSwKLSAgICAgICAgJ2J1aWxkZXInID0+ICRyZXF1ZXN0X3Jvd1snYnVpbGRfYnVpbGRlciddLAot
ICAgICAgICAnYnVpbGROdW1iZXInID0+ICRyZXF1ZXN0X3Jvd1snYnVpbGRfbnVtYmVyJ10sCi0g
ICAgICAgICdidWlsZFRpbWUnID0+ICRyZXF1ZXN0X3Jvd1snYnVpbGRfdGltZSddID8gc3RydG90
aW1lKCRyZXF1ZXN0X3Jvd1snYnVpbGRfdGltZSddKSAqIDEwMDAgOiBOVUxMLAotICAgICk7Ci19
Ci0KIG1haW4oYXJyYXlfa2V5X2V4aXN0cygnUEFUSF9JTkZPJywgJF9TRVJWRVIpID8gZXhwbG9k
ZSgnLycsIHRyaW0oJF9TRVJWRVJbJ1BBVEhfSU5GTyddLCAnLycpKSA6IGFycmF5KCkpOwogCiA/
PgpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvdHJpZ2dlcmFibGVz
LnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS90
cmlnZ2VyYWJsZXMucGhwCShyZXZpc2lvbiAwKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9hcGkvdHJpZ2dlcmFibGVzLnBocAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0
IEBACis8P3BocAorCityZXF1aXJlKCcuLi9pbmNsdWRlL2pzb24taGVhZGVyLnBocCcpOworCitm
dW5jdGlvbiBtYWluKCRwYXRoKSB7CisgICAgaWYgKGNvdW50KCRwYXRoKSA+IDEpCisgICAgICAg
IGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFJlcXVlc3QnKTsKKworICAgICRkYiA9IG5ldyBEYXRh
YmFzZTsKKyAgICBpZiAoISRkYi0+Y29ubmVjdCgpKQorICAgICAgICBleGl0X3dpdGhfZXJyb3Io
J0RhdGFiYXNlQ29ubmVjdGlvbkZhaWx1cmUnKTsKKworICAgICR0YXNrX2lkID0gYXJyYXlfZ2V0
KCRfR0VULCAndGFzaycpOworICAgICRxdWVyeSA9IGFycmF5KCk7CisgICAgaWYgKCR0YXNrX2lk
KSB7CisgICAgICAgICR0cmlnZ2VyYWJsZSA9IGZpbmRfdHJpZ2dlcmFibGVfZm9yX3Rhc2soJGRi
LCAkdGFza19pZCk7CisgICAgICAgIGlmICghJHRyaWdnZXJhYmxlKQorICAgICAgICAgICAgZXhp
dF93aXRoX2Vycm9yKCdUcmlnZ2VyYWJsZU5vdEZvdW5kRm9yVGFzaycsIGFycmF5KCd0YXNrJyA9
PiAkdGFza19pZCkpOworICAgICAgICAkcXVlcnlbJ2lkJ10gPSAkdHJpZ2dlcmFibGVbJ2lkJ107
CisgICAgfQorCisgICAgJGlkX3RvX3RyaWdnZXJhYmxlID0gYXJyYXkoKTsKKyAgICBmb3JlYWNo
ICgkZGItPnNlbGVjdF9yb3dzKCdidWlsZF90cmlnZ2VyYWJsZXMnLCAndHJpZ2dlcmFibGUnLCAk
cXVlcnkpIGFzICRyb3cpIHsKKyAgICAgICAgJGlkID0gJHJvd1sndHJpZ2dlcmFibGVfaWQnXTsK
KyAgICAgICAgJHJlcG9zaXRvcmllcyA9IGFycmF5KCk7CisgICAgICAgICRpZF90b190cmlnZ2Vy
YWJsZVskaWRdID0gYXJyYXkoJ2lkJyA9PiAkaWQsICduYW1lJyA9PiAkcm93Wyd0cmlnZ2VyYWJs
ZV9uYW1lJ10sICdhY2NlcHRlZFJlcG9zaXRvcmllcycgPT4gJiRyZXBvc2l0b3JpZXMpOworICAg
IH0KKworICAgICRyZXBvc2l0b3J5X2lkX3RvX25hbWUgPSBhcnJheSgpOworICAgIGZvcmVhY2gg
KCRkYi0+c2VsZWN0X3Jvd3MoJ3JlcG9zaXRvcmllcycsICdyZXBvc2l0b3J5JywgYXJyYXkoKSwg
J25hbWUnKSBhcyAkcm93KQorICAgICAgICAkcmVwb3NpdG9yeV9pZF90b19uYW1lWyRyb3dbJ3Jl
cG9zaXRvcnlfaWQnXV0gPSAkcm93WydyZXBvc2l0b3J5X25hbWUnXTsKKworICAgIGZvcmVhY2gg
KCRkYi0+c2VsZWN0X3Jvd3MoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcmllcycsICd0cmlncmVwbycs
IGFycmF5KCkpIGFzICRyb3cpIHsKKyAgICAgICAgJHRyaWdnZXJhYmxlID0gJGlkX3RvX3RyaWdn
ZXJhYmxlWyRyb3dbJ3RyaWdyZXBvX3RyaWdnZXJhYmxlJ11dOworICAgICAgICBpZiAoJHRyaWdn
ZXJhYmxlKQorICAgICAgICAgICAgYXJyYXlfcHVzaCgkdHJpZ2dlcmFibGVbJ2FjY2VwdGVkUmVw
b3NpdG9yaWVzJ10sICRyZXBvc2l0b3J5X2lkX3RvX25hbWVbJHJvd1sndHJpZ3JlcG9fcmVwb3Np
dG9yeSddXSk7CisgICAgfQorCisgICAgZXhpdF93aXRoX3N1Y2Nlc3MoYXJyYXkoJ3RyaWdnZXJh
YmxlcycgPT4gYXJyYXlfdmFsdWVzKCRpZF90b190cmlnZ2VyYWJsZSkpKTsKK30KKworbWFpbihh
cnJheV9rZXlfZXhpc3RzKCdQQVRIX0lORk8nLCAkX1NFUlZFUikgPyBleHBsb2RlKCcvJywgdHJp
bSgkX1NFUlZFUlsnUEFUSF9JTkZPJ10sICcvJykpIDogYXJyYXkoKSk7CisKKz8+CkluZGV4OiBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvYWRtaW4taGVhZGVyLnBocAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvYWRt
aW4taGVhZGVyLnBocAkocmV2aXNpb24gMTc4MjI3KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy9pbmNsdWRlL2FkbWluLWhlYWRlci5waHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
LDYgKzE5LDcgQEAgcmVxdWlyZV9vbmNlKCdtYW5pZmVzdC5waHAnKTsKICAgICA8bGk+PGEgaHJl
Zj0iL2FkbWluL2FnZ3JlZ2F0b3JzIj5BZ2dyZWdhdG9yczwvYT48L2xpPgogICAgIDxsaT48YSBo
cmVmPSIvYWRtaW4vYnVpbGRlcnMiPkJ1aWxkZXJzPC9hPjwvbGk+CiAgICAgPGxpPjxhIGhyZWY9
Ii9hZG1pbi9idWlsZC1zbGF2ZXMiPlNsYXZlczwvYT48L2xpPgorICAgIDxsaT48YSBocmVmPSIv
YWRtaW4vdHJpZ2dlcmFibGVzIj5UcmlnZ2VyYWJsZXM8L2E+PC9saT4KICAgICA8bGk+PGEgaHJl
Zj0iL2FkbWluL3JlcG9zaXRvcmllcyI+UmVwb3NpdG9yaWVzPC9hPjwvbGk+CiAgICAgPGxpPjxh
IGhyZWY9Ii9hZG1pbi9idWctdHJhY2tlcnMiPkJ1ZyBUcmFja2VyczwvYT48L2xpPgogPC91bD4K
SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1
ZXN0cy1mZXRjaGVyLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAJKHJldmlzaW9uIDApCisr
KyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMt
ZmV0Y2hlci5waHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OSBAQAorPD9waHAKKworcmVx
dWlyZV9vbmNlKCd0ZXN0LXBhdGgtcmVzb2x2ZXIucGhwJyk7CisKK2NsYXNzIEJ1aWxkUmVxdWVz
dHNGZXRjaGVyIHsKKyAgICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZGIpIHsKKyAgICAgICAgJHRo
aXMtPmRiID0gJGRiOworICAgICAgICAkdGhpcy0+cm93cyA9IG51bGw7CisgICAgICAgICR0aGlz
LT5yb290X3NldHNfYnlfaWQgPSBhcnJheSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZldGNo
X2Zvcl90YXNrKCR0YXNrX2lkKSB7CisgICAgICAgICR0aGlzLT5yb3dzID0gJHRoaXMtPmRiLT5x
dWVyeV9hbmRfZmV0Y2hfYWxsKCdTRUxFQ1QgKgorICAgICAgICAgICAgRlJPTSBidWlsZF9yZXF1
ZXN0cyBMRUZUIE9VVEVSIEpPSU4gYnVpbGRzIE9OIHJlcXVlc3RfYnVpbGQgPSBidWlsZF9pZCwg
YW5hbHlzaXNfdGVzdF9ncm91cHMKKyAgICAgICAgICAgIFdIRVJFIHJlcXVlc3RfZ3JvdXAgPSB0
ZXN0Z3JvdXBfaWQgQU5EIHRlc3Rncm91cF90YXNrID0gJDEKKyAgICAgICAgICAgIE9SREVSIEJZ
IHJlcXVlc3RfZ3JvdXAsIHJlcXVlc3Rfb3JkZXInLCBhcnJheSgkdGFza19pZCkpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGZldGNoX2Zvcl9ncm91cCgkdGVzdF9ncm91cF9pZCkgeworICAgICAg
ICAkdGhpcy0+cm93cyA9ICR0aGlzLT5kYi0+cXVlcnlfYW5kX2ZldGNoX2FsbCgnU0VMRUNUICoK
KyAgICAgICAgICAgIEZST00gYnVpbGRfcmVxdWVzdHMgTEVGVCBPVVRFUiBKT0lOIGJ1aWxkcyBP
TiByZXF1ZXN0X2J1aWxkID0gYnVpbGRfaWQKKyAgICAgICAgICAgIFdIRVJFIHJlcXVlc3RfZ3Jv
dXAgPSAkMSBPUkRFUiBCWSByZXF1ZXN0X29yZGVyJywgYXJyYXkoJHRlc3RfZ3JvdXBfaWQpKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBmZXRjaF9pbmNvbXBsZXRlX3JlcXVlc3RzX2Zvcl90cmln
Z2VyYWJsZSgkdHJpZ2dlcmFibGVfaWQpIHsKKyAgICAgICAgJHRoaXMtPnJvd3MgPSAkdGhpcy0+
ZGItPnF1ZXJ5X2FuZF9mZXRjaF9hbGwoJ1NFTEVDVCAqIEZST00gYnVpbGRfcmVxdWVzdHMKKyAg
ICAgICAgICAgIFdIRVJFIHJlcXVlc3RfdHJpZ2dlcmFibGUgPSAkMSBBTkQgcmVxdWVzdF9zdGF0
dXMgIT0gXCdjb21wbGV0ZWRcJworICAgICAgICAgICAgT1JERVIgQlkgcmVxdWVzdF9jcmVhdGVk
X2F0LCByZXF1ZXN0X2dyb3VwLCByZXF1ZXN0X29yZGVyJywgYXJyYXkoJHRyaWdnZXJhYmxlX2lk
KSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gaGFzX3Jlc3VsdHMoKSB7IHJldHVybiBpc19hcnJh
eSgkdGhpcy0+cm93cyk7IH0KKyAgICBmdW5jdGlvbiByZXN1bHRzKCkgeyByZXR1cm4gJHRoaXMt
PnJlc3VsdHNfaW50ZXJuYWwoZmFsc2UpOyB9CisgICAgZnVuY3Rpb24gcmVzdWx0c193aXRoX3Jl
c29sdmVkX2lkcygpIHsgcmV0dXJuICR0aGlzLT5yZXN1bHRzX2ludGVybmFsKHRydWUpOyB9CisK
KyAgICBwcml2YXRlIGZ1bmN0aW9uIHJlc3VsdHNfaW50ZXJuYWwoJHJlc29sdmVfaWRzKSB7Cisg
ICAgICAgIGlmICghJHRoaXMtPnJvd3MpCisgICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKKwor
ICAgICAgICAkaWRfdG9fcGxhdGZvcm1fbmFtZSA9IGFycmF5KCk7CisgICAgICAgIGlmICgkcmVz
b2x2ZV9pZHMpIHsKKyAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5kYi0+c2VsZWN0X3Jvd3Mo
J3BsYXRmb3JtcycsICdwbGF0Zm9ybScsIGFycmF5KCkpIGFzICRwbGF0Zm9ybSkKKyAgICAgICAg
ICAgICAgICAkaWRfdG9fcGxhdGZvcm1fbmFtZVskcGxhdGZvcm1bJ3BsYXRmb3JtX2lkJ11dID0g
JHBsYXRmb3JtWydwbGF0Zm9ybV9uYW1lJ107CisgICAgICAgIH0KKyAgICAgICAgJHRlc3RfcGF0
aF9yZXNvbHZlciA9IG5ldyBUZXN0UGF0aFJlc29sdmVyKCR0aGlzLT5kYik7CisKKyAgICAgICAg
JHJlcXVlc3RzID0gYXJyYXkoKTsKKyAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnJvd3MgYXMgJHJv
dykgeworICAgICAgICAgICAgJHRlc3RfaWQgPSAkcm93WydyZXF1ZXN0X3Rlc3QnXTsKKyAgICAg
ICAgICAgICRwbGF0Zm9ybV9pZCA9ICRyb3dbJ3JlcXVlc3RfcGxhdGZvcm0nXTsKKyAgICAgICAg
ICAgICRyb290X3NldF9pZCA9ICRyb3dbJ3JlcXVlc3Rfcm9vdF9zZXQnXTsKKworICAgICAgICAg
ICAgaWYgKCFhcnJheV9rZXlfZXhpc3RzKCRyb290X3NldF9pZCwgJHRoaXMtPnJvb3Rfc2V0c19i
eV9pZCkpCisgICAgICAgICAgICAgICAgJHRoaXMtPnJvb3Rfc2V0c19ieV9pZFskcm9vdF9zZXRf
aWRdID0gJHRoaXMtPmZldGNoX3Jvb3RzX2Zvcl9zZXQoJHJvb3Rfc2V0X2lkKTsKKworICAgICAg
ICAgICAgYXJyYXlfcHVzaCgkcmVxdWVzdHMsIGFycmF5KAorICAgICAgICAgICAgICAgICdpZCcg
PT4gJHJvd1sncmVxdWVzdF9pZCddLAorICAgICAgICAgICAgICAgICd0cmlnZ2VyYWJsZScgPT4g
JHJvd1sncmVxdWVzdF90cmlnZ2VyYWJsZSddLAorICAgICAgICAgICAgICAgICd0ZXN0JyA9PiAk
cmVzb2x2ZV9pZHMgPyAkdGVzdF9wYXRoX3Jlc29sdmVyLT5wYXRoX2Zvcl90ZXN0KCR0ZXN0X2lk
KSA6ICR0ZXN0X2lkLAorICAgICAgICAgICAgICAgICdwbGF0Zm9ybScgPT4gJHJlc29sdmVfaWRz
ID8gJGlkX3RvX3BsYXRmb3JtX25hbWVbJHBsYXRmb3JtX2lkXSA6ICRwbGF0Zm9ybV9pZCwKKyAg
ICAgICAgICAgICAgICAndGVzdEdyb3VwJyA9PiAkcm93WydyZXF1ZXN0X2dyb3VwJ10sCisgICAg
ICAgICAgICAgICAgJ29yZGVyJyA9PiAkcm93WydyZXF1ZXN0X29yZGVyJ10sCisgICAgICAgICAg
ICAgICAgJ3Jvb3RTZXQnID0+ICRyb290X3NldF9pZCwKKyAgICAgICAgICAgICAgICAnc3RhdHVz
JyA9PiAkcm93WydyZXF1ZXN0X3N0YXR1cyddLAorICAgICAgICAgICAgICAgICd1cmwnID0+ICRy
b3dbJ3JlcXVlc3RfdXJsJ10sCisgICAgICAgICAgICAgICAgJ2J1aWxkJyA9PiAkcm93WydyZXF1
ZXN0X2J1aWxkJ10sCisgICAgICAgICAgICAgICAgJ2NyZWF0ZWRBdCcgPT4gJHJvd1sncmVxdWVz
dF9jcmVhdGVkX2F0J10gPyBzdHJ0b3RpbWUoJHJvd1sncmVxdWVzdF9jcmVhdGVkX2F0J10pICog
MTAwMCA6IE5VTEwsCisgICAgICAgICAgICApKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
JHJlcXVlc3RzOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJvb3Rfc2V0cygpIHsKKyAgICAgICAg
cmV0dXJuICR0aGlzLT5yb290X3NldHNfYnlfaWQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBmdW5j
dGlvbiBmZXRjaF9yb290c19mb3Jfc2V0KCRyb290X3NldF9pZCkgeworICAgICAgICAkcm9vdF9y
b3dzID0gJHRoaXMtPmRiLT5xdWVyeV9hbmRfZmV0Y2hfYWxsKCdTRUxFQ1QgKgorICAgICAgICAg
ICAgRlJPTSByb290cywgY29tbWl0cyBMRUZUIE9VVEVSIEpPSU4gcmVwb3NpdG9yaWVzIE9OIGNv
bW1pdF9yZXBvc2l0b3J5ID0gcmVwb3NpdG9yeV9pZAorICAgICAgICAgICAgV0hFUkUgcm9vdF9j
b21taXQgPSBjb21taXRfaWQgQU5EIHJvb3Rfc2V0ID0gJDEnLCBhcnJheSgkcm9vdF9zZXRfaWQp
KTsKKworICAgICAgICAkcm9vdHMgPSBhcnJheSgpOworICAgICAgICBmb3JlYWNoICgkcm9vdF9y
b3dzIGFzICRyb3cpCisgICAgICAgICAgICAkcm9vdHNbJHJvd1sncmVwb3NpdG9yeV9uYW1lJ11d
ID0gJHJvd1snY29tbWl0X3JldmlzaW9uJ107CisKKyAgICAgICAgcmV0dXJuICRyb290czsKKyAg
ICB9Cit9CisKKz8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2RiLnBocAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvZGIucGhwCShyZXZpc2lvbiAxNzgy
MjcpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvZGIucGhwCSh3
b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIERhdGFiYXNlCiAgICAgfQogCiAg
ICAgcHJpdmF0ZSBmdW5jdGlvbiBwcmVmaXhlZF9jb2x1bW5fbmFtZXMoJGNvbHVtbnMsICRwcmVm
aXggPSBOVUxMKSB7Ci0gICAgICAgIGlmICghJHByZWZpeCkKKyAgICAgICAgaWYgKCEkcHJlZml4
IHx8ICEkY29sdW1ucykKICAgICAgICAgICAgIHJldHVybiBqb2luKCcsICcsICRjb2x1bW5zKTsK
ICAgICAgICAgcmV0dXJuICRwcmVmaXggLiAnXycgLiBqb2luKCcsICcgLiAkcHJlZml4IC4gJ18n
LCAkY29sdW1ucyk7CiAgICAgfQpAQCAtOTYsMjQgKzk2LDI5IEBAIGNsYXNzIERhdGFiYXNlCiAg
ICAgICAgICRjb2x1bW5fbmFtZXMgPSAkdGhpcy0+cHJlZml4ZWRfY29sdW1uX25hbWVzKCRjb2x1
bW5fbmFtZXMsICRwcmVmaXgpOwogICAgICAgICAkcGxhY2Vob2xkZXJzID0gam9pbignLCAnLCAk
cGxhY2Vob2xkZXJzKTsKIAorICAgICAgICAkdmFsdWVfcXVlcnkgPSAkY29sdW1uX25hbWVzID8g
IigkY29sdW1uX25hbWVzKSBWQUxVRVMgKCRwbGFjZWhvbGRlcnMpIiA6ICcgVkFMVUVTIChkZWZh
dWx0KSc7CiAgICAgICAgIGlmICgkcmV0dXJuaW5nKSB7CiAgICAgICAgICAgICAkcmV0dXJuaW5n
X2NvbHVtbl9uYW1lID0gJHRoaXMtPnByZWZpeGVkX25hbWUoJHJldHVybmluZywgJHByZWZpeCk7
Ci0gICAgICAgICAgICAkcm93cyA9ICR0aGlzLT5xdWVyeV9hbmRfZmV0Y2hfYWxsKCJJTlNFUlQg
SU5UTyAkdGFibGUgKCRjb2x1bW5fbmFtZXMpIFZBTFVFUyAoJHBsYWNlaG9sZGVycykgUkVUVVJO
SU5HICRyZXR1cm5pbmdfY29sdW1uX25hbWUiLCAkdmFsdWVzKTsKKyAgICAgICAgICAgICRyb3dz
ID0gJHRoaXMtPnF1ZXJ5X2FuZF9mZXRjaF9hbGwoIklOU0VSVCBJTlRPICR0YWJsZSAkdmFsdWVf
cXVlcnkgUkVUVVJOSU5HICRyZXR1cm5pbmdfY29sdW1uX25hbWUiLCAkdmFsdWVzKTsKICAgICAg
ICAgICAgIHJldHVybiAkcm93cyA/ICRyb3dzWzBdWyRyZXR1cm5pbmdfY29sdW1uX25hbWVdIDog
TlVMTDsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiAkdGhpcy0+cXVlcnlfYW5kX2dldF9h
ZmZlY3RlZF9yb3dzKCJJTlNFUlQgSU5UTyAkdGFibGUgKCRjb2x1bW5fbmFtZXMpIFZBTFVFUyAo
JHBsYWNlaG9sZGVycykiLCAkdmFsdWVzKSA9PSAxOworICAgICAgICByZXR1cm4gJHRoaXMtPnF1
ZXJ5X2FuZF9nZXRfYWZmZWN0ZWRfcm93cygiSU5TRVJUIElOVE8gJHRhYmxlICR2YWx1ZV9xdWVy
eSIsICR2YWx1ZXMpID09IDE7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc2VsZWN0X29yX2luc2Vy
dF9yb3coJHRhYmxlLCAkcHJlZml4LCAkc2VsZWN0X3BhcmFtcywgJGluc2VydF9wYXJhbXMgPSBO
VUxMLCAkcmV0dXJuaW5nID0gJ2lkJykgewotICAgICAgICByZXR1cm4gJHRoaXMtPl9zZWxlY3Rf
dXBkYXRlX29yX2luc2VydF9yb3coJHRhYmxlLCAkcHJlZml4LCAkc2VsZWN0X3BhcmFtcywgJGlu
c2VydF9wYXJhbXMsICRyZXR1cm5pbmcsIEZBTFNFKTsKKyAgICAgICAgcmV0dXJuICR0aGlzLT5f
c2VsZWN0X3VwZGF0ZV9vcl9pbnNlcnRfcm93KCR0YWJsZSwgJHByZWZpeCwgJHNlbGVjdF9wYXJh
bXMsICRpbnNlcnRfcGFyYW1zLCAkcmV0dXJuaW5nLCBGQUxTRSwgVFJVRSk7CiAgICAgfQogCiAg
ICAgZnVuY3Rpb24gdXBkYXRlX29yX2luc2VydF9yb3coJHRhYmxlLCAkcHJlZml4LCAkc2VsZWN0
X3BhcmFtcywgJGluc2VydF9wYXJhbXMgPSBOVUxMLCAkcmV0dXJuaW5nID0gJ2lkJykgewotICAg
ICAgICByZXR1cm4gJHRoaXMtPl9zZWxlY3RfdXBkYXRlX29yX2luc2VydF9yb3coJHRhYmxlLCAk
cHJlZml4LCAkc2VsZWN0X3BhcmFtcywgJGluc2VydF9wYXJhbXMsICRyZXR1cm5pbmcsIFRSVUUp
OworICAgICAgICByZXR1cm4gJHRoaXMtPl9zZWxlY3RfdXBkYXRlX29yX2luc2VydF9yb3coJHRh
YmxlLCAkcHJlZml4LCAkc2VsZWN0X3BhcmFtcywgJGluc2VydF9wYXJhbXMsICRyZXR1cm5pbmcs
IFRSVUUsIFRSVUUpOwogICAgIH0KIAotICAgIHByaXZhdGUgZnVuY3Rpb24gX3NlbGVjdF91cGRh
dGVfb3JfaW5zZXJ0X3JvdygkdGFibGUsICRwcmVmaXgsICRzZWxlY3RfcGFyYW1zLCAkaW5zZXJ0
X3BhcmFtcywgJHJldHVybmluZywgJHNob3VsZF91cGRhdGUpIHsKKyAgICBmdW5jdGlvbiB1cGRh
dGVfcm93KCR0YWJsZSwgJHByZWZpeCwgJHNlbGVjdF9wYXJhbXMsICR1cGRhdGVfcGFyYW1zLCAk
cmV0dXJuaW5nID0gJ2lkJykgeworICAgICAgICByZXR1cm4gJHRoaXMtPl9zZWxlY3RfdXBkYXRl
X29yX2luc2VydF9yb3coJHRhYmxlLCAkcHJlZml4LCAkc2VsZWN0X3BhcmFtcywgJHVwZGF0ZV9w
YXJhbXMsICRyZXR1cm5pbmcsIFRSVUUsIEZBTFNFKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGZ1
bmN0aW9uIF9zZWxlY3RfdXBkYXRlX29yX2luc2VydF9yb3coJHRhYmxlLCAkcHJlZml4LCAkc2Vs
ZWN0X3BhcmFtcywgJGluc2VydF9wYXJhbXMsICRyZXR1cm5pbmcsICRzaG91bGRfdXBkYXRlLCAk
c2hvdWxkX2luc2VydCkgewogICAgICAgICAkdmFsdWVzID0gYXJyYXkoKTsKIAogICAgICAgICAk
c2VsZWN0X3BsYWNlaG9sZGVycyA9IGFycmF5KCk7CkBAIC0xNDEsNyArMTQ2LDcgQEAgY2xhc3Mg
RGF0YWJhc2UKICAgICAgICAgICAgICRyb3dzID0gJHRoaXMtPnF1ZXJ5X2FuZF9mZXRjaF9hbGwo
IlVQREFURSAkdGFibGUgU0VUICgkaW5zZXJ0X2NvbHVtbl9uYW1lcykgPSAoJGluc2VydF9wbGFj
ZWhvbGRlcnMpCiAgICAgICAgICAgICAgICAgV0hFUkUgKCRzZWxlY3RfY29sdW1uX25hbWVzKSA9
ICgkc2VsZWN0X3BsYWNlaG9sZGVycykgUkVUVVJOSU5HICRyZXR1cm5pbmdfY29sdW1uX25hbWUi
LCAkdmFsdWVzKTsKICAgICAgICAgfQotICAgICAgICBpZiAoISRyb3dzKSB7CisgICAgICAgIGlm
ICghJHJvd3MgJiYgJHNob3VsZF9pbnNlcnQpIHsKICAgICAgICAgICAgICRyb3dzID0gJHRoaXMt
PnF1ZXJ5X2FuZF9mZXRjaF9hbGwoIklOU0VSVCBJTlRPICR0YWJsZSAoJGluc2VydF9jb2x1bW5f
bmFtZXMpIFNFTEVDVCAkaW5zZXJ0X3BsYWNlaG9sZGVycwogICAgICAgICAgICAgICAgIFdIRVJF
IE5PVCBFWElTVFMgKCRxdWVyeSkgUkVUVVJOSU5HICRyZXR1cm5pbmdfY29sdW1uX25hbWUiLCAk
dmFsdWVzKTsgICAgICAgICAgICAKICAgICAgICAgfQpAQCAtMTcxLDYgKzE3Niw4IEBAIGNsYXNz
IERhdGFiYXNlCiAgICAgICAgICR2YWx1ZXMgPSBhcnJheSgpOwogICAgICAgICAkY29sdW1uX25h
bWVzID0gJHRoaXMtPnByZWZpeGVkX2NvbHVtbl9uYW1lcygkdGhpcy0+cHJlcGFyZV9wYXJhbXMo
JHBhcmFtcywgJHBsYWNlaG9sZGVycywgJHZhbHVlcyksICRwcmVmaXgpOwogICAgICAgICAkcGxh
Y2Vob2xkZXJzID0gam9pbignLCAnLCAkcGxhY2Vob2xkZXJzKTsKKyAgICAgICAgaWYgKCEkY29s
dW1uX25hbWVzICYmICEkcGxhY2Vob2xkZXJzKQorICAgICAgICAgICAgJGNvbHVtbl9uYW1lcyA9
ICRwbGFjZWhvbGRlcnMgPSAnMSc7CiAgICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICR0
YWJsZSBXSEVSRSAoJGNvbHVtbl9uYW1lcykgPSAoJHBsYWNlaG9sZGVycykiOwogICAgICAgICBp
ZiAoJG9yZGVyX2J5KSB7CiAgICAgICAgICAgICBhc3NlcnQoY3R5cGVfYWxudW1fdW5kZXJzY29y
ZSgkb3JkZXJfYnkpKTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5j
bHVkZS9qc29uLWhlYWRlci5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy9pbmNsdWRlL2pzb24taGVhZGVyLnBocAkocmV2aXNpb24gMTc4MjI3KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2pzb24taGVhZGVyLnBocAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIDw/cGhwCiAKIHJlcXVpcmVfb25jZSgnZGIu
cGhwJyk7CityZXF1aXJlX29uY2UoJ3Rlc3QtcGF0aC1yZXNvbHZlci5waHAnKTsKIAogaGVhZGVy
KCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2pzb24nKTsKIApAQCAtMTIyLDQgKzEyMywzNiBA
QCBmdW5jdGlvbiB2ZXJpZnlfc2xhdmUoJGRiLCAkcGFyYW1zKSB7CiAgICAgICAgIGV4aXRfd2l0
aF9lcnJvcignU2xhdmVOb3RGb3VuZCcsIGFycmF5KCduYW1lJyA9PiAkc2xhdmVfaW5mb1snbmFt
ZSddKSk7CiB9CiAKK2Z1bmN0aW9uIGZpbmRfdHJpZ2dlcmFibGVfZm9yX3Rhc2soJGRiLCAkdGFz
a19pZCkgeworICAgICR0YXNrX2lkID0gaW50dmFsKCR0YXNrX2lkKTsKKworICAgICR0ZXN0X3Jv
d3MgPSAkZGItPnF1ZXJ5X2FuZF9mZXRjaF9hbGwoJ1NFTEVDVCBtZXRyaWNfdGVzdCBBUyAidGVz
dCIsIHRhc2tfcGxhdGZvcm0gYXMgInBsYXRmb3JtIgorICAgICAgICBGUk9NIGFuYWx5c2lzX3Rh
c2tzIEpPSU4gdGVzdF9tZXRyaWNzIE9OIHRhc2tfbWV0cmljID0gbWV0cmljX2lkIFdIRVJFIHRh
c2tfaWQgPSAkMScsIGFycmF5KCR0YXNrX2lkKSk7CisgICAgaWYgKCEkdGVzdF9yb3dzKQorICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICAkdGFyZ2V0X3Rlc3RfaWQgPSAkdGVzdF9yb3dzWzBdWyd0
ZXN0J107CisgICAgJHBsYXRmb3JtX2lkID0gJHRlc3Rfcm93c1swXVsncGxhdGZvcm0nXTsKKwor
ICAgICRwYXRoX3Jlc29sdmVyID0gbmV3IFRlc3RQYXRoUmVzb2x2ZXIoJGRiKTsKKyAgICAkdGVz
dF9pZHMgPSAkcGF0aF9yZXNvbHZlci0+YW5jZXN0b3JzX2Zvcl90ZXN0KCR0YXJnZXRfdGVzdF9p
ZCk7CisKKyAgICAkcmVzdWx0cyA9ICRkYi0+cXVlcnlfYW5kX2ZldGNoX2FsbCgnU0VMRUNUIHRy
aWdjb25maWdfdHJpZ2dlcmFibGUgQVMgInRyaWdnZXJhYmxlIiwgdHJpZ2NvbmZpZ190ZXN0IEFT
ICJ0ZXN0IgorICAgICAgICBGUk9NIHRyaWdnZXJhYmxlX2NvbmZpZ3VyYXRpb25zIFdIRVJFIHRy
aWdjb25maWdfcGxhdGZvcm0gPSAkMSBBTkQgdHJpZ2NvbmZpZ190ZXN0ID0gQU5ZKCQyKScsCisg
ICAgICAgIGFycmF5KCRwbGF0Zm9ybV9pZCwgJ3snIC4gaW1wbG9kZSgnLCAnLCAkdGVzdF9pZHMp
IC4gJ30nKSk7CisgICAgaWYgKCEkcmVzdWx0cykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAg
ICAkdGVzdF90b190cmlnZ2VyYWJsZSA9IGFycmF5KCk7CisgICAgZm9yZWFjaCAoJHJlc3VsdHMg
YXMgJHJvdykKKyAgICAgICAgJHRlc3RfdG9fdHJpZ2dlcmFibGVbJHJvd1sndGVzdCddXSA9ICRy
b3dbJ3RyaWdnZXJhYmxlJ107CisKKyAgICBmb3JlYWNoICgkdGVzdF9pZHMgYXMgJHRlc3RfaWQp
IHsKKyAgICAgICAgJHRyaWdnZXJhYmxlID0gYXJyYXlfZ2V0KCR0ZXN0X3RvX3RyaWdnZXJhYmxl
LCAkdGVzdF9pZCk7CisgICAgICAgIGlmICgkdHJpZ2dlcmFibGUpCisgICAgICAgICAgICByZXR1
cm4gYXJyYXkoJ2lkJyA9PiAkdHJpZ2dlcmFibGUsICd0ZXN0JyA9PiAkdGVzdF9pZCwgJ3BsYXRm
b3JtJyA9PiAkcGxhdGZvcm1faWQpOworICAgIH0KKworICAgIHJldHVybiBOVUxMOworfQorCiA/
PgpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL3JlcG9ydC1w
cm9jZXNzb3IucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvaW5jbHVkZS9yZXBvcnQtcHJvY2Vzc29yLnBocAkocmV2aXNpb24gMTc4MjI3KQorKysgV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL3JlcG9ydC1wcm9jZXNzb3IucGhw
CSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw5IEBAIGNsYXNzIFJlcG9ydFByb2Nlc3NvciB7
CiAgICAgICAgIGlmICghJHBsYXRmb3JtX2lkKQogICAgICAgICAgICAgJHRoaXMtPmV4aXRfd2l0
aF9lcnJvcignRmFpbGVkVG9JbnNlcnRQbGF0Zm9ybScsIGFycmF5KCduYW1lJyA9PiAkcmVwb3J0
WydwbGF0Zm9ybSddKSk7CiAKLSAgICAgICAgJGJ1aWxkX2lkID0gJHRoaXMtPnJlc29sdmVfYnVp
bGRfaWQoJGJ1aWxkX2RhdGEsIGFycmF5X2dldCgkcmVwb3J0LCAncmV2aXNpb25zJywgYXJyYXko
KSkpOworICAgICAgICAvLyBGSVhNRTogRGVwcmVjYXRlIGFuZCB1bnN1cHBvcnQgImpvYklkIi4K
KyAgICAgICAgJGJ1aWxkX2lkID0gJHRoaXMtPnJlc29sdmVfYnVpbGRfaWQoJGJ1aWxkX2RhdGEs
IGFycmF5X2dldCgkcmVwb3J0LCAncmV2aXNpb25zJywgYXJyYXkoKSksCisgICAgICAgICAgICBh
cnJheV9nZXQoJHJlcG9ydCwgJ2pvYklkJykgb3IgYXJyYXlfZ2V0KCRyZXBvcnQsICdidWlsZFJl
cXVlc3QnKSk7CiAKICAgICAgICAgJHRoaXMtPnJ1bnMtPmNvbW1pdCgkcGxhdGZvcm1faWQsICRi
dWlsZF9pZCk7CiAgICAgfQpAQCAtMTExLDcgKzExMyw3IEBAIGNsYXNzIFJlcG9ydFByb2Nlc3Nv
ciB7CiAgICAgICAgICAgICAkdGhpcy0+ZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb1N0b3JlUnVu
UmVwb3J0Jyk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBmdW5jdGlvbiByZXNvbHZlX2J1aWxkX2lk
KCRidWlsZF9kYXRhLCAkcmV2aXNpb25zKSB7CisgICAgcHJpdmF0ZSBmdW5jdGlvbiByZXNvbHZl
X2J1aWxkX2lkKCRidWlsZF9kYXRhLCAkcmV2aXNpb25zLCAkYnVpbGRfcmVxdWVzdF9pZCkgewog
ICAgICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGhhcyBhIHJhY2UgY29uZGl0aW9uLiBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzE1ODc2MzAzPi4KICAgICAgICAgJHJlc3VsdHMgPSAkdGhpcy0+ZGItPnF1
ZXJ5X2FuZF9mZXRjaF9hbGwoIlNFTEVDVCBidWlsZF9pZCwgYnVpbGRfc2xhdmUgRlJPTSBidWls
ZHMKICAgICAgICAgICAgIFdIRVJFIGJ1aWxkX2J1aWxkZXIgPSAkMSBBTkQgYnVpbGRfbnVtYmVy
ID0gJDIgQU5EIGJ1aWxkX3RpbWUgPD0gJDMgQU5EIGJ1aWxkX3RpbWUgKyBpbnRlcnZhbCAnMSBk
YXknID4gJDMiLApAQCAtMTI2LDYgKzEyOCwxMyBAQCBjbGFzcyBSZXBvcnRQcm9jZXNzb3Igewog
ICAgICAgICBpZiAoISRidWlsZF9pZCkKICAgICAgICAgICAgICR0aGlzLT5leGl0X3dpdGhfZXJy
b3IoJ0ZhaWxlZFRvSW5zZXJ0QnVpbGQnLCAkYnVpbGRfZGF0YSk7CiAKKyAgICAgICAgaWYgKCRi
dWlsZF9yZXF1ZXN0X2lkKSB7CisgICAgICAgICAgICBpZiAoJGRiLT51cGRhdGVfcm93KCdidWls
ZF9yZXF1ZXN0cycsICdyZXF1ZXN0JywgYXJyYXkoJ2lkJyA9PiAkYnVpbGRfcmVxdWVzdF9pZCks
IGFycmF5KCdzdGF0dXMnID0+ICdjb21wbGV0ZWQnLCAnYnVpbGQnID0+ICRidWlsZF9pZCkpCisg
ICAgICAgICAgICAgICAgIT0gJGJ1aWxkX3JlcXVlc3RfaWQpCisgICAgICAgICAgICAgICAgJHRo
aXMtPmV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9VcGRhdGVCdWlsZFJlcXVlc3QnLCBhcnJheSgn
YnVpbGRSZXF1ZXN0JyA9PiAkYnVpbGRfcmVxdWVzdF9pZCwgJ2J1aWxkJyA9PiAkYnVpbGRfaWQp
KTsKKyAgICAgICAgfQorCisKICAgICAgICAgZm9yZWFjaCAoJHJldmlzaW9ucyBhcyAkcmVwb3Np
dG9yeV9uYW1lID0+ICRyZXZpc2lvbl9kYXRhKSB7CiAgICAgICAgICAgICAkcmVwb3NpdG9yeV9p
ZCA9ICR0aGlzLT5kYi0+c2VsZWN0X29yX2luc2VydF9yb3coJ3JlcG9zaXRvcmllcycsICdyZXBv
c2l0b3J5JywgYXJyYXkoJ25hbWUnID0+ICRyZXBvc2l0b3J5X25hbWUpKTsKICAgICAgICAgICAg
IGlmICghJHJlcG9zaXRvcnlfaWQpCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL2luY2x1ZGUvdGVzdC1uYW1lLXJlc29sdmVyLnBocAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvdGVzdC1uYW1lLXJlc29sdmVyLnBocAko
cmV2aXNpb24gMTc4MjI3KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNs
dWRlL3Rlc3QtbmFtZS1yZXNvbHZlci5waHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcg
QEAgY2xhc3MgVGVzdE5hbWVSZXNvbHZlciB7CiAgICAgICAgICAgICAgICAgYXJyYXlfc2V0X2Rl
ZmF1bHQoJHRoaXMtPnRlc3RfaWRfdG9fY2hpbGRfbWV0cmljcywgJHBhcmVudF9pZCwgYXJyYXko
KSk7CiAgICAgICAgICAgICAgICAgJHBhcmVudF9tZXRyaWNzID0gJiR0aGlzLT50ZXN0X2lkX3Rv
X2NoaWxkX21ldHJpY3NbJHBhcmVudF9pZF07CiAgICAgICAgICAgICAgICAgaWYgKCFpbl9hcnJh
eSgkbWV0cmljX3Jvd1snbWV0cmljX25hbWUnXSwgJHBhcmVudF9tZXRyaWNzKSkKLSAgICAgICAg
ICAgICAgICAgICAgYXJyYXlfcHVzaCgkcGFyZW50X21ldHJpY3MsICRtZXRyaWNfcm93WydtZXRy
aWNfbmFtZSddKTsKKyAgICAgICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkcGFyZW50X21ldHJp
Y3MsICRtZXRyaWNfcm93KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1
cm4gJHRlc3RfdG9fbWV0cmljczsKQEAgLTEyOSw2ICsxMjksMTggQEAgY2xhc3MgVGVzdE5hbWVS
ZXNvbHZlciB7CiAgICAgICAgICRtZXRyaWNfY29uZmlndXJhdGlvbnMgPSBhcnJheV9nZXQoJHRo
aXMtPm1ldHJpY190b19jb25maWd1cmF0aW9ucywgJG1ldHJpY19pZCwgYXJyYXkoKSk7CiAgICAg
ICAgIHJldHVybiBhcnJheV9nZXQoJG1ldHJpY19jb25maWd1cmF0aW9ucywgJHBsYXRmb3JtX2lk
KTsKICAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0X2V4aXN0c19vbl9wbGF0Zm9ybSgkdGVzdF9p
ZCwgJHBsYXRmb3JtX2lkKSB7CisgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5tZXRyaWNzX2Zvcl90
ZXN0X2lkKCR0ZXN0X2lkKSBhcyAkbWV0cmljKSB7CisgICAgICAgICAgICBpZiAoJHRoaXMtPmNv
bmZpZ3VyYXRpb25zX2Zvcl9tZXRyaWNfYW5kX3BsYXRmb3JtKCRtZXRyaWNbJ21ldHJpY19pZCdd
LCAkcGxhdGZvcm1faWQpKQorICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9
CisgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5jaGlsZF9tZXRyaWNzX2Zvcl90ZXN0X2lkKCR0ZXN0
X2lkKSBhcyAkbWV0cmljKSB7CisgICAgICAgICAgICBpZiAoJHRoaXMtPmNvbmZpZ3VyYXRpb25z
X2Zvcl9tZXRyaWNfYW5kX3BsYXRmb3JtKCRtZXRyaWNbJ21ldHJpY19pZCddLCAkcGxhdGZvcm1f
aWQpKQorICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBGQUxTRTsKKyAgICB9CiB9CiAKID8+CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL2luY2x1ZGUvdGVzdC1wYXRoLXJlc29sdmVyLnBocAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvdGVzdC1wYXRoLXJlc29sdmVy
LnBocAkocmV2aXNpb24gMCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5j
bHVkZS90ZXN0LXBhdGgtcmVzb2x2ZXIucGhwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkg
QEAKKzw/cGhwCisKK2NsYXNzIFRlc3RQYXRoUmVzb2x2ZXIgeworICAgIGZ1bmN0aW9uIF9fY29u
c3RydWN0KCRkYikgeworICAgICAgICAkdGhpcy0+ZGIgPSAkZGI7CisgICAgICAgICR0aGlzLT5p
ZF90b190ZXN0X21hcCA9IE5VTEw7CisgICAgfQorCisgICAgZnVuY3Rpb24gYW5jZXN0b3JzX2Zv
cl90ZXN0KCR0ZXN0X2lkKSB7CisgICAgICAgICRpZF90b190ZXN0ID0gJHRoaXMtPmVuc3VyZV9p
ZF90b190ZXN0X21hcCgpOworICAgICAgICAkYW5jZXN0b3JzID0gYXJyYXkoKTsKKyAgICAgICAg
Zm9yICg7ICR0ZXN0X2lkOyAkdGVzdF9pZCA9ICRpZF90b190ZXN0WyR0ZXN0X2lkXVsndGVzdF9w
YXJlbnQnXSkKKyAgICAgICAgICAgIGFycmF5X3B1c2goJGFuY2VzdG9ycywgJHRlc3RfaWQpOwor
ICAgICAgICByZXR1cm4gJGFuY2VzdG9yczsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXRoX2Zv
cl90ZXN0KCR0ZXN0X2lkKSB7CisgICAgICAgICRpZF90b190ZXN0ID0gJHRoaXMtPmVuc3VyZV9p
ZF90b190ZXN0X21hcCgpOworICAgICAgICAkcGF0aCA9IGFycmF5KCk7CisgICAgICAgIHdoaWxl
ICgkdGVzdF9pZCkgeworICAgICAgICAgICAgJHRlc3QgPSAkaWRfdG9fdGVzdFskdGVzdF9pZF07
CisgICAgICAgICAgICAkdGVzdF9pZCA9ICR0ZXN0Wyd0ZXN0X3BhcmVudCddOworICAgICAgICAg
ICAgYXJyYXlfdW5zaGlmdCgkcGF0aCwgJHRlc3RbJ3Rlc3RfbmFtZSddKTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gJHBhdGg7CisgICAgfQorCisgICAgcHJpdmF0ZSBmdW5jdGlvbiBlbnN1
cmVfaWRfdG9fdGVzdF9tYXAoKSB7CisgICAgICAgIGlmICgkdGhpcy0+aWRfdG9fdGVzdF9tYXAg
PT0gTlVMTCkgeworICAgICAgICAgICAgJG1hcCA9IGFycmF5KCk7CisgICAgICAgICAgICBmb3Jl
YWNoICgkdGhpcy0+ZGItPmZldGNoX3RhYmxlKCd0ZXN0cycpIGFzICRyb3cpCisgICAgICAgICAg
ICAgICAgJG1hcFskcm93Wyd0ZXN0X2lkJ11dID0gJHJvdzsKKyAgICAgICAgICAgICR0aGlzLT5p
ZF90b190ZXN0X21hcCA9ICRtYXA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICR0aGlzLT5p
ZF90b190ZXN0X21hcDsKKyAgICB9Cit9CisKKz8+CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwLnBocAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2Ny
ZWF0ZS10ZXN0LWdyb3VwLnBocAkocmV2aXNpb24gMCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsOTUgQEAKKzw/cGhwCisKK3JlcXVpcmVfb25jZSgnLi4vaW5jbHVk
ZS9qc29uLWhlYWRlci5waHAnKTsKKworZnVuY3Rpb24gbWFpbigpIHsKKyAgICAkZGF0YSA9IGVu
c3VyZV9wcml2aWxlZ2VkX2FwaV9kYXRhX2FuZF90b2tlbigpOworCisgICAgJGF1dGhvciA9IHJl
bW90ZV91c2VyX25hbWUoKTsKKworICAgICR0YXNrX2lkID0gYXJyYXlfZ2V0KCRkYXRhLCAndGFz
aycpOworICAgICRuYW1lID0gYXJyYXlfZ2V0KCRkYXRhLCAnbmFtZScpOworICAgICRyb290X3Nl
dHMgPSBhcnJheV9nZXQoJGRhdGEsICdyb290U2V0cycpOworICAgICRyZXBldGl0aW9uX2NvdW50
ID0gaW50dmFsKGFycmF5X2dldCgkZGF0YSwgJ3JlcGV0aXRpb25Db3VudCcsIDEpKTsKKworICAg
IGlmICghJG5hbWUpCisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTWlzc2luZ05hbWUnKTsKKyAg
ICBpZiAoISRyb290X3NldHMpCisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTWlzc2luZ1Jvb3RT
ZXRzJyk7CisgICAgaWYgKCRyZXBldGl0aW9uX2NvdW50IDwgMSkKKyAgICAgICAgZXhpdF93aXRo
X2Vycm9yKCdJbnZhbGlkUmVwZXRpdGlvbkNvdW50JywgYXJyYXkoJ3JlcGV0aXRpb25Db3VudCcg
PT4gJHJlcGV0aXRpb25fY291bnQpKTsKKworICAgICRkYiA9IGNvbm5lY3QoKTsKKyAgICAkdGFz
ayA9ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygnYW5hbHlzaXNfdGFza3MnLCAndGFzaycsIGFycmF5
KCdpZCcgPT4gJHRhc2tfaWQpKTsKKyAgICBpZiAoISR0YXNrKQorICAgICAgICBleGl0X3dpdGhf
ZXJyb3IoJ0ludmFsaWRUYXNrJywgYXJyYXkoJ3Rhc2snID0+ICR0YXNrX2lkKSk7CisgICAgJHRy
aWdnZXJhYmxlID0gZmluZF90cmlnZ2VyYWJsZV9mb3JfdGFzaygkZGIsICR0YXNrX2lkKTsKKyAg
ICBpZiAoISR0cmlnZ2VyYWJsZSkKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdUcmlnZ2VyYWJs
ZU5vdEZvdW5kRm9yVGFzaycsIGFycmF5KCd0YXNrJyA9PiAkdGFza19pZCkpOworCisgICAgJGNv
bW1pdF9zZXRzID0gY29tbWl0X3NldHNfZnJvbV9yb290X3NldHMoJGRiLCAkcm9vdF9zZXRzKTsK
KworICAgICRkYi0+YmVnaW5fdHJhbnNhY3Rpb24oKTsKKworICAgICRyb290X3NldF9pZF9saXN0
ID0gYXJyYXkoKTsKKyAgICBmb3JlYWNoICgkY29tbWl0X3NldHMgYXMgJGNvbW1pdF9saXN0KSB7
CisgICAgICAgICRyb290X3NldF9pZCA9ICRkYi0+aW5zZXJ0X3Jvdygncm9vdF9zZXRzJywgJ3Jv
b3RzZXQnLCBhcnJheSgpKTsKKyAgICAgICAgZm9yZWFjaCAoJGNvbW1pdF9saXN0IGFzICRjb21t
aXQpCisgICAgICAgICAgICAkZGItPmluc2VydF9yb3coJ3Jvb3RzJywgJ3Jvb3QnLCBhcnJheSgn
c2V0JyA9PiAkcm9vdF9zZXRfaWQsICdjb21taXQnID0+ICRjb21taXQpLCAnY29tbWl0Jyk7Cisg
ICAgICAgIGFycmF5X3B1c2goJHJvb3Rfc2V0X2lkX2xpc3QsICRyb290X3NldF9pZCk7CisgICAg
fQorCisgICAgJGdyb3VwX2lkID0gJGRiLT5pbnNlcnRfcm93KCdhbmFseXNpc190ZXN0X2dyb3Vw
cycsICd0ZXN0Z3JvdXAnLAorICAgICAgICBhcnJheSgndGFzaycgPT4gJHRhc2tbJ3Rhc2tfaWQn
XSwgJ25hbWUnID0+ICRuYW1lLCAnYXV0aG9yJyA9PiAkYXV0aG9yKSk7CisKKyAgICAkb3JkZXIg
PSAwOworICAgIGZvciAoJGkgPSAwOyAkaSA8ICRyZXBldGl0aW9uX2NvdW50OyAkaSsrKSB7Cisg
ICAgICAgIGZvcmVhY2ggKCRyb290X3NldF9pZF9saXN0IGFzICRyb290X3NldF9pZCkgeworICAg
ICAgICAgICAgJGRiLT5pbnNlcnRfcm93KCdidWlsZF9yZXF1ZXN0cycsICdyZXF1ZXN0JywgYXJy
YXkoCisgICAgICAgICAgICAgICAgJ3RyaWdnZXJhYmxlJyA9PiAkdHJpZ2dlcmFibGVbJ2lkJ10s
CisgICAgICAgICAgICAgICAgJ3BsYXRmb3JtJyA9PiAkdHJpZ2dlcmFibGVbJ3BsYXRmb3JtJ10s
CisgICAgICAgICAgICAgICAgJ3Rlc3QnID0+ICR0cmlnZ2VyYWJsZVsndGVzdCddLAorICAgICAg
ICAgICAgICAgICdncm91cCcgPT4gJGdyb3VwX2lkLAorICAgICAgICAgICAgICAgICdvcmRlcicg
PT4gJG9yZGVyLAorICAgICAgICAgICAgICAgICdyb290X3NldCcgPT4gJHJvb3Rfc2V0X2lkKSk7
CisgICAgICAgICAgICAkb3JkZXIrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgICRkYi0+Y29t
bWl0X3RyYW5zYWN0aW9uKCk7CisKKyAgICBleGl0X3dpdGhfc3VjY2VzcyhhcnJheSgndGVzdEdy
b3VwSWQnID0+ICRncm91cF9pZCkpOworfQorCitmdW5jdGlvbiBjb21taXRfc2V0c19mcm9tX3Jv
b3Rfc2V0cygkZGIsICRyb290X3NldHMpIHsKKyAgICAkcmVwb3NpdG9yeV9uYW1lX3RvX2lkID0g
YXJyYXkoKTsKKyAgICBmb3JlYWNoICgkZGItPmZldGNoX3RhYmxlKCdyZXBvc2l0b3JpZXMnKSBh
cyAkcm93KQorICAgICAgICAkcmVwb3NpdG9yeV9uYW1lX3RvX2lkWyRyb3dbJ3JlcG9zaXRvcnlf
bmFtZSddXSA9ICRyb3dbJ3JlcG9zaXRvcnlfaWQnXTsKKworICAgICRjb21taXRfc2V0cyA9IGFy
cmF5KCk7CisgICAgZm9yZWFjaCAoJHJvb3Rfc2V0cyBhcyAkcmVwb3NpdG9yeV9uYW1lID0+ICRy
ZXZpc2lvbnMpIHsKKyAgICAgICAgJHJlcG9zaXRvcnlfaWQgPSBhcnJheV9nZXQoJHJlcG9zaXRv
cnlfbmFtZV90b19pZCwgJHJlcG9zaXRvcnlfbmFtZSk7CisgICAgICAgIGlmICghJHJlcG9zaXRv
cnlfaWQpCisgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ1JlcG9zaXRvcnlOb3RGb3VuZCcs
IGFycmF5KCduYW1lJyA9PiAkcmVwb3NpdG9yeV9uYW1lKSk7CisKKyAgICAgICAgZm9yZWFjaCAo
JHJldmlzaW9ucyBhcyAkaSA9PiAkcmV2aXNpb24pIHsKKyAgICAgICAgICAgICRjb21taXQgPSAk
ZGItPnNlbGVjdF9maXJzdF9yb3coJ2NvbW1pdHMnLCAnY29tbWl0JywgYXJyYXkoJ3JlcG9zaXRv
cnknID0+ICRyZXBvc2l0b3J5X2lkLCAncmV2aXNpb24nID0+ICRyZXZpc2lvbikpOworICAgICAg
ICAgICAgaWYgKCEkY29tbWl0KQorICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignUmV2
aXNpb25Ob3RGb3VuZCcsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9uYW1lLCAn
cmV2aXNpb24nID0+ICRyZXZpc2lvbikpOworICAgICAgICAgICAgYXJyYXlfc2V0X2RlZmF1bHQo
JGNvbW1pdF9zZXRzLCAkaSwgYXJyYXkoKSk7CisgICAgICAgICAgICBhcnJheV9wdXNoKCRjb21t
aXRfc2V0c1skaV0sICRjb21taXRbJ2NvbW1pdF9pZCddKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgICRjb21taXRfY291bnRfcGVyX3NldCA9IGNvdW50KCRjb21taXRfc2V0c1swXSk7CisgICAg
Zm9yZWFjaCAoJGNvbW1pdF9zZXRzIGFzICRjb21taXRzKSB7CisgICAgICAgIGlmICgkY29tbWl0
X2NvdW50X3Blcl9zZXQgIT0gY291bnQoJGNvbW1pdHMpKQorICAgICAgICAgICAgZXhpdF93aXRo
X2Vycm9yKCdJbnZhbGlkUm9vdFNldHMnLCBhcnJheSgncm9vdFNldHMnID0+ICRyb290X3NldHMp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gJGNvbW1pdF9zZXRzOworfQorCittYWluKCk7CisKKz8+
CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YyL2FuYWx5c2lzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjIvYW5hbHlzaXMu
anMJKHJldmlzaW9uIDE3ODIyNykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djIvYW5hbHlzaXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTYsOSArNiwxNiBAQCBBcHAuQW5hbHlz
aXNUYXNrID0gQXBwLk5hbWVMYWJlbE1vZGVsLmV4CiAgICAgc3RhcnRSdW46IERTLmF0dHIoJ251
bWJlcicpLAogICAgIGVuZFJ1bjogRFMuYXR0cignbnVtYmVyJyksCiAgICAgYnVnczogRFMuaGFz
TWFueSgnYnVncycpLAotICAgIHRlc3RHcm91cHM6IGZ1bmN0aW9uICgpIHsKKyAgICB0ZXN0R3Jv
dXBzOiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSwgb2xkVmFsdWUpIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuc3RvcmUuZmluZCgndGVzdEdyb3VwJywge3Rhc2s6IHRoaXMuZ2V0KCdpZCcpfSk7CiAgICAg
fS5wcm9wZXJ0eSgpLAorICAgIHRyaWdnZXJhYmxlOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLnN0b3JlLmZpbmQoJ3RyaWdnZXJhYmxlJywge3Rhc2s6IHRoaXMuZ2V0KCdpZCcp
fSkudGhlbihmdW5jdGlvbiAodHJpZ2dlcmFibGVzKSB7CisgICAgICAgICAgICByZXR1cm4gdHJp
Z2dlcmFibGVzLm9iamVjdEF0KDApOworICAgICAgICB9LCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfSk7CisgICAgfS5wcm9wZXJ0eSgpLAogICAgIGxh
YmVsOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgIHZhciBsYWJlbCA9IHRoaXMuZ2V0KCduYW1lJyk7
CiAgICAgICAgIHZhciBidWdzID0gdGhpcy5nZXQoJ2J1Z3MnKS5tYXAoZnVuY3Rpb24gKGJ1Zykg
eyByZXR1cm4gYnVnLmdldCgnbGFiZWwnKTsgfSkuam9pbignIC8gJyk7CkBAIC02Myw4ICs3MCwz
MiBAQCBBcHAuVGVzdEdyb3VwID0gQXBwLk5hbWVMYWJlbE1vZGVsLmV4dGVuCiAgICAgYXV0aG9y
OiBEUy5hdHRyKCdzdHJpbmcnKSwKICAgICBjcmVhdGVkQXQ6IERTLmF0dHIoJ2RhdGUnKSwKICAg
ICBidWlsZFJlcXVlc3RzOiBEUy5oYXNNYW55KCdidWlsZFJlcXVlc3RzJyksCisgICAgcm9vdFNl
dHM6IGZ1bmN0aW9uICgpCisgICAgeworICAgICAgICB2YXIgcm9vdFNldElkcyA9IFtdOworICAg
ICAgICB0aGlzLmdldCgnYnVpbGRSZXF1ZXN0cycpLmZvckVhY2goZnVuY3Rpb24gKHJlcXVlc3Qp
IHsKKyAgICAgICAgICAgIHZhciByb290U2V0ID0gcmVxdWVzdC5nZXQoJ3Jvb3RTZXQnKTsKKyAg
ICAgICAgICAgIGlmICghcm9vdFNldElkcy5jb250YWlucyhyb290U2V0KSkKKyAgICAgICAgICAg
ICAgICByb290U2V0SWRzLnB1c2gocm9vdFNldCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1
cm4gcm9vdFNldElkczsKKyAgICB9LnByb3BlcnR5KCdidWlsZFJlcXVlc3RzJyksCiB9KTsKIAor
QXBwLlRlc3RHcm91cC5jcmVhdGUgPSBmdW5jdGlvbiAoYW5hbHlzaXNUYXNrLCBuYW1lLCByb290
U2V0cywgcmVwZXRpdGlvbkNvdW50KQoreworICAgIHZhciBwYXJhbSA9IHsKKyAgICAgICAgdGFz
azogYW5hbHlzaXNUYXNrLmdldCgnaWQnKSwKKyAgICAgICAgbmFtZTogbmFtZSwKKyAgICAgICAg
cm9vdFNldHM6IHJvb3RTZXRzLAorICAgICAgICByZXBldGl0aW9uQ291bnQ6IHJlcGV0aXRpb25D
b3VudCwKKyAgICB9OworICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVh
dGUtdGVzdC1ncm91cCcsIHBhcmFtKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CisgICAgICAgIGFu
YWx5c2lzVGFzay5zZXQoJ3Rlc3RHcm91cHMnKTsgLy8gUmVmZXRjaCB0ZXN0IGdyb3Vwcy4KKyAg
ICAgICAgcmV0dXJuIGFuYWx5c2lzVGFzay5zdG9yZS5maW5kKCd0ZXN0R3JvdXAnLCBkYXRhWyd0
ZXN0R3JvdXBJZCddKTsKKyAgICB9KTsKK30KKwogQXBwLlRlc3RHcm91cEFkYXB0ZXIgPSBEUy5S
RVNUQWRhcHRlci5leHRlbmQoewogICAgIGJ1aWxkVVJMOiBmdW5jdGlvbiAodHlwZSwgaWQpCiAg
ICAgewpAQCAtNzIsNyArMTAzLDE4IEBAIEFwcC5UZXN0R3JvdXBBZGFwdGVyID0gRFMuUkVTVEFk
YXB0ZXIuZXgKICAgICB9LAogfSk7CiAKLUFwcC5BbmFseXNpc1Rhc2tTZXJpYWxpemVyID0gQXBw
LlRlc3RHcm91cFNlcmlhbGl6ZXIgPSBEUy5SRVNUU2VyaWFsaXplci5leHRlbmQoeworQXBwLlRy
aWdnZXJhYmxlID0gQXBwLk5hbWVMYWJlbE1vZGVsLmV4dGVuZCh7CisgICAgYWNjZXB0ZWRSZXBv
c2l0b3JpZXM6IERTLmhhc01hbnkoJ3JlcG9zaXRvcmllcycpLAorfSk7CisKK0FwcC5UcmlnZ2Vy
YWJsZUFkYXB0ZXIgPSBEUy5SRVNUQWRhcHRlci5leHRlbmQoeworICAgIGJ1aWxkVVJMOiBmdW5j
dGlvbiAodHlwZSwgaWQpCisgICAgeworICAgICAgICByZXR1cm4gJy4uL2FwaS90cmlnZ2VyYWJs
ZXMvJyArIChpZCA/IGlkIDogJycpOworICAgIH0sCit9KTsKKworQXBwLkFuYWx5c2lzVGFza1Nl
cmlhbGl6ZXIgPSBBcHAuVGVzdEdyb3VwU2VyaWFsaXplciA9IEFwcC5UcmlnZ2VyYWJsZVNlcmlh
bGl6ZXIgPSBEUy5SRVNUU2VyaWFsaXplci5leHRlbmQoewogICAgIG5vcm1hbGl6ZVBheWxvYWQ6
IGZ1bmN0aW9uIChwYXlsb2FkKQogICAgIHsKICAgICAgICAgZGVsZXRlIHBheWxvYWRbJ3N0YXR1
cyddOwpAQCAtODEsMTEgKzEyMywzMiBAQCBBcHAuQW5hbHlzaXNUYXNrU2VyaWFsaXplciA9IEFw
cC5UZXN0R3JvCiB9KTsKIAogQXBwLkJ1aWxkUmVxdWVzdCA9IEFwcC5Nb2RlbC5leHRlbmQoewot
ICAgIGdyb3VwOiBEUy5iZWxvbmdzVG8oJ3Rlc3RHcm91cCcpLAorICAgIHRlc3RHcm91cDogRFMu
YmVsb25nc1RvKCd0ZXN0R3JvdXAnKSwKICAgICBvcmRlcjogRFMuYXR0cignbnVtYmVyJyksCisg
ICAgb3JkZXJMYWJlbDogZnVuY3Rpb24gKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmdl
dCgnb3JkZXInKSArIDE7CisgICAgfS5wcm9wZXJ0eSgnb3JkZXInKSwKICAgICByb290U2V0OiBE
Uy5hdHRyKCdudW1iZXInKSwKKyAgICBjb25maWc6IGZ1bmN0aW9uICgpCisgICAgeworICAgICAg
ICB2YXIgcm9vdFNldHMgPSB0aGlzLmdldCgndGVzdEdyb3VwJykuZ2V0KCdyb290U2V0cycpOwor
ICAgICAgICB2YXIgaW5kZXggPSByb290U2V0cy5pbmRleE9mKHRoaXMuZ2V0KCdyb290U2V0Jykp
OworICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSgnQScuY2hhckNvZGVBdCgwKSAr
IGluZGV4KTsKKyAgICB9LnByb3BlcnR5KCd0ZXN0R3JvdXAnLCAndGVzdEdyb3VwLnJvb3RTZXRz
JyksCisgICAgc3RhdHVzOiBEUy5hdHRyKCdzdHJpbmcnKSwKKyAgICBzdGF0dXNMYWJlbDogZnVu
Y3Rpb24gKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodGhpcy5nZXQoJ3N0YXR1cycpKSB7Cisg
ICAgICAgIGNhc2UgJ3BlbmRpbmcnOgorICAgICAgICAgICAgcmV0dXJuICdXYWl0aW5nIHRvIGJl
IHNjaGVkdWxlZCc7CisgICAgICAgIGNhc2UgJ3NjaGVkdWxlZCc6CisgICAgICAgICAgICByZXR1
cm4gJ1NjaGVkdWxlZCc7CisgICAgICAgIGNhc2UgJ3J1bm5pbmcnOgorICAgICAgICAgICAgcmV0
dXJuICdSdW5uaW5nJzsKKyAgICAgICAgY2FzZSAnY29tcGxldGVkJzoKKyAgICAgICAgICAgIHJl
dHVybiAnRmluaXNoZWQnOworICAgICAgICB9CisgICAgfS5wcm9wZXJ0eSgnc3RhdHVzJyksCiAg
ICAgYnVpbGQ6IERTLmF0dHIoJ251bWJlcicpLAotICAgIGJ1aWxkTnVtYmVyOiBEUy5hdHRyKCdu
dW1iZXInKSwKLSAgICBidWlsZEJ1aWxkZXI6IERTLmJlbG9uZ3NUbygnYnVpbGRlcicpLAotICAg
IGJ1aWxkVGltZTogRFMuYXR0cignZGF0ZScpLAogfSk7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YyL2FwcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YyL2FwcC5qcwkocmV2aXNpb24gMTc4MjI3KQorKysgV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92Mi9hcHAuanMJKHdvcmtpbmcgY29weSkKQEAgLTc4Myw5
ICs3ODMsMTEgQEAgQXBwLkFuYWx5c2lzVGFza0NvbnRyb2xsZXIgPSBFbWJlci5Db250cgogICAg
IGxhYmVsOiBFbWJlci5jb21wdXRlZC5hbGlhcygnbW9kZWwubmFtZScpLAogICAgIHBsYXRmb3Jt
OiBFbWJlci5jb21wdXRlZC5hbGlhcygnbW9kZWwucGxhdGZvcm0nKSwKICAgICBtZXRyaWM6IEVt
YmVyLmNvbXB1dGVkLmFsaWFzKCdtb2RlbC5tZXRyaWMnKSwKKyAgICB0ZXN0R3JvdXBzOiBFbWJl
ci5jb21wdXRlZC5hbGlhcygnbW9kZWwudGVzdEdyb3VwcycpLAogICAgIHRlc3RTZXRzOiBbXSwK
ICAgICByb290czogW10sCiAgICAgYnVnVHJhY2tlcnM6IFtdLAorICAgIHBvc3NpYmxlUmVwZXRp
dGlvbkNvdW50czogWzEsIDIsIDMsIDQsIDUsIDZdLAogICAgIF90YXNrVXBkYXRlZDogZnVuY3Rp
b24gKCkKICAgICB7CiAgICAgICAgIHZhciBtb2RlbCA9IHRoaXMuZ2V0KCdtb2RlbCcpOwpAQCAt
ODc4LDExICs4ODAsMTEgQEAgQXBwLkFuYWx5c2lzVGFza0NvbnRyb2xsZXIgPSBFbWJlci5Db250
cgogICAgICAgICB9KTsKIAogICAgIH0ub2JzZXJ2ZXMoJ3Rlc3RTZXRzLkBlYWNoLnNlbGVjdGlv
bicpLAotICAgIHJvb3RzOiBmdW5jdGlvbiAoKQorICAgIHVwZGF0ZVJvb3RzOiBmdW5jdGlvbiAo
KQogICAgIHsKICAgICAgICAgdmFyIGFuYWx5c2lzUG9pbnRzID0gdGhpcy5nZXQoJ2FuYWx5c2lz
UG9pbnRzJyk7CiAgICAgICAgIGlmICghYW5hbHlzaXNQb2ludHMpCi0gICAgICAgICAgICByZXR1
cm4gW107CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHZhciByZXBvc2l0b3J5VG9SZXZp
c2lvbnMgPSB7fTsKICAgICAgICAgYW5hbHlzaXNQb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocG9p
bnQsIHBvaW50SW5kZXgpIHsKICAgICAgICAgICAgIHZhciByZXZpc2lvbnMgPSBwb2ludC5tZWFz
dXJlbWVudC5mb3JtYXR0ZWRSZXZpc2lvbnMoKTsKQEAgLTg5NywyMyArODk5LDI4IEBAIEFwcC5B
bmFseXNpc1Rhc2tDb250cm9sbGVyID0gRW1iZXIuQ29udHIKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSk7CiAKLSAgICAgICAgdmFyIHJvb3RzID0gW107Ci0gICAgICAgIGZvciAodmFyIHJlcG9z
aXRvcnlOYW1lIGluIHJlcG9zaXRvcnlUb1JldmlzaW9ucykgewotICAgICAgICAgICAgdmFyIHJl
dmlzaW9ucyA9IFt7dmFsdWU6ICcgJywgbGFiZWw6ICdOb25lJ31dLmNvbmNhdChyZXBvc2l0b3J5
VG9SZXZpc2lvbnNbcmVwb3NpdG9yeU5hbWVdKTsKLSAgICAgICAgICAgIHJvb3RzLnB1c2goRW1i
ZXIuT2JqZWN0LmNyZWF0ZSh7Ci0gICAgICAgICAgICAgICAgbmFtZTogcmVwb3NpdG9yeU5hbWUs
Ci0gICAgICAgICAgICAgICAgc2V0czogWwotICAgICAgICAgICAgICAgICAgICBFbWJlci5PYmpl
Y3QuY3JlYXRlKHtuYW1lOiAnQVsnICsgcmVwb3NpdG9yeU5hbWUgKyAnXScsCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZXZpc2lvbnM6IHJldmlzaW9ucywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGVjdGlvbjogcmV2aXNpb25zWzFdfSksCi0gICAgICAgICAgICAgICAgICAgIEVtYmVy
Lk9iamVjdC5jcmVhdGUoe25hbWU6ICdCWycgKyByZXBvc2l0b3J5TmFtZSArICddJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldmlzaW9uczogcmV2aXNpb25zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZWN0aW9uOiByZXZpc2lvbnNbcmV2aXNpb25zLmxlbmd0aCAtIDFdfSksCi0g
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICB0aGlz
LmdldCgnbW9kZWwnKS5nZXQoJ3RyaWdnZXJhYmxlJykudGhlbihmdW5jdGlvbiAodHJpZ2dlcmFi
bGUpIHsKKyAgICAgICAgICAgIGlmICghdHJpZ2dlcmFibGUpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBzZWxmLnNldCgncm9vdHMnLCB0cmlnZ2VyYWJsZS5nZXQoJ2Fj
Y2VwdGVkUmVwb3NpdG9yaWVzJykubWFwKGZ1bmN0aW9uIChyZXBvc2l0b3J5KSB7CisgICAgICAg
ICAgICAgICAgdmFyIHJlcG9zaXRvcnlOYW1lID0gcmVwb3NpdG9yeS5nZXQoJ2lkJyk7CisgICAg
ICAgICAgICAgICAgdmFyIHJldmlzaW9ucyA9IFt7dmFsdWU6ICcgJywgbGFiZWw6ICdOb25lJ31d
LmNvbmNhdChyZXBvc2l0b3J5VG9SZXZpc2lvbnNbcmVwb3NpdG9yeU5hbWVdKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gRW1iZXIuT2JqZWN0LmNyZWF0ZSh7CisgICAgICAgICAgICAgICAgICAg
IG5hbWU6IHJlcG9zaXRvcnlOYW1lLAorICAgICAgICAgICAgICAgICAgICBzZXRzOiBbCisgICAg
ICAgICAgICAgICAgICAgICAgICBFbWJlci5PYmplY3QuY3JlYXRlKHtuYW1lOiAnQVsnICsgcmVw
b3NpdG9yeU5hbWUgKyAnXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb25z
OiByZXZpc2lvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uOiByZXZp
c2lvbnNbMV19KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEVtYmVyLk9iamVjdC5jcmVhdGUo
e25hbWU6ICdCWycgKyByZXBvc2l0b3J5TmFtZSArICddJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXZpc2lvbnM6IHJldmlzaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxlY3Rpb246IHJldmlzaW9uc1tyZXZpc2lvbnMubGVuZ3RoIC0gMV19KSwKKyAgICAgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gcm9vdHM7Ci0gICAgfS5wcm9wZXJ0eSgnYW5hbHlzaXNQ
b2ludHMnKSwKKyAgICAgICAgfSk7CisgICAgfS5vYnNlcnZlcygnYW5hbHlzaXNQb2ludHMnKSwK
ICAgICBhY3Rpb25zOiB7CiAgICAgICAgIGFzc29jaWF0ZUJ1ZzogZnVuY3Rpb24gKGJ1Z1RyYWNr
ZXIsIGJ1Z051bWJlcikKICAgICAgICAgewpAQCAtOTI0LDYgKzkzMSwxNiBAQCBBcHAuQW5hbHlz
aXNUYXNrQ29udHJvbGxlciA9IEVtYmVyLkNvbnRyCiAgICAgICAgICAgICAgICAgfSwgZnVuY3Rp
b24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gYXNzb2Np
YXRlIHRoZSBidWc6ICcgKyBlcnJvcik7CiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgY3JlYXRlVGVzdEdyb3VwOiBmdW5jdGlvbiAobmFtZSwgcmVw
ZXRpdGlvbkNvdW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcm9vdHMgPSB7fTsKKyAg
ICAgICAgICAgIHRoaXMuZ2V0KCdyb290cycpLm1hcChmdW5jdGlvbiAocm9vdCkgeworICAgICAg
ICAgICAgICAgIHJvb3RzW3Jvb3QuZ2V0KCduYW1lJyldID0gcm9vdC5nZXQoJ3NldHMnKS5tYXAo
ZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGl0ZW0uZ2V0KCdzZWxlY3Rpb24nKS52YWx1ZTsgfSk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIEFwcC5UZXN0R3JvdXAuY3JlYXRlKHRoaXMu
Z2V0KCdtb2RlbCcpLCBuYW1lLCByb290cywgcmVwZXRpdGlvbkNvdW50KS50aGVuKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LAogICAg
IH0sCiB9KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjIvaW5kZXgu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YyL2lu
ZGV4Lmh0bWwJKHJldmlzaW9uIDE3ODIyNykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvdjIvaW5kZXguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDg1LDI1ICs0ODUsMjYgQEAK
ICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICA8L2Rpdj4KICAg
ICAgICAgICAgIDwvc2VjdGlvbj4KLQogICAgICAgICAgICAge3sjZWFjaCB0ZXN0R3JvdXBzfX0K
ICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0iYW5hbHlzaXMtZ3JvdXAiPgogICAgICAg
ICAgICAgICAgICAgICA8dGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8Y2FwdGlvbj57
e25hbWV9fTwvY2FwdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx0ZD5PcmRlcjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5D
b25maWd1cmF0aW9uPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlN0
YXR1czwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5CdWlsZDwvdGQ+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5CdWlsZCBUaW1lPC90ZD4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7Li4vbWV0cmljLmZ1bGxOYW1lfX08
L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAg
ICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHt7I2VhY2ggYnVpbGRSZXF1ZXN0c319CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx0cj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx0ZD57e2lkfX08L3RkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHRkPnt7YnVpbGROdW1iZXJ9fTwvdGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8dGQ+e3tidWlsZFRpbWV9fTwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8dGQ+e3tvcmRlckxhYmVsfX08L3RkPgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHRkPnt7Y29uZmlnfX08L3RkPgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHRkPnt7I2lmIHVybH19e3sjbGluay10byB1cmx9fXt7c3RhdHVzTGFi
ZWx9fXt7L2xpbmstdG99fXt7ZWxzZX19e3tzdGF0dXNMYWJlbH19e3svaWZ9fTwvdGQ+CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tidWlsZH19PC90ZD4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e21lYW59fTwvdGQ+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAge3svZWFjaH19CkBAIC01MTIsOSArNTEzLDEwIEBACiAgICAgICAgICAgICAgICAgPC9zZWN0
aW9uPgogICAgICAgICAgICAge3svZWFjaH19CiAKLSAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJh
bmFseXNpcy1ncm91cCI+CisgICAgICAgICAgICB7eyNpZiByb290c319CisgICAgICAgICAgICA8
Zm9ybSBtZXRob2Q9IlBPU1QiIHt7YWN0aW9uICJjcmVhdGVUZXN0R3JvdXAiIG5ld1Rlc3RHcm91
cE5hbWUgcmVwZXRpdGlvbkNvdW50IG9uPSJzdWJtaXQifX0gY2xhc3M9ImFuYWx5c2lzLWdyb3Vw
Ij4KICAgICAgICAgICAgICAgICA8dGFibGU+Ci0gICAgICAgICAgICAgICAgICAgIDxjYXB0aW9u
PjxpbnB1dCBuYW1lPSJuYW1lIiBwbGFjZWhvbGRlcj0iVGVzdCBncm91cCBuYW1lIiByZXF1aXJl
ZD48L2NhcHRpb24+CisgICAgICAgICAgICAgICAgICAgIDxjYXB0aW9uPnt7aW5wdXQgbmFtZT0i
bmFtZSIgdmFsdWU9bmV3VGVzdEdyb3VwTmFtZSBwbGFjZWhvbGRlcj0iVGVzdCBncm91cCBuYW1l
IiByZXF1aXJlZD10cnVlIHR5cGU9InRleHQifX08L2NhcHRpb24+CiAgICAgICAgICAgICAgICAg
ICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8dGg+Um9vdDwvdGg+CkBAIC01MzUsNyArNTM3LDcgQEAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx0aD57e25hbWV9fTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7I2Vh
Y2ggc2V0c319Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3t2aWV3
IEVtYmVyLlNlbGVjdCBuYW1lPW5hbWUgY29udGVudD1yZXZpc2lvbnMKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3ZpZXcgRW1iZXIuU2VsZWN0IG5hbWU9bmFtZSBj
b250ZW50PXJldmlzaW9ucyBkaXNhYmxlZD10cnVlCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3B0aW9uVmFsdWVQYXRoPSJjb250ZW50LnZhbHVlIiBvcHRpb25MYWJl
bFBhdGg9ImNvbnRlbnQubGFiZWwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZWN0aW9uPXNlbGVjdGlvbn19PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAge3svZWFjaH19CkBAIC01NDYsMTQgKzU0OCw3IEBACiAgICAgICAgICAgICAgICAg
ICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk51bWJlciBvZiBy
dW5zPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0yPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0PgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPG9wdGlvbj4xPC9vcHRpb24+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8b3B0aW9uPjI8L29wdGlvbj4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxvcHRpb24+Mzwvb3B0aW9uPgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPG9wdGlvbj40PC9vcHRpb24+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8b3B0aW9uPjU8L29wdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxvcHRpb24+Njwvb3B0aW9uPgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L3NlbGVjdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t2aWV3
IEVtYmVyLlNlbGVjdCBjb250ZW50PXBvc3NpYmxlUmVwZXRpdGlvbkNvdW50cyB2YWx1ZT1yZXBl
dGl0aW9uQ291bnR9fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAg
ICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgpAQCAt
NTYxLDYgKzU1Niw3IEBACiAKICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCI+
U3RhcnQgQS9CIHRlc3Rpbmc8L2J1dHRvbj4KICAgICAgICAgICAgIDwvZm9ybT4KKyAgICAgICAg
ICAgIHt7L2lmfX0KICAgICAgICAge3svaWZ9fQogICAgIDwvc2NyaXB0PgogCkluZGV4OiBXZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy13aXRoLWJ1aWxkYm90LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLXdpdGgtYnVpbGRib3Qu
cHkJKHJldmlzaW9uIDApCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy13
aXRoLWJ1aWxkYm90LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTgzIEBACisjIS91c3Iv
YmluL3B5dGhvbgorCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBjb3B5
CitpbXBvcnQganNvbgoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB1cmxsaWIKK2lt
cG9ydCB1cmxsaWIyCisKKworZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1
bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1idWlsZC1yZXF1ZXN0cy11
cmwnLCByZXF1aXJlZD1UcnVlLCBoZWxwPSdVUkwgZm9yIHRoZSBidWlsZCByZXF1ZXN0cyBKU09O
IEFQSTsgZS5nLiBodHRwczovL3BlcmYud2Via2l0Lm9yZy9hcGkvYnVpbGQtcmVxdWVzdHMvYnVp
bGQud2Via2l0Lm9yZy8nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tYnVpbGQtcmVxdWVz
dHMtdXNlcicsIGhlbHA9J1RoZSB1c2VybmFtZSBmb3IgQmFzaWMgQXV0aGVudGljYXRpb24gdG8g
YWNjZXNzIHRoZSBidWlsZCByZXF1ZXN0cyBKU09OIEFQSScpCisgICAgcGFyc2VyLmFkZF9hcmd1
bWVudCgnLS1idWlsZC1yZXF1ZXN0cy1wYXNzd29yZCcsIGhlbHA9J1RoZSBwYXNzd29yZCBmb3Ig
QmFzaWMgQXV0aGVudGljYXRpb24gdG8gYWNjZXNzIHRoZSBidWlsZCByZXF1ZXN0cyBKU09OIEFQ
SScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zbGF2ZS1uYW1lJywgcmVxdWlyZWQ9VHJ1
ZSwgaGVscD0nVGhlIHNsYXZlIG5hbWUgdXNlZCB0byB1cGRhdGUgdGhlIGJ1aWxkIHJlcXVldHMg
c3RhdHVzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXNsYXZlLXBhc3N3b3JkJywgcmVx
dWlyZWQ9VHJ1ZSwgaGVscD0nVGhlIHNsYXZlIHBhc3N3b3JkIHVzZWQgdG8gdXBkYXRlIHRoZSBi
dWlsZCByZXF1ZXRzIHN0YXR1cycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1idWlsZGJv
dC11cmwnLCByZXF1aXJlZD1UcnVlLCBoZWxwPSdVUkwgZm9yIGEgYnVpbGRib3QgYnVpbGRlcjsg
ZS5nLiAiaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnLyInKQorICAgIHBhcnNlci5hZGRfYXJndW1l
bnQoJy0tYnVpbGRlci1jb25maWctanNvbicsIHJlcXVpcmVkPVRydWUsIGhlbHA9J1RoZSBwYXRo
IHRvIGEgSlNPTiBmaWxlIHRoYXQgc3BlY2lmaWVzIHdoaWNoIHRlc3QgYW5kIHBsYXRmb3JtIHdp
bGwgYmUgcG9zdGVkIHRvIHdoaWNoIGJ1aWxkZXIuICcKKyAgICAgICAgJ1RoZSBKU09OIHNob3Vs
ZCBjb250YWluIGFuIGFycmF5IG9mIGRpY3Rpb25hcmllcyB3aXRoIGtleXMgInBsYXRmb3JtIiwg
InRlc3QiLCBhbmQgImJ1aWxkZXIiICcKKyAgICAgICAgJ3dpdGggdGhlIHBsYXRmb3JtIG5hbWUg
KGUuZy4gbW91bnRhaW5saW9uKSwgdGhlIHRlc3QgcGF0aCAoZS5nLiBbIlBhcnNlciIsICJodG1s
NS1mdWxsLXJlbmRlciJdKSwgYW5kIHRoZSBidWlsZGVyIG5hbWUgKGUuZy4gQXBwbGUgTW91bnRh
aW5MaW9uIFJlbGVhc2UgKFBlcmYpKSBhcyB2YWx1ZXMuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCctLWxvb2tiYWNrLWNvdW50JywgdHlwZT1pbnQsIGRlZmF1bHQ9MTAsIGhlbHA9J1RoZSBu
dW1iZXIgb2YgYnVpbGRzIHRvIGxvb2sgYmFjayB3aGVuIGZpbmRpbmcgaW4tcHJvZ3Jlc3MgYnVp
bGRzIG9uIHRoZSBidWlsZGJvdCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zZWNvbmRz
LXRvLXNsZWVwJywgdHlwZT1mbG9hdCwgZGVmYXVsdD0xMjAsIGhlbHA9J1RoZSBzZWNvbmRzIHRv
IHNsZWVwIGJldHdlZW4gaXRlcmF0aW9ucycpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdz
KCkKKworICAgIGNvbmZpZ3VyYXRpb25zID0gbG9hZF9jb25maWcoYXJncy5idWlsZGVyX2NvbmZp
Z19qc29uLCBhcmdzLmJ1aWxkYm90X3VybC5zdHJpcCgnLycpKQorICAgIGJ1aWxkX3JlcXVlc3Rf
YXV0aCA9IHsndXNlcic6IGFyZ3MuYnVpbGRfcmVxdWVzdHNfdXNlciwgJ3Bhc3N3b3JkJzogYXJn
cy5idWlsZF9yZXF1ZXN0c19wYXNzd29yZCBvciAnJ30gaWYgYXJncy5idWlsZF9yZXF1ZXN0c191
c2VyIGVsc2UgTm9uZQorICAgIHJlcXVlc3RfdXBkYXRlcyA9IHt9CisgICAgd2hpbGUgVHJ1ZToK
KyAgICAgICAgcmVxdWVzdF91cGRhdGVzLnVwZGF0ZShmaW5kX3JlcXVlc3RfdXBkYXRlcyhjb25m
aWd1cmF0aW9ucywgYXJncy5sb29rYmFja19jb3VudCkpCisgICAgICAgIGlmIHJlcXVlc3RfdXBk
YXRlczoKKyAgICAgICAgICAgIHByaW50ICdVcGRhdGluZyB0aGUgYnVpbGQgcmVxdWVzdHMgJXMu
Li4nICUgJywgJy5qb2luKG1hcChzdHIsIHJlcXVlc3RfdXBkYXRlcy5rZXlzKCkpKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgcHJpbnQgJ05vIHVwZGF0ZXMuLi4nCisKKyAgICAgICAgcGF5
bG9hZCA9IHsnYnVpbGRSZXF1ZXN0VXBkYXRlcyc6IHJlcXVlc3RfdXBkYXRlcywgJ3NsYXZlTmFt
ZSc6IGFyZ3Muc2xhdmVfbmFtZSwgJ3NsYXZlUGFzc3dvcmQnOiBhcmdzLnNsYXZlX3Bhc3N3b3Jk
fQorICAgICAgICByZXNwb25zZSA9IHVwZGF0ZV9hbmRfZmV0Y2hfYnVpbGRfcmVxdWVzdHMoYXJn
cy5idWlsZF9yZXF1ZXN0c191cmwsIGJ1aWxkX3JlcXVlc3RfYXV0aCwgcGF5bG9hZCkKKyAgICAg
ICAgcm9vdF9zZXRzID0gcmVzcG9uc2UuZ2V0KCdyb290U2V0cycsIHt9KQorICAgICAgICBvcGVu
X3JlcXVlc3RzID0gcmVzcG9uc2UuZ2V0KCdidWlsZFJlcXVlc3RzJywgW10pCisKKyAgICAgICAg
Zm9yIHJlcXVlc3QgaW4gZmlsdGVyKGxhbWJkYSByZXF1ZXN0OiByZXF1ZXN0WydzdGF0dXMnXSA9
PSAncGVuZGluZycsIG9wZW5fcmVxdWVzdHMpOgorICAgICAgICAgICAgY29uZmlnID0gY29uZmln
X2Zvcl9yZXF1ZXN0KGNvbmZpZ3VyYXRpb25zLCByZXF1ZXN0KQorICAgICAgICAgICAgaWYgbGVu
KGNvbmZpZ1snc2NoZWR1bGVkUmVxdWVzdHMnXSkgPCAxOgorICAgICAgICAgICAgICAgIHByaW50
ICJTY2hlZHVsaW5nIHRoZSBidWlsZCByZXF1ZXN0ICVzLi4uIiAlIHN0cihyZXF1ZXN0WydpZCdd
KQorICAgICAgICAgICAgICAgIHNjaGVkdWxlX3JlcXVlc3QoY29uZmlnLCByZXF1ZXN0LCByb290
X3NldHMpCisKKyAgICAgICAgcmVxdWVzdF91cGRhdGVzID0gZmluZF9zdGFsZV9yZXF1ZXN0X3Vw
ZGF0ZXMoY29uZmlndXJhdGlvbnMsIG9wZW5fcmVxdWVzdHMsIHJlcXVlc3RfdXBkYXRlcy5rZXlz
KCkpCisgICAgICAgIGlmIHJlcXVlc3RfdXBkYXRlczoKKyAgICAgICAgICAgIHByaW50ICJGb3Vu
ZCBzdGFsZSBidWlsZCByZXF1ZXN0cyAlcy4uLiIgJSAnLCAnLmpvaW4obWFwKHN0ciwgcmVxdWVz
dF91cGRhdGVzLmtleXMoKSkpCisKKyAgICAgICAgdGltZS5zbGVlcChhcmdzLnNlY29uZHNfdG9f
c2xlZXApCisKKworZGVmIGxvYWRfY29uZmlnKGNvbmZpZ19qc29uX3BhdGgsIGJ1aWxkYm90X3Vy
bCk6CisgICAgd2l0aCBvcGVuKGNvbmZpZ19qc29uX3BhdGgpIGFzIGNvbmZpZ19qc29uOgorICAg
ICAgICBjb25maWd1cmF0aW9ucyA9IGpzb24ubG9hZChjb25maWdfanNvbikKKworICAgIGZvciBj
b25maWcgaW4gY29uZmlndXJhdGlvbnM6CisgICAgICAgIGVzY2FwZWRfYnVpbGRlcl9uYW1lID0g
dXJsbGliLnF1b3RlKGNvbmZpZ1snYnVpbGRlciddKQorICAgICAgICBjb25maWdbJ3VybCddID0g
JyVzL2J1aWxkZXJzLyVzLycgJSAoYnVpbGRib3RfdXJsLCBlc2NhcGVkX2J1aWxkZXJfbmFtZSkK
KyAgICAgICAgY29uZmlnWydqc29uVVJMJ10gPSAnJXMvanNvbi9idWlsZGVycy8lcy8nICUgKGJ1
aWxkYm90X3VybCwgZXNjYXBlZF9idWlsZGVyX25hbWUpCisgICAgICAgIGNvbmZpZ1snc2NoZWR1
bGVkUmVxdWVzdHMnXSA9IHNldCgpCisKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbnMKKworCitk
ZWYgZmluZF9yZXF1ZXN0X3VwZGF0ZXMoY29uZmlndXJhdGlvbnMsIGxvb2tiYWNrX2NvdW50KToK
KyAgICByZXF1ZXN0X3VwZGF0ZXMgPSB7fQorCisgICAgZm9yIGNvbmZpZyBpbiBjb25maWd1cmF0
aW9uczoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGVuZGluZ19idWlsZHMgPSBmZXRjaF9q
c29uKGNvbmZpZ1snanNvblVSTCddICsgJ3BlbmRpbmdCdWlsZHMnKQorICAgICAgICAgICAgc2No
ZWR1bGVkX3JlcXVlc3RzID0gZmlsdGVyKE5vbmUsIFtyZXF1ZXN0X2lkX2Zyb21fYnVpbGQoYnVp
bGQpIGZvciBidWlsZCBpbiBwZW5kaW5nX2J1aWxkc10pCisgICAgICAgICAgICBmb3IgcmVxdWVz
dF9pZCBpbiBzY2hlZHVsZWRfcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgcmVxdWVzdF91cGRh
dGVzW3JlcXVlc3RfaWRdID0geydzdGF0dXMnOiAnc2NoZWR1bGVkJywgJ3VybCc6IGNvbmZpZ1sn
dXJsJ119CisgICAgICAgICAgICBjb25maWdbJ3NjaGVkdWxlZFJlcXVlc3RzJ10gPSBzZXQoc2No
ZWR1bGVkX3JlcXVlc3RzKQorICAgICAgICBleGNlcHQgKElPRXJyb3IsIFZhbHVlRXJyb3IpIGFz
IGVycm9yOgorICAgICAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgIkZhaWxlZCB0byBmZXRj
aCBwZW5kaW5nIGJ1aWxkcyBmb3IgJXM6ICVzIiAlIChjb25maWdbJ2J1aWxkZXInXSwgc3RyKGVy
cm9yKSkKKworICAgIGZvciBjb25maWcgaW4gY29uZmlndXJhdGlvbnM6CisgICAgICAgIGZvciBp
IGluIHJhbmdlKDEsIGxvb2tiYWNrX2NvdW50ICsgMSk6CisgICAgICAgICAgICBidWlsZF9lcnJv
ciA9IE5vbmUKKyAgICAgICAgICAgIGJ1aWxkX2luZGV4ID0gLWkKKyAgICAgICAgICAgIHRyeToK
KyAgICAgICAgICAgICAgICBidWlsZCA9IGZldGNoX2pzb24oY29uZmlnWydqc29uVVJMJ10gKyAn
YnVpbGRzLyVkJyAlIGJ1aWxkX2luZGV4KQorICAgICAgICAgICAgICAgIHJlcXVlc3RfaWQgPSBy
ZXF1ZXN0X2lkX2Zyb21fYnVpbGQoYnVpbGQpCisgICAgICAgICAgICAgICAgaWYgbm90IHJlcXVl
c3RfaWQ6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBp
bl9wcm9ncmVzcyA9IGJ1aWxkLmdldCgnY3VycmVudFN0ZXAnKSBhbmQgYnVpbGQuZ2V0KCdldGEn
KQorICAgICAgICAgICAgICAgIGlmIGluX3Byb2dyZXNzOgorICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0X3VwZGF0ZXNbcmVxdWVzdF9pZF0gPSB7J3N0YXR1cyc6ICdydW5uaW5nJywgJ3VybCc6
IGNvbmZpZ1sndXJsJ119CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ1snc2NoZWR1bGVkUmVx
dWVzdHMnXS5kaXNjYXJkKHJlcXVlc3RfaWQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgdXJsID0gY29uZmlnWyd1cmwnXSArICdidWlsZHMvJyArIHN0cihidWls
ZFsnbnVtYmVyJ10pCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfdXBkYXRlc1tyZXF1ZXN0
X2lkXSA9IHsnc3RhdHVzJzogJ2ZhaWxlZElmTm90Q29tcGxldGVkJywgJ3VybCc6IHVybH0KKyAg
ICAgICAgICAgIGV4Y2VwdCB1cmxsaWIyLkhUVFBFcnJvciBhcyBlcnJvcjoKKyAgICAgICAgICAg
ICAgICBpZiBlcnJvci5jb2RlID09IDQwNDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAg
ICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBidWlsZF9lcnJvciA9IGVy
cm9yCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlcnJvcjoKKyAgICAgICAgICAg
ICAgICBidWlsZF9lcnJvciA9IGVycm9yCisgICAgICAgICAgICBpZiBidWlsZF9lcnJvcjoKKyAg
ICAgICAgICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiRmFpbGVkIHRvIGZldGNoIGJ1aWxk
ICVkIGZvciAlczogJXMiICUgKGJ1aWxkX2luZGV4LCBjb25maWdbJ2J1aWxkZXInXSwgc3RyKGJ1
aWxkX2Vycm9yKSkKKworICAgIHJldHVybiByZXF1ZXN0X3VwZGF0ZXMKKworCitkZWYgdXBkYXRl
X2FuZF9mZXRjaF9idWlsZF9yZXF1ZXN0cyhidWlsZF9yZXF1ZXN0c191cmwsIGJ1aWxkX3JlcXVl
c3RfYXV0aCwgcGF5bG9hZCk6CisgICAgdHJ5OgorICAgICAgICByZXNwb25zZSA9IGZldGNoX2pz
b24oYnVpbGRfcmVxdWVzdHNfdXJsLCBwYXlsb2FkPWpzb24uZHVtcHMocGF5bG9hZCksIGF1dGg9
YnVpbGRfcmVxdWVzdF9hdXRoKQorICAgICAgICBpZiByZXNwb25zZVsnc3RhdHVzJ10gIT0gJ09L
JzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IocmVzcG9uc2VbJ3N0YXR1cyddKQorICAg
ICAgICByZXR1cm4gcmVzcG9uc2UKKyAgICBleGNlcHQgKElPRXJyb3IsIFZhbHVlRXJyb3IpIGFz
IGVycm9yOgorICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAnRmFpbGVkIHRvIHVwZGF0ZSBv
ciBmZXRjaCBidWlsZCByZXF1ZXN0cyBhdCAlczogJXMnICUgKGJ1aWxkX3JlcXVlc3RzX3VybCwg
c3RyKGVycm9yKSkKKyAgICByZXR1cm4ge30KKworCitkZWYgZmluZF9zdGFsZV9yZXF1ZXN0X3Vw
ZGF0ZXMoY29uZmlndXJhdGlvbnMsIG9wZW5fcmVxdWVzdHMsIHJlcXVlc3RzX29uX2J1aWxkYm90
KToKKyAgICByZXF1ZXN0X3VwZGF0ZXMgPSB7fQorICAgIGZvciByZXF1ZXN0IGluIG9wZW5fcmVx
dWVzdHM6CisgICAgICAgIHJlcXVlc3RfaWQgPSBpbnQocmVxdWVzdFsnaWQnXSkKKyAgICAgICAg
c2hvdWxkX2JlX29uX2J1aWxkYm90ID0gcmVxdWVzdFsnc3RhdHVzJ10gaW4gKCdzY2hlZHVsZWQn
LCAncnVubmluZycpCisgICAgICAgIGlmIHNob3VsZF9iZV9vbl9idWlsZGJvdCBhbmQgcmVxdWVz
dF9pZCBub3QgaW4gcmVxdWVzdHNfb25fYnVpbGRib3Q6CisgICAgICAgICAgICBjb25maWcgPSBj
b25maWdfZm9yX3JlcXVlc3QoY29uZmlndXJhdGlvbnMsIHJlcXVlc3QpCisgICAgICAgICAgICBp
ZiBjb25maWc6CisgICAgICAgICAgICAgICAgcmVxdWVzdF91cGRhdGVzW3JlcXVlc3RfaWRdID0g
eydzdGF0dXMnOiAnZmFpbGVkJywgJ3VybCc6IGNvbmZpZ1sndXJsJ119CisgICAgcmV0dXJuIHJl
cXVlc3RfdXBkYXRlcworCisKK2RlZiBzY2hlZHVsZV9yZXF1ZXN0KGNvbmZpZywgcmVxdWVzdCwg
cm9vdF9zZXRzKToKKyAgICByZXBsYWNlbWVudHMgPSByb290X3NldHMuZ2V0KHJlcXVlc3RbJ3Jv
b3RTZXQnXSwge30pCisgICAgcmVwbGFjZW1lbnRzWydidWlsZFJlcXVlc3QnXSA9IHJlcXVlc3Rb
J2lkJ10KKworICAgIHBheWxvYWQgPSB7fQorICAgIGZvciBwcm9wZXJ0eV9uYW1lLCBwcm9wZXJ0
eV92YWx1ZSBpbiBjb25maWdbJ2FyZ3VtZW50cyddLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Ig
a2V5LCB2YWx1ZSBpbiByZXBsYWNlbWVudHMuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBwcm9w
ZXJ0eV92YWx1ZSA9IHByb3BlcnR5X3ZhbHVlLnJlcGxhY2UoJyQnICsga2V5LCB2YWx1ZSkKKyAg
ICAgICAgcGF5bG9hZFtwcm9wZXJ0eV9uYW1lXSA9IHByb3BlcnR5X3ZhbHVlCisKKyAgICB0cnk6
CisgICAgICAgIHVybGxpYjIudXJsb3Blbih1cmxsaWIyLlJlcXVlc3QoY29uZmlnWyd1cmwnXSAr
ICdmb3JjZScpLCB1cmxsaWIudXJsZW5jb2RlKHBheWxvYWQpKQorICAgICAgICBjb25maWdbJ3Nj
aGVkdWxlZFJlcXVlc3RzJ10uYWRkKHJlcXVlc3RbJ2lkJ10pCisgICAgZXhjZXB0IChJT0Vycm9y
LCBWYWx1ZUVycm9yKSBhcyBlcnJvcjoKKyAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgIkZh
aWxlZCB0byBmZXRjaCBwZW5kaW5nIGJ1aWxkcyBmb3IgJXM6ICVzIiAlIChjb25maWdbJ2J1aWxk
ZXInXSwgc3RyKGVycm9yKSkKKworCitkZWYgY29uZmlnX2Zvcl9yZXF1ZXN0KGNvbmZpZ3VyYXRp
b25zLCByZXF1ZXN0KToKKyAgICBmb3IgY29uZmlnIGluIGNvbmZpZ3VyYXRpb25zOgorICAgICAg
ICBpZiBjb25maWdbJ3BsYXRmb3JtJ10gPT0gcmVxdWVzdFsncGxhdGZvcm0nXSBhbmQgY29uZmln
Wyd0ZXN0J10gPT0gcmVxdWVzdFsndGVzdCddOgorICAgICAgICAgICAgcmV0dXJuIGNvbmZpZwor
ICAgIHJldHVybiBOb25lCisKKworZGVmIGZldGNoX2pzb24odXJsLCBhdXRoPXt9LCBwYXlsb2Fk
PU5vbmUpOgorICAgIHJlcXVlc3QgPSB1cmxsaWIyLlJlcXVlc3QodXJsKQorICAgIGlmIGF1dGg6
CisgICAgICAgIHJlcXVlc3QuYWRkX2hlYWRlcignQXV0aG9yaXphdGlvbicsICJCYXNpYyAlcyIg
JSBiYXNlNjQuZW5jb2Rlc3RyaW5nKCclczolcycgJSAoYXV0aFsndXNlciddLCBhdXRoWydwYXNz
d29yZCddKSkucnN0cmlwKCdcbicpKQorICAgIHJlc3BvbnNlID0gdXJsbGliMi51cmxvcGVuKHJl
cXVlc3QsIHBheWxvYWQpLnJlYWQoKQorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGpzb24ubG9h
ZHMocmVzcG9uc2UpCisgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXJyb3I6CisgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3Ioc3RyKGVycm9yKSArICdcbicgKyByZXNwb25zZSkKKworCitkZWYgcHJv
cGVydHlfdmFsdWVfZnJvbV9idWlsZChidWlsZCwgbmFtZSk6CisgICAgZm9yIHByb3AgaW4gYnVp
bGQuZ2V0KCdwcm9wZXJ0aWVzJywgW10pOgorICAgICAgICBpZiBwcm9wWzBdID09IG5hbWU6Cisg
ICAgICAgICAgICByZXR1cm4gcHJvcFsxXQorICAgIHJldHVybiBOb25lCisKKworZGVmIHJlcXVl
c3RfaWRfZnJvbV9idWlsZChidWlsZCk6CisgICAgam9iX2lkID0gcHJvcGVydHlfdmFsdWVfZnJv
bV9idWlsZChidWlsZCwgJ2pvYmlkJykKKyAgICByZXR1cm4gaW50KGpvYl9pZCkgaWYgam9iX2lk
IGFuZCBqb2JfaWQuaXNkaWdpdCgpIGVsc2UgTm9uZQorCisKK2lmIF9fbmFtZV9fID09ICJfX21h
aW5fXyI6CisgICAgbWFpbigpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdG9vbHMvc3luYy13aXRoLWJ1aWxkYm90LnB5Cl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2
bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQo=
</data>
<flag name="review"
          id="269330"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>