<?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>47244</bug_id>
          
          <creation_ts>2010-10-05 20:44:20 -0700</creation_ts>
          <short_desc>[GTK] editing/pasteboard/dataTransfer-setData-getData.html fails on GTK+</short_desc>
          <delta_ts>2010-10-11 15:15:28 -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>WebKitGTK</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="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>simonjam</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>290072</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-05 20:44:20 -0700</bug_when>
    <thetext>The issue here seems to be that setData(&apos;URL&apos;) and setData(&apos;text/uri-list&apos;) do not preserve the original string. Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290077</commentid>
    <comment_count>1</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-05 20:54:05 -0700</bug_when>
    <thetext>Committed r69174: &lt;http://trac.webkit.org/changeset/69174&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290087</commentid>
    <comment_count>2</comment_count>
      <attachid>69885</attachid>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2010-10-05 21:44:53 -0700</bug_when>
    <thetext>Created attachment 69885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290088</commentid>
    <comment_count>3</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2010-10-05 21:46:20 -0700</bug_when>
    <thetext>Sorry, my patch went to the wrong bug. Is there any way to delete that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290466</commentid>
    <comment_count>4</comment_count>
      <attachid>69966</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-06 11:20:31 -0700</bug_when>
    <thetext>Created attachment 69966
Patch for this issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290488</commentid>
    <comment_count>5</comment_count>
      <attachid>69966</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-06 11:43:30 -0700</bug_when>
    <thetext>Comment on attachment 69966
Patch for this issue

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

(not changing the review flag because I don&apos;t feel qualified to r+ the gtk+ specific code)

&gt; WebCore/platform/gtk/DataObjectGtk.cpp:66
&gt; +    // This code is originally from: platform/chromium/ChromiumDataObject.cpp.

Can you add a FIXME that says we should try to refactor this code for sharing across platforms?

