<?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>29307</bug_id>
          
          <creation_ts>2009-09-16 12:30:07 -0700</creation_ts>
          <short_desc>commit-queue needs web-based status reporting</short_desc>
          <delta_ts>2009-09-24 13:41:10 -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>PC</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="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>evan</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>147583</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-16 12:30:07 -0700</bug_when>
    <thetext>commit-queue needs web-based status reporting

Folks need to be able to tell if the commit-queue is running or not, how many patches are in the queue, etc.

A simple web app should suffice.  I&apos;ll code something up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147988</commentid>
    <comment_count>1</comment_count>
      <attachid>39740</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-17 18:00:47 -0700</bug_when>
    <thetext>Created attachment 39740
First pass implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147990</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-17 18:01:38 -0700</bug_when>
    <thetext>Adding folks with python/appengine familiarity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147992</commentid>
    <comment_count>3</comment_count>
      <attachid>39740</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2009-09-17 18:13:45 -0700</bug_when>
    <thetext>Comment on attachment 39740
First pass implementation

&gt; +    &lt;div id=&quot;current_status&quot;&gt;
&gt; +        {{ last_status.message|escape|webkit_linkify }}
&gt; +        &lt;div id=&quot;last_status_date&quot;&gt;As of {{ last_status.date|timesince }} ago&lt;/div&gt;
&gt; +    &lt;/div&gt;

Djangos since 1.0 autoescape {{}} bits; you only get the old one on appengine by default
for backwards compat.

from google.appengine.dist import use_library
use_library(&apos;django&apos;, &apos;1.1&apos;)

&gt; +class QueueStatus(db.Model):
&gt; +    author = db.UserProperty()
&gt; +    active_bug_id = db.IntegerProperty()
&gt; +    active_patch_id = db.IntegerProperty()
&gt; +    message = db.StringProperty(multiline=True)

Maybe db.Text() is better for this?

&gt; +    date = db.DateTimeProperty(auto_now_add=True)

&gt; +        path = os.path.join(os.path.dirname(__file__), &apos;index.html&apos;)
&gt; +        self.response.out.write(template.render(path, template_values))

Consider factoring this repeated bit into a helper function.

&gt; +    def post(self):
&gt; +        queue_status = QueueStatus()
&gt; +
&gt; +        if users.get_current_user():
&gt; +            queue_status.author = users.get_current_user()
&gt; +
&gt; +        queue_status.active_bug_id = self._int_from_request(&apos;bug_id&apos;)
&gt; +        queue_status.active_patch_id = self._int_from_request(&apos;patch_id&apos;)
&gt; +        queue_status.message = self.request.get(&apos;status&apos;)
&gt; +        queue_status.put()
&gt; +        self.redirect(&apos;/&apos;)

I guess this is XSRFable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147998</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-17 18:34:55 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; from google.appengine.dist import use_library
&gt; use_library(&apos;django&apos;, &apos;1.1&apos;)

Thanks!

&gt; Maybe db.Text() is better for this?

StringProperty seems more when I want.
http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#StringProperty

&gt; I guess this is XSRFable.

This app doesn&apos;t use authentication, so that&apos;s OK. :)  Eventually it might display the name of who set the status, but making the commit-queue use a Google cookie when posting is more trouble than I want to deal with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147999</commentid>
    <comment_count>5</comment_count>
      <attachid>39744</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-17 18:37:04 -0700</bug_when>
    <thetext>Created attachment 39744
Fix per evan&apos;s suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148411</commentid>
    <comment_count>6</comment_count>
      <attachid>39795</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-18 15:06:47 -0700</bug_when>
    <thetext>Created attachment 39795
Fixed queued bugs url</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149227</commentid>
    <comment_count>7</comment_count>
      <attachid>39952</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-22 15:30:42 -0700</bug_when>
    <thetext>Created attachment 39952
Unify ChangeLogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149254</commentid>
    <comment_count>8</comment_count>
      <attachid>39952</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-09-22 16:21:11 -0700</bug_when>
    <thetext>Comment on attachment 39952
Unify ChangeLogs

Just a few nits to fix on landing.


&gt; diff --git a/WebKitTools/CommitQueueStatus/filters/webkit_extras.py b/WebKitTools/CommitQueueStatus/filters/webkit_extras.py
&gt; +# Copyright (c) 2009, Google Inc. All rights reserved.

Ideally (C) and no comma after the year.

&gt; +bug_regexp = re.compile(&quot;bug (?P&lt;bug_id&gt;\d+)&quot;)

Put r in front of the quotes. (Fortunately \d doesn&apos;t map to a string escape but best to put use r&quot;&quot; for this anyway.)

&gt; +patch_regexp = re.compile(&quot;patch (?P&lt;patch_id&gt;\d+)&quot;)

Put r in front of the quotes.

