<?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>102007</bug_id>
          
          <creation_ts>2012-11-12 16:20:57 -0800</creation_ts>
          <short_desc>webkitpy: consolidate webkit-base-finding code</short_desc>
          <delta_ts>2012-11-14 17:29:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>764939</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-12 16:20:57 -0800</bug_when>
    <thetext>webkitpy: consolidate webkit-base-finding code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764947</commentid>
    <comment_count>1</comment_count>
      <attachid>173756</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-12 16:28:42 -0800</bug_when>
    <thetext>Created attachment 173756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764950</commentid>
    <comment_count>2</comment_count>
      <attachid>173756</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-12 16:31:28 -0800</bug_when>
    <thetext>Comment on attachment 173756
Patch

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

&gt; Tools/Scripts/webkitpy/common/system/systemhost.py:51
&gt; +    def webkit_base_dir(self):

I&apos;m not actually sure that SystemHost is the best place for this. We know we don&apos;t want it in layout_tests.port, and it doesn&apos;t seem like common/config/Checkout is the right place (since that is too version-control-centric).

Arguably workspace.Workspace() might be the right place, but I&apos;m not actually sure why that class exists and it seems to introduce an unnecessary additional concept. Maybe Workspace() should be merged into SystemHost()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764958</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-12 16:37:07 -0800</bug_when>
    <thetext>Checkout seems like the right place for finding your chromium vs. no checkout, etc.  It could also be exteneded to support tarballs, or whatever other diretory structures folks want.

Workspace was just a place to stick the zip and &quot;find me a filename&quot; logic, which seemed above FileSystem, but not really fitting for Checkout.  I&apos;m open to other names or organizations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764969</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-12 16:44:41 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Checkout seems like the right place for finding your chromium vs. no checkout, etc.  It could also be exteneded to support tarballs, or whatever other diretory structures folks want.
&gt; 

Checkout seems to require an scm object in order to function, and seems to be concerned with changelogs and other stuff specific to actually doing things with version-control. It doesn&apos;t seem like the rest of the class would work without a real scm object, so moving these routines there seems like a bad fit.

&gt; Workspace was just a place to stick the zip and &quot;find me a filename&quot; logic, which seemed above FileSystem, but not really fitting for Checkout.  I&apos;m open to other names or organizations.

Do you dislike just keeping this stuff in SystemHost (and maybe getting rid of Workspace)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764971</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-12 16:47:02 -0800</bug_when>
    <thetext>Maybe Checkout should have some sort of superclass (like Workspace?) which handled the idea of a general place where the code is stored, and was not dependent on SCM?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764972</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-12 16:47:49 -0800</bug_when>
    <thetext>SystemHost shouldn&apos;t need to know anything about WebKit, should it?  It&apos;s supposed to be your basic mocking root for how you talk to the outside world?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764977</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-12 16:56:45 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Maybe Checkout should have some sort of superclass (like Workspace?) which handled the idea of a general place where the code is stored, and was not dependent on SCM?

I&apos;m open to something like this, though it&apos;s not clear to me that there&apos;s really anything really in common with Checkout and Workspace at all.

(In reply to comment #6)
&gt; SystemHost shouldn&apos;t need to know anything about WebKit, should it?  It&apos;s supposed to be your basic mocking root for how you talk to the outside world?

I don&apos;t know that SystemHost has this specifically as its raison d&apos;etre. I wonder how many things we write at all in webkitpy that want a systemhost (or anything) but don&apos;t want either a full host or at least something that implements these few new routines (the layout_tests.port stuff may be the only code that depends on systemhost rather than host, and that&apos;s true to avoid circular dependencies and because I don&apos;t want the port stuff to depend on SCM objects). 

I also worry a bit about a proliferation of fine-grained (mostly base) classes. It looks like the two routines in Workspace are only used by tool.bot.layouttestresultsreader; I&apos;d probably just roll them into that class until someone else actually has a need for them.

WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765025</commentid>
    <comment_count>8</comment_count>
      <attachid>173770</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-12 17:29:46 -0800</bug_when>
    <thetext>Created attachment 173770
add missed tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765964</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-13 13:05:27 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; I also worry a bit about a proliferation of fine-grained (mostly base) classes. It looks like the two routines in Workspace are only used by tool.bot.layouttestresultsreader; I&apos;d probably just roll them into that class until someone else actually has a need for them.
&gt; 
&gt; WDYT?

Thats fine, or you could simply move them into that class.

One of my goals with webkitpy was to write re-usable code. :)  When useful I tried to split things out into classes.  i agree that Workspace has seen little other use (although I just used the find_unused_filename code in my --profile patch last week).

In any case, you&apos;re in this code much more than I am these days.  I don&apos;t think small classes are bad.  I do think monolithic classes are.  And files with lots of classes are similarly bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765965</commentid>
    <comment_count>10</comment_count>
      <attachid>173770</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-13 13:06:53 -0800</bug_when>
    <thetext>Comment on attachment 173770
add missed tests

SystemHost currently ahs nothing to do with WebKit.  it&apos;s simply a mock-point for writing python code which can be easily mocked.  I dont&apos; think this is the right direction.  I do support consolidating this logic. But SystemHost is the wrong place IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765971</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-13 13:12:02 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 173770 [details])
&gt; SystemHost currently ahs nothing to do with WebKit.  it&apos;s simply a mock-point for writing python code which can be easily mocked.  I dont&apos; think this is the right direction.  I do support consolidating this logic. But SystemHost is the wrong place IMO.

Okay, I&apos;ve got no real problem with that.

How about I move these functions into Workspace, and then (in separate follow-on patches) move the existing functions in Workspace into LayoutTestsResultReader and make Checkout derive from Workspace?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765979</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-13 13:17:44 -0800</bug_when>
    <thetext>Whoops, didn&apos;t see this comment ...

(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #5)
&gt; &gt; I also worry a bit about a proliferation of fine-grained (mostly base) classes. It looks like the two routines in Workspace are only used by tool.bot.layouttestresultsreader; I&apos;d probably just roll them into that class until someone else actually has a need for them.
&gt; &gt; 
&gt; &gt; WDYT?
&gt; 
&gt; Thats fine, or you could simply move them into that class.
&gt; 
&gt; One of my goals with webkitpy was to write re-usable code. :)  When useful I tried to split things out into classes.  i agree that Workspace has seen little other use (although I just used the find_unused_filename code in my --profile patch last week).
&gt; 

Don&apos;t think I saw the reference to that ..


&gt; In any case, you&apos;re in this code much more than I am these days.  I don&apos;t think small classes are bad.  I do think monolithic classes are.  And files with lots of classes are similarly bad.

I don&apos;t think small classes are bad per se, and I definitely agree that both big classes and &quot;catch-all&quot; classes (like Port) are bad. Of course, having to jump between multiple places and files to follow the code incurs its own cost. I tend to like to break things out into their own files only if they are actually being reused or if reducing the size of the files does make things easier to file

I agree that putting webkit_base_dir() in SystemHost is at best a grey area, and wouldn&apos;t really argue that it&apos;s just bad :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766049</commentid>
    <comment_count>13</comment_count>
      <attachid>173987</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-13 14:19:34 -0800</bug_when>
    <thetext>Created attachment 173987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767499</commentid>
    <comment_count>14</comment_count>
      <attachid>174296</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-14 17:14:22 -0800</bug_when>
    <thetext>Created attachment 174296
rework into a separate new WebKitFinder module</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767503</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-14 17:14:38 -0800</bug_when>
    <thetext>fourth times&apos; a charm?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767504</commentid>
    <comment_count>16</comment_count>
      <attachid>174296</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-14 17:19:15 -0800</bug_when>
    <thetext>Comment on attachment 174296
rework into a separate new WebKitFinder module

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767510</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-14 17:29:15 -0800</bug_when>
    <thetext>Committed r134701: &lt;http://trac.webkit.org/changeset/134701&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173756</attachid>
            <date>2012-11-12 16:28:42 -0800</date>
            <delta_ts>2012-11-12 17:29:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102007-20121112162643.patch</filename>
            <type>text/plain</type>
            <size>30309</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MzA5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzY3MTA5NDViMjc2OTAyODRlNGMwYmM2OWRhNzc4ZWIz
