<?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>76215</bug_id>
          
          <creation_ts>2012-01-12 14:26:56 -0800</creation_ts>
          <short_desc>webkitpy: make mapping a port name to a port completely data-driven</short_desc>
          <delta_ts>2012-01-17 12:33:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>76356</dependson>
    
    <dependson>76357</dependson>
    
    <dependson>76360</dependson>
          <blocked>75037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>535162</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-12 14:26:56 -0800</bug_when>
    <thetext>webkitpy: make mapping a port name to a port completely data-driven</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535179</commentid>
    <comment_count>1</comment_count>
      <attachid>122312</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-12 14:38:03 -0800</bug_when>
    <thetext>Created attachment 122312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535185</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-12 14:42:14 -0800</bug_when>
    <thetext>Okay, this is roughly the last patch needed to finish cleaning up how ports are constructed (at least my best stab at it). It&apos;s a bit large; I could break the cleanup in factory.py out into a separate patch but I thought leaving it in would be helpful to show the final end state as you&apos;re looking at the other changes (including how port_name and determine_full_port_name are used).

With this change, adding a new implementation requires adding one line to factory.py (in the PORT_CLASSES list) plus implementing the actual port class.

Also, with the exception of supporting the --chromium flag and the &apos;chromium-gpu&apos; port name, the only non-data-driven logic in the factory class is the logic for picking a default port for a given platform.

Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535195</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-12 14:52:30 -0800</bug_when>
    <thetext>I&apos;m excited about the idea behind this patch, but this patch is slightly larger than I can chew on at the moment.  I&apos;ll look again this evening when things are less hectic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535222</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-12 15:25:08 -0800</bug_when>
    <thetext>no hurry, and I&apos;ll be able to try and split it up into two or three chunks if that&apos;ll help. Let me know after you take another (quick?) look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535224</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-12 15:28:54 -0800</bug_when>
    <thetext>I will note that this is the last patch in the series so it&apos;s not blocking anything else I&apos;m working on. We can take our time w/ this ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537291</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-17 12:33:47 -0800</bug_when>
    <thetext>closing; all dependent bugs have landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122312</attachid>
            <date>2012-01-12 14:38:03 -0800</date>
            <delta_ts>2012-01-15 20:05:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76215-20120112143802.patch</filename>
            <type>text/plain</type>
            <size>51252</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0ODQzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjRjMjQ0MzI0MzZlMTM1MGI2MzZjZTc0NWIxYzgzYmMz
