<?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>35484</bug_id>
          
          <creation_ts>2010-02-27 13:33:10 -0800</creation_ts>
          <short_desc>check-webkit-style: Start using Python&apos;s logging module</short_desc>
          <delta_ts>2010-03-02 08:50:39 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>194528</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-27 13:33:10 -0800</bug_when>
    <thetext>Start using the logging module in check-webkit-style.

Also provide an example of how to unit test logging when using the logging module.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194541</commentid>
    <comment_count>1</comment_count>
      <attachid>49687</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-27 15:41:19 -0800</bug_when>
    <thetext>Created attachment 49687
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194542</commentid>
    <comment_count>2</comment_count>
      <attachid>49688</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-27 15:48:26 -0800</bug_when>
    <thetext>Created attachment 49688
Proposed patch 2

Removed the trailing newline from two logging calls since the logging module appends a newline automatically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194553</commentid>
    <comment_count>3</comment_count>
      <attachid>49691</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-27 20:44:40 -0800</bug_when>
    <thetext>Created attachment 49691
Proposed patch 3

Refactored the patch so that the supporting unit test code is in a central location.

In a later patch, I can rename the webkitpy/init directory to something like webkitpy/infra to signify that it contains infrastructure-related code (autoinstall, logging, etc).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194637</commentid>
    <comment_count>4</comment_count>
      <attachid>49691</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-03-01 00:10:29 -0800</bug_when>
    <thetext>Comment on attachment 49691
Proposed patch 3

Generally looks great. r- for now, but some of my comments would be wrong.

&gt; diff --git a/WebKitTools/Scripts/webkitpy/init/wklogging.py b/WebKitTools/Scripts/webkitpy/init/wklogging.py

Are you planning to put non-unittest code into this module? If not, I think the name isn&apos;t the best. Maybe logging_test_utils.py or something more verbose naming would be better.

If you are planning to add non-unittest code, I&apos;d suggest splitting this file into two files.

&gt; +&quot;&quot;&quot;Support for logging.&quot;&quot;&quot;

It would be better to say this module supports testing of logging.

&gt; +    This method returns a list of references to the logging handlers
&gt; +    added so that the caller can later remove the handlers using
&gt; +    logger.removeHandler.  This is primarily useful in testing
&gt; +    situations where the caller may want to enable logging temporarily
&gt; +    and then undo the enabling.

I&apos;m not sure if this style is widely used, but I prefer the following style

  Returns:
    a list of references to the logging handlers...

cpp.py has bunch of docstrings with this style.

Will we return more than two handlers? If not, I think we can return tuple and explicitly say &quot;this function returns an error-handler and a non-error-handler using tuple&quot;.

&gt; +    def test_info_message(self):
&gt; +        # We test the tighter boundary case rather than logging.INFO,
&gt; +        # which equals 30.

Hmm... I&apos;m confused. It seems logging.INFO is 20. I&apos;m not sure, but if I understand the logging module correctly, logging.INFO should be outputted but logging.INFO-1 should not, right? If so, I think logging.INFO is the boundary. Maybe I&apos;m misunderstanding?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194949</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-01 22:36:20 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 49691 [details])

Thanks a lot for the helpful comments.

&gt; Are you planning to put non-unittest code into this module? If not, I think the
&gt; name isn&apos;t the best. Maybe logging_test_utils.py or something more verbose
&gt; naming would be better.
&gt; 
&gt; If you are planning to add non-unittest code, I&apos;d suggest splitting this file
&gt; into two files.

I was planning to put non-unittest code in the file.  Good idea.  I will rename.

I may choose something a bit shorter though since PEP8 encourages short module names.

&gt; Will we return more than two handlers? If not, I think we can return tuple and
&gt; explicitly say &quot;this function returns an error-handler and a non-error-handler
&gt; using tuple&quot;.

For now, just two.  But I would prefer to keep it a list since the calling code only needs to loop through it.  It does not need to know its contents or use the sequence in a structured way as a tuple would imply.

&gt; &gt; +    def test_info_message(self):
&gt; &gt; +        # We test the tighter boundary case rather than logging.INFO,
&gt; &gt; +        # which equals 30.
&gt; 
&gt; Hmm... I&apos;m confused. It seems logging.INFO is 20. I&apos;m not sure, but if I
&gt; understand the logging module correctly, logging.INFO should be outputted but
&gt; logging.INFO-1 should not, right? If so, I think logging.INFO is the boundary.
&gt; Maybe I&apos;m misunderstanding?

You&apos;re right -- that was a typo (should be 20 rather than 30).  I&apos;m sorry.  I knew about it and failed to correct.

In any case, the configured handlers should style messages with level 30 and above as an error message, and 29 and below as an info message.

The purpose of my comment was to explain why I was testing 29 even though in practice we would only be using 20 (i.e. _log.info).  I will make the comment clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194956</commentid>
    <comment_count>6</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-03-01 23:14:29 -0800</bug_when>
    <thetext>&gt; I may choose something a bit shorter though since PEP8 encourages short module
&gt; names.