NWFkNTk3Zi4uNzYzMmU2YjI0ZGYwNDIzMjA4YTQwNGI0NGQ2NTQyNjEwZDI4ZDRjNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc4
IEBACiAyMDEyLTExLTEyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBjb25zb2xpZGF0ZSB3ZWJraXQtYmFzZS1maW5kaW5nIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjAwNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
bW92ZXMgdGhlIGxvZ2ljIGZvciBkZXRlcm1pbmluZyB0aGUgdG9wIG9mIHRoZSB3ZWJraXQKKyAg
ICAgICAgc291cmNlIHRyZWUgb3V0IG9mIHRoZSBsYXlvdXRfdGVzdHMvcG9ydC8qIGNsYXNzZXMg
YW5kIGludG8KKyAgICAgICAgU3lzdGVtSG9zdCwgc28gdGhhdCBpdCBpcyBhdmFpbGFibGUgZnJv
bSBhbnl3aGVyZSBpbiB0aGUgdHJlZQorICAgICAgICAoYW5kIGhlbmNlIHRoZSBweXRob24gc3R5
bGUgY2hlY2tpbmcgY29kZSBjYW4gdXNlIGl0KS4KKworICAgICAgICBUaGlzIGNvZGUgaXMgc29t
ZXdoYXQgcmVkdW5kYW50IHdpdGggdGhlIGNvZGUgZm9yIGZpbmRfY2hlY2tvdXRfcm9vdCgpCisg
ICAgICAgIGluIHRoZSBzY20gbW9kdWxlcywgYnV0IGl0IGRvZXMgbm90IHJlbHkgb24gYW4gYWN0
dWFsIGNoZWNrb3V0IHRvIHdvcmsKKyAgICAgICAgKG9yIGV2ZW4gZm9yIGdpdCBvciBzdm4gdG8g
YmUgaW5zdGFsbGVkKS4gVGhpcyBpcyBhIHJlcXVpcmVtZW50IGZvcgorICAgICAgICBzb21lIHVz
ZXMgb2YgdGhlIHRyZWUgKGUuZy4sIENocm9taXVtIHRlc3RlciBjaGVja291dHMpLgorCisgICAg
ICAgIEFsc28sIHRoZSBzY20gbW9kdWxlcyBmaW5kIHRoZSB0b3Agb2YgdGhlIGNoZWNrb3V0IGZv
ciBhIGdpdmVuIHBhdGgsCisgICAgICAgIG5vdCB0aGUgYWN0dWFsIHRvcCBvZiB0aGUgd2Via2l0
IHRyZWUgYmVpbmcgdXNlZC4gQXJndWFibHkgdGhlCisgICAgICAgIGNoZWNrb3V0IG1vZHVsZSBz
aG91bGQgdXNlIHRoZSByb3V0aW5lIGZyb20gc3lzdGVtaG9zdCBhbmQgbm90IHRoZQorICAgICAg
ICByb3V0aW5lcyBmcm9tIHRoZSBzY20gbW9kdWxlcywgc28gdGhhdCB3ZSBjaGVja291dCBiZWlu
ZyB1c2VkIGJ5IHRoZQorICAgICAgICBzY3JpcHRzIHRoZW1zZWx2ZXMgYW5kIG5vdCB3aGF0ZXZl
ciByYW5kb20gY2hlY2tvdXQgdGhlIGN1cnJlbnQgd29ya2luZworICAgICAgICBkaXJlY3Rvcnkg
aGFwcGVucyB0byBiZSBpbiwgYnV0IHRoYXQncyBhIHNlcGFyYXRlIHBhdGNoLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggcmVtb3ZlcyBtb3N0IG9mIHRoZSBsb2dpYyBmcm9tIHRoZSBsYXlvdXRfdGVz
dHMucG9ydC5jb25maWcKKyAgICAgICAgbW9kdWxlOyB3ZSBqdXN0IG5lZWQgdG8gbW92ZSB0aGUg
ZGVmYXVsdF9jb25maWd1cmF0aW9uIGFuZCBmbGFnX2Zyb21fY29uZmlndXJhdGlvbgorICAgICAg
ICBsb2dpYyBpbnRvIERlcHJlY2F0ZWRQb3J0IChvciBzb21lcGxhY2UgZWxzZSBhcHByb3ByaWF0
ZSkgYW5kIHdlIGNhbgorICAgICAgICBmaW5pc2ggZ2V0dGluZyByaWQgb2YgdGhlIENvbmZpZyBj
bGFzcywgYnV0IHRoYXQgaXMgYWxzbyBhIHNlcGFyYXRlIHBhdGNoLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYmFzZWxpbmVvcHRpbWl6ZXIucHk6CisgICAg
ICAgIChfYmFzZWxpbmVfc2VhcmNoX2h5cGVyZ3JhcGgpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5OgorICAgICAgICAoU3lzdGVtSG9zdC5f
X2luaXRfXyk6CisgICAgICAgIChTeXN0ZW1Ib3N0Lm1ha2VfZmlsZV9sb2NrKToKKyAgICAgICAg
KFN5c3RlbUhvc3QpOgorICAgICAgICAoU3lzdGVtSG9zdC53ZWJraXRfYmFzZV9kaXIpOgorICAg
ICAgICAoU3lzdGVtSG9zdC5wYXRoX2Zyb21fd2Via2l0X2Jhc2UpOgorICAgICAgICAoU3lzdGVt
SG9zdC5zY3JpcHRfcGF0aCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL3N5c3RlbWhvc3RfbW9jay5weToKKyAgICAgICAgKE1vY2tTeXN0ZW1Ib3N0Lm1ha2VfZmls
ZV9sb2NrKToKKyAgICAgICAgKE1vY2tTeXN0ZW1Ib3N0KToKKyAgICAgICAgKE1vY2tTeXN0ZW1I
b3N0LndlYmtpdF9iYXNlX2Rpcik6CisgICAgICAgIChNb2NrU3lzdGVtSG9zdC5wYXRoX2Zyb21f
d2Via2l0X2Jhc2UpOgorICAgICAgICAoTW9ja1N5c3RlbUhvc3Quc2NyaXB0X3BhdGgpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAg
ICAgKFBvcnQuX19pbml0X18pOgorICAgICAgICAoUG9ydC5wZXJmX3Rlc3RzX2Rpcik6CisgICAg
ICAgIChQb3J0LnBhdGhfZnJvbV93ZWJraXRfYmFzZSk6CisgICAgICAgIChQb3J0Ll9ydW5fc2Ny
aXB0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX2xpbnV4LnB5OgorICAgICAgICAoQ2hyb21pdW1MaW51eFBvcnQuX2RldGVybWluZV9kcml2
ZXJfcGF0aF9zdGF0aWNhbGx5KToKKyAgICAgICAgKENocm9taXVtTGludXhQb3J0Ll9kZXRlcm1p
bmVfYXJjaGl0ZWN0dXJlKToKKyAgICAgICAgKENocm9taXVtTGludXhQb3J0LmRldGVybWluZV9m
dWxsX3BvcnRfbmFtZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jb25maWcucHk6CisgICAgICAgIChDb25maWcuX19pbml0X18pOgorICAgICAgICAoQ29u
ZmlnLmJ1aWxkX2RpcmVjdG9yeSk6CisgICAgICAgIChDb25maWcuZGVmYXVsdF9jb25maWd1cmF0
aW9uKToKKyAgICAgICAgKENvbmZpZy5fcmVhZF9jb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ19tb2NrLnB5OgorICAgICAg
ICAoTW9ja0NvbmZpZy5kZWZhdWx0X2NvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnX3N0YW5kYWxvbmUucHk6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nv
bmZpZ191bml0dGVzdC5weToKKyAgICAgICAgKENvbmZpZ1Rlc3QubWFrZV9jb25maWcpOgorICAg
ICAgICAoQ29uZmlnVGVzdC50ZXN0X2RlZmF1bHRfY29uZmlndXJhdGlvbl9fc3RhbmRhbG9uZSk6
CisgICAgICAgIChDb25maWdUZXN0LnRlc3RfZGVmYXVsdF9jb25maWd1cmF0aW9uX19zY3JpcHRl
cnJvcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsu
cHk6CisgICAgICAgIChHdGtQb3J0LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcik6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHk6CisgICAgICAgIChN
YWNQb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvcHl0aG9uLnB5OgorICAgICAgICAoUHlsaW50ZXIuX19pbml0X18p
OgorCisyMDEyLTExLTEyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAg
ICAgICAgIHdlYmtpdHB5OiBpbnRlZ3JhdGUgcHlsaW50IGludG8gY2hlY2std2Via2l0LXN0eWxl
LCBwYXJ0IEkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMTI4NQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9iYXNlbGluZW9wdGltaXplci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyLnB5CmluZGV4IGQyZDUzYTU2ODRkYmI4ZGRmYTE4
NTYwZDIxYjg4MjBmMWFmMjE3NzUuLjZlYmYzYTliMWE0NjMwODVjNWM3MjdjNWYyZjcyYWVjNWUx
MDEzZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L2Jhc2VsaW5lb3B0aW1pemVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyLnB5CkBAIC00OSw3ICs0OSw3IEBAIGRlZiBfYmFz
ZWxpbmVfc2VhcmNoX2h5cGVyZ3JhcGgoaG9zdCwgcG9ydF9uYW1lcyk6CiAgICAgcG9ydF9mYWN0
b3J5ID0gaG9zdC5wb3J0X2ZhY3RvcnkKICAgICBmb3IgcG9ydF9uYW1lIGluIHBvcnRfbmFtZXM6
CiAgICAgICAgIHBvcnQgPSBwb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZSkKLSAgICAgICAgd2Vi
a2l0X2Jhc2UgPSBwb3J0LndlYmtpdF9iYXNlKCkKKyAgICAgICAgd2Via2l0X2Jhc2UgPSBob3N0
LndlYmtpdF9iYXNlX2RpcigpCiAgICAgICAgIHNlYXJjaF9wYXRoID0gcG9ydC5iYXNlbGluZV9z
ZWFyY2hfcGF0aCgpCiAgICAgICAgIGlmIHNlYXJjaF9wYXRoOgogICAgICAgICAgICAgaHlwZXJn
cmFwaFtwb3J0X25hbWVdID0gW2hvc3QuZmlsZXN5c3RlbS5yZWxwYXRoKHBhdGgsIHdlYmtpdF9i
YXNlKSBmb3IgcGF0aCBpbiBzZWFyY2hfcGF0aF0gKyBmYWxsYmFja19wYXRoCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5CmluZGV4IGRm
ZWM2OGJjMTdjMjBjMWVmNTAwMWVkOWFmMzljMjZmNDlhOWVlMzAuLjlkOTRlZDNhOTc2NWU2OWZk
YWMxYjAyZGM2MDkwZWIxM2FhMmM4MGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5CkBAIC00MCw5ICs0MCwzMyBAQCBjbGFzcyBT
eXN0ZW1Ib3N0KG9iamVjdCk6CiAgICAgICAgIHNlbGYudXNlciA9IHVzZXIuVXNlcigpCiAgICAg
ICAgIHNlbGYucGxhdGZvcm0gPSBwbGF0Zm9ybWluZm8uUGxhdGZvcm1JbmZvKHN5cywgcGxhdGZv
cm0sIHNlbGYuZXhlY3V0aXZlKQogICAgICAgICBzZWxmLndvcmtzcGFjZSA9IHdvcmtzcGFjZS5X
b3Jrc3BhY2Uoc2VsZi5maWxlc3lzdGVtLCBzZWxmLmV4ZWN1dGl2ZSkKKyAgICAgICAgc2VsZi5f
d2Via2l0X2Jhc2VfZGlyID0gTm9uZQogCiAgICAgZGVmIGNvcHlfY3VycmVudF9lbnZpcm9ubWVu
dChzZWxmKToKICAgICAgICAgcmV0dXJuIGVudmlyb25tZW50LkVudmlyb25tZW50KG9zLmVudmly
b24uY29weSgpKQogCiAgICAgZGVmIG1ha2VfZmlsZV9sb2NrKHNlbGYsIHBhdGgpOgogICAgICAg
ICByZXR1cm4gZmlsZV9sb2NrLkZpbGVMb2NrKHBhdGgpCisKKyAgICBkZWYgd2Via2l0X2Jhc2Vf
ZGlyKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB0
b3Agb2YgdGhlIFdlYktpdCB0cmVlLgorCisgICAgICAgIFJhaXNlcyBhbiBBc3NlcnRpb25FcnJv
ciBpZiB0aGUgdG9wIGRpciBjYW4ndCBiZSBkZXRlcm1pbmVkLiIiIgorICAgICAgICAjIE5vdGU6
IFRoaXMgY29kZSBzb21ld2hhdCBkdXBsaWNhdGVzIHRoZSBjb2RlIGluCisgICAgICAgICMgc2Nt
LmZpbmRfY2hlY2tvdXRfcm9vdCgpLiBIb3dldmVyLCB0aGF0IGNvZGUgb25seSB3b3JrcyBpZiB0
aGUgdG9wCisgICAgICAgICMgb2YgdGhlIFNDTSByZXBvc2l0b3J5IGFsc28gbWF0Y2hlcyB0aGUg
dG9wIG9mIHRoZSBXZWJLaXQgdHJlZS4gVGhlCisgICAgICAgICMgQ2hyb21pdW0gcG9ydHMsIGZv
ciBleGFtcGxlLCBtaWdodCBvbmx5IGNoZWNrIG91dCBzdWJkaXJlY3RvcmllcyBsaWtlCisgICAg
ICAgICMgVG9vbHMvU2NyaXB0LiBUaGlzIGNvZGUgd2lsbCBhbHNvIHdvcmsgaWYgdGhlcmUgaXMg
bm8gU0NNIHN5c3RlbSBhdCBhbGwuCisgICAgICAgIGlmIG5vdCBzZWxmLl93ZWJraXRfYmFzZV9k
aXI6CisgICAgICAgICAgICBzZWxmLl93ZWJraXRfYmFzZV9kaXIgPSBzZWxmLl93ZWJraXRfYmFz
ZV9kaXIKKyAgICAgICAgICAgIG1vZHVsZV9wYXRoID0gc2VsZi5maWxlc3lzdGVtLnBhdGhfdG9f
bW9kdWxlKHNlbGYuX19tb2R1bGVfXykKKyAgICAgICAgICAgIHRvb2xzX2luZGV4ID0gbW9kdWxl
X3BhdGguZmluZCgnVG9vbHMnKQorICAgICAgICAgICAgYXNzZXJ0IHRvb2xzX2luZGV4ICE9IC0x
LCAiY291bGQgbm90IGZpbmQgbG9jYXRpb24gb2YgdGhpcyBjaGVja291dCBmcm9tICVzIiAlIG1v
ZHVsZV9wYXRoCisgICAgICAgICAgICBzZWxmLl93ZWJraXRfYmFzZV9kaXIgPSBtb2R1bGVfcGF0
aFswOnRvb2xzX2luZGV4IC0gMV0KKyAgICAgICAgcmV0dXJuIHNlbGYuX3dlYmtpdF9iYXNlX2Rp
cgorCisgICAgZGVmIHBhdGhfZnJvbV93ZWJraXRfYmFzZShzZWxmLCAqY29tcHMpOgorICAgICAg
ICByZXR1cm4gc2VsZi5maWxlc3lzdGVtLmpvaW4oc2VsZi53ZWJraXRfYmFzZV9kaXIoKSwgKmNv
bXBzKQorCisgICAgZGVmIHNjcmlwdF9wYXRoKHNlbGYsIHNjcmlwdF9uYW1lKToKKyAgICAgICAg
cmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCJUb29scyIsICJTY3JpcHRzIiwgc2Ny
aXB0X25hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vc3lzdGVtaG9zdF9tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL3N5c3RlbWhvc3RfbW9jay5weQppbmRleCBhNTI5ZjM0ODMxMjg2ZTlhNGM4OTNkZDAwOGQ5
YTE3NDExZGE1MmRlLi5jNTgxNWQyMjYyY2EwNDhjYTRhOTgyZWEyZDI0YTA5ZjkyNGY5MzY0IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9z
dF9tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0
ZW1ob3N0X21vY2sucHkKQEAgLTEsMzAgKzEsMzAgQEAKLSAgICAjIENvcHlyaWdodCAoYykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICAgICMKLSAgICAjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICAgICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICAgICMgbWV0OgotICAgICMKLSAgICAjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gICAgIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gICAgIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gICAgIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gICAgIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gICAgIyBkaXN0cmlidXRpb24uCi0gICAgIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gICAgIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICAg
ICMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAgICAjCi0gICAgIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gICAgIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICAgICMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gICAgIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICAgICMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gICAgIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gICAgIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAgICAjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICAgICMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICAgICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gICAgIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIyBDb3B5cmlnaHQg
KGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5lbnZpcm9ubWVudCBpbXBvcnQgRW52
aXJvbm1lbnQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBv
cnQgTW9ja0V4ZWN1dGl2ZQpAQCAtNTQsMyArNTQsMTIgQEAgY2xhc3MgTW9ja1N5c3RlbUhvc3Qo
b2JqZWN0KToKIAogICAgIGRlZiBtYWtlX2ZpbGVfbG9jayhzZWxmLCBwYXRoKToKICAgICAgICAg
cmV0dXJuIE1vY2tGaWxlTG9jayhwYXRoKQorCisgICAgZGVmIHdlYmtpdF9iYXNlX2RpcihzZWxm
KToKKyAgICAgICAgcmV0dXJuICcvbW9jay1jaGVja291dCcKKworICAgIGRlZiBwYXRoX2Zyb21f
d2Via2l0X2Jhc2Uoc2VsZiwgKmNvbXBzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXN5c3Rl
bS5qb2luKHNlbGYud2Via2l0X2Jhc2VfZGlyKCksICpjb21wcykKKworICAgIGRlZiBzY3JpcHRf
cGF0aChzZWxmLCBzY3JpcHRfbmFtZSk6CisgICAgICAgIHJldHVybiAiVG9vbHMvU2NyaXB0cy8i
ICsgc2NyaXB0X25hbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weQppbmRleCBlYTFlOWQwMzNlYTBiMTY2NTBlYzllZWM4ODFlZDg3NzZiMTJk
MTEwLi5lZjE1MzcwYmIwODFjNDM5NjIzMTM5OGYxYWJiZjI3MTE1YTRjYTBjIDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC01MCw2
ICs1MCw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKIAogZnJvbSB3ZWJraXRweS5jb21tb24gaW1w
b3J0IGZpbmRfZmlsZXMKIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCByZWFkX2NoZWNrc3Vt
X2Zyb21fcG5nCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dCBpbXBvcnQgQ2hlY2tvdXQK
IGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgpAQCAtMTEwLDcgKzExMSw4IEBAIGNsYXNz
IFBvcnQob2JqZWN0KToKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLl9l
eGVjdXRpdmUgPSBob3N0LmV4ZWN1dGl2ZQogICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gaG9z
dC5maWxlc3lzdGVtCi0gICAgICAgIHNlbGYuX2NvbmZpZyA9IGNvbmZpZyBvciBwb3J0X2NvbmZp
Zy5Db25maWcoc2VsZi5fZXhlY3V0aXZlLCBzZWxmLl9maWxlc3lzdGVtLCBzZWxmLnBvcnRfbmFt
ZSkKKyAgICAgICAgc2VsZi5fd2Via2l0X2Jhc2VfZGlyID0gTm9uZQorICAgICAgICBzZWxmLl9j
b25maWcgPSBjb25maWcgb3IgcG9ydF9jb25maWcuQ29uZmlnKHNlbGYuaG9zdCwgc2VsZi5wb3J0
X25hbWUpCiAKICAgICAgICAgc2VsZi5faGVscGVyID0gTm9uZQogICAgICAgICBzZWxmLl9odHRw
X3NlcnZlciA9IE5vbmUKQEAgLTY5Miw5ICs2OTQsNiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAg
ICAgICAgICIiIlJldHVybiB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdG9wIG9mIHRoZSBQZXJm
b3JtYW5jZVRlc3RzIGRpcmVjdG9yeS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9t
X3dlYmtpdF9iYXNlKCdQZXJmb3JtYW5jZVRlc3RzJykKIAotICAgIGRlZiB3ZWJraXRfYmFzZShz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0aChzZWxmLnBhdGhf
ZnJvbV93ZWJraXRfYmFzZSgnLicpKQotCiAgICAgZGVmIHNraXBwZWRfbGF5b3V0X3Rlc3RzKHNl
bGYsIHRlc3RfbGlzdCk6CiAgICAgICAgICIiIlJldHVybnMgdGVzdHMgc2tpcHBlZCBvdXRzaWRl
IG9mIHRoZSBUZXN0RXhwZWN0YXRpb25zIGZpbGVzLiIiIgogICAgICAgICByZXR1cm4gc2V0KHNl
bGYuX3Rlc3RzX2Zvcl9vdGhlcl9wbGF0Zm9ybXMoKSkudW5pb24oc2VsZi5fc2tpcHBlZF90ZXN0
c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXModGVzdF9saXN0KSkKQEAgLTc2NSw5ICs3NjQsNyBA
QCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9vcHRpb25zLmVuc3Vy
ZV92YWx1ZShuYW1lLCBkZWZhdWx0X3ZhbHVlKQogCiAgICAgZGVmIHBhdGhfZnJvbV93ZWJraXRf
YmFzZShzZWxmLCAqY29tcHMpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBmdWxsIHBhdGggdG8g
cGF0aCBtYWRlIGJ5IGpvaW5pbmcgdGhlIHRvcCBvZiB0aGUKLSAgICAgICAgV2ViS2l0IHNvdXJj
ZSB0cmVlIGFuZCB0aGUgbGlzdCBvZiBwYXRoIGNvbXBvbmVudHMgaW4gfCpjb21wc3wuIiIiCi0g
ICAgICAgIHJldHVybiBzZWxmLl9jb25maWcucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCpjb21wcykK
KyAgICAgICAgcmV0dXJuIHNlbGYuaG9zdC5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoKmNvbXBzKQog
CiAgICAgQG1lbW9pemVkCiAgICAgZGVmIHBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShz
ZWxmKToKQEAgLTEzNzMsMTIgKzEzNzAsMTIgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICByZXR1cm4gY29uZmlnX2FyZ3MKIAogICAgIGRlZiBfcnVuX3NjcmlwdChzZWxmLCBzY3JpcHRf
bmFtZSwgYXJncz1Ob25lLCBpbmNsdWRlX2NvbmZpZ3VyYXRpb25fYXJndW1lbnRzPVRydWUsIGRl
Y29kZV9vdXRwdXQ9VHJ1ZSwgZW52PU5vbmUpOgotICAgICAgICBydW5fc2NyaXB0X2NvbW1hbmQg
PSBbc2VsZi5fY29uZmlnLnNjcmlwdF9wYXRoKHNjcmlwdF9uYW1lKV0KKyAgICAgICAgcnVuX3Nj
cmlwdF9jb21tYW5kID0gW3NlbGYuaG9zdC5zY3JpcHRfcGF0aChzY3JpcHRfbmFtZSldCiAgICAg
ICAgIGlmIGluY2x1ZGVfY29uZmlndXJhdGlvbl9hcmd1bWVudHM6CiAgICAgICAgICAgICBydW5f
c2NyaXB0X2NvbW1hbmQuZXh0ZW5kKHNlbGYuX2FyZ3VtZW50c19mb3JfY29uZmlndXJhdGlvbigp
KQogICAgICAgICBpZiBhcmdzOgogICAgICAgICAgICAgcnVuX3NjcmlwdF9jb21tYW5kLmV4dGVu
ZChhcmdzKQotICAgICAgICBvdXRwdXQgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQocnVu
X3NjcmlwdF9jb21tYW5kLCBjd2Q9c2VsZi5fY29uZmlnLndlYmtpdF9iYXNlX2RpcigpLCBkZWNv
ZGVfb3V0cHV0PWRlY29kZV9vdXRwdXQsIGVudj1lbnYpCisgICAgICAgIG91dHB1dCA9IHNlbGYu
X2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChydW5fc2NyaXB0X2NvbW1hbmQsIGN3ZD1zZWxmLmhvc3Qu
d2Via2l0X2Jhc2VfZGlyKCksIGRlY29kZV9vdXRwdXQ9ZGVjb2RlX291dHB1dCwgZW52PWVudikK
ICAgICAgICAgX2xvZy5kZWJ1ZygnT3V0cHV0IG9mICVzOlxuJXMnICUgKHJ1bl9zY3JpcHRfY29t
bWFuZCwgb3V0cHV0KSkKICAgICAgICAgcmV0dXJuIG91dHB1dAogCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5w
eQppbmRleCA3YzM3ZmQxN2EyZTZlNTkwODNjODdiZjliY2M4N2YxYjZiMmYyNWFkLi5lYTg1MDA0
YmY0ZThlNzI3NjIyNjgzODQxM2NlYzYwNDFjOGZiMjFiIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkK
QEAgLTU5LDkgKzU5LDkgQEAgY2xhc3MgQ2hyb21pdW1MaW51eFBvcnQoY2hyb21pdW0uQ2hyb21p
dW1Qb3J0KToKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfZGV0ZXJtaW5lX2RyaXZlcl9w
YXRoX3N0YXRpY2FsbHkoY2xzLCBob3N0LCBvcHRpb25zKToKLSAgICAgICAgY29uZmlnX29iamVj
dCA9IGNvbmZpZy5Db25maWcoaG9zdC5leGVjdXRpdmUsIGhvc3QuZmlsZXN5c3RlbSkKKyAgICAg
ICAgY29uZmlnX29iamVjdCA9IGNvbmZpZy5Db25maWcoaG9zdCkKICAgICAgICAgYnVpbGRfZGly
ZWN0b3J5ID0gZ2V0YXR0cihvcHRpb25zLCAnYnVpbGRfZGlyZWN0b3J5JywgTm9uZSkKLSAgICAg
ICAgd2Via2l0X2Jhc2UgPSBjb25maWdfb2JqZWN0LnBhdGhfZnJvbV93ZWJraXRfYmFzZSgpCisg
ICAgICAgIHdlYmtpdF9iYXNlID0gaG9zdC5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoKQogICAgICAg
ICBjaHJvbWl1bV9iYXNlID0gY2xzLl9jaHJvbWl1bV9iYXNlX2Rpcihob3N0LmZpbGVzeXN0ZW0p
CiAgICAgICAgIGlmIGhhc2F0dHIob3B0aW9ucywgJ2NvbmZpZ3VyYXRpb24nKSBhbmQgb3B0aW9u
cy5jb25maWd1cmF0aW9uOgogICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IG9wdGlvbnMuY29u
ZmlndXJhdGlvbgpAQCAtNzAsMTEgKzcwLDExIEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0KGNo
cm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIHJldHVybiBjbHMuX3N0YXRpY19idWlsZF9w
YXRoKGhvc3QuZmlsZXN5c3RlbSwgYnVpbGRfZGlyZWN0b3J5LCBjaHJvbWl1bV9iYXNlLCB3ZWJr
aXRfYmFzZSwgY29uZmlndXJhdGlvbiwgWydEdW1wUmVuZGVyVHJlZSddKQogCiAgICAgQHN0YXRp
Y21ldGhvZAotICAgIGRlZiBfZGV0ZXJtaW5lX2FyY2hpdGVjdHVyZShmaWxlc3lzdGVtLCBleGVj
dXRpdmUsIGRyaXZlcl9wYXRoKToKKyAgICBkZWYgX2RldGVybWluZV9hcmNoaXRlY3R1cmUoaG9z
dCwgZHJpdmVyX3BhdGgpOgogICAgICAgICBmaWxlX291dHB1dCA9ICcnCi0gICAgICAgIGlmIGZp
bGVzeXN0ZW0uZXhpc3RzKGRyaXZlcl9wYXRoKToKKyAgICAgICAgaWYgaG9zdC5maWxlc3lzdGVt
LmV4aXN0cyhkcml2ZXJfcGF0aCk6CiAgICAgICAgICAgICAjIFRoZSAtLWRlcmVmZXJlbmNlIGZs
YWcgdGVsbHMgZmlsZSB0byBmb2xsb3cgc3ltbGlua3MKLSAgICAgICAgICAgIGZpbGVfb3V0cHV0
ID0gZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsnZmlsZScsICctLWRlcmVmZXJlbmNlJywgZHJpdmVy
X3BhdGhdLCByZXR1cm5fc3RkZXJyPVRydWUpCisgICAgICAgICAgICBmaWxlX291dHB1dCA9IGhv
c3QuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsnZmlsZScsICctLWRlcmVmZXJlbmNlJywgZHJpdmVy
X3BhdGhdLCByZXR1cm5fc3RkZXJyPVRydWUpCiAKICAgICAgICAgaWYgJ0VMRiAzMi1iaXQgTFNC
IGV4ZWN1dGFibGUnIGluIGZpbGVfb3V0cHV0OgogICAgICAgICAgICAgcmV0dXJuICd4ODYnCkBA
IC05Miw3ICs5Miw3IEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0KGNocm9taXVtLkNocm9taXVt
UG9ydCk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGRldGVybWluZV9mdWxsX3BvcnRfbmFt
ZShjbHMsIGhvc3QsIG9wdGlvbnMsIHBvcnRfbmFtZSk6CiAgICAgICAgIGlmIHBvcnRfbmFtZS5l
bmRzd2l0aCgnLWxpbnV4Jyk6Ci0gICAgICAgICAgICByZXR1cm4gcG9ydF9uYW1lICsgJy0nICsg
Y2xzLl9kZXRlcm1pbmVfYXJjaGl0ZWN0dXJlKGhvc3QuZmlsZXN5c3RlbSwgaG9zdC5leGVjdXRp
dmUsIGNscy5fZGV0ZXJtaW5lX2RyaXZlcl9wYXRoX3N0YXRpY2FsbHkoaG9zdCwgb3B0aW9ucykp
CisgICAgICAgICAgICByZXR1cm4gcG9ydF9uYW1lICsgJy0nICsgY2xzLl9kZXRlcm1pbmVfYXJj
aGl0ZWN0dXJlKGhvc3QsIGNscy5fZGV0ZXJtaW5lX2RyaXZlcl9wYXRoX3N0YXRpY2FsbHkoaG9z
dCwgb3B0aW9ucykpCiAgICAgICAgIHJldHVybiBwb3J0X25hbWUKIAogICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWcucHkKaW5kZXggZGQ4ZjMzMWFmODdl
ZmRlYzAyNjA0Nzg5NzZiOWQzYTFjN2M1YTVhOS4uNTEzMmJhMjlkZDBhZTAxOThkNzA4Zjg2ZjNi
ZmUwZGEzMTNlYTEwMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jb25maWcucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jb25maWcucHkKQEAgLTI5LDExICsyOSwxMCBAQAogCiAiIiJXcmFwcGVyIG9i
amVjdHMgZm9yIFdlYktpdC1zcGVjaWZpYyB1dGlsaXR5IHJvdXRpbmVzLiIiIgogCi0jIEZJWE1F
OiBUaGlzIGZpbGUgbmVlZHMgdG8gYmUgdW5pZmllZCB3aXRoIGNvbW1vbi9jaGVja291dC9zY20u
cHkgYW5kCi0jIGNvbW1vbi9jb25maWcvcG9ydHMucHkgLgorIyBGSVhNRTogVGhpcyBmaWxlIG5l
ZWRzIHRvIGJlIHVuaWZpZWQgd2l0aCBjb21tb24vY29uZmlnL3BvcnRzLnB5IC4KIAogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBsb2d1dGlscwotZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5l
eGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiAKIAogX2xvZyA9IGxvZ3V0aWxzLmdldF9sb2dn
ZXIoX19maWxlX18pCkBAIC02MSwxMSArNjAsMTEgQEAgY2xhc3MgQ29uZmlnKG9iamVjdCk6CiAg
ICAgICAgICJSZWxlYXNlIjogIi0tcmVsZWFzZSIsCiAgICAgfQogCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGV4ZWN1dGl2ZSwgZmlsZXN5c3RlbSwgcG9ydF9pbXBsZW1lbnRhdGlvbj1Ob25lKToK
LSAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlCi0gICAgICAgIHNlbGYuX2ZpbGVz
eXN0ZW0gPSBmaWxlc3lzdGVtCi0gICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlX2RpciA9IE5vbmUK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9pbXBsZW1lbnRhdGlvbj1Ob25lKToK
KyAgICAgICAgc2VsZi5faG9zdCA9IGhvc3QKKyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGhv
c3QuZmlsZXN5c3RlbQogICAgICAgICBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRpb24gPSBOb25l
CisgICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlX2RpciA9IE5vbmUKICAgICAgICAgc2VsZi5fYnVp
bGRfZGlyZWN0b3JpZXMgPSB7fQogICAgICAgICBzZWxmLl9wb3J0X2ltcGxlbWVudGF0aW9uID0g
cG9ydF9pbXBsZW1lbnRhdGlvbgogCkBAIC04MSw4ICs4MCw4IEBAIGNsYXNzIENvbmZpZyhvYmpl
Y3QpOgogICAgICAgICAgICAgZmxhZ3MuYXBwZW5kKCctLScgKyBzZWxmLl9wb3J0X2ltcGxlbWVu
dGF0aW9uKQogCiAgICAgICAgIGlmIG5vdCBzZWxmLl9idWlsZF9kaXJlY3Rvcmllcy5nZXQoY29u
ZmlndXJhdGlvbik6Ci0gICAgICAgICAgICBhcmdzID0gWyJwZXJsIiwgc2VsZi5zY3JpcHRfcGF0
aCgid2Via2l0LWJ1aWxkLWRpcmVjdG9yeSIpXSArIGZsYWdzCi0gICAgICAgICAgICBvdXRwdXQg
PSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoYXJncywgY3dkPXNlbGYud2Via2l0X2Jhc2Vf
ZGlyKCksIHJldHVybl9zdGRlcnI9RmFsc2UpLnJzdHJpcCgpCisgICAgICAgICAgICBhcmdzID0g
WyJwZXJsIiwgc2VsZi5faG9zdC5zY3JpcHRfcGF0aCgid2Via2l0LWJ1aWxkLWRpcmVjdG9yeSIp
XSArIGZsYWdzCisgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLl9ob3N0LmV4ZWN1dGl2ZS5ydW5f
Y29tbWFuZChhcmdzLCBjd2Q9c2VsZi5faG9zdC53ZWJraXRfYmFzZV9kaXIoKSwgcmV0dXJuX3N0
ZGVycj1GYWxzZSkucnN0cmlwKCkKICAgICAgICAgICAgIHBhcnRzID0gb3V0cHV0LnNwbGl0KCJc
biIpCiAgICAgICAgICAgICBzZWxmLl9idWlsZF9kaXJlY3Rvcmllc1tjb25maWd1cmF0aW9uXSA9
IHBhcnRzWzBdCiAKQEAgLTExMSwzMiArMTEwLDYgQEAgY2xhc3MgQ29uZmlnKG9iamVjdCk6CiAg
ICAgICAgICAgICBfbG9nLndhcm4oIlNjcmlwdHMgbWF5IGZhaWwuICBTZWUgJ3NldC13ZWJraXQt
Y29uZmlndXJhdGlvbiAtLWhlbHAnLiIpCiAgICAgICAgIHJldHVybiBzZWxmLl9kZWZhdWx0X2Nv
bmZpZ3VyYXRpb24KIAotICAgIGRlZiBwYXRoX2Zyb21fd2Via2l0X2Jhc2Uoc2VsZiwgKmNvbXBz
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLndlYmtpdF9iYXNl
X2RpcigpLCAqY29tcHMpCi0KLSAgICAjIEZJWE1FOiBXZSBzaG91bGQgb25seSBoYXZlIG9uZSBp
bXBsZW1lbnRhdGlvbiBvZiB0aGlzIGxvZ2ljLAotICAgICMgaWYgc2NtLmZpbmRfY2hlY2tvdXRf
cm9vdCgpIGlzIGJyb2tlbiBmb3IgQ2hyb21pdW0sIHdlIHNob3VsZCBmaXggKG9yIGF0IGxlYXN0
IHdyYXApIGl0IQotICAgIGRlZiB3ZWJraXRfYmFzZV9kaXIoc2VsZik6Ci0gICAgICAgICIiIlJl
dHVybnMgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHRvcCBvZiB0aGUgV2ViS2l0IHRyZWUuCi0K
LSAgICAgICAgUmFpc2VzIGFuIEFzc2VydGlvbkVycm9yIGlmIHRoZSB0b3AgZGlyIGNhbid0IGJl
IGRldGVybWluZWQuIiIiCi0gICAgICAgICMgTm90ZTogdGhpcyBjb2RlIHNvbWV3aGF0IGR1cGxp
Y2F0ZXMgdGhlIGNvZGUgaW4KLSAgICAgICAgIyBzY20uZmluZF9jaGVja291dF9yb290KCkuIEhv
d2V2ZXIsIHRoYXQgY29kZSBvbmx5IHdvcmtzIGlmIHRoZSB0b3AKLSAgICAgICAgIyBvZiB0aGUg
U0NNIHJlcG9zaXRvcnkgYWxzbyBtYXRjaGVzIHRoZSB0b3Agb2YgdGhlIFdlYktpdCB0cmVlLiBU
aGUKLSAgICAgICAgIyBDaHJvbWl1bSBwb3J0cywgZm9yIGV4YW1wbGUsIG9ubHkgY2hlY2sgb3V0
IHN1YmRpcmVjdG9yaWVzIGxpa2UKLSAgICAgICAgIyBUb29scy9TY3JpcHRzLCBhbmQgc28gd2Ug
c3RpbGwgaGF2ZSB0byBkbyBhZGRpdGlvbmFsIHdvcmsKLSAgICAgICAgIyB0byBmaW5kIHRoZSB0
b3Agb2YgdGhlIHRyZWUuCi0gICAgICAgICMKLSAgICAgICAgIyBUaGlzIGNvZGUgd2lsbCBhbHNv
IHdvcmsgaWYgdGhlcmUgaXMgbm8gU0NNIHN5c3RlbSBhdCBhbGwuCi0gICAgICAgIGlmIG5vdCBz
ZWxmLl93ZWJraXRfYmFzZV9kaXI6Ci0gICAgICAgICAgICBjb25maWdfbW9kdWxlX3BhdGggPSBz
ZWxmLl9maWxlc3lzdGVtLnBhdGhfdG9fbW9kdWxlKHNlbGYuX19tb2R1bGVfXykKLSAgICAgICAg
ICAgIHNlbGYuX3dlYmtpdF9iYXNlX2RpciA9IGNvbmZpZ19tb2R1bGVfcGF0aFswOmNvbmZpZ19t
b2R1bGVfcGF0aC5maW5kKCdUb29scycpIC0gMV0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3dlYmtp
dF9iYXNlX2RpcgotCi0gICAgZGVmIHNjcmlwdF9wYXRoKHNlbGYsIHNjcmlwdF9uYW1lKToKLSAg
ICAgICAgIyBUaGlzIGlzIGludGVudGlvbmFsbHkgcmVsYXRpdmUuIENhbGxlcnMgc2hvdWxkIHBh
c3MgdGhlIGNoZWNrb3V0X3Jvb3Qvd2Via2l0X2Jhc2VfZGlyIHRvIHJ1bl9jb21tYW5kIGFzIHRo
ZSBjd2QuCi0gICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oIlRvb2xzIiwgIlNj
cmlwdHMiLCBzY3JpcHRfbmFtZSkKLQogICAgIGRlZiBfZGV0ZXJtaW5lX2NvbmZpZ3VyYXRpb24o
c2VsZik6CiAgICAgICAgICMgVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBpbiB3ZWJraXRkaXJzLnBt
OmRldGVybWluZUNvbmZpZ3VyYXRpb24oKS4KICAgICAgICAgIwpAQCAtMTYyLDcgKzEzNSw3IEBA
IGNsYXNzIENvbmZpZyhvYmplY3QpOgogICAgICAgICAgICAgY29uZmlndXJhdGlvbl9wYXRoID0g
c2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuYnVpbGRfZGlyZWN0b3J5KE5vbmUpLCAiQ29uZmln
dXJhdGlvbiIpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoY29u
ZmlndXJhdGlvbl9wYXRoKToKICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBl
eGNlcHQgKE9TRXJyb3IsIGV4ZWN1dGl2ZS5TY3JpcHRFcnJvcik6CisgICAgICAgIGV4Y2VwdCAo
T1NFcnJvciwgU2NyaXB0RXJyb3IpOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAg
ICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShjb25maWd1cmF0aW9uX3Bh
dGgpLnJzdHJpcCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2NvbmZpZ19tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jb25maWdfbW9jay5weQppbmRleCA1NDc2ZTRiYWIyNmYxZWVjOGIzYWRhZmE4
Y2Y3YWU5N2IxMmFiMDZjLi5kZDIxMTlkZTIyNGI4YjIyOWU4ZTQwYWMzOWZmNzg3NDgxOTgyMWRj
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nv
bmZpZ19tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY29uZmlnX21vY2sucHkKQEAgLTU0LDE0ICs1NCwzIEBAIGNsYXNzIE1vY2tDb25maWcob2Jq
ZWN0KToKIAogICAgIGRlZiBkZWZhdWx0X2NvbmZpZ3VyYXRpb24oc2VsZik6CiAgICAgICAgIHJl
dHVybiBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRpb24KLQotICAgIGRlZiBwYXRoX2Zyb21fd2Vi
a2l0X2Jhc2Uoc2VsZiwgKmNvbXBzKToKLSAgICAgICAgIyBGSVhNRTogVGhpcyBjb3VsZCB1c2Ug
c2VsZi5fZmlsZXN5c3RlbS5qb2luLCBidXQgdGhhdCBkb2Vzbid0IGhhbmRsZSBlbXB0eSBsaXN0
cy4KLSAgICAgICAgcmV0dXJuIHNlbGYud2Via2l0X2Jhc2VfZGlyKCkgKyAiLyIgKyAiLyIuam9p
bihsaXN0KGNvbXBzKSkKLQotICAgIGRlZiBzY3JpcHRfcGF0aChzZWxmLCBzY3JpcHRfbmFtZSk6
Ci0gICAgICAgICMgVGhpcyBpcyBpbnRlbnRpb25hbGx5IHJlbGF0aXZlLiBDYWxsZXJzIHNob3Vs
ZCBwYXNzIHRoZSBjaGVja291dF9yb290L3dlYmtpdF9iYXNlX2RpciB0byBydW5fY29tbWFuZCBh
cyB0aGUgY3dkLgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKCJUb29scyIs
ICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpCi0KLSAgICBkZWYgd2Via2l0X2Jhc2VfZGlyKHNlbGYp
OgotICAgICAgICByZXR1cm4gIi9tb2NrLWNoZWNrb3V0IgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfc3RhbmRhbG9uZS5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnX3N0YW5kYWxvbmUu
cHkKaW5kZXggNWIwNDgzMTQ1MjBjODk5NDU0Y2ZkZTE2ZTZjOTMzMmUyZmUyNTkzZi4uNWM3MGM3
NzZkZTQyYjczYzljZmRiZWMxNjlhMmZlYTNjMWE1Y2I5OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfc3RhbmRhbG9uZS5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ19zdGFuZGFs
b25lLnB5CkBAIC00OCw2ICs0OCw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBv
cnQgZXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2
ZV9tb2NrCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGZpbGVzeXN0ZW0KIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHN5c3RlbWhvc3RfbW9jawogCiBpbXBvcnQgY29u
ZmlnCiAKQEAgLTYzLDcgKzY0LDcgQEAgZGVmIG1haW4oYXJndj1Ob25lKToKICAgICAgICAgZSA9
IGV4ZWN1dGl2ZS5FeGVjdXRpdmUoKQogICAgICAgICBmcyA9IGZpbGVzeXN0ZW0uRmlsZVN5c3Rl
bSgpCiAKLSAgICBjID0gY29uZmlnLkNvbmZpZyhlLCBmcykKKyAgICBjID0gY29uZmlnLkNvbmZp
Zyhob3N0PXN5c3RlbWhvc3RfbW9jay5Nb2NrU3lzdGVtSG9zdChleGVjdXRpdmU9ZSwgZmlsZXN5
c3RlbT1mcykpCiAgICAgcHJpbnQgYy5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKQogCiBpZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jb25maWdfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQppbmRleCA5NmJhNWZmNTgy
N2EyNDA5YmQyMTc0OTY2MTQ2NzgxNmU4MDQwODJjLi40MzZiZGRjZjVhOTNiODA3MmU1OTkwZTU3
NTUyYjI3NmFkMWQyYzNjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQpAQCAtMzAsOSArMzAsMTAg
QEAgaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgot
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhl
Y3V0aXZlLCBNb2NrRXhlY3V0aXZlMgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVz
eXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0
ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lz
dGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAorZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZTIKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2Fw
dHVyZQogCkBAIC00Nyw5ICs0OCwxMCBAQCBjbGFzcyBDb25maWdUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgY29uZmlnLmNsZWFyX2NhY2hlZF9jb25maWd1cmF0aW9uKCkKIAogICAg
IGRlZiBtYWtlX2NvbmZpZyhzZWxmLCBvdXRwdXQ9JycsIGZpbGVzPU5vbmUsIGV4aXRfY29kZT0w
LCBleGNlcHRpb249Tm9uZSwgcnVuX2NvbW1hbmRfZm49Tm9uZSwgc3RkZXJyPScnLCBwb3J0X2lt
cGxlbWVudGF0aW9uPU5vbmUpOgotICAgICAgICBlID0gTW9ja0V4ZWN1dGl2ZTIob3V0cHV0PW91
dHB1dCwgZXhpdF9jb2RlPWV4aXRfY29kZSwgZXhjZXB0aW9uPWV4Y2VwdGlvbiwgcnVuX2NvbW1h
bmRfZm49cnVuX2NvbW1hbmRfZm4sIHN0ZGVycj1zdGRlcnIpCi0gICAgICAgIGZzID0gTW9ja0Zp
bGVTeXN0ZW0oZmlsZXMpCi0gICAgICAgIHJldHVybiBjb25maWcuQ29uZmlnKGUsIGZzLCBwb3J0
X2ltcGxlbWVudGF0aW9uPXBvcnRfaW1wbGVtZW50YXRpb24pCisgICAgICAgIGZpbGVzeXN0ZW0g
PSBNb2NrRmlsZVN5c3RlbShmaWxlcykKKyAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1Ib3N0KGZp
bGVzeXN0ZW09ZmlsZXN5c3RlbSkKKyAgICAgICAgaG9zdC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0
aXZlMihvdXRwdXQ9b3V0cHV0LCBleGl0X2NvZGU9ZXhpdF9jb2RlLCBleGNlcHRpb249ZXhjZXB0
aW9uLCBydW5fY29tbWFuZF9mbj1ydW5fY29tbWFuZF9mbiwgc3RkZXJyPXN0ZGVycikKKyAgICAg
ICAgcmV0dXJuIGNvbmZpZy5Db25maWcoaG9zdCwgcG9ydF9pbXBsZW1lbnRhdGlvbj1wb3J0X2lt
cGxlbWVudGF0aW9uKQogCiAgICAgZGVmIGFzc2VydF9jb25maWd1cmF0aW9uKHNlbGYsIGNvbnRl
bnRzLCBleHBlY3RlZCk6CiAgICAgICAgICMgVGhpcyB0ZXN0cyB0aGF0IGEgY29uZmlndXJhdGlv
biBmaWxlIGNvbnRhaW5pbmcKQEAgLTEyOCwxNyArMTMwLDE1IEBAIGNsYXNzIENvbmZpZ1Rlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAjIGNhY2hpbmcgLyByZXNldCBidWdzLiBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MzYwCiAgICAgICAgICMg
Zm9yIHRoZSBtb3RpdmF0aW9uLiBXZSBjYW4gcmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHdlIHJlbW92
ZSB0aGUKICAgICAgICAgIyBnbG9iYWwgY29uZmlndXJhdGlvbiBjYWNoZSBpbiBjb25maWcucHku
Ci0gICAgICAgIGUgPSBFeGVjdXRpdmUoKQotICAgICAgICBmcyA9IEZpbGVTeXN0ZW0oKQotICAg
ICAgICBjID0gY29uZmlnLkNvbmZpZyhlLCBmcykKLSAgICAgICAgc2NyaXB0ID0gYy5wYXRoX2Zy
b21fd2Via2l0X2Jhc2UoJ1Rvb2xzJywgJ1NjcmlwdHMnLCAnd2Via2l0cHknLCAnbGF5b3V0X3Rl
c3RzJywgJ3BvcnQnLCAnY29uZmlnX3N0YW5kYWxvbmUucHknKQorICAgICAgICBob3N0ID0gU3lz
dGVtSG9zdCgpCisgICAgICAgIGMgPSBjb25maWcuQ29uZmlnKGhvc3QpCisgICAgICAgIHNjcmlw
dCA9IGhvc3QucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdUb29scycsICdTY3JpcHRzJywgJ3dlYmtp
dHB5JywgJ2xheW91dF90ZXN0cycsICdwb3J0JywgJ2NvbmZpZ19zdGFuZGFsb25lLnB5JykKIAog
ICAgICAgICAjIE5vdGU6IGRvbid0IHVzZSAnUmVsZWFzZScgaGVyZSwgc2luY2UgdGhhdCdzIHRo
ZSBub3JtYWwgZGVmYXVsdC4KICAgICAgICAgZXhwZWN0ZWQgPSAnRGVidWcnCiAKLSAgICAgICAg
IyBGSVhNRTogV2h5IGFyZSB3ZSBydW5uaW5nIGEgcHl0aG9uIHN1YnByb2Nlc3MgaGVyZT8/CiAg
ICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsIHNjcmlwdCwgJy0tbW9jaycsIGV4cGVjdGVk
XQotICAgICAgICBhY3R1YWwgPSBlLnJ1bl9jb21tYW5kKGFyZ3MpLnJzdHJpcCgpCisgICAgICAg
IGFjdHVhbCA9IGhvc3QuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFyZ3MpLnJzdHJpcCgpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKIAogICAgIGRlZiB0ZXN0X2Rl
ZmF1bHRfY29uZmlndXJhdGlvbl9fbm9fcGVybChzZWxmKToKQEAgLTE1NywzMiArMTU3LDYgQEAg
Y2xhc3MgQ29uZmlnVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGFjdHVhbCA9IGMu
ZGVmYXVsdF9jb25maWd1cmF0aW9uKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWws
ICdSZWxlYXNlJykKIAotICAgIGRlZiB0ZXN0X3BhdGhfZnJvbV93ZWJraXRfYmFzZShzZWxmKToK
LSAgICAgICAgYyA9IGNvbmZpZy5Db25maWcoTW9ja0V4ZWN1dGl2ZSgpLCBNb2NrRmlsZVN5c3Rl
bSgpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ2Zv
bycpKQotCi0gICAgZGVmIHRlc3Rfd2Via2l0X2Jhc2VfZGlyKHNlbGYpOgotICAgICAgICAjIEZJ
WE1FOiBXZSB1c2UgYSByZWFsIGZpbGVzeXN0ZW0gaGVyZS4gU2hvdWxkIHRoaXMgbW92ZSB0byBh
IG1vY2tlZCBvbmU/Ci0gICAgICAgIGV4ZWN1dGl2ZSA9IEV4ZWN1dGl2ZSgpCi0gICAgICAgIGZp
bGVzeXN0ZW0gPSBGaWxlU3lzdGVtKCkKLSAgICAgICAgYyA9IGNvbmZpZy5Db25maWcoZXhlY3V0
aXZlLCBmaWxlc3lzdGVtKQotICAgICAgICBiYXNlX2RpciA9IGMud2Via2l0X2Jhc2VfZGlyKCkK
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJhc2VfZGlyKQotICAgICAgICBzZWxmLmFzc2VydE5v
dEVxdWFsKGJhc2VfZGlyWy0xXSwgJy8nKQotCi0gICAgICAgICMgRklYTUU6IE9uY2Ugd2UgdXNl
IGEgTW9ja0ZpbGVTeXN0ZW0gZm9yIHRoaXMgdGVzdCB3ZSBkb24ndCBuZWVkIHRvIHNhdmUgdGhl
IG9yaWdfY3dkLgotICAgICAgICBvcmlnX2N3ZCA9IGZpbGVzeXN0ZW0uZ2V0Y3dkKCkKLSAgICAg
ICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgICAgICBmaWxlc3lzdGVtLmNo
ZGlyKG9zLmVudmlyb25bJ1VTRVJQUk9GSUxFJ10pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBmaWxlc3lzdGVtLmNoZGlyKG9zLmVudmlyb25bJ0hPTUUnXSkKLSAgICAgICAgYyA9IGNvbmZp
Zy5Db25maWcoZXhlY3V0aXZlLCBmaWxlc3lzdGVtKQotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBiYXNlX2Rpcl8yID0gYy53ZWJraXRfYmFzZV9kaXIoKQotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChiYXNlX2RpciwgYmFzZV9kaXJfMikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAg
ICAgIGZpbGVzeXN0ZW0uY2hkaXIob3JpZ19jd2QpCi0KIAogaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKaW5kZXggM2Q4MjAyNzRlYjY3YmNjODJjMGUyZGIxNDQ1
NTIwZDEyMTAyNTEwNi4uN2EzOThhYTg2MTViMTFkY2RhNjY5YWQ2N2IxY2Q5ZjcwZmFkMDJkMyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkK
QEAgLTcxLDcgKzcxLDcgQEAgY2xhc3MgR3RrUG9ydChQb3J0LCBQdWxzZUF1ZGlvU2FuaXRpemVy
KToKICAgICAgICAgZW52aXJvbm1lbnRbJ1RFU1RfUlVOTkVSX0lOSkVDVEVEX0JVTkRMRV9GSUxF
TkFNRSddID0gc2VsZi5fYnVpbGRfcGF0aCgnTGlicmFyaWVzJywgJ2xpYlRlc3RSdW5uZXJJbmpl
Y3RlZEJ1bmRsZS5sYScpCiAgICAgICAgIGVudmlyb25tZW50WydURVNUX1JVTk5FUl9URVNUX1BM
VUdJTl9QQVRIJ10gPSBzZWxmLl9idWlsZF9wYXRoKCdUZXN0TmV0c2NhcGVQbHVnaW4nLCAnLmxp
YnMnKQogICAgICAgICBlbnZpcm9ubWVudFsnV0VCS0lUX0lOU1BFQ1RPUl9QQVRIJ10gPSBzZWxm
Ll9idWlsZF9wYXRoKCdQcm9ncmFtcycsICdyZXNvdXJjZXMnLCAnaW5zcGVjdG9yJykKLSAgICAg
ICAgZW52aXJvbm1lbnRbJ0FVRElPX1JFU09VUkNFU19QQVRIJ10gPSBzZWxmLl9maWxlc3lzdGVt
LmpvaW4oc2VsZi5fY29uZmlnLndlYmtpdF9iYXNlX2RpcigpLAorICAgICAgICBlbnZpcm9ubWVu
dFsnQVVESU9fUkVTT1VSQ0VTX1BBVEgnXSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmhv
c3Qud2Via2l0X2Jhc2VfZGlyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTb3VyY2UnLCAnV2ViQ29yZScsICdw
bGF0Zm9ybScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdhdWRpbycsICdyZXNvdXJjZXMnKQogICAgICAgICBzZWxm
Ll9jb3B5X3ZhbHVlX2Zyb21fZW52aXJvbl9pZl9zZXQoZW52aXJvbm1lbnQsICdXRUJLSVRPVVRQ
VVRESVInKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9tYWMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21h
Yy5weQppbmRleCBlNmZkNWJkM2M5NDRlZjc1YWU3NTIyMTA4Mzk5ZDdjNzE1NDgzZDkyLi42MzZi
YzlhNGUwMzBhZjQ3YThkMWM4MGYwYWUwMzIwZmMyOTJjZTgzIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weQpAQCAtMTY4LDggKzE2OCw4IEBA
IGNsYXNzIE1hY1BvcnQoQXBwbGVQb3J0KToKICAgICAgICAgIyBXZSBkb24ndCB1c2Ugc2VsZi5f
cnVuX3NjcmlwdCgpIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byB3YWl0IGZvciB0aGUgc2NyaXB0
CiAgICAgICAgICMgdG8gZXhpdCBhbmQgd2Ugd2FudCB0aGUgb3V0cHV0IHRvIHNob3cgdXAgb24g
c3Rkb3V0IGluIGNhc2UgdGhlcmUgYXJlIGVycm9ycwogICAgICAgICAjIGxhdW5jaGluZyB0aGUg
YnJvd3Nlci4KLSAgICAgICAgc2VsZi5fZXhlY3V0aXZlLnBvcGVuKFtzZWxmLl9jb25maWcuc2Ny
aXB0X3BhdGgoJ3J1bi1zYWZhcmknKV0gKyBzZWxmLl9hcmd1bWVudHNfZm9yX2NvbmZpZ3VyYXRp
b24oKSArIFsnLS1uby1zYXZlZC1zdGF0ZScsICctTlNPcGVuJywgcmVzdWx0c19maWxlbmFtZV0s
Ci0gICAgICAgICAgICBjd2Q9c2VsZi5fY29uZmlnLndlYmtpdF9iYXNlX2RpcigpLCBzdGRvdXQ9
ZmlsZShvcy5kZXZudWxsKSwgc3RkZXJyPWZpbGUob3MuZGV2bnVsbCkpCisgICAgICAgIHNlbGYu
X2V4ZWN1dGl2ZS5wb3Blbihbc2VsZi5ob3N0LnNjcmlwdF9wYXRoKCdydW4tc2FmYXJpJyldICsg
c2VsZi5fYXJndW1lbnRzX2Zvcl9jb25maWd1cmF0aW9uKCkgKyBbJy0tbm8tc2F2ZWQtc3RhdGUn
LCAnLU5TT3BlbicsIHJlc3VsdHNfZmlsZW5hbWVdLAorICAgICAgICAgICAgY3dkPXNlbGYuaG9z
dC53ZWJraXRfYmFzZV9kaXIoKSwgc3Rkb3V0PWZpbGUob3MuZGV2bnVsbCksIHN0ZGVycj1maWxl
KG9zLmRldm51bGwpKQogCiAgICAgIyBGSVhNRTogVGhlIG5leHQgdHdvIHJvdXRpbmVzIHR1cm4g
b2ZmIHRoZSBodHRwIGxvY2tpbmcgaW4gb3JkZXIKICAgICAjIHRvIHdvcmsgYXJvdW5kIGZhaWx1
cmVzIG9uIHRoZSBib3RzIGNhdXNlZCB3aGVuIHRoZSBzbGF2ZSByZXN0YXJ0cy4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcHl0aG9uLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9weXRob24ucHkKaW5kZXggMTU3N2Fj
NmRiY2M0ZWY2M2FkZTQzNzFhYjExNjgxZTk4N2U5MjZkMy4uMTIzN2E2MmNhOWY2YzA3N2I2NTY4
N2Y4NjZjNzJjZTBhNmViMmY5OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9weXRob24ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9weXRob24ucHkKQEAgLTIyLDExICsyMiwxMCBAQAogCiAiIiJTdXBwb3J0cyBj
aGVja2luZyBXZWJLaXQgc3R5bGUgaW4gUHl0aG9uIGZpbGVzLiIiIgogCi1pbXBvcnQgb3MKIGlt
cG9ydCByZQotaW1wb3J0IHN5cwogZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KIAorZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKIGZy
b20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkIGltcG9ydCBwZXA4CiBmcm9tIHdl
YmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5weWxpbnQgaW1wb3J0IGxpbnQKIGZyb20g
d2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLnB5bGludC5yZXBvcnRlcnMudGV4dCBp
bXBvcnQgUGFyc2VhYmxlVGV4dFJlcG9ydGVyCkBAIC05Nyw4ICs5Niw3IEBAIGNsYXNzIFB5bGlu
dGVyKG9iamVjdCk6CiAgICAgXQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBz
ZWxmLl9zY3JpcHRfZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShvcy5wYXRo
LmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpKSkpCi0g
ICAgICAgIHNlbGYuX3B5bGludHJjID0gb3MucGF0aC5qb2luKHNlbGYuX3NjcmlwdF9kaXIsICd3
ZWJraXRweScsICdweWxpbnRyYycpCisgICAgICAgIHNlbGYuX3B5bGludHJjID0gU3lzdGVtSG9z
dCgpLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnVG9vbHMnLCAnU2NyaXB0cycsICd3ZWJraXRweScs
ICdweWxpbnRyYycpCiAKICAgICBkZWYgcnVuKHNlbGYsIGFyZ3YpOgogICAgICAgICBvdXRwdXQg
PSBfRmlsdGVyZWRTdHJpbmdJTyhzZWxmLkZBTFNFX1BPU0lUSVZFUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173770</attachid>
            <date>2012-11-12 17:29:46 -0800</date>
            <delta_ts>2012-11-13 14:19:32 -0800</delta_ts>
            <desc>add missed tests</desc>
            <filename>bug-102007-20121112172748.patch</filename>
            <type>text/plain</type>
            <size>33639</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MzA5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzY3MTA5NDViMjc2OTAyODRlNGMwYmM2OWRhNzc4ZWIz
