<?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>36235</bug_id>
          
          <creation_ts>2010-03-17 12:48:44 -0700</creation_ts>
          <short_desc>Add a way for the bots to send messages to IRC</short_desc>
          <delta_ts>2010-03-17 13:52:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>200905</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-17 12:48:44 -0700</bug_when>
    <thetext>Add a way for the bots to send messages to IRC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200909</commentid>
    <comment_count>1</comment_count>
      <attachid>50938</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-17 12:51:58 -0700</bug_when>
    <thetext>Created attachment 50938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200926</commentid>
    <comment_count>2</comment_count>
      <attachid>50938</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-17 13:03:34 -0700</bug_when>
    <thetext>Comment on attachment 50938
Patch

OK.  So I think this would need a few more comments.

At least to separate out the different interfaces that IRCBot is implementing.

IRCBot shoudl consider taking channel and nickname, etc. as arguments.  They obviously could default to the current ones.  Unless the model woudl be that you would subclass it to change the channel?

I think this all makes sense.

It also needs another comment in autoinstalled/__init__.py to indicate why both imports are needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200930</commentid>
    <comment_count>3</comment_count>
      <attachid>50938</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-17 13:04:17 -0700</bug_when>
    <thetext>Comment on attachment 50938
Patch

I think it makes sense to test ThreadedMessageQueue, even if we don&apos;t test the threaded nature of it.  just to make sure that stop() does what you expect, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200933</commentid>
    <comment_count>4</comment_count>
      <attachid>50938</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-17 13:06:05 -0700</bug_when>
    <thetext>Comment on attachment 50938
Patch

You might add a comment to &quot;setDeamon()&quot;

We could use a mock &quot;connection&quot; object for testing, but it may not be worth it.  Tests for the queue make sense.  The rest is probably OK as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200935</commentid>
    <comment_count>5</comment_count>
      <attachid>50938</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-17 13:07:37 -0700</bug_when>
    <thetext>Comment on attachment 50938
Patch

Actually, it woudl be nice to have a full-system test.

whereby which we mock out the connection, and call &quot;post&quot; and then &quot;disconnect&quot; and make sure that it posts before disconnect.

That would be a minimal test of the API and is probably worth the trouble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200947</commentid>
    <comment_count>6</comment_count>
      <attachid>50951</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-17 13:43:42 -0700</bug_when>
    <thetext>Created attachment 50951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200950</commentid>
    <comment_count>7</comment_count>
      <attachid>50951</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-17 13:47:29 -0700</bug_when>
    <thetext>Comment on attachment 50951
Patch

OK.  I&apos;m sold.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200951</commentid>
    <comment_count>8</comment_count>
      <attachid>50953</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-17 13:48:58 -0700</bug_when>
    <thetext>Created attachment 50953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200952</commentid>
    <comment_count>9</comment_count>
      <attachid>50954</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-17 13:50:49 -0700</bug_when>
    <thetext>Created attachment 50954
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200953</commentid>
    <comment_count>10</comment_count>
      <attachid>50954</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-17 13:52:27 -0700</bug_when>
    <thetext>Comment on attachment 50954
Patch for landing

Clearing flags on attachment: 50954

Committed r56125: &lt;http://trac.webkit.org/changeset/56125&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200954</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-17 13:52:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50938</attachid>
            <date>2010-03-17 12:51:58 -0700</date>
            <delta_ts>2010-03-17 13:43:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36235-20100317125157.patch</filename>
            <type>text/plain</type>
            <size>10785</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlMmZjZjJhLi5lMWFlZmFmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDMt
MTcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB3YXkgZm9yIHRoZSBib3RzIHRvIHNl
bmQgbWVzc2FnZXMgdG8gSVJDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNjIzNQorCisgICAgICAgIFdlJ2xsIHVzZSB0aGVzZSBjbGFzc2VzIHRvIG5v
dGlmeSAjd2Via2l0IGFib3V0IGJhZCBTVk4gcmV2aXNpb25zLgorICAgICAgICBUaGlzIHBhdGNo
IGp1c3QgaGFzIHNvbWUgc2tlbGV0b24gY29kZSBmb3IgdXMgdG8gcGxheSB3aXRoLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9pcmMvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvaXJjL2lyY2JvdC5weTogQWRkZWQuCisgICAgICAgICAgICBBIGJv
dCB0aGF0IGtub3dzIGhvdyB0byB0YWxrIHRvIElSQy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2lyYy9pcmNwcm94eS5weTogQWRkZWQuCisgICAgICAgICAgICBXZSBuZWVkIHRvIHJ1biB0
aGUgYm90IG9uIGl0cyBvd24gdGhyZWFkIGJlY2F1c2UgdGhlIGlyY2xpYiBuZWVkcworICAgICAg
ICAgICAgaXRzIG93biBtYWlubG9vcC4gIFRoaXMgY2xhc3MgcHJvdmlkZXMgYW4gYWJzdHJhY3Rp
b24gb2YgdGhlCisgICAgICAgICAgICB0aHJlYWRpbmcuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9pcmMvdGhyZWFkZWRtZXNzYWdlcXVldWUucHk6IEFkZGVkLgorICAgICAgICAgICAgQSB0
aHJlYWQtc2FmZSBtZXNzYWdlIHF1ZXVlIGZvciBzZW5kaW5nIG1lc3NhZ2VzIGZyb20gdGhlIG1h
aW4KKyAgICAgICAgICAgIHRocmVhZCB0byB0aGUgSVJDIHRocmVhZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvYXV0b2luc3RhbGxlZC9fX2luaXRfXy5weToKKyAgICAg
ICAgICAgIEF1dG9pbnN0YWxsIGlyY2xpYgorCiAyMDEwLTAzLTE3ICBab2x0YW4gSG9ydmF0aCAg
PHpvbHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMvX19pbml0X18ucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy9fX2luaXRfXy5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjY1YmVlCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMvX19pbml0X18ucHkKQEAgLTAsMCArMSBAQAor
IyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxl
IGZpbGVzCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy9pcmNi
b3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy9pcmNib3QucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRhMmQ4NgotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL2lyY2JvdC5weQpAQCAtMCwwICsxLDY3
IEBACisjIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0
YWxsZWQgaW1wb3J0IGlyY2JvdAorCisKK2NsYXNzIElSQ0JvdChpcmNib3QuU2luZ2xlU2VydmVy
SVJDQm90KToKKyAgICAjIEZJWE1FOiBXZSBzaG91bGQgZ2V0IHRoaXMgaW5mb3JtYXRpb24gZnJv
bSBhIGNvbmZpZyBmaWxlLgorICAgIHNlcnZlciA9ICJpcmMuZnJlZW5vZGUubmV0IgorICAgIHBv
cnQgPSA2NjY3CisgICAgbmlja25hbWUgPSAid2Via2l0LXNtb2tleSIKKyAgICBjaGFubmVsID0g
IiN3ZWJraXQtdGVzdCIKKyAgICBfcG9sbF9pbnRlcnZhbCA9IDMwICMgc2Vjb25kcworCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2VfcXVldWUpOgorICAgICAgICBzZWxmLl9tZXNzYWdl
X3F1ZXVlID0gbWVzc2FnZV9xdWV1ZQorICAgICAgICBpcmNib3QuU2luZ2xlU2VydmVySVJDQm90
Ll9faW5pdF9fKHNlbGYsIFsoc2VsZi5zZXJ2ZXIsIHNlbGYucG9ydCldLCBzZWxmLm5pY2tuYW1l
LCBzZWxmLm5pY2tuYW1lKQorCisgICAgZGVmIF9zY2hlZHVsZV9wb2xsKHNlbGYpOgorICAgICAg
ICBzZWxmLmNvbm5lY3Rpb24uZXhlY3V0ZV9kZWxheWVkKHNlbGYuX3BvbGxfaW50ZXJ2YWwsIHNl
bGYuX3BvbGxfY2FsbGJhY2spCisKKyAgICBkZWYgX3BvbGxfY2FsbGJhY2soc2VsZik6CisgICAg
ICAgIChtZXNzYWdlcywgaXNfcnVubmluZykgPSBzZWxmLl9tZXNzYWdlX3F1ZXVlLnRha2VfYWxs
KCkKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gbWVzc2FnZXM6CisgICAgICAgICAgICBzZWxmLl9w
b3N0KG1lc3NhZ2UpCisgICAgICAgIGlmIG5vdCBpc19ydW5uaW5nOgorICAgICAgICAgICAgc2Vs
Zi5kaWUoKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuX3NjaGVkdWxlX3BvbGwo
KQorCisgICAgZGVmIF9wb3N0KHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICBpZiBub3QgbWVzc2Fn
ZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmNvbm5lY3Rpb24ucHJpdm1zZyhz
ZWxmLmNoYW5uZWwsIG1lc3NhZ2UpCisKKyAgICBkZWYgb25fbmlja25hbWVpbnVzZShzZWxmLCBj
b25uZWN0aW9uLCBldmVudCk6CisgICAgICAgIGNvbm5lY3Rpb24ubmljayhjb25uZWN0aW9uLmdl
dF9uaWNrbmFtZSgpICsgIl8iKQorCisgICAgZGVmIG9uX3dlbGNvbWUoc2VsZiwgY29ubmVjdGlv
biwgZXZlbnQpOgorICAgICAgICBjb25uZWN0aW9uLmpvaW4oc2VsZi5jaGFubmVsKQorICAgICAg
ICBzZWxmLl9zY2hlZHVsZV9wb2xsKCkKKwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9pcmMvaXJjcHJveHkucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2lyYy9pcmNwcm94eS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTU3
MTBlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMv
aXJjcHJveHkucHkKQEAgLTAsMCArMSw1OCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB0
aHJlYWRpbmcKKworZnJvbSB3ZWJraXRweS5pcmMuaXJjYm90IGltcG9ydCBJUkNCb3QKK2Zyb20g
d2Via2l0cHkuaXJjLnRocmVhZGVkbWVzc2FnZXF1ZXVlIGltcG9ydCBUaHJlYWRlZE1lc3NhZ2VR
dWV1ZQorCitjbGFzcyBfSVJDVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBtZXNzYWdlX3F1ZXVlLCBib3RfY2xhc3MpOgorICAgICAgICB0aHJlYWRpbmcu
VGhyZWFkLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUpCisgICAg
ICAgIHNlbGYuX21lc3NhZ2VfcXVldWUgPSBtZXNzYWdlX3F1ZXVlCisgICAgICAgIHNlbGYuX2Jv
dF9jbGFzcyA9IGJvdF9jbGFzcworCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgYm90ID0g
c2VsZi5fYm90X2NsYXNzKHNlbGYuX21lc3NhZ2VfcXVldWUpCisgICAgICAgIGJvdC5zdGFydCgp
CisKKworY2xhc3MgSVJDUHJveHkob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYm90
X2NsYXNzPUlSQ0JvdCk6CisgICAgICAgIHNlbGYuX21lc3NhZ2VfcXVldWUgPSBUaHJlYWRlZE1l
c3NhZ2VRdWV1ZSgpCisgICAgICAgIHNlbGYuX2NoaWxkX3RocmVhZCA9IF9JUkNUaHJlYWQoc2Vs
Zi5fbWVzc2FnZV9xdWV1ZSwgYm90X2NsYXNzKQorICAgICAgICBzZWxmLl9jaGlsZF90aHJlYWQu
c3RhcnQoKQorCisgICAgZGVmIHBvc3Qoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHNlbGYuX21l
c3NhZ2VfcXVldWUucG9zdChtZXNzYWdlKQorCisgICAgZGVmIGRpc2Nvbm5lY3Qoc2VsZik6Cisg
ICAgICAgIHNlbGYuX21lc3NhZ2VfcXVldWUuc3RvcCgpCisgICAgICAgIHNlbGYuX2NoaWxkX3Ro
cmVhZC5qb2luKCkKKwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9p
cmMvdGhyZWFkZWRtZXNzYWdlcXVldWUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2lyYy90aHJlYWRlZG1lc3NhZ2VxdWV1ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lNDZhZjYyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9pcmMvdGhyZWFkZWRtZXNzYWdlcXVldWUucHkKQEAgLTAsMCArMSw1NSBAQAorIyBD
b3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK2ltcG9ydCB0aHJlYWRpbmcKKworCitjbGFzcyBUaHJlYWRlZE1lc3Nh
Z2VRdWV1ZShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5f
bWVzc2FnZXMgPSBbXQorICAgICAgICBzZWxmLl9pc19ydW5uaW5nID0gVHJ1ZQorICAgICAgICBz
ZWxmLl9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorCisgICAgZGVmIHBvc3Qoc2VsZiwgbWVzc2Fn
ZSk6CisgICAgICAgIHNlbGYuX2xvY2suYWNxdWlyZSgpCisgICAgICAgIHNlbGYuX21lc3NhZ2Vz
LmFwcGVuZChtZXNzYWdlKQorICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2UoKQorCisgICAgZGVm
IHN0b3Aoc2VsZik6CisgICAgICAgIHNlbGYuX2xvY2suYWNxdWlyZSgpCisgICAgICAgIHNlbGYu
X2lzX3J1bm5pbmcgPSBGYWxzZQorICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2UoKQorCisgICAg
ZGVmIHRha2VfYWxsKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2NrLmFjcXVpcmUoKQorICAgICAg
ICBtZXNzYWdlcyA9IHNlbGYuX21lc3NhZ2VzCisgICAgICAgIGlzX3J1bm5pbmcgPSBzZWxmLl9p
c19ydW5uaW5nCisgICAgICAgIHNlbGYuX3F1ZXVlID0gW10KKyAgICAgICAgc2VsZi5fbG9jay5y
ZWxlYXNlKCkKKyAgICAgICAgcmV0dXJuIChtZXNzYWdlcywgaXNfcnVubmluZykKKwpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L2F1dG9pbnN0YWxs
ZWQvX19pbml0X18ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
YXV0b2luc3RhbGxlZC9fX2luaXRfXy5weQppbmRleCBmNzM5YWRkLi45MmQzNWU2IDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvYXV0b2luc3RhbGxl
ZC9fX2luaXRfXy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvYXV0b2luc3RhbGxlZC9fX2luaXRfXy5weQpAQCAtNiw2ICs2LDkgQEAgaW1wb3J0IHdlYmtp
dHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGwgYXMgYXV0b2luc3RhbGwKICMgZG93bmxvYWRlZC4K
IGF1dG9pbnN0YWxsLmJpbmQoIkNsaWVudEZvcm0iLCAiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9w
YWNrYWdlcy9zb3VyY2UvQy9DbGllbnRGb3JtL0NsaWVudEZvcm0tMC4yLjEwLnppcCIsICJDbGll
bnRGb3JtLTAuMi4xMCIpCiBhdXRvaW5zdGFsbC5iaW5kKCJtZWNoYW5pemUiLCAiaHR0cDovL3B5
cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvbS9tZWNoYW5pemUvbWVjaGFuaXplLTAuMS4x
MS56aXAiLCAibWVjaGFuaXplLTAuMS4xMSIpCithdXRvaW5zdGFsbC5iaW5kKCJpcmNsaWIiLCAi
aHR0cDovL2l3ZWIuZGwuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvcHl0aG9uLWlyY2xpYi9weXRo
b24taXJjbGliLzAuNC44L3B5dGhvbi1pcmNsaWItMC40LjguemlwIiwgInB5dGhvbi1pcmNsaWIt
MC40LjgiKQorYXV0b2luc3RhbGwuYmluZCgiaXJjYm90IiwgImh0dHA6Ly9pd2ViLmRsLnNvdXJj
ZWZvcmdlLm5ldC9wcm9qZWN0L3B5dGhvbi1pcmNsaWIvcHl0aG9uLWlyY2xpYi8wLjQuOC9weXRo
b24taXJjbGliLTAuNC44LnppcCIsICJweXRob24taXJjbGliLTAuNC44IikKIAogZnJvbSBtZWNo
YW5pemUgaW1wb3J0IEJyb3dzZXIKIGZyb20gbWVjaGFuaXplIGltcG9ydCBIVFRQRXJyb3IKK2lt
cG9ydCBpcmNib3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50951</attachid>
            <date>2010-03-17 13:43:42 -0700</date>
            <delta_ts>2010-03-17 13:48:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36235-20100317134341.patch</filename>
            <type>text/plain</type>
            <size>22861</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlMmZjZjJhLi5jOWY4NWMxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDMt
MTcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB3YXkgZm9yIHRoZSBib3RzIHRvIHNl
bmQgbWVzc2FnZXMgdG8gSVJDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNjIzNQorCisgICAgICAgIFdlJ2xsIHVzZSB0aGVzZSBjbGFzc2VzIHRvIG5v
dGlmeSAjd2Via2l0IGFib3V0IGJhZCBTVk4gcmV2aXNpb25zLgorICAgICAgICBUaGlzIHBhdGNo
IGp1c3QgaGFzIHNvbWUgc2tlbGV0b24gY29kZSBmb3IgdXMgdG8gcGxheSB3aXRoLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9pcmMvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvaXJjL2lyY2JvdC5weTogQWRkZWQuCisgICAgICAgICAgICBBIGJv
dCB0aGF0IGtub3dzIGhvdyB0byB0YWxrIHRvIElSQy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2lyYy9pcmNwcm94eS5weTogQWRkZWQuCisgICAgICAgICAgICBXZSBuZWVkIHRvIHJ1biB0
aGUgYm90IG9uIGl0cyBvd24gdGhyZWFkIGJlY2F1c2UgdGhlIGlyY2xpYiBuZWVkcworICAgICAg
ICAgICAgaXRzIG93biBtYWlubG9vcC4gIFRoaXMgY2xhc3MgcHJvdmlkZXMgYW4gYWJzdHJhY3Rp
b24gb2YgdGhlCisgICAgICAgICAgICB0aHJlYWRpbmcuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9pcmMvbWVzc2FnZXB1bXAucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvaXJjL21lc3NhZ2VwdW1wX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2lyYy90aHJlYWRlZG1lc3NhZ2VxdWV1ZS5weTogQWRkZWQuCisgICAgICAgICAg
ICBBIHRocmVhZC1zYWZlIG1lc3NhZ2UgcXVldWUgZm9yIHNlbmRpbmcgbWVzc2FnZXMgZnJvbSB0
aGUgbWFpbgorICAgICAgICAgICAgdGhyZWFkIHRvIHRoZSBJUkMgdGhyZWFkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvaXJjL3RocmVhZGVkbWVzc2FnZXF1ZXVlX3VuaXR0ZXN0LnB5OiBB
ZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2lyYy91bml0dGVzdHMucHk6IEFkZGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9hdXRvaW5zdGFsbGVkL19f
aW5pdF9fLnB5OgorICAgICAgICAgICAgQXV0b2luc3RhbGwgaXJjbGliCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS91bml0dGVzdHMucHk6CisKIDIwMTAtMDMtMTcgIFpvbHRhbiBIb3J2YXRo
ICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy9fX2luaXRfXy5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL19faW5pdF9fLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNjViZWUKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBA
CisjIFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1
bGUgZmlsZXMKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL2ly
Y2JvdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL2lyY2JvdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDA0OTI1Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMvaXJjYm90LnB5CkBAIC0wLDAgKzEs
NjcgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmli
dXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LmlyYy5tZXNzYWdlcHVtcCBp
bXBvcnQgTWVzc2FnZVB1bXAsIE1lc3NhZ2VQdW1wRGVsZWdhdGUKK2Zyb20gd2Via2l0cHkudGhp
cmRwYXJ0eS5hdXRvaW5zdGFsbGVkIGltcG9ydCBpcmNib3QKKworCitjbGFzcyBJUkNCb3QoaXJj
Ym90LlNpbmdsZVNlcnZlcklSQ0JvdCwgTWVzc2FnZVB1bXBEZWxlZ2F0ZSk6CisgICAgIyBGSVhN
RTogV2Ugc2hvdWxkIGdldCB0aGlzIGluZm9ybWF0aW9uIGZyb20gYSBjb25maWcgZmlsZS4KKyAg
ICBzZXJ2ZXIgPSAiaXJjLmZyZWVub2RlLm5ldCIKKyAgICBwb3J0ID0gNjY2NworICAgIG5pY2tu
YW1lID0gIndlYmtpdC1zbW9rZXkiCisgICAgY2hhbm5lbCA9ICIjd2Via2l0LXRlc3QiCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAgbWVzc2FnZV9xdWV1ZSwKKyAg
ICAgICAgICAgICAgICAgc2VydmVyPUlSQ0JvdC5zZXJ2ZXIsCisgICAgICAgICAgICAgICAgIHBv
cnQ9SVJDQm90LnBvcnQsCisgICAgICAgICAgICAgICAgIG5pY2tuYW1lPUlSQ0JvdC5uaWNrbmFt
ZSwKKyAgICAgICAgICAgICAgICAgY2hhbm5lbD1JUkNCb3QuY2hhbm5lbCk6CisgICAgICAgIHNl
bGYuX21lc3NhZ2VfcXVldWUgPSBtZXNzYWdlX3F1ZXVlCisgICAgICAgIGlyY2JvdC5TaW5nbGVT
ZXJ2ZXJJUkNCb3QuX19pbml0X18oc2VsZiwgWyhzZXJ2ZXIsIHBvcnQpXSwgbmlja25hbWUsIG5p
Y2tuYW1lKQorCisgICAgIyBpcmNib3QuU2luZ2xlU2VydmVySVJDQm90IG1ldGhvZHMKKworICAg
IGRlZiBvbl9uaWNrbmFtZWludXNlKHNlbGYsIGNvbm5lY3Rpb24sIGV2ZW50KToKKyAgICAgICAg
Y29ubmVjdGlvbi5uaWNrKGNvbm5lY3Rpb24uZ2V0X25pY2tuYW1lKCkgKyAiXyIpCisKKyAgICBk
ZWYgb25fd2VsY29tZShzZWxmLCBjb25uZWN0aW9uLCBldmVudCk6CisgICAgICAgIGNvbm5lY3Rp
b24uam9pbihzZWxmLmNoYW5uZWwpCisgICAgICAgIHNlbGYuX21lc3NhZ2VfcHVtcCA9IE1lc3Nh
Z2VQdW1wKHNlbGYsIHNlbGYuX21lc3NhZ2VfcXVldWUpCisKKyAgICAjIE1lc3NhZ2VQdW1wRGVs
ZWdhdGUgbWV0aG9kcworCisgICAgZGVmIHNjaGVkdWxlKHNlbGYsIGludGVydmFsLCBjYWxsYmFj
ayk6CisgICAgICAgIHNlbGYuY29ubmVjdGlvbi5leGVjdXRlX2RlbGF5ZWQoc2VsZi5pbnRlcnZh
bCwgc2VsZi5fY2FsbGJhY2spCisKKyAgICBkZWYgbWVzc2FnZV9hdmFpbGFibGUoc2VsZiwgbWVz
c2FnZSk6CisgICAgICAgIHNlbGYuY29ubmVjdGlvbi5wcml2bXNnKHNlbGYuY2hhbm5lbCwgbWVz
c2FnZSkKKworICAgIGRlZiBmaW5hbF9tZXNzYWdlX2RlbGl2ZXJlZChzZWxmKToKKyAgICAgICAg
c2VsZi5kaWUoKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMv
aXJjcHJveHkucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy9pcmNwcm94eS5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTU3MTBlCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMvaXJjcHJveHkucHkKQEAg
LTAsMCArMSw1OCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB0aHJlYWRpbmcKKworZnJv
bSB3ZWJraXRweS5pcmMuaXJjYm90IGltcG9ydCBJUkNCb3QKK2Zyb20gd2Via2l0cHkuaXJjLnRo
cmVhZGVkbWVzc2FnZXF1ZXVlIGltcG9ydCBUaHJlYWRlZE1lc3NhZ2VRdWV1ZQorCitjbGFzcyBf
SVJDVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNz
YWdlX3F1ZXVlLCBib3RfY2xhc3MpOgorICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9f
KHNlbGYpCisgICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUpCisgICAgICAgIHNlbGYuX21lc3Nh
Z2VfcXVldWUgPSBtZXNzYWdlX3F1ZXVlCisgICAgICAgIHNlbGYuX2JvdF9jbGFzcyA9IGJvdF9j
bGFzcworCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgYm90ID0gc2VsZi5fYm90X2NsYXNz
KHNlbGYuX21lc3NhZ2VfcXVldWUpCisgICAgICAgIGJvdC5zdGFydCgpCisKKworY2xhc3MgSVJD
UHJveHkob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYm90X2NsYXNzPUlSQ0JvdCk6
CisgICAgICAgIHNlbGYuX21lc3NhZ2VfcXVldWUgPSBUaHJlYWRlZE1lc3NhZ2VRdWV1ZSgpCisg
ICAgICAgIHNlbGYuX2NoaWxkX3RocmVhZCA9IF9JUkNUaHJlYWQoc2VsZi5fbWVzc2FnZV9xdWV1
ZSwgYm90X2NsYXNzKQorICAgICAgICBzZWxmLl9jaGlsZF90aHJlYWQuc3RhcnQoKQorCisgICAg
ZGVmIHBvc3Qoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHNlbGYuX21lc3NhZ2VfcXVldWUucG9z
dChtZXNzYWdlKQorCisgICAgZGVmIGRpc2Nvbm5lY3Qoc2VsZik6CisgICAgICAgIHNlbGYuX21l
c3NhZ2VfcXVldWUuc3RvcCgpCisgICAgICAgIHNlbGYuX2NoaWxkX3RocmVhZC5qb2luKCkKKwpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMvbWVzc2FnZXB1bXAu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy9tZXNzYWdlcHVtcC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTM5Mjg1Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMvbWVzc2FnZXB1bXAucHkKQEAgLTAs
MCArMSw1OSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRp
c3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworY2xhc3MgTWVzc2FnZVB1bXBEZWxlZ2F0
ZShvYmplY3QpOgorICAgIGRlZiBzY2hlZHVsZShzZWxmLCBpbnRlcnZhbCwgY2FsbGJhY2spOgor
ICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxl
bWVudCIKKworICAgIGRlZiBtZXNzYWdlX2F2YWlsYWJsZShzZWxmLCBtZXNzYWdlKToKKyAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQi
CisKKyAgICBkZWYgZmluYWxfbWVzc2FnZV9kZWxpdmVyZWQoc2VsZik6CisgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgorCisKK2Ns
YXNzIE1lc3NhZ2VQdW1wKG9iamVjdCk6CisgICAgaW50ZXJ2YWwgPSAxMCAjIHNlY29uZHMKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZWxlZ2F0ZSwgbWVzc2FnZV9xdWV1ZSk6CisgICAgICAg
IHNlbGYuX2RlbGVnYXRlID0gZGVsZWdhdGUKKyAgICAgICAgc2VsZi5fbWVzc2FnZV9xdWV1ZSA9
IG1lc3NhZ2VfcXVldWUKKyAgICAgICAgc2VsZi5fc2NoZWR1bGUoKQorCisgICAgZGVmIF9zY2hl
ZHVsZShzZWxmKToKKyAgICAgICAgc2VsZi5fZGVsZWdhdGUuc2NoZWR1bGUoc2VsZi5pbnRlcnZh
bCwgc2VsZi5fY2FsbGJhY2spCisKKyAgICBkZWYgX2NhbGxiYWNrKHNlbGYpOgorICAgICAgICAo
bWVzc2FnZXMsIGlzX3J1bm5pbmcpID0gc2VsZi5fbWVzc2FnZV9xdWV1ZS50YWtlX2FsbCgpCisg
ICAgICAgIGZvciBtZXNzYWdlIGluIG1lc3NhZ2VzOgorICAgICAgICAgICAgc2VsZi5fZGVsZWdh
dGUubWVzc2FnZV9hdmFpbGFibGUobWVzc2FnZSkKKyAgICAgICAgaWYgbm90IGlzX3J1bm5pbmc6
CisgICAgICAgICAgICBzZWxmLl9kZWxlZ2F0ZS5maW5hbF9tZXNzYWdlX2RlbGl2ZXJlZCgpCisg
ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5fc2NoZWR1bGUoKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMvbWVzc2FnZXB1bXBfdW5pdHRlc3QucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy9tZXNzYWdlcHVtcF91bml0dGVzdC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzNhYjhlCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMvbWVzc2FnZXB1bXBfdW5p
dHRlc3QucHkKQEAgLTAsMCArMSw4MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVz
dAorZnJvbSB3ZWJraXRweS5pcmMubWVzc2FnZXB1bXAgaW1wb3J0IE1lc3NhZ2VQdW1wLCBNZXNz
YWdlUHVtcERlbGVnYXRlCitmcm9tIHdlYmtpdHB5LmlyYy50aHJlYWRlZG1lc3NhZ2VxdWV1ZSBp
bXBvcnQgVGhyZWFkZWRNZXNzYWdlUXVldWUKKworCitjbGFzcyBUZXN0RGVsZWdhdGUoTWVzc2Fn
ZVB1bXBEZWxlZ2F0ZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmxv
ZyA9IFtdCisKKyAgICBkZWYgc2NoZWR1bGUoc2VsZiwgaW50ZXJ2YWwsIGNhbGxiYWNrKToKKyAg
ICAgICAgc2VsZi5jYWxsYmFjayA9IGNhbGxiYWNrCisgICAgICAgIHNlbGYubG9nLmFwcGVuZCgi
c2NoZWR1bGUiKQorCisgICAgZGVmIG1lc3NhZ2VfYXZhaWxhYmxlKHNlbGYsIG1lc3NhZ2UpOgor
ICAgICAgICBzZWxmLmxvZy5hcHBlbmQoIm1lc3NhZ2VfYXZhaWxhYmxlOiAlcyIgJSBtZXNzYWdl
KQorCisgICAgZGVmIGZpbmFsX21lc3NhZ2VfZGVsaXZlcmVkKHNlbGYpOgorICAgICAgICBzZWxm
LmxvZy5hcHBlbmQoImZpbmFsX21lc3NhZ2VfZGVsaXZlcmVkIikKKworCitjbGFzcyBNZXNzYWdl
UHVtcFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6
CisgICAgICAgIHF1ZXVlID0gVGhyZWFkZWRNZXNzYWdlUXVldWUoKQorICAgICAgICBkZWxlZ2F0
ZSA9IFRlc3REZWxlZ2F0ZSgpCisgICAgICAgIHB1bXAgPSBNZXNzYWdlUHVtcChkZWxlZ2F0ZSwg
cXVldWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVsZWdhdGUubG9nLCBbCisgICAgICAg
ICAgICAnc2NoZWR1bGUnCisgICAgICAgIF0pCisgICAgICAgIGRlbGVnYXRlLmNhbGxiYWNrKCkK
KyAgICAgICAgcXVldWUucG9zdCgiSGVsbG8iKQorICAgICAgICBxdWV1ZS5wb3N0KCJUaGVyZSIp
CisgICAgICAgIGRlbGVnYXRlLmNhbGxiYWNrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
ZWxlZ2F0ZS5sb2csIFsKKyAgICAgICAgICAgICdzY2hlZHVsZScsCisgICAgICAgICAgICAnc2No
ZWR1bGUnLAorICAgICAgICAgICAgJ21lc3NhZ2VfYXZhaWxhYmxlOiBIZWxsbycsCisgICAgICAg
ICAgICAnbWVzc2FnZV9hdmFpbGFibGU6IFRoZXJlJywKKyAgICAgICAgICAgICdzY2hlZHVsZScK
KyAgICAgICAgXSkKKyAgICAgICAgcXVldWUucG9zdCgiTW9yZSIpCisgICAgICAgIHF1ZXVlLnBv
c3QoIk1lc3NhZ2VzIikKKyAgICAgICAgcXVldWUuc3RvcCgpCisgICAgICAgIGRlbGVnYXRlLmNh
bGxiYWNrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWxlZ2F0ZS5sb2csIFsKKyAgICAg
ICAgICAgICdzY2hlZHVsZScsCisgICAgICAgICAgICAnc2NoZWR1bGUnLAorICAgICAgICAgICAg
J21lc3NhZ2VfYXZhaWxhYmxlOiBIZWxsbycsCisgICAgICAgICAgICAnbWVzc2FnZV9hdmFpbGFi
bGU6IFRoZXJlJywKKyAgICAgICAgICAgICdzY2hlZHVsZScsCisgICAgICAgICAgICAnbWVzc2Fn
ZV9hdmFpbGFibGU6IE1vcmUnLAorICAgICAgICAgICAgJ21lc3NhZ2VfYXZhaWxhYmxlOiBNZXNz
YWdlcycsCisgICAgICAgICAgICAnZmluYWxfbWVzc2FnZV9kZWxpdmVyZWQnCisgICAgICAgIF0p
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy90aHJlYWRlZG1l
c3NhZ2VxdWV1ZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL3RocmVhZGVk
bWVzc2FnZXF1ZXVlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYjZm
OGMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy90
aHJlYWRlZG1lc3NhZ2VxdWV1ZS5weQpAQCAtMCwwICsxLDU1IEBACisjIENvcHlyaWdodCAoYykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworaW1wb3J0IHRocmVhZGluZworCisKK2NsYXNzIFRocmVhZGVkTWVzc2FnZVF1ZXVlKG9iamVj
dCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9tZXNzYWdlcyA9IFtd
CisgICAgICAgIHNlbGYuX2lzX3J1bm5pbmcgPSBUcnVlCisgICAgICAgIHNlbGYuX2xvY2sgPSB0
aHJlYWRpbmcuTG9jaygpCisKKyAgICBkZWYgcG9zdChzZWxmLCBtZXNzYWdlKToKKyAgICAgICAg
c2VsZi5fbG9jay5hY3F1aXJlKCkKKyAgICAgICAgc2VsZi5fbWVzc2FnZXMuYXBwZW5kKG1lc3Nh
Z2UpCisgICAgICAgIHNlbGYuX2xvY2sucmVsZWFzZSgpCisKKyAgICBkZWYgc3RvcChzZWxmKToK
KyAgICAgICAgc2VsZi5fbG9jay5hY3F1aXJlKCkKKyAgICAgICAgc2VsZi5faXNfcnVubmluZyA9
IEZhbHNlCisgICAgICAgIHNlbGYuX2xvY2sucmVsZWFzZSgpCisKKyAgICBkZWYgdGFrZV9hbGwo
c2VsZik6CisgICAgICAgIHNlbGYuX2xvY2suYWNxdWlyZSgpCisgICAgICAgIG1lc3NhZ2VzID0g
c2VsZi5fbWVzc2FnZXMKKyAgICAgICAgaXNfcnVubmluZyA9IHNlbGYuX2lzX3J1bm5pbmcKKyAg
ICAgICAgc2VsZi5fbWVzc2FnZXMgPSBbXQorICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2UoKQor
ICAgICAgICByZXR1cm4gKG1lc3NhZ2VzLCBpc19ydW5uaW5nKQorCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy90aHJlYWRlZG1lc3NhZ2VxdWV1ZV91bml0dGVz
dC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL3RocmVhZGVkbWVzc2FnZXF1
ZXVlX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0OTZj
NTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy90
aHJlYWRlZG1lc3NhZ2VxdWV1ZV91bml0dGVzdC5weQpAQCAtMCwwICsxLDUyIEBACisjIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHdlYmtpdHB5LmlyYy50aHJlYWRlZG1lc3Nh
Z2VxdWV1ZSBpbXBvcnQgVGhyZWFkZWRNZXNzYWdlUXVldWUKKworY2xhc3MgVGhyZWFkZWRNZXNz
YWdlUXVldWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Jhc2ljKHNl
bGYpOgorICAgICAgICBxdWV1ZSA9IFRocmVhZGVkTWVzc2FnZVF1ZXVlKCkKKyAgICAgICAgcXVl
dWUucG9zdCgiSGVsbG8iKQorICAgICAgICBxdWV1ZS5wb3N0KCJUaGVyZSIpCisgICAgICAgICht
ZXNzYWdlcywgaXNfcnVubmluZykgPSBxdWV1ZS50YWtlX2FsbCgpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobWVzc2FnZXMsIFsiSGVsbG8iLCAiVGhlcmUiXSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGlzX3J1bm5pbmcpCisgICAgICAgIChtZXNzYWdlcywgaXNfcnVubmluZykgPSBxdWV1
ZS50YWtlX2FsbCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVzc2FnZXMsIFtdKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUoaXNfcnVubmluZykKKyAgICAgICAgcXVldWUucG9zdCgiTW9y
ZSIpCisgICAgICAgIHF1ZXVlLnN0b3AoKQorICAgICAgICBxdWV1ZS5wb3N0KCJNZXNzYWdlcyIp
CisgICAgICAgIChtZXNzYWdlcywgaXNfcnVubmluZykgPSBxdWV1ZS50YWtlX2FsbCgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVzc2FnZXMsIFsiTW9yZSIsICJNZXNzYWdlcyJdKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX3J1bm5pbmcpCisgICAgICAgIChtZXNzYWdlcywgaXNf
cnVubmluZykgPSBxdWV1ZS50YWtlX2FsbCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVz
c2FnZXMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX3J1bm5pbmcpCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy91bml0dGVzdHMucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy91bml0dGVzdHMucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMTE1YzA2OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL3VuaXR0ZXN0cy5weQpAQCAtMCwwICsxLDM0IEBACisj
IENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworIiIiUnVucyBpcmMgcGFja2FnZSB1bml0IHRlc3RzLiIiIgorCisj
IFRoaXMgbW9kdWxlIGlzIGltcG9ydGVkIGJ5IHRoZSBtb2R1bGUgdGhhdCBpbXBvcnRzIGFsbCB3
ZWJraXRweSB1bml0IHRlc3RzLgorCitmcm9tIHdlYmtpdHB5LmlyYy5tZXNzYWdlcHVtcF91bml0
dGVzdCBpbXBvcnQgKgorZnJvbSB3ZWJraXRweS5pcmMudGhyZWFkZWRtZXNzYWdlcXVldWVfdW5p
dHRlc3QgaW1wb3J0ICoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9hdXRvaW5zdGFsbGVkL19faW5pdF9fLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90aGlyZHBhcnR5L2F1dG9pbnN0YWxsZWQvX19pbml0X18ucHkKaW5kZXggZjcz
OWFkZC4uMTNkZTBmMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L2F1dG9pbnN0YWxsZWQvX19pbml0X18ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90aGlyZHBhcnR5L2F1dG9pbnN0YWxsZWQvX19pbml0X18ucHkKQEAgLTYs
NiArNiwxMCBAQCBpbXBvcnQgd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbCBhcyBhdXRv
aW5zdGFsbAogIyBkb3dubG9hZGVkLgogYXV0b2luc3RhbGwuYmluZCgiQ2xpZW50Rm9ybSIsICJo
dHRwOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9DL0NsaWVudEZvcm0vQ2xpZW50
Rm9ybS0wLjIuMTAuemlwIiwgIkNsaWVudEZvcm0tMC4yLjEwIikKIGF1dG9pbnN0YWxsLmJpbmQo
Im1lY2hhbml6ZSIsICJodHRwOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9tL21l
Y2hhbml6ZS9tZWNoYW5pemUtMC4xLjExLnppcCIsICJtZWNoYW5pemUtMC4xLjExIikKKyMgV2Ug
aW1wb3J0IGJvdGggaXJjbGliIGFuZCBpcmNib3QgYmVjYXVzZSBpcmNsaWIgaGFzIHR3byB0b3At
bGV2ZWwgcGFja2FnZXMuCithdXRvaW5zdGFsbC5iaW5kKCJpcmNsaWIiLCAiaHR0cDovL2l3ZWIu
ZGwuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvcHl0aG9uLWlyY2xpYi9weXRob24taXJjbGliLzAu
NC44L3B5dGhvbi1pcmNsaWItMC40LjguemlwIiwgInB5dGhvbi1pcmNsaWItMC40LjgiKQorYXV0
b2luc3RhbGwuYmluZCgiaXJjYm90IiwgImh0dHA6Ly9pd2ViLmRsLnNvdXJjZWZvcmdlLm5ldC9w
cm9qZWN0L3B5dGhvbi1pcmNsaWIvcHl0aG9uLWlyY2xpYi8wLjQuOC9weXRob24taXJjbGliLTAu
NC44LnppcCIsICJweXRob24taXJjbGliLTAuNC44IikKIAogZnJvbSBtZWNoYW5pemUgaW1wb3J0
IEJyb3dzZXIKIGZyb20gbWVjaGFuaXplIGltcG9ydCBIVFRQRXJyb3IKK2ltcG9ydCBpcmNib3QK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdW5pdHRlc3RzLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS91bml0dGVzdHMucHkKaW5kZXggOTk2ZGFiMi4u
ODM5NGE3YiAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS91bml0dGVz
dHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS91bml0dGVzdHMucHkKQEAg
LTQ1LDYgKzQ1LDcgQEAgZnJvbSB3ZWJraXRweS5jcmVkZW50aWFsc191bml0dGVzdCBpbXBvcnQg
KgogZnJvbSB3ZWJraXRweS5kaWZmX3BhcnNlcl91bml0dGVzdCBpbXBvcnQgKgogZnJvbSB3ZWJr
aXRweS5leGVjdXRpdmVfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkuZ3JhbW1hcl91
bml0dGVzdCBpbXBvcnQgKgorZnJvbSB3ZWJraXRweS5pcmMudW5pdHRlc3RzIGltcG9ydCAqCiBm
cm9tIHdlYmtpdHB5LmluaXQudW5pdHRlc3RzIGltcG9ydCAqICAjIGZvciB0aGUgd2Via2l0cHku
aW5pdCBwYWNrYWdlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0Lm1hY191bml0dGVz
dCBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS5tdWx0aWNvbW1hbmR0b29sX3VuaXR0ZXN0IGltcG9y
dCAqCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50953</attachid>
            <date>2010-03-17 13:48:58 -0700</date>
            <delta_ts>2010-03-17 13:50:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36235-20100317134856.patch</filename>
            <type>text/plain</type>
            <size>22769</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlMmZjZjJhLi5jOWY4NWMxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDMt
MTcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB3YXkgZm9yIHRoZSBib3RzIHRvIHNl
bmQgbWVzc2FnZXMgdG8gSVJDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNjIzNQorCisgICAgICAgIFdlJ2xsIHVzZSB0aGVzZSBjbGFzc2VzIHRvIG5v
dGlmeSAjd2Via2l0IGFib3V0IGJhZCBTVk4gcmV2aXNpb25zLgorICAgICAgICBUaGlzIHBhdGNo
IGp1c3QgaGFzIHNvbWUgc2tlbGV0b24gY29kZSBmb3IgdXMgdG8gcGxheSB3aXRoLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9pcmMvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvaXJjL2lyY2JvdC5weTogQWRkZWQuCisgICAgICAgICAgICBBIGJv
dCB0aGF0IGtub3dzIGhvdyB0byB0YWxrIHRvIElSQy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2lyYy9pcmNwcm94eS5weTogQWRkZWQuCisgICAgICAgICAgICBXZSBuZWVkIHRvIHJ1biB0
aGUgYm90IG9uIGl0cyBvd24gdGhyZWFkIGJlY2F1c2UgdGhlIGlyY2xpYiBuZWVkcworICAgICAg
ICAgICAgaXRzIG93biBtYWlubG9vcC4gIFRoaXMgY2xhc3MgcHJvdmlkZXMgYW4gYWJzdHJhY3Rp
b24gb2YgdGhlCisgICAgICAgICAgICB0aHJlYWRpbmcuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9pcmMvbWVzc2FnZXB1bXAucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvaXJjL21lc3NhZ2VwdW1wX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2lyYy90aHJlYWRlZG1lc3NhZ2VxdWV1ZS5weTogQWRkZWQuCisgICAgICAgICAg
ICBBIHRocmVhZC1zYWZlIG1lc3NhZ2UgcXVldWUgZm9yIHNlbmRpbmcgbWVzc2FnZXMgZnJvbSB0
aGUgbWFpbgorICAgICAgICAgICAgdGhyZWFkIHRvIHRoZSBJUkMgdGhyZWFkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvaXJjL3RocmVhZGVkbWVzc2FnZXF1ZXVlX3VuaXR0ZXN0LnB5OiBB
ZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2lyYy91bml0dGVzdHMucHk6IEFkZGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9hdXRvaW5zdGFsbGVkL19f
aW5pdF9fLnB5OgorICAgICAgICAgICAgQXV0b2luc3RhbGwgaXJjbGliCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS91bml0dGVzdHMucHk6CisKIDIwMTAtMDMtMTcgIFpvbHRhbiBIb3J2YXRo
ICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy9fX2luaXRfXy5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL19faW5pdF9fLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNjViZWUKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBA
CisjIFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1
bGUgZmlsZXMKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL2ly
Y2JvdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL2lyY2JvdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjBhYjllCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMvaXJjYm90LnB5CkBAIC0wLDAgKzEs
NjMgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmli
dXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LmlyYy5tZXNzYWdlcHVtcCBp
bXBvcnQgTWVzc2FnZVB1bXAsIE1lc3NhZ2VQdW1wRGVsZWdhdGUKK2Zyb20gd2Via2l0cHkudGhp
cmRwYXJ0eS5hdXRvaW5zdGFsbGVkIGltcG9ydCBpcmNib3QKKworCitjbGFzcyBJUkNCb3QoaXJj
Ym90LlNpbmdsZVNlcnZlcklSQ0JvdCwgTWVzc2FnZVB1bXBEZWxlZ2F0ZSk6CisgICAgIyBGSVhN
RTogV2Ugc2hvdWxkIGdldCB0aGlzIGluZm9ybWF0aW9uIGZyb20gYSBjb25maWcgZmlsZS4KKyAg
ICBkZWYgX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAgbWVzc2FnZV9xdWV1ZSwKKyAg
ICAgICAgICAgICAgICAgc2VydmVyPSJpcmMuZnJlZW5vZGUubmV0IiwKKyAgICAgICAgICAgICAg
ICAgcG9ydD02NjY3LAorICAgICAgICAgICAgICAgICBuaWNrbmFtZT0id2Via2l0LXNtb2tleSIs
CisgICAgICAgICAgICAgICAgIGNoYW5uZWw9IiN3ZWJraXQtdGVzdCIpOgorICAgICAgICBzZWxm
Ll9tZXNzYWdlX3F1ZXVlID0gbWVzc2FnZV9xdWV1ZQorICAgICAgICBpcmNib3QuU2luZ2xlU2Vy
dmVySVJDQm90Ll9faW5pdF9fKHNlbGYsIFsoc2VydmVyLCBwb3J0KV0sIG5pY2tuYW1lLCBuaWNr
bmFtZSkKKyAgICAgICAgc2VsZi5fY2hhbm5lbCA9IGNoYW5uZWwKKworICAgICMgaXJjYm90LlNp
bmdsZVNlcnZlcklSQ0JvdCBtZXRob2RzCisKKyAgICBkZWYgb25fbmlja25hbWVpbnVzZShzZWxm
LCBjb25uZWN0aW9uLCBldmVudCk6CisgICAgICAgIGNvbm5lY3Rpb24ubmljayhjb25uZWN0aW9u
LmdldF9uaWNrbmFtZSgpICsgIl8iKQorCisgICAgZGVmIG9uX3dlbGNvbWUoc2VsZiwgY29ubmVj
dGlvbiwgZXZlbnQpOgorICAgICAgICBjb25uZWN0aW9uLmpvaW4oc2VsZi5fY2hhbm5lbCkKKyAg
ICAgICAgc2VsZi5fbWVzc2FnZV9wdW1wID0gTWVzc2FnZVB1bXAoc2VsZiwgc2VsZi5fbWVzc2Fn
ZV9xdWV1ZSkKKworICAgICMgTWVzc2FnZVB1bXBEZWxlZ2F0ZSBtZXRob2RzCisKKyAgICBkZWYg
c2NoZWR1bGUoc2VsZiwgaW50ZXJ2YWwsIGNhbGxiYWNrKToKKyAgICAgICAgc2VsZi5jb25uZWN0
aW9uLmV4ZWN1dGVfZGVsYXllZChpbnRlcnZhbCwgY2FsbGJhY2spCisKKyAgICBkZWYgbWVzc2Fn
ZV9hdmFpbGFibGUoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHNlbGYuY29ubmVjdGlvbi5wcml2
bXNnKHNlbGYuX2NoYW5uZWwsIG1lc3NhZ2UpCisKKyAgICBkZWYgZmluYWxfbWVzc2FnZV9kZWxp
dmVyZWQoc2VsZik6CisgICAgICAgIHNlbGYuZGllKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvaXJjL2lyY3Byb3h5LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9pcmMvaXJjcHJveHkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNGE1NzEwZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvaXJjL2lyY3Byb3h5LnB5CkBAIC0wLDAgKzEsNTggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitp
bXBvcnQgdGhyZWFkaW5nCisKK2Zyb20gd2Via2l0cHkuaXJjLmlyY2JvdCBpbXBvcnQgSVJDQm90
Citmcm9tIHdlYmtpdHB5LmlyYy50aHJlYWRlZG1lc3NhZ2VxdWV1ZSBpbXBvcnQgVGhyZWFkZWRN
ZXNzYWdlUXVldWUKKworY2xhc3MgX0lSQ1RocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZV9xdWV1ZSwgYm90X2NsYXNzKToKKyAgICAgICAgdGhy
ZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQorICAgICAgICBzZWxmLnNldERhZW1vbihUcnVl
KQorICAgICAgICBzZWxmLl9tZXNzYWdlX3F1ZXVlID0gbWVzc2FnZV9xdWV1ZQorICAgICAgICBz
ZWxmLl9ib3RfY2xhc3MgPSBib3RfY2xhc3MKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAg
IGJvdCA9IHNlbGYuX2JvdF9jbGFzcyhzZWxmLl9tZXNzYWdlX3F1ZXVlKQorICAgICAgICBib3Qu
c3RhcnQoKQorCisKK2NsYXNzIElSQ1Byb3h5KG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGJvdF9jbGFzcz1JUkNCb3QpOgorICAgICAgICBzZWxmLl9tZXNzYWdlX3F1ZXVlID0gVGhy
ZWFkZWRNZXNzYWdlUXVldWUoKQorICAgICAgICBzZWxmLl9jaGlsZF90aHJlYWQgPSBfSVJDVGhy
ZWFkKHNlbGYuX21lc3NhZ2VfcXVldWUsIGJvdF9jbGFzcykKKyAgICAgICAgc2VsZi5fY2hpbGRf
dGhyZWFkLnN0YXJ0KCkKKworICAgIGRlZiBwb3N0KHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICBz
ZWxmLl9tZXNzYWdlX3F1ZXVlLnBvc3QobWVzc2FnZSkKKworICAgIGRlZiBkaXNjb25uZWN0KHNl
bGYpOgorICAgICAgICBzZWxmLl9tZXNzYWdlX3F1ZXVlLnN0b3AoKQorICAgICAgICBzZWxmLl9j
aGlsZF90aHJlYWQuam9pbigpCisKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvaXJjL21lc3NhZ2VwdW1wLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9p
cmMvbWVzc2FnZXB1bXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUz
OTI4NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJj
L21lc3NhZ2VwdW1wLnB5CkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2Ns
YXNzIE1lc3NhZ2VQdW1wRGVsZWdhdGUob2JqZWN0KToKKyAgICBkZWYgc2NoZWR1bGUoc2VsZiwg
aW50ZXJ2YWwsIGNhbGxiYWNrKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwg
InN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCisKKyAgICBkZWYgbWVzc2FnZV9hdmFpbGFibGUo
c2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJj
bGFzc2VzIG11c3QgaW1wbGVtZW50IgorCisgICAgZGVmIGZpbmFsX21lc3NhZ2VfZGVsaXZlcmVk
KHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBt
dXN0IGltcGxlbWVudCIKKworCitjbGFzcyBNZXNzYWdlUHVtcChvYmplY3QpOgorICAgIGludGVy
dmFsID0gMTAgIyBzZWNvbmRzCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGVsZWdhdGUsIG1l
c3NhZ2VfcXVldWUpOgorICAgICAgICBzZWxmLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlCisgICAgICAg
IHNlbGYuX21lc3NhZ2VfcXVldWUgPSBtZXNzYWdlX3F1ZXVlCisgICAgICAgIHNlbGYuX3NjaGVk
dWxlKCkKKworICAgIGRlZiBfc2NoZWR1bGUoc2VsZik6CisgICAgICAgIHNlbGYuX2RlbGVnYXRl
LnNjaGVkdWxlKHNlbGYuaW50ZXJ2YWwsIHNlbGYuX2NhbGxiYWNrKQorCisgICAgZGVmIF9jYWxs
YmFjayhzZWxmKToKKyAgICAgICAgKG1lc3NhZ2VzLCBpc19ydW5uaW5nKSA9IHNlbGYuX21lc3Nh
Z2VfcXVldWUudGFrZV9hbGwoKQorICAgICAgICBmb3IgbWVzc2FnZSBpbiBtZXNzYWdlczoKKyAg
ICAgICAgICAgIHNlbGYuX2RlbGVnYXRlLm1lc3NhZ2VfYXZhaWxhYmxlKG1lc3NhZ2UpCisgICAg
ICAgIGlmIG5vdCBpc19ydW5uaW5nOgorICAgICAgICAgICAgc2VsZi5fZGVsZWdhdGUuZmluYWxf
bWVzc2FnZV9kZWxpdmVyZWQoKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuX3Nj
aGVkdWxlKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL21l
c3NhZ2VwdW1wX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMv
bWVzc2FnZXB1bXBfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMTMzYWI4ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvaXJjL21lc3NhZ2VwdW1wX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsODIgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gd2Via2l0cHkuaXJjLm1lc3NhZ2VwdW1wIGlt
cG9ydCBNZXNzYWdlUHVtcCwgTWVzc2FnZVB1bXBEZWxlZ2F0ZQorZnJvbSB3ZWJraXRweS5pcmMu
dGhyZWFkZWRtZXNzYWdlcXVldWUgaW1wb3J0IFRocmVhZGVkTWVzc2FnZVF1ZXVlCisKKworY2xh
c3MgVGVzdERlbGVnYXRlKE1lc3NhZ2VQdW1wRGVsZWdhdGUpOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmKToKKyAgICAgICAgc2VsZi5sb2cgPSBbXQorCisgICAgZGVmIHNjaGVkdWxlKHNlbGYsIGlu
dGVydmFsLCBjYWxsYmFjayk6CisgICAgICAgIHNlbGYuY2FsbGJhY2sgPSBjYWxsYmFjaworICAg
ICAgICBzZWxmLmxvZy5hcHBlbmQoInNjaGVkdWxlIikKKworICAgIGRlZiBtZXNzYWdlX2F2YWls
YWJsZShzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgc2VsZi5sb2cuYXBwZW5kKCJtZXNzYWdlX2F2
YWlsYWJsZTogJXMiICUgbWVzc2FnZSkKKworICAgIGRlZiBmaW5hbF9tZXNzYWdlX2RlbGl2ZXJl
ZChzZWxmKToKKyAgICAgICAgc2VsZi5sb2cuYXBwZW5kKCJmaW5hbF9tZXNzYWdlX2RlbGl2ZXJl
ZCIpCisKKworY2xhc3MgTWVzc2FnZVB1bXBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAg
IGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBxdWV1ZSA9IFRocmVhZGVkTWVzc2FnZVF1
ZXVlKCkKKyAgICAgICAgZGVsZWdhdGUgPSBUZXN0RGVsZWdhdGUoKQorICAgICAgICBwdW1wID0g
TWVzc2FnZVB1bXAoZGVsZWdhdGUsIHF1ZXVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRl
bGVnYXRlLmxvZywgWworICAgICAgICAgICAgJ3NjaGVkdWxlJworICAgICAgICBdKQorICAgICAg
ICBkZWxlZ2F0ZS5jYWxsYmFjaygpCisgICAgICAgIHF1ZXVlLnBvc3QoIkhlbGxvIikKKyAgICAg
ICAgcXVldWUucG9zdCgiVGhlcmUiKQorICAgICAgICBkZWxlZ2F0ZS5jYWxsYmFjaygpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVsZWdhdGUubG9nLCBbCisgICAgICAgICAgICAnc2NoZWR1
bGUnLAorICAgICAgICAgICAgJ3NjaGVkdWxlJywKKyAgICAgICAgICAgICdtZXNzYWdlX2F2YWls
YWJsZTogSGVsbG8nLAorICAgICAgICAgICAgJ21lc3NhZ2VfYXZhaWxhYmxlOiBUaGVyZScsCisg
ICAgICAgICAgICAnc2NoZWR1bGUnCisgICAgICAgIF0pCisgICAgICAgIHF1ZXVlLnBvc3QoIk1v
cmUiKQorICAgICAgICBxdWV1ZS5wb3N0KCJNZXNzYWdlcyIpCisgICAgICAgIHF1ZXVlLnN0b3Ao
KQorICAgICAgICBkZWxlZ2F0ZS5jYWxsYmFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZGVsZWdhdGUubG9nLCBbCisgICAgICAgICAgICAnc2NoZWR1bGUnLAorICAgICAgICAgICAgJ3Nj
aGVkdWxlJywKKyAgICAgICAgICAgICdtZXNzYWdlX2F2YWlsYWJsZTogSGVsbG8nLAorICAgICAg
ICAgICAgJ21lc3NhZ2VfYXZhaWxhYmxlOiBUaGVyZScsCisgICAgICAgICAgICAnc2NoZWR1bGUn
LAorICAgICAgICAgICAgJ21lc3NhZ2VfYXZhaWxhYmxlOiBNb3JlJywKKyAgICAgICAgICAgICdt
ZXNzYWdlX2F2YWlsYWJsZTogTWVzc2FnZXMnLAorICAgICAgICAgICAgJ2ZpbmFsX21lc3NhZ2Vf
ZGVsaXZlcmVkJworICAgICAgICBdKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9pcmMvdGhyZWFkZWRtZXNzYWdlcXVldWUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2lyYy90aHJlYWRlZG1lc3NhZ2VxdWV1ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi42Y2I2ZjhjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9pcmMvdGhyZWFkZWRtZXNzYWdlcXVldWUucHkKQEAgLTAsMCArMSw1
NSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB0aHJlYWRpbmcKKworCitjbGFzcyBUaHJl
YWRlZE1lc3NhZ2VRdWV1ZShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAg
ICAgc2VsZi5fbWVzc2FnZXMgPSBbXQorICAgICAgICBzZWxmLl9pc19ydW5uaW5nID0gVHJ1ZQor
ICAgICAgICBzZWxmLl9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorCisgICAgZGVmIHBvc3Qoc2Vs
ZiwgbWVzc2FnZSk6CisgICAgICAgIHNlbGYuX2xvY2suYWNxdWlyZSgpCisgICAgICAgIHNlbGYu
X21lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQorICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2UoKQor
CisgICAgZGVmIHN0b3Aoc2VsZik6CisgICAgICAgIHNlbGYuX2xvY2suYWNxdWlyZSgpCisgICAg
ICAgIHNlbGYuX2lzX3J1bm5pbmcgPSBGYWxzZQorICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2Uo
KQorCisgICAgZGVmIHRha2VfYWxsKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2NrLmFjcXVpcmUo
KQorICAgICAgICBtZXNzYWdlcyA9IHNlbGYuX21lc3NhZ2VzCisgICAgICAgIGlzX3J1bm5pbmcg
PSBzZWxmLl9pc19ydW5uaW5nCisgICAgICAgIHNlbGYuX21lc3NhZ2VzID0gW10KKyAgICAgICAg
c2VsZi5fbG9jay5yZWxlYXNlKCkKKyAgICAgICAgcmV0dXJuIChtZXNzYWdlcywgaXNfcnVubmlu
ZykKKwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMvdGhyZWFk
ZWRtZXNzYWdlcXVldWVfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2lyYy90aHJlYWRlZG1lc3NhZ2VxdWV1ZV91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zNDk2YzUxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9pcmMvdGhyZWFkZWRtZXNzYWdlcXVldWVfdW5pdHRlc3QucHkKQEAg
LTAsMCArMSw1MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB3ZWJr
aXRweS5pcmMudGhyZWFkZWRtZXNzYWdlcXVldWUgaW1wb3J0IFRocmVhZGVkTWVzc2FnZVF1ZXVl
CisKK2NsYXNzIFRocmVhZGVkTWVzc2FnZVF1ZXVlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisK
KyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgcXVldWUgPSBUaHJlYWRlZE1lc3Nh
Z2VRdWV1ZSgpCisgICAgICAgIHF1ZXVlLnBvc3QoIkhlbGxvIikKKyAgICAgICAgcXVldWUucG9z
dCgiVGhlcmUiKQorICAgICAgICAobWVzc2FnZXMsIGlzX3J1bm5pbmcpID0gcXVldWUudGFrZV9h
bGwoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lc3NhZ2VzLCBbIkhlbGxvIiwgIlRoZXJl
Il0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19ydW5uaW5nKQorICAgICAgICAobWVzc2Fn
ZXMsIGlzX3J1bm5pbmcpID0gcXVldWUudGFrZV9hbGwoKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG1lc3NhZ2VzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX3J1bm5pbmcpCisg
ICAgICAgIHF1ZXVlLnBvc3QoIk1vcmUiKQorICAgICAgICBxdWV1ZS5zdG9wKCkKKyAgICAgICAg
cXVldWUucG9zdCgiTWVzc2FnZXMiKQorICAgICAgICAobWVzc2FnZXMsIGlzX3J1bm5pbmcpID0g
cXVldWUudGFrZV9hbGwoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lc3NhZ2VzLCBbIk1v
cmUiLCAiTWVzc2FnZXMiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19ydW5uaW5nKQor
ICAgICAgICAobWVzc2FnZXMsIGlzX3J1bm5pbmcpID0gcXVldWUudGFrZV9hbGwoKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG1lc3NhZ2VzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShpc19ydW5uaW5nKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9p
cmMvdW5pdHRlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMvdW5pdHRl
c3RzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNWMwNjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy91bml0dGVzdHMu
cHkKQEAgLTAsMCArMSwzNCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlJ1bnMgaXJjIHBhY2th
Z2UgdW5pdCB0ZXN0cy4iIiIKKworIyBUaGlzIG1vZHVsZSBpcyBpbXBvcnRlZCBieSB0aGUgbW9k
dWxlIHRoYXQgaW1wb3J0cyBhbGwgd2Via2l0cHkgdW5pdCB0ZXN0cy4KKworZnJvbSB3ZWJraXRw
eS5pcmMubWVzc2FnZXB1bXBfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkuaXJjLnRo
cmVhZGVkbWVzc2FnZXF1ZXVlX3VuaXR0ZXN0IGltcG9ydCAqCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvYXV0b2luc3RhbGxlZC9fX2luaXRfXy5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9hdXRvaW5zdGFsbGVk
L19faW5pdF9fLnB5CmluZGV4IGY3MzlhZGQuLjEzZGUwZjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9hdXRvaW5zdGFsbGVkL19faW5pdF9fLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9hdXRvaW5zdGFs
bGVkL19faW5pdF9fLnB5CkBAIC02LDYgKzYsMTAgQEAgaW1wb3J0IHdlYmtpdHB5LnRoaXJkcGFy
dHkuYXV0b2luc3RhbGwgYXMgYXV0b2luc3RhbGwKICMgZG93bmxvYWRlZC4KIGF1dG9pbnN0YWxs
LmJpbmQoIkNsaWVudEZvcm0iLCAiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3Vy
Y2UvQy9DbGllbnRGb3JtL0NsaWVudEZvcm0tMC4yLjEwLnppcCIsICJDbGllbnRGb3JtLTAuMi4x
MCIpCiBhdXRvaW5zdGFsbC5iaW5kKCJtZWNoYW5pemUiLCAiaHR0cDovL3B5cGkucHl0aG9uLm9y
Zy9wYWNrYWdlcy9zb3VyY2UvbS9tZWNoYW5pemUvbWVjaGFuaXplLTAuMS4xMS56aXAiLCAibWVj
aGFuaXplLTAuMS4xMSIpCisjIFdlIGltcG9ydCBib3RoIGlyY2xpYiBhbmQgaXJjYm90IGJlY2F1
c2UgaXJjbGliIGhhcyB0d28gdG9wLWxldmVsIHBhY2thZ2VzLgorYXV0b2luc3RhbGwuYmluZCgi
aXJjbGliIiwgImh0dHA6Ly9pd2ViLmRsLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3B5dGhvbi1p
cmNsaWIvcHl0aG9uLWlyY2xpYi8wLjQuOC9weXRob24taXJjbGliLTAuNC44LnppcCIsICJweXRo
b24taXJjbGliLTAuNC44IikKK2F1dG9pbnN0YWxsLmJpbmQoImlyY2JvdCIsICJodHRwOi8vaXdl
Yi5kbC5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9weXRob24taXJjbGliL3B5dGhvbi1pcmNsaWIv
MC40LjgvcHl0aG9uLWlyY2xpYi0wLjQuOC56aXAiLCAicHl0aG9uLWlyY2xpYi0wLjQuOCIpCiAK
IGZyb20gbWVjaGFuaXplIGltcG9ydCBCcm93c2VyCiBmcm9tIG1lY2hhbml6ZSBpbXBvcnQgSFRU
UEVycm9yCitpbXBvcnQgaXJjYm90CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3VuaXR0ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdW5pdHRl
c3RzLnB5CmluZGV4IDk5NmRhYjIuLjgzOTRhN2IgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdW5pdHRlc3RzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdW5pdHRlc3RzLnB5CkBAIC00NSw2ICs0NSw3IEBAIGZyb20gd2Via2l0cHkuY3JlZGVu
dGlhbHNfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkuZGlmZl9wYXJzZXJfdW5pdHRl
c3QgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkuZXhlY3V0aXZlX3VuaXR0ZXN0IGltcG9ydCAqCiBm
cm9tIHdlYmtpdHB5LmdyYW1tYXJfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkuaXJj
LnVuaXR0ZXN0cyBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS5pbml0LnVuaXR0ZXN0cyBpbXBvcnQg
KiAgIyBmb3IgdGhlIHdlYmtpdHB5LmluaXQgcGFja2FnZQogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMucG9ydC5tYWNfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkubXVsdGljb21t
YW5kdG9vbF91bml0dGVzdCBpbXBvcnQgKgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50954</attachid>
            <date>2010-03-17 13:50:49 -0700</date>
            <delta_ts>2010-03-17 13:52:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-36235-20100317135048.patch</filename>
            <type>text/plain</type>
            <size>22766</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlMmZjZjJhLi5hNDczNjZkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDMt
MTcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KKworICAgICAgICBBZGQgYSB3YXkgZm9yIHRoZSBib3RzIHRvIHNlbmQg
bWVzc2FnZXMgdG8gSVJDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNjIzNQorCisgICAgICAgIFdlJ2xsIHVzZSB0aGVzZSBjbGFzc2VzIHRvIG5vdGlm
eSAjd2Via2l0IGFib3V0IGJhZCBTVk4gcmV2aXNpb25zLgorICAgICAgICBUaGlzIHBhdGNoIGp1
c3QgaGFzIHNvbWUgc2tlbGV0b24gY29kZSBmb3IgdXMgdG8gcGxheSB3aXRoLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9pcmMvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvaXJjL2lyY2JvdC5weTogQWRkZWQuCisgICAgICAgICAgICBBIGJvdCB0
aGF0IGtub3dzIGhvdyB0byB0YWxrIHRvIElSQy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2lyYy9pcmNwcm94eS5weTogQWRkZWQuCisgICAgICAgICAgICBXZSBuZWVkIHRvIHJ1biB0aGUg
Ym90IG9uIGl0cyBvd24gdGhyZWFkIGJlY2F1c2UgdGhlIGlyY2xpYiBuZWVkcworICAgICAgICAg
ICAgaXRzIG93biBtYWlubG9vcC4gIFRoaXMgY2xhc3MgcHJvdmlkZXMgYW4gYWJzdHJhY3Rpb24g
b2YgdGhlCisgICAgICAgICAgICB0aHJlYWRpbmcuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9pcmMvbWVzc2FnZXB1bXAucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
aXJjL21lc3NhZ2VwdW1wX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2lyYy90aHJlYWRlZG1lc3NhZ2VxdWV1ZS5weTogQWRkZWQuCisgICAgICAgICAgICBB
IHRocmVhZC1zYWZlIG1lc3NhZ2UgcXVldWUgZm9yIHNlbmRpbmcgbWVzc2FnZXMgZnJvbSB0aGUg
bWFpbgorICAgICAgICAgICAgdGhyZWFkIHRvIHRoZSBJUkMgdGhyZWFkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvaXJjL3RocmVhZGVkbWVzc2FnZXF1ZXVlX3VuaXR0ZXN0LnB5OiBBZGRl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2lyYy91bml0dGVzdHMucHk6IEFkZGVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9hdXRvaW5zdGFsbGVkL19faW5p
dF9fLnB5OgorICAgICAgICAgICAgQXV0b2luc3RhbGwgaXJjbGliCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS91bml0dGVzdHMucHk6CisKIDIwMTAtMDMtMTcgIFpvbHRhbiBIb3J2YXRoICA8
em9sdGFuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy9fX2luaXRfXy5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNjViZWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACisj
IFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGUg
ZmlsZXMKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL2lyY2Jv
dC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL2lyY2JvdC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjBhYjllCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMvaXJjYm90LnB5CkBAIC0wLDAgKzEsNjMg
QEAKKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LmlyYy5tZXNzYWdlcHVtcCBpbXBv
cnQgTWVzc2FnZVB1bXAsIE1lc3NhZ2VQdW1wRGVsZWdhdGUKK2Zyb20gd2Via2l0cHkudGhpcmRw
YXJ0eS5hdXRvaW5zdGFsbGVkIGltcG9ydCBpcmNib3QKKworCitjbGFzcyBJUkNCb3QoaXJjYm90
LlNpbmdsZVNlcnZlcklSQ0JvdCwgTWVzc2FnZVB1bXBEZWxlZ2F0ZSk6CisgICAgIyBGSVhNRTog
V2Ugc2hvdWxkIGdldCB0aGlzIGluZm9ybWF0aW9uIGZyb20gYSBjb25maWcgZmlsZS4KKyAgICBk
ZWYgX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAgbWVzc2FnZV9xdWV1ZSwKKyAgICAg
ICAgICAgICAgICAgc2VydmVyPSJpcmMuZnJlZW5vZGUubmV0IiwKKyAgICAgICAgICAgICAgICAg
cG9ydD02NjY3LAorICAgICAgICAgICAgICAgICBuaWNrbmFtZT0id2Via2l0LXNtb2tleSIsCisg
ICAgICAgICAgICAgICAgIGNoYW5uZWw9IiN3ZWJraXQtdGVzdCIpOgorICAgICAgICBzZWxmLl9t
ZXNzYWdlX3F1ZXVlID0gbWVzc2FnZV9xdWV1ZQorICAgICAgICBpcmNib3QuU2luZ2xlU2VydmVy
SVJDQm90Ll9faW5pdF9fKHNlbGYsIFsoc2VydmVyLCBwb3J0KV0sIG5pY2tuYW1lLCBuaWNrbmFt
ZSkKKyAgICAgICAgc2VsZi5fY2hhbm5lbCA9IGNoYW5uZWwKKworICAgICMgaXJjYm90LlNpbmds
ZVNlcnZlcklSQ0JvdCBtZXRob2RzCisKKyAgICBkZWYgb25fbmlja25hbWVpbnVzZShzZWxmLCBj
b25uZWN0aW9uLCBldmVudCk6CisgICAgICAgIGNvbm5lY3Rpb24ubmljayhjb25uZWN0aW9uLmdl
dF9uaWNrbmFtZSgpICsgIl8iKQorCisgICAgZGVmIG9uX3dlbGNvbWUoc2VsZiwgY29ubmVjdGlv
biwgZXZlbnQpOgorICAgICAgICBjb25uZWN0aW9uLmpvaW4oc2VsZi5fY2hhbm5lbCkKKyAgICAg
ICAgc2VsZi5fbWVzc2FnZV9wdW1wID0gTWVzc2FnZVB1bXAoc2VsZiwgc2VsZi5fbWVzc2FnZV9x
dWV1ZSkKKworICAgICMgTWVzc2FnZVB1bXBEZWxlZ2F0ZSBtZXRob2RzCisKKyAgICBkZWYgc2No
ZWR1bGUoc2VsZiwgaW50ZXJ2YWwsIGNhbGxiYWNrKToKKyAgICAgICAgc2VsZi5jb25uZWN0aW9u
LmV4ZWN1dGVfZGVsYXllZChpbnRlcnZhbCwgY2FsbGJhY2spCisKKyAgICBkZWYgbWVzc2FnZV9h
dmFpbGFibGUoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHNlbGYuY29ubmVjdGlvbi5wcml2bXNn
KHNlbGYuX2NoYW5uZWwsIG1lc3NhZ2UpCisKKyAgICBkZWYgZmluYWxfbWVzc2FnZV9kZWxpdmVy
ZWQoc2VsZik6CisgICAgICAgIHNlbGYuZGllKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvaXJjL2lyY3Byb3h5LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9pcmMvaXJjcHJveHkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NGE1NzEwZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
aXJjL2lyY3Byb3h5LnB5CkBAIC0wLDAgKzEsNTggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBv
cnQgdGhyZWFkaW5nCisKK2Zyb20gd2Via2l0cHkuaXJjLmlyY2JvdCBpbXBvcnQgSVJDQm90Citm
cm9tIHdlYmtpdHB5LmlyYy50aHJlYWRlZG1lc3NhZ2VxdWV1ZSBpbXBvcnQgVGhyZWFkZWRNZXNz
YWdlUXVldWUKKworY2xhc3MgX0lSQ1RocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgbWVzc2FnZV9xdWV1ZSwgYm90X2NsYXNzKToKKyAgICAgICAgdGhyZWFk
aW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQorICAgICAgICBzZWxmLnNldERhZW1vbihUcnVlKQor
ICAgICAgICBzZWxmLl9tZXNzYWdlX3F1ZXVlID0gbWVzc2FnZV9xdWV1ZQorICAgICAgICBzZWxm
Ll9ib3RfY2xhc3MgPSBib3RfY2xhc3MKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgIGJv
dCA9IHNlbGYuX2JvdF9jbGFzcyhzZWxmLl9tZXNzYWdlX3F1ZXVlKQorICAgICAgICBib3Quc3Rh
cnQoKQorCisKK2NsYXNzIElSQ1Byb3h5KG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGJvdF9jbGFzcz1JUkNCb3QpOgorICAgICAgICBzZWxmLl9tZXNzYWdlX3F1ZXVlID0gVGhyZWFk
ZWRNZXNzYWdlUXVldWUoKQorICAgICAgICBzZWxmLl9jaGlsZF90aHJlYWQgPSBfSVJDVGhyZWFk
KHNlbGYuX21lc3NhZ2VfcXVldWUsIGJvdF9jbGFzcykKKyAgICAgICAgc2VsZi5fY2hpbGRfdGhy
ZWFkLnN0YXJ0KCkKKworICAgIGRlZiBwb3N0KHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICBzZWxm
Ll9tZXNzYWdlX3F1ZXVlLnBvc3QobWVzc2FnZSkKKworICAgIGRlZiBkaXNjb25uZWN0KHNlbGYp
OgorICAgICAgICBzZWxmLl9tZXNzYWdlX3F1ZXVlLnN0b3AoKQorICAgICAgICBzZWxmLl9jaGls
ZF90aHJlYWQuam9pbigpCisKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvaXJjL21lc3NhZ2VwdW1wLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMv
bWVzc2FnZXB1bXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUzOTI4
NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL21l
c3NhZ2VwdW1wLnB5CkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2NsYXNz
IE1lc3NhZ2VQdW1wRGVsZWdhdGUob2JqZWN0KToKKyAgICBkZWYgc2NoZWR1bGUoc2VsZiwgaW50
ZXJ2YWwsIGNhbGxiYWNrKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1
YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCisKKyAgICBkZWYgbWVzc2FnZV9hdmFpbGFibGUoc2Vs
ZiwgbWVzc2FnZSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFz
c2VzIG11c3QgaW1wbGVtZW50IgorCisgICAgZGVmIGZpbmFsX21lc3NhZ2VfZGVsaXZlcmVkKHNl
bGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0
IGltcGxlbWVudCIKKworCitjbGFzcyBNZXNzYWdlUHVtcChvYmplY3QpOgorICAgIGludGVydmFs
ID0gMTAgIyBzZWNvbmRzCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGVsZWdhdGUsIG1lc3Nh
Z2VfcXVldWUpOgorICAgICAgICBzZWxmLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlCisgICAgICAgIHNl
bGYuX21lc3NhZ2VfcXVldWUgPSBtZXNzYWdlX3F1ZXVlCisgICAgICAgIHNlbGYuX3NjaGVkdWxl
KCkKKworICAgIGRlZiBfc2NoZWR1bGUoc2VsZik6CisgICAgICAgIHNlbGYuX2RlbGVnYXRlLnNj
aGVkdWxlKHNlbGYuaW50ZXJ2YWwsIHNlbGYuX2NhbGxiYWNrKQorCisgICAgZGVmIF9jYWxsYmFj
ayhzZWxmKToKKyAgICAgICAgKG1lc3NhZ2VzLCBpc19ydW5uaW5nKSA9IHNlbGYuX21lc3NhZ2Vf
cXVldWUudGFrZV9hbGwoKQorICAgICAgICBmb3IgbWVzc2FnZSBpbiBtZXNzYWdlczoKKyAgICAg
ICAgICAgIHNlbGYuX2RlbGVnYXRlLm1lc3NhZ2VfYXZhaWxhYmxlKG1lc3NhZ2UpCisgICAgICAg
IGlmIG5vdCBpc19ydW5uaW5nOgorICAgICAgICAgICAgc2VsZi5fZGVsZWdhdGUuZmluYWxfbWVz
c2FnZV9kZWxpdmVyZWQoKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuX3NjaGVk
dWxlKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvaXJjL21lc3Nh
Z2VwdW1wX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMvbWVz
c2FnZXB1bXBfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MTMzYWI4ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
aXJjL21lc3NhZ2VwdW1wX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsODIgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gd2Via2l0cHkuaXJjLm1lc3NhZ2VwdW1wIGltcG9y
dCBNZXNzYWdlUHVtcCwgTWVzc2FnZVB1bXBEZWxlZ2F0ZQorZnJvbSB3ZWJraXRweS5pcmMudGhy
ZWFkZWRtZXNzYWdlcXVldWUgaW1wb3J0IFRocmVhZGVkTWVzc2FnZVF1ZXVlCisKKworY2xhc3Mg
VGVzdERlbGVnYXRlKE1lc3NhZ2VQdW1wRGVsZWdhdGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
KToKKyAgICAgICAgc2VsZi5sb2cgPSBbXQorCisgICAgZGVmIHNjaGVkdWxlKHNlbGYsIGludGVy
dmFsLCBjYWxsYmFjayk6CisgICAgICAgIHNlbGYuY2FsbGJhY2sgPSBjYWxsYmFjaworICAgICAg
ICBzZWxmLmxvZy5hcHBlbmQoInNjaGVkdWxlIikKKworICAgIGRlZiBtZXNzYWdlX2F2YWlsYWJs
ZShzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgc2VsZi5sb2cuYXBwZW5kKCJtZXNzYWdlX2F2YWls
YWJsZTogJXMiICUgbWVzc2FnZSkKKworICAgIGRlZiBmaW5hbF9tZXNzYWdlX2RlbGl2ZXJlZChz
ZWxmKToKKyAgICAgICAgc2VsZi5sb2cuYXBwZW5kKCJmaW5hbF9tZXNzYWdlX2RlbGl2ZXJlZCIp
CisKKworY2xhc3MgTWVzc2FnZVB1bXBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRl
ZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBxdWV1ZSA9IFRocmVhZGVkTWVzc2FnZVF1ZXVl
KCkKKyAgICAgICAgZGVsZWdhdGUgPSBUZXN0RGVsZWdhdGUoKQorICAgICAgICBwdW1wID0gTWVz
c2FnZVB1bXAoZGVsZWdhdGUsIHF1ZXVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlbGVn
YXRlLmxvZywgWworICAgICAgICAgICAgJ3NjaGVkdWxlJworICAgICAgICBdKQorICAgICAgICBk
ZWxlZ2F0ZS5jYWxsYmFjaygpCisgICAgICAgIHF1ZXVlLnBvc3QoIkhlbGxvIikKKyAgICAgICAg
cXVldWUucG9zdCgiVGhlcmUiKQorICAgICAgICBkZWxlZ2F0ZS5jYWxsYmFjaygpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZGVsZWdhdGUubG9nLCBbCisgICAgICAgICAgICAnc2NoZWR1bGUn
LAorICAgICAgICAgICAgJ3NjaGVkdWxlJywKKyAgICAgICAgICAgICdtZXNzYWdlX2F2YWlsYWJs
ZTogSGVsbG8nLAorICAgICAgICAgICAgJ21lc3NhZ2VfYXZhaWxhYmxlOiBUaGVyZScsCisgICAg
ICAgICAgICAnc2NoZWR1bGUnCisgICAgICAgIF0pCisgICAgICAgIHF1ZXVlLnBvc3QoIk1vcmUi
KQorICAgICAgICBxdWV1ZS5wb3N0KCJNZXNzYWdlcyIpCisgICAgICAgIHF1ZXVlLnN0b3AoKQor
ICAgICAgICBkZWxlZ2F0ZS5jYWxsYmFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVs
ZWdhdGUubG9nLCBbCisgICAgICAgICAgICAnc2NoZWR1bGUnLAorICAgICAgICAgICAgJ3NjaGVk
dWxlJywKKyAgICAgICAgICAgICdtZXNzYWdlX2F2YWlsYWJsZTogSGVsbG8nLAorICAgICAgICAg
ICAgJ21lc3NhZ2VfYXZhaWxhYmxlOiBUaGVyZScsCisgICAgICAgICAgICAnc2NoZWR1bGUnLAor
ICAgICAgICAgICAgJ21lc3NhZ2VfYXZhaWxhYmxlOiBNb3JlJywKKyAgICAgICAgICAgICdtZXNz
YWdlX2F2YWlsYWJsZTogTWVzc2FnZXMnLAorICAgICAgICAgICAgJ2ZpbmFsX21lc3NhZ2VfZGVs
aXZlcmVkJworICAgICAgICBdKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9pcmMvdGhyZWFkZWRtZXNzYWdlcXVldWUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2lyYy90aHJlYWRlZG1lc3NhZ2VxdWV1ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi42Y2I2ZjhjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9pcmMvdGhyZWFkZWRtZXNzYWdlcXVldWUucHkKQEAgLTAsMCArMSw1NSBA
QAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB0aHJlYWRpbmcKKworCitjbGFzcyBUaHJlYWRl
ZE1lc3NhZ2VRdWV1ZShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAg
c2VsZi5fbWVzc2FnZXMgPSBbXQorICAgICAgICBzZWxmLl9pc19ydW5uaW5nID0gVHJ1ZQorICAg
ICAgICBzZWxmLl9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorCisgICAgZGVmIHBvc3Qoc2VsZiwg
bWVzc2FnZSk6CisgICAgICAgIHNlbGYuX2xvY2suYWNxdWlyZSgpCisgICAgICAgIHNlbGYuX21l
c3NhZ2VzLmFwcGVuZChtZXNzYWdlKQorICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2UoKQorCisg
ICAgZGVmIHN0b3Aoc2VsZik6CisgICAgICAgIHNlbGYuX2xvY2suYWNxdWlyZSgpCisgICAgICAg
IHNlbGYuX2lzX3J1bm5pbmcgPSBGYWxzZQorICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2UoKQor
CisgICAgZGVmIHRha2VfYWxsKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2NrLmFjcXVpcmUoKQor
ICAgICAgICBtZXNzYWdlcyA9IHNlbGYuX21lc3NhZ2VzCisgICAgICAgIGlzX3J1bm5pbmcgPSBz
ZWxmLl9pc19ydW5uaW5nCisgICAgICAgIHNlbGYuX21lc3NhZ2VzID0gW10KKyAgICAgICAgc2Vs
Zi5fbG9jay5yZWxlYXNlKCkKKyAgICAgICAgcmV0dXJuIChtZXNzYWdlcywgaXNfcnVubmluZykK
KwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMvdGhyZWFkZWRt
ZXNzYWdlcXVldWVfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2ly
Yy90aHJlYWRlZG1lc3NhZ2VxdWV1ZV91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zNDk2YzUxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9pcmMvdGhyZWFkZWRtZXNzYWdlcXVldWVfdW5pdHRlc3QucHkKQEAgLTAs
MCArMSw1MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB3ZWJraXRw
eS5pcmMudGhyZWFkZWRtZXNzYWdlcXVldWUgaW1wb3J0IFRocmVhZGVkTWVzc2FnZVF1ZXVlCisK
K2NsYXNzIFRocmVhZGVkTWVzc2FnZVF1ZXVlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAg
ICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgcXVldWUgPSBUaHJlYWRlZE1lc3NhZ2VR
dWV1ZSgpCisgICAgICAgIHF1ZXVlLnBvc3QoIkhlbGxvIikKKyAgICAgICAgcXVldWUucG9zdCgi
VGhlcmUiKQorICAgICAgICAobWVzc2FnZXMsIGlzX3J1bm5pbmcpID0gcXVldWUudGFrZV9hbGwo
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lc3NhZ2VzLCBbIkhlbGxvIiwgIlRoZXJlIl0p
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19ydW5uaW5nKQorICAgICAgICAobWVzc2FnZXMs
IGlzX3J1bm5pbmcpID0gcXVldWUudGFrZV9hbGwoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KG1lc3NhZ2VzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX3J1bm5pbmcpCisgICAg
ICAgIHF1ZXVlLnBvc3QoIk1vcmUiKQorICAgICAgICBxdWV1ZS5zdG9wKCkKKyAgICAgICAgcXVl
dWUucG9zdCgiTWVzc2FnZXMiKQorICAgICAgICAobWVzc2FnZXMsIGlzX3J1bm5pbmcpID0gcXVl
dWUudGFrZV9hbGwoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lc3NhZ2VzLCBbIk1vcmUi
LCAiTWVzc2FnZXMiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19ydW5uaW5nKQorICAg
ICAgICAobWVzc2FnZXMsIGlzX3J1bm5pbmcpID0gcXVldWUudGFrZV9hbGwoKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG1lc3NhZ2VzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShp
c19ydW5uaW5nKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMv
dW5pdHRlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9pcmMvdW5pdHRlc3Rz
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNWMwNjgKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2lyYy91bml0dGVzdHMucHkK
QEAgLTAsMCArMSwzNCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlJ1bnMgaXJjIHBhY2thZ2Ug
dW5pdCB0ZXN0cy4iIiIKKworIyBUaGlzIG1vZHVsZSBpcyBpbXBvcnRlZCBieSB0aGUgbW9kdWxl
IHRoYXQgaW1wb3J0cyBhbGwgd2Via2l0cHkgdW5pdCB0ZXN0cy4KKworZnJvbSB3ZWJraXRweS5p
cmMubWVzc2FnZXB1bXBfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkuaXJjLnRocmVh
ZGVkbWVzc2FnZXF1ZXVlX3VuaXR0ZXN0IGltcG9ydCAqCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvYXV0b2luc3RhbGxlZC9fX2luaXRfXy5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9hdXRvaW5zdGFsbGVkL19f
aW5pdF9fLnB5CmluZGV4IGY3MzlhZGQuLjEzZGUwZjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9hdXRvaW5zdGFsbGVkL19faW5pdF9fLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9hdXRvaW5zdGFsbGVk
L19faW5pdF9fLnB5CkBAIC02LDYgKzYsMTAgQEAgaW1wb3J0IHdlYmtpdHB5LnRoaXJkcGFydHku
YXV0b2luc3RhbGwgYXMgYXV0b2luc3RhbGwKICMgZG93bmxvYWRlZC4KIGF1dG9pbnN0YWxsLmJp
bmQoIkNsaWVudEZvcm0iLCAiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2Uv
Qy9DbGllbnRGb3JtL0NsaWVudEZvcm0tMC4yLjEwLnppcCIsICJDbGllbnRGb3JtLTAuMi4xMCIp
CiBhdXRvaW5zdGFsbC5iaW5kKCJtZWNoYW5pemUiLCAiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9w
YWNrYWdlcy9zb3VyY2UvbS9tZWNoYW5pemUvbWVjaGFuaXplLTAuMS4xMS56aXAiLCAibWVjaGFu
aXplLTAuMS4xMSIpCisjIFdlIGltcG9ydCBib3RoIGlyY2xpYiBhbmQgaXJjYm90IGJlY2F1c2Ug
aXJjbGliIGhhcyB0d28gdG9wLWxldmVsIHBhY2thZ2VzLgorYXV0b2luc3RhbGwuYmluZCgiaXJj
bGliIiwgImh0dHA6Ly9pd2ViLmRsLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3B5dGhvbi1pcmNs
aWIvcHl0aG9uLWlyY2xpYi8wLjQuOC9weXRob24taXJjbGliLTAuNC44LnppcCIsICJweXRob24t
aXJjbGliLTAuNC44IikKK2F1dG9pbnN0YWxsLmJpbmQoImlyY2JvdCIsICJodHRwOi8vaXdlYi5k
bC5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9weXRob24taXJjbGliL3B5dGhvbi1pcmNsaWIvMC40
LjgvcHl0aG9uLWlyY2xpYi0wLjQuOC56aXAiLCAicHl0aG9uLWlyY2xpYi0wLjQuOCIpCiAKIGZy
b20gbWVjaGFuaXplIGltcG9ydCBCcm93c2VyCiBmcm9tIG1lY2hhbml6ZSBpbXBvcnQgSFRUUEVy
cm9yCitpbXBvcnQgaXJjYm90CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3VuaXR0ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdW5pdHRlc3Rz
LnB5CmluZGV4IDk5NmRhYjIuLjgzOTRhN2IgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdW5pdHRlc3RzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdW5pdHRlc3RzLnB5CkBAIC00NSw2ICs0NSw3IEBAIGZyb20gd2Via2l0cHkuY3JlZGVudGlh
bHNfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkuZGlmZl9wYXJzZXJfdW5pdHRlc3Qg
aW1wb3J0ICoKIGZyb20gd2Via2l0cHkuZXhlY3V0aXZlX3VuaXR0ZXN0IGltcG9ydCAqCiBmcm9t
IHdlYmtpdHB5LmdyYW1tYXJfdW5pdHRlc3QgaW1wb3J0ICoKK2Zyb20gd2Via2l0cHkuaXJjLnVu
aXR0ZXN0cyBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS5pbml0LnVuaXR0ZXN0cyBpbXBvcnQgKiAg
IyBmb3IgdGhlIHdlYmtpdHB5LmluaXQgcGFja2FnZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydC5tYWNfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkubXVsdGljb21tYW5k
dG9vbF91bml0dGVzdCBpbXBvcnQgKgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>