NDIzODlmYy4uMTA0OWI2MjVmZGVmYjNlNDllMzRkMDM2MDUyYWY3MWYzZGRmODMwZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEx
MiBAQAogMjAxMi0wMS0xMiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAor
ICAgICAgICB3ZWJraXRweTogbWFrZSBtYXBwaW5nIGEgcG9ydCBuYW1lIHRvIGEgcG9ydCBjb21w
bGV0ZWx5IGRhdGEtZHJpdmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NjIxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgY2hhbmdlIGNvbXBsZXRlcyB0aGUgcmVtb3ZhbCBvZiB2ZXJzaW9uLXBh
cnNpbmcgbG9naWMgZnJvbQorICAgICAgICB0aGUgcG9ydCBjb25zdHJ1Y3RvcnMgYW5kIG1ha2Vz
IHRoZSBQb3J0RmFjdG9yeSBsb2dpYyBjb21wbGV0ZWx5CisgICAgICAgIGRhdGEgZHJpdmVuLiBF
YWNoIFBvcnQgY2xhc3MgaXMgbm93IHJlcXVpcmVkIHRvIGltcGxlbWVudCBhCisgICAgICAgICdw
b3J0X25hbWUnIGZpZWxkIHRoYXQgd2lsbCBtYXRjaCB0aGUgc3RhcnQgb2YgYWxsIHBvcnRzCisg
ICAgICAgIGNvbnN0cnVjdGVkIGJ5IHRoaXMgY2xhc3MgYW5kIGEgJ2RldGVybWluZV9mdWxsX3Bv
cnRfbmFtZScgZmllbGQKKyAgICAgICAgdGhhdCB3aWxsIG1ha2UgdGhlIHBvcnQgZnVsbHktcXVh
bGlmaWVkLiBFdmVyeXRoaW5nIGVsc2UgYmVjb21lcworICAgICAgICBhIHRhYmxlIGxvb2t1cC4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYXBwbGUucHk6
CisgICAgICAgIChBcHBsZVBvcnQuX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQpOgorICAgICAgICAo
UG9ydC5kZXRlcm1pbmVfcG9ydF9uYW1lKToKKyAgICAgICAgKFBvcnQuX19pbml0X18pOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6Cisg
ICAgICAgIChDaHJvbWl1bVBvcnQuZm9yKToKKyAgICAgICAgKENocm9taXVtUG9ydC5fX2luaXRf
Xyk6CisgICAgICAgIChDaHJvbWl1bVBvcnQpOgorICAgICAgICAoQ2hyb21pdW1Qb3J0Ll9jaHJv
bWl1bV9iYXNlX2Rpcik6CisgICAgICAgIChDaHJvbWl1bVBvcnQucGF0aF9mcm9tX2Nocm9taXVt
X2Jhc2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fZ3B1LnB5OgorICAgICAgICAoQ2hyb21pdW1HcHVMaW51eFBvcnQpOgorICAgICAgICAo
Q2hyb21pdW1HcHVMaW51eFBvcnQuX19pbml0X18pOgorICAgICAgICAoQ2hyb21pdW1HcHVNYWNQ
b3J0KToKKyAgICAgICAgKENocm9taXVtR3B1TWFjUG9ydC5fX2luaXRfXyk6CisgICAgICAgIChD
aHJvbWl1bUdwdVdpblBvcnQpOgorICAgICAgICAoQ2hyb21pdW1HcHVXaW5Qb3J0Ll9faW5pdF9f
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2xpbnV4LnB5OgorICAgICAgICAoQ2hyb21pdW1MaW51eFBvcnQpOgorICAgICAgICAoQ2hyb21p
dW1MaW51eFBvcnQuZGV0ZXJtaW5lX3BvcnRfbmFtZSk6CisgICAgICAgIChDaHJvbWl1bUxpbnV4
UG9ydC5fZGV0ZXJtaW5lX2RyaXZlcl9wYXRoX3N0YXRpY2FsbHkpOgorICAgICAgICAoQ2hyb21p
dW1MaW51eFBvcnQuX3N0YXRpY19idWlsZF9wYXRoKToKKyAgICAgICAgKENocm9taXVtTGludXhQ
b3J0Ll9kZXRlcm1pbmVfYXJjaGl0ZWN0dXJlKToKKyAgICAgICAgKENocm9taXVtTGludXhQb3J0
Ll9faW5pdF9fKToKKyAgICAgICAgKENocm9taXVtTGludXhQb3J0Ll9idWlsZF9wYXRoKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5w
eToKKyAgICAgICAgKENocm9taXVtTWFjUG9ydCk6CisgICAgICAgIChDaHJvbWl1bU1hY1BvcnQu
ZGV0ZXJtaW5lX3BvcnRfbmFtZSk6CisgICAgICAgIChDaHJvbWl1bU1hY1BvcnQuX19pbml0X18p
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
d2luLnB5OgorICAgICAgICAoQ2hyb21pdW1XaW5Qb3J0KToKKyAgICAgICAgKENocm9taXVtV2lu
UG9ydC5kZXRlcm1pbmVfcG9ydF9uYW1lKToKKyAgICAgICAgKENocm9taXVtV2luUG9ydC5fX2lu
aXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnly
dW4ucHk6CisgICAgICAgIChEcnlSdW5Qb3J0KToKKyAgICAgICAgKERyeVJ1blBvcnQuZGV0ZXJt
aW5lX3BvcnRfbmFtZSk6CisgICAgICAgIChEcnlSdW5Qb3J0Ll9faW5pdF9fKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2VmbC5weToKKyAgICAgICAgKEVm
bFBvcnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFj
dG9yeS5weToKKyAgICAgICAgKFBvcnRGYWN0b3J5KToKKyAgICAgICAgKFBvcnRGYWN0b3J5Ll9k
ZWZhdWx0X3BvcnQpOgorICAgICAgICAoUG9ydEZhY3RvcnkuZ2V0KToKKyAgICAgICAgKFBvcnRG
YWN0b3J5LmdldC5pbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5OgorICAgICAgICAoRmFjdG9yeVRlc3QuYXNzZXJ0X3Bv
cnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xl
X2Nocm9tZS5weToKKyAgICAgICAgKEdvb2dsZUNocm9tZUxpbnV4MzJQb3J0KToKKyAgICAgICAg
KEdvb2dsZUNocm9tZUxpbnV4MzJQb3J0LmRldGVybWluZV9wb3J0X25hbWUpOgorICAgICAgICAo
R29vZ2xlQ2hyb21lTGludXg2NFBvcnQpOgorICAgICAgICAoR29vZ2xlQ2hyb21lTGludXg2NFBv
cnQuZGV0ZXJtaW5lX3BvcnRfbmFtZSk6CisgICAgICAgIChHb29nbGVDaHJvbWVNYWNQb3J0KToK
KyAgICAgICAgKEdvb2dsZUNocm9tZU1hY1BvcnQuZGV0ZXJtaW5lX3BvcnRfbmFtZSk6CisgICAg
ICAgIChHb29nbGVDaHJvbWVXaW5Qb3J0KToKKyAgICAgICAgKEdvb2dsZUNocm9tZVdpblBvcnQu
ZGV0ZXJtaW5lX3BvcnRfbmFtZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9ndGsucHk6CisgICAgICAgIChHdGtQb3J0KToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weToKKyAgICAgICAgKE1hY1BvcnQpOgor
ICAgICAgICAoTWFjUG9ydC5kZXRlcm1pbmVfcG9ydF9uYW1lKToKKyAgICAgICAgKE1hY1BvcnQu
X19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
bWFjX3VuaXR0ZXN0LnB5OgorICAgICAgICAodGVzdF92ZXJzaW9ucyk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydC5weToKKyAgICAgICAgKE1v
Y2tEUlRQb3J0KToKKyAgICAgICAgKE1vY2tEUlRQb3J0LmRldGVybWluZV9wb3J0X25hbWUpOgor
ICAgICAgICAoTW9ja0RSVFBvcnQuX19pbml0X18pOgorICAgICAgICAoTW9ja0RSVCk6CisgICAg
ICAgIChNb2NrRFJULmRldGVybWluZV9wb3J0X25hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weToKKyAgICAgICAgKFBvcnRU
ZXN0Q2FzZS5tYWtlX3BvcnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvcXQucHk6CisgICAgICAgIChRdFBvcnQpOgorICAgICAgICAoUXRQb3J0LmRldGVy
bWluZV9wb3J0X25hbWUpOgorICAgICAgICAoUXRQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgIChUZXN0
UG9ydCk6CisgICAgICAgIChUZXN0UG9ydC5kZXRlcm1pbmVfcG9ydF9uYW1lKToKKyAgICAgICAg
KFRlc3RQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAgKFdlYktpdFBvcnQuX19pbml0X18pOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2luLnB5OgorICAgICAg
ICAoV2luUG9ydCk6CisgICAgICAgIChXaW5Qb3J0LmRldGVybWluZV9wb3J0X25hbWUpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXIucHk6
CisgICAgICAgIChnZXRfdGVzdF9iYXNlbGluZXMuQWxsUGxhdGZvcm1zUG9ydC5fX2luaXRfXyk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZl
cl91bml0dGVzdC5weToKKyAgICAgICAgKGdldF90ZXN0X2NvbmZpZy5UZXN0TWFjUG9ydCk6Cisg
ICAgICAgIChnZXRfdGVzdF9jb25maWcpOgorCisyMDEyLTAxLTEyICBEaXJrIFByYW5rZSAgPGRw
cmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIHdlYmtpdHB5OiBjbGVhbiB1cCBwb3J0IHVu
aXQgdGVzdHMgaW4gcHJlcGFyYXRpb24gZm9yIG1ha2luZyBwb3J0X25hbWUgbWFuZGF0b3J5CiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjEyMwogCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2FwcGxl
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcHBsZS5weQpp
bmRleCBjMjM4Y2EzZTRmYzhhMzliMzEwOWNmOWY2OGYzNDRlMWYxMTc2OWFjLi5jNzJlNmZkZWE3
NTdhYTA1NTExODg5MTRhNzZmMGE5NzNmNThhOTE5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2FwcGxlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYXBwbGUucHkKQEAgLTU2LDIzICs1NiwxMiBAQCBj
bGFzcyBBcHBsZVBvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgICMgaW5zdGVhZCBvZiB0aGUgaW5k
aXZpZHVhbCBwb3J0IGNvbnN0cnVjdG9ycy4KICAgICAgICAgcmV0dXJuIHBvcnRfbmFtZVtsZW4o
c2VsZi5wb3J0X25hbWUgKyAnLScpOl0KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBw
b3J0X25hbWU9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBwb3J0X25hbWUgPSBwb3J0X25hbWUg
b3Igc2VsZi5wb3J0X25hbWUKLSAgICAgICAgV2ViS2l0UG9ydC5fX2luaXRfXyhzZWxmLCBob3N0
LCBwb3J0X25hbWU9cG9ydF9uYW1lLCAqKmt3YXJncykKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
aG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncyk6CisgICAgICAgIFdlYktpdFBvcnQuX19pbml0X18o
c2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncykKIAotICAgICAgICAjIEZJWE1FOiBUaGlz
IHNvcnQgb2YgcGFyc2luZyBiZWxvbmdzIGluIGZhY3RvcnkucHkhCi0gICAgICAgIGlmIHBvcnRf
bmFtZSA9PSAnJXMtd2syJyAlIHNlbGYucG9ydF9uYW1lOgotICAgICAgICAgICAgcG9ydF9uYW1l
ID0gc2VsZi5wb3J0X25hbWUKLSAgICAgICAgICAgICMgRklYTUU6IFRoaXMgbWF5IGJlIHdyb25n
LCBzaW5jZSBvcHRpb25zIGlzIGEgZ2xvYmFsIHByb3BlcnR5LCBhbmQgdGhlIHBvcnRfbmFtZSBp
cyBzcGVjaWZpYyB0byB0aGlzIG9iamVjdD8KLSAgICAgICAgICAgIHNlbGYuc2V0X29wdGlvbl9k
ZWZhdWx0KCd3ZWJraXRfdGVzdF9ydW5uZXInLCBUcnVlKQotCi0gICAgICAgIGlmIHBvcnRfbmFt
ZSA9PSBzZWxmLnBvcnRfbmFtZToKLSAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBob3N0LnBs
YXRmb3JtLm9zX3ZlcnNpb24KLSAgICAgICAgICAgIHNlbGYuX25hbWUgPSBzZWxmLnBvcnRfbmFt
ZSArICctJyArIHNlbGYuX3ZlcnNpb24KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFsbG93
ZWRfcG9ydF9uYW1lcyA9IHNlbGYuVkVSU0lPTl9GQUxMQkFDS19PUkRFUiArIFtzZWxmLm9wZXJh
dGluZ19zeXN0ZW0oKSArICItZnV0dXJlIl0KLSAgICAgICAgICAgIGFzc2VydCBwb3J0X25hbWUg
aW4gYWxsb3dlZF9wb3J0X25hbWVzLCAiJXMgaXMgbm90IGluICVzIiAlIChwb3J0X25hbWUsIGFs
bG93ZWRfcG9ydF9uYW1lcykKLSAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBzZWxmLl9zdHJp
cF9wb3J0X25hbWVfcHJlZml4KHBvcnRfbmFtZSkKKyAgICAgICAgYWxsb3dlZF9wb3J0X25hbWVz
ID0gc2VsZi5WRVJTSU9OX0ZBTExCQUNLX09SREVSICsgW3NlbGYub3BlcmF0aW5nX3N5c3RlbSgp
ICsgIi1mdXR1cmUiXQorICAgICAgICBhc3NlcnQgcG9ydF9uYW1lIGluIGFsbG93ZWRfcG9ydF9u
YW1lcywgIiVzIGlzIG5vdCBpbiAlcyIgJSAocG9ydF9uYW1lLCBhbGxvd2VkX3BvcnRfbmFtZXMp
CisgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBzZWxmLl9zdHJpcF9wb3J0X25hbWVfcHJlZml4KHBv
cnRfbmFtZSkKIAogICAgICMgRklYTUU6IEEgbW9yZSBzb3BoaXNpdGNhdGVkIHZlcnNpb24gb2Yg
dGhpcyBmdW5jdGlvbiBzaG91bGQgbW92ZSB0byBXZWJLaXRQb3J0IGFuZCByZXBsYWNlIGFsbCBj
YWxscyB0byBuYW1lKCkuCiAgICAgZGVmIF9wb3J0X25hbWVfd2l0aF92ZXJzaW9uKHNlbGYpOgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5Cmlu
ZGV4IDQ4Yzc4ZGEyMGMwNWQ2NTRkNDczYTJhZTQxY2ZlMTAwOTI2NWRhMGUuLjE1OGVkYTIwZGY5
NWQzOWU1ZWI0N2RmZDI2NzhiYzEzYjkwODE4MzkgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTgxLDE3ICs4MSwzMSBAQCBjbGFz
cyBEdW1teU9wdGlvbnMob2JqZWN0KToKIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAiIiJBYnN0
cmFjdCBjbGFzcyBmb3IgUG9ydC1zcGVjaWZpYyBob29rcyBmb3IgdGhlIGxheW91dF90ZXN0IHBh
Y2thZ2UuIiIiCiAKLSAgICBwb3J0X25hbWUgPSBOb25lICAjIFN1YmNsYXNzZXMgb3ZlcnJpZGUg
dGhpcworICAgICMgU3ViY2xhc3NlcyBvdmVycmlkZSB0aGlzLiBUaGlzIHNob3VsZCBpbmRpY2F0
ZSB0aGUgYmFzaWMgaW1wbGVtZW50YXRpb24KKyAgICAjIHBhcnQgb2YgdGhlIHBvcnQgbmFtZSwg
ZS5nLiwgJ2Nocm9taXVtLW1hYycsICd3aW4nLCAnZ3RrJzsgdGhlcmUgaXMgcHJvYmFibHkgKD8p
CisgICAgIyBvbmUgdW5pcXVlIHZhbHVlIHBlciBjbGFzcy4KKworICAgICMgRklYTUU6IFdlIHNo
b3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBzb21ldGhpbmcgbGlrZSAnaW1wbGVtZW50YXRp
b25fbmFtZScuCisgICAgcG9ydF9uYW1lID0gTm9uZQogCiAgICAgIyBUZXN0IG5hbWVzIHJlc2Vt
YmxlIHVuaXggcmVsYXRpdmUgcGF0aHMsIGFuZCB1c2UgJy8nIGFzIGEgZGlyZWN0b3J5IHNlcGFy
YXRvci4KICAgICBURVNUX1BBVEhfU0VQQVJBVE9SID0gJy8nCiAKICAgICBBTExfQlVJTERfVFlQ
RVMgPSAoJ2RlYnVnJywgJ3JlbGVhc2UnKQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRl
dGVybWluZV9mdWxsX3BvcnRfbmFtZShjbHMsIGhvc3QsIG9wdGlvbnMsIHBvcnRfbmFtZSk6Cisg
ICAgICAgICIiIlJldHVybiBhIGZ1bGx5LXNwZWNpZmllZCBwb3J0IG5hbWUgdGhhdCBjYW4gYmUg
dXNlZCB0byBjb25zdHJ1Y3Qgb2JqZWN0cy4iIiIKKyAgICAgICAgIyBTdWJjbGFzc2VzIHdpbGwg
dXN1YWxseSBvdmVycmlkZSB0aGlzLgorICAgICAgICByZXR1cm4gY2xzLnBvcnRfbmFtZQorCiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZT1Ob25lLCBvcHRpb25zPU5vbmUs
IGNvbmZpZz1Ob25lLCAqKmt3YXJncyk6CiAKKyAgICAgICAgIyBUaGlzIHZhbHVlIG1heSBiZSBk
aWZmZXJlbnQgZnJvbSBjbHMucG9ydF9uYW1lIGJ5IGhhdmluZyB2ZXJzaW9uIG1vZGlmaWVycwor
ICAgICAgICAjIGFuZCBvdGhlciBmaWVsZHMgYXBwZW5kZWQgdG8gaXQgKGZvciBleGFtcGxlLCAn
cXQtYXJtJyBvciAnbWFjLXdrMicpLgorICAgICAgICBzZWxmLl9uYW1lID0gcG9ydF9uYW1lIG9y
IHNlbGYucG9ydF9uYW1lCisKICAgICAgICAgIyBUaGVzZSBhcmUgZGVmYXVsdCB2YWx1ZXMgdGhh
dCBzaG91bGQgYmUgb3ZlcnJpZGRlbiBpbiBhIHN1YmNsYXNzZXMuCi0gICAgICAgIHNlbGYuX25h
bWUgPSBwb3J0X25hbWUgb3Igc2VsZi5wb3J0X25hbWUgICMgU3ViY2xhc3NlcyBtYXkgYXBwZW5k
IGEgLVZFUlNJT04gKGxpa2UgbWFjLWxlb3BhcmQpIG9yIG90aGVyIHF1YWxpZmllcnMuCiAgICAg
ICAgIHNlbGYuX3ZlcnNpb24gPSAnJwogICAgICAgICBzZWxmLl9hcmNoaXRlY3R1cmUgPSAneDg2
JwogICAgICAgICBzZWxmLl9ncmFwaGljc190eXBlID0gJ2NwdScKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IGE2ZjYx
MTIzZGU1MjZkOTFlMjJlZWJkZGZjNjY4NjE4YzBhNGJkODcuLmUyYWFkMTNmNmNmMzg3YWY5NzI3
ZWNmNmNjZmNiZjAyYmYzMThjMmMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNTgsOCArNTgsNiBAQCBfbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiBjbGFzcyBDaHJvbWl1bVBvcnQoUG9ydCk6CiAg
ICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgQ2hyb21pdW0gaW1wbGVtZW50YXRpb25zIG9m
IHRoZSBQb3J0IGNsYXNzLiIiIgogCi0gICAgcG9ydF9uYW1lID0gImNocm9taXVtIgotCiAgICAg
QUxMX1NZU1RFTVMgPSAoCiAgICAgICAgICgnbGVvcGFyZCcsICd4ODYnKSwKICAgICAgICAgKCdz
bm93bGVvcGFyZCcsICd4ODYnKSwKQEAgLTg1LDExICs4Myw5IEBAIGNsYXNzIENocm9taXVtUG9y
dChQb3J0KToKICAgICAgICAgJ2xpbnV4JzogWydsdWNpZCddLAogICAgIH0KIAotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBob3N0LCAqKmt3YXJncyk6Ci0gICAgICAgIFBvcnQuX19pbml0X18oc2Vs
ZiwgaG9zdCwgKiprd2FyZ3MpCi0gICAgICAgICMgQWxsIHN1Yi1jbGFzc2VzIG92ZXJyaWRlIHRo
aXMsIGJ1dCB3ZSBuZWVkIGFuIGluaXRpYWwgdmFsdWUgZm9yIHRlc3RpbmcuCi0gICAgICAgIHNl
bGYuX3ZlcnNpb24gPSAneHAnCi0gICAgICAgIHNlbGYuX2Nocm9taXVtX2Jhc2VfZGlyID0gTm9u
ZQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKToKKyAg
ICAgICAgUG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKQorICAg
ICAgICBzZWxmLl9jaHJvbWl1bV9iYXNlX2Rpcl9wYXRoID0gTm9uZQogCiAgICAgZGVmIF9jaGVj
a19maWxlX2V4aXN0cyhzZWxmLCBwYXRoX3RvX2ZpbGUsIGZpbGVfZGVzY3JpcHRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZV9zdGVwPU5vbmUsIGxvZ2dpbmc9VHJ1ZSk6
CkBAIC0yMTcsMTcgKzIxMywyMiBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoUG9ydCk6CiAgICAgICAg
ICAgICBzZWxmLl9maWxlc3lzdGVtLnJtdHJlZShzdHIodGVtcGRpcikpCiAgICAgICAgIHJldHVy
biAocmVzdWx0LCAwKSAgIyBGSVhNRTogaG93IHRvIGdldCAlIGRpZmY/CiAKKyAgICBAY2xhc3Nt
ZXRob2QKKyAgICBkZWYgX2Nocm9taXVtX2Jhc2VfZGlyKGNscywgZmlsZXN5c3RlbSwgKmNvbXBz
KToKKyAgICAgICAgbW9kdWxlX3BhdGggPSBmaWxlc3lzdGVtLnBhdGhfdG9fbW9kdWxlKGNscy5f
X21vZHVsZV9fKQorICAgICAgICBvZmZzZXQgPSBtb2R1bGVfcGF0aC5maW5kKCd0aGlyZF9wYXJ0
eScpCisgICAgICAgIGlmIG9mZnNldCA9PSAtMToKKyAgICAgICAgICAgIHJldHVybiBmaWxlc3lz
dGVtLmpvaW4obW9kdWxlX3BhdGhbMDptb2R1bGVfcGF0aC5maW5kKCdUb29scycpXSwgJ1NvdXJj
ZScsICdXZWJLaXQnLCAnY2hyb21pdW0nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0
dXJuIG1vZHVsZV9wYXRoWzA6b2Zmc2V0XQorCisKICAgICBkZWYgcGF0aF9mcm9tX2Nocm9taXVt
X2Jhc2Uoc2VsZiwgKmNvbXBzKToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgZnVsbCBwYXRoIHRv
IHBhdGggbWFkZSBieSBqb2luaW5nIHRoZSB0b3Agb2YgdGhlCiAgICAgICAgIENocm9taXVtIHNv
dXJjZSB0cmVlIGFuZCB0aGUgbGlzdCBvZiBwYXRoIGNvbXBvbmVudHMgaW4gfCpjb21wc3wuIiIi
Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9jaHJvbWl1bV9iYXNlX2RpcjoKLSAgICAgICAgICAgIGNo
cm9taXVtX21vZHVsZV9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5wYXRoX3RvX21vZHVsZShzZWxm
Ll9fbW9kdWxlX18pCi0gICAgICAgICAgICBvZmZzZXQgPSBjaHJvbWl1bV9tb2R1bGVfcGF0aC5m
aW5kKCd0aGlyZF9wYXJ0eScpCi0gICAgICAgICAgICBpZiBvZmZzZXQgPT0gLTE6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5fY2hyb21pdW1fYmFzZV9kaXIgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4o
Y2hyb21pdW1fbW9kdWxlX3BhdGhbMDpjaHJvbWl1bV9tb2R1bGVfcGF0aC5maW5kKCdUb29scycp
XSwgJ1NvdXJjZScsICdXZWJLaXQnLCAnY2hyb21pdW0nKQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICBzZWxmLl9jaHJvbWl1bV9iYXNlX2RpciA9IGNocm9taXVtX21vZHVsZV9w
YXRoWzA6b2Zmc2V0XQotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYu
X2Nocm9taXVtX2Jhc2VfZGlyLCAqY29tcHMpCisgICAgICAgIGlmIG5vdCBzZWxmLl9jaHJvbWl1
bV9iYXNlX2Rpcl9wYXRoOgorICAgICAgICAgICAgc2VsZi5fY2hyb21pdW1fYmFzZV9kaXJfcGF0
aCA9IHNlbGYuX2Nocm9taXVtX2Jhc2VfZGlyKHNlbGYuX2ZpbGVzeXN0ZW0pCisgICAgICAgIHJl
dHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fY2hyb21pdW1fYmFzZV9kaXJfcGF0aCwg
KmNvbXBzKQogCiAgICAgZGVmIHBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0cycs
ICdwbGF0Zm9ybScsICdjaHJvbWl1bScsICd0ZXN0X2V4cGVjdGF0aW9ucy50eHQnKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9n
cHUucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2dwdS5weQppbmRleCA4YjQxNDVlMjA0MDEwMDY2NjQxNjQyMjNhMzE2YWM4NzllODcxOWUxLi5m
ZGMxMTE3Yzk2ZmRhMjQwZTdiNGI0NDAxYmQ4NTgxZjJlYTIzNjQ0IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdS5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdS5w
eQpAQCAtNzEsOCArNzEsMTAgQEAgZGVmIF9kZWZhdWx0X3Rlc3RzX3BhdGhzKHBvcnQpOgogCiAK
IGNsYXNzIENocm9taXVtR3B1TGludXhQb3J0KGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQ
b3J0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lPSdjaHJvbWl1bS1n
cHUtbGludXgnLCAqKmt3YXJncyk6Ci0gICAgICAgIGNocm9taXVtX2xpbnV4LkNocm9taXVtTGlu
dXhQb3J0Ll9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZT1wb3J0X25hbWUsICoqa3dhcmdz
KQorICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1bS1ncHUtbGludXgnCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncyk6CisgICAgICAgIGNocm9taXVtX2xp
bnV4LkNocm9taXVtTGludXhQb3J0Ll9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZSwgKipr
d2FyZ3MpCiAgICAgICAgIF9zZXRfZ3B1X29wdGlvbnMoc2VsZikKIAogICAgIGRlZiBiYXNlbGlu
ZV9zZWFyY2hfcGF0aChzZWxmKToKQEAgLTg2LDggKzg4LDEwIEBAIGNsYXNzIENocm9taXVtR3B1
TGludXhQb3J0KGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0KToKIAogCiBjbGFzcyBD
aHJvbWl1bUdwdU1hY1BvcnQoY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydCk6Ci0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZT0nY2hyb21pdW0tZ3B1LW1hYycsICoqa3dh
cmdzKToKLSAgICAgICAgY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydC5fX2luaXRfXyhzZWxm
LCBob3N0LCBwb3J0X25hbWU9cG9ydF9uYW1lLCAqKmt3YXJncykKKyAgICBwb3J0X25hbWUgPSAn
Y2hyb21pdW0tZ3B1LW1hYycKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25h
bWUsICoqa3dhcmdzKToKKyAgICAgICAgY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydC5fX2lu
aXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKQogICAgICAgICBfc2V0X2dwdV9v
cHRpb25zKHNlbGYpCiAKICAgICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CkBAIC0x
MDAsOCArMTA0LDEwIEBAIGNsYXNzIENocm9taXVtR3B1TWFjUG9ydChjaHJvbWl1bV9tYWMuQ2hy
b21pdW1NYWNQb3J0KToKIAogCiBjbGFzcyBDaHJvbWl1bUdwdVdpblBvcnQoY2hyb21pdW1fd2lu
LkNocm9taXVtV2luUG9ydCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFt
ZT0nY2hyb21pdW0tZ3B1LXdpbicsICoqa3dhcmdzKToKLSAgICAgICAgY2hyb21pdW1fd2luLkNo
cm9taXVtV2luUG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9cG9ydF9uYW1lLCAq
Kmt3YXJncykKKyAgICBwb3J0X25hbWUgPSAnY2hyb21pdW0tZ3B1LXdpbicKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKToKKyAgICAgICAgY2hyb21p
dW1fd2luLkNocm9taXVtV2luUG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoq
a3dhcmdzKQogICAgICAgICBfc2V0X2dwdV9vcHRpb25zKHNlbGYpCiAKICAgICBkZWYgYmFzZWxp
bmVfc2VhcmNoX3BhdGgoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weQppbmRleCA2YjZlOGVmNDk0
YjA2ZmE1N2Y0NzdmNDRjMzVhNDcxNjFkOGEyMTc2Li5hNjQ1ZjFkNzgwZGIyMTg4M2NkZjY4MTUx
OWJmMzRkOTEzOWJhMGRjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkKQEAgLTI4LDEzICsyOCwxNyBA
QAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IGNocm9taXVtCisKK2Zy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGNocm9taXVtCitmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBjb25maWcKIAogCiBfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCiAKIAogY2xhc3MgQ2hyb21pdW1MaW51eFBvcnQoY2hyb21pdW0u
Q2hyb21pdW1Qb3J0KToKKyAgICBwb3J0X25hbWUgPSAnY2hyb21pdW0tbGludXgnCisKICAgICBT
VVBQT1JURURfQVJDSElURUNUVVJFUyA9ICgneDg2JywgJ3g4Nl82NCcpCiAKICAgICBGQUxMQkFD
S19QQVRIUyA9IHsKQEAgLTU1LDMzICs1OSwzOSBAQCBjbGFzcyBDaHJvbWl1bUxpbnV4UG9ydChj
aHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICBdLAogICAgIH0KIAotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBwb3J0
X25hbWUgPSBwb3J0X25hbWUgb3IgJ2Nocm9taXVtLWxpbnV4JwotICAgICAgICBjaHJvbWl1bS5D
aHJvbWl1bVBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lPXBvcnRfbmFtZSwgKipr
d2FyZ3MpCi0gICAgICAgICMgV2UgcmUtc2V0IHRoZSBwb3J0IG5hbWUgb25jZSB0aGUgYmFzZSBv
YmplY3QgaXMgZnVsbHkgaW5pdGlhbGl6ZWQKLSAgICAgICAgIyBpbiBvcmRlciB0byBiZSBhYmxl
IHRvIGZpbmQgdGhlIERSVCBiaW5hcnkgcHJvcGVybHkuCisgICAgQGNsYXNzbWV0aG9kCisgICAg
ZGVmIGRldGVybWluZV9mdWxsX3BvcnRfbmFtZShjbHMsIGhvc3QsIG9wdGlvbnMsIHBvcnRfbmFt
ZSk6CiAgICAgICAgIGlmIHBvcnRfbmFtZS5lbmRzd2l0aCgnLWxpbnV4Jyk6Ci0gICAgICAgICAg
ICBzZWxmLl9hcmNoaXRlY3R1cmUgPSBzZWxmLl9kZXRlcm1pbmVfYXJjaGl0ZWN0dXJlKCkKLSAg
ICAgICAgICAgICMgRklYTUU6IFRoaXMgaXMgYW4gdWdseSBoYWNrIHRvIGF2b2lkIHJlbmFtaW5n
IHRoZSBHUFUgcG9ydC4KLSAgICAgICAgICAgIGlmIHBvcnRfbmFtZSA9PSAnY2hyb21pdW0tbGlu
dXgnOgotICAgICAgICAgICAgICAgIHBvcnRfbmFtZSA9IHBvcnRfbmFtZSArICctJyArIHNlbGYu
X2FyY2hpdGVjdHVyZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYmFzZSwgYXJjaCA9IHBv
cnRfbmFtZS5yc3BsaXQoJy0nLCAxKQotICAgICAgICAgICAgYXNzZXJ0IGJhc2UgaW4gKCdjaHJv
bWl1bS1saW51eCcsICdjaHJvbWl1bS1ncHUtbGludXgnKQotICAgICAgICAgICAgc2VsZi5fYXJj
aGl0ZWN0dXJlID0gYXJjaAotICAgICAgICBhc3NlcnQgc2VsZi5fYXJjaGl0ZWN0dXJlIGluIHNl
bGYuU1VQUE9SVEVEX0FSQ0hJVEVDVFVSRVMKLSAgICAgICAgYXNzZXJ0IHBvcnRfbmFtZSBpbiAo
J2Nocm9taXVtLWxpbnV4JywgJ2Nocm9taXVtLWdwdS1saW51eCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdjaHJvbWl1bS1saW51eC14ODYnLCAnY2hyb21pdW0tbGludXgteDg2XzY0
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nocm9taXVtLWdwdS1saW51eC14ODZf
NjQnKQotICAgICAgICBzZWxmLl9uYW1lID0gcG9ydF9uYW1lCi0gICAgICAgIHNlbGYuX3ZlcnNp
b24gPSAnbHVjaWQnICAjIFdlIG9ubHkgc3VwcG9ydCBsdWNpZCByaWdodCBub3cuCi0KLSAgICBk
ZWYgX2RldGVybWluZV9hcmNoaXRlY3R1cmUoc2VsZik6Ci0gICAgICAgIGRyaXZlcl9wYXRoID0g
c2VsZi5fcGF0aF90b19kcml2ZXIoKQorICAgICAgICAgICAgcmV0dXJuIHBvcnRfbmFtZSArICct
JyArIGNscy5fZGV0ZXJtaW5lX2FyY2hpdGVjdHVyZShob3N0LmZpbGVzeXN0ZW0sIGhvc3QuZXhl
Y3V0aXZlLCBjbHMuX2RldGVybWluZV9kcml2ZXJfcGF0aF9zdGF0aWNhbGx5KGhvc3QsIG9wdGlv
bnMpKQorICAgICAgICByZXR1cm4gcG9ydF9uYW1lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBk
ZWYgX2RldGVybWluZV9kcml2ZXJfcGF0aF9zdGF0aWNhbGx5KGNscywgaG9zdCwgb3B0aW9ucyk6
CisgICAgICAgIGNvbmZpZ19vYmplY3QgPSBjb25maWcuQ29uZmlnKGhvc3QuZXhlY3V0aXZlLCBo
b3N0LmZpbGVzeXN0ZW0pCisgICAgICAgIGJ1aWxkX2RpcmVjdG9yeSA9IGdldGF0dHIob3B0aW9u
cywgJ2J1aWxkX2RpcmVjdG9yeScsIE5vbmUpCisgICAgICAgIHdlYmtpdF9iYXNlID0gY29uZmln
X29iamVjdC5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoKQorICAgICAgICBjaHJvbWl1bV9iYXNlID0g
Y2xzLl9jaHJvbWl1bV9iYXNlX2Rpcihob3N0LmZpbGVzeXN0ZW0pCisgICAgICAgIGNvbmZpZ3Vy
YXRpb24gPSBnZXRhdHRyKG9wdGlvbnMsICdjb25maWd1cmF0aW9uJywgY29uZmlnX29iamVjdC5k
ZWZhdWx0X2NvbmZpZ3VyYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIGNscy5fc3RhdGljX2J1aWxk
X3BhdGgoaG9zdC5maWxlc3lzdGVtLCBidWlsZF9kaXJlY3RvcnksIGNocm9taXVtX2Jhc2UsIHdl
YmtpdF9iYXNlLCBjb25maWd1cmF0aW9uLCAnRHVtcFJlbmRlclRyZWUnKQorCisgICAgQHN0YXRp
Y21ldGhvZAorICAgIGRlZiBfc3RhdGljX2J1aWxkX3BhdGgoZmlsZXN5c3RlbSwgYnVpbGRfZGly
ZWN0b3J5LCBjaHJvbWl1bV9iYXNlLCB3ZWJraXRfYmFzZSwgKmNvbXBzKToKKyAgICAgICAgaWYg
YnVpbGRfZGlyZWN0b3J5OgorICAgICAgICAgICAgcmV0dXJuIGZpbGVzeXN0ZW0uam9pbihidWls
ZF9kaXJlY3RvcnksICpjb21wcykKKyAgICAgICAgaWYgZmlsZXN5c3RlbS5leGlzdHMoZmlsZXN5
c3RlbS5qb2luKGNocm9taXVtX2Jhc2UsICdzY29uc2J1aWxkJykpOgorICAgICAgICAgICAgcmV0
dXJuIGZpbGVzeXN0ZW0uam9pbihjaHJvbWl1bV9iYXNlLCAnc2NvbnNidWlsZCcsICpjb21wcykK
KyAgICAgICAgaWYgZmlsZXN5c3RlbS5leGlzdHMoZmlsZXN5c3RlbS5qb2luKGNocm9taXVtX2Jh
c2UsICdvdXQnLCAqY29tcHMpKToKKyAgICAgICAgICAgIHJldHVybiBmaWxlc3lzdGVtLmpvaW4o
Y2hyb21pdW1fYmFzZSwgJ291dCcsICpjb21wcykKKyAgICAgICAgaWYgZmlsZXN5c3RlbS5leGlz
dHMoZmlsZXN5c3RlbS5qb2luKHdlYmtpdF9iYXNlLCAnc2NvbnNidWlsZCcpKToKKyAgICAgICAg
ICAgIHJldHVybiBmaWxlc3lzdGVtLmpvaW4od2Via2l0X2Jhc2UsICdzY29uc2J1aWxkJywgKmNv
bXBzKQorICAgICAgICByZXR1cm4gZmlsZXN5c3RlbS5qb2luKHdlYmtpdF9iYXNlLCAnb3V0Jywg
KmNvbXBzKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZGV0ZXJtaW5lX2FyY2hpdGVj
dHVyZShmaWxlc3lzdGVtLCBleGVjdXRpdmUsIGRyaXZlcl9wYXRoKToKICAgICAgICAgZmlsZV9v
dXRwdXQgPSAnJwotICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhkcml2ZXJfcGF0
aCk6CisgICAgICAgIGlmIGZpbGVzeXN0ZW0uZXhpc3RzKGRyaXZlcl9wYXRoKToKICAgICAgICAg
ICAgICMgVGhlIC0tZGVyZWZlcmVuY2UgZmxhZyB0ZWxscyBmaWxlIHRvIGZvbGxvdyBzeW1saW5r
cwotICAgICAgICAgICAgZmlsZV9vdXRwdXQgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQo
WydmaWxlJywgJy0tZGVyZWZlcmVuY2UnLCBkcml2ZXJfcGF0aF0sIHJldHVybl9zdGRlcnI9VHJ1
ZSkKKyAgICAgICAgICAgIGZpbGVfb3V0cHV0ID0gZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsnZmls
ZScsICctLWRlcmVmZXJlbmNlJywgZHJpdmVyX3BhdGhdLCByZXR1cm5fc3RkZXJyPVRydWUpCiAK
ICAgICAgICAgaWYgJ0VMRiAzMi1iaXQgTFNCIGV4ZWN1dGFibGUnIGluIGZpbGVfb3V0cHV0Ogog
ICAgICAgICAgICAgcmV0dXJuICd4ODYnCkBAIC05Niw2ICsxMDYsMTcgQEAgY2xhc3MgQ2hyb21p
dW1MaW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgIyBpZiB3ZSBhY3R1
YWxseSB0cnkgdG8gdXNlIHRoZSBiaW5hcnksIGNoZWNrX2J1aWxkKCkgc2hvdWxkIGZhaWwuCiAg
ICAgICAgIHJldHVybiAneDg2XzY0JwogCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBv
cnRfbmFtZSwgKiprd2FyZ3MpOgorICAgICAgICBjaHJvbWl1bS5DaHJvbWl1bVBvcnQuX19pbml0
X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncykKKyAgICAgICAgKGJhc2UsIGFyY2gp
ID0gcG9ydF9uYW1lLnJzcGxpdCgnLScsIDEpCisgICAgICAgIGFzc2VydCBiYXNlIGluICgnY2hy
b21pdW0tbGludXgnLCAnY2hyb21pdW0tZ3B1LWxpbnV4JykKKyAgICAgICAgYXNzZXJ0IGFyY2gg
aW4gc2VsZi5TVVBQT1JURURfQVJDSElURUNUVVJFUworICAgICAgICBhc3NlcnQgcG9ydF9uYW1l
IGluICgnY2hyb21pdW0tbGludXgnLCAnY2hyb21pdW0tZ3B1LWxpbnV4JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2Nocm9taXVtLWxpbnV4LXg4NicsICdjaHJvbWl1bS1saW51eC14
ODZfNjQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hyb21pdW0tZ3B1LWxpbnV4
LXg4Nl82NCcpCisgICAgICAgIHNlbGYuX3ZlcnNpb24gPSAnbHVjaWQnICAjIFdlIG9ubHkgc3Vw
cG9ydCBsdWNpZCByaWdodCBub3cuCisgICAgICAgIHNlbGYuX2FyY2hpdGVjdHVyZSA9IGFyY2gK
KwogICAgIGRlZiBiYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToKICAgICAgICAgcG9ydF9uYW1l
cyA9IHNlbGYuRkFMTEJBQ0tfUEFUSFNbc2VsZi5fYXJjaGl0ZWN0dXJlXQogICAgICAgICByZXR1
cm4gbWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBwb3J0X25hbWVzKQpAQCAtMTE4LDE4
ICsxMzksNyBAQCBjbGFzcyBDaHJvbWl1bUxpbnV4UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQp
OgogICAgICMKIAogICAgIGRlZiBfYnVpbGRfcGF0aChzZWxmLCAqY29tcHMpOgotICAgICAgICBp
ZiBzZWxmLmdldF9vcHRpb24oJ2J1aWxkX2RpcmVjdG9yeScpOgotICAgICAgICAgICAgcmV0dXJu
IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmdldF9vcHRpb24oJ2J1aWxkX2RpcmVjdG9yeScp
LCAqY29tcHMpCi0KLSAgICAgICAgYmFzZSA9IHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2Uo
KQotICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLl9maWxlc3lzdGVtLmpv
aW4oYmFzZSwgJ3Njb25zYnVpbGQnKSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5
c3RlbS5qb2luKGJhc2UsICdzY29uc2J1aWxkJywgKmNvbXBzKQotICAgICAgICBpZiBzZWxmLl9m
aWxlc3lzdGVtLmV4aXN0cyhzZWxmLl9maWxlc3lzdGVtLmpvaW4oYmFzZSwgJ291dCcsICpjb21w
cykpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihiYXNlLCAnb3V0
JywgKmNvbXBzKQotICAgICAgICBiYXNlID0gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoKQot
ICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLl9maWxlc3lzdGVtLmpvaW4o
YmFzZSwgJ3Njb25zYnVpbGQnKSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKGJhc2UsICdzY29uc2J1aWxkJywgKmNvbXBzKQotICAgICAgICByZXR1cm4gc2VsZi5f
ZmlsZXN5c3RlbS5qb2luKGJhc2UsICdvdXQnLCAqY29tcHMpCisgICAgICAgIHJldHVybiBzZWxm
Ll9zdGF0aWNfYnVpbGRfcGF0aChzZWxmLl9maWxlc3lzdGVtLCBzZWxmLmdldF9vcHRpb24oJ2J1
aWxkX2RpcmVjdG9yeScpLCBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCksIHNlbGYucGF0
aF9mcm9tX3dlYmtpdF9iYXNlKCksICpjb21wcykKIAogICAgIGRlZiBfY2hlY2tfYXBhY2hlX2lu
c3RhbGwoc2VsZik6CiAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2NoZWNrX2ZpbGVfZXhpc3RzKHNl
bGYuX3BhdGhfdG9fYXBhY2hlKCksICJhcGFjaGUyIikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKaW5kZXggNDFh
MWE1NTVhZTJjYjVmZThlNzRhMGUxOWJhZTk3ZmU3OTJlZmQ3NC4uNTY1MTk0MjU3OTdjZDUzMzY5
OWQzMTkxOTMyNTBhZmY1OWE0ZjNiZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKQEAgLTM5LDcgKzM5LDcg
QEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKIGNsYXNzIENocm9taXVt
TWFjUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgotICAgIFNVUFBPUlRFRF9PU19WRVJTSU9O
UyA9ICgnbGVvcGFyZCcsICdzbm93bGVvcGFyZCcsICdsaW9uJywgJ2Z1dHVyZScpCisgICAgcG9y
dF9uYW1lID0gJ2Nocm9taXVtLW1hYycKIAogICAgIEZBTExCQUNLX1BBVEhTID0gewogICAgICAg
ICAnbGVvcGFyZCc6IFsKQEAgLTczLDE4ICs3MywxOSBAQCBjbGFzcyBDaHJvbWl1bU1hY1BvcnQo
Y2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgXSwKICAgICB9CiAKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lPU5vbmUsIG9zX3ZlcnNpb25fc3RyaW5nPU5vbmUs
ICoqa3dhcmdzKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGV0ZXJtaW5lX2Z1bGxfcG9y
dF9uYW1lKGNscywgaG9zdCwgb3B0aW9ucywgcG9ydF9uYW1lKToKKyAgICAgICAgaWYgcG9ydF9u
YW1lLmVuZHN3aXRoKCctbWFjJyk6CisgICAgICAgICAgICByZXR1cm4gcG9ydF9uYW1lICsgJy0n
ICsgaG9zdC5wbGF0Zm9ybS5vc192ZXJzaW9uCisgICAgICAgIHJldHVybiBwb3J0X25hbWUKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKToKKyAgICAg
ICAgY2hyb21pdW0uQ2hyb21pdW1Qb3J0Ll9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZSwg
Kiprd2FyZ3MpCisKICAgICAgICAgIyBXZSdyZSBhIGxpdHRsZSBnZW5lcmljIGhlcmUgYmVjYXVz
ZSB0aGlzIGNvZGUgaXMgcmV1c2VkIGJ5IHRoZQogICAgICAgICAjICdnb29nbGUtY2hyb21lJyBw
b3J0IGFzIHdlbGwgYXMgdGhlICdtb2NrLScgYW5kICdkcnlydW4tJyBwb3J0cy4KLSAgICAgICAg
cG9ydF9uYW1lID0gcG9ydF9uYW1lIG9yICdjaHJvbWl1bS1tYWMnCi0gICAgICAgIGNocm9taXVt
LkNocm9taXVtUG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9cG9ydF9uYW1lLCAq
Kmt3YXJncykKLSAgICAgICAgaWYgcG9ydF9uYW1lLmVuZHN3aXRoKCctbWFjJyk6Ci0gICAgICAg
ICAgICBhc3NlcnQgaG9zdC5wbGF0Zm9ybS5pc19tYWMoKQotICAgICAgICAgICAgc2VsZi5fdmVy
c2lvbiA9IGhvc3QucGxhdGZvcm0ub3NfdmVyc2lvbgotICAgICAgICAgICAgc2VsZi5fbmFtZSA9
IHBvcnRfbmFtZSArICctJyArIHNlbGYuX3ZlcnNpb24KLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHNlbGYuX3ZlcnNpb24gPSBwb3J0X25hbWVbcG9ydF9uYW1lLmluZGV4KCctbWFjLScpICsg
bGVuKCctbWFjLScpOl0KLSAgICAgICAgICAgIGFzc2VydCBzZWxmLl92ZXJzaW9uIGluIHNlbGYu
U1VQUE9SVEVEX09TX1ZFUlNJT05TCisgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBwb3J0X25hbWVb
cG9ydF9uYW1lLmluZGV4KCctbWFjLScpICsgbGVuKCctbWFjLScpOl0KKyAgICAgICAgYXNzZXJ0
IHNlbGYuX3ZlcnNpb24gaW4gc2VsZi5GQUxMQkFDS19QQVRIUwogCiAgICAgZGVmIGJhc2VsaW5l
X3NlYXJjaF9wYXRoKHNlbGYpOgogICAgICAgICBmYWxsYmFja19wYXRocyA9IHNlbGYuRkFMTEJB
Q0tfUEFUSFMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fd2luLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV93aW4ucHkKaW5kZXggMGI2ZTQ5NzRiNDlkODYwYzZiM2NiODQxNGVl
NGY3MGY2MzJkNzI4MS4uNGU3OWZiOGM4YTk5OWQ1ODk4Yzc2NGQxNjhjZWJhODVmN2FjMmI2ZSAx
MDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV93aW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV93aW4ucHkKQEAgLTM5LDYgKzM5LDggQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKF9fbmFtZV9fKQogCiAKIGNsYXNzIENocm9taXVtV2luUG9ydChjaHJvbWl1bS5DaHJvbWl1
bVBvcnQpOgorICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1bS13aW4nCisKICAgICAjIEZJWE1FOiBG
aWd1cmUgb3V0IGhvdyB0byB1bmlmeSB0aGlzIHdpdGggYmFzZS5UZXN0Q29uZmlndXJhdGlvbi5h
bGxfc3lzdGVtcygpPwogICAgIFNVUFBPUlRFRF9WRVJTSU9OUyA9ICgneHAnLCAndmlzdGEnLCAn
d2luNycpCiAKQEAgLTY3LDIyICs2OSwyNCBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21p
dW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgXSwKICAgICB9CiAKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgaG9zdCwgcG9ydF9uYW1lPU5vbmUsIHdpbmRvd3NfdmVyc2lvbj1Ob25lLCAqKmt3YXJn
cyk6Ci0gICAgICAgICMgV2UncmUgYSBsaXR0bGUgZ2VuZXJpYyBoZXJlIGJlY2F1c2UgdGhpcyBj
b2RlIGlzIHJldXNlZCBieSB0aGUKLSAgICAgICAgIyAnZ29vZ2xlLWNocm9tZScgcG9ydCBhcyB3
ZWxsIGFzIHRoZSAnbW9jay0nIGFuZCAnZHJ5cnVuLScgcG9ydHMuCi0gICAgICAgIHBvcnRfbmFt
ZSA9IHBvcnRfbmFtZSBvciAnY2hyb21pdW0td2luJwotICAgICAgICBjaHJvbWl1bS5DaHJvbWl1
bVBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lPXBvcnRfbmFtZSwgKiprd2FyZ3Mp
CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRldGVybWluZV9mdWxsX3BvcnRfbmFtZShjbHMs
IGhvc3QsIG9wdGlvbnMsIHBvcnRfbmFtZSk6CiAgICAgICAgIGlmIHBvcnRfbmFtZS5lbmRzd2l0
aCgnLXdpbicpOgogICAgICAgICAgICAgYXNzZXJ0IGhvc3QucGxhdGZvcm0uaXNfd2luKCkKICAg
ICAgICAgICAgIGlmIGhvc3QucGxhdGZvcm0ub3NfdmVyc2lvbiBpbiAoJzdzcDAnLCAnN3NwMScs
ICdmdXR1cmUnKToKLSAgICAgICAgICAgICAgICBzZWxmLl92ZXJzaW9uID0gJ3dpbjcnCisgICAg
ICAgICAgICAgICAgdmVyc2lvbiA9ICd3aW43JwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICBzZWxmLl92ZXJzaW9uID0gaG9zdC5wbGF0Zm9ybS5vc192ZXJzaW9uCi0gICAgICAg
ICAgICBzZWxmLl9uYW1lID0gcG9ydF9uYW1lICsgJy0nICsgc2VsZi5fdmVyc2lvbgotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHBvcnRfbmFtZVtwb3J0X25hbWUu
aW5kZXgoJy13aW4tJykgKyBsZW4oJy13aW4tJyk6XQotICAgICAgICBhc3NlcnQgc2VsZi5fdmVy
c2lvbiBpbiBzZWxmLlNVUFBPUlRFRF9WRVJTSU9OUywgIiVzIGlzIG5vdCBpbiAlcyIgJSAoc2Vs
Zi5fdmVyc2lvbiwgc2VsZi5TVVBQT1JURURfVkVSU0lPTlMpCisgICAgICAgICAgICAgICAgdmVy
c2lvbiA9IGhvc3QucGxhdGZvcm0ub3NfdmVyc2lvbgorICAgICAgICAgICAgcG9ydF9uYW1lID0g
cG9ydF9uYW1lICsgJy0nICsgdmVyc2lvbgorICAgICAgICByZXR1cm4gcG9ydF9uYW1lCiAKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncyk6CisgICAgICAg
IGNocm9taXVtLkNocm9taXVtUG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoq
a3dhcmdzKQorCisgICAgICAgICMgV2UncmUgYSBsaXR0bGUgZ2VuZXJpYyBoZXJlIGJlY2F1c2Ug
dGhpcyBjb2RlIGlzIHJldXNlZCBieSB0aGUKKyAgICAgICAgIyAnZ29vZ2xlLWNocm9tZScgcG9y
dCBhcyB3ZWxsIGFzIHRoZSAnbW9jay0nIGFuZCAnZHJ5cnVuLScgcG9ydHMuCisgICAgICAgIHNl
bGYuX3ZlcnNpb24gPSBwb3J0X25hbWVbcG9ydF9uYW1lLmluZGV4KCctd2luLScpICsgbGVuKCct
d2luLScpOl0KKyAgICAgICAgYXNzZXJ0IHNlbGYuX3ZlcnNpb24gaW4gc2VsZi5TVVBQT1JURURf
VkVSU0lPTlMsICIlcyBpcyBub3QgaW4gJXMiICUgKHNlbGYuX3ZlcnNpb24sIHNlbGYuU1VQUE9S
VEVEX1ZFUlNJT05TKQogCiAgICAgZGVmIHNldHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZWxmLCBz
ZXJ2ZXJfbmFtZT1Ob25lKToKICAgICAgICAgZW52ID0gY2hyb21pdW0uQ2hyb21pdW1Qb3J0LnNl
dHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZWxmLCBzZXJ2ZXJfbmFtZSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkKaW5kZXggYTQ4ZDA3
NDYxMjE3Yjc5ZTU4NDhiYTkyNmNlNTIzYmI3MTBkMGJiNi4uOTk0YzI3NTIyNmRiMGMyYzBiM2E0
NDk4N2U2ZGUxYmJhOTdhZmEzMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkKQEAgLTQ0LDEwICs0NCw2IEBACiAgICBUaGlzIGlt
cGxlbWVudGF0aW9uIGFsc28gbW9kaWZpZXMgdGhlIHRlc3QgZXhwZWN0YXRpb25zIHNvIHRoYXQg
YWxsCiAgICB0ZXN0cyBhcmUgZWl0aGVyIFNLSVBQRUQgb3IgZXhwZWN0ZWQgdG8gUEFTUy4iIiIK
IAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCi1pbXBvcnQgb3MKLWlt
cG9ydCBzeXMKIGltcG9ydCB0aW1lCiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQg
aW1wb3J0IERyaXZlciwgRHJpdmVyT3V0cHV0LCBmYWN0b3J5CkBAIC01OCwxNSArNTQsMTYgQEAg
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgRHJpdmVyLCBEcml2ZXJPdXRw
dXQsIGZhY3RvcnkKICMgYWxsIG9mIHRoZSBtZXRob2RzIGFyZSBwYXNzZWQgdG8gdGhlIF9fZGVs
ZWdhdGUsIG5vdCB0byB0aGUgYmFzZSBjbGFzcy4KIGNsYXNzIERyeVJ1blBvcnQob2JqZWN0KToK
ICAgICAiIiJEcnlSdW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIFBvcnQgaW50ZXJmYWNlLiIiIgor
ICAgIHBvcnRfbmFtZSA9ICdkcnlydW4nCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGV0
ZXJtaW5lX2Z1bGxfcG9ydF9uYW1lKGNscywgaG9zdCwgb3B0aW9ucywgcG9ydF9uYW1lKToKKyAg
ICAgICAgIiIiUmV0dXJuIGEgZnVsbHktc3BlY2lmaWVkIHBvcnQgbmFtZSB0aGF0IGNhbiBiZSB1
c2VkIHRvIGNvbnN0cnVjdCBvYmplY3RzLiIiIgorICAgICAgICAjIFN1YmNsYXNzZXMgd2lsbCB1
c3VhbGx5IG92ZXJyaWRlIHRoaXMuCisgICAgICAgIHJldHVybiBwb3J0X25hbWUKIAotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBob3N0LCAqKmt3YXJncyk6Ci0gICAgICAgIHBmeCA9ICdkcnlydW4t
JwotICAgICAgICBpZiAncG9ydF9uYW1lJyBpbiBrd2FyZ3M6Ci0gICAgICAgICAgICBpZiBrd2Fy
Z3NbJ3BvcnRfbmFtZSddLnN0YXJ0c3dpdGgocGZ4KToKLSAgICAgICAgICAgICAgICBrd2FyZ3Nb
J3BvcnRfbmFtZSddID0ga3dhcmdzWydwb3J0X25hbWUnXVtsZW4ocGZ4KTpdCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIGt3YXJnc1sncG9ydF9uYW1lJ10gPSBOb25lCi0gICAg
ICAgIHNlbGYuX19kZWxlZ2F0ZSA9IGZhY3RvcnkuUG9ydEZhY3RvcnkoaG9zdCkuZ2V0KCoqa3dh
cmdzKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKToK
KyAgICAgICAgc2VsZi5fX2RlbGVnYXRlID0gZmFjdG9yeS5Qb3J0RmFjdG9yeShob3N0KS5nZXQo
cG9ydF9uYW1lLnJlcGxhY2UoJ2RyeXJ1bi0nLCAnJyksICoqa3dhcmdzKQogCiAgICAgZGVmIF9f
Z2V0YXR0cl9fKHNlbGYsIG5hbWUpOgogICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLl9fZGVs
ZWdhdGUsIG5hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2VmbC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZWZsLnB5CmluZGV4IDNhYzcxZDU3MTQ3OGYzODgzYTFkMGRkY2Q2NzBkN2JlMzFhNWU5ZDgu
LmE0YjcwYTM3ODk2MWViOTFiMWExZTNmNDFiODU5ZTY0MmYxNzk4NmEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsLnB5CkBAIC0zOCwxMSArMzgs
NyBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIAogY2xhc3MgRWZsUG9y
dChXZWJLaXRQb3J0KToKLSAgICBwb3J0X25hbWUgPSAiZWZsIgotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGhvc3QsICoqa3dhcmdzKToKLSAgICAgICAgV2ViS2l0UG9ydC5fX2luaXRfXyhzZWxm
LCBob3N0LCAqKmt3YXJncykKLSAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHNlbGYucG9ydF9uYW1l
CisgICAgcG9ydF9uYW1lID0gJ2VmbCcKIAogICAgIGRlZiBfcG9ydF9mbGFnX2Zvcl9zY3JpcHRz
KHNlbGYpOgogICAgICAgICByZXR1cm4gIi0tZWZsIgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5CmluZGV4IDcwOTUwMGQzNTVlNzAy
MzA2YWQzMTgxYTViYTI0MDkxNmVjZTc4ZmUuLmYwMTI3YjA2N2E2NjVlMjk1OGMzYTNkYTRiNjgx
ZmVkMmQ0YTQ2MDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZmFjdG9yeS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2ZhY3RvcnkucHkKQEAgLTQxLDEwMyArNDEsNjAgQEAgY2xhc3MgQnVpbGRlck9w
dGlvbnMob2JqZWN0KToKIAogCiBjbGFzcyBQb3J0RmFjdG9yeShvYmplY3QpOgorICAgIFBPUlRf
Q0xBU1NFUyA9ICgKKyAgICAgICAgJ2Nocm9taXVtX2dwdS5DaHJvbWl1bUdwdUxpbnV4UG9ydCcs
CisgICAgICAgICdjaHJvbWl1bV9ncHUuQ2hyb21pdW1HcHVNYWNQb3J0JywKKyAgICAgICAgJ2No
cm9taXVtX2dwdS5DaHJvbWl1bUdwdVdpblBvcnQnLAorICAgICAgICAnY2hyb21pdW1fbGludXgu
Q2hyb21pdW1MaW51eFBvcnQnLAorICAgICAgICAnY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9y
dCcsCisgICAgICAgICdjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0JywKKyAgICAgICAgJ2Ry
eXJ1bi5EcnlSdW5Qb3J0JywKKyAgICAgICAgJ2VmbC5FZmxQb3J0JywKKyAgICAgICAgJ2dvb2ds
ZV9jaHJvbWUuR29vZ2xlQ2hyb21lTGludXgzMlBvcnQnLAorICAgICAgICAnZ29vZ2xlX2Nocm9t
ZS5Hb29nbGVDaHJvbWVMaW51eDY0UG9ydCcsCisgICAgICAgICdnb29nbGVfY2hyb21lLkdvb2ds
ZUNocm9tZU1hY1BvcnQnLAorICAgICAgICAnZ29vZ2xlX2Nocm9tZS5Hb29nbGVDaHJvbWVXaW5Q
b3J0JywKKyAgICAgICAgJ2d0ay5HdGtQb3J0JywKKyAgICAgICAgJ21hYy5NYWNQb3J0JywKKyAg
ICAgICAgJ21vY2tfZHJ0Lk1vY2tEUlRQb3J0JywKKyAgICAgICAgJ3F0LlF0UG9ydCcsCisgICAg
ICAgICd0ZXN0LlRlc3RQb3J0JywKKyAgICAgICAgJ3dpbi5XaW5Qb3J0JywKKyAgICAgICAgKQor
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QpOgogICAgICAgICBzZWxmLl9ob3N0ID0gaG9z
dAogCi0gICAgZGVmIF9wb3J0X25hbWVfZnJvbV9hcmd1bWVudHNfYW5kX29wdGlvbnMoc2VsZiwg
cG9ydF9uYW1lLCBvcHRpb25zLCBwbGF0Zm9ybSk6Ci0gICAgICAgIGlmIHBvcnRfbmFtZSA9PSAn
Y2hyb21pdW0tZ3B1JzoKLSAgICAgICAgICAgIGlmIHBsYXRmb3JtLmlzX3dpbigpOgotICAgICAg
ICAgICAgICAgIHJldHVybiAnY2hyb21pdW0tZ3B1LXdpbicKLSAgICAgICAgICAgIGlmIHBsYXRm
b3JtLmlzX2xpbnV4KCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdjaHJvbWl1bS1ncHUtbGlu
dXgnCi0gICAgICAgICAgICBpZiBwbGF0Zm9ybS5pc19tYWMoKToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gJ2Nocm9taXVtLWdwdS1tYWMnCi0KLSAgICAgICAgaWYgcG9ydF9uYW1lOgotICAgICAg
ICAgICAgcmV0dXJuIHBvcnRfbmFtZQotCi0gICAgICAgIGlmIHBsYXRmb3JtLmlzX3dpbigpOgot
ICAgICAgICAgICAgaWYgb3B0aW9ucyBhbmQgaGFzYXR0cihvcHRpb25zLCAnY2hyb21pdW0nKSBh
bmQgb3B0aW9ucy5jaHJvbWl1bToKLSAgICAgICAgICAgICAgICByZXR1cm4gJ2Nocm9taXVtLXdp
bicKLSAgICAgICAgICAgIHJldHVybiAnd2luJwotICAgICAgICBpZiBwbGF0Zm9ybS5pc19saW51
eCgpOgorICAgIGRlZiBfZGVmYXVsdF9wb3J0KHNlbGYsIG9wdGlvbnMpOgorICAgICAgICBwbGF0
Zm9ybSA9IHNlbGYuX2hvc3QucGxhdGZvcm0KKyAgICAgICAgaWYgb3B0aW9ucyBhbmQgaGFzYXR0
cihvcHRpb25zLCAnY2hyb21pdW0nKSBhbmQgb3B0aW9ucy5jaHJvbWl1bToKKyAgICAgICAgICAg
IHJldHVybiAnY2hyb21pdW0tJyArIHBsYXRmb3JtLm9zX25hbWUKKyAgICAgICAgZWxpZiBwbGF0
Zm9ybS5pc19saW51eCgpOgogICAgICAgICAgICAgcmV0dXJuICdjaHJvbWl1bS1saW51eCcKLSAg
ICAgICAgaWYgcGxhdGZvcm0uaXNfbWFjKCk6Ci0gICAgICAgICAgICBpZiBvcHRpb25zIGFuZCBo
YXNhdHRyKG9wdGlvbnMsICdjaHJvbWl1bScpIGFuZCBvcHRpb25zLmNocm9taXVtOgotICAgICAg
ICAgICAgICAgIHJldHVybiAnY2hyb21pdW0tbWFjJworICAgICAgICBlbGlmIHBsYXRmb3JtLmlz
X21hYygpOgogICAgICAgICAgICAgcmV0dXJuICdtYWMnCi0KLSAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvcigndW5rbm93biBwb3J0OyBvc19uYW1lID0gIiVzIicgJSBwbGF0Zm9ybS5v
c19uYW1lKQorICAgICAgICBlbGlmIHBsYXRmb3JtLmlzX3dpbigpOgorICAgICAgICAgICAgcmV0
dXJuICd3aW4nCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3Vua25vd24gcGxh
dGZvcm06ICVzJyAlIHBsYXRmb3JtKQogCiAgICAgZGVmIGdldChzZWxmLCBwb3J0X25hbWU9Tm9u
ZSwgb3B0aW9ucz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgICIiIlJldHVybnMgYW4gb2JqZWN0
IGltcGxlbWVudGluZyB0aGUgUG9ydCBpbnRlcmZhY2UuIElmCiAgICAgICAgIHBvcnRfbmFtZSBp
cyBOb25lLCB0aGlzIHJvdXRpbmUgYXR0ZW1wdHMgdG8gZ3Vlc3MgYXQgdGhlIG1vc3QKICAgICAg
ICAgYXBwcm9wcmlhdGUgcG9ydCBvbiB0aGlzIHBsYXRmb3JtLiIiIgotICAgICAgICBwb3J0X3Rv
X3VzZSA9IHNlbGYuX3BvcnRfbmFtZV9mcm9tX2FyZ3VtZW50c19hbmRfb3B0aW9ucyhwb3J0X25h
bWUsIG9wdGlvbnMsIHNlbGYuX2hvc3QucGxhdGZvcm0pCi0gICAgICAgIGlmIHBvcnRfdG9fdXNl
LnN0YXJ0c3dpdGgoJ3Rlc3QnKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0Ci0gICAgICAgICAg
ICBtYWtlciA9IHRlc3QuVGVzdFBvcnQKLSAgICAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3
aXRoKCdkcnlydW4nKToKLSAgICAgICAgICAgIGltcG9ydCBkcnlydW4KLSAgICAgICAgICAgIG1h
a2VyID0gZHJ5cnVuLkRyeVJ1blBvcnQKLSAgICAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3
aXRoKCdtb2NrLScpOgotICAgICAgICAgICAgaW1wb3J0IG1vY2tfZHJ0Ci0gICAgICAgICAgICBt
YWtlciA9IG1vY2tfZHJ0Lk1vY2tEUlRQb3J0Ci0gICAgICAgIGVsaWYgcG9ydF90b191c2Uuc3Rh
cnRzd2l0aCgnbWFjJyk6Ci0gICAgICAgICAgICBpbXBvcnQgbWFjCi0gICAgICAgICAgICBtYWtl
ciA9IG1hYy5NYWNQb3J0Ci0gICAgICAgIGVsaWYgcG9ydF90b191c2Uuc3RhcnRzd2l0aCgnd2lu
Jyk6Ci0gICAgICAgICAgICBpbXBvcnQgd2luCi0gICAgICAgICAgICBtYWtlciA9IHdpbi5XaW5Q
b3J0Ci0gICAgICAgIGVsaWYgcG9ydF90b191c2Uuc3RhcnRzd2l0aCgnZ3RrJyk6Ci0gICAgICAg
ICAgICBpbXBvcnQgZ3RrCi0gICAgICAgICAgICBtYWtlciA9IGd0ay5HdGtQb3J0Ci0gICAgICAg
IGVsaWYgcG9ydF90b191c2Uuc3RhcnRzd2l0aCgncXQnKToKLSAgICAgICAgICAgIGltcG9ydCBx
dAotICAgICAgICAgICAgbWFrZXIgPSBxdC5RdFBvcnQKLSAgICAgICAgZWxpZiBwb3J0X3RvX3Vz
ZS5zdGFydHN3aXRoKCdjaHJvbWl1bS1ncHUtbGludXgnKToKLSAgICAgICAgICAgIGltcG9ydCBj
aHJvbWl1bV9ncHUKLSAgICAgICAgICAgIHBvcnRfbmFtZSA9IHBvcnRfdG9fdXNlCi0gICAgICAg
ICAgICBtYWtlciA9IGNocm9taXVtX2dwdS5DaHJvbWl1bUdwdUxpbnV4UG9ydAotICAgICAgICBl
bGlmIHBvcnRfdG9fdXNlLnN0YXJ0c3dpdGgoJ2Nocm9taXVtLWdwdS1tYWMnKToKLSAgICAgICAg
ICAgIGltcG9ydCBjaHJvbWl1bV9ncHUKLSAgICAgICAgICAgIHBvcnRfbmFtZSA9IHBvcnRfdG9f
dXNlCi0gICAgICAgICAgICBtYWtlciA9IGNocm9taXVtX2dwdS5DaHJvbWl1bUdwdU1hY1BvcnQK
LSAgICAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3aXRoKCdjaHJvbWl1bS1ncHUtd2luJyk6
Ci0gICAgICAgICAgICBpbXBvcnQgY2hyb21pdW1fZ3B1Ci0gICAgICAgICAgICBwb3J0X25hbWUg
PSBwb3J0X3RvX3VzZQotICAgICAgICAgICAgbWFrZXIgPSBjaHJvbWl1bV9ncHUuQ2hyb21pdW1H
cHVXaW5Qb3J0Ci0gICAgICAgIGVsaWYgcG9ydF90b191c2Uuc3RhcnRzd2l0aCgnY2hyb21pdW0t
bWFjJyk6Ci0gICAgICAgICAgICBpbXBvcnQgY2hyb21pdW1fbWFjCi0gICAgICAgICAgICBwb3J0
X25hbWUgPSBwb3J0X3RvX3VzZQotICAgICAgICAgICAgbWFrZXIgPSBjaHJvbWl1bV9tYWMuQ2hy
b21pdW1NYWNQb3J0Ci0gICAgICAgIGVsaWYgcG9ydF90b191c2Uuc3RhcnRzd2l0aCgnY2hyb21p
dW0tbGludXgnKToKLSAgICAgICAgICAgIGltcG9ydCBjaHJvbWl1bV9saW51eAotICAgICAgICAg
ICAgbWFrZXIgPSBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydAotICAgICAgICBlbGlm
IHBvcnRfdG9fdXNlLnN0YXJ0c3dpdGgoJ2Nocm9taXVtLXdpbicpOgotICAgICAgICAgICAgaW1w
b3J0IGNocm9taXVtX3dpbgotICAgICAgICAgICAgbWFrZXIgPSBjaHJvbWl1bV93aW4uQ2hyb21p
dW1XaW5Qb3J0Ci0gICAgICAgIGVsaWYgcG9ydF90b191c2UgPT0gJ2dvb2dsZS1jaHJvbWUtbGlu
dXgzMic6Ci0gICAgICAgICAgICBpbXBvcnQgZ29vZ2xlX2Nocm9tZQotICAgICAgICAgICAgcG9y
dF9uYW1lID0gJ2Nocm9taXVtLWxpbnV4LXg4NicKLSAgICAgICAgICAgIG1ha2VyID0gZ29vZ2xl
X2Nocm9tZS5Hb29nbGVDaHJvbWVMaW51eDMyUG9ydAotICAgICAgICBlbGlmIHBvcnRfdG9fdXNl
ID09ICdnb29nbGUtY2hyb21lLWxpbnV4NjQnOgotICAgICAgICAgICAgaW1wb3J0IGdvb2dsZV9j
aHJvbWUKLSAgICAgICAgICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1bS1saW51eC14ODZfNjQnCi0g
ICAgICAgICAgICBtYWtlciA9IGdvb2dsZV9jaHJvbWUuR29vZ2xlQ2hyb21lTGludXg2NFBvcnQK
LSAgICAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3aXRoKCdnb29nbGUtY2hyb21lLXdpbicp
OgotICAgICAgICAgICAgaW1wb3J0IGdvb2dsZV9jaHJvbWUKLSAgICAgICAgICAgIG1ha2VyID0g
Z29vZ2xlX2Nocm9tZS5Hb29nbGVDaHJvbWVXaW5Qb3J0Ci0gICAgICAgIGVsaWYgcG9ydF90b191
c2Uuc3RhcnRzd2l0aCgnZ29vZ2xlLWNocm9tZS1tYWMnKToKLSAgICAgICAgICAgIGltcG9ydCBn
b29nbGVfY2hyb21lCi0gICAgICAgICAgICBtYWtlciA9IGdvb2dsZV9jaHJvbWUuR29vZ2xlQ2hy
b21lTWFjUG9ydAotICAgICAgICBlbGlmIHBvcnRfdG9fdXNlLnN0YXJ0c3dpdGgoJ2VmbCcpOgot
ICAgICAgICAgICAgaW1wb3J0IGVmbAotICAgICAgICAgICAgbWFrZXIgPSBlZmwuRWZsUG9ydAot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigndW5z
dXBwb3J0ZWQgcG9ydDogJXMnICUgcG9ydF90b191c2UpCisgICAgICAgIHBvcnRfbmFtZSA9IHBv
cnRfbmFtZSBvciBzZWxmLl9kZWZhdWx0X3BvcnQob3B0aW9ucykKIAotICAgICAgICByZXR1cm4g
bWFrZXIoc2VsZi5faG9zdCwgcG9ydF9uYW1lPXBvcnRfbmFtZSwgb3B0aW9ucz1vcHRpb25zLCAq
Kmt3YXJncykKKyAgICAgICAgIyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiB3ZSByZW1vdmUgdGhl
IGNocm9taXVtLWdwdSBwb3J0cy4KKyAgICAgICAgaWYgcG9ydF9uYW1lID09ICdjaHJvbWl1bS1n
cHUnOgorICAgICAgICAgICAgcG9ydF9uYW1lID0gcG9ydF9uYW1lICsgJy0nICsgc2VsZi5faG9z
dC5wbGF0Zm9ybS5vc19uYW1lCisKKyAgICAgICAgZm9yIHBvcnRfY2xhc3MgaW4gc2VsZi5QT1JU
X0NMQVNTRVM6CisgICAgICAgICAgICBtb2R1bGVfbmFtZSwgY2xhc3NfbmFtZSA9IHBvcnRfY2xh
c3MucnNwbGl0KCcuJywgMSkKKyAgICAgICAgICAgIG1vZHVsZSA9IF9faW1wb3J0X18obW9kdWxl
X25hbWUsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFtdLCAtMSkKKyAgICAgICAgICAgIGNscyA9IG1v
ZHVsZS5fX2RpY3RfX1tjbGFzc19uYW1lXQorICAgICAgICAgICAgaWYgcG9ydF9uYW1lLnN0YXJ0
c3dpdGgoY2xzLnBvcnRfbmFtZSk6CisgICAgICAgICAgICAgICAgcG9ydF9uYW1lID0gY2xzLmRl
dGVybWluZV9mdWxsX3BvcnRfbmFtZShzZWxmLl9ob3N0LCBvcHRpb25zLCBwb3J0X25hbWUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNscyhzZWxmLl9ob3N0LCBwb3J0X25hbWUsIG9wdGlvbnM9
b3B0aW9ucywgKiprd2FyZ3MpCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3Vu
c3VwcG9ydGVkIHBvcnQ6ICVzJyAlIHBvcnRfbmFtZSkKIAogICAgIGRlZiBhbGxfcG9ydF9uYW1l
cyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgdmFsaWQsIGZ1bGx5LXNw
ZWNpZmllZCwgInJlYWwiIHBvcnQgbmFtZXMuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKaW5kZXgg
MWIxZmYzZjNmY2I5MmZiYjc3ZDgzMTg5ZjZmOGZmODM4ZTNmYTRjZC4uN2JmYThjOGUwMGE2ZTZh
MzVjZmRhOWZlMjYzZDQyYmJjZjAzYTRiNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQpAQCAt
NTgsNiArNTgsNyBAQCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgIGhvc3QgPSBNb2NrU3lzdGVtSG9zdChvc19uYW1lPW9zX25hbWUsIG9zX3ZlcnNpb249b3Nf
dmVyc2lvbikKICAgICAgICAgcG9ydCA9IFBvcnRGYWN0b3J5KGhvc3QpLmdldChwb3J0X25hbWUs
IG9wdGlvbnM9b3B0aW9ucykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UocG9y
dCwgY2xzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5fX2NsYXNzX18uX19uYW1l
X18sIGNscy5fX25hbWVfXykKIAogICAgIGRlZiB0ZXN0X21hYyhzZWxmKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRfcG9ydChwb3J0X25hbWU9J21hYycsIGNscz1tYWMuTWFjUG9ydCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9t
ZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2No
cm9tZS5weQppbmRleCAxZDc3ODMxMjY4NGY5YTYyNjFiNTJhNWIzMWMzMWJlNDY3NzQwZWNmLi41
MWY4M2RlZDFkNzBhYWE2YTFhODk4YjQ1MzZmYjEzYmE3MGIwNmJjIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWUucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21l
LnB5CkBAIC00Nyw2ICs0NywxMyBAQCBkZWYgX3Rlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcyhw
b3J0LCBzdXBlcik6CiAKIAogY2xhc3MgR29vZ2xlQ2hyb21lTGludXgzMlBvcnQoY2hyb21pdW1f
bGludXguQ2hyb21pdW1MaW51eFBvcnQpOgorICAgIHBvcnRfbmFtZSA9ICdnb29nbGUtY2hyb21l
LWxpbnV4MzInCisKKyAgICAjIEZJWE1FOiBNYWtlIGdvb2dsZS1jaHJvbWUtWFhYIHdvcmsgYXMg
YSBwb3J0IG5hbWUuCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRldGVybWluZV9mdWxsX3Bv
cnRfbmFtZShjbHMsIGhvc3QsIG9wdGlvbnMsIHBvcnRfbmFtZSk6CisgICAgICAgIHJldHVybiAn
Y2hyb21pdW0tbGludXgteDg2JworCiAgICAgZGVmIGJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYp
OgogICAgICAgICBwYXRocyA9IGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0LmJhc2Vs
aW5lX3NlYXJjaF9wYXRoKHNlbGYpCiAgICAgICAgIHBhdGhzLmluc2VydCgwLCBzZWxmLl93ZWJr
aXRfYmFzZWxpbmVfcGF0aCgnZ29vZ2xlLWNocm9tZS1saW51eDMyJykpCkBAIC02MCw2ICs2Nywx
MyBAQCBjbGFzcyBHb29nbGVDaHJvbWVMaW51eDMyUG9ydChjaHJvbWl1bV9saW51eC5DaHJvbWl1
bUxpbnV4UG9ydCk6CiAKIAogY2xhc3MgR29vZ2xlQ2hyb21lTGludXg2NFBvcnQoY2hyb21pdW1f
bGludXguQ2hyb21pdW1MaW51eFBvcnQpOgorICAgIHBvcnRfbmFtZSA9ICdnb29nbGUtY2hyb21l
LWxpbnV4NjQnCisKKyAgICAjIEZJWE1FOiBNYWtlIGdvb2dsZS1jaHJvbWUtWFhYIHdvcmsgYXMg
YSBwb3J0IG5hbWUuCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRldGVybWluZV9mdWxsX3Bv
cnRfbmFtZShjbHMsIGhvc3QsIG9wdGlvbnMsIHBvcnRfbmFtZSk6CisgICAgICAgIHJldHVybiAn
Y2hyb21pdW0tbGludXgteDg2XzY0JworCiAgICAgZGVmIGJhc2VsaW5lX3NlYXJjaF9wYXRoKHNl
bGYpOgogICAgICAgICBwYXRocyA9IGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0LmJh
c2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpCiAgICAgICAgIHBhdGhzLmluc2VydCgwLCBzZWxmLl93
ZWJraXRfYmFzZWxpbmVfcGF0aCgnZ29vZ2xlLWNocm9tZS1saW51eDY0JykpCkBAIC03Myw2ICs4
NywxMyBAQCBjbGFzcyBHb29nbGVDaHJvbWVMaW51eDY0UG9ydChjaHJvbWl1bV9saW51eC5DaHJv
bWl1bUxpbnV4UG9ydCk6CiAKIAogY2xhc3MgR29vZ2xlQ2hyb21lTWFjUG9ydChjaHJvbWl1bV9t
YWMuQ2hyb21pdW1NYWNQb3J0KToKKyAgICBwb3J0X25hbWUgPSAnZ29vZ2xlLWNocm9tZS1tYWMn
CisKKyAgICAjIEZJWE1FOiBNYWtlIGdvb2dsZS1jaHJvbWUtWFhYIHdvcmsgYXMgYSBwb3J0IG5h
bWUuCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRldGVybWluZV9mdWxsX3BvcnRfbmFtZShj
bHMsIGhvc3QsIG9wdGlvbnMsIHBvcnRfbmFtZSk6CisgICAgICAgIHJldHVybiAnY2hyb21pdW0t
bWFjLWxlb3BhcmQnCisKICAgICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CiAgICAg
ICAgIHBhdGhzID0gY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydC5iYXNlbGluZV9zZWFyY2hf
cGF0aChzZWxmKQogICAgICAgICBwYXRocy5pbnNlcnQoMCwgc2VsZi5fd2Via2l0X2Jhc2VsaW5l
X3BhdGgoJ2dvb2dsZS1jaHJvbWUtbWFjJykpCkBAIC04Myw2ICsxMDQsMTMgQEAgY2xhc3MgR29v
Z2xlQ2hyb21lTWFjUG9ydChjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0KToKIAogCiBjbGFz
cyBHb29nbGVDaHJvbWVXaW5Qb3J0KGNocm9taXVtX3dpbi5DaHJvbWl1bVdpblBvcnQpOgorICAg
IHBvcnRfbmFtZSA9ICdnb29nbGUtY2hyb21lLXdpbicKKworICAgICMgRklYTUU6IE1ha2UgZ29v
Z2xlLWNocm9tZS1YWFggd29yayBhcyBhIHBvcnQgbmFtZS4KKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgZGV0ZXJtaW5lX2Z1bGxfcG9ydF9uYW1lKGNscywgaG9zdCwgb3B0aW9ucywgcG9ydF9u
YW1lKToKKyAgICAgICAgcmV0dXJuICdjaHJvbWl1bS13aW4teHAnCisKICAgICBkZWYgYmFzZWxp
bmVfc2VhcmNoX3BhdGgoc2VsZik6CiAgICAgICAgIHBhdGhzID0gY2hyb21pdW1fd2luLkNocm9t
aXVtV2luUG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKQogICAgICAgICBwYXRocy5pbnNl
cnQoMCwgc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ2dvb2dsZS1jaHJvbWUtd2luJykpCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CmluZGV4
IDNmNTYzMDRmMTA4M2YxM2Y1OWVmZWRlZDE5MTQ1NmJmMmJkNzNiZTAuLjZkZWRkMmQ3MDYwNzFj
Y2RjNGE0OTg1MWNjNmQyNmM4MDEwMjRhZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CkBAIC03NiwxMCArNzYsNiBAQCBjbGFzcyBHdGtE
cml2ZXIoV2ViS2l0RHJpdmVyKToKIGNsYXNzIEd0a1BvcnQoV2ViS2l0UG9ydCk6CiAgICAgcG9y
dF9uYW1lID0gImd0ayIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCAqKmt3YXJncyk6
Ci0gICAgICAgIFdlYktpdFBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgKiprd2FyZ3MpCi0gICAg
ICAgIHNlbGYuX3ZlcnNpb24gPSBzZWxmLnBvcnRfbmFtZQotCiAgICAgZGVmIF9wb3J0X2ZsYWdf
Zm9yX3NjcmlwdHMoc2VsZik6CiAgICAgICAgIHJldHVybiAiLS1ndGsiCiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKaW5kZXggYzExYzBhMGEz
YTAxNzQ4YTVmMThkMTM1YTkwZjVjNDZjY2UxMzQ2Ny4uYTVmNTA4NGVjNmU3YmZiNzE4YmVkOWQz
MjQ5ODI0ZDRiY2E1NDVmYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9tYWMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9tYWMucHkKQEAgLTM1LDYgKzM1LDcgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMucG9ydC5sZWFrZGV0ZWN0b3IgaW1wb3J0IExlYWtEZXRlY3RvcgogCiBfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKKwogY2xhc3MgTWFjUG9ydChBcHBsZVBvcnQpOgog
ICAgIHBvcnRfbmFtZSA9ICJtYWMiCiAKQEAgLTQyLDggKzQzLDE5IEBAIGNsYXNzIE1hY1BvcnQo
QXBwbGVQb3J0KToKICAgICAjIGFuZCB0aGUgb3JkZXIgb2YgZmFsbGJhY2sgYmV0d2VlbiB0aGVt
LiAgTWF0Y2hlcyBPUldULgogICAgIFZFUlNJT05fRkFMTEJBQ0tfT1JERVIgPSBbIm1hYy1sZW9w
YXJkIiwgIm1hYy1zbm93bGVvcGFyZCIsICJtYWMtbGlvbiIsICJtYWMiXQogCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGhvc3QsICoqa3dhcmdzKToKLSAgICAgICAgQXBwbGVQb3J0Ll9faW5pdF9f
KHNlbGYsIGhvc3QsICoqa3dhcmdzKQorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkZXRlcm1p
bmVfZnVsbF9wb3J0X25hbWUoY2xzLCBob3N0LCBvcHRpb25zLCBwb3J0X25hbWUpOgorICAgICAg
ICBpZiBwb3J0X25hbWUuZW5kc3dpdGgoJy13azInKToKKyAgICAgICAgICAgICMgRklYTUU6IFRo
aXMgbWF5IGJlIHdyb25nLCBzaW5jZSBvcHRpb25zIGlzIGEgZ2xvYmFsIHByb3BlcnR5LCBhbmQg
dGhlIHBvcnRfbmFtZSBpcyBzcGVjaWZpYyB0byB0aGlzIG9iamVjdD8KKyAgICAgICAgICAgIGlm
IG9wdGlvbnMgYW5kIG5vdCBoYXNhdHRyKG9wdGlvbnMsICd3ZWJraXRfdGVzdF9ydW5uZXInKToK
KyAgICAgICAgICAgICAgICBvcHRpb25zLndlYmtpdF90ZXN0X3J1bm5lciA9IFRydWUKKyAgICAg
ICAgICAgIHBvcnRfbmFtZSA9IHBvcnRfbmFtZS5yZXBsYWNlKCctd2syJywgJycpCisgICAgICAg
IGlmIHBvcnRfbmFtZS5lbmRzd2l0aCgnbWFjJyk6CisgICAgICAgICAgICByZXR1cm4gcG9ydF9u
YW1lICsgJy0nICsgaG9zdC5wbGF0Zm9ybS5vc192ZXJzaW9uCisgICAgICAgIHJldHVybiBwb3J0
X25hbWUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoqa3dhcmdz
KToKKyAgICAgICAgQXBwbGVQb3J0Ll9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZSwgKipr
d2FyZ3MpCiAgICAgICAgIHNlbGYuX2xlYWtfZGV0ZWN0b3IgPSBMZWFrRGV0ZWN0b3Ioc2VsZikK
ICAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCJsZWFrcyIpOgogICAgICAgICAgICAgIyBEdW1w
UmVuZGVyVHJlZSBzbG93cyBkb3duIG5vdGljYWJseSBpZiB3ZSBydW4gbW9yZSB0aGFuIGFib3V0
IDEwMDAgdGVzdHMgaW4gYSBiYXRjaApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L21hY191bml0dGVzdC5weQppbmRleCA4OTY1ZmI4NGMyYTQ0
YThmYTlhZjQ4NmRlZDIwNWE3Mzk1Mjg0MjRiLi43Mzc2NjI5NmM0ZWMzNzA4YmIzYzE1ODViNzY3
YmQ3ZTJhNTE3ZWEzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L21hY191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L21hY191bml0dGVzdC5weQpAQCAtOTgsMjMgKzk4LDE5IEBAIGphdmEv
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LnZlcnNpb24oKSkKIAogICAgIGRlZiB0ZXN0
X3ZlcnNpb25zKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKE5vbmUsICdsZW9wYXJk
JywgJ21hYy1sZW9wYXJkJykKICAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnbWFjJywgJ2xlb3Bh
cmQnLCAnbWFjLWxlb3BhcmQnKQogICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdtYWMtbGVvcGFy
ZCcsICd0aWdlcicsICdtYWMtbGVvcGFyZCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21h
Yy1sZW9wYXJkJywgJ2xlb3BhcmQnLCAnbWFjLWxlb3BhcmQnKQogICAgICAgICBzZWxmLmFzc2Vy
dF9uYW1lKCdtYWMtbGVvcGFyZCcsICdzbm93bGVvcGFyZCcsICdtYWMtbGVvcGFyZCcpCiAKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbmFtZShOb25lLCAnc25vd2xlb3BhcmQnLCAnbWFjLXNub3dsZW9w
YXJkJykKICAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnbWFjJywgJ3Nub3dsZW9wYXJkJywgJ21h
Yy1zbm93bGVvcGFyZCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYy1zbm93bGVvcGFy
ZCcsICd0aWdlcicsICdtYWMtc25vd2xlb3BhcmQnKQogICAgICAgICBzZWxmLmFzc2VydF9uYW1l
KCdtYWMtc25vd2xlb3BhcmQnLCAnbGVvcGFyZCcsICdtYWMtc25vd2xlb3BhcmQnKQogICAgICAg
ICBzZWxmLmFzc2VydF9uYW1lKCdtYWMtc25vd2xlb3BhcmQnLCAnc25vd2xlb3BhcmQnLCAnbWFj
LXNub3dsZW9wYXJkJykKIAotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKE5vbmUsICdsaW9uJywg
J21hYy1saW9uJykKICAgICAgICAgc2VsZi5hc3NlcnRfbmFtZSgnbWFjJywgJ2xpb24nLCAnbWFj
LWxpb24nKQogICAgICAgICBzZWxmLmFzc2VydF9uYW1lKCdtYWMtbGlvbicsICdsaW9uJywgJ21h
Yy1saW9uJykKIAotICAgICAgICBzZWxmLmFzc2VydF9uYW1lKE5vbmUsICdmdXR1cmUnLCAnbWFj
LWZ1dHVyZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYycsICdmdXR1cmUnLCAnbWFj
LWZ1dHVyZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0X25hbWUoJ21hYy1mdXR1cmUnLCAnZnV0dXJl
JywgJ21hYy1mdXR1cmUnKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9tb2NrX2RydC5weQppbmRleCBkNTM1OWRlYzc5NTBjYTYxNDdiMzFmYzQ2
YzRiYjg0MWY1NDNjNWZhLi5mMjg0ZTc2OWZlOTIzZjc5MDdkYTI4ZmVjNzRjNmE4MjgzZjI2Mzc2
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21v
Y2tfZHJ0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
bW9ja19kcnQucHkKQEAgLTUwLDE0ICs1MCwxOCBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
X19uYW1lX18pCiAKIGNsYXNzIE1vY2tEUlRQb3J0KG9iamVjdCk6CiAgICAgIiIiTW9ja1BvcnQg
aW1wbGVtZW50YXRpb24gb2YgdGhlIFBvcnQgaW50ZXJmYWNlLiIiIgorICAgIHBvcnRfbmFtZSA9
ICdtb2NrJwogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsICoqa3dhcmdzKToKLSAgICAg
ICAgcHJlZml4ID0gJ21vY2stJwotICAgICAgICBpZiAncG9ydF9uYW1lJyBpbiBrd2FyZ3M6Ci0g
ICAgICAgICAgICBrd2FyZ3NbJ3BvcnRfbmFtZSddID0ga3dhcmdzWydwb3J0X25hbWUnXVtsZW4o
cHJlZml4KTpdCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRldGVybWluZV9mdWxsX3BvcnRf
bmFtZShjbHMsIGhvc3QsIG9wdGlvbnMsIHBvcnRfbmFtZSk6CisgICAgICAgICIiIlJldHVybiBh
IGZ1bGx5LXNwZWNpZmllZCBwb3J0IG5hbWUgdGhhdCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3Qg
b2JqZWN0cy4iIiIKKyAgICAgICAgIyBTdWJjbGFzc2VzIHdpbGwgdXN1YWxseSBvdmVycmlkZSB0
aGlzLgorICAgICAgICByZXR1cm4gcG9ydF9uYW1lCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
aG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuX19kZWxlZ2F0ZSA9IFBv
cnRGYWN0b3J5KGhvc3QpLmdldChwb3J0X25hbWUucmVwbGFjZSgnbW9jay0nLCAnJyksICoqa3dh
cmdzKQorICAgICAgICBzZWxmLl9fcmVhbF9uYW1lID0gcG9ydF9uYW1lCiAgICAgICAgIHNlbGYu
X2hvc3QgPSBob3N0Ci0gICAgICAgIHNlbGYuX19kZWxlZ2F0ZSA9IFBvcnRGYWN0b3J5KGhvc3Qp
LmdldCgqKmt3YXJncykKLSAgICAgICAgc2VsZi5fX3JlYWxfbmFtZSA9IHByZWZpeCArIHNlbGYu
X19kZWxlZ2F0ZS5uYW1lKCkKIAogICAgIGRlZiByZWFsX25hbWUoc2VsZik6CiAgICAgICAgIHJl
dHVybiBzZWxmLl9fcmVhbF9uYW1lCkBAIC0xNzQsNiArMTc4LDEyIEBAIGNsYXNzIF9EUlRJbnB1
dChvYmplY3QpOgogCiAKIGNsYXNzIE1vY2tEUlQob2JqZWN0KToKKyAgICBAY2xhc3NtZXRob2QK
KyAgICBkZWYgZGV0ZXJtaW5lX2Z1bGxfcG9ydF9uYW1lKGNscywgaG9zdCwgb3B0aW9ucywgcG9y
dF9uYW1lKToKKyAgICAgICAgIiIiUmV0dXJuIGEgZnVsbHktc3BlY2lmaWVkIHBvcnQgbmFtZSB0
aGF0IGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBvYmplY3RzLiIiIgorICAgICAgICAjIFN1YmNs
YXNzZXMgd2lsbCB1c3VhbGx5IG92ZXJyaWRlIHRoaXMuCisgICAgICAgIHJldHVybiBjbHMucG9y
dF9uYW1lCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgYXJncywgaG9zdCwgc3Rk
aW4sIHN0ZG91dCwgc3RkZXJyKToKICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAg
ICAgICAgc2VsZi5fYXJncyA9IGFyZ3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQppbmRleCBhMDIxY2JjOThl
NjM3MDg0NDMzZjU5YTRiNzllOGFiZmVjNjU5ZTNiLi4wN2IzNjU3YmJmM2Q5NDk2NWM3ZDI1MTA3
ZDNkODlkZTk1ZTkyMzg0IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CkBAIC01OSwxMCArNTksMTIgQEAg
Y2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBvc192ZXJzaW9uID0g
Tm9uZQogICAgIHBvcnRfbWFrZXIgPSBOb25lCiAKLSAgICBkZWYgbWFrZV9wb3J0KHNlbGYsIGhv
c3Q9Tm9uZSwgb3B0aW9ucz1Ob25lLCBvc19uYW1lPU5vbmUsIG9zX3ZlcnNpb249Tm9uZSwgKipr
d2FyZ3MpOgorICAgIGRlZiBtYWtlX3BvcnQoc2VsZiwgaG9zdD1Ob25lLCBwb3J0X25hbWU9Tm9u
ZSwgb3B0aW9ucz1Ob25lLCBvc19uYW1lPU5vbmUsIG9zX3ZlcnNpb249Tm9uZSwgKiprd2FyZ3Mp
OgogICAgICAgICBob3N0ID0gaG9zdCBvciBNb2NrU3lzdGVtSG9zdChvc19uYW1lPShvc19uYW1l
IG9yIHNlbGYub3NfbmFtZSksIG9zX3ZlcnNpb249KG9zX3ZlcnNpb24gb3Igc2VsZi5vc192ZXJz
aW9uKSkKICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgb3IgTW9ja09wdGlvbnMoY29uZmlndXJh
dGlvbj0nUmVsZWFzZScpCi0gICAgICAgIHJldHVybiBzZWxmLnBvcnRfbWFrZXIoaG9zdCwgb3B0
aW9ucz1vcHRpb25zLCAqKmt3YXJncykKKyAgICAgICAgcG9ydF9uYW1lID0gcG9ydF9uYW1lIG9y
IHNlbGYucG9ydF9uYW1lCisgICAgICAgIHBvcnRfbmFtZSA9IHNlbGYucG9ydF9tYWtlci5kZXRl
cm1pbmVfZnVsbF9wb3J0X25hbWUoaG9zdCwgb3B0aW9ucywgcG9ydF9uYW1lKQorICAgICAgICBy
ZXR1cm4gc2VsZi5wb3J0X21ha2VyKGhvc3QsIHBvcnRfbmFtZT0ocG9ydF9uYW1lIG9yIHNlbGYu
cG9ydF9uYW1lKSwgb3B0aW9ucz1vcHRpb25zLCAqKmt3YXJncykKIAogICAgIGRlZiB0ZXN0X2Rl
ZmF1bHRfd29ya2VyX21vZGVsKHNlbGYpOgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQo
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9x
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXQucHkKaW5k
ZXggNzAxMzc1ZTFlMmI2NmYwNzA4MGUwZTcxNzAwYzI1ZWFkNmM1MjcxMy4uMjQ0NTg3NjhjNzE4
MzZkZjIzZmVkNTFkNWIzODY3M2I3ZTg3MmI4MCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9xdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3F0LnB5CkBAIC00OSwyMyArNDksMjIgQEAgY2xhc3MgUXRQ
b3J0KFdlYktpdFBvcnQpOgogICAgIGRlZiBfcG9ydF9mbGFnX2Zvcl9zY3JpcHRzKHNlbGYpOgog
ICAgICAgICByZXR1cm4gIi0tcXQiCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGV0ZXJt
aW5lX2Z1bGxfcG9ydF9uYW1lKGNscywgaG9zdCwgb3B0aW9ucywgcG9ydF9uYW1lKToKKyAgICAg
ICAgaWYgcG9ydF9uYW1lIGFuZCBwb3J0X25hbWUgIT0gY2xzLnBvcnRfbmFtZToKKyAgICAgICAg
ICAgIHJldHVybiBwb3J0X25hbWUKKyAgICAgICAgcmV0dXJuIHBvcnRfbmFtZSArICctJyArIGhv
c3QucGxhdGZvcm0ub3NfbmFtZQorCiAgICAgIyBzeXNfcGxhdGZvcm0gZXhpc3RzIG9ubHkgZm9y
IHVuaXQgdGVzdGluZy4KLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lPU5v
bmUsICoqa3dhcmdzKToKLSAgICAgICAgcG9ydF9uYW1lID0gcG9ydF9uYW1lIG9yIHNlbGYucG9y
dF9uYW1lCi0gICAgICAgIFdlYktpdFBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1l
PU5vbmUsICoqa3dhcmdzKQotICAgICAgICBzZWxmLl9vcGVyYXRpbmdfc3lzdGVtID0gaG9zdC5w
bGF0Zm9ybS5vc19uYW1lCi0gICAgICAgIHNlbGYuX3ZlcnNpb24gPSBzZWxmLm9wZXJhdGluZ19z
eXN0ZW0oKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoqa3dhcmdz
KToKKyAgICAgICAgV2ViS2l0UG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoq
a3dhcmdzKQogCiAgICAgICAgICMgRklYTUU6IFRoaXMgd2lsbCBhbGxvdyBXZWJLaXRQb3J0LmJh
c2VsaW5lX3NlYXJjaF9wYXRoIGFuZCBXZWJLaXRQb3J0Ll9za2lwcGVkX2ZpbGVfc2VhcmNoX3Bh
dGhzCiAgICAgICAgICMgdG8gZG8gdGhlIHJpZ2h0IHRoaW5nLCBidXQgZG9lc24ndCBpbmNsdWRl
IHN1cHBvcnQgZm9yIHF0LTQuOCBvciBxdC1hcm0gKHNlZW4gaW4gTGF5b3V0VGVzdHMvcGxhdGZv
cm0pIHlldC4KKyAgICAgICAgc2VsZi5fb3BlcmF0aW5nX3N5c3RlbSA9IHBvcnRfbmFtZS5yZXBs
YWNlKCdxdC0nLCAnJykKIAotICAgICAgICBpZiBwb3J0X25hbWUgIT0gc2VsZi5wb3J0X25hbWU6
Ci0gICAgICAgICAgICBzZWxmLl9uYW1lID0gcG9ydF9uYW1lCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBuYW1lX2NvbXBvbmVudHMgPSBbc2VsZi5wb3J0X25hbWVdCi0gICAgICAgICAgICBp
ZiBzZWxmLm9wZXJhdGluZ19zeXN0ZW0oKToKLSAgICAgICAgICAgICAgICBuYW1lX2NvbXBvbmVu
dHMuYXBwZW5kKHNlbGYub3BlcmF0aW5nX3N5c3RlbSgpKQotICAgICAgICAgICAgc2VsZi5fbmFt
ZSA9ICItIi5qb2luKG5hbWVfY29tcG9uZW50cykKKyAgICAgICAgIyBGSVhNRTogV2h5IGlzIHRo
aXMgYmVpbmcgc2V0IGF0IGFsbD8KKyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHNlbGYub3BlcmF0
aW5nX3N5c3RlbSgpCiAKICAgICBkZWYgX2dlbmVyYXRlX2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25z
KHNlbGYpOgogICAgICAgICBjb25maWd1cmF0aW9ucyA9IFtdCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggMGQ1MWNmOTAxMmI4Nzg0
NWY3MTJlOGFmYWRmYjlhNWM2ZDhhNmM0Mi4uMzE0ZDlmMDJmMDU1NGNjYTdiYmM3OTIwYmZjNTk3
MGI1NTBiMDVlOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvdGVzdC5weQpAQCAtMjgsNyArMjgsNiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAiIiJEdW1t
eSBQb3J0IGltcGxlbWVudGF0aW9uIHVzZWQgZm9yIHRlc3RpbmcuIiIiCi1mcm9tIF9fZnV0dXJl
X18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CiAKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBzeXMKQEAg
LTMwNCw2ICszMDMsOCBAQCBXT05URklYIFNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9leGNlcHRp
b24uaHRtbCA9IENSQVNICiAKIAogY2xhc3MgVGVzdFBvcnQoUG9ydCk6CisgICAgcG9ydF9uYW1l
ID0gJ3Rlc3QnCisKICAgICAiIiJUZXN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBQb3J0IGludGVy
ZmFjZS4iIiIKICAgICBBTExfQkFTRUxJTkVfVkFSSUFOVFMgPSAoCiAgICAgICAgICd0ZXN0LW1h
Yy1zbm93bGVvcGFyZCcsICd0ZXN0LW1hYy1sZW9wYXJkJywKQEAgLTMxMSwxNiArMzEyLDIxIEBA
IGNsYXNzIFRlc3RQb3J0KFBvcnQpOgogICAgICAgICAndGVzdC1saW51eC14ODZfNjQnLAogICAg
ICkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9Tm9uZSwgKiprd2Fy
Z3MpOgotICAgICAgICBpZiBub3QgcG9ydF9uYW1lIG9yIHBvcnRfbmFtZSA9PSAndGVzdCc6Ci0g
ICAgICAgICAgICBwb3J0X25hbWUgPSAndGVzdC1tYWMtbGVvcGFyZCcKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgZGV0ZXJtaW5lX2Z1bGxfcG9ydF9uYW1lKGNscywgaG9zdCwgb3B0aW9ucywg
cG9ydF9uYW1lKToKKyAgICAgICAgaWYgcG9ydF9uYW1lID09ICd0ZXN0JzoKKyAgICAgICAgICAg
IHJldHVybiAndGVzdC1tYWMtbGVvcGFyZCcKKyAgICAgICAgcmV0dXJuIHBvcnRfbmFtZQogCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZT1Ob25lLCAqKmt3YXJncyk6Cisg
ICAgICAgICMgRklYTUU6IENvbnNpZGVyIHVwZGF0aW5nIGFsbCBvZiB0aGUgY2FsbGVycyB0byBw
YXNzIGluIGEgcG9ydF9uYW1lIHNvIGl0IGNhbiBiZSBhCisgICAgICAgICMgcmVxdWlyZWQgcGFy
YW1ldGVyIGxpa2UgYWxsIG9mIHRoZSBvdGhlciBQb3J0IG9iamVjdHMuCisgICAgICAgIHBvcnRf
bmFtZSA9IHBvcnRfbmFtZSBvciAndGVzdC1tYWMtbGVvcGFyZCcKKyAgICAgICAgUG9ydC5fX2lu
aXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKQogICAgICAgICBzZWxmLl90ZXN0
cyA9IHVuaXRfdGVzdF9saXN0KCkKICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zX3BhdGggPSBM
QVlPVVRfVEVTVF9ESVIgKyAnL3BsYXRmb3JtL3Rlc3QvdGVzdF9leHBlY3RhdGlvbnMudHh0Jwog
ICAgICAgICBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSA9IE5vbmUKIAotICAgICAgICBQb3J0Ll9f
aW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZT1wb3J0X25hbWUsICoqa3dhcmdzKQotCiAgICAg
ICAgIHNlbGYuX29wZXJhdGluZ19zeXN0ZW0gPSAnbWFjJwogICAgICAgICBpZiBwb3J0X25hbWUu
c3RhcnRzd2l0aCgndGVzdC13aW4nKToKICAgICAgICAgICAgIHNlbGYuX29wZXJhdGluZ19zeXN0
ZW0gPSAnd2luJwpAQCAtMzM3LDcgKzM0Myw2IEBAIGNsYXNzIFRlc3RQb3J0KFBvcnQpOgogICAg
ICAgICB9CiAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSB2ZXJzaW9uX21hcFtwb3J0X25hbWVdCiAK
LQogICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZik6CiAgICAgICAgICMgVGhpcyByb3V0aW5l
IHNob3VsZG4ndCBub3JtYWxseSBiZSBjYWxsZWQsIGJ1dCBpdCBpcyBjYWxsZWQgYnkKICAgICAg
ICAgIyB0aGUgbW9ja19kcnQgRHJpdmVyLiBXZSByZXR1cm4gc29tZXRoaW5nLCBidXQgbWFrZSBz
dXJlIGl0J3MgdXNlbGVzcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggY2RkNmFmMmQ2YjY2NjA4OTM3YTllNDhkOWI5NTli
MTZlNmMzMzVhYi4uNmJiZGFjYzY0N2JmMjY0ZDRmYzBjNTFhNjA5YTlmOTFmMjMyMjI2ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQu
cHkKQEAgLTUxLDggKzUxLDggQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQog
CiAKIGNsYXNzIFdlYktpdFBvcnQoUG9ydCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Qs
ICoqa3dhcmdzKToKLSAgICAgICAgUG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCAqKmt3YXJncykK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lPU5vbmUsICoqa3dhcmdzKToK
KyAgICAgICAgUG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9cG9ydF9uYW1lLCAq
Kmt3YXJncykKIAogICAgICAgICAjIEZJWE1FOiBEaXNhYmxlIHBpeGVsIHRlc3RzIHVudGlsIHRo
ZXkgYXJlIHJ1biBieSBkZWZhdWx0IG9uIGJ1aWxkLndlYmtpdC5vcmcuCiAgICAgICAgIHNlbGYu
c2V0X29wdGlvbl9kZWZhdWx0KCJwaXhlbF90ZXN0cyIsIEZhbHNlKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW4ucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbi5weQppbmRleCAzMjNiYzFkYmYzY2Vi
OWNkZjkzZGQ3ODI2NTcxODI3OGM3MGIzZGM0Li5iMmZiZDM1OGNhMzExMTQ2NDg5NTRlOTQ2ZGM4
NmY2MjQwZGQyZDFkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3dpbi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dpbi5weQpAQCAtMzgsNiArMzgsNyBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0LmFwcGxlIGltcG9ydCBBcHBsZVBvcnQKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihf
X25hbWVfXykKIAogCisKIGNsYXNzIFdpblBvcnQoQXBwbGVQb3J0KToKICAgICBwb3J0X25hbWUg
PSAid2luIgogCkBAIC00NSw2ICs0NiwyMCBAQCBjbGFzcyBXaW5Qb3J0KEFwcGxlUG9ydCk6CiAg
ICAgIyBhbmQgdGhlIG9yZGVyIG9mIGZhbGxiYWNrIGJldHdlZW4gdGhlbS4gIE1hdGNoZXMgT1JX
VC4KICAgICBWRVJTSU9OX0ZBTExCQUNLX09SREVSID0gWyJ3aW4teHAiLCAid2luLXZpc3RhIiwg
Indpbi03c3AwIiwgIndpbiJdCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGV0ZXJtaW5l
X2Z1bGxfcG9ydF9uYW1lKGNscywgaG9zdCwgb3B0aW9ucywgcG9ydF9uYW1lKToKKyAgICAgICAg
aWYgcG9ydF9uYW1lLmVuZHN3aXRoKCctd2syJyk6CisgICAgICAgICAgICAjIEZJWE1FOiBUaGlz
IG1heSBiZSB3cm9uZywgc2luY2Ugb3B0aW9ucyBpcyBhIGdsb2JhbCBwcm9wZXJ0eSwgYW5kIHRo
ZSBwb3J0X25hbWUgaXMgc3BlY2lmaWMgdG8gdGhpcyBvYmplY3Q/CisgICAgICAgICAgICBpZiBv
cHRpb25zIGFuZCBub3QgaGFzYXR0cihvcHRpb25zLCAnd2Via2l0X3Rlc3RfcnVubmVyJyk6Cisg
ICAgICAgICAgICAgICAgb3B0aW9ucy53ZWJraXRfdGVzdF9ydW5uZXIgPSBUcnVlCisgICAgICAg
ICAgICBwb3J0X25hbWUgPSBwb3J0X25hbWUucmVwbGFjZSgnLXdrMicsICcnKQorICAgICAgICBp
ZiBwb3J0X25hbWUuZW5kc3dpdGgoJ3dpbicpOgorICAgICAgICAgICAgaWYgaG9zdC5wbGF0Zm9y
bS5vc19uYW1lICE9ICd3aW4nOgorICAgICAgICAgICAgICAgIHJldHVybiAnd2luJworICAgICAg
ICAgICAgcmV0dXJuIHBvcnRfbmFtZSArICctJyArIGhvc3QucGxhdGZvcm0ub3NfdmVyc2lvbgor
ICAgICAgICByZXR1cm4gcG9ydF9uYW1lCisKKwogICAgIGRlZiBjb21wYXJlX3RleHQoc2VsZiwg
ZXhwZWN0ZWRfdGV4dCwgYWN0dWFsX3RleHQpOgogICAgICAgICAjIFNhbml0eSB3YXMgcmVzdG9y
ZWQgaW4gV0syLCBzbyB3ZSBkb24ndCBuZWVkIHRoaXMgaGFjayB0aGVyZS4KICAgICAgICAgaWYg
c2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9ydW5uZXInKToKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXIucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyLnB5CmluZGV4
IDM5YzViOWU1NTFkYTFlZjBlYTkwNjgxYzQ5NGM5NTU1OWFjOGEzNWEuLjE1YmNkNmY1NTk0MzFi
NWU2MTZlZDc0NjUwNDI4ZjllNjRlYjExNmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlci5weQpAQCAtMTY1LDcgKzE2
NSw3IEBAIGRlZiBnZXRfdGVzdF9iYXNlbGluZXModGVzdF9maWxlLCB0ZXN0X2NvbmZpZyk6CiAg
ICAgIyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIGEgaGFjay4gVGhpcyBvbmx5IHNlZW1zIHVzZWQg
dG8gYWNjZXNzIHRoZSBQb3J0LmV4cGVjdGVkX2Jhc2VsaW5lcyBsb2dpYy4KICAgICBjbGFzcyBB
bGxQbGF0Zm9ybXNQb3J0KFdlYktpdFBvcnQpOgogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg
aG9zdCk6Ci0gICAgICAgICAgICBXZWJLaXRQb3J0Ll9faW5pdF9fKHNlbGYsIGhvc3QpCisgICAg
ICAgICAgICBXZWJLaXRQb3J0Ll9faW5pdF9fKHNlbGYsIGhvc3QsICdtYWMnKQogICAgICAgICAg
ICAgc2VsZi5fcGxhdGZvcm1zX2J5X2RpcmVjdG9yeSA9IGRpY3QoWyhzZWxmLl93ZWJraXRfYmFz
ZWxpbmVfcGF0aChwKSwgcCkgZm9yIHAgaW4gdGVzdF9jb25maWcucGxhdGZvcm1zXSkKIAogICAg
ICAgICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlcl91
bml0dGVzdC5weQppbmRleCAzMGQxZTY2MTAwZDcyODQ3OGFiODRhZjc1YTU0NzNiZWU0OWQwYTdl
Li4wYjliYzQzYWZkNGJlNDk0ODg0MzZlZTEyYTJmZDQ3YzQyNDRkZTZhIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxp
bmVzZXJ2ZXJfdW5pdHRlc3QucHkKQEAgLTMxMCwxMSArMzEwLDggQEAgZGVmIGdldF90ZXN0X2Nv
bmZpZyh0ZXN0X2ZpbGVzPVtdLCByZXN1bHRfZmlsZXM9W10pOgogICAgIGNsYXNzIFRlc3RNYWNQ
b3J0KFdlYktpdFBvcnQpOgogICAgICAgICBwb3J0X25hbWUgPSAibWFjIgogCi0gICAgICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBob3N0KToKLSAgICAgICAgICAgIFdlYktpdFBvcnQuX19pbml0X18o
c2VsZiwgaG9zdCwgcG9ydF9uYW1lPXNlbGYucG9ydF9uYW1lKQotCiAgICAgcmV0dXJuIFRlc3RD
b25maWcoCi0gICAgICAgIFRlc3RNYWNQb3J0KGhvc3QpLAorICAgICAgICBUZXN0TWFjUG9ydCho
b3N0LCAnbWFjJyksCiAgICAgICAgIGxheW91dF90ZXN0c19kaXJlY3RvcnksCiAgICAgICAgIHJl
c3VsdHNfZGlyZWN0b3J5LAogICAgICAgICAoJ21hYycsICdtYWMtbGVvcGFyZCcsICd3aW4nLCAn
bGludXgnKSwK
</data>

          </attachment>
      

    </bug>

</bugzilla>