NWFkNTk3Zi4uNDdiYzBiYTZkN2RiMjE2OTU2MDRlMGRiOTJhNzk1Y2U3NTdmMWE5ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgy
IEBACiAyMDEyLTExLTEyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBjb25zb2xpZGF0ZSB3ZWJraXQtYmFzZS1maW5kaW5nIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjAwNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
bW92ZXMgdGhlIGxvZ2ljIGZvciBkZXRlcm1pbmluZyB0aGUgdG9wIG9mIHRoZSB3ZWJraXQKKyAg
ICAgICAgc291cmNlIHRyZWUgb3V0IG9mIHRoZSBsYXlvdXRfdGVzdHMvcG9ydC8qIGNsYXNzZXMg
YW5kIGludG8KKyAgICAgICAgU3lzdGVtSG9zdCwgc28gdGhhdCBpdCBpcyBhdmFpbGFibGUgZnJv
bSBhbnl3aGVyZSBpbiB0aGUgdHJlZQorICAgICAgICAoYW5kIGhlbmNlIHRoZSBweXRob24gc3R5
bGUgY2hlY2tpbmcgY29kZSBjYW4gdXNlIGl0KS4KKworICAgICAgICBUaGlzIGNvZGUgaXMgc29t
ZXdoYXQgcmVkdW5kYW50IHdpdGggdGhlIGNvZGUgZm9yIGZpbmRfY2hlY2tvdXRfcm9vdCgpCisg
ICAgICAgIGluIHRoZSBzY20gbW9kdWxlcywgYnV0IGl0IGRvZXMgbm90IHJlbHkgb24gYW4gYWN0
dWFsIGNoZWNrb3V0IHRvIHdvcmsKKyAgICAgICAgKG9yIGV2ZW4gZm9yIGdpdCBvciBzdm4gdG8g
YmUgaW5zdGFsbGVkKS4gVGhpcyBpcyBhIHJlcXVpcmVtZW50IGZvcgorICAgICAgICBzb21lIHVz
ZXMgb2YgdGhlIHRyZWUgKGUuZy4sIENocm9taXVtIHRlc3RlciBjaGVja291dHMpLgorCisgICAg
ICAgIEFsc28sIHRoZSBzY20gbW9kdWxlcyBmaW5kIHRoZSB0b3Agb2YgdGhlIGNoZWNrb3V0IGZv
ciBhIGdpdmVuIHBhdGgsCisgICAgICAgIG5vdCB0aGUgYWN0dWFsIHRvcCBvZiB0aGUgd2Via2l0
IHRyZWUgYmVpbmcgdXNlZC4gQXJndWFibHkgdGhlCisgICAgICAgIGNoZWNrb3V0IG1vZHVsZSBz
aG91bGQgdXNlIHRoZSByb3V0aW5lIGZyb20gc3lzdGVtaG9zdCBhbmQgbm90IHRoZQorICAgICAg
ICByb3V0aW5lcyBmcm9tIHRoZSBzY20gbW9kdWxlcywgc28gdGhhdCB3ZSBjaGVja291dCBiZWlu
ZyB1c2VkIGJ5IHRoZQorICAgICAgICBzY3JpcHRzIHRoZW1zZWx2ZXMgYW5kIG5vdCB3aGF0ZXZl
ciByYW5kb20gY2hlY2tvdXQgdGhlIGN1cnJlbnQgd29ya2luZworICAgICAgICBkaXJlY3Rvcnkg
aGFwcGVucyB0byBiZSBpbiwgYnV0IHRoYXQncyBhIHNlcGFyYXRlIHBhdGNoLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggcmVtb3ZlcyBtb3N0IG9mIHRoZSBsb2dpYyBmcm9tIHRoZSBsYXlvdXRfdGVz
dHMucG9ydC5jb25maWcKKyAgICAgICAgbW9kdWxlOyB3ZSBqdXN0IG5lZWQgdG8gbW92ZSB0aGUg
ZGVmYXVsdF9jb25maWd1cmF0aW9uIGFuZCBmbGFnX2Zyb21fY29uZmlndXJhdGlvbgorICAgICAg
ICBsb2dpYyBpbnRvIERlcHJlY2F0ZWRQb3J0IChvciBzb21lcGxhY2UgZWxzZSBhcHByb3ByaWF0
ZSkgYW5kIHdlIGNhbgorICAgICAgICBmaW5pc2ggZ2V0dGluZyByaWQgb2YgdGhlIENvbmZpZyBj
bGFzcywgYnV0IHRoYXQgaXMgYWxzbyBhIHNlcGFyYXRlIHBhdGNoLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYmFzZWxpbmVvcHRpbWl6ZXIucHk6CisgICAg
ICAgIChfYmFzZWxpbmVfc2VhcmNoX2h5cGVyZ3JhcGgpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5OgorICAgICAgICAoU3lzdGVtSG9zdC5f
X2luaXRfXyk6CisgICAgICAgIChTeXN0ZW1Ib3N0Lm1ha2VfZmlsZV9sb2NrKToKKyAgICAgICAg
KFN5c3RlbUhvc3QpOgorICAgICAgICAoU3lzdGVtSG9zdC53ZWJraXRfYmFzZV9kaXIpOgorICAg
ICAgICAoU3lzdGVtSG9zdC5wYXRoX2Zyb21fd2Via2l0X2Jhc2UpOgorICAgICAgICAoU3lzdGVt
SG9zdC5zY3JpcHRfcGF0aCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL3N5c3RlbWhvc3RfaW50ZWdyYXRpb250ZXN0LnB5OgorICAgICAgICAoU3lzdGVtSG9zdFRl
c3QpOgorICAgICAgICAoU3lzdGVtSG9zdFRlc3QudGVzdF9wYXRoX2Zyb21fd2Via2l0X2Jhc2Up
OgorICAgICAgICAoU3lzdGVtSG9zdFRlc3QudGVzdF93ZWJraXRfYmFzZV9kaXIpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0X21vY2sucHk6Cisg
ICAgICAgIChNb2NrU3lzdGVtSG9zdC5tYWtlX2ZpbGVfbG9jayk6CisgICAgICAgIChNb2NrU3lz
dGVtSG9zdCk6CisgICAgICAgIChNb2NrU3lzdGVtSG9zdC53ZWJraXRfYmFzZV9kaXIpOgorICAg
ICAgICAoTW9ja1N5c3RlbUhvc3QucGF0aF9mcm9tX3dlYmtpdF9iYXNlKToKKyAgICAgICAgKE1v
Y2tTeXN0ZW1Ib3N0LnNjcmlwdF9wYXRoKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0Ll9faW5pdF9fKToKKyAgICAg
ICAgKFBvcnQucGVyZl90ZXN0c19kaXIpOgorICAgICAgICAoUG9ydC5wYXRoX2Zyb21fd2Via2l0
X2Jhc2UpOgorICAgICAgICAoUG9ydC5fcnVuX3NjcmlwdCk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weToKKyAgICAgICAgKENo
cm9taXVtTGludXhQb3J0Ll9kZXRlcm1pbmVfZHJpdmVyX3BhdGhfc3RhdGljYWxseSk6CisgICAg
ICAgIChDaHJvbWl1bUxpbnV4UG9ydC5fZGV0ZXJtaW5lX2FyY2hpdGVjdHVyZSk6CisgICAgICAg
IChDaHJvbWl1bUxpbnV4UG9ydC5kZXRlcm1pbmVfZnVsbF9wb3J0X25hbWUpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnLnB5OgorICAgICAgICAo
Q29uZmlnLl9faW5pdF9fKToKKyAgICAgICAgKENvbmZpZy5idWlsZF9kaXJlY3RvcnkpOgorICAg
ICAgICAoQ29uZmlnLmRlZmF1bHRfY29uZmlndXJhdGlvbik6CisgICAgICAgIChDb25maWcuX3Jl
YWRfY29uZmlndXJhdGlvbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jb25maWdfbW9jay5weToKKyAgICAgICAgKE1vY2tDb25maWcuZGVmYXVsdF9jb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2NvbmZpZ19zdGFuZGFsb25lLnB5OgorICAgICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfdW5pdHRlc3QucHk6CisgICAgICAg
IChDb25maWdUZXN0Lm1ha2VfY29uZmlnKToKKyAgICAgICAgKENvbmZpZ1Rlc3QudGVzdF9kZWZh
dWx0X2NvbmZpZ3VyYXRpb25fX3N0YW5kYWxvbmUpOgorICAgICAgICAoQ29uZmlnVGVzdC50ZXN0
X2RlZmF1bHRfY29uZmlndXJhdGlvbl9fc2NyaXB0ZXJyb3IpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5OgorICAgICAgICAoR3RrUG9ydC5zZXR1
cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvbWFjLnB5OgorICAgICAgICAoTWFjUG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9m
aWxlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5w
eToKKyAgICAgICAgKFB5bGludGVyLl9faW5pdF9fKToKKworMjAxMi0xMS0xMiAgRGlyayBQcmFu
a2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAgICB3ZWJraXRweTogaW50ZWdyYXRl
IHB5bGludCBpbnRvIGNoZWNrLXdlYmtpdC1zdHlsZSwgcGFydCBJCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEyODUKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYmFzZWxpbmVvcHRpbWl6ZXIucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXpl
ci5weQppbmRleCBkMmQ1M2E1Njg0ZGJiOGRkZmExODU2MGQyMWI4ODIwZjFhZjIxNzc1Li42ZWJm
M2E5YjFhNDYzMDg1YzVjNzI3YzVmMmY3MmFlYzVlMTAxM2ZiIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplci5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXpl
ci5weQpAQCAtNDksNyArNDksNyBAQCBkZWYgX2Jhc2VsaW5lX3NlYXJjaF9oeXBlcmdyYXBoKGhv
c3QsIHBvcnRfbmFtZXMpOgogICAgIHBvcnRfZmFjdG9yeSA9IGhvc3QucG9ydF9mYWN0b3J5CiAg
ICAgZm9yIHBvcnRfbmFtZSBpbiBwb3J0X25hbWVzOgogICAgICAgICBwb3J0ID0gcG9ydF9mYWN0
b3J5LmdldChwb3J0X25hbWUpCi0gICAgICAgIHdlYmtpdF9iYXNlID0gcG9ydC53ZWJraXRfYmFz
ZSgpCisgICAgICAgIHdlYmtpdF9iYXNlID0gaG9zdC53ZWJraXRfYmFzZV9kaXIoKQogICAgICAg
ICBzZWFyY2hfcGF0aCA9IHBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKQogICAgICAgICBpZiBz
ZWFyY2hfcGF0aDoKICAgICAgICAgICAgIGh5cGVyZ3JhcGhbcG9ydF9uYW1lXSA9IFtob3N0LmZp
bGVzeXN0ZW0ucmVscGF0aChwYXRoLCB3ZWJraXRfYmFzZSkgZm9yIHBhdGggaW4gc2VhcmNoX3Bh
dGhdICsgZmFsbGJhY2tfcGF0aApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vc3lzdGVtaG9zdC5weQppbmRleCBkZmVjNjhiYzE3YzIwYzFlZjUwMDFlZDlhZjM5
YzI2ZjQ5YTllZTMwLi45ZDk0ZWQzYTk3NjVlNjlmZGFjMWIwMmRjNjA5MGViMTNhYTJjODBkIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9z
dC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9z
dC5weQpAQCAtNDAsOSArNDAsMzMgQEAgY2xhc3MgU3lzdGVtSG9zdChvYmplY3QpOgogICAgICAg
ICBzZWxmLnVzZXIgPSB1c2VyLlVzZXIoKQogICAgICAgICBzZWxmLnBsYXRmb3JtID0gcGxhdGZv
cm1pbmZvLlBsYXRmb3JtSW5mbyhzeXMsIHBsYXRmb3JtLCBzZWxmLmV4ZWN1dGl2ZSkKICAgICAg
ICAgc2VsZi53b3Jrc3BhY2UgPSB3b3Jrc3BhY2UuV29ya3NwYWNlKHNlbGYuZmlsZXN5c3RlbSwg
c2VsZi5leGVjdXRpdmUpCisgICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlX2RpciA9IE5vbmUKIAog
ICAgIGRlZiBjb3B5X2N1cnJlbnRfZW52aXJvbm1lbnQoc2VsZik6CiAgICAgICAgIHJldHVybiBl
bnZpcm9ubWVudC5FbnZpcm9ubWVudChvcy5lbnZpcm9uLmNvcHkoKSkKIAogICAgIGRlZiBtYWtl
X2ZpbGVfbG9jayhzZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJuIGZpbGVfbG9jay5GaWxlTG9j
ayhwYXRoKQorCisgICAgZGVmIHdlYmtpdF9iYXNlX2RpcihzZWxmKToKKyAgICAgICAgIiIiUmV0
dXJucyB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdG9wIG9mIHRoZSBXZWJLaXQgdHJlZS4KKwor
ICAgICAgICBSYWlzZXMgYW4gQXNzZXJ0aW9uRXJyb3IgaWYgdGhlIHRvcCBkaXIgY2FuJ3QgYmUg
ZGV0ZXJtaW5lZC4iIiIKKyAgICAgICAgIyBOb3RlOiBUaGlzIGNvZGUgc29tZXdoYXQgZHVwbGlj
YXRlcyB0aGUgY29kZSBpbgorICAgICAgICAjIHNjbS5maW5kX2NoZWNrb3V0X3Jvb3QoKS4gSG93
ZXZlciwgdGhhdCBjb2RlIG9ubHkgd29ya3MgaWYgdGhlIHRvcAorICAgICAgICAjIG9mIHRoZSBT
Q00gcmVwb3NpdG9yeSBhbHNvIG1hdGNoZXMgdGhlIHRvcCBvZiB0aGUgV2ViS2l0IHRyZWUuIFRo
ZQorICAgICAgICAjIENocm9taXVtIHBvcnRzLCBmb3IgZXhhbXBsZSwgbWlnaHQgb25seSBjaGVj
ayBvdXQgc3ViZGlyZWN0b3JpZXMgbGlrZQorICAgICAgICAjIFRvb2xzL1NjcmlwdC4gVGhpcyBj
b2RlIHdpbGwgYWxzbyB3b3JrIGlmIHRoZXJlIGlzIG5vIFNDTSBzeXN0ZW0gYXQgYWxsLgorICAg
ICAgICBpZiBub3Qgc2VsZi5fd2Via2l0X2Jhc2VfZGlyOgorICAgICAgICAgICAgc2VsZi5fd2Vi
a2l0X2Jhc2VfZGlyID0gc2VsZi5fd2Via2l0X2Jhc2VfZGlyCisgICAgICAgICAgICBtb2R1bGVf
cGF0aCA9IHNlbGYuZmlsZXN5c3RlbS5wYXRoX3RvX21vZHVsZShzZWxmLl9fbW9kdWxlX18pCisg
ICAgICAgICAgICB0b29sc19pbmRleCA9IG1vZHVsZV9wYXRoLmZpbmQoJ1Rvb2xzJykKKyAgICAg
ICAgICAgIGFzc2VydCB0b29sc19pbmRleCAhPSAtMSwgImNvdWxkIG5vdCBmaW5kIGxvY2F0aW9u
IG9mIHRoaXMgY2hlY2tvdXQgZnJvbSAlcyIgJSBtb2R1bGVfcGF0aAorICAgICAgICAgICAgc2Vs
Zi5fd2Via2l0X2Jhc2VfZGlyID0gbW9kdWxlX3BhdGhbMDp0b29sc19pbmRleCAtIDFdCisgICAg
ICAgIHJldHVybiBzZWxmLl93ZWJraXRfYmFzZV9kaXIKKworICAgIGRlZiBwYXRoX2Zyb21fd2Vi
a2l0X2Jhc2Uoc2VsZiwgKmNvbXBzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXN5c3RlbS5q
b2luKHNlbGYud2Via2l0X2Jhc2VfZGlyKCksICpjb21wcykKKworICAgIGRlZiBzY3JpcHRfcGF0
aChzZWxmLCBzY3JpcHRfbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV93ZWJr
aXRfYmFzZSgiVG9vbHMiLCAiU2NyaXB0cyIsIHNjcmlwdF9uYW1lKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3RfaW50ZWdyYXRpb250
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3Rf
aW50ZWdyYXRpb250ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1ZGM0NDczNGQ5ZThkOWI5ZTZiNmNhZWE1
ZmYwZmQ3MjdhMjI0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdF9pbnRlZ3JhdGlvbnRlc3QucHkKQEAgLTAsMCArMSw2
MiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVu
aXR0ZXN0CisKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBT
eXN0ZW1Ib3N0CisKKworY2xhc3MgU3lzdGVtSG9zdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgor
ICAgIGRlZiB0ZXN0X3BhdGhfZnJvbV93ZWJraXRfYmFzZShzZWxmKToKKyAgICAgICAgIyBXZSBz
aW1wbHkgdGVzdCB0aGF0IHRoZSBmdW5jdGlvbiBkb2Vzbid0IHJhaXNlIGFuIGFzc2VydGlvbiBv
ciByZXR1cm4gbm90aGluZy4KKyAgICAgICAgaG9zdCA9IFN5c3RlbUhvc3QoKQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUoaG9zdC5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ2ZvbycsICdiYXInKSkK
KworICAgIGRlZiB0ZXN0X3dlYmtpdF9iYXNlX2RpcihzZWxmKToKKyAgICAgICAgaG9zdCA9IFN5
c3RlbUhvc3QoKQorICAgICAgICBiYXNlX2RpciA9IGhvc3Qud2Via2l0X2Jhc2VfZGlyKCkKKwor
ICAgICAgICAjIHRoaXMgdGVzdCB0aGF0IHdlIGdldCBhIG5vbi1lbXB0eSB2YWx1ZSBhbmQgZG9u
J3QgYXNzZXJ0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiYXNlX2RpcikKKworICAgICAgICAj
IHRoaXMgY2hlY2tzIHRoYXQgd2Ugc3RyaXAgb2ZmIHRoZSBkaXJlY3Rvcnkgc2VwYXJhdG9yIHBy
b3Blcmx5LgorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGJhc2VfZGlyWy0xXSwgJy8nKQor
CisgICAgICAgICMgVGhpcyBjaGVja3MgdGhhdCB3ZSBnZXQgdGhlIHNhbWUgdmFsdWUgZXZlbiBp
ZiB3ZSdyZSBub3QgaW5zaWRlIHRoZSBjaGVja291dC4KKyAgICAgICAgb3JpZ19jd2QgPSBob3N0
LmZpbGVzeXN0ZW0uZ2V0Y3dkKCkKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6
CisgICAgICAgICAgICBob3N0LmZpbGVzeXN0ZW0uY2hkaXIob3MuZW52aXJvblsnVVNFUlBST0ZJ
TEUnXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5jaGRpcihv
cy5lbnZpcm9uWydIT01FJ10pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJhc2VfZGlyXzIg
PSBTeXN0ZW1Ib3N0KCkud2Via2l0X2Jhc2VfZGlyKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYmFzZV9kaXIsIGJhc2VfZGlyXzIpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAg
ICBob3N0LmZpbGVzeXN0ZW0uY2hkaXIob3JpZ19jd2QpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdF9tb2NrLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3RfbW9jay5weQppbmRleCBhNTI5
ZjM0ODMxMjg2ZTlhNGM4OTNkZDAwOGQ5YTE3NDExZGE1MmRlLi5jNTgxNWQyMjYyY2EwNDhjYTRh
OTgyZWEyZDI0YTA5ZjkyNGY5MzY0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdF9tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0X21vY2sucHkKQEAgLTEsMzAgKzEsMzAgQEAK
LSAgICAjIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICAgICMKLSAgICAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICAgICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICAgICMgbWV0
OgotICAgICMKLSAgICAjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICAgIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gICAgIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gICAg
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gICAgIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gICAgIyBkaXN0cmlidXRpb24uCi0gICAgIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gICAgIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICAgICMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAgICAjCi0gICAgIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gICAg
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICAgICMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gICAgIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICAgICMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gICAgIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gICAgIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAgICAjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICAgICMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICAgICMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gICAgIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorIyBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRp
c3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5lbnZpcm9ubWVudCBpbXBvcnQgRW52aXJvbm1lbnQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQpAQCAtNTQsMyArNTQsMTIg
QEAgY2xhc3MgTW9ja1N5c3RlbUhvc3Qob2JqZWN0KToKIAogICAgIGRlZiBtYWtlX2ZpbGVfbG9j
ayhzZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJuIE1vY2tGaWxlTG9jayhwYXRoKQorCisgICAg
ZGVmIHdlYmtpdF9iYXNlX2RpcihzZWxmKToKKyAgICAgICAgcmV0dXJuICcvbW9jay1jaGVja291
dCcKKworICAgIGRlZiBwYXRoX2Zyb21fd2Via2l0X2Jhc2Uoc2VsZiwgKmNvbXBzKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuZmlsZXN5c3RlbS5qb2luKHNlbGYud2Via2l0X2Jhc2VfZGlyKCksICpj
b21wcykKKworICAgIGRlZiBzY3JpcHRfcGF0aChzZWxmLCBzY3JpcHRfbmFtZSk6CisgICAgICAg
IHJldHVybiAiVG9vbHMvU2NyaXB0cy8iICsgc2NyaXB0X25hbWUKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCBlYTFlOWQwMzNlYTBi
MTY2NTBlYzllZWM4ODFlZDg3NzZiMTJkMTEwLi5lZjE1MzcwYmIwODFjNDM5NjIzMTM5OGYxYWJi
ZjI3MTE1YTRjYTBjIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5CkBAIC01MCw2ICs1MCw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKIAog
ZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IGZpbmRfZmlsZXMKIGZyb20gd2Via2l0cHkuY29t
bW9uIGltcG9ydCByZWFkX2NoZWNrc3VtX2Zyb21fcG5nCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5j
aGVja291dCBpbXBvcnQgQ2hlY2tvdXQKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGlt
cG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgpA
QCAtMTEwLDcgKzExMSw4IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgc2VsZi5ob3N0
ID0gaG9zdAogICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBob3N0LmV4ZWN1dGl2ZQogICAgICAg
ICBzZWxmLl9maWxlc3lzdGVtID0gaG9zdC5maWxlc3lzdGVtCi0gICAgICAgIHNlbGYuX2NvbmZp
ZyA9IGNvbmZpZyBvciBwb3J0X2NvbmZpZy5Db25maWcoc2VsZi5fZXhlY3V0aXZlLCBzZWxmLl9m
aWxlc3lzdGVtLCBzZWxmLnBvcnRfbmFtZSkKKyAgICAgICAgc2VsZi5fd2Via2l0X2Jhc2VfZGly
ID0gTm9uZQorICAgICAgICBzZWxmLl9jb25maWcgPSBjb25maWcgb3IgcG9ydF9jb25maWcuQ29u
ZmlnKHNlbGYuaG9zdCwgc2VsZi5wb3J0X25hbWUpCiAKICAgICAgICAgc2VsZi5faGVscGVyID0g
Tm9uZQogICAgICAgICBzZWxmLl9odHRwX3NlcnZlciA9IE5vbmUKQEAgLTY5Miw5ICs2OTQsNiBA
QCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgYWJzb2x1dGUgcGF0
aCB0byB0aGUgdG9wIG9mIHRoZSBQZXJmb3JtYW5jZVRlc3RzIGRpcmVjdG9yeS4iIiIKICAgICAg
ICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdQZXJmb3JtYW5jZVRlc3RzJykK
IAotICAgIGRlZiB3ZWJraXRfYmFzZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVz
eXN0ZW0uYWJzcGF0aChzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnLicpKQotCiAgICAgZGVm
IHNraXBwZWRfbGF5b3V0X3Rlc3RzKHNlbGYsIHRlc3RfbGlzdCk6CiAgICAgICAgICIiIlJldHVy
bnMgdGVzdHMgc2tpcHBlZCBvdXRzaWRlIG9mIHRoZSBUZXN0RXhwZWN0YXRpb25zIGZpbGVzLiIi
IgogICAgICAgICByZXR1cm4gc2V0KHNlbGYuX3Rlc3RzX2Zvcl9vdGhlcl9wbGF0Zm9ybXMoKSku
dW5pb24oc2VsZi5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXModGVzdF9s
aXN0KSkKQEAgLTc2NSw5ICs3NjQsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHJl
dHVybiBzZWxmLl9vcHRpb25zLmVuc3VyZV92YWx1ZShuYW1lLCBkZWZhdWx0X3ZhbHVlKQogCiAg
ICAgZGVmIHBhdGhfZnJvbV93ZWJraXRfYmFzZShzZWxmLCAqY29tcHMpOgotICAgICAgICAiIiJS
ZXR1cm5zIHRoZSBmdWxsIHBhdGggdG8gcGF0aCBtYWRlIGJ5IGpvaW5pbmcgdGhlIHRvcCBvZiB0
aGUKLSAgICAgICAgV2ViS2l0IHNvdXJjZSB0cmVlIGFuZCB0aGUgbGlzdCBvZiBwYXRoIGNvbXBv
bmVudHMgaW4gfCpjb21wc3wuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9jb25maWcucGF0aF9m
cm9tX3dlYmtpdF9iYXNlKCpjb21wcykKKyAgICAgICAgcmV0dXJuIHNlbGYuaG9zdC5wYXRoX2Zy
b21fd2Via2l0X2Jhc2UoKmNvbXBzKQogCiAgICAgQG1lbW9pemVkCiAgICAgZGVmIHBhdGhfdG9f
dGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKQEAgLTEzNzMsMTIgKzEzNzAsMTIgQEAgY2xh
c3MgUG9ydChvYmplY3QpOgogICAgICAgICByZXR1cm4gY29uZmlnX2FyZ3MKIAogICAgIGRlZiBf
cnVuX3NjcmlwdChzZWxmLCBzY3JpcHRfbmFtZSwgYXJncz1Ob25lLCBpbmNsdWRlX2NvbmZpZ3Vy
YXRpb25fYXJndW1lbnRzPVRydWUsIGRlY29kZV9vdXRwdXQ9VHJ1ZSwgZW52PU5vbmUpOgotICAg
ICAgICBydW5fc2NyaXB0X2NvbW1hbmQgPSBbc2VsZi5fY29uZmlnLnNjcmlwdF9wYXRoKHNjcmlw
dF9uYW1lKV0KKyAgICAgICAgcnVuX3NjcmlwdF9jb21tYW5kID0gW3NlbGYuaG9zdC5zY3JpcHRf
cGF0aChzY3JpcHRfbmFtZSldCiAgICAgICAgIGlmIGluY2x1ZGVfY29uZmlndXJhdGlvbl9hcmd1
bWVudHM6CiAgICAgICAgICAgICBydW5fc2NyaXB0X2NvbW1hbmQuZXh0ZW5kKHNlbGYuX2FyZ3Vt
ZW50c19mb3JfY29uZmlndXJhdGlvbigpKQogICAgICAgICBpZiBhcmdzOgogICAgICAgICAgICAg
cnVuX3NjcmlwdF9jb21tYW5kLmV4dGVuZChhcmdzKQotICAgICAgICBvdXRwdXQgPSBzZWxmLl9l
eGVjdXRpdmUucnVuX2NvbW1hbmQocnVuX3NjcmlwdF9jb21tYW5kLCBjd2Q9c2VsZi5fY29uZmln
LndlYmtpdF9iYXNlX2RpcigpLCBkZWNvZGVfb3V0cHV0PWRlY29kZV9vdXRwdXQsIGVudj1lbnYp
CisgICAgICAgIG91dHB1dCA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChydW5fc2NyaXB0
X2NvbW1hbmQsIGN3ZD1zZWxmLmhvc3Qud2Via2l0X2Jhc2VfZGlyKCksIGRlY29kZV9vdXRwdXQ9
ZGVjb2RlX291dHB1dCwgZW52PWVudikKICAgICAgICAgX2xvZy5kZWJ1ZygnT3V0cHV0IG9mICVz
OlxuJXMnICUgKHJ1bl9zY3JpcHRfY29tbWFuZCwgb3V0cHV0KSkKICAgICAgICAgcmV0dXJuIG91
dHB1dAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX2xpbnV4LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV9saW51eC5weQppbmRleCA3YzM3ZmQxN2EyZTZlNTkwODNjODdiZjli
Y2M4N2YxYjZiMmYyNWFkLi5lYTg1MDA0YmY0ZThlNzI3NjIyNjgzODQxM2NlYzYwNDFjOGZiMjFi
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX2xpbnV4LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fbGludXgucHkKQEAgLTU5LDkgKzU5LDkgQEAgY2xhc3MgQ2hyb21pdW1M
aW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKIAogICAgIEBjbGFzc21ldGhvZAogICAg
IGRlZiBfZGV0ZXJtaW5lX2RyaXZlcl9wYXRoX3N0YXRpY2FsbHkoY2xzLCBob3N0LCBvcHRpb25z
KToKLSAgICAgICAgY29uZmlnX29iamVjdCA9IGNvbmZpZy5Db25maWcoaG9zdC5leGVjdXRpdmUs
IGhvc3QuZmlsZXN5c3RlbSkKKyAgICAgICAgY29uZmlnX29iamVjdCA9IGNvbmZpZy5Db25maWco
aG9zdCkKICAgICAgICAgYnVpbGRfZGlyZWN0b3J5ID0gZ2V0YXR0cihvcHRpb25zLCAnYnVpbGRf
ZGlyZWN0b3J5JywgTm9uZSkKLSAgICAgICAgd2Via2l0X2Jhc2UgPSBjb25maWdfb2JqZWN0LnBh
dGhfZnJvbV93ZWJraXRfYmFzZSgpCisgICAgICAgIHdlYmtpdF9iYXNlID0gaG9zdC5wYXRoX2Zy
b21fd2Via2l0X2Jhc2UoKQogICAgICAgICBjaHJvbWl1bV9iYXNlID0gY2xzLl9jaHJvbWl1bV9i
YXNlX2Rpcihob3N0LmZpbGVzeXN0ZW0pCiAgICAgICAgIGlmIGhhc2F0dHIob3B0aW9ucywgJ2Nv
bmZpZ3VyYXRpb24nKSBhbmQgb3B0aW9ucy5jb25maWd1cmF0aW9uOgogICAgICAgICAgICAgY29u
ZmlndXJhdGlvbiA9IG9wdGlvbnMuY29uZmlndXJhdGlvbgpAQCAtNzAsMTEgKzcwLDExIEBAIGNs
YXNzIENocm9taXVtTGludXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIHJl
dHVybiBjbHMuX3N0YXRpY19idWlsZF9wYXRoKGhvc3QuZmlsZXN5c3RlbSwgYnVpbGRfZGlyZWN0
b3J5LCBjaHJvbWl1bV9iYXNlLCB3ZWJraXRfYmFzZSwgY29uZmlndXJhdGlvbiwgWydEdW1wUmVu
ZGVyVHJlZSddKQogCiAgICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfZGV0ZXJtaW5lX2FyY2hp
dGVjdHVyZShmaWxlc3lzdGVtLCBleGVjdXRpdmUsIGRyaXZlcl9wYXRoKToKKyAgICBkZWYgX2Rl
dGVybWluZV9hcmNoaXRlY3R1cmUoaG9zdCwgZHJpdmVyX3BhdGgpOgogICAgICAgICBmaWxlX291
dHB1dCA9ICcnCi0gICAgICAgIGlmIGZpbGVzeXN0ZW0uZXhpc3RzKGRyaXZlcl9wYXRoKToKKyAg
ICAgICAgaWYgaG9zdC5maWxlc3lzdGVtLmV4aXN0cyhkcml2ZXJfcGF0aCk6CiAgICAgICAgICAg
ICAjIFRoZSAtLWRlcmVmZXJlbmNlIGZsYWcgdGVsbHMgZmlsZSB0byBmb2xsb3cgc3ltbGlua3MK
LSAgICAgICAgICAgIGZpbGVfb3V0cHV0ID0gZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsnZmlsZScs
ICctLWRlcmVmZXJlbmNlJywgZHJpdmVyX3BhdGhdLCByZXR1cm5fc3RkZXJyPVRydWUpCisgICAg
ICAgICAgICBmaWxlX291dHB1dCA9IGhvc3QuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsnZmlsZScs
ICctLWRlcmVmZXJlbmNlJywgZHJpdmVyX3BhdGhdLCByZXR1cm5fc3RkZXJyPVRydWUpCiAKICAg
ICAgICAgaWYgJ0VMRiAzMi1iaXQgTFNCIGV4ZWN1dGFibGUnIGluIGZpbGVfb3V0cHV0OgogICAg
ICAgICAgICAgcmV0dXJuICd4ODYnCkBAIC05Miw3ICs5Miw3IEBAIGNsYXNzIENocm9taXVtTGlu
dXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVm
IGRldGVybWluZV9mdWxsX3BvcnRfbmFtZShjbHMsIGhvc3QsIG9wdGlvbnMsIHBvcnRfbmFtZSk6
CiAgICAgICAgIGlmIHBvcnRfbmFtZS5lbmRzd2l0aCgnLWxpbnV4Jyk6Ci0gICAgICAgICAgICBy
ZXR1cm4gcG9ydF9uYW1lICsgJy0nICsgY2xzLl9kZXRlcm1pbmVfYXJjaGl0ZWN0dXJlKGhvc3Qu
ZmlsZXN5c3RlbSwgaG9zdC5leGVjdXRpdmUsIGNscy5fZGV0ZXJtaW5lX2RyaXZlcl9wYXRoX3N0
YXRpY2FsbHkoaG9zdCwgb3B0aW9ucykpCisgICAgICAgICAgICByZXR1cm4gcG9ydF9uYW1lICsg
Jy0nICsgY2xzLl9kZXRlcm1pbmVfYXJjaGl0ZWN0dXJlKGhvc3QsIGNscy5fZGV0ZXJtaW5lX2Ry
aXZlcl9wYXRoX3N0YXRpY2FsbHkoaG9zdCwgb3B0aW9ucykpCiAgICAgICAgIHJldHVybiBwb3J0
X25hbWUKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoqa3dhcmdz
KToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y29uZmlnLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25m
aWcucHkKaW5kZXggZGQ4ZjMzMWFmODdlZmRlYzAyNjA0Nzg5NzZiOWQzYTFjN2M1YTVhOS4uNTEz
MmJhMjlkZDBhZTAxOThkNzA4Zjg2ZjNiZmUwZGEzMTNlYTEwMiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWcucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWcucHkKQEAgLTI5LDExICsy
OSwxMCBAQAogCiAiIiJXcmFwcGVyIG9iamVjdHMgZm9yIFdlYktpdC1zcGVjaWZpYyB1dGlsaXR5
IHJvdXRpbmVzLiIiIgogCi0jIEZJWE1FOiBUaGlzIGZpbGUgbmVlZHMgdG8gYmUgdW5pZmllZCB3
aXRoIGNvbW1vbi9jaGVja291dC9zY20ucHkgYW5kCi0jIGNvbW1vbi9jb25maWcvcG9ydHMucHkg
LgorIyBGSVhNRTogVGhpcyBmaWxlIG5lZWRzIHRvIGJlIHVuaWZpZWQgd2l0aCBjb21tb24vY29u
ZmlnL3BvcnRzLnB5IC4KIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBsb2d1
dGlscwotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmUKK2Zyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiAKIAog
X2xvZyA9IGxvZ3V0aWxzLmdldF9sb2dnZXIoX19maWxlX18pCkBAIC02MSwxMSArNjAsMTEgQEAg
Y2xhc3MgQ29uZmlnKG9iamVjdCk6CiAgICAgICAgICJSZWxlYXNlIjogIi0tcmVsZWFzZSIsCiAg
ICAgfQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4ZWN1dGl2ZSwgZmlsZXN5c3RlbSwgcG9y
dF9pbXBsZW1lbnRhdGlvbj1Ob25lKToKLSAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0
aXZlCi0gICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtCi0gICAgICAgIHNlbGYu
X3dlYmtpdF9iYXNlX2RpciA9IE5vbmUKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9y
dF9pbXBsZW1lbnRhdGlvbj1Ob25lKToKKyAgICAgICAgc2VsZi5faG9zdCA9IGhvc3QKKyAgICAg
ICAgc2VsZi5fZmlsZXN5c3RlbSA9IGhvc3QuZmlsZXN5c3RlbQogICAgICAgICBzZWxmLl9kZWZh
dWx0X2NvbmZpZ3VyYXRpb24gPSBOb25lCisgICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlX2RpciA9
IE5vbmUKICAgICAgICAgc2VsZi5fYnVpbGRfZGlyZWN0b3JpZXMgPSB7fQogICAgICAgICBzZWxm
Ll9wb3J0X2ltcGxlbWVudGF0aW9uID0gcG9ydF9pbXBsZW1lbnRhdGlvbgogCkBAIC04MSw4ICs4
MCw4IEBAIGNsYXNzIENvbmZpZyhvYmplY3QpOgogICAgICAgICAgICAgZmxhZ3MuYXBwZW5kKCct
LScgKyBzZWxmLl9wb3J0X2ltcGxlbWVudGF0aW9uKQogCiAgICAgICAgIGlmIG5vdCBzZWxmLl9i
dWlsZF9kaXJlY3Rvcmllcy5nZXQoY29uZmlndXJhdGlvbik6Ci0gICAgICAgICAgICBhcmdzID0g
WyJwZXJsIiwgc2VsZi5zY3JpcHRfcGF0aCgid2Via2l0LWJ1aWxkLWRpcmVjdG9yeSIpXSArIGZs
YWdzCi0gICAgICAgICAgICBvdXRwdXQgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoYXJn
cywgY3dkPXNlbGYud2Via2l0X2Jhc2VfZGlyKCksIHJldHVybl9zdGRlcnI9RmFsc2UpLnJzdHJp
cCgpCisgICAgICAgICAgICBhcmdzID0gWyJwZXJsIiwgc2VsZi5faG9zdC5zY3JpcHRfcGF0aCgi
d2Via2l0LWJ1aWxkLWRpcmVjdG9yeSIpXSArIGZsYWdzCisgICAgICAgICAgICBvdXRwdXQgPSBz
ZWxmLl9ob3N0LmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChhcmdzLCBjd2Q9c2VsZi5faG9zdC53ZWJr
aXRfYmFzZV9kaXIoKSwgcmV0dXJuX3N0ZGVycj1GYWxzZSkucnN0cmlwKCkKICAgICAgICAgICAg
IHBhcnRzID0gb3V0cHV0LnNwbGl0KCJcbiIpCiAgICAgICAgICAgICBzZWxmLl9idWlsZF9kaXJl
Y3Rvcmllc1tjb25maWd1cmF0aW9uXSA9IHBhcnRzWzBdCiAKQEAgLTExMSwzMiArMTEwLDYgQEAg
Y2xhc3MgQ29uZmlnKG9iamVjdCk6CiAgICAgICAgICAgICBfbG9nLndhcm4oIlNjcmlwdHMgbWF5
IGZhaWwuICBTZWUgJ3NldC13ZWJraXQtY29uZmlndXJhdGlvbiAtLWhlbHAnLiIpCiAgICAgICAg
IHJldHVybiBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRpb24KIAotICAgIGRlZiBwYXRoX2Zyb21f
d2Via2l0X2Jhc2Uoc2VsZiwgKmNvbXBzKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0
ZW0uam9pbihzZWxmLndlYmtpdF9iYXNlX2RpcigpLCAqY29tcHMpCi0KLSAgICAjIEZJWE1FOiBX
ZSBzaG91bGQgb25seSBoYXZlIG9uZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGxvZ2ljLAotICAg
ICMgaWYgc2NtLmZpbmRfY2hlY2tvdXRfcm9vdCgpIGlzIGJyb2tlbiBmb3IgQ2hyb21pdW0sIHdl
IHNob3VsZCBmaXggKG9yIGF0IGxlYXN0IHdyYXApIGl0IQotICAgIGRlZiB3ZWJraXRfYmFzZV9k
aXIoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHRv
cCBvZiB0aGUgV2ViS2l0IHRyZWUuCi0KLSAgICAgICAgUmFpc2VzIGFuIEFzc2VydGlvbkVycm9y
IGlmIHRoZSB0b3AgZGlyIGNhbid0IGJlIGRldGVybWluZWQuIiIiCi0gICAgICAgICMgTm90ZTog
dGhpcyBjb2RlIHNvbWV3aGF0IGR1cGxpY2F0ZXMgdGhlIGNvZGUgaW4KLSAgICAgICAgIyBzY20u
ZmluZF9jaGVja291dF9yb290KCkuIEhvd2V2ZXIsIHRoYXQgY29kZSBvbmx5IHdvcmtzIGlmIHRo
ZSB0b3AKLSAgICAgICAgIyBvZiB0aGUgU0NNIHJlcG9zaXRvcnkgYWxzbyBtYXRjaGVzIHRoZSB0
b3Agb2YgdGhlIFdlYktpdCB0cmVlLiBUaGUKLSAgICAgICAgIyBDaHJvbWl1bSBwb3J0cywgZm9y
IGV4YW1wbGUsIG9ubHkgY2hlY2sgb3V0IHN1YmRpcmVjdG9yaWVzIGxpa2UKLSAgICAgICAgIyBU
b29scy9TY3JpcHRzLCBhbmQgc28gd2Ugc3RpbGwgaGF2ZSB0byBkbyBhZGRpdGlvbmFsIHdvcmsK
LSAgICAgICAgIyB0byBmaW5kIHRoZSB0b3Agb2YgdGhlIHRyZWUuCi0gICAgICAgICMKLSAgICAg
ICAgIyBUaGlzIGNvZGUgd2lsbCBhbHNvIHdvcmsgaWYgdGhlcmUgaXMgbm8gU0NNIHN5c3RlbSBh
dCBhbGwuCi0gICAgICAgIGlmIG5vdCBzZWxmLl93ZWJraXRfYmFzZV9kaXI6Ci0gICAgICAgICAg
ICBjb25maWdfbW9kdWxlX3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLnBhdGhfdG9fbW9kdWxlKHNl
bGYuX19tb2R1bGVfXykKLSAgICAgICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlX2RpciA9IGNvbmZp
Z19tb2R1bGVfcGF0aFswOmNvbmZpZ19tb2R1bGVfcGF0aC5maW5kKCdUb29scycpIC0gMV0KLSAg
ICAgICAgcmV0dXJuIHNlbGYuX3dlYmtpdF9iYXNlX2RpcgotCi0gICAgZGVmIHNjcmlwdF9wYXRo
KHNlbGYsIHNjcmlwdF9uYW1lKToKLSAgICAgICAgIyBUaGlzIGlzIGludGVudGlvbmFsbHkgcmVs
YXRpdmUuIENhbGxlcnMgc2hvdWxkIHBhc3MgdGhlIGNoZWNrb3V0X3Jvb3Qvd2Via2l0X2Jhc2Vf
ZGlyIHRvIHJ1bl9jb21tYW5kIGFzIHRoZSBjd2QuCi0gICAgICAgIHJldHVybiBzZWxmLl9maWxl
c3lzdGVtLmpvaW4oIlRvb2xzIiwgIlNjcmlwdHMiLCBzY3JpcHRfbmFtZSkKLQogICAgIGRlZiBf
ZGV0ZXJtaW5lX2NvbmZpZ3VyYXRpb24oc2VsZik6CiAgICAgICAgICMgVGhpcyBtaXJyb3JzIHRo
ZSBsb2dpYyBpbiB3ZWJraXRkaXJzLnBtOmRldGVybWluZUNvbmZpZ3VyYXRpb24oKS4KICAgICAg
ICAgIwpAQCAtMTYyLDcgKzEzNSw3IEBAIGNsYXNzIENvbmZpZyhvYmplY3QpOgogICAgICAgICAg
ICAgY29uZmlndXJhdGlvbl9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuYnVpbGRf
ZGlyZWN0b3J5KE5vbmUpLCAiQ29uZmlndXJhdGlvbiIpCiAgICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5fZmlsZXN5c3RlbS5leGlzdHMoY29uZmlndXJhdGlvbl9wYXRoKToKICAgICAgICAgICAgICAg
ICByZXR1cm4gTm9uZQotICAgICAgICBleGNlcHQgKE9TRXJyb3IsIGV4ZWN1dGl2ZS5TY3JpcHRF
cnJvcik6CisgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgU2NyaXB0RXJyb3IpOgogICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKIAogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3Rl
eHRfZmlsZShjb25maWd1cmF0aW9uX3BhdGgpLnJzdHJpcCgpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ19tb2NrLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfbW9jay5weQppbmRleCA1
NDc2ZTRiYWIyNmYxZWVjOGIzYWRhZmE4Y2Y3YWU5N2IxMmFiMDZjLi5kZDIxMTlkZTIyNGI4YjIy
OWU4ZTQwYWMzOWZmNzg3NDgxOTgyMWRjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ19tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnX21vY2sucHkKQEAgLTU0LDE0ICs1NCwz
IEBAIGNsYXNzIE1vY2tDb25maWcob2JqZWN0KToKIAogICAgIGRlZiBkZWZhdWx0X2NvbmZpZ3Vy
YXRpb24oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRpb24K
LQotICAgIGRlZiBwYXRoX2Zyb21fd2Via2l0X2Jhc2Uoc2VsZiwgKmNvbXBzKToKLSAgICAgICAg
IyBGSVhNRTogVGhpcyBjb3VsZCB1c2Ugc2VsZi5fZmlsZXN5c3RlbS5qb2luLCBidXQgdGhhdCBk
b2Vzbid0IGhhbmRsZSBlbXB0eSBsaXN0cy4KLSAgICAgICAgcmV0dXJuIHNlbGYud2Via2l0X2Jh
c2VfZGlyKCkgKyAiLyIgKyAiLyIuam9pbihsaXN0KGNvbXBzKSkKLQotICAgIGRlZiBzY3JpcHRf
cGF0aChzZWxmLCBzY3JpcHRfbmFtZSk6Ci0gICAgICAgICMgVGhpcyBpcyBpbnRlbnRpb25hbGx5
IHJlbGF0aXZlLiBDYWxsZXJzIHNob3VsZCBwYXNzIHRoZSBjaGVja291dF9yb290L3dlYmtpdF9i
YXNlX2RpciB0byBydW5fY29tbWFuZCBhcyB0aGUgY3dkLgotICAgICAgICByZXR1cm4gc2VsZi5f
ZmlsZXN5c3RlbS5qb2luKCJUb29scyIsICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpCi0KLSAgICBk
ZWYgd2Via2l0X2Jhc2VfZGlyKHNlbGYpOgotICAgICAgICByZXR1cm4gIi9tb2NrLWNoZWNrb3V0
IgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
b25maWdfc3RhbmRhbG9uZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY29uZmlnX3N0YW5kYWxvbmUucHkKaW5kZXggNWIwNDgzMTQ1MjBjODk5NDU0Y2ZkZTE2
ZTZjOTMzMmUyZmUyNTkzZi4uNWM3MGM3NzZkZTQyYjczYzljZmRiZWMxNjlhMmZlYTNjMWE1Y2I5
OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
b25maWdfc3RhbmRhbG9uZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2NvbmZpZ19zdGFuZGFsb25lLnB5CkBAIC00OCw2ICs0OCw3IEBAIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZV9tb2NrCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IGZpbGVzeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQg
ZmlsZXN5c3RlbV9tb2NrCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHN5c3Rl
bWhvc3RfbW9jawogCiBpbXBvcnQgY29uZmlnCiAKQEAgLTYzLDcgKzY0LDcgQEAgZGVmIG1haW4o
YXJndj1Ob25lKToKICAgICAgICAgZSA9IGV4ZWN1dGl2ZS5FeGVjdXRpdmUoKQogICAgICAgICBm
cyA9IGZpbGVzeXN0ZW0uRmlsZVN5c3RlbSgpCiAKLSAgICBjID0gY29uZmlnLkNvbmZpZyhlLCBm
cykKKyAgICBjID0gY29uZmlnLkNvbmZpZyhob3N0PXN5c3RlbWhvc3RfbW9jay5Nb2NrU3lzdGVt
SG9zdChleGVjdXRpdmU9ZSwgZmlsZXN5c3RlbT1mcykpCiAgICAgcHJpbnQgYy5kZWZhdWx0X2Nv
bmZpZ3VyYXRpb24oKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0
dGVzdC5weQppbmRleCA5NmJhNWZmNTgyN2EyNDA5YmQyMTc0OTY2MTQ2NzgxNmU4MDQwODJjLi40
MzZiZGRjZjVhOTNiODA3MmU1OTkwZTU3NTUyYjI3NmFkMWQyYzNjIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0
dGVzdC5weQpAQCAtMzAsOSArMzAsMTAgQEAgaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQg
dW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQg
RXhlY3V0aXZlLCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1
dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlLCBNb2NrRXhlY3V0aXZlMgotZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0Citmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9z
dAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJy
b3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9j
a0V4ZWN1dGl2ZTIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sg
aW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0
Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogCkBAIC00Nyw5ICs0OCwxMCBAQCBjbGFzcyBD
b25maWdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgY29uZmlnLmNsZWFyX2NhY2hl
ZF9jb25maWd1cmF0aW9uKCkKIAogICAgIGRlZiBtYWtlX2NvbmZpZyhzZWxmLCBvdXRwdXQ9Jycs
IGZpbGVzPU5vbmUsIGV4aXRfY29kZT0wLCBleGNlcHRpb249Tm9uZSwgcnVuX2NvbW1hbmRfZm49
Tm9uZSwgc3RkZXJyPScnLCBwb3J0X2ltcGxlbWVudGF0aW9uPU5vbmUpOgotICAgICAgICBlID0g
TW9ja0V4ZWN1dGl2ZTIob3V0cHV0PW91dHB1dCwgZXhpdF9jb2RlPWV4aXRfY29kZSwgZXhjZXB0
aW9uPWV4Y2VwdGlvbiwgcnVuX2NvbW1hbmRfZm49cnVuX2NvbW1hbmRfZm4sIHN0ZGVycj1zdGRl
cnIpCi0gICAgICAgIGZzID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCi0gICAgICAgIHJldHVybiBj
b25maWcuQ29uZmlnKGUsIGZzLCBwb3J0X2ltcGxlbWVudGF0aW9uPXBvcnRfaW1wbGVtZW50YXRp
b24pCisgICAgICAgIGZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbShmaWxlcykKKyAgICAgICAg
aG9zdCA9IE1vY2tTeXN0ZW1Ib3N0KGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKKyAgICAgICAgaG9z
dC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihvdXRwdXQ9b3V0cHV0LCBleGl0X2NvZGU9ZXhp
dF9jb2RlLCBleGNlcHRpb249ZXhjZXB0aW9uLCBydW5fY29tbWFuZF9mbj1ydW5fY29tbWFuZF9m
biwgc3RkZXJyPXN0ZGVycikKKyAgICAgICAgcmV0dXJuIGNvbmZpZy5Db25maWcoaG9zdCwgcG9y
dF9pbXBsZW1lbnRhdGlvbj1wb3J0X2ltcGxlbWVudGF0aW9uKQogCiAgICAgZGVmIGFzc2VydF9j
b25maWd1cmF0aW9uKHNlbGYsIGNvbnRlbnRzLCBleHBlY3RlZCk6CiAgICAgICAgICMgVGhpcyB0
ZXN0cyB0aGF0IGEgY29uZmlndXJhdGlvbiBmaWxlIGNvbnRhaW5pbmcKQEAgLTEyOCwxNyArMTMw
LDE1IEBAIGNsYXNzIENvbmZpZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAjIGNh
Y2hpbmcgLyByZXNldCBidWdzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ5MzYwCiAgICAgICAgICMgZm9yIHRoZSBtb3RpdmF0aW9uLiBXZSBjYW4gcmVtb3Zl
IHRoaXMgdGVzdCB3aGVuIHdlIHJlbW92ZSB0aGUKICAgICAgICAgIyBnbG9iYWwgY29uZmlndXJh
dGlvbiBjYWNoZSBpbiBjb25maWcucHkuCi0gICAgICAgIGUgPSBFeGVjdXRpdmUoKQotICAgICAg
ICBmcyA9IEZpbGVTeXN0ZW0oKQotICAgICAgICBjID0gY29uZmlnLkNvbmZpZyhlLCBmcykKLSAg
ICAgICAgc2NyaXB0ID0gYy5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ1Rvb2xzJywgJ1NjcmlwdHMn
LCAnd2Via2l0cHknLCAnbGF5b3V0X3Rlc3RzJywgJ3BvcnQnLCAnY29uZmlnX3N0YW5kYWxvbmUu
cHknKQorICAgICAgICBob3N0ID0gU3lzdGVtSG9zdCgpCisgICAgICAgIGMgPSBjb25maWcuQ29u
ZmlnKGhvc3QpCisgICAgICAgIHNjcmlwdCA9IGhvc3QucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdU
b29scycsICdTY3JpcHRzJywgJ3dlYmtpdHB5JywgJ2xheW91dF90ZXN0cycsICdwb3J0JywgJ2Nv
bmZpZ19zdGFuZGFsb25lLnB5JykKIAogICAgICAgICAjIE5vdGU6IGRvbid0IHVzZSAnUmVsZWFz
ZScgaGVyZSwgc2luY2UgdGhhdCdzIHRoZSBub3JtYWwgZGVmYXVsdC4KICAgICAgICAgZXhwZWN0
ZWQgPSAnRGVidWcnCiAKLSAgICAgICAgIyBGSVhNRTogV2h5IGFyZSB3ZSBydW5uaW5nIGEgcHl0
aG9uIHN1YnByb2Nlc3MgaGVyZT8/CiAgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsIHNj
cmlwdCwgJy0tbW9jaycsIGV4cGVjdGVkXQotICAgICAgICBhY3R1YWwgPSBlLnJ1bl9jb21tYW5k
KGFyZ3MpLnJzdHJpcCgpCisgICAgICAgIGFjdHVhbCA9IGhvc3QuZXhlY3V0aXZlLnJ1bl9jb21t
YW5kKGFyZ3MpLnJzdHJpcCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBl
Y3RlZCkKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRfY29uZmlndXJhdGlvbl9fbm9fcGVybChzZWxm
KToKQEAgLTE1NywzMiArMTU3LDYgQEAgY2xhc3MgQ29uZmlnVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgIGFjdHVhbCA9IGMuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsICdSZWxlYXNlJykKIAotICAgIGRlZiB0ZXN0X3BhdGhf
ZnJvbV93ZWJraXRfYmFzZShzZWxmKToKLSAgICAgICAgYyA9IGNvbmZpZy5Db25maWcoTW9ja0V4
ZWN1dGl2ZSgpLCBNb2NrRmlsZVN5c3RlbSgpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5w
YXRoX2Zyb21fd2Via2l0X2Jhc2UoJ2ZvbycpKQotCi0gICAgZGVmIHRlc3Rfd2Via2l0X2Jhc2Vf
ZGlyKHNlbGYpOgotICAgICAgICAjIEZJWE1FOiBXZSB1c2UgYSByZWFsIGZpbGVzeXN0ZW0gaGVy
ZS4gU2hvdWxkIHRoaXMgbW92ZSB0byBhIG1vY2tlZCBvbmU/Ci0gICAgICAgIGV4ZWN1dGl2ZSA9
IEV4ZWN1dGl2ZSgpCi0gICAgICAgIGZpbGVzeXN0ZW0gPSBGaWxlU3lzdGVtKCkKLSAgICAgICAg
YyA9IGNvbmZpZy5Db25maWcoZXhlY3V0aXZlLCBmaWxlc3lzdGVtKQotICAgICAgICBiYXNlX2Rp
ciA9IGMud2Via2l0X2Jhc2VfZGlyKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJhc2VfZGly
KQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGJhc2VfZGlyWy0xXSwgJy8nKQotCi0gICAg
ICAgICMgRklYTUU6IE9uY2Ugd2UgdXNlIGEgTW9ja0ZpbGVTeXN0ZW0gZm9yIHRoaXMgdGVzdCB3
ZSBkb24ndCBuZWVkIHRvIHNhdmUgdGhlIG9yaWdfY3dkLgotICAgICAgICBvcmlnX2N3ZCA9IGZp
bGVzeXN0ZW0uZ2V0Y3dkKCkKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0g
ICAgICAgICAgICBmaWxlc3lzdGVtLmNoZGlyKG9zLmVudmlyb25bJ1VTRVJQUk9GSUxFJ10pCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaWxlc3lzdGVtLmNoZGlyKG9zLmVudmlyb25bJ0hP
TUUnXSkKLSAgICAgICAgYyA9IGNvbmZpZy5Db25maWcoZXhlY3V0aXZlLCBmaWxlc3lzdGVtKQot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBiYXNlX2Rpcl8yID0gYy53ZWJraXRfYmFzZV9kaXIo
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYXNlX2RpciwgYmFzZV9kaXJfMikKLSAg
ICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZpbGVzeXN0ZW0uY2hkaXIob3JpZ19jd2QpCi0K
IAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKaW5kZXggM2Q4
MjAyNzRlYjY3YmNjODJjMGUyZGIxNDQ1NTIwZDEyMTAyNTEwNi4uN2EzOThhYTg2MTViMTFkY2Rh
NjY5YWQ2N2IxY2Q5ZjcwZmFkMDJkMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKQEAgLTcxLDcgKzcxLDcgQEAgY2xhc3MgR3RrUG9ydChQ
b3J0LCBQdWxzZUF1ZGlvU2FuaXRpemVyKToKICAgICAgICAgZW52aXJvbm1lbnRbJ1RFU1RfUlVO
TkVSX0lOSkVDVEVEX0JVTkRMRV9GSUxFTkFNRSddID0gc2VsZi5fYnVpbGRfcGF0aCgnTGlicmFy
aWVzJywgJ2xpYlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZS5sYScpCiAgICAgICAgIGVudmlyb25t
ZW50WydURVNUX1JVTk5FUl9URVNUX1BMVUdJTl9QQVRIJ10gPSBzZWxmLl9idWlsZF9wYXRoKCdU
ZXN0TmV0c2NhcGVQbHVnaW4nLCAnLmxpYnMnKQogICAgICAgICBlbnZpcm9ubWVudFsnV0VCS0lU
X0lOU1BFQ1RPUl9QQVRIJ10gPSBzZWxmLl9idWlsZF9wYXRoKCdQcm9ncmFtcycsICdyZXNvdXJj
ZXMnLCAnaW5zcGVjdG9yJykKLSAgICAgICAgZW52aXJvbm1lbnRbJ0FVRElPX1JFU09VUkNFU19Q
QVRIJ10gPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fY29uZmlnLndlYmtpdF9iYXNlX2Rp
cigpLAorICAgICAgICBlbnZpcm9ubWVudFsnQVVESU9fUkVTT1VSQ0VTX1BBVEgnXSA9IHNlbGYu
X2ZpbGVzeXN0ZW0uam9pbihzZWxmLmhvc3Qud2Via2l0X2Jhc2VfZGlyKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdWRpbycsICdy
ZXNvdXJjZXMnKQogICAgICAgICBzZWxmLl9jb3B5X3ZhbHVlX2Zyb21fZW52aXJvbl9pZl9zZXQo
ZW52aXJvbm1lbnQsICdXRUJLSVRPVVRQVVRESVInKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weQppbmRleCBlNmZkNWJkM2M5NDRlZjc1YWU3NTIy
MTA4Mzk5ZDdjNzE1NDgzZDkyLi42MzZiYzlhNGUwMzBhZjQ3YThkMWM4MGYwYWUwMzIwZmMyOTJj
ZTgzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L21hYy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21h
Yy5weQpAQCAtMTY4LDggKzE2OCw4IEBAIGNsYXNzIE1hY1BvcnQoQXBwbGVQb3J0KToKICAgICAg
ICAgIyBXZSBkb24ndCB1c2Ugc2VsZi5fcnVuX3NjcmlwdCgpIGJlY2F1c2Ugd2UgZG9uJ3Qgd2Fu
dCB0byB3YWl0IGZvciB0aGUgc2NyaXB0CiAgICAgICAgICMgdG8gZXhpdCBhbmQgd2Ugd2FudCB0
aGUgb3V0cHV0IHRvIHNob3cgdXAgb24gc3Rkb3V0IGluIGNhc2UgdGhlcmUgYXJlIGVycm9ycwog
ICAgICAgICAjIGxhdW5jaGluZyB0aGUgYnJvd3Nlci4KLSAgICAgICAgc2VsZi5fZXhlY3V0aXZl
LnBvcGVuKFtzZWxmLl9jb25maWcuc2NyaXB0X3BhdGgoJ3J1bi1zYWZhcmknKV0gKyBzZWxmLl9h
cmd1bWVudHNfZm9yX2NvbmZpZ3VyYXRpb24oKSArIFsnLS1uby1zYXZlZC1zdGF0ZScsICctTlNP
cGVuJywgcmVzdWx0c19maWxlbmFtZV0sCi0gICAgICAgICAgICBjd2Q9c2VsZi5fY29uZmlnLndl
YmtpdF9iYXNlX2RpcigpLCBzdGRvdXQ9ZmlsZShvcy5kZXZudWxsKSwgc3RkZXJyPWZpbGUob3Mu
ZGV2bnVsbCkpCisgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5wb3Blbihbc2VsZi5ob3N0LnNjcmlw
dF9wYXRoKCdydW4tc2FmYXJpJyldICsgc2VsZi5fYXJndW1lbnRzX2Zvcl9jb25maWd1cmF0aW9u
KCkgKyBbJy0tbm8tc2F2ZWQtc3RhdGUnLCAnLU5TT3BlbicsIHJlc3VsdHNfZmlsZW5hbWVdLAor
ICAgICAgICAgICAgY3dkPXNlbGYuaG9zdC53ZWJraXRfYmFzZV9kaXIoKSwgc3Rkb3V0PWZpbGUo
b3MuZGV2bnVsbCksIHN0ZGVycj1maWxlKG9zLmRldm51bGwpKQogCiAgICAgIyBGSVhNRTogVGhl
IG5leHQgdHdvIHJvdXRpbmVzIHR1cm4gb2ZmIHRoZSBodHRwIGxvY2tpbmcgaW4gb3JkZXIKICAg
ICAjIHRvIHdvcmsgYXJvdW5kIGZhaWx1cmVzIG9uIHRoZSBib3RzIGNhdXNlZCB3aGVuIHRoZSBz
bGF2ZSByZXN0YXJ0cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvcHl0aG9uLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy9weXRob24ucHkKaW5kZXggMTU3N2FjNmRiY2M0ZWY2M2FkZTQzNzFhYjExNjgxZTk4N2U5MjZk
My4uMTIzN2E2MmNhOWY2YzA3N2I2NTY4N2Y4NjZjNzJjZTBhNmViMmY5OCAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9weXRob24ucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9weXRob24ucHkKQEAgLTIyLDExICsy
MiwxMCBAQAogCiAiIiJTdXBwb3J0cyBjaGVja2luZyBXZWJLaXQgc3R5bGUgaW4gUHl0aG9uIGZp
bGVzLiIiIgogCi1pbXBvcnQgb3MKIGltcG9ydCByZQotaW1wb3J0IHN5cwogZnJvbSBTdHJpbmdJ
TyBpbXBvcnQgU3RyaW5nSU8KIAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhv
c3QgaW1wb3J0IFN5c3RlbUhvc3QKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFs
bGVkIGltcG9ydCBwZXA4CiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5w
eWxpbnQgaW1wb3J0IGxpbnQKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVk
LnB5bGludC5yZXBvcnRlcnMudGV4dCBpbXBvcnQgUGFyc2VhYmxlVGV4dFJlcG9ydGVyCkBAIC05
Nyw4ICs5Niw3IEBAIGNsYXNzIFB5bGludGVyKG9iamVjdCk6CiAgICAgXQogCiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl9zY3JpcHRfZGlyID0gb3MucGF0aC5hYnNwYXRo
KG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXykpKSkpCi0gICAgICAgIHNlbGYuX3B5bGludHJjID0gb3MucGF0aC5q
b2luKHNlbGYuX3NjcmlwdF9kaXIsICd3ZWJraXRweScsICdweWxpbnRyYycpCisgICAgICAgIHNl
bGYuX3B5bGludHJjID0gU3lzdGVtSG9zdCgpLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnVG9vbHMn
LCAnU2NyaXB0cycsICd3ZWJraXRweScsICdweWxpbnRyYycpCiAKICAgICBkZWYgcnVuKHNlbGYs
IGFyZ3YpOgogICAgICAgICBvdXRwdXQgPSBfRmlsdGVyZWRTdHJpbmdJTyhzZWxmLkZBTFNFX1BP
U0lUSVZFUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173987</attachid>
            <date>2012-11-13 14:19:34 -0800</date>
            <delta_ts>2012-11-14 17:14:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102007-20121113141735.patch</filename>
            <type>text/plain</type>
            <size>36537</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NDc0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGU1ZDYxOTQ2OGFjMTNjM2MxZWZiZjE1ZGE4MjdjNWQ4