&gt; +
&gt; +@stringfilter
&gt; +def webkit_linkify(value):
&gt; +    value = bug_regexp.sub(&apos;&lt;a href=&quot;http://webkit.org/b/\g&lt;bug_id&gt;&quot;&gt;bug \g&lt;bug_id&gt;&lt;/a&gt;&apos;, value)

Put r in front of the single quote (to make to clear that the \g isn&apos;t a string escape).

&gt; +    value = patch_regexp.sub(&apos;&lt;a href=&quot;https://bugs.webkit.org/attachment.cgi?id=\g&lt;patch_id&gt;&amp;action=prettypatch&quot;&gt;patch \g&lt;patch_id&gt;&lt;/a&gt;&apos;, value)

Put r in front of the single quote.


&gt; diff --git a/WebKitTools/CommitQueueStatus/queue_status.py b/WebKitTools/CommitQueueStatus/queue_status.py
&gt; +# Copyright (c) 2009, Google Inc. All rights reserved.

Ideally (C) and no comma after the year.


&gt; diff --git a/WebKitTools/Scripts/modules/statusbot.py b/WebKitTools/Scripts/modules/statusbot.py

&gt; +# Copyright (c) 2009, Google Inc. All rights reserved.

Ideally (C) and no comma after the year.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149814</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-24 13:41:10 -0700</bug_when>
    <thetext>Committed r48730: &lt;http://trac.webkit.org/changeset/48730&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39740</attachid>
            <date>2009-09-17 18:00:47 -0700</date>
            <delta_ts>2009-09-17 18:36:59 -0700</delta_ts>
            <desc>First pass implementation</desc>
            <filename>bug-29307-20090917180045.patch</filename>
            <type>text/plain</type>
            <size>20767</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0MDFjMGI3Li5kNGY0ZjVlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDkt
MTcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbW1pdC1xdWV1ZSBuZWVkcyB3ZWItYmFzZWQg
c3RhdHVzIHJlcG9ydGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjkzMDcKKworICAgICAgICBBZGQgYSBmaXJzdC1wYXNzIHdlYi1iYXNlZCBzdGF0
dXMgZm9yIHRoZSBjb21taXQtcXVldWUuCisgICAgICAgIFRoZSBib3QgaXMgY3VycmVudGx5IHJl
YWNoYWJsZSBhdDoKKyAgICAgICAgaHR0cDovL3dlYmtpdC1jb21taXQtcXVldWUuYXBwc3BvdC5j
b20vCisKKyAgICAgICAgKiBTY3JpcHRzL2J1Z3ppbGxhLXRvb2w6CisgICAgICAgICAtIEFkZCBz
b21lIHZlcnkgYmFzaWMgdXBkYXRlX3N0YXR1cyBjYWxscy4KKyAgICAgICAgKiBTY3JpcHRzL21v
ZHVsZXMvc3RhdHVzYm90LnB5OiBBZGRlZC4KKyAgICAgICAgIC0gS25vd3MgaG93IHRvIHBvc3Qg
dG8gdGhlIENvbW1pdFF1ZXVlU3RhdHVzIHdlYiBhcHBsaWNhdGlvbi4KKwogMjAwOS0wOS0xNiAg
RXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9D
aGFuZ2VMb2cgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9DaGFuZ2VMb2cKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAzNGU3NAotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVlU3RhdHVzL0NoYW5nZUxvZwpAQCAtMCwwICsxLDI0IEBA
CisyMDA5LTA5LTE3ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBjb21taXQtcXVldWUgbmVlZHMg
d2ViLWJhc2VkIHN0YXR1cyByZXBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI5MzA3CisKKyAgICAgICAgKiBhcHAueWFtbDogQWRkZWQuCisg
ICAgICAgICAtIEFwcGxpY2F0aW9uIGRlc2NyaXB0aW9uIGZpbGUgcmVxdWlyZWQgYnkgQXBwIEVu
Z2luZS4KKyAgICAgICAgKiBmaWx0ZXJzL19faW5pdF9fLnB5OiBBZGRlZC4KKyAgICAgICAgIC0g
UmVxdWlyZWQgYnkgcHl0aG9uIHRvIHRyZWF0ICdmaWx0ZXJzJyBhcyBhIG1vZHVsZS4KKyAgICAg
ICAgKiBmaWx0ZXJzL3dlYmtpdF9leHRyYXMucHk6IEFkZGVkLgorICAgICAgICAgLSBTdXBwb3J0
IGZvciB0dXJuaW5nICdidWcgMTIzJyBhbmQgJ3BhdGNoIDEyMycgaW50byBsaW5rcy4KKyAgICAg
ICAgICAgVGhpcyBsZXRzIHVzIHVzZSBwbGFpbiB0ZXh0IHN0cmluZ3MgaW4gb3VyIGxvZ3MgeWV0
IGRpc3BsYXkgbmljZSBIVE1MIChoZWxwIHByZXZlbnQgWFNTIGF0dGFja3Mgb24gdGhlIHBhZ2Up
LgorICAgICAgICAqIGluZGV4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluZGV4LnlhbWw6IEFk
ZGVkLgorICAgICAgICAgLSBTb21lIGF1dG8tZ2VuZXJhdGVkIGZpbGUgZnJvbSBhcHAgZW5naW5l
LgorICAgICAgICAqIHF1ZXVlX3N0YXR1cy5weTogQWRkZWQuCisgICAgICAgICAtIFRoZSBjb3Jl
IGxvZ2ljIG9mIHRoaXMgYm90LiAgV2UgY291bGQgZXZlbnR1YWxseSBzcGxpdCB0aGlzIGZpbGUg
b3V0IGludG8gcGllY2VzLgorICAgICAgICAqIHN0eWxlc2hlZXRzL21haW4uY3NzOiBBZGRlZC4K
KyAgICAgICAgIC0gU29tZSBiYXNpYyBsYW1lLW8gQ1NTIHRvIG1ha2UgdGhlIHBhZ2UgbG9vayBs
ZXNzIGF3ZnVsLgorICAgICAgICAqIHVwZGF0ZV9zdGF0dXMuaHRtbDogQWRkZWQuCisgICAgICAg
ICAtIFRoZSBmb3JtIHRoYXQgdGhlIGNvbW1pdC1xdWV1ZSAob3IgYSBodW1hbikgY2FuIHVzZSB0
byB1cGRhdGUgdGhlIHN0YXR1cy4KKwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ29tbWl0UXVl
dWVTdGF0dXMvYXBwLnlhbWwgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9hcHAueWFt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzU2MTEyCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvYXBwLnlhbWwKQEAgLTAsMCAr
MSwxMSBAQAorYXBwbGljYXRpb246IHdlYmtpdC1jb21taXQtcXVldWUKK3ZlcnNpb246IDEKK3J1
bnRpbWU6IHB5dGhvbgorYXBpX3ZlcnNpb246IDEKKworaGFuZGxlcnM6CistIHVybDogL3N0eWxl
c2hlZXRzCisgIHN0YXRpY19kaXI6IHN0eWxlc2hlZXRzCisKKy0gdXJsOiAvLioKKyAgc2NyaXB0
OiBxdWV1ZV9zdGF0dXMucHkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVlU3Rh
dHVzL2ZpbHRlcnMvX19pbml0X18ucHkgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9m
aWx0ZXJzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVm
NjViZWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9m
aWx0ZXJzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgUmVxdWlyZWQgZm9yIFB5dGhvbiB0
byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvZmlsdGVycy93ZWJraXRfZXh0cmFzLnB5IGIvV2Vi
S2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvZmlsdGVycy93ZWJraXRfZXh0cmFzLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1OGM5OTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9maWx0ZXJzL3dlYmtpdF9leHRyYXMucHkK
QEAgLTAsMCArMSw0NCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gZGphbmdvLnRlbXBs
YXRlLmRlZmF1bHRmaWx0ZXJzIGltcG9ydCBzdHJpbmdmaWx0ZXIKK2Zyb20gZ29vZ2xlLmFwcGVu
Z2luZS5leHQgaW1wb3J0IHdlYmFwcAorCitpbXBvcnQgcmUKKworYnVnX3JlZ2V4cCA9IHJlLmNv
bXBpbGUoImJ1ZyAoP1A8YnVnX2lkPlxkKykiKQorcGF0Y2hfcmVnZXhwID0gcmUuY29tcGlsZSgi
cGF0Y2ggKD9QPHBhdGNoX2lkPlxkKykiKQorCitAc3RyaW5nZmlsdGVyCitkZWYgd2Via2l0X2xp
bmtpZnkodmFsdWUpOgorICAgIHZhbHVlID0gYnVnX3JlZ2V4cC5zdWIoJzxhIGhyZWY9Imh0dHA6
Ly93ZWJraXQub3JnL2IvXGc8YnVnX2lkPiI+YnVnIFxnPGJ1Z19pZD48L2E+JywgdmFsdWUpCisg
ICAgdmFsdWUgPSBwYXRjaF9yZWdleHAuc3ViKCc8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9hdHRhY2htZW50LmNnaT9pZD1cZzxwYXRjaF9pZD4mYWN0aW9uPXByZXR0eXBhdGNoIj5w
YXRjaCBcZzxwYXRjaF9pZD48L2E+JywgdmFsdWUpCisgICAgcmV0dXJuIHZhbHVlCisKK3JlZ2lz
dGVyID0gd2ViYXBwLnRlbXBsYXRlLmNyZWF0ZV90ZW1wbGF0ZV9yZWdpc3RlcigpCityZWdpc3Rl
ci5maWx0ZXIod2Via2l0X2xpbmtpZnkpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9Db21taXRR
dWV1ZVN0YXR1cy9pbmRleC5odG1sIGIvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvaW5k
ZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDE1NmIzCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvaW5kZXguaHRtbApA
QCAtMCwwICsxLDI4IEBACis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5XZWJLaXQgQ29tbWl0
IFF1ZXVlIFN0YXR1czwvdGl0bGU+CisgICAgPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iL3N0eWxlc2hlZXRzL21haW4uY3NzIiAvPgorPC9oZWFkPgorPGJvZHk+
CisgICAgPGNlbnRlcj4KKyAgICA8ZGl2IGlkPSJjdXJyZW50X3N0YXR1cyI+CisgICAgICAgIHt7
IGxhc3Rfc3RhdHVzLm1lc3NhZ2V8ZXNjYXBlfHdlYmtpdF9saW5raWZ5IH19CisgICAgICAgIDxk
aXYgaWQ9Imxhc3Rfc3RhdHVzX2RhdGUiPkFzIG9mIHt7IGxhc3Rfc3RhdHVzLmRhdGV8dGltZXNp
bmNlIH19IGFnbzwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPHRhYmxlIGlkPSJyZWNlbnRfc3Rh
dHVzX3RhYmxlIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgICAgPHRoIGNvbHNwYW49Mj5SZWNl
bnQgU3RhdHVzPC90aD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgeyUgZm9yIHJlY2VudF9zdGF0
dXMgaW4gcmVjZW50X3N0YXR1c2VzICV9CisgICAgICAgIDx0cj4KKyAgICAgICAgICAgIDx0ZCBj
bGFzcz0nc3RhdHVzX2RhdGUnPnt7IHJlY2VudF9zdGF0dXMuZGF0ZXx0aW1lc2luY2UgfX0gYWdv
PC90ZD4KKyAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVjZW50X3N0YXR1cyI+e3sgcmVjZW50X3N0
YXR1cy5tZXNzYWdlfGVzY2FwZXx3ZWJraXRfbGlua2lmeSB9fTwvdGQ+CisgICAgICAgIDwvdHI+
CisgICAgICAgIHslIGVuZGZvciAlfQorICAgIDwvdGFibGU+CisKKyAgICA8ZGl2IGlkPSJmb290
ZXIiPjxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL2J1Z2xpc3QuY2dpP3F1ZXJ5X2Zv
cm1hdD1hZHZhbmNlZCZidWdfc3RhdHVzPVVOQ09ORklSTUVEJmJ1Z19zdGF0dXM9TkVXJmJ1Z19z
dGF0dXM9QVNTSUdORUQmYnVnX3N0YXR1cz1SRU9QRU5FRCZmaWVsZDAtMC0wPWZsYWd0eXBlcy5u
YW1lJnR5cGUwLTAtMD1lcXVhbHMmdmFsdWUwLTAtMD1jb21taXQtcXVldWUlMkImZmllbGQwLTEt
MD1mbGFndHlwZXMubmFtZSZ0eXBlMC0xLTA9ZXF1YWxzJnZhbHVlMC0xLTA9cmV2aWV3JTJCIj5x
dWV1ZWQgYnVnczwvYT4gfCA8YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnL3dpa2kvQ29t
bWl0UXVldWUiPmRvY3VtZW50YXRpb248L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcv
Ij53ZWJraXQub3JnPC9hPjwvZGl2PgorICAgIDwvY2VudGVyPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvaW5kZXgueWFtbCBiL1dl
YktpdFRvb2xzL0NvbW1pdFF1ZXVlU3RhdHVzL2luZGV4LnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYTNiOWUwNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xz
L0NvbW1pdFF1ZXVlU3RhdHVzL2luZGV4LnlhbWwKQEAgLTAsMCArMSwxMSBAQAoraW5kZXhlczoK
KworIyBBVVRPR0VORVJBVEVECisKKyMgVGhpcyBpbmRleC55YW1sIGlzIGF1dG9tYXRpY2FsbHkg
dXBkYXRlZCB3aGVuZXZlciB0aGUgZGV2X2FwcHNlcnZlcgorIyBkZXRlY3RzIHRoYXQgYSBuZXcg
dHlwZSBvZiBxdWVyeSBpcyBydW4uICBJZiB5b3Ugd2FudCB0byBtYW5hZ2UgdGhlCisjIGluZGV4
LnlhbWwgZmlsZSBtYW51YWxseSwgcmVtb3ZlIHRoZSBhYm92ZSBtYXJrZXIgbGluZSAodGhlIGxp
bmUKKyMgc2F5aW5nICIjIEFVVE9HRU5FUkFURUQiKS4gIElmIHlvdSB3YW50IHRvIG1hbmFnZSBz
b21lIGluZGV4ZXMKKyMgbWFudWFsbHksIG1vdmUgdGhlbSBhYm92ZSB0aGUgbWFya2VyIGxpbmUu
ICBUaGUgaW5kZXgueWFtbCBmaWxlIGlzCisjIGF1dG9tYXRpY2FsbHkgdXBsb2FkZWQgdG8gdGhl
IGFkbWluIGNvbnNvbGUgd2hlbiB5b3UgbmV4dCBkZXBsb3kKKyMgeW91ciBhcHBsaWNhdGlvbiB1
c2luZyBhcHBjZmcucHkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1
cy9xdWV1ZV9zdGF0dXMucHkgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9xdWV1ZV9z
dGF0dXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE0OTdmMAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVlU3RhdHVzL3F1ZXVlX3N0YXR1
cy5weQpAQCAtMCwwICsxLDk2IEBACisjIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMg
bWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGNnaQor
aW1wb3J0IG9zCisKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQud2ViYXBwIGltcG9ydCB0ZW1w
bGF0ZQorZnJvbSBnb29nbGUuYXBwZW5naW5lLmFwaSBpbXBvcnQgdXNlcnMKK2Zyb20gZ29vZ2xl
LmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAorZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dC53
ZWJhcHAudXRpbCBpbXBvcnQgcnVuX3dzZ2lfYXBwCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0
IGltcG9ydCBkYgorCitmcm9tIGRqYW5nby50ZW1wbGF0ZS5kZWZhdWx0ZmlsdGVycyBpbXBvcnQg
c3RyaW5nZmlsdGVyCisKK3dlYmFwcC50ZW1wbGF0ZS5yZWdpc3Rlcl90ZW1wbGF0ZV9saWJyYXJ5
KCdmaWx0ZXJzLndlYmtpdF9leHRyYXMnKQorCitjbGFzcyBRdWV1ZVN0YXR1cyhkYi5Nb2RlbCk6
CisgICAgYXV0aG9yID0gZGIuVXNlclByb3BlcnR5KCkKKyAgICBhY3RpdmVfYnVnX2lkID0gZGIu
SW50ZWdlclByb3BlcnR5KCkKKyAgICBhY3RpdmVfcGF0Y2hfaWQgPSBkYi5JbnRlZ2VyUHJvcGVy
dHkoKQorICAgIG1lc3NhZ2UgPSBkYi5TdHJpbmdQcm9wZXJ0eShtdWx0aWxpbmU9VHJ1ZSkKKyAg
ICBkYXRlID0gZGIuRGF0ZVRpbWVQcm9wZXJ0eShhdXRvX25vd19hZGQ9VHJ1ZSkKKworY2xhc3Mg
TWFpblBhZ2Uod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYgZ2V0KHNlbGYpOgorICAg
ICAgICBzdGF0dXNlc19xdWVyeSA9IFF1ZXVlU3RhdHVzLmFsbCgpLm9yZGVyKCctZGF0ZScpCisg
ICAgICAgIHN0YXR1c2VzID0gc3RhdHVzZXNfcXVlcnkuZmV0Y2goNikKKyAgICAgICAgdGVtcGxh
dGVfdmFsdWVzID0geworICAgICAgICAgICAgJ2xhc3Rfc3RhdHVzJyA6IHN0YXR1c2VzWzBdLAor
ICAgICAgICAgICAgJ3JlY2VudF9zdGF0dXNlcycgOiBzdGF0dXNlc1sxOl0sCisgICAgICAgIH0K
KyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAn
aW5kZXguaHRtbCcpCisgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKHRlbXBsYXRlLnJl
bmRlcihwYXRoLCB0ZW1wbGF0ZV92YWx1ZXMpKQorCitjbGFzcyBVcGRhdGVTdGF0dXMod2ViYXBw
LlJlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYgZ2V0KHNlbGYpOgorICAgICAgICBwYXRoID0gb3Mu
cGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICd1cGRhdGVfc3RhdHVzLmh0bWwn
KQorICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSh0ZW1wbGF0ZS5yZW5kZXIocGF0aCwg
Tm9uZSkpCisKKyAgICBkZWYgX2ludF9mcm9tX3JlcXVlc3Qoc2VsZiwgbmFtZSk6CisgICAgICAg
IHN0cmluZ192YWx1ZSA9IHNlbGYucmVxdWVzdC5nZXQobmFtZSkKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgaW50X3ZhbHVlID0gaW50KHN0cmluZ192YWx1ZSkKKyAgICAgICAgZXhjZXB0IFZh
bHVlRXJyb3IsIFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgIGRlZiBwb3N0KHNlbGYpOgorICAgICAgICBxdWV1ZV9zdGF0dXMgPSBRdWV1ZVN0
YXR1cygpCisKKyAgICAgICAgaWYgdXNlcnMuZ2V0X2N1cnJlbnRfdXNlcigpOgorICAgICAgICAg
ICAgcXVldWVfc3RhdHVzLmF1dGhvciA9IHVzZXJzLmdldF9jdXJyZW50X3VzZXIoKQorCisgICAg
ICAgIHF1ZXVlX3N0YXR1cy5hY3RpdmVfYnVnX2lkID0gc2VsZi5faW50X2Zyb21fcmVxdWVzdCgn
YnVnX2lkJykKKyAgICAgICAgcXVldWVfc3RhdHVzLmFjdGl2ZV9wYXRjaF9pZCA9IHNlbGYuX2lu
dF9mcm9tX3JlcXVlc3QoJ3BhdGNoX2lkJykKKyAgICAgICAgcXVldWVfc3RhdHVzLm1lc3NhZ2Ug
PSBzZWxmLnJlcXVlc3QuZ2V0KCdzdGF0dXMnKQorICAgICAgICBxdWV1ZV9zdGF0dXMucHV0KCkK
KyAgICAgICAgc2VsZi5yZWRpcmVjdCgnLycpCisKK3JvdXRlcyA9IFsKKyAgICAoJy8nLCBNYWlu
UGFnZSksCisgICAgKCcvdXBkYXRlX3N0YXR1cycsIFVwZGF0ZVN0YXR1cykKK10KKworYXBwbGlj
YXRpb24gPSB3ZWJhcHAuV1NHSUFwcGxpY2F0aW9uKHJvdXRlcywgZGVidWc9VHJ1ZSkKKworZGVm
IG1haW4oKToKKyAgICBydW5fd3NnaV9hcHAoYXBwbGljYXRpb24pCisKK2lmIF9fbmFtZV9fID09
ICJfX21haW5fXyI6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9Db21taXRR
dWV1ZVN0YXR1cy9zdHlsZXNoZWV0cy9tYWluLmNzcyBiL1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVl
U3RhdHVzL3N0eWxlc2hlZXRzL21haW4uY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjU1ZDM2OTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9Db21taXRRdWV1
ZVN0YXR1cy9zdHlsZXNoZWV0cy9tYWluLmNzcwpAQCAtMCwwICsxLDI2IEBACitib2R5IHsKKyAg
Zm9udC1mYW1pbHk6IFZlcmRhbmEsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKK30KKworI2N1cnJl
bnRfc3RhdHVzIHsKKyAgICBwYWRkaW5nOiA1cHg7CisgICAgZm9udC1zaXplOiBsYXJnZXI7Cit9
CisKKyNsYXN0X3N0YXR1c19kYXRlIHsKKyAgICBmb250LXNpemU6IHNtYWxsOworfQorCisucmVj
ZW50X3N0YXR1cyB7CisgICAgcGFkZGluZy1sZWZ0OiAxMHB4OworfQorCisjcmVjZW50X3N0YXR1
c190YWJsZSB7CisgICAgZm9udC1zaXplOiBzbWFsbDsKKyAgICBtYXJnaW46IDEwcHg7Cit9CisK
KyNmb290ZXIgeworICAgIGZvbnQtc2l6ZTogc21hbGw7CisgICAgcGFkZGluZy10b3A6IDEwcHg7
Cit9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy91cGRhdGVfc3Rh
dHVzLmh0bWwgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy91cGRhdGVfc3RhdHVzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIyMjJkYgotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVlU3RhdHVzL3VwZGF0ZV9zdGF0dXMuaHRt
bApAQCAtMCwwICsxLDE5IEBACitVcGRhdGUgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBjb21t
aXQtcXVldWU6Cis8Zm9ybSBuYW1lPSJ1cGRhdGVfc3RhdHVzIiBtZXRob2Q9InBvc3QiPgorIDxk
aXY+CisgICAgIEFjdGl2ZSBCdWcgSWQ6CisgICAgPGlucHV0IG5hbWU9ImJ1Z19pZCI+CisgPC9k
aXY+CisgPGRpdj4KKyAgICAgQWN0aXZlIFBhdGNoIElkOgorICAgIDxpbnB1dCBuYW1lPSJwYXRj
aF9pZCI+CisgPC9kaXY+CisgPGRpdj4KKyAgICAgU3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Ygb3Ro
ZXIgYnVncyBpbiBxdWV1ZToKKyAgICA8aW50dXQgbmFtZT0iYnVnc19pbl9xdWV1ZSI+CisgPC9k
aXY+CisgIDxkaXY+CisgICAgICA8dGV4dGFyZWEgbmFtZT0ic3RhdHVzIiByb3dzPSIzIiBjb2xz
PSI2MCI+PC90ZXh0YXJlYT4KKyAgPC9kaXY+CisgIDxkaXY+PGlucHV0IHR5cGU9InN1Ym1pdCIg
dmFsdWU9IkFkZCBTdGF0dXMiPjwvZGl2PgorPC9mb3JtPgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy9idWd6aWxsYS10b29sIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWd6aWxsYS10
b29sCmluZGV4IDRkMmI1ZjMuLjA1Mjg0MWYgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvYnVnemlsbGEtdG9vbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wK
QEAgLTM3LDcgKzM3LDcgQEAgaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCB0
aW1lCiAKLWZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCitmcm9tIGRhdGV0aW1lIGltcG9y
dCBkYXRldGltZSwgdGltZWRlbHRhCiBmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIs
IEluZGVudGVkSGVscEZvcm1hdHRlciwgU1VQUFJFU1NfVVNBR0UsIG1ha2Vfb3B0aW9uCiAKICMg
SW1wb3J0IFdlYktpdC1zcGVjaWZpYyBtb2R1bGVzLgpAQCAtNDYsNiArNDYsNyBAQCBmcm9tIG1v
ZHVsZXMuY2hhbmdlbG9ncyBpbXBvcnQgQ2hhbmdlTG9nLCB2aWV3X3NvdXJjZV91cmwKIGZyb20g
bW9kdWxlcy5sb2dnaW5nIGltcG9ydCBlcnJvciwgbG9nLCB0ZWUKIGZyb20gbW9kdWxlcy5zY20g
aW1wb3J0IENvbW1pdE1lc3NhZ2UsIGRldGVjdF9zY21fc3lzdGVtLCBTY3JpcHRFcnJvcgogZnJv
bSBtb2R1bGVzLmJ1aWxkYm90IGltcG9ydCBCdWlsZEJvdAorZnJvbSBtb2R1bGVzLnN0YXR1c2Jv
dCBpbXBvcnQgU3RhdHVzQm90CiAKIGRlZiBwbHVyYWwobm91bik6CiAgICAgIyBUaGlzIGlzIGEg
ZHVtYiBwbHVyYWwoKSBpbXBsZW1lbnRhdGlvbiB3aGljaCB3YXMganVzdCBlbm91Z2ggZm9yIG91
ciB1c2VzLgpAQCAtNzA5LDYgKzcxMCw3IEBAIGNsYXNzIExhbmRQYXRjaGVzRnJvbUNvbW1pdFF1
ZXVlKENvbW1hbmQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgb3B0aW9ucyA9
IFsKICAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW5vLWNvbmZpcm0iLCBhY3Rpb249InN0b3Jl
X2ZhbHNlIiwgZGVzdD0iY29uZmlybSIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG8gbm90IGFzayB0
aGUgdXNlciBmb3IgY29uZmlybWF0aW9uIGJlZm9yZSBydW5uaW5nIHRoZSBxdWV1ZS4gIERhbmdl
cm91cyEiKSwKKyAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLXN0YXR1cy1ob3N0IiwgYWN0aW9u
PSJzdG9yZSIsIHR5cGU9InN0cmluZyIsIGRlc3Q9InN0YXR1c19ob3N0IiwgZGVmYXVsdD1TdGF0
dXNCb3QuZGVmYXVsdF9ob3N0LCBoZWxwPSJEbyBub3QgYXNrIHRoZSB1c2VyIGZvciBjb25maXJt
YXRpb24gYmVmb3JlIHJ1bm5pbmcgdGhlIHF1ZXVlLiAgRGFuZ2Vyb3VzISIpLAogICAgICAgICBd
CiAgICAgICAgIENvbW1hbmQuX19pbml0X18oc2VsZiwgJ1J1biB0aGUgY29tbWl0IHF1ZXVlLics
IG9wdGlvbnM9b3B0aW9ucykKICAgICAgICAgc2VsZi5fb3JpZ2luYWxfc3Rkb3V0ID0gTm9uZQpA
QCAtNzE4LDYgKzcyMCwxMCBAQCBjbGFzcyBMYW5kUGF0Y2hlc0Zyb21Db21taXRRdWV1ZShDb21t
YW5kKToKICAgICBxdWV1ZV9sb2dfcGF0aCA9ICdjb21taXRfcXVldWUubG9nJwogICAgIGJ1Z19s
b2dzX2RpcmVjdG9yeSA9ICdjb21taXRfcXVldWVfbG9ncycKIAorICAgIGxvZ19kYXRlX2Zvcm1h
dCA9ICIlWS0lbS0lZCAlSDolTTolUyIKKyAgICBzbGVlcF9kdXJhdGlvbl90ZXh0ID0gIjUgbWlu
cyIKKyAgICBzZWNvbmRzX3RvX3NsZWVwID0gMzAwCisKICAgICBkZWYgX3RlZV9vdXRwdXRzX3Rv
X2ZpbGVzKHNlbGYsIGZpbGVzKToKICAgICAgICAgaWYgbm90IHNlbGYuX29yaWdpbmFsX3N0ZG91
dDoKICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFsX3N0ZG91dCA9IHN5cy5zdGRvdXQKQEAgLTcy
OSwxMCArNzM1LDIxIEBAIGNsYXNzIExhbmRQYXRjaGVzRnJvbUNvbW1pdFF1ZXVlKENvbW1hbmQp
OgogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYuX29yaWdpbmFsX3N0ZG91dAogICAgICAg
ICAgICAgc3lzLnN0ZGVyciA9IHNlbGYuX29yaWdpbmFsX3N0ZGVycgogCi0gICAgQHN0YXRpY21l
dGhvZAotICAgIGRlZiBfc2xlZXAobG9nX21lc3NhZ2UpOgotICAgICAgICBsb2coIiVzICBTbGVl
cGluZyA1IG1pbnV0ZXMuLi4gJXMiICUgKGxvZ19tZXNzYWdlLCBkYXRldGltZS5ub3coKSkpCi0g
ICAgICAgIHRpbWUuc2xlZXAoMzAwKSAjIFdhaXQgNSBtaW51dGVzCisgICAgQGNsYXNzbWV0aG9k
CisgICAgZGVmIF9zbGVlcF9tZXNzYWdlKGNscywgbWVzc2FnZSk6CisgICAgICAgIHdha2VfdGlt
ZSA9IGRhdGV0aW1lLm5vdygpICsgdGltZWRlbHRhKHNlY29uZHM9Y2xzLnNlY29uZHNfdG9fc2xl
ZXApCisgICAgICAgIHJldHVybiAiJXMgU2xlZXBpbmcgdW50aWwgJXMgKCVzKS4iICUgKG1lc3Nh
Z2UsIHdha2VfdGltZS5zdHJmdGltZShjbHMubG9nX2RhdGVfZm9ybWF0KSwgY2xzLnNsZWVwX2R1
cmF0aW9uX3RleHQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3NsZWVwKGNscywgbWVz
c2FnZSk6CisgICAgICAgIGxvZyhjbHMuX3NsZWVwX21lc3NhZ2UobWVzc2FnZSkpCisgICAgICAg
IHRpbWUuc2xlZXAoY2xzLnNlY29uZHNfdG9fc2xlZXApCisKKyAgICBkZWYgX3VwZGF0ZV9zdGF0
dXNfYW5kX3NsZWVwKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICBzdGF0dXNfbWVzc2FnZSA9IHNl
bGYuX3NsZWVwX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgc2VsZi5zdGF0dXNfYm90LnVwZGF0
ZV9zdGF0dXMoc3RhdHVzX21lc3NhZ2UpCisgICAgICAgIGxvZyhzdGF0dXNfbWVzc2FnZSkKKyAg
ICAgICAgdGltZS5zbGVlcChzZWxmLnNlY29uZHNfdG9fc2xlZXApCiAKICAgICBAc3RhdGljbWV0
aG9kCiAgICAgZGVmIF9vcGVuX2xvZ19maWxlKGxvZ19wYXRoKToKQEAgLTc2MCw3ICs3NzcsOSBA
QCBjbGFzcyBMYW5kUGF0Y2hlc0Zyb21Db21taXRRdWV1ZShDb21tYW5kKToKICAgICAgICAgICAg
ICAgICBlcnJvcigiVXNlciBkZWNsaW5lZC4iKQogCiAgICAgICAgIHF1ZXVlX2xvZyA9IHNlbGYu
X2FkZF9sb2dfdG9fb3V0cHV0X3RlZShzZWxmLnF1ZXVlX2xvZ19wYXRoKQotICAgICAgICBsb2co
IlJ1bm5pbmcgV2ViS2l0IENvbW1pdCBRdWV1ZS4gJXMiICUgZGF0ZXRpbWUubm93KCkpCisgICAg
ICAgIGxvZygiUnVubmluZyBXZWJLaXQgQ29tbWl0IFF1ZXVlLiAlcyIgJSBkYXRldGltZS5ub3co
KS5zdHJmdGltZShzZWxmLmxvZ19kYXRlX2Zvcm1hdCkpCisKKyAgICAgICAgc2VsZi5zdGF0dXNf
Ym90ID0gU3RhdHVzQm90KGhvc3Q9b3B0aW9ucy5zdGF0dXNfaG9zdCkKIAogICAgICAgICB3aGls
ZSAoVHJ1ZSk6CiAgICAgICAgICAgICAjIEVpdGhlciBvZiB0aGVzZSBjYWxscyBjb3VsZCB0aHJv
dyBVUkxFcnJvciB3aGljaCBzaG91bGRuJ3Qgc3RvcCB0aGUgcXVldWUuCkBAIC03NjksMTYgKzc4
OCwxOSBAQCBjbGFzcyBMYW5kUGF0Y2hlc0Zyb21Db21taXRRdWV1ZShDb21tYW5kKToKICAgICAg
ICAgICAgICAgICAjIEZldGNoIHBhdGNoZXMgaW5zdGVhZCBvZiBqdXN0IGJ1ZyBpZHMgdG8gdGhh
dCB3ZSB2YWxpZGF0ZSByZXZpZXdlci9jb21taXR0ZXIgZmxhZ3Mgb24gZXZlcnkgcGF0Y2guCiAg
ICAgICAgICAgICAgICAgcGF0Y2hlcyA9IHRvb2wuYnVncy5mZXRjaF9wYXRjaGVzX2Zyb21fY29t
bWl0X3F1ZXVlKHJlamVjdF9pbnZhbGlkX3BhdGNoZXM9VHJ1ZSkKICAgICAgICAgICAgICAgICBp
ZiBub3QgbGVuKHBhdGNoZXMpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zbGVlcCgiRW1w
dHkgcXVldWUuIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdXBkYXRlX3N0YXR1c19hbmRf
c2xlZXAoIkVtcHR5IHF1ZXVlLiIpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAg
ICAgICAgICAgICAgcGF0Y2hfaWRzID0gbWFwKGxhbWJkYSBwYXRjaDogcGF0Y2hbJ2lkJ10sIHBh
dGNoZXMpCiAgICAgICAgICAgICAgICAgZmlyc3RfYnVnX2lkID0gcGF0Y2hlc1swXVsnYnVnX2lk
J10KICAgICAgICAgICAgICAgICBsb2coIiVzIGluIGNvbW1pdCBxdWV1ZSBbJXNdIiAlIChwbHVy
YWxpemUoJ3BhdGNoJywgbGVuKHBhdGNoZXMpKSwgIiwgIi5qb2luKHBhdGNoX2lkcykpKQogCiAg
ICAgICAgICAgICAgICAgaWYgbm90IHRvb2wuYnVpbGRib3QuY29yZV9idWlsZGVyc19hcmVfZ3Jl
ZW4oKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2xlZXAoIkJ1aWxkZXJzIGFyZSByZWQu
IikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdXBkYXRlX3N0YXR1c19hbmRfc2xlZXAoIkJ1
aWxkZXJzIChodHRwOi8vYnVpbGQud2Via2l0Lm9yZykgYXJlIHJlZC4iKQogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0dXNfYm90LnVwZGF0
ZV9zdGF0dXMoIkxhbmRpbmcgcGF0Y2hlcyBmcm9tIGJ1ZyAlcy4iICUgZmlyc3RfYnVnX2lkLCBi
dWdfaWQ9Zmlyc3RfYnVnX2lkKQogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAg
ICAgICAgICAgICAgICAjIERvbid0IHRyeSB0ZWxsIHRoZSBzdGF0dXMgYm90LCBpbiBjYXNlIHRl
bGxpbmcgaXQgY2F1c2VzIGFuIGV4Y2VwdGlvbi4KICAgICAgICAgICAgICAgICBzZWxmLl9zbGVl
cCgiRXhjZXB0aW9uIHdoaWxlIGNoZWNraW5nIHF1ZXVlIGFuZCBib3RzOiAlcy4iICUgZSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZQogCkBAIC03OTAsNyArODEyLDcgQEAgY2xhc3MgTGFuZFBh
dGNoZXNGcm9tQ29tbWl0UXVldWUoQ29tbWFuZCk6CiAgICAgICAgICAgICBXZWJLaXRMYW5kaW5n
U2NyaXB0cy5ydW5fY29tbWFuZF93aXRoX3RlZWRfb3V0cHV0KGJ1Z3ppbGxhX3Rvb2xfYXJncywg
c3lzLnN0ZG91dCkKICAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9sb2dfZnJvbV9vdXRwdXRfdGVl
KGJ1Z19sb2cpCiAKLSAgICAgICAgbG9nKCJGaW5pc2hlZCBXZWJLaXQgQ29tbWl0IFF1ZXVlLiAl
cyIgJSBkYXRldGltZS5ub3coKSkKKyAgICAgICAgbG9nKCJGaW5pc2hlZCBXZWJLaXQgQ29tbWl0
IFF1ZXVlLiAlcyIgJSBkYXRldGltZS5ub3coKS5zdHJmdGltZShzZWxmLmxvZ19kYXRlX2Zvcm1h
dCkpCiAgICAgICAgIHNlbGYuX3JlbW92ZV9sb2dfZnJvbV9vdXRwdXRfdGVlKHF1ZXVlX2xvZykK
IAogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc3RhdHVzYm90LnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3N0YXR1c2JvdC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjJjYTNjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3N0YXR1c2JvdC5weQpAQCAtMCwwICsxLDY2IEBACisjIENv
cHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisjCisjIFdlYktpdCdzIFB5dGhvbiBtb2R1bGUgZm9yIGludGVyYWN0
aW5nIHdpdGggdGhlIENvbW1pdCBRdWV1ZSBzdGF0dXMgcGFnZS4KKworIyBXZWJLaXQgaW5jbHVk
ZXMgYSBidWlsdCBjb3B5IG9mIEJlYXV0aWZ1bFNvdXAgaW4gU2NyaXB0cy9tb2R1bGVzCisjIHNv
IHRoaXMgaW1wb3J0IHNob3VsZCBhbHdheXMgc3VjY2VlZC4KK2Zyb20gLkJlYXV0aWZ1bFNvdXAg
aW1wb3J0IEJlYXV0aWZ1bFNvdXAKKwordHJ5OgorICAgIGZyb20gbWVjaGFuaXplIGltcG9ydCBC
cm93c2VyCitleGNlcHQgSW1wb3J0RXJyb3IsIGU6CisgICAgcHJpbnQgIiIiCittZWNoYW5pemUg
aXMgcmVxdWlyZWQuCisKK1RvIGluc3RhbGw6CitzdWRvIGVhc3lfaW5zdGFsbCBtZWNoYW5pemUK
KworT3IgZnJvbSB0aGUgd2ViOgoraHR0cDovL3d3d3NlYXJjaC5zb3VyY2Vmb3JnZS5uZXQvbWVj
aGFuaXplLworIiIiCisgICAgZXhpdCgxKQorCitjbGFzcyBTdGF0dXNCb3Q6CisgICAgZGVmYXVs
dF9ob3N0ID0gIndlYmtpdC1jb21taXQtcXVldWUuYXBwc3BvdC5jb20iCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgaG9zdD1kZWZhdWx0X2hvc3QpOgorICAgICAgICBzZWxmLnN0YXR1c2JvdF9o
b3N0ID0gaG9zdAorICAgICAgICBzZWxmLnN0YXR1c2JvdF9zZXJ2ZXJfdXJsID0gImh0dHA6Ly8l
cyIgJSBzZWxmLnN0YXR1c2JvdF9ob3N0CisgICAgICAgIHNlbGYudXBkYXRlX3N0YXR1c191cmwg
PSAiJXMvdXBkYXRlX3N0YXR1cyIgJSBzZWxmLnN0YXR1c2JvdF9zZXJ2ZXJfdXJsCisgICAgICAg
IHNlbGYuYnJvd3NlciA9IEJyb3dzZXIoKQorCisgICAgZGVmIHVwZGF0ZV9zdGF0dXMoc2VsZiwg
c3RhdHVzLCBidWdfaWQ9Tm9uZSwgcGF0Y2hfaWQ9Tm9uZSk6CisgICAgICAgIHNlbGYuYnJvd3Nl
ci5vcGVuKHNlbGYudXBkYXRlX3N0YXR1c191cmwpCisgICAgICAgIHNlbGYuYnJvd3Nlci5zZWxl
Y3RfZm9ybShuYW1lPSJ1cGRhdGVfc3RhdHVzIikKKyAgICAgICAgaWYgYnVnX2lkOgorICAgICAg
ICAgICAgc2VsZi5icm93c2VyWydidWdfaWQnXSA9IHN0cihidWdfaWQpCisgICAgICAgIGlmIHBh
dGNoX2lkOgorICAgICAgICAgICAgc2VsZi5icm93c2VyWydwYXRjaF9pZCddID0gc3RyKHBhdGNo
X2lkKQorICAgICAgICBzZWxmLmJyb3dzZXJbJ3N0YXR1cyddID0gc3RhdHVzCisgICAgICAgIHNl
bGYuYnJvd3Nlci5zdWJtaXQoKQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39744</attachid>
            <date>2009-09-17 18:37:04 -0700</date>
            <delta_ts>2009-09-18 15:06:43 -0700</delta_ts>
            <desc>Fix per evan&apos;s suggestions</desc>
            <filename>bug-29307-20090917183703.patch</filename>
            <type>text/plain</type>
            <size>20712</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0MDFjMGI3Li5kNGY0ZjVlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDkt
MTcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbW1pdC1xdWV1ZSBuZWVkcyB3ZWItYmFzZWQg
c3RhdHVzIHJlcG9ydGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjkzMDcKKworICAgICAgICBBZGQgYSBmaXJzdC1wYXNzIHdlYi1iYXNlZCBzdGF0
dXMgZm9yIHRoZSBjb21taXQtcXVldWUuCisgICAgICAgIFRoZSBib3QgaXMgY3VycmVudGx5IHJl
YWNoYWJsZSBhdDoKKyAgICAgICAgaHR0cDovL3dlYmtpdC1jb21taXQtcXVldWUuYXBwc3BvdC5j
b20vCisKKyAgICAgICAgKiBTY3JpcHRzL2J1Z3ppbGxhLXRvb2w6CisgICAgICAgICAtIEFkZCBz
b21lIHZlcnkgYmFzaWMgdXBkYXRlX3N0YXR1cyBjYWxscy4KKyAgICAgICAgKiBTY3JpcHRzL21v
ZHVsZXMvc3RhdHVzYm90LnB5OiBBZGRlZC4KKyAgICAgICAgIC0gS25vd3MgaG93IHRvIHBvc3Qg
dG8gdGhlIENvbW1pdFF1ZXVlU3RhdHVzIHdlYiBhcHBsaWNhdGlvbi4KKwogMjAwOS0wOS0xNiAg
RXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9D
aGFuZ2VMb2cgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9DaGFuZ2VMb2cKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAzNGU3NAotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVlU3RhdHVzL0NoYW5nZUxvZwpAQCAtMCwwICsxLDI0IEBA
CisyMDA5LTA5LTE3ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBjb21taXQtcXVldWUgbmVlZHMg
d2ViLWJhc2VkIHN0YXR1cyByZXBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI5MzA3CisKKyAgICAgICAgKiBhcHAueWFtbDogQWRkZWQuCisg
ICAgICAgICAtIEFwcGxpY2F0aW9uIGRlc2NyaXB0aW9uIGZpbGUgcmVxdWlyZWQgYnkgQXBwIEVu
Z2luZS4KKyAgICAgICAgKiBmaWx0ZXJzL19faW5pdF9fLnB5OiBBZGRlZC4KKyAgICAgICAgIC0g
UmVxdWlyZWQgYnkgcHl0aG9uIHRvIHRyZWF0ICdmaWx0ZXJzJyBhcyBhIG1vZHVsZS4KKyAgICAg
ICAgKiBmaWx0ZXJzL3dlYmtpdF9leHRyYXMucHk6IEFkZGVkLgorICAgICAgICAgLSBTdXBwb3J0
IGZvciB0dXJuaW5nICdidWcgMTIzJyBhbmQgJ3BhdGNoIDEyMycgaW50byBsaW5rcy4KKyAgICAg
ICAgICAgVGhpcyBsZXRzIHVzIHVzZSBwbGFpbiB0ZXh0IHN0cmluZ3MgaW4gb3VyIGxvZ3MgeWV0
IGRpc3BsYXkgbmljZSBIVE1MIChoZWxwIHByZXZlbnQgWFNTIGF0dGFja3Mgb24gdGhlIHBhZ2Up
LgorICAgICAgICAqIGluZGV4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluZGV4LnlhbWw6IEFk
ZGVkLgorICAgICAgICAgLSBTb21lIGF1dG8tZ2VuZXJhdGVkIGZpbGUgZnJvbSBhcHAgZW5naW5l
LgorICAgICAgICAqIHF1ZXVlX3N0YXR1cy5weTogQWRkZWQuCisgICAgICAgICAtIFRoZSBjb3Jl
IGxvZ2ljIG9mIHRoaXMgYm90LiAgV2UgY291bGQgZXZlbnR1YWxseSBzcGxpdCB0aGlzIGZpbGUg
b3V0IGludG8gcGllY2VzLgorICAgICAgICAqIHN0eWxlc2hlZXRzL21haW4uY3NzOiBBZGRlZC4K
KyAgICAgICAgIC0gU29tZSBiYXNpYyBsYW1lLW8gQ1NTIHRvIG1ha2UgdGhlIHBhZ2UgbG9vayBs
ZXNzIGF3ZnVsLgorICAgICAgICAqIHVwZGF0ZV9zdGF0dXMuaHRtbDogQWRkZWQuCisgICAgICAg
ICAtIFRoZSBmb3JtIHRoYXQgdGhlIGNvbW1pdC1xdWV1ZSAob3IgYSBodW1hbikgY2FuIHVzZSB0
byB1cGRhdGUgdGhlIHN0YXR1cy4KKwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ29tbWl0UXVl
dWVTdGF0dXMvYXBwLnlhbWwgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9hcHAueWFt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzU2MTEyCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvYXBwLnlhbWwKQEAgLTAsMCAr
MSwxMSBAQAorYXBwbGljYXRpb246IHdlYmtpdC1jb21taXQtcXVldWUKK3ZlcnNpb246IDEKK3J1
bnRpbWU6IHB5dGhvbgorYXBpX3ZlcnNpb246IDEKKworaGFuZGxlcnM6CistIHVybDogL3N0eWxl
c2hlZXRzCisgIHN0YXRpY19kaXI6IHN0eWxlc2hlZXRzCisKKy0gdXJsOiAvLioKKyAgc2NyaXB0
OiBxdWV1ZV9zdGF0dXMucHkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVlU3Rh
dHVzL2ZpbHRlcnMvX19pbml0X18ucHkgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9m
aWx0ZXJzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVm
NjViZWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9m
aWx0ZXJzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgUmVxdWlyZWQgZm9yIFB5dGhvbiB0
byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvZmlsdGVycy93ZWJraXRfZXh0cmFzLnB5IGIvV2Vi
S2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvZmlsdGVycy93ZWJraXRfZXh0cmFzLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1OGM5OTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9maWx0ZXJzL3dlYmtpdF9leHRyYXMucHkK
QEAgLTAsMCArMSw0NCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gZGphbmdvLnRlbXBs
YXRlLmRlZmF1bHRmaWx0ZXJzIGltcG9ydCBzdHJpbmdmaWx0ZXIKK2Zyb20gZ29vZ2xlLmFwcGVu
Z2luZS5leHQgaW1wb3J0IHdlYmFwcAorCitpbXBvcnQgcmUKKworYnVnX3JlZ2V4cCA9IHJlLmNv
bXBpbGUoImJ1ZyAoP1A8YnVnX2lkPlxkKykiKQorcGF0Y2hfcmVnZXhwID0gcmUuY29tcGlsZSgi
cGF0Y2ggKD9QPHBhdGNoX2lkPlxkKykiKQorCitAc3RyaW5nZmlsdGVyCitkZWYgd2Via2l0X2xp
bmtpZnkodmFsdWUpOgorICAgIHZhbHVlID0gYnVnX3JlZ2V4cC5zdWIoJzxhIGhyZWY9Imh0dHA6
Ly93ZWJraXQub3JnL2IvXGc8YnVnX2lkPiI+YnVnIFxnPGJ1Z19pZD48L2E+JywgdmFsdWUpCisg
ICAgdmFsdWUgPSBwYXRjaF9yZWdleHAuc3ViKCc8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9hdHRhY2htZW50LmNnaT9pZD1cZzxwYXRjaF9pZD4mYWN0aW9uPXByZXR0eXBhdGNoIj5w
YXRjaCBcZzxwYXRjaF9pZD48L2E+JywgdmFsdWUpCisgICAgcmV0dXJuIHZhbHVlCisKK3JlZ2lz
dGVyID0gd2ViYXBwLnRlbXBsYXRlLmNyZWF0ZV90ZW1wbGF0ZV9yZWdpc3RlcigpCityZWdpc3Rl
ci5maWx0ZXIod2Via2l0X2xpbmtpZnkpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9Db21taXRR
dWV1ZVN0YXR1cy9pbmRleC5odG1sIGIvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvaW5k
ZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTRkOGRjCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvaW5kZXguaHRtbApA
QCAtMCwwICsxLDI4IEBACis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5XZWJLaXQgQ29tbWl0
IFF1ZXVlIFN0YXR1czwvdGl0bGU+CisgICAgPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iL3N0eWxlc2hlZXRzL21haW4uY3NzIiAvPgorPC9oZWFkPgorPGJvZHk+
CisgICAgPGNlbnRlcj4KKyAgICA8ZGl2IGlkPSJjdXJyZW50X3N0YXR1cyI+CisgICAgICAgIHt7
IGxhc3Rfc3RhdHVzLm1lc3NhZ2V8Zm9yY2VfZXNjYXBlfHdlYmtpdF9saW5raWZ5fHNhZmUgfX0K
KyAgICAgICAgPGRpdiBpZD0ibGFzdF9zdGF0dXNfZGF0ZSI+QXMgb2Yge3sgbGFzdF9zdGF0dXMu
ZGF0ZXx0aW1lc2luY2UgfX0gYWdvPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8dGFibGUgaWQ9
InJlY2VudF9zdGF0dXNfdGFibGUiPgorICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGggY29s
c3Bhbj0yPlJlY2VudCBTdGF0dXM8L3RoPgorICAgICAgICA8L3RyPgorICAgICAgICB7JSBmb3Ig
cmVjZW50X3N0YXR1cyBpbiByZWNlbnRfc3RhdHVzZXMgJX0KKyAgICAgICAgPHRyPgorICAgICAg
ICAgICAgPHRkIGNsYXNzPSdzdGF0dXNfZGF0ZSc+e3sgcmVjZW50X3N0YXR1cy5kYXRlfHRpbWVz
aW5jZSB9fSBhZ288L3RkPgorICAgICAgICAgICAgPHRkIGNsYXNzPSJyZWNlbnRfc3RhdHVzIj57
eyByZWNlbnRfc3RhdHVzLm1lc3NhZ2V8Zm9yY2VfZXNjYXBlfHdlYmtpdF9saW5raWZ5fHNhZmUg
fX08L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICB7JSBlbmRmb3IgJX0KKyAgICA8L3RhYmxl
PgorCisgICAgPGRpdiBpZD0iZm9vdGVyIj48YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9idWdsaXN0LmNnaT9xdWVyeV9mb3JtYXQ9YWR2YW5jZWQmYnVnX3N0YXR1cz1VTkNPTkZJUk1F
RCZidWdfc3RhdHVzPU5FVyZidWdfc3RhdHVzPUFTU0lHTkVEJmJ1Z19zdGF0dXM9UkVPUEVORUQm
ZmllbGQwLTAtMD1mbGFndHlwZXMubmFtZSZ0eXBlMC0wLTA9ZXF1YWxzJnZhbHVlMC0wLTA9Y29t
bWl0LXF1ZXVlJTJCJmZpZWxkMC0xLTA9ZmxhZ3R5cGVzLm5hbWUmdHlwZTAtMS0wPWVxdWFscyZ2
YWx1ZTAtMS0wPXJldmlldyUyQiI+cXVldWVkIGJ1Z3M8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy93aWtpL0NvbW1pdFF1ZXVlIj5kb2N1bWVudGF0aW9uPC9hPiB8IDxhIGhy
ZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+d2Via2l0Lm9yZzwvYT48L2Rpdj4KKyAgICA8L2NlbnRl
cj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVl
U3RhdHVzL2luZGV4LnlhbWwgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9pbmRleC55
YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzYjllMDUKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9pbmRleC55YW1sCkBAIC0w
LDAgKzEsMTEgQEAKK2luZGV4ZXM6CisKKyMgQVVUT0dFTkVSQVRFRAorCisjIFRoaXMgaW5kZXgu
eWFtbCBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgd2hlbmV2ZXIgdGhlIGRldl9hcHBzZXJ2ZXIK
KyMgZGV0ZWN0cyB0aGF0IGEgbmV3IHR5cGUgb2YgcXVlcnkgaXMgcnVuLiAgSWYgeW91IHdhbnQg
dG8gbWFuYWdlIHRoZQorIyBpbmRleC55YW1sIGZpbGUgbWFudWFsbHksIHJlbW92ZSB0aGUgYWJv
dmUgbWFya2VyIGxpbmUgKHRoZSBsaW5lCisjIHNheWluZyAiIyBBVVRPR0VORVJBVEVEIikuICBJ
ZiB5b3Ugd2FudCB0byBtYW5hZ2Ugc29tZSBpbmRleGVzCisjIG1hbnVhbGx5LCBtb3ZlIHRoZW0g
YWJvdmUgdGhlIG1hcmtlciBsaW5lLiAgVGhlIGluZGV4LnlhbWwgZmlsZSBpcworIyBhdXRvbWF0
aWNhbGx5IHVwbG9hZGVkIHRvIHRoZSBhZG1pbiBjb25zb2xlIHdoZW4geW91IG5leHQgZGVwbG95
CisjIHlvdXIgYXBwbGljYXRpb24gdXNpbmcgYXBwY2ZnLnB5LgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvcXVldWVfc3RhdHVzLnB5IGIvV2ViS2l0VG9vbHMvQ29t
bWl0UXVldWVTdGF0dXMvcXVldWVfc3RhdHVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmZhMTlhMGMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9Db21taXRR
dWV1ZVN0YXR1cy9xdWV1ZV9zdGF0dXMucHkKQEAgLTAsMCArMSw5NiBAQAorIyBDb3B5cmlnaHQg
KGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2ltcG9ydCBjZ2kKK2ltcG9ydCBvcworCisjIFJlcXVlc3QgYSBtb2Rlcm4gRGph
bmdvCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZGlzdCBpbXBvcnQgdXNlX2xpYnJhcnkKK3VzZV9s
aWJyYXJ5KCdkamFuZ28nLCAnMS4xJykKKworZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dC53ZWJh
cHAgaW1wb3J0IHRlbXBsYXRlCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuYXBpIGltcG9ydCB1c2Vy
cworZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwCitmcm9tIGdvb2dsZS5h
cHBlbmdpbmUuZXh0LndlYmFwcC51dGlsIGltcG9ydCBydW5fd3NnaV9hcHAKK2Zyb20gZ29vZ2xl
LmFwcGVuZ2luZS5leHQgaW1wb3J0IGRiCisKK3dlYmFwcC50ZW1wbGF0ZS5yZWdpc3Rlcl90ZW1w
bGF0ZV9saWJyYXJ5KCdmaWx0ZXJzLndlYmtpdF9leHRyYXMnKQorCitjbGFzcyBRdWV1ZVN0YXR1
cyhkYi5Nb2RlbCk6CisgICAgYXV0aG9yID0gZGIuVXNlclByb3BlcnR5KCkKKyAgICBhY3RpdmVf
YnVnX2lkID0gZGIuSW50ZWdlclByb3BlcnR5KCkKKyAgICBhY3RpdmVfcGF0Y2hfaWQgPSBkYi5J
bnRlZ2VyUHJvcGVydHkoKQorICAgIG1lc3NhZ2UgPSBkYi5TdHJpbmdQcm9wZXJ0eShtdWx0aWxp
bmU9VHJ1ZSkKKyAgICBkYXRlID0gZGIuRGF0ZVRpbWVQcm9wZXJ0eShhdXRvX25vd19hZGQ9VHJ1
ZSkKKworY2xhc3MgTWFpblBhZ2Uod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYgZ2V0
KHNlbGYpOgorICAgICAgICBzdGF0dXNlc19xdWVyeSA9IFF1ZXVlU3RhdHVzLmFsbCgpLm9yZGVy
KCctZGF0ZScpCisgICAgICAgIHN0YXR1c2VzID0gc3RhdHVzZXNfcXVlcnkuZmV0Y2goNikKKyAg
ICAgICAgdGVtcGxhdGVfdmFsdWVzID0geworICAgICAgICAgICAgJ2xhc3Rfc3RhdHVzJyA6IHN0
YXR1c2VzWzBdLAorICAgICAgICAgICAgJ3JlY2VudF9zdGF0dXNlcycgOiBzdGF0dXNlc1sxOl0s
CisgICAgICAgIH0KKyAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUodGVtcGxhdGUucmVu
ZGVyKCdpbmRleC5odG1sJywgdGVtcGxhdGVfdmFsdWVzKSkKKworY2xhc3MgVXBkYXRlU3RhdHVz
KHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CisgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgc2Vs
Zi5yZXNwb25zZS5vdXQud3JpdGUodGVtcGxhdGUucmVuZGVyKCd1cGRhdGVfc3RhdHVzLmh0bWwn
LCBOb25lKSkKKworICAgIGRlZiBfaW50X2Zyb21fcmVxdWVzdChzZWxmLCBuYW1lKToKKyAgICAg
ICAgc3RyaW5nX3ZhbHVlID0gc2VsZi5yZXF1ZXN0LmdldChuYW1lKQorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBpbnRfdmFsdWUgPSBpbnQoc3RyaW5nX3ZhbHVlKQorICAgICAgICBleGNlcHQg
VmFsdWVFcnJvciwgVHlwZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICByZXR1cm4g
Tm9uZQorCisgICAgZGVmIHBvc3Qoc2VsZik6CisgICAgICAgIHF1ZXVlX3N0YXR1cyA9IFF1ZXVl
U3RhdHVzKCkKKworICAgICAgICBpZiB1c2Vycy5nZXRfY3VycmVudF91c2VyKCk6CisgICAgICAg
ICAgICBxdWV1ZV9zdGF0dXMuYXV0aG9yID0gdXNlcnMuZ2V0X2N1cnJlbnRfdXNlcigpCisKKyAg
ICAgICAgcXVldWVfc3RhdHVzLmFjdGl2ZV9idWdfaWQgPSBzZWxmLl9pbnRfZnJvbV9yZXF1ZXN0
KCdidWdfaWQnKQorICAgICAgICBxdWV1ZV9zdGF0dXMuYWN0aXZlX3BhdGNoX2lkID0gc2VsZi5f
aW50X2Zyb21fcmVxdWVzdCgncGF0Y2hfaWQnKQorICAgICAgICBxdWV1ZV9zdGF0dXMubWVzc2Fn
ZSA9IHNlbGYucmVxdWVzdC5nZXQoJ3N0YXR1cycpCisgICAgICAgIHF1ZXVlX3N0YXR1cy5wdXQo
KQorICAgICAgICBzZWxmLnJlZGlyZWN0KCcvJykKKworcm91dGVzID0gWworICAgICgnLycsIE1h
aW5QYWdlKSwKKyAgICAoJy91cGRhdGVfc3RhdHVzJywgVXBkYXRlU3RhdHVzKQorXQorCithcHBs
aWNhdGlvbiA9IHdlYmFwcC5XU0dJQXBwbGljYXRpb24ocm91dGVzLCBkZWJ1Zz1UcnVlKQorCitk
ZWYgbWFpbigpOgorICAgIHJ1bl93c2dpX2FwcChhcHBsaWNhdGlvbikKKworaWYgX19uYW1lX18g
PT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NvbW1p
dFF1ZXVlU3RhdHVzL3N0eWxlc2hlZXRzL21haW4uY3NzIGIvV2ViS2l0VG9vbHMvQ29tbWl0UXVl
dWVTdGF0dXMvc3R5bGVzaGVldHMvbWFpbi5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNTVkMzY5NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0NvbW1pdFF1
ZXVlU3RhdHVzL3N0eWxlc2hlZXRzL21haW4uY3NzCkBAIC0wLDAgKzEsMjYgQEAKK2JvZHkgewor
ICBmb250LWZhbWlseTogVmVyZGFuYSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOworfQorCisjY3Vy
cmVudF9zdGF0dXMgeworICAgIHBhZGRpbmc6IDVweDsKKyAgICBmb250LXNpemU6IGxhcmdlcjsK
K30KKworI2xhc3Rfc3RhdHVzX2RhdGUgeworICAgIGZvbnQtc2l6ZTogc21hbGw7Cit9CisKKy5y
ZWNlbnRfc3RhdHVzIHsKKyAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7Cit9CisKKyNyZWNlbnRfc3Rh
dHVzX3RhYmxlIHsKKyAgICBmb250LXNpemU6IHNtYWxsOworICAgIG1hcmdpbjogMTBweDsKK30K
KworI2Zvb3RlciB7CisgICAgZm9udC1zaXplOiBzbWFsbDsKKyAgICBwYWRkaW5nLXRvcDogMTBw
eDsKK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVlU3RhdHVzL3VwZGF0ZV9z
dGF0dXMuaHRtbCBiL1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVlU3RhdHVzL3VwZGF0ZV9zdGF0dXMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjIyMmRiCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvdXBkYXRlX3N0YXR1cy5o
dG1sCkBAIC0wLDAgKzEsMTkgQEAKK1VwZGF0ZSB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIGNv
bW1pdC1xdWV1ZToKKzxmb3JtIG5hbWU9InVwZGF0ZV9zdGF0dXMiIG1ldGhvZD0icG9zdCI+Cisg
PGRpdj4KKyAgICAgQWN0aXZlIEJ1ZyBJZDoKKyAgICA8aW5wdXQgbmFtZT0iYnVnX2lkIj4KKyA8
L2Rpdj4KKyA8ZGl2PgorICAgICBBY3RpdmUgUGF0Y2ggSWQ6CisgICAgPGlucHV0IG5hbWU9InBh
dGNoX2lkIj4KKyA8L2Rpdj4KKyA8ZGl2PgorICAgICBTcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBv
dGhlciBidWdzIGluIHF1ZXVlOgorICAgIDxpbnR1dCBuYW1lPSJidWdzX2luX3F1ZXVlIj4KKyA8
L2Rpdj4KKyAgPGRpdj4KKyAgICAgIDx0ZXh0YXJlYSBuYW1lPSJzdGF0dXMiIHJvd3M9IjMiIGNv
bHM9IjYwIj48L3RleHRhcmVhPgorICA8L2Rpdj4KKyAgPGRpdj48aW5wdXQgdHlwZT0ic3VibWl0
IiB2YWx1ZT0iQWRkIFN0YXR1cyI+PC9kaXY+Cis8L2Zvcm0+CmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wgYi9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxh
LXRvb2wKaW5kZXggNGQyYjVmMy4uMDUyODQxZiAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9idWd6aWxsYS10b29sCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9v
bApAQCAtMzcsNyArMzcsNyBAQCBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0
IHRpbWUKIAotZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gZGF0ZXRpbWUgaW1w
b3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKIGZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNl
ciwgSW5kZW50ZWRIZWxwRm9ybWF0dGVyLCBTVVBQUkVTU19VU0FHRSwgbWFrZV9vcHRpb24KIAog
IyBJbXBvcnQgV2ViS2l0LXNwZWNpZmljIG1vZHVsZXMuCkBAIC00Niw2ICs0Niw3IEBAIGZyb20g
bW9kdWxlcy5jaGFuZ2Vsb2dzIGltcG9ydCBDaGFuZ2VMb2csIHZpZXdfc291cmNlX3VybAogZnJv
bSBtb2R1bGVzLmxvZ2dpbmcgaW1wb3J0IGVycm9yLCBsb2csIHRlZQogZnJvbSBtb2R1bGVzLnNj
bSBpbXBvcnQgQ29tbWl0TWVzc2FnZSwgZGV0ZWN0X3NjbV9zeXN0ZW0sIFNjcmlwdEVycm9yCiBm
cm9tIG1vZHVsZXMuYnVpbGRib3QgaW1wb3J0IEJ1aWxkQm90Citmcm9tIG1vZHVsZXMuc3RhdHVz
Ym90IGltcG9ydCBTdGF0dXNCb3QKIAogZGVmIHBsdXJhbChub3VuKToKICAgICAjIFRoaXMgaXMg
YSBkdW1iIHBsdXJhbCgpIGltcGxlbWVudGF0aW9uIHdoaWNoIHdhcyBqdXN0IGVub3VnaCBmb3Ig
b3VyIHVzZXMuCkBAIC03MDksNiArNzEwLDcgQEAgY2xhc3MgTGFuZFBhdGNoZXNGcm9tQ29tbWl0
UXVldWUoQ29tbWFuZCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBvcHRpb25z
ID0gWwogICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tY29uZmlybSIsIGFjdGlvbj0ic3Rv
cmVfZmFsc2UiLCBkZXN0PSJjb25maXJtIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEbyBub3QgYXNr
IHRoZSB1c2VyIGZvciBjb25maXJtYXRpb24gYmVmb3JlIHJ1bm5pbmcgdGhlIHF1ZXVlLiAgRGFu
Z2Vyb3VzISIpLAorICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tc3RhdHVzLWhvc3QiLCBhY3Rp
b249InN0b3JlIiwgdHlwZT0ic3RyaW5nIiwgZGVzdD0ic3RhdHVzX2hvc3QiLCBkZWZhdWx0PVN0
YXR1c0JvdC5kZWZhdWx0X2hvc3QsIGhlbHA9IkRvIG5vdCBhc2sgdGhlIHVzZXIgZm9yIGNvbmZp
cm1hdGlvbiBiZWZvcmUgcnVubmluZyB0aGUgcXVldWUuICBEYW5nZXJvdXMhIiksCiAgICAgICAg
IF0KICAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAnUnVuIHRoZSBjb21taXQgcXVldWUu
Jywgb3B0aW9ucz1vcHRpb25zKQogICAgICAgICBzZWxmLl9vcmlnaW5hbF9zdGRvdXQgPSBOb25l
CkBAIC03MTgsNiArNzIwLDEwIEBAIGNsYXNzIExhbmRQYXRjaGVzRnJvbUNvbW1pdFF1ZXVlKENv
bW1hbmQpOgogICAgIHF1ZXVlX2xvZ19wYXRoID0gJ2NvbW1pdF9xdWV1ZS5sb2cnCiAgICAgYnVn
X2xvZ3NfZGlyZWN0b3J5ID0gJ2NvbW1pdF9xdWV1ZV9sb2dzJwogCisgICAgbG9nX2RhdGVfZm9y
bWF0ID0gIiVZLSVtLSVkICVIOiVNOiVTIgorICAgIHNsZWVwX2R1cmF0aW9uX3RleHQgPSAiNSBt
aW5zIgorICAgIHNlY29uZHNfdG9fc2xlZXAgPSAzMDAKKwogICAgIGRlZiBfdGVlX291dHB1dHNf
dG9fZmlsZXMoc2VsZiwgZmlsZXMpOgogICAgICAgICBpZiBub3Qgc2VsZi5fb3JpZ2luYWxfc3Rk
b3V0OgogICAgICAgICAgICAgc2VsZi5fb3JpZ2luYWxfc3Rkb3V0ID0gc3lzLnN0ZG91dApAQCAt
NzI5LDEwICs3MzUsMjEgQEAgY2xhc3MgTGFuZFBhdGNoZXNGcm9tQ29tbWl0UXVldWUoQ29tbWFu
ZCk6CiAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc2VsZi5fb3JpZ2luYWxfc3Rkb3V0CiAgICAg
ICAgICAgICBzeXMuc3RkZXJyID0gc2VsZi5fb3JpZ2luYWxfc3RkZXJyCiAKLSAgICBAc3RhdGlj
bWV0aG9kCi0gICAgZGVmIF9zbGVlcChsb2dfbWVzc2FnZSk6Ci0gICAgICAgIGxvZygiJXMgIFNs
ZWVwaW5nIDUgbWludXRlcy4uLiAlcyIgJSAobG9nX21lc3NhZ2UsIGRhdGV0aW1lLm5vdygpKSkK
LSAgICAgICAgdGltZS5zbGVlcCgzMDApICMgV2FpdCA1IG1pbnV0ZXMKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgX3NsZWVwX21lc3NhZ2UoY2xzLCBtZXNzYWdlKToKKyAgICAgICAgd2FrZV90
aW1lID0gZGF0ZXRpbWUubm93KCkgKyB0aW1lZGVsdGEoc2Vjb25kcz1jbHMuc2Vjb25kc190b19z
bGVlcCkKKyAgICAgICAgcmV0dXJuICIlcyBTbGVlcGluZyB1bnRpbCAlcyAoJXMpLiIgJSAobWVz
c2FnZSwgd2FrZV90aW1lLnN0cmZ0aW1lKGNscy5sb2dfZGF0ZV9mb3JtYXQpLCBjbHMuc2xlZXBf
ZHVyYXRpb25fdGV4dCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfc2xlZXAoY2xzLCBt
ZXNzYWdlKToKKyAgICAgICAgbG9nKGNscy5fc2xlZXBfbWVzc2FnZShtZXNzYWdlKSkKKyAgICAg
ICAgdGltZS5zbGVlcChjbHMuc2Vjb25kc190b19zbGVlcCkKKworICAgIGRlZiBfdXBkYXRlX3N0
YXR1c19hbmRfc2xlZXAoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHN0YXR1c19tZXNzYWdlID0g
c2VsZi5fc2xlZXBfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICBzZWxmLnN0YXR1c19ib3QudXBk
YXRlX3N0YXR1cyhzdGF0dXNfbWVzc2FnZSkKKyAgICAgICAgbG9nKHN0YXR1c19tZXNzYWdlKQor
ICAgICAgICB0aW1lLnNsZWVwKHNlbGYuc2Vjb25kc190b19zbGVlcCkKIAogICAgIEBzdGF0aWNt
ZXRob2QKICAgICBkZWYgX29wZW5fbG9nX2ZpbGUobG9nX3BhdGgpOgpAQCAtNzYwLDcgKzc3Nyw5
IEBAIGNsYXNzIExhbmRQYXRjaGVzRnJvbUNvbW1pdFF1ZXVlKENvbW1hbmQpOgogICAgICAgICAg
ICAgICAgIGVycm9yKCJVc2VyIGRlY2xpbmVkLiIpCiAKICAgICAgICAgcXVldWVfbG9nID0gc2Vs
Zi5fYWRkX2xvZ190b19vdXRwdXRfdGVlKHNlbGYucXVldWVfbG9nX3BhdGgpCi0gICAgICAgIGxv
ZygiUnVubmluZyBXZWJLaXQgQ29tbWl0IFF1ZXVlLiAlcyIgJSBkYXRldGltZS5ub3coKSkKKyAg
ICAgICAgbG9nKCJSdW5uaW5nIFdlYktpdCBDb21taXQgUXVldWUuICVzIiAlIGRhdGV0aW1lLm5v
dygpLnN0cmZ0aW1lKHNlbGYubG9nX2RhdGVfZm9ybWF0KSkKKworICAgICAgICBzZWxmLnN0YXR1
c19ib3QgPSBTdGF0dXNCb3QoaG9zdD1vcHRpb25zLnN0YXR1c19ob3N0KQogCiAgICAgICAgIHdo
aWxlIChUcnVlKToKICAgICAgICAgICAgICMgRWl0aGVyIG9mIHRoZXNlIGNhbGxzIGNvdWxkIHRo
cm93IFVSTEVycm9yIHdoaWNoIHNob3VsZG4ndCBzdG9wIHRoZSBxdWV1ZS4KQEAgLTc2OSwxNiAr
Nzg4LDE5IEBAIGNsYXNzIExhbmRQYXRjaGVzRnJvbUNvbW1pdFF1ZXVlKENvbW1hbmQpOgogICAg
ICAgICAgICAgICAgICMgRmV0Y2ggcGF0Y2hlcyBpbnN0ZWFkIG9mIGp1c3QgYnVnIGlkcyB0byB0
aGF0IHdlIHZhbGlkYXRlIHJldmlld2VyL2NvbW1pdHRlciBmbGFncyBvbiBldmVyeSBwYXRjaC4K
ICAgICAgICAgICAgICAgICBwYXRjaGVzID0gdG9vbC5idWdzLmZldGNoX3BhdGNoZXNfZnJvbV9j
b21taXRfcXVldWUocmVqZWN0X2ludmFsaWRfcGF0Y2hlcz1UcnVlKQogICAgICAgICAgICAgICAg
IGlmIG5vdCBsZW4ocGF0Y2hlcyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NsZWVwKCJF
bXB0eSBxdWV1ZS4iKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzX2Fu
ZF9zbGVlcCgiRW1wdHkgcXVldWUuIikKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAg
ICAgICAgICAgICAgICBwYXRjaF9pZHMgPSBtYXAobGFtYmRhIHBhdGNoOiBwYXRjaFsnaWQnXSwg
cGF0Y2hlcykKICAgICAgICAgICAgICAgICBmaXJzdF9idWdfaWQgPSBwYXRjaGVzWzBdWydidWdf
aWQnXQogICAgICAgICAgICAgICAgIGxvZygiJXMgaW4gY29tbWl0IHF1ZXVlIFslc10iICUgKHBs
dXJhbGl6ZSgncGF0Y2gnLCBsZW4ocGF0Y2hlcykpLCAiLCAiLmpvaW4ocGF0Y2hfaWRzKSkpCiAK
ICAgICAgICAgICAgICAgICBpZiBub3QgdG9vbC5idWlsZGJvdC5jb3JlX2J1aWxkZXJzX2FyZV9n
cmVlbigpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zbGVlcCgiQnVpbGRlcnMgYXJlIHJl
ZC4iKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzX2FuZF9zbGVlcCgi
QnVpbGRlcnMgKGh0dHA6Ly9idWlsZC53ZWJraXQub3JnKSBhcmUgcmVkLiIpCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXR1c19ib3QudXBk
YXRlX3N0YXR1cygiTGFuZGluZyBwYXRjaGVzIGZyb20gYnVnICVzLiIgJSBmaXJzdF9idWdfaWQs
IGJ1Z19pZD1maXJzdF9idWdfaWQpCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgor
ICAgICAgICAgICAgICAgICMgRG9uJ3QgdHJ5IHRlbGwgdGhlIHN0YXR1cyBib3QsIGluIGNhc2Ug
dGVsbGluZyBpdCBjYXVzZXMgYW4gZXhjZXB0aW9uLgogICAgICAgICAgICAgICAgIHNlbGYuX3Ns
ZWVwKCJFeGNlcHRpb24gd2hpbGUgY2hlY2tpbmcgcXVldWUgYW5kIGJvdHM6ICVzLiIgJSBlKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKQEAgLTc5MCw3ICs4MTIsNyBAQCBjbGFzcyBMYW5k
UGF0Y2hlc0Zyb21Db21taXRRdWV1ZShDb21tYW5kKToKICAgICAgICAgICAgIFdlYktpdExhbmRp
bmdTY3JpcHRzLnJ1bl9jb21tYW5kX3dpdGhfdGVlZF9vdXRwdXQoYnVnemlsbGFfdG9vbF9hcmdz
LCBzeXMuc3Rkb3V0KQogICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2xvZ19mcm9tX291dHB1dF90
ZWUoYnVnX2xvZykKIAotICAgICAgICBsb2coIkZpbmlzaGVkIFdlYktpdCBDb21taXQgUXVldWUu
ICVzIiAlIGRhdGV0aW1lLm5vdygpKQorICAgICAgICBsb2coIkZpbmlzaGVkIFdlYktpdCBDb21t
aXQgUXVldWUuICVzIiAlIGRhdGV0aW1lLm5vdygpLnN0cmZ0aW1lKHNlbGYubG9nX2RhdGVfZm9y
bWF0KSkKICAgICAgICAgc2VsZi5fcmVtb3ZlX2xvZ19mcm9tX291dHB1dF90ZWUocXVldWVfbG9n
KQogCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zdGF0dXNib3Qu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc3RhdHVzYm90LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMmNhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL21vZHVsZXMvc3RhdHVzYm90LnB5CkBAIC0wLDAgKzEsNjYgQEAKKyMg
Q29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyAK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24u
CisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgV2ViS2l0J3MgUHl0aG9uIG1vZHVsZSBmb3IgaW50ZXJh
Y3Rpbmcgd2l0aCB0aGUgQ29tbWl0IFF1ZXVlIHN0YXR1cyBwYWdlLgorCisjIFdlYktpdCBpbmNs
dWRlcyBhIGJ1aWx0IGNvcHkgb2YgQmVhdXRpZnVsU291cCBpbiBTY3JpcHRzL21vZHVsZXMKKyMg
c28gdGhpcyBpbXBvcnQgc2hvdWxkIGFsd2F5cyBzdWNjZWVkLgorZnJvbSAuQmVhdXRpZnVsU291
cCBpbXBvcnQgQmVhdXRpZnVsU291cAorCit0cnk6CisgICAgZnJvbSBtZWNoYW5pemUgaW1wb3J0
IEJyb3dzZXIKK2V4Y2VwdCBJbXBvcnRFcnJvciwgZToKKyAgICBwcmludCAiIiIKK21lY2hhbml6
ZSBpcyByZXF1aXJlZC4KKworVG8gaW5zdGFsbDoKK3N1ZG8gZWFzeV9pbnN0YWxsIG1lY2hhbml6
ZQorCitPciBmcm9tIHRoZSB3ZWI6CitodHRwOi8vd3d3c2VhcmNoLnNvdXJjZWZvcmdlLm5ldC9t
ZWNoYW5pemUvCisiIiIKKyAgICBleGl0KDEpCisKK2NsYXNzIFN0YXR1c0JvdDoKKyAgICBkZWZh
dWx0X2hvc3QgPSAid2Via2l0LWNvbW1pdC1xdWV1ZS5hcHBzcG90LmNvbSIKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBob3N0PWRlZmF1bHRfaG9zdCk6CisgICAgICAgIHNlbGYuc3RhdHVzYm90
X2hvc3QgPSBob3N0CisgICAgICAgIHNlbGYuc3RhdHVzYm90X3NlcnZlcl91cmwgPSAiaHR0cDov
LyVzIiAlIHNlbGYuc3RhdHVzYm90X2hvc3QKKyAgICAgICAgc2VsZi51cGRhdGVfc3RhdHVzX3Vy
bCA9ICIlcy91cGRhdGVfc3RhdHVzIiAlIHNlbGYuc3RhdHVzYm90X3NlcnZlcl91cmwKKyAgICAg
ICAgc2VsZi5icm93c2VyID0gQnJvd3NlcigpCisKKyAgICBkZWYgdXBkYXRlX3N0YXR1cyhzZWxm
LCBzdGF0dXMsIGJ1Z19pZD1Ob25lLCBwYXRjaF9pZD1Ob25lKToKKyAgICAgICAgc2VsZi5icm93
c2VyLm9wZW4oc2VsZi51cGRhdGVfc3RhdHVzX3VybCkKKyAgICAgICAgc2VsZi5icm93c2VyLnNl
bGVjdF9mb3JtKG5hbWU9InVwZGF0ZV9zdGF0dXMiKQorICAgICAgICBpZiBidWdfaWQ6CisgICAg
ICAgICAgICBzZWxmLmJyb3dzZXJbJ2J1Z19pZCddID0gc3RyKGJ1Z19pZCkKKyAgICAgICAgaWYg
cGF0Y2hfaWQ6CisgICAgICAgICAgICBzZWxmLmJyb3dzZXJbJ3BhdGNoX2lkJ10gPSBzdHIocGF0
Y2hfaWQpCisgICAgICAgIHNlbGYuYnJvd3Nlclsnc3RhdHVzJ10gPSBzdGF0dXMKKyAgICAgICAg
c2VsZi5icm93c2VyLnN1Ym1pdCgp
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39795</attachid>
            <date>2009-09-18 15:06:47 -0700</date>
            <delta_ts>2009-09-22 15:30:37 -0700</delta_ts>
            <desc>Fixed queued bugs url</desc>
            <filename>bug-29307-20090918150646.patch</filename>
            <type>text/plain</type>
            <size>20662</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBhMTc5MThkLi4xNjE0MDRhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDkt
MTcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbW1pdC1xdWV1ZSBuZWVkcyB3ZWItYmFzZWQg
c3RhdHVzIHJlcG9ydGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjkzMDcKKworICAgICAgICBBZGQgYSBmaXJzdC1wYXNzIHdlYi1iYXNlZCBzdGF0
dXMgZm9yIHRoZSBjb21taXQtcXVldWUuCisgICAgICAgIFRoZSBib3QgaXMgY3VycmVudGx5IHJl
YWNoYWJsZSBhdDoKKyAgICAgICAgaHR0cDovL3dlYmtpdC1jb21taXQtcXVldWUuYXBwc3BvdC5j
b20vCisKKyAgICAgICAgKiBTY3JpcHRzL2J1Z3ppbGxhLXRvb2w6CisgICAgICAgICAtIEFkZCBz
b21lIHZlcnkgYmFzaWMgdXBkYXRlX3N0YXR1cyBjYWxscy4KKyAgICAgICAgKiBTY3JpcHRzL21v
ZHVsZXMvc3RhdHVzYm90LnB5OiBBZGRlZC4KKyAgICAgICAgIC0gS25vd3MgaG93IHRvIHBvc3Qg
dG8gdGhlIENvbW1pdFF1ZXVlU3RhdHVzIHdlYiBhcHBsaWNhdGlvbi4KKwogMjAwOS0wOS0xNiAg
RXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9D
aGFuZ2VMb2cgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9DaGFuZ2VMb2cKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAzNGU3NAotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVlU3RhdHVzL0NoYW5nZUxvZwpAQCAtMCwwICsxLDI0IEBA
CisyMDA5LTA5LTE3ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBjb21taXQtcXVldWUgbmVlZHMg
d2ViLWJhc2VkIHN0YXR1cyByZXBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI5MzA3CisKKyAgICAgICAgKiBhcHAueWFtbDogQWRkZWQuCisg
ICAgICAgICAtIEFwcGxpY2F0aW9uIGRlc2NyaXB0aW9uIGZpbGUgcmVxdWlyZWQgYnkgQXBwIEVu
Z2luZS4KKyAgICAgICAgKiBmaWx0ZXJzL19faW5pdF9fLnB5OiBBZGRlZC4KKyAgICAgICAgIC0g
UmVxdWlyZWQgYnkgcHl0aG9uIHRvIHRyZWF0ICdmaWx0ZXJzJyBhcyBhIG1vZHVsZS4KKyAgICAg
ICAgKiBmaWx0ZXJzL3dlYmtpdF9leHRyYXMucHk6IEFkZGVkLgorICAgICAgICAgLSBTdXBwb3J0
IGZvciB0dXJuaW5nICdidWcgMTIzJyBhbmQgJ3BhdGNoIDEyMycgaW50byBsaW5rcy4KKyAgICAg
ICAgICAgVGhpcyBsZXRzIHVzIHVzZSBwbGFpbiB0ZXh0IHN0cmluZ3MgaW4gb3VyIGxvZ3MgeWV0
IGRpc3BsYXkgbmljZSBIVE1MIChoZWxwIHByZXZlbnQgWFNTIGF0dGFja3Mgb24gdGhlIHBhZ2Up
LgorICAgICAgICAqIGluZGV4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluZGV4LnlhbWw6IEFk
ZGVkLgorICAgICAgICAgLSBTb21lIGF1dG8tZ2VuZXJhdGVkIGZpbGUgZnJvbSBhcHAgZW5naW5l
LgorICAgICAgICAqIHF1ZXVlX3N0YXR1cy5weTogQWRkZWQuCisgICAgICAgICAtIFRoZSBjb3Jl
IGxvZ2ljIG9mIHRoaXMgYm90LiAgV2UgY291bGQgZXZlbnR1YWxseSBzcGxpdCB0aGlzIGZpbGUg
b3V0IGludG8gcGllY2VzLgorICAgICAgICAqIHN0eWxlc2hlZXRzL21haW4uY3NzOiBBZGRlZC4K
KyAgICAgICAgIC0gU29tZSBiYXNpYyBsYW1lLW8gQ1NTIHRvIG1ha2UgdGhlIHBhZ2UgbG9vayBs
ZXNzIGF3ZnVsLgorICAgICAgICAqIHVwZGF0ZV9zdGF0dXMuaHRtbDogQWRkZWQuCisgICAgICAg
ICAtIFRoZSBmb3JtIHRoYXQgdGhlIGNvbW1pdC1xdWV1ZSAob3IgYSBodW1hbikgY2FuIHVzZSB0
byB1cGRhdGUgdGhlIHN0YXR1cy4KKwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ29tbWl0UXVl
dWVTdGF0dXMvYXBwLnlhbWwgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9hcHAueWFt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzU2MTEyCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvYXBwLnlhbWwKQEAgLTAsMCAr
MSwxMSBAQAorYXBwbGljYXRpb246IHdlYmtpdC1jb21taXQtcXVldWUKK3ZlcnNpb246IDEKK3J1
bnRpbWU6IHB5dGhvbgorYXBpX3ZlcnNpb246IDEKKworaGFuZGxlcnM6CistIHVybDogL3N0eWxl
c2hlZXRzCisgIHN0YXRpY19kaXI6IHN0eWxlc2hlZXRzCisKKy0gdXJsOiAvLioKKyAgc2NyaXB0
OiBxdWV1ZV9zdGF0dXMucHkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVlU3Rh
dHVzL2ZpbHRlcnMvX19pbml0X18ucHkgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9m
aWx0ZXJzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVm
NjViZWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9m
aWx0ZXJzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgUmVxdWlyZWQgZm9yIFB5dGhvbiB0
byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvZmlsdGVycy93ZWJraXRfZXh0cmFzLnB5IGIvV2Vi
S2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvZmlsdGVycy93ZWJraXRfZXh0cmFzLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1OGM5OTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9maWx0ZXJzL3dlYmtpdF9leHRyYXMucHkK
QEAgLTAsMCArMSw0NCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gZGphbmdvLnRlbXBs
YXRlLmRlZmF1bHRmaWx0ZXJzIGltcG9ydCBzdHJpbmdmaWx0ZXIKK2Zyb20gZ29vZ2xlLmFwcGVu
Z2luZS5leHQgaW1wb3J0IHdlYmFwcAorCitpbXBvcnQgcmUKKworYnVnX3JlZ2V4cCA9IHJlLmNv
bXBpbGUoImJ1ZyAoP1A8YnVnX2lkPlxkKykiKQorcGF0Y2hfcmVnZXhwID0gcmUuY29tcGlsZSgi
cGF0Y2ggKD9QPHBhdGNoX2lkPlxkKykiKQorCitAc3RyaW5nZmlsdGVyCitkZWYgd2Via2l0X2xp
bmtpZnkodmFsdWUpOgorICAgIHZhbHVlID0gYnVnX3JlZ2V4cC5zdWIoJzxhIGhyZWY9Imh0dHA6
Ly93ZWJraXQub3JnL2IvXGc8YnVnX2lkPiI+YnVnIFxnPGJ1Z19pZD48L2E+JywgdmFsdWUpCisg
ICAgdmFsdWUgPSBwYXRjaF9yZWdleHAuc3ViKCc8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9hdHRhY2htZW50LmNnaT9pZD1cZzxwYXRjaF9pZD4mYWN0aW9uPXByZXR0eXBhdGNoIj5w
YXRjaCBcZzxwYXRjaF9pZD48L2E+JywgdmFsdWUpCisgICAgcmV0dXJuIHZhbHVlCisKK3JlZ2lz
dGVyID0gd2ViYXBwLnRlbXBsYXRlLmNyZWF0ZV90ZW1wbGF0ZV9yZWdpc3RlcigpCityZWdpc3Rl
ci5maWx0ZXIod2Via2l0X2xpbmtpZnkpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9Db21taXRR
dWV1ZVN0YXR1cy9pbmRleC5odG1sIGIvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvaW5k
ZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjVhY2VkCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvaW5kZXguaHRtbApA
QCAtMCwwICsxLDI4IEBACis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5XZWJLaXQgQ29tbWl0
IFF1ZXVlIFN0YXR1czwvdGl0bGU+CisgICAgPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iL3N0eWxlc2hlZXRzL21haW4uY3NzIiAvPgorPC9oZWFkPgorPGJvZHk+
CisgICAgPGNlbnRlcj4KKyAgICA8ZGl2IGlkPSJjdXJyZW50X3N0YXR1cyI+CisgICAgICAgIHt7
IGxhc3Rfc3RhdHVzLm1lc3NhZ2V8Zm9yY2VfZXNjYXBlfHVybGl6ZXx3ZWJraXRfbGlua2lmeXxz
YWZlIH19CisgICAgICAgIDxkaXYgaWQ9Imxhc3Rfc3RhdHVzX2RhdGUiPkFzIG9mIHt7IGxhc3Rf
c3RhdHVzLmRhdGV8dGltZXNpbmNlIH19IGFnbzwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPHRh
YmxlIGlkPSJyZWNlbnRfc3RhdHVzX3RhYmxlIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgICAg
PHRoIGNvbHNwYW49Mj5SZWNlbnQgU3RhdHVzPC90aD4KKyAgICAgICAgPC90cj4KKyAgICAgICAg
eyUgZm9yIHJlY2VudF9zdGF0dXMgaW4gcmVjZW50X3N0YXR1c2VzICV9CisgICAgICAgIDx0cj4K
KyAgICAgICAgICAgIDx0ZCBjbGFzcz0nc3RhdHVzX2RhdGUnPnt7IHJlY2VudF9zdGF0dXMuZGF0
ZXx0aW1lc2luY2UgfX0gYWdvPC90ZD4KKyAgICAgICAgICAgIDx0ZCBjbGFzcz0icmVjZW50X3N0
YXR1cyI+e3sgcmVjZW50X3N0YXR1cy5tZXNzYWdlfGZvcmNlX2VzY2FwZXx1cmxpemV8d2Via2l0
X2xpbmtpZnl8c2FmZSB9fTwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIHslIGVuZGZvciAl
fQorICAgIDwvdGFibGU+CisKKyAgICA8ZGl2IGlkPSJmb290ZXIiPjxhIGhyZWY9Imh0dHBzOi8v
YnVncy53ZWJraXQub3JnL2J1Z2xpc3QuY2dpP3F1ZXJ5X2Zvcm1hdD1hZHZhbmNlZCZidWdfc3Rh
dHVzPVVOQ09ORklSTUVEJmJ1Z19zdGF0dXM9TkVXJmJ1Z19zdGF0dXM9QVNTSUdORUQmYnVnX3N0
YXR1cz1SRU9QRU5FRCZmaWVsZDAtMC0wPWZsYWd0eXBlcy5uYW1lJnR5cGUwLTAtMD1lcXVhbHMm
dmFsdWUwLTAtMD1jb21taXQtcXVldWUlMkIiPnF1ZXVlZCBidWdzPC9hPiB8IDxhIGhyZWY9Imh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvd2lraS9Db21taXRRdWV1ZSI+ZG9jdW1lbnRhdGlvbjwvYT4g
fCA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPndlYmtpdC5vcmc8L2E+PC9kaXY+CisgICAg
PC9jZW50ZXI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9Db21t
aXRRdWV1ZVN0YXR1cy9pbmRleC55YW1sIGIvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMv
aW5kZXgueWFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2I5ZTA1Ci0t
LSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvaW5kZXgueWFt
bApAQCAtMCwwICsxLDExIEBACitpbmRleGVzOgorCisjIEFVVE9HRU5FUkFURUQKKworIyBUaGlz
IGluZGV4LnlhbWwgaXMgYXV0b21hdGljYWxseSB1cGRhdGVkIHdoZW5ldmVyIHRoZSBkZXZfYXBw
c2VydmVyCisjIGRldGVjdHMgdGhhdCBhIG5ldyB0eXBlIG9mIHF1ZXJ5IGlzIHJ1bi4gIElmIHlv
dSB3YW50IHRvIG1hbmFnZSB0aGUKKyMgaW5kZXgueWFtbCBmaWxlIG1hbnVhbGx5LCByZW1vdmUg
dGhlIGFib3ZlIG1hcmtlciBsaW5lICh0aGUgbGluZQorIyBzYXlpbmcgIiMgQVVUT0dFTkVSQVRF
RCIpLiAgSWYgeW91IHdhbnQgdG8gbWFuYWdlIHNvbWUgaW5kZXhlcworIyBtYW51YWxseSwgbW92
ZSB0aGVtIGFib3ZlIHRoZSBtYXJrZXIgbGluZS4gIFRoZSBpbmRleC55YW1sIGZpbGUgaXMKKyMg
YXV0b21hdGljYWxseSB1cGxvYWRlZCB0byB0aGUgYWRtaW4gY29uc29sZSB3aGVuIHlvdSBuZXh0
IGRlcGxveQorIyB5b3VyIGFwcGxpY2F0aW9uIHVzaW5nIGFwcGNmZy5weS4KZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVlU3RhdHVzL3F1ZXVlX3N0YXR1cy5weSBiL1dlYktpdFRv
b2xzL0NvbW1pdFF1ZXVlU3RhdHVzL3F1ZXVlX3N0YXR1cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5mYTE5YTBjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMv
Q29tbWl0UXVldWVTdGF0dXMvcXVldWVfc3RhdHVzLnB5CkBAIC0wLDAgKzEsOTYgQEAKKyMgQ29w
eXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitpbXBvcnQgY2dpCitpbXBvcnQgb3MKKworIyBSZXF1ZXN0IGEgbW9k
ZXJuIERqYW5nbworZnJvbSBnb29nbGUuYXBwZW5naW5lLmRpc3QgaW1wb3J0IHVzZV9saWJyYXJ5
Cit1c2VfbGlicmFyeSgnZGphbmdvJywgJzEuMScpCisKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5l
eHQud2ViYXBwIGltcG9ydCB0ZW1wbGF0ZQorZnJvbSBnb29nbGUuYXBwZW5naW5lLmFwaSBpbXBv
cnQgdXNlcnMKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAorZnJvbSBn
b29nbGUuYXBwZW5naW5lLmV4dC53ZWJhcHAudXRpbCBpbXBvcnQgcnVuX3dzZ2lfYXBwCitmcm9t
IGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCBkYgorCit3ZWJhcHAudGVtcGxhdGUucmVnaXN0
ZXJfdGVtcGxhdGVfbGlicmFyeSgnZmlsdGVycy53ZWJraXRfZXh0cmFzJykKKworY2xhc3MgUXVl
dWVTdGF0dXMoZGIuTW9kZWwpOgorICAgIGF1dGhvciA9IGRiLlVzZXJQcm9wZXJ0eSgpCisgICAg
YWN0aXZlX2J1Z19pZCA9IGRiLkludGVnZXJQcm9wZXJ0eSgpCisgICAgYWN0aXZlX3BhdGNoX2lk
ID0gZGIuSW50ZWdlclByb3BlcnR5KCkKKyAgICBtZXNzYWdlID0gZGIuU3RyaW5nUHJvcGVydHko
bXVsdGlsaW5lPVRydWUpCisgICAgZGF0ZSA9IGRiLkRhdGVUaW1lUHJvcGVydHkoYXV0b19ub3df
YWRkPVRydWUpCisKK2NsYXNzIE1haW5QYWdlKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CisgICAg
ZGVmIGdldChzZWxmKToKKyAgICAgICAgc3RhdHVzZXNfcXVlcnkgPSBRdWV1ZVN0YXR1cy5hbGwo
KS5vcmRlcignLWRhdGUnKQorICAgICAgICBzdGF0dXNlcyA9IHN0YXR1c2VzX3F1ZXJ5LmZldGNo
KDYpCisgICAgICAgIHRlbXBsYXRlX3ZhbHVlcyA9IHsKKyAgICAgICAgICAgICdsYXN0X3N0YXR1
cycgOiBzdGF0dXNlc1swXSwKKyAgICAgICAgICAgICdyZWNlbnRfc3RhdHVzZXMnIDogc3RhdHVz
ZXNbMTpdLAorICAgICAgICB9CisgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKHRlbXBs
YXRlLnJlbmRlcignaW5kZXguaHRtbCcsIHRlbXBsYXRlX3ZhbHVlcykpCisKK2NsYXNzIFVwZGF0
ZVN0YXR1cyh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgorICAgIGRlZiBnZXQoc2VsZik6CisgICAg
ICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKHRlbXBsYXRlLnJlbmRlcigndXBkYXRlX3N0YXR1
cy5odG1sJywgTm9uZSkpCisKKyAgICBkZWYgX2ludF9mcm9tX3JlcXVlc3Qoc2VsZiwgbmFtZSk6
CisgICAgICAgIHN0cmluZ192YWx1ZSA9IHNlbGYucmVxdWVzdC5nZXQobmFtZSkKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgaW50X3ZhbHVlID0gaW50KHN0cmluZ192YWx1ZSkKKyAgICAgICAg
ZXhjZXB0IFZhbHVlRXJyb3IsIFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAg
cmV0dXJuIE5vbmUKKworICAgIGRlZiBwb3N0KHNlbGYpOgorICAgICAgICBxdWV1ZV9zdGF0dXMg
PSBRdWV1ZVN0YXR1cygpCisKKyAgICAgICAgaWYgdXNlcnMuZ2V0X2N1cnJlbnRfdXNlcigpOgor
ICAgICAgICAgICAgcXVldWVfc3RhdHVzLmF1dGhvciA9IHVzZXJzLmdldF9jdXJyZW50X3VzZXIo
KQorCisgICAgICAgIHF1ZXVlX3N0YXR1cy5hY3RpdmVfYnVnX2lkID0gc2VsZi5faW50X2Zyb21f
cmVxdWVzdCgnYnVnX2lkJykKKyAgICAgICAgcXVldWVfc3RhdHVzLmFjdGl2ZV9wYXRjaF9pZCA9
IHNlbGYuX2ludF9mcm9tX3JlcXVlc3QoJ3BhdGNoX2lkJykKKyAgICAgICAgcXVldWVfc3RhdHVz
Lm1lc3NhZ2UgPSBzZWxmLnJlcXVlc3QuZ2V0KCdzdGF0dXMnKQorICAgICAgICBxdWV1ZV9zdGF0
dXMucHV0KCkKKyAgICAgICAgc2VsZi5yZWRpcmVjdCgnLycpCisKK3JvdXRlcyA9IFsKKyAgICAo
Jy8nLCBNYWluUGFnZSksCisgICAgKCcvdXBkYXRlX3N0YXR1cycsIFVwZGF0ZVN0YXR1cykKK10K
KworYXBwbGljYXRpb24gPSB3ZWJhcHAuV1NHSUFwcGxpY2F0aW9uKHJvdXRlcywgZGVidWc9VHJ1
ZSkKKworZGVmIG1haW4oKToKKyAgICBydW5fd3NnaV9hcHAoYXBwbGljYXRpb24pCisKK2lmIF9f
bmFtZV9fID09ICJfX21haW5fXyI6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9Db21taXRRdWV1ZVN0YXR1cy9zdHlsZXNoZWV0cy9tYWluLmNzcyBiL1dlYktpdFRvb2xzL0Nv
bW1pdFF1ZXVlU3RhdHVzL3N0eWxlc2hlZXRzL21haW4uY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjU1ZDM2OTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9D
b21taXRRdWV1ZVN0YXR1cy9zdHlsZXNoZWV0cy9tYWluLmNzcwpAQCAtMCwwICsxLDI2IEBACiti
b2R5IHsKKyAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKK30K
KworI2N1cnJlbnRfc3RhdHVzIHsKKyAgICBwYWRkaW5nOiA1cHg7CisgICAgZm9udC1zaXplOiBs
YXJnZXI7Cit9CisKKyNsYXN0X3N0YXR1c19kYXRlIHsKKyAgICBmb250LXNpemU6IHNtYWxsOwor
fQorCisucmVjZW50X3N0YXR1cyB7CisgICAgcGFkZGluZy1sZWZ0OiAxMHB4OworfQorCisjcmVj
ZW50X3N0YXR1c190YWJsZSB7CisgICAgZm9udC1zaXplOiBzbWFsbDsKKyAgICBtYXJnaW46IDEw
cHg7Cit9CisKKyNmb290ZXIgeworICAgIGZvbnQtc2l6ZTogc21hbGw7CisgICAgcGFkZGluZy10
b3A6IDEwcHg7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy91
cGRhdGVfc3RhdHVzLmh0bWwgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy91cGRhdGVf
c3RhdHVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIyMjJkYgot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVlU3RhdHVzL3VwZGF0ZV9z
dGF0dXMuaHRtbApAQCAtMCwwICsxLDE5IEBACitVcGRhdGUgdGhlIGN1cnJlbnQgc3RhdHVzIG9m
IHRoZSBjb21taXQtcXVldWU6Cis8Zm9ybSBuYW1lPSJ1cGRhdGVfc3RhdHVzIiBtZXRob2Q9InBv
c3QiPgorIDxkaXY+CisgICAgIEFjdGl2ZSBCdWcgSWQ6CisgICAgPGlucHV0IG5hbWU9ImJ1Z19p
ZCI+CisgPC9kaXY+CisgPGRpdj4KKyAgICAgQWN0aXZlIFBhdGNoIElkOgorICAgIDxpbnB1dCBu
YW1lPSJwYXRjaF9pZCI+CisgPC9kaXY+CisgPGRpdj4KKyAgICAgU3BhY2Ugc2VwYXJhdGVkIGxp
c3Qgb2Ygb3RoZXIgYnVncyBpbiBxdWV1ZToKKyAgICA8aW50dXQgbmFtZT0iYnVnc19pbl9xdWV1
ZSI+CisgPC9kaXY+CisgIDxkaXY+CisgICAgICA8dGV4dGFyZWEgbmFtZT0ic3RhdHVzIiByb3dz
PSIzIiBjb2xzPSI2MCI+PC90ZXh0YXJlYT4KKyAgPC9kaXY+CisgIDxkaXY+PGlucHV0IHR5cGU9
InN1Ym1pdCIgdmFsdWU9IkFkZCBTdGF0dXMiPjwvZGl2PgorPC9mb3JtPgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9idWd6aWxsYS10b29sIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9i
dWd6aWxsYS10b29sCmluZGV4IDRkMmI1ZjMuLjA1Mjg0MWYgMTAwNzU1Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3pp
bGxhLXRvb2wKQEAgLTM3LDcgKzM3LDcgQEAgaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMK
IGltcG9ydCB0aW1lCiAKLWZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCitmcm9tIGRhdGV0
aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCiBmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRp
b25QYXJzZXIsIEluZGVudGVkSGVscEZvcm1hdHRlciwgU1VQUFJFU1NfVVNBR0UsIG1ha2Vfb3B0
aW9uCiAKICMgSW1wb3J0IFdlYktpdC1zcGVjaWZpYyBtb2R1bGVzLgpAQCAtNDYsNiArNDYsNyBA
QCBmcm9tIG1vZHVsZXMuY2hhbmdlbG9ncyBpbXBvcnQgQ2hhbmdlTG9nLCB2aWV3X3NvdXJjZV91
cmwKIGZyb20gbW9kdWxlcy5sb2dnaW5nIGltcG9ydCBlcnJvciwgbG9nLCB0ZWUKIGZyb20gbW9k
dWxlcy5zY20gaW1wb3J0IENvbW1pdE1lc3NhZ2UsIGRldGVjdF9zY21fc3lzdGVtLCBTY3JpcHRF
cnJvcgogZnJvbSBtb2R1bGVzLmJ1aWxkYm90IGltcG9ydCBCdWlsZEJvdAorZnJvbSBtb2R1bGVz
LnN0YXR1c2JvdCBpbXBvcnQgU3RhdHVzQm90CiAKIGRlZiBwbHVyYWwobm91bik6CiAgICAgIyBU
aGlzIGlzIGEgZHVtYiBwbHVyYWwoKSBpbXBsZW1lbnRhdGlvbiB3aGljaCB3YXMganVzdCBlbm91
Z2ggZm9yIG91ciB1c2VzLgpAQCAtNzA5LDYgKzcxMCw3IEBAIGNsYXNzIExhbmRQYXRjaGVzRnJv
bUNvbW1pdFF1ZXVlKENvbW1hbmQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAg
b3B0aW9ucyA9IFsKICAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW5vLWNvbmZpcm0iLCBhY3Rp
b249InN0b3JlX2ZhbHNlIiwgZGVzdD0iY29uZmlybSIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG8g
bm90IGFzayB0aGUgdXNlciBmb3IgY29uZmlybWF0aW9uIGJlZm9yZSBydW5uaW5nIHRoZSBxdWV1
ZS4gIERhbmdlcm91cyEiKSwKKyAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLXN0YXR1cy1ob3N0
IiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9InN0cmluZyIsIGRlc3Q9InN0YXR1c19ob3N0IiwgZGVm
YXVsdD1TdGF0dXNCb3QuZGVmYXVsdF9ob3N0LCBoZWxwPSJEbyBub3QgYXNrIHRoZSB1c2VyIGZv
ciBjb25maXJtYXRpb24gYmVmb3JlIHJ1bm5pbmcgdGhlIHF1ZXVlLiAgRGFuZ2Vyb3VzISIpLAog
ICAgICAgICBdCiAgICAgICAgIENvbW1hbmQuX19pbml0X18oc2VsZiwgJ1J1biB0aGUgY29tbWl0
IHF1ZXVlLicsIG9wdGlvbnM9b3B0aW9ucykKICAgICAgICAgc2VsZi5fb3JpZ2luYWxfc3Rkb3V0
ID0gTm9uZQpAQCAtNzE4LDYgKzcyMCwxMCBAQCBjbGFzcyBMYW5kUGF0Y2hlc0Zyb21Db21taXRR
dWV1ZShDb21tYW5kKToKICAgICBxdWV1ZV9sb2dfcGF0aCA9ICdjb21taXRfcXVldWUubG9nJwog
ICAgIGJ1Z19sb2dzX2RpcmVjdG9yeSA9ICdjb21taXRfcXVldWVfbG9ncycKIAorICAgIGxvZ19k
YXRlX2Zvcm1hdCA9ICIlWS0lbS0lZCAlSDolTTolUyIKKyAgICBzbGVlcF9kdXJhdGlvbl90ZXh0
ID0gIjUgbWlucyIKKyAgICBzZWNvbmRzX3RvX3NsZWVwID0gMzAwCisKICAgICBkZWYgX3RlZV9v
dXRwdXRzX3RvX2ZpbGVzKHNlbGYsIGZpbGVzKToKICAgICAgICAgaWYgbm90IHNlbGYuX29yaWdp
bmFsX3N0ZG91dDoKICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFsX3N0ZG91dCA9IHN5cy5zdGRv
dXQKQEAgLTcyOSwxMCArNzM1LDIxIEBAIGNsYXNzIExhbmRQYXRjaGVzRnJvbUNvbW1pdFF1ZXVl
KENvbW1hbmQpOgogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYuX29yaWdpbmFsX3N0ZG91
dAogICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNlbGYuX29yaWdpbmFsX3N0ZGVycgogCi0gICAg
QHN0YXRpY21ldGhvZAotICAgIGRlZiBfc2xlZXAobG9nX21lc3NhZ2UpOgotICAgICAgICBsb2co
IiVzICBTbGVlcGluZyA1IG1pbnV0ZXMuLi4gJXMiICUgKGxvZ19tZXNzYWdlLCBkYXRldGltZS5u
b3coKSkpCi0gICAgICAgIHRpbWUuc2xlZXAoMzAwKSAjIFdhaXQgNSBtaW51dGVzCisgICAgQGNs
YXNzbWV0aG9kCisgICAgZGVmIF9zbGVlcF9tZXNzYWdlKGNscywgbWVzc2FnZSk6CisgICAgICAg
IHdha2VfdGltZSA9IGRhdGV0aW1lLm5vdygpICsgdGltZWRlbHRhKHNlY29uZHM9Y2xzLnNlY29u
ZHNfdG9fc2xlZXApCisgICAgICAgIHJldHVybiAiJXMgU2xlZXBpbmcgdW50aWwgJXMgKCVzKS4i
ICUgKG1lc3NhZ2UsIHdha2VfdGltZS5zdHJmdGltZShjbHMubG9nX2RhdGVfZm9ybWF0KSwgY2xz
LnNsZWVwX2R1cmF0aW9uX3RleHQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3NsZWVw
KGNscywgbWVzc2FnZSk6CisgICAgICAgIGxvZyhjbHMuX3NsZWVwX21lc3NhZ2UobWVzc2FnZSkp
CisgICAgICAgIHRpbWUuc2xlZXAoY2xzLnNlY29uZHNfdG9fc2xlZXApCisKKyAgICBkZWYgX3Vw
ZGF0ZV9zdGF0dXNfYW5kX3NsZWVwKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICBzdGF0dXNfbWVz
c2FnZSA9IHNlbGYuX3NsZWVwX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgc2VsZi5zdGF0dXNf
Ym90LnVwZGF0ZV9zdGF0dXMoc3RhdHVzX21lc3NhZ2UpCisgICAgICAgIGxvZyhzdGF0dXNfbWVz
c2FnZSkKKyAgICAgICAgdGltZS5zbGVlcChzZWxmLnNlY29uZHNfdG9fc2xlZXApCiAKICAgICBA
c3RhdGljbWV0aG9kCiAgICAgZGVmIF9vcGVuX2xvZ19maWxlKGxvZ19wYXRoKToKQEAgLTc2MCw3
ICs3NzcsOSBAQCBjbGFzcyBMYW5kUGF0Y2hlc0Zyb21Db21taXRRdWV1ZShDb21tYW5kKToKICAg
ICAgICAgICAgICAgICBlcnJvcigiVXNlciBkZWNsaW5lZC4iKQogCiAgICAgICAgIHF1ZXVlX2xv
ZyA9IHNlbGYuX2FkZF9sb2dfdG9fb3V0cHV0X3RlZShzZWxmLnF1ZXVlX2xvZ19wYXRoKQotICAg
ICAgICBsb2coIlJ1bm5pbmcgV2ViS2l0IENvbW1pdCBRdWV1ZS4gJXMiICUgZGF0ZXRpbWUubm93
KCkpCisgICAgICAgIGxvZygiUnVubmluZyBXZWJLaXQgQ29tbWl0IFF1ZXVlLiAlcyIgJSBkYXRl
dGltZS5ub3coKS5zdHJmdGltZShzZWxmLmxvZ19kYXRlX2Zvcm1hdCkpCisKKyAgICAgICAgc2Vs
Zi5zdGF0dXNfYm90ID0gU3RhdHVzQm90KGhvc3Q9b3B0aW9ucy5zdGF0dXNfaG9zdCkKIAogICAg
ICAgICB3aGlsZSAoVHJ1ZSk6CiAgICAgICAgICAgICAjIEVpdGhlciBvZiB0aGVzZSBjYWxscyBj
b3VsZCB0aHJvdyBVUkxFcnJvciB3aGljaCBzaG91bGRuJ3Qgc3RvcCB0aGUgcXVldWUuCkBAIC03
NjksMTYgKzc4OCwxOSBAQCBjbGFzcyBMYW5kUGF0Y2hlc0Zyb21Db21taXRRdWV1ZShDb21tYW5k
KToKICAgICAgICAgICAgICAgICAjIEZldGNoIHBhdGNoZXMgaW5zdGVhZCBvZiBqdXN0IGJ1ZyBp
ZHMgdG8gdGhhdCB3ZSB2YWxpZGF0ZSByZXZpZXdlci9jb21taXR0ZXIgZmxhZ3Mgb24gZXZlcnkg
cGF0Y2guCiAgICAgICAgICAgICAgICAgcGF0Y2hlcyA9IHRvb2wuYnVncy5mZXRjaF9wYXRjaGVz
X2Zyb21fY29tbWl0X3F1ZXVlKHJlamVjdF9pbnZhbGlkX3BhdGNoZXM9VHJ1ZSkKICAgICAgICAg
ICAgICAgICBpZiBub3QgbGVuKHBhdGNoZXMpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9z
bGVlcCgiRW1wdHkgcXVldWUuIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdXBkYXRlX3N0
YXR1c19hbmRfc2xlZXAoIkVtcHR5IHF1ZXVlLiIpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCiAgICAgICAgICAgICAgICAgcGF0Y2hfaWRzID0gbWFwKGxhbWJkYSBwYXRjaDogcGF0Y2hb
J2lkJ10sIHBhdGNoZXMpCiAgICAgICAgICAgICAgICAgZmlyc3RfYnVnX2lkID0gcGF0Y2hlc1sw
XVsnYnVnX2lkJ10KICAgICAgICAgICAgICAgICBsb2coIiVzIGluIGNvbW1pdCBxdWV1ZSBbJXNd
IiAlIChwbHVyYWxpemUoJ3BhdGNoJywgbGVuKHBhdGNoZXMpKSwgIiwgIi5qb2luKHBhdGNoX2lk
cykpKQogCiAgICAgICAgICAgICAgICAgaWYgbm90IHRvb2wuYnVpbGRib3QuY29yZV9idWlsZGVy
c19hcmVfZ3JlZW4oKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2xlZXAoIkJ1aWxkZXJz
IGFyZSByZWQuIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdXBkYXRlX3N0YXR1c19hbmRf
c2xlZXAoIkJ1aWxkZXJzIChodHRwOi8vYnVpbGQud2Via2l0Lm9yZykgYXJlIHJlZC4iKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0dXNf
Ym90LnVwZGF0ZV9zdGF0dXMoIkxhbmRpbmcgcGF0Y2hlcyBmcm9tIGJ1ZyAlcy4iICUgZmlyc3Rf
YnVnX2lkLCBidWdfaWQ9Zmlyc3RfYnVnX2lkKQogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
biwgZToKKyAgICAgICAgICAgICAgICAjIERvbid0IHRyeSB0ZWxsIHRoZSBzdGF0dXMgYm90LCBp
biBjYXNlIHRlbGxpbmcgaXQgY2F1c2VzIGFuIGV4Y2VwdGlvbi4KICAgICAgICAgICAgICAgICBz
ZWxmLl9zbGVlcCgiRXhjZXB0aW9uIHdoaWxlIGNoZWNraW5nIHF1ZXVlIGFuZCBib3RzOiAlcy4i
ICUgZSkKICAgICAgICAgICAgICAgICBjb250aW51ZQogCkBAIC03OTAsNyArODEyLDcgQEAgY2xh
c3MgTGFuZFBhdGNoZXNGcm9tQ29tbWl0UXVldWUoQ29tbWFuZCk6CiAgICAgICAgICAgICBXZWJL
aXRMYW5kaW5nU2NyaXB0cy5ydW5fY29tbWFuZF93aXRoX3RlZWRfb3V0cHV0KGJ1Z3ppbGxhX3Rv
b2xfYXJncywgc3lzLnN0ZG91dCkKICAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9sb2dfZnJvbV9v
dXRwdXRfdGVlKGJ1Z19sb2cpCiAKLSAgICAgICAgbG9nKCJGaW5pc2hlZCBXZWJLaXQgQ29tbWl0
IFF1ZXVlLiAlcyIgJSBkYXRldGltZS5ub3coKSkKKyAgICAgICAgbG9nKCJGaW5pc2hlZCBXZWJL
aXQgQ29tbWl0IFF1ZXVlLiAlcyIgJSBkYXRldGltZS5ub3coKS5zdHJmdGltZShzZWxmLmxvZ19k
YXRlX2Zvcm1hdCkpCiAgICAgICAgIHNlbGYuX3JlbW92ZV9sb2dfZnJvbV9vdXRwdXRfdGVlKHF1
ZXVlX2xvZykKIAogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc3Rh
dHVzYm90LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3N0YXR1c2JvdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjJjYTNjCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3N0YXR1c2JvdC5weQpAQCAtMCwwICsxLDY2
IEBACisjIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisjIFdlYktpdCdzIFB5dGhvbiBtb2R1bGUgZm9y
IGludGVyYWN0aW5nIHdpdGggdGhlIENvbW1pdCBRdWV1ZSBzdGF0dXMgcGFnZS4KKworIyBXZWJL
aXQgaW5jbHVkZXMgYSBidWlsdCBjb3B5IG9mIEJlYXV0aWZ1bFNvdXAgaW4gU2NyaXB0cy9tb2R1
bGVzCisjIHNvIHRoaXMgaW1wb3J0IHNob3VsZCBhbHdheXMgc3VjY2VlZC4KK2Zyb20gLkJlYXV0
aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKKwordHJ5OgorICAgIGZyb20gbWVjaGFuaXpl
IGltcG9ydCBCcm93c2VyCitleGNlcHQgSW1wb3J0RXJyb3IsIGU6CisgICAgcHJpbnQgIiIiCitt
ZWNoYW5pemUgaXMgcmVxdWlyZWQuCisKK1RvIGluc3RhbGw6CitzdWRvIGVhc3lfaW5zdGFsbCBt
ZWNoYW5pemUKKworT3IgZnJvbSB0aGUgd2ViOgoraHR0cDovL3d3d3NlYXJjaC5zb3VyY2Vmb3Jn
ZS5uZXQvbWVjaGFuaXplLworIiIiCisgICAgZXhpdCgxKQorCitjbGFzcyBTdGF0dXNCb3Q6Cisg
ICAgZGVmYXVsdF9ob3N0ID0gIndlYmtpdC1jb21taXQtcXVldWUuYXBwc3BvdC5jb20iCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD1kZWZhdWx0X2hvc3QpOgorICAgICAgICBzZWxmLnN0
YXR1c2JvdF9ob3N0ID0gaG9zdAorICAgICAgICBzZWxmLnN0YXR1c2JvdF9zZXJ2ZXJfdXJsID0g
Imh0dHA6Ly8lcyIgJSBzZWxmLnN0YXR1c2JvdF9ob3N0CisgICAgICAgIHNlbGYudXBkYXRlX3N0
YXR1c191cmwgPSAiJXMvdXBkYXRlX3N0YXR1cyIgJSBzZWxmLnN0YXR1c2JvdF9zZXJ2ZXJfdXJs
CisgICAgICAgIHNlbGYuYnJvd3NlciA9IEJyb3dzZXIoKQorCisgICAgZGVmIHVwZGF0ZV9zdGF0
dXMoc2VsZiwgc3RhdHVzLCBidWdfaWQ9Tm9uZSwgcGF0Y2hfaWQ9Tm9uZSk6CisgICAgICAgIHNl
bGYuYnJvd3Nlci5vcGVuKHNlbGYudXBkYXRlX3N0YXR1c191cmwpCisgICAgICAgIHNlbGYuYnJv
d3Nlci5zZWxlY3RfZm9ybShuYW1lPSJ1cGRhdGVfc3RhdHVzIikKKyAgICAgICAgaWYgYnVnX2lk
OgorICAgICAgICAgICAgc2VsZi5icm93c2VyWydidWdfaWQnXSA9IHN0cihidWdfaWQpCisgICAg
ICAgIGlmIHBhdGNoX2lkOgorICAgICAgICAgICAgc2VsZi5icm93c2VyWydwYXRjaF9pZCddID0g
c3RyKHBhdGNoX2lkKQorICAgICAgICBzZWxmLmJyb3dzZXJbJ3N0YXR1cyddID0gc3RhdHVzCisg
ICAgICAgIHNlbGYuYnJvd3Nlci5zdWJtaXQoKQ==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39952</attachid>
            <date>2009-09-22 15:30:42 -0700</date>
            <delta_ts>2009-09-22 16:21:10 -0700</delta_ts>
            <desc>Unify ChangeLogs</desc>
            <filename>bug-29307-20090922153041.patch</filename>
            <type>text/plain</type>
            <size>20391</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0ZmUyOGEzLi42MWI4Y2UxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDktMDkt
MTcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbW1pdC1xdWV1ZSBuZWVkcyB3ZWItYmFzZWQg
c3RhdHVzIHJlcG9ydGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjkzMDcKKworICAgICAgICBBZGQgYSBmaXJzdC1wYXNzIHdlYi1iYXNlZCBzdGF0
dXMgZm9yIHRoZSBjb21taXQtcXVldWUuCisgICAgICAgIFRoZSBib3QgaXMgY3VycmVudGx5IHJl
YWNoYWJsZSBhdDoKKyAgICAgICAgaHR0cDovL3dlYmtpdC1jb21taXQtcXVldWUuYXBwc3BvdC5j
b20vCisKKyAgICAgICAgKiBDb21taXRRdWV1ZVN0YXR1cy9hcHAueWFtbDogQWRkZWQuCisgICAg
ICAgICAtIEFwcGxpY2F0aW9uIGRlc2NyaXB0aW9uIGZpbGUgcmVxdWlyZWQgYnkgQXBwIEVuZ2lu
ZS4KKyAgICAgICAgKiBDb21taXRRdWV1ZVN0YXR1cy9maWx0ZXJzL19faW5pdF9fLnB5OiBBZGRl
ZC4KKyAgICAgICAgIC0gUmVxdWlyZWQgYnkgcHl0aG9uIHRvIHRyZWF0ICdmaWx0ZXJzJyBhcyBh
IG1vZHVsZS4KKyAgICAgICAgKiBDb21taXRRdWV1ZVN0YXR1cy9maWx0ZXJzL3dlYmtpdF9leHRy
YXMucHk6IEFkZGVkLgorICAgICAgICAgLSBTdXBwb3J0IGZvciB0dXJuaW5nICdidWcgMTIzJyBh
bmQgJ3BhdGNoIDEyMycgaW50byBsaW5rcy4KKyAgICAgICAgICAgVGhpcyBsZXRzIHVzIHVzZSBw
bGFpbiB0ZXh0IHN0cmluZ3MgaW4gb3VyIGxvZ3MgeWV0IGRpc3BsYXkgbmljZSBIVE1MIChoZWxw
IHByZXZlbnQgWFNTIGF0dGFja3Mgb24gdGhlIHBhZ2UpLgorICAgICAgICAqIENvbW1pdFF1ZXVl
U3RhdHVzL2luZGV4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIENvbW1pdFF1ZXVlU3RhdHVzL2lu
ZGV4LnlhbWw6IEFkZGVkLgorICAgICAgICAgLSBTb21lIGF1dG8tZ2VuZXJhdGVkIGZpbGUgZnJv
bSBhcHAgZW5naW5lLgorICAgICAgICAqIENvbW1pdFF1ZXVlU3RhdHVzL3F1ZXVlX3N0YXR1cy5w
eTogQWRkZWQuCisgICAgICAgICAtIFRoZSBjb3JlIGxvZ2ljIG9mIHRoaXMgYm90LiAgV2UgY291
bGQgZXZlbnR1YWxseSBzcGxpdCB0aGlzIGZpbGUgb3V0IGludG8gcGllY2VzLgorICAgICAgICAq
IENvbW1pdFF1ZXVlU3RhdHVzL3N0eWxlc2hlZXRzL21haW4uY3NzOiBBZGRlZC4KKyAgICAgICAg
IC0gU29tZSBiYXNpYyBsYW1lLW8gQ1NTIHRvIG1ha2UgdGhlIHBhZ2UgbG9vayBsZXNzIGF3ZnVs
LgorICAgICAgICAqIENvbW1pdFF1ZXVlU3RhdHVzL3VwZGF0ZV9zdGF0dXMuaHRtbDogQWRkZWQu
CisgICAgICAgICAtIFRoZSBmb3JtIHRoYXQgdGhlIGNvbW1pdC1xdWV1ZSAob3IgYSBodW1hbikg
Y2FuIHVzZSB0byB1cGRhdGUgdGhlIHN0YXR1cy4KKyAgICAgICAgKiBTY3JpcHRzL2J1Z3ppbGxh
LXRvb2w6CisgICAgICAgICAtIEFkZCBzb21lIHZlcnkgYmFzaWMgdXBkYXRlX3N0YXR1cyBjYWxs
cy4KKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvc3RhdHVzYm90LnB5OiBBZGRlZC4KKyAgICAg
ICAgIC0gS25vd3MgaG93IHRvIHBvc3QgdG8gdGhlIENvbW1pdFF1ZXVlU3RhdHVzIHdlYiBhcHBs
aWNhdGlvbi4KKwogMjAwOS0wOS0xNiAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9Db21taXRRdWV1ZVN0YXR1cy9hcHAueWFtbCBiL1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVl
U3RhdHVzL2FwcC55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NTYx
MTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9hcHAu
eWFtbApAQCAtMCwwICsxLDExIEBACithcHBsaWNhdGlvbjogd2Via2l0LWNvbW1pdC1xdWV1ZQor
dmVyc2lvbjogMQorcnVudGltZTogcHl0aG9uCithcGlfdmVyc2lvbjogMQorCitoYW5kbGVyczoK
Ky0gdXJsOiAvc3R5bGVzaGVldHMKKyAgc3RhdGljX2Rpcjogc3R5bGVzaGVldHMKKworLSB1cmw6
IC8uKgorICBzY3JpcHQ6IHF1ZXVlX3N0YXR1cy5weQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
Q29tbWl0UXVldWVTdGF0dXMvZmlsdGVycy9fX2luaXRfXy5weSBiL1dlYktpdFRvb2xzL0NvbW1p
dFF1ZXVlU3RhdHVzL2ZpbHRlcnMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZWY2NWJlZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0NvbW1p
dFF1ZXVlU3RhdHVzL2ZpbHRlcnMvX19pbml0X18ucHkKQEAgLTAsMCArMSBAQAorIyBSZXF1aXJl
ZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9maWx0ZXJzL3dlYmtpdF9l
eHRyYXMucHkgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9maWx0ZXJzL3dlYmtpdF9l
eHRyYXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU4Yzk5NQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVlU3RhdHVzL2ZpbHRlcnMvd2Vi
a2l0X2V4dHJhcy5weQpAQCAtMCwwICsxLDQ0IEBACisjIENvcHlyaWdodCAoYykgMjAwOSwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJv
bSBkamFuZ28udGVtcGxhdGUuZGVmYXVsdGZpbHRlcnMgaW1wb3J0IHN0cmluZ2ZpbHRlcgorZnJv
bSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwCisKK2ltcG9ydCByZQorCitidWdf
cmVnZXhwID0gcmUuY29tcGlsZSgiYnVnICg/UDxidWdfaWQ+XGQrKSIpCitwYXRjaF9yZWdleHAg
PSByZS5jb21waWxlKCJwYXRjaCAoP1A8cGF0Y2hfaWQ+XGQrKSIpCisKK0BzdHJpbmdmaWx0ZXIK
K2RlZiB3ZWJraXRfbGlua2lmeSh2YWx1ZSk6CisgICAgdmFsdWUgPSBidWdfcmVnZXhwLnN1Yign
PGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvYi9cZzxidWdfaWQ+Ij5idWcgXGc8YnVnX2lkPjwv
YT4nLCB2YWx1ZSkKKyAgICB2YWx1ZSA9IHBhdGNoX3JlZ2V4cC5zdWIoJzxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL2F0dGFjaG1lbnQuY2dpP2lkPVxnPHBhdGNoX2lkPiZhY3Rpb249
cHJldHR5cGF0Y2giPnBhdGNoIFxnPHBhdGNoX2lkPjwvYT4nLCB2YWx1ZSkKKyAgICByZXR1cm4g
dmFsdWUKKworcmVnaXN0ZXIgPSB3ZWJhcHAudGVtcGxhdGUuY3JlYXRlX3RlbXBsYXRlX3JlZ2lz
dGVyKCkKK3JlZ2lzdGVyLmZpbHRlcih3ZWJraXRfbGlua2lmeSkKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0NvbW1pdFF1ZXVlU3RhdHVzL2luZGV4Lmh0bWwgYi9XZWJLaXRUb29scy9Db21taXRR
dWV1ZVN0YXR1cy9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjJiNWFjZWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1
cy9pbmRleC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxl
PldlYktpdCBDb21taXQgUXVldWUgU3RhdHVzPC90aXRsZT4KKyAgICA8bGluayB0eXBlPSJ0ZXh0
L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvc3R5bGVzaGVldHMvbWFpbi5jc3MiIC8+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgICA8Y2VudGVyPgorICAgIDxkaXYgaWQ9ImN1cnJlbnRfc3RhdHVz
Ij4KKyAgICAgICAge3sgbGFzdF9zdGF0dXMubWVzc2FnZXxmb3JjZV9lc2NhcGV8dXJsaXplfHdl
YmtpdF9saW5raWZ5fHNhZmUgfX0KKyAgICAgICAgPGRpdiBpZD0ibGFzdF9zdGF0dXNfZGF0ZSI+
QXMgb2Yge3sgbGFzdF9zdGF0dXMuZGF0ZXx0aW1lc2luY2UgfX0gYWdvPC9kaXY+CisgICAgPC9k
aXY+CisKKyAgICA8dGFibGUgaWQ9InJlY2VudF9zdGF0dXNfdGFibGUiPgorICAgICAgICA8dHI+
CisgICAgICAgICAgICA8dGggY29sc3Bhbj0yPlJlY2VudCBTdGF0dXM8L3RoPgorICAgICAgICA8
L3RyPgorICAgICAgICB7JSBmb3IgcmVjZW50X3N0YXR1cyBpbiByZWNlbnRfc3RhdHVzZXMgJX0K
KyAgICAgICAgPHRyPgorICAgICAgICAgICAgPHRkIGNsYXNzPSdzdGF0dXNfZGF0ZSc+e3sgcmVj
ZW50X3N0YXR1cy5kYXRlfHRpbWVzaW5jZSB9fSBhZ288L3RkPgorICAgICAgICAgICAgPHRkIGNs
YXNzPSJyZWNlbnRfc3RhdHVzIj57eyByZWNlbnRfc3RhdHVzLm1lc3NhZ2V8Zm9yY2VfZXNjYXBl
fHVybGl6ZXx3ZWJraXRfbGlua2lmeXxzYWZlIH19PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAg
ICAgeyUgZW5kZm9yICV9CisgICAgPC90YWJsZT4KKworICAgIDxkaXYgaWQ9ImZvb3RlciI+PGEg
aHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYnVnbGlzdC5jZ2k/cXVlcnlfZm9ybWF0PWFk
dmFuY2VkJmJ1Z19zdGF0dXM9VU5DT05GSVJNRUQmYnVnX3N0YXR1cz1ORVcmYnVnX3N0YXR1cz1B
U1NJR05FRCZidWdfc3RhdHVzPVJFT1BFTkVEJmZpZWxkMC0wLTA9ZmxhZ3R5cGVzLm5hbWUmdHlw
ZTAtMC0wPWVxdWFscyZ2YWx1ZTAtMC0wPWNvbW1pdC1xdWV1ZSUyQiI+cXVldWVkIGJ1Z3M8L2E+
IHwgPGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy93aWtpL0NvbW1pdFF1ZXVlIj5kb2N1
bWVudGF0aW9uPC9hPiB8IDxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+d2Via2l0Lm9yZzwv
YT48L2Rpdj4KKyAgICA8L2NlbnRlcj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL0NvbW1pdFF1ZXVlU3RhdHVzL2luZGV4LnlhbWwgYi9XZWJLaXRUb29scy9Db21t
aXRRdWV1ZVN0YXR1cy9pbmRleC55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmEzYjllMDUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0
YXR1cy9pbmRleC55YW1sCkBAIC0wLDAgKzEsMTEgQEAKK2luZGV4ZXM6CisKKyMgQVVUT0dFTkVS
QVRFRAorCisjIFRoaXMgaW5kZXgueWFtbCBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgd2hlbmV2
ZXIgdGhlIGRldl9hcHBzZXJ2ZXIKKyMgZGV0ZWN0cyB0aGF0IGEgbmV3IHR5cGUgb2YgcXVlcnkg
aXMgcnVuLiAgSWYgeW91IHdhbnQgdG8gbWFuYWdlIHRoZQorIyBpbmRleC55YW1sIGZpbGUgbWFu
dWFsbHksIHJlbW92ZSB0aGUgYWJvdmUgbWFya2VyIGxpbmUgKHRoZSBsaW5lCisjIHNheWluZyAi
IyBBVVRPR0VORVJBVEVEIikuICBJZiB5b3Ugd2FudCB0byBtYW5hZ2Ugc29tZSBpbmRleGVzCisj
IG1hbnVhbGx5LCBtb3ZlIHRoZW0gYWJvdmUgdGhlIG1hcmtlciBsaW5lLiAgVGhlIGluZGV4Lnlh
bWwgZmlsZSBpcworIyBhdXRvbWF0aWNhbGx5IHVwbG9hZGVkIHRvIHRoZSBhZG1pbiBjb25zb2xl
IHdoZW4geW91IG5leHQgZGVwbG95CisjIHlvdXIgYXBwbGljYXRpb24gdXNpbmcgYXBwY2ZnLnB5
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvcXVldWVfc3RhdHVz
LnB5IGIvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvcXVldWVfc3RhdHVzLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhMTlhMGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXRUb29scy9Db21taXRRdWV1ZVN0YXR1cy9xdWV1ZV9zdGF0dXMucHkKQEAgLTAsMCAr
MSw5NiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBjZ2kKK2ltcG9ydCBvcworCisj
IFJlcXVlc3QgYSBtb2Rlcm4gRGphbmdvCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZGlzdCBpbXBv
cnQgdXNlX2xpYnJhcnkKK3VzZV9saWJyYXJ5KCdkamFuZ28nLCAnMS4xJykKKworZnJvbSBnb29n
bGUuYXBwZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCitmcm9tIGdvb2dsZS5hcHBl
bmdpbmUuYXBpIGltcG9ydCB1c2VycworZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQg
d2ViYXBwCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0LndlYmFwcC51dGlsIGltcG9ydCBydW5f
d3NnaV9hcHAKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IGRiCisKK3dlYmFwcC50
ZW1wbGF0ZS5yZWdpc3Rlcl90ZW1wbGF0ZV9saWJyYXJ5KCdmaWx0ZXJzLndlYmtpdF9leHRyYXMn
KQorCitjbGFzcyBRdWV1ZVN0YXR1cyhkYi5Nb2RlbCk6CisgICAgYXV0aG9yID0gZGIuVXNlclBy
b3BlcnR5KCkKKyAgICBhY3RpdmVfYnVnX2lkID0gZGIuSW50ZWdlclByb3BlcnR5KCkKKyAgICBh
Y3RpdmVfcGF0Y2hfaWQgPSBkYi5JbnRlZ2VyUHJvcGVydHkoKQorICAgIG1lc3NhZ2UgPSBkYi5T
dHJpbmdQcm9wZXJ0eShtdWx0aWxpbmU9VHJ1ZSkKKyAgICBkYXRlID0gZGIuRGF0ZVRpbWVQcm9w
ZXJ0eShhdXRvX25vd19hZGQ9VHJ1ZSkKKworY2xhc3MgTWFpblBhZ2Uod2ViYXBwLlJlcXVlc3RI
YW5kbGVyKToKKyAgICBkZWYgZ2V0KHNlbGYpOgorICAgICAgICBzdGF0dXNlc19xdWVyeSA9IFF1
ZXVlU3RhdHVzLmFsbCgpLm9yZGVyKCctZGF0ZScpCisgICAgICAgIHN0YXR1c2VzID0gc3RhdHVz
ZXNfcXVlcnkuZmV0Y2goNikKKyAgICAgICAgdGVtcGxhdGVfdmFsdWVzID0geworICAgICAgICAg
ICAgJ2xhc3Rfc3RhdHVzJyA6IHN0YXR1c2VzWzBdLAorICAgICAgICAgICAgJ3JlY2VudF9zdGF0
dXNlcycgOiBzdGF0dXNlc1sxOl0sCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5yZXNwb25zZS5v
dXQud3JpdGUodGVtcGxhdGUucmVuZGVyKCdpbmRleC5odG1sJywgdGVtcGxhdGVfdmFsdWVzKSkK
KworY2xhc3MgVXBkYXRlU3RhdHVzKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CisgICAgZGVmIGdl
dChzZWxmKToKKyAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUodGVtcGxhdGUucmVuZGVy
KCd1cGRhdGVfc3RhdHVzLmh0bWwnLCBOb25lKSkKKworICAgIGRlZiBfaW50X2Zyb21fcmVxdWVz
dChzZWxmLCBuYW1lKToKKyAgICAgICAgc3RyaW5nX3ZhbHVlID0gc2VsZi5yZXF1ZXN0LmdldChu
YW1lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbnRfdmFsdWUgPSBpbnQoc3RyaW5nX3Zh
bHVlKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgVHlwZUVycm9yOgorICAgICAgICAgICAg
cGFzcworICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHBvc3Qoc2VsZik6CisgICAgICAg
IHF1ZXVlX3N0YXR1cyA9IFF1ZXVlU3RhdHVzKCkKKworICAgICAgICBpZiB1c2Vycy5nZXRfY3Vy
cmVudF91c2VyKCk6CisgICAgICAgICAgICBxdWV1ZV9zdGF0dXMuYXV0aG9yID0gdXNlcnMuZ2V0
X2N1cnJlbnRfdXNlcigpCisKKyAgICAgICAgcXVldWVfc3RhdHVzLmFjdGl2ZV9idWdfaWQgPSBz
ZWxmLl9pbnRfZnJvbV9yZXF1ZXN0KCdidWdfaWQnKQorICAgICAgICBxdWV1ZV9zdGF0dXMuYWN0
aXZlX3BhdGNoX2lkID0gc2VsZi5faW50X2Zyb21fcmVxdWVzdCgncGF0Y2hfaWQnKQorICAgICAg
ICBxdWV1ZV9zdGF0dXMubWVzc2FnZSA9IHNlbGYucmVxdWVzdC5nZXQoJ3N0YXR1cycpCisgICAg
ICAgIHF1ZXVlX3N0YXR1cy5wdXQoKQorICAgICAgICBzZWxmLnJlZGlyZWN0KCcvJykKKworcm91
dGVzID0gWworICAgICgnLycsIE1haW5QYWdlKSwKKyAgICAoJy91cGRhdGVfc3RhdHVzJywgVXBk
YXRlU3RhdHVzKQorXQorCithcHBsaWNhdGlvbiA9IHdlYmFwcC5XU0dJQXBwbGljYXRpb24ocm91
dGVzLCBkZWJ1Zz1UcnVlKQorCitkZWYgbWFpbigpOgorICAgIHJ1bl93c2dpX2FwcChhcHBsaWNh
dGlvbikKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVlU3RhdHVzL3N0eWxlc2hlZXRzL21haW4uY3NzIGIv
V2ViS2l0VG9vbHMvQ29tbWl0UXVldWVTdGF0dXMvc3R5bGVzaGVldHMvbWFpbi5jc3MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVkMzY5NAotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVlU3RhdHVzL3N0eWxlc2hlZXRzL21haW4uY3NzCkBAIC0w
LDAgKzEsMjYgQEAKK2JvZHkgeworICBmb250LWZhbWlseTogVmVyZGFuYSwgSGVsdmV0aWNhLCBz
YW5zLXNlcmlmOworfQorCisjY3VycmVudF9zdGF0dXMgeworICAgIHBhZGRpbmc6IDVweDsKKyAg
ICBmb250LXNpemU6IGxhcmdlcjsKK30KKworI2xhc3Rfc3RhdHVzX2RhdGUgeworICAgIGZvbnQt
c2l6ZTogc21hbGw7Cit9CisKKy5yZWNlbnRfc3RhdHVzIHsKKyAgICBwYWRkaW5nLWxlZnQ6IDEw
cHg7Cit9CisKKyNyZWNlbnRfc3RhdHVzX3RhYmxlIHsKKyAgICBmb250LXNpemU6IHNtYWxsOwor
ICAgIG1hcmdpbjogMTBweDsKK30KKworI2Zvb3RlciB7CisgICAgZm9udC1zaXplOiBzbWFsbDsK
KyAgICBwYWRkaW5nLXRvcDogMTBweDsKK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NvbW1p
dFF1ZXVlU3RhdHVzL3VwZGF0ZV9zdGF0dXMuaHRtbCBiL1dlYktpdFRvb2xzL0NvbW1pdFF1ZXVl
U3RhdHVzL3VwZGF0ZV9zdGF0dXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5lZGFmYmE0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvQ29tbWl0UXVldWVT
dGF0dXMvdXBkYXRlX3N0YXR1cy5odG1sCkBAIC0wLDAgKzEsMTkgQEAKK1VwZGF0ZSB0aGUgY3Vy
cmVudCBzdGF0dXMgb2YgdGhlIGNvbW1pdC1xdWV1ZToKKzxmb3JtIG5hbWU9InVwZGF0ZV9zdGF0
dXMiIG1ldGhvZD0icG9zdCI+CisgPGRpdj4KKyAgICAgQWN0aXZlIEJ1ZyBJZDoKKyAgICA8aW5w
dXQgbmFtZT0iYnVnX2lkIj4KKyA8L2Rpdj4KKyA8ZGl2PgorICAgICBBY3RpdmUgUGF0Y2ggSWQ6
CisgICAgPGlucHV0IG5hbWU9InBhdGNoX2lkIj4KKyA8L2Rpdj4KKyA8ZGl2PgorICAgICBTcGFj
ZSBzZXBhcmF0ZWQgbGlzdCBvZiBvdGhlciBidWdzIGluIHF1ZXVlOgorICAgIDxpbnB1dCBuYW1l
PSJidWdzX2luX3F1ZXVlIj4KKyA8L2Rpdj4KKyAgPGRpdj4KKyAgICAgIDx0ZXh0YXJlYSBuYW1l
PSJzdGF0dXMiIHJvd3M9IjMiIGNvbHM9IjYwIj48L3RleHRhcmVhPgorICA8L2Rpdj4KKyAgPGRp
dj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQWRkIFN0YXR1cyI+PC9kaXY+Cis8L2Zvcm0+
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wgYi9XZWJLaXRU
b29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKaW5kZXggMmZlZDQ0OS4uMjFjNDE2ZSAxMDA3NTUK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWd6aWxsYS10b29sCisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvYnVnemlsbGEtdG9vbApAQCAtMzcsNyArMzcsNyBAQCBpbXBvcnQgc3VicHJvY2Vz
cwogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIAotZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRp
bWUKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKIGZyb20gb3B0cGFy
c2UgaW1wb3J0IE9wdGlvblBhcnNlciwgSW5kZW50ZWRIZWxwRm9ybWF0dGVyLCBTVVBQUkVTU19V
U0FHRSwgbWFrZV9vcHRpb24KIAogIyBJbXBvcnQgV2ViS2l0LXNwZWNpZmljIG1vZHVsZXMuCkBA
IC00Niw2ICs0Niw3IEBAIGZyb20gbW9kdWxlcy5jaGFuZ2Vsb2dzIGltcG9ydCBDaGFuZ2VMb2cs
IHZpZXdfc291cmNlX3VybAogZnJvbSBtb2R1bGVzLmxvZ2dpbmcgaW1wb3J0IGVycm9yLCBsb2cs
IHRlZQogZnJvbSBtb2R1bGVzLnNjbSBpbXBvcnQgQ29tbWl0TWVzc2FnZSwgZGV0ZWN0X3NjbV9z
eXN0ZW0sIFNjcmlwdEVycm9yCiBmcm9tIG1vZHVsZXMuYnVpbGRib3QgaW1wb3J0IEJ1aWxkQm90
Citmcm9tIG1vZHVsZXMuc3RhdHVzYm90IGltcG9ydCBTdGF0dXNCb3QKIAogZGVmIHBsdXJhbChu
b3VuKToKICAgICAjIFRoaXMgaXMgYSBkdW1iIHBsdXJhbCgpIGltcGxlbWVudGF0aW9uIHdoaWNo
IHdhcyBqdXN0IGVub3VnaCBmb3Igb3VyIHVzZXMuCkBAIC03MDksNiArNzEwLDcgQEAgY2xhc3Mg
TGFuZFBhdGNoZXNGcm9tQ29tbWl0UXVldWUoQ29tbWFuZCk6CiAgICAgZGVmIF9faW5pdF9fKHNl
bGYpOgogICAgICAgICBvcHRpb25zID0gWwogICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8t
Y29uZmlybSIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJjb25maXJtIiwgZGVmYXVsdD1U
cnVlLCBoZWxwPSJEbyBub3QgYXNrIHRoZSB1c2VyIGZvciBjb25maXJtYXRpb24gYmVmb3JlIHJ1
bm5pbmcgdGhlIHF1ZXVlLiAgRGFuZ2Vyb3VzISIpLAorICAgICAgICAgICAgbWFrZV9vcHRpb24o
Ii0tc3RhdHVzLWhvc3QiLCBhY3Rpb249InN0b3JlIiwgdHlwZT0ic3RyaW5nIiwgZGVzdD0ic3Rh
dHVzX2hvc3QiLCBkZWZhdWx0PVN0YXR1c0JvdC5kZWZhdWx0X2hvc3QsIGhlbHA9IkRvIG5vdCBh
c2sgdGhlIHVzZXIgZm9yIGNvbmZpcm1hdGlvbiBiZWZvcmUgcnVubmluZyB0aGUgcXVldWUuICBE
YW5nZXJvdXMhIiksCiAgICAgICAgIF0KICAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAn
UnVuIHRoZSBjb21taXQgcXVldWUuJywgb3B0aW9ucz1vcHRpb25zKQogICAgICAgICBzZWxmLl9v
cmlnaW5hbF9zdGRvdXQgPSBOb25lCkBAIC03MTgsNiArNzIwLDEwIEBAIGNsYXNzIExhbmRQYXRj
aGVzRnJvbUNvbW1pdFF1ZXVlKENvbW1hbmQpOgogICAgIHF1ZXVlX2xvZ19wYXRoID0gJ2NvbW1p
dF9xdWV1ZS5sb2cnCiAgICAgYnVnX2xvZ3NfZGlyZWN0b3J5ID0gJ2NvbW1pdF9xdWV1ZV9sb2dz
JwogCisgICAgbG9nX2RhdGVfZm9ybWF0ID0gIiVZLSVtLSVkICVIOiVNOiVTIgorICAgIHNsZWVw
X2R1cmF0aW9uX3RleHQgPSAiNSBtaW5zIgorICAgIHNlY29uZHNfdG9fc2xlZXAgPSAzMDAKKwog
ICAgIGRlZiBfdGVlX291dHB1dHNfdG9fZmlsZXMoc2VsZiwgZmlsZXMpOgogICAgICAgICBpZiBu
b3Qgc2VsZi5fb3JpZ2luYWxfc3Rkb3V0OgogICAgICAgICAgICAgc2VsZi5fb3JpZ2luYWxfc3Rk
b3V0ID0gc3lzLnN0ZG91dApAQCAtNzI5LDEwICs3MzUsMjEgQEAgY2xhc3MgTGFuZFBhdGNoZXNG
cm9tQ29tbWl0UXVldWUoQ29tbWFuZCk6CiAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc2VsZi5f
b3JpZ2luYWxfc3Rkb3V0CiAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc2VsZi5fb3JpZ2luYWxf
c3RkZXJyCiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9zbGVlcChsb2dfbWVzc2FnZSk6
Ci0gICAgICAgIGxvZygiJXMgIFNsZWVwaW5nIDUgbWludXRlcy4uLiAlcyIgJSAobG9nX21lc3Nh
Z2UsIGRhdGV0aW1lLm5vdygpKSkKLSAgICAgICAgdGltZS5zbGVlcCgzMDApICMgV2FpdCA1IG1p
bnV0ZXMKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3NsZWVwX21lc3NhZ2UoY2xzLCBtZXNz
YWdlKToKKyAgICAgICAgd2FrZV90aW1lID0gZGF0ZXRpbWUubm93KCkgKyB0aW1lZGVsdGEoc2Vj
b25kcz1jbHMuc2Vjb25kc190b19zbGVlcCkKKyAgICAgICAgcmV0dXJuICIlcyBTbGVlcGluZyB1
bnRpbCAlcyAoJXMpLiIgJSAobWVzc2FnZSwgd2FrZV90aW1lLnN0cmZ0aW1lKGNscy5sb2dfZGF0
ZV9mb3JtYXQpLCBjbHMuc2xlZXBfZHVyYXRpb25fdGV4dCkKKworICAgIEBjbGFzc21ldGhvZAor
ICAgIGRlZiBfc2xlZXAoY2xzLCBtZXNzYWdlKToKKyAgICAgICAgbG9nKGNscy5fc2xlZXBfbWVz
c2FnZShtZXNzYWdlKSkKKyAgICAgICAgdGltZS5zbGVlcChjbHMuc2Vjb25kc190b19zbGVlcCkK
KworICAgIGRlZiBfdXBkYXRlX3N0YXR1c19hbmRfc2xlZXAoc2VsZiwgbWVzc2FnZSk6CisgICAg
ICAgIHN0YXR1c19tZXNzYWdlID0gc2VsZi5fc2xlZXBfbWVzc2FnZShtZXNzYWdlKQorICAgICAg
ICBzZWxmLnN0YXR1c19ib3QudXBkYXRlX3N0YXR1cyhzdGF0dXNfbWVzc2FnZSkKKyAgICAgICAg
bG9nKHN0YXR1c19tZXNzYWdlKQorICAgICAgICB0aW1lLnNsZWVwKHNlbGYuc2Vjb25kc190b19z
bGVlcCkKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX29wZW5fbG9nX2ZpbGUobG9nX3Bh
dGgpOgpAQCAtNzYwLDcgKzc3Nyw5IEBAIGNsYXNzIExhbmRQYXRjaGVzRnJvbUNvbW1pdFF1ZXVl
KENvbW1hbmQpOgogICAgICAgICAgICAgICAgIGVycm9yKCJVc2VyIGRlY2xpbmVkLiIpCiAKICAg
ICAgICAgcXVldWVfbG9nID0gc2VsZi5fYWRkX2xvZ190b19vdXRwdXRfdGVlKHNlbGYucXVldWVf
bG9nX3BhdGgpCi0gICAgICAgIGxvZygiUnVubmluZyBXZWJLaXQgQ29tbWl0IFF1ZXVlLiAlcyIg
JSBkYXRldGltZS5ub3coKSkKKyAgICAgICAgbG9nKCJSdW5uaW5nIFdlYktpdCBDb21taXQgUXVl
dWUuICVzIiAlIGRhdGV0aW1lLm5vdygpLnN0cmZ0aW1lKHNlbGYubG9nX2RhdGVfZm9ybWF0KSkK
KworICAgICAgICBzZWxmLnN0YXR1c19ib3QgPSBTdGF0dXNCb3QoaG9zdD1vcHRpb25zLnN0YXR1
c19ob3N0KQogCiAgICAgICAgIHdoaWxlIChUcnVlKToKICAgICAgICAgICAgICMgRWl0aGVyIG9m
IHRoZXNlIGNhbGxzIGNvdWxkIHRocm93IFVSTEVycm9yIHdoaWNoIHNob3VsZG4ndCBzdG9wIHRo
ZSBxdWV1ZS4KQEAgLTc2OSwxNiArNzg4LDE5IEBAIGNsYXNzIExhbmRQYXRjaGVzRnJvbUNvbW1p
dFF1ZXVlKENvbW1hbmQpOgogICAgICAgICAgICAgICAgICMgRmV0Y2ggcGF0Y2hlcyBpbnN0ZWFk
IG9mIGp1c3QgYnVnIGlkcyB0byB0aGF0IHdlIHZhbGlkYXRlIHJldmlld2VyL2NvbW1pdHRlciBm
bGFncyBvbiBldmVyeSBwYXRjaC4KICAgICAgICAgICAgICAgICBwYXRjaGVzID0gdG9vbC5idWdz
LmZldGNoX3BhdGNoZXNfZnJvbV9jb21taXRfcXVldWUocmVqZWN0X2ludmFsaWRfcGF0Y2hlcz1U
cnVlKQogICAgICAgICAgICAgICAgIGlmIG5vdCBsZW4ocGF0Y2hlcyk6Ci0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3NsZWVwKCJFbXB0eSBxdWV1ZS4iKQorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl91cGRhdGVfc3RhdHVzX2FuZF9zbGVlcCgiRW1wdHkgcXVldWUuIikKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBwYXRjaF9pZHMgPSBtYXAobGFtYmRh
IHBhdGNoOiBwYXRjaFsnaWQnXSwgcGF0Y2hlcykKICAgICAgICAgICAgICAgICBmaXJzdF9idWdf
aWQgPSBwYXRjaGVzWzBdWydidWdfaWQnXQogICAgICAgICAgICAgICAgIGxvZygiJXMgaW4gY29t
bWl0IHF1ZXVlIFslc10iICUgKHBsdXJhbGl6ZSgncGF0Y2gnLCBsZW4ocGF0Y2hlcykpLCAiLCAi
LmpvaW4ocGF0Y2hfaWRzKSkpCiAKICAgICAgICAgICAgICAgICBpZiBub3QgdG9vbC5idWlsZGJv
dC5jb3JlX2J1aWxkZXJzX2FyZV9ncmVlbigpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9z
bGVlcCgiQnVpbGRlcnMgYXJlIHJlZC4iKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl91cGRh
dGVfc3RhdHVzX2FuZF9zbGVlcCgiQnVpbGRlcnMgKGh0dHA6Ly9idWlsZC53ZWJraXQub3JnKSBh
cmUgcmVkLiIpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAg
ICBzZWxmLnN0YXR1c19ib3QudXBkYXRlX3N0YXR1cygiTGFuZGluZyBwYXRjaGVzIGZyb20gYnVn
ICVzLiIgJSBmaXJzdF9idWdfaWQsIGJ1Z19pZD1maXJzdF9idWdfaWQpCiAgICAgICAgICAgICBl
eGNlcHQgRXhjZXB0aW9uLCBlOgorICAgICAgICAgICAgICAgICMgRG9uJ3QgdHJ5IHRlbGwgdGhl
IHN0YXR1cyBib3QsIGluIGNhc2UgdGVsbGluZyBpdCBjYXVzZXMgYW4gZXhjZXB0aW9uLgogICAg
ICAgICAgICAgICAgIHNlbGYuX3NsZWVwKCJFeGNlcHRpb24gd2hpbGUgY2hlY2tpbmcgcXVldWUg
YW5kIGJvdHM6ICVzLiIgJSBlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKQEAgLTc5MCw3
ICs4MTIsNyBAQCBjbGFzcyBMYW5kUGF0Y2hlc0Zyb21Db21taXRRdWV1ZShDb21tYW5kKToKICAg
ICAgICAgICAgIFdlYktpdExhbmRpbmdTY3JpcHRzLnJ1bl9jb21tYW5kX3dpdGhfdGVlZF9vdXRw
dXQoYnVnemlsbGFfdG9vbF9hcmdzLCBzeXMuc3Rkb3V0KQogICAgICAgICAgICAgc2VsZi5fcmVt
b3ZlX2xvZ19mcm9tX291dHB1dF90ZWUoYnVnX2xvZykKIAotICAgICAgICBsb2coIkZpbmlzaGVk
IFdlYktpdCBDb21taXQgUXVldWUuICVzIiAlIGRhdGV0aW1lLm5vdygpKQorICAgICAgICBsb2co
IkZpbmlzaGVkIFdlYktpdCBDb21taXQgUXVldWUuICVzIiAlIGRhdGV0aW1lLm5vdygpLnN0cmZ0
aW1lKHNlbGYubG9nX2RhdGVfZm9ybWF0KSkKICAgICAgICAgc2VsZi5fcmVtb3ZlX2xvZ19mcm9t
X291dHB1dF90ZWUocXVldWVfbG9nKQogCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvbW9kdWxlcy9zdGF0dXNib3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc3Rh
dHVzYm90LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMmNhM2MKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc3RhdHVzYm90LnB5
CkBAIC0wLDAgKzEsNjYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyAKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgV2ViS2l0J3MgUHl0
aG9uIG1vZHVsZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgQ29tbWl0IFF1ZXVlIHN0YXR1cyBw
YWdlLgorCisjIFdlYktpdCBpbmNsdWRlcyBhIGJ1aWx0IGNvcHkgb2YgQmVhdXRpZnVsU291cCBp
biBTY3JpcHRzL21vZHVsZXMKKyMgc28gdGhpcyBpbXBvcnQgc2hvdWxkIGFsd2F5cyBzdWNjZWVk
LgorZnJvbSAuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAorCit0cnk6CisgICAg
ZnJvbSBtZWNoYW5pemUgaW1wb3J0IEJyb3dzZXIKK2V4Y2VwdCBJbXBvcnRFcnJvciwgZToKKyAg
ICBwcmludCAiIiIKK21lY2hhbml6ZSBpcyByZXF1aXJlZC4KKworVG8gaW5zdGFsbDoKK3N1ZG8g
ZWFzeV9pbnN0YWxsIG1lY2hhbml6ZQorCitPciBmcm9tIHRoZSB3ZWI6CitodHRwOi8vd3d3c2Vh
cmNoLnNvdXJjZWZvcmdlLm5ldC9tZWNoYW5pemUvCisiIiIKKyAgICBleGl0KDEpCisKK2NsYXNz
IFN0YXR1c0JvdDoKKyAgICBkZWZhdWx0X2hvc3QgPSAid2Via2l0LWNvbW1pdC1xdWV1ZS5hcHBz
cG90LmNvbSIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PWRlZmF1bHRfaG9zdCk6Cisg
ICAgICAgIHNlbGYuc3RhdHVzYm90X2hvc3QgPSBob3N0CisgICAgICAgIHNlbGYuc3RhdHVzYm90
X3NlcnZlcl91cmwgPSAiaHR0cDovLyVzIiAlIHNlbGYuc3RhdHVzYm90X2hvc3QKKyAgICAgICAg
c2VsZi51cGRhdGVfc3RhdHVzX3VybCA9ICIlcy91cGRhdGVfc3RhdHVzIiAlIHNlbGYuc3RhdHVz
Ym90X3NlcnZlcl91cmwKKyAgICAgICAgc2VsZi5icm93c2VyID0gQnJvd3NlcigpCisKKyAgICBk
ZWYgdXBkYXRlX3N0YXR1cyhzZWxmLCBzdGF0dXMsIGJ1Z19pZD1Ob25lLCBwYXRjaF9pZD1Ob25l
KToKKyAgICAgICAgc2VsZi5icm93c2VyLm9wZW4oc2VsZi51cGRhdGVfc3RhdHVzX3VybCkKKyAg
ICAgICAgc2VsZi5icm93c2VyLnNlbGVjdF9mb3JtKG5hbWU9InVwZGF0ZV9zdGF0dXMiKQorICAg
ICAgICBpZiBidWdfaWQ6CisgICAgICAgICAgICBzZWxmLmJyb3dzZXJbJ2J1Z19pZCddID0gc3Ry
KGJ1Z19pZCkKKyAgICAgICAgaWYgcGF0Y2hfaWQ6CisgICAgICAgICAgICBzZWxmLmJyb3dzZXJb
J3BhdGNoX2lkJ10gPSBzdHIocGF0Y2hfaWQpCisgICAgICAgIHNlbGYuYnJvd3Nlclsnc3RhdHVz
J10gPSBzdGF0dXMKKyAgICAgICAgc2VsZi5icm93c2VyLnN1Ym1pdCgp
</data>
<flag name="review"
          id="21106"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="21113"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>