&gt; WebCore/platform/gtk/DataObjectGtk.cpp:104
&gt;  void DataObjectGtk::setURL(const KURL&amp; url, const String&amp; label)
&gt;  {
&gt; +    m_url = url;

This seems redundant since setURIList should do this for you.

&gt; WebCore/platform/gtk/PasteboardHelper.cpp:141
&gt; +        CString uriList = dataObject-&gt;uriList().utf8();
&gt; +        gtk_selection_data_set(selectionData, uriListAtom, 8,
&gt; +            reinterpret_cast&lt;const guchar*&gt;(uriList.data()), strlen(uriList.data()) + 1);

Would urList.length() + 1 be better than calling strlen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290509</commentid>
    <comment_count>6</comment_count>
      <attachid>69975</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-06 12:15:25 -0700</bug_when>
    <thetext>Created attachment 69975
Patch with Tony&apos;s suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290515</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-06 12:17:25 -0700</bug_when>
    <thetext>(In reply to comment #5)

Thanks for the comments.

&gt; &gt; WebCore/platform/gtk/DataObjectGtk.cpp:66
&gt; &gt; +    // This code is originally from: platform/chromium/ChromiumDataObject.cpp.
&gt; Can you add a FIXME that says we should try to refactor this code for sharing across platforms?

Done.
&gt; &gt; WebCore/platform/gtk/DataObjectGtk.cpp:104
&gt; &gt;  void DataObjectGtk::setURL(const KURL&amp; url, const String&amp; label)
&gt; &gt;  {
&gt; &gt; +    m_url = url;
&gt; This seems redundant since setURIList should do this for you.

Instead of using setURIList here, I&apos;ve switched it to simply do m_uriList = url;, to avoid any unintended side-effects (like settings files on the DataObject).

&gt; &gt; WebCore/platform/gtk/PasteboardHelper.cpp:141
&gt; &gt; +        CString uriList = dataObject-&gt;uriList().utf8();
&gt; &gt; +        gtk_selection_data_set(selectionData, uriListAtom, 8,
&gt; &gt; +            reinterpret_cast&lt;const guchar*&gt;(uriList.data()), strlen(uriList.data()) + 1);
&gt; Would urList.length() + 1 be better than calling strlen?

It definitely is! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292584</commentid>
    <comment_count>8</comment_count>
      <attachid>69975</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-11 11:32:10 -0700</bug_when>
    <thetext>Comment on attachment 69975
Patch with Tony&apos;s suggestions

I still think it would be nice if someone more familiar with the GTK+ port would review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292692</commentid>
    <comment_count>9</comment_count>
      <attachid>69975</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-11 15:13:10 -0700</bug_when>
    <thetext>Comment on attachment 69975
Patch with Tony&apos;s suggestions

Clearing flags on attachment: 69975

Committed r69530: &lt;http://trac.webkit.org/changeset/69530&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292696</commentid>
    <comment_count>10</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-11 15:15:28 -0700</bug_when>
    <thetext>Comitted as http://trac.webkit.org/changeset/69530 .</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69885</attachid>
            <date>2010-10-05 21:44:53 -0700</date>
            <delta_ts>2010-10-05 21:47:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47244-20101005214452.patch</filename>
            <type>text/plain</type>
            <size>29487</size>
            <attacher name="James Simonsen">simonjam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMmQ1ZWI2NzkwMGEzN2RhMzJjYWM2MjNjMGMyMDEwMWMwZTZmZmY5Li45YjI2MTdh
OWY5ZDIyYmUyMWQzMTgwMjc2MDc1NmUwZjM1NzZmOGJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0yMjQ3LDYgKzIyNDcs
MjQgQEAKICAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6
CiAgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CiAKKzIwMTAtMTAtMDEgIEphbWVzIFNp
bW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXZWIgVGltaW5nXSBJbXBsZW1lbnQgZG9tKiB0aW1p
bmcgbWFya3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ2MzAxCisKKyAgICAgICAgKiBmYXN0L2RvbS9zY3JpcHQtdGVzdHMvd2VidGltaW5nLWRvY3Vt
ZW50LW9wZW4uanM6IEFkZGVkLgorICAgICAgICAodGVzdFRpbWluZ1dpdGhEb2N1bWVudE9wZW4p
OgorICAgICAgICAqIGZhc3QvZG9tL3NjcmlwdC10ZXN0cy93ZWJ0aW1pbmcuanM6CisgICAgICAg
IChjaGVja1RpbWluZ0JlZm9yZUxvYWQpOgorICAgICAgICAoY2hlY2tXZWJUaW1pbmdPbkxvYWQp
OgorICAgICAgICAoY2hlY2tXZWJUaW1pbmdBZnRlckxvYWQpOgorICAgICAgICAodGVzdFRpbWlu
Z1dpdGhEb2N1bWVudE9wZW4pOgorICAgICAgICAqIGZhc3QvZG9tL3dlYnRpbWluZy1kb2N1bWVu
dC1vcGVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vd2VidGltaW5n
LWRvY3VtZW50LW9wZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vd2VidGltaW5n
LWV4cGVjdGVkLnR4dDoKKwogMjAxMC0xMC0wMSAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLXBlcmZvcm1hbmNlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGll
cy1wZXJmb3JtYW5jZS1leHBlY3RlZC50eHQKaW5kZXggMTQ2ZmQ1NTBiNTJjMjI3NjM3YzUwN2I5
ZTc1YjI3NjRlN2M3MGNlMC4uOGJiYWJiMDJlYWU5NmRiNzNiNTEwNTYwMDM3YTkzMGNjZTA5NTc0
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0
aWVzLXBlcmZvcm1hbmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXByb3BlcnRpZXMtcGVyZm9ybWFuY2UtZXhwZWN0ZWQudHh0CkBAIC0xMyw2
ICsxMywxMCBAQCB3aW5kb3cud2Via2l0UGVyZm9ybWFuY2UubmF2aWdhdGlvbi50eXBlIFtudW1i
ZXJdCiB3aW5kb3cud2Via2l0UGVyZm9ybWFuY2UudGltaW5nIFtvYmplY3QgVGltaW5nXQogd2lu
ZG93LndlYmtpdFBlcmZvcm1hbmNlLnRpbWluZy5jb25uZWN0RW5kIFtudW1iZXJdCiB3aW5kb3cu
d2Via2l0UGVyZm9ybWFuY2UudGltaW5nLmNvbm5lY3RTdGFydCBbbnVtYmVyXQord2luZG93Lndl
YmtpdFBlcmZvcm1hbmNlLnRpbWluZy5kb21Db21wbGV0ZSBbbnVtYmVyXQord2luZG93LndlYmtp
dFBlcmZvcm1hbmNlLnRpbWluZy5kb21Db250ZW50TG9hZGVkIFtudW1iZXJdCit3aW5kb3cud2Vi
a2l0UGVyZm9ybWFuY2UudGltaW5nLmRvbUludGVyYWN0aXZlIFtudW1iZXJdCit3aW5kb3cud2Vi
a2l0UGVyZm9ybWFuY2UudGltaW5nLmRvbUxvYWRpbmcgW251bWJlcl0KIHdpbmRvdy53ZWJraXRQ
ZXJmb3JtYW5jZS50aW1pbmcuZG9tYWluTG9va3VwRW5kIFtudW1iZXJdCiB3aW5kb3cud2Via2l0
UGVyZm9ybWFuY2UudGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0IFtudW1iZXJdCiB3aW5kb3cud2Vi
a2l0UGVyZm9ybWFuY2UudGltaW5nLmZldGNoU3RhcnQgW251bWJlcl0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy93ZWJ0aW1pbmctZG9jdW1lbnQtb3Blbi5q
cyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy93ZWJ0aW1pbmctZG9jdW1lbnQt
b3Blbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kMDY3OWEyODEzZjExMmEzOGI0NDExYmMxYTAwZTIzM2IwMDMw
MmU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3Rz
L3dlYnRpbWluZy1kb2N1bWVudC1vcGVuLmpzCkBAIC0wLDAgKzEsNDAgQEAKK3ZhciBwZXJmb3Jt
YW5jZSA9IHdpbmRvdy53ZWJraXRQZXJmb3JtYW5jZSB8fCB7fTsKK3ZhciBuYXZpZ2F0aW9uID0g
cGVyZm9ybWFuY2UubmF2aWdhdGlvbiB8fCB7fTsKK3ZhciB0aW1pbmcgPSBwZXJmb3JtYW5jZS50
aW1pbmcgfHwge307Cit2YXIgb3JpZ2luYWxUaW1pbmcgPSB7fTsKKword2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCB0ZXN0VGltaW5nV2l0aERvY3VtZW50T3BlbiwgZmFsc2UpOworCitm
dW5jdGlvbiB0ZXN0VGltaW5nV2l0aERvY3VtZW50T3BlbigpCit7CisgICAgZm9yIChwcm9wZXJ0
eSBpbiB0aW1pbmcpIHsKKyAgICAgICAgb3JpZ2luYWxUaW1pbmdbcHJvcGVydHldID0gdGltaW5n
W3Byb3BlcnR5XTsKKyAgICB9CisKKyAgICBkb2N1bWVudC5vcGVuKCk7CisgICAgZG9jdW1lbnQu
d3JpdGUoIjxodG1sPiIpOworICAgIGRvY3VtZW50LndyaXRlKCI8aGVhZD4iKTsKKyAgICBkb2N1
bWVudC53cml0ZSgiPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3NcIj4iKTsKKyAgICBkb2N1bWVudC53cml0ZSgiPHNjcmlwdCBz
cmM9XCIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanNcIj48L3NjcmlwdD4iKTsKKyAgICBk
b2N1bWVudC53cml0ZSgiPC9oZWFkPiIpOworICAgIGRvY3VtZW50LndyaXRlKCI8Ym9keT4iKTsK
KyAgICBkb2N1bWVudC53cml0ZSgiPHAgaWQ9XCJkZXNjcmlwdGlvblwiPjwvcD4iKTsKKyAgICBk
b2N1bWVudC53cml0ZSgiPGRpdiBpZD1cImNvbnNvbGVcIj48L2Rpdj4iKTsKKyAgICBkb2N1bWVu
dC53cml0ZSgiPHNjcmlwdCBzcmM9XCIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzXCI+
PC9zY3JpcHQ+Iik7CisgICAgZG9jdW1lbnQud3JpdGUoIjwvYm9keT4iKTsKKyAgICBkb2N1bWVu
dC53cml0ZSgiPC9odG1sPiIpOworICAgIGRvY3VtZW50LmNsb3NlKCk7CisKKyAgICBkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIE5hdmlnYXRpb25UaW1pbmdzIGRvbid0
IGNoYW5nZSBhZnRlciBhIGRvY3VtZW50Lm9wZW4oKS4iKTsKKworICAgIGtleXMgPSBPYmplY3Qu
a2V5cyh0aW1pbmcpLnNvcnQoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgc2hvdWxkQmUoInRpbWluZy4iICsga2V5c1tpXSwgIm9yaWdpbmFs
VGltaW5nLiIgKyBrZXlzW2ldKTsKKyAgICB9CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
anNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL3dlYnRpbWluZy1u
YXZpZ2F0ZS13aXRoaW4tZG9jdW1lbnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQt
dGVzdHMvd2VidGltaW5nLW5hdmlnYXRlLXdpdGhpbi1kb2N1bWVudC5qcwppbmRleCBhYjU4M2Jk
YjM4Y2JjMDNkMjFhY2ZiZWRkZjE1OGMwNDdhNmE5NmI2Li5iNjM1MzA1MTBjOTQ0Y2NhMTIxNzBh
OTcxNmYyMGI2MzkxY2Q4ZjljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3Jp
cHQtdGVzdHMvd2VidGltaW5nLW5hdmlnYXRlLXdpdGhpbi1kb2N1bWVudC5qcworKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMvd2VidGltaW5nLW5hdmlnYXRlLXdpdGhpbi1k
b2N1bWVudC5qcwpAQCAtNSw3ICs1LDkgQEAgdmFyIHRpbWluZyA9IHBlcmZvcm1hbmNlLnRpbWlu
ZyB8fCB7fTsKIAogZnVuY3Rpb24gY2hlY2tUaW1pbmdOb3RDaGFuZ2VkKCkKIHsKLSAgICBmb3Ig
KHZhciBwcm9wZXJ0eSBpbiB0aW1pbmcpIHsKKyAgICBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMo
dGltaW5nKS5zb3J0KCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgIHByb3BlcnR5ID0gcHJvcGVydGllc1tpXTsKICAgICAgICAgaWYg
KHRpbWluZ1twcm9wZXJ0eV0gPT09IGluaXRpYWxUaW1pbmdbcHJvcGVydHldKQogICAgICAgICAg
ICAgdGVzdFBhc3NlZChwcm9wZXJ0eSArICIgaXMgdW5jaGFuZ2VkLiIpOwogICAgICAgICBlbHNl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMvd2VidGltaW5n
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL3dlYnRpbWluZy5qcwppbmRl
eCBiYWUyMTM0OTcxMmQ1YTU2Y2M0MjY3MmI0YWZmYTA5NjhhN2YwOGQzLi4xZTM4Y2E4MWQ0Yjkx
YjU1Y2YxYzAyYWZhNWI3MjYzYzllMTMzMjdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zY3JpcHQtdGVzdHMvd2VidGltaW5nLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NjcmlwdC10ZXN0cy93ZWJ0aW1pbmcuanMKQEAgLTM4LDYgKzM4LDUwIEBAIGZ1bmN0aW9uIGNo
ZWNrVGltaW5nQmVmb3JlTG9hZCgpCiAKICAgICBzaG91bGRCZSgidGltaW5nLnJlc3BvbnNlU3Rh
cnQiLCAidGltaW5nLnJlcXVlc3RFbmQiKTsKIAorICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVx
dWFsKCJ0aW1pbmcuZG9tTG9hZGluZyIsICJ0aW1pbmcuZmV0Y2hTdGFydCIpOworICAgIHNob3Vs
ZEJlKCJ0aW1pbmcuZG9tSW50ZXJhY3RpdmUiLCAiMCIpOworICAgIHNob3VsZEJlKCJ0aW1pbmcu
ZG9tQ29udGVudExvYWRlZCIsICIwIik7CisgICAgc2hvdWxkQmUoInRpbWluZy5kb21Db21wbGV0
ZSIsICIwIik7CisKKyAgICBzaG91bGRCZSgidGltaW5nLmxvYWRFdmVudFN0YXJ0IiwgIjAiKTsK
KyAgICBzaG91bGRCZSgidGltaW5nLmxvYWRFdmVudEVuZCIsICIwIik7CisKKyAgICB2YXIgYm9k
eSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07CisgICAgdmFyIHNj
cmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOworICAgIHNjcmlwdC5hc3lu
YyA9IHRydWU7CisgICAgc2NyaXB0LnR5cGUgPSAidGV4dC9qYXZhc2NyaXB0IjsKKyAgICBzY3Jp
cHQuc3JjID0gInNjcmlwdC10ZXN0cy93ZWJ0aW1pbmctYXN5bmMuanMiOworICAgIGJvZHkuYXBw
ZW5kQ2hpbGQoc2NyaXB0KTsKK30KKworZnVuY3Rpb24gY2hlY2tXZWJUaW1pbmdXaGlsZUFzeW5j
KCkKK3sKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgidGltaW5nLm5hdmlnYXRpb25T
dGFydCIsICJvbmVIb3VyQWdvVVRDIik7CisKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVh
bCgidGltaW5nLnVubG9hZEV2ZW50RW5kIiwgInRpbWluZy5uYXZpZ2F0aW9uU3RhcnQiKTsKKwor
ICAgIHNob3VsZEJlKCJ0aW1pbmcucmVkaXJlY3RTdGFydCIsICIwIik7CisgICAgc2hvdWxkQmUo
InRpbWluZy5yZWRpcmVjdEVuZCIsICIwIik7CisgICAgc2hvdWxkQmUoIm5hdmlnYXRpb24ucmVk
aXJlY3RDb3VudCIsICIwIik7CisKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgidGlt
aW5nLmZldGNoU3RhcnQiLCAidGltaW5nLm5hdmlnYXRpb25TdGFydCIpOworCisgICAgc2hvdWxk
QmVHcmVhdGVyVGhhbk9yRXF1YWwoInRpbWluZy5kb21haW5Mb29rdXBTdGFydCIsICJ0aW1pbmcu
ZmV0Y2hTdGFydCIpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ0aW1pbmcuZG9t
YWluTG9va3VwRW5kIiwgInRpbWluZy5kb21haW5Mb29rdXBTdGFydCIpOworCisgICAgc2hvdWxk
QmVHcmVhdGVyVGhhbk9yRXF1YWwoInRpbWluZy5jb25uZWN0U3RhcnQiLCAidGltaW5nLmRvbWFp
bkxvb2t1cEVuZCIpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ0aW1pbmcuY29u
bmVjdEVuZCIsICJ0aW1pbmcuY29ubmVjdFN0YXJ0Iik7CisKKyAgICBzaG91bGRCZUdyZWF0ZXJU
aGFuT3JFcXVhbCgidGltaW5nLnJlcXVlc3RTdGFydCIsICJ0aW1pbmcuY29ubmVjdEVuZCIpOwor
ICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ0aW1pbmcucmVxdWVzdEVuZCIsICJ0aW1p
bmcucmVxdWVzdFN0YXJ0Iik7CisKKyAgICBzaG91bGRCZSgidGltaW5nLnJlc3BvbnNlU3RhcnQi
LCAidGltaW5nLnJlcXVlc3RFbmQiKTsKKworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFs
KCJ0aW1pbmcuZG9tTG9hZGluZyIsICJ0aW1pbmcuZmV0Y2hTdGFydCIpOworICAgIHNob3VsZEJl
R3JlYXRlclRoYW5PckVxdWFsKCJ0aW1pbmcuZG9tSW50ZXJhY3RpdmUiLCAidGltaW5nLnJlc3Bv
bnNlRW5kIik7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoInRpbWluZy5kb21Db250
ZW50TG9hZGVkIiwgInRpbWluZy5kb21JbnRlcmFjdGl2ZSIpOworICAgIHNob3VsZEJlKCJ0aW1p
bmcuZG9tQ29tcGxldGUiLCAiMCIpOworCiAgICAgc2hvdWxkQmUoInRpbWluZy5sb2FkRXZlbnRT
dGFydCIsICIwIik7CiAgICAgc2hvdWxkQmUoInRpbWluZy5sb2FkRXZlbnRFbmQiLCAiMCIpOwog
CkBAIC02OCw2ICsxMTIsMTEgQEAgZnVuY3Rpb24gY2hlY2tXZWJUaW1pbmdPbkxvYWQoKQogICAg
IHNob3VsZEJlKCJ0aW1pbmcucmVzcG9uc2VTdGFydCIsICJ0aW1pbmcucmVxdWVzdEVuZCIpOwog
ICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ0aW1pbmcucmVzcG9uc2VFbmQiLCAidGlt
aW5nLnJlc3BvbnNlU3RhcnQiKTsKIAorICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ0
aW1pbmcuZG9tTG9hZGluZyIsICJ0aW1pbmcuZmV0Y2hTdGFydCIpOworICAgIHNob3VsZEJlR3Jl
YXRlclRoYW5PckVxdWFsKCJ0aW1pbmcuZG9tSW50ZXJhY3RpdmUiLCAidGltaW5nLnJlc3BvbnNl
RW5kIik7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoInRpbWluZy5kb21Db250ZW50
TG9hZGVkIiwgInRpbWluZy5kb21JbnRlcmFjdGl2ZSIpOworICAgIHNob3VsZEJlR3JlYXRlclRo
YW5PckVxdWFsKCJ0aW1pbmcuZG9tQ29tcGxldGUiLCAidGltaW5nLmRvbUNvbnRlbnRMb2FkZWQi
KTsKKwogICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ0aW1pbmcubG9hZEV2ZW50U3Rh
cnQiLCAidGltaW5nLnJlc3BvbnNlRW5kIik7CiAgICAgc2hvdWxkQmUoInRpbWluZy5sb2FkRXZl
bnRFbmQiLCAiMCIpOwogCkBAIC05OCw2ICsxNDcsMTEgQEAgZnVuY3Rpb24gY2hlY2tXZWJUaW1p
bmdBZnRlckxvYWQoKQogICAgIHNob3VsZEJlKCJ0aW1pbmcucmVzcG9uc2VTdGFydCIsICJ0aW1p
bmcucmVxdWVzdEVuZCIpOwogICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ0aW1pbmcu
cmVzcG9uc2VFbmQiLCAidGltaW5nLnJlc3BvbnNlU3RhcnQiKTsKIAorICAgIHNob3VsZEJlR3Jl
YXRlclRoYW5PckVxdWFsKCJ0aW1pbmcuZG9tTG9hZGluZyIsICJ0aW1pbmcuZmV0Y2hTdGFydCIp
OworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ0aW1pbmcuZG9tSW50ZXJhY3RpdmUi
LCAidGltaW5nLnJlc3BvbnNlRW5kIik7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwo
InRpbWluZy5kb21Db250ZW50TG9hZGVkIiwgInRpbWluZy5kb21JbnRlcmFjdGl2ZSIpOworICAg
IHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ0aW1pbmcuZG9tQ29tcGxldGUiLCAidGltaW5n
LmRvbUNvbnRlbnRMb2FkZWQiKTsKKwogICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ0
aW1pbmcubG9hZEV2ZW50U3RhcnQiLCAidGltaW5nLnJlc3BvbnNlRW5kIik7CiAgICAgc2hvdWxk
QmVHcmVhdGVyVGhhbk9yRXF1YWwoInRpbWluZy5sb2FkRXZlbnRFbmQiLCAidGltaW5nLmxvYWRF
dmVudFN0YXJ0ICsgNTAiKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vd2Vi
dGltaW5nLWRvY3VtZW50LW9wZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
d2VidGltaW5nLWRvY3VtZW50LW9wZW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmYzgyNDk3
NmE5OTE1ZTJiZDVhZTkxOWVjOWY3NWM3MTkxNTkxYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS93ZWJ0aW1pbmctZG9jdW1lbnQtb3Blbi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyNyBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIE5hdmlnYXRpb25UaW1p
bmdzIGRvbid0IGNoYW5nZSBhZnRlciBhIGRvY3VtZW50Lm9wZW4oKS4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGltaW5nLmNvbm5lY3RFbmQgaXMgb3JpZ2luYWxUaW1p
bmcuY29ubmVjdEVuZAorUEFTUyB0aW1pbmcuY29ubmVjdFN0YXJ0IGlzIG9yaWdpbmFsVGltaW5n
LmNvbm5lY3RTdGFydAorUEFTUyB0aW1pbmcuZG9tQ29tcGxldGUgaXMgb3JpZ2luYWxUaW1pbmcu
ZG9tQ29tcGxldGUKK1BBU1MgdGltaW5nLmRvbUNvbnRlbnRMb2FkZWQgaXMgb3JpZ2luYWxUaW1p
bmcuZG9tQ29udGVudExvYWRlZAorUEFTUyB0aW1pbmcuZG9tSW50ZXJhY3RpdmUgaXMgb3JpZ2lu
YWxUaW1pbmcuZG9tSW50ZXJhY3RpdmUKK1BBU1MgdGltaW5nLmRvbUxvYWRpbmcgaXMgb3JpZ2lu
YWxUaW1pbmcuZG9tTG9hZGluZworUEFTUyB0aW1pbmcuZG9tYWluTG9va3VwRW5kIGlzIG9yaWdp
bmFsVGltaW5nLmRvbWFpbkxvb2t1cEVuZAorUEFTUyB0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQg
aXMgb3JpZ2luYWxUaW1pbmcuZG9tYWluTG9va3VwU3RhcnQKK1BBU1MgdGltaW5nLmZldGNoU3Rh
cnQgaXMgb3JpZ2luYWxUaW1pbmcuZmV0Y2hTdGFydAorUEFTUyB0aW1pbmcubG9hZEV2ZW50RW5k
IGlzIG9yaWdpbmFsVGltaW5nLmxvYWRFdmVudEVuZAorUEFTUyB0aW1pbmcubG9hZEV2ZW50U3Rh
cnQgaXMgb3JpZ2luYWxUaW1pbmcubG9hZEV2ZW50U3RhcnQKK1BBU1MgdGltaW5nLm5hdmlnYXRp
b25TdGFydCBpcyBvcmlnaW5hbFRpbWluZy5uYXZpZ2F0aW9uU3RhcnQKK1BBU1MgdGltaW5nLnJl
ZGlyZWN0RW5kIGlzIG9yaWdpbmFsVGltaW5nLnJlZGlyZWN0RW5kCitQQVNTIHRpbWluZy5yZWRp
cmVjdFN0YXJ0IGlzIG9yaWdpbmFsVGltaW5nLnJlZGlyZWN0U3RhcnQKK1BBU1MgdGltaW5nLnJl
cXVlc3RFbmQgaXMgb3JpZ2luYWxUaW1pbmcucmVxdWVzdEVuZAorUEFTUyB0aW1pbmcucmVxdWVz
dFN0YXJ0IGlzIG9yaWdpbmFsVGltaW5nLnJlcXVlc3RTdGFydAorUEFTUyB0aW1pbmcucmVzcG9u
c2VFbmQgaXMgb3JpZ2luYWxUaW1pbmcucmVzcG9uc2VFbmQKK1BBU1MgdGltaW5nLnJlc3BvbnNl
U3RhcnQgaXMgb3JpZ2luYWxUaW1pbmcucmVzcG9uc2VTdGFydAorUEFTUyB0aW1pbmcudW5sb2Fk
RXZlbnRFbmQgaXMgb3JpZ2luYWxUaW1pbmcudW5sb2FkRXZlbnRFbmQKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vd2VidGltaW5nLWRvY3VtZW50LW9wZW4uaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3dlYnRpbWluZy1kb2N1bWVudC1vcGVuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU5NWRlOGE5
NjhhNTllMDE1MWJjZjJkM2Q3MWE3ZGZhNzNlMjljMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3dlYnRpbWluZy1kb2N1bWVudC1vcGVuLmh0bWwKQEAgLTAsMCArMSwx
MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy93ZWJ0aW1pbmctZG9jdW1lbnQtb3Blbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS93ZWJ0aW1pbmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vd2VidGltaW5nLWV4cGVjdGVkLnR4dAppbmRleCA0ZTE2
OWY4YzY0MzQyYzc5OTdhYzhkMzRhNDUyYjc2MDA0NTgzMWFjLi43MzNlZTQ2ZmEyMDc5ZTg2NWU3
OTMwNjU2NmI4YWFjODM2Nzc1MTNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS93
ZWJ0aW1pbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3dlYnRpbWlu
Zy1leHBlY3RlZC50eHQKQEAgLTE2LDYgKzE2LDI5IEBAIFBBU1MgdGltaW5nLmNvbm5lY3RFbmQg
aXMgPj0gdGltaW5nLmNvbm5lY3RTdGFydAogUEFTUyB0aW1pbmcucmVxdWVzdFN0YXJ0IGlzID49
IHRpbWluZy5jb25uZWN0RW5kCiBQQVNTIHRpbWluZy5yZXF1ZXN0RW5kIGlzID49IHRpbWluZy5y
ZXF1ZXN0U3RhcnQKIFBBU1MgdGltaW5nLnJlc3BvbnNlU3RhcnQgaXMgdGltaW5nLnJlcXVlc3RF
bmQKK1BBU1MgdGltaW5nLmRvbUxvYWRpbmcgaXMgPj0gdGltaW5nLmZldGNoU3RhcnQKK1BBU1Mg
dGltaW5nLmRvbUludGVyYWN0aXZlIGlzIDAKK1BBU1MgdGltaW5nLmRvbUNvbnRlbnRMb2FkZWQg
aXMgMAorUEFTUyB0aW1pbmcuZG9tQ29tcGxldGUgaXMgMAorUEFTUyB0aW1pbmcubG9hZEV2ZW50
U3RhcnQgaXMgMAorUEFTUyB0aW1pbmcubG9hZEV2ZW50RW5kIGlzIDAKK1BBU1MgdGltaW5nLm5h
dmlnYXRpb25TdGFydCBpcyA+PSBvbmVIb3VyQWdvVVRDCitQQVNTIHRpbWluZy51bmxvYWRFdmVu
dEVuZCBpcyA+PSB0aW1pbmcubmF2aWdhdGlvblN0YXJ0CitQQVNTIHRpbWluZy5yZWRpcmVjdFN0
YXJ0IGlzIDAKK1BBU1MgdGltaW5nLnJlZGlyZWN0RW5kIGlzIDAKK1BBU1MgbmF2aWdhdGlvbi5y
ZWRpcmVjdENvdW50IGlzIDAKK1BBU1MgdGltaW5nLmZldGNoU3RhcnQgaXMgPj0gdGltaW5nLm5h
dmlnYXRpb25TdGFydAorUEFTUyB0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQgaXMgPj0gdGltaW5n
LmZldGNoU3RhcnQKK1BBU1MgdGltaW5nLmRvbWFpbkxvb2t1cEVuZCBpcyA+PSB0aW1pbmcuZG9t
YWluTG9va3VwU3RhcnQKK1BBU1MgdGltaW5nLmNvbm5lY3RTdGFydCBpcyA+PSB0aW1pbmcuZG9t
YWluTG9va3VwRW5kCitQQVNTIHRpbWluZy5jb25uZWN0RW5kIGlzID49IHRpbWluZy5jb25uZWN0
U3RhcnQKK1BBU1MgdGltaW5nLnJlcXVlc3RTdGFydCBpcyA+PSB0aW1pbmcuY29ubmVjdEVuZAor
UEFTUyB0aW1pbmcucmVxdWVzdEVuZCBpcyA+PSB0aW1pbmcucmVxdWVzdFN0YXJ0CitQQVNTIHRp
bWluZy5yZXNwb25zZVN0YXJ0IGlzIHRpbWluZy5yZXF1ZXN0RW5kCitQQVNTIHRpbWluZy5kb21M
b2FkaW5nIGlzID49IHRpbWluZy5mZXRjaFN0YXJ0CitQQVNTIHRpbWluZy5kb21JbnRlcmFjdGl2
ZSBpcyA+PSB0aW1pbmcucmVzcG9uc2VFbmQKK1BBU1MgdGltaW5nLmRvbUNvbnRlbnRMb2FkZWQg
aXMgPj0gdGltaW5nLmRvbUludGVyYWN0aXZlCitQQVNTIHRpbWluZy5kb21Db21wbGV0ZSBpcyAw
CiBQQVNTIHRpbWluZy5sb2FkRXZlbnRTdGFydCBpcyAwCiBQQVNTIHRpbWluZy5sb2FkRXZlbnRF
bmQgaXMgMAogUEFTUyB0aW1pbmcubmF2aWdhdGlvblN0YXJ0IGlzID49IG9uZUhvdXJBZ29VVEMK
QEAgLTMyLDYgKzU1LDEwIEBAIFBBU1MgdGltaW5nLnJlcXVlc3RTdGFydCBpcyA+PSB0aW1pbmcu
Y29ubmVjdEVuZAogUEFTUyB0aW1pbmcucmVxdWVzdEVuZCBpcyA+PSB0aW1pbmcucmVxdWVzdFN0
YXJ0CiBQQVNTIHRpbWluZy5yZXNwb25zZVN0YXJ0IGlzIHRpbWluZy5yZXF1ZXN0RW5kCiBQQVNT
IHRpbWluZy5yZXNwb25zZUVuZCBpcyA+PSB0aW1pbmcucmVzcG9uc2VTdGFydAorUEFTUyB0aW1p
bmcuZG9tTG9hZGluZyBpcyA+PSB0aW1pbmcuZmV0Y2hTdGFydAorUEFTUyB0aW1pbmcuZG9tSW50
ZXJhY3RpdmUgaXMgPj0gdGltaW5nLnJlc3BvbnNlRW5kCitQQVNTIHRpbWluZy5kb21Db250ZW50
TG9hZGVkIGlzID49IHRpbWluZy5kb21JbnRlcmFjdGl2ZQorUEFTUyB0aW1pbmcuZG9tQ29tcGxl
dGUgaXMgPj0gdGltaW5nLmRvbUNvbnRlbnRMb2FkZWQKIFBBU1MgdGltaW5nLmxvYWRFdmVudFN0
YXJ0IGlzID49IHRpbWluZy5yZXNwb25zZUVuZAogUEFTUyB0aW1pbmcubG9hZEV2ZW50RW5kIGlz
IDAKIFBBU1MgdGltaW5nLm5hdmlnYXRpb25TdGFydCBpcyA+PSBvbmVIb3VyQWdvVVRDCkBAIC00
OCw2ICs3NSwxMCBAQCBQQVNTIHRpbWluZy5yZXF1ZXN0U3RhcnQgaXMgPj0gdGltaW5nLmNvbm5l
Y3RFbmQKIFBBU1MgdGltaW5nLnJlcXVlc3RFbmQgaXMgPj0gdGltaW5nLnJlcXVlc3RTdGFydAog
UEFTUyB0aW1pbmcucmVzcG9uc2VTdGFydCBpcyB0aW1pbmcucmVxdWVzdEVuZAogUEFTUyB0aW1p
bmcucmVzcG9uc2VFbmQgaXMgPj0gdGltaW5nLnJlc3BvbnNlU3RhcnQKK1BBU1MgdGltaW5nLmRv
bUxvYWRpbmcgaXMgPj0gdGltaW5nLmZldGNoU3RhcnQKK1BBU1MgdGltaW5nLmRvbUludGVyYWN0
aXZlIGlzID49IHRpbWluZy5yZXNwb25zZUVuZAorUEFTUyB0aW1pbmcuZG9tQ29udGVudExvYWRl
ZCBpcyA+PSB0aW1pbmcuZG9tSW50ZXJhY3RpdmUKK1BBU1MgdGltaW5nLmRvbUNvbXBsZXRlIGlz
ID49IHRpbWluZy5kb21Db250ZW50TG9hZGVkCiBQQVNTIHRpbWluZy5sb2FkRXZlbnRTdGFydCBp
cyA+PSB0aW1pbmcucmVzcG9uc2VFbmQKIFBBU1MgdGltaW5nLmxvYWRFdmVudEVuZCBpcyA+PSB0
aW1pbmcubG9hZEV2ZW50U3RhcnQgKyA1MAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vd2VidGltaW5nLW5hdmlnYXRlLXdp
dGhpbi1kb2N1bWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS93ZWJ0aW1p
bmctbmF2aWdhdGUtd2l0aGluLWRvY3VtZW50LWV4cGVjdGVkLnR4dAppbmRleCAyMmFlZmQyZDMz
OWFiMTYyNjJhMmJjYjM5Nzk1YWFmODM3ZmFmMTY5Li5jZmNhZGFhYzk1NzI2Y2RmODJlMGIyOGQ0
MjU3MGE1YzdmZGIzNGM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS93ZWJ0aW1p
bmctbmF2aWdhdGUtd2l0aGluLWRvY3VtZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS93ZWJ0aW1pbmctbmF2aWdhdGUtd2l0aGluLWRvY3VtZW50LWV4cGVjdGVkLnR4
dApAQCAtMywyMSArMywyNSBAQCBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgbmF2aWdhdGluZyB3aXRo
aW4gdGhlIGRvY3VtZW50IGRvZXMgbm90IHJlc2V0IFdlYiBUaW1pbmcgbgogT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgogCiAKLVBBU1MgcmVxdWVzdEVuZCBpcyB1bmNoYW5nZWQuCi1QQVNTIHJl
c3BvbnNlU3RhcnQgaXMgdW5jaGFuZ2VkLgotUEFTUyBjb25uZWN0U3RhcnQgaXMgdW5jaGFuZ2Vk
LgotUEFTUyBkb21haW5Mb29rdXBTdGFydCBpcyB1bmNoYW5nZWQuCiBQQVNTIGNvbm5lY3RFbmQg
aXMgdW5jaGFuZ2VkLgotUEFTUyByZXNwb25zZUVuZCBpcyB1bmNoYW5nZWQuCi1QQVNTIHJlcXVl
c3RTdGFydCBpcyB1bmNoYW5nZWQuCi1QQVNTIG5hdmlnYXRpb25TdGFydCBpcyB1bmNoYW5nZWQu
Ci1QQVNTIGxvYWRFdmVudEVuZCBpcyB1bmNoYW5nZWQuCi1QQVNTIHJlZGlyZWN0U3RhcnQgaXMg
dW5jaGFuZ2VkLgorUEFTUyBjb25uZWN0U3RhcnQgaXMgdW5jaGFuZ2VkLgorUEFTUyBkb21Db21w
bGV0ZSBpcyB1bmNoYW5nZWQuCitQQVNTIGRvbUNvbnRlbnRMb2FkZWQgaXMgdW5jaGFuZ2VkLgor
UEFTUyBkb21JbnRlcmFjdGl2ZSBpcyB1bmNoYW5nZWQuCitQQVNTIGRvbUxvYWRpbmcgaXMgdW5j
aGFuZ2VkLgogUEFTUyBkb21haW5Mb29rdXBFbmQgaXMgdW5jaGFuZ2VkLgotUEFTUyB1bmxvYWRF
dmVudEVuZCBpcyB1bmNoYW5nZWQuCitQQVNTIGRvbWFpbkxvb2t1cFN0YXJ0IGlzIHVuY2hhbmdl
ZC4KIFBBU1MgZmV0Y2hTdGFydCBpcyB1bmNoYW5nZWQuCitQQVNTIGxvYWRFdmVudEVuZCBpcyB1
bmNoYW5nZWQuCiBQQVNTIGxvYWRFdmVudFN0YXJ0IGlzIHVuY2hhbmdlZC4KK1BBU1MgbmF2aWdh
dGlvblN0YXJ0IGlzIHVuY2hhbmdlZC4KIFBBU1MgcmVkaXJlY3RFbmQgaXMgdW5jaGFuZ2VkLgor
UEFTUyByZWRpcmVjdFN0YXJ0IGlzIHVuY2hhbmdlZC4KK1BBU1MgcmVxdWVzdEVuZCBpcyB1bmNo
YW5nZWQuCitQQVNTIHJlcXVlc3RTdGFydCBpcyB1bmNoYW5nZWQuCitQQVNTIHJlc3BvbnNlRW5k
IGlzIHVuY2hhbmdlZC4KK1BBU1MgcmVzcG9uc2VTdGFydCBpcyB1bmNoYW5nZWQuCitQQVNTIHVu
bG9hZEV2ZW50RW5kIGlzIHVuY2hhbmdlZC4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAzY2IxNzVkODUwMTViM2FjNmFjZmFiOGZhZWZiYmJkYTFiMTBl
YzZkLi43Njk0NmU2OGRkMjkxNWY3OTcyYWVkNGJjZWIxZWI2MzVkYzAxMDA2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMjExMyw2ICsy
MTEzLDMyIEBACiAgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVFdmVudCk6IE5v
IGxvbmdlciBwYXNzIGZvY3VzIGFuZCBibHVyIGV2ZW50cyB0bwogICAgICAgICBwbHVnaW5zIHdo
ZW4gRE9NRm9jdXNJbiAvIERPTUZvY3VzT3V0IGV2ZW50cyBvY2N1ci4KIAorMjAxMC0xMC0wMSAg
SmFtZXMgU2ltb25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1dlYiBUaW1pbmddIEltcGxlbWVudCBk
b20qIHRpbWluZyBtYXJrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDYzMDEKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS93ZWJ0aW1pbmctZG9jdW1l
bnQtb3Blbi5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRSZWFkeVN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRpbWluZyk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50VGltaW5nLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRUaW1pbmc6OkRvY3VtZW50VGltaW5nKToKKyAgICAgICAgKiBwYWdlL1RpbWluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUaW1pbmc6OmRvbUxvYWRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6VGltaW5nOjpkb21JbnRlcmFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1pbmc6
OmRvbUNvbnRlbnRMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGltaW5nOjpkb21Db21wbGV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1pbmc6OmRvY3VtZW50VGltaW5nKToKKyAgICAgICAg
KiBwYWdlL1RpbWluZy5oOgorICAgICAgICAqIHBhZ2UvVGltaW5nLmlkbDoKKwogMjAxMC0xMC0w
MSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBiOWM1YjVhNTQ0ZjJhMDM2MjA2ZDM1Mzc4OWYw
OGVjMWMyMzQ3OTA0Li44NTA0MGFmOWY0ZDlhMzE3OWY2NDJiZDc3NzI3YzllZjZhMTkxOGE4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KQEAgLTEwOTgsNiArMTA5OCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9kb20vRG9jdW1lbnRNYXJrZXIuaCBcCiAJV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuY3Bw
IFwKIAlXZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oIFwKKwlXZWJDb3JlL2RvbS9Eb2N1bWVu
dFRpbWluZy5oIFwKIAlXZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwIFwKIAlXZWJDb3JlL2Rv
bS9Eb2N1bWVudFR5cGUuaCBcCiAJV2ViQ29yZS9kb20vRE9NQ29yZUV4Y2VwdGlvbi5oIFwKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggZWM2MmFiNjNjNzA3OTViYTEzMWFiMmJjYjQ3ZGMwMjA1MWYwZjQ1OC4uMjc0MjFkY2FlNDdi
YjYzOTVlMTdjYmI0N2I1YTNmZDg4MTU0ZTNhZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTExNzYsNiArMTE3Niw3IEBACiAg
ICAgICAgICAgICAnZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oJywKICAgICAgICAgICAg
ICdkb20vRG9jdW1lbnRQYXJzZXIuY3BwJywKICAgICAgICAgICAgICdkb20vRG9jdW1lbnRQYXJz
ZXIuaCcsCisgICAgICAgICAgICAnZG9tL0RvY3VtZW50VGltaW5nLmgnLAogICAgICAgICAgICAg
J2RvbS9Eb2N1bWVudFR5cGUuY3BwJywKICAgICAgICAgICAgICdkb20vRG9jdW1lbnRUeXBlLmgn
LAogICAgICAgICAgICAgJ2RvbS9EeW5hbWljTm9kZUxpc3QuY3BwJywKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDhjMzI2YmJlMWIyM2Y0ZDlkMGY1MTdmYTVmYTM1OTQx
NzQ1OTQ2NDUuLmRjMmJlOTM4OTliNGRhODdjNjA5ZWE1Y2JhNzA5ZTNiY2U5ZTNjNzggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzQwNDcsNiArMzQwNDcsMTAgQEAK
IAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9t
XERvY3VtZW50VGltaW5nLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxkb21cRG9jdW1lbnRUeXBlLmNwcCINCiAJCQkJPg0KIAkJCTwvRmls
ZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM1YjRm
NTFjNGMyOWY2MjE3ZGM1YTRlMjgyOGMzMjIwN2FlNGYzYTAuLjVlN2Q3NDk1NzdkM2I2ZWE5Y2Iw
ZWZjZTBiMDUwNjhkOTI1MzhhMTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yNDY2LDYgKzI0NjYsNyBAQAogCQk4NUZGMzE1QTBBQUZCRkNCMDAzNzRG
MzggLyogRE9NS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODVGRjMxNTgwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZl
bnQuaCAqLzsgfTsKIAkJODVGRjMxNUIwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZl
bnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUZG
MzE1OTBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5tbSAqLzsgfTsKIAkJODYy
NDNEMDExMUJDMzFGNzAwQ0MwMDZBIC8qIEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjI0M0QwMDExQkMzMUY3
MDBDQzAwNkEgLyogSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCAqLzsgfTsKKwkJODZEOTgyRjcx
MjVDMTU0MDAwQUQ5RTNEIC8qIERvY3VtZW50VGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQ5ODJGNjEyNUMxNTQwMDBBRDlFM0QgLyogRG9j
dW1lbnRUaW1pbmcuaCAqLzsgfTsKIAkJODkzQzQ3QTcxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVD
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODkzQzQ3QTUxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVDYWxsYmFjay5oICovOyB9OwogCQk4OTND
NDdBODEyMzg5MDhCMDAyQjNEODYgLyogRmlsZVdyaXRlckNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDdBNjEyMzg5MDhCMDAyQjNE
ODYgLyogRmlsZVdyaXRlckNhbGxiYWNrLmggKi87IH07CiAJCTg5M0M0N0I3MTIzOEEwOTkwMDJC
M0Q4NiAvKiBKU0ZpbGVDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDdCNTEyMzhBMDk5MDAyQjNEODYgLyogSlNGaWxlQ2FsbGJh
Y2suY3BwICovOyB9OwpAQCAtODQ4MCw2ICs4NDgxLDcgQEAKIAkJODVGRjMxNTgwQUFGQkZDQjAw
Mzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTUtleWJvYXJkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODVGRjMxNTkwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NS2V5Ym9hcmRFdmVudC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYyNDNEMDAxMUJDMzFGNzAwQ0MwMDZBIC8qIEpT
QXJyYXlCdWZmZXJWaWV3SGVscGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg2RDk4MkY2MTI1QzE1NDAwMEFEOUUzRCAvKiBEb2N1bWVudFRpbWluZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudFRpbWluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4OTNDNDdBNTEyMzg5MDhCMDAyQjNEODYgLyogRmlsZUNhbGxiYWNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVDYWxsYmFjay5oOyBwYXRoID0g
ZmlsZWFwaS9GaWxlQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkz
QzQ3QTYxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVXcml0ZXJDYWxsYmFjay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlV3JpdGVyQ2FsbGJhY2suaDsgcGF0aCA9IGZpbGVh
cGkvRmlsZVdyaXRlckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5
M0M0N0I1MTIzOEEwOTkwMDJCM0Q4NiAvKiBKU0ZpbGVDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZpbGVDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNzg5Niw2ICsxNzg5OCw3IEBACiAJCQkJQ0UwNTdGQTQxMjIw
NzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovLAogCQkJCUE4QzIy
ODBEMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgKi8sCiAJCQkJQkNDRkJB
RTcwQjUxNTJFRDAwMDFGMUQ3IC8qIERvY3VtZW50UGFyc2VyLmggKi8sCisJCQkJODZEOTgyRjYx
MjVDMTU0MDAwQUQ5RTNEIC8qIERvY3VtZW50VGltaW5nLmggKi8sCiAJCQkJQTgxODVGMzIwOTc2
NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50VHlwZS5jcHAgKi8sCiAJCQkJQTgxODVGMzEwOTc2NTc2
NTAwNTgyNkQ5IC8qIERvY3VtZW50VHlwZS5oICovLAogCQkJCTkzRUVDMUU4MDlDMjg3NzcwMEM1
MTVEMSAvKiBEb2N1bWVudFR5cGUuaWRsICovLApAQCAtMjA5NjEsNiArMjA5NjQsNyBAQAogCQkJ
CTA4MTY2OEQ0MTI1NjAzQkYwMDZGMjVERSAvKiBTVkdUZXh0Q2h1bmtCdWlsZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwODE2NjhEQTEyNTYwM0Q1MDA2RjI1REUgLyogU1ZHVGV4dExheW91dEVu
Z2luZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGOEUxMUExMjU2NTkyNjAwMjMwRkY3IC8qIFBy
b3h5U2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkQ5ODJGNzEyNUMxNTQwMDBBRDlFM0Qg
LyogRG9jdW1lbnRUaW1pbmcuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDIxOTJmMTFj
ZWUzOTk2NzZlN2QyNjBmNTFjNGQ3NWFkMjRjZGM0MDMuLmI1ZmQ4MDMxYjI0MmI3ODMzZjRjNmI2
MWU1N2E2Nzc2N2RmOGYzZDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTk4NCw2ICs5ODQsMjEgQEAgU3RyaW5n
IERvY3VtZW50OjpyZWFkeVN0YXRlKCkgY29uc3QKIAogdm9pZCBEb2N1bWVudDo6c2V0UmVhZHlT
dGF0ZShSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCiB7CisgICAgc3dpdGNoIChyZWFkeVN0YXRlKSB7
CisgICAgY2FzZSBMb2FkaW5nOgorICAgICAgICBpZiAoIW1fZG9jdW1lbnRUaW1pbmcuZG9tTG9h
ZGluZykKKyAgICAgICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9tTG9hZGluZyA9IGN1cnJlbnRU
aW1lKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJhY3RpdmU6CisgICAgICAgIGlm
ICghbV9kb2N1bWVudFRpbWluZy5kb21JbnRlcmFjdGl2ZSkKKyAgICAgICAgICAgIG1fZG9jdW1l
bnRUaW1pbmcuZG9tSW50ZXJhY3RpdmUgPSBjdXJyZW50VGltZSgpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENvbXBsZXRlOgorICAgICAgICBpZiAoIW1fZG9jdW1lbnRUaW1pbmcuZG9tQ29t
cGxldGUpCisgICAgICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNvbXBsZXRlID0gY3VycmVu
dFRpbWUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgLy8gRklYTUU6IEZpcmUgdGhl
IHJlYWR5c3RhdGVjaGFuZ2UgZXZlbnQgb24gdGhpcyBEb2N1bWVudC4KICAgICBtX3JlYWR5U3Rh
dGUgPSByZWFkeVN0YXRlOwogfQpAQCAtNDEzNCw2ICs0MTQ5LDggQEAgdm9pZCBEb2N1bWVudDo6
ZmluaXNoZWRQYXJzaW5nKCkKICAgICBBU1NFUlQoIXNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigp
IHx8ICFtX3BhcnNlci0+aXNQYXJzaW5nKCkpOwogICAgIEFTU0VSVCghc2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyKCkgfHwgbV9yZWFkeVN0YXRlICE9IExvYWRpbmcpOwogICAgIHNldFBhcnNpbmco
ZmFsc2UpOworICAgIGlmICghbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkKQorICAg
ICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWQgPSBjdXJyZW50VGltZSgpOwog
ICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NQ29udGVudExv
YWRlZEV2ZW50LCB0cnVlLCBmYWxzZSkpOwogCiAgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkg
ewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKaW5kZXggMzcyMDkwYzQ1OTk0ZjdjYmJjMDZjYmU0OWVhN2ZiNmQwOTQzNzc0YS4uMjkx
MzRkZjc5NmNjMWNhNjRiMDA5MmU2Y2U1MWU1ZWJhZjYwNjllOSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRU
aW1pbmcuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC0xMDMzLDYgKzEwMzQsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkZWNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7CiAgICAg
Ym9vbCBpc0RlbGF5aW5nTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9sb2FkRXZlbnREZWxh
eUNvdW50OyB9CiAKKyAgICBjb25zdCBEb2N1bWVudFRpbWluZyogdGltaW5nKCkgY29uc3QgeyBy
ZXR1cm4gJm1fZG9jdW1lbnRUaW1pbmc7IH0KKwogcHJvdGVjdGVkOgogICAgIERvY3VtZW50KEZy
YW1lKiwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MLCBjb25zdCBL
VVJMJiBiYXNlVVJMID0gS1VSTCgpKTsKIApAQCAtMTMyNCw2ICsxMzI3LDggQEAgcHJpdmF0ZToK
ICAgICBUaW1lcjxEb2N1bWVudD4gbV9sb2FkRXZlbnREZWxheVRpbWVyOwogCiAgICAgVmlld3Bv
cnRBcmd1bWVudHMgbV92aWV3cG9ydEFyZ3VtZW50czsKKworICAgIERvY3VtZW50VGltaW5nIG1f
ZG9jdW1lbnRUaW1pbmc7CiB9OwogCiBpbmxpbmUgYm9vbCBEb2N1bWVudDo6aGFzRWxlbWVudFdp
dGhJZChBdG9taWNTdHJpbmdJbXBsKiBpZCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L0RvY3VtZW50VGltaW5nLmggYi9XZWJDb3JlL2RvbS9Eb2N1bWVudFRpbWluZy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmEwYmJiOGMyYjY3ZDhlOTZjYWJkMGNkMGNlNWExZDFhZGE0YmQ4NWEKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudFRpbWluZy5oCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
RG9jdW1lbnRUaW1pbmdfaAorI2RlZmluZSBEb2N1bWVudFRpbWluZ19oCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RydWN0IERvY3VtZW50VGltaW5nIHsKKyAgICBEb2N1bWVudFRpbWluZygp
CisgICAgICAgIDogZG9tTG9hZGluZygwLjApCisgICAgICAgICwgZG9tSW50ZXJhY3RpdmUoMC4w
KQorICAgICAgICAsIGRvbUNvbnRlbnRMb2FkZWQoMC4wKQorICAgICAgICAsIGRvbUNvbXBsZXRl
KDAuMCkKKyAgICB7CisgICAgfQorCisgICAgZG91YmxlIGRvbUxvYWRpbmc7CisgICAgZG91Ymxl
IGRvbUludGVyYWN0aXZlOworICAgIGRvdWJsZSBkb21Db250ZW50TG9hZGVkOworICAgIGRvdWJs
ZSBkb21Db21wbGV0ZTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvVGltaW5nLmNwcCBiL1dlYkNvcmUvcGFnZS9UaW1pbmcuY3BwCmluZGV4IDhhMGRlMmE4ZWNk
Mjk1YmYyZDc0ZThhNWRlYzg0YTRiNjllZDMwMmQuLjNkOThkYzJkM2I0ZTNhN2MzYzhhMTM4MDQ4
OTBkZWM3MTAyNDFlYmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9UaW1pbmcuY3BwCisrKyBi
L1dlYkNvcmUvcGFnZS9UaW1pbmcuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJE
b2N1bWVudExvYWRUaW1pbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1
ZGUgIkRvY3VtZW50VGltaW5nLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUxvYWRUaW1pbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC0yNDYs
NiArMjQ3LDQyIEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBUaW1pbmc6OnJlc3BvbnNlRW5kKCkgY29u
c3QKICAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+cmVzcG9uc2VFbmQp
OwogfQogCit1bnNpZ25lZCBsb25nIGxvbmcgVGltaW5nOjpkb21Mb2FkaW5nKCkgY29uc3QKK3sK
KyAgICBjb25zdCBEb2N1bWVudFRpbWluZyogdGltaW5nID0gZG9jdW1lbnRUaW1pbmcoKTsKKyAg
ICBpZiAoIXRpbWluZykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gdG9JbnRlZ2Vy
TWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tTG9hZGluZyk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9u
ZyBUaW1pbmc6OmRvbUludGVyYWN0aXZlKCkgY29uc3QKK3sKKyAgICBjb25zdCBEb2N1bWVudFRp
bWluZyogdGltaW5nID0gZG9jdW1lbnRUaW1pbmcoKTsKKyAgICBpZiAoIXRpbWluZykKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+
ZG9tSW50ZXJhY3RpdmUpOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgVGltaW5nOjpkb21Db250
ZW50TG9hZGVkKCkgY29uc3QKK3sKKyAgICBjb25zdCBEb2N1bWVudFRpbWluZyogdGltaW5nID0g
ZG9jdW1lbnRUaW1pbmcoKTsKKyAgICBpZiAoIXRpbWluZykKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tQ29udGVudExvYWRl
ZCk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBUaW1pbmc6OmRvbUNvbXBsZXRlKCkgY29uc3QK
K3sKKyAgICBjb25zdCBEb2N1bWVudFRpbWluZyogdGltaW5nID0gZG9jdW1lbnRUaW1pbmcoKTsK
KyAgICBpZiAoIXRpbWluZykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gdG9JbnRl
Z2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZG9tQ29tcGxldGUpOworfQorCiB1bnNpZ25lZCBsb25n
IGxvbmcgVGltaW5nOjpsb2FkRXZlbnRTdGFydCgpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnRMb2Fk
VGltaW5nKiB0aW1pbmcgPSBkb2N1bWVudExvYWRUaW1pbmcoKTsKQEAgLTI3Miw2ICszMDksMTgg
QEAgRG9jdW1lbnRMb2FkZXIqIFRpbWluZzo6ZG9jdW1lbnRMb2FkZXIoKSBjb25zdAogICAgIHJl
dHVybiBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKIH0KIAorY29uc3QgRG9j
dW1lbnRUaW1pbmcqIFRpbWluZzo6ZG9jdW1lbnRUaW1pbmcoKSBjb25zdAoreworICAgIGlmICgh
bV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBt
X2ZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiAw
OworCisgICAgcmV0dXJuIGRvY3VtZW50LT50aW1pbmcoKTsKK30KKwogRG9jdW1lbnRMb2FkVGlt
aW5nKiBUaW1pbmc6OmRvY3VtZW50TG9hZFRpbWluZygpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciA9IGRvY3VtZW50TG9hZGVyKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvVGltaW5nLmggYi9XZWJDb3JlL3BhZ2UvVGltaW5nLmgKaW5kZXggZjQ4ZjUyNTdiYzFlNWMw
MWNjNjVjYjE4M2I3ZDEwMTlhYTI2YjU4NS4uM2UzNDg1ZmVlNGIzZGQwMjYyYjIwYzQwZDdkM2E0
M2VjMTM2MWNiMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1RpbWluZy5oCisrKyBiL1dlYkNv
cmUvcGFnZS9UaW1pbmcuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0cnVjdCBEb2N1bWVudExvYWRUaW1pbmc7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKK3N0cnVj
dCBEb2N1bWVudFRpbWluZzsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUmVzb3VyY2VMb2FkVGltaW5n
OwogCkBAIC02MywxMiArNjQsMTcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBy
ZXF1ZXN0RW5kKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHJlc3BvbnNlU3RhcnQo
KSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmVzcG9uc2VFbmQoKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgZG9tTG9hZGluZygpIGNvbnN0OworICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBkb21JbnRlcmFjdGl2ZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBk
b21Db250ZW50TG9hZGVkKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGRvbUNvbXBs
ZXRlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGxvYWRFdmVudFN0YXJ0KCkgY29u
c3Q7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGxvYWRFdmVudEVuZCgpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIFRpbWluZyhGcmFtZSopOwogCisgICAgY29uc3QgRG9jdW1lbnRUaW1pbmcqIGRv
Y3VtZW50VGltaW5nKCkgY29uc3Q7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVy
KCkgY29uc3Q7CiAgICAgRG9jdW1lbnRMb2FkVGltaW5nKiBkb2N1bWVudExvYWRUaW1pbmcoKSBj
b25zdDsKICAgICBSZXNvdXJjZUxvYWRUaW1pbmcqIHJlc291cmNlTG9hZFRpbWluZygpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1RpbWluZy5pZGwgYi9XZWJDb3JlL3BhZ2UvVGlt
aW5nLmlkbAppbmRleCBlN2U0NmNjNGNhMGVmY2ZlYjMwYjgyNzk3YWUwZTVlZDkxMGUzY2Q3Li4w
MGQzZTI0NjgwYjM4NTI4M2UwOTUyMWI3NDIwMzQzOTNjMWEzYmVhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvVGltaW5nLmlkbAorKysgYi9XZWJDb3JlL3BhZ2UvVGltaW5nLmlkbApAQCAtNDUs
NiArNDUsMTAgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxvbmcgcmVxdWVzdEVuZDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIGxvbmcgbG9uZyByZXNwb25zZVN0YXJ0OwogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIHJlc3BvbnNlRW5kOworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIGRvbUxvYWRpbmc7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgZG9tSW50ZXJhY3RpdmU7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgZG9tQ29udGVudExvYWRlZDsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBkb21Db21wbGV0ZTsK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBsb2FkRXZlbnRT
dGFydDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBsb2Fk
RXZlbnRFbmQ7CiAgICAgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69966</attachid>
            <date>2010-10-06 11:20:31 -0700</date>
            <delta_ts>2010-10-06 12:15:20 -0700</delta_ts>
            <desc>Patch for this issue</desc>
            <filename>bug-47244-20101006112028.patch</filename>
            <type>text/plain</type>
            <size>21223</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1YjAwOTk3MGVhZDBlYTI0ZDczNTYzYjAzODczOGI1OTU2MGMyNGJiLi4zMTY5YzNm
OTczMTZmNjQ1NzBhMDQxZmFmM2Y4ZGM2MWU4MTM1YWMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMTAtMDYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIGVkaXRp
bmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0RGF0YS1nZXREYXRhLmh0bWwgZmFpbHMgb24g
R1RLKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcy
NDQKKworICAgICAgICBVbnNraXAgdGhlIGZyZXNobHkgcGFzc2luZyB0ZXN0IGFuZCBhZGQgYSBi
YXNlbGluZSB3aGljaCBoYXMgYSBQQVNTIGZvciBhbGwKKyAgICAgICAgdGVzdHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDogVW5za2lwIHBhc3NpbmcgdGVzdC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci1zZXREYXRhLWdl
dERhdGEtZXhwZWN0ZWQudHh0OgorCiAyMDEwLTEwLTA2ICBBbGJlcnQgSi4gV29uZyAgPGFqd29u
Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbnJldmlld2VkLiBCdWlsZCBm
aXguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGFUcmFuc2Zlci1zZXREYXRhLWdldERhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0RGF0YS1n
ZXREYXRhLWV4cGVjdGVkLnR4dAppbmRleCA5YmQ1Y2VjMjQ4ZjNjZGY0NjVkMTIzNzBiZmVkYjYz
N2MzMDU3NjNlLi42ODEwNmM4ZjQ4OTU2YzZhYzJlNTNiYjA0MmFiMzRhZWFiYmIyMjExIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFU
cmFuc2Zlci1zZXREYXRhLWdldERhdGEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0
YS1leHBlY3RlZC50eHQKQEAgLTUsMzAgKzUsMzcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUK
IAogLS0tIFRlc3Qgc2V0L2dldCAnVVJMJzoKIFBBU1MgZ2V0RGF0YVJlc3VsdFR5cGUgaXMgInN0
cmluZyIKLVBBU1MgZ2V0RGF0YUxpbmVzLmxlbmd0aCBpcyAxCi1QQVNTIGdldERhdGFMaW5lc1sw
XS5yZXBsYWNlKC9cLyQvLCAnJykgaXMgImh0dHA6Ly90ZXN0LmNvbSIKK1BBU1MgZ2V0RGF0YVJl
c3VsdCBpcyAiaHR0cDovL3Rlc3QuY29tLyIKKy0tLSBUZXN0IHNldC9nZXQgJ1VSTCcgd2l0aCBt
dWx0aXBsZSBVUkxzOgorUEFTUyBnZXREYXRhUmVzdWx0VHlwZSBpcyAic3RyaW5nIgorUEFTUyBn
ZXREYXRhUmVzdWx0IGlzICJodHRwOi8vdGVzdC5jb20vIgogLS0tIFRlc3Qgc2V0L2dldCAndGV4
dC91cmktbGlzdCc6CiBQQVNTIGdldERhdGFSZXN1bHRUeXBlIGlzICJzdHJpbmciCi1QQVNTIGdl
dERhdGFMaW5lcy5sZW5ndGggaXMgMgotUEFTUyBnZXREYXRhTGluZXNbMF0ucmVwbGFjZSgvXC8k
LywgJycpIGlzICJodHRwOi8vdGVzdC5jb20iCi1QQVNTIGdldERhdGFMaW5lc1sxXS5yZXBsYWNl
KC9cLyQvLCAnJykgaXMgImh0dHA6Ly9jaGVjay5jb20iCitQQVNTIGdldERhdGFSZXN1bHQgaXMg
Imh0dHA6Ly90ZXN0LmNvbVxyXG5odHRwOi8vY2hlY2suY29tIgorLS0tIFRlc3Qgc2V0L2dldCAn
dGV4dC91cmktbGlzdCcgdXNpbmcgJ1xuJzoKK1BBU1MgZ2V0RGF0YVJlc3VsdFR5cGUgaXMgInN0
cmluZyIKK1BBU1MgZ2V0RGF0YVJlc3VsdCBpcyAiaHR0cDovL3Rlc3QuY29tXG5odHRwOi8vY2hl
Y2suY29tIgogLS0tIFRlc3Qgc2V0ICd0ZXh0L3VyaS1saXN0JywgZ2V0ICdVUkwnOgogUEFTUyBn
ZXREYXRhUmVzdWx0VHlwZSBpcyAic3RyaW5nIgotUEFTUyBnZXREYXRhTGluZXMubGVuZ3RoIGlz
IDEKLVBBU1MgZ2V0RGF0YUxpbmVzWzBdLnJlcGxhY2UoL1wvJC8sICcnKSBpcyAiaHR0cDovL3Rl
c3QuY29tIgorUEFTUyBnZXREYXRhUmVzdWx0IGlzICJodHRwOi8vdGVzdC5jb20vIgorLS0tIFRl
c3Qgc2V0ICdVUkwnLCBnZXQgJ3RleHQvdXJpLWxpc3QnOgorUEFTUyBnZXREYXRhUmVzdWx0VHlw
ZSBpcyAic3RyaW5nIgorUEFTUyBnZXREYXRhUmVzdWx0IGlzICJodHRwOi8vdGVzdC5jb21cclxu
aHR0cDovL2NoZWNrLmNvbSIKIC0tLSBUZXN0IHNldCAndGV4dC91cmktbGlzdCcsIGdldCAnVVJM
JywgdXNpbmcgb25seSAnXG4nOgogUEFTUyBnZXREYXRhUmVzdWx0VHlwZSBpcyAic3RyaW5nIgot
UEFTUyBnZXREYXRhTGluZXMubGVuZ3RoIGlzIDEKLVBBU1MgZ2V0RGF0YUxpbmVzWzBdLnJlcGxh
Y2UoL1wvJC8sICcnKSBpcyAiaHR0cDovL3Rlc3QuY29tIgorUEFTUyBnZXREYXRhUmVzdWx0IGlz
ICJodHRwOi8vdGVzdC5jb20vIgogLS0tIFRlc3Qgc2V0L2dldCAndGV4dC91cmktbGlzdCcgd2l0
aCBjb21tZW50czoKIFBBU1MgZ2V0RGF0YVJlc3VsdFR5cGUgaXMgInN0cmluZyIKLVBBU1MgZ2V0
RGF0YUxpbmVzLmxlbmd0aCBpcyAyCi1QQVNTIGdldERhdGFMaW5lc1swXS5yZXBsYWNlKC9cLyQv
LCAnJykgaXMgImh0dHA6Ly90ZXN0LmNvbSIKLVBBU1MgZ2V0RGF0YUxpbmVzWzFdLnJlcGxhY2Uo
L1wvJC8sICcnKSBpcyAiaHR0cDovL2NoZWNrLmNvbSIKK1BBU1MgZ2V0RGF0YVJlc3VsdCBpcyAi
IyBjb21tZW50XHJcbmh0dHA6Ly90ZXN0LmNvbVxyXG5odHRwOi8vY2hlY2suY29tIgorLS0tIFRl
c3Qgc2V0ICd0ZXh0L3VyaS1saXN0JywgZ2V0ICdVUkwnIHdpdGggY29tbWVudHM6CitQQVNTIGdl
dERhdGFSZXN1bHRUeXBlIGlzICJzdHJpbmciCitQQVNTIGdldERhdGFSZXN1bHQgaXMgImh0dHA6
Ly90ZXN0LmNvbS8iCistLS0gVGVzdCBzZXQgJ3RleHQvdXJpLWxpc3QnLCBnZXQgJ1VSTCcgd2l0
aCBvbmx5IGNvbW1lbnRzOgorUEFTUyBnZXREYXRhUmVzdWx0VHlwZSBpcyAic3RyaW5nIgorUEFT
UyBnZXREYXRhUmVzdWx0IGlzICIiCiAtLS0gVGVzdCBzZXQvZ2V0ICd0ZXh0L3BsYWluJzoKIFBB
U1MgZ2V0RGF0YVJlc3VsdFR5cGUgaXMgInN0cmluZyIKLVBBU1MgZ2V0RGF0YUxpbmVzLmxlbmd0
aCBpcyAxCi1QQVNTIGdldERhdGFMaW5lc1swXS5yZXBsYWNlKC9cLyQvLCAnJykgaXMgIkxvcmVt
IGlwc3VtIGRvbG9yIHNpdCBhbWV0LiIKK1BBU1MgZ2V0RGF0YVJlc3VsdCBpcyAiTG9yZW0gaXBz
dW0gZG9sb3Igc2l0IGFtZXQuIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBU
RVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDVhMTk2OTNjZDk1NzliNWRkMThhNjE2MmY0Y2FlZWYzYjllY2NjN2UuLjcx
OTQwNjQzNDMxYzQ1NmJjOGVhYTE0NzE3OGExNWVhNjE5MTRjNjIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIw
MTAtMTAtMDYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIGVkaXRpbmcv
cGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0RGF0YS1nZXREYXRhLmh0bWwgZmFpbHMgb24gR1RL
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcyNDQK
KworICAgICAgICBTdG9yZSB0aGUgVVJJIGxpc3QgYXMgYSBTdHJpbmcgaW4gRGF0YU9iamVjdEd0
aywgc28gdGhhdCBub24tVVJJIGVsZW1lbnRzCisgICAgICAgIGFyZSBwcmVzZXJ2ZWQgd2hlbiBn
ZXREYXRhKC4uLikgaXMgY2FsbGVkLiBUaGlzIG5lY2Vzc2l0YXRlcyBzb21lIG90aGVyCisgICAg
ICAgIGNoYW5nZXMsIGluY2x1ZGluZyBhZGRpbmcgYSBtX2ZpbGVuYW1lcyBtZW1iZXIgdG8gRGF0
YU9iamVjdEd0ayB0byBzdG9yZQorICAgICAgICBmaWxlbmFtZXMgZXh0cmFjdGVkIGR1cmluZyBz
ZXRVUklMaXN0KC4uLikuIFRoZSBsb2dpYyBpbiBnZXREYXRhKC4uLikgaGFzCisgICAgICAgIGFs
c28gY2hhbmdlZCB0byBzZXQgc3VjY2VzcyA9IHRydWUgbm8gbWF0dGVyIHdoYXQgdG8gbWF0Y2gg
dGhlIHNwZWMuIEEKKyAgICAgICAgZm9sbG93dXAgcGF0Y2ggd2lsbCByZW1vdmUgdGhpcyBwYXJh
bWV0ZXIgY29tcGxldGVseSBmb3IgYWxsIHBsYXRmb3Jtcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9DbGlwYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpn
ZXREYXRhKTogQWx3YXlzIHN1Y2NlZWQgdG8gbWF0Y2ggdGhlIEhUTUw1CisgICAgICAgIHNwZWMg
YW5kIEZpcmVmb3guIFNpbXBseSByZXR1cm4gdGhlIHVyaUxpc3Qgc3RyaW5nIGZyb20gdGhlIERh
dGFPYmplY3QKKyAgICAgICAgaW5zdGVhZCBvZiByZWNvbnN0cnVjdGluZyBpdCBmcm9tIGEgdmVj
dG9yIG9mIEtVUkxzLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpzZXREYXRhKTog
VGhlIERhdGFPYmplY3Qgbm93IGFjY2VwdHMgYSBzdHJpbmcKKyAgICAgICAgZm9yIHRoZSB1cmlM
aXN0IHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6dHlwZXMpOiBQ
cmVkaWNhdGUgdGhlICJGaWxlcyIgbWVtYmVyIG9uIAorICAgICAgICBEYXRhT2JqZWN0R3RrOjpo
YXNGaWxlbmFtZXMoKS4KKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6ZmlsZXMpOiBV
cGRhdGUgdG8gcmVmbGVjdCB0aGUgY2hhbmdlIGZyb20KKyAgICAgICAgRGF0YU9iamVjdEd0azo6
ZmlsZXMoKSB0byBEYXRhT2JqZWN0R3RrOjpmaWxlbmFtZXMoKS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvRGF0YU9iamVjdEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3Rr
OjpzZXRVUklMaXN0KTogRXhwYW5kZWQgdGhpcyBzZXR0ZXIgdG8gZmluZCB0aGUKKyAgICAgICAg
Zmlyc3QgdmFsaWQgVVJMIHRvIHVzZSBhcyB0aGUgbV91cmwgbWVtYmVyIGFuZCBhbHNvIGV4dHJh
Y3QgYSBsaXN0IG9mIGZpbGVuYW1lcworICAgICAgICBmcm9tIHRoZSBVUkkgbGlzdC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnNldFVSTCk6IFVwZGF0ZWQgdG8gcmVmbGVjdCBj
aGFuZ2VzIHRvIG1fdXJpTGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OmNs
ZWFyKTogVXBkYXRlZCB0byByZWZsZWN0IGNoYW5nZXMgdG8gbV91cmlMaXN0IGFuZAorICAgICAg
ICBhbHNvIGxlYXZlIGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB3ZSBkbyBub3QgY2xlYXIgZmls
ZW5hbWVzIGhlcmUuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnVybCk6IFRoaXMgaW1wbGVtZW50YXRpb24g
aXMgbm93IGEgc2ltcGxlIGdldHRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6
OnVyaUxpc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OmZpbGVu
YW1lcyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6aGFzVVJMKTog
Tm93IGEgc2ltcGxlIGNoZWNrLgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6aGFz
RmlsZW5hbWVzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpjbGVh
clVSSUxpc3QpOiBTaW1wbGUgc2V0dGVyLgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0
azo6Y2xlYXJVUkwpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zRmlsZXMpOiBVcGRhdGVk
IHRvIGFjY2VzcyBEYXRhT2JqZWN0R3RrOjpoYXNGaWxlbmFtZXMoKS4KKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdEYXRhOjphc0ZpbGVuYW1lcyk6IFVwZGF0ZWQgdG8gYWNjZXNzIERhdGFPYmplY3RH
dGs6OmZpbGVuYW1lcygpLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OmdldENsaXBib2FyZENv
bnRlbnRzKTogVXNlIHRoZSB1cmlMaXN0IGFzIGEgc3RyaW5nIG5vdy4KKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmRIZWxwZXI6OmZpbGxTZWxlY3Rpb25EYXRhKTogIERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6ZmlsbERhdGFPYmplY3RGcm9tRHJvcERhdGEp
OiBEaXR0by4KKwogMjAxMC0xMC0wNiAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3Bl
bmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCmluZGV4IGU3ZWU0MzI1YWY2
ZGUxNmRlN2E1YTQ1YmEwZjEwNDIzMzJiMThkZDQuLjQ5YmNiN2QwYjI1MmUwMDQ5NDZiYjBmZWVi
Yjg2MjIyM2FjNzVkMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2Fy
ZEd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcApAQCAt
MTM5LDIzICsxMzksMTMgQEAgdm9pZCBDbGlwYm9hcmRHdGs6OmNsZWFyQWxsRGF0YSgpCiAgICAg
ICAgIG1faGVscGVyLT53cml0ZUNsaXBib2FyZENvbnRlbnRzKG1fY2xpcGJvYXJkKTsKIH0KIAot
c3RhdGljIFN0cmluZyBqb2luVVJJTGlzdChWZWN0b3I8S1VSTD4gdXJpTGlzdCkKLXsKLSAgICBp
ZiAodXJpTGlzdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIFN0
cmluZyBqb2luZWQodXJpTGlzdFswXS5zdHJpbmcoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDE7
IGkgPCB1cmlMaXN0LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGpvaW5lZC5hcHBlbmQoIlxyXG4i
KTsKLSAgICAgICAgam9pbmVkLmFwcGVuZCh1cmlMaXN0W2ldLnN0cmluZygpKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gam9pbmVkOwotfQotCiBTdHJpbmcgQ2xpcGJvYXJkR3RrOjpnZXREYXRhKGNv
bnN0IFN0cmluZyYgdHlwZVN0cmluZywgYm9vbCYgc3VjY2VzcykgY29uc3QKIHsKLSAgICBzdWNj
ZXNzID0gZmFsc2U7IC8vIFBlc3NpbWlzbS4KKyAgICBzdWNjZXNzID0gdHJ1ZTsgLy8gQWNjb3Jk
aW5nIHRvIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL2RuZC5odG1sCisgICAgLy8gIlRoZSBnZXREYXRhKGZvcm1hdCkgbWV0aG9kIG11
c3QgcmV0dXJuIHRoZSBkYXRhIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB0eXBlIGZvcm1h
dCBjb252ZXJ0ZWQKKyAgICAvLyB0byBBU0NJSSBsb3dlcmNhc2UsIGlmIGFueSwgYW5kIG11c3Qg
cmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgb3RoZXJ3aXNlLiIgU2luY2Ugc3VjY2VzcyA9PSBmYWxz
ZSAKKyAgICAvLyByZXN1bHRzIGluIGFuICd1bmRlZmluZWQnIHJldHVybiB2YWx1ZSwgd2UgYWx3
YXlzIHdhbnQgdG8gcmV0dXJuIHN1Y2Nlc3MgPT0gdHJ1ZS4gVGhpcyBwYXJhbWV0ZXIKKyAgICAv
LyBzaG91bGQgZXZlbnR1YWxseSBiZSByZW1vdmVkLgogICAgIGlmIChwb2xpY3koKSAhPSBDbGlw
Ym9hcmRSZWFkYWJsZSB8fCAhbV9kYXRhT2JqZWN0KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKQEAgLTE2MywzMyArMTUzLDE0IEBAIFN0cmluZyBDbGlwYm9hcmRHdGs6OmdldERhdGEoY29u
c3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBib29sJiBzdWNjZXNzKSBjb25zdAogICAgICAgICBtX2hl
bHBlci0+Z2V0Q2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQpOwogCiAgICAgQ2xpcGJvYXJk
RGF0YVR5cGUgdHlwZSA9IGRhdGFPYmplY3RUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKHR5cGVT
dHJpbmcpOwotICAgIGlmICh0eXBlID09IENsaXBib2FyZERhdGFUeXBlVVJJTGlzdCkgewotICAg
ICAgICBpZiAoIW1fZGF0YU9iamVjdC0+aGFzVVJJTGlzdCgpKQotICAgICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGpvaW5V
UklMaXN0KG1fZGF0YU9iamVjdC0+dXJpTGlzdCgpKTsKLSAgICB9Ci0KLSAgICBpZiAodHlwZSA9
PSBDbGlwYm9hcmREYXRhVHlwZVVSTCkgewotICAgICAgICBpZiAoIW1fZGF0YU9iamVjdC0+aGFz
VVJMKCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSB0
cnVlOworICAgIGlmICh0eXBlID09IENsaXBib2FyZERhdGFUeXBlVVJJTGlzdCkKKyAgICAgICAg
cmV0dXJuIG1fZGF0YU9iamVjdC0+dXJpTGlzdCgpOworICAgIGlmICh0eXBlID09IENsaXBib2Fy
ZERhdGFUeXBlVVJMKQogICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0LT51cmwoKTsKLSAgICB9
Ci0KLSAgICBpZiAodHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZU1hcmt1cCkgewotICAgICAgICBp
ZiAoIW1fZGF0YU9iamVjdC0+aGFzTWFya3VwKCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgIGlmICh0eXBlID09IENsaXBib2FyZERh
dGFUeXBlTWFya3VwKQogICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0LT5tYXJrdXAoKTsKLSAg
ICB9Ci0KLSAgICBpZiAodHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVRleHQpIHsKLSAgICAgICAg
aWYgKCFtX2RhdGFPYmplY3QtPmhhc1RleHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgIGlmICh0eXBlID09IENsaXBib2Fy
ZERhdGFUeXBlVGV4dCkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdC0+dGV4dCgpOwotICAg
IH0KIAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KQEAgLTIwMiwxOCArMTczLDggQEAgYm9vbCBD
bGlwYm9hcmRHdGs6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGRhdGEpCiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgQ2xpcGJvYXJkRGF0YVR5
cGUgdHlwZSA9IGRhdGFPYmplY3RUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKHR5cGVTdHJpbmcp
OwogICAgIGlmICh0eXBlID09IENsaXBib2FyZERhdGFUeXBlVVJJTGlzdCB8fCB0eXBlID09IENs
aXBib2FyZERhdGFUeXBlVVJMKSB7Ci0gICAgICAgIFZlY3RvcjxLVVJMPiB1cmlMaXN0OwotICAg
ICAgICBnY2hhcioqIHVyaXMgPSBnX3VyaV9saXN0X2V4dHJhY3RfdXJpcyhkYXRhLnV0ZjgoKS5k
YXRhKCkpOwotICAgICAgICBpZiAodXJpcykgewotICAgICAgICAgICAgZ2NoYXIqKiBjdXJyZW50
VVJJID0gdXJpczsKLSAgICAgICAgICAgIHdoaWxlICgqY3VycmVudFVSSSkgewotICAgICAgICAg
ICAgICAgIHVyaUxpc3QuYXBwZW5kKEtVUkwoS1VSTCgpLCAqY3VycmVudFVSSSkpOwotICAgICAg
ICAgICAgICAgIGN1cnJlbnRVUkkrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdfc3Ry
ZnJlZXYodXJpcyk7Ci0gICAgICAgICAgICBtX2RhdGFPYmplY3QtPnNldFVSSUxpc3QodXJpTGlz
dCk7Ci0gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgfQorICAgICAgICBtX2Rh
dGFPYmplY3QtPnNldFVSSUxpc3QoZGF0YSk7CisgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAg
IH0gZWxzZSBpZiAodHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZU1hcmt1cCkgewogICAgICAgICBt
X2RhdGFPYmplY3QtPnNldE1hcmt1cChkYXRhKTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7CkBA
IC0yNDgsOSArMjA5LDExIEBAIEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRHdGs6OnR5cGVzKCkg
Y29uc3QKICAgICBpZiAobV9kYXRhT2JqZWN0LT5oYXNVUklMaXN0KCkpIHsKICAgICAgICAgdHlw
ZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Iik7CiAgICAgICAgIHR5cGVzLmFkZCgiVVJMIik7Ci0gICAg
ICAgIHR5cGVzLmFkZCgiRmlsZXMiKTsKICAgICB9CiAKKyAgICBpZiAobV9kYXRhT2JqZWN0LT5o
YXNGaWxlbmFtZXMoKSkKKyAgICAgICAgdHlwZXMuYWRkKCJGaWxlcyIpOworCiAgICAgcmV0dXJu
IHR5cGVzOwogfQogCkBAIC0yNjMsMTEgKzIyNiw5IEBAIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENs
aXBib2FyZEd0azo6ZmlsZXMoKSBjb25zdAogICAgICAgICBtX2hlbHBlci0+Z2V0Q2xpcGJvYXJk
Q29udGVudHMobV9jbGlwYm9hcmQpOwogCiAgICAgUmVmUHRyPEZpbGVMaXN0PiBmaWxlTGlzdCA9
IEZpbGVMaXN0OjpjcmVhdGUoKTsKLSAgICBWZWN0b3I8U3RyaW5nPiBmaWxlVmVjdG9yKG1fZGF0
YU9iamVjdC0+ZmlsZXMoKSk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVWZWN0
b3Iuc2l6ZSgpOyBpKyspCi0gICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKGZp
bGVWZWN0b3JbaV0pKTsKLQorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMgPSBt
X2RhdGFPYmplY3QtPmZpbGVuYW1lcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmls
ZW5hbWVzLnNpemUoKTsgaSsrKQorICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0
ZShmaWxlbmFtZXNbaV0pKTsKICAgICByZXR1cm4gZmlsZUxpc3QucmVsZWFzZSgpOwogfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwCmluZGV4IGRiMTMzNDVlNmZkZjgxOGU0
MmZkMzJjNTk5ZTUxZjc2OTMxZWNkMjQuLmQ2NDM1ZGZhZmZjNDUwN2JjNWI4Y2RhOTc2OTI1NDk1
NGJhNzNkZDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwCkBAIC01OSw4
ICs1OSw1MCBAQCB2b2lkIERhdGFPYmplY3RHdGs6OnNldE1hcmt1cChjb25zdCBTdHJpbmcmIG5l
d01hcmt1cCkKICAgICBtX21hcmt1cCA9IG5ld01hcmt1cDsKIH0KIAordm9pZCBEYXRhT2JqZWN0
R3RrOjpzZXRVUklMaXN0KGNvbnN0IFN0cmluZyYgdXJpTGlzdFN0cmluZykKK3sKKyAgICBtX3Vy
aUxpc3QgPSB1cmlMaXN0U3RyaW5nOworCisgICAgLy8gVGhpcyBjb2RlIGlzIG9yaWdpbmFsbHkg
ZnJvbTogcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmNwcC4KKworICAgIC8v
IExpbmUgc2VwYXJhdG9yIGlzIFxyXG4gcGVyIFJGQyAyNDgzIC0gaG93ZXZlciwgZm9yIGNvbXBh
dGliaWxpdHkKKyAgICAvLyByZWFzb25zIHdlIGFsc28gYWxsb3cganVzdCBcbiBoZXJlLgorICAg
IFZlY3RvcjxTdHJpbmc+IHVyaUxpc3Q7CisgICAgdXJpTGlzdFN0cmluZy5zcGxpdCgnXG4nLCB1
cmlMaXN0KTsKKworICAgIC8vIFByb2Nlc3MgdGhlIGlucHV0IGFuZCBjb3B5IHRoZSBmaXJzdCB2
YWxpZCBVUkwgaW50byB0aGUgdXJsIG1lbWJlci4KKyAgICAvLyBJbiBjYXNlIG5vIFVSTHMgY2Fu
IGJlIGZvdW5kLCBzdWJzZXF1ZW50IGNhbGxzIHRvIGdldERhdGEoIlVSTCIpCisgICAgLy8gd2ls
bCBnZXQgYW4gZW1wdHkgc3RyaW5nLiBUaGlzIGlzIGluIGxpbmUgd2l0aCB0aGUgSFRNTDUgc3Bl
YyAoc2VlCisgICAgLy8gIlRoZSBEcmFnRXZlbnQgYW5kIERhdGFUcmFuc2ZlciBpbnRlcmZhY2Vz
IikuIEFsc28gZXh0cmFjdCBhbGwgZmlsZW5hbWVzCisgICAgLy8gZnJvbSB0aGUgVVJJIGxpc3Qu
CisgICAgYm9vbCBzZXRVUkwgPSBmYWxzZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVy
aUxpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgU3RyaW5nJiBsaW5lID0gdXJpTGlzdFtpXTsK
KyAgICAgICAgbGluZSA9IGxpbmUuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAgIGlmIChsaW5l
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAobGluZVswXSA9
PSAnIycpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBLVVJMIHVybCA9IEtVUkwo
S1VSTCgpLCBsaW5lKTsKKyAgICAgICAgaWYgKHVybC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAg
IGlmICghc2V0VVJMKSB7CisgICAgICAgICAgICAgICAgbV91cmwgPSB1cmw7CisgICAgICAgICAg
ICAgICAgc2V0VVJMID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgR093blB0
cjxHRXJyb3I+IGVycm9yOworICAgICAgICAgICAgR093blB0cjxnY2hhcj4gZmlsZW5hbWUoZ19m
aWxlbmFtZV9mcm9tX3VyaShsaW5lLnV0ZjgoKS5kYXRhKCksIDAsICZlcnJvci5vdXRQdHIoKSkp
OworICAgICAgICAgICAgaWYgKCFlcnJvciAmJiBmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBt
X2ZpbGVuYW1lcy5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChmaWxlbmFtZS5nZXQoKSkpOworICAg
ICAgICB9CisgICAgfQorfQorCiB2b2lkIERhdGFPYmplY3RHdGs6OnNldFVSTChjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CisgICAgbV91cmwgPSB1cmw7CisgICAgc2V0
VVJJTGlzdCh1cmwuc3RyaW5nKCkpOwogICAgIHNldFRleHQodXJsLnN0cmluZygpKTsKIAogICAg
IFN0cmluZyBhY3R1YWxMYWJlbChsYWJlbCk7CkBAIC03NSwxMCArMTE3LDYgQEAgdm9pZCBEYXRh
T2JqZWN0R3RrOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQog
ICAgIGFwcGVuZChtYXJrdXAsIFN0cmluZzo6ZnJvbVVURjgoZXNjYXBlZC5nZXQoKSkpOwogICAg
IGFwcGVuZChtYXJrdXAsICI8L2E+Iik7CiAgICAgc2V0TWFya3VwKFN0cmluZzo6YWRvcHQobWFy
a3VwKSk7Ci0KLSAgICBWZWN0b3I8S1VSTD4gdXJpTGlzdDsKLSAgICB1cmlMaXN0LmFwcGVuZCh1
cmwpOwotICAgIHNldFVSSUxpc3QodXJpTGlzdCk7CiB9CiAKIHZvaWQgRGF0YU9iamVjdEd0azo6
Y2xlYXJUZXh0KCkKQEAgLTkzLDM0ICsxMzEsNiBAQCB2b2lkIERhdGFPYmplY3RHdGs6OmNsZWFy
TWFya3VwKCkKICAgICBtX21hcmt1cCA9ICIiOwogfQogCi1WZWN0b3I8U3RyaW5nPiBEYXRhT2Jq
ZWN0R3RrOjpmaWxlcygpCi17Ci0gICAgVmVjdG9yPEtVUkw+IHVyaXModXJpTGlzdCgpKTsKLSAg
ICBWZWN0b3I8U3RyaW5nPiBmaWxlczsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXJp
cy5zaXplKCk7IGkrKykgewotICAgICAgICBLVVJMJiB1cmkgPSB1cmlzWzBdOwotICAgICAgICBp
ZiAoIXVyaS5pc1ZhbGlkKCkgfHwgIXVyaS5pc0xvY2FsRmlsZSgpKQotICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgZmlsZXMuYXBwZW5kKHVyaS5zdHJpbmcoKSk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGZpbGVzOwotfQotCi1TdHJpbmcgRGF0YU9iamVjdEd0azo6dXJsKCkKLXsKLSAg
ICBWZWN0b3I8S1VSTD4gdXJpcyh1cmlMaXN0KCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdXJpcy5zaXplKCk7IGkrKykgewotICAgICAgICBLVVJMJiB1cmkgPSB1cmlzWzBdOwotICAg
ICAgICBpZiAodXJpLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiB1cmk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCiBTdHJpbmcgRGF0YU9iamVjdEd0azo6dXJsTGFi
ZWwoKQogewogICAgIGlmIChoYXNUZXh0KCkpCkBAIC0xMzIsMTggKzE0MiwxOSBAQCBTdHJpbmcg
RGF0YU9iamVjdEd0azo6dXJsTGFiZWwoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotYm9v
bCBEYXRhT2JqZWN0R3RrOjpoYXNVUkwoKQotewotICAgIHJldHVybiAhdXJsKCkuaXNFbXB0eSgp
OwotfQotCiB2b2lkIERhdGFPYmplY3RHdGs6OmNsZWFyKCkKIHsKICAgICBtX3RleHQgPSAiIjsK
ICAgICBtX21hcmt1cCA9ICIiOwotICAgIG1fdXJpTGlzdC5jbGVhcigpOworICAgIG1fdXJpTGlz
dCA9ICIiOworICAgIG1fdXJsID0gS1VSTCgpOwogICAgIG1faW1hZ2UgPSAwOwogICAgIG1fcmFu
Z2UgPSAwOworCisgICAgLy8gV2UgZG8gbm90IGNsZWFyIGZpbGVuYW1lcy4gQWNjb3JkaW5nIHRv
IHRoZSBzcGVjOiAiVGhlIGNsZWFyRGF0YSgpIG1ldGhvZAorICAgIC8vIGRvZXMgbm90IGFmZmVj
dCB3aGV0aGVyIGFueSBmaWxlcyB3ZXJlIGluY2x1ZGVkIGluIHRoZSBkcmFnLCBzbyB0aGUgdHlw
ZXMKKyAgICAvLyBhdHRyaWJ1dGUncyBsaXN0IG1pZ2h0IHN0aWxsIG5vdCBiZSBlbXB0eSBhZnRl
ciBjYWxsaW5nIGNsZWFyRGF0YSgpIChpdCB3b3VsZCAKKyAgICAvLyBzdGlsbCBjb250YWluIHRo
ZSAiRmlsZXMiIHN0cmluZyBpZiBhbnkgZmlsZXMgd2VyZSBpbmNsdWRlZCBpbiB0aGUgZHJhZyku
IgogfQogCiBEYXRhT2JqZWN0R3RrKiBEYXRhT2JqZWN0R3RrOjpmb3JDbGlwYm9hcmQoR3RrQ2xp
cGJvYXJkKiBjbGlwYm9hcmQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRh
T2JqZWN0R3RrLmggYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmgKaW5kZXgg
ZTYwOTVkYTk5MDljZTQ3YzgyZDBlNTlkYzVmNWNkZjA4ZDhmMDMyMi4uZjZiMTNmZGI4MGZhMzI0
ZGExODNkMjc3N2UzOTk5MGM1YmRhZDBlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRGF0YU9iamVjdEd0ay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RH
dGsuaApAQCAtMzYsMjggKzM2LDMwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBEYXRhT2JqZWN0R3RrKCkpOwogICAgIH0KIAotICAgIFZlY3RvcjxLVVJMPiB1cmlMaXN0
KCkgeyByZXR1cm4gbV91cmlMaXN0OyB9CisgICAgY29uc3QgS1VSTCYgdXJsKCkgeyByZXR1cm4g
bV91cmw7IH0KKyAgICBjb25zdCBTdHJpbmcmIHVyaUxpc3QoKSB7IHJldHVybiBtX3VyaUxpc3Q7
IH0KKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKCkgeyByZXR1cm4gbV9maWxl
bmFtZXM7IH0KICAgICBHZGtQaXhidWYqIGltYWdlKCkgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsg
fQogICAgIHZvaWQgc2V0UmFuZ2UoUGFzc1JlZlB0cjxSYW5nZT4gbmV3UmFuZ2UpIHsgbV9yYW5n
ZSA9IG5ld1JhbmdlOyB9Ci0gICAgdm9pZCBzZXRVUklMaXN0KGNvbnN0IFZlY3RvcjxLVVJMPiYg
bmV3VVJJTGlzdCkgeyAgbV91cmlMaXN0ID0gbmV3VVJJTGlzdDsgfQogICAgIHZvaWQgc2V0SW1h
Z2UoR2RrUGl4YnVmKiBuZXdJbWFnZSkgeyBtX2ltYWdlID0gbmV3SW1hZ2U7IH0KICAgICB2b2lk
IHNldERyYWdDb250ZXh0KEdka0RyYWdDb250ZXh0KiBuZXdEcmFnQ29udGV4dCkgeyBtX2RyYWdD
b250ZXh0ID0gbmV3RHJhZ0NvbnRleHQ7IH0KICAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBoYXNUZXh0KCkgeyByZXR1cm4gbV9yYW5nZSB8fCAh
bV90ZXh0LmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaGFzTWFya3VwKCkgeyByZXR1cm4gbV9yYW5n
ZSB8fCAhbV9tYXJrdXAuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBoYXNVUklMaXN0KCkgeyByZXR1
cm4gIW1fdXJpTGlzdC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhhc1VSTCgpIHsgcmV0dXJuICFt
X3VybC5pc0VtcHR5KCkgJiYgbV91cmwuaXNWYWxpZCgpOyB9CisgICAgYm9vbCBoYXNGaWxlbmFt
ZXMoKSB7IHJldHVybiAhbV9maWxlbmFtZXMuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBoYXNJbWFn
ZSgpIHsgcmV0dXJuIG1faW1hZ2U7IH0KLSAgICB2b2lkIGNsZWFyVVJJTGlzdCgpIHsgbV91cmlM
aXN0LmNsZWFyKCk7IH0KKyAgICB2b2lkIGNsZWFyVVJJTGlzdCgpIHsgbV91cmlMaXN0ID0gIiI7
IH0KKyAgICB2b2lkIGNsZWFyVVJMKCkgeyBtX3VybCA9IEtVUkwoKTsgfQogICAgIHZvaWQgY2xl
YXJJbWFnZSgpIHsgbV9pbWFnZSA9IDA7IH0KICAgICBHZGtEcmFnQ29udGV4dCogZHJhZ0NvbnRl
eHQoKSB7IHJldHVybiBtX2RyYWdDb250ZXh0LmdldCgpOyB9CiAKICAgICBTdHJpbmcgdGV4dCgp
OwogICAgIFN0cmluZyBtYXJrdXAoKTsKLSAgICBWZWN0b3I8U3RyaW5nPiBmaWxlcygpOwotICAg
IHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIG5ld1RleHQpOwotICAgIHZvaWQgc2V0TWFya3Vw
KGNvbnN0IFN0cmluZyYgbmV3TWFya3VwKTsKLSAgICBib29sIGhhc1VSTCgpOwotICAgIFN0cmlu
ZyB1cmwoKTsKKyAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRN
YXJrdXAoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRVUklMaXN0KGNvbnN0IFN0cmluZyYp
OwogICAgIFN0cmluZyB1cmxMYWJlbCgpOwogICAgIHZvaWQgY2xlYXIoKTsKICAgICB2b2lkIGNs
ZWFyVGV4dCgpOwpAQCAtNjgsNyArNzAsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX3RleHQ7CiAgICAgU3RyaW5nIG1fbWFya3VwOwotICAgIFZlY3RvcjxLVVJMPiBtX3VyaUxp
c3Q7CisgICAgS1VSTCBtX3VybDsKKyAgICBTdHJpbmcgbV91cmlMaXN0OworICAgIFZlY3RvcjxT
dHJpbmc+IG1fZmlsZW5hbWVzOwogICAgIFBsYXRmb3JtUmVmUHRyPEdka1BpeGJ1Zj4gbV9pbWFn
ZTsKICAgICBQbGF0Zm9ybVJlZlB0cjxHZGtEcmFnQ29udGV4dD4gbV9kcmFnQ29udGV4dDsKICAg
ICBSZWZQdHI8UmFuZ2U+IG1fcmFuZ2U7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9EcmFnRGF0YUd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAK
aW5kZXggNjk5NjZhYWNlNDdmYmU5Mjg2MzFiMDJiZTM5Y2EwZGM3ZWEwNDA4Ny4uNDJkZGIxNjk2
MWUyZDY5ZTJkMzM5Y2Y1ZmRiN2RiZjIzZGY1OWZhOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdE
YXRhR3RrLmNwcApAQCAtMzcsMTQgKzM3LDEyIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29s
b3IoKSBjb25zdAogCiBib29sIERyYWdEYXRhOjpjb250YWluc0ZpbGVzKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gIW1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZXMoKS5pc0VtcHR5KCk7CisgICAgcmV0
dXJuIG1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzRmlsZW5hbWVzKCk7CiB9CiAKIHZvaWQgRHJhZ0Rh
dGE6OmFzRmlsZW5hbWVzKFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgVmVj
dG9yPFN0cmluZz4gZmlsZXMobV9wbGF0Zm9ybURyYWdEYXRhLT5maWxlcygpKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZpbGVzLnNpemUoKTsgaSsrKQotICAgICAgICByZXN1bHQuYXBw
ZW5kKGZpbGVzW2ldKTsKKyAgICByZXN1bHQgPSBtX3BsYXRmb3JtRHJhZ0RhdGEtPmZpbGVuYW1l
cygpOwogfQogCiBib29sIERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCmluZGV4IDk1ZGYyNWY4MDg4N2Nm
YTUyZTdkZjEzMGM5ZTM0MTg1ZjIzMzYzMjUuLmE1MzA5M2U5MDU2OTUwZWJiMTlhN2ZjN2EzNDU0
MTcwYzU3ZTU1ZGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRI
ZWxwZXIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3Bw
CkBAIC05MiwxNyArOTIsNiBAQCBHdGtUYXJnZXRMaXN0KiBQYXN0ZWJvYXJkSGVscGVyOjp0YXJn
ZXRMaXN0KCkgY29uc3QKICAgICByZXR1cm4gbV90YXJnZXRMaXN0OwogfQogCi1zdGF0aWMgVmVj
dG9yPEtVUkw+IHVyaXNUb0tVUkxWZWN0b3IoZ2NoYXIqKiB1cmlzKQotewotICAgIEFTU0VSVCh1
cmlzKTsKLQotICAgIFZlY3RvcjxLVVJMPiB1cmlMaXN0OwotICAgIGZvciAoaW50IGkgPSAwOyAq
KHVyaXMgKyBpKTsgaSsrKQotICAgICAgICB1cmlMaXN0LmFwcGVuZChLVVJMKEtVUkwoKSwgKih1
cmlzICsgaSkpKTsKLQotICAgIHJldHVybiB1cmlMaXN0OwotfQotCiBzdGF0aWMgU3RyaW5nIHNl
bGVjdGlvbkRhdGFUb1VURjhTdHJpbmcoR3RrU2VsZWN0aW9uRGF0YSogZGF0YSkKIHsKICAgICAv
LyBnX3N0cm5kdXAgZ3VhcmRzIGFnYWluc3Qgc2VsZWN0aW9uIGRhdGEgdGhhdCBpcyBub3QgbnVs
bC10ZXJtaW5hdGVkLgpAQCAtMTMwLDExICsxMTksNyBAQCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6
OmdldENsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkKQogCiAgICAgaWYg
KGd0a19jbGlwYm9hcmRfd2FpdF9pc190YXJnZXRfYXZhaWxhYmxlKGNsaXBib2FyZCwgdXJpTGlz
dEF0b20pKSB7CiAgICAgICAgIGlmIChHdGtTZWxlY3Rpb25EYXRhKiBkYXRhID0gZ3RrX2NsaXBi
b2FyZF93YWl0X2Zvcl9jb250ZW50cyhjbGlwYm9hcmQsIHVyaUxpc3RBdG9tKSkgewotICAgICAg
ICAgICAgZ2NoYXIqKiB1cmlzID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF91cmlzKGRhdGEpOwot
ICAgICAgICAgICAgaWYgKHVyaXMpIHsKLSAgICAgICAgICAgICAgICBkYXRhT2JqZWN0LT5zZXRV
UklMaXN0KHVyaXNUb0tVUkxWZWN0b3IodXJpcykpOwotICAgICAgICAgICAgICAgIGdfc3RyZnJl
ZXYodXJpcyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBkYXRhT2JqZWN0LT5zZXRVUklM
aXN0KHNlbGVjdGlvbkRhdGFUb1VURjhTdHJpbmcoZGF0YSkpOwogICAgICAgICAgICAgZ3RrX3Nl
bGVjdGlvbl9kYXRhX2ZyZWUoZGF0YSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTEsMTMgKzEz
Niw5IEBAIHZvaWQgUGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlvbkRhdGEoR3RrU2VsZWN0
aW9uRGF0YSogc2VsZWN0aW9uRGF0YSwgZ3VpbnQKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZ3VjaGFyKj4obWFya3VwLmdldCgpKSwgc3RybGVuKG1hcmt1cC5nZXQoKSkgKyAx
KTsKIAogICAgIH0gZWxzZSBpZiAoaW5mbyA9PSBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlw
ZVVSSUxpc3QpKSB7Ci0gICAgICAgIFZlY3RvcjxLVVJMPiB1cmlMaXN0KGRhdGFPYmplY3QtPnVy
aUxpc3QoKSk7Ci0gICAgICAgIGdjaGFyKiogdXJpcyA9IGdfbmV3MChnY2hhciosIHVyaUxpc3Qu
c2l6ZSgpICsgMSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXJpTGlzdC5zaXpl
KCk7IGkrKykKLSAgICAgICAgICAgIHVyaXNbaV0gPSBnX3N0cmR1cCh1cmlMaXN0W2ldLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXRfdXJp
cyhzZWxlY3Rpb25EYXRhLCB1cmlzKTsKLSAgICAgICAgZ19zdHJmcmVldih1cmlzKTsKKyAgICAg
ICAgQ1N0cmluZyB1cmlMaXN0ID0gZGF0YU9iamVjdC0+dXJpTGlzdCgpLnV0ZjgoKTsKKyAgICAg
ICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25EYXRhLCB1cmlMaXN0QXRvbSwgOCwK
KyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4odXJpTGlzdC5kYXRh
KCkpLCBzdHJsZW4odXJpTGlzdC5kYXRhKCkpICsgMSk7CiAKICAgICB9IGVsc2UgaWYgKGluZm8g
PT0gZ2V0SWRGb3JUYXJnZXRUeXBlKFRhcmdldFR5cGVOZXRzY2FwZVVSTCkgJiYgZGF0YU9iamVj
dC0+aGFzVVJMKCkpIHsKICAgICAgICAgU3RyaW5nIHVybChkYXRhT2JqZWN0LT51cmwoKSk7CkBA
IC0yMDksMjcgKzE5MCwxNiBAQCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OmZpbGxEYXRhT2JqZWN0
RnJvbURyb3BEYXRhKEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEsIGd1aW50CiAgICAgZWxzZSBpZiAo
dGFyZ2V0ID09IG1hcmt1cEF0b20pCiAgICAgICAgIGRhdGFPYmplY3QtPnNldE1hcmt1cChzZWxl
Y3Rpb25EYXRhVG9VVEY4U3RyaW5nKGRhdGEpKTsKICAgICBlbHNlIGlmICh0YXJnZXQgPT0gdXJp
TGlzdEF0b20pIHsKLSAgICAgICAgZ2NoYXIqKiB1cmlzID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dl
dF91cmlzKGRhdGEpOwotICAgICAgICBpZiAoIXVyaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgVmVjdG9yPEtVUkw+IHVyaUxpc3QodXJpc1RvS1VSTFZlY3Rvcih1cmlzKSk7Ci0g
ICAgICAgIGRhdGFPYmplY3QtPnNldFVSSUxpc3QodXJpTGlzdCk7Ci0gICAgICAgIGdfc3RyZnJl
ZXYodXJpcyk7CisgICAgICAgIGRhdGFPYmplY3QtPnNldFVSSUxpc3Qoc2VsZWN0aW9uRGF0YVRv
VVRGOFN0cmluZyhkYXRhKSk7CiAgICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gbmV0c2NhcGVVUkxB
dG9tKSB7CiAgICAgICAgIFN0cmluZyB1cmxXaXRoTGFiZWwoc2VsZWN0aW9uRGF0YVRvVVRGOFN0
cmluZyhkYXRhKSk7Ci0KICAgICAgICAgVmVjdG9yPFN0cmluZz4gcGllY2VzOwogICAgICAgICB1
cmxXaXRoTGFiZWwuc3BsaXQoIlxuIiwgcGllY2VzKTsKIAogICAgICAgICAvLyBHaXZlIHByZWZl
cmVuY2UgdG8gdGV4dC91cmktbGlzdCBoZXJlLCBhcyBpdCBjYW4gaG9sZCBtb3JlCiAgICAgICAg
IC8vIHRoYW4gb25lIFVSSSBidXQgc3RpbGwgdGFrZSAgdGhlIGxhYmVsIGlmIHRoZXJlIGlzIG9u
ZS4KLSAgICAgICAgaWYgKCFkYXRhT2JqZWN0LT5oYXNVUkwoKSkgewotICAgICAgICAgICAgVmVj
dG9yPEtVUkw+IHVyaUxpc3Q7Ci0gICAgICAgICAgICB1cmlMaXN0LmFwcGVuZChLVVJMKEtVUkwo
KSwgcGllY2VzWzBdKSk7Ci0gICAgICAgICAgICBkYXRhT2JqZWN0LT5zZXRVUklMaXN0KHVyaUxp
c3QpOwotICAgICAgICB9Ci0KKyAgICAgICAgaWYgKCFkYXRhT2JqZWN0LT5oYXNVUklMaXN0KCkp
CisgICAgICAgICAgICBkYXRhT2JqZWN0LT5zZXRVUklMaXN0KHBpZWNlc1swXSk7CiAgICAgICAg
IGlmIChwaWVjZXMuc2l6ZSgpID4gMSkKICAgICAgICAgICAgIGRhdGFPYmplY3QtPnNldFRleHQo
cGllY2VzWzFdKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69975</attachid>
            <date>2010-10-06 12:15:25 -0700</date>
            <delta_ts>2010-10-11 15:13:10 -0700</delta_ts>
            <desc>Patch with Tony&apos;s suggestions</desc>
            <filename>bug-47244-20101006121522.patch</filename>
            <type>text/plain</type>
            <size>21265</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1YjAwOTk3MGVhZDBlYTI0ZDczNTYzYjAzODczOGI1OTU2MGMyNGJiLi4zMTY5YzNm
OTczMTZmNjQ1NzBhMDQxZmFmM2Y4ZGM2MWU4MTM1YWMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMTAtMDYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIGVkaXRp
bmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0RGF0YS1nZXREYXRhLmh0bWwgZmFpbHMgb24g
R1RLKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcy
NDQKKworICAgICAgICBVbnNraXAgdGhlIGZyZXNobHkgcGFzc2luZyB0ZXN0IGFuZCBhZGQgYSBi
YXNlbGluZSB3aGljaCBoYXMgYSBQQVNTIGZvciBhbGwKKyAgICAgICAgdGVzdHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDogVW5za2lwIHBhc3NpbmcgdGVzdC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci1zZXREYXRhLWdl
dERhdGEtZXhwZWN0ZWQudHh0OgorCiAyMDEwLTEwLTA2ICBBbGJlcnQgSi4gV29uZyAgPGFqd29u
Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbnJldmlld2VkLiBCdWlsZCBm
aXguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGFUcmFuc2Zlci1zZXREYXRhLWdldERhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0RGF0YS1n
ZXREYXRhLWV4cGVjdGVkLnR4dAppbmRleCA5YmQ1Y2VjMjQ4ZjNjZGY0NjVkMTIzNzBiZmVkYjYz
N2MzMDU3NjNlLi42ODEwNmM4ZjQ4OTU2YzZhYzJlNTNiYjA0MmFiMzRhZWFiYmIyMjExIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFU
cmFuc2Zlci1zZXREYXRhLWdldERhdGEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0
YS1leHBlY3RlZC50eHQKQEAgLTUsMzAgKzUsMzcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUK
IAogLS0tIFRlc3Qgc2V0L2dldCAnVVJMJzoKIFBBU1MgZ2V0RGF0YVJlc3VsdFR5cGUgaXMgInN0
cmluZyIKLVBBU1MgZ2V0RGF0YUxpbmVzLmxlbmd0aCBpcyAxCi1QQVNTIGdldERhdGFMaW5lc1sw
XS5yZXBsYWNlKC9cLyQvLCAnJykgaXMgImh0dHA6Ly90ZXN0LmNvbSIKK1BBU1MgZ2V0RGF0YVJl
c3VsdCBpcyAiaHR0cDovL3Rlc3QuY29tLyIKKy0tLSBUZXN0IHNldC9nZXQgJ1VSTCcgd2l0aCBt
dWx0aXBsZSBVUkxzOgorUEFTUyBnZXREYXRhUmVzdWx0VHlwZSBpcyAic3RyaW5nIgorUEFTUyBn
ZXREYXRhUmVzdWx0IGlzICJodHRwOi8vdGVzdC5jb20vIgogLS0tIFRlc3Qgc2V0L2dldCAndGV4
dC91cmktbGlzdCc6CiBQQVNTIGdldERhdGFSZXN1bHRUeXBlIGlzICJzdHJpbmciCi1QQVNTIGdl
dERhdGFMaW5lcy5sZW5ndGggaXMgMgotUEFTUyBnZXREYXRhTGluZXNbMF0ucmVwbGFjZSgvXC8k
LywgJycpIGlzICJodHRwOi8vdGVzdC5jb20iCi1QQVNTIGdldERhdGFMaW5lc1sxXS5yZXBsYWNl
KC9cLyQvLCAnJykgaXMgImh0dHA6Ly9jaGVjay5jb20iCitQQVNTIGdldERhdGFSZXN1bHQgaXMg
Imh0dHA6Ly90ZXN0LmNvbVxyXG5odHRwOi8vY2hlY2suY29tIgorLS0tIFRlc3Qgc2V0L2dldCAn
dGV4dC91cmktbGlzdCcgdXNpbmcgJ1xuJzoKK1BBU1MgZ2V0RGF0YVJlc3VsdFR5cGUgaXMgInN0
cmluZyIKK1BBU1MgZ2V0RGF0YVJlc3VsdCBpcyAiaHR0cDovL3Rlc3QuY29tXG5odHRwOi8vY2hl
Y2suY29tIgogLS0tIFRlc3Qgc2V0ICd0ZXh0L3VyaS1saXN0JywgZ2V0ICdVUkwnOgogUEFTUyBn
ZXREYXRhUmVzdWx0VHlwZSBpcyAic3RyaW5nIgotUEFTUyBnZXREYXRhTGluZXMubGVuZ3RoIGlz
IDEKLVBBU1MgZ2V0RGF0YUxpbmVzWzBdLnJlcGxhY2UoL1wvJC8sICcnKSBpcyAiaHR0cDovL3Rl
c3QuY29tIgorUEFTUyBnZXREYXRhUmVzdWx0IGlzICJodHRwOi8vdGVzdC5jb20vIgorLS0tIFRl
c3Qgc2V0ICdVUkwnLCBnZXQgJ3RleHQvdXJpLWxpc3QnOgorUEFTUyBnZXREYXRhUmVzdWx0VHlw
ZSBpcyAic3RyaW5nIgorUEFTUyBnZXREYXRhUmVzdWx0IGlzICJodHRwOi8vdGVzdC5jb21cclxu
aHR0cDovL2NoZWNrLmNvbSIKIC0tLSBUZXN0IHNldCAndGV4dC91cmktbGlzdCcsIGdldCAnVVJM
JywgdXNpbmcgb25seSAnXG4nOgogUEFTUyBnZXREYXRhUmVzdWx0VHlwZSBpcyAic3RyaW5nIgot
UEFTUyBnZXREYXRhTGluZXMubGVuZ3RoIGlzIDEKLVBBU1MgZ2V0RGF0YUxpbmVzWzBdLnJlcGxh
Y2UoL1wvJC8sICcnKSBpcyAiaHR0cDovL3Rlc3QuY29tIgorUEFTUyBnZXREYXRhUmVzdWx0IGlz
ICJodHRwOi8vdGVzdC5jb20vIgogLS0tIFRlc3Qgc2V0L2dldCAndGV4dC91cmktbGlzdCcgd2l0
aCBjb21tZW50czoKIFBBU1MgZ2V0RGF0YVJlc3VsdFR5cGUgaXMgInN0cmluZyIKLVBBU1MgZ2V0
RGF0YUxpbmVzLmxlbmd0aCBpcyAyCi1QQVNTIGdldERhdGFMaW5lc1swXS5yZXBsYWNlKC9cLyQv
LCAnJykgaXMgImh0dHA6Ly90ZXN0LmNvbSIKLVBBU1MgZ2V0RGF0YUxpbmVzWzFdLnJlcGxhY2Uo
L1wvJC8sICcnKSBpcyAiaHR0cDovL2NoZWNrLmNvbSIKK1BBU1MgZ2V0RGF0YVJlc3VsdCBpcyAi
IyBjb21tZW50XHJcbmh0dHA6Ly90ZXN0LmNvbVxyXG5odHRwOi8vY2hlY2suY29tIgorLS0tIFRl
c3Qgc2V0ICd0ZXh0L3VyaS1saXN0JywgZ2V0ICdVUkwnIHdpdGggY29tbWVudHM6CitQQVNTIGdl
dERhdGFSZXN1bHRUeXBlIGlzICJzdHJpbmciCitQQVNTIGdldERhdGFSZXN1bHQgaXMgImh0dHA6
Ly90ZXN0LmNvbS8iCistLS0gVGVzdCBzZXQgJ3RleHQvdXJpLWxpc3QnLCBnZXQgJ1VSTCcgd2l0
aCBvbmx5IGNvbW1lbnRzOgorUEFTUyBnZXREYXRhUmVzdWx0VHlwZSBpcyAic3RyaW5nIgorUEFT
UyBnZXREYXRhUmVzdWx0IGlzICIiCiAtLS0gVGVzdCBzZXQvZ2V0ICd0ZXh0L3BsYWluJzoKIFBB
U1MgZ2V0RGF0YVJlc3VsdFR5cGUgaXMgInN0cmluZyIKLVBBU1MgZ2V0RGF0YUxpbmVzLmxlbmd0
aCBpcyAxCi1QQVNTIGdldERhdGFMaW5lc1swXS5yZXBsYWNlKC9cLyQvLCAnJykgaXMgIkxvcmVt
IGlwc3VtIGRvbG9yIHNpdCBhbWV0LiIKK1BBU1MgZ2V0RGF0YVJlc3VsdCBpcyAiTG9yZW0gaXBz
dW0gZG9sb3Igc2l0IGFtZXQuIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBU
RVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGViNGVhMTBmZDlmOTQwOTMxNjI5NmY3NTBmOGU5YzZmODY5MmM1YTYuLjQy
OTA4ZTg5MzFkNzM1MDY1YTQzNmIxZDdiNTFhNjcyZWMzMjE4YzMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIw
MTAtMTAtMDYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIGVkaXRpbmcv
cGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0RGF0YS1nZXREYXRhLmh0bWwgZmFpbHMgb24gR1RL
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcyNDQK
KworICAgICAgICBTdG9yZSB0aGUgVVJJIGxpc3QgYXMgYSBTdHJpbmcgaW4gRGF0YU9iamVjdEd0
aywgc28gdGhhdCBub24tVVJJIGVsZW1lbnRzCisgICAgICAgIGFyZSBwcmVzZXJ2ZWQgd2hlbiBn
ZXREYXRhKC4uLikgaXMgY2FsbGVkLiBUaGlzIG5lY2Vzc2l0YXRlcyBzb21lIG90aGVyCisgICAg
ICAgIGNoYW5nZXMsIGluY2x1ZGluZyBhZGRpbmcgYSBtX2ZpbGVuYW1lcyBtZW1iZXIgdG8gRGF0
YU9iamVjdEd0ayB0byBzdG9yZQorICAgICAgICBmaWxlbmFtZXMgZXh0cmFjdGVkIGR1cmluZyBz
ZXRVUklMaXN0KC4uLikuIFRoZSBsb2dpYyBpbiBnZXREYXRhKC4uLikgaGFzCisgICAgICAgIGFs
c28gY2hhbmdlZCB0byBzZXQgc3VjY2VzcyA9IHRydWUgbm8gbWF0dGVyIHdoYXQgdG8gbWF0Y2gg
dGhlIHNwZWMuIEEKKyAgICAgICAgZm9sbG93dXAgcGF0Y2ggd2lsbCByZW1vdmUgdGhpcyBwYXJh
bWV0ZXIgY29tcGxldGVseSBmb3IgYWxsIHBsYXRmb3Jtcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9DbGlwYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpn
ZXREYXRhKTogQWx3YXlzIHN1Y2NlZWQgdG8gbWF0Y2ggdGhlIEhUTUw1CisgICAgICAgIHNwZWMg
YW5kIEZpcmVmb3guIFNpbXBseSByZXR1cm4gdGhlIHVyaUxpc3Qgc3RyaW5nIGZyb20gdGhlIERh
dGFPYmplY3QKKyAgICAgICAgaW5zdGVhZCBvZiByZWNvbnN0cnVjdGluZyBpdCBmcm9tIGEgdmVj
dG9yIG9mIEtVUkxzLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpzZXREYXRhKTog
VGhlIERhdGFPYmplY3Qgbm93IGFjY2VwdHMgYSBzdHJpbmcKKyAgICAgICAgZm9yIHRoZSB1cmlM
aXN0IHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6dHlwZXMpOiBQ
cmVkaWNhdGUgdGhlICJGaWxlcyIgbWVtYmVyIG9uIAorICAgICAgICBEYXRhT2JqZWN0R3RrOjpo
YXNGaWxlbmFtZXMoKS4KKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6ZmlsZXMpOiBV
cGRhdGUgdG8gcmVmbGVjdCB0aGUgY2hhbmdlIGZyb20KKyAgICAgICAgRGF0YU9iamVjdEd0azo6
ZmlsZXMoKSB0byBEYXRhT2JqZWN0R3RrOjpmaWxlbmFtZXMoKS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvRGF0YU9iamVjdEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3Rr
OjpzZXRVUklMaXN0KTogRXhwYW5kZWQgdGhpcyBzZXR0ZXIgdG8gZmluZCB0aGUKKyAgICAgICAg
Zmlyc3QgdmFsaWQgVVJMIHRvIHVzZSBhcyB0aGUgbV91cmwgbWVtYmVyIGFuZCBhbHNvIGV4dHJh
Y3QgYSBsaXN0IG9mIGZpbGVuYW1lcworICAgICAgICBmcm9tIHRoZSBVUkkgbGlzdC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnNldFVSTCk6IFVwZGF0ZWQgdG8gcmVmbGVjdCBj
aGFuZ2VzIHRvIG1fdXJpTGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OmNs
ZWFyKTogVXBkYXRlZCB0byByZWZsZWN0IGNoYW5nZXMgdG8gbV91cmlMaXN0IGFuZAorICAgICAg
ICBhbHNvIGxlYXZlIGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB3ZSBkbyBub3QgY2xlYXIgZmls
ZW5hbWVzIGhlcmUuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnVybCk6IFRoaXMgaW1wbGVtZW50YXRpb24g
aXMgbm93IGEgc2ltcGxlIGdldHRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6
OnVyaUxpc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OmZpbGVu
YW1lcyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6aGFzVVJMKTog
Tm93IGEgc2ltcGxlIGNoZWNrLgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6aGFz
RmlsZW5hbWVzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpjbGVh
clVSSUxpc3QpOiBTaW1wbGUgc2V0dGVyLgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0
azo6Y2xlYXJVUkwpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zRmlsZXMpOiBVcGRhdGVk
IHRvIGFjY2VzcyBEYXRhT2JqZWN0R3RrOjpoYXNGaWxlbmFtZXMoKS4KKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdEYXRhOjphc0ZpbGVuYW1lcyk6IFVwZGF0ZWQgdG8gYWNjZXNzIERhdGFPYmplY3RH
dGs6OmZpbGVuYW1lcygpLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OmdldENsaXBib2FyZENv
bnRlbnRzKTogVXNlIHRoZSB1cmlMaXN0IGFzIGEgc3RyaW5nIG5vdy4KKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmRIZWxwZXI6OmZpbGxTZWxlY3Rpb25EYXRhKTogIERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6ZmlsbERhdGFPYmplY3RGcm9tRHJvcERhdGEp
OiBEaXR0by4KKwogMjAxMC0xMC0wNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY5MjAxLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKaW5kZXggZTdlZTQzMjVhZjZkZTE2ZGU3YTVh
NDViYTBmMTA0MjMzMmIxOGRkNC4uNDliY2I3ZDBiMjUyZTAwNDk0NmJiMGZlZWJiODYyMjIzYWM3
NWQxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCkBAIC0xMzksMjMgKzEz
OSwxMyBAQCB2b2lkIENsaXBib2FyZEd0azo6Y2xlYXJBbGxEYXRhKCkKICAgICAgICAgbV9oZWxw
ZXItPndyaXRlQ2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQpOwogfQogCi1zdGF0aWMgU3Ry
aW5nIGpvaW5VUklMaXN0KFZlY3RvcjxLVVJMPiB1cmlMaXN0KQotewotICAgIGlmICh1cmlMaXN0
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgU3RyaW5nIGpvaW5l
ZCh1cmlMaXN0WzBdLnN0cmluZygpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHVyaUxp
c3Quc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgam9pbmVkLmFwcGVuZCgiXHJcbiIpOwotICAgICAg
ICBqb2luZWQuYXBwZW5kKHVyaUxpc3RbaV0uc3RyaW5nKCkpOwotICAgIH0KLQotICAgIHJldHVy
biBqb2luZWQ7Ci19Ci0KIFN0cmluZyBDbGlwYm9hcmRHdGs6OmdldERhdGEoY29uc3QgU3RyaW5n
JiB0eXBlU3RyaW5nLCBib29sJiBzdWNjZXNzKSBjb25zdAogewotICAgIHN1Y2Nlc3MgPSBmYWxz
ZTsgLy8gUGVzc2ltaXNtLgorICAgIHN1Y2Nlc3MgPSB0cnVlOyAvLyBBY2NvcmRpbmcgdG8gaHR0
cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2Uv
ZG5kLmh0bWwKKyAgICAvLyAiVGhlIGdldERhdGEoZm9ybWF0KSBtZXRob2QgbXVzdCByZXR1cm4g
dGhlIGRhdGEgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHR5cGUgZm9ybWF0IGNvbnZlcnRl
ZAorICAgIC8vIHRvIEFTQ0lJIGxvd2VyY2FzZSwgaWYgYW55LCBhbmQgbXVzdCByZXR1cm4gdGhl
IGVtcHR5IHN0cmluZyBvdGhlcndpc2UuIiBTaW5jZSBzdWNjZXNzID09IGZhbHNlIAorICAgIC8v
IHJlc3VsdHMgaW4gYW4gJ3VuZGVmaW5lZCcgcmV0dXJuIHZhbHVlLCB3ZSBhbHdheXMgd2FudCB0
byByZXR1cm4gc3VjY2VzcyA9PSB0cnVlLiBUaGlzIHBhcmFtZXRlcgorICAgIC8vIHNob3VsZCBl
dmVudHVhbGx5IGJlIHJlbW92ZWQuCiAgICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRh
YmxlIHx8ICFtX2RhdGFPYmplY3QpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAtMTYz
LDMzICsxNTMsMTQgQEAgU3RyaW5nIENsaXBib2FyZEd0azo6Z2V0RGF0YShjb25zdCBTdHJpbmcm
IHR5cGVTdHJpbmcsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0CiAgICAgICAgIG1faGVscGVyLT5nZXRD
bGlwYm9hcmRDb250ZW50cyhtX2NsaXBib2FyZCk7CiAKICAgICBDbGlwYm9hcmREYXRhVHlwZSB0
eXBlID0gZGF0YU9iamVjdFR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZVN0cmluZyk7Ci0g
ICAgaWYgKHR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVVUklMaXN0KSB7Ci0gICAgICAgIGlmICgh
bV9kYXRhT2JqZWN0LT5oYXNVUklMaXN0KCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0gICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICByZXR1cm4gam9pblVSSUxpc3QobV9k
YXRhT2JqZWN0LT51cmlMaXN0KCkpOwotICAgIH0KLQotICAgIGlmICh0eXBlID09IENsaXBib2Fy
ZERhdGFUeXBlVVJMKSB7Ci0gICAgICAgIGlmICghbV9kYXRhT2JqZWN0LT5oYXNVUkwoKSkKLSAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAg
aWYgKHR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVVUklMaXN0KQorICAgICAgICByZXR1cm4gbV9k
YXRhT2JqZWN0LT51cmlMaXN0KCk7CisgICAgaWYgKHR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVV
UkwpCiAgICAgICAgIHJldHVybiBtX2RhdGFPYmplY3QtPnVybCgpOwotICAgIH0KLQotICAgIGlm
ICh0eXBlID09IENsaXBib2FyZERhdGFUeXBlTWFya3VwKSB7Ci0gICAgICAgIGlmICghbV9kYXRh
T2JqZWN0LT5oYXNNYXJrdXAoKSkKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAg
ICAgc3VjY2VzcyA9IHRydWU7CisgICAgaWYgKHR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVNYXJr
dXApCiAgICAgICAgIHJldHVybiBtX2RhdGFPYmplY3QtPm1hcmt1cCgpOwotICAgIH0KLQotICAg
IGlmICh0eXBlID09IENsaXBib2FyZERhdGFUeXBlVGV4dCkgewotICAgICAgICBpZiAoIW1fZGF0
YU9iamVjdC0+aGFzVGV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAg
ICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgaWYgKHR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVU
ZXh0KQogICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0LT50ZXh0KCk7Ci0gICAgfQogCiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQpAQCAtMjAyLDE4ICsxNzMsOCBAQCBib29sIENsaXBib2FyZEd0
azo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGF0YSkK
ICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBDbGlwYm9hcmREYXRhVHlwZSB0eXBlID0g
ZGF0YU9iamVjdFR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZVN0cmluZyk7CiAgICAgaWYg
KHR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVVUklMaXN0IHx8IHR5cGUgPT0gQ2xpcGJvYXJkRGF0
YVR5cGVVUkwpIHsKLSAgICAgICAgVmVjdG9yPEtVUkw+IHVyaUxpc3Q7Ci0gICAgICAgIGdjaGFy
KiogdXJpcyA9IGdfdXJpX2xpc3RfZXh0cmFjdF91cmlzKGRhdGEudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgICAgIGlmICh1cmlzKSB7Ci0gICAgICAgICAgICBnY2hhcioqIGN1cnJlbnRVUkkgPSB1cmlz
OwotICAgICAgICAgICAgd2hpbGUgKCpjdXJyZW50VVJJKSB7Ci0gICAgICAgICAgICAgICAgdXJp
TGlzdC5hcHBlbmQoS1VSTChLVVJMKCksICpjdXJyZW50VVJJKSk7Ci0gICAgICAgICAgICAgICAg
Y3VycmVudFVSSSsrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZ19zdHJmcmVldih1cmlz
KTsKLSAgICAgICAgICAgIG1fZGF0YU9iamVjdC0+c2V0VVJJTGlzdCh1cmlMaXN0KTsKLSAgICAg
ICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICB9CisgICAgICAgIG1fZGF0YU9iamVjdC0+
c2V0VVJJTGlzdChkYXRhKTsKKyAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgfSBlbHNlIGlm
ICh0eXBlID09IENsaXBib2FyZERhdGFUeXBlTWFya3VwKSB7CiAgICAgICAgIG1fZGF0YU9iamVj
dC0+c2V0TWFya3VwKGRhdGEpOwogICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKQEAgLTI0OCw5ICsy
MDksMTEgQEAgSGFzaFNldDxTdHJpbmc+IENsaXBib2FyZEd0azo6dHlwZXMoKSBjb25zdAogICAg
IGlmIChtX2RhdGFPYmplY3QtPmhhc1VSSUxpc3QoKSkgewogICAgICAgICB0eXBlcy5hZGQoInRl
eHQvdXJpLWxpc3QiKTsKICAgICAgICAgdHlwZXMuYWRkKCJVUkwiKTsKLSAgICAgICAgdHlwZXMu
YWRkKCJGaWxlcyIpOwogICAgIH0KIAorICAgIGlmIChtX2RhdGFPYmplY3QtPmhhc0ZpbGVuYW1l
cygpKQorICAgICAgICB0eXBlcy5hZGQoIkZpbGVzIik7CisKICAgICByZXR1cm4gdHlwZXM7CiB9
CiAKQEAgLTI2MywxMSArMjI2LDkgQEAgUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkR3Rr
OjpmaWxlcygpIGNvbnN0CiAgICAgICAgIG1faGVscGVyLT5nZXRDbGlwYm9hcmRDb250ZW50cyht
X2NsaXBib2FyZCk7CiAKICAgICBSZWZQdHI8RmlsZUxpc3Q+IGZpbGVMaXN0ID0gRmlsZUxpc3Q6
OmNyZWF0ZSgpOwotICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVWZWN0b3IobV9kYXRhT2JqZWN0LT5m
aWxlcygpKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZVZlY3Rvci5zaXplKCk7
IGkrKykKLSAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUoZmlsZVZlY3Rvcltp
XSkpOwotCisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcyA9IG1fZGF0YU9iamVj
dC0+ZmlsZW5hbWVzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlbmFtZXMuc2l6
ZSgpOyBpKyspCisgICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKGZpbGVuYW1l
c1tpXSkpOwogICAgIHJldHVybiBmaWxlTGlzdC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKaW5kZXggZGIxMzM0NWU2ZmRmODE4ZTQyZmQzMmM1OTll
NTFmNzY5MzFlY2QyNC4uMDVhMmRhOTAwNTdlMTA3MjYwNDAwZjQ2MTQxOTBhNmI2MjlkYTdiNSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKQEAgLTU5LDggKzU5LDUxIEBA
IHZvaWQgRGF0YU9iamVjdEd0azo6c2V0TWFya3VwKGNvbnN0IFN0cmluZyYgbmV3TWFya3VwKQog
ICAgIG1fbWFya3VwID0gbmV3TWFya3VwOwogfQogCit2b2lkIERhdGFPYmplY3RHdGs6OnNldFVS
SUxpc3QoY29uc3QgU3RyaW5nJiB1cmlMaXN0U3RyaW5nKQoreworICAgIG1fdXJpTGlzdCA9IHVy
aUxpc3RTdHJpbmc7CisKKyAgICAvLyBUaGlzIGNvZGUgaXMgb3JpZ2luYWxseSBmcm9tOiBwbGF0
Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURhdGFPYmplY3QuY3BwLgorICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgbWFrZSB0aGlzIGNvZGUgY3Jvc3MtcGxhdGZvcm0gZXZlbnR1YWxseS4KKworICAgIC8v
IExpbmUgc2VwYXJhdG9yIGlzIFxyXG4gcGVyIFJGQyAyNDgzIC0gaG93ZXZlciwgZm9yIGNvbXBh
dGliaWxpdHkKKyAgICAvLyByZWFzb25zIHdlIGFsc28gYWxsb3cganVzdCBcbiBoZXJlLgorICAg
IFZlY3RvcjxTdHJpbmc+IHVyaUxpc3Q7CisgICAgdXJpTGlzdFN0cmluZy5zcGxpdCgnXG4nLCB1
cmlMaXN0KTsKKworICAgIC8vIFByb2Nlc3MgdGhlIGlucHV0IGFuZCBjb3B5IHRoZSBmaXJzdCB2
YWxpZCBVUkwgaW50byB0aGUgdXJsIG1lbWJlci4KKyAgICAvLyBJbiBjYXNlIG5vIFVSTHMgY2Fu
IGJlIGZvdW5kLCBzdWJzZXF1ZW50IGNhbGxzIHRvIGdldERhdGEoIlVSTCIpCisgICAgLy8gd2ls
bCBnZXQgYW4gZW1wdHkgc3RyaW5nLiBUaGlzIGlzIGluIGxpbmUgd2l0aCB0aGUgSFRNTDUgc3Bl
YyAoc2VlCisgICAgLy8gIlRoZSBEcmFnRXZlbnQgYW5kIERhdGFUcmFuc2ZlciBpbnRlcmZhY2Vz
IikuIEFsc28gZXh0cmFjdCBhbGwgZmlsZW5hbWVzCisgICAgLy8gZnJvbSB0aGUgVVJJIGxpc3Qu
CisgICAgYm9vbCBzZXRVUkwgPSBmYWxzZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVy
aUxpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgU3RyaW5nJiBsaW5lID0gdXJpTGlzdFtpXTsK
KyAgICAgICAgbGluZSA9IGxpbmUuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAgIGlmIChsaW5l
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAobGluZVswXSA9
PSAnIycpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBLVVJMIHVybCA9IEtVUkwo
S1VSTCgpLCBsaW5lKTsKKyAgICAgICAgaWYgKHVybC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAg
IGlmICghc2V0VVJMKSB7CisgICAgICAgICAgICAgICAgbV91cmwgPSB1cmw7CisgICAgICAgICAg
ICAgICAgc2V0VVJMID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgR093blB0
cjxHRXJyb3I+IGVycm9yOworICAgICAgICAgICAgR093blB0cjxnY2hhcj4gZmlsZW5hbWUoZ19m
aWxlbmFtZV9mcm9tX3VyaShsaW5lLnV0ZjgoKS5kYXRhKCksIDAsICZlcnJvci5vdXRQdHIoKSkp
OworICAgICAgICAgICAgaWYgKCFlcnJvciAmJiBmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBt
X2ZpbGVuYW1lcy5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChmaWxlbmFtZS5nZXQoKSkpOworICAg
ICAgICB9CisgICAgfQorfQorCiB2b2lkIERhdGFPYmplY3RHdGs6OnNldFVSTChjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CisgICAgbV91cmwgPSB1cmw7CisgICAgbV91
cmlMaXN0ID0gdXJsOwogICAgIHNldFRleHQodXJsLnN0cmluZygpKTsKIAogICAgIFN0cmluZyBh
Y3R1YWxMYWJlbChsYWJlbCk7CkBAIC03NSwxMCArMTE4LDYgQEAgdm9pZCBEYXRhT2JqZWN0R3Rr
OjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogICAgIGFwcGVu
ZChtYXJrdXAsIFN0cmluZzo6ZnJvbVVURjgoZXNjYXBlZC5nZXQoKSkpOwogICAgIGFwcGVuZCht
YXJrdXAsICI8L2E+Iik7CiAgICAgc2V0TWFya3VwKFN0cmluZzo6YWRvcHQobWFya3VwKSk7Ci0K
LSAgICBWZWN0b3I8S1VSTD4gdXJpTGlzdDsKLSAgICB1cmlMaXN0LmFwcGVuZCh1cmwpOwotICAg
IHNldFVSSUxpc3QodXJpTGlzdCk7CiB9CiAKIHZvaWQgRGF0YU9iamVjdEd0azo6Y2xlYXJUZXh0
KCkKQEAgLTkzLDM0ICsxMzIsNiBAQCB2b2lkIERhdGFPYmplY3RHdGs6OmNsZWFyTWFya3VwKCkK
ICAgICBtX21hcmt1cCA9ICIiOwogfQogCi1WZWN0b3I8U3RyaW5nPiBEYXRhT2JqZWN0R3RrOjpm
aWxlcygpCi17Ci0gICAgVmVjdG9yPEtVUkw+IHVyaXModXJpTGlzdCgpKTsKLSAgICBWZWN0b3I8
U3RyaW5nPiBmaWxlczsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXJpcy5zaXplKCk7
IGkrKykgewotICAgICAgICBLVVJMJiB1cmkgPSB1cmlzWzBdOwotICAgICAgICBpZiAoIXVyaS5p
c1ZhbGlkKCkgfHwgIXVyaS5pc0xvY2FsRmlsZSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgZmlsZXMuYXBwZW5kKHVyaS5zdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGZpbGVzOwotfQotCi1TdHJpbmcgRGF0YU9iamVjdEd0azo6dXJsKCkKLXsKLSAgICBWZWN0b3I8
S1VSTD4gdXJpcyh1cmlMaXN0KCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXJpcy5z
aXplKCk7IGkrKykgewotICAgICAgICBLVVJMJiB1cmkgPSB1cmlzWzBdOwotICAgICAgICBpZiAo
dXJpLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiB1cmk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIFN0cmluZygpOwotfQotCiBTdHJpbmcgRGF0YU9iamVjdEd0azo6dXJsTGFiZWwoKQogewog
ICAgIGlmIChoYXNUZXh0KCkpCkBAIC0xMzIsMTggKzE0MywxOSBAQCBTdHJpbmcgRGF0YU9iamVj
dEd0azo6dXJsTGFiZWwoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotYm9vbCBEYXRhT2Jq
ZWN0R3RrOjpoYXNVUkwoKQotewotICAgIHJldHVybiAhdXJsKCkuaXNFbXB0eSgpOwotfQotCiB2
b2lkIERhdGFPYmplY3RHdGs6OmNsZWFyKCkKIHsKICAgICBtX3RleHQgPSAiIjsKICAgICBtX21h
cmt1cCA9ICIiOwotICAgIG1fdXJpTGlzdC5jbGVhcigpOworICAgIG1fdXJpTGlzdCA9ICIiOwor
ICAgIG1fdXJsID0gS1VSTCgpOwogICAgIG1faW1hZ2UgPSAwOwogICAgIG1fcmFuZ2UgPSAwOwor
CisgICAgLy8gV2UgZG8gbm90IGNsZWFyIGZpbGVuYW1lcy4gQWNjb3JkaW5nIHRvIHRoZSBzcGVj
OiAiVGhlIGNsZWFyRGF0YSgpIG1ldGhvZAorICAgIC8vIGRvZXMgbm90IGFmZmVjdCB3aGV0aGVy
IGFueSBmaWxlcyB3ZXJlIGluY2x1ZGVkIGluIHRoZSBkcmFnLCBzbyB0aGUgdHlwZXMKKyAgICAv
LyBhdHRyaWJ1dGUncyBsaXN0IG1pZ2h0IHN0aWxsIG5vdCBiZSBlbXB0eSBhZnRlciBjYWxsaW5n
IGNsZWFyRGF0YSgpIChpdCB3b3VsZCAKKyAgICAvLyBzdGlsbCBjb250YWluIHRoZSAiRmlsZXMi
IHN0cmluZyBpZiBhbnkgZmlsZXMgd2VyZSBpbmNsdWRlZCBpbiB0aGUgZHJhZykuIgogfQogCiBE
YXRhT2JqZWN0R3RrKiBEYXRhT2JqZWN0R3RrOjpmb3JDbGlwYm9hcmQoR3RrQ2xpcGJvYXJkKiBj
bGlwYm9hcmQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3Rr
LmggYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmgKaW5kZXggZTYwOTVkYTk5
MDljZTQ3YzgyZDBlNTlkYzVmNWNkZjA4ZDhmMDMyMi4uZjZiMTNmZGI4MGZhMzI0ZGExODNkMjc3
N2UzOTk5MGM1YmRhZDBlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9i
amVjdEd0ay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaApAQCAt
MzYsMjggKzM2LDMwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRh
T2JqZWN0R3RrKCkpOwogICAgIH0KIAotICAgIFZlY3RvcjxLVVJMPiB1cmlMaXN0KCkgeyByZXR1
cm4gbV91cmlMaXN0OyB9CisgICAgY29uc3QgS1VSTCYgdXJsKCkgeyByZXR1cm4gbV91cmw7IH0K
KyAgICBjb25zdCBTdHJpbmcmIHVyaUxpc3QoKSB7IHJldHVybiBtX3VyaUxpc3Q7IH0KKyAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKCkgeyByZXR1cm4gbV9maWxlbmFtZXM7IH0K
ICAgICBHZGtQaXhidWYqIGltYWdlKCkgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQogICAgIHZv
aWQgc2V0UmFuZ2UoUGFzc1JlZlB0cjxSYW5nZT4gbmV3UmFuZ2UpIHsgbV9yYW5nZSA9IG5ld1Jh
bmdlOyB9Ci0gICAgdm9pZCBzZXRVUklMaXN0KGNvbnN0IFZlY3RvcjxLVVJMPiYgbmV3VVJJTGlz
dCkgeyAgbV91cmlMaXN0ID0gbmV3VVJJTGlzdDsgfQogICAgIHZvaWQgc2V0SW1hZ2UoR2RrUGl4
YnVmKiBuZXdJbWFnZSkgeyBtX2ltYWdlID0gbmV3SW1hZ2U7IH0KICAgICB2b2lkIHNldERyYWdD
b250ZXh0KEdka0RyYWdDb250ZXh0KiBuZXdEcmFnQ29udGV4dCkgeyBtX2RyYWdDb250ZXh0ID0g
bmV3RHJhZ0NvbnRleHQ7IH0KICAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJik7CiAgICAgYm9vbCBoYXNUZXh0KCkgeyByZXR1cm4gbV9yYW5nZSB8fCAhbV90ZXh0Lmlz
RW1wdHkoKTsgfQogICAgIGJvb2wgaGFzTWFya3VwKCkgeyByZXR1cm4gbV9yYW5nZSB8fCAhbV9t
YXJrdXAuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBoYXNVUklMaXN0KCkgeyByZXR1cm4gIW1fdXJp
TGlzdC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhhc1VSTCgpIHsgcmV0dXJuICFtX3VybC5pc0Vt
cHR5KCkgJiYgbV91cmwuaXNWYWxpZCgpOyB9CisgICAgYm9vbCBoYXNGaWxlbmFtZXMoKSB7IHJl
dHVybiAhbV9maWxlbmFtZXMuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBoYXNJbWFnZSgpIHsgcmV0
dXJuIG1faW1hZ2U7IH0KLSAgICB2b2lkIGNsZWFyVVJJTGlzdCgpIHsgbV91cmlMaXN0LmNsZWFy
KCk7IH0KKyAgICB2b2lkIGNsZWFyVVJJTGlzdCgpIHsgbV91cmlMaXN0ID0gIiI7IH0KKyAgICB2
b2lkIGNsZWFyVVJMKCkgeyBtX3VybCA9IEtVUkwoKTsgfQogICAgIHZvaWQgY2xlYXJJbWFnZSgp
IHsgbV9pbWFnZSA9IDA7IH0KICAgICBHZGtEcmFnQ29udGV4dCogZHJhZ0NvbnRleHQoKSB7IHJl
dHVybiBtX2RyYWdDb250ZXh0LmdldCgpOyB9CiAKICAgICBTdHJpbmcgdGV4dCgpOwogICAgIFN0
cmluZyBtYXJrdXAoKTsKLSAgICBWZWN0b3I8U3RyaW5nPiBmaWxlcygpOwotICAgIHZvaWQgc2V0
VGV4dChjb25zdCBTdHJpbmcmIG5ld1RleHQpOwotICAgIHZvaWQgc2V0TWFya3VwKGNvbnN0IFN0
cmluZyYgbmV3TWFya3VwKTsKLSAgICBib29sIGhhc1VSTCgpOwotICAgIFN0cmluZyB1cmwoKTsK
KyAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRNYXJrdXAoY29u
c3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRVUklMaXN0KGNvbnN0IFN0cmluZyYpOwogICAgIFN0
cmluZyB1cmxMYWJlbCgpOwogICAgIHZvaWQgY2xlYXIoKTsKICAgICB2b2lkIGNsZWFyVGV4dCgp
OwpAQCAtNjgsNyArNzAsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFN0cmluZyBtX3RleHQ7
CiAgICAgU3RyaW5nIG1fbWFya3VwOwotICAgIFZlY3RvcjxLVVJMPiBtX3VyaUxpc3Q7CisgICAg
S1VSTCBtX3VybDsKKyAgICBTdHJpbmcgbV91cmlMaXN0OworICAgIFZlY3RvcjxTdHJpbmc+IG1f
ZmlsZW5hbWVzOwogICAgIFBsYXRmb3JtUmVmUHRyPEdka1BpeGJ1Zj4gbV9pbWFnZTsKICAgICBQ
bGF0Zm9ybVJlZlB0cjxHZGtEcmFnQ29udGV4dD4gbV9kcmFnQ29udGV4dDsKICAgICBSZWZQdHI8
UmFuZ2U+IG1fcmFuZ2U7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0
YUd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKaW5kZXggNjk5
NjZhYWNlNDdmYmU5Mjg2MzFiMDJiZTM5Y2EwZGM3ZWEwNDA4Ny4uNDJkZGIxNjk2MWUyZDY5ZTJk
MzM5Y2Y1ZmRiN2RiZjIzZGY1OWZhOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RHJhZ0RhdGFHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNw
cApAQCAtMzcsMTQgKzM3LDEyIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29sb3IoKSBjb25z
dAogCiBib29sIERyYWdEYXRhOjpjb250YWluc0ZpbGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
IW1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZXMoKS5pc0VtcHR5KCk7CisgICAgcmV0dXJuIG1fcGxh
dGZvcm1EcmFnRGF0YS0+aGFzRmlsZW5hbWVzKCk7CiB9CiAKIHZvaWQgRHJhZ0RhdGE6OmFzRmls
ZW5hbWVzKFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPFN0cmlu
Zz4gZmlsZXMobV9wbGF0Zm9ybURyYWdEYXRhLT5maWxlcygpKTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGZpbGVzLnNpemUoKTsgaSsrKQotICAgICAgICByZXN1bHQuYXBwZW5kKGZpbGVz
W2ldKTsKKyAgICByZXN1bHQgPSBtX3BsYXRmb3JtRHJhZ0RhdGEtPmZpbGVuYW1lcygpOwogfQog
CiBib29sIERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCmluZGV4IDk1ZGYyNWY4MDg4N2NmYTUyZTdkZjEz
MGM5ZTM0MTg1ZjIzMzYzMjUuLjlmNzU3MjhiZjU1Mjg3NjZiMTBkMjg4MzM0NjZhMzZkNjEyZWJh
MTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCkBAIC05Miwx
NyArOTIsNiBAQCBHdGtUYXJnZXRMaXN0KiBQYXN0ZWJvYXJkSGVscGVyOjp0YXJnZXRMaXN0KCkg
Y29uc3QKICAgICByZXR1cm4gbV90YXJnZXRMaXN0OwogfQogCi1zdGF0aWMgVmVjdG9yPEtVUkw+
IHVyaXNUb0tVUkxWZWN0b3IoZ2NoYXIqKiB1cmlzKQotewotICAgIEFTU0VSVCh1cmlzKTsKLQot
ICAgIFZlY3RvcjxLVVJMPiB1cmlMaXN0OwotICAgIGZvciAoaW50IGkgPSAwOyAqKHVyaXMgKyBp
KTsgaSsrKQotICAgICAgICB1cmlMaXN0LmFwcGVuZChLVVJMKEtVUkwoKSwgKih1cmlzICsgaSkp
KTsKLQotICAgIHJldHVybiB1cmlMaXN0OwotfQotCiBzdGF0aWMgU3RyaW5nIHNlbGVjdGlvbkRh
dGFUb1VURjhTdHJpbmcoR3RrU2VsZWN0aW9uRGF0YSogZGF0YSkKIHsKICAgICAvLyBnX3N0cm5k
dXAgZ3VhcmRzIGFnYWluc3Qgc2VsZWN0aW9uIGRhdGEgdGhhdCBpcyBub3QgbnVsbC10ZXJtaW5h
dGVkLgpAQCAtMTMwLDExICsxMTksNyBAQCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OmdldENsaXBi
b2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkKQogCiAgICAgaWYgKGd0a19jbGlw
Ym9hcmRfd2FpdF9pc190YXJnZXRfYXZhaWxhYmxlKGNsaXBib2FyZCwgdXJpTGlzdEF0b20pKSB7
CiAgICAgICAgIGlmIChHdGtTZWxlY3Rpb25EYXRhKiBkYXRhID0gZ3RrX2NsaXBib2FyZF93YWl0
X2Zvcl9jb250ZW50cyhjbGlwYm9hcmQsIHVyaUxpc3RBdG9tKSkgewotICAgICAgICAgICAgZ2No
YXIqKiB1cmlzID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF91cmlzKGRhdGEpOwotICAgICAgICAg
ICAgaWYgKHVyaXMpIHsKLSAgICAgICAgICAgICAgICBkYXRhT2JqZWN0LT5zZXRVUklMaXN0KHVy
aXNUb0tVUkxWZWN0b3IodXJpcykpOwotICAgICAgICAgICAgICAgIGdfc3RyZnJlZXYodXJpcyk7
Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBkYXRhT2JqZWN0LT5zZXRVUklMaXN0KHNlbGVj
dGlvbkRhdGFUb1VURjhTdHJpbmcoZGF0YSkpOwogICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9k
YXRhX2ZyZWUoZGF0YSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTEsMTMgKzEzNiw5IEBAIHZv
aWQgUGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSog
c2VsZWN0aW9uRGF0YSwgZ3VpbnQKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Z3VjaGFyKj4obWFya3VwLmdldCgpKSwgc3RybGVuKG1hcmt1cC5nZXQoKSkgKyAxKTsKIAogICAg
IH0gZWxzZSBpZiAoaW5mbyA9PSBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlwZVVSSUxpc3Qp
KSB7Ci0gICAgICAgIFZlY3RvcjxLVVJMPiB1cmlMaXN0KGRhdGFPYmplY3QtPnVyaUxpc3QoKSk7
Ci0gICAgICAgIGdjaGFyKiogdXJpcyA9IGdfbmV3MChnY2hhciosIHVyaUxpc3Quc2l6ZSgpICsg
MSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXJpTGlzdC5zaXplKCk7IGkrKykK
LSAgICAgICAgICAgIHVyaXNbaV0gPSBnX3N0cmR1cCh1cmlMaXN0W2ldLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwotCi0gICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXRfdXJpcyhzZWxlY3Rp
b25EYXRhLCB1cmlzKTsKLSAgICAgICAgZ19zdHJmcmVldih1cmlzKTsKKyAgICAgICAgQ1N0cmlu
ZyB1cmlMaXN0ID0gZGF0YU9iamVjdC0+dXJpTGlzdCgpLnV0ZjgoKTsKKyAgICAgICAgZ3RrX3Nl
bGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25EYXRhLCB1cmlMaXN0QXRvbSwgOCwKKyAgICAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4odXJpTGlzdC5kYXRhKCkpLCB1cmlM
aXN0Lmxlbmd0aCgpICsgMSk7CiAKICAgICB9IGVsc2UgaWYgKGluZm8gPT0gZ2V0SWRGb3JUYXJn
ZXRUeXBlKFRhcmdldFR5cGVOZXRzY2FwZVVSTCkgJiYgZGF0YU9iamVjdC0+aGFzVVJMKCkpIHsK
ICAgICAgICAgU3RyaW5nIHVybChkYXRhT2JqZWN0LT51cmwoKSk7CkBAIC0yMDksMjcgKzE5MCwx
NiBAQCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OmZpbGxEYXRhT2JqZWN0RnJvbURyb3BEYXRhKEd0
a1NlbGVjdGlvbkRhdGEqIGRhdGEsIGd1aW50CiAgICAgZWxzZSBpZiAodGFyZ2V0ID09IG1hcmt1
cEF0b20pCiAgICAgICAgIGRhdGFPYmplY3QtPnNldE1hcmt1cChzZWxlY3Rpb25EYXRhVG9VVEY4
U3RyaW5nKGRhdGEpKTsKICAgICBlbHNlIGlmICh0YXJnZXQgPT0gdXJpTGlzdEF0b20pIHsKLSAg
ICAgICAgZ2NoYXIqKiB1cmlzID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF91cmlzKGRhdGEpOwot
ICAgICAgICBpZiAoIXVyaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgVmVjdG9y
PEtVUkw+IHVyaUxpc3QodXJpc1RvS1VSTFZlY3Rvcih1cmlzKSk7Ci0gICAgICAgIGRhdGFPYmpl
Y3QtPnNldFVSSUxpc3QodXJpTGlzdCk7Ci0gICAgICAgIGdfc3RyZnJlZXYodXJpcyk7CisgICAg
ICAgIGRhdGFPYmplY3QtPnNldFVSSUxpc3Qoc2VsZWN0aW9uRGF0YVRvVVRGOFN0cmluZyhkYXRh
KSk7CiAgICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gbmV0c2NhcGVVUkxBdG9tKSB7CiAgICAgICAg
IFN0cmluZyB1cmxXaXRoTGFiZWwoc2VsZWN0aW9uRGF0YVRvVVRGOFN0cmluZyhkYXRhKSk7Ci0K
ICAgICAgICAgVmVjdG9yPFN0cmluZz4gcGllY2VzOwogICAgICAgICB1cmxXaXRoTGFiZWwuc3Bs
aXQoIlxuIiwgcGllY2VzKTsKIAogICAgICAgICAvLyBHaXZlIHByZWZlcmVuY2UgdG8gdGV4dC91
cmktbGlzdCBoZXJlLCBhcyBpdCBjYW4gaG9sZCBtb3JlCiAgICAgICAgIC8vIHRoYW4gb25lIFVS
SSBidXQgc3RpbGwgdGFrZSAgdGhlIGxhYmVsIGlmIHRoZXJlIGlzIG9uZS4KLSAgICAgICAgaWYg
KCFkYXRhT2JqZWN0LT5oYXNVUkwoKSkgewotICAgICAgICAgICAgVmVjdG9yPEtVUkw+IHVyaUxp
c3Q7Ci0gICAgICAgICAgICB1cmlMaXN0LmFwcGVuZChLVVJMKEtVUkwoKSwgcGllY2VzWzBdKSk7
Ci0gICAgICAgICAgICBkYXRhT2JqZWN0LT5zZXRVUklMaXN0KHVyaUxpc3QpOwotICAgICAgICB9
Ci0KKyAgICAgICAgaWYgKCFkYXRhT2JqZWN0LT5oYXNVUklMaXN0KCkpCisgICAgICAgICAgICBk
YXRhT2JqZWN0LT5zZXRVUklMaXN0KHBpZWNlc1swXSk7CiAgICAgICAgIGlmIChwaWVjZXMuc2l6
ZSgpID4gMSkKICAgICAgICAgICAgIGRhdGFPYmplY3QtPnNldFRleHQocGllY2VzWzFdKTsKICAg
ICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>