<?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>101333</bug_id>
          
          <creation_ts>2012-11-06 04:20:20 -0800</creation_ts>
          <short_desc>Implement month picking to calendar picker</short_desc>
          <delta_ts>2012-11-06 22:30:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>100938</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keishi Hattori">keishi</reporter>
          <assigned_to name="Keishi Hattori">keishi</assigned_to>
          <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>759520</commentid>
    <comment_count>0</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-11-06 04:20:20 -0800</bug_when>
    <thetext>Implement month picking to calendar picker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759554</commentid>
    <comment_count>1</comment_count>
      <attachid>172557</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-11-06 05:18:27 -0800</bug_when>
    <thetext>Created attachment 172557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760263</commentid>
    <comment_count>2</comment_count>
      <attachid>172557</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-11-06 18:09:32 -0800</bug_when>
    <thetext>Comment on attachment 172557
Patch

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

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:241
&gt; -};
&gt; +}

nit: &quot;;&quot; should not be removed because this is a sentence.

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:529
&gt; +    // We assume this._config.min/max are valid dates.

dates -&gt; dates or months

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:1203
&gt; +    return Day.parse(this._days[5][6].dataset.submitValue).endDate();

please write as _days[DaysTable._Weeks - 1][7 - 1] for readability.

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:1385
&gt; + * @param {!boolean} showEntireRange
&gt; + */
&gt; +MonthPickerDaysTable.prototype.selectRange = function(month, showEntireRange) {

Boolean argument is not good.
Why don&apos;t you introduce another function like selectRangeAndShowEntireRange? We can remove ugly comment /*, showEntireRange*/ of DaysTable.prototype.selectRange.

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:1424
&gt; +    var firstNodeInSelectedRange = this._firstNodeInSelectedRange();
&gt; +    if (!firstNodeInSelectedRange
&gt; +        &amp;&amp; (key == &quot;Right&quot; || key == &quot;Left&quot; || key == &quot;Up&quot; || key == &quot;Down&quot; || key == &quot;PageUp&quot; || key == &quot;PageDown&quot;)) {
&gt; +        this.picker.showMonth(currentMonth);

In what case does this happen?
this.picker.showMonth(currentMonth) looks no-op. Why is this necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760277</commentid>
    <comment_count>3</comment_count>
      <attachid>172692</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-11-06 18:41:01 -0800</bug_when>
    <thetext>Created attachment 172692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760324</commentid>
    <comment_count>4</comment_count>
      <attachid>172557</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-11-06 19:49:08 -0800</bug_when>
    <thetext>Comment on attachment 172557
Patch

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

&gt;&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:241
&gt;&gt; +}
&gt; 
&gt; nit: &quot;;&quot; should not be removed because this is a sentence.

Done.

&gt;&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:529
&gt;&gt; +    // We assume this._config.min/max are valid dates.
&gt; 
&gt; dates -&gt; dates or months

Done.

&gt;&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:1203
&gt;&gt; +    return Day.parse(this._days[5][6].dataset.submitValue).endDate();
&gt; 
&gt; please write as _days[DaysTable._Weeks - 1][7 - 1] for readability.

Done.

&gt;&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:1385
&gt;&gt; +MonthPickerDaysTable.prototype.selectRange = function(month, showEntireRange) {
&gt; 
&gt; Boolean argument is not good.
&gt; Why don&apos;t you introduce another function like selectRangeAndShowEntireRange? We can remove ugly comment /*, showEntireRange*/ of DaysTable.prototype.selectRange.

Done.

&gt;&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:1424
&gt;&gt; +        this.picker.showMonth(currentMonth);
&gt; 
&gt; In what case does this happen?
&gt; this.picker.showMonth(currentMonth) looks no-op. Why is this necessary?

This was a mistake. We should be selecting the current month when there is no selection and an arrow key is pressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760329</commentid>
    <comment_count>5</comment_count>
      <attachid>172692</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-11-06 19:55:52 -0800</bug_when>
    <thetext>Comment on attachment 172692
Patch

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

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:1422
&gt; +MonthPickerDaysTable.prototype.selectRangeAndShowEntireRange = function(month, showEntireRange) {

showEntireRange argument is unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760377</commentid>
    <comment_count>6</comment_count>
      <attachid>172714</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-11-06 21:32:51 -0800</bug_when>
    <thetext>Created attachment 172714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760401</commentid>
    <comment_count>7</comment_count>
      <attachid>172714</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-06 22:30:11 -0800</bug_when>
    <thetext>Comment on attachment 172714
Patch

Clearing flags on attachment: 172714

Committed r133722: &lt;http://trac.webkit.org/changeset/133722&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760402</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-06 22:30:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172557</attachid>
            <date>2012-11-06 05:18:27 -0800</date>
            <delta_ts>2012-11-06 19:49:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101333-20121106221639.patch</filename>
            <type>text/plain</type>
            <size>17238</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDcxMGRlODQ5N2Q5YTYz
MTNjYTRlYWM0YWIzNmFmNDk0MzhkNTQ4ZS4uMGM5MzcyNzQ1MjMzNWRlMmMyYmZhYjZmNzUzOTgz
N2YxZDhjM2MxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTExLTA2ICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBtb250
aCBwaWNraW5nIHRvIGNhbGVuZGFyIHBpY2tlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIG1vbnRoIHBpY2tlciBtb2RlIHRvIENhbGVu
ZGFyUGlja2VyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGVzdHMgd2lsbCBiZSBhZGRlZCBs
YXRlciB3aGVuIHRoaXMgZmVhdHVyZSBpcyBlbmFibGVkIGluIERSVC4KKworICAgICAgICAqIFJl
c291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmNzczoKKyAgICAgICAgKC5tb250aC1t
b2RlIC5kYXkpOiBSZW1vdmUgcm91bmRlZCBjb3JuZXJzIHdoZW4gaW4gbW9udGggbW9kZS4KKyAg
ICAgICAgKiBSZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qczoKKyAgICAgICAg
KE1vbnRoLmNyZWF0ZUZyb21Ub2RheSk6IENyZWF0ZXMgbW9udGggY29udGFpbmluZyB0b2RheS4K
KyAgICAgICAgKENhbGVuZGFyUGlja2VyKTogU2V0IHRoaXMuc2VsZWN0aW9uQ29uc3RydWN0b3Ig
dG8gRGF5IG9yIE1vbnRoIGRlcGVuZGluZyBvbiB0aGUgbW9kZS4gQ3JlYXRlIERheVRhYmxlcyBv
ciBNb250aFBpY2tlckRheXNUYWJsZSBkZXBlbmRpbmcgb24gdGhlIG1vZGUuCisgICAgICAgIChD
YWxlbmRhclBpY2tlci5wcm90b3R5cGUuaGFuZGxlVG9kYXkpOgorICAgICAgICAoQ2FsZW5kYXJQ
aWNrZXIucHJvdG90eXBlLl9sYXlvdXRCdXR0b25zKToKKyAgICAgICAgKERheXNUYWJsZS5wcm90
b3R5cGUuX3JlbmRlck1vbnRoKTogU2V0IGVsZW1lbnQuZGF0YXNldC5tb250aFZhbHVlIGZvciBh
bGwgZGF0ZSBub2Rlcy4KKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuc2VsZWN0UmFuZ2Up
OiBTZWxlY3RzIGEgZGF5LiBTZWNvbmQgYXJndW1lbnQgc2hvd0VudGlyZVJhbmdlIHdpbGwgaGF2
ZSBubyBlZmZlY3QuCisgICAgICAgIChEYXlzVGFibGUucHJvdG90eXBlLl9zZWxlY3RSYW5nZUNv
bnRhaW5pbmdOb2RlKToKKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX3JhbmdlRm9yTm9k
ZSk6IFJldHVybnMgRGF5IGZvciBub2RlLgorICAgICAgICAoRGF5c1RhYmxlLnByb3RvdHlwZS5z
dGFydERhdGUpOiBTdGFydCBkYXRldGltZSBvZiB2aXNpYmxlIGRhdGUgcmFuZ2UuIFRoaXMgdmFs
dWUgaXMgaW5jbHVzaXZlLgorICAgICAgICAoRGF5c1RhYmxlLnByb3RvdHlwZS5lbmREYXRlKTog
RW5kIGRhdGV0aW1lIG9mIHZpc2libGUgZGF0ZSByYW5nZS4gVGhpcyB2YWx1ZSBpcyBleGNsdXNp
dmUuCisgICAgICAgIChEYXlzVGFibGUucHJvdG90eXBlLl9oYW5kbGVLZXkpOgorICAgICAgICAo
TW9udGhQaWNrZXJEYXlzVGFibGUpOgorICAgICAgICAoTW9udGhQaWNrZXJEYXlzVGFibGUucHJv
dG90eXBlLnNlbGVjdFJhbmdlKTogSWYgc2hvd0VudGlyZVJhbmdlIGlzIHRydWUgY3VycmVudE1v
bnRoIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIHNlbGVjdGVkIG1vbnRoLgorICAgICAgICAoTW9u
dGhQaWNrZXJEYXlzVGFibGUucHJvdG90eXBlLl9yYW5nZUZvck5vZGUpOiBSZXR1cm5zIE1vbnRo
IGZvciBub2RlLgorICAgICAgICAoTW9udGhQaWNrZXJEYXlzVGFibGUucHJvdG90eXBlLl9oYW5k
bGVLZXkpOiBBcnJvdyBrZXlzIHNpbXBseSBtb3ZlIHRoZSBzZWxlY3Rpb24gZm9yd2FyZHMgb3Ig
YmFja3dhcmRzLgorCiAyMDEyLTExLTA1ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEludHJvZHVjZSBEYXkgY2xhc3MgdG8gY2FsZW5kYXIgcGlja2VyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBp
Y2tlci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBp
Y2tlci5jc3MKaW5kZXggMzMwYWMzZGQ2YTcyZDM3MWE0YmEwY2RkZjJlZjg0NzAzN2YzZTM2Yy4u
Y2ExZGJiMjI1ZWYwMGYxZjUxYzRkMjExZDM5ODBkMWUzZDlmZmQ4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuY3NzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmNzcwpA
QCAtMjI0LDMgKzIyNCw5IEBAIGJvZHkgewogLnByZXBhcmluZyAudW5hdmFpbGFibGUgewogICAg
IC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsKIH0KKworLm1vbnRoLW1vZGUgLmRheSB7CisgICAg
LXdlYmtpdC10cmFuc2l0aW9uOiBub25lOworICAgIGJvcmRlci1yYWRpdXM6IDA7CisgICAgYm9y
ZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qcyBiL1NvdXJjZS9XZWJDb3Jl
L1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzCmluZGV4IDMwODRjZDQyM2Y4
Yzc3NzRiZmRkNWRjNzIxYzM3ZGJiMmNkMjhhNmMuLmNhN2M5ZWE2MmViZGJiYjdmNzI0MmQ4M2Uw
YWRmMWUwNWNhYWViYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdl
cG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9w
YWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzCkBAIC00Niw2ICs0Niw3IEBAIHZhciBDbGFzc05h
bWVzID0gewogICAgIERheUxhYmVsQ29udGFpbmVyOiAiZGF5LWxhYmVsLWNvbnRhaW5lciIsCiAg
ICAgRGF5c0FyZWE6ICJkYXlzLWFyZWEiLAogICAgIERheXNBcmVhQ29udGFpbmVyOiAiZGF5cy1h
cmVhLWNvbnRhaW5lciIsCisgICAgTW9udGhNb2RlOiAibW9udGgtbW9kZSIsCiAgICAgTW9udGhT
ZWxlY3RvcjogIm1vbnRoLXNlbGVjdG9yIiwKICAgICBNb250aFNlbGVjdG9yQm94OiAibW9udGgt
c2VsZWN0b3ItYm94IiwKICAgICBNb250aFNlbGVjdG9yUG9wdXA6ICJtb250aC1zZWxlY3Rvci1w
b3B1cCIsCkBAIC0yMTQsOCArMjE1LDggQEAgZnVuY3Rpb24gRGF5KHZhbHVlT3JEYXlPclllYXIs
IG1vbnRoLCBkYXRlKSB7CiBEYXkuSVNPU3RyaW5nUmVnRXhwID0gL14oXGQrKS0oXGQrKS0oXGQr
KSQvOwogCiAvLyBTZWUgV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5oLgotRGF5Lk1p
bmltdW0gPSBuZXcgRGF0ZSgtNjIxMzU1OTY4MDAwMDAuMCk7Ci1EYXkuTWF4aW11bSA9IG5ldyBE
YXRlKDg2NDAwMDAwMDAwMDAwMDAuMCk7CitEYXkuTWluaW11bSA9IG5ldyBEYXkoLTYyMTM1NTk2
ODAwMDAwLjApOworRGF5Lk1heGltdW0gPSBuZXcgRGF5KDg2NDAwMDAwMDAwMDAwMDAuMCk7CiAK
IC8qKgogICogQHBhcmFtIHshc3RyaW5nfSBzdHIKQEAgLTIzMCwxOCArMjMxLDIyIEBAIERheS5w
YXJzZSA9IGZ1bmN0aW9uKHN0cikgewogICAgIHZhciBkYXRlID0gcGFyc2VJbnQobWF0Y2hbM10s
IDEwKTsKICAgICByZXR1cm4gbmV3IERheSh5ZWFyLCBtb250aCwgZGF0ZSk7CiB9OworCiAvKioK
ICAqIEBwYXJhbSB7IURhdGV9IGRhdGUKICAqIEByZXR1cm4geyFNb250aH0KICAqLwogRGF5LmNy
ZWF0ZUZyb21EYXRlID0gZnVuY3Rpb24oZGF0ZSkgewogICAgIHJldHVybiBuZXcgRGF5KGRhdGUu
Z2V0VVRDRnVsbFllYXIoKSwgZGF0ZS5nZXRVVENNb250aCgpLCBkYXRlLmdldFVUQ0RhdGUoKSk7
Ci19OworfQogCisvKioKKyAqIEByZXR1cm4geyFNb250aH0KKyAqLwogRGF5LmNyZWF0ZUZyb21U
b2RheSA9IGZ1bmN0aW9uKCkgewogICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpOwogICAgIHJldHVy
biBuZXcgRGF5KG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSwgbm93LmdldERhdGUo
KSk7Ci19Cit9OwogCiAvKioKICAqIEBwYXJhbSB7IURheX0gb3RoZXIKQEAgLTMyMiw2ICszMjcs
NyBAQCBmdW5jdGlvbiBNb250aCh2YWx1ZU9yTW9udGhPclllYXIsIG1vbnRoKSB7CiBNb250aC5J
U09TdHJpbmdSZWdFeHAgPSAvXihcZCspLShcZCspJC87CiAKIC8vIFNlZSBXZWJDb3JlL3BsYXRm
b3JtL0RhdGVDb21wb25lbnRzLmguCitNb250aC5NaW5pbXVtID0gbmV3IE1vbnRoKDEsIDApOwog
TW9udGguTWF4aW11bSA9IG5ldyBNb250aCgyNzU3NjAsIDgpOwogCiAvKioKQEAgLTM0Niw2ICsz
NTIsMTQgQEAgTW9udGguY3JlYXRlRnJvbURhdGUgPSBmdW5jdGlvbihkYXRlKSB7CiB9OwogCiAv
KioKKyAqIEByZXR1cm4geyFNb250aH0KKyAqLworTW9udGguY3JlYXRlRnJvbVRvZGF5ID0gZnVu
Y3Rpb24oKSB7CisgICAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7CisgICAgcmV0dXJuIG5ldyBNb250
aChub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCkpOworfTsKKworLyoqCiAgKiBAcGFy
YW0geyFNb250aH0gb3RoZXIKICAqIEByZXR1cm4geyFib29sfQogICovCkBAIC01MDAsMzIgKzUx
NCw0MCBAQCBmdW5jdGlvbiBvcGVuQ2FsZW5kYXJQaWNrZXIoKSB7CiAgKi8KIGZ1bmN0aW9uIENh
bGVuZGFyUGlja2VyKGVsZW1lbnQsIGNvbmZpZykgewogICAgIFBpY2tlci5jYWxsKHRoaXMsIGVs
ZW1lbnQsIGNvbmZpZyk7CisgICAgaWYgKHRoaXMuX2NvbmZpZy5tb2RlID09PSAibW9udGgiKSB7
CisgICAgICAgIHRoaXMuc2VsZWN0aW9uQ29uc3RydWN0b3IgPSBNb250aDsKKyAgICAgICAgdGhp
cy5fZGF5c1RhYmxlID0gbmV3IE1vbnRoUGlja2VyRGF5c1RhYmxlKHRoaXMpOworICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5Nb250aE1vZGUpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHRoaXMuc2VsZWN0aW9uQ29uc3RydWN0b3IgPSBEYXk7CisgICAgICAg
IHRoaXMuX2RheXNUYWJsZSA9IG5ldyBEYXlzVGFibGUodGhpcyk7CisgICAgfQogICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY2FsZW5kYXItcGlja2VyIik7CiAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJwcmVwYXJpbmciKTsKICAgICB0aGlzLl9oYW5kbGVXaW5kb3dS
ZXNpemVCb3VuZCA9IHRoaXMuX2hhbmRsZVdpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpOwogICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0aGlzLl9oYW5kbGVXaW5kb3dSZXNpemVC
b3VuZCwgZmFsc2UpOwotICAgIC8vIFdlIGFzc3VtZSB0aGlzLl9jb25maWcubWluIGlzIGEgdmFs
aWQgZGF0ZS4KLSAgICB0aGlzLl9taW5pbXVtVmFsdWUgPSAodHlwZW9mIHRoaXMuX2NvbmZpZy5t
aW4gIT09ICJ1bmRlZmluZWQiKSA/IHBhcnNlRGF0ZVN0cmluZyh0aGlzLl9jb25maWcubWluKS52
YWx1ZU9mKCkgOiBEYXkuTWluaW11bS52YWx1ZU9mKCk7Ci0gICAgLy8gV2UgYXNzdW1lIHRoaXMu
X2NvbmZpZy5tYXggaXMgYSB2YWxpZCBkYXRlLgotICAgIHRoaXMuX21heGltdW1WYWx1ZSA9ICh0
eXBlb2YgdGhpcy5fY29uZmlnLm1heCAhPT0gInVuZGVmaW5lZCIpID8gcGFyc2VEYXRlU3RyaW5n
KHRoaXMuX2NvbmZpZy5tYXgpLnZhbHVlT2YoKSA6IERheS5NYXhpbXVtLnZhbHVlT2YoKTsKKyAg
ICAvLyBXZSBhc3N1bWUgdGhpcy5fY29uZmlnLm1pbi9tYXggYXJlIHZhbGlkIGRhdGVzLgorICAg
IHZhciBtaW5pbXVtID0gKHR5cGVvZiB0aGlzLl9jb25maWcubWluICE9PSAidW5kZWZpbmVkIikg
PyBwYXJzZURhdGVTdHJpbmcodGhpcy5fY29uZmlnLm1pbikgOiB0aGlzLnNlbGVjdGlvbkNvbnN0
cnVjdG9yLk1pbmltdW07CisgICAgdmFyIG1heGltdW0gPSAodHlwZW9mIHRoaXMuX2NvbmZpZy5t
YXggIT09ICJ1bmRlZmluZWQiKSA/IHBhcnNlRGF0ZVN0cmluZyh0aGlzLl9jb25maWcubWF4KSA6
IHRoaXMuc2VsZWN0aW9uQ29uc3RydWN0b3IuTWF4aW11bTsKKyAgICB0aGlzLl9taW5pbXVtVmFs
dWUgPSBtaW5pbXVtLnZhbHVlT2YoKTsKKyAgICB0aGlzLl9tYXhpbXVtVmFsdWUgPSBtYXhpbXVt
LnZhbHVlT2YoKTsKICAgICB0aGlzLnN0ZXAgPSAodHlwZW9mIHRoaXMuX2NvbmZpZy5zdGVwICE9
PSB1bmRlZmluZWQpID8gTnVtYmVyKHRoaXMuX2NvbmZpZy5zdGVwKSA6IENhbGVuZGFyUGlja2Vy
LkRlZmF1bHRTdGVwU2NhbGVGYWN0b3I7CiAgICAgdGhpcy5zdGVwQmFzZSA9ICh0eXBlb2YgdGhp
cy5fY29uZmlnLnN0ZXBCYXNlICE9PSAidW5kZWZpbmVkIikgPyBOdW1iZXIodGhpcy5fY29uZmln
LnN0ZXBCYXNlKSA6IENhbGVuZGFyUGlja2VyLkRlZmF1bHRTdGVwQmFzZTsKLSAgICB0aGlzLl9t
aW5pbXVtTW9udGggPSBNb250aC5jcmVhdGVGcm9tRGF0ZShuZXcgRGF0ZSh0aGlzLl9taW5pbXVt
VmFsdWUpKTsKLSAgICB0aGlzLm1heGltdW1Nb250aCA9IE1vbnRoLmNyZWF0ZUZyb21EYXRlKG5l
dyBEYXRlKHRoaXMuX21heGltdW1WYWx1ZSkpOworICAgIHRoaXMuX21pbmltdW1Nb250aCA9IE1v
bnRoLmNyZWF0ZUZyb21EYXRlKG1pbmltdW0uc3RhcnREYXRlKCkpOworICAgIHRoaXMubWF4aW11
bU1vbnRoID0gTW9udGguY3JlYXRlRnJvbURhdGUobWF4aW11bS5zdGFydERhdGUoKSk7CiAgICAg
dGhpcy5fY3VycmVudE1vbnRoID0gbmV3IE1vbnRoKE5hTiwgTmFOKTsKICAgICB0aGlzLl95ZWFy
TW9udGhDb250cm9sbGVyID0gbmV3IFllYXJNb250aENvbnRyb2xsZXIodGhpcyk7Ci0gICAgdGhp
cy5fZGF5c1RhYmxlID0gbmV3IERheXNUYWJsZSh0aGlzKTsKICAgICB0aGlzLl9oYWRLZXlFdmVu
dCA9IGZhbHNlOwogICAgIHRoaXMuX2xheW91dCgpOwogICAgIHZhciBpbml0aWFsU2VsZWN0aW9u
ID0gcGFyc2VEYXRlU3RyaW5nKHRoaXMuX2NvbmZpZy5jdXJyZW50VmFsdWUpOwogICAgIGlmICgh
aW5pdGlhbFNlbGVjdGlvbikKLSAgICAgICAgaW5pdGlhbFNlbGVjdGlvbiA9IERheS5jcmVhdGVG
cm9tVG9kYXkoKTsKKyAgICAgICAgaW5pdGlhbFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uQ29u
c3RydWN0b3IuY3JlYXRlRnJvbVRvZGF5KCk7CiAgICAgaWYgKGluaXRpYWxTZWxlY3Rpb24udmFs
dWVPZigpIDwgdGhpcy5fbWluaW11bVZhbHVlKQotICAgICAgICBpbml0aWFsU2VsZWN0aW9uID0g
bmV3IERheSh0aGlzLl9taW5pbXVtVmFsdWUpOworICAgICAgICBpbml0aWFsU2VsZWN0aW9uID0g
bmV3IHRoaXMuc2VsZWN0aW9uQ29uc3RydWN0b3IodGhpcy5fbWluaW11bVZhbHVlKTsKICAgICBl
bHNlIGlmIChpbml0aWFsU2VsZWN0aW9uLnZhbHVlT2YoKSA+IHRoaXMuX21heGltdW1WYWx1ZSkK
LSAgICAgICAgaW5pdGlhbFNlbGVjdGlvbiA9IG5ldyBEYXkodGhpcy5fbWF4aW11bVZhbHVlKTsK
KyAgICAgICAgaW5pdGlhbFNlbGVjdGlvbiA9IG5ldyB0aGlzLnNlbGVjdGlvbkNvbnN0cnVjdG9y
KHRoaXMuX21heGltdW1WYWx1ZSk7CiAgICAgdGhpcy5zaG93TW9udGgoTW9udGguY3JlYXRlRnJv
bURhdGUoaW5pdGlhbFNlbGVjdGlvbi5zdGFydERhdGUoKSksIGZhbHNlKTsKLSAgICB0aGlzLl9k
YXlzVGFibGUuc2VsZWN0UmFuZ2UoaW5pdGlhbFNlbGVjdGlvbik7CisgICAgdGhpcy5fZGF5c1Rh
YmxlLnNlbGVjdFJhbmdlKGluaXRpYWxTZWxlY3Rpb24sIHRydWUpOwogICAgIHRoaXMuZml4V2lu
ZG93U2l6ZSgpOwogICAgIHRoaXMuX2hhbmRsZUJvZHlLZXlEb3duQm91bmQgPSB0aGlzLl9oYW5k
bGVCb2R5S2V5RG93bi5iaW5kKHRoaXMpOwogICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0
ZW5lcigia2V5ZG93biIsIHRoaXMuX2hhbmRsZUJvZHlLZXlEb3duQm91bmQsIGZhbHNlKTsKQEAg
LTU1NSw4ICs1NzcsOCBAQCBDYWxlbmRhclBpY2tlci5wcm90b3R5cGUuX2xheW91dCA9IGZ1bmN0
aW9uKCkgewogfTsKIAogQ2FsZW5kYXJQaWNrZXIucHJvdG90eXBlLmhhbmRsZVRvZGF5ID0gZnVu
Y3Rpb24oKSB7Ci0gICAgdmFyIHRvZGF5ID0gRGF5LmNyZWF0ZUZyb21Ub2RheSgpOwotICAgIHRo
aXMuX2RheXNUYWJsZS5zZWxlY3RSYW5nZSh0b2RheSk7CisgICAgdmFyIHRvZGF5ID0gdGhpcy5z
ZWxlY3Rpb25Db25zdHJ1Y3Rvci5jcmVhdGVGcm9tVG9kYXkoKTsKKyAgICB0aGlzLl9kYXlzVGFi
bGUuc2VsZWN0UmFuZ2UodG9kYXksIHRydWUpOwogICAgIHRoaXMuc3VibWl0VmFsdWUodG9kYXku
dG9TdHJpbmcoKSk7CiB9OwogCkBAIC02MDEsNiArNjIzLDcgQEAgQ2FsZW5kYXJQaWNrZXIucHJv
dG90eXBlLmZpeFdpbmRvd1NpemUgPSBmdW5jdGlvbigpIHsKIENhbGVuZGFyUGlja2VyLnByb3Rv
dHlwZS5fbGF5b3V0QnV0dG9ucyA9IGZ1bmN0aW9uKCkgewogICAgIHZhciBjb250YWluZXIgPSBj
cmVhdGVFbGVtZW50KCJkaXYiLCBDbGFzc05hbWVzLlRvZGF5Q2xlYXJBcmVhKTsKICAgICB0aGlz
LnRvZGF5ID0gY3JlYXRlRWxlbWVudCgiaW5wdXQiLCBDbGFzc05hbWVzLlRvZGF5QnV0dG9uKTsK
KyAgICB0aGlzLnRvZGF5LmRpc2FibGVkID0gIXRoaXMuaXNWYWxpZERhdGUodGhpcy5zZWxlY3Rp
b25Db25zdHJ1Y3Rvci5jcmVhdGVGcm9tVG9kYXkoKSk7CiAgICAgdGhpcy50b2RheS50eXBlID0g
ImJ1dHRvbiI7CiAgICAgdGhpcy50b2RheS52YWx1ZSA9IHRoaXMuX2NvbmZpZy50b2RheUxhYmVs
OwogICAgIHRoaXMudG9kYXkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLmhhbmRsZVRv
ZGF5LmJpbmQodGhpcyksIGZhbHNlKTsKQEAgLTEwODAsMTAgKzExMDMsMTEgQEAgRGF5c1RhYmxl
LnByb3RvdHlwZS5fcmVuZGVyTW9udGggPSBmdW5jdGlvbihtb250aCkgewogICAgICAgICAgICAg
ZWxlbWVudC5pbm5lclRleHQgPSBsb2NhbGl6ZU51bWJlcihkYXlJdGVyYXRvci5nZXRVVENEYXRl
KCkpOwogICAgICAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBDbGFzc05hbWVzLkRheTsKICAg
ICAgICAgICAgIGVsZW1lbnQuZGF0YXNldC5zdWJtaXRWYWx1ZSA9IERheS5jcmVhdGVGcm9tRGF0
ZShkYXlJdGVyYXRvcikudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIGVsZW1lbnQuZGF0YXNldC5t
b250aFZhbHVlID0gaXRlck1vbnRoLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBpZiAoaXNOYU4o
dGltZSkpIHsKICAgICAgICAgICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9ICItIjsKICAgICAg
ICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5VbmF2YWlsYWJsZSk7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLnBpY2tlci5pc1ZhbGlkRGF0ZShEYXkuY3Jl
YXRlRnJvbURhdGUoZGF5SXRlcmF0b3IpKSkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMu
cGlja2VyLmlzVmFsaWREYXRlKHRoaXMuX3JhbmdlRm9yTm9kZShlbGVtZW50KSkpCiAgICAgICAg
ICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuVW5hdmFpbGFibGUpOwog
ICAgICAgICAgICAgZWxzZSBpZiAoIWl0ZXJNb250aC5lcXVhbHMobW9udGgpKSB7CiAgICAgICAg
ICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuQXZhaWxhYmxlKTsKQEAg
LTEwOTMsOCArMTExNyw2IEBAIERheXNUYWJsZS5wcm90b3R5cGUuX3JlbmRlck1vbnRoID0gZnVu
Y3Rpb24obW9udGgpIHsKICAgICAgICAgICAgIGRheUl0ZXJhdG9yLnNldFVUQ0RhdGUoZGF5SXRl
cmF0b3IuZ2V0VVRDRGF0ZSgpICsgMSk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICB0aGlzLnBp
Y2tlci50b2RheS5kaXNhYmxlZCA9ICF0aGlzLnBpY2tlci5pc1ZhbGlkRGF0ZShEYXkuY3JlYXRl
RnJvbVRvZGF5KCkudmFsdWVPZigpKTsKIH07CiAKIC8qKgpAQCAtMTEzMCwxMSArMTE1MiwxMiBA
QCBEYXlzVGFibGUucHJvdG90eXBlLl9tb3ZlSW5EYXlzID0gZnVuY3Rpb24oKSB7CiB9OwogCiAv
KioKLSAqIEBwYXJhbSB7IURhdGV9IGRhdGUKKyAqIEBwYXJhbSB7IURheX0gZGF5CiAgKi8KLURh
eXNUYWJsZS5wcm90b3R5cGUuc2VsZWN0UmFuZ2UgPSBmdW5jdGlvbihkYXkpIHsKK0RheXNUYWJs
ZS5wcm90b3R5cGUuc2VsZWN0UmFuZ2UgPSBmdW5jdGlvbihkYXkvKiwgc2hvd0VudGlyZVJhbmdl
Ki8pIHsKICAgICB0aGlzLl9kZXNlbGVjdCgpOwotICAgIHRoaXMucGlja2VyLnNob3dNb250aChN
b250aC5jcmVhdGVGcm9tRGF0ZShkYXkuc3RhcnREYXRlKCkpLCB0cnVlKTsKKyAgICBpZiAodGhp
cy5zdGFydERhdGUoKSA+IGRheS5zdGFydERhdGUoKSB8fCB0aGlzLmVuZERhdGUoKSA8IGRheS5l
bmREYXRlKCkpCisgICAgICAgIHRoaXMucGlja2VyLnNob3dNb250aChNb250aC5jcmVhdGVGcm9t
RGF0ZShkYXkuc3RhcnREYXRlKCkpLCBmYWxzZSk7CiAgICAgdmFyIGRhdGVTdHJpbmcgPSBkYXku
dG9TdHJpbmcoKTsKICAgICBmb3IgKHZhciB3ID0gMDsgdyA8IERheXNUYWJsZS5fV2Vla3M7IHcr
KykgewogICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IDc7IGQrKykgewpAQCAtMTE1MCwxMSAr
MTE3MywzNCBAQCBEYXlzVGFibGUucHJvdG90eXBlLnNlbGVjdFJhbmdlID0gZnVuY3Rpb24oZGF5
KSB7CiAgKiBAcGFyYW0geyFFbGVtZW50fSBkYXlOb2RlCiAgKi8KIERheXNUYWJsZS5wcm90b3R5
cGUuX3NlbGVjdFJhbmdlQ29udGFpbmluZ05vZGUgPSBmdW5jdGlvbihkYXlOb2RlKSB7Ci0gICAg
dGhpcy5fZGVzZWxlY3QoKTsKLSAgICBpZiAoIWRheU5vZGUgfHwgIWRheU5vZGUuY2xhc3NMaXN0
LmNvbnRhaW5zKENsYXNzTmFtZXMuRGF5KSB8fCAhZGF5Tm9kZS5jbGFzc0xpc3QuY29udGFpbnMo
Q2xhc3NOYW1lcy5BdmFpbGFibGUpKQorICAgIHZhciByYW5nZSA9IHRoaXMuX3JhbmdlRm9yTm9k
ZShkYXlOb2RlKTsKKyAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm47Ci0gICAgLy8gRklY
TUU6IFNlbGVjdCBkYXRlLCB3ZWVrIG9yIG1vbnRoIGRlcGVuZGluZyBvbiB0aGUgY29uZmlnLgot
ICAgIGRheU5vZGUuY2xhc3NMaXN0LmFkZChDbGFzc05hbWVzLlNlbGVjdGVkKTsKKyAgICB0aGlz
LnNlbGVjdFJhbmdlKHJhbmdlLCBmYWxzZSk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7IUVsZW1l
bnR9IGRheU5vZGUKKyAqIEByZXR1cm4gez9EYXl9CisgKi8KK0RheXNUYWJsZS5wcm90b3R5cGUu
X3JhbmdlRm9yTm9kZSA9IGZ1bmN0aW9uKGRheU5vZGUpIHsKKyAgICBpZiAoIWRheU5vZGUpCisg
ICAgICAgIHJldHVybiBudWxsOworICAgIHJldHVybiBEYXkucGFyc2UoZGF5Tm9kZS5kYXRhc2V0
LnN1Ym1pdFZhbHVlKTsKK307CisKKy8qKgorICogQHJldHVybiB7IURhdGV9CisgKi8KK0RheXNU
YWJsZS5wcm90b3R5cGUuc3RhcnREYXRlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIERheS5w
YXJzZSh0aGlzLl9kYXlzWzBdWzBdLmRhdGFzZXQuc3VibWl0VmFsdWUpLnN0YXJ0RGF0ZSgpOwor
fTsKKworLyoqCisgKiBAcmV0dXJuIHshRGF0ZX0KKyAqLworRGF5c1RhYmxlLnByb3RvdHlwZS5l
bmREYXRlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIERheS5wYXJzZSh0aGlzLl9kYXlzWzVd
WzZdLmRhdGFzZXQuc3VibWl0VmFsdWUpLmVuZERhdGUoKTsKIH07CiAKIC8qKgpAQCAtMTMwNiw3
ICsxMzUyLDcgQEAgRGF5c1RhYmxlLnByb3RvdHlwZS5faGFuZGxlS2V5ID0gZnVuY3Rpb24oZXZl
bnQpIHsKICAgICAgICAgfQogCiAgICAgfSBlbHNlIGlmIChrZXkgPT0gIlUrMDA1NCIpIHsgLy8g
J3QnCi0gICAgICAgIHRoaXMuc2VsZWN0UmFuZ2UoRGF5LmNyZWF0ZUZyb21Ub2RheSgpKTsKKyAg
ICAgICAgdGhpcy5zZWxlY3RSYW5nZShEYXkuY3JlYXRlRnJvbVRvZGF5KCksIHRydWUpOwogICAg
ICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1
bHQoKTsKICAgICB9CkBAIC0xMzI0LDYgKzEzNzAsOTEgQEAgRGF5c1RhYmxlLnByb3RvdHlwZS51
cGRhdGVTZWxlY3Rpb24gPSBmdW5jdGlvbihldmVudCwgeCwgeSkgewogfTsKIAogLyoqCisgKiBA
Y29uc3RydWN0b3IKKyAqIEBwYXJhbXshQ2FsZW5kYXJQaWNrZXJ9IHBpY2tlcgorICovCitmdW5j
dGlvbiBNb250aFBpY2tlckRheXNUYWJsZShwaWNrZXIpIHsKKyAgICBEYXlzVGFibGUuY2FsbCh0
aGlzLCBwaWNrZXIpOworfQorTW9udGhQaWNrZXJEYXlzVGFibGUucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShEYXlzVGFibGUucHJvdG90eXBlKTsKKworLyoqCisgKiBAcGFyYW0geyFNb250aH0g
bW9udGgKKyAqIEBwYXJhbSB7IWJvb2xlYW59IHNob3dFbnRpcmVSYW5nZQorICovCitNb250aFBp
Y2tlckRheXNUYWJsZS5wcm90b3R5cGUuc2VsZWN0UmFuZ2UgPSBmdW5jdGlvbihtb250aCwgc2hv
d0VudGlyZVJhbmdlKSB7CisgICAgdGhpcy5fZGVzZWxlY3QoKTsKKyAgICBpZiAoc2hvd0VudGly
ZVJhbmdlKQorICAgICAgICB0aGlzLnBpY2tlci5zaG93TW9udGgobW9udGgsIHRydWUpOworICAg
IGVsc2UgeworICAgICAgICBpZiAodGhpcy5zdGFydERhdGUoKSA+PSBtb250aC5lbmREYXRlKCkg
fHwgdGhpcy5lbmREYXRlKCkgPCBtb250aC5zdGFydERhdGUoKSkKKyAgICAgICAgICAgIHRoaXMu
cGlja2VyLnNob3dNb250aChtb250aCwgdHJ1ZSk7CisgICAgfQorICAgIHZhciBtb250aFN0cmlu
ZyA9IG1vbnRoLnRvU3RyaW5nKCk7CisgICAgZm9yICh2YXIgdyA9IDA7IHcgPCBEYXlzVGFibGUu
X1dlZWtzOyB3KyspIHsKKyAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCA3OyBkKyspIHsKKyAg
ICAgICAgICAgIGlmICh0aGlzLl9kYXlzW3ddW2RdLmRhdGFzZXQubW9udGhWYWx1ZSA9PSBtb250
aFN0cmluZykgeworICAgICAgICAgICAgICAgIHRoaXMuX2RheXNbd11bZF0uY2xhc3NMaXN0LmFk
ZChDbGFzc05hbWVzLlNlbGVjdGVkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K307CisKKy8qKgorICogQHBhcmFtIHshRWxlbWVudH0gZGF5Tm9kZQorICogQHJldHVybiB7P01v
bnRofQorICovCitNb250aFBpY2tlckRheXNUYWJsZS5wcm90b3R5cGUuX3JhbmdlRm9yTm9kZSA9
IGZ1bmN0aW9uKGRheU5vZGUpIHsKKyAgICBpZiAoIWRheU5vZGUpCisgICAgICAgIHJldHVybiBu
dWxsOworICAgIHJldHVybiBNb250aC5wYXJzZShkYXlOb2RlLmRhdGFzZXQubW9udGhWYWx1ZSk7
Cit9OworCisvKioKKyAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CisgKi8KK01vbnRoUGlja2VyRGF5
c1RhYmxlLnByb3RvdHlwZS5faGFuZGxlS2V5ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB0aGlz
LnBpY2tlci5tYXliZVVwZGF0ZUZvY3VzU3R5bGUoKTsKKyAgICB2YXIga2V5ID0gZXZlbnQua2V5
SWRlbnRpZmllcjsKKyAgICB2YXIgZXZlbnRIYW5kbGVkID0gZmFsc2U7CisgICAgdmFyIGN1cnJl
bnRNb250aCA9IHRoaXMucGlja2VyLmN1cnJlbnRNb250aCgpOworICAgIHZhciBmaXJzdE5vZGVJ
blNlbGVjdGVkUmFuZ2UgPSB0aGlzLl9maXJzdE5vZGVJblNlbGVjdGVkUmFuZ2UoKTsKKyAgICBp
ZiAoIWZpcnN0Tm9kZUluU2VsZWN0ZWRSYW5nZQorICAgICAgICAmJiAoa2V5ID09ICJSaWdodCIg
fHwga2V5ID09ICJMZWZ0IiB8fCBrZXkgPT0gIlVwIiB8fCBrZXkgPT0gIkRvd24iIHx8IGtleSA9
PSAiUGFnZVVwIiB8fCBrZXkgPT0gIlBhZ2VEb3duIikpIHsKKyAgICAgICAgdGhpcy5waWNrZXIu
c2hvd01vbnRoKGN1cnJlbnRNb250aCk7CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigp
OworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIHZhciBzZWxlY3RlZE1vbnRoID0gdGhpcy5fcmFuZ2VGb3JOb2RlKGZpcnN0Tm9kZUlu
U2VsZWN0ZWRSYW5nZSk7CisgICAgaWYgKGtleSA9PSAoZ2xvYmFsLnBhcmFtcy5pc0NhbGVuZGFy
UlRMID8gIlJpZ2h0IiA6ICJMZWZ0IikgfHwga2V5ID09ICJVcCIgfHwga2V5ID09ICJQYWdlVXAi
KSB7CisgICAgICAgIGlmIChzZWxlY3RlZE1vbnRoLnZhbHVlT2YoKSA+IGN1cnJlbnRNb250aC52
YWx1ZU9mKCkpCisgICAgICAgICAgICB0aGlzLnNlbGVjdFJhbmdlKGN1cnJlbnRNb250aCwgdHJ1
ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuc2VsZWN0UmFuZ2UoY3VycmVudE1v
bnRoLnByZXZpb3VzKCksIHRydWUpOworICAgICAgICBldmVudEhhbmRsZWQgPSB0cnVlOworICAg
IH0gZWxzZSBpZiAoa2V5ID09IChnbG9iYWwucGFyYW1zLmlzQ2FsZW5kYXJSVEwgPyAiTGVmdCIg
OiAiUmlnaHQiKSB8fCBrZXkgPT0gIkRvd24iIHx8IGtleSA9PSAiUGFnZURvd24iKSB7CisgICAg
ICAgIGlmIChzZWxlY3RlZE1vbnRoLnZhbHVlT2YoKSA8IGN1cnJlbnRNb250aC52YWx1ZU9mKCkp
CisgICAgICAgICAgICB0aGlzLnNlbGVjdFJhbmdlKGN1cnJlbnRNb250aCwgdHJ1ZSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuc2VsZWN0UmFuZ2UoY3VycmVudE1vbnRoLm5leHQo
KSwgdHJ1ZSk7CisgICAgICAgIGV2ZW50SGFuZGxlZCA9IHRydWU7CisgICAgfSBlbHNlIGlmICh0
aGlzLl9oYXNTZWxlY3Rpb24oKSAmJiBrZXkgPT0gIkVudGVyIikgeworICAgICAgICBpZiAoY3Vy
cmVudFNlbGVjdGlvbikgeworICAgICAgICAgICAgdGhpcy5waWNrZXIuc3VibWl0VmFsdWUoY3Vy
cmVudFNlbGVjdGlvbi50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGV2ZW50SGFuZGxlZCA9IHRy
dWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGtleSA9PSAiVSswMDU0IikgeyAvLyAndCcK
KyAgICAgICAgdGhpcy5zZWxlY3RSYW5nZShNb250aC5jcmVhdGVGcm9tVG9kYXkoKSwgdHJ1ZSk7
CisgICAgICAgIGV2ZW50SGFuZGxlZCA9IHRydWU7CisgICAgfQorICAgIGlmIChldmVudEhhbmRs
ZWQpIHsKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgIGV2ZW50LnBy
ZXZlbnREZWZhdWx0KCk7CisgICAgfQorfTsKKworLyoqCiAgKiBAcGFyYW0geyFFdmVudH0gZXZl
bnQKICAqLwogQ2FsZW5kYXJQaWNrZXIucHJvdG90eXBlLl9oYW5kbGVCb2R5S2V5RG93biA9IGZ1
bmN0aW9uKGV2ZW50KSB7CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXgg
MzIxODNlMzQ4NDJjNDQ2ZDE5ZmNiYjZhMzU2ZTBjYWI0Y2IwZDM3MS4uNzA3NTgxYzNhMmE2MmYw
YTNjNDI4OWExOWZkMzA0MmNlN2FmNTM2MiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTExLTA2ICBLZWlzaGkgSGF0dG9yaSAgPGtl
aXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBtb250aCBwaWNraW5nIHRvIGNh
bGVuZGFyIHBpY2tlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAxMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbDogQWRkZWQgdGVz
dCBmb3IgbW9udGggcGlja2VyLgorCiAyMDEyLTExLTA1ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9u
LmhhdXNtYW5uQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIFRyaXZpYWwgdW5yZXZpZXdlZDog
QWRkIG1pc3NpbmcgbW9kdWxlIGRlcGVuZGVuY2llcyBmb3IgYnVpbGRzIGluIFF0IENJIHN5c3Rl
bS4KZGlmZiAtLWdpdCBhL01hbnVhbFRlc3RzL2Zvcm1zL2NhbGVuZGFyLXBpY2tlci5odG1sIGIv
TWFudWFsVGVzdHMvZm9ybXMvY2FsZW5kYXItcGlja2VyLmh0bWwKaW5kZXggYmUyNDNjYTMwYmU0
ZDczYmM4MzJhMDkwMmQzMjVjMmI5MTEwNWYxYS4uNTUyMDdlNGQzZGI3NTE4ZTFiOGY1NmZiZTA4
MDIxYjU0ZjI2OGJkYyAxMDA2NDQKLS0tIGEvTWFudWFsVGVzdHMvZm9ybXMvY2FsZW5kYXItcGlj
a2VyLmh0bWwKKysrIGIvTWFudWFsVGVzdHMvZm9ybXMvY2FsZW5kYXItcGlja2VyLmh0bWwKQEAg
LTI3LDYgKzI3LDcgQEAgaWZyYW1lIHsKICA8b3B0aW9uPndpdGggbG9uZyBkYXRhbGlzdDwvb3B0
aW9uPgogIDxvcHRpb24+QXJhYmljIHdpdGggZGF0YWxpc3Q8L29wdGlvbj4KICA8b3B0aW9uPkFy
YWJpYyB3aXRoIGxvbmcgZGF0YWxpc3Q8L29wdGlvbj4KKyA8b3B0aW9uPk1vbnRoPC9vcHRpb24+
CiA8L3NlbGVjdD4KIAogPGRpdj48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImRhdGUiPjwvZGl2PgpA
QCAtMjM4LDYgKzIzOSwyMSBAQCB2YXIgYXJhYmljTG9uZ0RhdGFsaXN0QXJndW1lbnRzID0gewog
ICAgIHN1Z2dlc3Rpb25IaWdobGlnaHRDb2xvcjogIiMwMDAwZmYiLAogICAgIHN1Z2dlc3Rpb25I
aWdobGlnaHRUZXh0Q29sb3I6ICIjZmZmZmZmIgogfTsKK3ZhciBtb250aEFyZ3VtZW50cyA9IHsK
KyAgICBsb2NhbGU6ICdlbi1VUycsCisgICAgbW9udGhMYWJlbHMgOiBbJ0phbnVhcnknLCAnRmVi
cnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLAorICAgICdKdWx5JywgJ0F1
Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddLAor
ICAgIGRheUxhYmVscyA6IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmkn
LCAnU2F0J10sCisgICAgdG9kYXlMYWJlbCA6ICdUaGlzIE1vbnRoJywKKyAgICBjbGVhckxhYmVs
IDogJ0NsZWFyJywKKyAgICBjYW5jZWxMYWJlbCA6ICdDYW5jZWwnLAorICAgIHdlZWtTdGFydERh
eSA6IDAsCisgICAgc3RlcCA6ICIxIiwKKyAgICBzdGVwQmFzZTogIjAiLAorICAgIGN1cnJlbnRW
YWx1ZSA6ICcyMDAwLTAxJywKKyAgICBtYXggOiAnMjA5OS0wMycsCisgICAgbW9kZTogIm1vbnRo
IgorfTsKIAogZnVuY3Rpb24gb3BlbkNhbGVuZGFyKGFyZ3MpIHsKICAgICB2YXIgZnJhbWUgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMF07CkBAIC0zMTAsNiArMzI2
LDkgQEAgZnVuY3Rpb24gc2VsZWN0ZWQoc2VsZWN0KSB7CiAgICAgY2FzZSA2OgogICAgICAgICBv
cGVuQ2FsZW5kYXIoYXJhYmljTG9uZ0RhdGFsaXN0QXJndW1lbnRzKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSA3OgorICAgICAgICBvcGVuQ2FsZW5kYXIobW9udGhBcmd1bWVudHMpOworICAg
ICAgICBicmVhazsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172692</attachid>
            <date>2012-11-06 18:41:01 -0800</date>
            <delta_ts>2012-11-06 21:32:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101333-20121107113912.patch</filename>
            <type>text/plain</type>
            <size>18223</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDcxMGRlODQ5N2Q5YTYz
MTNjYTRlYWM0YWIzNmFmNDk0MzhkNTQ4ZS4uNGJlMjMwMzNmZjUzM2I4ZGU5ZDhhNmNmYTgzMTI3
YTU2NThjYWJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTExLTA2ICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBtb250
aCBwaWNraW5nIHRvIGNhbGVuZGFyIHBpY2tlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIG1vbnRoIHBpY2tlciBtb2RlIHRvIENhbGVu
ZGFyUGlja2VyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGVzdHMgd2lsbCBiZSBhZGRlZCBs
YXRlciB3aGVuIHRoaXMgZmVhdHVyZSBpcyBlbmFibGVkIGluIERSVC4KKworICAgICAgICAqIFJl
c291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmNzczoKKyAgICAgICAgKC5tb250aC1t
b2RlIC5kYXkpOiBSZW1vdmUgcm91bmRlZCBjb3JuZXJzIHdoZW4gaW4gbW9udGggbW9kZS4KKyAg
ICAgICAgKiBSZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qczoKKyAgICAgICAg
KE1vbnRoLmNyZWF0ZUZyb21Ub2RheSk6IENyZWF0ZXMgbW9udGggY29udGFpbmluZyB0b2RheS4K
KyAgICAgICAgKENhbGVuZGFyUGlja2VyKTogU2V0IHRoaXMuc2VsZWN0aW9uQ29uc3RydWN0b3Ig
dG8gRGF5IG9yIE1vbnRoIGRlcGVuZGluZyBvbiB0aGUgbW9kZS4gQ3JlYXRlIERheVRhYmxlcyBv
ciBNb250aFBpY2tlckRheXNUYWJsZSBkZXBlbmRpbmcgb24gdGhlIG1vZGUuCisgICAgICAgIChD
YWxlbmRhclBpY2tlci5wcm90b3R5cGUuaGFuZGxlVG9kYXkpOgorICAgICAgICAoQ2FsZW5kYXJQ
aWNrZXIucHJvdG90eXBlLl9sYXlvdXRCdXR0b25zKToKKyAgICAgICAgKERheXNUYWJsZS5wcm90
b3R5cGUuX3JlbmRlck1vbnRoKTogU2V0IGVsZW1lbnQuZGF0YXNldC5tb250aFZhbHVlIGZvciBh
bGwgZGF0ZSBub2Rlcy4KKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX21hcmtSYW5nZUFz
U2VsZWN0ZWQpOiBNYXJrcyBhbGwgZGF5IG5vZGVzIGluIHJhbmdlIGFzIHNlbGVjdGVkLgorICAg
ICAgICAoRGF5c1RhYmxlLnByb3RvdHlwZS5zZWxlY3RSYW5nZSk6IFNlbGVjdHMgYSBkYXkuCisg
ICAgICAgIChEYXlzVGFibGUucHJvdG90eXBlLnNlbGVjdFJhbmdlQW5kU2hvd0VudGlyZVJhbmdl
KTogU2FtZSBhcyBzZWxlY3RSYW5nZS4KKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX3Nl
bGVjdFJhbmdlQ29udGFpbmluZ05vZGUpOgorICAgICAgICAoRGF5c1RhYmxlLnByb3RvdHlwZS5f
cmFuZ2VGb3JOb2RlKTogUmV0dXJucyBEYXkgZm9yIG5vZGUuCisgICAgICAgIChEYXlzVGFibGUu
cHJvdG90eXBlLnN0YXJ0RGF0ZSk6IFN0YXJ0IGRhdGV0aW1lIG9mIHZpc2libGUgZGF0ZSByYW5n
ZS4gVGhpcyB2YWx1ZSBpcyBpbmNsdXNpdmUuCisgICAgICAgIChEYXlzVGFibGUucHJvdG90eXBl
LmVuZERhdGUpOiBFbmQgZGF0ZXRpbWUgb2YgdmlzaWJsZSBkYXRlIHJhbmdlLiBUaGlzIHZhbHVl
IGlzIGV4Y2x1c2l2ZS4KKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX2hhbmRsZUtleSk6
CisgICAgICAgIChNb250aFBpY2tlckRheXNUYWJsZSk6CisgICAgICAgIChNb250aFBpY2tlckRh
eXNUYWJsZS5wcm90b3R5cGUuX21hcmtSYW5nZUFzU2VsZWN0ZWQpOiBNYXJrcyBhbGwgZGF5IG5v
ZGVzIGluIHJhbmdlIGFzIHNlbGVjdGVkLgorICAgICAgICAoTW9udGhQaWNrZXJEYXlzVGFibGUu
cHJvdG90eXBlLnNlbGVjdFJhbmdlKTogU2VsZWN0cyBtb250aC4gSWYgbW9udGggaXMgbm90IHZp
c2libGUsIG5hdmlnYXRlcyB0byB0aGF0IG1vbnRoLgorICAgICAgICAoTW9udGhQaWNrZXJEYXlz
VGFibGUucHJvdG90eXBlLnNlbGVjdFJhbmdlQW5kU2hvd0VudGlyZVJhbmdlKTogU2VsZWN0cyBt
b250aC4gTmF2aWdhdGVzIHRvIHRoZSBtb250aC4KKyAgICAgICAgKE1vbnRoUGlja2VyRGF5c1Rh
YmxlLnByb3RvdHlwZS5fcmFuZ2VGb3JOb2RlKTogUmV0dXJucyBNb250aCBmb3Igbm9kZS4KKyAg
ICAgICAgKE1vbnRoUGlja2VyRGF5c1RhYmxlLnByb3RvdHlwZS5faGFuZGxlS2V5KTogQXJyb3cg
a2V5cyBzaW1wbHkgbW92ZSB0aGUgc2VsZWN0aW9uIGZvcndhcmRzIG9yIGJhY2t3YXJkcy4KKwog
MjAxMi0xMS0wNSAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBJbnRyb2R1Y2UgRGF5IGNsYXNzIHRvIGNhbGVuZGFyIHBpY2tlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuY3NzIGIvU291
cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuY3NzCmluZGV4
IDMzMGFjM2RkNmE3MmQzNzFhNGJhMGNkZGYyZWY4NDcwMzdmM2UzNmMuLmNhMWRiYjIyNWVmMDBm
MWY1MWM0ZDIxMWQzOTgwZDFlM2Q5ZmZkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Jl
c291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmNzcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5jc3MKQEAgLTIyNCwzICsyMjQs
OSBAQCBib2R5IHsKIC5wcmVwYXJpbmcgLnVuYXZhaWxhYmxlIHsKICAgICAtd2Via2l0LXRyYW5z
aXRpb246IG5vbmU7CiB9CisKKy5tb250aC1tb2RlIC5kYXkgeworICAgIC13ZWJraXQtdHJhbnNp
dGlvbjogbm9uZTsKKyAgICBib3JkZXItcmFkaXVzOiAwOworICAgIGJvcmRlcjogMXB4IHNvbGlk
IHRyYW5zcGFyZW50OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3Bh
Z2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFn
ZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qcwppbmRleCAzMDg0Y2Q0MjNmOGM3Nzc0YmZkZDVkYzcy
MWMzN2RiYjJjZDI4YTZjLi4wM2M4ZGFkZTJkZjMxZmU2YjZjOTlmOWI1NTA2OTU0NmZmOTEyNDJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRh
clBpY2tlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxl
bmRhclBpY2tlci5qcwpAQCAtNDYsNiArNDYsNyBAQCB2YXIgQ2xhc3NOYW1lcyA9IHsKICAgICBE
YXlMYWJlbENvbnRhaW5lcjogImRheS1sYWJlbC1jb250YWluZXIiLAogICAgIERheXNBcmVhOiAi
ZGF5cy1hcmVhIiwKICAgICBEYXlzQXJlYUNvbnRhaW5lcjogImRheXMtYXJlYS1jb250YWluZXIi
LAorICAgIE1vbnRoTW9kZTogIm1vbnRoLW1vZGUiLAogICAgIE1vbnRoU2VsZWN0b3I6ICJtb250
aC1zZWxlY3RvciIsCiAgICAgTW9udGhTZWxlY3RvckJveDogIm1vbnRoLXNlbGVjdG9yLWJveCIs
CiAgICAgTW9udGhTZWxlY3RvclBvcHVwOiAibW9udGgtc2VsZWN0b3ItcG9wdXAiLApAQCAtMjE0
LDggKzIxNSw4IEBAIGZ1bmN0aW9uIERheSh2YWx1ZU9yRGF5T3JZZWFyLCBtb250aCwgZGF0ZSkg
ewogRGF5LklTT1N0cmluZ1JlZ0V4cCA9IC9eKFxkKyktKFxkKyktKFxkKykkLzsKIAogLy8gU2Vl
IFdlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaC4KLURheS5NaW5pbXVtID0gbmV3IERh
dGUoLTYyMTM1NTk2ODAwMDAwLjApOwotRGF5Lk1heGltdW0gPSBuZXcgRGF0ZSg4NjQwMDAwMDAw
MDAwMDAwLjApOworRGF5Lk1pbmltdW0gPSBuZXcgRGF5KC02MjEzNTU5NjgwMDAwMC4wKTsKK0Rh
eS5NYXhpbXVtID0gbmV3IERheSg4NjQwMDAwMDAwMDAwMDAwLjApOwogCiAvKioKICAqIEBwYXJh
bSB7IXN0cmluZ30gc3RyCkBAIC0yMzAsNiArMjMxLDcgQEAgRGF5LnBhcnNlID0gZnVuY3Rpb24o
c3RyKSB7CiAgICAgdmFyIGRhdGUgPSBwYXJzZUludChtYXRjaFszXSwgMTApOwogICAgIHJldHVy
biBuZXcgRGF5KHllYXIsIG1vbnRoLCBkYXRlKTsKIH07CisKIC8qKgogICogQHBhcmFtIHshRGF0
ZX0gZGF0ZQogICogQHJldHVybiB7IU1vbnRofQpAQCAtMjM4LDEwICsyNDAsMTMgQEAgRGF5LmNy
ZWF0ZUZyb21EYXRlID0gZnVuY3Rpb24oZGF0ZSkgewogICAgIHJldHVybiBuZXcgRGF5KGRhdGUu
Z2V0VVRDRnVsbFllYXIoKSwgZGF0ZS5nZXRVVENNb250aCgpLCBkYXRlLmdldFVUQ0RhdGUoKSk7
CiB9OwogCisvKioKKyAqIEByZXR1cm4geyFNb250aH0KKyAqLwogRGF5LmNyZWF0ZUZyb21Ub2Rh
eSA9IGZ1bmN0aW9uKCkgewogICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpOwogICAgIHJldHVybiBu
ZXcgRGF5KG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSwgbm93LmdldERhdGUoKSk7
Ci19Cit9OwogCiAvKioKICAqIEBwYXJhbSB7IURheX0gb3RoZXIKQEAgLTMyMiw2ICszMjcsNyBA
QCBmdW5jdGlvbiBNb250aCh2YWx1ZU9yTW9udGhPclllYXIsIG1vbnRoKSB7CiBNb250aC5JU09T
dHJpbmdSZWdFeHAgPSAvXihcZCspLShcZCspJC87CiAKIC8vIFNlZSBXZWJDb3JlL3BsYXRmb3Jt
L0RhdGVDb21wb25lbnRzLmguCitNb250aC5NaW5pbXVtID0gbmV3IE1vbnRoKDEsIDApOwogTW9u
dGguTWF4aW11bSA9IG5ldyBNb250aCgyNzU3NjAsIDgpOwogCiAvKioKQEAgLTM0Niw2ICszNTIs
MTQgQEAgTW9udGguY3JlYXRlRnJvbURhdGUgPSBmdW5jdGlvbihkYXRlKSB7CiB9OwogCiAvKioK
KyAqIEByZXR1cm4geyFNb250aH0KKyAqLworTW9udGguY3JlYXRlRnJvbVRvZGF5ID0gZnVuY3Rp
b24oKSB7CisgICAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7CisgICAgcmV0dXJuIG5ldyBNb250aChu
b3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCkpOworfTsKKworLyoqCiAgKiBAcGFyYW0g
eyFNb250aH0gb3RoZXIKICAqIEByZXR1cm4geyFib29sfQogICovCkBAIC01MDAsMzIgKzUxNCw0
MCBAQCBmdW5jdGlvbiBvcGVuQ2FsZW5kYXJQaWNrZXIoKSB7CiAgKi8KIGZ1bmN0aW9uIENhbGVu
ZGFyUGlja2VyKGVsZW1lbnQsIGNvbmZpZykgewogICAgIFBpY2tlci5jYWxsKHRoaXMsIGVsZW1l
bnQsIGNvbmZpZyk7CisgICAgaWYgKHRoaXMuX2NvbmZpZy5tb2RlID09PSAibW9udGgiKSB7Cisg
ICAgICAgIHRoaXMuc2VsZWN0aW9uQ29uc3RydWN0b3IgPSBNb250aDsKKyAgICAgICAgdGhpcy5f
ZGF5c1RhYmxlID0gbmV3IE1vbnRoUGlja2VyRGF5c1RhYmxlKHRoaXMpOworICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5Nb250aE1vZGUpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHRoaXMuc2VsZWN0aW9uQ29uc3RydWN0b3IgPSBEYXk7CisgICAgICAgIHRo
aXMuX2RheXNUYWJsZSA9IG5ldyBEYXlzVGFibGUodGhpcyk7CisgICAgfQogICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgiY2FsZW5kYXItcGlja2VyIik7CiAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJwcmVwYXJpbmciKTsKICAgICB0aGlzLl9oYW5kbGVXaW5kb3dSZXNp
emVCb3VuZCA9IHRoaXMuX2hhbmRsZVdpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpOwogICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0aGlzLl9oYW5kbGVXaW5kb3dSZXNpemVCb3Vu
ZCwgZmFsc2UpOwotICAgIC8vIFdlIGFzc3VtZSB0aGlzLl9jb25maWcubWluIGlzIGEgdmFsaWQg
ZGF0ZS4KLSAgICB0aGlzLl9taW5pbXVtVmFsdWUgPSAodHlwZW9mIHRoaXMuX2NvbmZpZy5taW4g
IT09ICJ1bmRlZmluZWQiKSA/IHBhcnNlRGF0ZVN0cmluZyh0aGlzLl9jb25maWcubWluKS52YWx1
ZU9mKCkgOiBEYXkuTWluaW11bS52YWx1ZU9mKCk7Ci0gICAgLy8gV2UgYXNzdW1lIHRoaXMuX2Nv
bmZpZy5tYXggaXMgYSB2YWxpZCBkYXRlLgotICAgIHRoaXMuX21heGltdW1WYWx1ZSA9ICh0eXBl
b2YgdGhpcy5fY29uZmlnLm1heCAhPT0gInVuZGVmaW5lZCIpID8gcGFyc2VEYXRlU3RyaW5nKHRo
aXMuX2NvbmZpZy5tYXgpLnZhbHVlT2YoKSA6IERheS5NYXhpbXVtLnZhbHVlT2YoKTsKKyAgICAv
LyBXZSBhc3N1bWUgdGhpcy5fY29uZmlnLm1pbi9tYXggYXJlIHZhbGlkIGRhdGVzIG9yIG1vbnRo
cy4KKyAgICB2YXIgbWluaW11bSA9ICh0eXBlb2YgdGhpcy5fY29uZmlnLm1pbiAhPT0gInVuZGVm
aW5lZCIpID8gcGFyc2VEYXRlU3RyaW5nKHRoaXMuX2NvbmZpZy5taW4pIDogdGhpcy5zZWxlY3Rp
b25Db25zdHJ1Y3Rvci5NaW5pbXVtOworICAgIHZhciBtYXhpbXVtID0gKHR5cGVvZiB0aGlzLl9j
b25maWcubWF4ICE9PSAidW5kZWZpbmVkIikgPyBwYXJzZURhdGVTdHJpbmcodGhpcy5fY29uZmln
Lm1heCkgOiB0aGlzLnNlbGVjdGlvbkNvbnN0cnVjdG9yLk1heGltdW07CisgICAgdGhpcy5fbWlu
aW11bVZhbHVlID0gbWluaW11bS52YWx1ZU9mKCk7CisgICAgdGhpcy5fbWF4aW11bVZhbHVlID0g
bWF4aW11bS52YWx1ZU9mKCk7CiAgICAgdGhpcy5zdGVwID0gKHR5cGVvZiB0aGlzLl9jb25maWcu
c3RlcCAhPT0gdW5kZWZpbmVkKSA/IE51bWJlcih0aGlzLl9jb25maWcuc3RlcCkgOiBDYWxlbmRh
clBpY2tlci5EZWZhdWx0U3RlcFNjYWxlRmFjdG9yOwogICAgIHRoaXMuc3RlcEJhc2UgPSAodHlw
ZW9mIHRoaXMuX2NvbmZpZy5zdGVwQmFzZSAhPT0gInVuZGVmaW5lZCIpID8gTnVtYmVyKHRoaXMu
X2NvbmZpZy5zdGVwQmFzZSkgOiBDYWxlbmRhclBpY2tlci5EZWZhdWx0U3RlcEJhc2U7Ci0gICAg
dGhpcy5fbWluaW11bU1vbnRoID0gTW9udGguY3JlYXRlRnJvbURhdGUobmV3IERhdGUodGhpcy5f
bWluaW11bVZhbHVlKSk7Ci0gICAgdGhpcy5tYXhpbXVtTW9udGggPSBNb250aC5jcmVhdGVGcm9t
RGF0ZShuZXcgRGF0ZSh0aGlzLl9tYXhpbXVtVmFsdWUpKTsKKyAgICB0aGlzLl9taW5pbXVtTW9u
dGggPSBNb250aC5jcmVhdGVGcm9tRGF0ZShtaW5pbXVtLnN0YXJ0RGF0ZSgpKTsKKyAgICB0aGlz
Lm1heGltdW1Nb250aCA9IE1vbnRoLmNyZWF0ZUZyb21EYXRlKG1heGltdW0uc3RhcnREYXRlKCkp
OwogICAgIHRoaXMuX2N1cnJlbnRNb250aCA9IG5ldyBNb250aChOYU4sIE5hTik7CiAgICAgdGhp
cy5feWVhck1vbnRoQ29udHJvbGxlciA9IG5ldyBZZWFyTW9udGhDb250cm9sbGVyKHRoaXMpOwot
ICAgIHRoaXMuX2RheXNUYWJsZSA9IG5ldyBEYXlzVGFibGUodGhpcyk7CiAgICAgdGhpcy5faGFk
S2V5RXZlbnQgPSBmYWxzZTsKICAgICB0aGlzLl9sYXlvdXQoKTsKICAgICB2YXIgaW5pdGlhbFNl
bGVjdGlvbiA9IHBhcnNlRGF0ZVN0cmluZyh0aGlzLl9jb25maWcuY3VycmVudFZhbHVlKTsKICAg
ICBpZiAoIWluaXRpYWxTZWxlY3Rpb24pCi0gICAgICAgIGluaXRpYWxTZWxlY3Rpb24gPSBEYXku
Y3JlYXRlRnJvbVRvZGF5KCk7CisgICAgICAgIGluaXRpYWxTZWxlY3Rpb24gPSB0aGlzLnNlbGVj
dGlvbkNvbnN0cnVjdG9yLmNyZWF0ZUZyb21Ub2RheSgpOwogICAgIGlmIChpbml0aWFsU2VsZWN0
aW9uLnZhbHVlT2YoKSA8IHRoaXMuX21pbmltdW1WYWx1ZSkKLSAgICAgICAgaW5pdGlhbFNlbGVj
dGlvbiA9IG5ldyBEYXkodGhpcy5fbWluaW11bVZhbHVlKTsKKyAgICAgICAgaW5pdGlhbFNlbGVj
dGlvbiA9IG5ldyB0aGlzLnNlbGVjdGlvbkNvbnN0cnVjdG9yKHRoaXMuX21pbmltdW1WYWx1ZSk7
CiAgICAgZWxzZSBpZiAoaW5pdGlhbFNlbGVjdGlvbi52YWx1ZU9mKCkgPiB0aGlzLl9tYXhpbXVt
VmFsdWUpCi0gICAgICAgIGluaXRpYWxTZWxlY3Rpb24gPSBuZXcgRGF5KHRoaXMuX21heGltdW1W
YWx1ZSk7CisgICAgICAgIGluaXRpYWxTZWxlY3Rpb24gPSBuZXcgdGhpcy5zZWxlY3Rpb25Db25z
dHJ1Y3Rvcih0aGlzLl9tYXhpbXVtVmFsdWUpOwogICAgIHRoaXMuc2hvd01vbnRoKE1vbnRoLmNy
ZWF0ZUZyb21EYXRlKGluaXRpYWxTZWxlY3Rpb24uc3RhcnREYXRlKCkpLCBmYWxzZSk7Ci0gICAg
dGhpcy5fZGF5c1RhYmxlLnNlbGVjdFJhbmdlKGluaXRpYWxTZWxlY3Rpb24pOworICAgIHRoaXMu
X2RheXNUYWJsZS5zZWxlY3RSYW5nZUFuZFNob3dFbnRpcmVSYW5nZShpbml0aWFsU2VsZWN0aW9u
KTsKICAgICB0aGlzLmZpeFdpbmRvd1NpemUoKTsKICAgICB0aGlzLl9oYW5kbGVCb2R5S2V5RG93
bkJvdW5kID0gdGhpcy5faGFuZGxlQm9keUtleURvd24uYmluZCh0aGlzKTsKICAgICBkb2N1bWVu
dC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVCb2R5S2V5RG93
bkJvdW5kLCBmYWxzZSk7CkBAIC01NTUsOCArNTc3LDggQEAgQ2FsZW5kYXJQaWNrZXIucHJvdG90
eXBlLl9sYXlvdXQgPSBmdW5jdGlvbigpIHsKIH07CiAKIENhbGVuZGFyUGlja2VyLnByb3RvdHlw
ZS5oYW5kbGVUb2RheSA9IGZ1bmN0aW9uKCkgewotICAgIHZhciB0b2RheSA9IERheS5jcmVhdGVG
cm9tVG9kYXkoKTsKLSAgICB0aGlzLl9kYXlzVGFibGUuc2VsZWN0UmFuZ2UodG9kYXkpOworICAg
IHZhciB0b2RheSA9IHRoaXMuc2VsZWN0aW9uQ29uc3RydWN0b3IuY3JlYXRlRnJvbVRvZGF5KCk7
CisgICAgdGhpcy5fZGF5c1RhYmxlLnNlbGVjdFJhbmdlQW5kU2hvd0VudGlyZVJhbmdlKHRvZGF5
KTsKICAgICB0aGlzLnN1Ym1pdFZhbHVlKHRvZGF5LnRvU3RyaW5nKCkpOwogfTsKIApAQCAtNjAx
LDYgKzYyMyw3IEBAIENhbGVuZGFyUGlja2VyLnByb3RvdHlwZS5maXhXaW5kb3dTaXplID0gZnVu
Y3Rpb24oKSB7CiBDYWxlbmRhclBpY2tlci5wcm90b3R5cGUuX2xheW91dEJ1dHRvbnMgPSBmdW5j
dGlvbigpIHsKICAgICB2YXIgY29udGFpbmVyID0gY3JlYXRlRWxlbWVudCgiZGl2IiwgQ2xhc3NO
YW1lcy5Ub2RheUNsZWFyQXJlYSk7CiAgICAgdGhpcy50b2RheSA9IGNyZWF0ZUVsZW1lbnQoImlu
cHV0IiwgQ2xhc3NOYW1lcy5Ub2RheUJ1dHRvbik7CisgICAgdGhpcy50b2RheS5kaXNhYmxlZCA9
ICF0aGlzLmlzVmFsaWREYXRlKHRoaXMuc2VsZWN0aW9uQ29uc3RydWN0b3IuY3JlYXRlRnJvbVRv
ZGF5KCkpOwogICAgIHRoaXMudG9kYXkudHlwZSA9ICJidXR0b24iOwogICAgIHRoaXMudG9kYXku
dmFsdWUgPSB0aGlzLl9jb25maWcudG9kYXlMYWJlbDsKICAgICB0aGlzLnRvZGF5LmFkZEV2ZW50
TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5oYW5kbGVUb2RheS5iaW5kKHRoaXMpLCBmYWxzZSk7CkBA
IC0xMDgwLDEwICsxMTAzLDExIEBAIERheXNUYWJsZS5wcm90b3R5cGUuX3JlbmRlck1vbnRoID0g
ZnVuY3Rpb24obW9udGgpIHsKICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gbG9jYWxp
emVOdW1iZXIoZGF5SXRlcmF0b3IuZ2V0VVRDRGF0ZSgpKTsKICAgICAgICAgICAgIGVsZW1lbnQu
Y2xhc3NOYW1lID0gQ2xhc3NOYW1lcy5EYXk7CiAgICAgICAgICAgICBlbGVtZW50LmRhdGFzZXQu
c3VibWl0VmFsdWUgPSBEYXkuY3JlYXRlRnJvbURhdGUoZGF5SXRlcmF0b3IpLnRvU3RyaW5nKCk7
CisgICAgICAgICAgICBlbGVtZW50LmRhdGFzZXQubW9udGhWYWx1ZSA9IGl0ZXJNb250aC50b1N0
cmluZygpOwogICAgICAgICAgICAgaWYgKGlzTmFOKHRpbWUpKSB7CiAgICAgICAgICAgICAgICAg
ZWxlbWVudC5pbm5lclRleHQgPSAiLSI7CiAgICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xp
c3QuYWRkKENsYXNzTmFtZXMuVW5hdmFpbGFibGUpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgh
dGhpcy5waWNrZXIuaXNWYWxpZERhdGUoRGF5LmNyZWF0ZUZyb21EYXRlKGRheUl0ZXJhdG9yKSkp
CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLnBpY2tlci5pc1ZhbGlkRGF0ZSh0aGlzLl9y
YW5nZUZvck5vZGUoZWxlbWVudCkpKQogICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0
LmFkZChDbGFzc05hbWVzLlVuYXZhaWxhYmxlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFpdGVy
TW9udGguZXF1YWxzKG1vbnRoKSkgewogICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0
LmFkZChDbGFzc05hbWVzLkF2YWlsYWJsZSk7CkBAIC0xMDkzLDggKzExMTcsNiBAQCBEYXlzVGFi
bGUucHJvdG90eXBlLl9yZW5kZXJNb250aCA9IGZ1bmN0aW9uKG1vbnRoKSB7CiAgICAgICAgICAg
ICBkYXlJdGVyYXRvci5zZXRVVENEYXRlKGRheUl0ZXJhdG9yLmdldFVUQ0RhdGUoKSArIDEpOwog
ICAgICAgICB9CiAgICAgfQotCi0gICAgdGhpcy5waWNrZXIudG9kYXkuZGlzYWJsZWQgPSAhdGhp
cy5waWNrZXIuaXNWYWxpZERhdGUoRGF5LmNyZWF0ZUZyb21Ub2RheSgpLnZhbHVlT2YoKSk7CiB9
OwogCiAvKioKQEAgLTExMzAsMTEgKzExNTIsOSBAQCBEYXlzVGFibGUucHJvdG90eXBlLl9tb3Zl
SW5EYXlzID0gZnVuY3Rpb24oKSB7CiB9OwogCiAvKioKLSAqIEBwYXJhbSB7IURhdGV9IGRhdGUK
KyAqIEBwYXJhbSB7IURheX0gZGF5CiAgKi8KLURheXNUYWJsZS5wcm90b3R5cGUuc2VsZWN0UmFu
Z2UgPSBmdW5jdGlvbihkYXkpIHsKLSAgICB0aGlzLl9kZXNlbGVjdCgpOwotICAgIHRoaXMucGlj
a2VyLnNob3dNb250aChNb250aC5jcmVhdGVGcm9tRGF0ZShkYXkuc3RhcnREYXRlKCkpLCB0cnVl
KTsKK0RheXNUYWJsZS5wcm90b3R5cGUuX21hcmtSYW5nZUFzU2VsZWN0ZWQgPSBmdW5jdGlvbihk
YXkpIHsKICAgICB2YXIgZGF0ZVN0cmluZyA9IGRheS50b1N0cmluZygpOwogICAgIGZvciAodmFy
IHcgPSAwOyB3IDwgRGF5c1RhYmxlLl9XZWVrczsgdysrKSB7CiAgICAgICAgIGZvciAodmFyIGQg
PSAwOyBkIDwgNzsgZCsrKSB7CkBAIC0xMTQ3LDE0ICsxMTY3LDU0IEBAIERheXNUYWJsZS5wcm90
b3R5cGUuc2VsZWN0UmFuZ2UgPSBmdW5jdGlvbihkYXkpIHsKIH07CiAKIC8qKgorICogQHBhcmFt
IHshRGF5fSBkYXkKKyAqLworRGF5c1RhYmxlLnByb3RvdHlwZS5zZWxlY3RSYW5nZSA9IGZ1bmN0
aW9uKGRheSkgeworICAgIHRoaXMuX2Rlc2VsZWN0KCk7CisgICAgaWYgKHRoaXMuc3RhcnREYXRl
KCkgPiBkYXkuc3RhcnREYXRlKCkgfHwgdGhpcy5lbmREYXRlKCkgPCBkYXkuZW5kRGF0ZSgpKQor
ICAgICAgICB0aGlzLnBpY2tlci5zaG93TW9udGgoTW9udGguY3JlYXRlRnJvbURhdGUoZGF5LnN0
YXJ0RGF0ZSgpKSwgZmFsc2UpOworICAgIHRoaXMuX21hcmtSYW5nZUFzU2VsZWN0ZWQoZGF5KTsK
K307CisKKy8qKgorICogQHBhcmFtIHshRGF5fSBkYXkKKyAqLworRGF5c1RhYmxlLnByb3RvdHlw
ZS5zZWxlY3RSYW5nZUFuZFNob3dFbnRpcmVSYW5nZSA9IGZ1bmN0aW9uKGRheSkgeworICAgIHRo
aXMuc2VsZWN0UmFuZ2UoZGF5KTsKK307CisKKy8qKgogICogQHBhcmFtIHshRWxlbWVudH0gZGF5
Tm9kZQogICovCiBEYXlzVGFibGUucHJvdG90eXBlLl9zZWxlY3RSYW5nZUNvbnRhaW5pbmdOb2Rl
ID0gZnVuY3Rpb24oZGF5Tm9kZSkgewotICAgIHRoaXMuX2Rlc2VsZWN0KCk7Ci0gICAgaWYgKCFk
YXlOb2RlIHx8ICFkYXlOb2RlLmNsYXNzTGlzdC5jb250YWlucyhDbGFzc05hbWVzLkRheSkgfHwg
IWRheU5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKENsYXNzTmFtZXMuQXZhaWxhYmxlKSkKKyAgICB2
YXIgcmFuZ2UgPSB0aGlzLl9yYW5nZUZvck5vZGUoZGF5Tm9kZSk7CisgICAgaWYgKCFyYW5nZSkK
ICAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBTZWxlY3QgZGF0ZSwgd2VlayBvciBtb250
aCBkZXBlbmRpbmcgb24gdGhlIGNvbmZpZy4KLSAgICBkYXlOb2RlLmNsYXNzTGlzdC5hZGQoQ2xh
c3NOYW1lcy5TZWxlY3RlZCk7CisgICAgdGhpcy5zZWxlY3RSYW5nZShyYW5nZSk7Cit9OworCisv
KioKKyAqIEBwYXJhbSB7IUVsZW1lbnR9IGRheU5vZGUKKyAqIEByZXR1cm4gez9EYXl9CisgKi8K
K0RheXNUYWJsZS5wcm90b3R5cGUuX3JhbmdlRm9yTm9kZSA9IGZ1bmN0aW9uKGRheU5vZGUpIHsK
KyAgICBpZiAoIWRheU5vZGUpCisgICAgICAgIHJldHVybiBudWxsOworICAgIHJldHVybiBEYXku
cGFyc2UoZGF5Tm9kZS5kYXRhc2V0LnN1Ym1pdFZhbHVlKTsKK307CisKKy8qKgorICogQHJldHVy
biB7IURhdGV9CisgKi8KK0RheXNUYWJsZS5wcm90b3R5cGUuc3RhcnREYXRlID0gZnVuY3Rpb24o
KSB7CisgICAgcmV0dXJuIERheS5wYXJzZSh0aGlzLl9kYXlzWzBdWzBdLmRhdGFzZXQuc3VibWl0
VmFsdWUpLnN0YXJ0RGF0ZSgpOworfTsKKworLyoqCisgKiBAcmV0dXJuIHshRGF0ZX0KKyAqLwor
RGF5c1RhYmxlLnByb3RvdHlwZS5lbmREYXRlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIERh
eS5wYXJzZSh0aGlzLl9kYXlzW0RheXNUYWJsZS5fV2Vla3MgLSAxXVs3IC0gMV0uZGF0YXNldC5z
dWJtaXRWYWx1ZSkuZW5kRGF0ZSgpOwogfTsKIAogLyoqCkBAIC0xMzA2LDcgKzEzNjYsNyBAQCBE
YXlzVGFibGUucHJvdG90eXBlLl9oYW5kbGVLZXkgPSBmdW5jdGlvbihldmVudCkgewogICAgICAg
ICB9CiAKICAgICB9IGVsc2UgaWYgKGtleSA9PSAiVSswMDU0IikgeyAvLyAndCcKLSAgICAgICAg
dGhpcy5zZWxlY3RSYW5nZShEYXkuY3JlYXRlRnJvbVRvZGF5KCkpOworICAgICAgICB0aGlzLnNl
bGVjdFJhbmdlQW5kU2hvd0VudGlyZVJhbmdlKERheS5jcmVhdGVGcm9tVG9kYXkoKSk7CiAgICAg
ICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVs
dCgpOwogICAgIH0KQEAgLTEzMjQsNiArMTM4NCwxMDIgQEAgRGF5c1RhYmxlLnByb3RvdHlwZS51
cGRhdGVTZWxlY3Rpb24gPSBmdW5jdGlvbihldmVudCwgeCwgeSkgewogfTsKIAogLyoqCisgKiBA
Y29uc3RydWN0b3IKKyAqIEBwYXJhbXshQ2FsZW5kYXJQaWNrZXJ9IHBpY2tlcgorICovCitmdW5j
dGlvbiBNb250aFBpY2tlckRheXNUYWJsZShwaWNrZXIpIHsKKyAgICBEYXlzVGFibGUuY2FsbCh0
aGlzLCBwaWNrZXIpOworfQorTW9udGhQaWNrZXJEYXlzVGFibGUucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShEYXlzVGFibGUucHJvdG90eXBlKTsKKworLyoqCisgKiBAcGFyYW0geyFNb250aH0g
bW9udGgKKyAqLworTW9udGhQaWNrZXJEYXlzVGFibGUucHJvdG90eXBlLl9tYXJrUmFuZ2VBc1Nl
bGVjdGVkID0gZnVuY3Rpb24obW9udGgpIHsKKyAgICB2YXIgbW9udGhTdHJpbmcgPSBtb250aC50
b1N0cmluZygpOworICAgIGZvciAodmFyIHcgPSAwOyB3IDwgRGF5c1RhYmxlLl9XZWVrczsgdysr
KSB7CisgICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgNzsgZCsrKSB7CisgICAgICAgICAgICBp
ZiAodGhpcy5fZGF5c1t3XVtkXS5kYXRhc2V0Lm1vbnRoVmFsdWUgPT0gbW9udGhTdHJpbmcpIHsK
KyAgICAgICAgICAgICAgICB0aGlzLl9kYXlzW3ddW2RdLmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1l
cy5TZWxlY3RlZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9OworCisvKioK
KyAqIEBwYXJhbSB7IU1vbnRofSBtb250aAorICovCitNb250aFBpY2tlckRheXNUYWJsZS5wcm90
b3R5cGUuc2VsZWN0UmFuZ2UgPSBmdW5jdGlvbihtb250aCkgeworICAgIHRoaXMuX2Rlc2VsZWN0
KCk7CisgICAgaWYgKHRoaXMuc3RhcnREYXRlKCkgPj0gbW9udGguZW5kRGF0ZSgpIHx8IHRoaXMu
ZW5kRGF0ZSgpIDw9IG1vbnRoLnN0YXJ0RGF0ZSgpKQorICAgICAgICB0aGlzLnBpY2tlci5zaG93
TW9udGgobW9udGgsIHRydWUpOworICAgIHRoaXMuX21hcmtSYW5nZUFzU2VsZWN0ZWQobW9udGgp
OworfTsKKworLyoqCisgKiBAcGFyYW0geyFNb250aH0gbW9udGgKKyAqLworTW9udGhQaWNrZXJE
YXlzVGFibGUucHJvdG90eXBlLnNlbGVjdFJhbmdlQW5kU2hvd0VudGlyZVJhbmdlID0gZnVuY3Rp
b24obW9udGgsIHNob3dFbnRpcmVSYW5nZSkgeworICAgIHRoaXMuX2Rlc2VsZWN0KCk7CisgICAg
dGhpcy5waWNrZXIuc2hvd01vbnRoKG1vbnRoLCB0cnVlKTsKKyAgICB0aGlzLl9tYXJrUmFuZ2VB
c1NlbGVjdGVkKG1vbnRoKTsKK307CisKKy8qKgorICogQHBhcmFtIHshRWxlbWVudH0gZGF5Tm9k
ZQorICogQHJldHVybiB7P01vbnRofQorICovCitNb250aFBpY2tlckRheXNUYWJsZS5wcm90b3R5
cGUuX3JhbmdlRm9yTm9kZSA9IGZ1bmN0aW9uKGRheU5vZGUpIHsKKyAgICBpZiAoIWRheU5vZGUp
CisgICAgICAgIHJldHVybiBudWxsOworICAgIHJldHVybiBNb250aC5wYXJzZShkYXlOb2RlLmRh
dGFzZXQubW9udGhWYWx1ZSk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50Cisg
Ki8KK01vbnRoUGlja2VyRGF5c1RhYmxlLnByb3RvdHlwZS5faGFuZGxlS2V5ID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICB0aGlzLnBpY2tlci5tYXliZVVwZGF0ZUZvY3VzU3R5bGUoKTsKKyAgICB2
YXIga2V5ID0gZXZlbnQua2V5SWRlbnRpZmllcjsKKyAgICB2YXIgZXZlbnRIYW5kbGVkID0gZmFs
c2U7CisgICAgdmFyIGN1cnJlbnRNb250aCA9IHRoaXMucGlja2VyLmN1cnJlbnRNb250aCgpOwor
ICAgIHZhciBmaXJzdE5vZGVJblNlbGVjdGVkUmFuZ2UgPSB0aGlzLl9maXJzdE5vZGVJblNlbGVj
dGVkUmFuZ2UoKTsKKyAgICBpZiAoIWZpcnN0Tm9kZUluU2VsZWN0ZWRSYW5nZQorICAgICAgICAm
JiAoa2V5ID09ICJSaWdodCIgfHwga2V5ID09ICJMZWZ0IiB8fCBrZXkgPT0gIlVwIiB8fCBrZXkg
PT0gIkRvd24iIHx8IGtleSA9PSAiUGFnZVVwIiB8fCBrZXkgPT0gIlBhZ2VEb3duIikpIHsKKyAg
ICAgICAgdGhpcy5zZWxlY3RSYW5nZShjdXJyZW50TW9udGgpOworICAgICAgICBldmVudC5zdG9w
UHJvcGFnYXRpb24oKTsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICB2YXIgc2VsZWN0ZWRNb250aCA9IHRoaXMuX3JhbmdlRm9yTm9k
ZShmaXJzdE5vZGVJblNlbGVjdGVkUmFuZ2UpOworICAgIGlmIChrZXkgPT0gKGdsb2JhbC5wYXJh
bXMuaXNDYWxlbmRhclJUTCA/ICJSaWdodCIgOiAiTGVmdCIpIHx8IGtleSA9PSAiVXAiIHx8IGtl
eSA9PSAiUGFnZVVwIikgeworICAgICAgICBpZiAoc2VsZWN0ZWRNb250aC52YWx1ZU9mKCkgPiBj
dXJyZW50TW9udGgudmFsdWVPZigpKQorICAgICAgICAgICAgdGhpcy5zZWxlY3RSYW5nZUFuZFNo
b3dFbnRpcmVSYW5nZShjdXJyZW50TW9udGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0
aGlzLnNlbGVjdFJhbmdlQW5kU2hvd0VudGlyZVJhbmdlKGN1cnJlbnRNb250aC5wcmV2aW91cygp
KTsKKyAgICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGtleSA9PSAo
Z2xvYmFsLnBhcmFtcy5pc0NhbGVuZGFyUlRMID8gIkxlZnQiIDogIlJpZ2h0IikgfHwga2V5ID09
ICJEb3duIiB8fCBrZXkgPT0gIlBhZ2VEb3duIikgeworICAgICAgICBpZiAoc2VsZWN0ZWRNb250
aC52YWx1ZU9mKCkgPCBjdXJyZW50TW9udGgudmFsdWVPZigpKQorICAgICAgICAgICAgdGhpcy5z
ZWxlY3RSYW5nZUFuZFNob3dFbnRpcmVSYW5nZShjdXJyZW50TW9udGgpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICB0aGlzLnNlbGVjdFJhbmdlQW5kU2hvd0VudGlyZVJhbmdlKGN1cnJlbnRN
b250aC5uZXh0KCkpOworICAgICAgICBldmVudEhhbmRsZWQgPSB0cnVlOworICAgIH0gZWxzZSBp
ZiAodGhpcy5faGFzU2VsZWN0aW9uKCkgJiYga2V5ID09ICJFbnRlciIpIHsKKyAgICAgICAgaWYg
KGN1cnJlbnRTZWxlY3Rpb24pIHsKKyAgICAgICAgICAgIHRoaXMucGlja2VyLnN1Ym1pdFZhbHVl
KGN1cnJlbnRTZWxlY3Rpb24udG9TdHJpbmcoKSk7CisgICAgICAgICAgICBldmVudEhhbmRsZWQg
PSB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrZXkgPT0gIlUrMDA1NCIpIHsgLy8g
J3QnCisgICAgICAgIHRoaXMuc2VsZWN0UmFuZ2VBbmRTaG93RW50aXJlUmFuZ2UoTW9udGguY3Jl
YXRlRnJvbVRvZGF5KCkpOworICAgICAgICBldmVudEhhbmRsZWQgPSB0cnVlOworICAgIH0KKyAg
ICBpZiAoZXZlbnRIYW5kbGVkKSB7CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwor
ICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgIH0KK307CisKKy8qKgogICogQHBh
cmFtIHshRXZlbnR9IGV2ZW50CiAgKi8KIENhbGVuZGFyUGlja2VyLnByb3RvdHlwZS5faGFuZGxl
Qm9keUtleURvd24gPSBmdW5jdGlvbihldmVudCkgewpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIv
Q2hhbmdlTG9nCmluZGV4IDMyMTgzZTM0ODQyYzQ0NmQxOWZjYmI2YTM1NmUwY2FiNGNiMGQzNzEu
LjcwNzU4MWMzYTJhNjJmMGEzYzQyODlhMTlmZDMwNDJjZTdhZjUzNjIgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0xMS0wNiAgS2Vp
c2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgbW9u
dGggcGlja2luZyB0byBjYWxlbmRhciBwaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTMzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTWFudWFsVGVzdHMvZm9ybXMvY2FsZW5kYXItcGlja2Vy
Lmh0bWw6IEFkZGVkIHRlc3QgZm9yIG1vbnRoIHBpY2tlci4KKwogMjAxMi0xMS0wNSAgU2ltb24g
SGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBUcml2
aWFsIHVucmV2aWV3ZWQ6IEFkZCBtaXNzaW5nIG1vZHVsZSBkZXBlbmRlbmNpZXMgZm9yIGJ1aWxk
cyBpbiBRdCBDSSBzeXN0ZW0uCmRpZmYgLS1naXQgYS9NYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRh
ci1waWNrZXIuaHRtbCBiL01hbnVhbFRlc3RzL2Zvcm1zL2NhbGVuZGFyLXBpY2tlci5odG1sCmlu
ZGV4IGJlMjQzY2EzMGJlNGQ3M2JjODMyYTA5MDJkMzI1YzJiOTExMDVmMWEuLjU1MjA3ZTRkM2Ri
NzUxOGUxYjhmNTZmYmUwODAyMWI1NGYyNjhiZGMgMTAwNjQ0Ci0tLSBhL01hbnVhbFRlc3RzL2Zv
cm1zL2NhbGVuZGFyLXBpY2tlci5odG1sCisrKyBiL01hbnVhbFRlc3RzL2Zvcm1zL2NhbGVuZGFy
LXBpY2tlci5odG1sCkBAIC0yNyw2ICsyNyw3IEBAIGlmcmFtZSB7CiAgPG9wdGlvbj53aXRoIGxv
bmcgZGF0YWxpc3Q8L29wdGlvbj4KICA8b3B0aW9uPkFyYWJpYyB3aXRoIGRhdGFsaXN0PC9vcHRp
b24+CiAgPG9wdGlvbj5BcmFiaWMgd2l0aCBsb25nIGRhdGFsaXN0PC9vcHRpb24+CisgPG9wdGlv
bj5Nb250aDwvb3B0aW9uPgogPC9zZWxlY3Q+CiAKIDxkaXY+PGlucHV0IHR5cGU9InRleHQiIGlk
PSJkYXRlIj48L2Rpdj4KQEAgLTIzOCw2ICsyMzksMjEgQEAgdmFyIGFyYWJpY0xvbmdEYXRhbGlz
dEFyZ3VtZW50cyA9IHsKICAgICBzdWdnZXN0aW9uSGlnaGxpZ2h0Q29sb3I6ICIjMDAwMGZmIiwK
ICAgICBzdWdnZXN0aW9uSGlnaGxpZ2h0VGV4dENvbG9yOiAiI2ZmZmZmZiIKIH07Cit2YXIgbW9u
dGhBcmd1bWVudHMgPSB7CisgICAgbG9jYWxlOiAnZW4tVVMnLAorICAgIG1vbnRoTGFiZWxzIDog
WydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywK
KyAgICAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXIn
LCAnRGVjZW1iZXInXSwKKyAgICBkYXlMYWJlbHMgOiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dl
ZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddLAorICAgIHRvZGF5TGFiZWwgOiAnVGhpcyBNb250aCcs
CisgICAgY2xlYXJMYWJlbCA6ICdDbGVhcicsCisgICAgY2FuY2VsTGFiZWwgOiAnQ2FuY2VsJywK
KyAgICB3ZWVrU3RhcnREYXkgOiAwLAorICAgIHN0ZXAgOiAiMSIsCisgICAgc3RlcEJhc2U6ICIw
IiwKKyAgICBjdXJyZW50VmFsdWUgOiAnMjAwMC0wMScsCisgICAgbWF4IDogJzIwOTktMDMnLAor
ICAgIG1vZGU6ICJtb250aCIKK307CiAKIGZ1bmN0aW9uIG9wZW5DYWxlbmRhcihhcmdzKSB7CiAg
ICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzBd
OwpAQCAtMzEwLDYgKzMyNiw5IEBAIGZ1bmN0aW9uIHNlbGVjdGVkKHNlbGVjdCkgewogICAgIGNh
c2UgNjoKICAgICAgICAgb3BlbkNhbGVuZGFyKGFyYWJpY0xvbmdEYXRhbGlzdEFyZ3VtZW50cyk7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgNzoKKyAgICAgICAgb3BlbkNhbGVuZGFyKG1vbnRo
QXJndW1lbnRzKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172714</attachid>
            <date>2012-11-06 21:32:51 -0800</date>
            <delta_ts>2012-11-06 22:30:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101333-20121107143102.patch</filename>
            <type>text/plain</type>
            <size>18200</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDcxMGRlODQ5N2Q5YTYz
MTNjYTRlYWM0YWIzNmFmNDk0MzhkNTQ4ZS4uOTA2MGFjNWNlYmFmZGQ1MTQ3MTM5YTQ3NTE0Yjli
NjUwNzEzN2E4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTExLTA2ICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBtb250
aCBwaWNraW5nIHRvIGNhbGVuZGFyIHBpY2tlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBU
YW11cmEuCisKKyAgICAgICAgVGhpcyBhZGRzIG1vbnRoIHBpY2tlciBtb2RlIHRvIENhbGVuZGFy
UGlja2VyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGVzdHMgd2lsbCBiZSBhZGRlZCBsYXRl
ciB3aGVuIHRoaXMgZmVhdHVyZSBpcyBlbmFibGVkIGluIERSVC4KKworICAgICAgICAqIFJlc291
cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmNzczoKKyAgICAgICAgKC5tb250aC1tb2Rl
IC5kYXkpOiBSZW1vdmUgcm91bmRlZCBjb3JuZXJzIHdoZW4gaW4gbW9udGggbW9kZS4KKyAgICAg
ICAgKiBSZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qczoKKyAgICAgICAgKE1v
bnRoLmNyZWF0ZUZyb21Ub2RheSk6IENyZWF0ZXMgbW9udGggY29udGFpbmluZyB0b2RheS4KKyAg
ICAgICAgKENhbGVuZGFyUGlja2VyKTogU2V0IHRoaXMuc2VsZWN0aW9uQ29uc3RydWN0b3IgdG8g
RGF5IG9yIE1vbnRoIGRlcGVuZGluZyBvbiB0aGUgbW9kZS4gQ3JlYXRlIERheVRhYmxlcyBvciBN
b250aFBpY2tlckRheXNUYWJsZSBkZXBlbmRpbmcgb24gdGhlIG1vZGUuCisgICAgICAgIChDYWxl
bmRhclBpY2tlci5wcm90b3R5cGUuaGFuZGxlVG9kYXkpOgorICAgICAgICAoQ2FsZW5kYXJQaWNr
ZXIucHJvdG90eXBlLl9sYXlvdXRCdXR0b25zKToKKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5
cGUuX3JlbmRlck1vbnRoKTogU2V0IGVsZW1lbnQuZGF0YXNldC5tb250aFZhbHVlIGZvciBhbGwg
ZGF0ZSBub2Rlcy4KKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX21hcmtSYW5nZUFzU2Vs
ZWN0ZWQpOiBNYXJrcyBhbGwgZGF5IG5vZGVzIGluIHJhbmdlIGFzIHNlbGVjdGVkLgorICAgICAg
ICAoRGF5c1RhYmxlLnByb3RvdHlwZS5zZWxlY3RSYW5nZSk6IFNlbGVjdHMgYSBkYXkuCisgICAg
ICAgIChEYXlzVGFibGUucHJvdG90eXBlLnNlbGVjdFJhbmdlQW5kU2hvd0VudGlyZVJhbmdlKTog
U2FtZSBhcyBzZWxlY3RSYW5nZS4KKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX3NlbGVj
dFJhbmdlQ29udGFpbmluZ05vZGUpOgorICAgICAgICAoRGF5c1RhYmxlLnByb3RvdHlwZS5fcmFu
Z2VGb3JOb2RlKTogUmV0dXJucyBEYXkgZm9yIG5vZGUuCisgICAgICAgIChEYXlzVGFibGUucHJv
dG90eXBlLnN0YXJ0RGF0ZSk6IFN0YXJ0IGRhdGV0aW1lIG9mIHZpc2libGUgZGF0ZSByYW5nZS4g
VGhpcyB2YWx1ZSBpcyBpbmNsdXNpdmUuCisgICAgICAgIChEYXlzVGFibGUucHJvdG90eXBlLmVu
ZERhdGUpOiBFbmQgZGF0ZXRpbWUgb2YgdmlzaWJsZSBkYXRlIHJhbmdlLiBUaGlzIHZhbHVlIGlz
IGV4Y2x1c2l2ZS4KKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX2hhbmRsZUtleSk6Cisg
ICAgICAgIChNb250aFBpY2tlckRheXNUYWJsZSk6CisgICAgICAgIChNb250aFBpY2tlckRheXNU
YWJsZS5wcm90b3R5cGUuX21hcmtSYW5nZUFzU2VsZWN0ZWQpOiBNYXJrcyBhbGwgZGF5IG5vZGVz
IGluIHJhbmdlIGFzIHNlbGVjdGVkLgorICAgICAgICAoTW9udGhQaWNrZXJEYXlzVGFibGUucHJv
dG90eXBlLnNlbGVjdFJhbmdlKTogU2VsZWN0cyBtb250aC4gSWYgbW9udGggaXMgbm90IHZpc2li
bGUsIG5hdmlnYXRlcyB0byB0aGF0IG1vbnRoLgorICAgICAgICAoTW9udGhQaWNrZXJEYXlzVGFi
bGUucHJvdG90eXBlLnNlbGVjdFJhbmdlQW5kU2hvd0VudGlyZVJhbmdlKTogU2VsZWN0cyBtb250
aC4gTmF2aWdhdGVzIHRvIHRoZSBtb250aC4KKyAgICAgICAgKE1vbnRoUGlja2VyRGF5c1RhYmxl
LnByb3RvdHlwZS5fcmFuZ2VGb3JOb2RlKTogUmV0dXJucyBNb250aCBmb3Igbm9kZS4KKyAgICAg
ICAgKE1vbnRoUGlja2VyRGF5c1RhYmxlLnByb3RvdHlwZS5faGFuZGxlS2V5KTogQXJyb3cga2V5
cyBzaW1wbHkgbW92ZSB0aGUgc2VsZWN0aW9uIGZvcndhcmRzIG9yIGJhY2t3YXJkcy4KKwogMjAx
Mi0xMS0wNSAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBJ
bnRyb2R1Y2UgRGF5IGNsYXNzIHRvIGNhbGVuZGFyIHBpY2tlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuY3NzIGIvU291cmNl
L1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuY3NzCmluZGV4IDMz
MGFjM2RkNmE3MmQzNzFhNGJhMGNkZGYyZWY4NDcwMzdmM2UzNmMuLmNhMWRiYjIyNWVmMDBmMWY1
MWM0ZDIxMWQzOTgwZDFlM2Q5ZmZkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Jlc291
cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9S
ZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5jc3MKQEAgLTIyNCwzICsyMjQsOSBA
QCBib2R5IHsKIC5wcmVwYXJpbmcgLnVuYXZhaWxhYmxlIHsKICAgICAtd2Via2l0LXRyYW5zaXRp
b246IG5vbmU7CiB9CisKKy5tb250aC1tb2RlIC5kYXkgeworICAgIC13ZWJraXQtdHJhbnNpdGlv
bjogbm9uZTsKKyAgICBib3JkZXItcmFkaXVzOiAwOworICAgIGJvcmRlcjogMXB4IHNvbGlkIHRy
YW5zcGFyZW50OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vw
b3B1cHMvY2FsZW5kYXJQaWNrZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBv
cHVwcy9jYWxlbmRhclBpY2tlci5qcwppbmRleCAzMDg0Y2Q0MjNmOGM3Nzc0YmZkZDVkYzcyMWMz
N2RiYjJjZDI4YTZjLi45OGNiN2RlMzk2MzI0OWIyODY0NTMwNDhlMGZmN2RiNmRhYzNkMDNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBp
Y2tlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRh
clBpY2tlci5qcwpAQCAtNDYsNiArNDYsNyBAQCB2YXIgQ2xhc3NOYW1lcyA9IHsKICAgICBEYXlM
YWJlbENvbnRhaW5lcjogImRheS1sYWJlbC1jb250YWluZXIiLAogICAgIERheXNBcmVhOiAiZGF5
cy1hcmVhIiwKICAgICBEYXlzQXJlYUNvbnRhaW5lcjogImRheXMtYXJlYS1jb250YWluZXIiLAor
ICAgIE1vbnRoTW9kZTogIm1vbnRoLW1vZGUiLAogICAgIE1vbnRoU2VsZWN0b3I6ICJtb250aC1z
ZWxlY3RvciIsCiAgICAgTW9udGhTZWxlY3RvckJveDogIm1vbnRoLXNlbGVjdG9yLWJveCIsCiAg
ICAgTW9udGhTZWxlY3RvclBvcHVwOiAibW9udGgtc2VsZWN0b3ItcG9wdXAiLApAQCAtMjE0LDgg
KzIxNSw4IEBAIGZ1bmN0aW9uIERheSh2YWx1ZU9yRGF5T3JZZWFyLCBtb250aCwgZGF0ZSkgewog
RGF5LklTT1N0cmluZ1JlZ0V4cCA9IC9eKFxkKyktKFxkKyktKFxkKykkLzsKIAogLy8gU2VlIFdl
YkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaC4KLURheS5NaW5pbXVtID0gbmV3IERhdGUo
LTYyMTM1NTk2ODAwMDAwLjApOwotRGF5Lk1heGltdW0gPSBuZXcgRGF0ZSg4NjQwMDAwMDAwMDAw
MDAwLjApOworRGF5Lk1pbmltdW0gPSBuZXcgRGF5KC02MjEzNTU5NjgwMDAwMC4wKTsKK0RheS5N
YXhpbXVtID0gbmV3IERheSg4NjQwMDAwMDAwMDAwMDAwLjApOwogCiAvKioKICAqIEBwYXJhbSB7
IXN0cmluZ30gc3RyCkBAIC0yMzAsNiArMjMxLDcgQEAgRGF5LnBhcnNlID0gZnVuY3Rpb24oc3Ry
KSB7CiAgICAgdmFyIGRhdGUgPSBwYXJzZUludChtYXRjaFszXSwgMTApOwogICAgIHJldHVybiBu
ZXcgRGF5KHllYXIsIG1vbnRoLCBkYXRlKTsKIH07CisKIC8qKgogICogQHBhcmFtIHshRGF0ZX0g
ZGF0ZQogICogQHJldHVybiB7IU1vbnRofQpAQCAtMjM4LDEwICsyNDAsMTMgQEAgRGF5LmNyZWF0
ZUZyb21EYXRlID0gZnVuY3Rpb24oZGF0ZSkgewogICAgIHJldHVybiBuZXcgRGF5KGRhdGUuZ2V0
VVRDRnVsbFllYXIoKSwgZGF0ZS5nZXRVVENNb250aCgpLCBkYXRlLmdldFVUQ0RhdGUoKSk7CiB9
OwogCisvKioKKyAqIEByZXR1cm4geyFNb250aH0KKyAqLwogRGF5LmNyZWF0ZUZyb21Ub2RheSA9
IGZ1bmN0aW9uKCkgewogICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpOwogICAgIHJldHVybiBuZXcg
RGF5KG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSwgbm93LmdldERhdGUoKSk7Ci19
Cit9OwogCiAvKioKICAqIEBwYXJhbSB7IURheX0gb3RoZXIKQEAgLTMyMiw2ICszMjcsNyBAQCBm
dW5jdGlvbiBNb250aCh2YWx1ZU9yTW9udGhPclllYXIsIG1vbnRoKSB7CiBNb250aC5JU09TdHJp
bmdSZWdFeHAgPSAvXihcZCspLShcZCspJC87CiAKIC8vIFNlZSBXZWJDb3JlL3BsYXRmb3JtL0Rh
dGVDb21wb25lbnRzLmguCitNb250aC5NaW5pbXVtID0gbmV3IE1vbnRoKDEsIDApOwogTW9udGgu
TWF4aW11bSA9IG5ldyBNb250aCgyNzU3NjAsIDgpOwogCiAvKioKQEAgLTM0Niw2ICszNTIsMTQg
QEAgTW9udGguY3JlYXRlRnJvbURhdGUgPSBmdW5jdGlvbihkYXRlKSB7CiB9OwogCiAvKioKKyAq
IEByZXR1cm4geyFNb250aH0KKyAqLworTW9udGguY3JlYXRlRnJvbVRvZGF5ID0gZnVuY3Rpb24o
KSB7CisgICAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7CisgICAgcmV0dXJuIG5ldyBNb250aChub3cu
Z2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCkpOworfTsKKworLyoqCiAgKiBAcGFyYW0geyFN
b250aH0gb3RoZXIKICAqIEByZXR1cm4geyFib29sfQogICovCkBAIC01MDAsMzIgKzUxNCw0MCBA
QCBmdW5jdGlvbiBvcGVuQ2FsZW5kYXJQaWNrZXIoKSB7CiAgKi8KIGZ1bmN0aW9uIENhbGVuZGFy
UGlja2VyKGVsZW1lbnQsIGNvbmZpZykgewogICAgIFBpY2tlci5jYWxsKHRoaXMsIGVsZW1lbnQs
IGNvbmZpZyk7CisgICAgaWYgKHRoaXMuX2NvbmZpZy5tb2RlID09PSAibW9udGgiKSB7CisgICAg
ICAgIHRoaXMuc2VsZWN0aW9uQ29uc3RydWN0b3IgPSBNb250aDsKKyAgICAgICAgdGhpcy5fZGF5
c1RhYmxlID0gbmV3IE1vbnRoUGlja2VyRGF5c1RhYmxlKHRoaXMpOworICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5Nb250aE1vZGUpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHRoaXMuc2VsZWN0aW9uQ29uc3RydWN0b3IgPSBEYXk7CisgICAgICAgIHRoaXMu
X2RheXNUYWJsZSA9IG5ldyBEYXlzVGFibGUodGhpcyk7CisgICAgfQogICAgIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LmFkZCgiY2FsZW5kYXItcGlja2VyIik7CiAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJwcmVwYXJpbmciKTsKICAgICB0aGlzLl9oYW5kbGVXaW5kb3dSZXNpemVC
b3VuZCA9IHRoaXMuX2hhbmRsZVdpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpOwogICAgIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0aGlzLl9oYW5kbGVXaW5kb3dSZXNpemVCb3VuZCwg
ZmFsc2UpOwotICAgIC8vIFdlIGFzc3VtZSB0aGlzLl9jb25maWcubWluIGlzIGEgdmFsaWQgZGF0
ZS4KLSAgICB0aGlzLl9taW5pbXVtVmFsdWUgPSAodHlwZW9mIHRoaXMuX2NvbmZpZy5taW4gIT09
ICJ1bmRlZmluZWQiKSA/IHBhcnNlRGF0ZVN0cmluZyh0aGlzLl9jb25maWcubWluKS52YWx1ZU9m
KCkgOiBEYXkuTWluaW11bS52YWx1ZU9mKCk7Ci0gICAgLy8gV2UgYXNzdW1lIHRoaXMuX2NvbmZp
Zy5tYXggaXMgYSB2YWxpZCBkYXRlLgotICAgIHRoaXMuX21heGltdW1WYWx1ZSA9ICh0eXBlb2Yg
dGhpcy5fY29uZmlnLm1heCAhPT0gInVuZGVmaW5lZCIpID8gcGFyc2VEYXRlU3RyaW5nKHRoaXMu
X2NvbmZpZy5tYXgpLnZhbHVlT2YoKSA6IERheS5NYXhpbXVtLnZhbHVlT2YoKTsKKyAgICAvLyBX
ZSBhc3N1bWUgdGhpcy5fY29uZmlnLm1pbi9tYXggYXJlIHZhbGlkIGRhdGVzIG9yIG1vbnRocy4K
KyAgICB2YXIgbWluaW11bSA9ICh0eXBlb2YgdGhpcy5fY29uZmlnLm1pbiAhPT0gInVuZGVmaW5l
ZCIpID8gcGFyc2VEYXRlU3RyaW5nKHRoaXMuX2NvbmZpZy5taW4pIDogdGhpcy5zZWxlY3Rpb25D
b25zdHJ1Y3Rvci5NaW5pbXVtOworICAgIHZhciBtYXhpbXVtID0gKHR5cGVvZiB0aGlzLl9jb25m
aWcubWF4ICE9PSAidW5kZWZpbmVkIikgPyBwYXJzZURhdGVTdHJpbmcodGhpcy5fY29uZmlnLm1h
eCkgOiB0aGlzLnNlbGVjdGlvbkNvbnN0cnVjdG9yLk1heGltdW07CisgICAgdGhpcy5fbWluaW11
bVZhbHVlID0gbWluaW11bS52YWx1ZU9mKCk7CisgICAgdGhpcy5fbWF4aW11bVZhbHVlID0gbWF4
aW11bS52YWx1ZU9mKCk7CiAgICAgdGhpcy5zdGVwID0gKHR5cGVvZiB0aGlzLl9jb25maWcuc3Rl
cCAhPT0gdW5kZWZpbmVkKSA/IE51bWJlcih0aGlzLl9jb25maWcuc3RlcCkgOiBDYWxlbmRhclBp
Y2tlci5EZWZhdWx0U3RlcFNjYWxlRmFjdG9yOwogICAgIHRoaXMuc3RlcEJhc2UgPSAodHlwZW9m
IHRoaXMuX2NvbmZpZy5zdGVwQmFzZSAhPT0gInVuZGVmaW5lZCIpID8gTnVtYmVyKHRoaXMuX2Nv
bmZpZy5zdGVwQmFzZSkgOiBDYWxlbmRhclBpY2tlci5EZWZhdWx0U3RlcEJhc2U7Ci0gICAgdGhp
cy5fbWluaW11bU1vbnRoID0gTW9udGguY3JlYXRlRnJvbURhdGUobmV3IERhdGUodGhpcy5fbWlu
aW11bVZhbHVlKSk7Ci0gICAgdGhpcy5tYXhpbXVtTW9udGggPSBNb250aC5jcmVhdGVGcm9tRGF0
ZShuZXcgRGF0ZSh0aGlzLl9tYXhpbXVtVmFsdWUpKTsKKyAgICB0aGlzLl9taW5pbXVtTW9udGgg
PSBNb250aC5jcmVhdGVGcm9tRGF0ZShtaW5pbXVtLnN0YXJ0RGF0ZSgpKTsKKyAgICB0aGlzLm1h
eGltdW1Nb250aCA9IE1vbnRoLmNyZWF0ZUZyb21EYXRlKG1heGltdW0uc3RhcnREYXRlKCkpOwog
ICAgIHRoaXMuX2N1cnJlbnRNb250aCA9IG5ldyBNb250aChOYU4sIE5hTik7CiAgICAgdGhpcy5f
eWVhck1vbnRoQ29udHJvbGxlciA9IG5ldyBZZWFyTW9udGhDb250cm9sbGVyKHRoaXMpOwotICAg
IHRoaXMuX2RheXNUYWJsZSA9IG5ldyBEYXlzVGFibGUodGhpcyk7CiAgICAgdGhpcy5faGFkS2V5
RXZlbnQgPSBmYWxzZTsKICAgICB0aGlzLl9sYXlvdXQoKTsKICAgICB2YXIgaW5pdGlhbFNlbGVj
dGlvbiA9IHBhcnNlRGF0ZVN0cmluZyh0aGlzLl9jb25maWcuY3VycmVudFZhbHVlKTsKICAgICBp
ZiAoIWluaXRpYWxTZWxlY3Rpb24pCi0gICAgICAgIGluaXRpYWxTZWxlY3Rpb24gPSBEYXkuY3Jl
YXRlRnJvbVRvZGF5KCk7CisgICAgICAgIGluaXRpYWxTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlv
bkNvbnN0cnVjdG9yLmNyZWF0ZUZyb21Ub2RheSgpOwogICAgIGlmIChpbml0aWFsU2VsZWN0aW9u
LnZhbHVlT2YoKSA8IHRoaXMuX21pbmltdW1WYWx1ZSkKLSAgICAgICAgaW5pdGlhbFNlbGVjdGlv
biA9IG5ldyBEYXkodGhpcy5fbWluaW11bVZhbHVlKTsKKyAgICAgICAgaW5pdGlhbFNlbGVjdGlv
biA9IG5ldyB0aGlzLnNlbGVjdGlvbkNvbnN0cnVjdG9yKHRoaXMuX21pbmltdW1WYWx1ZSk7CiAg
ICAgZWxzZSBpZiAoaW5pdGlhbFNlbGVjdGlvbi52YWx1ZU9mKCkgPiB0aGlzLl9tYXhpbXVtVmFs
dWUpCi0gICAgICAgIGluaXRpYWxTZWxlY3Rpb24gPSBuZXcgRGF5KHRoaXMuX21heGltdW1WYWx1
ZSk7CisgICAgICAgIGluaXRpYWxTZWxlY3Rpb24gPSBuZXcgdGhpcy5zZWxlY3Rpb25Db25zdHJ1
Y3Rvcih0aGlzLl9tYXhpbXVtVmFsdWUpOwogICAgIHRoaXMuc2hvd01vbnRoKE1vbnRoLmNyZWF0
ZUZyb21EYXRlKGluaXRpYWxTZWxlY3Rpb24uc3RhcnREYXRlKCkpLCBmYWxzZSk7Ci0gICAgdGhp
cy5fZGF5c1RhYmxlLnNlbGVjdFJhbmdlKGluaXRpYWxTZWxlY3Rpb24pOworICAgIHRoaXMuX2Rh
eXNUYWJsZS5zZWxlY3RSYW5nZUFuZFNob3dFbnRpcmVSYW5nZShpbml0aWFsU2VsZWN0aW9uKTsK
ICAgICB0aGlzLmZpeFdpbmRvd1NpemUoKTsKICAgICB0aGlzLl9oYW5kbGVCb2R5S2V5RG93bkJv
dW5kID0gdGhpcy5faGFuZGxlQm9keUtleURvd24uYmluZCh0aGlzKTsKICAgICBkb2N1bWVudC5i
b2R5LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVCb2R5S2V5RG93bkJv
dW5kLCBmYWxzZSk7CkBAIC01NTUsOCArNTc3LDggQEAgQ2FsZW5kYXJQaWNrZXIucHJvdG90eXBl
Ll9sYXlvdXQgPSBmdW5jdGlvbigpIHsKIH07CiAKIENhbGVuZGFyUGlja2VyLnByb3RvdHlwZS5o
YW5kbGVUb2RheSA9IGZ1bmN0aW9uKCkgewotICAgIHZhciB0b2RheSA9IERheS5jcmVhdGVGcm9t
VG9kYXkoKTsKLSAgICB0aGlzLl9kYXlzVGFibGUuc2VsZWN0UmFuZ2UodG9kYXkpOworICAgIHZh
ciB0b2RheSA9IHRoaXMuc2VsZWN0aW9uQ29uc3RydWN0b3IuY3JlYXRlRnJvbVRvZGF5KCk7Cisg
ICAgdGhpcy5fZGF5c1RhYmxlLnNlbGVjdFJhbmdlQW5kU2hvd0VudGlyZVJhbmdlKHRvZGF5KTsK
ICAgICB0aGlzLnN1Ym1pdFZhbHVlKHRvZGF5LnRvU3RyaW5nKCkpOwogfTsKIApAQCAtNjAxLDYg
KzYyMyw3IEBAIENhbGVuZGFyUGlja2VyLnByb3RvdHlwZS5maXhXaW5kb3dTaXplID0gZnVuY3Rp
b24oKSB7CiBDYWxlbmRhclBpY2tlci5wcm90b3R5cGUuX2xheW91dEJ1dHRvbnMgPSBmdW5jdGlv
bigpIHsKICAgICB2YXIgY29udGFpbmVyID0gY3JlYXRlRWxlbWVudCgiZGl2IiwgQ2xhc3NOYW1l
cy5Ub2RheUNsZWFyQXJlYSk7CiAgICAgdGhpcy50b2RheSA9IGNyZWF0ZUVsZW1lbnQoImlucHV0
IiwgQ2xhc3NOYW1lcy5Ub2RheUJ1dHRvbik7CisgICAgdGhpcy50b2RheS5kaXNhYmxlZCA9ICF0
aGlzLmlzVmFsaWREYXRlKHRoaXMuc2VsZWN0aW9uQ29uc3RydWN0b3IuY3JlYXRlRnJvbVRvZGF5
KCkpOwogICAgIHRoaXMudG9kYXkudHlwZSA9ICJidXR0b24iOwogICAgIHRoaXMudG9kYXkudmFs
dWUgPSB0aGlzLl9jb25maWcudG9kYXlMYWJlbDsKICAgICB0aGlzLnRvZGF5LmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgdGhpcy5oYW5kbGVUb2RheS5iaW5kKHRoaXMpLCBmYWxzZSk7CkBAIC0x
MDgwLDEwICsxMTAzLDExIEBAIERheXNUYWJsZS5wcm90b3R5cGUuX3JlbmRlck1vbnRoID0gZnVu
Y3Rpb24obW9udGgpIHsKICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gbG9jYWxpemVO
dW1iZXIoZGF5SXRlcmF0b3IuZ2V0VVRDRGF0ZSgpKTsKICAgICAgICAgICAgIGVsZW1lbnQuY2xh
c3NOYW1lID0gQ2xhc3NOYW1lcy5EYXk7CiAgICAgICAgICAgICBlbGVtZW50LmRhdGFzZXQuc3Vi
bWl0VmFsdWUgPSBEYXkuY3JlYXRlRnJvbURhdGUoZGF5SXRlcmF0b3IpLnRvU3RyaW5nKCk7Cisg
ICAgICAgICAgICBlbGVtZW50LmRhdGFzZXQubW9udGhWYWx1ZSA9IGl0ZXJNb250aC50b1N0cmlu
ZygpOwogICAgICAgICAgICAgaWYgKGlzTmFOKHRpbWUpKSB7CiAgICAgICAgICAgICAgICAgZWxl
bWVudC5pbm5lclRleHQgPSAiLSI7CiAgICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKENsYXNzTmFtZXMuVW5hdmFpbGFibGUpOwotICAgICAgICAgICAgfSBlbHNlIGlmICghdGhp
cy5waWNrZXIuaXNWYWxpZERhdGUoRGF5LmNyZWF0ZUZyb21EYXRlKGRheUl0ZXJhdG9yKSkpCisg
ICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLnBpY2tlci5pc1ZhbGlkRGF0ZSh0aGlzLl9yYW5n
ZUZvck5vZGUoZWxlbWVudCkpKQogICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFk
ZChDbGFzc05hbWVzLlVuYXZhaWxhYmxlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFpdGVyTW9u
dGguZXF1YWxzKG1vbnRoKSkgewogICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFk
ZChDbGFzc05hbWVzLkF2YWlsYWJsZSk7CkBAIC0xMDkzLDggKzExMTcsNiBAQCBEYXlzVGFibGUu
cHJvdG90eXBlLl9yZW5kZXJNb250aCA9IGZ1bmN0aW9uKG1vbnRoKSB7CiAgICAgICAgICAgICBk
YXlJdGVyYXRvci5zZXRVVENEYXRlKGRheUl0ZXJhdG9yLmdldFVUQ0RhdGUoKSArIDEpOwogICAg
ICAgICB9CiAgICAgfQotCi0gICAgdGhpcy5waWNrZXIudG9kYXkuZGlzYWJsZWQgPSAhdGhpcy5w
aWNrZXIuaXNWYWxpZERhdGUoRGF5LmNyZWF0ZUZyb21Ub2RheSgpLnZhbHVlT2YoKSk7CiB9Owog
CiAvKioKQEAgLTExMzAsMTEgKzExNTIsOSBAQCBEYXlzVGFibGUucHJvdG90eXBlLl9tb3ZlSW5E
YXlzID0gZnVuY3Rpb24oKSB7CiB9OwogCiAvKioKLSAqIEBwYXJhbSB7IURhdGV9IGRhdGUKKyAq
IEBwYXJhbSB7IURheX0gZGF5CiAgKi8KLURheXNUYWJsZS5wcm90b3R5cGUuc2VsZWN0UmFuZ2Ug
PSBmdW5jdGlvbihkYXkpIHsKLSAgICB0aGlzLl9kZXNlbGVjdCgpOwotICAgIHRoaXMucGlja2Vy
LnNob3dNb250aChNb250aC5jcmVhdGVGcm9tRGF0ZShkYXkuc3RhcnREYXRlKCkpLCB0cnVlKTsK
K0RheXNUYWJsZS5wcm90b3R5cGUuX21hcmtSYW5nZUFzU2VsZWN0ZWQgPSBmdW5jdGlvbihkYXkp
IHsKICAgICB2YXIgZGF0ZVN0cmluZyA9IGRheS50b1N0cmluZygpOwogICAgIGZvciAodmFyIHcg
PSAwOyB3IDwgRGF5c1RhYmxlLl9XZWVrczsgdysrKSB7CiAgICAgICAgIGZvciAodmFyIGQgPSAw
OyBkIDwgNzsgZCsrKSB7CkBAIC0xMTQ3LDE0ICsxMTY3LDU0IEBAIERheXNUYWJsZS5wcm90b3R5
cGUuc2VsZWN0UmFuZ2UgPSBmdW5jdGlvbihkYXkpIHsKIH07CiAKIC8qKgorICogQHBhcmFtIHsh
RGF5fSBkYXkKKyAqLworRGF5c1RhYmxlLnByb3RvdHlwZS5zZWxlY3RSYW5nZSA9IGZ1bmN0aW9u
KGRheSkgeworICAgIHRoaXMuX2Rlc2VsZWN0KCk7CisgICAgaWYgKHRoaXMuc3RhcnREYXRlKCkg
PiBkYXkuc3RhcnREYXRlKCkgfHwgdGhpcy5lbmREYXRlKCkgPCBkYXkuZW5kRGF0ZSgpKQorICAg
ICAgICB0aGlzLnBpY2tlci5zaG93TW9udGgoTW9udGguY3JlYXRlRnJvbURhdGUoZGF5LnN0YXJ0
RGF0ZSgpKSwgZmFsc2UpOworICAgIHRoaXMuX21hcmtSYW5nZUFzU2VsZWN0ZWQoZGF5KTsKK307
CisKKy8qKgorICogQHBhcmFtIHshRGF5fSBkYXkKKyAqLworRGF5c1RhYmxlLnByb3RvdHlwZS5z
ZWxlY3RSYW5nZUFuZFNob3dFbnRpcmVSYW5nZSA9IGZ1bmN0aW9uKGRheSkgeworICAgIHRoaXMu
c2VsZWN0UmFuZ2UoZGF5KTsKK307CisKKy8qKgogICogQHBhcmFtIHshRWxlbWVudH0gZGF5Tm9k
ZQogICovCiBEYXlzVGFibGUucHJvdG90eXBlLl9zZWxlY3RSYW5nZUNvbnRhaW5pbmdOb2RlID0g
ZnVuY3Rpb24oZGF5Tm9kZSkgewotICAgIHRoaXMuX2Rlc2VsZWN0KCk7Ci0gICAgaWYgKCFkYXlO
b2RlIHx8ICFkYXlOb2RlLmNsYXNzTGlzdC5jb250YWlucyhDbGFzc05hbWVzLkRheSkgfHwgIWRh
eU5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKENsYXNzTmFtZXMuQXZhaWxhYmxlKSkKKyAgICB2YXIg
cmFuZ2UgPSB0aGlzLl9yYW5nZUZvck5vZGUoZGF5Tm9kZSk7CisgICAgaWYgKCFyYW5nZSkKICAg
ICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBTZWxlY3QgZGF0ZSwgd2VlayBvciBtb250aCBk
ZXBlbmRpbmcgb24gdGhlIGNvbmZpZy4KLSAgICBkYXlOb2RlLmNsYXNzTGlzdC5hZGQoQ2xhc3NO
YW1lcy5TZWxlY3RlZCk7CisgICAgdGhpcy5zZWxlY3RSYW5nZShyYW5nZSk7Cit9OworCisvKioK
KyAqIEBwYXJhbSB7IUVsZW1lbnR9IGRheU5vZGUKKyAqIEByZXR1cm4gez9EYXl9CisgKi8KK0Rh
eXNUYWJsZS5wcm90b3R5cGUuX3JhbmdlRm9yTm9kZSA9IGZ1bmN0aW9uKGRheU5vZGUpIHsKKyAg
ICBpZiAoIWRheU5vZGUpCisgICAgICAgIHJldHVybiBudWxsOworICAgIHJldHVybiBEYXkucGFy
c2UoZGF5Tm9kZS5kYXRhc2V0LnN1Ym1pdFZhbHVlKTsKK307CisKKy8qKgorICogQHJldHVybiB7
IURhdGV9CisgKi8KK0RheXNUYWJsZS5wcm90b3R5cGUuc3RhcnREYXRlID0gZnVuY3Rpb24oKSB7
CisgICAgcmV0dXJuIERheS5wYXJzZSh0aGlzLl9kYXlzWzBdWzBdLmRhdGFzZXQuc3VibWl0VmFs
dWUpLnN0YXJ0RGF0ZSgpOworfTsKKworLyoqCisgKiBAcmV0dXJuIHshRGF0ZX0KKyAqLworRGF5
c1RhYmxlLnByb3RvdHlwZS5lbmREYXRlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIERheS5w
YXJzZSh0aGlzLl9kYXlzW0RheXNUYWJsZS5fV2Vla3MgLSAxXVs3IC0gMV0uZGF0YXNldC5zdWJt
aXRWYWx1ZSkuZW5kRGF0ZSgpOwogfTsKIAogLyoqCkBAIC0xMzA2LDcgKzEzNjYsNyBAQCBEYXlz
VGFibGUucHJvdG90eXBlLl9oYW5kbGVLZXkgPSBmdW5jdGlvbihldmVudCkgewogICAgICAgICB9
CiAKICAgICB9IGVsc2UgaWYgKGtleSA9PSAiVSswMDU0IikgeyAvLyAndCcKLSAgICAgICAgdGhp
cy5zZWxlY3RSYW5nZShEYXkuY3JlYXRlRnJvbVRvZGF5KCkpOworICAgICAgICB0aGlzLnNlbGVj
dFJhbmdlQW5kU2hvd0VudGlyZVJhbmdlKERheS5jcmVhdGVGcm9tVG9kYXkoKSk7CiAgICAgICAg
IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OwogICAgIH0KQEAgLTEzMjQsNiArMTM4NCwxMDIgQEAgRGF5c1RhYmxlLnByb3RvdHlwZS51cGRh
dGVTZWxlY3Rpb24gPSBmdW5jdGlvbihldmVudCwgeCwgeSkgewogfTsKIAogLyoqCisgKiBAY29u
c3RydWN0b3IKKyAqIEBwYXJhbXshQ2FsZW5kYXJQaWNrZXJ9IHBpY2tlcgorICovCitmdW5jdGlv
biBNb250aFBpY2tlckRheXNUYWJsZShwaWNrZXIpIHsKKyAgICBEYXlzVGFibGUuY2FsbCh0aGlz
LCBwaWNrZXIpOworfQorTW9udGhQaWNrZXJEYXlzVGFibGUucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShEYXlzVGFibGUucHJvdG90eXBlKTsKKworLyoqCisgKiBAcGFyYW0geyFNb250aH0gbW9u
dGgKKyAqLworTW9udGhQaWNrZXJEYXlzVGFibGUucHJvdG90eXBlLl9tYXJrUmFuZ2VBc1NlbGVj
dGVkID0gZnVuY3Rpb24obW9udGgpIHsKKyAgICB2YXIgbW9udGhTdHJpbmcgPSBtb250aC50b1N0
cmluZygpOworICAgIGZvciAodmFyIHcgPSAwOyB3IDwgRGF5c1RhYmxlLl9XZWVrczsgdysrKSB7
CisgICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgNzsgZCsrKSB7CisgICAgICAgICAgICBpZiAo
dGhpcy5fZGF5c1t3XVtkXS5kYXRhc2V0Lm1vbnRoVmFsdWUgPT0gbW9udGhTdHJpbmcpIHsKKyAg
ICAgICAgICAgICAgICB0aGlzLl9kYXlzW3ddW2RdLmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5T
ZWxlY3RlZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9OworCisvKioKKyAq
IEBwYXJhbSB7IU1vbnRofSBtb250aAorICovCitNb250aFBpY2tlckRheXNUYWJsZS5wcm90b3R5
cGUuc2VsZWN0UmFuZ2UgPSBmdW5jdGlvbihtb250aCkgeworICAgIHRoaXMuX2Rlc2VsZWN0KCk7
CisgICAgaWYgKHRoaXMuc3RhcnREYXRlKCkgPj0gbW9udGguZW5kRGF0ZSgpIHx8IHRoaXMuZW5k
RGF0ZSgpIDw9IG1vbnRoLnN0YXJ0RGF0ZSgpKQorICAgICAgICB0aGlzLnBpY2tlci5zaG93TW9u
dGgobW9udGgsIHRydWUpOworICAgIHRoaXMuX21hcmtSYW5nZUFzU2VsZWN0ZWQobW9udGgpOwor
fTsKKworLyoqCisgKiBAcGFyYW0geyFNb250aH0gbW9udGgKKyAqLworTW9udGhQaWNrZXJEYXlz
VGFibGUucHJvdG90eXBlLnNlbGVjdFJhbmdlQW5kU2hvd0VudGlyZVJhbmdlID0gZnVuY3Rpb24o
bW9udGgpIHsKKyAgICB0aGlzLl9kZXNlbGVjdCgpOworICAgIHRoaXMucGlja2VyLnNob3dNb250
aChtb250aCwgdHJ1ZSk7CisgICAgdGhpcy5fbWFya1JhbmdlQXNTZWxlY3RlZChtb250aCk7Cit9
OworCisvKioKKyAqIEBwYXJhbSB7IUVsZW1lbnR9IGRheU5vZGUKKyAqIEByZXR1cm4gez9Nb250
aH0KKyAqLworTW9udGhQaWNrZXJEYXlzVGFibGUucHJvdG90eXBlLl9yYW5nZUZvck5vZGUgPSBm
dW5jdGlvbihkYXlOb2RlKSB7CisgICAgaWYgKCFkYXlOb2RlKQorICAgICAgICByZXR1cm4gbnVs
bDsKKyAgICByZXR1cm4gTW9udGgucGFyc2UoZGF5Tm9kZS5kYXRhc2V0Lm1vbnRoVmFsdWUpOwor
fTsKKworLyoqCisgKiBAcGFyYW0ge0V2ZW50fSBldmVudAorICovCitNb250aFBpY2tlckRheXNU
YWJsZS5wcm90b3R5cGUuX2hhbmRsZUtleSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdGhpcy5w
aWNrZXIubWF5YmVVcGRhdGVGb2N1c1N0eWxlKCk7CisgICAgdmFyIGtleSA9IGV2ZW50LmtleUlk
ZW50aWZpZXI7CisgICAgdmFyIGV2ZW50SGFuZGxlZCA9IGZhbHNlOworICAgIHZhciBjdXJyZW50
TW9udGggPSB0aGlzLnBpY2tlci5jdXJyZW50TW9udGgoKTsKKyAgICB2YXIgZmlyc3ROb2RlSW5T
ZWxlY3RlZFJhbmdlID0gdGhpcy5fZmlyc3ROb2RlSW5TZWxlY3RlZFJhbmdlKCk7CisgICAgaWYg
KCFmaXJzdE5vZGVJblNlbGVjdGVkUmFuZ2UKKyAgICAgICAgJiYgKGtleSA9PSAiUmlnaHQiIHx8
IGtleSA9PSAiTGVmdCIgfHwga2V5ID09ICJVcCIgfHwga2V5ID09ICJEb3duIiB8fCBrZXkgPT0g
IlBhZ2VVcCIgfHwga2V5ID09ICJQYWdlRG93biIpKSB7CisgICAgICAgIHRoaXMuc2VsZWN0UmFu
Z2UoY3VycmVudE1vbnRoKTsKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
dmFyIHNlbGVjdGVkTW9udGggPSB0aGlzLl9yYW5nZUZvck5vZGUoZmlyc3ROb2RlSW5TZWxlY3Rl
ZFJhbmdlKTsKKyAgICBpZiAoa2V5ID09IChnbG9iYWwucGFyYW1zLmlzQ2FsZW5kYXJSVEwgPyAi
UmlnaHQiIDogIkxlZnQiKSB8fCBrZXkgPT0gIlVwIiB8fCBrZXkgPT0gIlBhZ2VVcCIpIHsKKyAg
ICAgICAgaWYgKHNlbGVjdGVkTW9udGgudmFsdWVPZigpID4gY3VycmVudE1vbnRoLnZhbHVlT2Yo
KSkKKyAgICAgICAgICAgIHRoaXMuc2VsZWN0UmFuZ2VBbmRTaG93RW50aXJlUmFuZ2UoY3VycmVu
dE1vbnRoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5zZWxlY3RSYW5nZUFuZFNo
b3dFbnRpcmVSYW5nZShjdXJyZW50TW9udGgucHJldmlvdXMoKSk7CisgICAgICAgIGV2ZW50SGFu
ZGxlZCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChrZXkgPT0gKGdsb2JhbC5wYXJhbXMuaXNDYWxl
bmRhclJUTCA/ICJMZWZ0IiA6ICJSaWdodCIpIHx8IGtleSA9PSAiRG93biIgfHwga2V5ID09ICJQ
YWdlRG93biIpIHsKKyAgICAgICAgaWYgKHNlbGVjdGVkTW9udGgudmFsdWVPZigpIDwgY3VycmVu
dE1vbnRoLnZhbHVlT2YoKSkKKyAgICAgICAgICAgIHRoaXMuc2VsZWN0UmFuZ2VBbmRTaG93RW50
aXJlUmFuZ2UoY3VycmVudE1vbnRoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5z
ZWxlY3RSYW5nZUFuZFNob3dFbnRpcmVSYW5nZShjdXJyZW50TW9udGgubmV4dCgpKTsKKyAgICAg
ICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKHRoaXMuX2hhc1NlbGVjdGlv
bigpICYmIGtleSA9PSAiRW50ZXIiKSB7CisgICAgICAgIGlmIChjdXJyZW50U2VsZWN0aW9uKSB7
CisgICAgICAgICAgICB0aGlzLnBpY2tlci5zdWJtaXRWYWx1ZShjdXJyZW50U2VsZWN0aW9uLnRv
U3RyaW5nKCkpOworICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0gZWxzZSBpZiAoa2V5ID09ICJVKzAwNTQiKSB7IC8vICd0JworICAgICAgICB0aGlzLnNl
bGVjdFJhbmdlQW5kU2hvd0VudGlyZVJhbmdlKE1vbnRoLmNyZWF0ZUZyb21Ub2RheSgpKTsKKyAg
ICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGV2ZW50SGFuZGxlZCkg
eworICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKKyAgICB9Cit9OworCisvKioKICAqIEBwYXJhbSB7IUV2ZW50fSBldmVudAog
ICovCiBDYWxlbmRhclBpY2tlci5wcm90b3R5cGUuX2hhbmRsZUJvZHlLZXlEb3duID0gZnVuY3Rp
b24oZXZlbnQpIHsKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAzMjE4
M2UzNDg0MmM0NDZkMTlmY2JiNmEzNTZlMGNhYjRjYjBkMzcxLi4xNzVlYjBjZDc5OTgyMjA5YTgz
YTc2YTI3NjM0NzUwZWFkNWE1MGU4IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMTEtMDYgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hp
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IG1vbnRoIHBpY2tpbmcgdG8gY2FsZW5k
YXIgcGlja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDEzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KKworICAgICAgICAq
IE1hbnVhbFRlc3RzL2Zvcm1zL2NhbGVuZGFyLXBpY2tlci5odG1sOiBBZGRlZCB0ZXN0IGZvciBt
b250aCBwaWNrZXIuCisKIDIwMTItMTEtMDUgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21h
bm5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gVHJpdmlhbCB1bnJldmlld2VkOiBBZGQgbWlz
c2luZyBtb2R1bGUgZGVwZW5kZW5jaWVzIGZvciBidWlsZHMgaW4gUXQgQ0kgc3lzdGVtLgpkaWZm
IC0tZ2l0IGEvTWFudWFsVGVzdHMvZm9ybXMvY2FsZW5kYXItcGlja2VyLmh0bWwgYi9NYW51YWxU
ZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbAppbmRleCBiZTI0M2NhMzBiZTRkNzNiYzgz
MmEwOTAyZDMyNWMyYjkxMTA1ZjFhLi41NTIwN2U0ZDNkYjc1MThlMWI4ZjU2ZmJlMDgwMjFiNTRm
MjY4YmRjIDEwMDY0NAotLS0gYS9NYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRt
bAorKysgYi9NYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbApAQCAtMjcsNiAr
MjcsNyBAQCBpZnJhbWUgewogIDxvcHRpb24+d2l0aCBsb25nIGRhdGFsaXN0PC9vcHRpb24+CiAg
PG9wdGlvbj5BcmFiaWMgd2l0aCBkYXRhbGlzdDwvb3B0aW9uPgogIDxvcHRpb24+QXJhYmljIHdp
dGggbG9uZyBkYXRhbGlzdDwvb3B0aW9uPgorIDxvcHRpb24+TW9udGg8L29wdGlvbj4KIDwvc2Vs
ZWN0PgogCiA8ZGl2PjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZGF0ZSI+PC9kaXY+CkBAIC0yMzgs
NiArMjM5LDIxIEBAIHZhciBhcmFiaWNMb25nRGF0YWxpc3RBcmd1bWVudHMgPSB7CiAgICAgc3Vn
Z2VzdGlvbkhpZ2hsaWdodENvbG9yOiAiIzAwMDBmZiIsCiAgICAgc3VnZ2VzdGlvbkhpZ2hsaWdo
dFRleHRDb2xvcjogIiNmZmZmZmYiCiB9OwordmFyIG1vbnRoQXJndW1lbnRzID0geworICAgIGxv
Y2FsZTogJ2VuLVVTJywKKyAgICBtb250aExhYmVscyA6IFsnSmFudWFyeScsICdGZWJydWFyeScs
ICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsCisgICAgJ0p1bHknLCAnQXVndXN0Jywg
J1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10sCisgICAgZGF5
TGFiZWxzIDogWydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQn
XSwKKyAgICB0b2RheUxhYmVsIDogJ1RoaXMgTW9udGgnLAorICAgIGNsZWFyTGFiZWwgOiAnQ2xl
YXInLAorICAgIGNhbmNlbExhYmVsIDogJ0NhbmNlbCcsCisgICAgd2Vla1N0YXJ0RGF5IDogMCwK
KyAgICBzdGVwIDogIjEiLAorICAgIHN0ZXBCYXNlOiAiMCIsCisgICAgY3VycmVudFZhbHVlIDog
JzIwMDAtMDEnLAorICAgIG1heCA6ICcyMDk5LTAzJywKKyAgICBtb2RlOiAibW9udGgiCit9Owog
CiBmdW5jdGlvbiBvcGVuQ2FsZW5kYXIoYXJncykgewogICAgIHZhciBmcmFtZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKVswXTsKQEAgLTMxMCw2ICszMjYsOSBAQCBm
dW5jdGlvbiBzZWxlY3RlZChzZWxlY3QpIHsKICAgICBjYXNlIDY6CiAgICAgICAgIG9wZW5DYWxl
bmRhcihhcmFiaWNMb25nRGF0YWxpc3RBcmd1bWVudHMpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIDc6CisgICAgICAgIG9wZW5DYWxlbmRhcihtb250aEFyZ3VtZW50cyk7CisgICAgICAgIGJy
ZWFrOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>