NjkwMzMyNC4uMzZlMGU1YTcxYTI3OTE1MjlhODdiMWQ2YmM0ODU4OTEyYjJlYjc0NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgz
IEBACisyMDEyLTExLTEzICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdHB5OiBjb25zb2xpZGF0ZSB3ZWJraXQtYmFzZS1maW5kaW5nIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjAwNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
bW92ZXMgdGhlIGxvZ2ljIGZvciBkZXRlcm1pbmluZyB0aGUgdG9wIG9mIHRoZSB3ZWJraXQKKyAg
ICAgICAgc291cmNlIHRyZWUgb3V0IG9mIHRoZSBsYXlvdXRfdGVzdHMvcG9ydC8qIGNsYXNzZXMg
YW5kIGludG8KKyAgICAgICAgV29ya3NwYWNlLCBzbyB0aGF0IGl0IGlzIGF2YWlsYWJsZSBmcm9t
IGFueXdoZXJlIGluIHRoZSB0cmVlCisgICAgICAgIChhbmQgaGVuY2UgdGhlIHB5dGhvbiBzdHls
ZSBjaGVja2luZyBjb2RlIGNhbiB1c2UgaXQpLgorCisgICAgICAgIFRoaXMgY29kZSBpcyBzb21l
d2hhdCByZWR1bmRhbnQgd2l0aCB0aGUgY29kZSBmb3IgZmluZF9jaGVja291dF9yb290KCkKKyAg
ICAgICAgaW4gdGhlIHNjbSBtb2R1bGVzLCBidXQgaXQgZG9lcyBub3QgcmVseSBvbiBhbiBhY3R1
YWwgY2hlY2tvdXQgdG8gd29yaworICAgICAgICAob3IgZXZlbiBmb3IgZ2l0IG9yIHN2biB0byBi
ZSBpbnN0YWxsZWQpLiBUaGlzIGlzIGEgcmVxdWlyZW1lbnQgZm9yCisgICAgICAgIHNvbWUgdXNl
cyBvZiB0aGUgdHJlZSAoZS5nLiwgQ2hyb21pdW0gdGVzdGVyIGNoZWNrb3V0cykuCisKKyAgICAg
ICAgQWxzbywgdGhlIHNjbSBtb2R1bGVzIGZpbmQgdGhlIHRvcCBvZiB0aGUgY2hlY2tvdXQgZm9y
IGEgZ2l2ZW4gcGF0aCwKKyAgICAgICAgbm90IHRoZSBhY3R1YWwgdG9wIG9mIHRoZSB3ZWJraXQg
dHJlZSBiZWluZyB1c2VkLiBBcmd1YWJseSB0aGUKKyAgICAgICAgY2hlY2tvdXQgbW9kdWxlIHNo
b3VsZCB1c2UgdGhlIHJvdXRpbmUgZnJvbSBzeXN0ZW1ob3N0IGFuZCBub3QgdGhlCisgICAgICAg
IHJvdXRpbmVzIGZyb20gdGhlIHNjbSBtb2R1bGVzLCBzbyB0aGF0IHdlIGNoZWNrb3V0IGJlaW5n
IHVzZWQgYnkgdGhlCisgICAgICAgIHNjcmlwdHMgdGhlbXNlbHZlcyBhbmQgbm90IHdoYXRldmVy
IHJhbmRvbSBjaGVja291dCB0aGUgY3VycmVudCB3b3JraW5nCisgICAgICAgIGRpcmVjdG9yeSBo
YXBwZW5zIHRvIGJlIGluLCBidXQgdGhhdCdzIGEgc2VwYXJhdGUgcGF0Y2guCisKKyAgICAgICAg
VGhpcyBwYXRjaCByZW1vdmVzIG1vc3Qgb2YgdGhlIGxvZ2ljIGZyb20gdGhlIGxheW91dF90ZXN0
cy5wb3J0LmNvbmZpZworICAgICAgICBtb2R1bGU7IHdlIGp1c3QgbmVlZCB0byBtb3ZlIHRoZSBk
ZWZhdWx0X2NvbmZpZ3VyYXRpb24gYW5kIGZsYWdfZnJvbV9jb25maWd1cmF0aW9uCisgICAgICAg
IGxvZ2ljIGludG8gRGVwcmVjYXRlZFBvcnQgKG9yIHNvbWVwbGFjZSBlbHNlIGFwcHJvcHJpYXRl
KSBhbmQgd2UgY2FuCisgICAgICAgIGZpbmlzaCBnZXR0aW5nIHJpZCBvZiB0aGUgQ29uZmlnIGNs
YXNzLCBidXQgdGhhdCBpcyBhbHNvIGEgc2VwYXJhdGUgcGF0Y2guCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplci5weToKKyAgICAg
ICAgKF9iYXNlbGluZV9zZWFyY2hfaHlwZXJncmFwaCk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHk6CisgICAgICAgIChTeXN0ZW1Ib3N0Lm1h
a2VfZmlsZV9sb2NrKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
c3lzdGVtaG9zdF9tb2NrLnB5OgorICAgICAgICAoTW9ja1N5c3RlbUhvc3QuX19pbml0X18pOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2UucHk6Cisg
ICAgICAgIChXb3Jrc3BhY2UuX19pbml0X18pOgorICAgICAgICAoV29ya3NwYWNlKToKKyAgICAg
ICAgKFdvcmtzcGFjZS53ZWJraXRfYmFzZV9kaXIpOgorICAgICAgICAoV29ya3NwYWNlLnBhdGhf
ZnJvbV93ZWJraXRfYmFzZSk6CisgICAgICAgIChXb3Jrc3BhY2Uuc2NyaXB0X3BhdGgpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2VfbW9jay5weToK
KyAgICAgICAgKE1vY2tXb3Jrc3BhY2UuX19pbml0X18pOgorICAgICAgICAoTW9ja1dvcmtzcGFj
ZS5jcmVhdGVfemlwKToKKyAgICAgICAgKE1vY2tXb3Jrc3BhY2UpOgorICAgICAgICAoTW9ja1dv
cmtzcGFjZS53ZWJraXRfYmFzZV9kaXIpOgorICAgICAgICAoTW9ja1dvcmtzcGFjZS5wYXRoX2Zy
b21fd2Via2l0X2Jhc2UpOgorICAgICAgICAoTW9ja1dvcmtzcGFjZS5zY3JpcHRfcGF0aCk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZV91bml0dGVz
dC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKFBvcnQucGVy
Zl90ZXN0c19kaXIpOgorICAgICAgICAoUG9ydC5wYXRoX2Zyb21fd2Via2l0X2Jhc2UpOgorICAg
ICAgICAoUG9ydC5fcnVuX3NjcmlwdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weToKKyAgICAgICAgKENocm9taXVtTGludXhQ
b3J0Ll9kZXRlcm1pbmVfZHJpdmVyX3BhdGhfc3RhdGljYWxseSk6CisgICAgICAgIChDaHJvbWl1
bUxpbnV4UG9ydC5fZGV0ZXJtaW5lX2FyY2hpdGVjdHVyZSk6CisgICAgICAgIChDaHJvbWl1bUxp
bnV4UG9ydC5kZXRlcm1pbmVfZnVsbF9wb3J0X25hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnLnB5OgorICAgICAgICAoQ29uZmlnLl9faW5p
dF9fKToKKyAgICAgICAgKENvbmZpZy5idWlsZF9kaXJlY3RvcnkpOgorICAgICAgICAoQ29uZmln
LmRlZmF1bHRfY29uZmlndXJhdGlvbik6CisgICAgICAgIChDb25maWcuX3JlYWRfY29uZmlndXJh
dGlvbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25m
aWdfbW9jay5weToKKyAgICAgICAgKE1vY2tDb25maWcuZGVmYXVsdF9jb25maWd1cmF0aW9uKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ19zdGFu
ZGFsb25lLnB5OgorICAgICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jb25maWdfdW5pdHRlc3QucHk6CisgICAgICAgIChDb25maWdUZXN0
Lm1ha2VfY29uZmlnKToKKyAgICAgICAgKENvbmZpZ1Rlc3QudGVzdF9kZWZhdWx0X2NvbmZpZ3Vy
YXRpb25fX3N0YW5kYWxvbmUpOgorICAgICAgICAoQ29uZmlnVGVzdC50ZXN0X2RlZmF1bHRfY29u
ZmlndXJhdGlvbl9fc2NyaXB0ZXJyb3IpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5OgorICAgICAgICAoR3RrUG9ydC5zZXR1cF9lbnZpcm9uX2Zv
cl9zZXJ2ZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
bWFjLnB5OgorICAgICAgICAoTWFjUG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxlKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5weToKKyAgICAgICAg
KFB5bGludGVyLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2Vy
dmVycy9yZWJhc2VsaW5lc2VydmVyLnB5OgorICAgICAgICAoZ2V0X3Rlc3RfYmFzZWxpbmVzKToK
KwogMjAxMi0xMS0xMyAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzQ0NDkuCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplci5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1p
emVyLnB5CmluZGV4IGQyZDUzYTU2ODRkYmI4ZGRmYTE4NTYwZDIxYjg4MjBmMWFmMjE3NzUuLmY3
MzllZTFlOTllNzZiYmFlZDk5YmQxNmEwOTYwODI3NmY5NjVmODcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1p
emVyLnB5CkBAIC00OSw3ICs0OSw3IEBAIGRlZiBfYmFzZWxpbmVfc2VhcmNoX2h5cGVyZ3JhcGgo
aG9zdCwgcG9ydF9uYW1lcyk6CiAgICAgcG9ydF9mYWN0b3J5ID0gaG9zdC5wb3J0X2ZhY3RvcnkK
ICAgICBmb3IgcG9ydF9uYW1lIGluIHBvcnRfbmFtZXM6CiAgICAgICAgIHBvcnQgPSBwb3J0X2Zh
Y3RvcnkuZ2V0KHBvcnRfbmFtZSkKLSAgICAgICAgd2Via2l0X2Jhc2UgPSBwb3J0LndlYmtpdF9i
YXNlKCkKKyAgICAgICAgd2Via2l0X2Jhc2UgPSBob3N0LndvcmtzcGFjZS53ZWJraXRfYmFzZV9k
aXIoKQogICAgICAgICBzZWFyY2hfcGF0aCA9IHBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKQog
ICAgICAgICBpZiBzZWFyY2hfcGF0aDoKICAgICAgICAgICAgIGh5cGVyZ3JhcGhbcG9ydF9uYW1l
XSA9IFtob3N0LmZpbGVzeXN0ZW0ucmVscGF0aChwYXRoLCB3ZWJraXRfYmFzZSkgZm9yIHBhdGgg
aW4gc2VhcmNoX3BhdGhdICsgZmFsbGJhY2tfcGF0aApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3RfbW9jay5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0X21vY2sucHkKaW5kZXggYTUyOWYz
NDgzMTI4NmU5YTRjODkzZGQwMDhkOWExNzQxMWRhNTJkZS4uNmQ3ZmM2NDA1MGE4NTZhZTdmMGE1
M2UxYWYyMDIxNDk1MmY4YmU4YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL3N5c3RlbWhvc3RfbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdF9tb2NrLnB5CkBAIC0xLDMwICsxLDMwIEBACi0g
ICAgIyBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAgICAjCi0gICAgIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAgICAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAgICAjIG1ldDoK
LSAgICAjCi0gICAgIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgICMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICAgICMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICAgICMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICAgICMgZGlzdHJpYnV0aW9uLgotICAgICMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICAgICMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAgICAjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gICAgIwotICAgICMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICAgICMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAgICAjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICAgICMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAgICAjIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICAgICMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICAgICMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gICAgIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAgICAjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAgICAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICAgICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyMgQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZW52aXJvbm1lbnQgaW1wb3J0IEVudmlyb25tZW50CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKQEAgLTQ1LDkgKzQ1LDcgQEAg
Y2xhc3MgTW9ja1N5c3RlbUhvc3Qob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYucGxhdGZvcm0u
b3NfbmFtZSA9IG9zX25hbWUKICAgICAgICAgaWYgb3NfdmVyc2lvbjoKICAgICAgICAgICAgIHNl
bGYucGxhdGZvcm0ub3NfdmVyc2lvbiA9IG9zX3ZlcnNpb24KLQotICAgICAgICAjIEZJWE1FOiBT
aG91bGQgdGhpcyB0YWtlIHBvaW50ZXJzIHRvIHRoZSBmaWxlc3lzdGVtIGFuZCB0aGUgZXhlY3V0
aXZlPwotICAgICAgICBzZWxmLndvcmtzcGFjZSA9IE1vY2tXb3Jrc3BhY2UoKQorICAgICAgICBz
ZWxmLndvcmtzcGFjZSA9IE1vY2tXb3Jrc3BhY2Uoc2VsZi5maWxlc3lzdGVtLCBzZWxmLmV4ZWN1
dGl2ZSkKIAogICAgIGRlZiBjb3B5X2N1cnJlbnRfZW52aXJvbm1lbnQoc2VsZik6CiAgICAgICAg
IHJldHVybiBFbnZpcm9ubWVudCh7Ik1PQ0tfRU5WSVJPTl9DT1BZIjogJzEnfSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2UucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlLnB5CmluZGV4IDY4
NjgzNzYxOWJhYTYzM2Y0NzJhZmE1N2E5NmExMDFlNDQ1YTA2MmEuLmEyMmJiOGQ2NTY1YjY0NjI5
ZmQ5NWI0NjMwYTRjNjZkY2VhYzU1NzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZS5weQpAQCAtNDIsNiArNDIsMzAgQEAgY2xhc3MgV29y
a3NwYWNlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVzeXN0ZW0sIGV4ZWN1
dGl2ZSk6CiAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtCiAgICAgICAgIHNl
bGYuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZSAgIyBGSVhNRTogUmVtb3ZlIGlmIGNyZWF0ZV96aXAg
aXMgbW92ZWQgdG8gcHl0aG9uLgorICAgICAgICBzZWxmLl93ZWJraXRfYmFzZV9kaXIgPSBOb25l
CisKKyAgICBkZWYgd2Via2l0X2Jhc2VfZGlyKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIHRo
ZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB0b3Agb2YgdGhlIFdlYktpdCB0cmVlLgorCisgICAgICAg
IFJhaXNlcyBhbiBBc3NlcnRpb25FcnJvciBpZiB0aGUgdG9wIGRpciBjYW4ndCBiZSBkZXRlcm1p
bmVkLiIiIgorICAgICAgICAjIE5vdGU6IFRoaXMgY29kZSBzb21ld2hhdCBkdXBsaWNhdGVzIHRo
ZSBjb2RlIGluCisgICAgICAgICMgc2NtLmZpbmRfY2hlY2tvdXRfcm9vdCgpLiBIb3dldmVyLCB0
aGF0IGNvZGUgb25seSB3b3JrcyBpZiB0aGUgdG9wCisgICAgICAgICMgb2YgdGhlIFNDTSByZXBv
c2l0b3J5IGFsc28gbWF0Y2hlcyB0aGUgdG9wIG9mIHRoZSBXZWJLaXQgdHJlZS4gVGhlCisgICAg
ICAgICMgQ2hyb21pdW0gcG9ydHMsIGZvciBleGFtcGxlLCBtaWdodCBvbmx5IGNoZWNrIG91dCBz
dWJkaXJlY3RvcmllcyBsaWtlCisgICAgICAgICMgVG9vbHMvU2NyaXB0LiBUaGlzIGNvZGUgd2ls
bCBhbHNvIHdvcmsgaWYgdGhlcmUgaXMgbm8gU0NNIHN5c3RlbSBhdCBhbGwuCisgICAgICAgIGlm
IG5vdCBzZWxmLl93ZWJraXRfYmFzZV9kaXI6CisgICAgICAgICAgICBzZWxmLl93ZWJraXRfYmFz
ZV9kaXIgPSBzZWxmLl93ZWJraXRfYmFzZV9kaXIKKyAgICAgICAgICAgIG1vZHVsZV9wYXRoID0g
c2VsZi5fZmlsZXN5c3RlbS5wYXRoX3RvX21vZHVsZShzZWxmLl9fbW9kdWxlX18pCisgICAgICAg
ICAgICB0b29sc19pbmRleCA9IG1vZHVsZV9wYXRoLmZpbmQoJ1Rvb2xzJykKKyAgICAgICAgICAg
IGFzc2VydCB0b29sc19pbmRleCAhPSAtMSwgImNvdWxkIG5vdCBmaW5kIGxvY2F0aW9uIG9mIHRo
aXMgY2hlY2tvdXQgZnJvbSAlcyIgJSBtb2R1bGVfcGF0aAorICAgICAgICAgICAgc2VsZi5fd2Vi
a2l0X2Jhc2VfZGlyID0gbW9kdWxlX3BhdGhbMDp0b29sc19pbmRleCAtIDFdCisgICAgICAgIHJl
dHVybiBzZWxmLl93ZWJraXRfYmFzZV9kaXIKKworICAgIGRlZiBwYXRoX2Zyb21fd2Via2l0X2Jh
c2Uoc2VsZiwgKmNvbXBzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihz
ZWxmLndlYmtpdF9iYXNlX2RpcigpLCAqY29tcHMpCisKKyAgICBkZWYgc2NyaXB0X3BhdGgoc2Vs
Ziwgc2NyaXB0X25hbWUpOgorICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jh
c2UoIlRvb2xzIiwgIlNjcmlwdHMiLCBzY3JpcHRfbmFtZSkKIAogICAgIGRlZiBmaW5kX3VudXNl
ZF9maWxlbmFtZShzZWxmLCBkaXJlY3RvcnksIG5hbWUsIGV4dGVuc2lvbiwgc2VhcmNoX2xpbWl0
PTEwMCk6CiAgICAgICAgIGZvciBjb3VudCBpbiByYW5nZShzZWFyY2hfbGltaXQpOgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZV9tb2Nr
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZV9tb2Nr
LnB5CmluZGV4IDAwNWY4NmNmMzk1YjAyMGRlNjVkMWU3ZGViMGI0NDhjYWI1MmQ4M2YuLjllYmI3
NWM2ODQ0NWJkNGJhZWNhMTVmMGIwZmUxNjc2NjMwYjliNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2VfbW9jay5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlX21vY2sucHkKQEAgLTI2
LDEwICsyNiwyNSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAorZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0K
KwogCiBjbGFzcyBNb2NrV29ya3NwYWNlKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZpbGVzeXN0ZW09Tm9uZSwgZXhlY3V0aXZlPU5vbmUpOgorICAgICAgICBzZWxmLl9maWxlc3lz
dGVtID0gZmlsZXN5c3RlbSBvciBNb2NrRmlsZVN5c3RlbSgpCisgICAgICAgIHNlbGYuX2V4ZWN1
dGl2ZSA9IGV4ZWN1dGl2ZQorCiAgICAgZGVmIGZpbmRfdW51c2VkX2ZpbGVuYW1lKHNlbGYsIGRp
cmVjdG9yeSwgbmFtZSwgZXh0ZW5zaW9uLCBzZWFyY2hfbGltaXQ9MTApOgogICAgICAgICByZXR1
cm4gIiVzLyVzLiVzIiAlIChkaXJlY3RvcnksIG5hbWUsIGV4dGVuc2lvbikKIAogICAgIGRlZiBj
cmVhdGVfemlwKHNlbGYsIHppcF9wYXRoLCBzb3VyY2VfcGF0aCk6CiAgICAgICAgIHJldHVybiBv
YmplY3QoKSAgIyBTb21ldGhpbmcgdGhhdCBpcyBub3QgTm9uZQorCisgICAgZGVmIHdlYmtpdF9i
YXNlX2RpcihzZWxmKToKKyAgICAgICAgcmV0dXJuICcvbW9jay1jaGVja291dCcKKworICAgIGRl
ZiBwYXRoX2Zyb21fd2Via2l0X2Jhc2Uoc2VsZiwgKmNvbXBzKToKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLndlYmtpdF9iYXNlX2RpcigpLCAqY29tcHMpCisKKyAg
ICBkZWYgc2NyaXB0X3BhdGgoc2VsZiwgc2NyaXB0X25hbWUpOgorICAgICAgICByZXR1cm4gIlRv
b2xzL1NjcmlwdHMvIiArIHNjcmlwdF9uYW1lCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZV91bml0dGVzdC5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNDkwOTRhYzYzNmZmY2Y2MGExZDUzMzRlYzUzZDg2MGY5NTQ0
MzBhOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlX3VuaXR0ZXN0LnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0j
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB1bml0
dGVzdAotCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9y
dCBNb2NrRmlsZVN5c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1
cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS53b3Jr
c3BhY2UgaW1wb3J0IFdvcmtzcGFjZQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1
dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCi0KLQotY2xhc3MgV29ya3NwYWNlVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgdGVzdF9maW5kX3VudXNlZF9maWxlbmFtZShz
ZWxmKToKLSAgICAgICAgZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKHsKLSAgICAgICAgICAg
ICJkaXIvZm9vLmpwZyI6ICIiLAotICAgICAgICAgICAgImRpci9mb28tMS5qcGciOiAiIiwKLSAg
ICAgICAgICAgICJkaXIvZm9vLTIuanBnIjogIiIsCi0gICAgICAgIH0pCi0gICAgICAgIHdvcmtz
cGFjZSA9IFdvcmtzcGFjZShmaWxlc3lzdGVtLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHdvcmtzcGFjZS5maW5kX3VudXNlZF9maWxlbmFtZSgiYmFyIiwgImJhciIsICJiYXIiKSwg
ImJhci9iYXIuYmFyIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3b3Jrc3BhY2UuZmluZF91
bnVzZWRfZmlsZW5hbWUoImRpciIsICJmb28iLCAianBnIiwgc2VhcmNoX2xpbWl0PTEpLCBOb25l
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdvcmtzcGFjZS5maW5kX3VudXNlZF9maWxlbmFt
ZSgiZGlyIiwgImZvbyIsICJqcGciLCBzZWFyY2hfbGltaXQ9MiksIE5vbmUpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwod29ya3NwYWNlLmZpbmRfdW51c2VkX2ZpbGVuYW1lKCJkaXIiLCAiZm9v
IiwgImpwZyIpLCAiZGlyL2Zvby0zLmpwZyIpCi0KLSAgICBkZWYgdGVzdF9jcmVhdGVfemlwKHNl
bGYpOgotICAgICAgICB3b3Jrc3BhY2UgPSBXb3Jrc3BhY2UoTm9uZSwgTW9ja0V4ZWN1dGl2ZShz
aG91bGRfbG9nPVRydWUpKQotICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSyBydW5fY29t
bWFuZDogWyd6aXAnLCAnLTknLCAnLXInLCAnL3ppcC9wYXRoJywgJy4nXSwgY3dkPS9zb3VyY2Uv
cGF0aFxuIgotICAgICAgICBjbGFzcyBNb2NrWmlwRmlsZShvYmplY3QpOgotICAgICAgICAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgotICAgICAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUg
PSBwYXRoCi0gICAgICAgIGFyY2hpdmUgPSBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMo
c2VsZiwgd29ya3NwYWNlLmNyZWF0ZV96aXAsIFsiL3ppcC9wYXRoIiwgIi9zb3VyY2UvcGF0aCIs
IE1vY2taaXBGaWxlXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChhcmNoaXZlLmZpbGVuYW1lLCAiL3ppcC9wYXRoIikKLQotICAgIGRl
ZiB0ZXN0X2NyZWF0ZV96aXBfZXhjZXB0aW9uKHNlbGYpOgotICAgICAgICB3b3Jrc3BhY2UgPSBX
b3Jrc3BhY2UoTm9uZSwgTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUsIHNob3VsZF90aHJv
dz1UcnVlKSkKLSAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0sgcnVuX2NvbW1hbmQ6IFsn
emlwJywgJy05JywgJy1yJywgJy96aXAvcGF0aCcsICcuJ10sIGN3ZD0vc291cmNlL3BhdGhcbiIK
LSAgICAgICAgY2xhc3MgTW9ja1ppcEZpbGUob2JqZWN0KToKLSAgICAgICAgICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwYXRoKToKLSAgICAgICAgICAgICAgICBzZWxmLmZpbGVuYW1lID0gcGF0aAot
ICAgICAgICBhcmNoaXZlID0gT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHdv
cmtzcGFjZS5jcmVhdGVfemlwLCBbIi96aXAvcGF0aCIsICIvc291cmNlL3BhdGgiLCBNb2NrWmlw
RmlsZV0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYXJjaGl2ZSwgTm9uZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCAwODRhZTE5MTBiMTdlYWUxZTA1Yzk5OTk2OTM2
ZTQ0MTE5YTNkYWJmLi45YzkwMzliOThiMTdkMjc1ODQ1ZTljNTJjZDcwZGJiNDVmNGQxNGQ5IDEw
MDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
CkBAIC01MCw2ICs1MCw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKIAogZnJvbSB3ZWJraXRweS5j
b21tb24gaW1wb3J0IGZpbmRfZmlsZXMKIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCByZWFk
X2NoZWNrc3VtX2Zyb21fcG5nCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dCBpbXBvcnQg
Q2hlY2tvdXQKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgpAQCAtMTEwLDcgKzExMSw4
IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAg
ICBzZWxmLl9leGVjdXRpdmUgPSBob3N0LmV4ZWN1dGl2ZQogICAgICAgICBzZWxmLl9maWxlc3lz
dGVtID0gaG9zdC5maWxlc3lzdGVtCi0gICAgICAgIHNlbGYuX2NvbmZpZyA9IGNvbmZpZyBvciBw
b3J0X2NvbmZpZy5Db25maWcoc2VsZi5fZXhlY3V0aXZlLCBzZWxmLl9maWxlc3lzdGVtLCBzZWxm
LnBvcnRfbmFtZSkKKyAgICAgICAgc2VsZi5fd2Via2l0X2Jhc2VfZGlyID0gTm9uZQorICAgICAg
ICBzZWxmLl9jb25maWcgPSBjb25maWcgb3IgcG9ydF9jb25maWcuQ29uZmlnKHNlbGYuaG9zdCwg
c2VsZi5wb3J0X25hbWUpCiAKICAgICAgICAgc2VsZi5faGVscGVyID0gTm9uZQogICAgICAgICBz
ZWxmLl9odHRwX3NlcnZlciA9IE5vbmUKQEAgLTY5Miw5ICs2OTQsNiBAQCBjbGFzcyBQb3J0KG9i
amVjdCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdG9wIG9m
IHRoZSBQZXJmb3JtYW5jZVRlc3RzIGRpcmVjdG9yeS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYu
cGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdQZXJmb3JtYW5jZVRlc3RzJykKIAotICAgIGRlZiB3ZWJr
aXRfYmFzZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0aChz
ZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnLicpKQotCiAgICAgZGVmIHNraXBwZWRfbGF5b3V0
X3Rlc3RzKHNlbGYsIHRlc3RfbGlzdCk6CiAgICAgICAgICIiIlJldHVybnMgdGVzdHMgc2tpcHBl
ZCBvdXRzaWRlIG9mIHRoZSBUZXN0RXhwZWN0YXRpb25zIGZpbGVzLiIiIgogICAgICAgICByZXR1
cm4gc2V0KHNlbGYuX3Rlc3RzX2Zvcl9vdGhlcl9wbGF0Zm9ybXMoKSkudW5pb24oc2VsZi5fc2tp
cHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXModGVzdF9saXN0KSkKQEAgLTc2NSw5
ICs3NjQsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9vcHRp
b25zLmVuc3VyZV92YWx1ZShuYW1lLCBkZWZhdWx0X3ZhbHVlKQogCiAgICAgZGVmIHBhdGhfZnJv
bV93ZWJraXRfYmFzZShzZWxmLCAqY29tcHMpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBmdWxs
IHBhdGggdG8gcGF0aCBtYWRlIGJ5IGpvaW5pbmcgdGhlIHRvcCBvZiB0aGUKLSAgICAgICAgV2Vi
S2l0IHNvdXJjZSB0cmVlIGFuZCB0aGUgbGlzdCBvZiBwYXRoIGNvbXBvbmVudHMgaW4gfCpjb21w
c3wuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9jb25maWcucGF0aF9mcm9tX3dlYmtpdF9iYXNl
KCpjb21wcykKKyAgICAgICAgcmV0dXJuIHNlbGYuaG9zdC53b3Jrc3BhY2UucGF0aF9mcm9tX3dl
YmtpdF9iYXNlKCpjb21wcykKIAogICAgIEBtZW1vaXplZAogICAgIGRlZiBwYXRoX3RvX3Rlc3Rf
ZXhwZWN0YXRpb25zX2ZpbGUoc2VsZik6CkBAIC0xMzczLDEyICsxMzcwLDEyIEBAIGNsYXNzIFBv
cnQob2JqZWN0KToKICAgICAgICAgcmV0dXJuIGNvbmZpZ19hcmdzCiAKICAgICBkZWYgX3J1bl9z
Y3JpcHQoc2VsZiwgc2NyaXB0X25hbWUsIGFyZ3M9Tm9uZSwgaW5jbHVkZV9jb25maWd1cmF0aW9u
X2FyZ3VtZW50cz1UcnVlLCBkZWNvZGVfb3V0cHV0PVRydWUsIGVudj1Ob25lKToKLSAgICAgICAg
cnVuX3NjcmlwdF9jb21tYW5kID0gW3NlbGYuX2NvbmZpZy5zY3JpcHRfcGF0aChzY3JpcHRfbmFt
ZSldCisgICAgICAgIHJ1bl9zY3JpcHRfY29tbWFuZCA9IFtzZWxmLmhvc3Qud29ya3NwYWNlLnNj
cmlwdF9wYXRoKHNjcmlwdF9uYW1lKV0KICAgICAgICAgaWYgaW5jbHVkZV9jb25maWd1cmF0aW9u
X2FyZ3VtZW50czoKICAgICAgICAgICAgIHJ1bl9zY3JpcHRfY29tbWFuZC5leHRlbmQoc2VsZi5f
YXJndW1lbnRzX2Zvcl9jb25maWd1cmF0aW9uKCkpCiAgICAgICAgIGlmIGFyZ3M6CiAgICAgICAg
ICAgICBydW5fc2NyaXB0X2NvbW1hbmQuZXh0ZW5kKGFyZ3MpCi0gICAgICAgIG91dHB1dCA9IHNl
bGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChydW5fc2NyaXB0X2NvbW1hbmQsIGN3ZD1zZWxmLl9j
b25maWcud2Via2l0X2Jhc2VfZGlyKCksIGRlY29kZV9vdXRwdXQ9ZGVjb2RlX291dHB1dCwgZW52
PWVudikKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKHJ1bl9z
Y3JpcHRfY29tbWFuZCwgY3dkPXNlbGYuaG9zdC53b3Jrc3BhY2Uud2Via2l0X2Jhc2VfZGlyKCks
IGRlY29kZV9vdXRwdXQ9ZGVjb2RlX291dHB1dCwgZW52PWVudikKICAgICAgICAgX2xvZy5kZWJ1
ZygnT3V0cHV0IG9mICVzOlxuJXMnICUgKHJ1bl9zY3JpcHRfY29tbWFuZCwgb3V0cHV0KSkKICAg
ICAgICAgcmV0dXJuIG91dHB1dAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weQppbmRleCA3YzM3ZmQxN2Ey
ZTZlNTkwODNjODdiZjliY2M4N2YxYjZiMmYyNWFkLi41OWY3ZWE3YmMwMDJhNGJiMTMyNTU4NzU5
OTdkZTkxMGU2YWEyODQ2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkKQEAgLTU5LDkgKzU5LDkgQEAg
Y2xhc3MgQ2hyb21pdW1MaW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKIAogICAgIEBj
bGFzc21ldGhvZAogICAgIGRlZiBfZGV0ZXJtaW5lX2RyaXZlcl9wYXRoX3N0YXRpY2FsbHkoY2xz
LCBob3N0LCBvcHRpb25zKToKLSAgICAgICAgY29uZmlnX29iamVjdCA9IGNvbmZpZy5Db25maWco
aG9zdC5leGVjdXRpdmUsIGhvc3QuZmlsZXN5c3RlbSkKKyAgICAgICAgY29uZmlnX29iamVjdCA9
IGNvbmZpZy5Db25maWcoaG9zdCkKICAgICAgICAgYnVpbGRfZGlyZWN0b3J5ID0gZ2V0YXR0cihv
cHRpb25zLCAnYnVpbGRfZGlyZWN0b3J5JywgTm9uZSkKLSAgICAgICAgd2Via2l0X2Jhc2UgPSBj
b25maWdfb2JqZWN0LnBhdGhfZnJvbV93ZWJraXRfYmFzZSgpCisgICAgICAgIHdlYmtpdF9iYXNl
ID0gaG9zdC53b3Jrc3BhY2UucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCkKICAgICAgICAgY2hyb21p
dW1fYmFzZSA9IGNscy5fY2hyb21pdW1fYmFzZV9kaXIoaG9zdC5maWxlc3lzdGVtKQogICAgICAg
ICBpZiBoYXNhdHRyKG9wdGlvbnMsICdjb25maWd1cmF0aW9uJykgYW5kIG9wdGlvbnMuY29uZmln
dXJhdGlvbjoKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBvcHRpb25zLmNvbmZpZ3VyYXRp
b24KQEAgLTcwLDExICs3MCwxMSBAQCBjbGFzcyBDaHJvbWl1bUxpbnV4UG9ydChjaHJvbWl1bS5D
aHJvbWl1bVBvcnQpOgogICAgICAgICByZXR1cm4gY2xzLl9zdGF0aWNfYnVpbGRfcGF0aChob3N0
LmZpbGVzeXN0ZW0sIGJ1aWxkX2RpcmVjdG9yeSwgY2hyb21pdW1fYmFzZSwgd2Via2l0X2Jhc2Us
IGNvbmZpZ3VyYXRpb24sIFsnRHVtcFJlbmRlclRyZWUnXSkKIAogICAgIEBzdGF0aWNtZXRob2QK
LSAgICBkZWYgX2RldGVybWluZV9hcmNoaXRlY3R1cmUoZmlsZXN5c3RlbSwgZXhlY3V0aXZlLCBk
cml2ZXJfcGF0aCk6CisgICAgZGVmIF9kZXRlcm1pbmVfYXJjaGl0ZWN0dXJlKGhvc3QsIGRyaXZl
cl9wYXRoKToKICAgICAgICAgZmlsZV9vdXRwdXQgPSAnJwotICAgICAgICBpZiBmaWxlc3lzdGVt
LmV4aXN0cyhkcml2ZXJfcGF0aCk6CisgICAgICAgIGlmIGhvc3QuZmlsZXN5c3RlbS5leGlzdHMo
ZHJpdmVyX3BhdGgpOgogICAgICAgICAgICAgIyBUaGUgLS1kZXJlZmVyZW5jZSBmbGFnIHRlbGxz
IGZpbGUgdG8gZm9sbG93IHN5bWxpbmtzCi0gICAgICAgICAgICBmaWxlX291dHB1dCA9IGV4ZWN1
dGl2ZS5ydW5fY29tbWFuZChbJ2ZpbGUnLCAnLS1kZXJlZmVyZW5jZScsIGRyaXZlcl9wYXRoXSwg
cmV0dXJuX3N0ZGVycj1UcnVlKQorICAgICAgICAgICAgZmlsZV9vdXRwdXQgPSBob3N0LmV4ZWN1
dGl2ZS5ydW5fY29tbWFuZChbJ2ZpbGUnLCAnLS1kZXJlZmVyZW5jZScsIGRyaXZlcl9wYXRoXSwg
cmV0dXJuX3N0ZGVycj1UcnVlKQogCiAgICAgICAgIGlmICdFTEYgMzItYml0IExTQiBleGVjdXRh
YmxlJyBpbiBmaWxlX291dHB1dDoKICAgICAgICAgICAgIHJldHVybiAneDg2JwpAQCAtOTIsNyAr
OTIsNyBAQCBjbGFzcyBDaHJvbWl1bUxpbnV4UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgog
ICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBkZXRlcm1pbmVfZnVsbF9wb3J0X25hbWUoY2xzLCBo
b3N0LCBvcHRpb25zLCBwb3J0X25hbWUpOgogICAgICAgICBpZiBwb3J0X25hbWUuZW5kc3dpdGgo
Jy1saW51eCcpOgotICAgICAgICAgICAgcmV0dXJuIHBvcnRfbmFtZSArICctJyArIGNscy5fZGV0
ZXJtaW5lX2FyY2hpdGVjdHVyZShob3N0LmZpbGVzeXN0ZW0sIGhvc3QuZXhlY3V0aXZlLCBjbHMu
X2RldGVybWluZV9kcml2ZXJfcGF0aF9zdGF0aWNhbGx5KGhvc3QsIG9wdGlvbnMpKQorICAgICAg
ICAgICAgcmV0dXJuIHBvcnRfbmFtZSArICctJyArIGNscy5fZGV0ZXJtaW5lX2FyY2hpdGVjdHVy
ZShob3N0LCBjbHMuX2RldGVybWluZV9kcml2ZXJfcGF0aF9zdGF0aWNhbGx5KGhvc3QsIG9wdGlv
bnMpKQogICAgICAgICByZXR1cm4gcG9ydF9uYW1lCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
aG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncyk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnLnB5CmluZGV4IGRkOGYzMzFhZjg3ZWZkZWMwMjYw
NDc4OTc2YjlkM2ExYzdjNWE1YTkuLjc3MDkzOGQwNGExNWM2YzhlMjEwOGQ4YWE1NzkxYThlZWQy
MjFlNTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY29uZmlnLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY29uZmlnLnB5CkBAIC0yOSwxMSArMjksMTAgQEAKIAogIiIiV3JhcHBlciBvYmplY3RzIGZv
ciBXZWJLaXQtc3BlY2lmaWMgdXRpbGl0eSByb3V0aW5lcy4iIiIKIAotIyBGSVhNRTogVGhpcyBm
aWxlIG5lZWRzIHRvIGJlIHVuaWZpZWQgd2l0aCBjb21tb24vY2hlY2tvdXQvc2NtLnB5IGFuZAot
IyBjb21tb24vY29uZmlnL3BvcnRzLnB5IC4KKyMgRklYTUU6IFRoaXMgZmlsZSBuZWVkcyB0byBi
ZSB1bmlmaWVkIHdpdGggY29tbW9uL2NvbmZpZy9wb3J0cy5weSAuCiAKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbSBpbXBvcnQgbG9ndXRpbHMKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bSBpbXBvcnQgZXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZl
IGltcG9ydCBTY3JpcHRFcnJvcgogCiAKIF9sb2cgPSBsb2d1dGlscy5nZXRfbG9nZ2VyKF9fZmls
ZV9fKQpAQCAtNjEsMTEgKzYwLDExIEBAIGNsYXNzIENvbmZpZyhvYmplY3QpOgogICAgICAgICAi
UmVsZWFzZSI6ICItLXJlbGVhc2UiLAogICAgIH0KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBl
eGVjdXRpdmUsIGZpbGVzeXN0ZW0sIHBvcnRfaW1wbGVtZW50YXRpb249Tm9uZSk6Ci0gICAgICAg
IHNlbGYuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQotICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0g
ZmlsZXN5c3RlbQotICAgICAgICBzZWxmLl93ZWJraXRfYmFzZV9kaXIgPSBOb25lCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfaW1wbGVtZW50YXRpb249Tm9uZSk6CisgICAgICAg
IHNlbGYuX2hvc3QgPSBob3N0CisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBob3N0LmZpbGVz
eXN0ZW0KICAgICAgICAgc2VsZi5fZGVmYXVsdF9jb25maWd1cmF0aW9uID0gTm9uZQorICAgICAg
ICBzZWxmLl93ZWJraXRfYmFzZV9kaXIgPSBOb25lCiAgICAgICAgIHNlbGYuX2J1aWxkX2RpcmVj
dG9yaWVzID0ge30KICAgICAgICAgc2VsZi5fcG9ydF9pbXBsZW1lbnRhdGlvbiA9IHBvcnRfaW1w
bGVtZW50YXRpb24KIApAQCAtODEsOCArODAsOCBAQCBjbGFzcyBDb25maWcob2JqZWN0KToKICAg
ICAgICAgICAgIGZsYWdzLmFwcGVuZCgnLS0nICsgc2VsZi5fcG9ydF9pbXBsZW1lbnRhdGlvbikK
IAogICAgICAgICBpZiBub3Qgc2VsZi5fYnVpbGRfZGlyZWN0b3JpZXMuZ2V0KGNvbmZpZ3VyYXRp
b24pOgotICAgICAgICAgICAgYXJncyA9IFsicGVybCIsIHNlbGYuc2NyaXB0X3BhdGgoIndlYmtp
dC1idWlsZC1kaXJlY3RvcnkiKV0gKyBmbGFncwotICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5f
ZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFyZ3MsIGN3ZD1zZWxmLndlYmtpdF9iYXNlX2RpcigpLCBy
ZXR1cm5fc3RkZXJyPUZhbHNlKS5yc3RyaXAoKQorICAgICAgICAgICAgYXJncyA9IFsicGVybCIs
IHNlbGYuX2hvc3Qud29ya3NwYWNlLnNjcmlwdF9wYXRoKCJ3ZWJraXQtYnVpbGQtZGlyZWN0b3J5
IildICsgZmxhZ3MKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuX2hvc3QuZXhlY3V0aXZlLnJ1
bl9jb21tYW5kKGFyZ3MsIGN3ZD1zZWxmLl9ob3N0LndvcmtzcGFjZS53ZWJraXRfYmFzZV9kaXIo
KSwgcmV0dXJuX3N0ZGVycj1GYWxzZSkucnN0cmlwKCkKICAgICAgICAgICAgIHBhcnRzID0gb3V0
cHV0LnNwbGl0KCJcbiIpCiAgICAgICAgICAgICBzZWxmLl9idWlsZF9kaXJlY3Rvcmllc1tjb25m
aWd1cmF0aW9uXSA9IHBhcnRzWzBdCiAKQEAgLTExMSwzMiArMTEwLDYgQEAgY2xhc3MgQ29uZmln
KG9iamVjdCk6CiAgICAgICAgICAgICBfbG9nLndhcm4oIlNjcmlwdHMgbWF5IGZhaWwuICBTZWUg
J3NldC13ZWJraXQtY29uZmlndXJhdGlvbiAtLWhlbHAnLiIpCiAgICAgICAgIHJldHVybiBzZWxm
Ll9kZWZhdWx0X2NvbmZpZ3VyYXRpb24KIAotICAgIGRlZiBwYXRoX2Zyb21fd2Via2l0X2Jhc2Uo
c2VsZiwgKmNvbXBzKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
LndlYmtpdF9iYXNlX2RpcigpLCAqY29tcHMpCi0KLSAgICAjIEZJWE1FOiBXZSBzaG91bGQgb25s
eSBoYXZlIG9uZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGxvZ2ljLAotICAgICMgaWYgc2NtLmZp
bmRfY2hlY2tvdXRfcm9vdCgpIGlzIGJyb2tlbiBmb3IgQ2hyb21pdW0sIHdlIHNob3VsZCBmaXgg
KG9yIGF0IGxlYXN0IHdyYXApIGl0IQotICAgIGRlZiB3ZWJraXRfYmFzZV9kaXIoc2VsZik6Ci0g
ICAgICAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHRvcCBvZiB0aGUgV2Vi
S2l0IHRyZWUuCi0KLSAgICAgICAgUmFpc2VzIGFuIEFzc2VydGlvbkVycm9yIGlmIHRoZSB0b3Ag
ZGlyIGNhbid0IGJlIGRldGVybWluZWQuIiIiCi0gICAgICAgICMgTm90ZTogdGhpcyBjb2RlIHNv
bWV3aGF0IGR1cGxpY2F0ZXMgdGhlIGNvZGUgaW4KLSAgICAgICAgIyBzY20uZmluZF9jaGVja291
dF9yb290KCkuIEhvd2V2ZXIsIHRoYXQgY29kZSBvbmx5IHdvcmtzIGlmIHRoZSB0b3AKLSAgICAg
ICAgIyBvZiB0aGUgU0NNIHJlcG9zaXRvcnkgYWxzbyBtYXRjaGVzIHRoZSB0b3Agb2YgdGhlIFdl
YktpdCB0cmVlLiBUaGUKLSAgICAgICAgIyBDaHJvbWl1bSBwb3J0cywgZm9yIGV4YW1wbGUsIG9u
bHkgY2hlY2sgb3V0IHN1YmRpcmVjdG9yaWVzIGxpa2UKLSAgICAgICAgIyBUb29scy9TY3JpcHRz
LCBhbmQgc28gd2Ugc3RpbGwgaGF2ZSB0byBkbyBhZGRpdGlvbmFsIHdvcmsKLSAgICAgICAgIyB0
byBmaW5kIHRoZSB0b3Agb2YgdGhlIHRyZWUuCi0gICAgICAgICMKLSAgICAgICAgIyBUaGlzIGNv
ZGUgd2lsbCBhbHNvIHdvcmsgaWYgdGhlcmUgaXMgbm8gU0NNIHN5c3RlbSBhdCBhbGwuCi0gICAg
ICAgIGlmIG5vdCBzZWxmLl93ZWJraXRfYmFzZV9kaXI6Ci0gICAgICAgICAgICBjb25maWdfbW9k
dWxlX3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLnBhdGhfdG9fbW9kdWxlKHNlbGYuX19tb2R1bGVf
XykKLSAgICAgICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlX2RpciA9IGNvbmZpZ19tb2R1bGVfcGF0
aFswOmNvbmZpZ19tb2R1bGVfcGF0aC5maW5kKCdUb29scycpIC0gMV0KLSAgICAgICAgcmV0dXJu
IHNlbGYuX3dlYmtpdF9iYXNlX2RpcgotCi0gICAgZGVmIHNjcmlwdF9wYXRoKHNlbGYsIHNjcmlw
dF9uYW1lKToKLSAgICAgICAgIyBUaGlzIGlzIGludGVudGlvbmFsbHkgcmVsYXRpdmUuIENhbGxl
cnMgc2hvdWxkIHBhc3MgdGhlIGNoZWNrb3V0X3Jvb3Qvd2Via2l0X2Jhc2VfZGlyIHRvIHJ1bl9j
b21tYW5kIGFzIHRoZSBjd2QuCi0gICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4o
IlRvb2xzIiwgIlNjcmlwdHMiLCBzY3JpcHRfbmFtZSkKLQogICAgIGRlZiBfZGV0ZXJtaW5lX2Nv
bmZpZ3VyYXRpb24oc2VsZik6CiAgICAgICAgICMgVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBpbiB3
ZWJraXRkaXJzLnBtOmRldGVybWluZUNvbmZpZ3VyYXRpb24oKS4KICAgICAgICAgIwpAQCAtMTYy
LDcgKzEzNSw3IEBAIGNsYXNzIENvbmZpZyhvYmplY3QpOgogICAgICAgICAgICAgY29uZmlndXJh
dGlvbl9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuYnVpbGRfZGlyZWN0b3J5KE5v
bmUpLCAiQ29uZmlndXJhdGlvbiIpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3Rl
bS5leGlzdHMoY29uZmlndXJhdGlvbl9wYXRoKToKICAgICAgICAgICAgICAgICByZXR1cm4gTm9u
ZQotICAgICAgICBleGNlcHQgKE9TRXJyb3IsIGV4ZWN1dGl2ZS5TY3JpcHRFcnJvcik6CisgICAg
ICAgIGV4Y2VwdCAoT1NFcnJvciwgU2NyaXB0RXJyb3IpOgogICAgICAgICAgICAgcmV0dXJuIE5v
bmUKIAogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShjb25m
aWd1cmF0aW9uX3BhdGgpLnJzdHJpcCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ19tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfbW9jay5weQppbmRleCA1NDc2ZTRiYWIyNmYx
ZWVjOGIzYWRhZmE4Y2Y3YWU5N2IxMmFiMDZjLi5kZDIxMTlkZTIyNGI4YjIyOWU4ZTQwYWMzOWZm
Nzg3NDgxOTgyMWRjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2NvbmZpZ19tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY29uZmlnX21vY2sucHkKQEAgLTU0LDE0ICs1NCwzIEBAIGNsYXNzIE1v
Y2tDb25maWcob2JqZWN0KToKIAogICAgIGRlZiBkZWZhdWx0X2NvbmZpZ3VyYXRpb24oc2VsZik6
CiAgICAgICAgIHJldHVybiBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRpb24KLQotICAgIGRlZiBw
YXRoX2Zyb21fd2Via2l0X2Jhc2Uoc2VsZiwgKmNvbXBzKToKLSAgICAgICAgIyBGSVhNRTogVGhp
cyBjb3VsZCB1c2Ugc2VsZi5fZmlsZXN5c3RlbS5qb2luLCBidXQgdGhhdCBkb2Vzbid0IGhhbmRs
ZSBlbXB0eSBsaXN0cy4KLSAgICAgICAgcmV0dXJuIHNlbGYud2Via2l0X2Jhc2VfZGlyKCkgKyAi
LyIgKyAiLyIuam9pbihsaXN0KGNvbXBzKSkKLQotICAgIGRlZiBzY3JpcHRfcGF0aChzZWxmLCBz
Y3JpcHRfbmFtZSk6Ci0gICAgICAgICMgVGhpcyBpcyBpbnRlbnRpb25hbGx5IHJlbGF0aXZlLiBD
YWxsZXJzIHNob3VsZCBwYXNzIHRoZSBjaGVja291dF9yb290L3dlYmtpdF9iYXNlX2RpciB0byBy
dW5fY29tbWFuZCBhcyB0aGUgY3dkLgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5q
b2luKCJUb29scyIsICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpCi0KLSAgICBkZWYgd2Via2l0X2Jh
c2VfZGlyKHNlbGYpOgotICAgICAgICByZXR1cm4gIi9tb2NrLWNoZWNrb3V0IgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfc3RhbmRh
bG9uZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmln
X3N0YW5kYWxvbmUucHkKaW5kZXggNWIwNDgzMTQ1MjBjODk5NDU0Y2ZkZTE2ZTZjOTMzMmUyZmUy
NTkzZi4uNWM3MGM3NzZkZTQyYjczYzljZmRiZWMxNjlhMmZlYTNjMWE1Y2I5OCAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfc3RhbmRh
bG9uZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nv
bmZpZ19zdGFuZGFsb25lLnB5CkBAIC00OCw2ICs0OCw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1w
b3J0IGV4ZWN1dGl2ZV9tb2NrCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGZp
bGVzeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9t
b2NrCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHN5c3RlbWhvc3RfbW9jawog
CiBpbXBvcnQgY29uZmlnCiAKQEAgLTYzLDcgKzY0LDcgQEAgZGVmIG1haW4oYXJndj1Ob25lKToK
ICAgICAgICAgZSA9IGV4ZWN1dGl2ZS5FeGVjdXRpdmUoKQogICAgICAgICBmcyA9IGZpbGVzeXN0
ZW0uRmlsZVN5c3RlbSgpCiAKLSAgICBjID0gY29uZmlnLkNvbmZpZyhlLCBmcykKKyAgICBjID0g
Y29uZmlnLkNvbmZpZyhob3N0PXN5c3RlbWhvc3RfbW9jay5Nb2NrU3lzdGVtSG9zdChleGVjdXRp
dmU9ZSwgZmlsZXN5c3RlbT1mcykpCiAgICAgcHJpbnQgYy5kZWZhdWx0X2NvbmZpZ3VyYXRpb24o
KQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfdW5pdHRlc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQppbmRl
eCA5NmJhNWZmNTgyN2EyNDA5YmQyMTc0OTY2MTQ2NzgxNmU4MDQwODJjLi40ZmU4NjdlNmJhYWEy
ZTBjZjY5ZTg4MWNkZTg5MmZiYWU3Njg0NWM3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQpAQCAt
MzAsOSArMzAsMTAgQEAgaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAot
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBT
Y3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGlt
cG9ydCBNb2NrRXhlY3V0aXZlLCBNb2NrRXhlY3V0aXZlMgotZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0Citmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAorZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZTIK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tG
aWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBv
cnQgT3V0cHV0Q2FwdHVyZQogCkBAIC00Nyw5ICs0OCwxMCBAQCBjbGFzcyBDb25maWdUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgY29uZmlnLmNsZWFyX2NhY2hlZF9jb25maWd1cmF0
aW9uKCkKIAogICAgIGRlZiBtYWtlX2NvbmZpZyhzZWxmLCBvdXRwdXQ9JycsIGZpbGVzPU5vbmUs
IGV4aXRfY29kZT0wLCBleGNlcHRpb249Tm9uZSwgcnVuX2NvbW1hbmRfZm49Tm9uZSwgc3RkZXJy
PScnLCBwb3J0X2ltcGxlbWVudGF0aW9uPU5vbmUpOgotICAgICAgICBlID0gTW9ja0V4ZWN1dGl2
ZTIob3V0cHV0PW91dHB1dCwgZXhpdF9jb2RlPWV4aXRfY29kZSwgZXhjZXB0aW9uPWV4Y2VwdGlv
biwgcnVuX2NvbW1hbmRfZm49cnVuX2NvbW1hbmRfZm4sIHN0ZGVycj1zdGRlcnIpCi0gICAgICAg
IGZzID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCi0gICAgICAgIHJldHVybiBjb25maWcuQ29uZmln
KGUsIGZzLCBwb3J0X2ltcGxlbWVudGF0aW9uPXBvcnRfaW1wbGVtZW50YXRpb24pCisgICAgICAg
IGZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbShmaWxlcykKKyAgICAgICAgaG9zdCA9IE1vY2tT
eXN0ZW1Ib3N0KGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKKyAgICAgICAgaG9zdC5leGVjdXRpdmUg
PSBNb2NrRXhlY3V0aXZlMihvdXRwdXQ9b3V0cHV0LCBleGl0X2NvZGU9ZXhpdF9jb2RlLCBleGNl
cHRpb249ZXhjZXB0aW9uLCBydW5fY29tbWFuZF9mbj1ydW5fY29tbWFuZF9mbiwgc3RkZXJyPXN0
ZGVycikKKyAgICAgICAgcmV0dXJuIGNvbmZpZy5Db25maWcoaG9zdCwgcG9ydF9pbXBsZW1lbnRh
dGlvbj1wb3J0X2ltcGxlbWVudGF0aW9uKQogCiAgICAgZGVmIGFzc2VydF9jb25maWd1cmF0aW9u
KHNlbGYsIGNvbnRlbnRzLCBleHBlY3RlZCk6CiAgICAgICAgICMgVGhpcyB0ZXN0cyB0aGF0IGEg
Y29uZmlndXJhdGlvbiBmaWxlIGNvbnRhaW5pbmcKQEAgLTEyOCwxNyArMTMwLDE1IEBAIGNsYXNz
IENvbmZpZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAjIGNhY2hpbmcgLyByZXNl
dCBidWdzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MzYw
CiAgICAgICAgICMgZm9yIHRoZSBtb3RpdmF0aW9uLiBXZSBjYW4gcmVtb3ZlIHRoaXMgdGVzdCB3
aGVuIHdlIHJlbW92ZSB0aGUKICAgICAgICAgIyBnbG9iYWwgY29uZmlndXJhdGlvbiBjYWNoZSBp
biBjb25maWcucHkuCi0gICAgICAgIGUgPSBFeGVjdXRpdmUoKQotICAgICAgICBmcyA9IEZpbGVT
eXN0ZW0oKQotICAgICAgICBjID0gY29uZmlnLkNvbmZpZyhlLCBmcykKLSAgICAgICAgc2NyaXB0
ID0gYy5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ1Rvb2xzJywgJ1NjcmlwdHMnLCAnd2Via2l0cHkn
LCAnbGF5b3V0X3Rlc3RzJywgJ3BvcnQnLCAnY29uZmlnX3N0YW5kYWxvbmUucHknKQorICAgICAg
ICBob3N0ID0gU3lzdGVtSG9zdCgpCisgICAgICAgIGMgPSBjb25maWcuQ29uZmlnKGhvc3QpCisg
ICAgICAgIHNjcmlwdCA9IGhvc3Qud29ya3NwYWNlLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnVG9v
bHMnLCAnU2NyaXB0cycsICd3ZWJraXRweScsICdsYXlvdXRfdGVzdHMnLCAncG9ydCcsICdjb25m
aWdfc3RhbmRhbG9uZS5weScpCiAKICAgICAgICAgIyBOb3RlOiBkb24ndCB1c2UgJ1JlbGVhc2Un
IGhlcmUsIHNpbmNlIHRoYXQncyB0aGUgbm9ybWFsIGRlZmF1bHQuCiAgICAgICAgIGV4cGVjdGVk
ID0gJ0RlYnVnJwogCi0gICAgICAgICMgRklYTUU6IFdoeSBhcmUgd2UgcnVubmluZyBhIHB5dGhv
biBzdWJwcm9jZXNzIGhlcmU/PwogICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCBzY3Jp
cHQsICctLW1vY2snLCBleHBlY3RlZF0KLSAgICAgICAgYWN0dWFsID0gZS5ydW5fY29tbWFuZChh
cmdzKS5yc3RyaXAoKQorICAgICAgICBhY3R1YWwgPSBob3N0LmV4ZWN1dGl2ZS5ydW5fY29tbWFu
ZChhcmdzKS5yc3RyaXAoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0
ZWQpCiAKICAgICBkZWYgdGVzdF9kZWZhdWx0X2NvbmZpZ3VyYXRpb25fX25vX3Blcmwoc2VsZik6
CkBAIC0xNTcsMzIgKzE1Nyw2IEBAIGNsYXNzIENvbmZpZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICBhY3R1YWwgPSBjLmRlZmF1bHRfY29uZmlndXJhdGlvbigpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCAnUmVsZWFzZScpCiAKLSAgICBkZWYgdGVzdF9wYXRoX2Zy
b21fd2Via2l0X2Jhc2Uoc2VsZik6Ci0gICAgICAgIGMgPSBjb25maWcuQ29uZmlnKE1vY2tFeGVj
dXRpdmUoKSwgTW9ja0ZpbGVTeXN0ZW0oKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMucGF0
aF9mcm9tX3dlYmtpdF9iYXNlKCdmb28nKSkKLQotICAgIGRlZiB0ZXN0X3dlYmtpdF9iYXNlX2Rp
cihzZWxmKToKLSAgICAgICAgIyBGSVhNRTogV2UgdXNlIGEgcmVhbCBmaWxlc3lzdGVtIGhlcmUu
IFNob3VsZCB0aGlzIG1vdmUgdG8gYSBtb2NrZWQgb25lPwotICAgICAgICBleGVjdXRpdmUgPSBF
eGVjdXRpdmUoKQotICAgICAgICBmaWxlc3lzdGVtID0gRmlsZVN5c3RlbSgpCi0gICAgICAgIGMg
PSBjb25maWcuQ29uZmlnKGV4ZWN1dGl2ZSwgZmlsZXN5c3RlbSkKLSAgICAgICAgYmFzZV9kaXIg
PSBjLndlYmtpdF9iYXNlX2RpcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiYXNlX2RpcikK
LSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChiYXNlX2RpclstMV0sICcvJykKLQotICAgICAg
ICAjIEZJWE1FOiBPbmNlIHdlIHVzZSBhIE1vY2tGaWxlU3lzdGVtIGZvciB0aGlzIHRlc3Qgd2Ug
ZG9uJ3QgbmVlZCB0byBzYXZlIHRoZSBvcmlnX2N3ZC4KLSAgICAgICAgb3JpZ19jd2QgPSBmaWxl
c3lzdGVtLmdldGN3ZCgpCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAg
ICAgICAgICAgZmlsZXN5c3RlbS5jaGRpcihvcy5lbnZpcm9uWydVU0VSUFJPRklMRSddKQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgZmlsZXN5c3RlbS5jaGRpcihvcy5lbnZpcm9uWydIT01F
J10pCi0gICAgICAgIGMgPSBjb25maWcuQ29uZmlnKGV4ZWN1dGl2ZSwgZmlsZXN5c3RlbSkKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgYmFzZV9kaXJfMiA9IGMud2Via2l0X2Jhc2VfZGlyKCkK
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFzZV9kaXIsIGJhc2VfZGlyXzIpCi0gICAg
ICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmaWxlc3lzdGVtLmNoZGlyKG9yaWdfY3dkKQotCiAK
IGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CmluZGV4IDNkODIw
Mjc0ZWI2N2JjYzgyYzBlMmRiMTQ0NTUyMGQxMjEwMjUxMDYuLjQwMzYyMGQxY2MyMGNiZDRlNmQ5
MjNiOGY2M2YxY2ZmZjAwZWE3MzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CkBAIC03MSw3ICs3MSw3IEBAIGNsYXNzIEd0a1BvcnQoUG9y
dCwgUHVsc2VBdWRpb1Nhbml0aXplcik6CiAgICAgICAgIGVudmlyb25tZW50WydURVNUX1JVTk5F
Ul9JTkpFQ1RFRF9CVU5ETEVfRklMRU5BTUUnXSA9IHNlbGYuX2J1aWxkX3BhdGgoJ0xpYnJhcmll
cycsICdsaWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUubGEnKQogICAgICAgICBlbnZpcm9ubWVu
dFsnVEVTVF9SVU5ORVJfVEVTVF9QTFVHSU5fUEFUSCddID0gc2VsZi5fYnVpbGRfcGF0aCgnVGVz
dE5ldHNjYXBlUGx1Z2luJywgJy5saWJzJykKICAgICAgICAgZW52aXJvbm1lbnRbJ1dFQktJVF9J
TlNQRUNUT1JfUEFUSCddID0gc2VsZi5fYnVpbGRfcGF0aCgnUHJvZ3JhbXMnLCAncmVzb3VyY2Vz
JywgJ2luc3BlY3RvcicpCi0gICAgICAgIGVudmlyb25tZW50WydBVURJT19SRVNPVVJDRVNfUEFU
SCddID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX2NvbmZpZy53ZWJraXRfYmFzZV9kaXIo
KSwKKyAgICAgICAgZW52aXJvbm1lbnRbJ0FVRElPX1JFU09VUkNFU19QQVRIJ10gPSBzZWxmLl9m
aWxlc3lzdGVtLmpvaW4oc2VsZi5ob3N0LndvcmtzcGFjZS53ZWJraXRfYmFzZV9kaXIoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3JtJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F1
ZGlvJywgJ3Jlc291cmNlcycpCiAgICAgICAgIHNlbGYuX2NvcHlfdmFsdWVfZnJvbV9lbnZpcm9u
X2lmX3NldChlbnZpcm9ubWVudCwgJ1dFQktJVE9VVFBVVERJUicpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CmluZGV4IGU2ZmQ1YmQzYzk0NGVm
NzVhZTc1MjIxMDgzOTlkN2M3MTU0ODNkOTIuLjA1OTRmZDEzMjYzOWM5OTUwMDQ4MzMzMTY4YTA3
MDc2M2NkZmVmZjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbWFjLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvbWFjLnB5CkBAIC0xNjgsOCArMTY4LDggQEAgY2xhc3MgTWFjUG9ydChBcHBsZVBvcnQp
OgogICAgICAgICAjIFdlIGRvbid0IHVzZSBzZWxmLl9ydW5fc2NyaXB0KCkgYmVjYXVzZSB3ZSBk
b24ndCB3YW50IHRvIHdhaXQgZm9yIHRoZSBzY3JpcHQKICAgICAgICAgIyB0byBleGl0IGFuZCB3
ZSB3YW50IHRoZSBvdXRwdXQgdG8gc2hvdyB1cCBvbiBzdGRvdXQgaW4gY2FzZSB0aGVyZSBhcmUg
ZXJyb3JzCiAgICAgICAgICMgbGF1bmNoaW5nIHRoZSBicm93c2VyLgotICAgICAgICBzZWxmLl9l
eGVjdXRpdmUucG9wZW4oW3NlbGYuX2NvbmZpZy5zY3JpcHRfcGF0aCgncnVuLXNhZmFyaScpXSAr
IHNlbGYuX2FyZ3VtZW50c19mb3JfY29uZmlndXJhdGlvbigpICsgWyctLW5vLXNhdmVkLXN0YXRl
JywgJy1OU09wZW4nLCByZXN1bHRzX2ZpbGVuYW1lXSwKLSAgICAgICAgICAgIGN3ZD1zZWxmLl9j
b25maWcud2Via2l0X2Jhc2VfZGlyKCksIHN0ZG91dD1maWxlKG9zLmRldm51bGwpLCBzdGRlcnI9
ZmlsZShvcy5kZXZudWxsKSkKKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlLnBvcGVuKFtzZWxmLmhv
c3Qud29ya3NwYWNlLnNjcmlwdF9wYXRoKCdydW4tc2FmYXJpJyldICsgc2VsZi5fYXJndW1lbnRz
X2Zvcl9jb25maWd1cmF0aW9uKCkgKyBbJy0tbm8tc2F2ZWQtc3RhdGUnLCAnLU5TT3BlbicsIHJl
c3VsdHNfZmlsZW5hbWVdLAorICAgICAgICAgICAgY3dkPXNlbGYuaG9zdC53b3Jrc3BhY2Uud2Vi
a2l0X2Jhc2VfZGlyKCksIHN0ZG91dD1maWxlKG9zLmRldm51bGwpLCBzdGRlcnI9ZmlsZShvcy5k
ZXZudWxsKSkKIAogICAgICMgRklYTUU6IFRoZSBuZXh0IHR3byByb3V0aW5lcyB0dXJuIG9mZiB0
aGUgaHR0cCBsb2NraW5nIGluIG9yZGVyCiAgICAgIyB0byB3b3JrIGFyb3VuZCBmYWlsdXJlcyBv
biB0aGUgYm90cyBjYXVzZWQgd2hlbiB0aGUgc2xhdmUgcmVzdGFydHMuCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcHl0aG9uLnB5CmluZGV4IGY5ZWMxYzA5MTU4
NGE1ZmEwYzExNWIyNjk3Njg3M2FkYTIzNjg0MzUuLjNkNjQxODJjNzYyMzU1OTM5MzlmOGFkOWVl
OWU5ZGE3MWY5NTU0M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvcHl0aG9uLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvcHl0aG9uLnB5CkBAIC0yMiwxMSArMjIsMTAgQEAKIAogIiIiU3VwcG9ydHMgY2hlY2tp
bmcgV2ViS2l0IHN0eWxlIGluIFB5dGhvbiBmaWxlcy4iIiIKIAotaW1wb3J0IG9zCiBpbXBvcnQg
cmUKLWltcG9ydCBzeXMKIGZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCiAKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0CiBmcm9tIHdl
YmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZCBpbXBvcnQgcGVwOAogZnJvbSB3ZWJraXRw
eS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQucHlsaW50IGltcG9ydCBsaW50CiBmcm9tIHdlYmtp
dHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5weWxpbnQucmVwb3J0ZXJzLnRleHQgaW1wb3J0
IFBhcnNlYWJsZVRleHRSZXBvcnRlcgpAQCAtOTgsOCArOTcsNyBAQCBjbGFzcyBQeWxpbnRlcihv
YmplY3QpOgogICAgIF0KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5f
c2NyaXB0X2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJu
YW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSkpKQotICAgICAg
ICBzZWxmLl9weWxpbnRyYyA9IG9zLnBhdGguam9pbihzZWxmLl9zY3JpcHRfZGlyLCAnd2Via2l0
cHknLCAncHlsaW50cmMnKQorICAgICAgICBzZWxmLl9weWxpbnRyYyA9IFN5c3RlbUhvc3QoKS53
b3Jrc3BhY2UucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdUb29scycsICdTY3JpcHRzJywgJ3dlYmtp
dHB5JywgJ3B5bGludHJjJykKIAogICAgIGRlZiBydW4oc2VsZiwgYXJndik6CiAgICAgICAgIG91
dHB1dCA9IF9GaWx0ZXJlZFN0cmluZ0lPKHNlbGYuRkFMU0VfUE9TSVRJVkVTKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlci5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXIu
cHkKaW5kZXggOWU5YzM3OWQ2YjA1NTg5NWUxMzAxNTg0ODE4N2VkOTlmNzEzMjkwNy4uZjcyZWZi
Njg5NjA3N2Q1M2Q4MjRkYTQ0NWI0ZGZiZmM2ZGM4MjI4NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlci5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyLnB5CkBAIC0x
ODAsNiArMTgwLDcgQEAgZGVmIGdldF90ZXN0X2Jhc2VsaW5lcyh0ZXN0X2ZpbGUsIHRlc3RfY29u
ZmlnKToKICAgICBob3N0ID0gSG9zdCgpCiAgICAgaG9zdC5pbml0aWFsaXplX3NjbSgpCiAgICAg
aG9zdC5maWxlc3lzdGVtID0gdGVzdF9jb25maWcuZmlsZXN5c3RlbQorICAgIGhvc3Qud29ya3Nw
YWNlLl9maWxlc3lzdGVtID0gaG9zdC5maWxlc3lzdGVtCiAgICAgYWxsX3BsYXRmb3Jtc19wb3J0
ID0gQWxsUGxhdGZvcm1zUG9ydChob3N0KQogCiAgICAgYWxsX3Rlc3RfYmFzZWxpbmVzID0ge30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174296</attachid>
            <date>2012-11-14 17:14:22 -0800</date>
            <delta_ts>2012-11-14 17:19:15 -0800</delta_ts>
            <desc>rework into a separate new WebKitFinder module</desc>
            <filename>bug-102007-20121114171220.patch</filename>
            <type>text/plain</type>
            <size>36218</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0Njc0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjI4MzM4ODljOGE3ZjI4Mjc1MmJhMDFkYmRlYjI3NzBi