Yeah, I think shorter name is OK. I tend to like verbose names maybe because I&apos;m not good at coming up with cool short names :(

&gt; For now, just two.  But I would prefer to keep it a list since the calling code
&gt; only needs to loop through it.  It does not need to know its contents or use
&gt; the sequence in a structured way as a tuple would imply.

I see. It&apos;s OK as is.

&gt; You&apos;re right -- that was a typo (should be 20 rather than 30).  I&apos;m sorry.  I
&gt; knew about it and failed to correct.
&gt; 
&gt; In any case, the configured handlers should style messages with level 30 and
&gt; above as an error message, and 29 and below as an info message.
&gt; 
&gt; The purpose of my comment was to explain why I was testing 29 even though in
&gt; practice we would only be using 20 (i.e. _log.info).  I will make the comment
&gt; clearer.

Ah, I was also wrong. I missed you are setting logging.WARNING for your filter in configure_logging. Thanks for clarification!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194971</commentid>
    <comment_count>7</comment_count>
      <attachid>49787</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-02 00:18:17 -0800</bug_when>
    <thetext>Created attachment 49787
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194973</commentid>
    <comment_count>8</comment_count>
      <attachid>49788</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-02 00:22:18 -0800</bug_when>
    <thetext>Created attachment 49788
Proposed patch 5

Fixed ChangeLog (extraneous reviewed by line).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195049</commentid>
    <comment_count>9</comment_count>
      <attachid>49805</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-02 07:52:05 -0800</bug_when>
    <thetext>Created attachment 49805
Proposed patch 6

Added __init__,py back to webkitpy/init directory. 

The __init__.py file was deleted from webkitpy/init when the directory was emptied in a recent rollout:

http://trac.webkit.org/changeset/55363

(Note that we will be renaming webkitpy/init to something like webkitpy/infra in a later patch.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195052</commentid>
    <comment_count>10</comment_count>
      <attachid>49805</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-03-02 08:20:14 -0800</bug_when>
    <thetext>Comment on attachment 49805
Proposed patch 6

Looks good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195060</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-02 08:50:22 -0800</bug_when>
    <thetext>Committed (via &quot;webkit-patch land-from-bug&quot;):

http://trac.webkit.org/changeset/55409</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49687</attachid>
            <date>2010-02-27 15:41:19 -0800</date>
            <delta_ts>2010-02-27 15:48:26 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-35484-1.diff</filename>
            <type>text/plain</type>
            <size>14444</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBkZThjM2M1Li4yN2I3NzdjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzQgQEAKIDIwMTAtMDIt
MjcgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RhcnRlZCB1c2luZyB0aGUgbG9n
Z2luZyBtb2R1bGUgaW4gY2hlY2std2Via2l0LXN0eWxlLgorICAgICAgICBUaGlzIHByb3ZpZGVz
IG1vcmUgZGVidWdnaW5nIG9wdGlvbnMgYW5kIGEgbW9yZSBmbGV4aWJsZSwKKyAgICAgICAgdW5p
Zm9ybSB3YXkgdG8gcmVwb3J0IG1lc3NhZ2VzIHRvIHRoZSBlbmQtdXNlci4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU0ODQKKworICAgICAgICAq
IFNjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlOgorICAgICAgICAgIC0gQWRkZWQgYSBjYWxsIHRv
IGNvbmZpZ3VyZV9sb2dnaW5nKCkgaW4gdGhlIGJlZ2lubmluZyBvZiBtYWluKCkuCisgICAgICAg
ICAgLSBSZXBsYWNlZCB0d28gY2FsbHMgdG8gc3lzLnN0ZGVyci53cml0ZSgpIHdpdGggYXBwcm9w
cmlhdGUKKyAgICAgICAgICAgIGxvZ2dpbmcgY2FsbHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CisgICAgICAgICAgLSBBZGRlZCBhIGNvbmZpZ3VyZV9s
b2dnaW5nKCkgbWV0aG9kLgorICAgICAgICAgIC0gQWRkZWQgYSBfTGV2ZWxMb2dnaW5nRmlsdGVy
IGNsYXNzIHRvIGZpbHRlciBvdXQgbG9nIG1lc3NhZ2VzCisgICAgICAgICAgICBhYm92ZSBhIGNl
cnRhaW4gbG9nZ2luZyBsZXZlbC4KKyAgICAgICAgICAtIFJlbW92ZWQgdGhlIF9zdGRlcnJfd3Jp
dGUoKSBtZXRob2QgZnJvbSB0aGUgU3R5bGVDaGVja2VyIGNsYXNzCisgICAgICAgICAgICBhbmQg
cmVwbGFjZWQgaXRzIHVzZSB3aXRoIGFwcHJvcHJpYXRlIGxvZ2dpbmcgY2FsbHMuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHk6CisgICAgICAg
ICAgLSBBZGRlZCBhIENoZWNrZXJUZXN0QmFzZSBjbGFzcyB3aXRoIHNldFVwLCB0ZWFyRG93biwg
YW5kIG90aGVyCisgICAgICAgICAgICBtZXRob2RzIHRvIGZhY2lsaXRhdGUgdGhlIHVuaXQgdGVz
dGluZyBvZiBsb2cgbWVzc2FnZXMuCisgICAgICAgICAgLSBBZGRlZCB0aGUgQ29uZmlndXJlTG9n
Z2luZ1Rlc3QgY2xhc3MgdG8gdW5pdCB0ZXN0IHRoZQorICAgICAgICAgICAgY29uZmlndXJlX2xv
Z2dpbmcoKSBtZXRob2QuCisgICAgICAgICAgLSBVcGRhdGVkIHRoZSBTdHlsZUNoZWNrZXJDaGVj
a0ZpbGVUZXN0IGNsYXNzIGFzIG5lY2Vzc2FyeS4KKworMjAxMC0wMi0yNyAgQ2hyaXMgSmVyZG9u
ZWsgIDxjamVyZG9uZWtAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBM
ZXZpbi4KIAogICAgICAgICBBZGRlZCBQeXRob24gc3R5bGUgY2hlY2tpbmcgdG8gY2hlY2std2Vi
a2l0LXN0eWxlIHVzaW5nCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdl
YmtpdC1zdHlsZSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCmluZGV4
IGVhMmU5NDMuLjRkNzliZTMgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2st
d2Via2l0LXN0eWxlCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxl
CkBAIC00Myw2ICs0Myw3IEBAIHNhbWUgbGluZSwgYnV0IGl0IGlzIGZhciBmcm9tIHBlcmZlY3Qg
KGluIGVpdGhlciBkaXJlY3Rpb24pLgogIiIiCiAKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBsb2dn
aW5nCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc3lzCkBAIC01MCwxMyArNTEs
MjggQEAgaW1wb3J0IHN5cwogaW1wb3J0IHdlYmtpdHB5LnN0eWxlLmNoZWNrZXIgYXMgY2hlY2tl
cgogZnJvbSB3ZWJraXRweS5zdHlsZV9yZWZlcmVuY2VzIGltcG9ydCBTaW1wbGVTY20KIAorX2xv
ZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjaGVjay13ZWJraXQtc3R5bGUiKQorCiBkZWYgbWFpbigp
OgogICAgICMgQ2hhbmdlIHN0ZGVyciB0byB3cml0ZSB3aXRoIHJlcGxhY2VtZW50IGNoYXJhY3Rl
cnMgc28gd2UgZG9uJ3QgZGllCiAgICAgIyBpZiB3ZSB0cnkgdG8gcHJpbnQgc29tZXRoaW5nIGNv
bnRhaW5pbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCi0gICAgc3lzLnN0ZGVyciA9IGNvZGVjcy5T
dHJlYW1SZWFkZXJXcml0ZXIoc3lzLnN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0cmVhZGVyKCd1dGY4JyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHdyaXRlcigndXRmOCcpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNlJykKKyAg
ICBzdGRlcnIgPSBjb2RlY3MuU3RyZWFtUmVhZGVyV3JpdGVyKHN5cy5zdGRlcnIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0cmVhZGVyKCd1dGY4Jyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0d3JpdGVy
KCd1dGY4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVwbGFj
ZScpCisgICAgIyBTZXR0aW5nIGFuICJlbmNvZGluZyIgYXR0cmlidXRlIG9uIHRoZSBzdHJlYW0g
aXMgbmVjZXNzYXJ5IHRvCisgICAgIyBwcmV2ZW50IHRoZSBsb2dnaW5nIG1vZHVsZSBmcm9tIHJh
aXNpbmcgYW4gZXJyb3IuICBTZWUKKyAgICAjIHRoZSBjaGVja2VyLmNvbmZpZ3VyZV9sb2dnaW5n
KCkgZnVuY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgc3RkZXJyLmVuY29kaW5nID0g
IlVURi04IgorCisgICAgIyBGSVhNRTogQ2hhbmdlIHdlYmtpdHB5LnN0eWxlIHNvIHRoYXQgd2Ug
ZG8gbm90IG5lZWQgdG8gb3ZlcndyaXRlCisgICAgIyAgICAgICAgdGhlIGdsb2JhbCBzeXMuc3Rk
ZXJyLiAgVGhpcyBpbnZvbHZlcyB1cGRhdGluZyB0aGUgY29kZSB0bworICAgICMgICAgICAgIGFj
Y2VwdCBhIHN0cmVhbSBwYXJhbWV0ZXIgd2hlcmUgbmVjZXNzYXJ5LCBhbmQgbm90IGNhbGxpbmcK
KyAgICAjICAgICAgICBzeXMuc3RkZXJyIGV4cGxpY2l0bHkgYW55d2hlcmUuCisgICAgc3lzLnN0
ZGVyciA9IHN0ZGVycgorCisgICAgY2hlY2tlci5jb25maWd1cmVfbG9nZ2luZyhzdGRlcnIpCisK
ICAgICBwYXJzZXIgPSBjaGVja2VyLmNoZWNrX3dlYmtpdF9zdHlsZV9wYXJzZXIoKQogICAgIChm
aWxlcywgb3B0aW9ucykgPSBwYXJzZXIucGFyc2Uoc3lzLmFyZ3ZbMTpdKQogCkBAIC03OCw3ICs5
NCw4IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAgICAgIyBGSVhNRTogSWYgdGhlIHJhbmdl
IGlzIGEgIi4uLiIsIHRoZSBjb2RlIHNob3VsZCBmaW5kIHRoZSBjb21tb24gYW5jZXN0b3IgYW5k
CiAgICAgICAgICAgICAgICAgIyBzdGFydCB0aGVyZSAoc2VlIGdpdCBkaWZmIC0taGVscCBmb3Ig
aW5mb3JtYXRpb24gYWJvdXQgaG93IC4uLiB1c3VhbGx5IHdvcmtzKS4KICAgICAgICAgICAgICAg
ICBjb21taXQgPSBjb21taXRbOmNvbW1pdC5maW5kKCcuLicpXQotICAgICAgICAgICAgICAgIHBy
aW50ID4+IHN5cy5zdGRlcnIsICJXYXJuaW5nOiBSYW5nZXMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9y
IC0tZ2l0LWNvbW1pdC4gQ2hlY2tpbmcgYWxsIGNoYW5nZXMgc2luY2UgJXMuXG4iICUgY29tbWl0
CisgICAgICAgICAgICAgICAgX2xvZy53YXJuKCJSYW5nZXMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9y
IC0tZ2l0LWNvbW1pdC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgYWxs
IGNoYW5nZXMgc2luY2UgJXMuXG4iICUgY29tbWl0KQogICAgICAgICAgICAgcGF0Y2ggPSBzY20u
Y3JlYXRlX3BhdGNoX3NpbmNlX2xvY2FsX2NvbW1pdChjb21taXQpCiAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2goKQpAQCAtODYsOCArMTAzLDggQEAg
ZGVmIG1haW4oKToKIAogICAgIGVycm9yX2NvdW50ID0gc3R5bGVfY2hlY2tlci5lcnJvcl9jb3Vu
dAogICAgIGZpbGVfY291bnQgPSBzdHlsZV9jaGVja2VyLmZpbGVfY291bnQKLSAgICBzeXMuc3Rk
ZXJyLndyaXRlKCdUb3RhbCBlcnJvcnMgZm91bmQ6ICVkIGluICVkIGZpbGVzXG4nCi0gICAgICAg
ICAgICAgICAgICAgICAlIChlcnJvcl9jb3VudCwgZmlsZV9jb3VudCkpCisgICAgX2xvZy5pbmZv
KCJUb3RhbCBlcnJvcnMgZm91bmQ6ICVkIGluICVkIGZpbGVzXG4iCisgICAgICAgICAgICAgICUg
KGVycm9yX2NvdW50LCBmaWxlX2NvdW50KSkKICAgICAjIFdlIGZhaWwgd2hlbiBzdHlsZSBlcnJv
cnMgYXJlIGZvdW5kIG9yIHRoZXJlIGFyZSBubyBjaGVja2VkIGZpbGVzLgogICAgIHN5cy5leGl0
KGVycm9yX2NvdW50ID4gMCBvciBmaWxlX2NvdW50ID09IDApCiAKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQppbmRleCBmZTY1Zjc0Li5kODBhNThlIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC0z
MCw2ICszMCw3IEBACiAiIiJGcm9udCBlbmQgb2Ygc29tZSBzdHlsZS1jaGVja2VyIG1vZHVsZXMu
IiIiCiAKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MucGF0aAogaW1w
b3J0IHN5cwogCkBAIC00NSw2ICs0Niw3IEBAIGZyb20gcHJvY2Vzc29ycy5jcHAgaW1wb3J0IENw
cFByb2Nlc3NvcgogZnJvbSBwcm9jZXNzb3JzLnB5dGhvbiBpbXBvcnQgUHl0aG9uUHJvY2Vzc29y
CiBmcm9tIHByb2Nlc3NvcnMudGV4dCBpbXBvcnQgVGV4dFByb2Nlc3NvcgogCitfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LnN0eWxlLmNoZWNrZXIiKQogCiAjIFRoZXNlIGFyZSBk
ZWZhdWx0IG9wdGlvbiB2YWx1ZXMgZm9yIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9uIHBhcnNlci4K
IF9ERUZBVUxUX1ZFUkJPU0lUWSA9IDEKQEAgLTIwNCw2ICsyMDYsODUgQEAgZGVmIGNoZWNrX3dl
YmtpdF9zdHlsZV9jb25maWd1cmF0aW9uKG9wdGlvbnMpOgogICAgICAgICAgICAgICAgdmVyYm9z
aXR5PW9wdGlvbnMudmVyYm9zaXR5KQogCiAKKyMgRklYTUU6IEFkZCBzdXBwb3J0IGZvciBtb3Jl
IHZlcmJvc2UgbG9nZ2luZyBmb3IgZGVidWcgcHVycG9zZXMuCisjICAgICAgICBUaGlzIGNhbiB1
c2UgYSBmb3JtYXR0ZXIgbGlrZSB0aGUgZm9sbG93aW5nLCBmb3IgZXhhbXBsZS0tCisjCisjICAg
ICAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigiJShuYW1lKXM6IFslKGxldmVsbmFt
ZSlzXSAlKG1lc3NhZ2UpcyIpCitkZWYgY29uZmlndXJlX2xvZ2dpbmcoc3RyZWFtKToKKyAgICAi
IiJDb25maWd1cmUgbG9nZ2luZywgYW5kIHJldHVybiB0aGUgbGlzdCBvZiBoYW5kbGVycyBhZGRl
ZC4KKworICAgIENvbmZpZ3VyZXMgdGhlIHJvb3QgbG9nZ2VyIHRvIGxvZyBJTkZPIG1lc3NhZ2Vz
IGFuZCBoaWdoZXIuCisgICAgQ29uZmlndXJlcyBXQVJOSU5HIG1lc3NhZ2VzIGFuZCBhYm92ZSB0
byBpbmNsdWRlIHRoZSBsb2dnaW5nIGxldmVsCisgICAgYW5kIG1lc3NhZ2VzIGJlbG93IFdBUk5J
Tkcgbm90IHRvIGluY2x1ZGUgaXQuCisKKyAgICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBv
ZiByZWZlcmVuY2VzIHRvIHRoZSBsb2dnaW5nIGhhbmRsZXJzCisgICAgYWRkZWQgc28gdGhhdCB0
aGUgY2FsbGVyIGNhbiBsYXRlciByZW1vdmUgdGhlIGhhbmRsZXJzIHVzaW5nCisgICAgbG9nZ2Vy
LnJlbW92ZUhhbmRsZXIuICBUaGlzIGlzIHByaW1hcmlseSB1c2VmdWwgaW4gdGVzdGluZworICAg
IHNpdHVhdGlvbnMgd2hlcmUgdGhlIGNhbGxlciBtYXkgd2FudCB0byBlbmFibGUgbG9nZ2luZyB0
ZW1wb3JhcmlseQorICAgIGFuZCB0aGVuIHVuZG8gdGhlIGVuYWJsaW5nLgorCisgICAgQXJnczoK
KyAgICAgIHN0cmVhbTogQSBmaWxlLWxpa2Ugb2JqZWN0IHRvIHdoaWNoIHRvIGxvZy4gIFRoZSBz
dHJlYW0gbXVzdAorICAgICAgICAgICAgICBkZWZpbmUgYW4gImVuY29kaW5nIiBkYXRhIGF0dHJp
YnV0ZSwgb3IgZWxzZSBsb2dnaW5nCisgICAgICAgICAgICAgIHJhaXNlcyBhbiBlcnJvci4KKwor
ICAgICIiIgorICAgICMgSWYgdGhlIHN0cmVhbSBkb2VzIG5vdCBkZWZpbmUgYW4gImVuY29kaW5n
IiBkYXRhIGF0dHJpYnV0ZSwgdGhlCisgICAgIyBsb2dnaW5nIG1vZHVsZSBjYW4gdGhyb3cgYW4g
ZXJyb3IgbGlrZSB0aGUgZm9sbG93aW5nOgorICAgICMKKyAgICAjIFRyYWNlYmFjayAobW9zdCBy
ZWNlbnQgY2FsbCBsYXN0KToKKyAgICAjICAgRmlsZSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8yLjYvLi4uCisgICAgIyAgICAgICAgIGxpYi9w
eXRob24yLjYvbG9nZ2luZy9fX2luaXRfXy5weSIsIGxpbmUgNzYxLCBpbiBlbWl0CisgICAgIyAg
ICAgc2VsZi5zdHJlYW0ud3JpdGUoZnMgJSBtc2cuZW5jb2RlKHNlbGYuc3RyZWFtLmVuY29kaW5n
KSkKKyAgICAjIExvb2t1cEVycm9yOiB1bmtub3duIGVuY29kaW5nOiB1bmtub3duCisKKyAgICAj
IEhhbmRsZXMgbG9nZ2luZy5XQVJOSU5HIGFuZCBhYm92ZS4KKyAgICBlcnJvcl9oYW5kbGVyID0g
bG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN0cmVhbSkKKyAgICBlcnJvcl9oYW5kbGVyLnNldExldmVs
KGxvZ2dpbmcuV0FSTklORykKKyAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigiJShs
ZXZlbG5hbWUpczogJShtZXNzYWdlKXMiKQorICAgIGVycm9yX2hhbmRsZXIuc2V0Rm9ybWF0dGVy
KGZvcm1hdHRlcikKKworICAgICMgSGFuZGxlcyByZWNvcmRzIHN0cmljdGx5IGJlbG93IGxvZ2dp
bmcuV0FSTklORy4KKyAgICBub25fZXJyb3JfaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxl
cihzdHJlYW0pCisgICAgbm9uX2Vycm9yX2ZpbHRlciA9IF9MZXZlbExvZ2dpbmdGaWx0ZXIobG9n
Z2luZy5XQVJOSU5HKQorICAgIG5vbl9lcnJvcl9oYW5kbGVyLmFkZEZpbHRlcihub25fZXJyb3Jf
ZmlsdGVyKQorICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKCIlKG1lc3NhZ2UpcyIp
CisgICAgbm9uX2Vycm9yX2hhbmRsZXIuc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKKworICAgIGxv
Z2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5J
TkZPKQorCisgICAgaGFuZGxlcnMgPSBbZXJyb3JfaGFuZGxlciwgbm9uX2Vycm9yX2hhbmRsZXJd
CisKKyAgICBmb3IgaGFuZGxlciBpbiBoYW5kbGVyczoKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRs
ZXIoaGFuZGxlcikKKworICAgIHJldHVybiBoYW5kbGVycworCisKKyMgRklYTUU6IEFmdGVyIHdl
IGdldCBtb3JlIGZhbWlsaWFyIHdpdGggdXNpbmcgbW9yZSBhZHZhbmNlZCBsb2dnaW5nCisjICAg
ICAgICB0ZWNobmlxdWVzIGxpa2UgdGhlIGZpbHRlciBjbGFzcyBiZWxvdywgd2UgbWF5IHdhbnQg
dG8gbW92ZQorIyAgICAgICAgY2xhc3NlcyBsaWtlIHRoaXMgdG8gYSB3ZWJraXRweS5pbmZyYXN0
cnVjdHVyZS5sb2dnaW5nIG1vZHVsZS4KK2NsYXNzIF9MZXZlbExvZ2dpbmdGaWx0ZXIob2JqZWN0
KToKKworICAgICIiIkEgbG9nZ2luZyBmaWx0ZXIgZm9yIGJsb2NraW5nIHJlY29yZHMgYXQgb3Ig
YWJvdmUgYSBjZXJ0YWluIGxldmVsLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dp
bmdfbGV2ZWwpOgorICAgICAgICAiIiJDcmVhdGUgYSBfTGV2ZWxMb2dnaW5nRmlsdGVyLgorCisg
ICAgICAgIEFyZ3M6CisgICAgICAgICAgbG9nZ2luZ19sZXZlbDogVGhlIGxvZ2dpbmcgbGV2ZWwg
Y3V0LW9mZi4gIExvZ2dpbmcgbGV2ZWxzIGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgb3Ig
YWJvdmUgdGhpcyBsZXZlbCB3aWxsIG5vdCBiZSBsb2dnZWQuCisKKyAgICAgICAgIiIiCisgICAg
ICAgIHNlbGYuX2xvZ2dpbmdfbGV2ZWwgPSBsb2dnaW5nX2xldmVsCisKKyAgICAjIFRoZSBsb2dn
aW5nIG1vZHVsZSByZXF1aXJlcyB0aGF0IHRoaXMgbWV0aG9kIGJlIGRlZmluZWQuCisgICAgZGVm
IGZpbHRlcihzZWxmLCBsb2dfcmVjb3JkKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgZ2l2
ZW4gdGhlIExvZ1JlY29yZCBzaG91bGQgYmUgbG9nZ2VkLiIiIgorICAgICAgICByZXR1cm4gbG9n
X3JlY29yZC5sZXZlbG5vIDwgc2VsZi5fbG9nZ2luZ19sZXZlbAorCisKICMgRW51bS1saWtlIGlk
aW9tCiBjbGFzcyBGaWxlVHlwZToKIApAQCAtMzA2LDYgKzM4Nyw4IEBAIGNsYXNzIFByb2Nlc3Nv
ckRpc3BhdGNoZXIob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHByb2Nlc3NvcgogCiAKKyMgRklY
TUU6IFJlbW92ZSB0aGUgc3RkZXJyX3dyaXRlIGF0dHJpYnV0ZSBmcm9tIHRoaXMgY2xhc3MgYW5k
IHJlcGxhY2UKKyMgICAgICAgIGl0cyB1c2Ugd2l0aCBjYWxscyB0byBhIGxvZ2dpbmcgbW9kdWxl
IGxvZ2dlci4KIGNsYXNzIFN0eWxlQ2hlY2tlckNvbmZpZ3VyYXRpb24ob2JqZWN0KToKIAogICAg
ICIiIlN0b3JlcyBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3IgdGhlIFN0eWxlQ2hlY2tlciBjbGFz
cy4KQEAgLTQyMyw5ICs1MDYsNiBAQCBjbGFzcyBTdHlsZUNoZWNrZXIob2JqZWN0KToKICAgICAg
ICAgc2VsZi5lcnJvcl9jb3VudCA9IDAKICAgICAgICAgc2VsZi5maWxlX2NvdW50ID0gMAogCi0g
ICAgZGVmIF9zdGRlcnJfd3JpdGUoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIHNlbGYuX2NvbmZp
Z3VyYXRpb24uc3RkZXJyX3dyaXRlKG1lc3NhZ2UpCi0KICAgICBkZWYgX2luY3JlbWVudF9lcnJv
cl9jb3VudChzZWxmKToKICAgICAgICAgIiIiSW5jcmVtZW50IHRoZSB0b3RhbCBjb3VudCBvZiBy
ZXBvcnRlZCBlcnJvcnMuIiIiCiAgICAgICAgIHNlbGYuZXJyb3JfY291bnQgKz0gMQpAQCAtNDUz
LDExICs1MzMsMTUgQEAgY2xhc3MgU3R5bGVDaGVja2VyKG9iamVjdCk6CiAgICAgICAgICAgICBj
b250ZW50cyA9IGZpbGUucmVhZCgpCiAKICAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAg
ICAgICBzZWxmLl9zdGRlcnJfd3JpdGUoIlNraXBwaW5nIGlucHV0ICclcyc6IENhbid0IG9wZW4g
Zm9yIHJlYWRpbmdcbiIgJSBmaWxlX3BhdGgpCisgICAgICAgICAgICBtZXNzYWdlID0gJ0NvdWxk
IG5vdCByZWFkIGZpbGUuIFNraXBwaW5nOiAiJXMiJyAlIGZpbGVfcGF0aAorICAgICAgICAgICAg
X2xvZy53YXJuKG1lc3NhZ2UpCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBsaW5lcyA9
IGNvbnRlbnRzLnNwbGl0KCJcbiIpCiAKKyAgICAgICAgIyBGSVhNRTogTWFrZSBhIENhcnJpYWdl
UmV0dXJuUHJvY2Vzc29yIGZvciB0aGlzIGxvZ2ljLCBhbmQgcHV0CisgICAgICAgICMgICAgICAg
IGl0IGluIHByb2Nlc3NvcnMuY29tbW9uLiAgVGhlIHByb2Nlc3MoKSBtZXRob2Qgc2hvdWxkCisg
ICAgICAgICMgICAgICAgIHJldHVybiB0aGUgbGluZXMgd2l0aCB0aGUgY2FycmlhZ2UgcmV0dXJu
cyBzdHJpcHBlZC4KICAgICAgICAgZm9yIGxpbmVfbnVtYmVyIGluIHJhbmdlKGxlbihsaW5lcykp
OgogICAgICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IHVzZSB0aGUgU1ZOICJl
b2wtc3R5bGUiIHByb3BlcnR5CiAgICAgICAgICAgICAjICAgICAgICBvciBhIHdoaXRlIGxpc3Qg
dG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvIGRvCkBAIC01MDQsOCArNTg4LDggQEAgY2xhc3Mg
U3R5bGVDaGVja2VyKG9iamVjdCk6CiAgICAgICAgIGlmIGRpc3BhdGNoZXIuc2hvdWxkX3NraXBf
d2l0aG91dF93YXJuaW5nKGZpbGVfcGF0aCk6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAg
aWYgZGlzcGF0Y2hlci5zaG91bGRfc2tpcF93aXRoX3dhcm5pbmcoZmlsZV9wYXRoKToKLSAgICAg
ICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZSgnSWdub3JpbmcgIiVzIjogdGhpcyBmaWxlIGlzIGV4
ZW1wdCBmcm9tIHRoZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlIGd1
aWRlLlxuIiAlIGZpbGVfcGF0aCkKKyAgICAgICAgICAgIF9sb2cud2FybignRmlsZSBleGVtcHQg
ZnJvbSBzdHlsZSBndWlkZS4gU2tpcHBpbmc6ICIlcyInCisgICAgICAgICAgICAgICAgICAgICAg
JSBmaWxlX3BhdGgpCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICB2ZXJib3NpdHkgPSBz
ZWxmLl9jb25maWd1cmF0aW9uLnZlcmJvc2l0eQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CmluZGV4IGJhODI2NzAuLjJm
YjI3YzQgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcl91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJfdW5pdHRlc3QucHkKQEAgLTM0LDYgKzM0LDcgQEAKIAogIiIiVW5pdCB0ZXN0cyBm
b3Igc3R5bGUucHkuIiIiCiAKK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdW5pdHRlc3QKIAogaW1w
b3J0IGNoZWNrZXIgYXMgc3R5bGUKQEAgLTQzLDYgKzQ0LDcgQEAgZnJvbSBjaGVja2VyIGltcG9y
dCBfUEFUSF9SVUxFU19TUEVDSUZJRVIgYXMgUEFUSF9SVUxFU19TUEVDSUZJRVIKIGZyb20gY2hl
Y2tlciBpbXBvcnQgX2FsbF9jYXRlZ29yaWVzCiBmcm9tIGNoZWNrZXIgaW1wb3J0IGNoZWNrX3dl
YmtpdF9zdHlsZV9jb25maWd1cmF0aW9uCiBmcm9tIGNoZWNrZXIgaW1wb3J0IGNoZWNrX3dlYmtp
dF9zdHlsZV9wYXJzZXIKK2Zyb20gY2hlY2tlciBpbXBvcnQgY29uZmlndXJlX2xvZ2dpbmcKIGZy
b20gY2hlY2tlciBpbXBvcnQgUHJvY2Vzc29yRGlzcGF0Y2hlcgogZnJvbSBjaGVja2VyIGltcG9y
dCBTdHlsZUNoZWNrZXIKIGZyb20gY2hlY2tlciBpbXBvcnQgU3R5bGVDaGVja2VyQ29uZmlndXJh
dGlvbgpAQCAtNTUsNiArNTcsNzAgQEAgZnJvbSBwcm9jZXNzb3JzLnB5dGhvbiBpbXBvcnQgUHl0
aG9uUHJvY2Vzc29yCiBmcm9tIHByb2Nlc3NvcnMudGV4dCBpbXBvcnQgVGV4dFByb2Nlc3Nvcgog
CiAKK2NsYXNzIENoZWNrZXJUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJT
dXBwb3J0cyB0aGUgdW5pdCB0ZXN0aW5nIG9mIGxvZyBtZXNzYWdlcy4iIiIKKworICAgIGNsYXNz
IF9Vbml0VGVzdExvZ2dpbmdTdHJlYW0ob2JqZWN0KToKKworICAgICAgICAiIiJSZXR1cm4gYSBm
aWxlLWxpa2Ugb2JqZWN0IGZvciB1bml0IHRlc3RpbmcgbG9nZ2luZy4iIiIKKworICAgICAgICBk
ZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICBzZWxmLm1lc3NhZ2VzID0gW10KKyAgICAg
ICAgICAgICIiIkVhY2ggZWxlbWVudCByZXByZXNlbnRzIGEgbG9nIG1lc3NhZ2UgcGFzc2VkIHRv
IHRoZSBzdHJlYW0uIiIiCisKKyAgICAgICAgZGVmIHdyaXRlKHNlbGYsIG1lc3NhZ2UpOgorICAg
ICAgICAgICAgc2VsZi5tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkKKworICAgICAgICBkZWYgZmx1
c2goc2VsZik6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgX2xvZyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAg
ICAgICAgc3RyZWFtID0gc2VsZi5fVW5pdFRlc3RMb2dnaW5nU3RyZWFtKCkKKyAgICAgICAgc2Vs
Zi5fbG9nX3N0cmVhbSA9IHN0cmVhbQorICAgICAgICBzZWxmLl9oYW5kbGVycyA9IGNvbmZpZ3Vy
ZV9sb2dnaW5nKHN0cmVhbSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIiIi
UmVzZXQgbG9nZ2luZyB0byBpdHMgb3JpZ2luYWwgc3RhdGUuCisKKyAgICAgICAgVGhpcyBtZXRo
b2QgZW5zdXJlcyB0aGF0IHRoZSBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gc2V0IHVwCisgICAgICAg
IGZvciBhIHVuaXQgdGVzdCBkb2VzIG5vdCBlZmZlY3QgbG9nZ2luZyBpbiBvdGhlciB1bml0IHRl
c3RzLgorCisgICAgICAgICIiIgorICAgICAgICBsb2cgPSBzZWxmLl9sb2coKQorICAgICAgICBm
b3IgaGFuZGxlciBpbiBzZWxmLl9oYW5kbGVyczoKKyAgICAgICAgICAgIGxvZy5yZW1vdmVIYW5k
bGVyKGhhbmRsZXIpCisKKyAgICBkZWYgYXNzZXJ0X2xvZ19tZXNzYWdlcyhzZWxmLCBtZXNzYWdl
cyk6CisgICAgICAgICIiIkFzc2VydCB0aGF0IHRoZSBsb2dnZWQgbWVzc2FnZXMgZXF1YWwgdGhl
IGdpdmVuIG1lc3NhZ2VzLiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtZXNzYWdlcywg
c2VsZi5fbG9nX3N0cmVhbS5tZXNzYWdlcykKKworCitjbGFzcyBDb25maWd1cmVMb2dnaW5nVGVz
dChDaGVja2VyVGVzdEJhc2UpOgorCisgICAgIiIiVGVzdHMgdGhlIGNvbmZpZ3VyZV9sb2dnaW5n
KCkgZnVuY3Rpb24uIiIiCisKKyAgICBkZWYgdGVzdF93YXJuaW5nX21lc3NhZ2Uoc2VsZik6Cisg
ICAgICAgIHNlbGYuX2xvZygpLndhcm4oInRlc3QgbWVzc2FnZSIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xvZ19tZXNzYWdlcyhbIldBUk5JTkc6IHRlc3QgbWVzc2FnZVxuIl0pCisKKyAgICBkZWYg
dGVzdF9pbmZvX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuX2xvZygpLmluZm8oInRlc3Qg
bWVzc2FnZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19tZXNzYWdlcyhbInRlc3QgbWVzc2Fn
ZVxuIl0pCisKKyAgICBkZWYgdGVzdF9kZWJ1Z19tZXNzYWdlKHNlbGYpOgorICAgICAgICBzZWxm
Ll9sb2coKS5kZWJ1ZygidGVzdCBtZXNzYWdlIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX21l
c3NhZ2VzKFtdKQorCisgICAgZGVmIHRlc3RfdHdvX21lc3NhZ2VzKHNlbGYpOgorICAgICAgICBz
ZWxmLl9sb2coKS5pbmZvKCJtZXNzYWdlMSIpCisgICAgICAgIHNlbGYuX2xvZygpLmluZm8oIm1l
c3NhZ2UyIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX21lc3NhZ2VzKFsibWVzc2FnZTFcbiIs
ICJtZXNzYWdlMlxuIl0pCisKKwogY2xhc3MgR2xvYmFsVmFyaWFibGVzVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAKICAgICAiIiJUZXN0cyB2YWxpZGl0eSBvZiB0aGUgZ2xvYmFsIHZhcmlhYmxl
cy4iIiIKQEAgLTQzNSw3ICs1MDEsNyBAQCBjbGFzcyBTdHlsZUNoZWNrZXJUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc3R5bGVfY2hlY2tlci5maWxl
X2NvdW50LCAwKQogCiAKLWNsYXNzIFN0eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgorY2xhc3MgU3R5bGVDaGVja2VyQ2hlY2tGaWxlVGVzdChDaGVja2VyVGVzdEJh
c2UpOgogCiAgICAgIiIiVGVzdCB0aGUgY2hlY2tfZmlsZSgpIG1ldGhvZCBvZiB0aGUgU3R5bGVD
aGVja2VyIGNsYXNzLgogCkBAIC00NjEsNiArNTI3LDcgQEAgY2xhc3MgU3R5bGVDaGVja2VyQ2hl
Y2tGaWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAiIiIKICAgICBkZWYgc2V0VXAo
c2VsZik6CisgICAgICAgIENoZWNrZXJUZXN0QmFzZS5zZXRVcChzZWxmKQogICAgICAgICBzZWxm
LmdvdF9maWxlX3BhdGggPSBOb25lCiAgICAgICAgIHNlbGYuZ290X2hhbmRsZV9zdHlsZV9lcnJv
ciA9IE5vbmUKICAgICAgICAgc2VsZi5nb3RfcHJvY2Vzc29yID0gTm9uZQpAQCAtNTM4LDggKzYw
NSw5IEBAIGNsYXNzIFN0eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogCiAgICAgICAgICMgQ2hlY2sgdGhlIG91dGNvbWUuCiAgICAgICAgIHNlbGYuY2FsbF9jaGVj
a19maWxlKGZpbGVfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRfYXR0cmlidXRlcyhOb25lLCBO
b25lLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJZ25vcmluZyAiZ3Rr
MmRyYXdpbmcuYyI6IHRoaXMgZmlsZSBpcyBleGVtcHQgZnJvbSB0aGUgc3R5bGUgZ3VpZGUuXG4n
KQorICAgICAgICBzZWxmLmFzc2VydF9hdHRyaWJ1dGVzKE5vbmUsIE5vbmUsIE5vbmUsICIiKQor
ICAgICAgICBzZWxmLmFzc2VydF9sb2dfbWVzc2FnZXMoWyJXQVJOSU5HOiBGaWxlIGV4ZW1wdCBm
cm9tIHN0eWxlIGd1aWRlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Nr
aXBwaW5nOiAiZ3RrMmRyYXdpbmcuYyJcbiddKQogCiAgICAgZGVmIHRlc3RfY2hlY2tfZmlsZV9v
bl9ub25fc2tpcHBlZChzZWxmKToKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49688</attachid>
            <date>2010-02-27 15:48:26 -0800</date>
            <delta_ts>2010-02-27 20:44:40 -0800</delta_ts>
            <desc>Proposed patch 2</desc>
            <filename>_patch-35484-2.diff</filename>
            <type>text/plain</type>
            <size>14440</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBkZThjM2M1Li4yN2I3NzdjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzQgQEAKIDIwMTAtMDIt
MjcgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RhcnRlZCB1c2luZyB0aGUgbG9n
Z2luZyBtb2R1bGUgaW4gY2hlY2std2Via2l0LXN0eWxlLgorICAgICAgICBUaGlzIHByb3ZpZGVz
IG1vcmUgZGVidWdnaW5nIG9wdGlvbnMgYW5kIGEgbW9yZSBmbGV4aWJsZSwKKyAgICAgICAgdW5p
Zm9ybSB3YXkgdG8gcmVwb3J0IG1lc3NhZ2VzIHRvIHRoZSBlbmQtdXNlci4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU0ODQKKworICAgICAgICAq
IFNjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlOgorICAgICAgICAgIC0gQWRkZWQgYSBjYWxsIHRv
IGNvbmZpZ3VyZV9sb2dnaW5nKCkgaW4gdGhlIGJlZ2lubmluZyBvZiBtYWluKCkuCisgICAgICAg
ICAgLSBSZXBsYWNlZCB0d28gY2FsbHMgdG8gc3lzLnN0ZGVyci53cml0ZSgpIHdpdGggYXBwcm9w
cmlhdGUKKyAgICAgICAgICAgIGxvZ2dpbmcgY2FsbHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CisgICAgICAgICAgLSBBZGRlZCBhIGNvbmZpZ3VyZV9s
b2dnaW5nKCkgbWV0aG9kLgorICAgICAgICAgIC0gQWRkZWQgYSBfTGV2ZWxMb2dnaW5nRmlsdGVy
IGNsYXNzIHRvIGZpbHRlciBvdXQgbG9nIG1lc3NhZ2VzCisgICAgICAgICAgICBhYm92ZSBhIGNl
cnRhaW4gbG9nZ2luZyBsZXZlbC4KKyAgICAgICAgICAtIFJlbW92ZWQgdGhlIF9zdGRlcnJfd3Jp
dGUoKSBtZXRob2QgZnJvbSB0aGUgU3R5bGVDaGVja2VyIGNsYXNzCisgICAgICAgICAgICBhbmQg
cmVwbGFjZWQgaXRzIHVzZSB3aXRoIGFwcHJvcHJpYXRlIGxvZ2dpbmcgY2FsbHMuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHk6CisgICAgICAg
ICAgLSBBZGRlZCBhIENoZWNrZXJUZXN0QmFzZSBjbGFzcyB3aXRoIHNldFVwLCB0ZWFyRG93biwg
YW5kIG90aGVyCisgICAgICAgICAgICBtZXRob2RzIHRvIGZhY2lsaXRhdGUgdGhlIHVuaXQgdGVz
dGluZyBvZiBsb2cgbWVzc2FnZXMuCisgICAgICAgICAgLSBBZGRlZCB0aGUgQ29uZmlndXJlTG9n
Z2luZ1Rlc3QgY2xhc3MgdG8gdW5pdCB0ZXN0IHRoZQorICAgICAgICAgICAgY29uZmlndXJlX2xv
Z2dpbmcoKSBtZXRob2QuCisgICAgICAgICAgLSBVcGRhdGVkIHRoZSBTdHlsZUNoZWNrZXJDaGVj
a0ZpbGVUZXN0IGNsYXNzIGFzIG5lY2Vzc2FyeS4KKworMjAxMC0wMi0yNyAgQ2hyaXMgSmVyZG9u
ZWsgIDxjamVyZG9uZWtAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBM
ZXZpbi4KIAogICAgICAgICBBZGRlZCBQeXRob24gc3R5bGUgY2hlY2tpbmcgdG8gY2hlY2std2Vi
a2l0LXN0eWxlIHVzaW5nCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdl
YmtpdC1zdHlsZSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCmluZGV4
IGVhMmU5NDMuLmYxODg1YjIgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2st
d2Via2l0LXN0eWxlCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxl
CkBAIC00Myw2ICs0Myw3IEBAIHNhbWUgbGluZSwgYnV0IGl0IGlzIGZhciBmcm9tIHBlcmZlY3Qg
KGluIGVpdGhlciBkaXJlY3Rpb24pLgogIiIiCiAKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBsb2dn
aW5nCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc3lzCkBAIC01MCwxMyArNTEs
MjggQEAgaW1wb3J0IHN5cwogaW1wb3J0IHdlYmtpdHB5LnN0eWxlLmNoZWNrZXIgYXMgY2hlY2tl
cgogZnJvbSB3ZWJraXRweS5zdHlsZV9yZWZlcmVuY2VzIGltcG9ydCBTaW1wbGVTY20KIAorX2xv
ZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjaGVjay13ZWJraXQtc3R5bGUiKQorCiBkZWYgbWFpbigp
OgogICAgICMgQ2hhbmdlIHN0ZGVyciB0byB3cml0ZSB3aXRoIHJlcGxhY2VtZW50IGNoYXJhY3Rl
cnMgc28gd2UgZG9uJ3QgZGllCiAgICAgIyBpZiB3ZSB0cnkgdG8gcHJpbnQgc29tZXRoaW5nIGNv
bnRhaW5pbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCi0gICAgc3lzLnN0ZGVyciA9IGNvZGVjcy5T
dHJlYW1SZWFkZXJXcml0ZXIoc3lzLnN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0cmVhZGVyKCd1dGY4JyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHdyaXRlcigndXRmOCcpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNlJykKKyAg
ICBzdGRlcnIgPSBjb2RlY3MuU3RyZWFtUmVhZGVyV3JpdGVyKHN5cy5zdGRlcnIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0cmVhZGVyKCd1dGY4Jyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0d3JpdGVy
KCd1dGY4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVwbGFj
ZScpCisgICAgIyBTZXR0aW5nIGFuICJlbmNvZGluZyIgYXR0cmlidXRlIG9uIHRoZSBzdHJlYW0g
aXMgbmVjZXNzYXJ5IHRvCisgICAgIyBwcmV2ZW50IHRoZSBsb2dnaW5nIG1vZHVsZSBmcm9tIHJh
aXNpbmcgYW4gZXJyb3IuICBTZWUKKyAgICAjIHRoZSBjaGVja2VyLmNvbmZpZ3VyZV9sb2dnaW5n
KCkgZnVuY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgc3RkZXJyLmVuY29kaW5nID0g
IlVURi04IgorCisgICAgIyBGSVhNRTogQ2hhbmdlIHdlYmtpdHB5LnN0eWxlIHNvIHRoYXQgd2Ug
ZG8gbm90IG5lZWQgdG8gb3ZlcndyaXRlCisgICAgIyAgICAgICAgdGhlIGdsb2JhbCBzeXMuc3Rk
ZXJyLiAgVGhpcyBpbnZvbHZlcyB1cGRhdGluZyB0aGUgY29kZSB0bworICAgICMgICAgICAgIGFj
Y2VwdCBhIHN0cmVhbSBwYXJhbWV0ZXIgd2hlcmUgbmVjZXNzYXJ5LCBhbmQgbm90IGNhbGxpbmcK
KyAgICAjICAgICAgICBzeXMuc3RkZXJyIGV4cGxpY2l0bHkgYW55d2hlcmUuCisgICAgc3lzLnN0
ZGVyciA9IHN0ZGVycgorCisgICAgY2hlY2tlci5jb25maWd1cmVfbG9nZ2luZyhzdGRlcnIpCisK
ICAgICBwYXJzZXIgPSBjaGVja2VyLmNoZWNrX3dlYmtpdF9zdHlsZV9wYXJzZXIoKQogICAgIChm
aWxlcywgb3B0aW9ucykgPSBwYXJzZXIucGFyc2Uoc3lzLmFyZ3ZbMTpdKQogCkBAIC03OCw3ICs5
NCw4IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAgICAgIyBGSVhNRTogSWYgdGhlIHJhbmdl
IGlzIGEgIi4uLiIsIHRoZSBjb2RlIHNob3VsZCBmaW5kIHRoZSBjb21tb24gYW5jZXN0b3IgYW5k
CiAgICAgICAgICAgICAgICAgIyBzdGFydCB0aGVyZSAoc2VlIGdpdCBkaWZmIC0taGVscCBmb3Ig
aW5mb3JtYXRpb24gYWJvdXQgaG93IC4uLiB1c3VhbGx5IHdvcmtzKS4KICAgICAgICAgICAgICAg
ICBjb21taXQgPSBjb21taXRbOmNvbW1pdC5maW5kKCcuLicpXQotICAgICAgICAgICAgICAgIHBy
aW50ID4+IHN5cy5zdGRlcnIsICJXYXJuaW5nOiBSYW5nZXMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9y
IC0tZ2l0LWNvbW1pdC4gQ2hlY2tpbmcgYWxsIGNoYW5nZXMgc2luY2UgJXMuXG4iICUgY29tbWl0
CisgICAgICAgICAgICAgICAgX2xvZy53YXJuKCJSYW5nZXMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9y
IC0tZ2l0LWNvbW1pdC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgYWxs
IGNoYW5nZXMgc2luY2UgJXMuIiAlIGNvbW1pdCkKICAgICAgICAgICAgIHBhdGNoID0gc2NtLmNy
ZWF0ZV9wYXRjaF9zaW5jZV9sb2NhbF9jb21taXQoY29tbWl0KQogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKQEAgLTg2LDggKzEwMyw4IEBAIGRl
ZiBtYWluKCk6CiAKICAgICBlcnJvcl9jb3VudCA9IHN0eWxlX2NoZWNrZXIuZXJyb3JfY291bnQK
ICAgICBmaWxlX2NvdW50ID0gc3R5bGVfY2hlY2tlci5maWxlX2NvdW50Ci0gICAgc3lzLnN0ZGVy
ci53cml0ZSgnVG90YWwgZXJyb3JzIGZvdW5kOiAlZCBpbiAlZCBmaWxlc1xuJwotICAgICAgICAg
ICAgICAgICAgICAgJSAoZXJyb3JfY291bnQsIGZpbGVfY291bnQpKQorICAgIF9sb2cuaW5mbygi
VG90YWwgZXJyb3JzIGZvdW5kOiAlZCBpbiAlZCBmaWxlcyIKKyAgICAgICAgICAgICAgJSAoZXJy
b3JfY291bnQsIGZpbGVfY291bnQpKQogICAgICMgV2UgZmFpbCB3aGVuIHN0eWxlIGVycm9ycyBh
cmUgZm91bmQgb3IgdGhlcmUgYXJlIG5vIGNoZWNrZWQgZmlsZXMuCiAgICAgc3lzLmV4aXQoZXJy
b3JfY291bnQgPiAwIG9yIGZpbGVfY291bnQgPT0gMCkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IGZlNjVmNzQuLmQ4MGE1OGUgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTMwLDYg
KzMwLDcgQEAKICIiIkZyb250IGVuZCBvZiBzb21lIHN0eWxlLWNoZWNrZXIgbW9kdWxlcy4iIiIK
IAogaW1wb3J0IGNvZGVjcworaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQg
c3lzCiAKQEAgLTQ1LDYgKzQ2LDcgQEAgZnJvbSBwcm9jZXNzb3JzLmNwcCBpbXBvcnQgQ3BwUHJv
Y2Vzc29yCiBmcm9tIHByb2Nlc3NvcnMucHl0aG9uIGltcG9ydCBQeXRob25Qcm9jZXNzb3IKIGZy
b20gcHJvY2Vzc29ycy50ZXh0IGltcG9ydCBUZXh0UHJvY2Vzc29yCiAKK19sb2cgPSBsb2dnaW5n
LmdldExvZ2dlcigid2Via2l0cHkuc3R5bGUuY2hlY2tlciIpCiAKICMgVGhlc2UgYXJlIGRlZmF1
bHQgb3B0aW9uIHZhbHVlcyBmb3IgdGhlIGNvbW1hbmQtbGluZSBvcHRpb24gcGFyc2VyLgogX0RF
RkFVTFRfVkVSQk9TSVRZID0gMQpAQCAtMjA0LDYgKzIwNiw4NSBAQCBkZWYgY2hlY2tfd2Via2l0
X3N0eWxlX2NvbmZpZ3VyYXRpb24ob3B0aW9ucyk6CiAgICAgICAgICAgICAgICB2ZXJib3NpdHk9
b3B0aW9ucy52ZXJib3NpdHkpCiAKIAorIyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG1vcmUgdmVy
Ym9zZSBsb2dnaW5nIGZvciBkZWJ1ZyBwdXJwb3Nlcy4KKyMgICAgICAgIFRoaXMgY2FuIHVzZSBh
IGZvcm1hdHRlciBsaWtlIHRoZSBmb2xsb3dpbmcsIGZvciBleGFtcGxlLS0KKyMKKyMgICAgICAg
IGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKCIlKG5hbWUpczogWyUobGV2ZWxuYW1lKXNd
ICUobWVzc2FnZSlzIikKK2RlZiBjb25maWd1cmVfbG9nZ2luZyhzdHJlYW0pOgorICAgICIiIkNv
bmZpZ3VyZSBsb2dnaW5nLCBhbmQgcmV0dXJuIHRoZSBsaXN0IG9mIGhhbmRsZXJzIGFkZGVkLgor
CisgICAgQ29uZmlndXJlcyB0aGUgcm9vdCBsb2dnZXIgdG8gbG9nIElORk8gbWVzc2FnZXMgYW5k
IGhpZ2hlci4KKyAgICBDb25maWd1cmVzIFdBUk5JTkcgbWVzc2FnZXMgYW5kIGFib3ZlIHRvIGlu
Y2x1ZGUgdGhlIGxvZ2dpbmcgbGV2ZWwKKyAgICBhbmQgbWVzc2FnZXMgYmVsb3cgV0FSTklORyBu
b3QgdG8gaW5jbHVkZSBpdC4KKworICAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIHJl
ZmVyZW5jZXMgdG8gdGhlIGxvZ2dpbmcgaGFuZGxlcnMKKyAgICBhZGRlZCBzbyB0aGF0IHRoZSBj
YWxsZXIgY2FuIGxhdGVyIHJlbW92ZSB0aGUgaGFuZGxlcnMgdXNpbmcKKyAgICBsb2dnZXIucmVt
b3ZlSGFuZGxlci4gIFRoaXMgaXMgcHJpbWFyaWx5IHVzZWZ1bCBpbiB0ZXN0aW5nCisgICAgc2l0
dWF0aW9ucyB3aGVyZSB0aGUgY2FsbGVyIG1heSB3YW50IHRvIGVuYWJsZSBsb2dnaW5nIHRlbXBv
cmFyaWx5CisgICAgYW5kIHRoZW4gdW5kbyB0aGUgZW5hYmxpbmcuCisKKyAgICBBcmdzOgorICAg
ICAgc3RyZWFtOiBBIGZpbGUtbGlrZSBvYmplY3QgdG8gd2hpY2ggdG8gbG9nLiAgVGhlIHN0cmVh
bSBtdXN0CisgICAgICAgICAgICAgIGRlZmluZSBhbiAiZW5jb2RpbmciIGRhdGEgYXR0cmlidXRl
LCBvciBlbHNlIGxvZ2dpbmcKKyAgICAgICAgICAgICAgcmFpc2VzIGFuIGVycm9yLgorCisgICAg
IiIiCisgICAgIyBJZiB0aGUgc3RyZWFtIGRvZXMgbm90IGRlZmluZSBhbiAiZW5jb2RpbmciIGRh
dGEgYXR0cmlidXRlLCB0aGUKKyAgICAjIGxvZ2dpbmcgbW9kdWxlIGNhbiB0aHJvdyBhbiBlcnJv
ciBsaWtlIHRoZSBmb2xsb3dpbmc6CisgICAgIworICAgICMgVHJhY2ViYWNrIChtb3N0IHJlY2Vu
dCBjYWxsIGxhc3QpOgorICAgICMgICBGaWxlICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Q
eXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuNi8uLi4KKyAgICAjICAgICAgICAgbGliL3B5dGhv
bjIuNi9sb2dnaW5nL19faW5pdF9fLnB5IiwgbGluZSA3NjEsIGluIGVtaXQKKyAgICAjICAgICBz
ZWxmLnN0cmVhbS53cml0ZShmcyAlIG1zZy5lbmNvZGUoc2VsZi5zdHJlYW0uZW5jb2RpbmcpKQor
ICAgICMgTG9va3VwRXJyb3I6IHVua25vd24gZW5jb2Rpbmc6IHVua25vd24KKworICAgICMgSGFu
ZGxlcyBsb2dnaW5nLldBUk5JTkcgYW5kIGFib3ZlLgorICAgIGVycm9yX2hhbmRsZXIgPSBsb2dn
aW5nLlN0cmVhbUhhbmRsZXIoc3RyZWFtKQorICAgIGVycm9yX2hhbmRsZXIuc2V0TGV2ZWwobG9n
Z2luZy5XQVJOSU5HKQorICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKCIlKGxldmVs
bmFtZSlzOiAlKG1lc3NhZ2UpcyIpCisgICAgZXJyb3JfaGFuZGxlci5zZXRGb3JtYXR0ZXIoZm9y
bWF0dGVyKQorCisgICAgIyBIYW5kbGVzIHJlY29yZHMgc3RyaWN0bHkgYmVsb3cgbG9nZ2luZy5X
QVJOSU5HLgorICAgIG5vbl9lcnJvcl9oYW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN0
cmVhbSkKKyAgICBub25fZXJyb3JfZmlsdGVyID0gX0xldmVsTG9nZ2luZ0ZpbHRlcihsb2dnaW5n
LldBUk5JTkcpCisgICAgbm9uX2Vycm9yX2hhbmRsZXIuYWRkRmlsdGVyKG5vbl9lcnJvcl9maWx0
ZXIpCisgICAgZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoIiUobWVzc2FnZSlzIikKKyAg
ICBub25fZXJyb3JfaGFuZGxlci5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVyKQorCisgICAgbG9nZ2Vy
ID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8p
CisKKyAgICBoYW5kbGVycyA9IFtlcnJvcl9oYW5kbGVyLCBub25fZXJyb3JfaGFuZGxlcl0KKwor
ICAgIGZvciBoYW5kbGVyIGluIGhhbmRsZXJzOgorICAgICAgICBsb2dnZXIuYWRkSGFuZGxlciho
YW5kbGVyKQorCisgICAgcmV0dXJuIGhhbmRsZXJzCisKKworIyBGSVhNRTogQWZ0ZXIgd2UgZ2V0
IG1vcmUgZmFtaWxpYXIgd2l0aCB1c2luZyBtb3JlIGFkdmFuY2VkIGxvZ2dpbmcKKyMgICAgICAg
IHRlY2huaXF1ZXMgbGlrZSB0aGUgZmlsdGVyIGNsYXNzIGJlbG93LCB3ZSBtYXkgd2FudCB0byBt
b3ZlCisjICAgICAgICBjbGFzc2VzIGxpa2UgdGhpcyB0byBhIHdlYmtpdHB5LmluZnJhc3RydWN0
dXJlLmxvZ2dpbmcgbW9kdWxlLgorY2xhc3MgX0xldmVsTG9nZ2luZ0ZpbHRlcihvYmplY3QpOgor
CisgICAgIiIiQSBsb2dnaW5nIGZpbHRlciBmb3IgYmxvY2tpbmcgcmVjb3JkcyBhdCBvciBhYm92
ZSBhIGNlcnRhaW4gbGV2ZWwuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2luZ19s
ZXZlbCk6CisgICAgICAgICIiIkNyZWF0ZSBhIF9MZXZlbExvZ2dpbmdGaWx0ZXIuCisKKyAgICAg
ICAgQXJnczoKKyAgICAgICAgICBsb2dnaW5nX2xldmVsOiBUaGUgbG9nZ2luZyBsZXZlbCBjdXQt
b2ZmLiAgTG9nZ2luZyBsZXZlbHMgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICBvciBhYm92
ZSB0aGlzIGxldmVsIHdpbGwgbm90IGJlIGxvZ2dlZC4KKworICAgICAgICAiIiIKKyAgICAgICAg
c2VsZi5fbG9nZ2luZ19sZXZlbCA9IGxvZ2dpbmdfbGV2ZWwKKworICAgICMgVGhlIGxvZ2dpbmcg
bW9kdWxlIHJlcXVpcmVzIHRoYXQgdGhpcyBtZXRob2QgYmUgZGVmaW5lZC4KKyAgICBkZWYgZmls
dGVyKHNlbGYsIGxvZ19yZWNvcmQpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciBnaXZlbiB0
aGUgTG9nUmVjb3JkIHNob3VsZCBiZSBsb2dnZWQuIiIiCisgICAgICAgIHJldHVybiBsb2dfcmVj
b3JkLmxldmVsbm8gPCBzZWxmLl9sb2dnaW5nX2xldmVsCisKKwogIyBFbnVtLWxpa2UgaWRpb20K
IGNsYXNzIEZpbGVUeXBlOgogCkBAIC0zMDYsNiArMzg3LDggQEAgY2xhc3MgUHJvY2Vzc29yRGlz
cGF0Y2hlcihvYmplY3QpOgogICAgICAgICByZXR1cm4gcHJvY2Vzc29yCiAKIAorIyBGSVhNRTog
UmVtb3ZlIHRoZSBzdGRlcnJfd3JpdGUgYXR0cmlidXRlIGZyb20gdGhpcyBjbGFzcyBhbmQgcmVw
bGFjZQorIyAgICAgICAgaXRzIHVzZSB3aXRoIGNhbGxzIHRvIGEgbG9nZ2luZyBtb2R1bGUgbG9n
Z2VyLgogY2xhc3MgU3R5bGVDaGVja2VyQ29uZmlndXJhdGlvbihvYmplY3QpOgogCiAgICAgIiIi
U3RvcmVzIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGZvciB0aGUgU3R5bGVDaGVja2VyIGNsYXNzLgpA
QCAtNDIzLDkgKzUwNiw2IEBAIGNsYXNzIFN0eWxlQ2hlY2tlcihvYmplY3QpOgogICAgICAgICBz
ZWxmLmVycm9yX2NvdW50ID0gMAogICAgICAgICBzZWxmLmZpbGVfY291bnQgPSAwCiAKLSAgICBk
ZWYgX3N0ZGVycl93cml0ZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgc2VsZi5fY29uZmlndXJh
dGlvbi5zdGRlcnJfd3JpdGUobWVzc2FnZSkKLQogICAgIGRlZiBfaW5jcmVtZW50X2Vycm9yX2Nv
dW50KHNlbGYpOgogICAgICAgICAiIiJJbmNyZW1lbnQgdGhlIHRvdGFsIGNvdW50IG9mIHJlcG9y
dGVkIGVycm9ycy4iIiIKICAgICAgICAgc2VsZi5lcnJvcl9jb3VudCArPSAxCkBAIC00NTMsMTEg
KzUzMywxNSBAQCBjbGFzcyBTdHlsZUNoZWNrZXIob2JqZWN0KToKICAgICAgICAgICAgIGNvbnRl
bnRzID0gZmlsZS5yZWFkKCkKIAogICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAg
IHNlbGYuX3N0ZGVycl93cml0ZSgiU2tpcHBpbmcgaW5wdXQgJyVzJzogQ2FuJ3Qgb3BlbiBmb3Ig
cmVhZGluZ1xuIiAlIGZpbGVfcGF0aCkKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnQ291bGQgbm90
IHJlYWQgZmlsZS4gU2tpcHBpbmc6ICIlcyInICUgZmlsZV9wYXRoCisgICAgICAgICAgICBfbG9n
Lndhcm4obWVzc2FnZSkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGxpbmVzID0gY29u
dGVudHMuc3BsaXQoIlxuIikKIAorICAgICAgICAjIEZJWE1FOiBNYWtlIGEgQ2FycmlhZ2VSZXR1
cm5Qcm9jZXNzb3IgZm9yIHRoaXMgbG9naWMsIGFuZCBwdXQKKyAgICAgICAgIyAgICAgICAgaXQg
aW4gcHJvY2Vzc29ycy5jb21tb24uICBUaGUgcHJvY2VzcygpIG1ldGhvZCBzaG91bGQKKyAgICAg
ICAgIyAgICAgICAgcmV0dXJuIHRoZSBsaW5lcyB3aXRoIHRoZSBjYXJyaWFnZSByZXR1cm5zIHN0
cmlwcGVkLgogICAgICAgICBmb3IgbGluZV9udW1iZXIgaW4gcmFuZ2UobGVuKGxpbmVzKSk6CiAg
ICAgICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgdXNlIHRoZSBTVk4gImVvbC1z
dHlsZSIgcHJvcGVydHkKICAgICAgICAgICAgICMgICAgICAgIG9yIGEgd2hpdGUgbGlzdCB0byBk
ZWNpZGUgd2hldGhlciBvciBub3QgdG8gZG8KQEAgLTUwNCw4ICs1ODgsOCBAQCBjbGFzcyBTdHls
ZUNoZWNrZXIob2JqZWN0KToKICAgICAgICAgaWYgZGlzcGF0Y2hlci5zaG91bGRfc2tpcF93aXRo
b3V0X3dhcm5pbmcoZmlsZV9wYXRoKToKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBk
aXNwYXRjaGVyLnNob3VsZF9za2lwX3dpdGhfd2FybmluZyhmaWxlX3BhdGgpOgotICAgICAgICAg
ICAgc2VsZi5fc3RkZXJyX3dyaXRlKCdJZ25vcmluZyAiJXMiOiB0aGlzIGZpbGUgaXMgZXhlbXB0
IGZyb20gdGhlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3R5bGUgZ3VpZGUu
XG4iICUgZmlsZV9wYXRoKQorICAgICAgICAgICAgX2xvZy53YXJuKCdGaWxlIGV4ZW1wdCBmcm9t
IHN0eWxlIGd1aWRlLiBTa2lwcGluZzogIiVzIicKKyAgICAgICAgICAgICAgICAgICAgICAlIGZp
bGVfcGF0aCkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIHZlcmJvc2l0eSA9IHNlbGYu
X2NvbmZpZ3VyYXRpb24udmVyYm9zaXR5CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkKaW5kZXggYmE4MjY3MC4uMmZiMjdj
NCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
X3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcl91bml0dGVzdC5weQpAQCAtMzQsNiArMzQsNyBAQAogCiAiIiJVbml0IHRlc3RzIGZvciBz
dHlsZS5weS4iIiIKIAoraW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB1bml0dGVzdAogCiBpbXBvcnQg
Y2hlY2tlciBhcyBzdHlsZQpAQCAtNDMsNiArNDQsNyBAQCBmcm9tIGNoZWNrZXIgaW1wb3J0IF9Q
QVRIX1JVTEVTX1NQRUNJRklFUiBhcyBQQVRIX1JVTEVTX1NQRUNJRklFUgogZnJvbSBjaGVja2Vy
IGltcG9ydCBfYWxsX2NhdGVnb3JpZXMKIGZyb20gY2hlY2tlciBpbXBvcnQgY2hlY2tfd2Via2l0
X3N0eWxlX2NvbmZpZ3VyYXRpb24KIGZyb20gY2hlY2tlciBpbXBvcnQgY2hlY2tfd2Via2l0X3N0
eWxlX3BhcnNlcgorZnJvbSBjaGVja2VyIGltcG9ydCBjb25maWd1cmVfbG9nZ2luZwogZnJvbSBj
aGVja2VyIGltcG9ydCBQcm9jZXNzb3JEaXNwYXRjaGVyCiBmcm9tIGNoZWNrZXIgaW1wb3J0IFN0
eWxlQ2hlY2tlcgogZnJvbSBjaGVja2VyIGltcG9ydCBTdHlsZUNoZWNrZXJDb25maWd1cmF0aW9u
CkBAIC01NSw2ICs1Nyw3MCBAQCBmcm9tIHByb2Nlc3NvcnMucHl0aG9uIGltcG9ydCBQeXRob25Q
cm9jZXNzb3IKIGZyb20gcHJvY2Vzc29ycy50ZXh0IGltcG9ydCBUZXh0UHJvY2Vzc29yCiAKIAor
Y2xhc3MgQ2hlY2tlclRlc3RCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlN1cHBv
cnRzIHRoZSB1bml0IHRlc3Rpbmcgb2YgbG9nIG1lc3NhZ2VzLiIiIgorCisgICAgY2xhc3MgX1Vu
aXRUZXN0TG9nZ2luZ1N0cmVhbShvYmplY3QpOgorCisgICAgICAgICIiIlJldHVybiBhIGZpbGUt
bGlrZSBvYmplY3QgZm9yIHVuaXQgdGVzdGluZyBsb2dnaW5nLiIiIgorCisgICAgICAgIGRlZiBf
X2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYubWVzc2FnZXMgPSBbXQorICAgICAgICAg
ICAgIiIiRWFjaCBlbGVtZW50IHJlcHJlc2VudHMgYSBsb2cgbWVzc2FnZSBwYXNzZWQgdG8gdGhl
IHN0cmVhbS4iIiIKKworICAgICAgICBkZWYgd3JpdGUoc2VsZiwgbWVzc2FnZSk6CisgICAgICAg
ICAgICBzZWxmLm1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQorCisgICAgICAgIGRlZiBmbHVzaChz
ZWxmKToKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiBfbG9nKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gbG9nZ2luZy5nZXRMb2dnZXIoKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAg
ICBzdHJlYW0gPSBzZWxmLl9Vbml0VGVzdExvZ2dpbmdTdHJlYW0oKQorICAgICAgICBzZWxmLl9s
b2dfc3RyZWFtID0gc3RyZWFtCisgICAgICAgIHNlbGYuX2hhbmRsZXJzID0gY29uZmlndXJlX2xv
Z2dpbmcoc3RyZWFtKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAiIiJSZXNl
dCBsb2dnaW5nIHRvIGl0cyBvcmlnaW5hbCBzdGF0ZS4KKworICAgICAgICBUaGlzIG1ldGhvZCBl
bnN1cmVzIHRoYXQgdGhlIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBzZXQgdXAKKyAgICAgICAgZm9y
IGEgdW5pdCB0ZXN0IGRvZXMgbm90IGVmZmVjdCBsb2dnaW5nIGluIG90aGVyIHVuaXQgdGVzdHMu
CisKKyAgICAgICAgIiIiCisgICAgICAgIGxvZyA9IHNlbGYuX2xvZygpCisgICAgICAgIGZvciBo
YW5kbGVyIGluIHNlbGYuX2hhbmRsZXJzOgorICAgICAgICAgICAgbG9nLnJlbW92ZUhhbmRsZXIo
aGFuZGxlcikKKworICAgIGRlZiBhc3NlcnRfbG9nX21lc3NhZ2VzKHNlbGYsIG1lc3NhZ2VzKToK
KyAgICAgICAgIiIiQXNzZXJ0IHRoYXQgdGhlIGxvZ2dlZCBtZXNzYWdlcyBlcXVhbCB0aGUgZ2l2
ZW4gbWVzc2FnZXMuIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1lc3NhZ2VzLCBzZWxm
Ll9sb2dfc3RyZWFtLm1lc3NhZ2VzKQorCisKK2NsYXNzIENvbmZpZ3VyZUxvZ2dpbmdUZXN0KENo
ZWNrZXJUZXN0QmFzZSk6CisKKyAgICAiIiJUZXN0cyB0aGUgY29uZmlndXJlX2xvZ2dpbmcoKSBm
dW5jdGlvbi4iIiIKKworICAgIGRlZiB0ZXN0X3dhcm5pbmdfbWVzc2FnZShzZWxmKToKKyAgICAg
ICAgc2VsZi5fbG9nKCkud2FybigidGVzdCBtZXNzYWdlIikKKyAgICAgICAgc2VsZi5hc3NlcnRf
bG9nX21lc3NhZ2VzKFsiV0FSTklORzogdGVzdCBtZXNzYWdlXG4iXSkKKworICAgIGRlZiB0ZXN0
X2luZm9fbWVzc2FnZShzZWxmKToKKyAgICAgICAgc2VsZi5fbG9nKCkuaW5mbygidGVzdCBtZXNz
YWdlIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX21lc3NhZ2VzKFsidGVzdCBtZXNzYWdlXG4i
XSkKKworICAgIGRlZiB0ZXN0X2RlYnVnX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuX2xv
ZygpLmRlYnVnKCJ0ZXN0IG1lc3NhZ2UiKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbWVzc2Fn
ZXMoW10pCisKKyAgICBkZWYgdGVzdF90d29fbWVzc2FnZXMoc2VsZik6CisgICAgICAgIHNlbGYu
X2xvZygpLmluZm8oIm1lc3NhZ2UxIikKKyAgICAgICAgc2VsZi5fbG9nKCkuaW5mbygibWVzc2Fn
ZTIiKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbWVzc2FnZXMoWyJtZXNzYWdlMVxuIiwgIm1l
c3NhZ2UyXG4iXSkKKworCiBjbGFzcyBHbG9iYWxWYXJpYWJsZXNUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKIAogICAgICIiIlRlc3RzIHZhbGlkaXR5IG9mIHRoZSBnbG9iYWwgdmFyaWFibGVzLiIi
IgpAQCAtNDM1LDcgKzUwMSw3IEBAIGNsYXNzIFN0eWxlQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzdHlsZV9jaGVja2VyLmZpbGVfY291
bnQsIDApCiAKIAotY2xhc3MgU3R5bGVDaGVja2VyQ2hlY2tGaWxlVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CitjbGFzcyBTdHlsZUNoZWNrZXJDaGVja0ZpbGVUZXN0KENoZWNrZXJUZXN0QmFzZSk6
CiAKICAgICAiIiJUZXN0IHRoZSBjaGVja19maWxlKCkgbWV0aG9kIG9mIHRoZSBTdHlsZUNoZWNr
ZXIgY2xhc3MuCiAKQEAgLTQ2MSw2ICs1MjcsNyBAQCBjbGFzcyBTdHlsZUNoZWNrZXJDaGVja0Zp
bGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICIiIgogICAgIGRlZiBzZXRVcChzZWxm
KToKKyAgICAgICAgQ2hlY2tlclRlc3RCYXNlLnNldFVwKHNlbGYpCiAgICAgICAgIHNlbGYuZ290
X2ZpbGVfcGF0aCA9IE5vbmUKICAgICAgICAgc2VsZi5nb3RfaGFuZGxlX3N0eWxlX2Vycm9yID0g
Tm9uZQogICAgICAgICBzZWxmLmdvdF9wcm9jZXNzb3IgPSBOb25lCkBAIC01MzgsOCArNjA1LDkg
QEAgY2xhc3MgU3R5bGVDaGVja2VyQ2hlY2tGaWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAK
ICAgICAgICAgIyBDaGVjayB0aGUgb3V0Y29tZS4KICAgICAgICAgc2VsZi5jYWxsX2NoZWNrX2Zp
bGUoZmlsZV9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydF9hdHRyaWJ1dGVzKE5vbmUsIE5vbmUs
IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lnbm9yaW5nICJndGsyZHJh
d2luZy5jIjogdGhpcyBmaWxlIGlzIGV4ZW1wdCBmcm9tIHRoZSBzdHlsZSBndWlkZS5cbicpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJpYnV0ZXMoTm9uZSwgTm9uZSwgTm9uZSwgIiIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xvZ19tZXNzYWdlcyhbIldBUk5JTkc6IEZpbGUgZXhlbXB0IGZyb20g
c3R5bGUgZ3VpZGUuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2tpcHBp
bmc6ICJndGsyZHJhd2luZy5jIlxuJ10pCiAKICAgICBkZWYgdGVzdF9jaGVja19maWxlX29uX25v
bl9za2lwcGVkKHNlbGYpOgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49691</attachid>
            <date>2010-02-27 20:44:40 -0800</date>
            <delta_ts>2010-03-02 00:18:17 -0800</delta_ts>
            <desc>Proposed patch 3</desc>
            <filename>_patch-35484-3.diff</filename>
            <type>text/plain</type>
            <size>19994</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBkZThjM2M1Li4wYmZhZDI3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDYgQEAKIDIwMTAtMDIt
MjcgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RhcnRlZCB1c2luZyB0aGUgbG9n
Z2luZyBtb2R1bGUgaW4gY2hlY2std2Via2l0LXN0eWxlLgorICAgICAgICBUaGlzIHByb3ZpZGVz
IG1vcmUgb3B0aW9ucyBmb3IgZGVidWdnaW5nIGFuZCBhIG1vcmUgZmxleGlibGUsCisgICAgICAg
IHVuaWZvcm0gd2F5IHRvIHJlcG9ydCBtZXNzYWdlcyB0byB0aGUgZW5kLXVzZXIuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NDg0CisKKyAgICAg
ICAgQWxzbyBpbmNsdWRlZCBjbGFzc2VzIGluIGEgY2VudHJhbCBsb2NhdGlvbiB0byBmYWNpbGl0
YXRlCisgICAgICAgIHRoZSB1bml0IHRlc3Rpbmcgb2YgbG9nZ2luZyBjb2RlIChzZXRVcCBhbmQg
dGVhckRvd24gb2YgdW5pdAorICAgICAgICB0ZXN0IGxvZ2dpbmcgY29uZmlndXJhdGlvbnMsIGV0
YykuCisKKyAgICAgICAgKiBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZToKKyAgICAgICAgICAt
IEFkZGVkIGEgY2FsbCB0byBjb25maWd1cmVfbG9nZ2luZygpIGluIHRoZSBiZWdpbm5pbmcgb2Yg
bWFpbigpLgorICAgICAgICAgIC0gUmVwbGFjZWQgdHdvIGNhbGxzIHRvIHN5cy5zdGRlcnIud3Jp
dGUoKSB3aXRoIGFwcHJvcHJpYXRlCisgICAgICAgICAgICBsb2dnaW5nIGNhbGxzLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9pbml0L3drbG9nZ2luZy5weTogQWRkZWQuCisgICAgICAg
ICAgLSBBZGRlZCBhIFVuaXRUZXN0TG9nU3RyZWFtIGNsYXNzIHRvIGNhcHR1cmUgbG9nIG91dHB1
dAorICAgICAgICAgICAgZHVyaW5nIHVuaXQgdGVzdHMuCisgICAgICAgICAgLSBBZGRlZCBhIFVu
aXRUZXN0TG9nIGNsYXNzIHRoYXQgcHJvdmlkZXMgY29udmVuaWVuY2UgbWV0aG9kcworICAgICAg
ICAgICAgZm9yIHVuaXQtdGVzdGluZyBsb2dnaW5nIGNvZGUuCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CisgICAgICAgICAgLSBBZGRlZCBhIGNvbmZpZ3Vy
ZV9sb2dnaW5nKCkgbWV0aG9kLgorICAgICAgICAgIC0gQWRkZWQgYSBfTGV2ZWxMb2dnaW5nRmls
dGVyIGNsYXNzIHRvIGZpbHRlciBvdXQgbG9nIG1lc3NhZ2VzCisgICAgICAgICAgICBhYm92ZSBh
IGNlcnRhaW4gbG9nZ2luZyBsZXZlbC4KKyAgICAgICAgICAtIFJlbW92ZWQgdGhlIF9zdGRlcnJf
d3JpdGUoKSBtZXRob2QgZnJvbSB0aGUgU3R5bGVDaGVja2VyIGNsYXNzCisgICAgICAgICAgICBh
bmQgcmVwbGFjZWQgaXRzIHVzZSB3aXRoIGFwcHJvcHJpYXRlIGxvZ2dpbmcgY2FsbHMuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHk6CisgICAg
ICAgICAgLSBBZGRlZCBhIENvbmZpZ3VyZUxvZ2dpbmdUZXN0IGNsYXNzIHRvIHVuaXQgdGVzdCB0
aGUKKyAgICAgICAgICAgIGNvbmZpZ3VyZV9sb2dnaW5nKCkgbWV0aG9kLgorICAgICAgICAgIC0g
VXBkYXRlZCB0aGUgU3R5bGVDaGVja2VyQ2hlY2tGaWxlVGVzdCBjbGFzcyBhcyBuZWNlc3Nhcnku
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHk6CisgICAg
ICAgICAgLSBBZGRlZCByZWZlcmVuY2VzIHRvIHdrbG9nZ2luZy5Vbml0VGVzdExvZyBhbmQKKyAg
ICAgICAgICAgIHdrbG9nZ2luZy5Vbml0VGVzdExvZ1N0cmVhbS4KKworMjAxMC0wMi0yNyAgQ2hy
aXMgSmVyZG9uZWsgIDxjamVyZG9uZWtAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBi
eSBEYXZpZCBMZXZpbi4KIAogICAgICAgICBBZGRlZCBQeXRob24gc3R5bGUgY2hlY2tpbmcgdG8g
Y2hlY2std2Via2l0LXN0eWxlIHVzaW5nCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L2NoZWNrLXdlYmtpdC1zdHlsZSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0
eWxlCmluZGV4IGVhMmU5NDMuLmYxODg1YjIgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvY2hlY2std2Via2l0LXN0eWxlCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Vi
a2l0LXN0eWxlCkBAIC00Myw2ICs0Myw3IEBAIHNhbWUgbGluZSwgYnV0IGl0IGlzIGZhciBmcm9t
IHBlcmZlY3QgKGluIGVpdGhlciBkaXJlY3Rpb24pLgogIiIiCiAKIGltcG9ydCBjb2RlY3MKK2lt
cG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc3lzCkBAIC01
MCwxMyArNTEsMjggQEAgaW1wb3J0IHN5cwogaW1wb3J0IHdlYmtpdHB5LnN0eWxlLmNoZWNrZXIg
YXMgY2hlY2tlcgogZnJvbSB3ZWJraXRweS5zdHlsZV9yZWZlcmVuY2VzIGltcG9ydCBTaW1wbGVT
Y20KIAorX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjaGVjay13ZWJraXQtc3R5bGUiKQorCiBk
ZWYgbWFpbigpOgogICAgICMgQ2hhbmdlIHN0ZGVyciB0byB3cml0ZSB3aXRoIHJlcGxhY2VtZW50
IGNoYXJhY3RlcnMgc28gd2UgZG9uJ3QgZGllCiAgICAgIyBpZiB3ZSB0cnkgdG8gcHJpbnQgc29t
ZXRoaW5nIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCi0gICAgc3lzLnN0ZGVyciA9
IGNvZGVjcy5TdHJlYW1SZWFkZXJXcml0ZXIoc3lzLnN0ZGVyciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0cmVhZGVyKCd1dGY4JyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHdyaXRlcign
dXRmOCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBs
YWNlJykKKyAgICBzdGRlcnIgPSBjb2RlY3MuU3RyZWFtUmVhZGVyV3JpdGVyKHN5cy5zdGRlcnIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0cmVhZGVy
KCd1dGY4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3Mu
Z2V0d3JpdGVyKCd1dGY4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncmVwbGFjZScpCisgICAgIyBTZXR0aW5nIGFuICJlbmNvZGluZyIgYXR0cmlidXRlIG9uIHRo
ZSBzdHJlYW0gaXMgbmVjZXNzYXJ5IHRvCisgICAgIyBwcmV2ZW50IHRoZSBsb2dnaW5nIG1vZHVs
ZSBmcm9tIHJhaXNpbmcgYW4gZXJyb3IuICBTZWUKKyAgICAjIHRoZSBjaGVja2VyLmNvbmZpZ3Vy
ZV9sb2dnaW5nKCkgZnVuY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgc3RkZXJyLmVu
Y29kaW5nID0gIlVURi04IgorCisgICAgIyBGSVhNRTogQ2hhbmdlIHdlYmtpdHB5LnN0eWxlIHNv
IHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gb3ZlcndyaXRlCisgICAgIyAgICAgICAgdGhlIGdsb2Jh
bCBzeXMuc3RkZXJyLiAgVGhpcyBpbnZvbHZlcyB1cGRhdGluZyB0aGUgY29kZSB0bworICAgICMg
ICAgICAgIGFjY2VwdCBhIHN0cmVhbSBwYXJhbWV0ZXIgd2hlcmUgbmVjZXNzYXJ5LCBhbmQgbm90
IGNhbGxpbmcKKyAgICAjICAgICAgICBzeXMuc3RkZXJyIGV4cGxpY2l0bHkgYW55d2hlcmUuCisg
ICAgc3lzLnN0ZGVyciA9IHN0ZGVycgorCisgICAgY2hlY2tlci5jb25maWd1cmVfbG9nZ2luZyhz
dGRlcnIpCisKICAgICBwYXJzZXIgPSBjaGVja2VyLmNoZWNrX3dlYmtpdF9zdHlsZV9wYXJzZXIo
KQogICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZXIucGFyc2Uoc3lzLmFyZ3ZbMTpdKQogCkBA
IC03OCw3ICs5NCw4IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAgICAgIyBGSVhNRTogSWYg
dGhlIHJhbmdlIGlzIGEgIi4uLiIsIHRoZSBjb2RlIHNob3VsZCBmaW5kIHRoZSBjb21tb24gYW5j
ZXN0b3IgYW5kCiAgICAgICAgICAgICAgICAgIyBzdGFydCB0aGVyZSAoc2VlIGdpdCBkaWZmIC0t
aGVscCBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IC4uLiB1c3VhbGx5IHdvcmtzKS4KICAgICAg
ICAgICAgICAgICBjb21taXQgPSBjb21taXRbOmNvbW1pdC5maW5kKCcuLicpXQotICAgICAgICAg
ICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICJXYXJuaW5nOiBSYW5nZXMgYXJlIG5vdCBzdXBw
b3J0ZWQgZm9yIC0tZ2l0LWNvbW1pdC4gQ2hlY2tpbmcgYWxsIGNoYW5nZXMgc2luY2UgJXMuXG4i
ICUgY29tbWl0CisgICAgICAgICAgICAgICAgX2xvZy53YXJuKCJSYW5nZXMgYXJlIG5vdCBzdXBw
b3J0ZWQgZm9yIC0tZ2l0LWNvbW1pdC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hl
Y2tpbmcgYWxsIGNoYW5nZXMgc2luY2UgJXMuIiAlIGNvbW1pdCkKICAgICAgICAgICAgIHBhdGNo
ID0gc2NtLmNyZWF0ZV9wYXRjaF9zaW5jZV9sb2NhbF9jb21taXQoY29tbWl0KQogICAgICAgICBl
bHNlOgogICAgICAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKQEAgLTg2LDggKzEw
Myw4IEBAIGRlZiBtYWluKCk6CiAKICAgICBlcnJvcl9jb3VudCA9IHN0eWxlX2NoZWNrZXIuZXJy
b3JfY291bnQKICAgICBmaWxlX2NvdW50ID0gc3R5bGVfY2hlY2tlci5maWxlX2NvdW50Ci0gICAg
c3lzLnN0ZGVyci53cml0ZSgnVG90YWwgZXJyb3JzIGZvdW5kOiAlZCBpbiAlZCBmaWxlc1xuJwot
ICAgICAgICAgICAgICAgICAgICAgJSAoZXJyb3JfY291bnQsIGZpbGVfY291bnQpKQorICAgIF9s
b2cuaW5mbygiVG90YWwgZXJyb3JzIGZvdW5kOiAlZCBpbiAlZCBmaWxlcyIKKyAgICAgICAgICAg
ICAgJSAoZXJyb3JfY291bnQsIGZpbGVfY291bnQpKQogICAgICMgV2UgZmFpbCB3aGVuIHN0eWxl
IGVycm9ycyBhcmUgZm91bmQgb3IgdGhlcmUgYXJlIG5vIGNoZWNrZWQgZmlsZXMuCiAgICAgc3lz
LmV4aXQoZXJyb3JfY291bnQgPiAwIG9yIGZpbGVfY291bnQgPT0gMCkKIApkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pbml0L3drbG9nZ2luZy5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvaW5pdC93a2xvZ2dpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNGJmMTExNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvaW5pdC93a2xvZ2dpbmcucHkKQEAgLTAsMCArMSwxMjIgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykK
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiU3VwcG9ydCBm
b3IgbG9nZ2luZy4iIiIKKworaW1wb3J0IGxvZ2dpbmcKKworCitjbGFzcyBVbml0VGVzdExvZ1N0
cmVhbShvYmplY3QpOgorCisgICAgIiIiUmVwcmVzZW50cyBhIGZpbGUtbGlrZSBvYmplY3QgZm9y
IHVuaXQtdGVzdGluZyBsb2dnaW5nLgorCisgICAgVGhpcyBpcyBtZWFudCBmb3IgcGFzc2luZyB0
byB0aGUgbG9nZ2luZy5TdHJlYW1IYW5kbGVyIGNvbnN0cnVjdG9yLgorCisgICAgIiIiCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYubWVzc2FnZXMgPSBbXQorICAgICAg
ICAiIiJBIGxpc3Qgb2YgbG9nIG1lc3NhZ2VzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS4iIiIKKwor
ICAgIGRlZiB3cml0ZShzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgc2VsZi5tZXNzYWdlcy5hcHBl
bmQobWVzc2FnZSkKKworICAgIGRlZiBmbHVzaChzZWxmKToKKyAgICAgICAgcGFzcworCisKK2Ns
YXNzIFVuaXRUZXN0TG9nKG9iamVjdCk6CisKKyAgICAiIiJTdXBwb3J0cyB1bml0LXRlc3Rpbmcg
bG9nZ2luZy4KKworICAgIFNhbXBsZSB1c2FnZToKKworICAgICMgVGhlIGZvbGxvd2luZyBsaW5l
IHNob3VsZCBnbyBpbiB0aGUgc2V0VXAoKSBtZXRob2Qgb2YgYQorICAgICMgdW5pdHRlc3QuVGVz
dENhc2UuICBJbiBwYXJ0aWN1bGFyLCBzZWxmIGlzIGEgVGVzdENhc2UgaW5zdGFuY2UuCisgICAg
c2VsZi5fbG9nID0gVW5pdFRlc3RMb2coc2VsZikKKworICAgICMgQ2FsbCB0aGUgZm9sbG93aW5n
IGluIGEgdGVzdCBtZXRob2Qgb2YgYSB1bml0dGVzdC5UZXN0Q2FzZS4KKyAgICBsb2cgPSBsb2dn
aW5nLmdldExvZ2dlcigid2Via2l0cHkiKQorICAgIGxvZy5pbmZvKCJtZXNzYWdlMSIpCisgICAg
bG9nLndhcm4oIm1lc3NhZ2UyIikKKyAgICBzZWxmLl9sb2cuYXNzZXJ0TWVzc2FnZXMoWyJJTkZP
OiBtZXNzYWdlMVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXQVJOOiBtZXNz
YWdlMlxuIl0pICAjIFNob3VsZCBzdWNjZWVkLgorCisgICAgIyBUaGUgZm9sbG93aW5nIGxpbmUg
c2hvdWxkIGdvIGluIHRoZSB0ZWFyRG93bigpIG1ldGhvZCBvZgorICAgICMgdW5pdHRlc3QuVGVz
dENhc2UuCisgICAgc2VsZi5fbG9nLnRlYXJEb3duKCkKKworICAgICIiIgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHRlc3RfY2FzZSwgbG9nZ2luZ19sZXZlbD1Ob25lKToKKyAgICAgICAgIiIi
Q29uZmlndXJlIHVuaXQgdGVzdCBsb2dnaW5nLCBhbmQgcmV0dXJuIGFuIGluc3RhbmNlLgorCisg
ICAgICAgIFRoaXMgbWV0aG9kIGNvbmZpZ3VyZXMgdGhlIHJvb3QgbG9nZ2VyIHRvIGxvZyB0byBh
IHRlc3RpbmcKKyAgICAgICAgbG9nIHN0cmVhbS4gIE9ubHkgbWVzc2FnZXMgbG9nZ2VkIGF0IG9y
IGFib3ZlIHRoZSBnaXZlbiBsZXZlbAorICAgICAgICBhcmUgbG9nZ2VkIHRvIHRoZSBzdHJlYW0u
ICBNZXNzYWdlcyBhcmUgZm9ybWF0dGVkIGluIHRoZQorICAgICAgICBmb2xsb3dpbmcgd2F5LCBm
b3IgZXhhbXBsZS0tCisKKyAgICAgICAgIklORk86IFRoaXMgaXMgYSB0ZXN0IGxvZyBtZXNzYWdl
LiIKKworICAgICAgICBUaGlzIG1ldGhvZCBzaG91bGQgbm9ybWFsbHkgYmUgY2FsbGVkIGluIHRo
ZSBzZXRVcCgpIG1ldGhvZAorICAgICAgICBvZiBhIHVuaXR0ZXN0LlRlc3RDYXNlLgorCisgICAg
ICAgIEFyZ3M6CisgICAgICAgICAgdGVzdF9jYXNlOiBBIHVuaXR0ZXN0LlRlc3RDYXNlIGluc3Rh
bmNlLgorICAgICAgICAgIGxvZ2dpbmdfbGV2ZWw6IEEgbG9nZ2luZyBsZXZlbC4gIE9ubHkgbWVz
c2FnZXMgbG9nZ2VkIGF0IG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgYWJvdmUgdGhpcyBs
ZXZlbCBhcmUgd3JpdHRlbiB0byB0aGUgdGVzdGluZworICAgICAgICAgICAgICAgICAgICAgICAg
IGxvZyBzdHJlYW0uICBEZWZhdWx0cyB0byBsb2dnaW5nLklORk8uCisKKyAgICAgICAgIiIiCisg
ICAgICAgIGlmIGxvZ2dpbmdfbGV2ZWwgaXMgTm9uZToKKyAgICAgICAgICAgIGxvZ2dpbmdfbGV2
ZWwgPSBsb2dnaW5nLklORk8KKworICAgICAgICBzdHJlYW0gPSBVbml0VGVzdExvZ1N0cmVhbSgp
CisgICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3RyZWFtKQorICAgICAg
ICBmb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigiJShsZXZlbG5hbWUpczogJShtZXNzYWdl
KXMiKQorICAgICAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCisKKyAgICAgICAg
bG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobG9n
Z2luZ19sZXZlbCkKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKworICAgICAg
ICBzZWxmLl9oYW5kbGVyID0gaGFuZGxlcgorICAgICAgICBzZWxmLl9tZXNzYWdlcyA9IHN0cmVh
bS5tZXNzYWdlcworICAgICAgICBzZWxmLl90ZXN0X2Nhc2UgPSB0ZXN0X2Nhc2UKKworICAgIGRl
ZiBfbG9nZ2VyKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHJvb3QgbG9nZ2VyIHVzZWQg
Zm9yIGxvZ2dpbmcuIiIiCisgICAgICAgIHJldHVybiBsb2dnaW5nLmdldExvZ2dlcigpCisKKyAg
ICBkZWYgYXNzZXJ0TWVzc2FnZXMoc2VsZiwgbWVzc2FnZXMpOgorICAgICAgICAiIiJBc3NlcnQg
dGhhdCB0aGUgZ2l2ZW4gbWVzc2FnZXMgbWF0Y2ggdGhlIGxvZ2dlZCBtZXNzYWdlcy4iIiIKKyAg
ICAgICAgc2VsZi5fdGVzdF9jYXNlLmFzc2VydEVxdWFscyhtZXNzYWdlcywgc2VsZi5fbWVzc2Fn
ZXMpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICIiIlVuY29uZmlndXJlIHVu
aXQgdGVzdCBsb2dnaW5nLgorCisgICAgICAgIFRoaXMgc2hvdWxkIG5vcm1hbGx5IGJlIGNhbGxl
ZCBpbiB0aGUgdGVhckRvd24gbWV0aG9kIG9mIGEKKyAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UK
KworICAgICAgICAiIiIKKyAgICAgICAgbG9nZ2VyID0gc2VsZi5fbG9nZ2VyKCkKKyAgICAgICAg
bG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5faGFuZGxlcikKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQppbmRleCBmZTY1Zjc0Li5jMzZmYWU0IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC0zMCw2
ICszMCw3IEBACiAiIiJGcm9udCBlbmQgb2Ygc29tZSBzdHlsZS1jaGVja2VyIG1vZHVsZXMuIiIi
CiAKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0
IHN5cwogCkBAIC00NSw2ICs0Niw3IEBAIGZyb20gcHJvY2Vzc29ycy5jcHAgaW1wb3J0IENwcFBy
b2Nlc3NvcgogZnJvbSBwcm9jZXNzb3JzLnB5dGhvbiBpbXBvcnQgUHl0aG9uUHJvY2Vzc29yCiBm
cm9tIHByb2Nlc3NvcnMudGV4dCBpbXBvcnQgVGV4dFByb2Nlc3NvcgogCitfbG9nID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoIndlYmtpdHB5LnN0eWxlLmNoZWNrZXIiKQogCiAjIFRoZXNlIGFyZSBkZWZh
dWx0IG9wdGlvbiB2YWx1ZXMgZm9yIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9uIHBhcnNlci4KIF9E
RUZBVUxUX1ZFUkJPU0lUWSA9IDEKQEAgLTIwNCw2ICsyMDYsODcgQEAgZGVmIGNoZWNrX3dlYmtp
dF9zdHlsZV9jb25maWd1cmF0aW9uKG9wdGlvbnMpOgogICAgICAgICAgICAgICAgdmVyYm9zaXR5
PW9wdGlvbnMudmVyYm9zaXR5KQogCiAKKyMgRklYTUU6IEFkZCBzdXBwb3J0IGZvciBtb3JlIHZl
cmJvc2UgbG9nZ2luZyBmb3IgZGVidWcgcHVycG9zZXMuCisjICAgICAgICBUaGlzIGNhbiB1c2Ug
YSBmb3JtYXR0ZXIgbGlrZSB0aGUgZm9sbG93aW5nLCBmb3IgZXhhbXBsZS0tCisjCisjICAgICAg
ICBmb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigiJShuYW1lKXM6IFslKGxldmVsbmFtZSlz
XSAlKG1lc3NhZ2UpcyIpCitkZWYgY29uZmlndXJlX2xvZ2dpbmcoc3RyZWFtKToKKyAgICAiIiJD
b25maWd1cmUgbG9nZ2luZywgYW5kIHJldHVybiB0aGUgbGlzdCBvZiBoYW5kbGVycyBhZGRlZC4K
KworICAgIENvbmZpZ3VyZXMgdGhlIHJvb3QgbG9nZ2VyIHRvIGxvZyBJTkZPIG1lc3NhZ2VzIGFu
ZCBoaWdoZXIuCisgICAgQ29uZmlndXJlcyBXQVJOSU5HIG1lc3NhZ2VzIGFuZCBhYm92ZSB0byBp
bmNsdWRlIHRoZSBsb2dnaW5nIGxldmVsCisgICAgYW5kIG1lc3NhZ2VzIGJlbG93IFdBUk5JTkcg
bm90IHRvIGluY2x1ZGUgaXQuCisKKyAgICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBy
ZWZlcmVuY2VzIHRvIHRoZSBsb2dnaW5nIGhhbmRsZXJzCisgICAgYWRkZWQgc28gdGhhdCB0aGUg
Y2FsbGVyIGNhbiBsYXRlciByZW1vdmUgdGhlIGhhbmRsZXJzIHVzaW5nCisgICAgbG9nZ2VyLnJl
bW92ZUhhbmRsZXIuICBUaGlzIGlzIHByaW1hcmlseSB1c2VmdWwgaW4gdGVzdGluZworICAgIHNp
dHVhdGlvbnMgd2hlcmUgdGhlIGNhbGxlciBtYXkgd2FudCB0byBlbmFibGUgbG9nZ2luZyB0ZW1w
b3JhcmlseQorICAgIGFuZCB0aGVuIHVuZG8gdGhlIGVuYWJsaW5nLgorCisgICAgQXJnczoKKyAg
ICAgIHN0cmVhbTogQSBmaWxlLWxpa2Ugb2JqZWN0IHRvIHdoaWNoIHRvIGxvZy4gIFRoZSBzdHJl
YW0gbXVzdAorICAgICAgICAgICAgICBkZWZpbmUgYW4gImVuY29kaW5nIiBkYXRhIGF0dHJpYnV0
ZSwgb3IgZWxzZSBsb2dnaW5nCisgICAgICAgICAgICAgIHJhaXNlcyBhbiBlcnJvci4KKworICAg
ICIiIgorICAgICMgSWYgdGhlIHN0cmVhbSBkb2VzIG5vdCBkZWZpbmUgYW4gImVuY29kaW5nIiBk
YXRhIGF0dHJpYnV0ZSwgdGhlCisgICAgIyBsb2dnaW5nIG1vZHVsZSBjYW4gdGhyb3cgYW4gZXJy
b3IgbGlrZSB0aGUgZm9sbG93aW5nOgorICAgICMKKyAgICAjIFRyYWNlYmFjayAobW9zdCByZWNl
bnQgY2FsbCBsYXN0KToKKyAgICAjICAgRmlsZSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
UHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8yLjYvLi4uCisgICAgIyAgICAgICAgIGxpYi9weXRo
b24yLjYvbG9nZ2luZy9fX2luaXRfXy5weSIsIGxpbmUgNzYxLCBpbiBlbWl0CisgICAgIyAgICAg
c2VsZi5zdHJlYW0ud3JpdGUoZnMgJSBtc2cuZW5jb2RlKHNlbGYuc3RyZWFtLmVuY29kaW5nKSkK
KyAgICAjIExvb2t1cEVycm9yOiB1bmtub3duIGVuY29kaW5nOiB1bmtub3duCisKKyAgICAjIEhh
bmRsZXMgbG9nZ2luZy5XQVJOSU5HIGFuZCBhYm92ZS4KKyAgICBlcnJvcl9oYW5kbGVyID0gbG9n
Z2luZy5TdHJlYW1IYW5kbGVyKHN0cmVhbSkKKyAgICBlcnJvcl9oYW5kbGVyLnNldExldmVsKGxv
Z2dpbmcuV0FSTklORykKKyAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigiJShsZXZl
bG5hbWUpczogJShtZXNzYWdlKXMiKQorICAgIGVycm9yX2hhbmRsZXIuc2V0Rm9ybWF0dGVyKGZv
cm1hdHRlcikKKworICAgICMgSGFuZGxlcyByZWNvcmRzIHN0cmljdGx5IGJlbG93IGxvZ2dpbmcu
V0FSTklORy4KKyAgICBub25fZXJyb3JfaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihz
dHJlYW0pCisgICAgbm9uX2Vycm9yX2ZpbHRlciA9IF9MZXZlbExvZ2dpbmdGaWx0ZXIobG9nZ2lu
Zy5XQVJOSU5HKQorICAgIG5vbl9lcnJvcl9oYW5kbGVyLmFkZEZpbHRlcihub25fZXJyb3JfZmls
dGVyKQorICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKCIlKG1lc3NhZ2UpcyIpCisg
ICAgbm9uX2Vycm9yX2hhbmRsZXIuc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKKworICAgIGxvZ2dl
ciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZP
KQorCisgICAgaGFuZGxlcnMgPSBbZXJyb3JfaGFuZGxlciwgbm9uX2Vycm9yX2hhbmRsZXJdCisK
KyAgICBmb3IgaGFuZGxlciBpbiBoYW5kbGVyczoKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIo
aGFuZGxlcikKKworICAgIHJldHVybiBoYW5kbGVycworCisKKyMgRklYTUU6IENvbnNpZGVyIG1v
dmluZyB0aGlzIGNsYXNzIHRvIHdlYmtpdHB5LmluaXQud2tsb2dnaW5nIGFmdGVyCisjICAgICAg
ICBnZXR0aW5nIG1vcmUgZXhwZXJpZW5jZSB3aXRoIGl0cyB1c2UuICBXZSB3YW50IHRvIG1ha2Ug
c3VyZQorIyAgICAgICAgd2UgaGF2ZSB0aGUgcmlnaHQgQVBJIGJlZm9yZSBkb2luZyBzby4gIEZv
ciBleGFtcGxlLCB3ZSBtYXkKKyMgICAgICAgIHdhbnQgdG8gcHJvdmlkZSBhIGNvbnN0cnVjdG9y
IHRoYXQgaGFzIGJvdGggdXBwZXIgYW5kIGxvd2VyCisjICAgICAgICBib3VuZHMsIGFuZCBub3Qg
anVzdCBhbiB1cHBlciBib3VuZC4KK2NsYXNzIF9MZXZlbExvZ2dpbmdGaWx0ZXIob2JqZWN0KToK
KworICAgICIiIkEgbG9nZ2luZyBmaWx0ZXIgZm9yIGJsb2NraW5nIHJlY29yZHMgYXQgb3IgYWJv
dmUgYSBjZXJ0YWluIGxldmVsLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dpbmdf
bGV2ZWwpOgorICAgICAgICAiIiJDcmVhdGUgYSBfTGV2ZWxMb2dnaW5nRmlsdGVyLgorCisgICAg
ICAgIEFyZ3M6CisgICAgICAgICAgbG9nZ2luZ19sZXZlbDogVGhlIGxvZ2dpbmcgbGV2ZWwgY3V0
LW9mZi4gIExvZ2dpbmcgbGV2ZWxzIGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgb3IgYWJv
dmUgdGhpcyBsZXZlbCB3aWxsIG5vdCBiZSBsb2dnZWQuCisKKyAgICAgICAgIiIiCisgICAgICAg
IHNlbGYuX2xvZ2dpbmdfbGV2ZWwgPSBsb2dnaW5nX2xldmVsCisKKyAgICAjIFRoZSBsb2dnaW5n
IG1vZHVsZSByZXF1aXJlcyB0aGF0IHRoaXMgbWV0aG9kIGJlIGRlZmluZWQuCisgICAgZGVmIGZp
bHRlcihzZWxmLCBsb2dfcmVjb3JkKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgZ2l2ZW4g
dGhlIExvZ1JlY29yZCBzaG91bGQgYmUgbG9nZ2VkLiIiIgorICAgICAgICByZXR1cm4gbG9nX3Jl
Y29yZC5sZXZlbG5vIDwgc2VsZi5fbG9nZ2luZ19sZXZlbAorCisKICMgRW51bS1saWtlIGlkaW9t
CiBjbGFzcyBGaWxlVHlwZToKIApAQCAtMzA2LDYgKzM4OSw4IEBAIGNsYXNzIFByb2Nlc3NvckRp
c3BhdGNoZXIob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHByb2Nlc3NvcgogCiAKKyMgRklYTUU6
IFJlbW92ZSB0aGUgc3RkZXJyX3dyaXRlIGF0dHJpYnV0ZSBmcm9tIHRoaXMgY2xhc3MgYW5kIHJl
cGxhY2UKKyMgICAgICAgIGl0cyB1c2Ugd2l0aCBjYWxscyB0byBhIGxvZ2dpbmcgbW9kdWxlIGxv
Z2dlci4KIGNsYXNzIFN0eWxlQ2hlY2tlckNvbmZpZ3VyYXRpb24ob2JqZWN0KToKIAogICAgICIi
IlN0b3JlcyBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3IgdGhlIFN0eWxlQ2hlY2tlciBjbGFzcy4K
QEAgLTQyMyw5ICs1MDgsNiBAQCBjbGFzcyBTdHlsZUNoZWNrZXIob2JqZWN0KToKICAgICAgICAg
c2VsZi5lcnJvcl9jb3VudCA9IDAKICAgICAgICAgc2VsZi5maWxlX2NvdW50ID0gMAogCi0gICAg
ZGVmIF9zdGRlcnJfd3JpdGUoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIHNlbGYuX2NvbmZpZ3Vy
YXRpb24uc3RkZXJyX3dyaXRlKG1lc3NhZ2UpCi0KICAgICBkZWYgX2luY3JlbWVudF9lcnJvcl9j
b3VudChzZWxmKToKICAgICAgICAgIiIiSW5jcmVtZW50IHRoZSB0b3RhbCBjb3VudCBvZiByZXBv
cnRlZCBlcnJvcnMuIiIiCiAgICAgICAgIHNlbGYuZXJyb3JfY291bnQgKz0gMQpAQCAtNDUzLDEx
ICs1MzUsMTUgQEAgY2xhc3MgU3R5bGVDaGVja2VyKG9iamVjdCk6CiAgICAgICAgICAgICBjb250
ZW50cyA9IGZpbGUucmVhZCgpCiAKICAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAg
ICBzZWxmLl9zdGRlcnJfd3JpdGUoIlNraXBwaW5nIGlucHV0ICclcyc6IENhbid0IG9wZW4gZm9y
IHJlYWRpbmdcbiIgJSBmaWxlX3BhdGgpCisgICAgICAgICAgICBtZXNzYWdlID0gJ0NvdWxkIG5v
dCByZWFkIGZpbGUuIFNraXBwaW5nOiAiJXMiJyAlIGZpbGVfcGF0aAorICAgICAgICAgICAgX2xv
Zy53YXJuKG1lc3NhZ2UpCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBsaW5lcyA9IGNv
bnRlbnRzLnNwbGl0KCJcbiIpCiAKKyAgICAgICAgIyBGSVhNRTogTWFrZSBhIENhcnJpYWdlUmV0
dXJuUHJvY2Vzc29yIGZvciB0aGlzIGxvZ2ljLCBhbmQgcHV0CisgICAgICAgICMgICAgICAgIGl0
IGluIHByb2Nlc3NvcnMuY29tbW9uLiAgVGhlIHByb2Nlc3MoKSBtZXRob2Qgc2hvdWxkCisgICAg
ICAgICMgICAgICAgIHJldHVybiB0aGUgbGluZXMgd2l0aCB0aGUgY2FycmlhZ2UgcmV0dXJucyBz
dHJpcHBlZC4KICAgICAgICAgZm9yIGxpbmVfbnVtYmVyIGluIHJhbmdlKGxlbihsaW5lcykpOgog
ICAgICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IHVzZSB0aGUgU1ZOICJlb2wt
c3R5bGUiIHByb3BlcnR5CiAgICAgICAgICAgICAjICAgICAgICBvciBhIHdoaXRlIGxpc3QgdG8g
ZGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvIGRvCkBAIC01MDQsOCArNTkwLDggQEAgY2xhc3MgU3R5
bGVDaGVja2VyKG9iamVjdCk6CiAgICAgICAgIGlmIGRpc3BhdGNoZXIuc2hvdWxkX3NraXBfd2l0
aG91dF93YXJuaW5nKGZpbGVfcGF0aCk6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYg
ZGlzcGF0Y2hlci5zaG91bGRfc2tpcF93aXRoX3dhcm5pbmcoZmlsZV9wYXRoKToKLSAgICAgICAg
ICAgIHNlbGYuX3N0ZGVycl93cml0ZSgnSWdub3JpbmcgIiVzIjogdGhpcyBmaWxlIGlzIGV4ZW1w
dCBmcm9tIHRoZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlIGd1aWRl
LlxuIiAlIGZpbGVfcGF0aCkKKyAgICAgICAgICAgIF9sb2cud2FybignRmlsZSBleGVtcHQgZnJv
bSBzdHlsZSBndWlkZS4gU2tpcHBpbmc6ICIlcyInCisgICAgICAgICAgICAgICAgICAgICAgJSBm
aWxlX3BhdGgpCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICB2ZXJib3NpdHkgPSBzZWxm
Ll9jb25maWd1cmF0aW9uLnZlcmJvc2l0eQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CmluZGV4IGJhODI2NzAuLmNlNWNl
OWMgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cl91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJfdW5pdHRlc3QucHkKQEAgLTM0LDE1ICszNCwxOSBAQAogCiAiIiJVbml0IHRlc3RzIGZv
ciBzdHlsZS5weS4iIiIKIAoraW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB1bml0dGVzdAogCiBpbXBv
cnQgY2hlY2tlciBhcyBzdHlsZQorZnJvbSAuLnN0eWxlX3JlZmVyZW5jZXMgaW1wb3J0IFVuaXRU
ZXN0TG9nCitmcm9tIC4uc3R5bGVfcmVmZXJlbmNlcyBpbXBvcnQgVW5pdFRlc3RMb2dTdHJlYW0K
IGZyb20gY2hlY2tlciBpbXBvcnQgX0JBU0VfRklMVEVSX1JVTEVTCiBmcm9tIGNoZWNrZXIgaW1w
b3J0IF9NQVhfUkVQT1JUU19QRVJfQ0FURUdPUlkKIGZyb20gY2hlY2tlciBpbXBvcnQgX1BBVEhf
UlVMRVNfU1BFQ0lGSUVSIGFzIFBBVEhfUlVMRVNfU1BFQ0lGSUVSCiBmcm9tIGNoZWNrZXIgaW1w
b3J0IF9hbGxfY2F0ZWdvcmllcwogZnJvbSBjaGVja2VyIGltcG9ydCBjaGVja193ZWJraXRfc3R5
bGVfY29uZmlndXJhdGlvbgogZnJvbSBjaGVja2VyIGltcG9ydCBjaGVja193ZWJraXRfc3R5bGVf
cGFyc2VyCitmcm9tIGNoZWNrZXIgaW1wb3J0IGNvbmZpZ3VyZV9sb2dnaW5nCiBmcm9tIGNoZWNr
ZXIgaW1wb3J0IFByb2Nlc3NvckRpc3BhdGNoZXIKIGZyb20gY2hlY2tlciBpbXBvcnQgU3R5bGVD
aGVja2VyCiBmcm9tIGNoZWNrZXIgaW1wb3J0IFN0eWxlQ2hlY2tlckNvbmZpZ3VyYXRpb24KQEAg
LTU1LDYgKzU5LDU3IEBAIGZyb20gcHJvY2Vzc29ycy5weXRob24gaW1wb3J0IFB5dGhvblByb2Nl
c3NvcgogZnJvbSBwcm9jZXNzb3JzLnRleHQgaW1wb3J0IFRleHRQcm9jZXNzb3IKIAogCitjbGFz
cyBDb25maWd1cmVMb2dnaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0
cyB0aGUgY29uZmlndXJlX2xvZ2dpbmcoKSBmdW5jdGlvbi4iIiIKKworICAgIGRlZiBzZXRVcChz
ZWxmKToKKyAgICAgICAgbG9nX3N0cmVhbSA9IFVuaXRUZXN0TG9nU3RyZWFtKCkKKworICAgICAg
ICBzZWxmLl9oYW5kbGVycyA9IGNvbmZpZ3VyZV9sb2dnaW5nKGxvZ19zdHJlYW0pCisgICAgICAg
IHNlbGYuX2xvZ19zdHJlYW0gPSBsb2dfc3RyZWFtCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6
CisgICAgICAgICIiIlJlc2V0IGxvZ2dpbmcgdG8gaXRzIG9yaWdpbmFsIHN0YXRlLgorCisgICAg
ICAgIFRoaXMgbWV0aG9kIGVuc3VyZXMgdGhhdCB0aGUgbG9nZ2luZyBjb25maWd1cmF0aW9uIHNl
dCB1cAorICAgICAgICBmb3IgYSB1bml0IHRlc3QgZG9lcyBub3QgYWZmZWN0IGxvZ2dpbmcgaW4g
b3RoZXIgdW5pdCB0ZXN0cy4KKworICAgICAgICAiIiIKKyAgICAgICAgIyBUaGlzIHNob3VsZCBi
ZSB0aGUgc2FtZSBhcyB0aGUgbG9nZ2VyIGNvbmZpZ3VyZWQgaW4gdGhlCisgICAgICAgICMgY29u
ZmlndXJlX2xvZ2dpbmcoKSBtZXRob2QuCisgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKCkKKyAgICAgICAgZm9yIGhhbmRsZXIgaW4gc2VsZi5faGFuZGxlcnM6CisgICAgICAgICAg
ICBsb2dnZXIucmVtb3ZlSGFuZGxlcihoYW5kbGVyKQorCisgICAgZGVmIF9sb2coc2VsZik6Cisg
ICAgICAgIHJldHVybiBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkiKQorCisgICAgZGVmIGFz
c2VydF9sb2dfbWVzc2FnZXMoc2VsZiwgbWVzc2FnZXMpOgorICAgICAgICAiIiJBc3NlcnQgdGhh
dCB0aGUgbG9nZ2VkIG1lc3NhZ2VzIGVxdWFsIHRoZSBnaXZlbiBtZXNzYWdlcy4iIiIKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMobWVzc2FnZXMsIHNlbGYuX2xvZ19zdHJlYW0ubWVzc2FnZXMp
CisKKyAgICBkZWYgdGVzdF93YXJuaW5nX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuX2xv
ZygpLndhcm4oInRlc3QgbWVzc2FnZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19tZXNzYWdl
cyhbIldBUk5JTkc6IHRlc3QgbWVzc2FnZVxuIl0pCisKKyAgICBkZWYgdGVzdF9pbmZvX21lc3Nh
Z2Uoc2VsZik6CisgICAgICAgICMgV2UgdGVzdCB0aGUgdGlnaHRlciBib3VuZGFyeSBjYXNlIHJh
dGhlciB0aGFuIGxvZ2dpbmcuSU5GTywKKyAgICAgICAgIyB3aGljaCBlcXVhbHMgMzAuCisgICAg
ICAgIGxldmVsID0gbG9nZ2luZy5XQVJOSU5HIC0gMSAgIyBFcXVhbHMgMjkuCisgICAgICAgIHNl
bGYuX2xvZygpLmxvZyhsZXZlbCwgInRlc3QgbWVzc2FnZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xvZ19tZXNzYWdlcyhbInRlc3QgbWVzc2FnZVxuIl0pCisKKyAgICBkZWYgdGVzdF9kZWJ1Z19t
ZXNzYWdlKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2coKS5kZWJ1ZygidGVzdCBtZXNzYWdlIikK
KyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX21lc3NhZ2VzKFtdKQorCisgICAgZGVmIHRlc3RfdHdv
X21lc3NhZ2VzKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2coKS5pbmZvKCJtZXNzYWdlMSIpCisg
ICAgICAgIHNlbGYuX2xvZygpLmluZm8oIm1lc3NhZ2UyIikKKyAgICAgICAgc2VsZi5hc3NlcnRf
bG9nX21lc3NhZ2VzKFsibWVzc2FnZTFcbiIsICJtZXNzYWdlMlxuIl0pCisKKwogY2xhc3MgR2xv
YmFsVmFyaWFibGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAiIiJUZXN0cyB2YWxp
ZGl0eSBvZiB0aGUgZ2xvYmFsIHZhcmlhYmxlcy4iIiIKQEAgLTQ2MSwxMSArNTE2LDE1IEBAIGNs
YXNzIFN0eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAg
IiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2cgPSBVbml0VGVzdExv
ZyhzZWxmKQogICAgICAgICBzZWxmLmdvdF9maWxlX3BhdGggPSBOb25lCiAgICAgICAgIHNlbGYu
Z290X2hhbmRsZV9zdHlsZV9lcnJvciA9IE5vbmUKICAgICAgICAgc2VsZi5nb3RfcHJvY2Vzc29y
ID0gTm9uZQogICAgICAgICBzZWxmLndhcm5pbmdfbWVzc2FnZXMgPSAiIgogCisgICAgZGVmIHRl
YXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2cudGVhckRvd24oKQorCiAgICAgZGVmIG1v
Y2tfc3RkZXJyX3dyaXRlKHNlbGYsIHdhcm5pbmdfbWVzc2FnZSk6CiAgICAgICAgIHNlbGYud2Fy
bmluZ19tZXNzYWdlcyArPSB3YXJuaW5nX21lc3NhZ2UKIApAQCAtNTM4LDggKzU5Nyw5IEBAIGNs
YXNzIFN0eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAg
ICAgICMgQ2hlY2sgdGhlIG91dGNvbWUuCiAgICAgICAgIHNlbGYuY2FsbF9jaGVja19maWxlKGZp
bGVfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRfYXR0cmlidXRlcyhOb25lLCBOb25lLCBOb25l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJZ25vcmluZyAiZ3RrMmRyYXdpbmcu
YyI6IHRoaXMgZmlsZSBpcyBleGVtcHQgZnJvbSB0aGUgc3R5bGUgZ3VpZGUuXG4nKQorICAgICAg
ICBzZWxmLmFzc2VydF9hdHRyaWJ1dGVzKE5vbmUsIE5vbmUsIE5vbmUsICIiKQorICAgICAgICBz
ZWxmLl9sb2cuYXNzZXJ0TWVzc2FnZXMoWyJXQVJOSU5HOiBGaWxlIGV4ZW1wdCBmcm9tIHN0eWxl
IGd1aWRlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NraXBwaW5nOiAi
Z3RrMmRyYXdpbmcuYyJcbiddKQogCiAgICAgZGVmIHRlc3RfY2hlY2tfZmlsZV9vbl9ub25fc2tp
cHBlZChzZWxmKToKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZV9yZWZlcmVuY2VzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZV9y
ZWZlcmVuY2VzLnB5CmluZGV4IGIzYjdmNzYuLjE1ZWExNDYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkKQEAgLTQxLDYgKzQxLDggQEAK
IGltcG9ydCBvcwogCiBmcm9tIGRpZmZfcGFyc2VyIGltcG9ydCBEaWZmUGFyc2VyCitmcm9tIGlu
aXQud2tsb2dnaW5nIGltcG9ydCBVbml0VGVzdExvZworZnJvbSBpbml0LndrbG9nZ2luZyBpbXBv
cnQgVW5pdFRlc3RMb2dTdHJlYW0KIGZyb20gc2NtIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbQog
ZnJvbSB0aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQgaW1wb3J0IHBlcDgKIAo=
</data>
<flag name="review"
          id="32630"
          type_id="1"
          status="-"
          setter="hamaji"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49787</attachid>
            <date>2010-03-02 00:18:17 -0800</date>
            <delta_ts>2010-03-02 00:22:18 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-35484-4.diff</filename>
            <type>text/plain</type>
            <size>20123</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlMjBjYjQwLi45NmVlY2JkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTAtMDMt
MDIgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RhcnRlZCB1c2luZyB0aGUgbG9n
Z2luZyBtb2R1bGUgaW4gY2hlY2std2Via2l0LXN0eWxlLgorICAgICAgICBUaGlzIHByb3ZpZGVz
IG1vcmUgb3B0aW9ucyBmb3IgZGVidWdnaW5nIGFuZCBhIG1vcmUgZmxleGlibGUsCisgICAgICAg
IHVuaWZvcm0gd2F5IHRvIHJlcG9ydCBtZXNzYWdlcyB0byB0aGUgZW5kLXVzZXIuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NDg0CisKKyAgICAgICAgQWxzbyBpbmNsdWRlZCBj
bGFzc2VzIGluIGEgY2VudHJhbCBsb2NhdGlvbiB0byBmYWNpbGl0YXRlCisgICAgICAgIHRoZSB1
bml0IHRlc3Rpbmcgb2YgbG9nZ2luZyBjb2RlIChzZXRVcCBhbmQgdGVhckRvd24gb2YgdW5pdAor
ICAgICAgICB0ZXN0IGxvZ2dpbmcgY29uZmlndXJhdGlvbnMsIGV0YykuCisKKyAgICAgICAgKiBT
Y3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZToKKyAgICAgICAgICAtIEFkZGVkIGEgY2FsbCB0byBj
b25maWd1cmVfbG9nZ2luZygpIGluIHRoZSBiZWdpbm5pbmcgb2YgbWFpbigpLgorICAgICAgICAg
IC0gUmVwbGFjZWQgdHdvIGNhbGxzIHRvIHN5cy5zdGRlcnIud3JpdGUoKSB3aXRoIGFwcHJvcHJp
YXRlCisgICAgICAgICAgICBsb2dnaW5nIGNhbGxzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9pbml0L2xvZ3Rlc3RpbmcucHk6IEFkZGVkLgorICAgICAgICAgIC0gQWRkZWQgYSBVbml0
VGVzdExvZ1N0cmVhbSBjbGFzcyB0byBjYXB0dXJlIGxvZyBvdXRwdXQKKyAgICAgICAgICAgIGR1
cmluZyB1bml0IHRlc3RzLgorICAgICAgICAgIC0gQWRkZWQgYSBVbml0VGVzdExvZyBjbGFzcyB0
aGF0IHByb3ZpZGVzIGNvbnZlbmllbmNlIG1ldGhvZHMKKyAgICAgICAgICAgIGZvciB1bml0LXRl
c3RpbmcgbG9nZ2luZyBjb2RlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2VyLnB5OgorICAgICAgICAgIC0gQWRkZWQgYSBjb25maWd1cmVfbG9nZ2luZygpIG1ldGhv
ZC4KKyAgICAgICAgICAtIEFkZGVkIGEgX0xldmVsTG9nZ2luZ0ZpbHRlciBjbGFzcyB0byBmaWx0
ZXIgb3V0IGxvZyBtZXNzYWdlcworICAgICAgICAgICAgYWJvdmUgYSBjZXJ0YWluIGxvZ2dpbmcg
bGV2ZWwuCisgICAgICAgICAgLSBSZW1vdmVkIHRoZSBfc3RkZXJyX3dyaXRlKCkgbWV0aG9kIGZy
b20gdGhlIFN0eWxlQ2hlY2tlciBjbGFzcworICAgICAgICAgICAgYW5kIHJlcGxhY2VkIGl0cyB1
c2Ugd2l0aCBhcHByb3ByaWF0ZSBsb2dnaW5nIGNhbGxzLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIC0gQWRkZWQgYSBD
b25maWd1cmVMb2dnaW5nVGVzdCBjbGFzcyB0byB1bml0IHRlc3QgdGhlCisgICAgICAgICAgICBj
b25maWd1cmVfbG9nZ2luZygpIG1ldGhvZC4KKyAgICAgICAgICAtIFVwZGF0ZWQgdGhlIFN0eWxl
Q2hlY2tlckNoZWNrRmlsZVRlc3QgY2xhc3MgYXMgbmVjZXNzYXJ5LgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5OgorICAgICAgICAgIC0gQWRkZWQgcmVm
ZXJlbmNlcyB0byBsb2d0ZXN0aW5nLlVuaXRUZXN0TG9nIGFuZAorICAgICAgICAgICAgbG9ndGVz
dGluZy5Vbml0VGVzdExvZ1N0cmVhbS4KKwogMjAxMC0wMy0wMSAgQ2hyaXMgRmxlaXphY2ggIDxj
ZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGluZyBicm9rZW4gRFJUIG9uIExlb3Bh
cmQvVGlnZXIuIFNlY29uZCB0cnkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2No
ZWNrLXdlYmtpdC1zdHlsZSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxl
CmluZGV4IGVhMmU5NDMuLmYxODg1YjIgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
Y2hlY2std2Via2l0LXN0eWxlCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0
LXN0eWxlCkBAIC00Myw2ICs0Myw3IEBAIHNhbWUgbGluZSwgYnV0IGl0IGlzIGZhciBmcm9tIHBl
cmZlY3QgKGluIGVpdGhlciBkaXJlY3Rpb24pLgogIiIiCiAKIGltcG9ydCBjb2RlY3MKK2ltcG9y
dCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc3lzCkBAIC01MCwx
MyArNTEsMjggQEAgaW1wb3J0IHN5cwogaW1wb3J0IHdlYmtpdHB5LnN0eWxlLmNoZWNrZXIgYXMg
Y2hlY2tlcgogZnJvbSB3ZWJraXRweS5zdHlsZV9yZWZlcmVuY2VzIGltcG9ydCBTaW1wbGVTY20K
IAorX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjaGVjay13ZWJraXQtc3R5bGUiKQorCiBkZWYg
bWFpbigpOgogICAgICMgQ2hhbmdlIHN0ZGVyciB0byB3cml0ZSB3aXRoIHJlcGxhY2VtZW50IGNo
YXJhY3RlcnMgc28gd2UgZG9uJ3QgZGllCiAgICAgIyBpZiB3ZSB0cnkgdG8gcHJpbnQgc29tZXRo
aW5nIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCi0gICAgc3lzLnN0ZGVyciA9IGNv
ZGVjcy5TdHJlYW1SZWFkZXJXcml0ZXIoc3lzLnN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0cmVhZGVyKCd1dGY4JyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHdyaXRlcigndXRm
OCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNl
JykKKyAgICBzdGRlcnIgPSBjb2RlY3MuU3RyZWFtUmVhZGVyV3JpdGVyKHN5cy5zdGRlcnIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0cmVhZGVyKCd1
dGY4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0
d3JpdGVyKCd1dGY4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
cmVwbGFjZScpCisgICAgIyBTZXR0aW5nIGFuICJlbmNvZGluZyIgYXR0cmlidXRlIG9uIHRoZSBz
dHJlYW0gaXMgbmVjZXNzYXJ5IHRvCisgICAgIyBwcmV2ZW50IHRoZSBsb2dnaW5nIG1vZHVsZSBm
cm9tIHJhaXNpbmcgYW4gZXJyb3IuICBTZWUKKyAgICAjIHRoZSBjaGVja2VyLmNvbmZpZ3VyZV9s
b2dnaW5nKCkgZnVuY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgc3RkZXJyLmVuY29k
aW5nID0gIlVURi04IgorCisgICAgIyBGSVhNRTogQ2hhbmdlIHdlYmtpdHB5LnN0eWxlIHNvIHRo
YXQgd2UgZG8gbm90IG5lZWQgdG8gb3ZlcndyaXRlCisgICAgIyAgICAgICAgdGhlIGdsb2JhbCBz
eXMuc3RkZXJyLiAgVGhpcyBpbnZvbHZlcyB1cGRhdGluZyB0aGUgY29kZSB0bworICAgICMgICAg
ICAgIGFjY2VwdCBhIHN0cmVhbSBwYXJhbWV0ZXIgd2hlcmUgbmVjZXNzYXJ5LCBhbmQgbm90IGNh
bGxpbmcKKyAgICAjICAgICAgICBzeXMuc3RkZXJyIGV4cGxpY2l0bHkgYW55d2hlcmUuCisgICAg
c3lzLnN0ZGVyciA9IHN0ZGVycgorCisgICAgY2hlY2tlci5jb25maWd1cmVfbG9nZ2luZyhzdGRl
cnIpCisKICAgICBwYXJzZXIgPSBjaGVja2VyLmNoZWNrX3dlYmtpdF9zdHlsZV9wYXJzZXIoKQog
ICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZXIucGFyc2Uoc3lzLmFyZ3ZbMTpdKQogCkBAIC03
OCw3ICs5NCw4IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAgICAgIyBGSVhNRTogSWYgdGhl
IHJhbmdlIGlzIGEgIi4uLiIsIHRoZSBjb2RlIHNob3VsZCBmaW5kIHRoZSBjb21tb24gYW5jZXN0
b3IgYW5kCiAgICAgICAgICAgICAgICAgIyBzdGFydCB0aGVyZSAoc2VlIGdpdCBkaWZmIC0taGVs
cCBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IC4uLiB1c3VhbGx5IHdvcmtzKS4KICAgICAgICAg
ICAgICAgICBjb21taXQgPSBjb21taXRbOmNvbW1pdC5maW5kKCcuLicpXQotICAgICAgICAgICAg
ICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICJXYXJuaW5nOiBSYW5nZXMgYXJlIG5vdCBzdXBwb3J0
ZWQgZm9yIC0tZ2l0LWNvbW1pdC4gQ2hlY2tpbmcgYWxsIGNoYW5nZXMgc2luY2UgJXMuXG4iICUg
Y29tbWl0CisgICAgICAgICAgICAgICAgX2xvZy53YXJuKCJSYW5nZXMgYXJlIG5vdCBzdXBwb3J0
ZWQgZm9yIC0tZ2l0LWNvbW1pdC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tp
bmcgYWxsIGNoYW5nZXMgc2luY2UgJXMuIiAlIGNvbW1pdCkKICAgICAgICAgICAgIHBhdGNoID0g
c2NtLmNyZWF0ZV9wYXRjaF9zaW5jZV9sb2NhbF9jb21taXQoY29tbWl0KQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKQEAgLTg2LDggKzEwMyw4
IEBAIGRlZiBtYWluKCk6CiAKICAgICBlcnJvcl9jb3VudCA9IHN0eWxlX2NoZWNrZXIuZXJyb3Jf
Y291bnQKICAgICBmaWxlX2NvdW50ID0gc3R5bGVfY2hlY2tlci5maWxlX2NvdW50Ci0gICAgc3lz
LnN0ZGVyci53cml0ZSgnVG90YWwgZXJyb3JzIGZvdW5kOiAlZCBpbiAlZCBmaWxlc1xuJwotICAg
ICAgICAgICAgICAgICAgICAgJSAoZXJyb3JfY291bnQsIGZpbGVfY291bnQpKQorICAgIF9sb2cu
aW5mbygiVG90YWwgZXJyb3JzIGZvdW5kOiAlZCBpbiAlZCBmaWxlcyIKKyAgICAgICAgICAgICAg
JSAoZXJyb3JfY291bnQsIGZpbGVfY291bnQpKQogICAgICMgV2UgZmFpbCB3aGVuIHN0eWxlIGVy
cm9ycyBhcmUgZm91bmQgb3IgdGhlcmUgYXJlIG5vIGNoZWNrZWQgZmlsZXMuCiAgICAgc3lzLmV4
aXQoZXJyb3JfY291bnQgPiAwIG9yIGZpbGVfY291bnQgPT0gMCkKIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pbml0L2xvZ3Rlc3RpbmcucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2luaXQvbG9ndGVzdGluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi42MzYzMTE1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9pbml0L2xvZ3Rlc3RpbmcucHkKQEAgLTAsMCArMSwxMjIgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykK
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiU3VwcG9ydHMg
dGhlIHVuaXQtdGVzdGluZyBvZiBsb2dnaW5nLiIiIgorCitpbXBvcnQgbG9nZ2luZworCisKK2Ns
YXNzIFVuaXRUZXN0TG9nU3RyZWFtKG9iamVjdCk6CisKKyAgICAiIiJSZXByZXNlbnRzIGEgZmls
ZS1saWtlIG9iamVjdCBmb3IgdW5pdC10ZXN0aW5nIGxvZ2dpbmcuCisKKyAgICBUaGlzIGlzIG1l
YW50IGZvciBwYXNzaW5nIHRvIHRoZSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIgY29uc3RydWN0b3Iu
CisKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5tZXNz
YWdlcyA9IFtdCisgICAgICAgICIiIkEgbGlzdCBvZiBsb2cgbWVzc2FnZXMgd3JpdHRlbiB0byB0
aGUgc3RyZWFtLiIiIgorCisgICAgZGVmIHdyaXRlKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICBz
ZWxmLm1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQorCisgICAgZGVmIGZsdXNoKHNlbGYpOgorICAg
ICAgICBwYXNzCisKKworY2xhc3MgVW5pdFRlc3RMb2cob2JqZWN0KToKKworICAgICIiIlN1cHBv
cnRzIHVuaXQtdGVzdGluZyBsb2dnaW5nLgorCisgICAgU2FtcGxlIHVzYWdlOgorCisgICAgIyBU
aGUgZm9sbG93aW5nIGxpbmUgc2hvdWxkIGdvIGluIHRoZSBzZXRVcCgpIG1ldGhvZCBvZiBhCisg
ICAgIyB1bml0dGVzdC5UZXN0Q2FzZS4gIEluIHBhcnRpY3VsYXIsIHNlbGYgaXMgYSBUZXN0Q2Fz
ZSBpbnN0YW5jZS4KKyAgICBzZWxmLl9sb2cgPSBVbml0VGVzdExvZyhzZWxmKQorCisgICAgIyBD
YWxsIHRoZSBmb2xsb3dpbmcgaW4gYSB0ZXN0IG1ldGhvZCBvZiBhIHVuaXR0ZXN0LlRlc3RDYXNl
LgorICAgIGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweSIpCisgICAgbG9nLmluZm8o
Im1lc3NhZ2UxIikKKyAgICBsb2cud2FybigibWVzc2FnZTIiKQorICAgIHNlbGYuX2xvZy5hc3Nl
cnRNZXNzYWdlcyhbIklORk86IG1lc3NhZ2UxXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIldBUk46IG1lc3NhZ2UyXG4iXSkgICMgU2hvdWxkIHN1Y2NlZWQuCisKKyAgICAjIFRo
ZSBmb2xsb3dpbmcgbGluZSBzaG91bGQgZ28gaW4gdGhlIHRlYXJEb3duKCkgbWV0aG9kIG9mCisg
ICAgIyB1bml0dGVzdC5UZXN0Q2FzZS4KKyAgICBzZWxmLl9sb2cudGVhckRvd24oKQorCisgICAg
IiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9jYXNlLCBsb2dnaW5nX2xldmVsPU5v
bmUpOgorICAgICAgICAiIiJDb25maWd1cmUgdW5pdCB0ZXN0IGxvZ2dpbmcsIGFuZCByZXR1cm4g
YW4gaW5zdGFuY2UuCisKKyAgICAgICAgVGhpcyBtZXRob2QgY29uZmlndXJlcyB0aGUgcm9vdCBs
b2dnZXIgdG8gbG9nIHRvIGEgdGVzdGluZworICAgICAgICBsb2cgc3RyZWFtLiAgT25seSBtZXNz
YWdlcyBsb2dnZWQgYXQgb3IgYWJvdmUgdGhlIGdpdmVuIGxldmVsCisgICAgICAgIGFyZSBsb2dn
ZWQgdG8gdGhlIHN0cmVhbS4gIE1lc3NhZ2VzIGFyZSBmb3JtYXR0ZWQgaW4gdGhlCisgICAgICAg
IGZvbGxvd2luZyB3YXksIGZvciBleGFtcGxlLS0KKworICAgICAgICAiSU5GTzogVGhpcyBpcyBh
IHRlc3QgbG9nIG1lc3NhZ2UuIgorCisgICAgICAgIFRoaXMgbWV0aG9kIHNob3VsZCBub3JtYWxs
eSBiZSBjYWxsZWQgaW4gdGhlIHNldFVwKCkgbWV0aG9kCisgICAgICAgIG9mIGEgdW5pdHRlc3Qu
VGVzdENhc2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICB0ZXN0X2Nhc2U6IEEgdW5pdHRl
c3QuVGVzdENhc2UgaW5zdGFuY2UuCisgICAgICAgICAgbG9nZ2luZ19sZXZlbDogQSBsb2dnaW5n
IGxldmVsLiAgT25seSBtZXNzYWdlcyBsb2dnZWQgYXQgb3IKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBhYm92ZSB0aGlzIGxldmVsIGFyZSB3cml0dGVuIHRvIHRoZSB0ZXN0aW5nCisgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9nIHN0cmVhbS4gIERlZmF1bHRzIHRvIGxvZ2dpbmcuSU5GTy4K
KworICAgICAgICAiIiIKKyAgICAgICAgaWYgbG9nZ2luZ19sZXZlbCBpcyBOb25lOgorICAgICAg
ICAgICAgbG9nZ2luZ19sZXZlbCA9IGxvZ2dpbmcuSU5GTworCisgICAgICAgIHN0cmVhbSA9IFVu
aXRUZXN0TG9nU3RyZWFtKCkKKyAgICAgICAgaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxl
cihzdHJlYW0pCisgICAgICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKCIlKGxldmVs
bmFtZSlzOiAlKG1lc3NhZ2UpcyIpCisgICAgICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGZvcm1h
dHRlcikKKworICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCisgICAgICAgIGxv
Z2dlci5zZXRMZXZlbChsb2dnaW5nX2xldmVsKQorICAgICAgICBsb2dnZXIuYWRkSGFuZGxlciho
YW5kbGVyKQorCisgICAgICAgIHNlbGYuX2hhbmRsZXIgPSBoYW5kbGVyCisgICAgICAgIHNlbGYu
X21lc3NhZ2VzID0gc3RyZWFtLm1lc3NhZ2VzCisgICAgICAgIHNlbGYuX3Rlc3RfY2FzZSA9IHRl
c3RfY2FzZQorCisgICAgZGVmIF9sb2dnZXIoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUg
cm9vdCBsb2dnZXIgdXNlZCBmb3IgbG9nZ2luZy4iIiIKKyAgICAgICAgcmV0dXJuIGxvZ2dpbmcu
Z2V0TG9nZ2VyKCkKKworICAgIGRlZiBhc3NlcnRNZXNzYWdlcyhzZWxmLCBtZXNzYWdlcyk6Cisg
ICAgICAgICIiIkFzc2VydCB0aGF0IHRoZSBnaXZlbiBtZXNzYWdlcyBtYXRjaCB0aGUgbG9nZ2Vk
IG1lc3NhZ2VzLiIiIgorICAgICAgICBzZWxmLl90ZXN0X2Nhc2UuYXNzZXJ0RXF1YWxzKG1lc3Nh
Z2VzLCBzZWxmLl9tZXNzYWdlcykKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAg
IiIiVW5jb25maWd1cmUgdW5pdCB0ZXN0IGxvZ2dpbmcuCisKKyAgICAgICAgVGhpcyBzaG91bGQg
bm9ybWFsbHkgYmUgY2FsbGVkIGluIHRoZSB0ZWFyRG93biBtZXRob2Qgb2YgYQorICAgICAgICB1
bml0dGVzdC5UZXN0Q2FzZQorCisgICAgICAgICIiIgorICAgICAgICBsb2dnZXIgPSBzZWxmLl9s
b2dnZXIoKQorICAgICAgICBsb2dnZXIucmVtb3ZlSGFuZGxlcihzZWxmLl9oYW5kbGVyKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IDg0OTRl
MWIuLmJlMDg4ZmIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlci5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXIucHkKQEAgLTMwLDYgKzMwLDcgQEAKICIiIkZyb250IGVuZCBvZiBzb21lIHN0eWxlLWNo
ZWNrZXIgbW9kdWxlcy4iIiIKIAogaW1wb3J0IGNvZGVjcworaW1wb3J0IGxvZ2dpbmcKIGltcG9y
dCBvcy5wYXRoCiBpbXBvcnQgc3lzCiAKQEAgLTQ0LDYgKzQ1LDcgQEAgZnJvbSBwcm9jZXNzb3Jz
LmNvbW1vbiBpbXBvcnQgY2F0ZWdvcmllcyBhcyBDb21tb25DYXRlZ29yaWVzCiBmcm9tIHByb2Nl
c3NvcnMuY3BwIGltcG9ydCBDcHBQcm9jZXNzb3IKIGZyb20gcHJvY2Vzc29ycy50ZXh0IGltcG9y
dCBUZXh0UHJvY2Vzc29yCiAKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkuc3R5
bGUuY2hlY2tlciIpCiAKICMgVGhlc2UgYXJlIGRlZmF1bHQgb3B0aW9uIHZhbHVlcyBmb3IgdGhl
IGNvbW1hbmQtbGluZSBvcHRpb24gcGFyc2VyLgogX0RFRkFVTFRfVkVSQk9TSVRZID0gMQpAQCAt
MjI0LDYgKzIyNiw4OCBAQCBkZWYgY2hlY2tfd2Via2l0X3N0eWxlX2NvbmZpZ3VyYXRpb24ob3B0
aW9ucyk6CiAgICAgICAgICAgICAgICB2ZXJib3NpdHk9b3B0aW9ucy52ZXJib3NpdHkpCiAKIAor
IyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG1vcmUgdmVyYm9zZSBsb2dnaW5nIGZvciBkZWJ1ZyBw
dXJwb3Nlcy4KKyMgICAgICAgIFRoaXMgY2FuIHVzZSBhIGZvcm1hdHRlciBsaWtlIHRoZSBmb2xs
b3dpbmcsIGZvciBleGFtcGxlLS0KKyMKKyMgICAgICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9y
bWF0dGVyKCIlKG5hbWUpczogWyUobGV2ZWxuYW1lKXNdICUobWVzc2FnZSlzIikKK2RlZiBjb25m
aWd1cmVfbG9nZ2luZyhzdHJlYW0pOgorICAgICIiIkNvbmZpZ3VyZSBsb2dnaW5nLCBhbmQgcmV0
dXJuIHRoZSBsaXN0IG9mIGhhbmRsZXJzIGFkZGVkLgorCisgICAgQ29uZmlndXJlcyB0aGUgcm9v
dCBsb2dnZXIgdG8gbG9nIElORk8gbWVzc2FnZXMgYW5kIGhpZ2hlci4KKyAgICBGb3JtYXRzIFdB
Uk5JTkcgbWVzc2FnZXMgYW5kIGFib3ZlIHRvIGRpc3BsYXkgdGhlIGxvZ2dpbmcgbGV2ZWwKKyAg
ICBhbmQgbWVzc2FnZXMgc3RyaWN0bHkgYmVsb3cgV0FSTklORyBub3QgdG8gZGlzcGxheSBpdC4K
KworICAgIFJldHVybnM6CisgICAgICBBIGxpc3Qgb2YgcmVmZXJlbmNlcyB0byB0aGUgbG9nZ2lu
ZyBoYW5kbGVycyBhZGRlZCB0byB0aGUgcm9vdAorICAgICAgbG9nZ2VyLiAgVGhpcyBhbGxvd3Mg
dGhlIGNhbGxlciB0byBsYXRlciByZW1vdmUgdGhlIGhhbmRsZXJzCisgICAgICB1c2luZyBsb2dn
ZXIucmVtb3ZlSGFuZGxlci4gIFRoaXMgaXMgdXNlZnVsIHByaW1hcmlseSBkdXJpbmcgdW5pdAor
ICAgICAgdGVzdGluZyB3aGVyZSB0aGUgY2FsbGVyIG1heSB3YW50IHRvIGNvbmZpZ3VyZSBsb2dn
aW5nIHRlbXBvcmFyaWx5CisgICAgICBhbmQgdGhlbiB1bmRvIHRoZSBjb25maWd1cmluZy4KKwor
ICAgIEFyZ3M6CisgICAgICBzdHJlYW06IEEgZmlsZS1saWtlIG9iamVjdCB0byB3aGljaCB0byBs
b2cuICBUaGUgc3RyZWFtIG11c3QKKyAgICAgICAgICAgICAgZGVmaW5lIGFuICJlbmNvZGluZyIg
ZGF0YSBhdHRyaWJ1dGUsIG9yIGVsc2UgbG9nZ2luZworICAgICAgICAgICAgICByYWlzZXMgYW4g
ZXJyb3IuCisKKyAgICAiIiIKKyAgICAjIElmIHRoZSBzdHJlYW0gZG9lcyBub3QgZGVmaW5lIGFu
ICJlbmNvZGluZyIgZGF0YSBhdHRyaWJ1dGUsIHRoZQorICAgICMgbG9nZ2luZyBtb2R1bGUgY2Fu
IHRocm93IGFuIGVycm9yIGxpa2UgdGhlIGZvbGxvd2luZzoKKyAgICAjCisgICAgIyBUcmFjZWJh
Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIyAgIEZpbGUgIi9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvMi42Ly4uLgorICAgICMgICAg
ICAgICBsaWIvcHl0aG9uMi42L2xvZ2dpbmcvX19pbml0X18ucHkiLCBsaW5lIDc2MSwgaW4gZW1p
dAorICAgICMgICAgIHNlbGYuc3RyZWFtLndyaXRlKGZzICUgbXNnLmVuY29kZShzZWxmLnN0cmVh
bS5lbmNvZGluZykpCisgICAgIyBMb29rdXBFcnJvcjogdW5rbm93biBlbmNvZGluZzogdW5rbm93
bgorCisgICAgIyBIYW5kbGVzIGxvZ2dpbmcuV0FSTklORyBhbmQgYWJvdmUuCisgICAgZXJyb3Jf
aGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzdHJlYW0pCisgICAgZXJyb3JfaGFuZGxl
ci5zZXRMZXZlbChsb2dnaW5nLldBUk5JTkcpCisgICAgZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3Jt
YXR0ZXIoIiUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzIikKKyAgICBlcnJvcl9oYW5kbGVyLnNl
dEZvcm1hdHRlcihmb3JtYXR0ZXIpCisKKyAgICAjIEhhbmRsZXMgcmVjb3JkcyBzdHJpY3RseSBi
ZWxvdyBsb2dnaW5nLldBUk5JTkcuCisgICAgbm9uX2Vycm9yX2hhbmRsZXIgPSBsb2dnaW5nLlN0
cmVhbUhhbmRsZXIoc3RyZWFtKQorICAgIG5vbl9lcnJvcl9maWx0ZXIgPSBfTGV2ZWxMb2dnaW5n
RmlsdGVyKGxvZ2dpbmcuV0FSTklORykKKyAgICBub25fZXJyb3JfaGFuZGxlci5hZGRGaWx0ZXIo
bm9uX2Vycm9yX2ZpbHRlcikKKyAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigiJSht
ZXNzYWdlKXMiKQorICAgIG5vbl9lcnJvcl9oYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIp
CisKKyAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCisgICAgbG9nZ2VyLnNldExldmVs
KGxvZ2dpbmcuSU5GTykKKworICAgIGhhbmRsZXJzID0gW2Vycm9yX2hhbmRsZXIsIG5vbl9lcnJv
cl9oYW5kbGVyXQorCisgICAgZm9yIGhhbmRsZXIgaW4gaGFuZGxlcnM6CisgICAgICAgIGxvZ2dl
ci5hZGRIYW5kbGVyKGhhbmRsZXIpCisKKyAgICByZXR1cm4gaGFuZGxlcnMKKworCisjIEZJWE1F
OiBDb25zaWRlciBtb3ZpbmcgdGhpcyBjbGFzcyB0byB3ZWJraXRweS5pbml0LmxvZ3Rlc3Rpbmcg
YWZ0ZXIKKyMgICAgICAgIGdldHRpbmcgbW9yZSBleHBlcmllbmNlIHdpdGggaXRzIHVzZS4gIFdl
IHdhbnQgdG8gbWFrZSBzdXJlCisjICAgICAgICB3ZSBoYXZlIHRoZSByaWdodCBBUEkgYmVmb3Jl
IGRvaW5nIHNvLiAgRm9yIGV4YW1wbGUsIHdlIG1heQorIyAgICAgICAgd2FudCB0byBwcm92aWRl
IGEgY29uc3RydWN0b3IgdGhhdCBoYXMgYm90aCB1cHBlciBhbmQgbG93ZXIKKyMgICAgICAgIGJv
dW5kcywgYW5kIG5vdCBqdXN0IGFuIHVwcGVyIGJvdW5kLgorY2xhc3MgX0xldmVsTG9nZ2luZ0Zp
bHRlcihvYmplY3QpOgorCisgICAgIiIiQSBsb2dnaW5nIGZpbHRlciBmb3IgYmxvY2tpbmcgcmVj
b3JkcyBhdCBvciBhYm92ZSBhIGNlcnRhaW4gbGV2ZWwuIiIiCisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgbG9nZ2luZ19sZXZlbCk6CisgICAgICAgICIiIkNyZWF0ZSBhIF9MZXZlbExvZ2dpbmdG
aWx0ZXIuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBsb2dnaW5nX2xldmVsOiBUaGUgbG9n
Z2luZyBsZXZlbCBjdXQtb2ZmLiAgTG9nZ2luZyBsZXZlbHMgYXQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBvciBhYm92ZSB0aGlzIGxldmVsIHdpbGwgbm90IGJlIGxvZ2dlZC4KKworICAgICAg
ICAiIiIKKyAgICAgICAgc2VsZi5fbG9nZ2luZ19sZXZlbCA9IGxvZ2dpbmdfbGV2ZWwKKworICAg
ICMgVGhlIGxvZ2dpbmcgbW9kdWxlIHJlcXVpcmVzIHRoYXQgdGhpcyBtZXRob2QgYmUgZGVmaW5l
ZC4KKyAgICBkZWYgZmlsdGVyKHNlbGYsIGxvZ19yZWNvcmQpOgorICAgICAgICAiIiJSZXR1cm4g
d2hldGhlciBnaXZlbiB0aGUgTG9nUmVjb3JkIHNob3VsZCBiZSBsb2dnZWQuIiIiCisgICAgICAg
IHJldHVybiBsb2dfcmVjb3JkLmxldmVsbm8gPCBzZWxmLl9sb2dnaW5nX2xldmVsCisKKwogIyBF
bnVtLWxpa2UgaWRpb20KIGNsYXNzIEZpbGVUeXBlOgogCkBAIC0zMjIsNiArNDA2LDggQEAgY2xh
c3MgUHJvY2Vzc29yRGlzcGF0Y2hlcihvYmplY3QpOgogICAgICAgICByZXR1cm4gcHJvY2Vzc29y
CiAKIAorIyBGSVhNRTogUmVtb3ZlIHRoZSBzdGRlcnJfd3JpdGUgYXR0cmlidXRlIGZyb20gdGhp
cyBjbGFzcyBhbmQgcmVwbGFjZQorIyAgICAgICAgaXRzIHVzZSB3aXRoIGNhbGxzIHRvIGEgbG9n
Z2luZyBtb2R1bGUgbG9nZ2VyLgogY2xhc3MgU3R5bGVDaGVja2VyQ29uZmlndXJhdGlvbihvYmpl
Y3QpOgogCiAgICAgIiIiU3RvcmVzIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGZvciB0aGUgU3R5bGVD
aGVja2VyIGNsYXNzLgpAQCAtNDM5LDkgKzUyNSw2IEBAIGNsYXNzIFN0eWxlQ2hlY2tlcihvYmpl
Y3QpOgogICAgICAgICBzZWxmLmVycm9yX2NvdW50ID0gMAogICAgICAgICBzZWxmLmZpbGVfY291
bnQgPSAwCiAKLSAgICBkZWYgX3N0ZGVycl93cml0ZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAg
c2VsZi5fY29uZmlndXJhdGlvbi5zdGRlcnJfd3JpdGUobWVzc2FnZSkKLQogICAgIGRlZiBfaW5j
cmVtZW50X2Vycm9yX2NvdW50KHNlbGYpOgogICAgICAgICAiIiJJbmNyZW1lbnQgdGhlIHRvdGFs
IGNvdW50IG9mIHJlcG9ydGVkIGVycm9ycy4iIiIKICAgICAgICAgc2VsZi5lcnJvcl9jb3VudCAr
PSAxCkBAIC00NjksMTEgKzU1MiwxNSBAQCBjbGFzcyBTdHlsZUNoZWNrZXIob2JqZWN0KToKICAg
ICAgICAgICAgIGNvbnRlbnRzID0gZmlsZS5yZWFkKCkKIAogICAgICAgICBleGNlcHQgSU9FcnJv
cjoKLSAgICAgICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZSgiU2tpcHBpbmcgaW5wdXQgJyVzJzog
Q2FuJ3Qgb3BlbiBmb3IgcmVhZGluZ1xuIiAlIGZpbGVfcGF0aCkKKyAgICAgICAgICAgIG1lc3Nh
Z2UgPSAnQ291bGQgbm90IHJlYWQgZmlsZS4gU2tpcHBpbmc6ICIlcyInICUgZmlsZV9wYXRoCisg
ICAgICAgICAgICBfbG9nLndhcm4obWVzc2FnZSkKICAgICAgICAgICAgIHJldHVybgogCiAgICAg
ICAgIGxpbmVzID0gY29udGVudHMuc3BsaXQoIlxuIikKIAorICAgICAgICAjIEZJWE1FOiBNYWtl
IGEgQ2FycmlhZ2VSZXR1cm5Qcm9jZXNzb3IgZm9yIHRoaXMgbG9naWMsIGFuZCBwdXQKKyAgICAg
ICAgIyAgICAgICAgaXQgaW4gcHJvY2Vzc29ycy5jb21tb24uICBUaGUgcHJvY2VzcygpIG1ldGhv
ZCBzaG91bGQKKyAgICAgICAgIyAgICAgICAgcmV0dXJuIHRoZSBsaW5lcyB3aXRoIHRoZSBjYXJy
aWFnZSByZXR1cm5zIHN0cmlwcGVkLgogICAgICAgICBmb3IgbGluZV9udW1iZXIgaW4gcmFuZ2Uo
bGVuKGxpbmVzKSk6CiAgICAgICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgdXNl
IHRoZSBTVk4gImVvbC1zdHlsZSIgcHJvcGVydHkKICAgICAgICAgICAgICMgICAgICAgIG9yIGEg
d2hpdGUgbGlzdCB0byBkZWNpZGUgd2hldGhlciBvciBub3QgdG8gZG8KQEAgLTUyMCw4ICs2MDcs
OCBAQCBjbGFzcyBTdHlsZUNoZWNrZXIob2JqZWN0KToKICAgICAgICAgaWYgZGlzcGF0Y2hlci5z
aG91bGRfc2tpcF93aXRob3V0X3dhcm5pbmcoZmlsZV9wYXRoKToKICAgICAgICAgICAgIHJldHVy
bgogICAgICAgICBpZiBkaXNwYXRjaGVyLnNob3VsZF9za2lwX3dpdGhfd2FybmluZyhmaWxlX3Bh
dGgpOgotICAgICAgICAgICAgc2VsZi5fc3RkZXJyX3dyaXRlKCdJZ25vcmluZyAiJXMiOiB0aGlz
IGZpbGUgaXMgZXhlbXB0IGZyb20gdGhlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAic3R5bGUgZ3VpZGUuXG4iICUgZmlsZV9wYXRoKQorICAgICAgICAgICAgX2xvZy53YXJuKCdG
aWxlIGV4ZW1wdCBmcm9tIHN0eWxlIGd1aWRlLiBTa2lwcGluZzogIiVzIicKKyAgICAgICAgICAg
ICAgICAgICAgICAlIGZpbGVfcGF0aCkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIHZl
cmJvc2l0eSA9IHNlbGYuX2NvbmZpZ3VyYXRpb24udmVyYm9zaXR5CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkKaW5kZXgg
YWU4Y2NjYy4uZDg2NjY2MyAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weQpAQCAtMzQsMTUgKzM0LDE5IEBACiAKICIi
IlVuaXQgdGVzdHMgZm9yIHN0eWxlLnB5LiIiIgogCitpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHVu
aXR0ZXN0CiAKIGltcG9ydCBjaGVja2VyIGFzIHN0eWxlCitmcm9tIC4uc3R5bGVfcmVmZXJlbmNl
cyBpbXBvcnQgVW5pdFRlc3RMb2cKK2Zyb20gLi5zdHlsZV9yZWZlcmVuY2VzIGltcG9ydCBVbml0
VGVzdExvZ1N0cmVhbQogZnJvbSBjaGVja2VyIGltcG9ydCBfQkFTRV9GSUxURVJfUlVMRVMKIGZy
b20gY2hlY2tlciBpbXBvcnQgX01BWF9SRVBPUlRTX1BFUl9DQVRFR09SWQogZnJvbSBjaGVja2Vy
IGltcG9ydCBfUEFUSF9SVUxFU19TUEVDSUZJRVIgYXMgUEFUSF9SVUxFU19TUEVDSUZJRVIKIGZy
b20gY2hlY2tlciBpbXBvcnQgX2FsbF9jYXRlZ29yaWVzCiBmcm9tIGNoZWNrZXIgaW1wb3J0IGNo
ZWNrX3dlYmtpdF9zdHlsZV9jb25maWd1cmF0aW9uCiBmcm9tIGNoZWNrZXIgaW1wb3J0IGNoZWNr
X3dlYmtpdF9zdHlsZV9wYXJzZXIKK2Zyb20gY2hlY2tlciBpbXBvcnQgY29uZmlndXJlX2xvZ2dp
bmcKIGZyb20gY2hlY2tlciBpbXBvcnQgUHJvY2Vzc29yRGlzcGF0Y2hlcgogZnJvbSBjaGVja2Vy
IGltcG9ydCBTdHlsZUNoZWNrZXIKIGZyb20gY2hlY2tlciBpbXBvcnQgU3R5bGVDaGVja2VyQ29u
ZmlndXJhdGlvbgpAQCAtNTQsNiArNTgsNTggQEAgZnJvbSBwcm9jZXNzb3JzLmNwcCBpbXBvcnQg
Q3BwUHJvY2Vzc29yCiBmcm9tIHByb2Nlc3NvcnMudGV4dCBpbXBvcnQgVGV4dFByb2Nlc3Nvcgog
CiAKK2NsYXNzIENvbmZpZ3VyZUxvZ2dpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAg
ICIiIlRlc3RzIHRoZSBjb25maWd1cmVfbG9nZ2luZygpIGZ1bmN0aW9uLiIiIgorCisgICAgZGVm
IHNldFVwKHNlbGYpOgorICAgICAgICBsb2dfc3RyZWFtID0gVW5pdFRlc3RMb2dTdHJlYW0oKQor
CisgICAgICAgIHNlbGYuX2hhbmRsZXJzID0gY29uZmlndXJlX2xvZ2dpbmcobG9nX3N0cmVhbSkK
KyAgICAgICAgc2VsZi5fbG9nX3N0cmVhbSA9IGxvZ19zdHJlYW0KKworICAgIGRlZiB0ZWFyRG93
bihzZWxmKToKKyAgICAgICAgIiIiUmVzZXQgbG9nZ2luZyB0byBpdHMgb3JpZ2luYWwgc3RhdGUu
CisKKyAgICAgICAgVGhpcyBtZXRob2QgZW5zdXJlcyB0aGF0IHRoZSBsb2dnaW5nIGNvbmZpZ3Vy
YXRpb24gc2V0IHVwCisgICAgICAgIGZvciBhIHVuaXQgdGVzdCBkb2VzIG5vdCBhZmZlY3QgbG9n
Z2luZyBpbiBvdGhlciB1bml0IHRlc3RzLgorCisgICAgICAgICIiIgorICAgICAgICAjIFRoaXMg
c2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBsb2dnZXIgY29uZmlndXJlZCBpbiB0aGUKKyAgICAg
ICAgIyBjb25maWd1cmVfbG9nZ2luZygpIG1ldGhvZC4KKyAgICAgICAgbG9nZ2VyID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoKQorICAgICAgICBmb3IgaGFuZGxlciBpbiBzZWxmLl9oYW5kbGVyczoKKyAg
ICAgICAgICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGhhbmRsZXIpCisKKyAgICBkZWYgX2xvZyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuIGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweSIpCisKKyAg
ICBkZWYgYXNzZXJ0X2xvZ19tZXNzYWdlcyhzZWxmLCBtZXNzYWdlcyk6CisgICAgICAgICIiIkFz
c2VydCB0aGF0IHRoZSBsb2dnZWQgbWVzc2FnZXMgZXF1YWwgdGhlIGdpdmVuIG1lc3NhZ2VzLiIi
IgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtZXNzYWdlcywgc2VsZi5fbG9nX3N0cmVhbS5t
ZXNzYWdlcykKKworICAgIGRlZiB0ZXN0X3dhcm5pbmdfbWVzc2FnZShzZWxmKToKKyAgICAgICAg
c2VsZi5fbG9nKCkud2FybigidGVzdCBtZXNzYWdlIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9n
X21lc3NhZ2VzKFsiV0FSTklORzogdGVzdCBtZXNzYWdlXG4iXSkKKworICAgIGRlZiB0ZXN0X2Jl
bG93X3dhcm5pbmdfbWVzc2FnZShzZWxmKToKKyAgICAgICAgIyBXZSB0ZXN0IHRoZSBib3VuZGFy
eSBjYXNlIG9mIGEgbG9nZ2luZyBsZXZlbCBlcXVhbCB0byAyOS4KKyAgICAgICAgIyBJbiBwcmFj
dGljZSwgd2Ugd2lsbCBwcm9iYWJseSBvbmx5IGJlIGNhbGxpbmcgbG9nLmluZm8oKSwKKyAgICAg
ICAgIyB3aGljaCBjb3JyZXNwb25kcyB0byBhIGxvZ2dpbmcgbGV2ZWwgb2YgMjAuCisgICAgICAg
IGxldmVsID0gbG9nZ2luZy5XQVJOSU5HIC0gMSAgIyBFcXVhbHMgMjkuCisgICAgICAgIHNlbGYu
X2xvZygpLmxvZyhsZXZlbCwgInRlc3QgbWVzc2FnZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xv
Z19tZXNzYWdlcyhbInRlc3QgbWVzc2FnZVxuIl0pCisKKyAgICBkZWYgdGVzdF9kZWJ1Z19tZXNz
YWdlKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2coKS5kZWJ1ZygidGVzdCBtZXNzYWdlIikKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbG9nX21lc3NhZ2VzKFtdKQorCisgICAgZGVmIHRlc3RfdHdvX21l
c3NhZ2VzKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2coKS5pbmZvKCJtZXNzYWdlMSIpCisgICAg
ICAgIHNlbGYuX2xvZygpLmluZm8oIm1lc3NhZ2UyIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9n
X21lc3NhZ2VzKFsibWVzc2FnZTFcbiIsICJtZXNzYWdlMlxuIl0pCisKKwogY2xhc3MgR2xvYmFs
VmFyaWFibGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAiIiJUZXN0cyB2YWxpZGl0
eSBvZiB0aGUgZ2xvYmFsIHZhcmlhYmxlcy4iIiIKQEAgLTQ0NiwxMSArNTAyLDE1IEBAIGNsYXNz
IFN0eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIiIi
CiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2cgPSBVbml0VGVzdExvZyhz
ZWxmKQogICAgICAgICBzZWxmLmdvdF9maWxlX3BhdGggPSBOb25lCiAgICAgICAgIHNlbGYuZ290
X2hhbmRsZV9zdHlsZV9lcnJvciA9IE5vbmUKICAgICAgICAgc2VsZi5nb3RfcHJvY2Vzc29yID0g
Tm9uZQogICAgICAgICBzZWxmLndhcm5pbmdfbWVzc2FnZXMgPSAiIgogCisgICAgZGVmIHRlYXJE
b3duKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2cudGVhckRvd24oKQorCiAgICAgZGVmIG1vY2tf
c3RkZXJyX3dyaXRlKHNlbGYsIHdhcm5pbmdfbWVzc2FnZSk6CiAgICAgICAgIHNlbGYud2Fybmlu
Z19tZXNzYWdlcyArPSB3YXJuaW5nX21lc3NhZ2UKIApAQCAtNTIzLDggKzU4Myw5IEBAIGNsYXNz
IFN0eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAg
ICMgQ2hlY2sgdGhlIG91dGNvbWUuCiAgICAgICAgIHNlbGYuY2FsbF9jaGVja19maWxlKGZpbGVf
cGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRfYXR0cmlidXRlcyhOb25lLCBOb25lLCBOb25lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJZ25vcmluZyAiZ3RrMmRyYXdpbmcuYyI6
IHRoaXMgZmlsZSBpcyBleGVtcHQgZnJvbSB0aGUgc3R5bGUgZ3VpZGUuXG4nKQorICAgICAgICBz
ZWxmLmFzc2VydF9hdHRyaWJ1dGVzKE5vbmUsIE5vbmUsIE5vbmUsICIiKQorICAgICAgICBzZWxm
Ll9sb2cuYXNzZXJ0TWVzc2FnZXMoWyJXQVJOSU5HOiBGaWxlIGV4ZW1wdCBmcm9tIHN0eWxlIGd1
aWRlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NraXBwaW5nOiAiZ3Rr
MmRyYXdpbmcuYyJcbiddKQogCiAgICAgZGVmIHRlc3RfY2hlY2tfZmlsZV9vbl9ub25fc2tpcHBl
ZChzZWxmKToKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZV9yZWZlcmVuY2VzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZl
cmVuY2VzLnB5CmluZGV4IDI1MjhjNGQuLmNiOGE5ODUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkKQEAgLTQxLDYgKzQxLDggQEAKIGlt
cG9ydCBvcwogCiBmcm9tIGRpZmZfcGFyc2VyIGltcG9ydCBEaWZmUGFyc2VyCitmcm9tIGluaXQu
bG9ndGVzdGluZyBpbXBvcnQgVW5pdFRlc3RMb2cKK2Zyb20gaW5pdC5sb2d0ZXN0aW5nIGltcG9y
dCBVbml0VGVzdExvZ1N0cmVhbQogZnJvbSBzY20gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtCiAK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49788</attachid>
            <date>2010-03-02 00:22:18 -0800</date>
            <delta_ts>2010-03-02 07:52:05 -0800</delta_ts>
            <desc>Proposed patch 5</desc>
            <filename>_patch-35484-5.diff</filename>
            <type>text/plain</type>
            <size>20087</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlMjBjYjQwLi5jM2VlODY0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTAtMDMt
MDIgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RhcnRlZCB1c2luZyB0aGUgbG9n
Z2luZyBtb2R1bGUgaW4gY2hlY2std2Via2l0LXN0eWxlLgorICAgICAgICBUaGlzIHByb3ZpZGVz
IG1vcmUgb3B0aW9ucyBmb3IgZGVidWdnaW5nIGFuZCBhIG1vcmUgZmxleGlibGUsCisgICAgICAg
IHVuaWZvcm0gd2F5IHRvIHJlcG9ydCBtZXNzYWdlcyB0byB0aGUgZW5kLXVzZXIuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NDg0CisKKyAgICAg
ICAgQWxzbyBpbmNsdWRlZCBjbGFzc2VzIGluIGEgY2VudHJhbCBsb2NhdGlvbiB0byBmYWNpbGl0
YXRlCisgICAgICAgIHRoZSB1bml0IHRlc3Rpbmcgb2YgbG9nZ2luZyBjb2RlIChzZXRVcCBhbmQg
dGVhckRvd24gb2YgdW5pdAorICAgICAgICB0ZXN0IGxvZ2dpbmcgY29uZmlndXJhdGlvbnMsIGV0
YykuCisKKyAgICAgICAgKiBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZToKKyAgICAgICAgICAt
IEFkZGVkIGEgY2FsbCB0byBjb25maWd1cmVfbG9nZ2luZygpIGluIHRoZSBiZWdpbm5pbmcgb2Yg
bWFpbigpLgorICAgICAgICAgIC0gUmVwbGFjZWQgdHdvIGNhbGxzIHRvIHN5cy5zdGRlcnIud3Jp
dGUoKSB3aXRoIGFwcHJvcHJpYXRlCisgICAgICAgICAgICBsb2dnaW5nIGNhbGxzLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9pbml0L2xvZ3Rlc3RpbmcucHk6IEFkZGVkLgorICAgICAg
ICAgIC0gQWRkZWQgYSBVbml0VGVzdExvZ1N0cmVhbSBjbGFzcyB0byBjYXB0dXJlIGxvZyBvdXRw
dXQKKyAgICAgICAgICAgIGR1cmluZyB1bml0IHRlc3RzLgorICAgICAgICAgIC0gQWRkZWQgYSBV
bml0VGVzdExvZyBjbGFzcyB0aGF0IHByb3ZpZGVzIGNvbnZlbmllbmNlIG1ldGhvZHMKKyAgICAg
ICAgICAgIGZvciB1bml0LXRlc3RpbmcgbG9nZ2luZyBjb2RlLgorCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAgICAgIC0gQWRkZWQgYSBjb25maWd1
cmVfbG9nZ2luZygpIG1ldGhvZC4KKyAgICAgICAgICAtIEFkZGVkIGEgX0xldmVsTG9nZ2luZ0Zp
bHRlciBjbGFzcyB0byBmaWx0ZXIgb3V0IGxvZyBtZXNzYWdlcworICAgICAgICAgICAgYWJvdmUg
YSBjZXJ0YWluIGxvZ2dpbmcgbGV2ZWwuCisgICAgICAgICAgLSBSZW1vdmVkIHRoZSBfc3RkZXJy
X3dyaXRlKCkgbWV0aG9kIGZyb20gdGhlIFN0eWxlQ2hlY2tlciBjbGFzcworICAgICAgICAgICAg
YW5kIHJlcGxhY2VkIGl0cyB1c2Ugd2l0aCBhcHByb3ByaWF0ZSBsb2dnaW5nIGNhbGxzLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAgIC0gQWRkZWQgYSBDb25maWd1cmVMb2dnaW5nVGVzdCBjbGFzcyB0byB1bml0IHRlc3Qg
dGhlCisgICAgICAgICAgICBjb25maWd1cmVfbG9nZ2luZygpIG1ldGhvZC4KKyAgICAgICAgICAt
IFVwZGF0ZWQgdGhlIFN0eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QgY2xhc3MgYXMgbmVjZXNzYXJ5
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5OgorICAg
ICAgICAgIC0gQWRkZWQgcmVmZXJlbmNlcyB0byBsb2d0ZXN0aW5nLlVuaXRUZXN0TG9nIGFuZAor
ICAgICAgICAgICAgbG9ndGVzdGluZy5Vbml0VGVzdExvZ1N0cmVhbS4KKwogMjAxMC0wMy0wMSAg
Q2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGluZyBi
cm9rZW4gRFJUIG9uIExlb3BhcmQvVGlnZXIuIFNlY29uZCB0cnkuCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
Y2hlY2std2Via2l0LXN0eWxlCmluZGV4IGVhMmU5NDMuLmYxODg1YjIgMTAwNzU1Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvY2hlY2std2Via2l0LXN0eWxlCkBAIC00Myw2ICs0Myw3IEBAIHNhbWUgbGluZSwgYnV0
IGl0IGlzIGZhciBmcm9tIHBlcmZlY3QgKGluIGVpdGhlciBkaXJlY3Rpb24pLgogIiIiCiAKIGlt
cG9ydCBjb2RlY3MKK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBp
bXBvcnQgc3lzCkBAIC01MCwxMyArNTEsMjggQEAgaW1wb3J0IHN5cwogaW1wb3J0IHdlYmtpdHB5
LnN0eWxlLmNoZWNrZXIgYXMgY2hlY2tlcgogZnJvbSB3ZWJraXRweS5zdHlsZV9yZWZlcmVuY2Vz
IGltcG9ydCBTaW1wbGVTY20KIAorX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjaGVjay13ZWJr
aXQtc3R5bGUiKQorCiBkZWYgbWFpbigpOgogICAgICMgQ2hhbmdlIHN0ZGVyciB0byB3cml0ZSB3
aXRoIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgc28gd2UgZG9uJ3QgZGllCiAgICAgIyBpZiB3ZSB0
cnkgdG8gcHJpbnQgc29tZXRoaW5nIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCi0g
ICAgc3lzLnN0ZGVyciA9IGNvZGVjcy5TdHJlYW1SZWFkZXJXcml0ZXIoc3lzLnN0ZGVyciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0cmVhZGVy
KCd1dGY4JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29k
ZWNzLmdldHdyaXRlcigndXRmOCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdyZXBsYWNlJykKKyAgICBzdGRlcnIgPSBjb2RlY3MuU3RyZWFtUmVhZGVyV3Jp
dGVyKHN5cy5zdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b2RlY3MuZ2V0cmVhZGVyKCd1dGY4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb2RlY3MuZ2V0d3JpdGVyKCd1dGY4JyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAncmVwbGFjZScpCisgICAgIyBTZXR0aW5nIGFuICJlbmNvZGluZyIg
YXR0cmlidXRlIG9uIHRoZSBzdHJlYW0gaXMgbmVjZXNzYXJ5IHRvCisgICAgIyBwcmV2ZW50IHRo
ZSBsb2dnaW5nIG1vZHVsZSBmcm9tIHJhaXNpbmcgYW4gZXJyb3IuICBTZWUKKyAgICAjIHRoZSBj
aGVja2VyLmNvbmZpZ3VyZV9sb2dnaW5nKCkgZnVuY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24u
CisgICAgc3RkZXJyLmVuY29kaW5nID0gIlVURi04IgorCisgICAgIyBGSVhNRTogQ2hhbmdlIHdl
YmtpdHB5LnN0eWxlIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gb3ZlcndyaXRlCisgICAgIyAg
ICAgICAgdGhlIGdsb2JhbCBzeXMuc3RkZXJyLiAgVGhpcyBpbnZvbHZlcyB1cGRhdGluZyB0aGUg
Y29kZSB0bworICAgICMgICAgICAgIGFjY2VwdCBhIHN0cmVhbSBwYXJhbWV0ZXIgd2hlcmUgbmVj
ZXNzYXJ5LCBhbmQgbm90IGNhbGxpbmcKKyAgICAjICAgICAgICBzeXMuc3RkZXJyIGV4cGxpY2l0
bHkgYW55d2hlcmUuCisgICAgc3lzLnN0ZGVyciA9IHN0ZGVycgorCisgICAgY2hlY2tlci5jb25m
aWd1cmVfbG9nZ2luZyhzdGRlcnIpCisKICAgICBwYXJzZXIgPSBjaGVja2VyLmNoZWNrX3dlYmtp
dF9zdHlsZV9wYXJzZXIoKQogICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZXIucGFyc2Uoc3lz
LmFyZ3ZbMTpdKQogCkBAIC03OCw3ICs5NCw4IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAg
ICAgIyBGSVhNRTogSWYgdGhlIHJhbmdlIGlzIGEgIi4uLiIsIHRoZSBjb2RlIHNob3VsZCBmaW5k
IHRoZSBjb21tb24gYW5jZXN0b3IgYW5kCiAgICAgICAgICAgICAgICAgIyBzdGFydCB0aGVyZSAo
c2VlIGdpdCBkaWZmIC0taGVscCBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IC4uLiB1c3VhbGx5
IHdvcmtzKS4KICAgICAgICAgICAgICAgICBjb21taXQgPSBjb21taXRbOmNvbW1pdC5maW5kKCcu
LicpXQotICAgICAgICAgICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICJXYXJuaW5nOiBSYW5n
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIC0tZ2l0LWNvbW1pdC4gQ2hlY2tpbmcgYWxsIGNoYW5n
ZXMgc2luY2UgJXMuXG4iICUgY29tbWl0CisgICAgICAgICAgICAgICAgX2xvZy53YXJuKCJSYW5n
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIC0tZ2l0LWNvbW1pdC4gIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAiQ2hlY2tpbmcgYWxsIGNoYW5nZXMgc2luY2UgJXMuIiAlIGNvbW1pdCkKICAg
ICAgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaF9zaW5jZV9sb2NhbF9jb21taXQoY29t
bWl0KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNo
KCkKQEAgLTg2LDggKzEwMyw4IEBAIGRlZiBtYWluKCk6CiAKICAgICBlcnJvcl9jb3VudCA9IHN0
eWxlX2NoZWNrZXIuZXJyb3JfY291bnQKICAgICBmaWxlX2NvdW50ID0gc3R5bGVfY2hlY2tlci5m
aWxlX2NvdW50Ci0gICAgc3lzLnN0ZGVyci53cml0ZSgnVG90YWwgZXJyb3JzIGZvdW5kOiAlZCBp
biAlZCBmaWxlc1xuJwotICAgICAgICAgICAgICAgICAgICAgJSAoZXJyb3JfY291bnQsIGZpbGVf
Y291bnQpKQorICAgIF9sb2cuaW5mbygiVG90YWwgZXJyb3JzIGZvdW5kOiAlZCBpbiAlZCBmaWxl
cyIKKyAgICAgICAgICAgICAgJSAoZXJyb3JfY291bnQsIGZpbGVfY291bnQpKQogICAgICMgV2Ug
ZmFpbCB3aGVuIHN0eWxlIGVycm9ycyBhcmUgZm91bmQgb3IgdGhlcmUgYXJlIG5vIGNoZWNrZWQg
ZmlsZXMuCiAgICAgc3lzLmV4aXQoZXJyb3JfY291bnQgPiAwIG9yIGZpbGVfY291bnQgPT0gMCkK
IApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pbml0L2xvZ3Rlc3Rp
bmcucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2luaXQvbG9ndGVzdGluZy5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzYzMTE1Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pbml0L2xvZ3Rlc3RpbmcucHkKQEAg
LTAsMCArMSwxMjIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChjamVy
ZG9uZWtAd2Via2l0Lm9yZykKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworIiIiU3VwcG9ydHMgdGhlIHVuaXQtdGVzdGluZyBvZiBsb2dnaW5nLiIiIgorCitpbXBv
cnQgbG9nZ2luZworCisKK2NsYXNzIFVuaXRUZXN0TG9nU3RyZWFtKG9iamVjdCk6CisKKyAgICAi
IiJSZXByZXNlbnRzIGEgZmlsZS1saWtlIG9iamVjdCBmb3IgdW5pdC10ZXN0aW5nIGxvZ2dpbmcu
CisKKyAgICBUaGlzIGlzIG1lYW50IGZvciBwYXNzaW5nIHRvIHRoZSBsb2dnaW5nLlN0cmVhbUhh
bmRsZXIgY29uc3RydWN0b3IuCisKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
KyAgICAgICAgc2VsZi5tZXNzYWdlcyA9IFtdCisgICAgICAgICIiIkEgbGlzdCBvZiBsb2cgbWVz
c2FnZXMgd3JpdHRlbiB0byB0aGUgc3RyZWFtLiIiIgorCisgICAgZGVmIHdyaXRlKHNlbGYsIG1l
c3NhZ2UpOgorICAgICAgICBzZWxmLm1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQorCisgICAgZGVm
IGZsdXNoKHNlbGYpOgorICAgICAgICBwYXNzCisKKworY2xhc3MgVW5pdFRlc3RMb2cob2JqZWN0
KToKKworICAgICIiIlN1cHBvcnRzIHVuaXQtdGVzdGluZyBsb2dnaW5nLgorCisgICAgU2FtcGxl
IHVzYWdlOgorCisgICAgIyBUaGUgZm9sbG93aW5nIGxpbmUgc2hvdWxkIGdvIGluIHRoZSBzZXRV
cCgpIG1ldGhvZCBvZiBhCisgICAgIyB1bml0dGVzdC5UZXN0Q2FzZS4gIEluIHBhcnRpY3VsYXIs
IHNlbGYgaXMgYSBUZXN0Q2FzZSBpbnN0YW5jZS4KKyAgICBzZWxmLl9sb2cgPSBVbml0VGVzdExv
ZyhzZWxmKQorCisgICAgIyBDYWxsIHRoZSBmb2xsb3dpbmcgaW4gYSB0ZXN0IG1ldGhvZCBvZiBh
IHVuaXR0ZXN0LlRlc3RDYXNlLgorICAgIGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRw
eSIpCisgICAgbG9nLmluZm8oIm1lc3NhZ2UxIikKKyAgICBsb2cud2FybigibWVzc2FnZTIiKQor
ICAgIHNlbGYuX2xvZy5hc3NlcnRNZXNzYWdlcyhbIklORk86IG1lc3NhZ2UxXG4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIldBUk46IG1lc3NhZ2UyXG4iXSkgICMgU2hvdWxkIHN1
Y2NlZWQuCisKKyAgICAjIFRoZSBmb2xsb3dpbmcgbGluZSBzaG91bGQgZ28gaW4gdGhlIHRlYXJE
b3duKCkgbWV0aG9kIG9mCisgICAgIyB1bml0dGVzdC5UZXN0Q2FzZS4KKyAgICBzZWxmLl9sb2cu
dGVhckRvd24oKQorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9jYXNl
LCBsb2dnaW5nX2xldmVsPU5vbmUpOgorICAgICAgICAiIiJDb25maWd1cmUgdW5pdCB0ZXN0IGxv
Z2dpbmcsIGFuZCByZXR1cm4gYW4gaW5zdGFuY2UuCisKKyAgICAgICAgVGhpcyBtZXRob2QgY29u
ZmlndXJlcyB0aGUgcm9vdCBsb2dnZXIgdG8gbG9nIHRvIGEgdGVzdGluZworICAgICAgICBsb2cg
c3RyZWFtLiAgT25seSBtZXNzYWdlcyBsb2dnZWQgYXQgb3IgYWJvdmUgdGhlIGdpdmVuIGxldmVs
CisgICAgICAgIGFyZSBsb2dnZWQgdG8gdGhlIHN0cmVhbS4gIE1lc3NhZ2VzIGFyZSBmb3JtYXR0
ZWQgaW4gdGhlCisgICAgICAgIGZvbGxvd2luZyB3YXksIGZvciBleGFtcGxlLS0KKworICAgICAg
ICAiSU5GTzogVGhpcyBpcyBhIHRlc3QgbG9nIG1lc3NhZ2UuIgorCisgICAgICAgIFRoaXMgbWV0
aG9kIHNob3VsZCBub3JtYWxseSBiZSBjYWxsZWQgaW4gdGhlIHNldFVwKCkgbWV0aG9kCisgICAg
ICAgIG9mIGEgdW5pdHRlc3QuVGVzdENhc2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICB0
ZXN0X2Nhc2U6IEEgdW5pdHRlc3QuVGVzdENhc2UgaW5zdGFuY2UuCisgICAgICAgICAgbG9nZ2lu
Z19sZXZlbDogQSBsb2dnaW5nIGxldmVsLiAgT25seSBtZXNzYWdlcyBsb2dnZWQgYXQgb3IKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBhYm92ZSB0aGlzIGxldmVsIGFyZSB3cml0dGVuIHRvIHRo
ZSB0ZXN0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgbG9nIHN0cmVhbS4gIERlZmF1bHRz
IHRvIGxvZ2dpbmcuSU5GTy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgbG9nZ2luZ19sZXZl
bCBpcyBOb25lOgorICAgICAgICAgICAgbG9nZ2luZ19sZXZlbCA9IGxvZ2dpbmcuSU5GTworCisg
ICAgICAgIHN0cmVhbSA9IFVuaXRUZXN0TG9nU3RyZWFtKCkKKyAgICAgICAgaGFuZGxlciA9IGxv
Z2dpbmcuU3RyZWFtSGFuZGxlcihzdHJlYW0pCisgICAgICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcu
Rm9ybWF0dGVyKCIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpCisgICAgICAgIGhhbmRsZXIu
c2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKKworICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExv
Z2dlcigpCisgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nX2xldmVsKQorICAgICAgICBs
b2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQorCisgICAgICAgIHNlbGYuX2hhbmRsZXIgPSBoYW5k
bGVyCisgICAgICAgIHNlbGYuX21lc3NhZ2VzID0gc3RyZWFtLm1lc3NhZ2VzCisgICAgICAgIHNl
bGYuX3Rlc3RfY2FzZSA9IHRlc3RfY2FzZQorCisgICAgZGVmIF9sb2dnZXIoc2VsZik6CisgICAg
ICAgICIiIlJldHVybiB0aGUgcm9vdCBsb2dnZXIgdXNlZCBmb3IgbG9nZ2luZy4iIiIKKyAgICAg
ICAgcmV0dXJuIGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKworICAgIGRlZiBhc3NlcnRNZXNzYWdlcyhz
ZWxmLCBtZXNzYWdlcyk6CisgICAgICAgICIiIkFzc2VydCB0aGF0IHRoZSBnaXZlbiBtZXNzYWdl
cyBtYXRjaCB0aGUgbG9nZ2VkIG1lc3NhZ2VzLiIiIgorICAgICAgICBzZWxmLl90ZXN0X2Nhc2Uu
YXNzZXJ0RXF1YWxzKG1lc3NhZ2VzLCBzZWxmLl9tZXNzYWdlcykKKworICAgIGRlZiB0ZWFyRG93
bihzZWxmKToKKyAgICAgICAgIiIiVW5jb25maWd1cmUgdW5pdCB0ZXN0IGxvZ2dpbmcuCisKKyAg
ICAgICAgVGhpcyBzaG91bGQgbm9ybWFsbHkgYmUgY2FsbGVkIGluIHRoZSB0ZWFyRG93biBtZXRo
b2Qgb2YgYQorICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZQorCisgICAgICAgICIiIgorICAgICAg
ICBsb2dnZXIgPSBzZWxmLl9sb2dnZXIoKQorICAgICAgICBsb2dnZXIucmVtb3ZlSGFuZGxlcihz
ZWxmLl9oYW5kbGVyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2VyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2VyLnB5CmluZGV4IDg0OTRlMWIuLmM3NGFlY2UgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTMwLDYgKzMwLDcgQEAKICIiIkZyb250IGVu
ZCBvZiBzb21lIHN0eWxlLWNoZWNrZXIgbW9kdWxlcy4iIiIKIAogaW1wb3J0IGNvZGVjcworaW1w
b3J0IGxvZ2dpbmcKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc3lzCiAKQEAgLTQ0LDYgKzQ1LDcg
QEAgZnJvbSBwcm9jZXNzb3JzLmNvbW1vbiBpbXBvcnQgY2F0ZWdvcmllcyBhcyBDb21tb25DYXRl
Z29yaWVzCiBmcm9tIHByb2Nlc3NvcnMuY3BwIGltcG9ydCBDcHBQcm9jZXNzb3IKIGZyb20gcHJv
Y2Vzc29ycy50ZXh0IGltcG9ydCBUZXh0UHJvY2Vzc29yCiAKK19sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcigid2Via2l0cHkuc3R5bGUuY2hlY2tlciIpCiAKICMgVGhlc2UgYXJlIGRlZmF1bHQgb3B0
aW9uIHZhbHVlcyBmb3IgdGhlIGNvbW1hbmQtbGluZSBvcHRpb24gcGFyc2VyLgogX0RFRkFVTFRf
VkVSQk9TSVRZID0gMQpAQCAtMjI0LDYgKzIyNiw4OCBAQCBkZWYgY2hlY2tfd2Via2l0X3N0eWxl
X2NvbmZpZ3VyYXRpb24ob3B0aW9ucyk6CiAgICAgICAgICAgICAgICB2ZXJib3NpdHk9b3B0aW9u
cy52ZXJib3NpdHkpCiAKIAorIyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG1vcmUgdmVyYm9zZSBs
b2dnaW5nIGZvciBkZWJ1ZyBwdXJwb3Nlcy4KKyMgICAgICAgIFRoaXMgY2FuIHVzZSBhIGZvcm1h
dHRlciBsaWtlIHRoZSBmb2xsb3dpbmcsIGZvciBleGFtcGxlLS0KKyMKKyMgICAgICAgIGZvcm1h
dHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKCIlKG5hbWUpczogWyUobGV2ZWxuYW1lKXNdICUobWVz
c2FnZSlzIikKK2RlZiBjb25maWd1cmVfbG9nZ2luZyhzdHJlYW0pOgorICAgICIiIkNvbmZpZ3Vy
ZSBsb2dnaW5nLCBhbmQgcmV0dXJuIHRoZSBsaXN0IG9mIGhhbmRsZXJzIGFkZGVkLgorCisgICAg
Q29uZmlndXJlcyB0aGUgcm9vdCBsb2dnZXIgdG8gbG9nIElORk8gbWVzc2FnZXMgYW5kIGhpZ2hl
ci4KKyAgICBGb3JtYXRzIFdBUk5JTkcgbWVzc2FnZXMgYW5kIGFib3ZlIHRvIGRpc3BsYXkgdGhl
IGxvZ2dpbmcgbGV2ZWwKKyAgICBhbmQgbWVzc2FnZXMgc3RyaWN0bHkgYmVsb3cgV0FSTklORyBu
b3QgdG8gZGlzcGxheSBpdC4KKworICAgIFJldHVybnM6CisgICAgICBBIGxpc3Qgb2YgcmVmZXJl
bmNlcyB0byB0aGUgbG9nZ2luZyBoYW5kbGVycyBhZGRlZCB0byB0aGUgcm9vdAorICAgICAgbG9n
Z2VyLiAgVGhpcyBhbGxvd3MgdGhlIGNhbGxlciB0byBsYXRlciByZW1vdmUgdGhlIGhhbmRsZXJz
CisgICAgICB1c2luZyBsb2dnZXIucmVtb3ZlSGFuZGxlci4gIFRoaXMgaXMgdXNlZnVsIHByaW1h
cmlseSBkdXJpbmcgdW5pdAorICAgICAgdGVzdGluZyB3aGVyZSB0aGUgY2FsbGVyIG1heSB3YW50
IHRvIGNvbmZpZ3VyZSBsb2dnaW5nIHRlbXBvcmFyaWx5CisgICAgICBhbmQgdGhlbiB1bmRvIHRo
ZSBjb25maWd1cmluZy4KKworICAgIEFyZ3M6CisgICAgICBzdHJlYW06IEEgZmlsZS1saWtlIG9i
amVjdCB0byB3aGljaCB0byBsb2cuICBUaGUgc3RyZWFtIG11c3QKKyAgICAgICAgICAgICAgZGVm
aW5lIGFuICJlbmNvZGluZyIgZGF0YSBhdHRyaWJ1dGUsIG9yIGVsc2UgbG9nZ2luZworICAgICAg
ICAgICAgICByYWlzZXMgYW4gZXJyb3IuCisKKyAgICAiIiIKKyAgICAjIElmIHRoZSBzdHJlYW0g
ZG9lcyBub3QgZGVmaW5lIGFuICJlbmNvZGluZyIgZGF0YSBhdHRyaWJ1dGUsIHRoZQorICAgICMg
bG9nZ2luZyBtb2R1bGUgY2FuIHRocm93IGFuIGVycm9yIGxpa2UgdGhlIGZvbGxvd2luZzoKKyAg
ICAjCisgICAgIyBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIyAgIEZp
bGUgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMv
Mi42Ly4uLgorICAgICMgICAgICAgICBsaWIvcHl0aG9uMi42L2xvZ2dpbmcvX19pbml0X18ucHki
LCBsaW5lIDc2MSwgaW4gZW1pdAorICAgICMgICAgIHNlbGYuc3RyZWFtLndyaXRlKGZzICUgbXNn
LmVuY29kZShzZWxmLnN0cmVhbS5lbmNvZGluZykpCisgICAgIyBMb29rdXBFcnJvcjogdW5rbm93
biBlbmNvZGluZzogdW5rbm93bgorCisgICAgIyBIYW5kbGVzIGxvZ2dpbmcuV0FSTklORyBhbmQg
YWJvdmUuCisgICAgZXJyb3JfaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzdHJlYW0p
CisgICAgZXJyb3JfaGFuZGxlci5zZXRMZXZlbChsb2dnaW5nLldBUk5JTkcpCisgICAgZm9ybWF0
dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoIiUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzIikKKyAg
ICBlcnJvcl9oYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCisKKyAgICAjIEhhbmRsZXMg
cmVjb3JkcyBzdHJpY3RseSBiZWxvdyBsb2dnaW5nLldBUk5JTkcuCisgICAgbm9uX2Vycm9yX2hh
bmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3RyZWFtKQorICAgIG5vbl9lcnJvcl9maWx0
ZXIgPSBfTGV2ZWxMb2dnaW5nRmlsdGVyKGxvZ2dpbmcuV0FSTklORykKKyAgICBub25fZXJyb3Jf
aGFuZGxlci5hZGRGaWx0ZXIobm9uX2Vycm9yX2ZpbHRlcikKKyAgICBmb3JtYXR0ZXIgPSBsb2dn
aW5nLkZvcm1hdHRlcigiJShtZXNzYWdlKXMiKQorICAgIG5vbl9lcnJvcl9oYW5kbGVyLnNldEZv
cm1hdHRlcihmb3JtYXR0ZXIpCisKKyAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCisg
ICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuSU5GTykKKworICAgIGhhbmRsZXJzID0gW2Vycm9y
X2hhbmRsZXIsIG5vbl9lcnJvcl9oYW5kbGVyXQorCisgICAgZm9yIGhhbmRsZXIgaW4gaGFuZGxl
cnM6CisgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCisKKyAgICByZXR1cm4gaGFu
ZGxlcnMKKworCisjIEZJWE1FOiBDb25zaWRlciBtb3ZpbmcgdGhpcyBjbGFzcyBpbnRvIGEgbW9k
dWxlIGluIHdlYmtpdHB5LmluaXQgYWZ0ZXIKKyMgICAgICAgIGdldHRpbmcgbW9yZSBleHBlcmll
bmNlIHdpdGggaXRzIHVzZS4gIFdlIHdhbnQgdG8gbWFrZSBzdXJlCisjICAgICAgICB3ZSBoYXZl
IHRoZSByaWdodCBBUEkgYmVmb3JlIGRvaW5nIHNvLiAgRm9yIGV4YW1wbGUsIHdlIG1heQorIyAg
ICAgICAgd2FudCB0byBwcm92aWRlIGEgY29uc3RydWN0b3IgdGhhdCBoYXMgYm90aCB1cHBlciBh
bmQgbG93ZXIKKyMgICAgICAgIGJvdW5kcywgYW5kIG5vdCBqdXN0IGFuIHVwcGVyIGJvdW5kLgor
Y2xhc3MgX0xldmVsTG9nZ2luZ0ZpbHRlcihvYmplY3QpOgorCisgICAgIiIiQSBsb2dnaW5nIGZp
bHRlciBmb3IgYmxvY2tpbmcgcmVjb3JkcyBhdCBvciBhYm92ZSBhIGNlcnRhaW4gbGV2ZWwuIiIi
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2luZ19sZXZlbCk6CisgICAgICAgICIiIkNy
ZWF0ZSBhIF9MZXZlbExvZ2dpbmdGaWx0ZXIuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBs
b2dnaW5nX2xldmVsOiBUaGUgbG9nZ2luZyBsZXZlbCBjdXQtb2ZmLiAgTG9nZ2luZyBsZXZlbHMg
YXQKKyAgICAgICAgICAgICAgICAgICAgICAgICBvciBhYm92ZSB0aGlzIGxldmVsIHdpbGwgbm90
IGJlIGxvZ2dlZC4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fbG9nZ2luZ19sZXZlbCA9
IGxvZ2dpbmdfbGV2ZWwKKworICAgICMgVGhlIGxvZ2dpbmcgbW9kdWxlIHJlcXVpcmVzIHRoYXQg
dGhpcyBtZXRob2QgYmUgZGVmaW5lZC4KKyAgICBkZWYgZmlsdGVyKHNlbGYsIGxvZ19yZWNvcmQp
OgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciBnaXZlbiB0aGUgTG9nUmVjb3JkIHNob3VsZCBi
ZSBsb2dnZWQuIiIiCisgICAgICAgIHJldHVybiBsb2dfcmVjb3JkLmxldmVsbm8gPCBzZWxmLl9s
b2dnaW5nX2xldmVsCisKKwogIyBFbnVtLWxpa2UgaWRpb20KIGNsYXNzIEZpbGVUeXBlOgogCkBA
IC0zMjIsNiArNDA2LDggQEAgY2xhc3MgUHJvY2Vzc29yRGlzcGF0Y2hlcihvYmplY3QpOgogICAg
ICAgICByZXR1cm4gcHJvY2Vzc29yCiAKIAorIyBGSVhNRTogUmVtb3ZlIHRoZSBzdGRlcnJfd3Jp
dGUgYXR0cmlidXRlIGZyb20gdGhpcyBjbGFzcyBhbmQgcmVwbGFjZQorIyAgICAgICAgaXRzIHVz
ZSB3aXRoIGNhbGxzIHRvIGEgbG9nZ2luZyBtb2R1bGUgbG9nZ2VyLgogY2xhc3MgU3R5bGVDaGVj
a2VyQ29uZmlndXJhdGlvbihvYmplY3QpOgogCiAgICAgIiIiU3RvcmVzIGNvbmZpZ3VyYXRpb24g
dmFsdWVzIGZvciB0aGUgU3R5bGVDaGVja2VyIGNsYXNzLgpAQCAtNDM5LDkgKzUyNSw2IEBAIGNs
YXNzIFN0eWxlQ2hlY2tlcihvYmplY3QpOgogICAgICAgICBzZWxmLmVycm9yX2NvdW50ID0gMAog
ICAgICAgICBzZWxmLmZpbGVfY291bnQgPSAwCiAKLSAgICBkZWYgX3N0ZGVycl93cml0ZShzZWxm
LCBtZXNzYWdlKToKLSAgICAgICAgc2VsZi5fY29uZmlndXJhdGlvbi5zdGRlcnJfd3JpdGUobWVz
c2FnZSkKLQogICAgIGRlZiBfaW5jcmVtZW50X2Vycm9yX2NvdW50KHNlbGYpOgogICAgICAgICAi
IiJJbmNyZW1lbnQgdGhlIHRvdGFsIGNvdW50IG9mIHJlcG9ydGVkIGVycm9ycy4iIiIKICAgICAg
ICAgc2VsZi5lcnJvcl9jb3VudCArPSAxCkBAIC00NjksMTEgKzU1MiwxNSBAQCBjbGFzcyBTdHls
ZUNoZWNrZXIob2JqZWN0KToKICAgICAgICAgICAgIGNvbnRlbnRzID0gZmlsZS5yZWFkKCkKIAog
ICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZSgi
U2tpcHBpbmcgaW5wdXQgJyVzJzogQ2FuJ3Qgb3BlbiBmb3IgcmVhZGluZ1xuIiAlIGZpbGVfcGF0
aCkKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnQ291bGQgbm90IHJlYWQgZmlsZS4gU2tpcHBpbmc6
ICIlcyInICUgZmlsZV9wYXRoCisgICAgICAgICAgICBfbG9nLndhcm4obWVzc2FnZSkKICAgICAg
ICAgICAgIHJldHVybgogCiAgICAgICAgIGxpbmVzID0gY29udGVudHMuc3BsaXQoIlxuIikKIAor
ICAgICAgICAjIEZJWE1FOiBNYWtlIGEgQ2FycmlhZ2VSZXR1cm5Qcm9jZXNzb3IgZm9yIHRoaXMg
bG9naWMsIGFuZCBwdXQKKyAgICAgICAgIyAgICAgICAgaXQgaW4gcHJvY2Vzc29ycy5jb21tb24u
ICBUaGUgcHJvY2VzcygpIG1ldGhvZCBzaG91bGQKKyAgICAgICAgIyAgICAgICAgcmV0dXJuIHRo
ZSBsaW5lcyB3aXRoIHRoZSBjYXJyaWFnZSByZXR1cm5zIHN0cmlwcGVkLgogICAgICAgICBmb3Ig
bGluZV9udW1iZXIgaW4gcmFuZ2UobGVuKGxpbmVzKSk6CiAgICAgICAgICAgICAjIEZJWE1FOiBX
ZSBzaG91bGQgcHJvYmFibHkgdXNlIHRoZSBTVk4gImVvbC1zdHlsZSIgcHJvcGVydHkKICAgICAg
ICAgICAgICMgICAgICAgIG9yIGEgd2hpdGUgbGlzdCB0byBkZWNpZGUgd2hldGhlciBvciBub3Qg
dG8gZG8KQEAgLTUyMCw4ICs2MDcsOCBAQCBjbGFzcyBTdHlsZUNoZWNrZXIob2JqZWN0KToKICAg
ICAgICAgaWYgZGlzcGF0Y2hlci5zaG91bGRfc2tpcF93aXRob3V0X3dhcm5pbmcoZmlsZV9wYXRo
KToKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBkaXNwYXRjaGVyLnNob3VsZF9za2lw
X3dpdGhfd2FybmluZyhmaWxlX3BhdGgpOgotICAgICAgICAgICAgc2VsZi5fc3RkZXJyX3dyaXRl
KCdJZ25vcmluZyAiJXMiOiB0aGlzIGZpbGUgaXMgZXhlbXB0IGZyb20gdGhlICcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAic3R5bGUgZ3VpZGUuXG4iICUgZmlsZV9wYXRoKQorICAg
ICAgICAgICAgX2xvZy53YXJuKCdGaWxlIGV4ZW1wdCBmcm9tIHN0eWxlIGd1aWRlLiBTa2lwcGlu
ZzogIiVzIicKKyAgICAgICAgICAgICAgICAgICAgICAlIGZpbGVfcGF0aCkKICAgICAgICAgICAg
IHJldHVybgogCiAgICAgICAgIHZlcmJvc2l0eSA9IHNlbGYuX2NvbmZpZ3VyYXRpb24udmVyYm9z
aXR5CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJfdW5pdHRlc3QucHkKaW5kZXggYWU4Y2NjYy4uZDg2NjY2MyAxMDA3NTUKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weQpAQCAt
MzQsMTUgKzM0LDE5IEBACiAKICIiIlVuaXQgdGVzdHMgZm9yIHN0eWxlLnB5LiIiIgogCitpbXBv
cnQgbG9nZ2luZwogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCBjaGVja2VyIGFzIHN0eWxlCitm
cm9tIC4uc3R5bGVfcmVmZXJlbmNlcyBpbXBvcnQgVW5pdFRlc3RMb2cKK2Zyb20gLi5zdHlsZV9y
ZWZlcmVuY2VzIGltcG9ydCBVbml0VGVzdExvZ1N0cmVhbQogZnJvbSBjaGVja2VyIGltcG9ydCBf
QkFTRV9GSUxURVJfUlVMRVMKIGZyb20gY2hlY2tlciBpbXBvcnQgX01BWF9SRVBPUlRTX1BFUl9D
QVRFR09SWQogZnJvbSBjaGVja2VyIGltcG9ydCBfUEFUSF9SVUxFU19TUEVDSUZJRVIgYXMgUEFU
SF9SVUxFU19TUEVDSUZJRVIKIGZyb20gY2hlY2tlciBpbXBvcnQgX2FsbF9jYXRlZ29yaWVzCiBm
cm9tIGNoZWNrZXIgaW1wb3J0IGNoZWNrX3dlYmtpdF9zdHlsZV9jb25maWd1cmF0aW9uCiBmcm9t
IGNoZWNrZXIgaW1wb3J0IGNoZWNrX3dlYmtpdF9zdHlsZV9wYXJzZXIKK2Zyb20gY2hlY2tlciBp
bXBvcnQgY29uZmlndXJlX2xvZ2dpbmcKIGZyb20gY2hlY2tlciBpbXBvcnQgUHJvY2Vzc29yRGlz
cGF0Y2hlcgogZnJvbSBjaGVja2VyIGltcG9ydCBTdHlsZUNoZWNrZXIKIGZyb20gY2hlY2tlciBp
bXBvcnQgU3R5bGVDaGVja2VyQ29uZmlndXJhdGlvbgpAQCAtNTQsNiArNTgsNTggQEAgZnJvbSBw
cm9jZXNzb3JzLmNwcCBpbXBvcnQgQ3BwUHJvY2Vzc29yCiBmcm9tIHByb2Nlc3NvcnMudGV4dCBp
bXBvcnQgVGV4dFByb2Nlc3NvcgogCiAKK2NsYXNzIENvbmZpZ3VyZUxvZ2dpbmdUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIHRoZSBjb25maWd1cmVfbG9nZ2luZygpIGZ1
bmN0aW9uLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBsb2dfc3RyZWFtID0g
VW5pdFRlc3RMb2dTdHJlYW0oKQorCisgICAgICAgIHNlbGYuX2hhbmRsZXJzID0gY29uZmlndXJl
X2xvZ2dpbmcobG9nX3N0cmVhbSkKKyAgICAgICAgc2VsZi5fbG9nX3N0cmVhbSA9IGxvZ19zdHJl
YW0KKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIiIiUmVzZXQgbG9nZ2luZyB0
byBpdHMgb3JpZ2luYWwgc3RhdGUuCisKKyAgICAgICAgVGhpcyBtZXRob2QgZW5zdXJlcyB0aGF0
IHRoZSBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gc2V0IHVwCisgICAgICAgIGZvciBhIHVuaXQgdGVz
dCBkb2VzIG5vdCBhZmZlY3QgbG9nZ2luZyBpbiBvdGhlciB1bml0IHRlc3RzLgorCisgICAgICAg
ICIiIgorICAgICAgICAjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBsb2dnZXIgY29u
ZmlndXJlZCBpbiB0aGUKKyAgICAgICAgIyBjb25maWd1cmVfbG9nZ2luZygpIG1ldGhvZC4KKyAg
ICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorICAgICAgICBmb3IgaGFuZGxlciBp
biBzZWxmLl9oYW5kbGVyczoKKyAgICAgICAgICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGhhbmRs
ZXIpCisKKyAgICBkZWYgX2xvZyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGxvZ2dpbmcuZ2V0TG9n
Z2VyKCJ3ZWJraXRweSIpCisKKyAgICBkZWYgYXNzZXJ0X2xvZ19tZXNzYWdlcyhzZWxmLCBtZXNz
YWdlcyk6CisgICAgICAgICIiIkFzc2VydCB0aGF0IHRoZSBsb2dnZWQgbWVzc2FnZXMgZXF1YWwg
dGhlIGdpdmVuIG1lc3NhZ2VzLiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtZXNzYWdl
cywgc2VsZi5fbG9nX3N0cmVhbS5tZXNzYWdlcykKKworICAgIGRlZiB0ZXN0X3dhcm5pbmdfbWVz
c2FnZShzZWxmKToKKyAgICAgICAgc2VsZi5fbG9nKCkud2FybigidGVzdCBtZXNzYWdlIikKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbG9nX21lc3NhZ2VzKFsiV0FSTklORzogdGVzdCBtZXNzYWdlXG4i
XSkKKworICAgIGRlZiB0ZXN0X2JlbG93X3dhcm5pbmdfbWVzc2FnZShzZWxmKToKKyAgICAgICAg
IyBXZSB0ZXN0IHRoZSBib3VuZGFyeSBjYXNlIG9mIGEgbG9nZ2luZyBsZXZlbCBlcXVhbCB0byAy
OS4KKyAgICAgICAgIyBJbiBwcmFjdGljZSwgd2Ugd2lsbCBwcm9iYWJseSBvbmx5IGJlIGNhbGxp
bmcgbG9nLmluZm8oKSwKKyAgICAgICAgIyB3aGljaCBjb3JyZXNwb25kcyB0byBhIGxvZ2dpbmcg
bGV2ZWwgb2YgMjAuCisgICAgICAgIGxldmVsID0gbG9nZ2luZy5XQVJOSU5HIC0gMSAgIyBFcXVh
bHMgMjkuCisgICAgICAgIHNlbGYuX2xvZygpLmxvZyhsZXZlbCwgInRlc3QgbWVzc2FnZSIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19tZXNzYWdlcyhbInRlc3QgbWVzc2FnZVxuIl0pCisKKyAg
ICBkZWYgdGVzdF9kZWJ1Z19tZXNzYWdlKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2coKS5kZWJ1
ZygidGVzdCBtZXNzYWdlIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX21lc3NhZ2VzKFtdKQor
CisgICAgZGVmIHRlc3RfdHdvX21lc3NhZ2VzKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2coKS5p
bmZvKCJtZXNzYWdlMSIpCisgICAgICAgIHNlbGYuX2xvZygpLmluZm8oIm1lc3NhZ2UyIikKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbG9nX21lc3NhZ2VzKFsibWVzc2FnZTFcbiIsICJtZXNzYWdlMlxu
Il0pCisKKwogY2xhc3MgR2xvYmFsVmFyaWFibGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAK
ICAgICAiIiJUZXN0cyB2YWxpZGl0eSBvZiB0aGUgZ2xvYmFsIHZhcmlhYmxlcy4iIiIKQEAgLTQ0
NiwxMSArNTAyLDE1IEBAIGNsYXNzIFN0eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogCiAgICAgIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxm
Ll9sb2cgPSBVbml0VGVzdExvZyhzZWxmKQogICAgICAgICBzZWxmLmdvdF9maWxlX3BhdGggPSBO
b25lCiAgICAgICAgIHNlbGYuZ290X2hhbmRsZV9zdHlsZV9lcnJvciA9IE5vbmUKICAgICAgICAg
c2VsZi5nb3RfcHJvY2Vzc29yID0gTm9uZQogICAgICAgICBzZWxmLndhcm5pbmdfbWVzc2FnZXMg
PSAiIgogCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2cudGVhckRv
d24oKQorCiAgICAgZGVmIG1vY2tfc3RkZXJyX3dyaXRlKHNlbGYsIHdhcm5pbmdfbWVzc2FnZSk6
CiAgICAgICAgIHNlbGYud2FybmluZ19tZXNzYWdlcyArPSB3YXJuaW5nX21lc3NhZ2UKIApAQCAt
NTIzLDggKzU4Myw5IEBAIGNsYXNzIFN0eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogCiAgICAgICAgICMgQ2hlY2sgdGhlIG91dGNvbWUuCiAgICAgICAgIHNlbGYu
Y2FsbF9jaGVja19maWxlKGZpbGVfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRfYXR0cmlidXRl
cyhOb25lLCBOb25lLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJZ25v
cmluZyAiZ3RrMmRyYXdpbmcuYyI6IHRoaXMgZmlsZSBpcyBleGVtcHQgZnJvbSB0aGUgc3R5bGUg
Z3VpZGUuXG4nKQorICAgICAgICBzZWxmLmFzc2VydF9hdHRyaWJ1dGVzKE5vbmUsIE5vbmUsIE5v
bmUsICIiKQorICAgICAgICBzZWxmLl9sb2cuYXNzZXJ0TWVzc2FnZXMoWyJXQVJOSU5HOiBGaWxl
IGV4ZW1wdCBmcm9tIHN0eWxlIGd1aWRlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ1NraXBwaW5nOiAiZ3RrMmRyYXdpbmcuYyJcbiddKQogCiAgICAgZGVmIHRlc3RfY2hl
Y2tfZmlsZV9vbl9ub25fc2tpcHBlZChzZWxmKToKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5CmluZGV4IDI1MjhjNGQuLmNiOGE5ODUgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkK
QEAgLTQxLDYgKzQxLDggQEAKIGltcG9ydCBvcwogCiBmcm9tIGRpZmZfcGFyc2VyIGltcG9ydCBE
aWZmUGFyc2VyCitmcm9tIGluaXQubG9ndGVzdGluZyBpbXBvcnQgVW5pdFRlc3RMb2cKK2Zyb20g
aW5pdC5sb2d0ZXN0aW5nIGltcG9ydCBVbml0VGVzdExvZ1N0cmVhbQogZnJvbSBzY20gaW1wb3J0
IGRldGVjdF9zY21fc3lzdGVtCiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49805</attachid>
            <date>2010-03-02 07:52:05 -0800</date>
            <delta_ts>2010-03-02 08:50:39 -0800</delta_ts>
            <desc>Proposed patch 6</desc>
            <filename>_patch-35484-6.diff</filename>
            <type>text/plain</type>
            <size>20494</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlMjBjYjQwLi4yYjExMDA1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTAtMDMt
MDIgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RhcnRlZCB1c2luZyB0aGUgbG9n
Z2luZyBtb2R1bGUgaW4gY2hlY2std2Via2l0LXN0eWxlLgorICAgICAgICBUaGlzIHByb3ZpZGVz
IG1vcmUgb3B0aW9ucyBmb3IgZGVidWdnaW5nIGFuZCBhIG1vcmUgZmxleGlibGUsCisgICAgICAg
IHVuaWZvcm0gd2F5IHRvIHJlcG9ydCBtZXNzYWdlcyB0byB0aGUgZW5kLXVzZXIuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NDg0CisKKyAgICAg
ICAgQWxzbyBpbmNsdWRlZCBjbGFzc2VzIGluIGEgY2VudHJhbCBsb2NhdGlvbiB0byBmYWNpbGl0
YXRlCisgICAgICAgIHRoZSB1bml0IHRlc3Rpbmcgb2YgbG9nZ2luZyBjb2RlIChzZXRVcCBhbmQg
dGVhckRvd24gb2YgdW5pdAorICAgICAgICB0ZXN0IGxvZ2dpbmcgY29uZmlndXJhdGlvbnMsIGV0
YykuCisKKyAgICAgICAgKiBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZToKKyAgICAgICAgICAt
IEFkZGVkIGEgY2FsbCB0byBjb25maWd1cmVfbG9nZ2luZygpIGluIHRoZSBiZWdpbm5pbmcgb2Yg
bWFpbigpLgorICAgICAgICAgIC0gUmVwbGFjZWQgdHdvIGNhbGxzIHRvIHN5cy5zdGRlcnIud3Jp
dGUoKSB3aXRoIGFwcHJvcHJpYXRlCisgICAgICAgICAgICBsb2dnaW5nIGNhbGxzLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9pbml0L19faW5pdF9fLnB5OiBDb3BpZWQgZnJvbSBXZWJL
aXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9maWx0ZXJzL19faW5pdF9fLnB5LgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9pbml0L2xvZ3Rlc3RpbmcucHk6IEFkZGVkLgorICAgICAgICAg
IC0gQWRkZWQgYSBVbml0VGVzdExvZ1N0cmVhbSBjbGFzcyB0byBjYXB0dXJlIGxvZyBvdXRwdXQK
KyAgICAgICAgICAgIGR1cmluZyB1bml0IHRlc3RzLgorICAgICAgICAgIC0gQWRkZWQgYSBVbml0
VGVzdExvZyBjbGFzcyB0aGF0IHByb3ZpZGVzIGNvbnZlbmllbmNlIG1ldGhvZHMKKyAgICAgICAg
ICAgIGZvciB1bml0LXRlc3RpbmcgbG9nZ2luZyBjb2RlLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAgICAgIC0gQWRkZWQgYSBjb25maWd1cmVf
bG9nZ2luZygpIG1ldGhvZC4KKyAgICAgICAgICAtIEFkZGVkIGEgX0xldmVsTG9nZ2luZ0ZpbHRl
ciBjbGFzcyB0byBmaWx0ZXIgb3V0IGxvZyBtZXNzYWdlcworICAgICAgICAgICAgYWJvdmUgYSBj
ZXJ0YWluIGxvZ2dpbmcgbGV2ZWwuCisgICAgICAgICAgLSBSZW1vdmVkIHRoZSBfc3RkZXJyX3dy
aXRlKCkgbWV0aG9kIGZyb20gdGhlIFN0eWxlQ2hlY2tlciBjbGFzcworICAgICAgICAgICAgYW5k
IHJlcGxhY2VkIGl0cyB1c2Ugd2l0aCBhcHByb3ByaWF0ZSBsb2dnaW5nIGNhbGxzLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAgIC0gQWRkZWQgYSBDb25maWd1cmVMb2dnaW5nVGVzdCBjbGFzcyB0byB1bml0IHRlc3QgdGhl
CisgICAgICAgICAgICBjb25maWd1cmVfbG9nZ2luZygpIG1ldGhvZC4KKyAgICAgICAgICAtIFVw
ZGF0ZWQgdGhlIFN0eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QgY2xhc3MgYXMgbmVjZXNzYXJ5Lgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5OgorICAgICAg
ICAgIC0gQWRkZWQgcmVmZXJlbmNlcyB0byBsb2d0ZXN0aW5nLlVuaXRUZXN0TG9nIGFuZAorICAg
ICAgICAgICAgbG9ndGVzdGluZy5Vbml0VGVzdExvZ1N0cmVhbS4KKwogMjAxMC0wMy0wMSAgQ2hy
aXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGluZyBicm9r
ZW4gRFJUIG9uIExlb3BhcmQvVGlnZXIuIFNlY29uZCB0cnkuCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hl
Y2std2Via2l0LXN0eWxlCmluZGV4IGVhMmU5NDMuLmYxODg1YjIgMTAwNzU1Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvY2hlY2std2Via2l0LXN0eWxlCkBAIC00Myw2ICs0Myw3IEBAIHNhbWUgbGluZSwgYnV0IGl0
IGlzIGZhciBmcm9tIHBlcmZlY3QgKGluIGVpdGhlciBkaXJlY3Rpb24pLgogIiIiCiAKIGltcG9y
dCBjb2RlY3MKK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBpbXBv
cnQgc3lzCkBAIC01MCwxMyArNTEsMjggQEAgaW1wb3J0IHN5cwogaW1wb3J0IHdlYmtpdHB5LnN0
eWxlLmNoZWNrZXIgYXMgY2hlY2tlcgogZnJvbSB3ZWJraXRweS5zdHlsZV9yZWZlcmVuY2VzIGlt
cG9ydCBTaW1wbGVTY20KIAorX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjaGVjay13ZWJraXQt
c3R5bGUiKQorCiBkZWYgbWFpbigpOgogICAgICMgQ2hhbmdlIHN0ZGVyciB0byB3cml0ZSB3aXRo
IHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgc28gd2UgZG9uJ3QgZGllCiAgICAgIyBpZiB3ZSB0cnkg
dG8gcHJpbnQgc29tZXRoaW5nIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCi0gICAg
c3lzLnN0ZGVyciA9IGNvZGVjcy5TdHJlYW1SZWFkZXJXcml0ZXIoc3lzLnN0ZGVyciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0cmVhZGVyKCd1
dGY4JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNz
LmdldHdyaXRlcigndXRmOCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdyZXBsYWNlJykKKyAgICBzdGRlcnIgPSBjb2RlY3MuU3RyZWFtUmVhZGVyV3JpdGVy
KHN5cy5zdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2Rl
Y3MuZ2V0cmVhZGVyKCd1dGY4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb2RlY3MuZ2V0d3JpdGVyKCd1dGY4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAncmVwbGFjZScpCisgICAgIyBTZXR0aW5nIGFuICJlbmNvZGluZyIgYXR0
cmlidXRlIG9uIHRoZSBzdHJlYW0gaXMgbmVjZXNzYXJ5IHRvCisgICAgIyBwcmV2ZW50IHRoZSBs
b2dnaW5nIG1vZHVsZSBmcm9tIHJhaXNpbmcgYW4gZXJyb3IuICBTZWUKKyAgICAjIHRoZSBjaGVj
a2VyLmNvbmZpZ3VyZV9sb2dnaW5nKCkgZnVuY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisg
ICAgc3RkZXJyLmVuY29kaW5nID0gIlVURi04IgorCisgICAgIyBGSVhNRTogQ2hhbmdlIHdlYmtp
dHB5LnN0eWxlIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gb3ZlcndyaXRlCisgICAgIyAgICAg
ICAgdGhlIGdsb2JhbCBzeXMuc3RkZXJyLiAgVGhpcyBpbnZvbHZlcyB1cGRhdGluZyB0aGUgY29k
ZSB0bworICAgICMgICAgICAgIGFjY2VwdCBhIHN0cmVhbSBwYXJhbWV0ZXIgd2hlcmUgbmVjZXNz
YXJ5LCBhbmQgbm90IGNhbGxpbmcKKyAgICAjICAgICAgICBzeXMuc3RkZXJyIGV4cGxpY2l0bHkg
YW55d2hlcmUuCisgICAgc3lzLnN0ZGVyciA9IHN0ZGVycgorCisgICAgY2hlY2tlci5jb25maWd1
cmVfbG9nZ2luZyhzdGRlcnIpCisKICAgICBwYXJzZXIgPSBjaGVja2VyLmNoZWNrX3dlYmtpdF9z
dHlsZV9wYXJzZXIoKQogICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZXIucGFyc2Uoc3lzLmFy
Z3ZbMTpdKQogCkBAIC03OCw3ICs5NCw4IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAgICAg
IyBGSVhNRTogSWYgdGhlIHJhbmdlIGlzIGEgIi4uLiIsIHRoZSBjb2RlIHNob3VsZCBmaW5kIHRo
ZSBjb21tb24gYW5jZXN0b3IgYW5kCiAgICAgICAgICAgICAgICAgIyBzdGFydCB0aGVyZSAoc2Vl
IGdpdCBkaWZmIC0taGVscCBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IC4uLiB1c3VhbGx5IHdv
cmtzKS4KICAgICAgICAgICAgICAgICBjb21taXQgPSBjb21taXRbOmNvbW1pdC5maW5kKCcuLicp
XQotICAgICAgICAgICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICJXYXJuaW5nOiBSYW5nZXMg
YXJlIG5vdCBzdXBwb3J0ZWQgZm9yIC0tZ2l0LWNvbW1pdC4gQ2hlY2tpbmcgYWxsIGNoYW5nZXMg
c2luY2UgJXMuXG4iICUgY29tbWl0CisgICAgICAgICAgICAgICAgX2xvZy53YXJuKCJSYW5nZXMg
YXJlIG5vdCBzdXBwb3J0ZWQgZm9yIC0tZ2l0LWNvbW1pdC4gIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAiQ2hlY2tpbmcgYWxsIGNoYW5nZXMgc2luY2UgJXMuIiAlIGNvbW1pdCkKICAgICAg
ICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaF9zaW5jZV9sb2NhbF9jb21taXQoY29tbWl0
KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkK
QEAgLTg2LDggKzEwMyw4IEBAIGRlZiBtYWluKCk6CiAKICAgICBlcnJvcl9jb3VudCA9IHN0eWxl
X2NoZWNrZXIuZXJyb3JfY291bnQKICAgICBmaWxlX2NvdW50ID0gc3R5bGVfY2hlY2tlci5maWxl
X2NvdW50Ci0gICAgc3lzLnN0ZGVyci53cml0ZSgnVG90YWwgZXJyb3JzIGZvdW5kOiAlZCBpbiAl
ZCBmaWxlc1xuJwotICAgICAgICAgICAgICAgICAgICAgJSAoZXJyb3JfY291bnQsIGZpbGVfY291
bnQpKQorICAgIF9sb2cuaW5mbygiVG90YWwgZXJyb3JzIGZvdW5kOiAlZCBpbiAlZCBmaWxlcyIK
KyAgICAgICAgICAgICAgJSAoZXJyb3JfY291bnQsIGZpbGVfY291bnQpKQogICAgICMgV2UgZmFp
bCB3aGVuIHN0eWxlIGVycm9ycyBhcmUgZm91bmQgb3IgdGhlcmUgYXJlIG5vIGNoZWNrZWQgZmls
ZXMuCiAgICAgc3lzLmV4aXQoZXJyb3JfY291bnQgPiAwIG9yIGZpbGVfY291bnQgPT0gMCkKIApk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pbml0L19faW5pdF9fLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pbml0L19faW5pdF9fLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNjViZWUKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2luaXQvX19pbml0X18ucHkKQEAgLTAsMCArMSBA
QAorIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9k
dWxlIGZpbGVzCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2luaXQv
bG9ndGVzdGluZy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaW5pdC9sb2d0ZXN0
aW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNjMxMTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2luaXQvbG9ndGVzdGlu
Zy5weQpAQCAtMCwwICsxLDEyMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgQ2hyaXMgSmVyZG9u
ZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisj
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisiIiJTdXBwb3J0cyB0aGUgdW5pdC10ZXN0aW5nIG9mIGxvZ2dpbmcuIiIi
CisKK2ltcG9ydCBsb2dnaW5nCisKKworY2xhc3MgVW5pdFRlc3RMb2dTdHJlYW0ob2JqZWN0KToK
KworICAgICIiIlJlcHJlc2VudHMgYSBmaWxlLWxpa2Ugb2JqZWN0IGZvciB1bml0LXRlc3Rpbmcg
bG9nZ2luZy4KKworICAgIFRoaXMgaXMgbWVhbnQgZm9yIHBhc3NpbmcgdG8gdGhlIGxvZ2dpbmcu
U3RyZWFtSGFuZGxlciBjb25zdHJ1Y3Rvci4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYpOgorICAgICAgICBzZWxmLm1lc3NhZ2VzID0gW10KKyAgICAgICAgIiIiQSBsaXN0IG9m
IGxvZyBtZXNzYWdlcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uIiIiCisKKyAgICBkZWYgd3JpdGUo
c2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHNlbGYubWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpCisK
KyAgICBkZWYgZmx1c2goc2VsZik6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBVbml0VGVzdExv
ZyhvYmplY3QpOgorCisgICAgIiIiU3VwcG9ydHMgdW5pdC10ZXN0aW5nIGxvZ2dpbmcuCisKKyAg
ICBTYW1wbGUgdXNhZ2U6CisKKyAgICAjIFRoZSBmb2xsb3dpbmcgbGluZSBzaG91bGQgZ28gaW4g
dGhlIHNldFVwKCkgbWV0aG9kIG9mIGEKKyAgICAjIHVuaXR0ZXN0LlRlc3RDYXNlLiAgSW4gcGFy
dGljdWxhciwgc2VsZiBpcyBhIFRlc3RDYXNlIGluc3RhbmNlLgorICAgIHNlbGYuX2xvZyA9IFVu
aXRUZXN0TG9nKHNlbGYpCisKKyAgICAjIENhbGwgdGhlIGZvbGxvd2luZyBpbiBhIHRlc3QgbWV0
aG9kIG9mIGEgdW5pdHRlc3QuVGVzdENhc2UuCisgICAgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
IndlYmtpdHB5IikKKyAgICBsb2cuaW5mbygibWVzc2FnZTEiKQorICAgIGxvZy53YXJuKCJtZXNz
YWdlMiIpCisgICAgc2VsZi5fbG9nLmFzc2VydE1lc3NhZ2VzKFsiSU5GTzogbWVzc2FnZTFcbiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV0FSTjogbWVzc2FnZTJcbiJdKSAgIyBT
aG91bGQgc3VjY2VlZC4KKworICAgICMgVGhlIGZvbGxvd2luZyBsaW5lIHNob3VsZCBnbyBpbiB0
aGUgdGVhckRvd24oKSBtZXRob2Qgb2YKKyAgICAjIHVuaXR0ZXN0LlRlc3RDYXNlLgorICAgIHNl
bGYuX2xvZy50ZWFyRG93bigpCisKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0
ZXN0X2Nhc2UsIGxvZ2dpbmdfbGV2ZWw9Tm9uZSk6CisgICAgICAgICIiIkNvbmZpZ3VyZSB1bml0
IHRlc3QgbG9nZ2luZywgYW5kIHJldHVybiBhbiBpbnN0YW5jZS4KKworICAgICAgICBUaGlzIG1l
dGhvZCBjb25maWd1cmVzIHRoZSByb290IGxvZ2dlciB0byBsb2cgdG8gYSB0ZXN0aW5nCisgICAg
ICAgIGxvZyBzdHJlYW0uICBPbmx5IG1lc3NhZ2VzIGxvZ2dlZCBhdCBvciBhYm92ZSB0aGUgZ2l2
ZW4gbGV2ZWwKKyAgICAgICAgYXJlIGxvZ2dlZCB0byB0aGUgc3RyZWFtLiAgTWVzc2FnZXMgYXJl
IGZvcm1hdHRlZCBpbiB0aGUKKyAgICAgICAgZm9sbG93aW5nIHdheSwgZm9yIGV4YW1wbGUtLQor
CisgICAgICAgICJJTkZPOiBUaGlzIGlzIGEgdGVzdCBsb2cgbWVzc2FnZS4iCisKKyAgICAgICAg
VGhpcyBtZXRob2Qgc2hvdWxkIG5vcm1hbGx5IGJlIGNhbGxlZCBpbiB0aGUgc2V0VXAoKSBtZXRo
b2QKKyAgICAgICAgb2YgYSB1bml0dGVzdC5UZXN0Q2FzZS4KKworICAgICAgICBBcmdzOgorICAg
ICAgICAgIHRlc3RfY2FzZTogQSB1bml0dGVzdC5UZXN0Q2FzZSBpbnN0YW5jZS4KKyAgICAgICAg
ICBsb2dnaW5nX2xldmVsOiBBIGxvZ2dpbmcgbGV2ZWwuICBPbmx5IG1lc3NhZ2VzIGxvZ2dlZCBh
dCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgIGFib3ZlIHRoaXMgbGV2ZWwgYXJlIHdyaXR0
ZW4gdG8gdGhlIHRlc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICBsb2cgc3RyZWFtLiAg
RGVmYXVsdHMgdG8gbG9nZ2luZy5JTkZPLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBsb2dn
aW5nX2xldmVsIGlzIE5vbmU6CisgICAgICAgICAgICBsb2dnaW5nX2xldmVsID0gbG9nZ2luZy5J
TkZPCisKKyAgICAgICAgc3RyZWFtID0gVW5pdFRlc3RMb2dTdHJlYW0oKQorICAgICAgICBoYW5k
bGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN0cmVhbSkKKyAgICAgICAgZm9ybWF0dGVyID0g
bG9nZ2luZy5Gb3JtYXR0ZXIoIiUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzIikKKyAgICAgICAg
aGFuZGxlci5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVyKQorCisgICAgICAgIGxvZ2dlciA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKCkKKyAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmdfbGV2ZWwpCisg
ICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCisKKyAgICAgICAgc2VsZi5faGFuZGxl
ciA9IGhhbmRsZXIKKyAgICAgICAgc2VsZi5fbWVzc2FnZXMgPSBzdHJlYW0ubWVzc2FnZXMKKyAg
ICAgICAgc2VsZi5fdGVzdF9jYXNlID0gdGVzdF9jYXNlCisKKyAgICBkZWYgX2xvZ2dlcihzZWxm
KToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSByb290IGxvZ2dlciB1c2VkIGZvciBsb2dnaW5nLiIi
IgorICAgICAgICByZXR1cm4gbG9nZ2luZy5nZXRMb2dnZXIoKQorCisgICAgZGVmIGFzc2VydE1l
c3NhZ2VzKHNlbGYsIG1lc3NhZ2VzKToKKyAgICAgICAgIiIiQXNzZXJ0IHRoYXQgdGhlIGdpdmVu
IG1lc3NhZ2VzIG1hdGNoIHRoZSBsb2dnZWQgbWVzc2FnZXMuIiIiCisgICAgICAgIHNlbGYuX3Rl
c3RfY2FzZS5hc3NlcnRFcXVhbHMobWVzc2FnZXMsIHNlbGYuX21lc3NhZ2VzKQorCisgICAgZGVm
IHRlYXJEb3duKHNlbGYpOgorICAgICAgICAiIiJVbmNvbmZpZ3VyZSB1bml0IHRlc3QgbG9nZ2lu
Zy4KKworICAgICAgICBUaGlzIHNob3VsZCBub3JtYWxseSBiZSBjYWxsZWQgaW4gdGhlIHRlYXJE
b3duIG1ldGhvZCBvZiBhCisgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlCisKKyAgICAgICAgIiIi
CisgICAgICAgIGxvZ2dlciA9IHNlbGYuX2xvZ2dlcigpCisgICAgICAgIGxvZ2dlci5yZW1vdmVI
YW5kbGVyKHNlbGYuX2hhbmRsZXIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXIucHkKaW5kZXggODQ5NGUxYi4uYzc0YWVjZSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMzAsNiArMzAsNyBAQAogIiIi
RnJvbnQgZW5kIG9mIHNvbWUgc3R5bGUtY2hlY2tlciBtb2R1bGVzLiIiIgogCiBpbXBvcnQgY29k
ZWNzCitpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIApAQCAtNDQs
NiArNDUsNyBAQCBmcm9tIHByb2Nlc3NvcnMuY29tbW9uIGltcG9ydCBjYXRlZ29yaWVzIGFzIENv
bW1vbkNhdGVnb3JpZXMKIGZyb20gcHJvY2Vzc29ycy5jcHAgaW1wb3J0IENwcFByb2Nlc3Nvcgog
ZnJvbSBwcm9jZXNzb3JzLnRleHQgaW1wb3J0IFRleHRQcm9jZXNzb3IKIAorX2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5zdHlsZS5jaGVja2VyIikKIAogIyBUaGVzZSBhcmUgZGVm
YXVsdCBvcHRpb24gdmFsdWVzIGZvciB0aGUgY29tbWFuZC1saW5lIG9wdGlvbiBwYXJzZXIuCiBf
REVGQVVMVF9WRVJCT1NJVFkgPSAxCkBAIC0yMjQsNiArMjI2LDg4IEBAIGRlZiBjaGVja193ZWJr
aXRfc3R5bGVfY29uZmlndXJhdGlvbihvcHRpb25zKToKICAgICAgICAgICAgICAgIHZlcmJvc2l0
eT1vcHRpb25zLnZlcmJvc2l0eSkKIAogCisjIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgbW9yZSB2
ZXJib3NlIGxvZ2dpbmcgZm9yIGRlYnVnIHB1cnBvc2VzLgorIyAgICAgICAgVGhpcyBjYW4gdXNl
IGEgZm9ybWF0dGVyIGxpa2UgdGhlIGZvbGxvd2luZywgZm9yIGV4YW1wbGUtLQorIworIyAgICAg
ICAgZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoIiUobmFtZSlzOiBbJShsZXZlbG5hbWUp
c10gJShtZXNzYWdlKXMiKQorZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKHN0cmVhbSk6CisgICAgIiIi
Q29uZmlndXJlIGxvZ2dpbmcsIGFuZCByZXR1cm4gdGhlIGxpc3Qgb2YgaGFuZGxlcnMgYWRkZWQu
CisKKyAgICBDb25maWd1cmVzIHRoZSByb290IGxvZ2dlciB0byBsb2cgSU5GTyBtZXNzYWdlcyBh
bmQgaGlnaGVyLgorICAgIEZvcm1hdHMgV0FSTklORyBtZXNzYWdlcyBhbmQgYWJvdmUgdG8gZGlz
cGxheSB0aGUgbG9nZ2luZyBsZXZlbAorICAgIGFuZCBtZXNzYWdlcyBzdHJpY3RseSBiZWxvdyBX
QVJOSU5HIG5vdCB0byBkaXNwbGF5IGl0LgorCisgICAgUmV0dXJuczoKKyAgICAgIEEgbGlzdCBv
ZiByZWZlcmVuY2VzIHRvIHRoZSBsb2dnaW5nIGhhbmRsZXJzIGFkZGVkIHRvIHRoZSByb290Cisg
ICAgICBsb2dnZXIuICBUaGlzIGFsbG93cyB0aGUgY2FsbGVyIHRvIGxhdGVyIHJlbW92ZSB0aGUg
aGFuZGxlcnMKKyAgICAgIHVzaW5nIGxvZ2dlci5yZW1vdmVIYW5kbGVyLiAgVGhpcyBpcyB1c2Vm
dWwgcHJpbWFyaWx5IGR1cmluZyB1bml0CisgICAgICB0ZXN0aW5nIHdoZXJlIHRoZSBjYWxsZXIg
bWF5IHdhbnQgdG8gY29uZmlndXJlIGxvZ2dpbmcgdGVtcG9yYXJpbHkKKyAgICAgIGFuZCB0aGVu
IHVuZG8gdGhlIGNvbmZpZ3VyaW5nLgorCisgICAgQXJnczoKKyAgICAgIHN0cmVhbTogQSBmaWxl
LWxpa2Ugb2JqZWN0IHRvIHdoaWNoIHRvIGxvZy4gIFRoZSBzdHJlYW0gbXVzdAorICAgICAgICAg
ICAgICBkZWZpbmUgYW4gImVuY29kaW5nIiBkYXRhIGF0dHJpYnV0ZSwgb3IgZWxzZSBsb2dnaW5n
CisgICAgICAgICAgICAgIHJhaXNlcyBhbiBlcnJvci4KKworICAgICIiIgorICAgICMgSWYgdGhl
IHN0cmVhbSBkb2VzIG5vdCBkZWZpbmUgYW4gImVuY29kaW5nIiBkYXRhIGF0dHJpYnV0ZSwgdGhl
CisgICAgIyBsb2dnaW5nIG1vZHVsZSBjYW4gdGhyb3cgYW4gZXJyb3IgbGlrZSB0aGUgZm9sbG93
aW5nOgorICAgICMKKyAgICAjIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAg
ICAjICAgRmlsZSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9W
ZXJzaW9ucy8yLjYvLi4uCisgICAgIyAgICAgICAgIGxpYi9weXRob24yLjYvbG9nZ2luZy9fX2lu
aXRfXy5weSIsIGxpbmUgNzYxLCBpbiBlbWl0CisgICAgIyAgICAgc2VsZi5zdHJlYW0ud3JpdGUo
ZnMgJSBtc2cuZW5jb2RlKHNlbGYuc3RyZWFtLmVuY29kaW5nKSkKKyAgICAjIExvb2t1cEVycm9y
OiB1bmtub3duIGVuY29kaW5nOiB1bmtub3duCisKKyAgICAjIEhhbmRsZXMgbG9nZ2luZy5XQVJO
SU5HIGFuZCBhYm92ZS4KKyAgICBlcnJvcl9oYW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVy
KHN0cmVhbSkKKyAgICBlcnJvcl9oYW5kbGVyLnNldExldmVsKGxvZ2dpbmcuV0FSTklORykKKyAg
ICBmb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigiJShsZXZlbG5hbWUpczogJShtZXNzYWdl
KXMiKQorICAgIGVycm9yX2hhbmRsZXIuc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKKworICAgICMg
SGFuZGxlcyByZWNvcmRzIHN0cmljdGx5IGJlbG93IGxvZ2dpbmcuV0FSTklORy4KKyAgICBub25f
ZXJyb3JfaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzdHJlYW0pCisgICAgbm9uX2Vy
cm9yX2ZpbHRlciA9IF9MZXZlbExvZ2dpbmdGaWx0ZXIobG9nZ2luZy5XQVJOSU5HKQorICAgIG5v
bl9lcnJvcl9oYW5kbGVyLmFkZEZpbHRlcihub25fZXJyb3JfZmlsdGVyKQorICAgIGZvcm1hdHRl
ciA9IGxvZ2dpbmcuRm9ybWF0dGVyKCIlKG1lc3NhZ2UpcyIpCisgICAgbm9uX2Vycm9yX2hhbmRs
ZXIuc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKKworICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKCkKKyAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQorCisgICAgaGFuZGxlcnMg
PSBbZXJyb3JfaGFuZGxlciwgbm9uX2Vycm9yX2hhbmRsZXJdCisKKyAgICBmb3IgaGFuZGxlciBp
biBoYW5kbGVyczoKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKworICAgIHJl
dHVybiBoYW5kbGVycworCisKKyMgRklYTUU6IENvbnNpZGVyIG1vdmluZyB0aGlzIGNsYXNzIGlu
dG8gYSBtb2R1bGUgaW4gd2Via2l0cHkuaW5pdCBhZnRlcgorIyAgICAgICAgZ2V0dGluZyBtb3Jl
IGV4cGVyaWVuY2Ugd2l0aCBpdHMgdXNlLiAgV2Ugd2FudCB0byBtYWtlIHN1cmUKKyMgICAgICAg
IHdlIGhhdmUgdGhlIHJpZ2h0IEFQSSBiZWZvcmUgZG9pbmcgc28uICBGb3IgZXhhbXBsZSwgd2Ug
bWF5CisjICAgICAgICB3YW50IHRvIHByb3ZpZGUgYSBjb25zdHJ1Y3RvciB0aGF0IGhhcyBib3Ro
IHVwcGVyIGFuZCBsb3dlcgorIyAgICAgICAgYm91bmRzLCBhbmQgbm90IGp1c3QgYW4gdXBwZXIg
Ym91bmQuCitjbGFzcyBfTGV2ZWxMb2dnaW5nRmlsdGVyKG9iamVjdCk6CisKKyAgICAiIiJBIGxv
Z2dpbmcgZmlsdGVyIGZvciBibG9ja2luZyByZWNvcmRzIGF0IG9yIGFib3ZlIGEgY2VydGFpbiBs
ZXZlbC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnaW5nX2xldmVsKToKKyAgICAg
ICAgIiIiQ3JlYXRlIGEgX0xldmVsTG9nZ2luZ0ZpbHRlci4KKworICAgICAgICBBcmdzOgorICAg
ICAgICAgIGxvZ2dpbmdfbGV2ZWw6IFRoZSBsb2dnaW5nIGxldmVsIGN1dC1vZmYuICBMb2dnaW5n
IGxldmVscyBhdAorICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGFib3ZlIHRoaXMgbGV2ZWwg
d2lsbCBub3QgYmUgbG9nZ2VkLgorCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9sb2dnaW5n
X2xldmVsID0gbG9nZ2luZ19sZXZlbAorCisgICAgIyBUaGUgbG9nZ2luZyBtb2R1bGUgcmVxdWly
ZXMgdGhhdCB0aGlzIG1ldGhvZCBiZSBkZWZpbmVkLgorICAgIGRlZiBmaWx0ZXIoc2VsZiwgbG9n
X3JlY29yZCk6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIGdpdmVuIHRoZSBMb2dSZWNvcmQg
c2hvdWxkIGJlIGxvZ2dlZC4iIiIKKyAgICAgICAgcmV0dXJuIGxvZ19yZWNvcmQubGV2ZWxubyA8
IHNlbGYuX2xvZ2dpbmdfbGV2ZWwKKworCiAjIEVudW0tbGlrZSBpZGlvbQogY2xhc3MgRmlsZVR5
cGU6CiAKQEAgLTMyMiw2ICs0MDYsOCBAQCBjbGFzcyBQcm9jZXNzb3JEaXNwYXRjaGVyKG9iamVj
dCk6CiAgICAgICAgIHJldHVybiBwcm9jZXNzb3IKIAogCisjIEZJWE1FOiBSZW1vdmUgdGhlIHN0
ZGVycl93cml0ZSBhdHRyaWJ1dGUgZnJvbSB0aGlzIGNsYXNzIGFuZCByZXBsYWNlCisjICAgICAg
ICBpdHMgdXNlIHdpdGggY2FsbHMgdG8gYSBsb2dnaW5nIG1vZHVsZSBsb2dnZXIuCiBjbGFzcyBT
dHlsZUNoZWNrZXJDb25maWd1cmF0aW9uKG9iamVjdCk6CiAKICAgICAiIiJTdG9yZXMgY29uZmln
dXJhdGlvbiB2YWx1ZXMgZm9yIHRoZSBTdHlsZUNoZWNrZXIgY2xhc3MuCkBAIC00MzksOSArNTI1
LDYgQEAgY2xhc3MgU3R5bGVDaGVja2VyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuZXJyb3JfY291
bnQgPSAwCiAgICAgICAgIHNlbGYuZmlsZV9jb3VudCA9IDAKIAotICAgIGRlZiBfc3RkZXJyX3dy
aXRlKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICBzZWxmLl9jb25maWd1cmF0aW9uLnN0ZGVycl93
cml0ZShtZXNzYWdlKQotCiAgICAgZGVmIF9pbmNyZW1lbnRfZXJyb3JfY291bnQoc2VsZik6CiAg
ICAgICAgICIiIkluY3JlbWVudCB0aGUgdG90YWwgY291bnQgb2YgcmVwb3J0ZWQgZXJyb3JzLiIi
IgogICAgICAgICBzZWxmLmVycm9yX2NvdW50ICs9IDEKQEAgLTQ2OSwxMSArNTUyLDE1IEBAIGNs
YXNzIFN0eWxlQ2hlY2tlcihvYmplY3QpOgogICAgICAgICAgICAgY29udGVudHMgPSBmaWxlLnJl
YWQoKQogCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgc2VsZi5fc3RkZXJy
X3dyaXRlKCJTa2lwcGluZyBpbnB1dCAnJXMnOiBDYW4ndCBvcGVuIGZvciByZWFkaW5nXG4iICUg
ZmlsZV9wYXRoKQorICAgICAgICAgICAgbWVzc2FnZSA9ICdDb3VsZCBub3QgcmVhZCBmaWxlLiBT
a2lwcGluZzogIiVzIicgJSBmaWxlX3BhdGgKKyAgICAgICAgICAgIF9sb2cud2FybihtZXNzYWdl
KQogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgbGluZXMgPSBjb250ZW50cy5zcGxpdCgi
XG4iKQogCisgICAgICAgICMgRklYTUU6IE1ha2UgYSBDYXJyaWFnZVJldHVyblByb2Nlc3NvciBm
b3IgdGhpcyBsb2dpYywgYW5kIHB1dAorICAgICAgICAjICAgICAgICBpdCBpbiBwcm9jZXNzb3Jz
LmNvbW1vbi4gIFRoZSBwcm9jZXNzKCkgbWV0aG9kIHNob3VsZAorICAgICAgICAjICAgICAgICBy
ZXR1cm4gdGhlIGxpbmVzIHdpdGggdGhlIGNhcnJpYWdlIHJldHVybnMgc3RyaXBwZWQuCiAgICAg
ICAgIGZvciBsaW5lX251bWJlciBpbiByYW5nZShsZW4obGluZXMpKToKICAgICAgICAgICAgICMg
RklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSB1c2UgdGhlIFNWTiAiZW9sLXN0eWxlIiBwcm9wZXJ0
eQogICAgICAgICAgICAgIyAgICAgICAgb3IgYSB3aGl0ZSBsaXN0IHRvIGRlY2lkZSB3aGV0aGVy
IG9yIG5vdCB0byBkbwpAQCAtNTIwLDggKzYwNyw4IEBAIGNsYXNzIFN0eWxlQ2hlY2tlcihvYmpl
Y3QpOgogICAgICAgICBpZiBkaXNwYXRjaGVyLnNob3VsZF9za2lwX3dpdGhvdXRfd2FybmluZyhm
aWxlX3BhdGgpOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIGRpc3BhdGNoZXIuc2hv
dWxkX3NraXBfd2l0aF93YXJuaW5nKGZpbGVfcGF0aCk6Ci0gICAgICAgICAgICBzZWxmLl9zdGRl
cnJfd3JpdGUoJ0lnbm9yaW5nICIlcyI6IHRoaXMgZmlsZSBpcyBleGVtcHQgZnJvbSB0aGUgJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZSBndWlkZS5cbiIgJSBmaWxlX3Bh
dGgpCisgICAgICAgICAgICBfbG9nLndhcm4oJ0ZpbGUgZXhlbXB0IGZyb20gc3R5bGUgZ3VpZGUu
IFNraXBwaW5nOiAiJXMiJworICAgICAgICAgICAgICAgICAgICAgICUgZmlsZV9wYXRoKQogICAg
ICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgdmVyYm9zaXR5ID0gc2VsZi5fY29uZmlndXJhdGlv
bi52ZXJib3NpdHkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcl91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcl91bml0dGVzdC5weQppbmRleCBhZThjY2NjLi5kODY2NjYzIDEwMDc1NQotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0
LnB5CkBAIC0zNCwxNSArMzQsMTkgQEAKIAogIiIiVW5pdCB0ZXN0cyBmb3Igc3R5bGUucHkuIiIi
CiAKK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdW5pdHRlc3QKIAogaW1wb3J0IGNoZWNrZXIgYXMg
c3R5bGUKK2Zyb20gLi5zdHlsZV9yZWZlcmVuY2VzIGltcG9ydCBVbml0VGVzdExvZworZnJvbSAu
LnN0eWxlX3JlZmVyZW5jZXMgaW1wb3J0IFVuaXRUZXN0TG9nU3RyZWFtCiBmcm9tIGNoZWNrZXIg
aW1wb3J0IF9CQVNFX0ZJTFRFUl9SVUxFUwogZnJvbSBjaGVja2VyIGltcG9ydCBfTUFYX1JFUE9S
VFNfUEVSX0NBVEVHT1JZCiBmcm9tIGNoZWNrZXIgaW1wb3J0IF9QQVRIX1JVTEVTX1NQRUNJRklF
UiBhcyBQQVRIX1JVTEVTX1NQRUNJRklFUgogZnJvbSBjaGVja2VyIGltcG9ydCBfYWxsX2NhdGVn
b3JpZXMKIGZyb20gY2hlY2tlciBpbXBvcnQgY2hlY2tfd2Via2l0X3N0eWxlX2NvbmZpZ3VyYXRp
b24KIGZyb20gY2hlY2tlciBpbXBvcnQgY2hlY2tfd2Via2l0X3N0eWxlX3BhcnNlcgorZnJvbSBj
aGVja2VyIGltcG9ydCBjb25maWd1cmVfbG9nZ2luZwogZnJvbSBjaGVja2VyIGltcG9ydCBQcm9j
ZXNzb3JEaXNwYXRjaGVyCiBmcm9tIGNoZWNrZXIgaW1wb3J0IFN0eWxlQ2hlY2tlcgogZnJvbSBj
aGVja2VyIGltcG9ydCBTdHlsZUNoZWNrZXJDb25maWd1cmF0aW9uCkBAIC01NCw2ICs1OCw1OCBA
QCBmcm9tIHByb2Nlc3NvcnMuY3BwIGltcG9ydCBDcHBQcm9jZXNzb3IKIGZyb20gcHJvY2Vzc29y
cy50ZXh0IGltcG9ydCBUZXh0UHJvY2Vzc29yCiAKIAorY2xhc3MgQ29uZmlndXJlTG9nZ2luZ1Rl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgdGhlIGNvbmZpZ3VyZV9sb2dn
aW5nKCkgZnVuY3Rpb24uIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGxvZ19z
dHJlYW0gPSBVbml0VGVzdExvZ1N0cmVhbSgpCisKKyAgICAgICAgc2VsZi5faGFuZGxlcnMgPSBj
b25maWd1cmVfbG9nZ2luZyhsb2dfc3RyZWFtKQorICAgICAgICBzZWxmLl9sb2dfc3RyZWFtID0g
bG9nX3N0cmVhbQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAiIiJSZXNldCBs
b2dnaW5nIHRvIGl0cyBvcmlnaW5hbCBzdGF0ZS4KKworICAgICAgICBUaGlzIG1ldGhvZCBlbnN1
cmVzIHRoYXQgdGhlIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBzZXQgdXAKKyAgICAgICAgZm9yIGEg
dW5pdCB0ZXN0IGRvZXMgbm90IGFmZmVjdCBsb2dnaW5nIGluIG90aGVyIHVuaXQgdGVzdHMuCisK
KyAgICAgICAgIiIiCisgICAgICAgICMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIGxv
Z2dlciBjb25maWd1cmVkIGluIHRoZQorICAgICAgICAjIGNvbmZpZ3VyZV9sb2dnaW5nKCkgbWV0
aG9kLgorICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCisgICAgICAgIGZvciBo
YW5kbGVyIGluIHNlbGYuX2hhbmRsZXJzOgorICAgICAgICAgICAgbG9nZ2VyLnJlbW92ZUhhbmRs
ZXIoaGFuZGxlcikKKworICAgIGRlZiBfbG9nKHNlbGYpOgorICAgICAgICByZXR1cm4gbG9nZ2lu
Zy5nZXRMb2dnZXIoIndlYmtpdHB5IikKKworICAgIGRlZiBhc3NlcnRfbG9nX21lc3NhZ2VzKHNl
bGYsIG1lc3NhZ2VzKToKKyAgICAgICAgIiIiQXNzZXJ0IHRoYXQgdGhlIGxvZ2dlZCBtZXNzYWdl
cyBlcXVhbCB0aGUgZ2l2ZW4gbWVzc2FnZXMuIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KG1lc3NhZ2VzLCBzZWxmLl9sb2dfc3RyZWFtLm1lc3NhZ2VzKQorCisgICAgZGVmIHRlc3Rfd2Fy
bmluZ19tZXNzYWdlKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2coKS53YXJuKCJ0ZXN0IG1lc3Nh
Z2UiKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbWVzc2FnZXMoWyJXQVJOSU5HOiB0ZXN0IG1l
c3NhZ2VcbiJdKQorCisgICAgZGVmIHRlc3RfYmVsb3dfd2FybmluZ19tZXNzYWdlKHNlbGYpOgor
ICAgICAgICAjIFdlIHRlc3QgdGhlIGJvdW5kYXJ5IGNhc2Ugb2YgYSBsb2dnaW5nIGxldmVsIGVx
dWFsIHRvIDI5LgorICAgICAgICAjIEluIHByYWN0aWNlLCB3ZSB3aWxsIHByb2JhYmx5IG9ubHkg
YmUgY2FsbGluZyBsb2cuaW5mbygpLAorICAgICAgICAjIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGEg
bG9nZ2luZyBsZXZlbCBvZiAyMC4KKyAgICAgICAgbGV2ZWwgPSBsb2dnaW5nLldBUk5JTkcgLSAx
ICAjIEVxdWFscyAyOS4KKyAgICAgICAgc2VsZi5fbG9nKCkubG9nKGxldmVsLCAidGVzdCBtZXNz
YWdlIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX21lc3NhZ2VzKFsidGVzdCBtZXNzYWdlXG4i
XSkKKworICAgIGRlZiB0ZXN0X2RlYnVnX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuX2xv
ZygpLmRlYnVnKCJ0ZXN0IG1lc3NhZ2UiKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbWVzc2Fn
ZXMoW10pCisKKyAgICBkZWYgdGVzdF90d29fbWVzc2FnZXMoc2VsZik6CisgICAgICAgIHNlbGYu
X2xvZygpLmluZm8oIm1lc3NhZ2UxIikKKyAgICAgICAgc2VsZi5fbG9nKCkuaW5mbygibWVzc2Fn
ZTIiKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbWVzc2FnZXMoWyJtZXNzYWdlMVxuIiwgIm1l
c3NhZ2UyXG4iXSkKKworCiBjbGFzcyBHbG9iYWxWYXJpYWJsZXNUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKIAogICAgICIiIlRlc3RzIHZhbGlkaXR5IG9mIHRoZSBnbG9iYWwgdmFyaWFibGVzLiIi
IgpAQCAtNDQ2LDExICs1MDIsMTUgQEAgY2xhc3MgU3R5bGVDaGVja2VyQ2hlY2tGaWxlVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAiIiIKICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAg
ICAgIHNlbGYuX2xvZyA9IFVuaXRUZXN0TG9nKHNlbGYpCiAgICAgICAgIHNlbGYuZ290X2ZpbGVf
cGF0aCA9IE5vbmUKICAgICAgICAgc2VsZi5nb3RfaGFuZGxlX3N0eWxlX2Vycm9yID0gTm9uZQog
ICAgICAgICBzZWxmLmdvdF9wcm9jZXNzb3IgPSBOb25lCiAgICAgICAgIHNlbGYud2FybmluZ19t
ZXNzYWdlcyA9ICIiCiAKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuX2xv
Zy50ZWFyRG93bigpCisKICAgICBkZWYgbW9ja19zdGRlcnJfd3JpdGUoc2VsZiwgd2FybmluZ19t
ZXNzYWdlKToKICAgICAgICAgc2VsZi53YXJuaW5nX21lc3NhZ2VzICs9IHdhcm5pbmdfbWVzc2Fn
ZQogCkBAIC01MjMsOCArNTgzLDkgQEAgY2xhc3MgU3R5bGVDaGVja2VyQ2hlY2tGaWxlVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAgIyBDaGVjayB0aGUgb3V0Y29tZS4KICAgICAg
ICAgc2VsZi5jYWxsX2NoZWNrX2ZpbGUoZmlsZV9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydF9h
dHRyaWJ1dGVzKE5vbmUsIE5vbmUsIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0lnbm9yaW5nICJndGsyZHJhd2luZy5jIjogdGhpcyBmaWxlIGlzIGV4ZW1wdCBmcm9tIHRo
ZSBzdHlsZSBndWlkZS5cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJpYnV0ZXMoTm9uZSwg
Tm9uZSwgTm9uZSwgIiIpCisgICAgICAgIHNlbGYuX2xvZy5hc3NlcnRNZXNzYWdlcyhbIldBUk5J
Tkc6IEZpbGUgZXhlbXB0IGZyb20gc3R5bGUgZ3VpZGUuICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnU2tpcHBpbmc6ICJndGsyZHJhd2luZy5jIlxuJ10pCiAKICAgICBkZWYg
dGVzdF9jaGVja19maWxlX29uX25vbl9za2lwcGVkKHNlbGYpOgogCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkKaW5kZXggMjUyOGM0ZC4uY2I4
YTk4NSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZl
cmVuY2VzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJl
bmNlcy5weQpAQCAtNDEsNiArNDEsOCBAQAogaW1wb3J0IG9zCiAKIGZyb20gZGlmZl9wYXJzZXIg
aW1wb3J0IERpZmZQYXJzZXIKK2Zyb20gaW5pdC5sb2d0ZXN0aW5nIGltcG9ydCBVbml0VGVzdExv
ZworZnJvbSBpbml0LmxvZ3Rlc3RpbmcgaW1wb3J0IFVuaXRUZXN0TG9nU3RyZWFtCiBmcm9tIHNj
bSBpbXBvcnQgZGV0ZWN0X3NjbV9zeXN0ZW0KIAogCg==
</data>
<flag name="review"
          id="32783"
          type_id="1"
          status="+"
          setter="hamaji"
    />
    <flag name="commit-queue"
          id="32784"
          type_id="3"
          status="-"
          setter="cjerdonek"
    />
          </attachment>
      

    </bug>

</bugzilla>