OTUwYjEyNS4uZmU2MzRiZjNhODg5YWU4M2VlZTkyNjQ1NjY3ZTNjNDBjMWU4YzBjNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4
IEBACisyMDEyLTExLTE0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdHB5OiBjb25zb2xpZGF0ZSB3ZWJraXQtYmFzZS1maW5kaW5nIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjAwNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y3JlYXRlcyBhIG5ldyAiV2ViS2l0RmluZGVyIiBjbGFzcyB0aGF0IG90aGVyCisgICAgICAgIG1v
ZHVsZXMgY2FuIHVzZSB0byBmaW5kIHRoZSB0b3Agb2YgdGhlIFdlYktpdCB0cmVlIGFuZAorICAg
ICAgICBjb21tb25seSB1c2VkIHN1YmRpcmVjdG9yaWVzLiBUaGlzIGxvZ2ljIHdhcyBpbiB0aGUK
KyAgICAgICAgd2Via2l0cHkubGF5b3V0X3Rlc3QucG9ydCBjbGFzc2VzIGJ1dCB3YXNuJ3Qgc3Bl
Y2lmaWMgdG8gdGhvc2UKKyAgICAgICAgY2xhc3NlcyBhbmQgbm93IGNhbiBiZSB1c2VkIGJ5IG90
aGVyIG1vZHVsZXMgd2l0aG91dCBuZWVkaW5nIGEgcG9ydAorICAgICAgICAoZS5nLiwgYnkgdGhl
IGNoZWNrLXdlYmtpdC1zdHlsZSBweXRob24gbGludGVyKS4KKworICAgICAgICBUaGlzIGNvZGUg
aXMgc29tZXdoYXQgcmVkdW5kYW50IHdpdGggdGhlIGNvZGUgZm9yIGZpbmRfY2hlY2tvdXRfcm9v
dCgpCisgICAgICAgIGluIHRoZSBzY20gbW9kdWxlcywgYnV0IGl0IGRvZXMgbm90IHJlbHkgb24g
dGhlIHByZXNlbmNlIG9mIGEgdmVyc2lvbgorICAgICAgICBjb250cm9sIHN5c3RlbSB0byB3b3Jr
LiBUaGlzIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHNvbWUgdXNlcyBvZiB0aGUKKyAgICAgICAgdHJl
ZSAoZS5nLiwgQ2hyb21pdW0gdGVzdGVyIGNoZWNrb3V0cykuCisKKyAgICAgICAgVGhpcyBwYXRj
aCByZW1vdmVzIG1vc3Qgb2YgdGhlIGxvZ2ljIGZyb20gdGhlIGxheW91dF90ZXN0cy5wb3J0LmNv
bmZpZworICAgICAgICBtb2R1bGUgYW5kIG1ha2VzIHRoYXQgYXMgcHJpdmF0ZSBhcyBwb3NzaWJs
ZS4gTm93IHdlIGp1c3QgbmVlZCB0byBtb3ZlCisgICAgICAgIHRoZSBkZWZhdWx0X2NvbmZpZ3Vy
YXRpb24gYW5kIGZsYWdfZnJvbV9jb25maWd1cmF0aW9uIGxvZ2ljIGludG8KKyAgICAgICAgRGVw
cmVjYXRlZFBvcnQgKG9yIHNvbWVwbGFjZSBlbHNlIGFwcHJvcHJpYXRlKSBhbmQgd2UgY2FuIGZp
bmlzaAorICAgICAgICBnZXR0aW5nIHJpZCBvZiB0aGUgQ29uZmlnIGNsYXNzIChidXQgdGhhdCBp
cyBhIHNlcGFyYXRlIHBhdGNoKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3dlYmtpdF9maW5kZXIucHk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0RmluZGVyKToKKyAgICAg
ICAgKFdlYktpdEZpbmRlci5fX2luaXRfXyk6CisgICAgICAgIChXZWJLaXRGaW5kZXIud2Via2l0
X2Jhc2UpOgorICAgICAgICAoV2ViS2l0RmluZGVyLnBhdGhfZnJvbV93ZWJraXRfYmFzZSk6Cisg
ICAgICAgIChXZWJLaXRGaW5kZXIucGF0aF90b19zY3JpcHQpOgorICAgICAgICAoV2ViS2l0Rmlu
ZGVyLmxheW91dF90ZXN0c19kaXIpOgorICAgICAgICAoV2ViS2l0RmluZGVyLnBlcmZfdGVzdHNf
ZGlyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHk6CisgICAgICAgIChQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKFBvcnQpOgorICAgICAgICAo
UG9ydC53ZWJraXRfYmFzZSk6CisgICAgICAgIChQb3J0LnBhdGhfZnJvbV93ZWJraXRfYmFzZSk6
CisgICAgICAgIChQb3J0LnBhdGhfdG9fc2NyaXB0KToKKyAgICAgICAgKFBvcnQubGF5b3V0X3Rl
c3RzX2Rpcik6CisgICAgICAgIChQb3J0LnBlcmZfdGVzdHNfZGlyKToKKyAgICAgICAgKFBvcnQu
c2V0X29wdGlvbl9kZWZhdWx0KToKKyAgICAgICAgKFBvcnQuX3J1bl9zY3JpcHQpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weToK
KyAgICAgICAgKFBvcnRUZXN0LnRlc3RfZGlmZl90ZXh0KToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5OgorICAgICAgICAoQ2hy
b21pdW1MaW51eFBvcnQuX2RldGVybWluZV9kcml2ZXJfcGF0aF9zdGF0aWNhbGx5KToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmln
LnB5OgorICAgICAgICAoQ29uZmlnLl9faW5pdF9fKToKKyAgICAgICAgKENvbmZpZy5idWlsZF9k
aXJlY3RvcnkpOgorICAgICAgICAoQ29uZmlnLmRlZmF1bHRfY29uZmlndXJhdGlvbik6CisgICAg
ICAgIChDb25maWcuX3JlYWRfY29uZmlndXJhdGlvbik6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfbW9jay5weTogUmVtb3ZlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weToK
KyAgICAgICAgKENvbmZpZ1Rlc3QudGVzdF9kZWZhdWx0X2NvbmZpZ3VyYXRpb25fX3N0YW5kYWxv
bmUpOgorICAgICAgICAoQ29uZmlnVGVzdC50ZXN0X2RlZmF1bHRfY29uZmlndXJhdGlvbl9fc2Ny
aXB0ZXJyb3IpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
ZHJpdmVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoRHJpdmVyVGVzdC5tYWtlX3BvcnQpOgorICAg
ICAgICAoRHJpdmVyVGVzdC50ZXN0X25vX3RpbWVvdXQpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5OgorICAgICAgICAoR3RrUG9ydC5zZXR1cF9l
bnZpcm9uX2Zvcl9zZXJ2ZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbWFjLnB5OgorICAgICAgICAoTWFjUG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxl
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVz
dGNhc2UucHk6CisgICAgICAgIChUZXN0V2ViS2l0UG9ydC5fX2luaXRfXyk6CisgICAgICAgIChQ
b3J0VGVzdENhc2UubWFrZV9wb3J0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5weToKKyAgICAgICAgKFdpblBvcnRUZXN0LnRlc3Rf
ZXhwZWN0YXRpb25zX2ZpbGVzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3h2ZmJkcml2ZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChYdmZiRHJpdmVyVGVz
dC5tYWtlX2RyaXZlcik6CisgICAgICAgIChYdmZiRHJpdmVyVGVzdC50ZXN0X3N0b3ApOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcHl0aG9uLnB5OgorICAgICAg
ICAoUHlsaW50ZXIuX19pbml0X18pOgorCiAyMDEyLTExLTE0ICBHbGVubiBBZGFtcyAgPGdsZW5u
QHNreW5hdi5jb20+CiAKICAgICAgICAgd2Via2l0cHk6IHByaW50LWV4cGVjdGF0aW9ucyAtIGFk
ZCAtLXBhdGhzIG9wdGlvbiB0byBwcmludCBvbmx5IHBhdGhzIG9mIHRlc3QgZXhwZWN0YXRpb24g
ZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3dlYmtpdF9m
aW5kZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi93ZWJraXRfZmluZGVyLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM3MDVlZjM3ZmFmN2NiMDQ4YWRkMmJkMmM2NDJiMDEzNTYzNjZiMWMKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi93ZWJraXRfZmlu
ZGVyLnB5CkBAIC0wLDAgKzEsNjUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2NsYXNzIFdlYktp
dEZpbmRlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlc3lzdGVtKToKKyAg
ICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5fd2Via2l0
X2Jhc2UgPSBOb25lCisKKyAgICBkZWYgd2Via2l0X2Jhc2Uoc2VsZik6CisgICAgICAgICIiIlJl
dHVybnMgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHRvcCBvZiB0aGUgV2ViS2l0IHRyZWUuCisK
KyAgICAgICAgUmFpc2VzIGFuIEFzc2VydGlvbkVycm9yIGlmIHRoZSB0b3AgZGlyIGNhbid0IGJl
IGRldGVybWluZWQuIiIiCisgICAgICAgICMgTm90ZTogVGhpcyBjb2RlIHNvbWV3aGF0IGR1cGxp
Y2F0ZXMgdGhlIGNvZGUgaW4KKyAgICAgICAgIyBzY20uZmluZF9jaGVja291dF9yb290KCkuIEhv
d2V2ZXIsIHRoYXQgY29kZSBvbmx5IHdvcmtzIGlmIHRoZSB0b3AKKyAgICAgICAgIyBvZiB0aGUg
U0NNIHJlcG9zaXRvcnkgYWxzbyBtYXRjaGVzIHRoZSB0b3Agb2YgdGhlIFdlYktpdCB0cmVlLiBT
b21lIFNWTiB1c2VycworICAgICAgICAjICh0aGUgY2hyb21pdW0gdGVzdCBib3RzLCBmb3IgZXhh
bXBsZSksIG1pZ2h0IG9ubHkgY2hlY2sgb3V0IHN1YmRpcmVjdG9yaWVzIGxpa2UKKyAgICAgICAg
IyBUb29scy9TY3JpcHRzLiBUaGlzIGNvZGUgd2lsbCBhbHNvIHdvcmsgaWYgdGhlcmUgaXMgbm8g
U0NNIHN5c3RlbSBhdCBhbGwuCisgICAgICAgIGlmIG5vdCBzZWxmLl93ZWJraXRfYmFzZToKKyAg
ICAgICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlID0gc2VsZi5fd2Via2l0X2Jhc2UKKyAgICAgICAg
ICAgIG1vZHVsZV9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5wYXRoX3RvX21vZHVsZShzZWxmLl9f
bW9kdWxlX18pCisgICAgICAgICAgICB0b29sc19pbmRleCA9IG1vZHVsZV9wYXRoLmZpbmQoJ1Rv
b2xzJykKKyAgICAgICAgICAgIGFzc2VydCB0b29sc19pbmRleCAhPSAtMSwgImNvdWxkIG5vdCBm
aW5kIGxvY2F0aW9uIG9mIHRoaXMgY2hlY2tvdXQgZnJvbSAlcyIgJSBtb2R1bGVfcGF0aAorICAg
ICAgICAgICAgc2VsZi5fd2Via2l0X2Jhc2UgPSBzZWxmLl9maWxlc3lzdGVtLm5vcm1wYXRoKG1v
ZHVsZV9wYXRoWzA6dG9vbHNfaW5kZXggLSAxXSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3dlYmtp
dF9iYXNlCisKKyAgICBkZWYgcGF0aF9mcm9tX3dlYmtpdF9iYXNlKHNlbGYsICpjb21wcyk6Cisg
ICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi53ZWJraXRfYmFzZSgpLCAq
Y29tcHMpCisKKyAgICBkZWYgcGF0aF90b19zY3JpcHQoc2VsZiwgc2NyaXB0X25hbWUpOgorICAg
ICAgICAiIiJSZXR1cm5zIHRoZSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBzY3JpcHQgZnJvbSB0aGUg
dG9wIG9mIHRoZSBXZWJLaXQgdHJlZS4iIiIKKyAgICAgICAgIyBUaGlzIGlzIGludGVudGlvbmFs
bHkgcmVsYXRpdmUgaW4gb3JkZXIgdG8gZm9yY2UgY2FsbGVycyB0byBjb25zaWRlciB3aGF0Cisg
ICAgICAgICMgdGhlaXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBpcyAoYW5kIGNoYW5nZSB0
byB0aGUgdG9wIG9mIHRoZSB0cmVlIGlmIG5lY2Vzc2FyeSkuCisgICAgICAgIHJldHVybiBzZWxm
Ll9maWxlc3lzdGVtLmpvaW4oIlRvb2xzIiwgIlNjcmlwdHMiLCBzY3JpcHRfbmFtZSkKKworICAg
IGRlZiBsYXlvdXRfdGVzdHNfZGlyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zy
b21fd2Via2l0X2Jhc2UoJ0xheW91dFRlc3RzJykKKworICAgIGRlZiBwZXJmX3Rlc3RzX2Rpcihz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdQZXJmb3Jt
YW5jZVRlc3RzJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvYmFzZS5weQppbmRleCAwODRhZTE5MTBiMTdlYWUxZTA1Yzk5OTk2OTM2ZTQ0MTE5YTNkYWJm
Li5hMTlhZjA5NGNmNzRlNWI1ZTgxMGY2NjMwZWFhNTFjYzM3MDVjNzdkIDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC01NCw2ICs1
NCw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK2Zyb20gd2Via2l0cHkuY29t
bW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRp
b24KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGNvbmZpZyBhcyBwb3J0
X2NvbmZpZwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgZHJpdmVyCkBA
IC05MCw3ICs5MSw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgIyBTdWJjbGFzc2Vz
IHdpbGwgdXN1YWxseSBvdmVycmlkZSB0aGlzLgogICAgICAgICByZXR1cm4gY2xzLnBvcnRfbmFt
ZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZT1Ob25lLCBvcHRpb25z
PU5vbmUsIGNvbmZpZz1Ob25lLCAqKmt3YXJncyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhv
c3QsIHBvcnRfbmFtZT1Ob25lLCBvcHRpb25zPU5vbmUsICoqa3dhcmdzKToKIAogICAgICAgICAj
IFRoaXMgdmFsdWUgbWF5IGJlIGRpZmZlcmVudCBmcm9tIGNscy5wb3J0X25hbWUgYnkgaGF2aW5n
IHZlcnNpb24gbW9kaWZpZXJzCiAgICAgICAgICMgYW5kIG90aGVyIGZpZWxkcyBhcHBlbmRlZCB0
byBpdCAoZm9yIGV4YW1wbGUsICdxdC1hcm0nIG9yICdtYWMtd2syJykuCkBAIC0xMTAsNyArMTEx
LDggQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAg
ICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGhvc3QuZXhlY3V0aXZlCiAgICAgICAgIHNlbGYuX2ZpbGVz
eXN0ZW0gPSBob3N0LmZpbGVzeXN0ZW0KLSAgICAgICAgc2VsZi5fY29uZmlnID0gY29uZmlnIG9y
IHBvcnRfY29uZmlnLkNvbmZpZyhzZWxmLl9leGVjdXRpdmUsIHNlbGYuX2ZpbGVzeXN0ZW0sIHNl
bGYucG9ydF9uYW1lKQorICAgICAgICBzZWxmLl93ZWJraXRfZmluZGVyID0gV2ViS2l0RmluZGVy
KGhvc3QuZmlsZXN5c3RlbSkKKyAgICAgICAgc2VsZi5fY29uZmlnID0gcG9ydF9jb25maWcuQ29u
ZmlnKHNlbGYuX2V4ZWN1dGl2ZSwgc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5wb3J0X25hbWUpCiAK
ICAgICAgICAgc2VsZi5faGVscGVyID0gTm9uZQogICAgICAgICBzZWxmLl9odHRwX3NlcnZlciA9
IE5vbmUKQEAgLTY4MywxNyArNjg1LDIxIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAg
IiIiCiAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfYmluYXJ5X2ZpbGUoYmFzZWxpbmVf
cGF0aCwgZGF0YSkKIAotICAgIEBtZW1vaXplZAorICAgICMgRklYTUU6IHVwZGF0ZSBjYWxsZXJz
IHRvIGNyZWF0ZSBhIGZpbmRlciBhbmQgY2FsbCBpdCBpbnN0ZWFkIG9mIHRoZXNlIG5leHQgZml2
ZSByb3V0aW5lcyAod2hpY2ggc2hvdWxkIGJlIHByb3RlY3RlZCkuCisgICAgZGVmIHdlYmtpdF9i
YXNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fd2Via2l0X2ZpbmRlci53ZWJraXRfYmFz
ZSgpCisKKyAgICBkZWYgcGF0aF9mcm9tX3dlYmtpdF9iYXNlKHNlbGYsICpjb21wcyk6CisgICAg
ICAgIHJldHVybiBzZWxmLl93ZWJraXRfZmluZGVyLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgqY29t
cHMpCisKKyAgICBkZWYgcGF0aF90b19zY3JpcHQoc2VsZiwgc2NyaXB0X25hbWUpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fd2Via2l0X2ZpbmRlci5wYXRoX3RvX3NjcmlwdChzY3JpcHRfbmFtZSkK
KwogICAgIGRlZiBsYXlvdXRfdGVzdHNfZGlyKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhl
IGFic29sdXRlIHBhdGggdG8gdGhlIHRvcCBvZiB0aGUgTGF5b3V0VGVzdHMgZGlyZWN0b3J5LiIi
IgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5ub3JtcGF0aChzZWxmLnBhdGhfZnJv
bV93ZWJraXRfYmFzZSgnTGF5b3V0VGVzdHMnKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3dlYmtp
dF9maW5kZXIubGF5b3V0X3Rlc3RzX2RpcigpCiAKICAgICBkZWYgcGVyZl90ZXN0c19kaXIoc2Vs
Zik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdG9wIG9mIHRo
ZSBQZXJmb3JtYW5jZVRlc3RzIGRpcmVjdG9yeS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYucGF0
aF9mcm9tX3dlYmtpdF9iYXNlKCdQZXJmb3JtYW5jZVRlc3RzJykKLQotICAgIGRlZiB3ZWJraXRf
YmFzZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0aChzZWxm
LnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnLicpKQorICAgICAgICByZXR1cm4gc2VsZi5fd2Via2l0
X2ZpbmRlci5wZXJmX3Rlc3RzX2RpcigpCiAKICAgICBkZWYgc2tpcHBlZF9sYXlvdXRfdGVzdHMo
c2VsZiwgdGVzdF9saXN0KToKICAgICAgICAgIiIiUmV0dXJucyB0ZXN0cyBza2lwcGVkIG91dHNp
ZGUgb2YgdGhlIFRlc3RFeHBlY3RhdGlvbnMgZmlsZXMuIiIiCkBAIC03NjQsMTEgKzc3MCw2IEBA
IGNsYXNzIFBvcnQob2JqZWN0KToKICAgICBkZWYgc2V0X29wdGlvbl9kZWZhdWx0KHNlbGYsIG5h
bWUsIGRlZmF1bHRfdmFsdWUpOgogICAgICAgICByZXR1cm4gc2VsZi5fb3B0aW9ucy5lbnN1cmVf
dmFsdWUobmFtZSwgZGVmYXVsdF92YWx1ZSkKIAotICAgIGRlZiBwYXRoX2Zyb21fd2Via2l0X2Jh
c2Uoc2VsZiwgKmNvbXBzKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgZnVsbCBwYXRoIHRvIHBh
dGggbWFkZSBieSBqb2luaW5nIHRoZSB0b3Agb2YgdGhlCi0gICAgICAgIFdlYktpdCBzb3VyY2Ug
dHJlZSBhbmQgdGhlIGxpc3Qgb2YgcGF0aCBjb21wb25lbnRzIGluIHwqY29tcHN8LiIiIgotICAg
ICAgICByZXR1cm4gc2VsZi5fY29uZmlnLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgqY29tcHMpCi0K
ICAgICBAbWVtb2l6ZWQKICAgICBkZWYgcGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNl
bGYpOgogICAgICAgICAiIiJVcGRhdGUgdGhlIHRlc3QgZXhwZWN0YXRpb25zIHRvIHRoZSBwYXNz
ZWQtaW4gc3RyaW5nLgpAQCAtMTM3MywxMiArMTM3NCwxMiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6
CiAgICAgICAgIHJldHVybiBjb25maWdfYXJncwogCiAgICAgZGVmIF9ydW5fc2NyaXB0KHNlbGYs
IHNjcmlwdF9uYW1lLCBhcmdzPU5vbmUsIGluY2x1ZGVfY29uZmlndXJhdGlvbl9hcmd1bWVudHM9
VHJ1ZSwgZGVjb2RlX291dHB1dD1UcnVlLCBlbnY9Tm9uZSk6Ci0gICAgICAgIHJ1bl9zY3JpcHRf
Y29tbWFuZCA9IFtzZWxmLl9jb25maWcuc2NyaXB0X3BhdGgoc2NyaXB0X25hbWUpXQorICAgICAg
ICBydW5fc2NyaXB0X2NvbW1hbmQgPSBbc2VsZi5wYXRoX3RvX3NjcmlwdChzY3JpcHRfbmFtZSld
CiAgICAgICAgIGlmIGluY2x1ZGVfY29uZmlndXJhdGlvbl9hcmd1bWVudHM6CiAgICAgICAgICAg
ICBydW5fc2NyaXB0X2NvbW1hbmQuZXh0ZW5kKHNlbGYuX2FyZ3VtZW50c19mb3JfY29uZmlndXJh
dGlvbigpKQogICAgICAgICBpZiBhcmdzOgogICAgICAgICAgICAgcnVuX3NjcmlwdF9jb21tYW5k
LmV4dGVuZChhcmdzKQotICAgICAgICBvdXRwdXQgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1h
bmQocnVuX3NjcmlwdF9jb21tYW5kLCBjd2Q9c2VsZi5fY29uZmlnLndlYmtpdF9iYXNlX2Rpcigp
LCBkZWNvZGVfb3V0cHV0PWRlY29kZV9vdXRwdXQsIGVudj1lbnYpCisgICAgICAgIG91dHB1dCA9
IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChydW5fc2NyaXB0X2NvbW1hbmQsIGN3ZD1zZWxm
LndlYmtpdF9iYXNlKCksIGRlY29kZV9vdXRwdXQ9ZGVjb2RlX291dHB1dCwgZW52PWVudikKICAg
ICAgICAgX2xvZy5kZWJ1ZygnT3V0cHV0IG9mICVzOlxuJXMnICUgKHJ1bl9zY3JpcHRfY29tbWFu
ZCwgb3V0cHV0KSkKICAgICAgICAgcmV0dXJuIG91dHB1dAogCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKaW5k
ZXggNzUzZDQ3NDgxZGRjMWVhYmY4NGJmNDBkODQzMjVjNzhmYTFkNTc2Zi4uNzdlZjA0YTA0ZDYz
YjRjMmRmYjVhOWM0MTY5ODcwOWVkYTAwMTk3OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQpAQCAtNDUs
OSArNDUsNiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGlt
cG9ydCBNb2NrU3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBv
cnQgUG9ydCwgRHJpdmVyLCBEcml2ZXJPdXRwdXQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LnBvcnQudGVzdCBpbXBvcnQgYWRkX3VuaXRfdGVzdHNfdG9fbW9ja19maWxlc3lzdGVtLCBUZXN0
UG9ydAogCi1pbXBvcnQgY29uZmlnCi1pbXBvcnQgY29uZmlnX21vY2sKLQogY2xhc3MgUG9ydFRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBtYWtlX3BvcnQoc2VsZiwgZXhlY3V0aXZl
PU5vbmUsIHdpdGhfdGVzdHM9RmFsc2UsICoqa3dhcmdzKToKICAgICAgICAgaG9zdCA9IE1vY2tT
eXN0ZW1Ib3N0KCkKQEAgLTE4OSwxMSArMTg2LDYgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2FjdC50eHQnIGluIGRpZmYpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ25vc3VjaHRoaW5nJyBpbiBkaWZmKQogCi0gICAgZGVm
IHRlc3RfZGVmYXVsdF9jb25maWd1cmF0aW9uX25vdGZvdW5kKHNlbGYpOgotICAgICAgICAjIFRl
c3QgdGhhdCB3ZSBkZWxlZ2F0ZSB0byB0aGUgY29uZmlnIG9iamVjdCBwcm9wZXJseS4KLSAgICAg
ICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KGNvbmZpZz1jb25maWdfbW9jay5Nb2NrQ29uZmlnKGRl
ZmF1bHRfY29uZmlndXJhdGlvbj0nZGVmYXVsdCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBvcnQuZGVmYXVsdF9jb25maWd1cmF0aW9uKCksICdkZWZhdWx0JykKLQogICAgIGRlZiB0ZXN0
X3NldHVwX3Rlc3RfcnVuKHNlbGYpOgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQog
ICAgICAgICAjIFRoaXMgcm91dGluZSBpcyBhIG5vLW9wLiBXZSBqdXN0IHRlc3QgaXQgZm9yIGNv
dmVyYWdlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9saW51eC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkKaW5kZXggN2MzN2ZkMTdhMmU2ZTU5MDgzYzg3YmY5
YmNjODdmMWI2YjJmMjVhZC4uZGZhY2Y5YzA4YmM0OTgyY2JkMjc4YjExZWRjMDYyMjZlNTliMGNm
OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV9saW51eC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5CkBAIC0yOSw2ICsyOSw3IEBACiAKIGltcG9ydCBsb2dn
aW5nCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZp
bmRlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgY2hyb21pdW0KIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGNvbmZpZwogCkBAIC02MSw3ICs2
Miw3IEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAg
ICAgZGVmIF9kZXRlcm1pbmVfZHJpdmVyX3BhdGhfc3RhdGljYWxseShjbHMsIGhvc3QsIG9wdGlv
bnMpOgogICAgICAgICBjb25maWdfb2JqZWN0ID0gY29uZmlnLkNvbmZpZyhob3N0LmV4ZWN1dGl2
ZSwgaG9zdC5maWxlc3lzdGVtKQogICAgICAgICBidWlsZF9kaXJlY3RvcnkgPSBnZXRhdHRyKG9w
dGlvbnMsICdidWlsZF9kaXJlY3RvcnknLCBOb25lKQotICAgICAgICB3ZWJraXRfYmFzZSA9IGNv
bmZpZ19vYmplY3QucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCkKKyAgICAgICAgd2Via2l0X2Jhc2Ug
PSBXZWJLaXRGaW5kZXIoaG9zdC5maWxlc3lzdGVtKS53ZWJraXRfYmFzZSgpCiAgICAgICAgIGNo
cm9taXVtX2Jhc2UgPSBjbHMuX2Nocm9taXVtX2Jhc2VfZGlyKGhvc3QuZmlsZXN5c3RlbSkKICAg
ICAgICAgaWYgaGFzYXR0cihvcHRpb25zLCAnY29uZmlndXJhdGlvbicpIGFuZCBvcHRpb25zLmNv
bmZpZ3VyYXRpb246CiAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gb3B0aW9ucy5jb25maWd1
cmF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQppbmRleCA4N2RlNDFjNmNiZjQ4NWI0ZWMz
ZTEzOGMwMjUwZmVjYmQ3NmI2NDU4Li5hYzliYzkwZjY3OTYwNGIyNmU2ZmU5ZjU5OTc3YjcwZDA4
NzMyZTljIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKQEAgLTMzLDcgKzMzLDYgQEAgaW1w
b3J0IHVuaXR0ZXN0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3Rlc3Rp
bmcKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9j
a0V4ZWN1dGl2ZTIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sg
aW1wb3J0IE1vY2tTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmNv
bmZpZ19tb2NrIGltcG9ydCBNb2NrQ29uZmlnCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9j
ayBpbXBvcnQgTW9jawogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0
aW9ucwogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2NvbmZpZy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y29uZmlnLnB5CmluZGV4IGRkOGYzMzFhZjg3ZWZkZWMwMjYwNDc4OTc2YjlkM2ExYzdjNWE1YTku
LjgyOGUyYWYzNzI4ZDVjMTQ2ZmFjYzk3NDBmOTc5NDcyZTY4MmQxNjcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnLnB5CkBAIC0yOSwx
NCArMjksMTQgQEAKIAogIiIiV3JhcHBlciBvYmplY3RzIGZvciBXZWJLaXQtc3BlY2lmaWMgdXRp
bGl0eSByb3V0aW5lcy4iIiIKIAotIyBGSVhNRTogVGhpcyBmaWxlIG5lZWRzIHRvIGJlIHVuaWZp
ZWQgd2l0aCBjb21tb24vY2hlY2tvdXQvc2NtLnB5IGFuZAotIyBjb21tb24vY29uZmlnL3BvcnRz
LnB5IC4KKyMgRklYTUU6IFRoaXMgZmlsZSBuZWVkcyB0byBiZSB1bmlmaWVkIHdpdGggY29tbW9u
L2NvbmZpZy9wb3J0cy5weSAuCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQg
bG9ndXRpbHMKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlCitp
bXBvcnQgbG9nZ2luZwogCitmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgd2Via2l0X2ZpbmRl
cgogCi1fbG9nID0gbG9ndXRpbHMuZ2V0X2xvZ2dlcihfX2ZpbGVfXykKKworX2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAjCiAjIEZJWE1FOiBUaGlzIGlzIHVzZWQgdG8gcmVj
b3JkIGlmIHdlJ3ZlIGFscmVhZHkgaGl0IHRoZSBmaWxlc3lzdGVtIHRvIGxvb2sKQEAgLTY0LDcg
KzY0LDcgQEAgY2xhc3MgQ29uZmlnKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4
ZWN1dGl2ZSwgZmlsZXN5c3RlbSwgcG9ydF9pbXBsZW1lbnRhdGlvbj1Ob25lKToKICAgICAgICAg
c2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlCiAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBm
aWxlc3lzdGVtCi0gICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlX2RpciA9IE5vbmUKKyAgICAgICAg
c2VsZi5fd2Via2l0X2ZpbmRlciA9IHdlYmtpdF9maW5kZXIuV2ViS2l0RmluZGVyKHNlbGYuX2Zp
bGVzeXN0ZW0pCiAgICAgICAgIHNlbGYuX2RlZmF1bHRfY29uZmlndXJhdGlvbiA9IE5vbmUKICAg
ICAgICAgc2VsZi5fYnVpbGRfZGlyZWN0b3JpZXMgPSB7fQogICAgICAgICBzZWxmLl9wb3J0X2lt
cGxlbWVudGF0aW9uID0gcG9ydF9pbXBsZW1lbnRhdGlvbgpAQCAtODEsOCArODEsOCBAQCBjbGFz
cyBDb25maWcob2JqZWN0KToKICAgICAgICAgICAgIGZsYWdzLmFwcGVuZCgnLS0nICsgc2VsZi5f
cG9ydF9pbXBsZW1lbnRhdGlvbikKIAogICAgICAgICBpZiBub3Qgc2VsZi5fYnVpbGRfZGlyZWN0
b3JpZXMuZ2V0KGNvbmZpZ3VyYXRpb24pOgotICAgICAgICAgICAgYXJncyA9IFsicGVybCIsIHNl
bGYuc2NyaXB0X3BhdGgoIndlYmtpdC1idWlsZC1kaXJlY3RvcnkiKV0gKyBmbGFncwotICAgICAg
ICAgICAgb3V0cHV0ID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFyZ3MsIGN3ZD1zZWxm
LndlYmtpdF9iYXNlX2RpcigpLCByZXR1cm5fc3RkZXJyPUZhbHNlKS5yc3RyaXAoKQorICAgICAg
ICAgICAgYXJncyA9IFsicGVybCIsIHNlbGYuX3dlYmtpdF9maW5kZXIucGF0aF90b19zY3JpcHQo
IndlYmtpdC1idWlsZC1kaXJlY3RvcnkiKV0gKyBmbGFncworICAgICAgICAgICAgb3V0cHV0ID0g
c2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFyZ3MsIGN3ZD1zZWxmLl93ZWJraXRfZmluZGVy
LndlYmtpdF9iYXNlKCksIHJldHVybl9zdGRlcnI9RmFsc2UpLnJzdHJpcCgpCiAgICAgICAgICAg
ICBwYXJ0cyA9IG91dHB1dC5zcGxpdCgiXG4iKQogICAgICAgICAgICAgc2VsZi5fYnVpbGRfZGly
ZWN0b3JpZXNbY29uZmlndXJhdGlvbl0gPSBwYXJ0c1swXQogCkBAIC0xMTEsMzIgKzExMSw2IEBA
IGNsYXNzIENvbmZpZyhvYmplY3QpOgogICAgICAgICAgICAgX2xvZy53YXJuKCJTY3JpcHRzIG1h
eSBmYWlsLiAgU2VlICdzZXQtd2Via2l0LWNvbmZpZ3VyYXRpb24gLS1oZWxwJy4iKQogICAgICAg
ICByZXR1cm4gc2VsZi5fZGVmYXVsdF9jb25maWd1cmF0aW9uCiAKLSAgICBkZWYgcGF0aF9mcm9t
X3dlYmtpdF9iYXNlKHNlbGYsICpjb21wcyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lz
dGVtLmpvaW4oc2VsZi53ZWJraXRfYmFzZV9kaXIoKSwgKmNvbXBzKQotCi0gICAgIyBGSVhNRTog
V2Ugc2hvdWxkIG9ubHkgaGF2ZSBvbmUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBsb2dpYywKLSAg
ICAjIGlmIHNjbS5maW5kX2NoZWNrb3V0X3Jvb3QoKSBpcyBicm9rZW4gZm9yIENocm9taXVtLCB3
ZSBzaG91bGQgZml4IChvciBhdCBsZWFzdCB3cmFwKSBpdCEKLSAgICBkZWYgd2Via2l0X2Jhc2Vf
ZGlyKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB0
b3Agb2YgdGhlIFdlYktpdCB0cmVlLgotCi0gICAgICAgIFJhaXNlcyBhbiBBc3NlcnRpb25FcnJv
ciBpZiB0aGUgdG9wIGRpciBjYW4ndCBiZSBkZXRlcm1pbmVkLiIiIgotICAgICAgICAjIE5vdGU6
IHRoaXMgY29kZSBzb21ld2hhdCBkdXBsaWNhdGVzIHRoZSBjb2RlIGluCi0gICAgICAgICMgc2Nt
LmZpbmRfY2hlY2tvdXRfcm9vdCgpLiBIb3dldmVyLCB0aGF0IGNvZGUgb25seSB3b3JrcyBpZiB0
aGUgdG9wCi0gICAgICAgICMgb2YgdGhlIFNDTSByZXBvc2l0b3J5IGFsc28gbWF0Y2hlcyB0aGUg
dG9wIG9mIHRoZSBXZWJLaXQgdHJlZS4gVGhlCi0gICAgICAgICMgQ2hyb21pdW0gcG9ydHMsIGZv
ciBleGFtcGxlLCBvbmx5IGNoZWNrIG91dCBzdWJkaXJlY3RvcmllcyBsaWtlCi0gICAgICAgICMg
VG9vbHMvU2NyaXB0cywgYW5kIHNvIHdlIHN0aWxsIGhhdmUgdG8gZG8gYWRkaXRpb25hbCB3b3Jr
Ci0gICAgICAgICMgdG8gZmluZCB0aGUgdG9wIG9mIHRoZSB0cmVlLgotICAgICAgICAjCi0gICAg
ICAgICMgVGhpcyBjb2RlIHdpbGwgYWxzbyB3b3JrIGlmIHRoZXJlIGlzIG5vIFNDTSBzeXN0ZW0g
YXQgYWxsLgotICAgICAgICBpZiBub3Qgc2VsZi5fd2Via2l0X2Jhc2VfZGlyOgotICAgICAgICAg
ICAgY29uZmlnX21vZHVsZV9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5wYXRoX3RvX21vZHVsZShz
ZWxmLl9fbW9kdWxlX18pCi0gICAgICAgICAgICBzZWxmLl93ZWJraXRfYmFzZV9kaXIgPSBjb25m
aWdfbW9kdWxlX3BhdGhbMDpjb25maWdfbW9kdWxlX3BhdGguZmluZCgnVG9vbHMnKSAtIDFdCi0g
ICAgICAgIHJldHVybiBzZWxmLl93ZWJraXRfYmFzZV9kaXIKLQotICAgIGRlZiBzY3JpcHRfcGF0
aChzZWxmLCBzY3JpcHRfbmFtZSk6Ci0gICAgICAgICMgVGhpcyBpcyBpbnRlbnRpb25hbGx5IHJl
bGF0aXZlLiBDYWxsZXJzIHNob3VsZCBwYXNzIHRoZSBjaGVja291dF9yb290L3dlYmtpdF9iYXNl
X2RpciB0byBydW5fY29tbWFuZCBhcyB0aGUgY3dkLgotICAgICAgICByZXR1cm4gc2VsZi5fZmls
ZXN5c3RlbS5qb2luKCJUb29scyIsICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpCi0KICAgICBkZWYg
X2RldGVybWluZV9jb25maWd1cmF0aW9uKHNlbGYpOgogICAgICAgICAjIFRoaXMgbWlycm9ycyB0
aGUgbG9naWMgaW4gd2Via2l0ZGlycy5wbTpkZXRlcm1pbmVDb25maWd1cmF0aW9uKCkuCiAgICAg
ICAgICMKQEAgLTE2Miw3ICsxMzYsNyBAQCBjbGFzcyBDb25maWcob2JqZWN0KToKICAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb25fcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmJ1aWxk
X2RpcmVjdG9yeShOb25lKSwgIkNvbmZpZ3VyYXRpb24iKQogICAgICAgICAgICAgaWYgbm90IHNl
bGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKGNvbmZpZ3VyYXRpb25fcGF0aCk6CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKLSAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBleGVjdXRpdmUuU2NyaXB0
RXJyb3IpOgorICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAg
ICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKGNvbmZpZ3VyYXRpb25f
cGF0aCkucnN0cmlwKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY29uZmlnX21vY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2NvbmZpZ19tb2NrLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1NDc2ZTRiYWIyNmYxZWVjOGIzYWRhZmE4Y2Y3YWU5N2IxMmFiMDZjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnX21vY2sucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NyAr
MCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJXcmFw
cGVyIG9iamVjdHMgZm9yIFdlYktpdC1zcGVjaWZpYyB1dGlsaXR5IHJvdXRpbmVzLiIiIgotCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmls
ZVN5c3RlbQotCi0KLWNsYXNzIE1vY2tDb25maWcob2JqZWN0KToKLSAgICBfRkxBR1NfRlJPTV9D
T05GSUdVUkFUSU9OUyA9IHsKLSAgICAgICAgIkRlYnVnIjogIi0tZGVidWciLAotICAgICAgICAi
UmVsZWFzZSI6ICItLXJlbGVhc2UiLAotICAgIH0KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBm
aWxlc3lzdGVtPU5vbmUsIGRlZmF1bHRfY29uZmlndXJhdGlvbj0nUmVsZWFzZScsIHBvcnRfaW1w
bGVtZW50YXRpb249Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVt
IG9yIE1vY2tGaWxlU3lzdGVtKCkKLSAgICAgICAgc2VsZi5fZGVmYXVsdF9jb25maWd1cmF0aW9u
ID0gZGVmYXVsdF9jb25maWd1cmF0aW9uCi0gICAgICAgIHNlbGYuX3BvcnRfaW1wbG1lbnRhdGlv
biA9IHBvcnRfaW1wbGVtZW50YXRpb24KLQotICAgIGRlZiBmbGFnX2Zvcl9jb25maWd1cmF0aW9u
KHNlbGYsIGNvbmZpZ3VyYXRpb24pOgotICAgICAgICByZXR1cm4gc2VsZi5fRkxBR1NfRlJPTV9D
T05GSUdVUkFUSU9OU1tjb25maWd1cmF0aW9uXQotCi0gICAgZGVmIGJ1aWxkX2RpcmVjdG9yeShz
ZWxmLCBjb25maWd1cmF0aW9uKToKLSAgICAgICAgcmV0dXJuICIvbW9jay1idWlsZCIKLQotICAg
IGRlZiBidWlsZF9kdW1wcmVuZGVydHJlZShzZWxmLCBjb25maWd1cmF0aW9uKToKLSAgICAgICAg
cmV0dXJuIFRydWUKLQotICAgIGRlZiBkZWZhdWx0X2NvbmZpZ3VyYXRpb24oc2VsZik6Ci0gICAg
ICAgIHJldHVybiBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRpb24KLQotICAgIGRlZiBwYXRoX2Zy
b21fd2Via2l0X2Jhc2Uoc2VsZiwgKmNvbXBzKToKLSAgICAgICAgIyBGSVhNRTogVGhpcyBjb3Vs
ZCB1c2Ugc2VsZi5fZmlsZXN5c3RlbS5qb2luLCBidXQgdGhhdCBkb2Vzbid0IGhhbmRsZSBlbXB0
eSBsaXN0cy4KLSAgICAgICAgcmV0dXJuIHNlbGYud2Via2l0X2Jhc2VfZGlyKCkgKyAiLyIgKyAi
LyIuam9pbihsaXN0KGNvbXBzKSkKLQotICAgIGRlZiBzY3JpcHRfcGF0aChzZWxmLCBzY3JpcHRf
bmFtZSk6Ci0gICAgICAgICMgVGhpcyBpcyBpbnRlbnRpb25hbGx5IHJlbGF0aXZlLiBDYWxsZXJz
IHNob3VsZCBwYXNzIHRoZSBjaGVja291dF9yb290L3dlYmtpdF9iYXNlX2RpciB0byBydW5fY29t
bWFuZCBhcyB0aGUgY3dkLgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKCJU
b29scyIsICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpCi0KLSAgICBkZWYgd2Via2l0X2Jhc2VfZGly
KHNlbGYpOgotICAgICAgICByZXR1cm4gIi9tb2NrLWNoZWNrb3V0IgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVz
dC5weQppbmRleCA5NmJhNWZmNTgyN2EyNDA5YmQyMTc0OTY2MTQ2NzgxNmU4MDQwODJjLi40NDc5
MjA0YWRlMDQxNzM3NTQ1ZjAyOWJmYWI4M2ZhMDBjNGQzYjNiIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVz
dC5weQpAQCAtMzEsMTAgKzMxLDExIEBAIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNj
cmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1w
b3J0IE1vY2tFeGVjdXRpdmUsIE1vY2tFeGVjdXRpdmUyCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUyCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0
dXJlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmluZGVyIGltcG9ydCBXZWJLaXRGaW5k
ZXIKIAogaW1wb3J0IGNvbmZpZwogCkBAIC0xMzEsMTIgKzEzMiwxMSBAQCBjbGFzcyBDb25maWdU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZSA9IEV4ZWN1dGl2ZSgpCiAgICAgICAg
IGZzID0gRmlsZVN5c3RlbSgpCiAgICAgICAgIGMgPSBjb25maWcuQ29uZmlnKGUsIGZzKQotICAg
ICAgICBzY3JpcHQgPSBjLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnVG9vbHMnLCAnU2NyaXB0cycs
ICd3ZWJraXRweScsICdsYXlvdXRfdGVzdHMnLCAncG9ydCcsICdjb25maWdfc3RhbmRhbG9uZS5w
eScpCisgICAgICAgIHNjcmlwdCA9IFdlYktpdEZpbmRlcihmcykucGF0aF9mcm9tX3dlYmtpdF9i
YXNlKCdUb29scycsICdTY3JpcHRzJywgJ3dlYmtpdHB5JywgJ2xheW91dF90ZXN0cycsICdwb3J0
JywgJ2NvbmZpZ19zdGFuZGFsb25lLnB5JykKIAogICAgICAgICAjIE5vdGU6IGRvbid0IHVzZSAn
UmVsZWFzZScgaGVyZSwgc2luY2UgdGhhdCdzIHRoZSBub3JtYWwgZGVmYXVsdC4KICAgICAgICAg
ZXhwZWN0ZWQgPSAnRGVidWcnCiAKLSAgICAgICAgIyBGSVhNRTogV2h5IGFyZSB3ZSBydW5uaW5n
IGEgcHl0aG9uIHN1YnByb2Nlc3MgaGVyZT8/CiAgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFi
bGUsIHNjcmlwdCwgJy0tbW9jaycsIGV4cGVjdGVkXQogICAgICAgICBhY3R1YWwgPSBlLnJ1bl9j
b21tYW5kKGFyZ3MpLnJzdHJpcCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBl
eHBlY3RlZCkKQEAgLTE1NywzMiArMTU3LDYgQEAgY2xhc3MgQ29uZmlnVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIGFjdHVhbCA9IGMuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsICdSZWxlYXNlJykKIAotICAgIGRlZiB0ZXN0
X3BhdGhfZnJvbV93ZWJraXRfYmFzZShzZWxmKToKLSAgICAgICAgYyA9IGNvbmZpZy5Db25maWco
TW9ja0V4ZWN1dGl2ZSgpLCBNb2NrRmlsZVN5c3RlbSgpKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUoYy5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ2ZvbycpKQotCi0gICAgZGVmIHRlc3Rfd2Via2l0
X2Jhc2VfZGlyKHNlbGYpOgotICAgICAgICAjIEZJWE1FOiBXZSB1c2UgYSByZWFsIGZpbGVzeXN0
ZW0gaGVyZS4gU2hvdWxkIHRoaXMgbW92ZSB0byBhIG1vY2tlZCBvbmU/Ci0gICAgICAgIGV4ZWN1
dGl2ZSA9IEV4ZWN1dGl2ZSgpCi0gICAgICAgIGZpbGVzeXN0ZW0gPSBGaWxlU3lzdGVtKCkKLSAg
ICAgICAgYyA9IGNvbmZpZy5Db25maWcoZXhlY3V0aXZlLCBmaWxlc3lzdGVtKQotICAgICAgICBi
YXNlX2RpciA9IGMud2Via2l0X2Jhc2VfZGlyKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJh
c2VfZGlyKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGJhc2VfZGlyWy0xXSwgJy8nKQot
Ci0gICAgICAgICMgRklYTUU6IE9uY2Ugd2UgdXNlIGEgTW9ja0ZpbGVTeXN0ZW0gZm9yIHRoaXMg
dGVzdCB3ZSBkb24ndCBuZWVkIHRvIHNhdmUgdGhlIG9yaWdfY3dkLgotICAgICAgICBvcmlnX2N3
ZCA9IGZpbGVzeXN0ZW0uZ2V0Y3dkKCkKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4z
Mic6Ci0gICAgICAgICAgICBmaWxlc3lzdGVtLmNoZGlyKG9zLmVudmlyb25bJ1VTRVJQUk9GSUxF
J10pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaWxlc3lzdGVtLmNoZGlyKG9zLmVudmly
b25bJ0hPTUUnXSkKLSAgICAgICAgYyA9IGNvbmZpZy5Db25maWcoZXhlY3V0aXZlLCBmaWxlc3lz
dGVtKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBiYXNlX2Rpcl8yID0gYy53ZWJraXRfYmFz
ZV9kaXIoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYXNlX2RpciwgYmFzZV9kaXJf
MikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZpbGVzeXN0ZW0uY2hkaXIob3JpZ19j
d2QpCi0KIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJp
dmVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9kcml2ZXJfdW5pdHRlc3QucHkKaW5kZXggYTJkMDkyNzEzMmZmYTc5N2U0MzI3NWE5NWY5ODFl
ZTljZTg5ZDdhZS4uNmE1NDgxZjZhMmYzMDRhZGExOGE5YzM5OTM5YTNjNzIxYTQ3ZjkwZCAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXJf
dW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9kcml2ZXJfdW5pdHRlc3QucHkKQEAgLTM2LDYgKzM2LDggQEAgZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydC5zZXJ2ZXJfcHJvY2Vzc19tb2NrIGltcG9ydCBNb2NrU2VydmVyUHJvY2Vz
cwogIyBGSVhNRTogcmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9uIFRlc3RXZWJLaXRQb3J0CiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnBvcnRfdGVzdGNhc2UgaW1wb3J0IFRlc3RXZWJL
aXRQb3J0CiAKK2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMK
KwogCiBjbGFzcyBEcml2ZXJPdXRwdXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYg
dGVzdF9zdHJpcF9tZXRyaWNzKHNlbGYpOgpAQCAtODAsNyArODIsOSBAQCBjbGFzcyBEcml2ZXJP
dXRwdXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogY2xhc3MgRHJpdmVyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgZGVmIG1ha2VfcG9ydChzZWxmKToKLSAgICAgICAgcmV0dXJuIFBv
cnQoTW9ja1N5c3RlbUhvc3QoKSkKKyAgICAgICAgcG9ydCA9IFBvcnQoTW9ja1N5c3RlbUhvc3Qo
KSwgTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0nUmVsZWFzZScpKQorICAgICAgICBwb3J0Ll9j
b25maWcuYnVpbGRfZGlyZWN0b3J5ID0gbGFtYmRhIGNvbmZpZ3VyYXRpb246ICcvbW9jay1idWls
ZCcKKyAgICAgICAgcmV0dXJuIHBvcnQKIAogICAgIGRlZiBfYXNzZXJ0X3dyYXBwZXIoc2VsZiwg
d3JhcHBlcl9zdHJpbmcsIGV4cGVjdGVkX3dyYXBwZXIpOgogICAgICAgICB3cmFwcGVyID0gRHJp
dmVyKHNlbGYubWFrZV9wb3J0KCksIE5vbmUsIHBpeGVsX3Rlc3RzPUZhbHNlKS5fY29tbWFuZF93
cmFwcGVyKHdyYXBwZXJfc3RyaW5nKQpAQCAtMTYyLDYgKzE2Niw3IEBAIGNsYXNzIERyaXZlclRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3Rfbm9fdGltZW91dChzZWxmKToK
ICAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgcG9ydC5fY29uZmlnLmJ1
aWxkX2RpcmVjdG9yeSA9IGxhbWJkYSBjb25maWd1cmF0aW9uOiAnL21vY2stYnVpbGQnCiAgICAg
ICAgIGRyaXZlciA9IERyaXZlcihwb3J0LCAwLCBwaXhlbF90ZXN0cz1UcnVlLCBub190aW1lb3V0
PVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJpdmVyLmNtZF9saW5lKFRydWUsIFtd
KSwgWycvbW9jay1idWlsZC9EdW1wUmVuZGVyVHJlZScsICctLW5vLXRpbWVvdXQnLCAnLSddKQog
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0
ay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5Cmlu
ZGV4IDNkODIwMjc0ZWI2N2JjYzgyYzBlMmRiMTQ0NTUyMGQxMjEwMjUxMDYuLjJlYzdkNzBjNGFm
NTBlZWRhOWZkZWJlZmRlYTVjYmQyMGY5YTMxYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CkBAIC03MSw5ICs3MSw3IEBAIGNsYXNzIEd0
a1BvcnQoUG9ydCwgUHVsc2VBdWRpb1Nhbml0aXplcik6CiAgICAgICAgIGVudmlyb25tZW50WydU
RVNUX1JVTk5FUl9JTkpFQ1RFRF9CVU5ETEVfRklMRU5BTUUnXSA9IHNlbGYuX2J1aWxkX3BhdGgo
J0xpYnJhcmllcycsICdsaWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUubGEnKQogICAgICAgICBl
bnZpcm9ubWVudFsnVEVTVF9SVU5ORVJfVEVTVF9QTFVHSU5fUEFUSCddID0gc2VsZi5fYnVpbGRf
cGF0aCgnVGVzdE5ldHNjYXBlUGx1Z2luJywgJy5saWJzJykKICAgICAgICAgZW52aXJvbm1lbnRb
J1dFQktJVF9JTlNQRUNUT1JfUEFUSCddID0gc2VsZi5fYnVpbGRfcGF0aCgnUHJvZ3JhbXMnLCAn
cmVzb3VyY2VzJywgJ2luc3BlY3RvcicpCi0gICAgICAgIGVudmlyb25tZW50WydBVURJT19SRVNP
VVJDRVNfUEFUSCddID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX2NvbmZpZy53ZWJraXRf
YmFzZV9kaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3JtJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2F1ZGlvJywgJ3Jlc291cmNlcycpCisgICAgICAgIGVudmlyb25tZW50WydB
VURJT19SRVNPVVJDRVNfUEFUSCddID0gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ1NvdXJj
ZScsICdXZWJDb3JlJywgJ3BsYXRmb3JtJywgJ2F1ZGlvJywgJ3Jlc291cmNlcycpCiAgICAgICAg
IHNlbGYuX2NvcHlfdmFsdWVfZnJvbV9lbnZpcm9uX2lmX3NldChlbnZpcm9ubWVudCwgJ1dFQktJ
VE9VVFBVVERJUicpCiAgICAgICAgIHJldHVybiBlbnZpcm9ubWVudAogCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CmluZGV4IGU2ZmQ1YmQzYzk0
NGVmNzVhZTc1MjIxMDgzOTlkN2M3MTU0ODNkOTIuLjQ0MTViOGE2MjA5YzM4MWM5MDlmZjg1Yjgz
ODVhZTI3MTIwMzkxNDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvbWFjLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbWFjLnB5CkBAIC0xNjgsOCArMTY4LDggQEAgY2xhc3MgTWFjUG9ydChBcHBsZVBv
cnQpOgogICAgICAgICAjIFdlIGRvbid0IHVzZSBzZWxmLl9ydW5fc2NyaXB0KCkgYmVjYXVzZSB3
ZSBkb24ndCB3YW50IHRvIHdhaXQgZm9yIHRoZSBzY3JpcHQKICAgICAgICAgIyB0byBleGl0IGFu
ZCB3ZSB3YW50IHRoZSBvdXRwdXQgdG8gc2hvdyB1cCBvbiBzdGRvdXQgaW4gY2FzZSB0aGVyZSBh
cmUgZXJyb3JzCiAgICAgICAgICMgbGF1bmNoaW5nIHRoZSBicm93c2VyLgotICAgICAgICBzZWxm
Ll9leGVjdXRpdmUucG9wZW4oW3NlbGYuX2NvbmZpZy5zY3JpcHRfcGF0aCgncnVuLXNhZmFyaScp
XSArIHNlbGYuX2FyZ3VtZW50c19mb3JfY29uZmlndXJhdGlvbigpICsgWyctLW5vLXNhdmVkLXN0
YXRlJywgJy1OU09wZW4nLCByZXN1bHRzX2ZpbGVuYW1lXSwKLSAgICAgICAgICAgIGN3ZD1zZWxm
Ll9jb25maWcud2Via2l0X2Jhc2VfZGlyKCksIHN0ZG91dD1maWxlKG9zLmRldm51bGwpLCBzdGRl
cnI9ZmlsZShvcy5kZXZudWxsKSkKKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlLnBvcGVuKFtzZWxm
LnBhdGhfdG9fc2NyaXB0KCdydW4tc2FmYXJpJyldICsgc2VsZi5fYXJndW1lbnRzX2Zvcl9jb25m
aWd1cmF0aW9uKCkgKyBbJy0tbm8tc2F2ZWQtc3RhdGUnLCAnLU5TT3BlbicsIHJlc3VsdHNfZmls
ZW5hbWVdLAorICAgICAgICAgICAgY3dkPXNlbGYud2Via2l0X2Jhc2UoKSwgc3Rkb3V0PWZpbGUo
b3MuZGV2bnVsbCksIHN0ZGVycj1maWxlKG9zLmRldm51bGwpKQogCiAgICAgIyBGSVhNRTogVGhl
IG5leHQgdHdvIHJvdXRpbmVzIHR1cm4gb2ZmIHRoZSBodHRwIGxvY2tpbmcgaW4gb3JkZXIKICAg
ICAjIHRvIHdvcmsgYXJvdW5kIGZhaWx1cmVzIG9uIHRoZSBib3RzIGNhdXNlZCB3aGVuIHRoZSBz
bGF2ZSByZXN0YXJ0cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQppbmRleCAxOWNjYmY2YjFmZjVkM2JhYTNm
NDlmY2E0MDFjNWMxMzMyNDUwMTRhLi5lN2NkNzZjOTI0NDc2YjYwMDE2YTMyMmZiYjY2NDQxYzNk
NGEwZWM2IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3BvcnRfdGVzdGNhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CkBAIC00MSw3ICs0MSw2IEBAIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2Fw
dHVyZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBvcnQg
TW9ja1N5c3RlbUhvc3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYmFzZSBpbXBv
cnQgUG9ydAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5jb25maWdfbW9jayBpbXBv
cnQgTW9ja0NvbmZpZwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5zZXJ2ZXJfcHJv
Y2Vzc19tb2NrIGltcG9ydCBNb2NrU2VydmVyUHJvY2VzcwogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMuc2VydmVycyBpbXBvcnQgaHR0cF9zZXJ2ZXJfYmFzZQogZnJvbSB3ZWJraXRweS50b29s
Lm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwpAQCAtNTYsOCArNTUsNyBAQCBjbGFzcyBUZXN0
V2ViS2l0UG9ydChQb3J0KToKICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgICAgICBz
ZWxmLnN5bWJvbHNfc3RyaW5nID0gc3ltYm9sc19zdHJpbmcgICMgUGFzc2luZyAiIiBkaXNhYmxl
cyBhbGwgc3RhdGljbHktZGV0ZWN0YWJsZSBmZWF0dXJlcy4KICAgICAgICAgaG9zdCA9IGhvc3Qg
b3IgTW9ja1N5c3RlbUhvc3QoKQotICAgICAgICBjb25maWcgPSBjb25maWcgb3IgTW9ja0NvbmZp
ZygpCi0gICAgICAgIHN1cGVyKFRlc3RXZWJLaXRQb3J0LCBzZWxmKS5fX2luaXRfXyhob3N0PWhv
c3QsIGNvbmZpZz1jb25maWcsICoqa3dhcmdzKQorICAgICAgICBzdXBlcihUZXN0V2ViS2l0UG9y
dCwgc2VsZikuX19pbml0X18oaG9zdD1ob3N0LCAqKmt3YXJncykKIAogICAgIGRlZiBhbGxfdGVz
dF9jb25maWd1cmF0aW9ucyhzZWxmKToKICAgICAgICAgcmV0dXJuIFtzZWxmLnRlc3RfY29uZmln
dXJhdGlvbigpXQpAQCAtODMsMTMgKzgxLDE0IEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgcG9ydF9tYWtlciA9IFRlc3RXZWJLaXRQb3J0CiAgICAgcG9ydF9u
YW1lID0gTm9uZQogCi0gICAgZGVmIG1ha2VfcG9ydChzZWxmLCBob3N0PU5vbmUsIHBvcnRfbmFt
ZT1Ob25lLCBvcHRpb25zPU5vbmUsIG9zX25hbWU9Tm9uZSwgb3NfdmVyc2lvbj1Ob25lLCBjb25m
aWc9Tm9uZSwgKiprd2FyZ3MpOgorICAgIGRlZiBtYWtlX3BvcnQoc2VsZiwgaG9zdD1Ob25lLCBw
b3J0X25hbWU9Tm9uZSwgb3B0aW9ucz1Ob25lLCBvc19uYW1lPU5vbmUsIG9zX3ZlcnNpb249Tm9u
ZSwgKiprd2FyZ3MpOgogICAgICAgICBob3N0ID0gaG9zdCBvciBNb2NrU3lzdGVtSG9zdChvc19u
YW1lPShvc19uYW1lIG9yIHNlbGYub3NfbmFtZSksIG9zX3ZlcnNpb249KG9zX3ZlcnNpb24gb3Ig
c2VsZi5vc192ZXJzaW9uKSkKICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgb3IgTW9ja09wdGlv
bnMoY29uZmlndXJhdGlvbj0nUmVsZWFzZScpCi0gICAgICAgIGNvbmZpZyA9IGNvbmZpZyBvciBN
b2NrQ29uZmlnKGZpbGVzeXN0ZW09aG9zdC5maWxlc3lzdGVtLCBkZWZhdWx0X2NvbmZpZ3VyYXRp
b249J1JlbGVhc2UnKQogICAgICAgICBwb3J0X25hbWUgPSBwb3J0X25hbWUgb3Igc2VsZi5wb3J0
X25hbWUKICAgICAgICAgcG9ydF9uYW1lID0gc2VsZi5wb3J0X21ha2VyLmRldGVybWluZV9mdWxs
X3BvcnRfbmFtZShob3N0LCBvcHRpb25zLCBwb3J0X25hbWUpCi0gICAgICAgIHJldHVybiBzZWxm
LnBvcnRfbWFrZXIoaG9zdCwgcG9ydF9uYW1lLCBvcHRpb25zPW9wdGlvbnMsIGNvbmZpZz1jb25m
aWcsICoqa3dhcmdzKQorICAgICAgICBwb3J0ID0gc2VsZi5wb3J0X21ha2VyKGhvc3QsIHBvcnRf
bmFtZSwgb3B0aW9ucz1vcHRpb25zLCAqKmt3YXJncykKKyAgICAgICAgcG9ydC5fY29uZmlnLmJ1
aWxkX2RpcmVjdG9yeSA9IGxhbWJkYSBjb25maWd1cmF0aW9uOiAnL21vY2stYnVpbGQnCisgICAg
ICAgIHJldHVybiBwb3J0CiAKICAgICBkZWYgdGVzdF9kZWZhdWx0X21heF9sb2NrZWRfc2hhcmRz
KHNlbGYpOgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW5fdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5weQpp
bmRleCAyYmFmYWFiM2IyYzJhNWZmNDA5MmFhMjY0MTNhMTc5MTcwZDUyNGJkLi42Njg2ODVmNTYz
OGFhZmQ5OTY5ZmVhYTliODRhZjk0NjYzNDgzYzc1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5weQpAQCAtMTA2
LDQgKzEwNiw0IEBAIGNsYXNzIFdpblBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNl
KToKIAogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19maWxlcyhzZWxmKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4oc2VsZi5tYWtlX3BvcnQoKS5leHBlY3RhdGlvbnNfZmlsZXMoKSks
IDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYubWFrZV9wb3J0KG9wdGlvbnM9
TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPVRydWUpKS5leHBlY3RhdGlvbnNfZmlsZXMo
KSksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYubWFrZV9wb3J0KG9wdGlv
bnM9TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPVRydWUsIGNvbmZpZ3VyYXRpb249J1Jl
bGVhc2UnKSkuZXhwZWN0YXRpb25zX2ZpbGVzKCkpLCA0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC94dmZiZHJpdmVyX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC94dmZiZHJpdmVyX3VuaXR0
ZXN0LnB5CmluZGV4IDIyMGRkMzUxNzI0NmZjOTVlMWQyZGM5ZjZlZGYzMDRlMThmY2FjOWIuLjM2
NzEzMTAzOTY1NWIzYzc1ODAzYTlhMGE2MGQ3ZWY3MzAyZGI2YTMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQveHZmYmRyaXZlcl91bml0dGVzdC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3h2ZmJkcml2
ZXJfdW5pdHRlc3QucHkKQEAgLTM0LDE0ICszNCwxNSBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUyCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5c3RlbUhv
c3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IFBvcnQKLWZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuY29uZmlnX21vY2sgaW1wb3J0IE1vY2tDb25maWcKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuc2VydmVyX3Byb2Nlc3NfbW9jayBpbXBvcnQg
TW9ja1NlcnZlclByb2Nlc3MKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQueHZmYmRy
aXZlciBpbXBvcnQgWHZmYkRyaXZlcgorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9y
dCBNb2NrT3B0aW9ucwogCiAKIGNsYXNzIFh2ZmJEcml2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICBkZWYgbWFrZV9kcml2ZXIoc2VsZiwgd29ya2VyX251bWJlcj0wLCB4b3JnX3J1bm5p
bmc9RmFsc2UsIGV4ZWN1dGl2ZT1Ob25lKToKLSAgICAgICAgcG9ydCA9IFBvcnQoaG9zdD1Nb2Nr
U3lzdGVtSG9zdChsb2dfZXhlY3V0aXZlPVRydWUsIGV4ZWN1dGl2ZT1leGVjdXRpdmUpLCBjb25m
aWc9TW9ja0NvbmZpZygpKQorICAgICAgICBwb3J0ID0gUG9ydChob3N0PU1vY2tTeXN0ZW1Ib3N0
KGxvZ19leGVjdXRpdmU9VHJ1ZSwgZXhlY3V0aXZlPWV4ZWN1dGl2ZSksIG9wdGlvbnM9TW9ja09w
dGlvbnMoY29uZmlndXJhdGlvbj0nUmVsZWFzZScpKQorICAgICAgICBwb3J0Ll9jb25maWcuYnVp
bGRfZGlyZWN0b3J5ID0gbGFtYmRhIGNvbmZpZ3VyYXRpb246ICIvbW9jay1idWlsZCIKICAgICAg
ICAgcG9ydC5fc2VydmVyX3Byb2Nlc3NfY29uc3RydWN0b3IgPSBNb2NrU2VydmVyUHJvY2Vzcwog
ICAgICAgICBpZiB4b3JnX3J1bm5pbmc6CiAgICAgICAgICAgICBwb3J0Ll9leGVjdXRpdmUuX3J1
bm5pbmdfcGlkc1snWG9yZyddID0gMTA4CkBAIC0xMTUsNyArMTE2LDcgQEAgY2xhc3MgWHZmYkRy
aXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3Rfc3RvcChzZWxmKToK
ICAgICAgICAgZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKGZpbGVzPXsnL3RtcC8uWDQyLWxv
Y2snOiAnMTIzNFxuJ30pCi0gICAgICAgIHBvcnQgPSBQb3J0KGhvc3Q9TW9ja1N5c3RlbUhvc3Qo
bG9nX2V4ZWN1dGl2ZT1UcnVlLCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pLCBjb25maWc9TW9ja0Nv
bmZpZygpKQorICAgICAgICBwb3J0ID0gUG9ydChob3N0PU1vY2tTeXN0ZW1Ib3N0KGxvZ19leGVj
dXRpdmU9VHJ1ZSwgZmlsZXN5c3RlbT1maWxlc3lzdGVtKSwgb3B0aW9ucz1Nb2NrT3B0aW9ucyhj
b25maWd1cmF0aW9uPSdSZWxlYXNlJykpCiAgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZS5raWxsX3By
b2Nlc3MgPSBsYW1iZGEgeDogbG9nKCJNT0NLIGtpbGxfcHJvY2VzcyBwaWQ6ICIgKyBzdHIoeCkp
CiAgICAgICAgIGRyaXZlciA9IFh2ZmJEcml2ZXIocG9ydCwgd29ya2VyX251bWJlcj0wLCBwaXhl
bF90ZXN0cz1UcnVlKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL3B5dGhvbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvcHl0aG9uLnB5CmluZGV4IGY5ZWMxYzA5MTU4NGE1ZmEwYzExNWIyNjk3Njg3M2FkYTIzNjg0
MzUuLjlmYzQzNmYzZDFjMTFkNzE4ZTczMmU3OGI4OTBkMmM2MDNmZmFmNWMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcHl0aG9uLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcHl0aG9uLnB5CkBAIC0yMiwxMSAr
MjIsMTEgQEAKIAogIiIiU3VwcG9ydHMgY2hlY2tpbmcgV2ViS2l0IHN0eWxlIGluIFB5dGhvbiBm
aWxlcy4iIiIKIAotaW1wb3J0IG9zCiBpbXBvcnQgcmUKLWltcG9ydCBzeXMKIGZyb20gU3RyaW5n
SU8gaW1wb3J0IFN0cmluZ0lPCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lz
dGVtIGltcG9ydCBGaWxlU3lzdGVtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmluZGVy
IGltcG9ydCBXZWJLaXRGaW5kZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFs
bGVkIGltcG9ydCBwZXA4CiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5w
eWxpbnQgaW1wb3J0IGxpbnQKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVk
LnB5bGludC5yZXBvcnRlcnMudGV4dCBpbXBvcnQgUGFyc2VhYmxlVGV4dFJlcG9ydGVyCkBAIC05
OCw4ICs5OCw3IEBAIGNsYXNzIFB5bGludGVyKG9iamVjdCk6CiAgICAgXQogCiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl9zY3JpcHRfZGlyID0gb3MucGF0aC5hYnNwYXRo
KG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXykpKSkpCi0gICAgICAgIHNlbGYuX3B5bGludHJjID0gb3MucGF0aC5q
b2luKHNlbGYuX3NjcmlwdF9kaXIsICd3ZWJraXRweScsICdweWxpbnRyYycpCisgICAgICAgIHNl
bGYuX3B5bGludHJjID0gV2ViS2l0RmluZGVyKEZpbGVTeXN0ZW0oKSkucGF0aF9mcm9tX3dlYmtp
dF9iYXNlKCdUb29scycsICdTY3JpcHRzJywgJ3dlYmtpdHB5JywgJ3B5bGludHJjJykKIAogICAg
IGRlZiBydW4oc2VsZiwgYXJndik6CiAgICAgICAgIG91dHB1dCA9IF9GaWx0ZXJlZFN0cmluZ0lP
KHNlbGYuRkFMU0VfUE9TSVRJVkVTKQo=
</data>
<flag name="review"
          id="189301"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>