<?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>101024</bug_id>
          
          <creation_ts>2012-11-02 00:32:18 -0700</creation_ts>
          <short_desc>Introduce Month class to calendar picker</short_desc>
          <delta_ts>2012-11-05 19:14:04 -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>756943</commentid>
    <comment_count>0</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-11-02 00:32:18 -0700</bug_when>
    <thetext>Introduce Month class to calendar picker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756969</commentid>
    <comment_count>1</comment_count>
      <attachid>172002</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-11-02 01:12:55 -0700</bug_when>
    <thetext>Created attachment 172002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756973</commentid>
    <comment_count>2</comment_count>
      <attachid>172002</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-11-02 01:33:00 -0700</bug_when>
    <thetext>Comment on attachment 172002
Patch

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

Nice refactoring.  I have some comments.

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:146
&gt; + Month.prototype.toLocaleString = function() {

Need to update the jsdoc annotation above.

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:214
&gt; +function Month(valueOrMonthOrYear, month) {

Please add jsdoc annotation.

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:223
&gt; +        this.year = Math.floor(arguments[0] / 12) + 1970;
&gt; +        this.month = arguments[0] % 12;

nit: using arguments[0] is inconsistent.  valueOrMonthOrYear is better for consistency.

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:242
&gt; +Month.parse = function(str) {

Please add jsdoc annotation.

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:251
&gt; +Month.containing = function(date) {

nit: The name &quot;containing&quot; looks not good.  createFromDate?

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:267
&gt; +Month.prototype.minimum = function() {

nit: not good name.  createMInimumDate?

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:271
&gt; +Month.prototype.maximum = function() {

Ditto.

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:629
&gt; + * @return {?month}

nit: month -&gt; Month

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:639
&gt;   * @param {!number} year
&gt;   * @param {!number} month
&gt;   */
&gt; -YearMonthController.prototype.setYearMonth = function(year, month) {
&gt; -    this._currentYear = year;
&gt; -    this._currentMonth = month;
&gt; +YearMonthController.prototype.setMonth = function(month) {

Update the jsdoc annotation please.

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:990
&gt;   * @param {!number} year
&gt;   * @param {!number} month
&gt;   */
&gt; -DaysTable.prototype._navigateToMonth = function(year, month) {
&gt; -    this.picker.yearMonthController.setYearMonth(year, month);
&gt; -    this._renderMonth(year, month);
&gt; +DaysTable.prototype._navigateToMonth = function(month) {

Need to update the jsdoc annotation.

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:999
&gt;   * @param {!number} year
&gt;   * @param {!number} month
&gt;   */
&gt; -DaysTable.prototype._navigateToMonthWithAnimation = function(year, month) {
&gt; -    if (this._currentYear &gt;= 0 &amp;&amp; this._currentMonth &gt;= 0) {
&gt; -        if (year == this._currentYear &amp;&amp; month == this._currentMonth)
&gt; +DaysTable.prototype._navigateToMonthWithAnimation = function(month) {

Ditto.

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:1028
&gt;   * @param {!number} year
&gt;   * @param {!number} month
&gt;   */
&gt; -DaysTable.prototype.navigateToMonthAndKeepSelectionPosition = function(year, month) {
&gt; -    if (year == this._currentYear &amp;&amp; month == this._currentMonth)
&gt; +DaysTable.prototype.navigateToMonthAndKeepSelectionPosition = function(month) {
&gt; +    if (this._currentMonth.equals(month))

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757041</commentid>
    <comment_count>3</comment_count>
      <attachid>172022</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-11-02 03:12:44 -0700</bug_when>
    <thetext>Created attachment 172022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757045</commentid>
    <comment_count>4</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-11-02 03:16:12 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:267
&gt; &gt; +Month.prototype.minimum = function() {
&gt; 
&gt; nit: not good name.  createMInimumDate?
How about start/end?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757048</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-11-02 03:20:50 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; &gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:267
&gt; &gt; &gt; +Month.prototype.minimum = function() {
&gt; &gt; 
&gt; &gt; nit: not good name.  createMInimumDate?
&gt; How about start/end?

Just &quot;start&quot; or &quot;end&quot; sounds bad.  The problem is that one can&apos;t imagine the meaning of code like &quot;month.start()&quot; without reading the function definition.  It&apos;s bad code readability.

startDate, or createStartDate is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757050</commentid>
    <comment_count>6</comment_count>
      <attachid>172022</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-11-02 03:22:13 -0700</bug_when>
    <thetext>Comment on attachment 172022
Patch

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

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:144
&gt; + Month.prototype.toLocaleString = function() {

unnecessary leading space</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757064</commentid>
    <comment_count>7</comment_count>
      <attachid>172026</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-11-02 03:34:26 -0700</bug_when>
    <thetext>Created attachment 172026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757066</commentid>
    <comment_count>8</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-11-02 03:37:44 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:267
&gt; &gt; &gt; &gt; +Month.prototype.minimum = function() {
&gt; &gt; &gt; 
&gt; &gt; &gt; nit: not good name.  createMInimumDate?
&gt; &gt; How about start/end?
&gt; 
&gt; Just &quot;start&quot; or &quot;end&quot; sounds bad.  The problem is that one can&apos;t imagine the meaning of code like &quot;month.start()&quot; without reading the function definition.  It&apos;s bad code readability.
&gt; 
&gt; startDate, or createStartDate is better.

Going with startDate/endDate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757067</commentid>
    <comment_count>9</comment_count>
      <attachid>172026</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-11-02 03:41:14 -0700</bug_when>
    <thetext>Comment on attachment 172026
Patch

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

ok

&gt; Source/WebCore/ChangeLog:23
&gt; +        (Month.prototype.start): Returns a datetime that is the start of this month. The value is inclusive.
&gt; +        (Month.prototype.end): Returns a datetime that is the end of this month. The value is exclusive.

Need to update

&gt; Source/WebCore/Resources/pagepopups/calendarPicker.js:1118
&gt; +    var currentMonthStart = currentMonth.startDate();
&gt; +    if (this.picker.minimumDate &gt;= currentMonthStart)

nit: You can remove the local variable &apos;currentMonthStart&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757172</commentid>
    <comment_count>10</comment_count>
      <attachid>172056</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-11-02 07:20:06 -0700</bug_when>
    <thetext>Created attachment 172056
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757181</commentid>
    <comment_count>11</comment_count>
      <attachid>172057</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-11-02 07:26:50 -0700</bug_when>
    <thetext>Created attachment 172057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757340</commentid>
    <comment_count>12</comment_count>
      <attachid>172057</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 10:57:21 -0700</bug_when>
    <thetext>Comment on attachment 172057
Patch

Rejecting attachment 172057 from commit-queue.

New failing tests:
platform/chromium/fast/forms/calendar-picker/calendar-picker-key-operations.html
Full output: http://queues.webkit.org/results/14678919</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758242</commentid>
    <comment_count>13</comment_count>
      <attachid>172271</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-11-04 22:52:22 -0800</bug_when>
    <thetext>Created attachment 172271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758252</commentid>
    <comment_count>14</comment_count>
      <attachid>172271</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-04 23:13:53 -0800</bug_when>
    <thetext>Comment on attachment 172271
Patch

Clearing flags on attachment: 172271

Committed r133434: &lt;http://trac.webkit.org/changeset/133434&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758253</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-04 23:13:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172002</attachid>
            <date>2012-11-02 01:12:55 -0700</date>
            <delta_ts>2012-11-02 03:12:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101024-20121102171114.patch</filename>
            <type>text/plain</type>
            <size>30836</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZiODJmMTRiYWNjMzNj
YzYxYTc5MjBmMTY5MjNmZjc0YWM0MjcwZC4uZjQxNmFmYzIzMDMxYzBhMWYwMGJjZDlkNDU2OTE3
ZDlhMmMwZjRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTExLTAyICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBNb250
aCBjbGFzcyB0byBjYWxlbmRhciBwaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMTAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vbnRoIGNsYXNzIG5lZWRzIHRvIGJlIGludHJvZHVjZWQgdG8g
aW1wbGVtZW50IGEgbW9udGggcGlja2VyLiBUaGlzCisgICAgICAgIHBhdGNoIGp1c3QgaW50cm9k
dWNlcyB0aGUgTW9udGggY2xhc3MgaW50byB0aGUgY2FsZW5kYXIgcGlja2VyIHdpdGhvdXQKKyAg
ICAgICAgY2hhbmdpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGNhbGVuZGFyLXBpY2tlci0qLmh0bWwgdGVzdHMuCisK
KyAgICAgICAgKiBSZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qczoKKyAgICAg
ICAgKE1vbnRoLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyk6IFJldHVybnMgYSBsb2NhbGl6ZWQg
bW9udGggc3RyaW5nLgorICAgICAgICAoTW9udGgpOiBUYWtlcyBhIE1vbnRoIG9iamVjdCwgbnVt
YmVyIHJlcHJlc2VudGluZyB0aGUgbW9udGgsIG9yIHllYXIgYW5kIG1vbnRoIG51bWJlcnMuCisg
ICAgICAgIChNb250aC5wYXJzZSk6IFJldHVybnMgYSBuZXcgTW9udGggZnJvbSBhbiBJU08gbW9u
dGggc3RyaW5nLgorICAgICAgICAoTW9udGguY29udGFpbmluZyk6IFJldHVybnMgYSBuZXcgTW9u
dGggY29udGFpbmluZyB0aGUgZ2l2ZW4gZGF0ZSB0aW1lLgorICAgICAgICAoTW9udGgucHJvdG90
eXBlLmVxdWFscyk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gbW9udGggaXMgdGhlIHNhbWUu
CisgICAgICAgIChNb250aC5wcm90b3R5cGUucHJldmlvdXMpOiBSZXR1cm5zIHRoZSBwcmV2aW91
cyBtb250aC4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS5uZXh0KTogUmV0dXJucyB0aGUgbmV4
dCBtb250aC4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS5taW5pbXVtKTogUmV0dXJucyB0aGUg
bWluaW11bSBkYXRldGltZSBpbiB0aGlzIG1vbnRoLiBUaGUgdmFsdWUgaXMgaW5jbHVzaXZlLgor
ICAgICAgICAoTW9udGgucHJvdG90eXBlLm1heGltdW0pOiBSZXR1cm5zIHRoZSBtYXhpbXVtIGRh
dGV0aW1lIGluIHRoaXMgbW9udGguIFRoZSB2YWx1ZSBpcyBleGNsdXNpdmUuCisgICAgICAgIChN
b250aC5wcm90b3R5cGUudmFsdWVPZik6IFJldHVybnMgYSBudW1iZXIgcmVwcmVzZW50aW5nIHRo
ZSBtb250aC4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS50b1N0cmluZyk6IFJldHVybnMgYW4g
SVNPIG1vbnRoIHN0cmluZy4KKyAgICAgICAgKFllYXJNb250aENvbnRyb2xsZXIpOiBVc2UgTW9u
dGggb2JqZWN0LgorICAgICAgICAoWWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUuYXR0YWNo
VG8pOiBZZWFyIDI3NTc2MCBlbmRzIGluIFNlcHRlbWJlciBzbyB1c2UgdGhlIHllYXIgYmVmb3Jl
IHRvIG1lYXN1cmUgdGhlIGxhYmVsIHdpZHRoLgorICAgICAgICAoWWVhck1vbnRoQ29udHJvbGxl
ci5wcm90b3R5cGUuc2V0TW9udGgpOiBUYWtlIGEgbW9udGggb2JqZWN0LgorICAgICAgICAoWWVh
ck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUuX3JlZHJhdyk6IFVzZSBJU08gbW9udGggc3RyaW5n
IGZvciBlbGVtZW50LmRhdGFzZXQudmFsdWUuCisgICAgICAgIChZZWFyTW9udGhDb250cm9sbGVy
LnByb3RvdHlwZS5faGFuZGxlWWVhck1vbnRoQ2hhbmdlKToKKyAgICAgICAgKFllYXJNb250aENv
bnRyb2xsZXIucHJvdG90eXBlLm1vdmVSZWxhdGl2ZWx5KToKKyAgICAgICAgKERheXNUYWJsZSk6
IFVzZSBNb250aCBvYmplY3QuCisgICAgICAgIChEYXlzVGFibGUucHJvdG90eXBlLl9yZW5kZXJN
b250aCk6IFRha2UgYSBtb250aCBvYmplY3QuIFRlc3RpbmcgZm9yIGlzTmFOIGlzIG1vdmVkIHVw
IHRvIGZpeCBhIGJ1ZyB3aGVuIHNob3dpbmcgU2VwdGVtYmVyLCAyNzU3NjAuCisgICAgICAgIChE
YXlzVGFibGUucHJvdG90eXBlLl9uYXZpZ2F0ZVRvTW9udGgpOiBUYWtlIGEgbW9udGggb2JqZWN0
LgorICAgICAgICAoRGF5c1RhYmxlLnByb3RvdHlwZS5fbmF2aWdhdGVUb01vbnRoV2l0aEFuaW1h
dGlvbik6IFRha2UgYSBtb250aCBvYmplY3QuCisgICAgICAgIChEYXlzVGFibGUucHJvdG90eXBl
Lm5hdmlnYXRlVG9Nb250aEFuZEtlZXBTZWxlY3Rpb25Qb3NpdGlvbik6IFRha2UgYSBtb250aCBv
YmplY3QuCisgICAgICAgIChEYXlzVGFibGUucHJvdG90eXBlLnNlbGVjdERhdGUpOgorICAgICAg
ICAoRGF5c1RhYmxlLnByb3RvdHlwZS5fbWF5YmVTZXRQcmV2aW91c01vbnRoKTogVXNlIE1vbnRo
IG9iamVjdCB0byBjYWxjdWxhdGUgdGhlIHByZXZpb3VzIG1vbnRoLgorICAgICAgICAoRGF5c1Rh
YmxlLnByb3RvdHlwZS5fbWF5YmVTZXROZXh0TW9udGgpOiBVc2UgTW9udGggb2JqZWN0IHRvIGNh
bGN1bGF0ZSB0aGUgbmV4dCBtb250aC4KKwogMjAxMi0xMS0wMSAgUm9nZXIgRm9uZyAgPHJvZ2Vy
X2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeC4gaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvMTMzMjUyIGJyb2tlIHRoZSBXaW5kb3dzIGJ1aWxkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qcwpp
bmRleCA2MTE0Y2M1N2JiOGZjZjUwZTM4ODUxZjVmYzMyMWFmM2NhODUyYjgyLi4zN2VjZTA5Mjli
N2Y0NmJhZjI5OWUyZTc3ZDIyOThkNzI5NjRkMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qcwpAQCAtMTQzLDkgKzE0
MywxMSBAQCBmdW5jdGlvbiBmb3JtYXRKYXBhbmVzZUltcGVyaWFsRXJhKHllYXIsIG1vbnRoKSB7
CiAgKiBAcGFyYW0geyFudW1iZXJ9IG1vbnRoCiAgKiBAcmV0dXJuIHshc3RyaW5nfQogICovCi1m
dW5jdGlvbiBmb3JtYXRZZWFyTW9udGgoeWVhciwgbW9udGgpIHsKLSAgICB2YXIgeWVhclN0cmlu
ZyA9IGxvY2FsaXplTnVtYmVyKHllYXIpOwotICAgIHZhciBtb250aFN0cmluZyA9IGdsb2JhbC5w
YXJhbXMubW9udGhMYWJlbHNbbW9udGhdOworIE1vbnRoLnByb3RvdHlwZS50b0xvY2FsZVN0cmlu
ZyA9IGZ1bmN0aW9uKCkgeworICAgIGlmIChpc05hTih0aGlzLnllYXIpIHx8IGlzTmFOKHRoaXMu
eWVhcikpCisgICAgICAgIHJldHVybiAiSW52YWxpZCBNb250aCI7CisgICAgdmFyIHllYXJTdHJp
bmcgPSBsb2NhbGl6ZU51bWJlcih0aGlzLnllYXIpOworICAgIHZhciBtb250aFN0cmluZyA9IGds
b2JhbC5wYXJhbXMubW9udGhMYWJlbHNbdGhpcy5tb250aF07CiAgICAgc3dpdGNoIChnZXRMYW5n
dWFnZSgpKSB7CiAgICAgY2FzZSAiZXUiOgogICAgIGNhc2UgImZpbCI6CkBAIC0xNTgsNyArMTYw
LDcgQEAgZnVuY3Rpb24gZm9ybWF0WWVhck1vbnRoKHllYXIsIG1vbnRoKSB7CiAgICAgY2FzZSAi
aHUiOgogICAgICAgICByZXR1cm4geWVhclN0cmluZyArICIuICIgKyBtb250aFN0cmluZzsKICAg
ICBjYXNlICJqYSI6Ci0gICAgICAgIHJldHVybiB5ZWFyU3RyaW5nICsgIuW5tCIgKyBmb3JtYXRK
YXBhbmVzZUltcGVyaWFsRXJhKHllYXIsIG1vbnRoKSArICIgIiArIG1vbnRoU3RyaW5nOworICAg
ICAgICByZXR1cm4geWVhclN0cmluZyArICLlubQiICsgZm9ybWF0SmFwYW5lc2VJbXBlcmlhbEVy
YSh0aGlzLnllYXIsIHRoaXMubW9udGgpICsgIiAiICsgbW9udGhTdHJpbmc7CiAgICAgY2FzZSAi
emgiOgogICAgICAgICByZXR1cm4geWVhclN0cmluZyArICLlubQiICsgbW9udGhTdHJpbmc7CiAg
ICAgY2FzZSAia28iOgpAQCAtMTcyLDcgKzE3NCw3IEBAIGZ1bmN0aW9uIGZvcm1hdFllYXJNb250
aCh5ZWFyLCBtb250aCkgewogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBtb250aFN0cmlu
ZyArICIgIiArIHllYXJTdHJpbmc7CiAgICAgfQotfQorfTsKIAogZnVuY3Rpb24gY3JlYXRlVVRD
RGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSkgewogICAgIHZhciBuZXdEYXRlID0gbmV3IERhdGUoRGF0
ZS5VVEMoeWVhciwgbW9udGgsIGRhdGUpKTsKQEAgLTIwOSw2ICsyMTEsODAgQEAgZnVuY3Rpb24g
c2VyaWFsaXplRGF0ZSh5ZWFyLCBtb250aCwgZGF5KSB7CiAgICAgcmV0dXJuIHllYXJTdHJpbmcg
KyAiLSIgKyAoIjAiICsgKG1vbnRoICsgMSkpLnN1YnN0cigtMiwgMikgKyAiLSIgKyAoIjAiICsg
ZGF5KS5zdWJzdHIoLTIsIDIpOwogfQogCitmdW5jdGlvbiBNb250aCh2YWx1ZU9yTW9udGhPclll
YXIsIG1vbnRoKSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgeworICAgICAgICB0
aGlzLnllYXIgPSB2YWx1ZU9yTW9udGhPclllYXI7CisgICAgICAgIHRoaXMubW9udGggPSBtb250
aDsKKyAgICB9IGVsc2UgaWYgKHZhbHVlT3JNb250aE9yWWVhciBpbnN0YW5jZW9mIE1vbnRoKSB7
CisgICAgICAgIHRoaXMueWVhciA9IHZhbHVlT3JNb250aE9yWWVhci55ZWFyOworICAgICAgICB0
aGlzLm1vbnRoID0gdmFsdWVPck1vbnRoT3JZZWFyLm1vbnRoOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHRoaXMueWVhciA9IE1hdGguZmxvb3IoYXJndW1lbnRzWzBdIC8gMTIpICsgMTk3MDsKKyAg
ICAgICAgdGhpcy5tb250aCA9IGFyZ3VtZW50c1swXSAlIDEyOworICAgIH0KKyAgICB0aGlzLnll
YXIgPSB0aGlzLnllYXIgKyBNYXRoLmZsb29yKHRoaXMubW9udGggLyAxMik7CisgICAgaWYgKHRo
aXMubW9udGggPCAwKSB7CisgICAgICAgIHRoaXMubW9udGggPSB0aGlzLm1vbnRoICUgMTIgKyAx
MjsKKyAgICB9IGVsc2UgeworICAgICAgICB0aGlzLm1vbnRoID0gdGhpcy5tb250aCAlIDEyOwor
ICAgIH0KKyAgICBpZiAodGhpcy55ZWFyIDwgMCB8fCBNb250aC5NYXhpbXVtIDwgdGhpcykgewor
ICAgICAgICB0aGlzLnllYXIgPSBOYU47CisgICAgICAgIHRoaXMubW9udGggPSBOYU47CisgICAg
fQorfTsKKworTW9udGguSVNPU3RyaW5nUmVnRXhwID0gL14oXGQrKS0oXGQrKSQvOworCisvLyBT
ZWUgV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5oLgorTW9udGguTWF4aW11bSA9IG5l
dyBNb250aCgyNzU3NjAsIDgpOworCitNb250aC5wYXJzZSA9IGZ1bmN0aW9uKHN0cikgeworICAg
IHZhciBtYXRjaCA9IE1vbnRoLklTT1N0cmluZ1JlZ0V4cC5leGVjKHN0cik7CisgICAgaWYgKCFt
YXRjaCkKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgdmFyIHllYXIgPSBwYXJzZUludChtYXRj
aFsxXSwgMTApOworICAgIHZhciBtb250aCA9IHBhcnNlSW50KG1hdGNoWzJdLCAxMCkgLSAxOwor
ICAgIHJldHVybiBuZXcgTW9udGgoeWVhciwgbW9udGgpOworfTsKKworTW9udGguY29udGFpbmlu
ZyA9IGZ1bmN0aW9uKGRhdGUpIHsKKyAgICByZXR1cm4gbmV3IE1vbnRoKGRhdGUuZ2V0VVRDRnVs
bFllYXIoKSwgZGF0ZS5nZXRVVENNb250aCgpKTsKK307CisKK01vbnRoLnByb3RvdHlwZS5lcXVh
bHMgPSBmdW5jdGlvbihvdGhlcikgeworICAgIHJldHVybiB0aGlzLnllYXIgPT09IG90aGVyLnll
YXIgJiYgdGhpcy5tb250aCA9PT0gb3RoZXIubW9udGg7Cit9OworCitNb250aC5wcm90b3R5cGUu
cHJldmlvdXMgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IE1vbnRoKHRoaXMueWVhciwg
dGhpcy5tb250aCAtIDEpOworfTsKKworTW9udGgucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbigp
IHsKKyAgICByZXR1cm4gbmV3IE1vbnRoKHRoaXMueWVhciwgdGhpcy5tb250aCArIDEpOworfTsK
KworTW9udGgucHJvdG90eXBlLm1pbmltdW0gPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gY3Jl
YXRlVVRDRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGgsIDEpOworfTsKKworTW9udGgucHJvdG90
eXBlLm1heGltdW0gPSBmdW5jdGlvbigpIHsKKyAgICBpZiAodGhpcy5lcXVhbHMoTW9udGguTWF4
aW11bSkpCisgICAgICAgIHJldHVybiBDYWxlbmRhclBpY2tlci5NYXhpbXVtUG9zc2libGVEYXRl
OworICAgIHJldHVybiB0aGlzLm5leHQoKS5taW5pbXVtKCk7Cit9OworCitNb250aC5wcm90b3R5
cGUudmFsdWVPZiA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiAodGhpcy55ZWFyIC0gMTk3MCkg
KiAxMiArIHRoaXMubW9udGg7Cit9OworCitNb250aC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5j
dGlvbigpIHsKKyAgICB2YXIgeWVhclN0cmluZyA9IFN0cmluZyh0aGlzLnllYXIpOworICAgIGlm
ICh5ZWFyU3RyaW5nLmxlbmd0aCA8IDQpCisgICAgICAgIHllYXJTdHJpbmcgPSAoIjAwMCIgKyB5
ZWFyU3RyaW5nKS5zdWJzdHIoLTQsIDQpOworICAgIHJldHVybiB5ZWFyU3RyaW5nICsgIi0iICsg
KCIwIiArICh0aGlzLm1vbnRoICsgMSkpLnN1YnN0cigtMiwgMik7Cit9OworCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAvLyBJbml0aWFsaXphdGlvbgogCkBAIC00MzMsMTMgKzUwOSw5IEBAIENhbGVuZGFyUGlja2Vy
LnByb3RvdHlwZS5fbGF5b3V0QnV0dG9ucyA9IGZ1bmN0aW9uKCkgewogZnVuY3Rpb24gWWVhck1v
bnRoQ29udHJvbGxlcihwaWNrZXIpIHsKICAgICB0aGlzLnBpY2tlciA9IHBpY2tlcjsKICAgICAv
KioKLSAgICAgKiBAdHlwZSB7IW51bWJlcn0KLSAgICAgKi8KLSAgICB0aGlzLl9jdXJyZW50WWVh
ciA9IC0xOwotICAgIC8qKgotICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAqIEB0eXBlIHs/
TW9udGh9CiAgICAgICovCi0gICAgdGhpcy5fY3VycmVudE1vbnRoID0gLTE7CisgICAgdGhpcy5f
Y3VycmVudE1vbnRoID0gbnVsbDsKIH0KIAogLyoqCkBAIC00NzcsMTQgKzU0OSwxNyBAQCBZZWFy
TW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5hdHRhY2hUbyA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsK
ICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3dhbGwpOwogCiAgICAgdmFyIG1heGltdW1Z
ZWFyID0gdGhpcy5waWNrZXIubWF4aW11bURhdGUuZ2V0VVRDRnVsbFllYXIoKTsKKyAgICAvLyBC
ZWNhdXNlIHRoZSBtYXhpbXVtIHBvc3NpYmxlIHllYXIgaXMgU2VwdGVtYmVyIHdlIHNob3VsZCB1
c2UgdGhlIHllYXIgYmVmb3JlIGl0LgorICAgIGlmIChtYXhpbXVtWWVhciA9PT0gTW9udGguTWF4
aW11bS55ZWFyKQorICAgICAgICBtYXhpbXVtWWVhci0tOwogICAgIHZhciBtYXhXaWR0aCA9IDA7
CiAgICAgZm9yICh2YXIgbSA9IDA7IG0gPCAxMjsgKyttKSB7Ci0gICAgICAgIHRoaXMuX21vbnRo
LnRleHRDb250ZW50ID0gZm9ybWF0WWVhck1vbnRoKG1heGltdW1ZZWFyLCBtKTsKKyAgICAgICAg
dGhpcy5fbW9udGgudGV4dENvbnRlbnQgPSBuZXcgTW9udGgobWF4aW11bVllYXIsIG0pLnRvTG9j
YWxlU3RyaW5nKCk7CiAgICAgICAgIG1heFdpZHRoID0gTWF0aC5tYXgobWF4V2lkdGgsIHRoaXMu
X21vbnRoLm9mZnNldFdpZHRoKTsKICAgICB9CiAgICAgaWYgKGdldExhbmd1YWdlKCkgPT0gImph
IiAmJiBJbXBlcmlhbEVyYUxpbWl0IDwgbWF4aW11bVllYXIpIHsKICAgICAgICAgZm9yICh2YXIg
bSA9IDA7IG0gPCAxMjsgKyttKSB7Ci0gICAgICAgICAgICB0aGlzLl9tb250aC50ZXh0Q29udGVu
dCA9IGZvcm1hdFllYXJNb250aChJbXBlcmlhbEVyYUxpbWl0LCBtKTsKKyAgICAgICAgICAgIHRo
aXMuX21vbnRoLnRleHRDb250ZW50ID0gbmV3IE1vbnRoKEltcGVyaWFsRXJhTGltaXQsIG0pLnRv
TG9jYWxlU3RyaW5nKCk7CiAgICAgICAgICAgICBtYXhXaWR0aCA9IE1hdGgubWF4KG1heFdpZHRo
LCB0aGlzLl9tb250aC5vZmZzZXRXaWR0aCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01NTEsMTQg
KzYyNiw3IEBAIFllYXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLl9hdHRhY2hSaWdodEJ1dHRv
bnNUbyA9IGZ1bmN0aW9uKHBhcmVudCkgewogfTsKIAogLyoqCi0gKiBAcmV0dXJuIHshbnVtYmVy
fQotICovCi1ZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS55ZWFyID0gZnVuY3Rpb24oKSB7
Ci0gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRZZWFyOwotfTsKLQotLyoqCi0gKiBAcmV0dXJuIHsh
bnVtYmVyfQorICogQHJldHVybiB7P21vbnRofQogICovCiBZZWFyTW9udGhDb250cm9sbGVyLnBy
b3RvdHlwZS5tb250aCA9IGZ1bmN0aW9uKCkgewogICAgIHJldHVybiB0aGlzLl9jdXJyZW50TW9u
dGg7CkBAIC01NjgsMTYgKzYzNiwxNSBAQCBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5t
b250aCA9IGZ1bmN0aW9uKCkgewogICogQHBhcmFtIHshbnVtYmVyfSB5ZWFyCiAgKiBAcGFyYW0g
eyFudW1iZXJ9IG1vbnRoCiAgKi8KLVllYXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLnNldFll
YXJNb250aCA9IGZ1bmN0aW9uKHllYXIsIG1vbnRoKSB7Ci0gICAgdGhpcy5fY3VycmVudFllYXIg
PSB5ZWFyOwotICAgIHRoaXMuX2N1cnJlbnRNb250aCA9IG1vbnRoOworWWVhck1vbnRoQ29udHJv
bGxlci5wcm90b3R5cGUuc2V0TW9udGggPSBmdW5jdGlvbihtb250aCkgeworICAgIHRoaXMuX2N1
cnJlbnRNb250aCA9IG5ldyBNb250aChtb250aCk7CiAgICAgdGhpcy5fcmVkcmF3KCk7CiB9Owog
CiBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5fcmVkcmF3ID0gZnVuY3Rpb24oKSB7Ci0g
ICAgdmFyIG1pbiA9IHRoaXMucGlja2VyLm1pbmltdW1EYXRlLmdldFVUQ0Z1bGxZZWFyKCkgKiAx
MiArIHRoaXMucGlja2VyLm1pbmltdW1EYXRlLmdldFVUQ01vbnRoKCk7Ci0gICAgdmFyIG1heCA9
IHRoaXMucGlja2VyLm1heGltdW1EYXRlLmdldFVUQ0Z1bGxZZWFyKCkgKiAxMiArIHRoaXMucGlj
a2VyLm1heGltdW1EYXRlLmdldFVUQ01vbnRoKCk7Ci0gICAgdmFyIGN1cnJlbnQgPSB0aGlzLl9j
dXJyZW50WWVhciAqIDEyICsgdGhpcy5fY3VycmVudE1vbnRoOworICAgIHZhciBtaW4gPSBNb250
aC5jb250YWluaW5nKHRoaXMucGlja2VyLm1pbmltdW1EYXRlKS52YWx1ZU9mKCk7CisgICAgdmFy
IG1heCA9IE1vbnRoLmNvbnRhaW5pbmcodGhpcy5waWNrZXIubWF4aW11bURhdGUpLnZhbHVlT2Yo
KTsKKyAgICB2YXIgY3VycmVudCA9IHRoaXMuX2N1cnJlbnRNb250aC52YWx1ZU9mKCk7CiAgICAg
aWYgKHRoaXMuX2xlZnQzKQogICAgICAgICB0aGlzLl9sZWZ0My5kaXNhYmxlZCA9IGN1cnJlbnQg
LSAxMyA8IG1pbjsKICAgICB0aGlzLl9sZWZ0Mi5kaXNhYmxlZCA9IGN1cnJlbnQgLSAyIDwgbWlu
OwpAQCAtNTg2LDE1ICs2NTMsMTYgQEAgWWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUuX3Jl
ZHJhdyA9IGZ1bmN0aW9uKCkgewogICAgIHRoaXMuX3JpZ2h0Mi5kaXNhYmxlZCA9IGN1cnJlbnQg
KyAyID4gbWF4OwogICAgIGlmICh0aGlzLl9yaWdodDMpCiAgICAgICAgIHRoaXMuX3JpZ2h0My5k
aXNhYmxlZCA9IGN1cnJlbnQgKyAxMyA+IG1heDsKLSAgICB0aGlzLl9tb250aC5pbm5lclRleHQg
PSBmb3JtYXRZZWFyTW9udGgodGhpcy5fY3VycmVudFllYXIsIHRoaXMuX2N1cnJlbnRNb250aCk7
CisgICAgdGhpcy5fbW9udGguaW5uZXJUZXh0ID0gdGhpcy5fY3VycmVudE1vbnRoLnRvTG9jYWxl
U3RyaW5nKCk7CiAgICAgd2hpbGUgKHRoaXMuX21vbnRoUG9wdXBDb250ZW50cy5oYXNDaGlsZE5v
ZGVzKCkpCiAgICAgICAgIHRoaXMuX21vbnRoUG9wdXBDb250ZW50cy5yZW1vdmVDaGlsZCh0aGlz
Ll9tb250aFBvcHVwQ29udGVudHMuZmlyc3RDaGlsZCk7CiAKICAgICBmb3IgKHZhciBtID0gY3Vy
cmVudCAtIDY7IG0gPD0gY3VycmVudCArIDY7IG0rKykgewogICAgICAgICBpZiAobSA8IG1pbiB8
fCBtID4gbWF4KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHZhciBvcHRpb24gPSBj
cmVhdGVFbGVtZW50KCJkaXYiLCBDbGFzc05hbWVzLk1vbnRoU2VsZWN0b3JQb3B1cEVudHJ5LCBm
b3JtYXRZZWFyTW9udGgoTWF0aC5mbG9vcihtIC8gMTIpLCBtICUgMTIpKTsKLSAgICAgICAgb3B0
aW9uLmRhdGFzZXQudmFsdWUgPSBTdHJpbmcoTWF0aC5mbG9vcihtIC8gMTIpKSArICItIiArIFN0
cmluZyhtICUgMTIpOworICAgICAgICB2YXIgbW9udGggPSBuZXcgTW9udGgobSk7CisgICAgICAg
IHZhciBvcHRpb24gPSBjcmVhdGVFbGVtZW50KCJkaXYiLCBDbGFzc05hbWVzLk1vbnRoU2VsZWN0
b3JQb3B1cEVudHJ5LCBtb250aC50b0xvY2FsZVN0cmluZygpKTsKKyAgICAgICAgb3B0aW9uLmRh
dGFzZXQudmFsdWUgPSBtb250aC50b1N0cmluZygpOwogICAgICAgICB0aGlzLl9tb250aFBvcHVw
Q29udGVudHMuYXBwZW5kQ2hpbGQob3B0aW9uKTsKICAgICAgICAgaWYgKG0gPT0gY3VycmVudCkK
ICAgICAgICAgICAgIG9wdGlvbi5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuU2VsZWN0ZWRNb250
aFllYXIpOwpAQCAtNzE1LDEzICs3ODMsNyBAQCBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlw
ZS5faGFuZGxlWWVhck1vbnRoQ2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgdmFyIHNlbGVjdGlv
biA9IHRoaXMuX2dldFNlbGVjdGlvbigpOwogICAgIGlmICghc2VsZWN0aW9uKQogICAgICAgICBy
ZXR1cm47Ci0gICAgdmFyIHZhbHVlID0gc2VsZWN0aW9uLmRhdGFzZXQudmFsdWU7Ci0gICAgdmFy
IHJlc3VsdCAgPSB2YWx1ZS5tYXRjaCgvKFxkKyktKFxkKykvKTsKLSAgICBpZiAoIXJlc3VsdCkK
LSAgICAgICAgcmV0dXJuOwotICAgIHZhciBuZXdZZWFyID0gTnVtYmVyKHJlc3VsdFsxXSk7Ci0g
ICAgdmFyIG5ld01vbnRoID0gTnVtYmVyKHJlc3VsdFsyXSk7Ci0gICAgdGhpcy5waWNrZXIuZGF5
c1RhYmxlLm5hdmlnYXRlVG9Nb250aEFuZEtlZXBTZWxlY3Rpb25Qb3NpdGlvbihuZXdZZWFyLCBu
ZXdNb250aCk7CisgICAgdGhpcy5waWNrZXIuZGF5c1RhYmxlLm5hdmlnYXRlVG9Nb250aEFuZEtl
ZXBTZWxlY3Rpb25Qb3NpdGlvbihNb250aC5wYXJzZShzZWxlY3Rpb24uZGF0YXNldC52YWx1ZSkp
OwogfTsKIAogLyoKQEAgLTc3OSw5ICs4NDEsOSBAQCBZZWFyTW9udGhDb250cm9sbGVyLnByb3Rv
dHlwZS5faGFuZGxlQnV0dG9uQ2xpY2sgPSBmdW5jdGlvbihldmVudCkgewogICogQHBhcmFtIHsh
bnVtYmVyfSBhbW91bnQKICAqLwogWWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUubW92ZVJl
bGF0aXZlbHkgPSBmdW5jdGlvbihhbW91bnQpIHsKLSAgICB2YXIgbWluID0gdGhpcy5waWNrZXIu
bWluaW11bURhdGUuZ2V0VVRDRnVsbFllYXIoKSAqIDEyICsgdGhpcy5waWNrZXIubWluaW11bURh
dGUuZ2V0VVRDTW9udGgoKTsKLSAgICB2YXIgbWF4ID0gdGhpcy5waWNrZXIubWF4aW11bURhdGUu
Z2V0VVRDRnVsbFllYXIoKSAqIDEyICsgdGhpcy5waWNrZXIubWF4aW11bURhdGUuZ2V0VVRDTW9u
dGgoKTsKLSAgICB2YXIgY3VycmVudCA9IHRoaXMuX2N1cnJlbnRZZWFyICogMTIgKyB0aGlzLl9j
dXJyZW50TW9udGg7CisgICAgdmFyIG1pbiA9IE1vbnRoLmNvbnRhaW5pbmcodGhpcy5waWNrZXIu
bWluaW11bURhdGUpLnZhbHVlT2YoKTsKKyAgICB2YXIgbWF4ID0gTW9udGguY29udGFpbmluZyh0
aGlzLnBpY2tlci5tYXhpbXVtRGF0ZSkudmFsdWVPZigpOworICAgIHZhciBjdXJyZW50ID0gdGhp
cy5fY3VycmVudE1vbnRoLnZhbHVlT2YoKTsKICAgICB2YXIgdXBkYXRlZCA9IGN1cnJlbnQ7CiAg
ICAgaWYgKGFtb3VudCA8IDApCiAgICAgICAgIHVwZGF0ZWQgPSBjdXJyZW50ICsgYW1vdW50ID49
IG1pbiA/IGN1cnJlbnQgKyBhbW91bnQgOiBtaW47CkBAIC03ODksNyArODUxLDcgQEAgWWVhck1v
bnRoQ29udHJvbGxlci5wcm90b3R5cGUubW92ZVJlbGF0aXZlbHkgPSBmdW5jdGlvbihhbW91bnQp
IHsKICAgICAgICAgdXBkYXRlZCA9IGN1cnJlbnQgKyBhbW91bnQgPD0gbWF4ID8gY3VycmVudCAr
IGFtb3VudCA6IG1heDsKICAgICBpZiAodXBkYXRlZCA9PSBjdXJyZW50KQogICAgICAgICByZXR1
cm47Ci0gICAgdGhpcy5waWNrZXIuZGF5c1RhYmxlLm5hdmlnYXRlVG9Nb250aEFuZEtlZXBTZWxl
Y3Rpb25Qb3NpdGlvbihNYXRoLmZsb29yKHVwZGF0ZWQgLyAxMiksIHVwZGF0ZWQgJSAxMik7Cisg
ICAgdGhpcy5waWNrZXIuZGF5c1RhYmxlLm5hdmlnYXRlVG9Nb250aEFuZEtlZXBTZWxlY3Rpb25Q
b3NpdGlvbihuZXcgTW9udGgodXBkYXRlZCkpOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtODAxLDEz
ICs4NjMsOSBAQCBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5tb3ZlUmVsYXRpdmVseSA9
IGZ1bmN0aW9uKGFtb3VudCkgewogZnVuY3Rpb24gRGF5c1RhYmxlKHBpY2tlcikgewogICAgIHRo
aXMucGlja2VyID0gcGlja2VyOwogICAgIC8qKgotICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAg
ICAqIEB0eXBlIHs/TW9udGh9CiAgICAgICovCi0gICAgdGhpcy5fY3VycmVudFllYXIgPSAtMTsK
LSAgICAvKioKLSAgICAgKiBAdHlwZSB7IW51bWJlcn0KLSAgICAgKi8KLSAgICB0aGlzLl9jdXJy
ZW50TW9udGggPSAtMTsKKyAgICB0aGlzLl9jdXJyZW50TW9udGggPSBudWxsOwogfQogCiAvKioK
QEAgLTg4OSwxMCArOTQ3LDkgQEAgQ2FsZW5kYXJQaWNrZXIucHJvdG90eXBlLmlzVmFsaWREYXRl
ID0gZnVuY3Rpb24odGltZSkgewogICogQHBhcmFtIHshbnVtYmVyfSB5ZWFyCiAgKiBAcGFyYW0g
eyFudW1iZXJ9IG1vbnRoCiAgKi8KLURheXNUYWJsZS5wcm90b3R5cGUuX3JlbmRlck1vbnRoID0g
ZnVuY3Rpb24oeWVhciwgbW9udGgpIHsKLSAgICB0aGlzLl9jdXJyZW50WWVhciA9IHllYXI7Ci0g
ICAgdGhpcy5fY3VycmVudE1vbnRoID0gbW9udGg7Ci0gICAgdmFyIGRheUl0ZXJhdG9yID0gY3Jl
YXRlVVRDRGF0ZSh5ZWFyLCBtb250aCwgMSk7CitEYXlzVGFibGUucHJvdG90eXBlLl9yZW5kZXJN
b250aCA9IGZ1bmN0aW9uKG1vbnRoKSB7CisgICAgdGhpcy5fY3VycmVudE1vbnRoID0gbmV3IE1v
bnRoKG1vbnRoKTsKKyAgICB2YXIgZGF5SXRlcmF0b3IgPSB0aGlzLl9jdXJyZW50TW9udGgubWlu
aW11bSgpOwogICAgIHZhciBtb250aFN0YXJ0RGF5ID0gZGF5SXRlcmF0b3IuZ2V0VVRDRGF5KCk7
CiAgICAgdmFyIHdlZWtTdGFydERheSA9IGdsb2JhbC5wYXJhbXMud2Vla1N0YXJ0RGF5IHx8IDA7
CiAgICAgdmFyIHN0YXJ0T2Zmc2V0ID0gd2Vla1N0YXJ0RGF5IC0gbW9udGhTdGFydERheTsKQEAg
LTkwMSwyNiArOTU4LDIyIEBAIERheXNUYWJsZS5wcm90b3R5cGUuX3JlbmRlck1vbnRoID0gZnVu
Y3Rpb24oeWVhciwgbW9udGgpIHsKICAgICBkYXlJdGVyYXRvci5zZXRVVENEYXRlKHN0YXJ0T2Zm
c2V0ICsgMSk7CiAgICAgZm9yICh2YXIgdyA9IDA7IHcgPCBEYXlzVGFibGUuX1dlZWtzOyB3Kysp
IHsKICAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCA3OyBkKyspIHsKLSAgICAgICAgICAgIHZh
ciBpdGVyWWVhciA9IGRheUl0ZXJhdG9yLmdldFVUQ0Z1bGxZZWFyKCk7Ci0gICAgICAgICAgICB2
YXIgaXRlck1vbnRoID0gZGF5SXRlcmF0b3IuZ2V0VVRDTW9udGgoKTsKKyAgICAgICAgICAgIHZh
ciBpdGVyTW9udGggPSBNb250aC5jb250YWluaW5nKGRheUl0ZXJhdG9yKTsKICAgICAgICAgICAg
IHZhciB0aW1lID0gZGF5SXRlcmF0b3IuZ2V0VGltZSgpOwogICAgICAgICAgICAgdmFyIGVsZW1l
bnQgPSB0aGlzLl9kYXlzW3ddW2RdOwogICAgICAgICAgICAgZWxlbWVudC5pbm5lclRleHQgPSBs
b2NhbGl6ZU51bWJlcihkYXlJdGVyYXRvci5nZXRVVENEYXRlKCkpOwogICAgICAgICAgICAgZWxl
bWVudC5jbGFzc05hbWUgPSBDbGFzc05hbWVzLkRheTsKLSAgICAgICAgICAgIGVsZW1lbnQuZGF0
YXNldC5zdWJtaXRWYWx1ZSA9IHNlcmlhbGl6ZURhdGUoaXRlclllYXIsIGl0ZXJNb250aCwgZGF5
SXRlcmF0b3IuZ2V0VVRDRGF0ZSgpKTsKLSAgICAgICAgICAgIGlmICh0aGlzLnBpY2tlci5vdXRP
ZlJhbmdlKHRpbWUpKQorICAgICAgICAgICAgZWxlbWVudC5kYXRhc2V0LnN1Ym1pdFZhbHVlID0g
c2VyaWFsaXplRGF0ZShpdGVyTW9udGgueWVhciwgaXRlck1vbnRoLm1vbnRoLCBkYXlJdGVyYXRv
ci5nZXRVVENEYXRlKCkpOworICAgICAgICAgICAgaWYgKGlzTmFOKHRpbWUpKSB7CisgICAgICAg
ICAgICAgICAgZWxlbWVudC5pbm5lclRleHQgPSAiLSI7CisgICAgICAgICAgICAgICAgZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuVW5hdmFpbGFibGUpOworICAgICAgICAgICAgfSBl
bHNlIGlmICh0aGlzLnBpY2tlci5vdXRPZlJhbmdlKHRpbWUpKQogICAgICAgICAgICAgICAgIGVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChDbGFzc05hbWVzLlVuYXZhaWxhYmxlKTsKICAgICAgICAgICAg
IGVsc2UgaWYgKHRoaXMucGlja2VyLnN0ZXBNaXNtYXRjaCh0aW1lKSkKICAgICAgICAgICAgICAg
ICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5VbmF2YWlsYWJsZSk7Ci0gICAgICAg
ICAgICBlbHNlIGlmICgoaXRlclllYXIgPT0geWVhciAmJiBkYXlJdGVyYXRvci5nZXRVVENNb250
aCgpIDwgbW9udGgpIHx8IChtb250aCA9PSAwICYmIGl0ZXJNb250aCA9PSAxMSkpIHsKLSAgICAg
ICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5BdmFpbGFibGUpOwot
ICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDbGFzc05hbWVzLk5vdFRoaXNN
b250aCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKChpdGVyWWVhciA9PSB5ZWFyICYmIGRheUl0
ZXJhdG9yLmdldFVUQ01vbnRoKCkgPiBtb250aCkgfHwgKG1vbnRoID09IDExICYmIGl0ZXJNb250
aCA9PSAwKSkgeworICAgICAgICAgICAgZWxzZSBpZiAoIWl0ZXJNb250aC5lcXVhbHModGhpcy5f
Y3VycmVudE1vbnRoKSkgewogICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChD
bGFzc05hbWVzLkF2YWlsYWJsZSk7CiAgICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKENsYXNzTmFtZXMuTm90VGhpc01vbnRoKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNO
YU4odGltZSkpIHsKLSAgICAgICAgICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9ICItIjsKLSAg
ICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5VbmF2YWlsYWJs
ZSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlz
dC5hZGQoQ2xhc3NOYW1lcy5BdmFpbGFibGUpOwogICAgICAgICAgICAgZGF5SXRlcmF0b3Iuc2V0
VVRDRGF0ZShkYXlJdGVyYXRvci5nZXRVVENEYXRlKCkgKyAxKTsKQEAgLTkzNCwzMiArOTg3LDI2
IEBAIERheXNUYWJsZS5wcm90b3R5cGUuX3JlbmRlck1vbnRoID0gZnVuY3Rpb24oeWVhciwgbW9u
dGgpIHsKICAqIEBwYXJhbSB7IW51bWJlcn0geWVhcgogICogQHBhcmFtIHshbnVtYmVyfSBtb250
aAogICovCi1EYXlzVGFibGUucHJvdG90eXBlLl9uYXZpZ2F0ZVRvTW9udGggPSBmdW5jdGlvbih5
ZWFyLCBtb250aCkgewotICAgIHRoaXMucGlja2VyLnllYXJNb250aENvbnRyb2xsZXIuc2V0WWVh
ck1vbnRoKHllYXIsIG1vbnRoKTsKLSAgICB0aGlzLl9yZW5kZXJNb250aCh5ZWFyLCBtb250aCk7
CitEYXlzVGFibGUucHJvdG90eXBlLl9uYXZpZ2F0ZVRvTW9udGggPSBmdW5jdGlvbihtb250aCkg
eworICAgIHRoaXMucGlja2VyLnllYXJNb250aENvbnRyb2xsZXIuc2V0TW9udGgobW9udGgpOwor
ICAgIHRoaXMuX3JlbmRlck1vbnRoKG1vbnRoKTsKIH07CiAKIC8qKgogICogQHBhcmFtIHshbnVt
YmVyfSB5ZWFyCiAgKiBAcGFyYW0geyFudW1iZXJ9IG1vbnRoCiAgKi8KLURheXNUYWJsZS5wcm90
b3R5cGUuX25hdmlnYXRlVG9Nb250aFdpdGhBbmltYXRpb24gPSBmdW5jdGlvbih5ZWFyLCBtb250
aCkgewotICAgIGlmICh0aGlzLl9jdXJyZW50WWVhciA+PSAwICYmIHRoaXMuX2N1cnJlbnRNb250
aCA+PSAwKSB7Ci0gICAgICAgIGlmICh5ZWFyID09IHRoaXMuX2N1cnJlbnRZZWFyICYmIG1vbnRo
ID09IHRoaXMuX2N1cnJlbnRNb250aCkKK0RheXNUYWJsZS5wcm90b3R5cGUuX25hdmlnYXRlVG9N
b250aFdpdGhBbmltYXRpb24gPSBmdW5jdGlvbihtb250aCkgeworICAgIGlmICh0aGlzLl9jdXJy
ZW50TW9udGgpIHsKKyAgICAgICAgdmFyIGRlbHRhID0gdGhpcy5fY3VycmVudE1vbnRoLnZhbHVl
T2YoKSAtIG1vbnRoLnZhbHVlT2YoKTsKKyAgICAgICAgaWYgKGRlbHRhID09PSAwKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgZGVjcmVhc2luZyA9IGZhbHNlOwotICAgICAgICBp
ZiAoeWVhciA8IHRoaXMuX2N1cnJlbnRZZWFyKQotICAgICAgICAgICAgZGVjcmVhc2luZyA9IHRy
dWU7Ci0gICAgICAgIGVsc2UgaWYgKHllYXIgPiB0aGlzLl9jdXJyZW50WWVhcikKLSAgICAgICAg
ICAgIGRlY3JlYXNpbmcgPSBmYWxzZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZGVjcmVh
c2luZyA9IG1vbnRoIDwgdGhpcy5fY3VycmVudE1vbnRoOwogICAgICAgICB2YXIgZGF5c1N0eWxl
ID0gdGhpcy5fZGF5c0NvbnRhaW5lci5zdHlsZTsKICAgICAgICAgZGF5c1N0eWxlLnBvc2l0aW9u
ID0gInJlbGF0aXZlIjsKICAgICAgICAgZGF5c1N0eWxlLndlYmtpdFRyYW5zaXRpb24gPSAibGVm
dCAwLjFzIGVhc2UiOwotICAgICAgICBkYXlzU3R5bGUubGVmdCA9IChkZWNyZWFzaW5nID8gIiIg
OiAiLSIpICsgdGhpcy5fZGF5c0NvbnRhaW5lci5vZmZzZXRXaWR0aCArICJweCI7CisgICAgICAg
IGRheXNTdHlsZS5sZWZ0ID0gKGRlbHRhID4gMCA/ICIiIDogIi0iKSArIHRoaXMuX2RheXNDb250
YWluZXIub2Zmc2V0V2lkdGggKyAicHgiOwogICAgIH0KLSAgICB0aGlzLl9uYXZpZ2F0ZVRvTW9u
dGgoeWVhciwgbW9udGgpOworICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aChtb250aCk7CiB9Owog
CiBEYXlzVGFibGUucHJvdG90eXBlLl9tb3ZlSW5EYXlzID0gZnVuY3Rpb24oKSB7CkBAIC05Nzcs
MTEgKzEwMjQsMTEgQEAgRGF5c1RhYmxlLnByb3RvdHlwZS5fbW92ZUluRGF5cyA9IGZ1bmN0aW9u
KCkgewogICogQHBhcmFtIHshbnVtYmVyfSB5ZWFyCiAgKiBAcGFyYW0geyFudW1iZXJ9IG1vbnRo
CiAgKi8KLURheXNUYWJsZS5wcm90b3R5cGUubmF2aWdhdGVUb01vbnRoQW5kS2VlcFNlbGVjdGlv
blBvc2l0aW9uID0gZnVuY3Rpb24oeWVhciwgbW9udGgpIHsKLSAgICBpZiAoeWVhciA9PSB0aGlz
Ll9jdXJyZW50WWVhciAmJiBtb250aCA9PSB0aGlzLl9jdXJyZW50TW9udGgpCitEYXlzVGFibGUu
cHJvdG90eXBlLm5hdmlnYXRlVG9Nb250aEFuZEtlZXBTZWxlY3Rpb25Qb3NpdGlvbiA9IGZ1bmN0
aW9uKG1vbnRoKSB7CisgICAgaWYgKHRoaXMuX2N1cnJlbnRNb250aC5lcXVhbHMobW9udGgpKQog
ICAgICAgICByZXR1cm47CiAgICAgdmFyIGZpcnN0Tm9kZUluU2VsZWN0ZWRSYW5nZSA9IHRoaXMu
X2ZpcnN0Tm9kZUluU2VsZWN0ZWRSYW5nZSgpOwotICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aFdp
dGhBbmltYXRpb24oeWVhciwgbW9udGgpOworICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aFdpdGhB
bmltYXRpb24obW9udGgpOwogICAgIGlmIChmaXJzdE5vZGVJblNlbGVjdGVkUmFuZ2UpIHsKICAg
ICAgICAgdmFyIHggPSBwYXJzZUludChmaXJzdE5vZGVJblNlbGVjdGVkUmFuZ2UuZGF0YXNldC5w
b3NpdGlvblgsIDEwKTsKICAgICAgICAgdmFyIHkgPSBwYXJzZUludChmaXJzdE5vZGVJblNlbGVj
dGVkUmFuZ2UuZGF0YXNldC5wb3NpdGlvblksIDEwKTsKQEAgLTk5NCw3ICsxMDQxLDcgQEAgRGF5
c1RhYmxlLnByb3RvdHlwZS5uYXZpZ2F0ZVRvTW9udGhBbmRLZWVwU2VsZWN0aW9uUG9zaXRpb24g
PSBmdW5jdGlvbih5ZWFyLCBtb24KICAqLwogRGF5c1RhYmxlLnByb3RvdHlwZS5zZWxlY3REYXRl
ID0gZnVuY3Rpb24oZGF0ZSkgewogICAgIHRoaXMuX2Rlc2VsZWN0KCk7Ci0gICAgdGhpcy5fbmF2
aWdhdGVUb01vbnRoV2l0aEFuaW1hdGlvbihkYXRlLmdldFVUQ0Z1bGxZZWFyKCksIGRhdGUuZ2V0
VVRDTW9udGgoKSk7CisgICAgdGhpcy5fbmF2aWdhdGVUb01vbnRoV2l0aEFuaW1hdGlvbihNb250
aC5jb250YWluaW5nKGRhdGUpKTsKICAgICB2YXIgZGF0ZVN0cmluZyA9IHNlcmlhbGl6ZURhdGUo
ZGF0ZS5nZXRVVENGdWxsWWVhcigpLCBkYXRlLmdldFVUQ01vbnRoKCksIGRhdGUuZ2V0VVRDRGF0
ZSgpKTsKICAgICBmb3IgKHZhciB3ID0gMDsgdyA8IERheXNUYWJsZS5fV2Vla3M7IHcrKykgewog
ICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IDc7IGQrKykgewpAQCAtMTA0MiwxNyArMTA4OSwx
MSBAQCBEYXlzVGFibGUucHJvdG90eXBlLl9kZXNlbGVjdCA9IGZ1bmN0aW9uKCkgewogICogQHJl
dHVybiB7IWJvb2xlYW59CiAgKi8KIERheXNUYWJsZS5wcm90b3R5cGUuX21heWJlU2V0UHJldmlv
dXNNb250aCA9IGZ1bmN0aW9uKCkgewotICAgIHZhciB5ZWFyID0gdGhpcy5waWNrZXIueWVhck1v
bnRoQ29udHJvbGxlci55ZWFyKCk7Ci0gICAgdmFyIG1vbnRoID0gdGhpcy5waWNrZXIueWVhck1v
bnRoQ29udHJvbGxlci5tb250aCgpOwotICAgIHZhciB0aGlzTW9udGhTdGFydFRpbWUgPSBjcmVh
dGVVVENEYXRlKHllYXIsIG1vbnRoLCAxKS5nZXRUaW1lKCk7Ci0gICAgaWYgKHRoaXMucGlja2Vy
Lm1pbmltdW1EYXRlLmdldFRpbWUoKSA+PSB0aGlzTW9udGhTdGFydFRpbWUpCisgICAgdmFyIGN1
cnJlbnRNb250aCA9IHRoaXMucGlja2VyLnllYXJNb250aENvbnRyb2xsZXIubW9udGgoKTsKKyAg
ICB2YXIgY3VycmVudE1vbnRoU3RhcnQgPSBjdXJyZW50TW9udGgubWluaW11bSgpOworICAgIGlm
ICh0aGlzLnBpY2tlci5taW5pbXVtRGF0ZSA+PSBjdXJyZW50TW9udGhTdGFydCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmIChtb250aCA9PSAwKSB7Ci0gICAgICAgIHllYXItLTsKLSAg
ICAgICAgbW9udGggPSAxMTsKLSAgICB9IGVsc2UKLSAgICAgICAgbW9udGgtLTsKLSAgICB0aGlz
Ll9uYXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0aW9uKHllYXIsIG1vbnRoKTsKKyAgICB0aGlzLl9u
YXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0aW9uKGN1cnJlbnRNb250aC5wcmV2aW91cygpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH07CiAKQEAgLTEwNjAsMTcgKzExMDEsMTAgQEAgRGF5c1RhYmxlLnBy
b3RvdHlwZS5fbWF5YmVTZXRQcmV2aW91c01vbnRoID0gZnVuY3Rpb24oKSB7CiAgKiBAcmV0dXJu
IHshYm9vbGVhbn0KICAqLwogRGF5c1RhYmxlLnByb3RvdHlwZS5fbWF5YmVTZXROZXh0TW9udGgg
PSBmdW5jdGlvbigpIHsKLSAgICB2YXIgeWVhciA9IHRoaXMucGlja2VyLnllYXJNb250aENvbnRy
b2xsZXIueWVhcigpOwotICAgIHZhciBtb250aCA9IHRoaXMucGlja2VyLnllYXJNb250aENvbnRy
b2xsZXIubW9udGgoKTsKLSAgICBpZiAobW9udGggPT0gMTEpIHsKLSAgICAgICAgeWVhcisrOwot
ICAgICAgICBtb250aCA9IDA7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1vbnRoKys7Ci0gICAgdmFy
IG5leHRNb250aFN0YXJ0VGltZSA9IGNyZWF0ZVVUQ0RhdGUoeWVhciwgbW9udGgsIDEpLmdldFRp
bWUoKTsKLSAgICBpZiAodGhpcy5waWNrZXIubWF4aW11bURhdGUuZ2V0VGltZSgpIDwgbmV4dE1v
bnRoU3RhcnRUaW1lKQorICAgIHZhciBjdXJyZW50TW9udGggPSB0aGlzLnBpY2tlci55ZWFyTW9u
dGhDb250cm9sbGVyLm1vbnRoKCk7CisgICAgaWYgKHRoaXMucGlja2VyLm1heGltdW1EYXRlIDwg
Y3VycmVudE1vbnRoLm1heGltdW0oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHRoaXMu
X25hdmlnYXRlVG9Nb250aFdpdGhBbmltYXRpb24oeWVhciwgbW9udGgpOworICAgIHRoaXMuX25h
dmlnYXRlVG9Nb250aFdpdGhBbmltYXRpb24oY3VycmVudE1vbnRoLm5leHQoKSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmUzMzA3ZDE3MTVlODZhOWRjMjUwMTEwNjkwZDJhODM4
ZDIwYmU3Ni4uYWRmY2ZiMzhjMDVjMmNiZWEyZWQ5NTg4ZTkwNGU1NjA0MjVjOGJlNiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDEyLTExLTAyICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJr
aXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBNb250aCBjbGFzcyB0byBjYWxlbmRhciBwaWNr
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTAy
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2Vy
LWtleS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXIta2V5LW9wZXJhdGlv
bnMuaHRtbDogQWRqdXN0IHRoZSBleHBlY3RhdGlvbiBiZWNhdXNlIHdlIGNoYW5nZWQgdGhlIG1v
bnRoIHN0cmluZyBmb3JtYXQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jt
cy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLW1vdXNlLW9wZXJhdGlvbnMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXIt
cGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3VzZS1vcGVyYXRpb25zLmh0bWw6IERpdHRvLgorCiAy
MDEyLTExLTAxICBTZW9uYWUgS2ltICA8c3VuYWVsdXYua2ltQHNhbXN1bmcuY29tPgogCiAgICAg
ICAgIFtFRkxdW0RSVF0gU3VwcG9ydCBHZW9sb2NhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXIt
cGlja2VyLWtleS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1rZXkt
b3BlcmF0aW9ucy1leHBlY3RlZC50eHQKaW5kZXggMjViNTQ2OTI1MjI5ZWJhMjlmMTIwZGI4M2U1
NmVlOGI0MDU5OWFiOS4uNjljMjY4MjUwZDAwNGRhMWJmYzIwMTVjYzA4ZWM1YzU3YjRhZWM0NiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxl
bmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLWtleS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBp
Y2tlci9jYWxlbmRhci1waWNrZXIta2V5LW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC04LDQw
ICs4LDQwIEBAIFBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIp
IGlzIG51bGwKIENoZWNrIHRoYXQgcGFnZSBwb3B1cCBleGlzdHMuCiBQQVNTIHBvcHVwV2luZG93
LnBhZ2VQb3B1cENvbnRyb2xsZXIudG9TdHJpbmcoKSBpcyAiW29iamVjdCBQYWdlUG9wdXBDb250
cm9sbGVyXSIKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIwMDAtMDEtMDIiCi1QQVNTIGN1cnJl
bnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgog
Q2hlY2sgdGhhdCBhcnJvdyBrZXlzIHdvcmsgcHJvcGVybHkgZXZlbiB3aGVuIGdvaW5nIGJldHdl
ZW4gd2Vla3MgYW5kIG1vbnRocy4KIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjE5OTktMTItMjYi
Ci1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlz
ICIyMDAwLTAxIgogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMjAwMC0wMS0wMiIKLVBBU1MgY3Vy
cmVudE1vbnRoKCkgaXMgIjE5OTktMTEiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIxOTk5LTEy
IgogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMTk5OS0xMi0yNiIKLVBBU1MgY3VycmVudE1vbnRo
KCkgaXMgIjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBQQVNTIHNl
bGVjdGVkRGF0ZSgpIGlzICIyMDAwLTAxLTAyIgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAw
MC0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wMSIKIFBBU1Mgc2VsZWN0ZWREYXRl
KCkgaXMgIjE5OTktMTItMjYiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNT
IGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMjAw
MC0wMS0wOCIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjE5OTktMTEiCitQQVNTIGN1cnJlbnRN
b250aCgpIGlzICIxOTk5LTEyIgogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMTk5OS0xMi0yNiIK
LVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMg
IjIwMDAtMDEiCiBwcmVzcyBtCiBGQUlMIHNlbGVjdGVkRGF0ZSgpIHNob3VsZCBiZSAyMDAwLTAx
LTI2LiBXYXMgMjAwMC0wMS0zMC4KLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMSIKK1BB
U1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDIiCiBwcmVzcyBzaGlmdCArIG0KIFBBU1Mgc2Vs
ZWN0ZWREYXRlKCkgaXMgIjE5OTktMTItMjYiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAw
LTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgogcHJlc3MgeQogUEFTUyBzZWxl
Y3RlZERhdGUoKSBpcyAiMjAwMC0xMi0zMSIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDEt
MCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDEtMDEiCiBwcmVzcyBzaGlmdCArIHkKIFBB
U1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjE5OTktMTItMjYiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlz
ICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgogcHJlc3MgZAogUEFT
UyBzZWxlY3RlZERhdGUoKSBpcyAiMjAwOS0xMi0yNyIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMg
IjIwMTAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMTAtMDEiCiBwcmVzcyBzaGlmdCAr
IGQKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjE5OTktMTItMjYiCi1QQVNTIGN1cnJlbnRNb250
aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgogUEFTUyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9jay1wYWdlLXBvcHVwIikgaXMgbnVsbAogUEFTUyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGF0ZSIpLnZhbHVlIGlzICIxOTk5LTEyLTI2IgogUEFT
UyB0ZXN0VG9kYXkoKSB8fCB0ZXN0VG9kYXkoKSBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRh
ci1waWNrZXIta2V5LW9wZXJhdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1rZXktb3BlcmF0
aW9ucy5odG1sCmluZGV4IDdjMWI3YjdiYTYxNWY4OTc4OWE5MGY4ODVhY2I2NGZlMDM5NDBmOTgu
LmExYmI5ZTc5NTExNTY0YjliNWQ1YmE3YWI5Y2M5OWQ1MmY5MWY2MTIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2Nh
bGVuZGFyLXBpY2tlci1rZXktb3BlcmF0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1r
ZXktb3BlcmF0aW9ucy5odG1sCkBAIC0yMiw2NyArMjIsNjcgQEAgZnVuY3Rpb24gdGVzdDEoKSB7
CiAgICAgc2hvdWxkQmUoJ3BvcHVwV2luZG93LnBhZ2VQb3B1cENvbnRyb2xsZXIudG9TdHJpbmco
KScsICciW29iamVjdCBQYWdlUG9wdXBDb250cm9sbGVyXSInKTsKIAogICAgIHNob3VsZEJlKCdz
ZWxlY3RlZERhdGUoKScsICciMjAwMC0wMS0wMiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1v
bnRoKCknLCAnIjIwMDAtMCInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIw
MDAtMDEiJyk7CiAKICAgICBkZWJ1ZygnQ2hlY2sgdGhhdCBhcnJvdyBrZXlzIHdvcmsgcHJvcGVy
bHkgZXZlbiB3aGVuIGdvaW5nIGJldHdlZW4gd2Vla3MgYW5kIG1vbnRocy4nKTsKIAogICAgIGV2
ZW50U2VuZGVyLmtleURvd24oJ3VwQXJyb3cnKTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRl
KCknLCAnIjE5OTktMTItMjYiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIy
MDAwLTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAxIicpOwog
ICAgIC8vIE1vdmUgZnJvbSBmaXJzdCByb3cgb2YgSmFudWFyeSAyMDAwIHRvIGxhc3Qgcm93IG9m
IERlY2VtYmVyIDE5OTkuCiAgICAgZXZlbnRTZW5kZXIua2V5RG93bigndXBBcnJvdycpOwogICAg
IHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMjAwMC0wMS0wMiInKTsKLSAgICBzaG91bGRC
ZSgnY3VycmVudE1vbnRoKCknLCAnIjE5OTktMTEiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRN
b250aCgpJywgJyIxOTk5LTEyIicpOwogICAgIAogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ2Rv
d25BcnJvdycpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMTk5OS0xMi0yNiIn
KTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMCInKTsKKyAgICBzaG91
bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAgICAgZXZlbnRTZW5kZXIua2V5
RG93bignZG93bkFycm93Jyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAw
LTAxLTAyIicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wIicpOwor
ICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSInKTsKIAogICAgIGV2ZW50
U2VuZGVyLmtleURvd24oJ3VwQXJyb3cnKTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCkn
LCAnIjE5OTktMTItMjYiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAw
LTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAxIicpOwogCiAg
ICAgLy8gTW92ZSBmcm9tIHRvcCBsZWZ0IG9mIEphbnVhcnkgMjAwMCB0byBib3R0b20gcmlnaHQg
b2YgRGVjZW1iZXIgMTk5OS4KICAgICBldmVudFNlbmRlci5rZXlEb3duKCdsZWZ0QXJyb3cnKTsK
ICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjIwMDAtMDEtMDgiJyk7Ci0gICAgc2hv
dWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIxOTk5LTExIicpOworICAgIHNob3VsZEJlKCdjdXJy
ZW50TW9udGgoKScsICciMTk5OS0xMiInKTsKIAogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ3Jp
Z2h0QXJyb3cnKTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjE5OTktMTItMjYi
Jyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAiJyk7CisgICAgc2hv
dWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAxIicpOwogCiAgICAgZGVidWcoInByZXNz
IG0iKTsKICAgICBldmVudFNlbmRlci5rZXlEb3duKCdtJyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVj
dGVkRGF0ZSgpJywgJyIyMDAwLTAxLTI2IicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgo
KScsICciMjAwMC0xIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0w
MiInKTsKIAogICAgIGRlYnVnKCJwcmVzcyBzaGlmdCArIG0iKTsKICAgICBldmVudFNlbmRlci5r
ZXlEb3duKCdNJyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIxOTk5LTEyLTI2
IicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wIicpOworICAgIHNo
b3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSInKTsKIAogICAgIGRlYnVnKCJwcmVz
cyB5Iik7CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bigneScpOwogICAgIHNob3VsZEJlKCdzZWxl
Y3RlZERhdGUoKScsICciMjAwMC0xMi0zMSInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRo
KCknLCAnIjIwMDEtMCInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDEt
MDEiJyk7CiAKICAgICBkZWJ1ZygicHJlc3Mgc2hpZnQgKyB5Iik7CiAgICAgZXZlbnRTZW5kZXIu
a2V5RG93bignWScpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMTk5OS0xMi0y
NiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMCInKTsKKyAgICBz
aG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAKICAgICBkZWJ1ZygicHJl
c3MgZCIpOwogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ2QnKTsKICAgICBzaG91bGRCZSgnc2Vs
ZWN0ZWREYXRlKCknLCAnIjIwMDktMTItMjciJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250
aCgpJywgJyIyMDEwLTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDEw
LTAxIicpOwogCiAgICAgZGVidWcoInByZXNzIHNoaWZ0ICsgZCIpOwogICAgIGV2ZW50U2VuZGVy
LmtleURvd24oJ0QnKTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjE5OTktMTIt
MjYiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAiJyk7CisgICAg
c2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAxIicpOwogCiAgICAgZXZlbnRTZW5k
ZXIua2V5RG93bignXG4nKTsKICAgICBzaG91bGRCZU51bGwoJ2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJtb2NrLXBhZ2UtcG9wdXAiKScpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIGZ1bmN0aW9uIHRl
c3RUb2RheSgpIHsKICAgICBldmVudFNlbmRlci5rZXlEb3duKCd0Jyk7CiAgICAgdmFyIG5vdyA9
IG5ldyBEYXRlKCk7CiAgICAgdmFyIGV4cGVjdGVkRGF0ZSA9IHNlcmlhbGl6ZURhdGUobm93Lmdl
dFVUQ0Z1bGxZZWFyKCksIG5vdy5nZXRVVENNb250aCgpLCBub3cuZ2V0VVRDRGF0ZSgpKTsKLSAg
ICB2YXIgZXhwZWN0ZWRNb250aCA9IG5vdy5nZXRVVENGdWxsWWVhcigpICsgIi0iICsgbm93Lmdl
dE1vbnRoKCk7CisgICAgdmFyIGV4cGVjdGVkTW9udGggPSBwb3B1cFdpbmRvdy5Nb250aC5jb250
YWluaW5nKG5vdykudG9TdHJpbmcoKTsKICAgICByZXR1cm4gc2VsZWN0ZWREYXRlKCkgPT09IGV4
cGVjdGVkRGF0ZSAmJiBjdXJyZW50TW9udGgoKSA9PT0gZXhwZWN0ZWRNb250aDsKIH0KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRh
ci1waWNrZXIvY2FsZW5kYXItcGlja2VyLW1vdXNlLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIv
Y2FsZW5kYXItcGlja2VyLW1vdXNlLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IGU5Njcw
NjMyMTU3OGNhOGU2M2M5NTFhNzhiMzk3ODJmNDVlYTA5YWIuLjVhMjdkNDE3M2RlZjA1YWZlY2Zl
ZWFiOGMyYjg4YWU4MmExMDE2MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3VzZS1v
cGVyYXRpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItbW91c2Utb3BlcmF0
aW9ucy1leHBlY3RlZC50eHQKQEAgLTYsMTUgKzYsMTUgQEAgT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUKIENoZWNrIHRoYXQgcGFnZSBwb3B1cCBkb2Vzbid0IGV4aXN0IGF0IGZpcnN0LgogUEFTUyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9jay1wYWdlLXBvcHVwIikgaXMgbnVsbAogUEFTUyBz
ZWxlY3RlZERhdGUoKSBpcyAiMjAwMC0wMS0wMiIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIw
MDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBDaGVjayB0aGF0IGhvdmVy
aW5nIG92ZXIgYW4gZW50cnkgaGlnaGxpZ2h0cyBpdC4KIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMg
IjE5OTktMTItMzEiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJl
bnRNb250aCgpIGlzICIyMDAwLTAxIgogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMjAwMC0wMS0w
NCIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkg
aXMgIjIwMDAtMDEiCiBDaGVjayB0aGF0IG5hdmlnYXRpbmcgYmV0d2VlbiBtb250aHMgbWFpbnRh
aW5zIHNlbGVjdGlvbiBwb3NpdGlvbi4KIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIwMDAtMDIt
MDgiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTEiCitQQVNTIGN1cnJlbnRNb250aCgp
IGlzICIyMDAwLTAyIgogQ2hlY2sgdGhhdCBtb3ZpbmcgdGhlIG1vdXNlIG91dHNpZGUgdGhlIHBv
cHVwIGRlLWhpZ2hsaWdodHMgZW50cmllcy4KIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgdW5kZWZp
bmVkLgogQ2hlY2sgdGhhdCBtb3VzZSBjbGljayBjbG9zZXMgdGhlIHBvcHVwIGFuZCBzZXRzIHRo
ZSB2YWx1ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
Zm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3VzZS1vcGVyYXRpb25zLmh0
bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBp
Y2tlci9jYWxlbmRhci1waWNrZXItbW91c2Utb3BlcmF0aW9ucy5odG1sCmluZGV4IDUyZDAzZmU1
OWY0MzUzY2YyODViZWEwODJkZjQ1YTgzNTI0ZDdkMmQuLmY4MDFhNDdhYWQzNTI3YmZkNTM0YzY2
MzczZmM1ZWQ0ZmE3NDJlODAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3VzZS1vcGVy
YXRpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jt
cy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLW1vdXNlLW9wZXJhdGlvbnMuaHRtbApA
QCAtMjAsMjEgKzIwLDIxIEBAIG9wZW5QaWNrZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rh
dGUnKSwgdGVzdCk7CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVk
RGF0ZSgpJywgJyIyMDAwLTAxLTAyIicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScs
ICciMjAwMC0wIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSIn
KTsKIAogICAgIGRlYnVnKCdDaGVjayB0aGF0IGhvdmVyaW5nIG92ZXIgYW4gZW50cnkgaGlnaGxp
Z2h0cyBpdC4nKTsKICAgICBob3Zlck92ZXJFbGVtZW50KHBvcHVwV2luZG93LmRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoImRheSIpWzVdKTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWRE
YXRlKCknLCAnIjE5OTktMTItMzEiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywg
JyIyMDAwLTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAxIicp
OwogCiAgICAgaG92ZXJPdmVyRWxlbWVudChwb3B1cFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCJkYXkiKVs5XSk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywg
JyIyMDAwLTAxLTA0IicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0w
IicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSInKTsKIAogICAg
IGRlYnVnKCdDaGVjayB0aGF0IG5hdmlnYXRpbmcgYmV0d2VlbiBtb250aHMgbWFpbnRhaW5zIHNl
bGVjdGlvbiBwb3NpdGlvbi4nKTsKICAgICBldmVudFNlbmRlci5rZXlEb3duKCdtJyk7CiAgICAg
c2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAwLTAyLTA4IicpOwotICAgIHNob3VsZEJl
KCdjdXJyZW50TW9udGgoKScsICciMjAwMC0xIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9u
dGgoKScsICciMjAwMC0wMiInKTsKIAogICAgIGRlYnVnKCdDaGVjayB0aGF0IG1vdmluZyB0aGUg
bW91c2Ugb3V0c2lkZSB0aGUgcG9wdXAgZGUtaGlnaGxpZ2h0cyBlbnRyaWVzLicpOwogICAgIGhv
dmVyT3ZlckVsZW1lbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rlc2NyaXB0aW9uJykpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172022</attachid>
            <date>2012-11-02 03:12:44 -0700</date>
            <delta_ts>2012-11-02 03:34:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101024-20121102191104.patch</filename>
            <type>text/plain</type>
            <size>31356</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZiODJmMTRiYWNjMzNj
YzYxYTc5MjBmMTY5MjNmZjc0YWM0MjcwZC4uZmNiM2IxODQxYzBlODg5YzJlMTUxMGVmMTZjMmY5
ZGM0YTZlNGU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTExLTAyICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBNb250
aCBjbGFzcyB0byBjYWxlbmRhciBwaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMTAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vbnRoIGNsYXNzIG5lZWRzIHRvIGJlIGludHJvZHVjZWQgdG8g
aW1wbGVtZW50IGEgbW9udGggcGlja2VyLiBUaGlzCisgICAgICAgIHBhdGNoIGp1c3QgaW50cm9k
dWNlcyB0aGUgTW9udGggY2xhc3MgaW50byB0aGUgY2FsZW5kYXIgcGlja2VyIHdpdGhvdXQKKyAg
ICAgICAgY2hhbmdpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGNhbGVuZGFyLXBpY2tlci0qLmh0bWwgdGVzdHMuCisK
KyAgICAgICAgKiBSZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qczoKKyAgICAg
ICAgKE1vbnRoLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyk6IFJldHVybnMgYSBsb2NhbGl6ZWQg
bW9udGggc3RyaW5nLgorICAgICAgICAoTW9udGgpOiBUYWtlcyBhIE1vbnRoIG9iamVjdCwgbnVt
YmVyIHJlcHJlc2VudGluZyB0aGUgbW9udGgsIG9yIHllYXIgYW5kIG1vbnRoIG51bWJlcnMuCisg
ICAgICAgIChNb250aC5wYXJzZSk6IFJldHVybnMgYSBuZXcgTW9udGggZnJvbSBhbiBJU08gbW9u
dGggc3RyaW5nLgorICAgICAgICAoTW9udGguY3JlYXRlRnJvbURhdGUpOiBSZXR1cm5zIGEgbmV3
IE1vbnRoIGNvbnRhaW5pbmcgdGhlIGdpdmVuIGRhdGV0aW1lLgorICAgICAgICAoTW9udGgucHJv
dG90eXBlLmVxdWFscyk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gbW9udGggaXMgdGhlIHNh
bWUuCisgICAgICAgIChNb250aC5wcm90b3R5cGUucHJldmlvdXMpOiBSZXR1cm5zIHRoZSBwcmV2
aW91cyBtb250aC4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS5uZXh0KTogUmV0dXJucyB0aGUg
bmV4dCBtb250aC4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS5zdGFydCk6IFJldHVybnMgYSBk
YXRldGltZSB0aGF0IGlzIHRoZSBzdGFydCBvZiB0aGlzIG1vbnRoLiBUaGUgdmFsdWUgaXMgaW5j
bHVzaXZlLgorICAgICAgICAoTW9udGgucHJvdG90eXBlLmVuZCk6IFJldHVybnMgYSBkYXRldGlt
ZSB0aGF0IGlzIHRoZSBlbmQgb2YgdGhpcyBtb250aC4gVGhlIHZhbHVlIGlzIGV4Y2x1c2l2ZS4K
KyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS52YWx1ZU9mKTogUmV0dXJucyBhIG51bWJlciByZXBy
ZXNlbnRpbmcgdGhlIG1vbnRoLgorICAgICAgICAoTW9udGgucHJvdG90eXBlLnRvU3RyaW5nKTog
UmV0dXJucyBhbiBJU08gbW9udGggc3RyaW5nLgorICAgICAgICAoWWVhck1vbnRoQ29udHJvbGxl
cik6IFVzZSBNb250aCBvYmplY3QuCisgICAgICAgIChZZWFyTW9udGhDb250cm9sbGVyLnByb3Rv
dHlwZS5hdHRhY2hUbyk6IFllYXIgMjc1NzYwIGVuZHMgaW4gU2VwdGVtYmVyIHNvIHVzZSB0aGUg
eWVhciBiZWZvcmUgdG8gbWVhc3VyZSB0aGUgbGFiZWwgd2lkdGguCisgICAgICAgIChZZWFyTW9u
dGhDb250cm9sbGVyLnByb3RvdHlwZS5zZXRNb250aCk6IFRha2UgYSBtb250aCBvYmplY3QuCisg
ICAgICAgIChZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5fcmVkcmF3KTogVXNlIElTTyBt
b250aCBzdHJpbmcgZm9yIGVsZW1lbnQuZGF0YXNldC52YWx1ZS4KKyAgICAgICAgKFllYXJNb250
aENvbnRyb2xsZXIucHJvdG90eXBlLl9oYW5kbGVZZWFyTW9udGhDaGFuZ2UpOgorICAgICAgICAo
WWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUubW92ZVJlbGF0aXZlbHkpOgorICAgICAgICAo
RGF5c1RhYmxlKTogVXNlIE1vbnRoIG9iamVjdC4KKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5
cGUuX3JlbmRlck1vbnRoKTogVGFrZSBhIG1vbnRoIG9iamVjdC4gVGVzdGluZyBmb3IgaXNOYU4g
aXMgbW92ZWQgdXAgdG8gZml4IGEgYnVnIHdoZW4gc2hvd2luZyBTZXB0ZW1iZXIsIDI3NTc2MC4K
KyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX25hdmlnYXRlVG9Nb250aCk6IFRha2UgYSBt
b250aCBvYmplY3QuCisgICAgICAgIChEYXlzVGFibGUucHJvdG90eXBlLl9uYXZpZ2F0ZVRvTW9u
dGhXaXRoQW5pbWF0aW9uKTogVGFrZSBhIG1vbnRoIG9iamVjdC4KKyAgICAgICAgKERheXNUYWJs
ZS5wcm90b3R5cGUubmF2aWdhdGVUb01vbnRoQW5kS2VlcFNlbGVjdGlvblBvc2l0aW9uKTogVGFr
ZSBhIG1vbnRoIG9iamVjdC4KKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuc2VsZWN0RGF0
ZSk6CisgICAgICAgIChEYXlzVGFibGUucHJvdG90eXBlLl9tYXliZVNldFByZXZpb3VzTW9udGgp
OiBVc2UgTW9udGggb2JqZWN0IHRvIGNhbGN1bGF0ZSB0aGUgcHJldmlvdXMgbW9udGguCisgICAg
ICAgIChEYXlzVGFibGUucHJvdG90eXBlLl9tYXliZVNldE5leHRNb250aCk6IFVzZSBNb250aCBv
YmplY3QgdG8gY2FsY3VsYXRlIHRoZSBuZXh0IG1vbnRoLgorCiAyMDEyLTExLTAxICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4LiBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzMyNTIgYnJva2UgdGhlIFdpbmRvd3MgYnVpbGQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRh
clBpY2tlci5qcyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFy
UGlja2VyLmpzCmluZGV4IDYxMTRjYzU3YmI4ZmNmNTBlMzg4NTFmNWZjMzIxYWYzY2E4NTJiODIu
LjdkYzUzOGJkZTdjODg1OTUzZjU5YjZlOTUyZTFjODRkZDFlOTMyYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzCkBA
IC0xMzksMTMgKzEzOSwxMyBAQCBmdW5jdGlvbiBmb3JtYXRKYXBhbmVzZUltcGVyaWFsRXJhKHll
YXIsIG1vbnRoKSB7CiB9CiAKIC8qKgotICogQHBhcmFtIHshbnVtYmVyfSB5ZWFyCi0gKiBAcGFy
YW0geyFudW1iZXJ9IG1vbnRoCiAgKiBAcmV0dXJuIHshc3RyaW5nfQogICovCi1mdW5jdGlvbiBm
b3JtYXRZZWFyTW9udGgoeWVhciwgbW9udGgpIHsKLSAgICB2YXIgeWVhclN0cmluZyA9IGxvY2Fs
aXplTnVtYmVyKHllYXIpOwotICAgIHZhciBtb250aFN0cmluZyA9IGdsb2JhbC5wYXJhbXMubW9u
dGhMYWJlbHNbbW9udGhdOworIE1vbnRoLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyA9IGZ1bmN0
aW9uKCkgeworICAgIGlmIChpc05hTih0aGlzLnllYXIpIHx8IGlzTmFOKHRoaXMueWVhcikpCisg
ICAgICAgIHJldHVybiAiSW52YWxpZCBNb250aCI7CisgICAgdmFyIHllYXJTdHJpbmcgPSBsb2Nh
bGl6ZU51bWJlcih0aGlzLnllYXIpOworICAgIHZhciBtb250aFN0cmluZyA9IGdsb2JhbC5wYXJh
bXMubW9udGhMYWJlbHNbdGhpcy5tb250aF07CiAgICAgc3dpdGNoIChnZXRMYW5ndWFnZSgpKSB7
CiAgICAgY2FzZSAiZXUiOgogICAgIGNhc2UgImZpbCI6CkBAIC0xNTgsNyArMTU4LDcgQEAgZnVu
Y3Rpb24gZm9ybWF0WWVhck1vbnRoKHllYXIsIG1vbnRoKSB7CiAgICAgY2FzZSAiaHUiOgogICAg
ICAgICByZXR1cm4geWVhclN0cmluZyArICIuICIgKyBtb250aFN0cmluZzsKICAgICBjYXNlICJq
YSI6Ci0gICAgICAgIHJldHVybiB5ZWFyU3RyaW5nICsgIuW5tCIgKyBmb3JtYXRKYXBhbmVzZUlt
cGVyaWFsRXJhKHllYXIsIG1vbnRoKSArICIgIiArIG1vbnRoU3RyaW5nOworICAgICAgICByZXR1
cm4geWVhclN0cmluZyArICLlubQiICsgZm9ybWF0SmFwYW5lc2VJbXBlcmlhbEVyYSh0aGlzLnll
YXIsIHRoaXMubW9udGgpICsgIiAiICsgbW9udGhTdHJpbmc7CiAgICAgY2FzZSAiemgiOgogICAg
ICAgICByZXR1cm4geWVhclN0cmluZyArICLlubQiICsgbW9udGhTdHJpbmc7CiAgICAgY2FzZSAi
a28iOgpAQCAtMTcyLDcgKzE3Miw3IEBAIGZ1bmN0aW9uIGZvcm1hdFllYXJNb250aCh5ZWFyLCBt
b250aCkgewogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBtb250aFN0cmluZyArICIgIiAr
IHllYXJTdHJpbmc7CiAgICAgfQotfQorfTsKIAogZnVuY3Rpb24gY3JlYXRlVVRDRGF0ZSh5ZWFy
LCBtb250aCwgZGF0ZSkgewogICAgIHZhciBuZXdEYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVh
ciwgbW9udGgsIGRhdGUpKTsKQEAgLTIwOSw2ICsyMDksMTEwIEBAIGZ1bmN0aW9uIHNlcmlhbGl6
ZURhdGUoeWVhciwgbW9udGgsIGRheSkgewogICAgIHJldHVybiB5ZWFyU3RyaW5nICsgIi0iICsg
KCIwIiArIChtb250aCArIDEpKS5zdWJzdHIoLTIsIDIpICsgIi0iICsgKCIwIiArIGRheSkuc3Vi
c3RyKC0yLCAyKTsKIH0KIAorLyoqCisgKiBAcGFyYW0geyFudW1iZXJ8TW9udGh9IHZhbHVlT3JN
b250aE9yWWVhcgorICogQHBhcmFtIHshbnVtYmVyPX0gbW9udGgKKyAqLworZnVuY3Rpb24gTW9u
dGgodmFsdWVPck1vbnRoT3JZZWFyLCBtb250aCkgeworICAgIGlmIChhcmd1bWVudHMubGVuZ3Ro
ID09IDIpIHsKKyAgICAgICAgdGhpcy55ZWFyID0gdmFsdWVPck1vbnRoT3JZZWFyOworICAgICAg
ICB0aGlzLm1vbnRoID0gbW9udGg7CisgICAgfSBlbHNlIGlmICh2YWx1ZU9yTW9udGhPclllYXIg
aW5zdGFuY2VvZiBNb250aCkgeworICAgICAgICB0aGlzLnllYXIgPSB2YWx1ZU9yTW9udGhPclll
YXIueWVhcjsKKyAgICAgICAgdGhpcy5tb250aCA9IHZhbHVlT3JNb250aE9yWWVhci5tb250aDsK
KyAgICB9IGVsc2UgeworICAgICAgICB0aGlzLnllYXIgPSBNYXRoLmZsb29yKHZhbHVlT3JNb250
aE9yWWVhciAvIDEyKSArIDE5NzA7CisgICAgICAgIHRoaXMubW9udGggPSB2YWx1ZU9yTW9udGhP
clllYXIgJSAxMjsKKyAgICB9CisgICAgdGhpcy55ZWFyID0gdGhpcy55ZWFyICsgTWF0aC5mbG9v
cih0aGlzLm1vbnRoIC8gMTIpOworICAgIHRoaXMubW9udGggPSB0aGlzLm1vbnRoIDwgMCA/IHRo
aXMubW9udGggJSAxMiArIDEyIDogdGhpcy5tb250aCAlIDEyOworICAgIGlmICh0aGlzLnllYXIg
PCAwIHx8IE1vbnRoLk1heGltdW0gPCB0aGlzKSB7CisgICAgICAgIHRoaXMueWVhciA9IE5hTjsK
KyAgICAgICAgdGhpcy5tb250aCA9IE5hTjsKKyAgICB9Cit9OworCitNb250aC5JU09TdHJpbmdS
ZWdFeHAgPSAvXihcZCspLShcZCspJC87CisKKy8vIFNlZSBXZWJDb3JlL3BsYXRmb3JtL0RhdGVD
b21wb25lbnRzLmguCitNb250aC5NYXhpbXVtID0gbmV3IE1vbnRoKDI3NTc2MCwgOCk7CisKKy8q
KgorICogQHBhcmFtIHshc3RyaW5nfSBzdHIKKyAqIEByZXR1cm4gez9Nb250aH0KKyAqLworTW9u
dGgucGFyc2UgPSBmdW5jdGlvbihzdHIpIHsKKyAgICB2YXIgbWF0Y2ggPSBNb250aC5JU09TdHJp
bmdSZWdFeHAuZXhlYyhzdHIpOworICAgIGlmICghbWF0Y2gpCisgICAgICAgIHJldHVybiBudWxs
OworICAgIHZhciB5ZWFyID0gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTsKKyAgICB2YXIgbW9udGgg
PSBwYXJzZUludChtYXRjaFsyXSwgMTApIC0gMTsKKyAgICByZXR1cm4gbmV3IE1vbnRoKHllYXIs
IG1vbnRoKTsKK307CisKKy8qKgorICogQHBhcmFtIHshRGF0ZX0gZGF0ZQorICogQHJldHVybiB7
IU1vbnRofQorICovCitNb250aC5jcmVhdGVGcm9tRGF0ZSA9IGZ1bmN0aW9uKGRhdGUpIHsKKyAg
ICByZXR1cm4gbmV3IE1vbnRoKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwgZGF0ZS5nZXRVVENNb250
aCgpKTsKK307CisKKy8qKgorICogQHBhcmFtIHshTW9udGh9IG90aGVyCisgKiBAcmV0dXJuIHsh
Ym9vbH0KKyAqLworTW9udGgucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uKG90aGVyKSB7Cisg
ICAgcmV0dXJuIHRoaXMueWVhciA9PT0gb3RoZXIueWVhciAmJiB0aGlzLm1vbnRoID09PSBvdGhl
ci5tb250aDsKK307CisKKy8qKgorICogQHJldHVybiB7IU1vbnRofQorICovCitNb250aC5wcm90
b3R5cGUucHJldmlvdXMgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IE1vbnRoKHRoaXMu
eWVhciwgdGhpcy5tb250aCAtIDEpOworfTsKKworLyoqCisgKiBAcmV0dXJuIHshTW9udGh9Cisg
Ki8KK01vbnRoLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBN
b250aCh0aGlzLnllYXIsIHRoaXMubW9udGggKyAxKTsKK307CisKKy8qKgorICogQHJldHVybiB7
IURhdGV9CisgKi8KK01vbnRoLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uKCkgeworICAgIHJl
dHVybiBjcmVhdGVVVENEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCwgMSk7Cit9OworCisvKioK
KyAqIEByZXR1cm4geyFEYXRlfQorICovCitNb250aC5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24o
KSB7CisgICAgaWYgKHRoaXMuZXF1YWxzKE1vbnRoLk1heGltdW0pKQorICAgICAgICByZXR1cm4g
Q2FsZW5kYXJQaWNrZXIuTWF4aW11bVBvc3NpYmxlRGF0ZTsKKyAgICByZXR1cm4gdGhpcy5uZXh0
KCkuc3RhcnQoKTsKK307CisKKy8qKgorICogQHJldHVybiB7IW51bWJlcn0KKyAqLworTW9udGgu
cHJvdG90eXBlLnZhbHVlT2YgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gKHRoaXMueWVhciAt
IDE5NzApICogMTIgKyB0aGlzLm1vbnRoOworfTsKKworLyoqCisgKiBAcmV0dXJuIHshc3RyaW5n
fQorICovCitNb250aC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIg
eWVhclN0cmluZyA9IFN0cmluZyh0aGlzLnllYXIpOworICAgIGlmICh5ZWFyU3RyaW5nLmxlbmd0
aCA8IDQpCisgICAgICAgIHllYXJTdHJpbmcgPSAoIjAwMCIgKyB5ZWFyU3RyaW5nKS5zdWJzdHIo
LTQsIDQpOworICAgIHJldHVybiB5ZWFyU3RyaW5nICsgIi0iICsgKCIwIiArICh0aGlzLm1vbnRo
ICsgMSkpLnN1YnN0cigtMiwgMik7Cit9OworCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBJbml0aWFsaXphdGlv
bgogCkBAIC00MzMsMTMgKzUzNyw5IEBAIENhbGVuZGFyUGlja2VyLnByb3RvdHlwZS5fbGF5b3V0
QnV0dG9ucyA9IGZ1bmN0aW9uKCkgewogZnVuY3Rpb24gWWVhck1vbnRoQ29udHJvbGxlcihwaWNr
ZXIpIHsKICAgICB0aGlzLnBpY2tlciA9IHBpY2tlcjsKICAgICAvKioKLSAgICAgKiBAdHlwZSB7
IW51bWJlcn0KLSAgICAgKi8KLSAgICB0aGlzLl9jdXJyZW50WWVhciA9IC0xOwotICAgIC8qKgot
ICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAqIEB0eXBlIHs/TW9udGh9CiAgICAgICovCi0g
ICAgdGhpcy5fY3VycmVudE1vbnRoID0gLTE7CisgICAgdGhpcy5fY3VycmVudE1vbnRoID0gbnVs
bDsKIH0KIAogLyoqCkBAIC00NzcsMTQgKzU3NywxNyBAQCBZZWFyTW9udGhDb250cm9sbGVyLnBy
b3RvdHlwZS5hdHRhY2hUbyA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICBlbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX3dhbGwpOwogCiAgICAgdmFyIG1heGltdW1ZZWFyID0gdGhpcy5waWNrZXIu
bWF4aW11bURhdGUuZ2V0VVRDRnVsbFllYXIoKTsKKyAgICAvLyBCZWNhdXNlIHRoZSBtYXhpbXVt
IHBvc3NpYmxlIHllYXIgaXMgU2VwdGVtYmVyIHdlIHNob3VsZCB1c2UgdGhlIHllYXIgYmVmb3Jl
IGl0LgorICAgIGlmIChtYXhpbXVtWWVhciA9PT0gTW9udGguTWF4aW11bS55ZWFyKQorICAgICAg
ICBtYXhpbXVtWWVhci0tOwogICAgIHZhciBtYXhXaWR0aCA9IDA7CiAgICAgZm9yICh2YXIgbSA9
IDA7IG0gPCAxMjsgKyttKSB7Ci0gICAgICAgIHRoaXMuX21vbnRoLnRleHRDb250ZW50ID0gZm9y
bWF0WWVhck1vbnRoKG1heGltdW1ZZWFyLCBtKTsKKyAgICAgICAgdGhpcy5fbW9udGgudGV4dENv
bnRlbnQgPSBuZXcgTW9udGgobWF4aW11bVllYXIsIG0pLnRvTG9jYWxlU3RyaW5nKCk7CiAgICAg
ICAgIG1heFdpZHRoID0gTWF0aC5tYXgobWF4V2lkdGgsIHRoaXMuX21vbnRoLm9mZnNldFdpZHRo
KTsKICAgICB9CiAgICAgaWYgKGdldExhbmd1YWdlKCkgPT0gImphIiAmJiBJbXBlcmlhbEVyYUxp
bWl0IDwgbWF4aW11bVllYXIpIHsKICAgICAgICAgZm9yICh2YXIgbSA9IDA7IG0gPCAxMjsgKytt
KSB7Ci0gICAgICAgICAgICB0aGlzLl9tb250aC50ZXh0Q29udGVudCA9IGZvcm1hdFllYXJNb250
aChJbXBlcmlhbEVyYUxpbWl0LCBtKTsKKyAgICAgICAgICAgIHRoaXMuX21vbnRoLnRleHRDb250
ZW50ID0gbmV3IE1vbnRoKEltcGVyaWFsRXJhTGltaXQsIG0pLnRvTG9jYWxlU3RyaW5nKCk7CiAg
ICAgICAgICAgICBtYXhXaWR0aCA9IE1hdGgubWF4KG1heFdpZHRoLCB0aGlzLl9tb250aC5vZmZz
ZXRXaWR0aCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01NTEsMzMgKzY1NCwyNCBAQCBZZWFyTW9u
dGhDb250cm9sbGVyLnByb3RvdHlwZS5fYXR0YWNoUmlnaHRCdXR0b25zVG8gPSBmdW5jdGlvbihw
YXJlbnQpIHsKIH07CiAKIC8qKgotICogQHJldHVybiB7IW51bWJlcn0KLSAqLwotWWVhck1vbnRo
Q29udHJvbGxlci5wcm90b3R5cGUueWVhciA9IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlz
Ll9jdXJyZW50WWVhcjsKLX07Ci0KLS8qKgotICogQHJldHVybiB7IW51bWJlcn0KKyAqIEByZXR1
cm4gez9Nb250aH0KICAqLwogWWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUubW9udGggPSBm
dW5jdGlvbigpIHsKICAgICByZXR1cm4gdGhpcy5fY3VycmVudE1vbnRoOwogfTsKIAogLyoqCi0g
KiBAcGFyYW0geyFudW1iZXJ9IHllYXIKLSAqIEBwYXJhbSB7IW51bWJlcn0gbW9udGgKKyAqIEBw
YXJhbSB7IU1vbnRofSBtb250aAogICovCi1ZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5z
ZXRZZWFyTW9udGggPSBmdW5jdGlvbih5ZWFyLCBtb250aCkgewotICAgIHRoaXMuX2N1cnJlbnRZ
ZWFyID0geWVhcjsKLSAgICB0aGlzLl9jdXJyZW50TW9udGggPSBtb250aDsKK1llYXJNb250aENv
bnRyb2xsZXIucHJvdG90eXBlLnNldE1vbnRoID0gZnVuY3Rpb24obW9udGgpIHsKKyAgICB0aGlz
Ll9jdXJyZW50TW9udGggPSBuZXcgTW9udGgobW9udGgpOwogICAgIHRoaXMuX3JlZHJhdygpOwog
fTsKIAogWWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUuX3JlZHJhdyA9IGZ1bmN0aW9uKCkg
ewotICAgIHZhciBtaW4gPSB0aGlzLnBpY2tlci5taW5pbXVtRGF0ZS5nZXRVVENGdWxsWWVhcigp
ICogMTIgKyB0aGlzLnBpY2tlci5taW5pbXVtRGF0ZS5nZXRVVENNb250aCgpOwotICAgIHZhciBt
YXggPSB0aGlzLnBpY2tlci5tYXhpbXVtRGF0ZS5nZXRVVENGdWxsWWVhcigpICogMTIgKyB0aGlz
LnBpY2tlci5tYXhpbXVtRGF0ZS5nZXRVVENNb250aCgpOwotICAgIHZhciBjdXJyZW50ID0gdGhp
cy5fY3VycmVudFllYXIgKiAxMiArIHRoaXMuX2N1cnJlbnRNb250aDsKKyAgICB2YXIgbWluID0g
TW9udGguY3JlYXRlRnJvbURhdGUodGhpcy5waWNrZXIubWluaW11bURhdGUpLnZhbHVlT2YoKTsK
KyAgICB2YXIgbWF4ID0gTW9udGguY3JlYXRlRnJvbURhdGUodGhpcy5waWNrZXIubWF4aW11bURh
dGUpLnZhbHVlT2YoKTsKKyAgICB2YXIgY3VycmVudCA9IHRoaXMuX2N1cnJlbnRNb250aC52YWx1
ZU9mKCk7CiAgICAgaWYgKHRoaXMuX2xlZnQzKQogICAgICAgICB0aGlzLl9sZWZ0My5kaXNhYmxl
ZCA9IGN1cnJlbnQgLSAxMyA8IG1pbjsKICAgICB0aGlzLl9sZWZ0Mi5kaXNhYmxlZCA9IGN1cnJl
bnQgLSAyIDwgbWluOwpAQCAtNTg2LDE1ICs2ODAsMTYgQEAgWWVhck1vbnRoQ29udHJvbGxlci5w
cm90b3R5cGUuX3JlZHJhdyA9IGZ1bmN0aW9uKCkgewogICAgIHRoaXMuX3JpZ2h0Mi5kaXNhYmxl
ZCA9IGN1cnJlbnQgKyAyID4gbWF4OwogICAgIGlmICh0aGlzLl9yaWdodDMpCiAgICAgICAgIHRo
aXMuX3JpZ2h0My5kaXNhYmxlZCA9IGN1cnJlbnQgKyAxMyA+IG1heDsKLSAgICB0aGlzLl9tb250
aC5pbm5lclRleHQgPSBmb3JtYXRZZWFyTW9udGgodGhpcy5fY3VycmVudFllYXIsIHRoaXMuX2N1
cnJlbnRNb250aCk7CisgICAgdGhpcy5fbW9udGguaW5uZXJUZXh0ID0gdGhpcy5fY3VycmVudE1v
bnRoLnRvTG9jYWxlU3RyaW5nKCk7CiAgICAgd2hpbGUgKHRoaXMuX21vbnRoUG9wdXBDb250ZW50
cy5oYXNDaGlsZE5vZGVzKCkpCiAgICAgICAgIHRoaXMuX21vbnRoUG9wdXBDb250ZW50cy5yZW1v
dmVDaGlsZCh0aGlzLl9tb250aFBvcHVwQ29udGVudHMuZmlyc3RDaGlsZCk7CiAKICAgICBmb3Ig
KHZhciBtID0gY3VycmVudCAtIDY7IG0gPD0gY3VycmVudCArIDY7IG0rKykgewogICAgICAgICBp
ZiAobSA8IG1pbiB8fCBtID4gbWF4KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHZh
ciBvcHRpb24gPSBjcmVhdGVFbGVtZW50KCJkaXYiLCBDbGFzc05hbWVzLk1vbnRoU2VsZWN0b3JQ
b3B1cEVudHJ5LCBmb3JtYXRZZWFyTW9udGgoTWF0aC5mbG9vcihtIC8gMTIpLCBtICUgMTIpKTsK
LSAgICAgICAgb3B0aW9uLmRhdGFzZXQudmFsdWUgPSBTdHJpbmcoTWF0aC5mbG9vcihtIC8gMTIp
KSArICItIiArIFN0cmluZyhtICUgMTIpOworICAgICAgICB2YXIgbW9udGggPSBuZXcgTW9udGgo
bSk7CisgICAgICAgIHZhciBvcHRpb24gPSBjcmVhdGVFbGVtZW50KCJkaXYiLCBDbGFzc05hbWVz
Lk1vbnRoU2VsZWN0b3JQb3B1cEVudHJ5LCBtb250aC50b0xvY2FsZVN0cmluZygpKTsKKyAgICAg
ICAgb3B0aW9uLmRhdGFzZXQudmFsdWUgPSBtb250aC50b1N0cmluZygpOwogICAgICAgICB0aGlz
Ll9tb250aFBvcHVwQ29udGVudHMuYXBwZW5kQ2hpbGQob3B0aW9uKTsKICAgICAgICAgaWYgKG0g
PT0gY3VycmVudCkKICAgICAgICAgICAgIG9wdGlvbi5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMu
U2VsZWN0ZWRNb250aFllYXIpOwpAQCAtNzE1LDEzICs4MTAsNyBAQCBZZWFyTW9udGhDb250cm9s
bGVyLnByb3RvdHlwZS5faGFuZGxlWWVhck1vbnRoQ2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAg
dmFyIHNlbGVjdGlvbiA9IHRoaXMuX2dldFNlbGVjdGlvbigpOwogICAgIGlmICghc2VsZWN0aW9u
KQogICAgICAgICByZXR1cm47Ci0gICAgdmFyIHZhbHVlID0gc2VsZWN0aW9uLmRhdGFzZXQudmFs
dWU7Ci0gICAgdmFyIHJlc3VsdCAgPSB2YWx1ZS5tYXRjaCgvKFxkKyktKFxkKykvKTsKLSAgICBp
ZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuOwotICAgIHZhciBuZXdZZWFyID0gTnVtYmVyKHJl
c3VsdFsxXSk7Ci0gICAgdmFyIG5ld01vbnRoID0gTnVtYmVyKHJlc3VsdFsyXSk7Ci0gICAgdGhp
cy5waWNrZXIuZGF5c1RhYmxlLm5hdmlnYXRlVG9Nb250aEFuZEtlZXBTZWxlY3Rpb25Qb3NpdGlv
bihuZXdZZWFyLCBuZXdNb250aCk7CisgICAgdGhpcy5waWNrZXIuZGF5c1RhYmxlLm5hdmlnYXRl
VG9Nb250aEFuZEtlZXBTZWxlY3Rpb25Qb3NpdGlvbihNb250aC5wYXJzZShzZWxlY3Rpb24uZGF0
YXNldC52YWx1ZSkpOwogfTsKIAogLyoKQEAgLTc3OSw5ICs4NjgsOSBAQCBZZWFyTW9udGhDb250
cm9sbGVyLnByb3RvdHlwZS5faGFuZGxlQnV0dG9uQ2xpY2sgPSBmdW5jdGlvbihldmVudCkgewog
ICogQHBhcmFtIHshbnVtYmVyfSBhbW91bnQKICAqLwogWWVhck1vbnRoQ29udHJvbGxlci5wcm90
b3R5cGUubW92ZVJlbGF0aXZlbHkgPSBmdW5jdGlvbihhbW91bnQpIHsKLSAgICB2YXIgbWluID0g
dGhpcy5waWNrZXIubWluaW11bURhdGUuZ2V0VVRDRnVsbFllYXIoKSAqIDEyICsgdGhpcy5waWNr
ZXIubWluaW11bURhdGUuZ2V0VVRDTW9udGgoKTsKLSAgICB2YXIgbWF4ID0gdGhpcy5waWNrZXIu
bWF4aW11bURhdGUuZ2V0VVRDRnVsbFllYXIoKSAqIDEyICsgdGhpcy5waWNrZXIubWF4aW11bURh
dGUuZ2V0VVRDTW9udGgoKTsKLSAgICB2YXIgY3VycmVudCA9IHRoaXMuX2N1cnJlbnRZZWFyICog
MTIgKyB0aGlzLl9jdXJyZW50TW9udGg7CisgICAgdmFyIG1pbiA9IE1vbnRoLmNyZWF0ZUZyb21E
YXRlKHRoaXMucGlja2VyLm1pbmltdW1EYXRlKS52YWx1ZU9mKCk7CisgICAgdmFyIG1heCA9IE1v
bnRoLmNyZWF0ZUZyb21EYXRlKHRoaXMucGlja2VyLm1heGltdW1EYXRlKS52YWx1ZU9mKCk7Cisg
ICAgdmFyIGN1cnJlbnQgPSB0aGlzLl9jdXJyZW50TW9udGgudmFsdWVPZigpOwogICAgIHZhciB1
cGRhdGVkID0gY3VycmVudDsKICAgICBpZiAoYW1vdW50IDwgMCkKICAgICAgICAgdXBkYXRlZCA9
IGN1cnJlbnQgKyBhbW91bnQgPj0gbWluID8gY3VycmVudCArIGFtb3VudCA6IG1pbjsKQEAgLTc4
OSw3ICs4NzgsNyBAQCBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5tb3ZlUmVsYXRpdmVs
eSA9IGZ1bmN0aW9uKGFtb3VudCkgewogICAgICAgICB1cGRhdGVkID0gY3VycmVudCArIGFtb3Vu
dCA8PSBtYXggPyBjdXJyZW50ICsgYW1vdW50IDogbWF4OwogICAgIGlmICh1cGRhdGVkID09IGN1
cnJlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICB0aGlzLnBpY2tlci5kYXlzVGFibGUubmF2aWdh
dGVUb01vbnRoQW5kS2VlcFNlbGVjdGlvblBvc2l0aW9uKE1hdGguZmxvb3IodXBkYXRlZCAvIDEy
KSwgdXBkYXRlZCAlIDEyKTsKKyAgICB0aGlzLnBpY2tlci5kYXlzVGFibGUubmF2aWdhdGVUb01v
bnRoQW5kS2VlcFNlbGVjdGlvblBvc2l0aW9uKG5ldyBNb250aCh1cGRhdGVkKSk7CiB9OwogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCkBAIC04MDEsMTMgKzg5MCw5IEBAIFllYXJNb250aENvbnRyb2xsZXIucHJvdG90
eXBlLm1vdmVSZWxhdGl2ZWx5ID0gZnVuY3Rpb24oYW1vdW50KSB7CiBmdW5jdGlvbiBEYXlzVGFi
bGUocGlja2VyKSB7CiAgICAgdGhpcy5waWNrZXIgPSBwaWNrZXI7CiAgICAgLyoqCi0gICAgICog
QHR5cGUgeyFudW1iZXJ9CisgICAgICogQHR5cGUgez9Nb250aH0KICAgICAgKi8KLSAgICB0aGlz
Ll9jdXJyZW50WWVhciA9IC0xOwotICAgIC8qKgotICAgICAqIEB0eXBlIHshbnVtYmVyfQotICAg
ICAqLwotICAgIHRoaXMuX2N1cnJlbnRNb250aCA9IC0xOworICAgIHRoaXMuX2N1cnJlbnRNb250
aCA9IG51bGw7CiB9CiAKIC8qKgpAQCAtODg5LDEwICs5NzQsOSBAQCBDYWxlbmRhclBpY2tlci5w
cm90b3R5cGUuaXNWYWxpZERhdGUgPSBmdW5jdGlvbih0aW1lKSB7CiAgKiBAcGFyYW0geyFudW1i
ZXJ9IHllYXIKICAqIEBwYXJhbSB7IW51bWJlcn0gbW9udGgKICAqLwotRGF5c1RhYmxlLnByb3Rv
dHlwZS5fcmVuZGVyTW9udGggPSBmdW5jdGlvbih5ZWFyLCBtb250aCkgewotICAgIHRoaXMuX2N1
cnJlbnRZZWFyID0geWVhcjsKLSAgICB0aGlzLl9jdXJyZW50TW9udGggPSBtb250aDsKLSAgICB2
YXIgZGF5SXRlcmF0b3IgPSBjcmVhdGVVVENEYXRlKHllYXIsIG1vbnRoLCAxKTsKK0RheXNUYWJs
ZS5wcm90b3R5cGUuX3JlbmRlck1vbnRoID0gZnVuY3Rpb24obW9udGgpIHsKKyAgICB0aGlzLl9j
dXJyZW50TW9udGggPSBuZXcgTW9udGgobW9udGgpOworICAgIHZhciBkYXlJdGVyYXRvciA9IHRo
aXMuX2N1cnJlbnRNb250aC5zdGFydCgpOwogICAgIHZhciBtb250aFN0YXJ0RGF5ID0gZGF5SXRl
cmF0b3IuZ2V0VVRDRGF5KCk7CiAgICAgdmFyIHdlZWtTdGFydERheSA9IGdsb2JhbC5wYXJhbXMu
d2Vla1N0YXJ0RGF5IHx8IDA7CiAgICAgdmFyIHN0YXJ0T2Zmc2V0ID0gd2Vla1N0YXJ0RGF5IC0g
bW9udGhTdGFydERheTsKQEAgLTkwMSwyNiArOTg1LDIyIEBAIERheXNUYWJsZS5wcm90b3R5cGUu
X3JlbmRlck1vbnRoID0gZnVuY3Rpb24oeWVhciwgbW9udGgpIHsKICAgICBkYXlJdGVyYXRvci5z
ZXRVVENEYXRlKHN0YXJ0T2Zmc2V0ICsgMSk7CiAgICAgZm9yICh2YXIgdyA9IDA7IHcgPCBEYXlz
VGFibGUuX1dlZWtzOyB3KyspIHsKICAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCA3OyBkKysp
IHsKLSAgICAgICAgICAgIHZhciBpdGVyWWVhciA9IGRheUl0ZXJhdG9yLmdldFVUQ0Z1bGxZZWFy
KCk7Ci0gICAgICAgICAgICB2YXIgaXRlck1vbnRoID0gZGF5SXRlcmF0b3IuZ2V0VVRDTW9udGgo
KTsKKyAgICAgICAgICAgIHZhciBpdGVyTW9udGggPSBNb250aC5jcmVhdGVGcm9tRGF0ZShkYXlJ
dGVyYXRvcik7CiAgICAgICAgICAgICB2YXIgdGltZSA9IGRheUl0ZXJhdG9yLmdldFRpbWUoKTsK
ICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fZGF5c1t3XVtkXTsKICAgICAgICAgICAg
IGVsZW1lbnQuaW5uZXJUZXh0ID0gbG9jYWxpemVOdW1iZXIoZGF5SXRlcmF0b3IuZ2V0VVRDRGF0
ZSgpKTsKICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gQ2xhc3NOYW1lcy5EYXk7Ci0g
ICAgICAgICAgICBlbGVtZW50LmRhdGFzZXQuc3VibWl0VmFsdWUgPSBzZXJpYWxpemVEYXRlKGl0
ZXJZZWFyLCBpdGVyTW9udGgsIGRheUl0ZXJhdG9yLmdldFVUQ0RhdGUoKSk7Ci0gICAgICAgICAg
ICBpZiAodGhpcy5waWNrZXIub3V0T2ZSYW5nZSh0aW1lKSkKKyAgICAgICAgICAgIGVsZW1lbnQu
ZGF0YXNldC5zdWJtaXRWYWx1ZSA9IHNlcmlhbGl6ZURhdGUoaXRlck1vbnRoLnllYXIsIGl0ZXJN
b250aC5tb250aCwgZGF5SXRlcmF0b3IuZ2V0VVRDRGF0ZSgpKTsKKyAgICAgICAgICAgIGlmIChp
c05hTih0aW1lKSkgeworICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gIi0iOwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDbGFzc05hbWVzLlVuYXZhaWxh
YmxlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5waWNrZXIub3V0T2ZSYW5nZSh0aW1l
KSkKICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5VbmF2
YWlsYWJsZSk7CiAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnBpY2tlci5zdGVwTWlzbWF0Y2go
dGltZSkpCiAgICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMu
VW5hdmFpbGFibGUpOwotICAgICAgICAgICAgZWxzZSBpZiAoKGl0ZXJZZWFyID09IHllYXIgJiYg
ZGF5SXRlcmF0b3IuZ2V0VVRDTW9udGgoKSA8IG1vbnRoKSB8fCAobW9udGggPT0gMCAmJiBpdGVy
TW9udGggPT0gMTEpKSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENs
YXNzTmFtZXMuQXZhaWxhYmxlKTsKLSAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5h
ZGQoQ2xhc3NOYW1lcy5Ob3RUaGlzTW9udGgpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgoaXRl
clllYXIgPT0geWVhciAmJiBkYXlJdGVyYXRvci5nZXRVVENNb250aCgpID4gbW9udGgpIHx8ICht
b250aCA9PSAxMSAmJiBpdGVyTW9udGggPT0gMCkpIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFp
dGVyTW9udGguZXF1YWxzKHRoaXMuX2N1cnJlbnRNb250aCkpIHsKICAgICAgICAgICAgICAgICBl
bGVtZW50LmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5BdmFpbGFibGUpOwogICAgICAgICAgICAg
ICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDbGFzc05hbWVzLk5vdFRoaXNNb250aCk7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGlzTmFOKHRpbWUpKSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVu
dC5pbm5lclRleHQgPSAiLSI7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRk
KENsYXNzTmFtZXMuVW5hdmFpbGFibGUpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuQXZhaWxhYmxlKTsKICAgICAg
ICAgICAgIGRheUl0ZXJhdG9yLnNldFVUQ0RhdGUoZGF5SXRlcmF0b3IuZ2V0VVRDRGF0ZSgpICsg
MSk7CkBAIC05MzEsMzUgKzEwMTEsMjcgQEAgRGF5c1RhYmxlLnByb3RvdHlwZS5fcmVuZGVyTW9u
dGggPSBmdW5jdGlvbih5ZWFyLCBtb250aCkgewogfTsKIAogLyoqCi0gKiBAcGFyYW0geyFudW1i
ZXJ9IHllYXIKLSAqIEBwYXJhbSB7IW51bWJlcn0gbW9udGgKKyAqIEBwYXJhbSB7IU1vbnRofSBt
b250aAogICovCi1EYXlzVGFibGUucHJvdG90eXBlLl9uYXZpZ2F0ZVRvTW9udGggPSBmdW5jdGlv
bih5ZWFyLCBtb250aCkgewotICAgIHRoaXMucGlja2VyLnllYXJNb250aENvbnRyb2xsZXIuc2V0
WWVhck1vbnRoKHllYXIsIG1vbnRoKTsKLSAgICB0aGlzLl9yZW5kZXJNb250aCh5ZWFyLCBtb250
aCk7CitEYXlzVGFibGUucHJvdG90eXBlLl9uYXZpZ2F0ZVRvTW9udGggPSBmdW5jdGlvbihtb250
aCkgeworICAgIHRoaXMucGlja2VyLnllYXJNb250aENvbnRyb2xsZXIuc2V0TW9udGgobW9udGgp
OworICAgIHRoaXMuX3JlbmRlck1vbnRoKG1vbnRoKTsKIH07CiAKIC8qKgotICogQHBhcmFtIHsh
bnVtYmVyfSB5ZWFyCi0gKiBAcGFyYW0geyFudW1iZXJ9IG1vbnRoCisgKiBAcGFyYW0geyFNb250
aH0gbW9udGgKICAqLwotRGF5c1RhYmxlLnByb3RvdHlwZS5fbmF2aWdhdGVUb01vbnRoV2l0aEFu
aW1hdGlvbiA9IGZ1bmN0aW9uKHllYXIsIG1vbnRoKSB7Ci0gICAgaWYgKHRoaXMuX2N1cnJlbnRZ
ZWFyID49IDAgJiYgdGhpcy5fY3VycmVudE1vbnRoID49IDApIHsKLSAgICAgICAgaWYgKHllYXIg
PT0gdGhpcy5fY3VycmVudFllYXIgJiYgbW9udGggPT0gdGhpcy5fY3VycmVudE1vbnRoKQorRGF5
c1RhYmxlLnByb3RvdHlwZS5fbmF2aWdhdGVUb01vbnRoV2l0aEFuaW1hdGlvbiA9IGZ1bmN0aW9u
KG1vbnRoKSB7CisgICAgaWYgKHRoaXMuX2N1cnJlbnRNb250aCkgeworICAgICAgICB2YXIgZGVs
dGEgPSB0aGlzLl9jdXJyZW50TW9udGgudmFsdWVPZigpIC0gbW9udGgudmFsdWVPZigpOworICAg
ICAgICBpZiAoZGVsdGEgPT09IDApCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHZhciBk
ZWNyZWFzaW5nID0gZmFsc2U7Ci0gICAgICAgIGlmICh5ZWFyIDwgdGhpcy5fY3VycmVudFllYXIp
Ci0gICAgICAgICAgICBkZWNyZWFzaW5nID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAoeWVhciA+
IHRoaXMuX2N1cnJlbnRZZWFyKQotICAgICAgICAgICAgZGVjcmVhc2luZyA9IGZhbHNlOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBkZWNyZWFzaW5nID0gbW9udGggPCB0aGlzLl9jdXJyZW50
TW9udGg7CiAgICAgICAgIHZhciBkYXlzU3R5bGUgPSB0aGlzLl9kYXlzQ29udGFpbmVyLnN0eWxl
OwogICAgICAgICBkYXlzU3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiOwogICAgICAgICBkYXlz
U3R5bGUud2Via2l0VHJhbnNpdGlvbiA9ICJsZWZ0IDAuMXMgZWFzZSI7Ci0gICAgICAgIGRheXNT
dHlsZS5sZWZ0ID0gKGRlY3JlYXNpbmcgPyAiIiA6ICItIikgKyB0aGlzLl9kYXlzQ29udGFpbmVy
Lm9mZnNldFdpZHRoICsgInB4IjsKKyAgICAgICAgZGF5c1N0eWxlLmxlZnQgPSAoZGVsdGEgPiAw
ID8gIiIgOiAiLSIpICsgdGhpcy5fZGF5c0NvbnRhaW5lci5vZmZzZXRXaWR0aCArICJweCI7CiAg
ICAgfQotICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aCh5ZWFyLCBtb250aCk7CisgICAgdGhpcy5f
bmF2aWdhdGVUb01vbnRoKG1vbnRoKTsKIH07CiAKIERheXNUYWJsZS5wcm90b3R5cGUuX21vdmVJ
bkRheXMgPSBmdW5jdGlvbigpIHsKQEAgLTk3NCwxNCArMTA0NiwxMyBAQCBEYXlzVGFibGUucHJv
dG90eXBlLl9tb3ZlSW5EYXlzID0gZnVuY3Rpb24oKSB7CiB9OwogCiAvKioKLSAqIEBwYXJhbSB7
IW51bWJlcn0geWVhcgotICogQHBhcmFtIHshbnVtYmVyfSBtb250aAorICogQHBhcmFtIHshTW9u
dGh9IG1vbnRoCiAgKi8KLURheXNUYWJsZS5wcm90b3R5cGUubmF2aWdhdGVUb01vbnRoQW5kS2Vl
cFNlbGVjdGlvblBvc2l0aW9uID0gZnVuY3Rpb24oeWVhciwgbW9udGgpIHsKLSAgICBpZiAoeWVh
ciA9PSB0aGlzLl9jdXJyZW50WWVhciAmJiBtb250aCA9PSB0aGlzLl9jdXJyZW50TW9udGgpCitE
YXlzVGFibGUucHJvdG90eXBlLm5hdmlnYXRlVG9Nb250aEFuZEtlZXBTZWxlY3Rpb25Qb3NpdGlv
biA9IGZ1bmN0aW9uKG1vbnRoKSB7CisgICAgaWYgKHRoaXMuX2N1cnJlbnRNb250aC5lcXVhbHMo
bW9udGgpKQogICAgICAgICByZXR1cm47CiAgICAgdmFyIGZpcnN0Tm9kZUluU2VsZWN0ZWRSYW5n
ZSA9IHRoaXMuX2ZpcnN0Tm9kZUluU2VsZWN0ZWRSYW5nZSgpOwotICAgIHRoaXMuX25hdmlnYXRl
VG9Nb250aFdpdGhBbmltYXRpb24oeWVhciwgbW9udGgpOworICAgIHRoaXMuX25hdmlnYXRlVG9N
b250aFdpdGhBbmltYXRpb24obW9udGgpOwogICAgIGlmIChmaXJzdE5vZGVJblNlbGVjdGVkUmFu
Z2UpIHsKICAgICAgICAgdmFyIHggPSBwYXJzZUludChmaXJzdE5vZGVJblNlbGVjdGVkUmFuZ2Uu
ZGF0YXNldC5wb3NpdGlvblgsIDEwKTsKICAgICAgICAgdmFyIHkgPSBwYXJzZUludChmaXJzdE5v
ZGVJblNlbGVjdGVkUmFuZ2UuZGF0YXNldC5wb3NpdGlvblksIDEwKTsKQEAgLTk5NCw3ICsxMDY1
LDcgQEAgRGF5c1RhYmxlLnByb3RvdHlwZS5uYXZpZ2F0ZVRvTW9udGhBbmRLZWVwU2VsZWN0aW9u
UG9zaXRpb24gPSBmdW5jdGlvbih5ZWFyLCBtb24KICAqLwogRGF5c1RhYmxlLnByb3RvdHlwZS5z
ZWxlY3REYXRlID0gZnVuY3Rpb24oZGF0ZSkgewogICAgIHRoaXMuX2Rlc2VsZWN0KCk7Ci0gICAg
dGhpcy5fbmF2aWdhdGVUb01vbnRoV2l0aEFuaW1hdGlvbihkYXRlLmdldFVUQ0Z1bGxZZWFyKCks
IGRhdGUuZ2V0VVRDTW9udGgoKSk7CisgICAgdGhpcy5fbmF2aWdhdGVUb01vbnRoV2l0aEFuaW1h
dGlvbihNb250aC5jcmVhdGVGcm9tRGF0ZShkYXRlKSk7CiAgICAgdmFyIGRhdGVTdHJpbmcgPSBz
ZXJpYWxpemVEYXRlKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwgZGF0ZS5nZXRVVENNb250aCgpLCBk
YXRlLmdldFVUQ0RhdGUoKSk7CiAgICAgZm9yICh2YXIgdyA9IDA7IHcgPCBEYXlzVGFibGUuX1dl
ZWtzOyB3KyspIHsKICAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCA3OyBkKyspIHsKQEAgLTEw
NDIsMTcgKzExMTMsMTEgQEAgRGF5c1RhYmxlLnByb3RvdHlwZS5fZGVzZWxlY3QgPSBmdW5jdGlv
bigpIHsKICAqIEByZXR1cm4geyFib29sZWFufQogICovCiBEYXlzVGFibGUucHJvdG90eXBlLl9t
YXliZVNldFByZXZpb3VzTW9udGggPSBmdW5jdGlvbigpIHsKLSAgICB2YXIgeWVhciA9IHRoaXMu
cGlja2VyLnllYXJNb250aENvbnRyb2xsZXIueWVhcigpOwotICAgIHZhciBtb250aCA9IHRoaXMu
cGlja2VyLnllYXJNb250aENvbnRyb2xsZXIubW9udGgoKTsKLSAgICB2YXIgdGhpc01vbnRoU3Rh
cnRUaW1lID0gY3JlYXRlVVRDRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0VGltZSgpOwotICAgIGlm
ICh0aGlzLnBpY2tlci5taW5pbXVtRGF0ZS5nZXRUaW1lKCkgPj0gdGhpc01vbnRoU3RhcnRUaW1l
KQorICAgIHZhciBjdXJyZW50TW9udGggPSB0aGlzLnBpY2tlci55ZWFyTW9udGhDb250cm9sbGVy
Lm1vbnRoKCk7CisgICAgdmFyIGN1cnJlbnRNb250aFN0YXJ0ID0gY3VycmVudE1vbnRoLnN0YXJ0
KCk7CisgICAgaWYgKHRoaXMucGlja2VyLm1pbmltdW1EYXRlID49IGN1cnJlbnRNb250aFN0YXJ0
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1vbnRoID09IDApIHsKLSAgICAgICAg
eWVhci0tOwotICAgICAgICBtb250aCA9IDExOwotICAgIH0gZWxzZQotICAgICAgICBtb250aC0t
OwotICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aFdpdGhBbmltYXRpb24oeWVhciwgbW9udGgpOwor
ICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aFdpdGhBbmltYXRpb24oY3VycmVudE1vbnRoLnByZXZp
b3VzKCkpOwogICAgIHJldHVybiB0cnVlOwogfTsKIApAQCAtMTA2MCwxNyArMTEyNSwxMCBAQCBE
YXlzVGFibGUucHJvdG90eXBlLl9tYXliZVNldFByZXZpb3VzTW9udGggPSBmdW5jdGlvbigpIHsK
ICAqIEByZXR1cm4geyFib29sZWFufQogICovCiBEYXlzVGFibGUucHJvdG90eXBlLl9tYXliZVNl
dE5leHRNb250aCA9IGZ1bmN0aW9uKCkgewotICAgIHZhciB5ZWFyID0gdGhpcy5waWNrZXIueWVh
ck1vbnRoQ29udHJvbGxlci55ZWFyKCk7Ci0gICAgdmFyIG1vbnRoID0gdGhpcy5waWNrZXIueWVh
ck1vbnRoQ29udHJvbGxlci5tb250aCgpOwotICAgIGlmIChtb250aCA9PSAxMSkgewotICAgICAg
ICB5ZWFyKys7Ci0gICAgICAgIG1vbnRoID0gMDsKLSAgICB9IGVsc2UKLSAgICAgICAgbW9udGgr
KzsKLSAgICB2YXIgbmV4dE1vbnRoU3RhcnRUaW1lID0gY3JlYXRlVVRDRGF0ZSh5ZWFyLCBtb250
aCwgMSkuZ2V0VGltZSgpOwotICAgIGlmICh0aGlzLnBpY2tlci5tYXhpbXVtRGF0ZS5nZXRUaW1l
KCkgPCBuZXh0TW9udGhTdGFydFRpbWUpCisgICAgdmFyIGN1cnJlbnRNb250aCA9IHRoaXMucGlj
a2VyLnllYXJNb250aENvbnRyb2xsZXIubW9udGgoKTsKKyAgICBpZiAodGhpcy5waWNrZXIubWF4
aW11bURhdGUgPCBjdXJyZW50TW9udGguZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB0aGlzLl9uYXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0aW9uKHllYXIsIG1vbnRoKTsKKyAgICB0
aGlzLl9uYXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0aW9uKGN1cnJlbnRNb250aC5uZXh0KCkpOwog
ICAgIHJldHVybiB0cnVlOwogfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJlMzMwN2QxNzE1ZTg2YTlkYzI1MDExMDY5
MGQyYTgzOGQyMGJlNzYuLmFkZmNmYjM4YzA1YzJjYmVhMmVkOTU4OGU5MDRlNTYwNDI1YzhiZTYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMS0wMiAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlz
aGlAd2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgTW9udGggY2xhc3MgdG8gY2FsZW5k
YXIgcGlja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDEwMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFy
LXBpY2tlci1rZXktb3BlcmF0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLWtleS1v
cGVyYXRpb25zLmh0bWw6IEFkanVzdCB0aGUgZXhwZWN0YXRpb24gYmVjYXVzZSB3ZSBjaGFuZ2Vk
IHRoZSBtb250aCBzdHJpbmcgZm9ybWF0LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3VzZS1vcGVyYXRpb25z
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2Nh
bGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItbW91c2Utb3BlcmF0aW9ucy5odG1sOiBEaXR0
by4KKwogMjAxMi0xMS0wMSAgU2VvbmFlIEtpbSAgPHN1bmFlbHV2LmtpbUBzYW1zdW5nLmNvbT4K
IAogICAgICAgICBbRUZMXVtEUlRdIFN1cHBvcnQgR2VvbG9jYXRpb24KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2Nh
bGVuZGFyLXBpY2tlci1rZXktb3BlcmF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNr
ZXIta2V5LW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDI1YjU0NjkyNTIyOWViYTI5ZjEy
MGRiODNlNTZlZThiNDA1OTlhYjkuLjY5YzI2ODI1MGQwMDRkYTFiZmMyMDE1Y2MwOGVjNWM1N2I0
YWVjNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9y
bXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1rZXktb3BlcmF0aW9ucy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxl
bmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLWtleS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dApA
QCAtOCw0MCArOCw0MCBAQCBQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2NrLXBhZ2Ut
cG9wdXAiKSBpcyBudWxsCiBDaGVjayB0aGF0IHBhZ2UgcG9wdXAgZXhpc3RzLgogUEFTUyBwb3B1
cFdpbmRvdy5wYWdlUG9wdXBDb250cm9sbGVyLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgUGFnZVBv
cHVwQ29udHJvbGxlcl0iCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIyMDAwLTAxLTAyIgotUEFT
UyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAw
MC0wMSIKIENoZWNrIHRoYXQgYXJyb3cga2V5cyB3b3JrIHByb3Blcmx5IGV2ZW4gd2hlbiBnb2lu
ZyBiZXR3ZWVuIHdlZWtzIGFuZCBtb250aHMuCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIxOTk5
LTEyLTI2IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFTUyBjdXJyZW50TW9u
dGgoKSBpcyAiMjAwMC0wMSIKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIwMDAtMDEtMDIiCi1Q
QVNTIGN1cnJlbnRNb250aCgpIGlzICIxOTk5LTExIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAi
MTk5OS0xMiIKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjE5OTktMTItMjYiCi1QQVNTIGN1cnJl
bnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgog
UEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMjAwMC0wMS0wMiIKLVBBU1MgY3VycmVudE1vbnRoKCkg
aXMgIjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBQQVNTIHNlbGVj
dGVkRGF0ZSgpIGlzICIxOTk5LTEyLTI2IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0w
IgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wMSIKIFBBU1Mgc2VsZWN0ZWREYXRlKCkg
aXMgIjIwMDAtMDEtMDgiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIxOTk5LTExIgorUEFTUyBj
dXJyZW50TW9udGgoKSBpcyAiMTk5OS0xMiIKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjE5OTkt
MTItMjYiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250
aCgpIGlzICIyMDAwLTAxIgogcHJlc3MgbQogRkFJTCBzZWxlY3RlZERhdGUoKSBzaG91bGQgYmUg
MjAwMC0wMS0yNi4gV2FzIDIwMDAtMDEtMzAuCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAw
LTEiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAyIgogcHJlc3Mgc2hpZnQgKyBtCiBQ
QVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIxOTk5LTEyLTI2IgotUEFTUyBjdXJyZW50TW9udGgoKSBp
cyAiMjAwMC0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wMSIKIHByZXNzIHkKIFBB
U1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIwMDAtMTItMzEiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlz
ICIyMDAxLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAxLTAxIgogcHJlc3Mgc2hpZnQg
KyB5CiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIxOTk5LTEyLTI2IgotUEFTUyBjdXJyZW50TW9u
dGgoKSBpcyAiMjAwMC0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wMSIKIHByZXNz
IGQKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIwMDktMTItMjciCi1QQVNTIGN1cnJlbnRNb250
aCgpIGlzICIyMDEwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDEwLTAxIgogcHJlc3Mg
c2hpZnQgKyBkCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIxOTk5LTEyLTI2IgotUEFTUyBjdXJy
ZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wMSIK
IFBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIpIGlzIG51bGwK
IFBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRhdGUiKS52YWx1ZSBpcyAiMTk5OS0xMi0y
NiIKIFBBU1MgdGVzdFRvZGF5KCkgfHwgdGVzdFRvZGF5KCkgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIv
Y2FsZW5kYXItcGlja2VyLWtleS1vcGVyYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXIta2V5
LW9wZXJhdGlvbnMuaHRtbAppbmRleCA3YzFiN2I3YmE2MTVmODk3ODlhOTBmODg1YWNiNjRmZTAz
OTQwZjk4Li5hMWJiOWU3OTUxMTU2NGI5YjVkNWJhN2FiOWNjOTlkNTJmOTFmNjEyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBp
Y2tlci9jYWxlbmRhci1waWNrZXIta2V5LW9wZXJhdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1w
aWNrZXIta2V5LW9wZXJhdGlvbnMuaHRtbApAQCAtMjIsNjcgKzIyLDY3IEBAIGZ1bmN0aW9uIHRl
c3QxKCkgewogICAgIHNob3VsZEJlKCdwb3B1cFdpbmRvdy5wYWdlUG9wdXBDb250cm9sbGVyLnRv
U3RyaW5nKCknLCAnIltvYmplY3QgUGFnZVBvcHVwQ29udHJvbGxlcl0iJyk7CiAKICAgICBzaG91
bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjIwMDAtMDEtMDIiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1
cnJlbnRNb250aCgpJywgJyIyMDAwLTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgp
JywgJyIyMDAwLTAxIicpOwogCiAgICAgZGVidWcoJ0NoZWNrIHRoYXQgYXJyb3cga2V5cyB3b3Jr
IHByb3Blcmx5IGV2ZW4gd2hlbiBnb2luZyBiZXR3ZWVuIHdlZWtzIGFuZCBtb250aHMuJyk7CiAK
ICAgICBldmVudFNlbmRlci5rZXlEb3duKCd1cEFycm93Jyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVj
dGVkRGF0ZSgpJywgJyIxOTk5LTEyLTI2IicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgo
KScsICciMjAwMC0wIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0w
MSInKTsKICAgICAvLyBNb3ZlIGZyb20gZmlyc3Qgcm93IG9mIEphbnVhcnkgMjAwMCB0byBsYXN0
IHJvdyBvZiBEZWNlbWJlciAxOTk5LgogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ3VwQXJyb3cn
KTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjIwMDAtMDEtMDIiJyk7Ci0gICAg
c2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIxOTk5LTExIicpOworICAgIHNob3VsZEJlKCdj
dXJyZW50TW9udGgoKScsICciMTk5OS0xMiInKTsKICAgICAKICAgICBldmVudFNlbmRlci5rZXlE
b3duKCdkb3duQXJyb3cnKTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjE5OTkt
MTItMjYiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAiJyk7Cisg
ICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAxIicpOwogICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oJ2Rvd25BcnJvdycpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScs
ICciMjAwMC0wMS0wMiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAt
MCInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAKICAg
ICBldmVudFNlbmRlci5rZXlEb3duKCd1cEFycm93Jyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVk
RGF0ZSgpJywgJyIxOTk5LTEyLTI2IicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScs
ICciMjAwMC0wIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSIn
KTsKIAogICAgIC8vIE1vdmUgZnJvbSB0b3AgbGVmdCBvZiBKYW51YXJ5IDIwMDAgdG8gYm90dG9t
IHJpZ2h0IG9mIERlY2VtYmVyIDE5OTkuCiAgICAgZXZlbnRTZW5kZXIua2V5RG93bignbGVmdEFy
cm93Jyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAwLTAxLTA4IicpOwot
ICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMTk5OS0xMSInKTsKKyAgICBzaG91bGRC
ZSgnY3VycmVudE1vbnRoKCknLCAnIjE5OTktMTIiJyk7CiAKICAgICBldmVudFNlbmRlci5rZXlE
b3duKCdyaWdodEFycm93Jyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIxOTk5
LTEyLTI2IicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wIicpOwor
ICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSInKTsKIAogICAgIGRlYnVn
KCJwcmVzcyBtIik7CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bignbScpOwogICAgIHNob3VsZEJl
KCdzZWxlY3RlZERhdGUoKScsICciMjAwMC0wMS0yNiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVu
dE1vbnRoKCknLCAnIjIwMDAtMSInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAn
IjIwMDAtMDIiJyk7CiAKICAgICBkZWJ1ZygicHJlc3Mgc2hpZnQgKyBtIik7CiAgICAgZXZlbnRT
ZW5kZXIua2V5RG93bignTScpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMTk5
OS0xMi0yNiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMCInKTsK
KyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAKICAgICBkZWJ1
ZygicHJlc3MgeSIpOwogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ3knKTsKICAgICBzaG91bGRC
ZSgnc2VsZWN0ZWREYXRlKCknLCAnIjIwMDAtMTItMzEiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJl
bnRNb250aCgpJywgJyIyMDAxLTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywg
JyIyMDAxLTAxIicpOwogCiAgICAgZGVidWcoInByZXNzIHNoaWZ0ICsgeSIpOwogICAgIGV2ZW50
U2VuZGVyLmtleURvd24oJ1knKTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjE5
OTktMTItMjYiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAiJyk7
CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAxIicpOwogCiAgICAgZGVi
dWcoInByZXNzIGQiKTsKICAgICBldmVudFNlbmRlci5rZXlEb3duKCdkJyk7CiAgICAgc2hvdWxk
QmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDA5LTEyLTI3IicpOwotICAgIHNob3VsZEJlKCdjdXJy
ZW50TW9udGgoKScsICciMjAxMC0wIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScs
ICciMjAxMC0wMSInKTsKIAogICAgIGRlYnVnKCJwcmVzcyBzaGlmdCArIGQiKTsKICAgICBldmVu
dFNlbmRlci5rZXlEb3duKCdEJyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIx
OTk5LTEyLTI2IicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wIicp
OworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSInKTsKIAogICAgIGV2
ZW50U2VuZGVyLmtleURvd24oJ1xuJyk7CiAgICAgc2hvdWxkQmVOdWxsKCdkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibW9jay1wYWdlLXBvcHVwIiknKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBmdW5j
dGlvbiB0ZXN0VG9kYXkoKSB7CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bigndCcpOwogICAgIHZh
ciBub3cgPSBuZXcgRGF0ZSgpOwogICAgIHZhciBleHBlY3RlZERhdGUgPSBzZXJpYWxpemVEYXRl
KG5vdy5nZXRVVENGdWxsWWVhcigpLCBub3cuZ2V0VVRDTW9udGgoKSwgbm93LmdldFVUQ0RhdGUo
KSk7Ci0gICAgdmFyIGV4cGVjdGVkTW9udGggPSBub3cuZ2V0VVRDRnVsbFllYXIoKSArICItIiAr
IG5vdy5nZXRNb250aCgpOworICAgIHZhciBleHBlY3RlZE1vbnRoID0gcG9wdXBXaW5kb3cuTW9u
dGguY29udGFpbmluZyhub3cpLnRvU3RyaW5nKCk7CiAgICAgcmV0dXJuIHNlbGVjdGVkRGF0ZSgp
ID09PSBleHBlY3RlZERhdGUgJiYgY3VycmVudE1vbnRoKCkgPT09IGV4cGVjdGVkTW9udGg7CiB9
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMv
Y2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3VzZS1vcGVyYXRpb25zLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXIt
cGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3VzZS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAppbmRl
eCBlOTY3MDYzMjE1NzhjYThlNjNjOTUxYTc4YjM5NzgyZjQ1ZWEwOWFiLi41YTI3ZDQxNzNkZWYw
NWFmZWNmZWVhYjhjMmI4OGFlODJhMTAxNjE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXIt
bW91c2Utb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLW1vdXNl
LW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC02LDE1ICs2LDE1IEBAIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFCiBDaGVjayB0aGF0IHBhZ2UgcG9wdXAgZG9lc24ndCBleGlzdCBhdCBmaXJzdC4K
IFBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIpIGlzIG51bGwK
IFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIwMDAtMDEtMDIiCi1QQVNTIGN1cnJlbnRNb250aCgp
IGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgogQ2hlY2sgdGhh
dCBob3ZlcmluZyBvdmVyIGFuIGVudHJ5IGhpZ2hsaWdodHMgaXQuCiBQQVNTIHNlbGVjdGVkRGF0
ZSgpIGlzICIxOTk5LTEyLTMxIgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFT
UyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wMSIKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIw
MDAtMDEtMDQiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRN
b250aCgpIGlzICIyMDAwLTAxIgogQ2hlY2sgdGhhdCBuYXZpZ2F0aW5nIGJldHdlZW4gbW9udGhz
IG1haW50YWlucyBzZWxlY3Rpb24gcG9zaXRpb24uCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIy
MDAwLTAyLTA4IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0xIgorUEFTUyBjdXJyZW50
TW9udGgoKSBpcyAiMjAwMC0wMiIKIENoZWNrIHRoYXQgbW92aW5nIHRoZSBtb3VzZSBvdXRzaWRl
IHRoZSBwb3B1cCBkZS1oaWdobGlnaHRzIGVudHJpZXMuCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlz
IHVuZGVmaW5lZC4KIENoZWNrIHRoYXQgbW91c2UgY2xpY2sgY2xvc2VzIHRoZSBwb3B1cCBhbmQg
c2V0cyB0aGUgdmFsdWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItbW91c2Utb3BlcmF0
aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxl
bmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLW1vdXNlLW9wZXJhdGlvbnMuaHRtbAppbmRleCA1
MmQwM2ZlNTlmNDM1M2NmMjg1YmVhMDgyZGY0NWE4MzUyNGQ3ZDJkLi5mODAxYTQ3YWFkMzUyN2Jm
ZDUzNGM2NjM3M2ZjNWVkNGZhNzQyZTgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItbW91
c2Utb3BlcmF0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3VzZS1vcGVyYXRpb25z
Lmh0bWwKQEAgLTIwLDIxICsyMCwyMSBAQCBvcGVuUGlja2VyKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdkYXRlJyksIHRlc3QpOwogCiBmdW5jdGlvbiB0ZXN0KCkgewogICAgIHNob3VsZEJlKCdz
ZWxlY3RlZERhdGUoKScsICciMjAwMC0wMS0wMiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1v
bnRoKCknLCAnIjIwMDAtMCInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIw
MDAtMDEiJyk7CiAKICAgICBkZWJ1ZygnQ2hlY2sgdGhhdCBob3ZlcmluZyBvdmVyIGFuIGVudHJ5
IGhpZ2hsaWdodHMgaXQuJyk7CiAgICAgaG92ZXJPdmVyRWxlbWVudChwb3B1cFdpbmRvdy5kb2N1
bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJkYXkiKVs1XSk7CiAgICAgc2hvdWxkQmUoJ3Nl
bGVjdGVkRGF0ZSgpJywgJyIxOTk5LTEyLTMxIicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9u
dGgoKScsICciMjAwMC0wIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAw
MC0wMSInKTsKIAogICAgIGhvdmVyT3ZlckVsZW1lbnQocG9wdXBXaW5kb3cuZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgiZGF5IilbOV0pOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERh
dGUoKScsICciMjAwMC0wMS0wNCInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAn
IjIwMDAtMCInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7
CiAKICAgICBkZWJ1ZygnQ2hlY2sgdGhhdCBuYXZpZ2F0aW5nIGJldHdlZW4gbW9udGhzIG1haW50
YWlucyBzZWxlY3Rpb24gcG9zaXRpb24uJyk7CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bignbScp
OwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMjAwMC0wMi0wOCInKTsKLSAgICBz
aG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMSInKTsKKyAgICBzaG91bGRCZSgnY3Vy
cmVudE1vbnRoKCknLCAnIjIwMDAtMDIiJyk7CiAKICAgICBkZWJ1ZygnQ2hlY2sgdGhhdCBtb3Zp
bmcgdGhlIG1vdXNlIG91dHNpZGUgdGhlIHBvcHVwIGRlLWhpZ2hsaWdodHMgZW50cmllcy4nKTsK
ICAgICBob3Zlck92ZXJFbGVtZW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXNjcmlwdGlv
bicpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172026</attachid>
            <date>2012-11-02 03:34:26 -0700</date>
            <delta_ts>2012-11-02 07:20:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101024-20121102193246.patch</filename>
            <type>text/plain</type>
            <size>31383</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZiODJmMTRiYWNjMzNj
YzYxYTc5MjBmMTY5MjNmZjc0YWM0MjcwZC4uZmNiM2IxODQxYzBlODg5YzJlMTUxMGVmMTZjMmY5
ZGM0YTZlNGU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTExLTAyICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBNb250
aCBjbGFzcyB0byBjYWxlbmRhciBwaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMTAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vbnRoIGNsYXNzIG5lZWRzIHRvIGJlIGludHJvZHVjZWQgdG8g
aW1wbGVtZW50IGEgbW9udGggcGlja2VyLiBUaGlzCisgICAgICAgIHBhdGNoIGp1c3QgaW50cm9k
dWNlcyB0aGUgTW9udGggY2xhc3MgaW50byB0aGUgY2FsZW5kYXIgcGlja2VyIHdpdGhvdXQKKyAg
ICAgICAgY2hhbmdpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGNhbGVuZGFyLXBpY2tlci0qLmh0bWwgdGVzdHMuCisK
KyAgICAgICAgKiBSZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qczoKKyAgICAg
ICAgKE1vbnRoLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyk6IFJldHVybnMgYSBsb2NhbGl6ZWQg
bW9udGggc3RyaW5nLgorICAgICAgICAoTW9udGgpOiBUYWtlcyBhIE1vbnRoIG9iamVjdCwgbnVt
YmVyIHJlcHJlc2VudGluZyB0aGUgbW9udGgsIG9yIHllYXIgYW5kIG1vbnRoIG51bWJlcnMuCisg
ICAgICAgIChNb250aC5wYXJzZSk6IFJldHVybnMgYSBuZXcgTW9udGggZnJvbSBhbiBJU08gbW9u
dGggc3RyaW5nLgorICAgICAgICAoTW9udGguY3JlYXRlRnJvbURhdGUpOiBSZXR1cm5zIGEgbmV3
IE1vbnRoIGNvbnRhaW5pbmcgdGhlIGdpdmVuIGRhdGV0aW1lLgorICAgICAgICAoTW9udGgucHJv
dG90eXBlLmVxdWFscyk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gbW9udGggaXMgdGhlIHNh
bWUuCisgICAgICAgIChNb250aC5wcm90b3R5cGUucHJldmlvdXMpOiBSZXR1cm5zIHRoZSBwcmV2
aW91cyBtb250aC4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS5uZXh0KTogUmV0dXJucyB0aGUg
bmV4dCBtb250aC4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS5zdGFydCk6IFJldHVybnMgYSBk
YXRldGltZSB0aGF0IGlzIHRoZSBzdGFydCBvZiB0aGlzIG1vbnRoLiBUaGUgdmFsdWUgaXMgaW5j
bHVzaXZlLgorICAgICAgICAoTW9udGgucHJvdG90eXBlLmVuZCk6IFJldHVybnMgYSBkYXRldGlt
ZSB0aGF0IGlzIHRoZSBlbmQgb2YgdGhpcyBtb250aC4gVGhlIHZhbHVlIGlzIGV4Y2x1c2l2ZS4K
KyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS52YWx1ZU9mKTogUmV0dXJucyBhIG51bWJlciByZXBy
ZXNlbnRpbmcgdGhlIG1vbnRoLgorICAgICAgICAoTW9udGgucHJvdG90eXBlLnRvU3RyaW5nKTog
UmV0dXJucyBhbiBJU08gbW9udGggc3RyaW5nLgorICAgICAgICAoWWVhck1vbnRoQ29udHJvbGxl
cik6IFVzZSBNb250aCBvYmplY3QuCisgICAgICAgIChZZWFyTW9udGhDb250cm9sbGVyLnByb3Rv
dHlwZS5hdHRhY2hUbyk6IFllYXIgMjc1NzYwIGVuZHMgaW4gU2VwdGVtYmVyIHNvIHVzZSB0aGUg
eWVhciBiZWZvcmUgdG8gbWVhc3VyZSB0aGUgbGFiZWwgd2lkdGguCisgICAgICAgIChZZWFyTW9u
dGhDb250cm9sbGVyLnByb3RvdHlwZS5zZXRNb250aCk6IFRha2UgYSBtb250aCBvYmplY3QuCisg
ICAgICAgIChZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5fcmVkcmF3KTogVXNlIElTTyBt
b250aCBzdHJpbmcgZm9yIGVsZW1lbnQuZGF0YXNldC52YWx1ZS4KKyAgICAgICAgKFllYXJNb250
aENvbnRyb2xsZXIucHJvdG90eXBlLl9oYW5kbGVZZWFyTW9udGhDaGFuZ2UpOgorICAgICAgICAo
WWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUubW92ZVJlbGF0aXZlbHkpOgorICAgICAgICAo
RGF5c1RhYmxlKTogVXNlIE1vbnRoIG9iamVjdC4KKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5
cGUuX3JlbmRlck1vbnRoKTogVGFrZSBhIG1vbnRoIG9iamVjdC4gVGVzdGluZyBmb3IgaXNOYU4g
aXMgbW92ZWQgdXAgdG8gZml4IGEgYnVnIHdoZW4gc2hvd2luZyBTZXB0ZW1iZXIsIDI3NTc2MC4K
KyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX25hdmlnYXRlVG9Nb250aCk6IFRha2UgYSBt
b250aCBvYmplY3QuCisgICAgICAgIChEYXlzVGFibGUucHJvdG90eXBlLl9uYXZpZ2F0ZVRvTW9u
dGhXaXRoQW5pbWF0aW9uKTogVGFrZSBhIG1vbnRoIG9iamVjdC4KKyAgICAgICAgKERheXNUYWJs
ZS5wcm90b3R5cGUubmF2aWdhdGVUb01vbnRoQW5kS2VlcFNlbGVjdGlvblBvc2l0aW9uKTogVGFr
ZSBhIG1vbnRoIG9iamVjdC4KKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuc2VsZWN0RGF0
ZSk6CisgICAgICAgIChEYXlzVGFibGUucHJvdG90eXBlLl9tYXliZVNldFByZXZpb3VzTW9udGgp
OiBVc2UgTW9udGggb2JqZWN0IHRvIGNhbGN1bGF0ZSB0aGUgcHJldmlvdXMgbW9udGguCisgICAg
ICAgIChEYXlzVGFibGUucHJvdG90eXBlLl9tYXliZVNldE5leHRNb250aCk6IFVzZSBNb250aCBv
YmplY3QgdG8gY2FsY3VsYXRlIHRoZSBuZXh0IG1vbnRoLgorCiAyMDEyLTExLTAxICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4LiBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzMyNTIgYnJva2UgdGhlIFdpbmRvd3MgYnVpbGQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRh
clBpY2tlci5qcyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFy
UGlja2VyLmpzCmluZGV4IDYxMTRjYzU3YmI4ZmNmNTBlMzg4NTFmNWZjMzIxYWYzY2E4NTJiODIu
LmRmZDgxZmNhMzNmNjY1NjdmNzQ2NjMxYTM5OGVkMjQ3NDkxOGQxY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzCkBA
IC0xMzksMTMgKzEzOSwxMyBAQCBmdW5jdGlvbiBmb3JtYXRKYXBhbmVzZUltcGVyaWFsRXJhKHll
YXIsIG1vbnRoKSB7CiB9CiAKIC8qKgotICogQHBhcmFtIHshbnVtYmVyfSB5ZWFyCi0gKiBAcGFy
YW0geyFudW1iZXJ9IG1vbnRoCiAgKiBAcmV0dXJuIHshc3RyaW5nfQogICovCi1mdW5jdGlvbiBm
b3JtYXRZZWFyTW9udGgoeWVhciwgbW9udGgpIHsKLSAgICB2YXIgeWVhclN0cmluZyA9IGxvY2Fs
aXplTnVtYmVyKHllYXIpOwotICAgIHZhciBtb250aFN0cmluZyA9IGdsb2JhbC5wYXJhbXMubW9u
dGhMYWJlbHNbbW9udGhdOworTW9udGgucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nID0gZnVuY3Rp
b24oKSB7CisgICAgaWYgKGlzTmFOKHRoaXMueWVhcikgfHwgaXNOYU4odGhpcy55ZWFyKSkKKyAg
ICAgICAgcmV0dXJuICJJbnZhbGlkIE1vbnRoIjsKKyAgICB2YXIgeWVhclN0cmluZyA9IGxvY2Fs
aXplTnVtYmVyKHRoaXMueWVhcik7CisgICAgdmFyIG1vbnRoU3RyaW5nID0gZ2xvYmFsLnBhcmFt
cy5tb250aExhYmVsc1t0aGlzLm1vbnRoXTsKICAgICBzd2l0Y2ggKGdldExhbmd1YWdlKCkpIHsK
ICAgICBjYXNlICJldSI6CiAgICAgY2FzZSAiZmlsIjoKQEAgLTE1OCw3ICsxNTgsNyBAQCBmdW5j
dGlvbiBmb3JtYXRZZWFyTW9udGgoeWVhciwgbW9udGgpIHsKICAgICBjYXNlICJodSI6CiAgICAg
ICAgIHJldHVybiB5ZWFyU3RyaW5nICsgIi4gIiArIG1vbnRoU3RyaW5nOwogICAgIGNhc2UgImph
IjoKLSAgICAgICAgcmV0dXJuIHllYXJTdHJpbmcgKyAi5bm0IiArIGZvcm1hdEphcGFuZXNlSW1w
ZXJpYWxFcmEoeWVhciwgbW9udGgpICsgIiAiICsgbW9udGhTdHJpbmc7CisgICAgICAgIHJldHVy
biB5ZWFyU3RyaW5nICsgIuW5tCIgKyBmb3JtYXRKYXBhbmVzZUltcGVyaWFsRXJhKHRoaXMueWVh
ciwgdGhpcy5tb250aCkgKyAiICIgKyBtb250aFN0cmluZzsKICAgICBjYXNlICJ6aCI6CiAgICAg
ICAgIHJldHVybiB5ZWFyU3RyaW5nICsgIuW5tCIgKyBtb250aFN0cmluZzsKICAgICBjYXNlICJr
byI6CkBAIC0xNzIsNyArMTcyLDcgQEAgZnVuY3Rpb24gZm9ybWF0WWVhck1vbnRoKHllYXIsIG1v
bnRoKSB7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIG1vbnRoU3RyaW5nICsgIiAiICsg
eWVhclN0cmluZzsKICAgICB9Ci19Cit9OwogCiBmdW5jdGlvbiBjcmVhdGVVVENEYXRlKHllYXIs
IG1vbnRoLCBkYXRlKSB7CiAgICAgdmFyIG5ld0RhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQyh5ZWFy
LCBtb250aCwgZGF0ZSkpOwpAQCAtMjA5LDYgKzIwOSwxMTAgQEAgZnVuY3Rpb24gc2VyaWFsaXpl
RGF0ZSh5ZWFyLCBtb250aCwgZGF5KSB7CiAgICAgcmV0dXJuIHllYXJTdHJpbmcgKyAiLSIgKyAo
IjAiICsgKG1vbnRoICsgMSkpLnN1YnN0cigtMiwgMikgKyAiLSIgKyAoIjAiICsgZGF5KS5zdWJz
dHIoLTIsIDIpOwogfQogCisvKioKKyAqIEBwYXJhbSB7IW51bWJlcnxNb250aH0gdmFsdWVPck1v
bnRoT3JZZWFyCisgKiBAcGFyYW0geyFudW1iZXI9fSBtb250aAorICovCitmdW5jdGlvbiBNb250
aCh2YWx1ZU9yTW9udGhPclllYXIsIG1vbnRoKSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgg
PT0gMikgeworICAgICAgICB0aGlzLnllYXIgPSB2YWx1ZU9yTW9udGhPclllYXI7CisgICAgICAg
IHRoaXMubW9udGggPSBtb250aDsKKyAgICB9IGVsc2UgaWYgKHZhbHVlT3JNb250aE9yWWVhciBp
bnN0YW5jZW9mIE1vbnRoKSB7CisgICAgICAgIHRoaXMueWVhciA9IHZhbHVlT3JNb250aE9yWWVh
ci55ZWFyOworICAgICAgICB0aGlzLm1vbnRoID0gdmFsdWVPck1vbnRoT3JZZWFyLm1vbnRoOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHRoaXMueWVhciA9IE1hdGguZmxvb3IodmFsdWVPck1vbnRo
T3JZZWFyIC8gMTIpICsgMTk3MDsKKyAgICAgICAgdGhpcy5tb250aCA9IHZhbHVlT3JNb250aE9y
WWVhciAlIDEyOworICAgIH0KKyAgICB0aGlzLnllYXIgPSB0aGlzLnllYXIgKyBNYXRoLmZsb29y
KHRoaXMubW9udGggLyAxMik7CisgICAgdGhpcy5tb250aCA9IHRoaXMubW9udGggPCAwID8gdGhp
cy5tb250aCAlIDEyICsgMTIgOiB0aGlzLm1vbnRoICUgMTI7CisgICAgaWYgKHRoaXMueWVhciA8
IDAgfHwgTW9udGguTWF4aW11bSA8IHRoaXMpIHsKKyAgICAgICAgdGhpcy55ZWFyID0gTmFOOwor
ICAgICAgICB0aGlzLm1vbnRoID0gTmFOOworICAgIH0KK307CisKK01vbnRoLklTT1N0cmluZ1Jl
Z0V4cCA9IC9eKFxkKyktKFxkKykkLzsKKworLy8gU2VlIFdlYkNvcmUvcGxhdGZvcm0vRGF0ZUNv
bXBvbmVudHMuaC4KK01vbnRoLk1heGltdW0gPSBuZXcgTW9udGgoMjc1NzYwLCA4KTsKKworLyoq
CisgKiBAcGFyYW0geyFzdHJpbmd9IHN0cgorICogQHJldHVybiB7P01vbnRofQorICovCitNb250
aC5wYXJzZSA9IGZ1bmN0aW9uKHN0cikgeworICAgIHZhciBtYXRjaCA9IE1vbnRoLklTT1N0cmlu
Z1JlZ0V4cC5leGVjKHN0cik7CisgICAgaWYgKCFtYXRjaCkKKyAgICAgICAgcmV0dXJuIG51bGw7
CisgICAgdmFyIHllYXIgPSBwYXJzZUludChtYXRjaFsxXSwgMTApOworICAgIHZhciBtb250aCA9
IHBhcnNlSW50KG1hdGNoWzJdLCAxMCkgLSAxOworICAgIHJldHVybiBuZXcgTW9udGgoeWVhciwg
bW9udGgpOworfTsKKworLyoqCisgKiBAcGFyYW0geyFEYXRlfSBkYXRlCisgKiBAcmV0dXJuIHsh
TW9udGh9CisgKi8KK01vbnRoLmNyZWF0ZUZyb21EYXRlID0gZnVuY3Rpb24oZGF0ZSkgeworICAg
IHJldHVybiBuZXcgTW9udGgoZGF0ZS5nZXRVVENGdWxsWWVhcigpLCBkYXRlLmdldFVUQ01vbnRo
KCkpOworfTsKKworLyoqCisgKiBAcGFyYW0geyFNb250aH0gb3RoZXIKKyAqIEByZXR1cm4geyFi
b29sfQorICovCitNb250aC5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24ob3RoZXIpIHsKKyAg
ICByZXR1cm4gdGhpcy55ZWFyID09PSBvdGhlci55ZWFyICYmIHRoaXMubW9udGggPT09IG90aGVy
Lm1vbnRoOworfTsKKworLyoqCisgKiBAcmV0dXJuIHshTW9udGh9CisgKi8KK01vbnRoLnByb3Rv
dHlwZS5wcmV2aW91cyA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgTW9udGgodGhpcy55
ZWFyLCB0aGlzLm1vbnRoIC0gMSk7Cit9OworCisvKioKKyAqIEByZXR1cm4geyFNb250aH0KKyAq
LworTW9udGgucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IE1v
bnRoKHRoaXMueWVhciwgdGhpcy5tb250aCArIDEpOworfTsKKworLyoqCisgKiBAcmV0dXJuIHsh
RGF0ZX0KKyAqLworTW9udGgucHJvdG90eXBlLnN0YXJ0RGF0ZSA9IGZ1bmN0aW9uKCkgeworICAg
IHJldHVybiBjcmVhdGVVVENEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCwgMSk7Cit9OworCisv
KioKKyAqIEByZXR1cm4geyFEYXRlfQorICovCitNb250aC5wcm90b3R5cGUuZW5kRGF0ZSA9IGZ1
bmN0aW9uKCkgeworICAgIGlmICh0aGlzLmVxdWFscyhNb250aC5NYXhpbXVtKSkKKyAgICAgICAg
cmV0dXJuIENhbGVuZGFyUGlja2VyLk1heGltdW1Qb3NzaWJsZURhdGU7CisgICAgcmV0dXJuIHRo
aXMubmV4dCgpLnN0YXJ0RGF0ZSgpOworfTsKKworLyoqCisgKiBAcmV0dXJuIHshbnVtYmVyfQor
ICovCitNb250aC5wcm90b3R5cGUudmFsdWVPZiA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiAo
dGhpcy55ZWFyIC0gMTk3MCkgKiAxMiArIHRoaXMubW9udGg7Cit9OworCisvKioKKyAqIEByZXR1
cm4geyFzdHJpbmd9CisgKi8KK01vbnRoLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkg
eworICAgIHZhciB5ZWFyU3RyaW5nID0gU3RyaW5nKHRoaXMueWVhcik7CisgICAgaWYgKHllYXJT
dHJpbmcubGVuZ3RoIDwgNCkKKyAgICAgICAgeWVhclN0cmluZyA9ICgiMDAwIiArIHllYXJTdHJp
bmcpLnN1YnN0cigtNCwgNCk7CisgICAgcmV0dXJuIHllYXJTdHJpbmcgKyAiLSIgKyAoIjAiICsg
KHRoaXMubW9udGggKyAxKSkuc3Vic3RyKC0yLCAyKTsKK307CisKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIElu
aXRpYWxpemF0aW9uCiAKQEAgLTQzMywxMyArNTM3LDkgQEAgQ2FsZW5kYXJQaWNrZXIucHJvdG90
eXBlLl9sYXlvdXRCdXR0b25zID0gZnVuY3Rpb24oKSB7CiBmdW5jdGlvbiBZZWFyTW9udGhDb250
cm9sbGVyKHBpY2tlcikgewogICAgIHRoaXMucGlja2VyID0gcGlja2VyOwogICAgIC8qKgotICAg
ICAqIEB0eXBlIHshbnVtYmVyfQotICAgICAqLwotICAgIHRoaXMuX2N1cnJlbnRZZWFyID0gLTE7
Ci0gICAgLyoqCi0gICAgICogQHR5cGUgeyFudW1iZXJ9CisgICAgICogQHR5cGUgez9Nb250aH0K
ICAgICAgKi8KLSAgICB0aGlzLl9jdXJyZW50TW9udGggPSAtMTsKKyAgICB0aGlzLl9jdXJyZW50
TW9udGggPSBudWxsOwogfQogCiAvKioKQEAgLTQ3NywxNCArNTc3LDE3IEBAIFllYXJNb250aENv
bnRyb2xsZXIucHJvdG90eXBlLmF0dGFjaFRvID0gZnVuY3Rpb24oZWxlbWVudCkgewogICAgIGVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fd2FsbCk7CiAKICAgICB2YXIgbWF4aW11bVllYXIgPSB0
aGlzLnBpY2tlci5tYXhpbXVtRGF0ZS5nZXRVVENGdWxsWWVhcigpOworICAgIC8vIEJlY2F1c2Ug
dGhlIG1heGltdW0gcG9zc2libGUgeWVhciBpcyBTZXB0ZW1iZXIgd2Ugc2hvdWxkIHVzZSB0aGUg
eWVhciBiZWZvcmUgaXQuCisgICAgaWYgKG1heGltdW1ZZWFyID09PSBNb250aC5NYXhpbXVtLnll
YXIpCisgICAgICAgIG1heGltdW1ZZWFyLS07CiAgICAgdmFyIG1heFdpZHRoID0gMDsKICAgICBm
b3IgKHZhciBtID0gMDsgbSA8IDEyOyArK20pIHsKLSAgICAgICAgdGhpcy5fbW9udGgudGV4dENv
bnRlbnQgPSBmb3JtYXRZZWFyTW9udGgobWF4aW11bVllYXIsIG0pOworICAgICAgICB0aGlzLl9t
b250aC50ZXh0Q29udGVudCA9IG5ldyBNb250aChtYXhpbXVtWWVhciwgbSkudG9Mb2NhbGVTdHJp
bmcoKTsKICAgICAgICAgbWF4V2lkdGggPSBNYXRoLm1heChtYXhXaWR0aCwgdGhpcy5fbW9udGgu
b2Zmc2V0V2lkdGgpOwogICAgIH0KICAgICBpZiAoZ2V0TGFuZ3VhZ2UoKSA9PSAiamEiICYmIElt
cGVyaWFsRXJhTGltaXQgPCBtYXhpbXVtWWVhcikgewogICAgICAgICBmb3IgKHZhciBtID0gMDsg
bSA8IDEyOyArK20pIHsKLSAgICAgICAgICAgIHRoaXMuX21vbnRoLnRleHRDb250ZW50ID0gZm9y
bWF0WWVhck1vbnRoKEltcGVyaWFsRXJhTGltaXQsIG0pOworICAgICAgICAgICAgdGhpcy5fbW9u
dGgudGV4dENvbnRlbnQgPSBuZXcgTW9udGgoSW1wZXJpYWxFcmFMaW1pdCwgbSkudG9Mb2NhbGVT
dHJpbmcoKTsKICAgICAgICAgICAgIG1heFdpZHRoID0gTWF0aC5tYXgobWF4V2lkdGgsIHRoaXMu
X21vbnRoLm9mZnNldFdpZHRoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTU1MSwzMyArNjU0LDI0
IEBAIFllYXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLl9hdHRhY2hSaWdodEJ1dHRvbnNUbyA9
IGZ1bmN0aW9uKHBhcmVudCkgewogfTsKIAogLyoqCi0gKiBAcmV0dXJuIHshbnVtYmVyfQotICov
Ci1ZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS55ZWFyID0gZnVuY3Rpb24oKSB7Ci0gICAg
cmV0dXJuIHRoaXMuX2N1cnJlbnRZZWFyOwotfTsKLQotLyoqCi0gKiBAcmV0dXJuIHshbnVtYmVy
fQorICogQHJldHVybiB7P01vbnRofQogICovCiBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlw
ZS5tb250aCA9IGZ1bmN0aW9uKCkgewogICAgIHJldHVybiB0aGlzLl9jdXJyZW50TW9udGg7CiB9
OwogCiAvKioKLSAqIEBwYXJhbSB7IW51bWJlcn0geWVhcgotICogQHBhcmFtIHshbnVtYmVyfSBt
b250aAorICogQHBhcmFtIHshTW9udGh9IG1vbnRoCiAgKi8KLVllYXJNb250aENvbnRyb2xsZXIu
cHJvdG90eXBlLnNldFllYXJNb250aCA9IGZ1bmN0aW9uKHllYXIsIG1vbnRoKSB7Ci0gICAgdGhp
cy5fY3VycmVudFllYXIgPSB5ZWFyOwotICAgIHRoaXMuX2N1cnJlbnRNb250aCA9IG1vbnRoOwor
WWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUuc2V0TW9udGggPSBmdW5jdGlvbihtb250aCkg
eworICAgIHRoaXMuX2N1cnJlbnRNb250aCA9IG5ldyBNb250aChtb250aCk7CiAgICAgdGhpcy5f
cmVkcmF3KCk7CiB9OwogCiBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5fcmVkcmF3ID0g
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIG1pbiA9IHRoaXMucGlja2VyLm1pbmltdW1EYXRlLmdldFVU
Q0Z1bGxZZWFyKCkgKiAxMiArIHRoaXMucGlja2VyLm1pbmltdW1EYXRlLmdldFVUQ01vbnRoKCk7
Ci0gICAgdmFyIG1heCA9IHRoaXMucGlja2VyLm1heGltdW1EYXRlLmdldFVUQ0Z1bGxZZWFyKCkg
KiAxMiArIHRoaXMucGlja2VyLm1heGltdW1EYXRlLmdldFVUQ01vbnRoKCk7Ci0gICAgdmFyIGN1
cnJlbnQgPSB0aGlzLl9jdXJyZW50WWVhciAqIDEyICsgdGhpcy5fY3VycmVudE1vbnRoOworICAg
IHZhciBtaW4gPSBNb250aC5jcmVhdGVGcm9tRGF0ZSh0aGlzLnBpY2tlci5taW5pbXVtRGF0ZSku
dmFsdWVPZigpOworICAgIHZhciBtYXggPSBNb250aC5jcmVhdGVGcm9tRGF0ZSh0aGlzLnBpY2tl
ci5tYXhpbXVtRGF0ZSkudmFsdWVPZigpOworICAgIHZhciBjdXJyZW50ID0gdGhpcy5fY3VycmVu
dE1vbnRoLnZhbHVlT2YoKTsKICAgICBpZiAodGhpcy5fbGVmdDMpCiAgICAgICAgIHRoaXMuX2xl
ZnQzLmRpc2FibGVkID0gY3VycmVudCAtIDEzIDwgbWluOwogICAgIHRoaXMuX2xlZnQyLmRpc2Fi
bGVkID0gY3VycmVudCAtIDIgPCBtaW47CkBAIC01ODYsMTUgKzY4MCwxNiBAQCBZZWFyTW9udGhD
b250cm9sbGVyLnByb3RvdHlwZS5fcmVkcmF3ID0gZnVuY3Rpb24oKSB7CiAgICAgdGhpcy5fcmln
aHQyLmRpc2FibGVkID0gY3VycmVudCArIDIgPiBtYXg7CiAgICAgaWYgKHRoaXMuX3JpZ2h0MykK
ICAgICAgICAgdGhpcy5fcmlnaHQzLmRpc2FibGVkID0gY3VycmVudCArIDEzID4gbWF4OwotICAg
IHRoaXMuX21vbnRoLmlubmVyVGV4dCA9IGZvcm1hdFllYXJNb250aCh0aGlzLl9jdXJyZW50WWVh
ciwgdGhpcy5fY3VycmVudE1vbnRoKTsKKyAgICB0aGlzLl9tb250aC5pbm5lclRleHQgPSB0aGlz
Ll9jdXJyZW50TW9udGgudG9Mb2NhbGVTdHJpbmcoKTsKICAgICB3aGlsZSAodGhpcy5fbW9udGhQ
b3B1cENvbnRlbnRzLmhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgdGhpcy5fbW9udGhQb3B1cENv
bnRlbnRzLnJlbW92ZUNoaWxkKHRoaXMuX21vbnRoUG9wdXBDb250ZW50cy5maXJzdENoaWxkKTsK
IAogICAgIGZvciAodmFyIG0gPSBjdXJyZW50IC0gNjsgbSA8PSBjdXJyZW50ICsgNjsgbSsrKSB7
CiAgICAgICAgIGlmIChtIDwgbWluIHx8IG0gPiBtYXgpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgdmFyIG9wdGlvbiA9IGNyZWF0ZUVsZW1lbnQoImRpdiIsIENsYXNzTmFtZXMuTW9u
dGhTZWxlY3RvclBvcHVwRW50cnksIGZvcm1hdFllYXJNb250aChNYXRoLmZsb29yKG0gLyAxMiks
IG0gJSAxMikpOwotICAgICAgICBvcHRpb24uZGF0YXNldC52YWx1ZSA9IFN0cmluZyhNYXRoLmZs
b29yKG0gLyAxMikpICsgIi0iICsgU3RyaW5nKG0gJSAxMik7CisgICAgICAgIHZhciBtb250aCA9
IG5ldyBNb250aChtKTsKKyAgICAgICAgdmFyIG9wdGlvbiA9IGNyZWF0ZUVsZW1lbnQoImRpdiIs
IENsYXNzTmFtZXMuTW9udGhTZWxlY3RvclBvcHVwRW50cnksIG1vbnRoLnRvTG9jYWxlU3RyaW5n
KCkpOworICAgICAgICBvcHRpb24uZGF0YXNldC52YWx1ZSA9IG1vbnRoLnRvU3RyaW5nKCk7CiAg
ICAgICAgIHRoaXMuX21vbnRoUG9wdXBDb250ZW50cy5hcHBlbmRDaGlsZChvcHRpb24pOwogICAg
ICAgICBpZiAobSA9PSBjdXJyZW50KQogICAgICAgICAgICAgb3B0aW9uLmNsYXNzTGlzdC5hZGQo
Q2xhc3NOYW1lcy5TZWxlY3RlZE1vbnRoWWVhcik7CkBAIC03MTUsMTMgKzgxMCw3IEBAIFllYXJN
b250aENvbnRyb2xsZXIucHJvdG90eXBlLl9oYW5kbGVZZWFyTW9udGhDaGFuZ2UgPSBmdW5jdGlv
bigpIHsKICAgICB2YXIgc2VsZWN0aW9uID0gdGhpcy5fZ2V0U2VsZWN0aW9uKCk7CiAgICAgaWYg
KCFzZWxlY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICB2YXIgdmFsdWUgPSBzZWxlY3Rpb24u
ZGF0YXNldC52YWx1ZTsKLSAgICB2YXIgcmVzdWx0ICA9IHZhbHVlLm1hdGNoKC8oXGQrKS0oXGQr
KS8pOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm47Ci0gICAgdmFyIG5ld1llYXIg
PSBOdW1iZXIocmVzdWx0WzFdKTsKLSAgICB2YXIgbmV3TW9udGggPSBOdW1iZXIocmVzdWx0WzJd
KTsKLSAgICB0aGlzLnBpY2tlci5kYXlzVGFibGUubmF2aWdhdGVUb01vbnRoQW5kS2VlcFNlbGVj
dGlvblBvc2l0aW9uKG5ld1llYXIsIG5ld01vbnRoKTsKKyAgICB0aGlzLnBpY2tlci5kYXlzVGFi
bGUubmF2aWdhdGVUb01vbnRoQW5kS2VlcFNlbGVjdGlvblBvc2l0aW9uKE1vbnRoLnBhcnNlKHNl
bGVjdGlvbi5kYXRhc2V0LnZhbHVlKSk7CiB9OwogCiAvKgpAQCAtNzc5LDkgKzg2OCw5IEBAIFll
YXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLl9oYW5kbGVCdXR0b25DbGljayA9IGZ1bmN0aW9u
KGV2ZW50KSB7CiAgKiBAcGFyYW0geyFudW1iZXJ9IGFtb3VudAogICovCiBZZWFyTW9udGhDb250
cm9sbGVyLnByb3RvdHlwZS5tb3ZlUmVsYXRpdmVseSA9IGZ1bmN0aW9uKGFtb3VudCkgewotICAg
IHZhciBtaW4gPSB0aGlzLnBpY2tlci5taW5pbXVtRGF0ZS5nZXRVVENGdWxsWWVhcigpICogMTIg
KyB0aGlzLnBpY2tlci5taW5pbXVtRGF0ZS5nZXRVVENNb250aCgpOwotICAgIHZhciBtYXggPSB0
aGlzLnBpY2tlci5tYXhpbXVtRGF0ZS5nZXRVVENGdWxsWWVhcigpICogMTIgKyB0aGlzLnBpY2tl
ci5tYXhpbXVtRGF0ZS5nZXRVVENNb250aCgpOwotICAgIHZhciBjdXJyZW50ID0gdGhpcy5fY3Vy
cmVudFllYXIgKiAxMiArIHRoaXMuX2N1cnJlbnRNb250aDsKKyAgICB2YXIgbWluID0gTW9udGgu
Y3JlYXRlRnJvbURhdGUodGhpcy5waWNrZXIubWluaW11bURhdGUpLnZhbHVlT2YoKTsKKyAgICB2
YXIgbWF4ID0gTW9udGguY3JlYXRlRnJvbURhdGUodGhpcy5waWNrZXIubWF4aW11bURhdGUpLnZh
bHVlT2YoKTsKKyAgICB2YXIgY3VycmVudCA9IHRoaXMuX2N1cnJlbnRNb250aC52YWx1ZU9mKCk7
CiAgICAgdmFyIHVwZGF0ZWQgPSBjdXJyZW50OwogICAgIGlmIChhbW91bnQgPCAwKQogICAgICAg
ICB1cGRhdGVkID0gY3VycmVudCArIGFtb3VudCA+PSBtaW4gPyBjdXJyZW50ICsgYW1vdW50IDog
bWluOwpAQCAtNzg5LDcgKzg3OCw3IEBAIFllYXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLm1v
dmVSZWxhdGl2ZWx5ID0gZnVuY3Rpb24oYW1vdW50KSB7CiAgICAgICAgIHVwZGF0ZWQgPSBjdXJy
ZW50ICsgYW1vdW50IDw9IG1heCA/IGN1cnJlbnQgKyBhbW91bnQgOiBtYXg7CiAgICAgaWYgKHVw
ZGF0ZWQgPT0gY3VycmVudCkKICAgICAgICAgcmV0dXJuOwotICAgIHRoaXMucGlja2VyLmRheXNU
YWJsZS5uYXZpZ2F0ZVRvTW9udGhBbmRLZWVwU2VsZWN0aW9uUG9zaXRpb24oTWF0aC5mbG9vcih1
cGRhdGVkIC8gMTIpLCB1cGRhdGVkICUgMTIpOworICAgIHRoaXMucGlja2VyLmRheXNUYWJsZS5u
YXZpZ2F0ZVRvTW9udGhBbmRLZWVwU2VsZWN0aW9uUG9zaXRpb24obmV3IE1vbnRoKHVwZGF0ZWQp
KTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTgwMSwxMyArODkwLDkgQEAgWWVhck1vbnRoQ29udHJv
bGxlci5wcm90b3R5cGUubW92ZVJlbGF0aXZlbHkgPSBmdW5jdGlvbihhbW91bnQpIHsKIGZ1bmN0
aW9uIERheXNUYWJsZShwaWNrZXIpIHsKICAgICB0aGlzLnBpY2tlciA9IHBpY2tlcjsKICAgICAv
KioKLSAgICAgKiBAdHlwZSB7IW51bWJlcn0KKyAgICAgKiBAdHlwZSB7P01vbnRofQogICAgICAq
LwotICAgIHRoaXMuX2N1cnJlbnRZZWFyID0gLTE7Ci0gICAgLyoqCi0gICAgICogQHR5cGUgeyFu
dW1iZXJ9Ci0gICAgICovCi0gICAgdGhpcy5fY3VycmVudE1vbnRoID0gLTE7CisgICAgdGhpcy5f
Y3VycmVudE1vbnRoID0gbnVsbDsKIH0KIAogLyoqCkBAIC04ODksMTAgKzk3NCw5IEBAIENhbGVu
ZGFyUGlja2VyLnByb3RvdHlwZS5pc1ZhbGlkRGF0ZSA9IGZ1bmN0aW9uKHRpbWUpIHsKICAqIEBw
YXJhbSB7IW51bWJlcn0geWVhcgogICogQHBhcmFtIHshbnVtYmVyfSBtb250aAogICovCi1EYXlz
VGFibGUucHJvdG90eXBlLl9yZW5kZXJNb250aCA9IGZ1bmN0aW9uKHllYXIsIG1vbnRoKSB7Ci0g
ICAgdGhpcy5fY3VycmVudFllYXIgPSB5ZWFyOwotICAgIHRoaXMuX2N1cnJlbnRNb250aCA9IG1v
bnRoOwotICAgIHZhciBkYXlJdGVyYXRvciA9IGNyZWF0ZVVUQ0RhdGUoeWVhciwgbW9udGgsIDEp
OworRGF5c1RhYmxlLnByb3RvdHlwZS5fcmVuZGVyTW9udGggPSBmdW5jdGlvbihtb250aCkgewor
ICAgIHRoaXMuX2N1cnJlbnRNb250aCA9IG5ldyBNb250aChtb250aCk7CisgICAgdmFyIGRheUl0
ZXJhdG9yID0gdGhpcy5fY3VycmVudE1vbnRoLnN0YXJ0RGF0ZSgpOwogICAgIHZhciBtb250aFN0
YXJ0RGF5ID0gZGF5SXRlcmF0b3IuZ2V0VVRDRGF5KCk7CiAgICAgdmFyIHdlZWtTdGFydERheSA9
IGdsb2JhbC5wYXJhbXMud2Vla1N0YXJ0RGF5IHx8IDA7CiAgICAgdmFyIHN0YXJ0T2Zmc2V0ID0g
d2Vla1N0YXJ0RGF5IC0gbW9udGhTdGFydERheTsKQEAgLTkwMSwyNiArOTg1LDIyIEBAIERheXNU
YWJsZS5wcm90b3R5cGUuX3JlbmRlck1vbnRoID0gZnVuY3Rpb24oeWVhciwgbW9udGgpIHsKICAg
ICBkYXlJdGVyYXRvci5zZXRVVENEYXRlKHN0YXJ0T2Zmc2V0ICsgMSk7CiAgICAgZm9yICh2YXIg
dyA9IDA7IHcgPCBEYXlzVGFibGUuX1dlZWtzOyB3KyspIHsKICAgICAgICAgZm9yICh2YXIgZCA9
IDA7IGQgPCA3OyBkKyspIHsKLSAgICAgICAgICAgIHZhciBpdGVyWWVhciA9IGRheUl0ZXJhdG9y
LmdldFVUQ0Z1bGxZZWFyKCk7Ci0gICAgICAgICAgICB2YXIgaXRlck1vbnRoID0gZGF5SXRlcmF0
b3IuZ2V0VVRDTW9udGgoKTsKKyAgICAgICAgICAgIHZhciBpdGVyTW9udGggPSBNb250aC5jcmVh
dGVGcm9tRGF0ZShkYXlJdGVyYXRvcik7CiAgICAgICAgICAgICB2YXIgdGltZSA9IGRheUl0ZXJh
dG9yLmdldFRpbWUoKTsKICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fZGF5c1t3XVtk
XTsKICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gbG9jYWxpemVOdW1iZXIoZGF5SXRl
cmF0b3IuZ2V0VVRDRGF0ZSgpKTsKICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gQ2xh
c3NOYW1lcy5EYXk7Ci0gICAgICAgICAgICBlbGVtZW50LmRhdGFzZXQuc3VibWl0VmFsdWUgPSBz
ZXJpYWxpemVEYXRlKGl0ZXJZZWFyLCBpdGVyTW9udGgsIGRheUl0ZXJhdG9yLmdldFVUQ0RhdGUo
KSk7Ci0gICAgICAgICAgICBpZiAodGhpcy5waWNrZXIub3V0T2ZSYW5nZSh0aW1lKSkKKyAgICAg
ICAgICAgIGVsZW1lbnQuZGF0YXNldC5zdWJtaXRWYWx1ZSA9IHNlcmlhbGl6ZURhdGUoaXRlck1v
bnRoLnllYXIsIGl0ZXJNb250aC5tb250aCwgZGF5SXRlcmF0b3IuZ2V0VVRDRGF0ZSgpKTsKKyAg
ICAgICAgICAgIGlmIChpc05hTih0aW1lKSkgeworICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5u
ZXJUZXh0ID0gIi0iOworICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDbGFz
c05hbWVzLlVuYXZhaWxhYmxlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5waWNrZXIu
b3V0T2ZSYW5nZSh0aW1lKSkKICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQo
Q2xhc3NOYW1lcy5VbmF2YWlsYWJsZSk7CiAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnBpY2tl
ci5zdGVwTWlzbWF0Y2godGltZSkpCiAgICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKENsYXNzTmFtZXMuVW5hdmFpbGFibGUpOwotICAgICAgICAgICAgZWxzZSBpZiAoKGl0ZXJZ
ZWFyID09IHllYXIgJiYgZGF5SXRlcmF0b3IuZ2V0VVRDTW9udGgoKSA8IG1vbnRoKSB8fCAobW9u
dGggPT0gMCAmJiBpdGVyTW9udGggPT0gMTEpKSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5j
bGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuQXZhaWxhYmxlKTsKLSAgICAgICAgICAgICAgICBlbGVt
ZW50LmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5Ob3RUaGlzTW9udGgpOwotICAgICAgICAgICAg
fSBlbHNlIGlmICgoaXRlclllYXIgPT0geWVhciAmJiBkYXlJdGVyYXRvci5nZXRVVENNb250aCgp
ID4gbW9udGgpIHx8IChtb250aCA9PSAxMSAmJiBpdGVyTW9udGggPT0gMCkpIHsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKCFpdGVyTW9udGguZXF1YWxzKHRoaXMuX2N1cnJlbnRNb250aCkpIHsKICAg
ICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5BdmFpbGFibGUp
OwogICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDbGFzc05hbWVzLk5vdFRo
aXNNb250aCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlzTmFOKHRpbWUpKSB7Ci0gICAgICAg
ICAgICAgICAgZWxlbWVudC5pbm5lclRleHQgPSAiLSI7Ci0gICAgICAgICAgICAgICAgZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuVW5hdmFpbGFibGUpOwogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuQXZh
aWxhYmxlKTsKICAgICAgICAgICAgIGRheUl0ZXJhdG9yLnNldFVUQ0RhdGUoZGF5SXRlcmF0b3Iu
Z2V0VVRDRGF0ZSgpICsgMSk7CkBAIC05MzEsMzUgKzEwMTEsMjcgQEAgRGF5c1RhYmxlLnByb3Rv
dHlwZS5fcmVuZGVyTW9udGggPSBmdW5jdGlvbih5ZWFyLCBtb250aCkgewogfTsKIAogLyoqCi0g
KiBAcGFyYW0geyFudW1iZXJ9IHllYXIKLSAqIEBwYXJhbSB7IW51bWJlcn0gbW9udGgKKyAqIEBw
YXJhbSB7IU1vbnRofSBtb250aAogICovCi1EYXlzVGFibGUucHJvdG90eXBlLl9uYXZpZ2F0ZVRv
TW9udGggPSBmdW5jdGlvbih5ZWFyLCBtb250aCkgewotICAgIHRoaXMucGlja2VyLnllYXJNb250
aENvbnRyb2xsZXIuc2V0WWVhck1vbnRoKHllYXIsIG1vbnRoKTsKLSAgICB0aGlzLl9yZW5kZXJN
b250aCh5ZWFyLCBtb250aCk7CitEYXlzVGFibGUucHJvdG90eXBlLl9uYXZpZ2F0ZVRvTW9udGgg
PSBmdW5jdGlvbihtb250aCkgeworICAgIHRoaXMucGlja2VyLnllYXJNb250aENvbnRyb2xsZXIu
c2V0TW9udGgobW9udGgpOworICAgIHRoaXMuX3JlbmRlck1vbnRoKG1vbnRoKTsKIH07CiAKIC8q
KgotICogQHBhcmFtIHshbnVtYmVyfSB5ZWFyCi0gKiBAcGFyYW0geyFudW1iZXJ9IG1vbnRoCisg
KiBAcGFyYW0geyFNb250aH0gbW9udGgKICAqLwotRGF5c1RhYmxlLnByb3RvdHlwZS5fbmF2aWdh
dGVUb01vbnRoV2l0aEFuaW1hdGlvbiA9IGZ1bmN0aW9uKHllYXIsIG1vbnRoKSB7Ci0gICAgaWYg
KHRoaXMuX2N1cnJlbnRZZWFyID49IDAgJiYgdGhpcy5fY3VycmVudE1vbnRoID49IDApIHsKLSAg
ICAgICAgaWYgKHllYXIgPT0gdGhpcy5fY3VycmVudFllYXIgJiYgbW9udGggPT0gdGhpcy5fY3Vy
cmVudE1vbnRoKQorRGF5c1RhYmxlLnByb3RvdHlwZS5fbmF2aWdhdGVUb01vbnRoV2l0aEFuaW1h
dGlvbiA9IGZ1bmN0aW9uKG1vbnRoKSB7CisgICAgaWYgKHRoaXMuX2N1cnJlbnRNb250aCkgewor
ICAgICAgICB2YXIgZGVsdGEgPSB0aGlzLl9jdXJyZW50TW9udGgudmFsdWVPZigpIC0gbW9udGgu
dmFsdWVPZigpOworICAgICAgICBpZiAoZGVsdGEgPT09IDApCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIHZhciBkZWNyZWFzaW5nID0gZmFsc2U7Ci0gICAgICAgIGlmICh5ZWFyIDwgdGhp
cy5fY3VycmVudFllYXIpCi0gICAgICAgICAgICBkZWNyZWFzaW5nID0gdHJ1ZTsKLSAgICAgICAg
ZWxzZSBpZiAoeWVhciA+IHRoaXMuX2N1cnJlbnRZZWFyKQotICAgICAgICAgICAgZGVjcmVhc2lu
ZyA9IGZhbHNlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkZWNyZWFzaW5nID0gbW9udGgg
PCB0aGlzLl9jdXJyZW50TW9udGg7CiAgICAgICAgIHZhciBkYXlzU3R5bGUgPSB0aGlzLl9kYXlz
Q29udGFpbmVyLnN0eWxlOwogICAgICAgICBkYXlzU3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUi
OwogICAgICAgICBkYXlzU3R5bGUud2Via2l0VHJhbnNpdGlvbiA9ICJsZWZ0IDAuMXMgZWFzZSI7
Ci0gICAgICAgIGRheXNTdHlsZS5sZWZ0ID0gKGRlY3JlYXNpbmcgPyAiIiA6ICItIikgKyB0aGlz
Ll9kYXlzQ29udGFpbmVyLm9mZnNldFdpZHRoICsgInB4IjsKKyAgICAgICAgZGF5c1N0eWxlLmxl
ZnQgPSAoZGVsdGEgPiAwID8gIiIgOiAiLSIpICsgdGhpcy5fZGF5c0NvbnRhaW5lci5vZmZzZXRX
aWR0aCArICJweCI7CiAgICAgfQotICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aCh5ZWFyLCBtb250
aCk7CisgICAgdGhpcy5fbmF2aWdhdGVUb01vbnRoKG1vbnRoKTsKIH07CiAKIERheXNUYWJsZS5w
cm90b3R5cGUuX21vdmVJbkRheXMgPSBmdW5jdGlvbigpIHsKQEAgLTk3NCwxNCArMTA0NiwxMyBA
QCBEYXlzVGFibGUucHJvdG90eXBlLl9tb3ZlSW5EYXlzID0gZnVuY3Rpb24oKSB7CiB9OwogCiAv
KioKLSAqIEBwYXJhbSB7IW51bWJlcn0geWVhcgotICogQHBhcmFtIHshbnVtYmVyfSBtb250aAor
ICogQHBhcmFtIHshTW9udGh9IG1vbnRoCiAgKi8KLURheXNUYWJsZS5wcm90b3R5cGUubmF2aWdh
dGVUb01vbnRoQW5kS2VlcFNlbGVjdGlvblBvc2l0aW9uID0gZnVuY3Rpb24oeWVhciwgbW9udGgp
IHsKLSAgICBpZiAoeWVhciA9PSB0aGlzLl9jdXJyZW50WWVhciAmJiBtb250aCA9PSB0aGlzLl9j
dXJyZW50TW9udGgpCitEYXlzVGFibGUucHJvdG90eXBlLm5hdmlnYXRlVG9Nb250aEFuZEtlZXBT
ZWxlY3Rpb25Qb3NpdGlvbiA9IGZ1bmN0aW9uKG1vbnRoKSB7CisgICAgaWYgKHRoaXMuX2N1cnJl
bnRNb250aC5lcXVhbHMobW9udGgpKQogICAgICAgICByZXR1cm47CiAgICAgdmFyIGZpcnN0Tm9k
ZUluU2VsZWN0ZWRSYW5nZSA9IHRoaXMuX2ZpcnN0Tm9kZUluU2VsZWN0ZWRSYW5nZSgpOwotICAg
IHRoaXMuX25hdmlnYXRlVG9Nb250aFdpdGhBbmltYXRpb24oeWVhciwgbW9udGgpOworICAgIHRo
aXMuX25hdmlnYXRlVG9Nb250aFdpdGhBbmltYXRpb24obW9udGgpOwogICAgIGlmIChmaXJzdE5v
ZGVJblNlbGVjdGVkUmFuZ2UpIHsKICAgICAgICAgdmFyIHggPSBwYXJzZUludChmaXJzdE5vZGVJ
blNlbGVjdGVkUmFuZ2UuZGF0YXNldC5wb3NpdGlvblgsIDEwKTsKICAgICAgICAgdmFyIHkgPSBw
YXJzZUludChmaXJzdE5vZGVJblNlbGVjdGVkUmFuZ2UuZGF0YXNldC5wb3NpdGlvblksIDEwKTsK
QEAgLTk5NCw3ICsxMDY1LDcgQEAgRGF5c1RhYmxlLnByb3RvdHlwZS5uYXZpZ2F0ZVRvTW9udGhB
bmRLZWVwU2VsZWN0aW9uUG9zaXRpb24gPSBmdW5jdGlvbih5ZWFyLCBtb24KICAqLwogRGF5c1Rh
YmxlLnByb3RvdHlwZS5zZWxlY3REYXRlID0gZnVuY3Rpb24oZGF0ZSkgewogICAgIHRoaXMuX2Rl
c2VsZWN0KCk7Ci0gICAgdGhpcy5fbmF2aWdhdGVUb01vbnRoV2l0aEFuaW1hdGlvbihkYXRlLmdl
dFVUQ0Z1bGxZZWFyKCksIGRhdGUuZ2V0VVRDTW9udGgoKSk7CisgICAgdGhpcy5fbmF2aWdhdGVU
b01vbnRoV2l0aEFuaW1hdGlvbihNb250aC5jcmVhdGVGcm9tRGF0ZShkYXRlKSk7CiAgICAgdmFy
IGRhdGVTdHJpbmcgPSBzZXJpYWxpemVEYXRlKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwgZGF0ZS5n
ZXRVVENNb250aCgpLCBkYXRlLmdldFVUQ0RhdGUoKSk7CiAgICAgZm9yICh2YXIgdyA9IDA7IHcg
PCBEYXlzVGFibGUuX1dlZWtzOyB3KyspIHsKICAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCA3
OyBkKyspIHsKQEAgLTEwNDIsMTcgKzExMTMsMTEgQEAgRGF5c1RhYmxlLnByb3RvdHlwZS5fZGVz
ZWxlY3QgPSBmdW5jdGlvbigpIHsKICAqIEByZXR1cm4geyFib29sZWFufQogICovCiBEYXlzVGFi
bGUucHJvdG90eXBlLl9tYXliZVNldFByZXZpb3VzTW9udGggPSBmdW5jdGlvbigpIHsKLSAgICB2
YXIgeWVhciA9IHRoaXMucGlja2VyLnllYXJNb250aENvbnRyb2xsZXIueWVhcigpOwotICAgIHZh
ciBtb250aCA9IHRoaXMucGlja2VyLnllYXJNb250aENvbnRyb2xsZXIubW9udGgoKTsKLSAgICB2
YXIgdGhpc01vbnRoU3RhcnRUaW1lID0gY3JlYXRlVVRDRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0
VGltZSgpOwotICAgIGlmICh0aGlzLnBpY2tlci5taW5pbXVtRGF0ZS5nZXRUaW1lKCkgPj0gdGhp
c01vbnRoU3RhcnRUaW1lKQorICAgIHZhciBjdXJyZW50TW9udGggPSB0aGlzLnBpY2tlci55ZWFy
TW9udGhDb250cm9sbGVyLm1vbnRoKCk7CisgICAgdmFyIGN1cnJlbnRNb250aFN0YXJ0ID0gY3Vy
cmVudE1vbnRoLnN0YXJ0RGF0ZSgpOworICAgIGlmICh0aGlzLnBpY2tlci5taW5pbXVtRGF0ZSA+
PSBjdXJyZW50TW9udGhTdGFydCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtb250
aCA9PSAwKSB7Ci0gICAgICAgIHllYXItLTsKLSAgICAgICAgbW9udGggPSAxMTsKLSAgICB9IGVs
c2UKLSAgICAgICAgbW9udGgtLTsKLSAgICB0aGlzLl9uYXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0
aW9uKHllYXIsIG1vbnRoKTsKKyAgICB0aGlzLl9uYXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0aW9u
KGN1cnJlbnRNb250aC5wcmV2aW91cygpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH07CiAKQEAgLTEw
NjAsMTcgKzExMjUsMTAgQEAgRGF5c1RhYmxlLnByb3RvdHlwZS5fbWF5YmVTZXRQcmV2aW91c01v
bnRoID0gZnVuY3Rpb24oKSB7CiAgKiBAcmV0dXJuIHshYm9vbGVhbn0KICAqLwogRGF5c1RhYmxl
LnByb3RvdHlwZS5fbWF5YmVTZXROZXh0TW9udGggPSBmdW5jdGlvbigpIHsKLSAgICB2YXIgeWVh
ciA9IHRoaXMucGlja2VyLnllYXJNb250aENvbnRyb2xsZXIueWVhcigpOwotICAgIHZhciBtb250
aCA9IHRoaXMucGlja2VyLnllYXJNb250aENvbnRyb2xsZXIubW9udGgoKTsKLSAgICBpZiAobW9u
dGggPT0gMTEpIHsKLSAgICAgICAgeWVhcisrOwotICAgICAgICBtb250aCA9IDA7Ci0gICAgfSBl
bHNlCi0gICAgICAgIG1vbnRoKys7Ci0gICAgdmFyIG5leHRNb250aFN0YXJ0VGltZSA9IGNyZWF0
ZVVUQ0RhdGUoeWVhciwgbW9udGgsIDEpLmdldFRpbWUoKTsKLSAgICBpZiAodGhpcy5waWNrZXIu
bWF4aW11bURhdGUuZ2V0VGltZSgpIDwgbmV4dE1vbnRoU3RhcnRUaW1lKQorICAgIHZhciBjdXJy
ZW50TW9udGggPSB0aGlzLnBpY2tlci55ZWFyTW9udGhDb250cm9sbGVyLm1vbnRoKCk7CisgICAg
aWYgKHRoaXMucGlja2VyLm1heGltdW1EYXRlIDwgY3VycmVudE1vbnRoLmVuZERhdGUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aFdpdGhBbmltYXRp
b24oeWVhciwgbW9udGgpOworICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aFdpdGhBbmltYXRpb24o
Y3VycmVudE1vbnRoLm5leHQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9OwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmUz
MzA3ZDE3MTVlODZhOWRjMjUwMTEwNjkwZDJhODM4ZDIwYmU3Ni4uYWRmY2ZiMzhjMDVjMmNiZWEy
ZWQ5NTg4ZTkwNGU1NjA0MjVjOGJlNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTExLTAy
ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVj
ZSBNb250aCBjbGFzcyB0byBjYWxlbmRhciBwaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9j
YWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLWtleS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tl
ci9jYWxlbmRhci1waWNrZXIta2V5LW9wZXJhdGlvbnMuaHRtbDogQWRqdXN0IHRoZSBleHBlY3Rh
dGlvbiBiZWNhdXNlIHdlIGNoYW5nZWQgdGhlIG1vbnRoIHN0cmluZyBmb3JtYXQuCisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXIt
cGlja2VyLW1vdXNlLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3Vz
ZS1vcGVyYXRpb25zLmh0bWw6IERpdHRvLgorCiAyMDEyLTExLTAxICBTZW9uYWUgS2ltICA8c3Vu
YWVsdXYua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW0RSVF0gU3VwcG9ydCBHZW9s
b2NhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9m
b3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLWtleS1vcGVyYXRpb25zLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5k
YXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1rZXktb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKaW5k
ZXggMjViNTQ2OTI1MjI5ZWJhMjlmMTIwZGI4M2U1NmVlOGI0MDU5OWFiOS4uNjljMjY4MjUwZDAw
NGRhMWJmYzIwMTVjYzA4ZWM1YzU3YjRhZWM0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2Vy
LWtleS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXIta2V5LW9w
ZXJhdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC04LDQwICs4LDQwIEBAIFBBU1MgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIpIGlzIG51bGwKIENoZWNrIHRoYXQgcGFnZSBw
b3B1cCBleGlzdHMuCiBQQVNTIHBvcHVwV2luZG93LnBhZ2VQb3B1cENvbnRyb2xsZXIudG9TdHJp
bmcoKSBpcyAiW29iamVjdCBQYWdlUG9wdXBDb250cm9sbGVyXSIKIFBBU1Mgc2VsZWN0ZWREYXRl
KCkgaXMgIjIwMDAtMDEtMDIiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNT
IGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgogQ2hlY2sgdGhhdCBhcnJvdyBrZXlzIHdvcmsg
cHJvcGVybHkgZXZlbiB3aGVuIGdvaW5nIGJldHdlZW4gd2Vla3MgYW5kIG1vbnRocy4KIFBBU1Mg
c2VsZWN0ZWREYXRlKCkgaXMgIjE5OTktMTItMjYiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIy
MDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgogUEFTUyBzZWxlY3RlZERh
dGUoKSBpcyAiMjAwMC0wMS0wMiIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjE5OTktMTEiCitQ
QVNTIGN1cnJlbnRNb250aCgpIGlzICIxOTk5LTEyIgogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAi
MTk5OS0xMi0yNiIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMCIKK1BBU1MgY3VycmVu
dE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIyMDAwLTAxLTAy
IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBp
cyAiMjAwMC0wMSIKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjE5OTktMTItMjYiCi1QQVNTIGN1
cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAx
IgogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMjAwMC0wMS0wOCIKLVBBU1MgY3VycmVudE1vbnRo
KCkgaXMgIjE5OTktMTEiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIxOTk5LTEyIgogUEFTUyBz
ZWxlY3RlZERhdGUoKSBpcyAiMTk5OS0xMi0yNiIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIw
MDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBwcmVzcyBtCiBGQUlMIHNl
bGVjdGVkRGF0ZSgpIHNob3VsZCBiZSAyMDAwLTAxLTI2LiBXYXMgMjAwMC0wMS0zMC4KLVBBU1Mg
Y3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMSIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAt
MDIiCiBwcmVzcyBzaGlmdCArIG0KIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjE5OTktMTItMjYi
Ci1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlz
ICIyMDAwLTAxIgogcHJlc3MgeQogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMjAwMC0xMi0zMSIK
LVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDEtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMg
IjIwMDEtMDEiCiBwcmVzcyBzaGlmdCArIHkKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjE5OTkt
MTItMjYiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250
aCgpIGlzICIyMDAwLTAxIgogcHJlc3MgZAogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMjAwOS0x
Mi0yNyIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMTAtMCIKK1BBU1MgY3VycmVudE1vbnRo
KCkgaXMgIjIwMTAtMDEiCiBwcmVzcyBzaGlmdCArIGQKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMg
IjE5OTktMTItMjYiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJl
bnRNb250aCgpIGlzICIyMDAwLTAxIgogUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9j
ay1wYWdlLXBvcHVwIikgaXMgbnVsbAogUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGF0
ZSIpLnZhbHVlIGlzICIxOTk5LTEyLTI2IgogUEFTUyB0ZXN0VG9kYXkoKSB8fCB0ZXN0VG9kYXko
KSBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXIta2V5LW9wZXJhdGlvbnMuaHRt
bCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlj
a2VyL2NhbGVuZGFyLXBpY2tlci1rZXktb3BlcmF0aW9ucy5odG1sCmluZGV4IDdjMWI3YjdiYTYx
NWY4OTc4OWE5MGY4ODVhY2I2NGZlMDM5NDBmOTguLjRjODBkZDI1NDBjNzU0MTMyNmFkNjdmNWNl
NTVhOGZjZWUzMjkzYTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1rZXktb3BlcmF0aW9u
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2Fs
ZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1rZXktb3BlcmF0aW9ucy5odG1sCkBAIC0yMiw2
NyArMjIsNjcgQEAgZnVuY3Rpb24gdGVzdDEoKSB7CiAgICAgc2hvdWxkQmUoJ3BvcHVwV2luZG93
LnBhZ2VQb3B1cENvbnRyb2xsZXIudG9TdHJpbmcoKScsICciW29iamVjdCBQYWdlUG9wdXBDb250
cm9sbGVyXSInKTsKIAogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMjAwMC0wMS0w
MiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMCInKTsKKyAgICBz
aG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAKICAgICBkZWJ1ZygnQ2hl
Y2sgdGhhdCBhcnJvdyBrZXlzIHdvcmsgcHJvcGVybHkgZXZlbiB3aGVuIGdvaW5nIGJldHdlZW4g
d2Vla3MgYW5kIG1vbnRocy4nKTsKIAogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ3VwQXJyb3cn
KTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjE5OTktMTItMjYiJyk7Ci0gICAg
c2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1
cnJlbnRNb250aCgpJywgJyIyMDAwLTAxIicpOwogICAgIC8vIE1vdmUgZnJvbSBmaXJzdCByb3cg
b2YgSmFudWFyeSAyMDAwIHRvIGxhc3Qgcm93IG9mIERlY2VtYmVyIDE5OTkuCiAgICAgZXZlbnRT
ZW5kZXIua2V5RG93bigndXBBcnJvdycpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScs
ICciMjAwMC0wMS0wMiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjE5OTkt
MTEiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIxOTk5LTEyIicpOwogICAg
IAogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ2Rvd25BcnJvdycpOwogICAgIHNob3VsZEJlKCdz
ZWxlY3RlZERhdGUoKScsICciMTk5OS0xMi0yNiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1v
bnRoKCknLCAnIjIwMDAtMCInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIw
MDAtMDEiJyk7CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bignZG93bkFycm93Jyk7CiAgICAgc2hv
dWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAwLTAxLTAyIicpOwotICAgIHNob3VsZEJlKCdj
dXJyZW50TW9udGgoKScsICciMjAwMC0wIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgo
KScsICciMjAwMC0wMSInKTsKIAogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ3VwQXJyb3cnKTsK
ICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjE5OTktMTItMjYiJyk7Ci0gICAgc2hv
dWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJl
bnRNb250aCgpJywgJyIyMDAwLTAxIicpOwogCiAgICAgLy8gTW92ZSBmcm9tIHRvcCBsZWZ0IG9m
IEphbnVhcnkgMjAwMCB0byBib3R0b20gcmlnaHQgb2YgRGVjZW1iZXIgMTk5OS4KICAgICBldmVu
dFNlbmRlci5rZXlEb3duKCdsZWZ0QXJyb3cnKTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRl
KCknLCAnIjIwMDAtMDEtMDgiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIx
OTk5LTExIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMTk5OS0xMiInKTsK
IAogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ3JpZ2h0QXJyb3cnKTsKICAgICBzaG91bGRCZSgn
c2VsZWN0ZWREYXRlKCknLCAnIjE5OTktMTItMjYiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRN
b250aCgpJywgJyIyMDAwLTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIy
MDAwLTAxIicpOwogCiAgICAgZGVidWcoInByZXNzIG0iKTsKICAgICBldmVudFNlbmRlci5rZXlE
b3duKCdtJyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAwLTAxLTI2Iicp
OwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0xIicpOworICAgIHNob3Vs
ZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMiInKTsKIAogICAgIGRlYnVnKCJwcmVzcyBz
aGlmdCArIG0iKTsKICAgICBldmVudFNlbmRlci5rZXlEb3duKCdNJyk7CiAgICAgc2hvdWxkQmUo
J3NlbGVjdGVkRGF0ZSgpJywgJyIxOTk5LTEyLTI2IicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50
TW9udGgoKScsICciMjAwMC0wIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICci
MjAwMC0wMSInKTsKIAogICAgIGRlYnVnKCJwcmVzcyB5Iik7CiAgICAgZXZlbnRTZW5kZXIua2V5
RG93bigneScpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMjAwMC0xMi0zMSIn
KTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDEtMCInKTsKKyAgICBzaG91
bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDEtMDEiJyk7CiAKICAgICBkZWJ1ZygicHJlc3Mg
c2hpZnQgKyB5Iik7CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bignWScpOwogICAgIHNob3VsZEJl
KCdzZWxlY3RlZERhdGUoKScsICciMTk5OS0xMi0yNiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVu
dE1vbnRoKCknLCAnIjIwMDAtMCInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAn
IjIwMDAtMDEiJyk7CiAKICAgICBkZWJ1ZygicHJlc3MgZCIpOwogICAgIGV2ZW50U2VuZGVyLmtl
eURvd24oJ2QnKTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjIwMDktMTItMjci
Jyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDEwLTAiJyk7CisgICAgc2hv
dWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDEwLTAxIicpOwogCiAgICAgZGVidWcoInByZXNz
IHNoaWZ0ICsgZCIpOwogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ0QnKTsKICAgICBzaG91bGRC
ZSgnc2VsZWN0ZWREYXRlKCknLCAnIjE5OTktMTItMjYiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJl
bnRNb250aCgpJywgJyIyMDAwLTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywg
JyIyMDAwLTAxIicpOwogCiAgICAgZXZlbnRTZW5kZXIua2V5RG93bignXG4nKTsKICAgICBzaG91
bGRCZU51bGwoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2NrLXBhZ2UtcG9wdXAiKScpOwpA
QCAtMTIxLDcgKzEyMSw3IEBAIGZ1bmN0aW9uIHRlc3RUb2RheSgpIHsKICAgICBldmVudFNlbmRl
ci5rZXlEb3duKCd0Jyk7CiAgICAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7CiAgICAgdmFyIGV4cGVj
dGVkRGF0ZSA9IHNlcmlhbGl6ZURhdGUobm93LmdldFVUQ0Z1bGxZZWFyKCksIG5vdy5nZXRVVENN
b250aCgpLCBub3cuZ2V0VVRDRGF0ZSgpKTsKLSAgICB2YXIgZXhwZWN0ZWRNb250aCA9IG5vdy5n
ZXRVVENGdWxsWWVhcigpICsgIi0iICsgbm93LmdldE1vbnRoKCk7CisgICAgdmFyIGV4cGVjdGVk
TW9udGggPSBwb3B1cFdpbmRvdy5Nb250aC5jcmVhdGVGcm9tRGF0ZShub3cpLnRvU3RyaW5nKCk7
CiAgICAgcmV0dXJuIHNlbGVjdGVkRGF0ZSgpID09PSBleHBlY3RlZERhdGUgJiYgY3VycmVudE1v
bnRoKCkgPT09IGV4cGVjdGVkTW9udGg7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tl
ci1tb3VzZS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3VzZS1v
cGVyYXRpb25zLWV4cGVjdGVkLnR4dAppbmRleCBlOTY3MDYzMjE1NzhjYThlNjNjOTUxYTc4YjM5
NzgyZjQ1ZWEwOWFiLi41YTI3ZDQxNzNkZWYwNWFmZWNmZWVhYjhjMmI4OGFlODJhMTAxNjE5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVu
ZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItbW91c2Utb3BlcmF0aW9ucy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1w
aWNrZXIvY2FsZW5kYXItcGlja2VyLW1vdXNlLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC02
LDE1ICs2LDE1IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiBDaGVjayB0aGF0IHBhZ2UgcG9w
dXAgZG9lc24ndCBleGlzdCBhdCBmaXJzdC4KIFBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Im1vY2stcGFnZS1wb3B1cCIpIGlzIG51bGwKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIwMDAt
MDEtMDIiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250
aCgpIGlzICIyMDAwLTAxIgogQ2hlY2sgdGhhdCBob3ZlcmluZyBvdmVyIGFuIGVudHJ5IGhpZ2hs
aWdodHMgaXQuCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIxOTk5LTEyLTMxIgotUEFTUyBjdXJy
ZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wMSIK
IFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIwMDAtMDEtMDQiCi1QQVNTIGN1cnJlbnRNb250aCgp
IGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgogQ2hlY2sgdGhh
dCBuYXZpZ2F0aW5nIGJldHdlZW4gbW9udGhzIG1haW50YWlucyBzZWxlY3Rpb24gcG9zaXRpb24u
CiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIyMDAwLTAyLTA4IgotUEFTUyBjdXJyZW50TW9udGgo
KSBpcyAiMjAwMC0xIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wMiIKIENoZWNrIHRo
YXQgbW92aW5nIHRoZSBtb3VzZSBvdXRzaWRlIHRoZSBwb3B1cCBkZS1oaWdobGlnaHRzIGVudHJp
ZXMuCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzIHVuZGVmaW5lZC4KIENoZWNrIHRoYXQgbW91c2Ug
Y2xpY2sgY2xvc2VzIHRoZSBwb3B1cCBhbmQgc2V0cyB0aGUgdmFsdWUuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9j
YWxlbmRhci1waWNrZXItbW91c2Utb3BlcmF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLW1v
dXNlLW9wZXJhdGlvbnMuaHRtbAppbmRleCA1MmQwM2ZlNTlmNDM1M2NmMjg1YmVhMDgyZGY0NWE4
MzUyNGQ3ZDJkLi5mODAxYTQ3YWFkMzUyN2JmZDUzNGM2NjM3M2ZjNWVkNGZhNzQyZTgwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFy
LXBpY2tlci9jYWxlbmRhci1waWNrZXItbW91c2Utb3BlcmF0aW9ucy5odG1sCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVu
ZGFyLXBpY2tlci1tb3VzZS1vcGVyYXRpb25zLmh0bWwKQEAgLTIwLDIxICsyMCwyMSBAQCBvcGVu
UGlja2VyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRlJyksIHRlc3QpOwogCiBmdW5jdGlv
biB0ZXN0KCkgewogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMjAwMC0wMS0wMiIn
KTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMCInKTsKKyAgICBzaG91
bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAKICAgICBkZWJ1ZygnQ2hlY2sg
dGhhdCBob3ZlcmluZyBvdmVyIGFuIGVudHJ5IGhpZ2hsaWdodHMgaXQuJyk7CiAgICAgaG92ZXJP
dmVyRWxlbWVudChwb3B1cFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJk
YXkiKVs1XSk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIxOTk5LTEyLTMxIicp
OwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wIicpOworICAgIHNob3Vs
ZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSInKTsKIAogICAgIGhvdmVyT3ZlckVsZW1l
bnQocG9wdXBXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZGF5IilbOV0p
OwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMjAwMC0wMS0wNCInKTsKLSAgICBz
aG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMCInKTsKKyAgICBzaG91bGRCZSgnY3Vy
cmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAKICAgICBkZWJ1ZygnQ2hlY2sgdGhhdCBuYXZp
Z2F0aW5nIGJldHdlZW4gbW9udGhzIG1haW50YWlucyBzZWxlY3Rpb24gcG9zaXRpb24uJyk7CiAg
ICAgZXZlbnRTZW5kZXIua2V5RG93bignbScpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUo
KScsICciMjAwMC0wMi0wOCInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIw
MDAtMSInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDIiJyk7CiAK
ICAgICBkZWJ1ZygnQ2hlY2sgdGhhdCBtb3ZpbmcgdGhlIG1vdXNlIG91dHNpZGUgdGhlIHBvcHVw
IGRlLWhpZ2hsaWdodHMgZW50cmllcy4nKTsKICAgICBob3Zlck92ZXJFbGVtZW50KGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkZXNjcmlwdGlvbicpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172056</attachid>
            <date>2012-11-02 07:20:06 -0700</date>
            <delta_ts>2012-11-02 07:26:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101024-20121102231826.patch</filename>
            <type>text/plain</type>
            <size>31566</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBlMjhjZWFiNjlmM2Zl
OWQ5YTNmMWE5OWYzNzk1MjZiOTZmOTkyNC4uY2JkODRlNDEyY2M1OTFlZDY3YmUxMjZhMGVlMWQ2
ZDg0NDJlZjJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTExLTAyICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBNb250
aCBjbGFzcyB0byBjYWxlbmRhciBwaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMTAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vbnRoIGNsYXNzIG5lZWRzIHRvIGJlIGludHJvZHVjZWQgdG8g
aW1wbGVtZW50IGEgbW9udGggcGlja2VyLiBUaGlzCisgICAgICAgIHBhdGNoIGp1c3QgaW50cm9k
dWNlcyB0aGUgTW9udGggY2xhc3MgaW50byB0aGUgY2FsZW5kYXIgcGlja2VyIHdpdGhvdXQKKyAg
ICAgICAgY2hhbmdpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGNhbGVuZGFyLXBpY2tlci0qLmh0bWwgdGVzdHMuCisK
KyAgICAgICAgKiBSZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qczoKKyAgICAg
ICAgKE1vbnRoLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyk6IFJldHVybnMgYSBsb2NhbGl6ZWQg
bW9udGggc3RyaW5nLgorICAgICAgICAoTW9udGgpOiBUYWtlcyBhIE1vbnRoIG9iamVjdCwgbnVt
YmVyIHJlcHJlc2VudGluZyB0aGUgbW9udGgsIG9yIHllYXIgYW5kIG1vbnRoIG51bWJlcnMuCisg
ICAgICAgIChNb250aC5wYXJzZSk6IFJldHVybnMgYSBuZXcgTW9udGggZnJvbSBhbiBJU08gbW9u
dGggc3RyaW5nLgorICAgICAgICAoTW9udGguY3JlYXRlRnJvbURhdGUpOiBSZXR1cm5zIGEgbmV3
IE1vbnRoIGNvbnRhaW5pbmcgdGhlIGdpdmVuIGRhdGV0aW1lLgorICAgICAgICAoTW9udGgucHJv
dG90eXBlLmVxdWFscyk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gbW9udGggaXMgdGhlIHNh
bWUuCisgICAgICAgIChNb250aC5wcm90b3R5cGUucHJldmlvdXMpOiBSZXR1cm5zIHRoZSBwcmV2
aW91cyBtb250aC4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS5uZXh0KTogUmV0dXJucyB0aGUg
bmV4dCBtb250aC4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS5zdGFydERhdGUpOiBSZXR1cm5z
IGEgZGF0ZXRpbWUgdGhhdCBpcyB0aGUgc3RhcnQgb2YgdGhpcyBtb250aC4gVGhlIHZhbHVlIGlz
IGluY2x1c2l2ZS4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS5lbmREYXRlKTogUmV0dXJucyBh
IGRhdGV0aW1lIHRoYXQgaXMgdGhlIGVuZCBvZiB0aGlzIG1vbnRoLiBUaGUgdmFsdWUgaXMgZXhj
bHVzaXZlLgorICAgICAgICAoTW9udGgucHJvdG90eXBlLnZhbHVlT2YpOiBSZXR1cm5zIGEgbnVt
YmVyIHJlcHJlc2VudGluZyB0aGUgbW9udGguCisgICAgICAgIChNb250aC5wcm90b3R5cGUudG9T
dHJpbmcpOiBSZXR1cm5zIGFuIElTTyBtb250aCBzdHJpbmcuCisgICAgICAgIChZZWFyTW9udGhD
b250cm9sbGVyKTogVXNlIE1vbnRoIG9iamVjdC4KKyAgICAgICAgKFllYXJNb250aENvbnRyb2xs
ZXIucHJvdG90eXBlLmF0dGFjaFRvKTogWWVhciAyNzU3NjAgZW5kcyBpbiBTZXB0ZW1iZXIgc28g
dXNlIHRoZSB5ZWFyIGJlZm9yZSB0byBtZWFzdXJlIHRoZSBsYWJlbCB3aWR0aC4KKyAgICAgICAg
KFllYXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLnNldE1vbnRoKTogVGFrZSBhIG1vbnRoIG9i
amVjdC4KKyAgICAgICAgKFllYXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLl9yZWRyYXcpOiBV
c2UgSVNPIG1vbnRoIHN0cmluZyBmb3IgZWxlbWVudC5kYXRhc2V0LnZhbHVlLgorICAgICAgICAo
WWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUuX2hhbmRsZVllYXJNb250aENoYW5nZSk6Cisg
ICAgICAgIChZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5tb3ZlUmVsYXRpdmVseSk6Cisg
ICAgICAgIChEYXlzVGFibGUpOiBVc2UgTW9udGggb2JqZWN0LgorICAgICAgICAoRGF5c1RhYmxl
LnByb3RvdHlwZS5fcmVuZGVyTW9udGgpOiBUYWtlIGEgbW9udGggb2JqZWN0LiBUZXN0aW5nIGZv
ciBpc05hTiBpcyBtb3ZlZCB1cCB0byBmaXggYSBidWcgd2hlbiBzaG93aW5nIFNlcHRlbWJlciwg
Mjc1NzYwLgorICAgICAgICAoRGF5c1RhYmxlLnByb3RvdHlwZS5fbmF2aWdhdGVUb01vbnRoKTog
VGFrZSBhIG1vbnRoIG9iamVjdC4KKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX25hdmln
YXRlVG9Nb250aFdpdGhBbmltYXRpb24pOiBUYWtlIGEgbW9udGggb2JqZWN0LgorICAgICAgICAo
RGF5c1RhYmxlLnByb3RvdHlwZS5uYXZpZ2F0ZVRvTW9udGhBbmRLZWVwU2VsZWN0aW9uUG9zaXRp
b24pOiBUYWtlIGEgbW9udGggb2JqZWN0LgorICAgICAgICAoRGF5c1RhYmxlLnByb3RvdHlwZS5z
ZWxlY3REYXRlKToKKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX21heWJlU2V0UHJldmlv
dXNNb250aCk6IFVzZSBNb250aCBvYmplY3QgdG8gY2FsY3VsYXRlIHRoZSBwcmV2aW91cyBtb250
aC4KKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX21heWJlU2V0TmV4dE1vbnRoKTogVXNl
IE1vbnRoIG9iamVjdCB0byBjYWxjdWxhdGUgdGhlIG5leHQgbW9udGguCisKIDIwMTItMTEtMDIg
IEFycGl0YSBCYWh1Z3VuYSAgPGFycGl0YWJhaHVndW5hQGdtYWlsLmNvbT4KIAogICAgICAgICBS
ZWdyZXNzaW9uIHIxMzAwNTc6IEltcHJvcGVyIHByZWZlcnJlZCB3aWR0aCBjYWxjdWxhdGlvbiB3
aGVuIGFuIGlubGluZSByZXBsYWNlZCBvYmplY3QsIHdyYXBwZWQgaW4gYW4gaW5saW5lIGZsb3cs
IGZvbGxvd3Mgc29tZSB0ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2Vz
L3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMv
cGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qcwppbmRleCA2MTE0Y2M1N2JiOGZjZjUwZTM4ODUx
ZjVmYzMyMWFmM2NhODUyYjgyLi42NTYxNDZkMDA3MGVlN2YwOTliN2U0ZTdlNjI2OTg0ZDgwMDVk
Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxl
bmRhclBpY2tlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9j
YWxlbmRhclBpY2tlci5qcwpAQCAtMTM5LDEzICsxMzksMTMgQEAgZnVuY3Rpb24gZm9ybWF0SmFw
YW5lc2VJbXBlcmlhbEVyYSh5ZWFyLCBtb250aCkgewogfQogCiAvKioKLSAqIEBwYXJhbSB7IW51
bWJlcn0geWVhcgotICogQHBhcmFtIHshbnVtYmVyfSBtb250aAogICogQHJldHVybiB7IXN0cmlu
Z30KICAqLwotZnVuY3Rpb24gZm9ybWF0WWVhck1vbnRoKHllYXIsIG1vbnRoKSB7Ci0gICAgdmFy
IHllYXJTdHJpbmcgPSBsb2NhbGl6ZU51bWJlcih5ZWFyKTsKLSAgICB2YXIgbW9udGhTdHJpbmcg
PSBnbG9iYWwucGFyYW1zLm1vbnRoTGFiZWxzW21vbnRoXTsKK01vbnRoLnByb3RvdHlwZS50b0xv
Y2FsZVN0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgIGlmIChpc05hTih0aGlzLnllYXIpIHx8IGlz
TmFOKHRoaXMueWVhcikpCisgICAgICAgIHJldHVybiAiSW52YWxpZCBNb250aCI7CisgICAgdmFy
IHllYXJTdHJpbmcgPSBsb2NhbGl6ZU51bWJlcih0aGlzLnllYXIpOworICAgIHZhciBtb250aFN0
cmluZyA9IGdsb2JhbC5wYXJhbXMubW9udGhMYWJlbHNbdGhpcy5tb250aF07CiAgICAgc3dpdGNo
IChnZXRMYW5ndWFnZSgpKSB7CiAgICAgY2FzZSAiZXUiOgogICAgIGNhc2UgImZpbCI6CkBAIC0x
NTgsNyArMTU4LDcgQEAgZnVuY3Rpb24gZm9ybWF0WWVhck1vbnRoKHllYXIsIG1vbnRoKSB7CiAg
ICAgY2FzZSAiaHUiOgogICAgICAgICByZXR1cm4geWVhclN0cmluZyArICIuICIgKyBtb250aFN0
cmluZzsKICAgICBjYXNlICJqYSI6Ci0gICAgICAgIHJldHVybiB5ZWFyU3RyaW5nICsgIuW5tCIg
KyBmb3JtYXRKYXBhbmVzZUltcGVyaWFsRXJhKHllYXIsIG1vbnRoKSArICIgIiArIG1vbnRoU3Ry
aW5nOworICAgICAgICByZXR1cm4geWVhclN0cmluZyArICLlubQiICsgZm9ybWF0SmFwYW5lc2VJ
bXBlcmlhbEVyYSh0aGlzLnllYXIsIHRoaXMubW9udGgpICsgIiAiICsgbW9udGhTdHJpbmc7CiAg
ICAgY2FzZSAiemgiOgogICAgICAgICByZXR1cm4geWVhclN0cmluZyArICLlubQiICsgbW9udGhT
dHJpbmc7CiAgICAgY2FzZSAia28iOgpAQCAtMTcyLDcgKzE3Miw3IEBAIGZ1bmN0aW9uIGZvcm1h
dFllYXJNb250aCh5ZWFyLCBtb250aCkgewogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBt
b250aFN0cmluZyArICIgIiArIHllYXJTdHJpbmc7CiAgICAgfQotfQorfTsKIAogZnVuY3Rpb24g
Y3JlYXRlVVRDRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSkgewogICAgIHZhciBuZXdEYXRlID0gbmV3
IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGgsIGRhdGUpKTsKQEAgLTIwOSw2ICsyMDksMTEwIEBA
IGZ1bmN0aW9uIHNlcmlhbGl6ZURhdGUoeWVhciwgbW9udGgsIGRheSkgewogICAgIHJldHVybiB5
ZWFyU3RyaW5nICsgIi0iICsgKCIwIiArIChtb250aCArIDEpKS5zdWJzdHIoLTIsIDIpICsgIi0i
ICsgKCIwIiArIGRheSkuc3Vic3RyKC0yLCAyKTsKIH0KIAorLyoqCisgKiBAcGFyYW0geyFudW1i
ZXJ8TW9udGh9IHZhbHVlT3JNb250aE9yWWVhcgorICogQHBhcmFtIHshbnVtYmVyPX0gbW9udGgK
KyAqLworZnVuY3Rpb24gTW9udGgodmFsdWVPck1vbnRoT3JZZWFyLCBtb250aCkgeworICAgIGlm
IChhcmd1bWVudHMubGVuZ3RoID09IDIpIHsKKyAgICAgICAgdGhpcy55ZWFyID0gdmFsdWVPck1v
bnRoT3JZZWFyOworICAgICAgICB0aGlzLm1vbnRoID0gbW9udGg7CisgICAgfSBlbHNlIGlmICh2
YWx1ZU9yTW9udGhPclllYXIgaW5zdGFuY2VvZiBNb250aCkgeworICAgICAgICB0aGlzLnllYXIg
PSB2YWx1ZU9yTW9udGhPclllYXIueWVhcjsKKyAgICAgICAgdGhpcy5tb250aCA9IHZhbHVlT3JN
b250aE9yWWVhci5tb250aDsKKyAgICB9IGVsc2UgeworICAgICAgICB0aGlzLnllYXIgPSBNYXRo
LmZsb29yKHZhbHVlT3JNb250aE9yWWVhciAvIDEyKSArIDE5NzA7CisgICAgICAgIHRoaXMubW9u
dGggPSB2YWx1ZU9yTW9udGhPclllYXIgJSAxMjsKKyAgICB9CisgICAgdGhpcy55ZWFyID0gdGhp
cy55ZWFyICsgTWF0aC5mbG9vcih0aGlzLm1vbnRoIC8gMTIpOworICAgIHRoaXMubW9udGggPSB0
aGlzLm1vbnRoIDwgMCA/IHRoaXMubW9udGggJSAxMiArIDEyIDogdGhpcy5tb250aCAlIDEyOwor
ICAgIGlmICh0aGlzLnllYXIgPCAwIHx8IE1vbnRoLk1heGltdW0gPCB0aGlzKSB7CisgICAgICAg
IHRoaXMueWVhciA9IE5hTjsKKyAgICAgICAgdGhpcy5tb250aCA9IE5hTjsKKyAgICB9Cit9Owor
CitNb250aC5JU09TdHJpbmdSZWdFeHAgPSAvXihcZCspLShcZCspJC87CisKKy8vIFNlZSBXZWJD
b3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmguCitNb250aC5NYXhpbXVtID0gbmV3IE1vbnRo
KDI3NTc2MCwgOCk7CisKKy8qKgorICogQHBhcmFtIHshc3RyaW5nfSBzdHIKKyAqIEByZXR1cm4g
ez9Nb250aH0KKyAqLworTW9udGgucGFyc2UgPSBmdW5jdGlvbihzdHIpIHsKKyAgICB2YXIgbWF0
Y2ggPSBNb250aC5JU09TdHJpbmdSZWdFeHAuZXhlYyhzdHIpOworICAgIGlmICghbWF0Y2gpCisg
ICAgICAgIHJldHVybiBudWxsOworICAgIHZhciB5ZWFyID0gcGFyc2VJbnQobWF0Y2hbMV0sIDEw
KTsKKyAgICB2YXIgbW9udGggPSBwYXJzZUludChtYXRjaFsyXSwgMTApIC0gMTsKKyAgICByZXR1
cm4gbmV3IE1vbnRoKHllYXIsIG1vbnRoKTsKK307CisKKy8qKgorICogQHBhcmFtIHshRGF0ZX0g
ZGF0ZQorICogQHJldHVybiB7IU1vbnRofQorICovCitNb250aC5jcmVhdGVGcm9tRGF0ZSA9IGZ1
bmN0aW9uKGRhdGUpIHsKKyAgICByZXR1cm4gbmV3IE1vbnRoKGRhdGUuZ2V0VVRDRnVsbFllYXIo
KSwgZGF0ZS5nZXRVVENNb250aCgpKTsKK307CisKKy8qKgorICogQHBhcmFtIHshTW9udGh9IG90
aGVyCisgKiBAcmV0dXJuIHshYm9vbH0KKyAqLworTW9udGgucHJvdG90eXBlLmVxdWFscyA9IGZ1
bmN0aW9uKG90aGVyKSB7CisgICAgcmV0dXJuIHRoaXMueWVhciA9PT0gb3RoZXIueWVhciAmJiB0
aGlzLm1vbnRoID09PSBvdGhlci5tb250aDsKK307CisKKy8qKgorICogQHJldHVybiB7IU1vbnRo
fQorICovCitNb250aC5wcm90b3R5cGUucHJldmlvdXMgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1
cm4gbmV3IE1vbnRoKHRoaXMueWVhciwgdGhpcy5tb250aCAtIDEpOworfTsKKworLyoqCisgKiBA
cmV0dXJuIHshTW9udGh9CisgKi8KK01vbnRoLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oKSB7
CisgICAgcmV0dXJuIG5ldyBNb250aCh0aGlzLnllYXIsIHRoaXMubW9udGggKyAxKTsKK307CisK
Ky8qKgorICogQHJldHVybiB7IURhdGV9CisgKi8KK01vbnRoLnByb3RvdHlwZS5zdGFydERhdGUg
PSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gY3JlYXRlVVRDRGF0ZSh0aGlzLnllYXIsIHRoaXMu
bW9udGgsIDEpOworfTsKKworLyoqCisgKiBAcmV0dXJuIHshRGF0ZX0KKyAqLworTW9udGgucHJv
dG90eXBlLmVuZERhdGUgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAodGhpcy5lcXVhbHMoTW9udGgu
TWF4aW11bSkpCisgICAgICAgIHJldHVybiBDYWxlbmRhclBpY2tlci5NYXhpbXVtUG9zc2libGVE
YXRlOworICAgIHJldHVybiB0aGlzLm5leHQoKS5zdGFydERhdGUoKTsKK307CisKKy8qKgorICog
QHJldHVybiB7IW51bWJlcn0KKyAqLworTW9udGgucHJvdG90eXBlLnZhbHVlT2YgPSBmdW5jdGlv
bigpIHsKKyAgICByZXR1cm4gKHRoaXMueWVhciAtIDE5NzApICogMTIgKyB0aGlzLm1vbnRoOwor
fTsKKworLyoqCisgKiBAcmV0dXJuIHshc3RyaW5nfQorICovCitNb250aC5wcm90b3R5cGUudG9T
dHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgeWVhclN0cmluZyA9IFN0cmluZyh0aGlzLnll
YXIpOworICAgIGlmICh5ZWFyU3RyaW5nLmxlbmd0aCA8IDQpCisgICAgICAgIHllYXJTdHJpbmcg
PSAoIjAwMCIgKyB5ZWFyU3RyaW5nKS5zdWJzdHIoLTQsIDQpOworICAgIHJldHVybiB5ZWFyU3Ry
aW5nICsgIi0iICsgKCIwIiArICh0aGlzLm1vbnRoICsgMSkpLnN1YnN0cigtMiwgMik7Cit9Owor
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAvLyBJbml0aWFsaXphdGlvbgogCkBAIC00MzMsMTMgKzUzNyw5IEBAIENh
bGVuZGFyUGlja2VyLnByb3RvdHlwZS5fbGF5b3V0QnV0dG9ucyA9IGZ1bmN0aW9uKCkgewogZnVu
Y3Rpb24gWWVhck1vbnRoQ29udHJvbGxlcihwaWNrZXIpIHsKICAgICB0aGlzLnBpY2tlciA9IHBp
Y2tlcjsKICAgICAvKioKLSAgICAgKiBAdHlwZSB7IW51bWJlcn0KLSAgICAgKi8KLSAgICB0aGlz
Ll9jdXJyZW50WWVhciA9IC0xOwotICAgIC8qKgotICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAg
ICAqIEB0eXBlIHs/TW9udGh9CiAgICAgICovCi0gICAgdGhpcy5fY3VycmVudE1vbnRoID0gLTE7
CisgICAgdGhpcy5fY3VycmVudE1vbnRoID0gbnVsbDsKIH0KIAogLyoqCkBAIC00NzcsMTQgKzU3
NywxNyBAQCBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5hdHRhY2hUbyA9IGZ1bmN0aW9u
KGVsZW1lbnQpIHsKICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3dhbGwpOwogCiAgICAg
dmFyIG1heGltdW1ZZWFyID0gdGhpcy5waWNrZXIubWF4aW11bURhdGUuZ2V0VVRDRnVsbFllYXIo
KTsKKyAgICAvLyBCZWNhdXNlIHRoZSBtYXhpbXVtIHBvc3NpYmxlIHllYXIgaXMgU2VwdGVtYmVy
IHdlIHNob3VsZCB1c2UgdGhlIHllYXIgYmVmb3JlIGl0LgorICAgIGlmIChtYXhpbXVtWWVhciA9
PT0gTW9udGguTWF4aW11bS55ZWFyKQorICAgICAgICBtYXhpbXVtWWVhci0tOwogICAgIHZhciBt
YXhXaWR0aCA9IDA7CiAgICAgZm9yICh2YXIgbSA9IDA7IG0gPCAxMjsgKyttKSB7Ci0gICAgICAg
IHRoaXMuX21vbnRoLnRleHRDb250ZW50ID0gZm9ybWF0WWVhck1vbnRoKG1heGltdW1ZZWFyLCBt
KTsKKyAgICAgICAgdGhpcy5fbW9udGgudGV4dENvbnRlbnQgPSBuZXcgTW9udGgobWF4aW11bVll
YXIsIG0pLnRvTG9jYWxlU3RyaW5nKCk7CiAgICAgICAgIG1heFdpZHRoID0gTWF0aC5tYXgobWF4
V2lkdGgsIHRoaXMuX21vbnRoLm9mZnNldFdpZHRoKTsKICAgICB9CiAgICAgaWYgKGdldExhbmd1
YWdlKCkgPT0gImphIiAmJiBJbXBlcmlhbEVyYUxpbWl0IDwgbWF4aW11bVllYXIpIHsKICAgICAg
ICAgZm9yICh2YXIgbSA9IDA7IG0gPCAxMjsgKyttKSB7Ci0gICAgICAgICAgICB0aGlzLl9tb250
aC50ZXh0Q29udGVudCA9IGZvcm1hdFllYXJNb250aChJbXBlcmlhbEVyYUxpbWl0LCBtKTsKKyAg
ICAgICAgICAgIHRoaXMuX21vbnRoLnRleHRDb250ZW50ID0gbmV3IE1vbnRoKEltcGVyaWFsRXJh
TGltaXQsIG0pLnRvTG9jYWxlU3RyaW5nKCk7CiAgICAgICAgICAgICBtYXhXaWR0aCA9IE1hdGgu
bWF4KG1heFdpZHRoLCB0aGlzLl9tb250aC5vZmZzZXRXaWR0aCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC01NTEsMzMgKzY1NCwyNCBAQCBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5fYXR0
YWNoUmlnaHRCdXR0b25zVG8gPSBmdW5jdGlvbihwYXJlbnQpIHsKIH07CiAKIC8qKgotICogQHJl
dHVybiB7IW51bWJlcn0KLSAqLwotWWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUueWVhciA9
IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlzLl9jdXJyZW50WWVhcjsKLX07Ci0KLS8qKgot
ICogQHJldHVybiB7IW51bWJlcn0KKyAqIEByZXR1cm4gez9Nb250aH0KICAqLwogWWVhck1vbnRo
Q29udHJvbGxlci5wcm90b3R5cGUubW9udGggPSBmdW5jdGlvbigpIHsKICAgICByZXR1cm4gdGhp
cy5fY3VycmVudE1vbnRoOwogfTsKIAogLyoqCi0gKiBAcGFyYW0geyFudW1iZXJ9IHllYXIKLSAq
IEBwYXJhbSB7IW51bWJlcn0gbW9udGgKKyAqIEBwYXJhbSB7IU1vbnRofSBtb250aAogICovCi1Z
ZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5zZXRZZWFyTW9udGggPSBmdW5jdGlvbih5ZWFy
LCBtb250aCkgewotICAgIHRoaXMuX2N1cnJlbnRZZWFyID0geWVhcjsKLSAgICB0aGlzLl9jdXJy
ZW50TW9udGggPSBtb250aDsKK1llYXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLnNldE1vbnRo
ID0gZnVuY3Rpb24obW9udGgpIHsKKyAgICB0aGlzLl9jdXJyZW50TW9udGggPSBuZXcgTW9udGgo
bW9udGgpOwogICAgIHRoaXMuX3JlZHJhdygpOwogfTsKIAogWWVhck1vbnRoQ29udHJvbGxlci5w
cm90b3R5cGUuX3JlZHJhdyA9IGZ1bmN0aW9uKCkgewotICAgIHZhciBtaW4gPSB0aGlzLnBpY2tl
ci5taW5pbXVtRGF0ZS5nZXRVVENGdWxsWWVhcigpICogMTIgKyB0aGlzLnBpY2tlci5taW5pbXVt
RGF0ZS5nZXRVVENNb250aCgpOwotICAgIHZhciBtYXggPSB0aGlzLnBpY2tlci5tYXhpbXVtRGF0
ZS5nZXRVVENGdWxsWWVhcigpICogMTIgKyB0aGlzLnBpY2tlci5tYXhpbXVtRGF0ZS5nZXRVVENN
b250aCgpOwotICAgIHZhciBjdXJyZW50ID0gdGhpcy5fY3VycmVudFllYXIgKiAxMiArIHRoaXMu
X2N1cnJlbnRNb250aDsKKyAgICB2YXIgbWluID0gTW9udGguY3JlYXRlRnJvbURhdGUodGhpcy5w
aWNrZXIubWluaW11bURhdGUpLnZhbHVlT2YoKTsKKyAgICB2YXIgbWF4ID0gTW9udGguY3JlYXRl
RnJvbURhdGUodGhpcy5waWNrZXIubWF4aW11bURhdGUpLnZhbHVlT2YoKTsKKyAgICB2YXIgY3Vy
cmVudCA9IHRoaXMuX2N1cnJlbnRNb250aC52YWx1ZU9mKCk7CiAgICAgaWYgKHRoaXMuX2xlZnQz
KQogICAgICAgICB0aGlzLl9sZWZ0My5kaXNhYmxlZCA9IGN1cnJlbnQgLSAxMyA8IG1pbjsKICAg
ICB0aGlzLl9sZWZ0Mi5kaXNhYmxlZCA9IGN1cnJlbnQgLSAyIDwgbWluOwpAQCAtNTg2LDE1ICs2
ODAsMTYgQEAgWWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUuX3JlZHJhdyA9IGZ1bmN0aW9u
KCkgewogICAgIHRoaXMuX3JpZ2h0Mi5kaXNhYmxlZCA9IGN1cnJlbnQgKyAyID4gbWF4OwogICAg
IGlmICh0aGlzLl9yaWdodDMpCiAgICAgICAgIHRoaXMuX3JpZ2h0My5kaXNhYmxlZCA9IGN1cnJl
bnQgKyAxMyA+IG1heDsKLSAgICB0aGlzLl9tb250aC5pbm5lclRleHQgPSBmb3JtYXRZZWFyTW9u
dGgodGhpcy5fY3VycmVudFllYXIsIHRoaXMuX2N1cnJlbnRNb250aCk7CisgICAgdGhpcy5fbW9u
dGguaW5uZXJUZXh0ID0gdGhpcy5fY3VycmVudE1vbnRoLnRvTG9jYWxlU3RyaW5nKCk7CiAgICAg
d2hpbGUgKHRoaXMuX21vbnRoUG9wdXBDb250ZW50cy5oYXNDaGlsZE5vZGVzKCkpCiAgICAgICAg
IHRoaXMuX21vbnRoUG9wdXBDb250ZW50cy5yZW1vdmVDaGlsZCh0aGlzLl9tb250aFBvcHVwQ29u
dGVudHMuZmlyc3RDaGlsZCk7CiAKICAgICBmb3IgKHZhciBtID0gY3VycmVudCAtIDY7IG0gPD0g
Y3VycmVudCArIDY7IG0rKykgewogICAgICAgICBpZiAobSA8IG1pbiB8fCBtID4gbWF4KQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHZhciBvcHRpb24gPSBjcmVhdGVFbGVtZW50KCJk
aXYiLCBDbGFzc05hbWVzLk1vbnRoU2VsZWN0b3JQb3B1cEVudHJ5LCBmb3JtYXRZZWFyTW9udGgo
TWF0aC5mbG9vcihtIC8gMTIpLCBtICUgMTIpKTsKLSAgICAgICAgb3B0aW9uLmRhdGFzZXQudmFs
dWUgPSBTdHJpbmcoTWF0aC5mbG9vcihtIC8gMTIpKSArICItIiArIFN0cmluZyhtICUgMTIpOwor
ICAgICAgICB2YXIgbW9udGggPSBuZXcgTW9udGgobSk7CisgICAgICAgIHZhciBvcHRpb24gPSBj
cmVhdGVFbGVtZW50KCJkaXYiLCBDbGFzc05hbWVzLk1vbnRoU2VsZWN0b3JQb3B1cEVudHJ5LCBt
b250aC50b0xvY2FsZVN0cmluZygpKTsKKyAgICAgICAgb3B0aW9uLmRhdGFzZXQudmFsdWUgPSBt
b250aC50b1N0cmluZygpOwogICAgICAgICB0aGlzLl9tb250aFBvcHVwQ29udGVudHMuYXBwZW5k
Q2hpbGQob3B0aW9uKTsKICAgICAgICAgaWYgKG0gPT0gY3VycmVudCkKICAgICAgICAgICAgIG9w
dGlvbi5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuU2VsZWN0ZWRNb250aFllYXIpOwpAQCAtNzE1
LDEzICs4MTAsNyBAQCBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5faGFuZGxlWWVhck1v
bnRoQ2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgdmFyIHNlbGVjdGlvbiA9IHRoaXMuX2dldFNl
bGVjdGlvbigpOwogICAgIGlmICghc2VsZWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgdmFy
IHZhbHVlID0gc2VsZWN0aW9uLmRhdGFzZXQudmFsdWU7Ci0gICAgdmFyIHJlc3VsdCAgPSB2YWx1
ZS5tYXRjaCgvKFxkKyktKFxkKykvKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJu
OwotICAgIHZhciBuZXdZZWFyID0gTnVtYmVyKHJlc3VsdFsxXSk7Ci0gICAgdmFyIG5ld01vbnRo
ID0gTnVtYmVyKHJlc3VsdFsyXSk7Ci0gICAgdGhpcy5waWNrZXIuZGF5c1RhYmxlLm5hdmlnYXRl
VG9Nb250aEFuZEtlZXBTZWxlY3Rpb25Qb3NpdGlvbihuZXdZZWFyLCBuZXdNb250aCk7CisgICAg
dGhpcy5waWNrZXIuZGF5c1RhYmxlLm5hdmlnYXRlVG9Nb250aEFuZEtlZXBTZWxlY3Rpb25Qb3Np
dGlvbihNb250aC5wYXJzZShzZWxlY3Rpb24uZGF0YXNldC52YWx1ZSkpOwogfTsKIAogLyoKQEAg
LTc3OSw5ICs4NjgsOSBAQCBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5faGFuZGxlQnV0
dG9uQ2xpY2sgPSBmdW5jdGlvbihldmVudCkgewogICogQHBhcmFtIHshbnVtYmVyfSBhbW91bnQK
ICAqLwogWWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUubW92ZVJlbGF0aXZlbHkgPSBmdW5j
dGlvbihhbW91bnQpIHsKLSAgICB2YXIgbWluID0gdGhpcy5waWNrZXIubWluaW11bURhdGUuZ2V0
VVRDRnVsbFllYXIoKSAqIDEyICsgdGhpcy5waWNrZXIubWluaW11bURhdGUuZ2V0VVRDTW9udGgo
KTsKLSAgICB2YXIgbWF4ID0gdGhpcy5waWNrZXIubWF4aW11bURhdGUuZ2V0VVRDRnVsbFllYXIo
KSAqIDEyICsgdGhpcy5waWNrZXIubWF4aW11bURhdGUuZ2V0VVRDTW9udGgoKTsKLSAgICB2YXIg
Y3VycmVudCA9IHRoaXMuX2N1cnJlbnRZZWFyICogMTIgKyB0aGlzLl9jdXJyZW50TW9udGg7Cisg
ICAgdmFyIG1pbiA9IE1vbnRoLmNyZWF0ZUZyb21EYXRlKHRoaXMucGlja2VyLm1pbmltdW1EYXRl
KS52YWx1ZU9mKCk7CisgICAgdmFyIG1heCA9IE1vbnRoLmNyZWF0ZUZyb21EYXRlKHRoaXMucGlj
a2VyLm1heGltdW1EYXRlKS52YWx1ZU9mKCk7CisgICAgdmFyIGN1cnJlbnQgPSB0aGlzLl9jdXJy
ZW50TW9udGgudmFsdWVPZigpOwogICAgIHZhciB1cGRhdGVkID0gY3VycmVudDsKICAgICBpZiAo
YW1vdW50IDwgMCkKICAgICAgICAgdXBkYXRlZCA9IGN1cnJlbnQgKyBhbW91bnQgPj0gbWluID8g
Y3VycmVudCArIGFtb3VudCA6IG1pbjsKQEAgLTc4OSw3ICs4NzgsNyBAQCBZZWFyTW9udGhDb250
cm9sbGVyLnByb3RvdHlwZS5tb3ZlUmVsYXRpdmVseSA9IGZ1bmN0aW9uKGFtb3VudCkgewogICAg
ICAgICB1cGRhdGVkID0gY3VycmVudCArIGFtb3VudCA8PSBtYXggPyBjdXJyZW50ICsgYW1vdW50
IDogbWF4OwogICAgIGlmICh1cGRhdGVkID09IGN1cnJlbnQpCiAgICAgICAgIHJldHVybjsKLSAg
ICB0aGlzLnBpY2tlci5kYXlzVGFibGUubmF2aWdhdGVUb01vbnRoQW5kS2VlcFNlbGVjdGlvblBv
c2l0aW9uKE1hdGguZmxvb3IodXBkYXRlZCAvIDEyKSwgdXBkYXRlZCAlIDEyKTsKKyAgICB0aGlz
LnBpY2tlci5kYXlzVGFibGUubmF2aWdhdGVUb01vbnRoQW5kS2VlcFNlbGVjdGlvblBvc2l0aW9u
KG5ldyBNb250aCh1cGRhdGVkKSk7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04MDEsMTMgKzg5MCw5
IEBAIFllYXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLm1vdmVSZWxhdGl2ZWx5ID0gZnVuY3Rp
b24oYW1vdW50KSB7CiBmdW5jdGlvbiBEYXlzVGFibGUocGlja2VyKSB7CiAgICAgdGhpcy5waWNr
ZXIgPSBwaWNrZXI7CiAgICAgLyoqCi0gICAgICogQHR5cGUgeyFudW1iZXJ9CisgICAgICogQHR5
cGUgez9Nb250aH0KICAgICAgKi8KLSAgICB0aGlzLl9jdXJyZW50WWVhciA9IC0xOwotICAgIC8q
KgotICAgICAqIEB0eXBlIHshbnVtYmVyfQotICAgICAqLwotICAgIHRoaXMuX2N1cnJlbnRNb250
aCA9IC0xOworICAgIHRoaXMuX2N1cnJlbnRNb250aCA9IG51bGw7CiB9CiAKIC8qKgpAQCAtODg5
LDEwICs5NzQsOSBAQCBDYWxlbmRhclBpY2tlci5wcm90b3R5cGUuaXNWYWxpZERhdGUgPSBmdW5j
dGlvbih0aW1lKSB7CiAgKiBAcGFyYW0geyFudW1iZXJ9IHllYXIKICAqIEBwYXJhbSB7IW51bWJl
cn0gbW9udGgKICAqLwotRGF5c1RhYmxlLnByb3RvdHlwZS5fcmVuZGVyTW9udGggPSBmdW5jdGlv
bih5ZWFyLCBtb250aCkgewotICAgIHRoaXMuX2N1cnJlbnRZZWFyID0geWVhcjsKLSAgICB0aGlz
Ll9jdXJyZW50TW9udGggPSBtb250aDsKLSAgICB2YXIgZGF5SXRlcmF0b3IgPSBjcmVhdGVVVENE
YXRlKHllYXIsIG1vbnRoLCAxKTsKK0RheXNUYWJsZS5wcm90b3R5cGUuX3JlbmRlck1vbnRoID0g
ZnVuY3Rpb24obW9udGgpIHsKKyAgICB0aGlzLl9jdXJyZW50TW9udGggPSBuZXcgTW9udGgobW9u
dGgpOworICAgIHZhciBkYXlJdGVyYXRvciA9IHRoaXMuX2N1cnJlbnRNb250aC5zdGFydERhdGUo
KTsKICAgICB2YXIgbW9udGhTdGFydERheSA9IGRheUl0ZXJhdG9yLmdldFVUQ0RheSgpOwogICAg
IHZhciB3ZWVrU3RhcnREYXkgPSBnbG9iYWwucGFyYW1zLndlZWtTdGFydERheSB8fCAwOwogICAg
IHZhciBzdGFydE9mZnNldCA9IHdlZWtTdGFydERheSAtIG1vbnRoU3RhcnREYXk7CkBAIC05MDEs
MjYgKzk4NSwyMiBAQCBEYXlzVGFibGUucHJvdG90eXBlLl9yZW5kZXJNb250aCA9IGZ1bmN0aW9u
KHllYXIsIG1vbnRoKSB7CiAgICAgZGF5SXRlcmF0b3Iuc2V0VVRDRGF0ZShzdGFydE9mZnNldCAr
IDEpOwogICAgIGZvciAodmFyIHcgPSAwOyB3IDwgRGF5c1RhYmxlLl9XZWVrczsgdysrKSB7CiAg
ICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgNzsgZCsrKSB7Ci0gICAgICAgICAgICB2YXIgaXRl
clllYXIgPSBkYXlJdGVyYXRvci5nZXRVVENGdWxsWWVhcigpOwotICAgICAgICAgICAgdmFyIGl0
ZXJNb250aCA9IGRheUl0ZXJhdG9yLmdldFVUQ01vbnRoKCk7CisgICAgICAgICAgICB2YXIgaXRl
ck1vbnRoID0gTW9udGguY3JlYXRlRnJvbURhdGUoZGF5SXRlcmF0b3IpOwogICAgICAgICAgICAg
dmFyIHRpbWUgPSBkYXlJdGVyYXRvci5nZXRUaW1lKCk7CiAgICAgICAgICAgICB2YXIgZWxlbWVu
dCA9IHRoaXMuX2RheXNbd11bZF07CiAgICAgICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9IGxv
Y2FsaXplTnVtYmVyKGRheUl0ZXJhdG9yLmdldFVUQ0RhdGUoKSk7CiAgICAgICAgICAgICBlbGVt
ZW50LmNsYXNzTmFtZSA9IENsYXNzTmFtZXMuRGF5OwotICAgICAgICAgICAgZWxlbWVudC5kYXRh
c2V0LnN1Ym1pdFZhbHVlID0gc2VyaWFsaXplRGF0ZShpdGVyWWVhciwgaXRlck1vbnRoLCBkYXlJ
dGVyYXRvci5nZXRVVENEYXRlKCkpOwotICAgICAgICAgICAgaWYgKHRoaXMucGlja2VyLm91dE9m
UmFuZ2UodGltZSkpCisgICAgICAgICAgICBlbGVtZW50LmRhdGFzZXQuc3VibWl0VmFsdWUgPSBz
ZXJpYWxpemVEYXRlKGl0ZXJNb250aC55ZWFyLCBpdGVyTW9udGgubW9udGgsIGRheUl0ZXJhdG9y
LmdldFVUQ0RhdGUoKSk7CisgICAgICAgICAgICBpZiAoaXNOYU4odGltZSkpIHsKKyAgICAgICAg
ICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9ICItIjsKKyAgICAgICAgICAgICAgICBlbGVtZW50
LmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5VbmF2YWlsYWJsZSk7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKHRoaXMucGlja2VyLm91dE9mUmFuZ2UodGltZSkpCiAgICAgICAgICAgICAgICAgZWxl
bWVudC5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuVW5hdmFpbGFibGUpOwogICAgICAgICAgICAg
ZWxzZSBpZiAodGhpcy5waWNrZXIuc3RlcE1pc21hdGNoKHRpbWUpKQogICAgICAgICAgICAgICAg
IGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDbGFzc05hbWVzLlVuYXZhaWxhYmxlKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKChpdGVyWWVhciA9PSB5ZWFyICYmIGRheUl0ZXJhdG9yLmdldFVUQ01vbnRo
KCkgPCBtb250aCkgfHwgKG1vbnRoID09IDAgJiYgaXRlck1vbnRoID09IDExKSkgewotICAgICAg
ICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDbGFzc05hbWVzLkF2YWlsYWJsZSk7Ci0g
ICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuTm90VGhpc01v
bnRoKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKGl0ZXJZZWFyID09IHllYXIgJiYgZGF5SXRl
cmF0b3IuZ2V0VVRDTW9udGgoKSA+IG1vbnRoKSB8fCAobW9udGggPT0gMTEgJiYgaXRlck1vbnRo
ID09IDApKSB7CisgICAgICAgICAgICBlbHNlIGlmICghaXRlck1vbnRoLmVxdWFscyh0aGlzLl9j
dXJyZW50TW9udGgpKSB7CiAgICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENs
YXNzTmFtZXMuQXZhaWxhYmxlKTsKICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5h
ZGQoQ2xhc3NOYW1lcy5Ob3RUaGlzTW9udGgpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpc05h
Tih0aW1lKSkgewotICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gIi0iOwotICAg
ICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDbGFzc05hbWVzLlVuYXZhaWxhYmxl
KTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0
LmFkZChDbGFzc05hbWVzLkF2YWlsYWJsZSk7CiAgICAgICAgICAgICBkYXlJdGVyYXRvci5zZXRV
VENEYXRlKGRheUl0ZXJhdG9yLmdldFVUQ0RhdGUoKSArIDEpOwpAQCAtOTMxLDM1ICsxMDExLDI3
IEBAIERheXNUYWJsZS5wcm90b3R5cGUuX3JlbmRlck1vbnRoID0gZnVuY3Rpb24oeWVhciwgbW9u
dGgpIHsKIH07CiAKIC8qKgotICogQHBhcmFtIHshbnVtYmVyfSB5ZWFyCi0gKiBAcGFyYW0geyFu
dW1iZXJ9IG1vbnRoCisgKiBAcGFyYW0geyFNb250aH0gbW9udGgKICAqLwotRGF5c1RhYmxlLnBy
b3RvdHlwZS5fbmF2aWdhdGVUb01vbnRoID0gZnVuY3Rpb24oeWVhciwgbW9udGgpIHsKLSAgICB0
aGlzLnBpY2tlci55ZWFyTW9udGhDb250cm9sbGVyLnNldFllYXJNb250aCh5ZWFyLCBtb250aCk7
Ci0gICAgdGhpcy5fcmVuZGVyTW9udGgoeWVhciwgbW9udGgpOworRGF5c1RhYmxlLnByb3RvdHlw
ZS5fbmF2aWdhdGVUb01vbnRoID0gZnVuY3Rpb24obW9udGgpIHsKKyAgICB0aGlzLnBpY2tlci55
ZWFyTW9udGhDb250cm9sbGVyLnNldE1vbnRoKG1vbnRoKTsKKyAgICB0aGlzLl9yZW5kZXJNb250
aChtb250aCk7CiB9OwogCiAvKioKLSAqIEBwYXJhbSB7IW51bWJlcn0geWVhcgotICogQHBhcmFt
IHshbnVtYmVyfSBtb250aAorICogQHBhcmFtIHshTW9udGh9IG1vbnRoCiAgKi8KLURheXNUYWJs
ZS5wcm90b3R5cGUuX25hdmlnYXRlVG9Nb250aFdpdGhBbmltYXRpb24gPSBmdW5jdGlvbih5ZWFy
LCBtb250aCkgewotICAgIGlmICh0aGlzLl9jdXJyZW50WWVhciA+PSAwICYmIHRoaXMuX2N1cnJl
bnRNb250aCA+PSAwKSB7Ci0gICAgICAgIGlmICh5ZWFyID09IHRoaXMuX2N1cnJlbnRZZWFyICYm
IG1vbnRoID09IHRoaXMuX2N1cnJlbnRNb250aCkKK0RheXNUYWJsZS5wcm90b3R5cGUuX25hdmln
YXRlVG9Nb250aFdpdGhBbmltYXRpb24gPSBmdW5jdGlvbihtb250aCkgeworICAgIGlmICh0aGlz
Ll9jdXJyZW50TW9udGgpIHsKKyAgICAgICAgdmFyIGRlbHRhID0gdGhpcy5fY3VycmVudE1vbnRo
LnZhbHVlT2YoKSAtIG1vbnRoLnZhbHVlT2YoKTsKKyAgICAgICAgaWYgKGRlbHRhID09PSAwKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgZGVjcmVhc2luZyA9IGZhbHNlOwotICAg
ICAgICBpZiAoeWVhciA8IHRoaXMuX2N1cnJlbnRZZWFyKQotICAgICAgICAgICAgZGVjcmVhc2lu
ZyA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKHllYXIgPiB0aGlzLl9jdXJyZW50WWVhcikKLSAg
ICAgICAgICAgIGRlY3JlYXNpbmcgPSBmYWxzZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
ZGVjcmVhc2luZyA9IG1vbnRoIDwgdGhpcy5fY3VycmVudE1vbnRoOwogICAgICAgICB2YXIgZGF5
c1N0eWxlID0gdGhpcy5fZGF5c0NvbnRhaW5lci5zdHlsZTsKICAgICAgICAgZGF5c1N0eWxlLnBv
c2l0aW9uID0gInJlbGF0aXZlIjsKICAgICAgICAgZGF5c1N0eWxlLndlYmtpdFRyYW5zaXRpb24g
PSAibGVmdCAwLjFzIGVhc2UiOwotICAgICAgICBkYXlzU3R5bGUubGVmdCA9IChkZWNyZWFzaW5n
ID8gIiIgOiAiLSIpICsgdGhpcy5fZGF5c0NvbnRhaW5lci5vZmZzZXRXaWR0aCArICJweCI7Cisg
ICAgICAgIGRheXNTdHlsZS5sZWZ0ID0gKGRlbHRhID4gMCA/ICIiIDogIi0iKSArIHRoaXMuX2Rh
eXNDb250YWluZXIub2Zmc2V0V2lkdGggKyAicHgiOwogICAgIH0KLSAgICB0aGlzLl9uYXZpZ2F0
ZVRvTW9udGgoeWVhciwgbW9udGgpOworICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aChtb250aCk7
CiB9OwogCiBEYXlzVGFibGUucHJvdG90eXBlLl9tb3ZlSW5EYXlzID0gZnVuY3Rpb24oKSB7CkBA
IC05NzQsMTQgKzEwNDYsMTMgQEAgRGF5c1RhYmxlLnByb3RvdHlwZS5fbW92ZUluRGF5cyA9IGZ1
bmN0aW9uKCkgewogfTsKIAogLyoqCi0gKiBAcGFyYW0geyFudW1iZXJ9IHllYXIKLSAqIEBwYXJh
bSB7IW51bWJlcn0gbW9udGgKKyAqIEBwYXJhbSB7IU1vbnRofSBtb250aAogICovCi1EYXlzVGFi
bGUucHJvdG90eXBlLm5hdmlnYXRlVG9Nb250aEFuZEtlZXBTZWxlY3Rpb25Qb3NpdGlvbiA9IGZ1
bmN0aW9uKHllYXIsIG1vbnRoKSB7Ci0gICAgaWYgKHllYXIgPT0gdGhpcy5fY3VycmVudFllYXIg
JiYgbW9udGggPT0gdGhpcy5fY3VycmVudE1vbnRoKQorRGF5c1RhYmxlLnByb3RvdHlwZS5uYXZp
Z2F0ZVRvTW9udGhBbmRLZWVwU2VsZWN0aW9uUG9zaXRpb24gPSBmdW5jdGlvbihtb250aCkgewor
ICAgIGlmICh0aGlzLl9jdXJyZW50TW9udGguZXF1YWxzKG1vbnRoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIHZhciBmaXJzdE5vZGVJblNlbGVjdGVkUmFuZ2UgPSB0aGlzLl9maXJzdE5vZGVJblNl
bGVjdGVkUmFuZ2UoKTsKLSAgICB0aGlzLl9uYXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0aW9uKHll
YXIsIG1vbnRoKTsKKyAgICB0aGlzLl9uYXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0aW9uKG1vbnRo
KTsKICAgICBpZiAoZmlyc3ROb2RlSW5TZWxlY3RlZFJhbmdlKSB7CiAgICAgICAgIHZhciB4ID0g
cGFyc2VJbnQoZmlyc3ROb2RlSW5TZWxlY3RlZFJhbmdlLmRhdGFzZXQucG9zaXRpb25YLCAxMCk7
CiAgICAgICAgIHZhciB5ID0gcGFyc2VJbnQoZmlyc3ROb2RlSW5TZWxlY3RlZFJhbmdlLmRhdGFz
ZXQucG9zaXRpb25ZLCAxMCk7CkBAIC05OTQsNyArMTA2NSw3IEBAIERheXNUYWJsZS5wcm90b3R5
cGUubmF2aWdhdGVUb01vbnRoQW5kS2VlcFNlbGVjdGlvblBvc2l0aW9uID0gZnVuY3Rpb24oeWVh
ciwgbW9uCiAgKi8KIERheXNUYWJsZS5wcm90b3R5cGUuc2VsZWN0RGF0ZSA9IGZ1bmN0aW9uKGRh
dGUpIHsKICAgICB0aGlzLl9kZXNlbGVjdCgpOwotICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aFdp
dGhBbmltYXRpb24oZGF0ZS5nZXRVVENGdWxsWWVhcigpLCBkYXRlLmdldFVUQ01vbnRoKCkpOwor
ICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aFdpdGhBbmltYXRpb24oTW9udGguY3JlYXRlRnJvbURh
dGUoZGF0ZSkpOwogICAgIHZhciBkYXRlU3RyaW5nID0gc2VyaWFsaXplRGF0ZShkYXRlLmdldFVU
Q0Z1bGxZZWFyKCksIGRhdGUuZ2V0VVRDTW9udGgoKSwgZGF0ZS5nZXRVVENEYXRlKCkpOwogICAg
IGZvciAodmFyIHcgPSAwOyB3IDwgRGF5c1RhYmxlLl9XZWVrczsgdysrKSB7CiAgICAgICAgIGZv
ciAodmFyIGQgPSAwOyBkIDwgNzsgZCsrKSB7CkBAIC0xMDQyLDE3ICsxMTEzLDEwIEBAIERheXNU
YWJsZS5wcm90b3R5cGUuX2Rlc2VsZWN0ID0gZnVuY3Rpb24oKSB7CiAgKiBAcmV0dXJuIHshYm9v
bGVhbn0KICAqLwogRGF5c1RhYmxlLnByb3RvdHlwZS5fbWF5YmVTZXRQcmV2aW91c01vbnRoID0g
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHllYXIgPSB0aGlzLnBpY2tlci55ZWFyTW9udGhDb250cm9s
bGVyLnllYXIoKTsKLSAgICB2YXIgbW9udGggPSB0aGlzLnBpY2tlci55ZWFyTW9udGhDb250cm9s
bGVyLm1vbnRoKCk7Ci0gICAgdmFyIHRoaXNNb250aFN0YXJ0VGltZSA9IGNyZWF0ZVVUQ0RhdGUo
eWVhciwgbW9udGgsIDEpLmdldFRpbWUoKTsKLSAgICBpZiAodGhpcy5waWNrZXIubWluaW11bURh
dGUuZ2V0VGltZSgpID49IHRoaXNNb250aFN0YXJ0VGltZSkKKyAgICB2YXIgY3VycmVudE1vbnRo
ID0gdGhpcy5waWNrZXIueWVhck1vbnRoQ29udHJvbGxlci5tb250aCgpOworICAgIGlmICh0aGlz
LnBpY2tlci5taW5pbXVtRGF0ZSA+PSBjdXJyZW50TW9udGguc3RhcnREYXRlKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAobW9udGggPT0gMCkgewotICAgICAgICB5ZWFyLS07Ci0g
ICAgICAgIG1vbnRoID0gMTE7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1vbnRoLS07Ci0gICAgdGhp
cy5fbmF2aWdhdGVUb01vbnRoV2l0aEFuaW1hdGlvbih5ZWFyLCBtb250aCk7CisgICAgdGhpcy5f
bmF2aWdhdGVUb01vbnRoV2l0aEFuaW1hdGlvbihjdXJyZW50TW9udGgucHJldmlvdXMoKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9OwogCkBAIC0xMDYwLDE3ICsxMTI0LDEwIEBAIERheXNUYWJsZS5w
cm90b3R5cGUuX21heWJlU2V0UHJldmlvdXNNb250aCA9IGZ1bmN0aW9uKCkgewogICogQHJldHVy
biB7IWJvb2xlYW59CiAgKi8KIERheXNUYWJsZS5wcm90b3R5cGUuX21heWJlU2V0TmV4dE1vbnRo
ID0gZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHllYXIgPSB0aGlzLnBpY2tlci55ZWFyTW9udGhDb250
cm9sbGVyLnllYXIoKTsKLSAgICB2YXIgbW9udGggPSB0aGlzLnBpY2tlci55ZWFyTW9udGhDb250
cm9sbGVyLm1vbnRoKCk7Ci0gICAgaWYgKG1vbnRoID09IDExKSB7Ci0gICAgICAgIHllYXIrKzsK
LSAgICAgICAgbW9udGggPSAwOwotICAgIH0gZWxzZQotICAgICAgICBtb250aCsrOwotICAgIHZh
ciBuZXh0TW9udGhTdGFydFRpbWUgPSBjcmVhdGVVVENEYXRlKHllYXIsIG1vbnRoLCAxKS5nZXRU
aW1lKCk7Ci0gICAgaWYgKHRoaXMucGlja2VyLm1heGltdW1EYXRlLmdldFRpbWUoKSA8IG5leHRN
b250aFN0YXJ0VGltZSkKKyAgICB2YXIgY3VycmVudE1vbnRoID0gdGhpcy5waWNrZXIueWVhck1v
bnRoQ29udHJvbGxlci5tb250aCgpOworICAgIGlmICh0aGlzLnBpY2tlci5tYXhpbXVtRGF0ZSA8
IGN1cnJlbnRNb250aC5lbmREYXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB0aGlz
Ll9uYXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0aW9uKHllYXIsIG1vbnRoKTsKKyAgICB0aGlzLl9u
YXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0aW9uKGN1cnJlbnRNb250aC5uZXh0KCkpOwogICAgIHJl
dHVybiB0cnVlOwogfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFkNWQ5YWY5YTRlM2RkZThlMGEyMWZiNjA2MzE2M2Nl
NjRjYjM4NmMuLjQxNjg3Y2FmMTJlMTU4OWY2ZmUxN2JiOTQ0YjViMWY4NzAyYzIzY2UgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsNSArMSwxNyBAQAogMjAxMi0xMS0wMiAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Vi
a2l0Lm9yZz4KIAorICAgICAgICBJbnRyb2R1Y2UgTW9udGggY2xhc3MgdG8gY2FsZW5kYXIgcGlj
a2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEw
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tl
ci1rZXktb3BlcmF0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLWtleS1vcGVyYXRp
b25zLmh0bWw6IEFkanVzdCB0aGUgZXhwZWN0YXRpb24gYmVjYXVzZSB3ZSBjaGFuZ2VkIHRoZSBt
b250aCBzdHJpbmcgZm9ybWF0LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9y
bXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3VzZS1vcGVyYXRpb25zLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFy
LXBpY2tlci9jYWxlbmRhci1waWNrZXItbW91c2Utb3BlcmF0aW9ucy5odG1sOiBEaXR0by4KKwor
MjAxMi0xMS0wMiAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KKwogICAgICAg
ICBGaXggdGVzdCBjYWxlbmRhci1waWNrZXIta2V5LW9wZXJhdGlvbnMuaHRtbAogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMDIwCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlj
a2VyL2NhbGVuZGFyLXBpY2tlci1rZXktb3BlcmF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRh
ci1waWNrZXIta2V5LW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDZlOTBkYzg5N2QyYzA2
MGQ1YzhhYzc2MGNmZGRiN2Y4NzFiYmRkMmEuLjY5YzI2ODI1MGQwMDRkYTFiZmMyMDE1Y2MwOGVj
NWM1N2I0YWVjNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1rZXktb3BlcmF0aW9ucy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jt
cy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLWtleS1vcGVyYXRpb25zLWV4cGVjdGVk
LnR4dApAQCAtOCw0MCArOCw0MCBAQCBQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2Nr
LXBhZ2UtcG9wdXAiKSBpcyBudWxsCiBDaGVjayB0aGF0IHBhZ2UgcG9wdXAgZXhpc3RzLgogUEFT
UyBwb3B1cFdpbmRvdy5wYWdlUG9wdXBDb250cm9sbGVyLnRvU3RyaW5nKCkgaXMgIltvYmplY3Qg
UGFnZVBvcHVwQ29udHJvbGxlcl0iCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIyMDAwLTAxLTAy
IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBp
cyAiMjAwMC0wMSIKIENoZWNrIHRoYXQgYXJyb3cga2V5cyB3b3JrIHByb3Blcmx5IGV2ZW4gd2hl
biBnb2luZyBiZXR3ZWVuIHdlZWtzIGFuZCBtb250aHMuCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlz
ICIxOTk5LTEyLTI2IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFTUyBjdXJy
ZW50TW9udGgoKSBpcyAiMjAwMC0wMSIKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIwMDAtMDEt
MDIiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIxOTk5LTExIgorUEFTUyBjdXJyZW50TW9udGgo
KSBpcyAiMTk5OS0xMiIKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjE5OTktMTItMjYiCi1QQVNT
IGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAw
LTAxIgogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMjAwMC0wMS0wMiIKLVBBU1MgY3VycmVudE1v
bnRoKCkgaXMgIjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBQQVNT
IHNlbGVjdGVkRGF0ZSgpIGlzICIxOTk5LTEyLTI2IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAi
MjAwMC0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wMSIKIFBBU1Mgc2VsZWN0ZWRE
YXRlKCkgaXMgIjIwMDAtMDEtMDgiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIxOTk5LTExIgor
UEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMTk5OS0xMiIKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMg
IjE5OTktMTItMjYiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJl
bnRNb250aCgpIGlzICIyMDAwLTAxIgogcHJlc3MgbQotUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAi
MjAwMC0wMS0zMCIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMSIKK0ZBSUwgc2VsZWN0
ZWREYXRlKCkgc2hvdWxkIGJlIDIwMDAtMDEtMjYuIFdhcyAyMDAwLTAxLTMwLgorUEFTUyBjdXJy
ZW50TW9udGgoKSBpcyAiMjAwMC0wMiIKIHByZXNzIHNoaWZ0ICsgbQogUEFTUyBzZWxlY3RlZERh
dGUoKSBpcyAiMTk5OS0xMi0yNiIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMCIKK1BB
U1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBwcmVzcyB5CiBQQVNTIHNlbGVjdGVkRGF0
ZSgpIGlzICIyMDAwLTEyLTMxIgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMS0wIgorUEFT
UyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMS0wMSIKIHByZXNzIHNoaWZ0ICsgeQogUEFTUyBzZWxl
Y3RlZERhdGUoKSBpcyAiMTk5OS0xMi0yNiIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAt
MCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBwcmVzcyBkCiBQQVNTIHNlbGVj
dGVkRGF0ZSgpIGlzICIyMDA5LTEyLTI3IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAxMC0w
IgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAxMC0wMSIKIHByZXNzIHNoaWZ0ICsgZAogUEFT
UyBzZWxlY3RlZERhdGUoKSBpcyAiMTk5OS0xMi0yNiIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMg
IjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBQQVNTIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJtb2NrLXBhZ2UtcG9wdXAiKSBpcyBudWxsCiBQQVNTIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkYXRlIikudmFsdWUgaXMgIjE5OTktMTItMjYiCiBQQVNTIHRlc3RU
b2RheSgpIHx8IHRlc3RUb2RheSgpIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tl
ci1rZXktb3BlcmF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLWtleS1vcGVyYXRpb25zLmh0
bWwKaW5kZXggMTgzODBiY2RlZTc3YjFkM2ExNjZkNGE5N2QxYzhhM2YxNDExZGExMy4uNGM4MGRk
MjU0MGM3NTQxMzI2YWQ2N2Y1Y2U1NWE4ZmNlZTMyOTNhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXIt
cGlja2VyLWtleS1vcGVyYXRpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLWtleS1vcGVy
YXRpb25zLmh0bWwKQEAgLTIyLDY3ICsyMiw2NyBAQCBmdW5jdGlvbiB0ZXN0MSgpIHsKICAgICBz
aG91bGRCZSgncG9wdXBXaW5kb3cucGFnZVBvcHVwQ29udHJvbGxlci50b1N0cmluZygpJywgJyJb
b2JqZWN0IFBhZ2VQb3B1cENvbnRyb2xsZXJdIicpOwogCiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVk
RGF0ZSgpJywgJyIyMDAwLTAxLTAyIicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScs
ICciMjAwMC0wIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSIn
KTsKIAogICAgIGRlYnVnKCdDaGVjayB0aGF0IGFycm93IGtleXMgd29yayBwcm9wZXJseSBldmVu
IHdoZW4gZ29pbmcgYmV0d2VlbiB3ZWVrcyBhbmQgbW9udGhzLicpOwogCiAgICAgZXZlbnRTZW5k
ZXIua2V5RG93bigndXBBcnJvdycpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICci
MTk5OS0xMi0yNiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMCIn
KTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAgICAgLy8g
TW92ZSBmcm9tIGZpcnN0IHJvdyBvZiBKYW51YXJ5IDIwMDAgdG8gbGFzdCByb3cgb2YgRGVjZW1i
ZXIgMTk5OS4KICAgICBldmVudFNlbmRlci5rZXlEb3duKCd1cEFycm93Jyk7CiAgICAgc2hvdWxk
QmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAwLTAxLTAyIicpOwotICAgIHNob3VsZEJlKCdjdXJy
ZW50TW9udGgoKScsICciMTk5OS0xMSInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCkn
LCAnIjE5OTktMTIiJyk7CiAgICAgCiAgICAgZXZlbnRTZW5kZXIua2V5RG93bignZG93bkFycm93
Jyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIxOTk5LTEyLTI2IicpOwotICAg
IHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wIicpOworICAgIHNob3VsZEJlKCdj
dXJyZW50TW9udGgoKScsICciMjAwMC0wMSInKTsKICAgICBldmVudFNlbmRlci5rZXlEb3duKCdk
b3duQXJyb3cnKTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjIwMDAtMDEtMDIi
Jyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAiJyk7CisgICAgc2hv
dWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAxIicpOwogCiAgICAgZXZlbnRTZW5kZXIu
a2V5RG93bigndXBBcnJvdycpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMTk5
OS0xMi0yNiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMCInKTsK
KyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAKICAgICAvLyBN
b3ZlIGZyb20gdG9wIGxlZnQgb2YgSmFudWFyeSAyMDAwIHRvIGJvdHRvbSByaWdodCBvZiBEZWNl
bWJlciAxOTk5LgogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ2xlZnRBcnJvdycpOwogICAgIHNo
b3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMjAwMC0wMS0wOCInKTsKLSAgICBzaG91bGRCZSgn
Y3VycmVudE1vbnRoKCknLCAnIjE5OTktMTEiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250
aCgpJywgJyIxOTk5LTEyIicpOwogCiAgICAgZXZlbnRTZW5kZXIua2V5RG93bigncmlnaHRBcnJv
dycpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMTk5OS0xMi0yNiInKTsKLSAg
ICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMCInKTsKKyAgICBzaG91bGRCZSgn
Y3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAKICAgICBkZWJ1ZygicHJlc3MgbSIpOwog
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ20nKTsKLSAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRl
KCknLCAnIjIwMDAtMDEtMzAiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIy
MDAwLTEiJyk7CisgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAwLTAxLTI2Iicp
OworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMiInKTsKIAogICAgIGRl
YnVnKCJwcmVzcyBzaGlmdCArIG0iKTsKICAgICBldmVudFNlbmRlci5rZXlEb3duKCdNJyk7CiAg
ICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIxOTk5LTEyLTI2IicpOwotICAgIHNob3Vs
ZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50
TW9udGgoKScsICciMjAwMC0wMSInKTsKIAogICAgIGRlYnVnKCJwcmVzcyB5Iik7CiAgICAgZXZl
bnRTZW5kZXIua2V5RG93bigneScpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICci
MjAwMC0xMi0zMSInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDEtMCIn
KTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDEtMDEiJyk7CiAKICAgICBk
ZWJ1ZygicHJlc3Mgc2hpZnQgKyB5Iik7CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bignWScpOwog
ICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMTk5OS0xMi0yNiInKTsKLSAgICBzaG91
bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMCInKTsKKyAgICBzaG91bGRCZSgnY3VycmVu
dE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAKICAgICBkZWJ1ZygicHJlc3MgZCIpOwogICAgIGV2
ZW50U2VuZGVyLmtleURvd24oJ2QnKTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAn
IjIwMDktMTItMjciJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDEwLTAi
Jyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDEwLTAxIicpOwogCiAgICAg
ZGVidWcoInByZXNzIHNoaWZ0ICsgZCIpOwogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ0QnKTsK
ICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjE5OTktMTItMjYiJyk7Ci0gICAgc2hv
dWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJl
bnRNb250aCgpJywgJyIyMDAwLTAxIicpOwogCiAgICAgZXZlbnRTZW5kZXIua2V5RG93bignXG4n
KTsKICAgICBzaG91bGRCZU51bGwoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2NrLXBhZ2Ut
cG9wdXAiKScpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIGZ1bmN0aW9uIHRlc3RUb2RheSgpIHsKICAg
ICBldmVudFNlbmRlci5rZXlEb3duKCd0Jyk7CiAgICAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7CiAg
ICAgdmFyIGV4cGVjdGVkRGF0ZSA9IHNlcmlhbGl6ZURhdGUobm93LmdldFVUQ0Z1bGxZZWFyKCks
IG5vdy5nZXRVVENNb250aCgpLCBub3cuZ2V0VVRDRGF0ZSgpKTsKLSAgICB2YXIgZXhwZWN0ZWRN
b250aCA9IG5vdy5nZXRVVENGdWxsWWVhcigpICsgIi0iICsgbm93LmdldE1vbnRoKCk7CisgICAg
dmFyIGV4cGVjdGVkTW9udGggPSBwb3B1cFdpbmRvdy5Nb250aC5jcmVhdGVGcm9tRGF0ZShub3cp
LnRvU3RyaW5nKCk7CiAgICAgcmV0dXJuIHNlbGVjdGVkRGF0ZSgpID09PSBleHBlY3RlZERhdGUg
JiYgY3VycmVudE1vbnRoKCkgPT09IGV4cGVjdGVkTW9udGg7CiB9CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2Nh
bGVuZGFyLXBpY2tlci1tb3VzZS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBp
Y2tlci1tb3VzZS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAppbmRleCBlOTY3MDYzMjE1NzhjYThl
NjNjOTUxYTc4YjM5NzgyZjQ1ZWEwOWFiLi41YTI3ZDQxNzNkZWYwNWFmZWNmZWVhYjhjMmI4OGFl
ODJhMTAxNjE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItbW91c2Utb3BlcmF0aW9ucy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jt
cy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLW1vdXNlLW9wZXJhdGlvbnMtZXhwZWN0
ZWQudHh0CkBAIC02LDE1ICs2LDE1IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiBDaGVjayB0
aGF0IHBhZ2UgcG9wdXAgZG9lc24ndCBleGlzdCBhdCBmaXJzdC4KIFBBU1MgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIpIGlzIG51bGwKIFBBU1Mgc2VsZWN0ZWREYXRl
KCkgaXMgIjIwMDAtMDEtMDIiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNT
IGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgogQ2hlY2sgdGhhdCBob3ZlcmluZyBvdmVyIGFu
IGVudHJ5IGhpZ2hsaWdodHMgaXQuCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIxOTk5LTEyLTMx
IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBp
cyAiMjAwMC0wMSIKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIwMDAtMDEtMDQiCi1QQVNTIGN1
cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAx
IgogQ2hlY2sgdGhhdCBuYXZpZ2F0aW5nIGJldHdlZW4gbW9udGhzIG1haW50YWlucyBzZWxlY3Rp
b24gcG9zaXRpb24uCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIyMDAwLTAyLTA4IgotUEFTUyBj
dXJyZW50TW9udGgoKSBpcyAiMjAwMC0xIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0w
MiIKIENoZWNrIHRoYXQgbW92aW5nIHRoZSBtb3VzZSBvdXRzaWRlIHRoZSBwb3B1cCBkZS1oaWdo
bGlnaHRzIGVudHJpZXMuCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzIHVuZGVmaW5lZC4KIENoZWNr
IHRoYXQgbW91c2UgY2xpY2sgY2xvc2VzIHRoZSBwb3B1cCBhbmQgc2V0cyB0aGUgdmFsdWUuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVu
ZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItbW91c2Utb3BlcmF0aW9ucy5odG1sIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5k
YXItcGlja2VyLW1vdXNlLW9wZXJhdGlvbnMuaHRtbAppbmRleCA1MmQwM2ZlNTlmNDM1M2NmMjg1
YmVhMDgyZGY0NWE4MzUyNGQ3ZDJkLi5mODAxYTQ3YWFkMzUyN2JmZDUzNGM2NjM3M2ZjNWVkNGZh
NzQyZTgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zv
cm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItbW91c2Utb3BlcmF0aW9ucy5odG1s
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXIt
cGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3VzZS1vcGVyYXRpb25zLmh0bWwKQEAgLTIwLDIxICsy
MCwyMSBAQCBvcGVuUGlja2VyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRlJyksIHRlc3Qp
OwogCiBmdW5jdGlvbiB0ZXN0KCkgewogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICci
MjAwMC0wMS0wMiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMCIn
KTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAKICAgICBk
ZWJ1ZygnQ2hlY2sgdGhhdCBob3ZlcmluZyBvdmVyIGFuIGVudHJ5IGhpZ2hsaWdodHMgaXQuJyk7
CiAgICAgaG92ZXJPdmVyRWxlbWVudChwb3B1cFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCJkYXkiKVs1XSk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIx
OTk5LTEyLTMxIicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wIicp
OworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSInKTsKIAogICAgIGhv
dmVyT3ZlckVsZW1lbnQocG9wdXBXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgiZGF5IilbOV0pOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMjAwMC0wMS0w
NCInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMCInKTsKKyAgICBz
aG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAKICAgICBkZWJ1ZygnQ2hl
Y2sgdGhhdCBuYXZpZ2F0aW5nIGJldHdlZW4gbW9udGhzIG1haW50YWlucyBzZWxlY3Rpb24gcG9z
aXRpb24uJyk7CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bignbScpOwogICAgIHNob3VsZEJlKCdz
ZWxlY3RlZERhdGUoKScsICciMjAwMC0wMi0wOCInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1v
bnRoKCknLCAnIjIwMDAtMSInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIw
MDAtMDIiJyk7CiAKICAgICBkZWJ1ZygnQ2hlY2sgdGhhdCBtb3ZpbmcgdGhlIG1vdXNlIG91dHNp
ZGUgdGhlIHBvcHVwIGRlLWhpZ2hsaWdodHMgZW50cmllcy4nKTsKICAgICBob3Zlck92ZXJFbGVt
ZW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXNjcmlwdGlvbicpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172057</attachid>
            <date>2012-11-02 07:26:50 -0700</date>
            <delta_ts>2012-11-04 22:52:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101024-20121102232509.patch</filename>
            <type>text/plain</type>
            <size>31502</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBlMjhjZWFiNjlmM2Zl
OWQ5YTNmMWE5OWYzNzk1MjZiOTZmOTkyNC4uZWMxNzQ2NzAyOGUxY2M2MGRlNjE3YmIyZWY2ODRh
OGQxMzlmYmZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTExLTAzICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBNb250
aCBjbGFzcyB0byBjYWxlbmRhciBwaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMTAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFt
dXJhLgorCisgICAgICAgIE1vbnRoIGNsYXNzIG5lZWRzIHRvIGJlIGludHJvZHVjZWQgdG8gaW1w
bGVtZW50IGEgbW9udGggcGlja2VyLiBUaGlzCisgICAgICAgIHBhdGNoIGp1c3QgaW50cm9kdWNl
cyB0aGUgTW9udGggY2xhc3MgaW50byB0aGUgY2FsZW5kYXIgcGlja2VyIHdpdGhvdXQKKyAgICAg
ICAgY2hhbmdpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGNhbGVuZGFyLXBpY2tlci0qLmh0bWwgdGVzdHMuCisKKyAg
ICAgICAgKiBSZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qczoKKyAgICAgICAg
KE1vbnRoLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyk6IFJldHVybnMgYSBsb2NhbGl6ZWQgbW9u
dGggc3RyaW5nLgorICAgICAgICAoTW9udGgpOiBUYWtlcyBhIE1vbnRoIG9iamVjdCwgbnVtYmVy
IHJlcHJlc2VudGluZyB0aGUgbW9udGgsIG9yIHllYXIgYW5kIG1vbnRoIG51bWJlcnMuCisgICAg
ICAgIChNb250aC5wYXJzZSk6IFJldHVybnMgYSBuZXcgTW9udGggZnJvbSBhbiBJU08gbW9udGgg
c3RyaW5nLgorICAgICAgICAoTW9udGguY3JlYXRlRnJvbURhdGUpOiBSZXR1cm5zIGEgbmV3IE1v
bnRoIGNvbnRhaW5pbmcgdGhlIGdpdmVuIGRhdGV0aW1lLgorICAgICAgICAoTW9udGgucHJvdG90
eXBlLmVxdWFscyk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gbW9udGggaXMgdGhlIHNhbWUu
CisgICAgICAgIChNb250aC5wcm90b3R5cGUucHJldmlvdXMpOiBSZXR1cm5zIHRoZSBwcmV2aW91
cyBtb250aC4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS5uZXh0KTogUmV0dXJucyB0aGUgbmV4
dCBtb250aC4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS5zdGFydERhdGUpOiBSZXR1cm5zIGEg
ZGF0ZXRpbWUgdGhhdCBpcyB0aGUgc3RhcnQgb2YgdGhpcyBtb250aC4gVGhlIHZhbHVlIGlzIGlu
Y2x1c2l2ZS4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS5lbmREYXRlKTogUmV0dXJucyBhIGRh
dGV0aW1lIHRoYXQgaXMgdGhlIGVuZCBvZiB0aGlzIG1vbnRoLiBUaGUgdmFsdWUgaXMgZXhjbHVz
aXZlLgorICAgICAgICAoTW9udGgucHJvdG90eXBlLnZhbHVlT2YpOiBSZXR1cm5zIGEgbnVtYmVy
IHJlcHJlc2VudGluZyB0aGUgbW9udGguCisgICAgICAgIChNb250aC5wcm90b3R5cGUudG9TdHJp
bmcpOiBSZXR1cm5zIGFuIElTTyBtb250aCBzdHJpbmcuCisgICAgICAgIChZZWFyTW9udGhDb250
cm9sbGVyKTogVXNlIE1vbnRoIG9iamVjdC4KKyAgICAgICAgKFllYXJNb250aENvbnRyb2xsZXIu
cHJvdG90eXBlLmF0dGFjaFRvKTogWWVhciAyNzU3NjAgZW5kcyBpbiBTZXB0ZW1iZXIgc28gdXNl
IHRoZSB5ZWFyIGJlZm9yZSB0byBtZWFzdXJlIHRoZSBsYWJlbCB3aWR0aC4KKyAgICAgICAgKFll
YXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLnNldE1vbnRoKTogVGFrZSBhIG1vbnRoIG9iamVj
dC4KKyAgICAgICAgKFllYXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLl9yZWRyYXcpOiBVc2Ug
SVNPIG1vbnRoIHN0cmluZyBmb3IgZWxlbWVudC5kYXRhc2V0LnZhbHVlLgorICAgICAgICAoWWVh
ck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUuX2hhbmRsZVllYXJNb250aENoYW5nZSk6CisgICAg
ICAgIChZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5tb3ZlUmVsYXRpdmVseSk6CisgICAg
ICAgIChEYXlzVGFibGUpOiBVc2UgTW9udGggb2JqZWN0LgorICAgICAgICAoRGF5c1RhYmxlLnBy
b3RvdHlwZS5fcmVuZGVyTW9udGgpOiBUYWtlIGEgbW9udGggb2JqZWN0LiBUZXN0aW5nIGZvciBp
c05hTiBpcyBtb3ZlZCB1cCB0byBmaXggYSBidWcgd2hlbiBzaG93aW5nIFNlcHRlbWJlciwgMjc1
NzYwLgorICAgICAgICAoRGF5c1RhYmxlLnByb3RvdHlwZS5fbmF2aWdhdGVUb01vbnRoKTogVGFr
ZSBhIG1vbnRoIG9iamVjdC4KKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX25hdmlnYXRl
VG9Nb250aFdpdGhBbmltYXRpb24pOiBUYWtlIGEgbW9udGggb2JqZWN0LgorICAgICAgICAoRGF5
c1RhYmxlLnByb3RvdHlwZS5uYXZpZ2F0ZVRvTW9udGhBbmRLZWVwU2VsZWN0aW9uUG9zaXRpb24p
OiBUYWtlIGEgbW9udGggb2JqZWN0LgorICAgICAgICAoRGF5c1RhYmxlLnByb3RvdHlwZS5zZWxl
Y3REYXRlKToKKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX21heWJlU2V0UHJldmlvdXNN
b250aCk6IFVzZSBNb250aCBvYmplY3QgdG8gY2FsY3VsYXRlIHRoZSBwcmV2aW91cyBtb250aC4K
KyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX21heWJlU2V0TmV4dE1vbnRoKTogVXNlIE1v
bnRoIG9iamVjdCB0byBjYWxjdWxhdGUgdGhlIG5leHQgbW9udGguCisKIDIwMTItMTEtMDIgIEFy
cGl0YSBCYWh1Z3VuYSAgPGFycGl0YWJhaHVndW5hQGdtYWlsLmNvbT4KIAogICAgICAgICBSZWdy
ZXNzaW9uIHIxMzAwNTc6IEltcHJvcGVyIHByZWZlcnJlZCB3aWR0aCBjYWxjdWxhdGlvbiB3aGVu
IGFuIGlubGluZSByZXBsYWNlZCBvYmplY3QsIHdyYXBwZWQgaW4gYW4gaW5saW5lIGZsb3csIGZv
bGxvd3Mgc29tZSB0ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3Bh
Z2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFn
ZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qcwppbmRleCA2MTE0Y2M1N2JiOGZjZjUwZTM4ODUxZjVm
YzMyMWFmM2NhODUyYjgyLi42NTYxNDZkMDA3MGVlN2YwOTliN2U0ZTdlNjI2OTg0ZDgwMDVkY2Vm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRh
clBpY2tlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxl
bmRhclBpY2tlci5qcwpAQCAtMTM5LDEzICsxMzksMTMgQEAgZnVuY3Rpb24gZm9ybWF0SmFwYW5l
c2VJbXBlcmlhbEVyYSh5ZWFyLCBtb250aCkgewogfQogCiAvKioKLSAqIEBwYXJhbSB7IW51bWJl
cn0geWVhcgotICogQHBhcmFtIHshbnVtYmVyfSBtb250aAogICogQHJldHVybiB7IXN0cmluZ30K
ICAqLwotZnVuY3Rpb24gZm9ybWF0WWVhck1vbnRoKHllYXIsIG1vbnRoKSB7Ci0gICAgdmFyIHll
YXJTdHJpbmcgPSBsb2NhbGl6ZU51bWJlcih5ZWFyKTsKLSAgICB2YXIgbW9udGhTdHJpbmcgPSBn
bG9iYWwucGFyYW1zLm1vbnRoTGFiZWxzW21vbnRoXTsKK01vbnRoLnByb3RvdHlwZS50b0xvY2Fs
ZVN0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgIGlmIChpc05hTih0aGlzLnllYXIpIHx8IGlzTmFO
KHRoaXMueWVhcikpCisgICAgICAgIHJldHVybiAiSW52YWxpZCBNb250aCI7CisgICAgdmFyIHll
YXJTdHJpbmcgPSBsb2NhbGl6ZU51bWJlcih0aGlzLnllYXIpOworICAgIHZhciBtb250aFN0cmlu
ZyA9IGdsb2JhbC5wYXJhbXMubW9udGhMYWJlbHNbdGhpcy5tb250aF07CiAgICAgc3dpdGNoIChn
ZXRMYW5ndWFnZSgpKSB7CiAgICAgY2FzZSAiZXUiOgogICAgIGNhc2UgImZpbCI6CkBAIC0xNTgs
NyArMTU4LDcgQEAgZnVuY3Rpb24gZm9ybWF0WWVhck1vbnRoKHllYXIsIG1vbnRoKSB7CiAgICAg
Y2FzZSAiaHUiOgogICAgICAgICByZXR1cm4geWVhclN0cmluZyArICIuICIgKyBtb250aFN0cmlu
ZzsKICAgICBjYXNlICJqYSI6Ci0gICAgICAgIHJldHVybiB5ZWFyU3RyaW5nICsgIuW5tCIgKyBm
b3JtYXRKYXBhbmVzZUltcGVyaWFsRXJhKHllYXIsIG1vbnRoKSArICIgIiArIG1vbnRoU3RyaW5n
OworICAgICAgICByZXR1cm4geWVhclN0cmluZyArICLlubQiICsgZm9ybWF0SmFwYW5lc2VJbXBl
cmlhbEVyYSh0aGlzLnllYXIsIHRoaXMubW9udGgpICsgIiAiICsgbW9udGhTdHJpbmc7CiAgICAg
Y2FzZSAiemgiOgogICAgICAgICByZXR1cm4geWVhclN0cmluZyArICLlubQiICsgbW9udGhTdHJp
bmc7CiAgICAgY2FzZSAia28iOgpAQCAtMTcyLDcgKzE3Miw3IEBAIGZ1bmN0aW9uIGZvcm1hdFll
YXJNb250aCh5ZWFyLCBtb250aCkgewogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBtb250
aFN0cmluZyArICIgIiArIHllYXJTdHJpbmc7CiAgICAgfQotfQorfTsKIAogZnVuY3Rpb24gY3Jl
YXRlVVRDRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSkgewogICAgIHZhciBuZXdEYXRlID0gbmV3IERh
dGUoRGF0ZS5VVEMoeWVhciwgbW9udGgsIGRhdGUpKTsKQEAgLTIwOSw2ICsyMDksMTEwIEBAIGZ1
bmN0aW9uIHNlcmlhbGl6ZURhdGUoeWVhciwgbW9udGgsIGRheSkgewogICAgIHJldHVybiB5ZWFy
U3RyaW5nICsgIi0iICsgKCIwIiArIChtb250aCArIDEpKS5zdWJzdHIoLTIsIDIpICsgIi0iICsg
KCIwIiArIGRheSkuc3Vic3RyKC0yLCAyKTsKIH0KIAorLyoqCisgKiBAcGFyYW0geyFudW1iZXJ8
TW9udGh9IHZhbHVlT3JNb250aE9yWWVhcgorICogQHBhcmFtIHshbnVtYmVyPX0gbW9udGgKKyAq
LworZnVuY3Rpb24gTW9udGgodmFsdWVPck1vbnRoT3JZZWFyLCBtb250aCkgeworICAgIGlmIChh
cmd1bWVudHMubGVuZ3RoID09IDIpIHsKKyAgICAgICAgdGhpcy55ZWFyID0gdmFsdWVPck1vbnRo
T3JZZWFyOworICAgICAgICB0aGlzLm1vbnRoID0gbW9udGg7CisgICAgfSBlbHNlIGlmICh2YWx1
ZU9yTW9udGhPclllYXIgaW5zdGFuY2VvZiBNb250aCkgeworICAgICAgICB0aGlzLnllYXIgPSB2
YWx1ZU9yTW9udGhPclllYXIueWVhcjsKKyAgICAgICAgdGhpcy5tb250aCA9IHZhbHVlT3JNb250
aE9yWWVhci5tb250aDsKKyAgICB9IGVsc2UgeworICAgICAgICB0aGlzLnllYXIgPSBNYXRoLmZs
b29yKHZhbHVlT3JNb250aE9yWWVhciAvIDEyKSArIDE5NzA7CisgICAgICAgIHRoaXMubW9udGgg
PSB2YWx1ZU9yTW9udGhPclllYXIgJSAxMjsKKyAgICB9CisgICAgdGhpcy55ZWFyID0gdGhpcy55
ZWFyICsgTWF0aC5mbG9vcih0aGlzLm1vbnRoIC8gMTIpOworICAgIHRoaXMubW9udGggPSB0aGlz
Lm1vbnRoIDwgMCA/IHRoaXMubW9udGggJSAxMiArIDEyIDogdGhpcy5tb250aCAlIDEyOworICAg
IGlmICh0aGlzLnllYXIgPCAwIHx8IE1vbnRoLk1heGltdW0gPCB0aGlzKSB7CisgICAgICAgIHRo
aXMueWVhciA9IE5hTjsKKyAgICAgICAgdGhpcy5tb250aCA9IE5hTjsKKyAgICB9Cit9OworCitN
b250aC5JU09TdHJpbmdSZWdFeHAgPSAvXihcZCspLShcZCspJC87CisKKy8vIFNlZSBXZWJDb3Jl
L3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmguCitNb250aC5NYXhpbXVtID0gbmV3IE1vbnRoKDI3
NTc2MCwgOCk7CisKKy8qKgorICogQHBhcmFtIHshc3RyaW5nfSBzdHIKKyAqIEByZXR1cm4gez9N
b250aH0KKyAqLworTW9udGgucGFyc2UgPSBmdW5jdGlvbihzdHIpIHsKKyAgICB2YXIgbWF0Y2gg
PSBNb250aC5JU09TdHJpbmdSZWdFeHAuZXhlYyhzdHIpOworICAgIGlmICghbWF0Y2gpCisgICAg
ICAgIHJldHVybiBudWxsOworICAgIHZhciB5ZWFyID0gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTsK
KyAgICB2YXIgbW9udGggPSBwYXJzZUludChtYXRjaFsyXSwgMTApIC0gMTsKKyAgICByZXR1cm4g
bmV3IE1vbnRoKHllYXIsIG1vbnRoKTsKK307CisKKy8qKgorICogQHBhcmFtIHshRGF0ZX0gZGF0
ZQorICogQHJldHVybiB7IU1vbnRofQorICovCitNb250aC5jcmVhdGVGcm9tRGF0ZSA9IGZ1bmN0
aW9uKGRhdGUpIHsKKyAgICByZXR1cm4gbmV3IE1vbnRoKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwg
ZGF0ZS5nZXRVVENNb250aCgpKTsKK307CisKKy8qKgorICogQHBhcmFtIHshTW9udGh9IG90aGVy
CisgKiBAcmV0dXJuIHshYm9vbH0KKyAqLworTW9udGgucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0
aW9uKG90aGVyKSB7CisgICAgcmV0dXJuIHRoaXMueWVhciA9PT0gb3RoZXIueWVhciAmJiB0aGlz
Lm1vbnRoID09PSBvdGhlci5tb250aDsKK307CisKKy8qKgorICogQHJldHVybiB7IU1vbnRofQor
ICovCitNb250aC5wcm90b3R5cGUucHJldmlvdXMgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4g
bmV3IE1vbnRoKHRoaXMueWVhciwgdGhpcy5tb250aCAtIDEpOworfTsKKworLyoqCisgKiBAcmV0
dXJuIHshTW9udGh9CisgKi8KK01vbnRoLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oKSB7Cisg
ICAgcmV0dXJuIG5ldyBNb250aCh0aGlzLnllYXIsIHRoaXMubW9udGggKyAxKTsKK307CisKKy8q
KgorICogQHJldHVybiB7IURhdGV9CisgKi8KK01vbnRoLnByb3RvdHlwZS5zdGFydERhdGUgPSBm
dW5jdGlvbigpIHsKKyAgICByZXR1cm4gY3JlYXRlVVRDRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9u
dGgsIDEpOworfTsKKworLyoqCisgKiBAcmV0dXJuIHshRGF0ZX0KKyAqLworTW9udGgucHJvdG90
eXBlLmVuZERhdGUgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAodGhpcy5lcXVhbHMoTW9udGguTWF4
aW11bSkpCisgICAgICAgIHJldHVybiBDYWxlbmRhclBpY2tlci5NYXhpbXVtUG9zc2libGVEYXRl
OworICAgIHJldHVybiB0aGlzLm5leHQoKS5zdGFydERhdGUoKTsKK307CisKKy8qKgorICogQHJl
dHVybiB7IW51bWJlcn0KKyAqLworTW9udGgucHJvdG90eXBlLnZhbHVlT2YgPSBmdW5jdGlvbigp
IHsKKyAgICByZXR1cm4gKHRoaXMueWVhciAtIDE5NzApICogMTIgKyB0aGlzLm1vbnRoOworfTsK
KworLyoqCisgKiBAcmV0dXJuIHshc3RyaW5nfQorICovCitNb250aC5wcm90b3R5cGUudG9TdHJp
bmcgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgeWVhclN0cmluZyA9IFN0cmluZyh0aGlzLnllYXIp
OworICAgIGlmICh5ZWFyU3RyaW5nLmxlbmd0aCA8IDQpCisgICAgICAgIHllYXJTdHJpbmcgPSAo
IjAwMCIgKyB5ZWFyU3RyaW5nKS5zdWJzdHIoLTQsIDQpOworICAgIHJldHVybiB5ZWFyU3RyaW5n
ICsgIi0iICsgKCIwIiArICh0aGlzLm1vbnRoICsgMSkpLnN1YnN0cigtMiwgMik7Cit9OworCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAvLyBJbml0aWFsaXphdGlvbgogCkBAIC00MzMsMTMgKzUzNyw5IEBAIENhbGVu
ZGFyUGlja2VyLnByb3RvdHlwZS5fbGF5b3V0QnV0dG9ucyA9IGZ1bmN0aW9uKCkgewogZnVuY3Rp
b24gWWVhck1vbnRoQ29udHJvbGxlcihwaWNrZXIpIHsKICAgICB0aGlzLnBpY2tlciA9IHBpY2tl
cjsKICAgICAvKioKLSAgICAgKiBAdHlwZSB7IW51bWJlcn0KLSAgICAgKi8KLSAgICB0aGlzLl9j
dXJyZW50WWVhciA9IC0xOwotICAgIC8qKgotICAgICAqIEB0eXBlIHshbnVtYmVyfQorICAgICAq
IEB0eXBlIHs/TW9udGh9CiAgICAgICovCi0gICAgdGhpcy5fY3VycmVudE1vbnRoID0gLTE7Cisg
ICAgdGhpcy5fY3VycmVudE1vbnRoID0gbnVsbDsKIH0KIAogLyoqCkBAIC00NzcsMTQgKzU3Nywx
NyBAQCBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5hdHRhY2hUbyA9IGZ1bmN0aW9uKGVs
ZW1lbnQpIHsKICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3dhbGwpOwogCiAgICAgdmFy
IG1heGltdW1ZZWFyID0gdGhpcy5waWNrZXIubWF4aW11bURhdGUuZ2V0VVRDRnVsbFllYXIoKTsK
KyAgICAvLyBCZWNhdXNlIHRoZSBtYXhpbXVtIHBvc3NpYmxlIHllYXIgaXMgU2VwdGVtYmVyIHdl
IHNob3VsZCB1c2UgdGhlIHllYXIgYmVmb3JlIGl0LgorICAgIGlmIChtYXhpbXVtWWVhciA9PT0g
TW9udGguTWF4aW11bS55ZWFyKQorICAgICAgICBtYXhpbXVtWWVhci0tOwogICAgIHZhciBtYXhX
aWR0aCA9IDA7CiAgICAgZm9yICh2YXIgbSA9IDA7IG0gPCAxMjsgKyttKSB7Ci0gICAgICAgIHRo
aXMuX21vbnRoLnRleHRDb250ZW50ID0gZm9ybWF0WWVhck1vbnRoKG1heGltdW1ZZWFyLCBtKTsK
KyAgICAgICAgdGhpcy5fbW9udGgudGV4dENvbnRlbnQgPSBuZXcgTW9udGgobWF4aW11bVllYXIs
IG0pLnRvTG9jYWxlU3RyaW5nKCk7CiAgICAgICAgIG1heFdpZHRoID0gTWF0aC5tYXgobWF4V2lk
dGgsIHRoaXMuX21vbnRoLm9mZnNldFdpZHRoKTsKICAgICB9CiAgICAgaWYgKGdldExhbmd1YWdl
KCkgPT0gImphIiAmJiBJbXBlcmlhbEVyYUxpbWl0IDwgbWF4aW11bVllYXIpIHsKICAgICAgICAg
Zm9yICh2YXIgbSA9IDA7IG0gPCAxMjsgKyttKSB7Ci0gICAgICAgICAgICB0aGlzLl9tb250aC50
ZXh0Q29udGVudCA9IGZvcm1hdFllYXJNb250aChJbXBlcmlhbEVyYUxpbWl0LCBtKTsKKyAgICAg
ICAgICAgIHRoaXMuX21vbnRoLnRleHRDb250ZW50ID0gbmV3IE1vbnRoKEltcGVyaWFsRXJhTGlt
aXQsIG0pLnRvTG9jYWxlU3RyaW5nKCk7CiAgICAgICAgICAgICBtYXhXaWR0aCA9IE1hdGgubWF4
KG1heFdpZHRoLCB0aGlzLl9tb250aC5vZmZzZXRXaWR0aCk7CiAgICAgICAgIH0KICAgICB9CkBA
IC01NTEsMzMgKzY1NCwyNCBAQCBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5fYXR0YWNo
UmlnaHRCdXR0b25zVG8gPSBmdW5jdGlvbihwYXJlbnQpIHsKIH07CiAKIC8qKgotICogQHJldHVy
biB7IW51bWJlcn0KLSAqLwotWWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUueWVhciA9IGZ1
bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlzLl9jdXJyZW50WWVhcjsKLX07Ci0KLS8qKgotICog
QHJldHVybiB7IW51bWJlcn0KKyAqIEByZXR1cm4gez9Nb250aH0KICAqLwogWWVhck1vbnRoQ29u
dHJvbGxlci5wcm90b3R5cGUubW9udGggPSBmdW5jdGlvbigpIHsKICAgICByZXR1cm4gdGhpcy5f
Y3VycmVudE1vbnRoOwogfTsKIAogLyoqCi0gKiBAcGFyYW0geyFudW1iZXJ9IHllYXIKLSAqIEBw
YXJhbSB7IW51bWJlcn0gbW9udGgKKyAqIEBwYXJhbSB7IU1vbnRofSBtb250aAogICovCi1ZZWFy
TW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5zZXRZZWFyTW9udGggPSBmdW5jdGlvbih5ZWFyLCBt
b250aCkgewotICAgIHRoaXMuX2N1cnJlbnRZZWFyID0geWVhcjsKLSAgICB0aGlzLl9jdXJyZW50
TW9udGggPSBtb250aDsKK1llYXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLnNldE1vbnRoID0g
ZnVuY3Rpb24obW9udGgpIHsKKyAgICB0aGlzLl9jdXJyZW50TW9udGggPSBuZXcgTW9udGgobW9u
dGgpOwogICAgIHRoaXMuX3JlZHJhdygpOwogfTsKIAogWWVhck1vbnRoQ29udHJvbGxlci5wcm90
b3R5cGUuX3JlZHJhdyA9IGZ1bmN0aW9uKCkgewotICAgIHZhciBtaW4gPSB0aGlzLnBpY2tlci5t
aW5pbXVtRGF0ZS5nZXRVVENGdWxsWWVhcigpICogMTIgKyB0aGlzLnBpY2tlci5taW5pbXVtRGF0
ZS5nZXRVVENNb250aCgpOwotICAgIHZhciBtYXggPSB0aGlzLnBpY2tlci5tYXhpbXVtRGF0ZS5n
ZXRVVENGdWxsWWVhcigpICogMTIgKyB0aGlzLnBpY2tlci5tYXhpbXVtRGF0ZS5nZXRVVENNb250
aCgpOwotICAgIHZhciBjdXJyZW50ID0gdGhpcy5fY3VycmVudFllYXIgKiAxMiArIHRoaXMuX2N1
cnJlbnRNb250aDsKKyAgICB2YXIgbWluID0gTW9udGguY3JlYXRlRnJvbURhdGUodGhpcy5waWNr
ZXIubWluaW11bURhdGUpLnZhbHVlT2YoKTsKKyAgICB2YXIgbWF4ID0gTW9udGguY3JlYXRlRnJv
bURhdGUodGhpcy5waWNrZXIubWF4aW11bURhdGUpLnZhbHVlT2YoKTsKKyAgICB2YXIgY3VycmVu
dCA9IHRoaXMuX2N1cnJlbnRNb250aC52YWx1ZU9mKCk7CiAgICAgaWYgKHRoaXMuX2xlZnQzKQog
ICAgICAgICB0aGlzLl9sZWZ0My5kaXNhYmxlZCA9IGN1cnJlbnQgLSAxMyA8IG1pbjsKICAgICB0
aGlzLl9sZWZ0Mi5kaXNhYmxlZCA9IGN1cnJlbnQgLSAyIDwgbWluOwpAQCAtNTg2LDE1ICs2ODAs
MTYgQEAgWWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUuX3JlZHJhdyA9IGZ1bmN0aW9uKCkg
ewogICAgIHRoaXMuX3JpZ2h0Mi5kaXNhYmxlZCA9IGN1cnJlbnQgKyAyID4gbWF4OwogICAgIGlm
ICh0aGlzLl9yaWdodDMpCiAgICAgICAgIHRoaXMuX3JpZ2h0My5kaXNhYmxlZCA9IGN1cnJlbnQg
KyAxMyA+IG1heDsKLSAgICB0aGlzLl9tb250aC5pbm5lclRleHQgPSBmb3JtYXRZZWFyTW9udGgo
dGhpcy5fY3VycmVudFllYXIsIHRoaXMuX2N1cnJlbnRNb250aCk7CisgICAgdGhpcy5fbW9udGgu
aW5uZXJUZXh0ID0gdGhpcy5fY3VycmVudE1vbnRoLnRvTG9jYWxlU3RyaW5nKCk7CiAgICAgd2hp
bGUgKHRoaXMuX21vbnRoUG9wdXBDb250ZW50cy5oYXNDaGlsZE5vZGVzKCkpCiAgICAgICAgIHRo
aXMuX21vbnRoUG9wdXBDb250ZW50cy5yZW1vdmVDaGlsZCh0aGlzLl9tb250aFBvcHVwQ29udGVu
dHMuZmlyc3RDaGlsZCk7CiAKICAgICBmb3IgKHZhciBtID0gY3VycmVudCAtIDY7IG0gPD0gY3Vy
cmVudCArIDY7IG0rKykgewogICAgICAgICBpZiAobSA8IG1pbiB8fCBtID4gbWF4KQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIHZhciBvcHRpb24gPSBjcmVhdGVFbGVtZW50KCJkaXYi
LCBDbGFzc05hbWVzLk1vbnRoU2VsZWN0b3JQb3B1cEVudHJ5LCBmb3JtYXRZZWFyTW9udGgoTWF0
aC5mbG9vcihtIC8gMTIpLCBtICUgMTIpKTsKLSAgICAgICAgb3B0aW9uLmRhdGFzZXQudmFsdWUg
PSBTdHJpbmcoTWF0aC5mbG9vcihtIC8gMTIpKSArICItIiArIFN0cmluZyhtICUgMTIpOworICAg
ICAgICB2YXIgbW9udGggPSBuZXcgTW9udGgobSk7CisgICAgICAgIHZhciBvcHRpb24gPSBjcmVh
dGVFbGVtZW50KCJkaXYiLCBDbGFzc05hbWVzLk1vbnRoU2VsZWN0b3JQb3B1cEVudHJ5LCBtb250
aC50b0xvY2FsZVN0cmluZygpKTsKKyAgICAgICAgb3B0aW9uLmRhdGFzZXQudmFsdWUgPSBtb250
aC50b1N0cmluZygpOwogICAgICAgICB0aGlzLl9tb250aFBvcHVwQ29udGVudHMuYXBwZW5kQ2hp
bGQob3B0aW9uKTsKICAgICAgICAgaWYgKG0gPT0gY3VycmVudCkKICAgICAgICAgICAgIG9wdGlv
bi5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuU2VsZWN0ZWRNb250aFllYXIpOwpAQCAtNzE1LDEz
ICs4MTAsNyBAQCBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5faGFuZGxlWWVhck1vbnRo
Q2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgdmFyIHNlbGVjdGlvbiA9IHRoaXMuX2dldFNlbGVj
dGlvbigpOwogICAgIGlmICghc2VsZWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgdmFyIHZh
bHVlID0gc2VsZWN0aW9uLmRhdGFzZXQudmFsdWU7Ci0gICAgdmFyIHJlc3VsdCAgPSB2YWx1ZS5t
YXRjaCgvKFxkKyktKFxkKykvKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHZhciBuZXdZZWFyID0gTnVtYmVyKHJlc3VsdFsxXSk7Ci0gICAgdmFyIG5ld01vbnRoID0g
TnVtYmVyKHJlc3VsdFsyXSk7Ci0gICAgdGhpcy5waWNrZXIuZGF5c1RhYmxlLm5hdmlnYXRlVG9N
b250aEFuZEtlZXBTZWxlY3Rpb25Qb3NpdGlvbihuZXdZZWFyLCBuZXdNb250aCk7CisgICAgdGhp
cy5waWNrZXIuZGF5c1RhYmxlLm5hdmlnYXRlVG9Nb250aEFuZEtlZXBTZWxlY3Rpb25Qb3NpdGlv
bihNb250aC5wYXJzZShzZWxlY3Rpb24uZGF0YXNldC52YWx1ZSkpOwogfTsKIAogLyoKQEAgLTc3
OSw5ICs4NjgsOSBAQCBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5faGFuZGxlQnV0dG9u
Q2xpY2sgPSBmdW5jdGlvbihldmVudCkgewogICogQHBhcmFtIHshbnVtYmVyfSBhbW91bnQKICAq
LwogWWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUubW92ZVJlbGF0aXZlbHkgPSBmdW5jdGlv
bihhbW91bnQpIHsKLSAgICB2YXIgbWluID0gdGhpcy5waWNrZXIubWluaW11bURhdGUuZ2V0VVRD
RnVsbFllYXIoKSAqIDEyICsgdGhpcy5waWNrZXIubWluaW11bURhdGUuZ2V0VVRDTW9udGgoKTsK
LSAgICB2YXIgbWF4ID0gdGhpcy5waWNrZXIubWF4aW11bURhdGUuZ2V0VVRDRnVsbFllYXIoKSAq
IDEyICsgdGhpcy5waWNrZXIubWF4aW11bURhdGUuZ2V0VVRDTW9udGgoKTsKLSAgICB2YXIgY3Vy
cmVudCA9IHRoaXMuX2N1cnJlbnRZZWFyICogMTIgKyB0aGlzLl9jdXJyZW50TW9udGg7CisgICAg
dmFyIG1pbiA9IE1vbnRoLmNyZWF0ZUZyb21EYXRlKHRoaXMucGlja2VyLm1pbmltdW1EYXRlKS52
YWx1ZU9mKCk7CisgICAgdmFyIG1heCA9IE1vbnRoLmNyZWF0ZUZyb21EYXRlKHRoaXMucGlja2Vy
Lm1heGltdW1EYXRlKS52YWx1ZU9mKCk7CisgICAgdmFyIGN1cnJlbnQgPSB0aGlzLl9jdXJyZW50
TW9udGgudmFsdWVPZigpOwogICAgIHZhciB1cGRhdGVkID0gY3VycmVudDsKICAgICBpZiAoYW1v
dW50IDwgMCkKICAgICAgICAgdXBkYXRlZCA9IGN1cnJlbnQgKyBhbW91bnQgPj0gbWluID8gY3Vy
cmVudCArIGFtb3VudCA6IG1pbjsKQEAgLTc4OSw3ICs4NzgsNyBAQCBZZWFyTW9udGhDb250cm9s
bGVyLnByb3RvdHlwZS5tb3ZlUmVsYXRpdmVseSA9IGZ1bmN0aW9uKGFtb3VudCkgewogICAgICAg
ICB1cGRhdGVkID0gY3VycmVudCArIGFtb3VudCA8PSBtYXggPyBjdXJyZW50ICsgYW1vdW50IDog
bWF4OwogICAgIGlmICh1cGRhdGVkID09IGN1cnJlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICB0
aGlzLnBpY2tlci5kYXlzVGFibGUubmF2aWdhdGVUb01vbnRoQW5kS2VlcFNlbGVjdGlvblBvc2l0
aW9uKE1hdGguZmxvb3IodXBkYXRlZCAvIDEyKSwgdXBkYXRlZCAlIDEyKTsKKyAgICB0aGlzLnBp
Y2tlci5kYXlzVGFibGUubmF2aWdhdGVUb01vbnRoQW5kS2VlcFNlbGVjdGlvblBvc2l0aW9uKG5l
dyBNb250aCh1cGRhdGVkKSk7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04MDEsMTMgKzg5MCw5IEBA
IFllYXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLm1vdmVSZWxhdGl2ZWx5ID0gZnVuY3Rpb24o
YW1vdW50KSB7CiBmdW5jdGlvbiBEYXlzVGFibGUocGlja2VyKSB7CiAgICAgdGhpcy5waWNrZXIg
PSBwaWNrZXI7CiAgICAgLyoqCi0gICAgICogQHR5cGUgeyFudW1iZXJ9CisgICAgICogQHR5cGUg
ez9Nb250aH0KICAgICAgKi8KLSAgICB0aGlzLl9jdXJyZW50WWVhciA9IC0xOwotICAgIC8qKgot
ICAgICAqIEB0eXBlIHshbnVtYmVyfQotICAgICAqLwotICAgIHRoaXMuX2N1cnJlbnRNb250aCA9
IC0xOworICAgIHRoaXMuX2N1cnJlbnRNb250aCA9IG51bGw7CiB9CiAKIC8qKgpAQCAtODg5LDEw
ICs5NzQsOSBAQCBDYWxlbmRhclBpY2tlci5wcm90b3R5cGUuaXNWYWxpZERhdGUgPSBmdW5jdGlv
bih0aW1lKSB7CiAgKiBAcGFyYW0geyFudW1iZXJ9IHllYXIKICAqIEBwYXJhbSB7IW51bWJlcn0g
bW9udGgKICAqLwotRGF5c1RhYmxlLnByb3RvdHlwZS5fcmVuZGVyTW9udGggPSBmdW5jdGlvbih5
ZWFyLCBtb250aCkgewotICAgIHRoaXMuX2N1cnJlbnRZZWFyID0geWVhcjsKLSAgICB0aGlzLl9j
dXJyZW50TW9udGggPSBtb250aDsKLSAgICB2YXIgZGF5SXRlcmF0b3IgPSBjcmVhdGVVVENEYXRl
KHllYXIsIG1vbnRoLCAxKTsKK0RheXNUYWJsZS5wcm90b3R5cGUuX3JlbmRlck1vbnRoID0gZnVu
Y3Rpb24obW9udGgpIHsKKyAgICB0aGlzLl9jdXJyZW50TW9udGggPSBuZXcgTW9udGgobW9udGgp
OworICAgIHZhciBkYXlJdGVyYXRvciA9IHRoaXMuX2N1cnJlbnRNb250aC5zdGFydERhdGUoKTsK
ICAgICB2YXIgbW9udGhTdGFydERheSA9IGRheUl0ZXJhdG9yLmdldFVUQ0RheSgpOwogICAgIHZh
ciB3ZWVrU3RhcnREYXkgPSBnbG9iYWwucGFyYW1zLndlZWtTdGFydERheSB8fCAwOwogICAgIHZh
ciBzdGFydE9mZnNldCA9IHdlZWtTdGFydERheSAtIG1vbnRoU3RhcnREYXk7CkBAIC05MDEsMjYg
Kzk4NSwyMiBAQCBEYXlzVGFibGUucHJvdG90eXBlLl9yZW5kZXJNb250aCA9IGZ1bmN0aW9uKHll
YXIsIG1vbnRoKSB7CiAgICAgZGF5SXRlcmF0b3Iuc2V0VVRDRGF0ZShzdGFydE9mZnNldCArIDEp
OwogICAgIGZvciAodmFyIHcgPSAwOyB3IDwgRGF5c1RhYmxlLl9XZWVrczsgdysrKSB7CiAgICAg
ICAgIGZvciAodmFyIGQgPSAwOyBkIDwgNzsgZCsrKSB7Ci0gICAgICAgICAgICB2YXIgaXRlclll
YXIgPSBkYXlJdGVyYXRvci5nZXRVVENGdWxsWWVhcigpOwotICAgICAgICAgICAgdmFyIGl0ZXJN
b250aCA9IGRheUl0ZXJhdG9yLmdldFVUQ01vbnRoKCk7CisgICAgICAgICAgICB2YXIgaXRlck1v
bnRoID0gTW9udGguY3JlYXRlRnJvbURhdGUoZGF5SXRlcmF0b3IpOwogICAgICAgICAgICAgdmFy
IHRpbWUgPSBkYXlJdGVyYXRvci5nZXRUaW1lKCk7CiAgICAgICAgICAgICB2YXIgZWxlbWVudCA9
IHRoaXMuX2RheXNbd11bZF07CiAgICAgICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9IGxvY2Fs
aXplTnVtYmVyKGRheUl0ZXJhdG9yLmdldFVUQ0RhdGUoKSk7CiAgICAgICAgICAgICBlbGVtZW50
LmNsYXNzTmFtZSA9IENsYXNzTmFtZXMuRGF5OwotICAgICAgICAgICAgZWxlbWVudC5kYXRhc2V0
LnN1Ym1pdFZhbHVlID0gc2VyaWFsaXplRGF0ZShpdGVyWWVhciwgaXRlck1vbnRoLCBkYXlJdGVy
YXRvci5nZXRVVENEYXRlKCkpOwotICAgICAgICAgICAgaWYgKHRoaXMucGlja2VyLm91dE9mUmFu
Z2UodGltZSkpCisgICAgICAgICAgICBlbGVtZW50LmRhdGFzZXQuc3VibWl0VmFsdWUgPSBzZXJp
YWxpemVEYXRlKGl0ZXJNb250aC55ZWFyLCBpdGVyTW9udGgubW9udGgsIGRheUl0ZXJhdG9yLmdl
dFVUQ0RhdGUoKSk7CisgICAgICAgICAgICBpZiAoaXNOYU4odGltZSkpIHsKKyAgICAgICAgICAg
ICAgICBlbGVtZW50LmlubmVyVGV4dCA9ICItIjsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmNs
YXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5VbmF2YWlsYWJsZSk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKHRoaXMucGlja2VyLm91dE9mUmFuZ2UodGltZSkpCiAgICAgICAgICAgICAgICAgZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuVW5hdmFpbGFibGUpOwogICAgICAgICAgICAgZWxz
ZSBpZiAodGhpcy5waWNrZXIuc3RlcE1pc21hdGNoKHRpbWUpKQogICAgICAgICAgICAgICAgIGVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChDbGFzc05hbWVzLlVuYXZhaWxhYmxlKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKChpdGVyWWVhciA9PSB5ZWFyICYmIGRheUl0ZXJhdG9yLmdldFVUQ01vbnRoKCkg
PCBtb250aCkgfHwgKG1vbnRoID09IDAgJiYgaXRlck1vbnRoID09IDExKSkgewotICAgICAgICAg
ICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDbGFzc05hbWVzLkF2YWlsYWJsZSk7Ci0gICAg
ICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuTm90VGhpc01vbnRo
KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKGl0ZXJZZWFyID09IHllYXIgJiYgZGF5SXRlcmF0
b3IuZ2V0VVRDTW9udGgoKSA+IG1vbnRoKSB8fCAobW9udGggPT0gMTEgJiYgaXRlck1vbnRoID09
IDApKSB7CisgICAgICAgICAgICBlbHNlIGlmICghaXRlck1vbnRoLmVxdWFscyh0aGlzLl9jdXJy
ZW50TW9udGgpKSB7CiAgICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENsYXNz
TmFtZXMuQXZhaWxhYmxlKTsKICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQo
Q2xhc3NOYW1lcy5Ob3RUaGlzTW9udGgpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpc05hTih0
aW1lKSkgewotICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gIi0iOwotICAgICAg
ICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDbGFzc05hbWVzLlVuYXZhaWxhYmxlKTsK
ICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFk
ZChDbGFzc05hbWVzLkF2YWlsYWJsZSk7CiAgICAgICAgICAgICBkYXlJdGVyYXRvci5zZXRVVENE
YXRlKGRheUl0ZXJhdG9yLmdldFVUQ0RhdGUoKSArIDEpOwpAQCAtOTMxLDM1ICsxMDExLDI3IEBA
IERheXNUYWJsZS5wcm90b3R5cGUuX3JlbmRlck1vbnRoID0gZnVuY3Rpb24oeWVhciwgbW9udGgp
IHsKIH07CiAKIC8qKgotICogQHBhcmFtIHshbnVtYmVyfSB5ZWFyCi0gKiBAcGFyYW0geyFudW1i
ZXJ9IG1vbnRoCisgKiBAcGFyYW0geyFNb250aH0gbW9udGgKICAqLwotRGF5c1RhYmxlLnByb3Rv
dHlwZS5fbmF2aWdhdGVUb01vbnRoID0gZnVuY3Rpb24oeWVhciwgbW9udGgpIHsKLSAgICB0aGlz
LnBpY2tlci55ZWFyTW9udGhDb250cm9sbGVyLnNldFllYXJNb250aCh5ZWFyLCBtb250aCk7Ci0g
ICAgdGhpcy5fcmVuZGVyTW9udGgoeWVhciwgbW9udGgpOworRGF5c1RhYmxlLnByb3RvdHlwZS5f
bmF2aWdhdGVUb01vbnRoID0gZnVuY3Rpb24obW9udGgpIHsKKyAgICB0aGlzLnBpY2tlci55ZWFy
TW9udGhDb250cm9sbGVyLnNldE1vbnRoKG1vbnRoKTsKKyAgICB0aGlzLl9yZW5kZXJNb250aCht
b250aCk7CiB9OwogCiAvKioKLSAqIEBwYXJhbSB7IW51bWJlcn0geWVhcgotICogQHBhcmFtIHsh
bnVtYmVyfSBtb250aAorICogQHBhcmFtIHshTW9udGh9IG1vbnRoCiAgKi8KLURheXNUYWJsZS5w
cm90b3R5cGUuX25hdmlnYXRlVG9Nb250aFdpdGhBbmltYXRpb24gPSBmdW5jdGlvbih5ZWFyLCBt
b250aCkgewotICAgIGlmICh0aGlzLl9jdXJyZW50WWVhciA+PSAwICYmIHRoaXMuX2N1cnJlbnRN
b250aCA+PSAwKSB7Ci0gICAgICAgIGlmICh5ZWFyID09IHRoaXMuX2N1cnJlbnRZZWFyICYmIG1v
bnRoID09IHRoaXMuX2N1cnJlbnRNb250aCkKK0RheXNUYWJsZS5wcm90b3R5cGUuX25hdmlnYXRl
VG9Nb250aFdpdGhBbmltYXRpb24gPSBmdW5jdGlvbihtb250aCkgeworICAgIGlmICh0aGlzLl9j
dXJyZW50TW9udGgpIHsKKyAgICAgICAgdmFyIGRlbHRhID0gdGhpcy5fY3VycmVudE1vbnRoLnZh
bHVlT2YoKSAtIG1vbnRoLnZhbHVlT2YoKTsKKyAgICAgICAgaWYgKGRlbHRhID09PSAwKQogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgZGVjcmVhc2luZyA9IGZhbHNlOwotICAgICAg
ICBpZiAoeWVhciA8IHRoaXMuX2N1cnJlbnRZZWFyKQotICAgICAgICAgICAgZGVjcmVhc2luZyA9
IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKHllYXIgPiB0aGlzLl9jdXJyZW50WWVhcikKLSAgICAg
ICAgICAgIGRlY3JlYXNpbmcgPSBmYWxzZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZGVj
cmVhc2luZyA9IG1vbnRoIDwgdGhpcy5fY3VycmVudE1vbnRoOwogICAgICAgICB2YXIgZGF5c1N0
eWxlID0gdGhpcy5fZGF5c0NvbnRhaW5lci5zdHlsZTsKICAgICAgICAgZGF5c1N0eWxlLnBvc2l0
aW9uID0gInJlbGF0aXZlIjsKICAgICAgICAgZGF5c1N0eWxlLndlYmtpdFRyYW5zaXRpb24gPSAi
bGVmdCAwLjFzIGVhc2UiOwotICAgICAgICBkYXlzU3R5bGUubGVmdCA9IChkZWNyZWFzaW5nID8g
IiIgOiAiLSIpICsgdGhpcy5fZGF5c0NvbnRhaW5lci5vZmZzZXRXaWR0aCArICJweCI7CisgICAg
ICAgIGRheXNTdHlsZS5sZWZ0ID0gKGRlbHRhID4gMCA/ICIiIDogIi0iKSArIHRoaXMuX2RheXND
b250YWluZXIub2Zmc2V0V2lkdGggKyAicHgiOwogICAgIH0KLSAgICB0aGlzLl9uYXZpZ2F0ZVRv
TW9udGgoeWVhciwgbW9udGgpOworICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aChtb250aCk7CiB9
OwogCiBEYXlzVGFibGUucHJvdG90eXBlLl9tb3ZlSW5EYXlzID0gZnVuY3Rpb24oKSB7CkBAIC05
NzQsMTQgKzEwNDYsMTMgQEAgRGF5c1RhYmxlLnByb3RvdHlwZS5fbW92ZUluRGF5cyA9IGZ1bmN0
aW9uKCkgewogfTsKIAogLyoqCi0gKiBAcGFyYW0geyFudW1iZXJ9IHllYXIKLSAqIEBwYXJhbSB7
IW51bWJlcn0gbW9udGgKKyAqIEBwYXJhbSB7IU1vbnRofSBtb250aAogICovCi1EYXlzVGFibGUu
cHJvdG90eXBlLm5hdmlnYXRlVG9Nb250aEFuZEtlZXBTZWxlY3Rpb25Qb3NpdGlvbiA9IGZ1bmN0
aW9uKHllYXIsIG1vbnRoKSB7Ci0gICAgaWYgKHllYXIgPT0gdGhpcy5fY3VycmVudFllYXIgJiYg
bW9udGggPT0gdGhpcy5fY3VycmVudE1vbnRoKQorRGF5c1RhYmxlLnByb3RvdHlwZS5uYXZpZ2F0
ZVRvTW9udGhBbmRLZWVwU2VsZWN0aW9uUG9zaXRpb24gPSBmdW5jdGlvbihtb250aCkgeworICAg
IGlmICh0aGlzLl9jdXJyZW50TW9udGguZXF1YWxzKG1vbnRoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIHZhciBmaXJzdE5vZGVJblNlbGVjdGVkUmFuZ2UgPSB0aGlzLl9maXJzdE5vZGVJblNlbGVj
dGVkUmFuZ2UoKTsKLSAgICB0aGlzLl9uYXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0aW9uKHllYXIs
IG1vbnRoKTsKKyAgICB0aGlzLl9uYXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0aW9uKG1vbnRoKTsK
ICAgICBpZiAoZmlyc3ROb2RlSW5TZWxlY3RlZFJhbmdlKSB7CiAgICAgICAgIHZhciB4ID0gcGFy
c2VJbnQoZmlyc3ROb2RlSW5TZWxlY3RlZFJhbmdlLmRhdGFzZXQucG9zaXRpb25YLCAxMCk7CiAg
ICAgICAgIHZhciB5ID0gcGFyc2VJbnQoZmlyc3ROb2RlSW5TZWxlY3RlZFJhbmdlLmRhdGFzZXQu
cG9zaXRpb25ZLCAxMCk7CkBAIC05OTQsNyArMTA2NSw3IEBAIERheXNUYWJsZS5wcm90b3R5cGUu
bmF2aWdhdGVUb01vbnRoQW5kS2VlcFNlbGVjdGlvblBvc2l0aW9uID0gZnVuY3Rpb24oeWVhciwg
bW9uCiAgKi8KIERheXNUYWJsZS5wcm90b3R5cGUuc2VsZWN0RGF0ZSA9IGZ1bmN0aW9uKGRhdGUp
IHsKICAgICB0aGlzLl9kZXNlbGVjdCgpOwotICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aFdpdGhB
bmltYXRpb24oZGF0ZS5nZXRVVENGdWxsWWVhcigpLCBkYXRlLmdldFVUQ01vbnRoKCkpOworICAg
IHRoaXMuX25hdmlnYXRlVG9Nb250aFdpdGhBbmltYXRpb24oTW9udGguY3JlYXRlRnJvbURhdGUo
ZGF0ZSkpOwogICAgIHZhciBkYXRlU3RyaW5nID0gc2VyaWFsaXplRGF0ZShkYXRlLmdldFVUQ0Z1
bGxZZWFyKCksIGRhdGUuZ2V0VVRDTW9udGgoKSwgZGF0ZS5nZXRVVENEYXRlKCkpOwogICAgIGZv
ciAodmFyIHcgPSAwOyB3IDwgRGF5c1RhYmxlLl9XZWVrczsgdysrKSB7CiAgICAgICAgIGZvciAo
dmFyIGQgPSAwOyBkIDwgNzsgZCsrKSB7CkBAIC0xMDQyLDE3ICsxMTEzLDEwIEBAIERheXNUYWJs
ZS5wcm90b3R5cGUuX2Rlc2VsZWN0ID0gZnVuY3Rpb24oKSB7CiAgKiBAcmV0dXJuIHshYm9vbGVh
bn0KICAqLwogRGF5c1RhYmxlLnByb3RvdHlwZS5fbWF5YmVTZXRQcmV2aW91c01vbnRoID0gZnVu
Y3Rpb24oKSB7Ci0gICAgdmFyIHllYXIgPSB0aGlzLnBpY2tlci55ZWFyTW9udGhDb250cm9sbGVy
LnllYXIoKTsKLSAgICB2YXIgbW9udGggPSB0aGlzLnBpY2tlci55ZWFyTW9udGhDb250cm9sbGVy
Lm1vbnRoKCk7Ci0gICAgdmFyIHRoaXNNb250aFN0YXJ0VGltZSA9IGNyZWF0ZVVUQ0RhdGUoeWVh
ciwgbW9udGgsIDEpLmdldFRpbWUoKTsKLSAgICBpZiAodGhpcy5waWNrZXIubWluaW11bURhdGUu
Z2V0VGltZSgpID49IHRoaXNNb250aFN0YXJ0VGltZSkKKyAgICB2YXIgY3VycmVudE1vbnRoID0g
dGhpcy5waWNrZXIueWVhck1vbnRoQ29udHJvbGxlci5tb250aCgpOworICAgIGlmICh0aGlzLnBp
Y2tlci5taW5pbXVtRGF0ZSA+PSBjdXJyZW50TW9udGguc3RhcnREYXRlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAobW9udGggPT0gMCkgewotICAgICAgICB5ZWFyLS07Ci0gICAg
ICAgIG1vbnRoID0gMTE7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1vbnRoLS07Ci0gICAgdGhpcy5f
bmF2aWdhdGVUb01vbnRoV2l0aEFuaW1hdGlvbih5ZWFyLCBtb250aCk7CisgICAgdGhpcy5fbmF2
aWdhdGVUb01vbnRoV2l0aEFuaW1hdGlvbihjdXJyZW50TW9udGgucHJldmlvdXMoKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9OwogCkBAIC0xMDYwLDE3ICsxMTI0LDEwIEBAIERheXNUYWJsZS5wcm90
b3R5cGUuX21heWJlU2V0UHJldmlvdXNNb250aCA9IGZ1bmN0aW9uKCkgewogICogQHJldHVybiB7
IWJvb2xlYW59CiAgKi8KIERheXNUYWJsZS5wcm90b3R5cGUuX21heWJlU2V0TmV4dE1vbnRoID0g
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHllYXIgPSB0aGlzLnBpY2tlci55ZWFyTW9udGhDb250cm9s
bGVyLnllYXIoKTsKLSAgICB2YXIgbW9udGggPSB0aGlzLnBpY2tlci55ZWFyTW9udGhDb250cm9s
bGVyLm1vbnRoKCk7Ci0gICAgaWYgKG1vbnRoID09IDExKSB7Ci0gICAgICAgIHllYXIrKzsKLSAg
ICAgICAgbW9udGggPSAwOwotICAgIH0gZWxzZQotICAgICAgICBtb250aCsrOwotICAgIHZhciBu
ZXh0TW9udGhTdGFydFRpbWUgPSBjcmVhdGVVVENEYXRlKHllYXIsIG1vbnRoLCAxKS5nZXRUaW1l
KCk7Ci0gICAgaWYgKHRoaXMucGlja2VyLm1heGltdW1EYXRlLmdldFRpbWUoKSA8IG5leHRNb250
aFN0YXJ0VGltZSkKKyAgICB2YXIgY3VycmVudE1vbnRoID0gdGhpcy5waWNrZXIueWVhck1vbnRo
Q29udHJvbGxlci5tb250aCgpOworICAgIGlmICh0aGlzLnBpY2tlci5tYXhpbXVtRGF0ZSA8IGN1
cnJlbnRNb250aC5lbmREYXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB0aGlzLl9u
YXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0aW9uKHllYXIsIG1vbnRoKTsKKyAgICB0aGlzLl9uYXZp
Z2F0ZVRvTW9udGhXaXRoQW5pbWF0aW9uKGN1cnJlbnRNb250aC5uZXh0KCkpOwogICAgIHJldHVy
biB0cnVlOwogfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFkNWQ5YWY5YTRlM2RkZThlMGEyMWZiNjA2MzE2M2NlNjRj
YjM4NmMuLmE0MGMxNGU3NmMwNDljM2Q4N2VlYWNmMGRhYzNmZWJkNTRlZTQ4YjMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxMi0xMS0wMyAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0
Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgTW9udGggY2xhc3MgdG8gY2FsZW5kYXIgcGlja2Vy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEwMjQK
KworICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1rZXkt
b3BlcmF0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLWtleS1vcGVyYXRpb25zLmh0
bWw6IEFkanVzdCB0aGUgZXhwZWN0YXRpb24gYmVjYXVzZSB3ZSBjaGFuZ2VkIHRoZSBtb250aCBz
dHJpbmcgZm9ybWF0LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2Fs
ZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3VzZS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tl
ci9jYWxlbmRhci1waWNrZXItbW91c2Utb3BlcmF0aW9ucy5odG1sOiBEaXR0by4KKwogMjAxMi0x
MS0wMiAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXgg
dGVzdCBjYWxlbmRhci1waWNrZXIta2V5LW9wZXJhdGlvbnMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2Fs
ZW5kYXItcGlja2VyLWtleS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tl
ci1rZXktb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKaW5kZXggNmU5MGRjODk3ZDJjMDYwZDVjOGFj
NzYwY2ZkZGI3Zjg3MWJiZGQyYS4uNjljMjY4MjUwZDAwNGRhMWJmYzIwMTVjYzA4ZWM1YzU3YjRh
ZWM0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jt
cy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLWtleS1vcGVyYXRpb25zLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVu
ZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXIta2V5LW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CkBA
IC04LDQwICs4LDQwIEBAIFBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1w
b3B1cCIpIGlzIG51bGwKIENoZWNrIHRoYXQgcGFnZSBwb3B1cCBleGlzdHMuCiBQQVNTIHBvcHVw
V2luZG93LnBhZ2VQb3B1cENvbnRyb2xsZXIudG9TdHJpbmcoKSBpcyAiW29iamVjdCBQYWdlUG9w
dXBDb250cm9sbGVyXSIKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIwMDAtMDEtMDIiCi1QQVNT
IGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAw
LTAxIgogQ2hlY2sgdGhhdCBhcnJvdyBrZXlzIHdvcmsgcHJvcGVybHkgZXZlbiB3aGVuIGdvaW5n
IGJldHdlZW4gd2Vla3MgYW5kIG1vbnRocy4KIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjE5OTkt
MTItMjYiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250
aCgpIGlzICIyMDAwLTAxIgogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMjAwMC0wMS0wMiIKLVBB
U1MgY3VycmVudE1vbnRoKCkgaXMgIjE5OTktMTEiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIx
OTk5LTEyIgogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMTk5OS0xMi0yNiIKLVBBU1MgY3VycmVu
dE1vbnRoKCkgaXMgIjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBQ
QVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIyMDAwLTAxLTAyIgotUEFTUyBjdXJyZW50TW9udGgoKSBp
cyAiMjAwMC0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wMSIKIFBBU1Mgc2VsZWN0
ZWREYXRlKCkgaXMgIjE5OTktMTItMjYiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAi
CitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgogUEFTUyBzZWxlY3RlZERhdGUoKSBp
cyAiMjAwMC0wMS0wOCIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjE5OTktMTEiCitQQVNTIGN1
cnJlbnRNb250aCgpIGlzICIxOTk5LTEyIgogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMTk5OS0x
Mi0yNiIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRo
KCkgaXMgIjIwMDAtMDEiCiBwcmVzcyBtCi1QQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIyMDAwLTAx
LTMwIgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0xIgorRkFJTCBzZWxlY3RlZERhdGUo
KSBzaG91bGQgYmUgMjAwMC0wMS0yNi4gV2FzIDIwMDAtMDEtMzAuCitQQVNTIGN1cnJlbnRNb250
aCgpIGlzICIyMDAwLTAyIgogcHJlc3Mgc2hpZnQgKyBtCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlz
ICIxOTk5LTEyLTI2IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFTUyBjdXJy
ZW50TW9udGgoKSBpcyAiMjAwMC0wMSIKIHByZXNzIHkKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMg
IjIwMDAtMTItMzEiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAxLTAiCitQQVNTIGN1cnJl
bnRNb250aCgpIGlzICIyMDAxLTAxIgogcHJlc3Mgc2hpZnQgKyB5CiBQQVNTIHNlbGVjdGVkRGF0
ZSgpIGlzICIxOTk5LTEyLTI2IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFT
UyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wMSIKIHByZXNzIGQKIFBBU1Mgc2VsZWN0ZWREYXRl
KCkgaXMgIjIwMDktMTItMjciCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDEwLTAiCitQQVNT
IGN1cnJlbnRNb250aCgpIGlzICIyMDEwLTAxIgogcHJlc3Mgc2hpZnQgKyBkCiBQQVNTIHNlbGVj
dGVkRGF0ZSgpIGlzICIxOTk5LTEyLTI2IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0w
IgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wMSIKIFBBU1MgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIpIGlzIG51bGwKIFBBU1MgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImRhdGUiKS52YWx1ZSBpcyAiMTk5OS0xMi0yNiIKIFBBU1MgdGVzdFRvZGF5KCkg
fHwgdGVzdFRvZGF5KCkgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLWtleS1v
cGVyYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1z
L2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXIta2V5LW9wZXJhdGlvbnMuaHRtbAppbmRl
eCAxODM4MGJjZGVlNzdiMWQzYTE2NmQ0YTk3ZDFjOGEzZjE0MTFkYTEzLi40YzgwZGQyNTQwYzc1
NDEzMjZhZDY3ZjVjZTU1YThmY2VlMzI5M2E1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXIt
a2V5LW9wZXJhdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXIta2V5LW9wZXJhdGlvbnMu
aHRtbApAQCAtMjIsNjcgKzIyLDY3IEBAIGZ1bmN0aW9uIHRlc3QxKCkgewogICAgIHNob3VsZEJl
KCdwb3B1cFdpbmRvdy5wYWdlUG9wdXBDb250cm9sbGVyLnRvU3RyaW5nKCknLCAnIltvYmplY3Qg
UGFnZVBvcHVwQ29udHJvbGxlcl0iJyk7CiAKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCkn
LCAnIjIwMDAtMDEtMDIiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAw
LTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAxIicpOwogCiAg
ICAgZGVidWcoJ0NoZWNrIHRoYXQgYXJyb3cga2V5cyB3b3JrIHByb3Blcmx5IGV2ZW4gd2hlbiBn
b2luZyBiZXR3ZWVuIHdlZWtzIGFuZCBtb250aHMuJyk7CiAKICAgICBldmVudFNlbmRlci5rZXlE
b3duKCd1cEFycm93Jyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIxOTk5LTEy
LTI2IicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wIicpOworICAg
IHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSInKTsKICAgICAvLyBNb3ZlIGZy
b20gZmlyc3Qgcm93IG9mIEphbnVhcnkgMjAwMCB0byBsYXN0IHJvdyBvZiBEZWNlbWJlciAxOTk5
LgogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ3VwQXJyb3cnKTsKICAgICBzaG91bGRCZSgnc2Vs
ZWN0ZWREYXRlKCknLCAnIjIwMDAtMDEtMDIiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250
aCgpJywgJyIxOTk5LTExIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMTk5
OS0xMiInKTsKICAgICAKICAgICBldmVudFNlbmRlci5rZXlEb3duKCdkb3duQXJyb3cnKTsKICAg
ICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjE5OTktMTItMjYiJyk7Ci0gICAgc2hvdWxk
QmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRN
b250aCgpJywgJyIyMDAwLTAxIicpOwogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ2Rvd25BcnJv
dycpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMjAwMC0wMS0wMiInKTsKLSAg
ICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMCInKTsKKyAgICBzaG91bGRCZSgn
Y3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAKICAgICBldmVudFNlbmRlci5rZXlEb3du
KCd1cEFycm93Jyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIxOTk5LTEyLTI2
IicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wIicpOworICAgIHNo
b3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSInKTsKIAogICAgIC8vIE1vdmUgZnJv
bSB0b3AgbGVmdCBvZiBKYW51YXJ5IDIwMDAgdG8gYm90dG9tIHJpZ2h0IG9mIERlY2VtYmVyIDE5
OTkuCiAgICAgZXZlbnRTZW5kZXIua2V5RG93bignbGVmdEFycm93Jyk7CiAgICAgc2hvdWxkQmUo
J3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAwLTAxLTA4IicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50
TW9udGgoKScsICciMTk5OS0xMSInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAn
IjE5OTktMTIiJyk7CiAKICAgICBldmVudFNlbmRlci5rZXlEb3duKCdyaWdodEFycm93Jyk7CiAg
ICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIxOTk5LTEyLTI2IicpOwotICAgIHNob3Vs
ZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50
TW9udGgoKScsICciMjAwMC0wMSInKTsKIAogICAgIGRlYnVnKCJwcmVzcyBtIik7CiAgICAgZXZl
bnRTZW5kZXIua2V5RG93bignbScpOwotICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICci
MjAwMC0wMS0zMCInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMSIn
KTsKKyAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjIwMDAtMDEtMjYiJyk7CisgICAg
c2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAyIicpOwogCiAgICAgZGVidWcoInBy
ZXNzIHNoaWZ0ICsgbSIpOwogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ00nKTsKICAgICBzaG91
bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjE5OTktMTItMjYiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1
cnJlbnRNb250aCgpJywgJyIyMDAwLTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgp
JywgJyIyMDAwLTAxIicpOwogCiAgICAgZGVidWcoInByZXNzIHkiKTsKICAgICBldmVudFNlbmRl
ci5rZXlEb3duKCd5Jyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAwLTEy
LTMxIicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMS0wIicpOworICAg
IHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMS0wMSInKTsKIAogICAgIGRlYnVnKCJw
cmVzcyBzaGlmdCArIHkiKTsKICAgICBldmVudFNlbmRlci5rZXlEb3duKCdZJyk7CiAgICAgc2hv
dWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIxOTk5LTEyLTI2IicpOwotICAgIHNob3VsZEJlKCdj
dXJyZW50TW9udGgoKScsICciMjAwMC0wIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgo
KScsICciMjAwMC0wMSInKTsKIAogICAgIGRlYnVnKCJwcmVzcyBkIik7CiAgICAgZXZlbnRTZW5k
ZXIua2V5RG93bignZCcpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMjAwOS0x
Mi0yNyInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMTAtMCInKTsKKyAg
ICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMTAtMDEiJyk7CiAKICAgICBkZWJ1Zygi
cHJlc3Mgc2hpZnQgKyBkIik7CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bignRCcpOwogICAgIHNo
b3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMTk5OS0xMi0yNiInKTsKLSAgICBzaG91bGRCZSgn
Y3VycmVudE1vbnRoKCknLCAnIjIwMDAtMCInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRo
KCknLCAnIjIwMDAtMDEiJyk7CiAKICAgICBldmVudFNlbmRlci5rZXlEb3duKCdcbicpOwogICAg
IHNob3VsZEJlTnVsbCgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIp
Jyk7CkBAIC0xMjEsNyArMTIxLDcgQEAgZnVuY3Rpb24gdGVzdFRvZGF5KCkgewogICAgIGV2ZW50
U2VuZGVyLmtleURvd24oJ3QnKTsKICAgICB2YXIgbm93ID0gbmV3IERhdGUoKTsKICAgICB2YXIg
ZXhwZWN0ZWREYXRlID0gc2VyaWFsaXplRGF0ZShub3cuZ2V0VVRDRnVsbFllYXIoKSwgbm93Lmdl
dFVUQ01vbnRoKCksIG5vdy5nZXRVVENEYXRlKCkpOwotICAgIHZhciBleHBlY3RlZE1vbnRoID0g
bm93LmdldFVUQ0Z1bGxZZWFyKCkgKyAiLSIgKyBub3cuZ2V0TW9udGgoKTsKKyAgICB2YXIgZXhw
ZWN0ZWRNb250aCA9IHBvcHVwV2luZG93Lk1vbnRoLmNyZWF0ZUZyb21EYXRlKG5vdykudG9TdHJp
bmcoKTsKICAgICByZXR1cm4gc2VsZWN0ZWREYXRlKCkgPT09IGV4cGVjdGVkRGF0ZSAmJiBjdXJy
ZW50TW9udGgoKSA9PT0gZXhwZWN0ZWRNb250aDsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXIt
cGlja2VyLW1vdXNlLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLW1v
dXNlLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IGU5NjcwNjMyMTU3OGNhOGU2M2M5NTFh
NzhiMzk3ODJmNDVlYTA5YWIuLjVhMjdkNDE3M2RlZjA1YWZlY2ZlZWFiOGMyYjg4YWU4MmExMDE2
MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMv
Y2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3VzZS1vcGVyYXRpb25zLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVu
ZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItbW91c2Utb3BlcmF0aW9ucy1leHBlY3RlZC50eHQK
QEAgLTYsMTUgKzYsMTUgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIENoZWNrIHRoYXQgcGFn
ZSBwb3B1cCBkb2Vzbid0IGV4aXN0IGF0IGZpcnN0LgogUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibW9jay1wYWdlLXBvcHVwIikgaXMgbnVsbAogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAi
MjAwMC0wMS0wMiIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMCIKK1BBU1MgY3VycmVu
dE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBDaGVjayB0aGF0IGhvdmVyaW5nIG92ZXIgYW4gZW50cnkg
aGlnaGxpZ2h0cyBpdC4KIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjE5OTktMTItMzEiCi1QQVNT
IGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAw
LTAxIgogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMjAwMC0wMS0wNCIKLVBBU1MgY3VycmVudE1v
bnRoKCkgaXMgIjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBDaGVj
ayB0aGF0IG5hdmlnYXRpbmcgYmV0d2VlbiBtb250aHMgbWFpbnRhaW5zIHNlbGVjdGlvbiBwb3Np
dGlvbi4KIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIwMDAtMDItMDgiCi1QQVNTIGN1cnJlbnRN
b250aCgpIGlzICIyMDAwLTEiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAyIgogQ2hl
Y2sgdGhhdCBtb3ZpbmcgdGhlIG1vdXNlIG91dHNpZGUgdGhlIHBvcHVwIGRlLWhpZ2hsaWdodHMg
ZW50cmllcy4KIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgdW5kZWZpbmVkLgogQ2hlY2sgdGhhdCBt
b3VzZSBjbGljayBjbG9zZXMgdGhlIHBvcHVwIGFuZCBzZXRzIHRoZSB2YWx1ZS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlj
a2VyL2NhbGVuZGFyLXBpY2tlci1tb3VzZS1vcGVyYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNr
ZXItbW91c2Utb3BlcmF0aW9ucy5odG1sCmluZGV4IDUyZDAzZmU1OWY0MzUzY2YyODViZWEwODJk
ZjQ1YTgzNTI0ZDdkMmQuLmY4MDFhNDdhYWQzNTI3YmZkNTM0YzY2MzczZmM1ZWQ0ZmE3NDJlODAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2Fs
ZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3VzZS1vcGVyYXRpb25zLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIv
Y2FsZW5kYXItcGlja2VyLW1vdXNlLW9wZXJhdGlvbnMuaHRtbApAQCAtMjAsMjEgKzIwLDIxIEBA
IG9wZW5QaWNrZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGUnKSwgdGVzdCk7CiAKIGZ1
bmN0aW9uIHRlc3QoKSB7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAwLTAx
LTAyIicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wIicpOworICAg
IHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSInKTsKIAogICAgIGRlYnVnKCdD
aGVjayB0aGF0IGhvdmVyaW5nIG92ZXIgYW4gZW50cnkgaGlnaGxpZ2h0cyBpdC4nKTsKICAgICBo
b3Zlck92ZXJFbGVtZW50KHBvcHVwV2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoImRheSIpWzVdKTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjE5OTktMTIt
MzEiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAiJyk7CisgICAg
c2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAxIicpOwogCiAgICAgaG92ZXJPdmVy
RWxlbWVudChwb3B1cFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJkYXki
KVs5XSk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAwLTAxLTA0IicpOwot
ICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wIicpOworICAgIHNob3VsZEJl
KCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSInKTsKIAogICAgIGRlYnVnKCdDaGVjayB0aGF0
IG5hdmlnYXRpbmcgYmV0d2VlbiBtb250aHMgbWFpbnRhaW5zIHNlbGVjdGlvbiBwb3NpdGlvbi4n
KTsKICAgICBldmVudFNlbmRlci5rZXlEb3duKCdtJyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVk
RGF0ZSgpJywgJyIyMDAwLTAyLTA4IicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScs
ICciMjAwMC0xIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMiIn
KTsKIAogICAgIGRlYnVnKCdDaGVjayB0aGF0IG1vdmluZyB0aGUgbW91c2Ugb3V0c2lkZSB0aGUg
cG9wdXAgZGUtaGlnaGxpZ2h0cyBlbnRyaWVzLicpOwogICAgIGhvdmVyT3ZlckVsZW1lbnQoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rlc2NyaXB0aW9uJykpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172271</attachid>
            <date>2012-11-04 22:52:22 -0800</date>
            <delta_ts>2012-11-04 23:13:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101024-20121105155037.patch</filename>
            <type>text/plain</type>
            <size>34043</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQxMTFjNzdkNzkwYzVi
NDYyYmYzNmRhMDdjN2M2MDUxOGFkZDU4OS4uYmFkNTc5YzM5M2Y5MTE5MzZiYmRkZTNkNTQ2YTBi
NGNjYWE1NjgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTExLTAzICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBNb250
aCBjbGFzcyB0byBjYWxlbmRhciBwaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMTAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFt
dXJhLgorCisgICAgICAgIE1vbnRoIGNsYXNzIG5lZWRzIHRvIGJlIGludHJvZHVjZWQgdG8gaW1w
bGVtZW50IGEgbW9udGggcGlja2VyLiBUaGlzCisgICAgICAgIHBhdGNoIGp1c3QgaW50cm9kdWNl
cyB0aGUgTW9udGggY2xhc3MgaW50byB0aGUgY2FsZW5kYXIgcGlja2VyIHdpdGhvdXQKKyAgICAg
ICAgY2hhbmdpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGNhbGVuZGFyLXBpY2tlci0qLmh0bWwgdGVzdHMuCisKKyAg
ICAgICAgKiBSZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qczoKKyAgICAgICAg
KE1vbnRoLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyk6IFJldHVybnMgYSBsb2NhbGl6ZWQgbW9u
dGggc3RyaW5nLgorICAgICAgICAoTW9udGgpOiBUYWtlcyBhIE1vbnRoIG9iamVjdCwgbnVtYmVy
IHJlcHJlc2VudGluZyB0aGUgbW9udGgsIG9yIHllYXIgYW5kIG1vbnRoIG51bWJlcnMuCisgICAg
ICAgIChNb250aC5wYXJzZSk6IFJldHVybnMgYSBuZXcgTW9udGggZnJvbSBhbiBJU08gbW9udGgg
c3RyaW5nLgorICAgICAgICAoTW9udGguY3JlYXRlRnJvbURhdGUpOiBSZXR1cm5zIGEgbmV3IE1v
bnRoIGNvbnRhaW5pbmcgdGhlIGdpdmVuIGRhdGV0aW1lLgorICAgICAgICAoTW9udGgucHJvdG90
eXBlLmVxdWFscyk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gbW9udGggaXMgdGhlIHNhbWUu
CisgICAgICAgIChNb250aC5wcm90b3R5cGUucHJldmlvdXMpOiBSZXR1cm5zIHRoZSBwcmV2aW91
cyBtb250aC4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS5uZXh0KTogUmV0dXJucyB0aGUgbmV4
dCBtb250aC4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS5zdGFydERhdGUpOiBSZXR1cm5zIGEg
ZGF0ZXRpbWUgdGhhdCBpcyB0aGUgc3RhcnQgb2YgdGhpcyBtb250aC4gVGhlIHZhbHVlIGlzIGlu
Y2x1c2l2ZS4KKyAgICAgICAgKE1vbnRoLnByb3RvdHlwZS5lbmREYXRlKTogUmV0dXJucyBhIGRh
dGV0aW1lIHRoYXQgaXMgdGhlIGVuZCBvZiB0aGlzIG1vbnRoLiBUaGUgdmFsdWUgaXMgZXhjbHVz
aXZlLgorICAgICAgICAoTW9udGgucHJvdG90eXBlLnZhbHVlT2YpOiBSZXR1cm5zIGEgbnVtYmVy
IHJlcHJlc2VudGluZyB0aGUgbW9udGguCisgICAgICAgIChNb250aC5wcm90b3R5cGUudG9TdHJp
bmcpOiBSZXR1cm5zIGFuIElTTyBtb250aCBzdHJpbmcuCisgICAgICAgIChZZWFyTW9udGhDb250
cm9sbGVyKTogVXNlIE1vbnRoIG9iamVjdC4KKyAgICAgICAgKFllYXJNb250aENvbnRyb2xsZXIu
cHJvdG90eXBlLmF0dGFjaFRvKTogWWVhciAyNzU3NjAgZW5kcyBpbiBTZXB0ZW1iZXIgc28gdXNl
IHRoZSB5ZWFyIGJlZm9yZSB0byBtZWFzdXJlIHRoZSBsYWJlbCB3aWR0aC4KKyAgICAgICAgKFll
YXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLnNldE1vbnRoKTogVGFrZSBhIG1vbnRoIG9iamVj
dC4KKyAgICAgICAgKFllYXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLl9yZWRyYXcpOiBVc2Ug
SVNPIG1vbnRoIHN0cmluZyBmb3IgZWxlbWVudC5kYXRhc2V0LnZhbHVlLgorICAgICAgICAoWWVh
ck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUuX2hhbmRsZVllYXJNb250aENoYW5nZSk6CisgICAg
ICAgIChZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5tb3ZlUmVsYXRpdmVseSk6CisgICAg
ICAgIChEYXlzVGFibGUpOiBVc2UgTW9udGggb2JqZWN0LgorICAgICAgICAoRGF5c1RhYmxlLnBy
b3RvdHlwZS5fcmVuZGVyTW9udGgpOiBUYWtlIGEgbW9udGggb2JqZWN0LiBUZXN0aW5nIGZvciBp
c05hTiBpcyBtb3ZlZCB1cCB0byBmaXggYSBidWcgd2hlbiBzaG93aW5nIFNlcHRlbWJlciwgMjc1
NzYwLgorICAgICAgICAoRGF5c1RhYmxlLnByb3RvdHlwZS5fbmF2aWdhdGVUb01vbnRoKTogVGFr
ZSBhIG1vbnRoIG9iamVjdC4KKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX25hdmlnYXRl
VG9Nb250aFdpdGhBbmltYXRpb24pOiBUYWtlIGEgbW9udGggb2JqZWN0LgorICAgICAgICAoRGF5
c1RhYmxlLnByb3RvdHlwZS5uYXZpZ2F0ZVRvTW9udGhBbmRLZWVwU2VsZWN0aW9uUG9zaXRpb24p
OiBUYWtlIGEgbW9udGggb2JqZWN0LgorICAgICAgICAoRGF5c1RhYmxlLnByb3RvdHlwZS5zZWxl
Y3REYXRlKToKKyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX21heWJlU2V0UHJldmlvdXNN
b250aCk6IFVzZSBNb250aCBvYmplY3QgdG8gY2FsY3VsYXRlIHRoZSBwcmV2aW91cyBtb250aC4K
KyAgICAgICAgKERheXNUYWJsZS5wcm90b3R5cGUuX21heWJlU2V0TmV4dE1vbnRoKTogVXNlIE1v
bnRoIG9iamVjdCB0byBjYWxjdWxhdGUgdGhlIG5leHQgbW9udGguCisKIDIwMTItMTEtMDQgIE1P
UklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgU2hhZG93IERPTSBz
aG91bGQgYmUgYWJsZSB0byBiZSBkaXNhYmxlZCBwZXIgY29udGV4dC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzIGIvU291
cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKaW5kZXgg
NjExNGNjNTdiYjhmY2Y1MGUzODg1MWY1ZmMzMjFhZjNjYTg1MmI4Mi4uNjU2MTQ2ZDAwNzBlZTdm
MDk5YjdlNGU3ZTYyNjk4NGQ4MDA1ZGNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUmVz
b3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
UmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKQEAgLTEzOSwxMyArMTM5LDEz
IEBAIGZ1bmN0aW9uIGZvcm1hdEphcGFuZXNlSW1wZXJpYWxFcmEoeWVhciwgbW9udGgpIHsKIH0K
IAogLyoqCi0gKiBAcGFyYW0geyFudW1iZXJ9IHllYXIKLSAqIEBwYXJhbSB7IW51bWJlcn0gbW9u
dGgKICAqIEByZXR1cm4geyFzdHJpbmd9CiAgKi8KLWZ1bmN0aW9uIGZvcm1hdFllYXJNb250aCh5
ZWFyLCBtb250aCkgewotICAgIHZhciB5ZWFyU3RyaW5nID0gbG9jYWxpemVOdW1iZXIoeWVhcik7
Ci0gICAgdmFyIG1vbnRoU3RyaW5nID0gZ2xvYmFsLnBhcmFtcy5tb250aExhYmVsc1ttb250aF07
CitNb250aC5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAo
aXNOYU4odGhpcy55ZWFyKSB8fCBpc05hTih0aGlzLnllYXIpKQorICAgICAgICByZXR1cm4gIklu
dmFsaWQgTW9udGgiOworICAgIHZhciB5ZWFyU3RyaW5nID0gbG9jYWxpemVOdW1iZXIodGhpcy55
ZWFyKTsKKyAgICB2YXIgbW9udGhTdHJpbmcgPSBnbG9iYWwucGFyYW1zLm1vbnRoTGFiZWxzW3Ro
aXMubW9udGhdOwogICAgIHN3aXRjaCAoZ2V0TGFuZ3VhZ2UoKSkgewogICAgIGNhc2UgImV1IjoK
ICAgICBjYXNlICJmaWwiOgpAQCAtMTU4LDcgKzE1OCw3IEBAIGZ1bmN0aW9uIGZvcm1hdFllYXJN
b250aCh5ZWFyLCBtb250aCkgewogICAgIGNhc2UgImh1IjoKICAgICAgICAgcmV0dXJuIHllYXJT
dHJpbmcgKyAiLiAiICsgbW9udGhTdHJpbmc7CiAgICAgY2FzZSAiamEiOgotICAgICAgICByZXR1
cm4geWVhclN0cmluZyArICLlubQiICsgZm9ybWF0SmFwYW5lc2VJbXBlcmlhbEVyYSh5ZWFyLCBt
b250aCkgKyAiICIgKyBtb250aFN0cmluZzsKKyAgICAgICAgcmV0dXJuIHllYXJTdHJpbmcgKyAi
5bm0IiArIGZvcm1hdEphcGFuZXNlSW1wZXJpYWxFcmEodGhpcy55ZWFyLCB0aGlzLm1vbnRoKSAr
ICIgIiArIG1vbnRoU3RyaW5nOwogICAgIGNhc2UgInpoIjoKICAgICAgICAgcmV0dXJuIHllYXJT
dHJpbmcgKyAi5bm0IiArIG1vbnRoU3RyaW5nOwogICAgIGNhc2UgImtvIjoKQEAgLTE3Miw3ICsx
NzIsNyBAQCBmdW5jdGlvbiBmb3JtYXRZZWFyTW9udGgoeWVhciwgbW9udGgpIHsKICAgICBkZWZh
dWx0OgogICAgICAgICByZXR1cm4gbW9udGhTdHJpbmcgKyAiICIgKyB5ZWFyU3RyaW5nOwogICAg
IH0KLX0KK307CiAKIGZ1bmN0aW9uIGNyZWF0ZVVUQ0RhdGUoeWVhciwgbW9udGgsIGRhdGUpIHsK
ICAgICB2YXIgbmV3RGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKHllYXIsIG1vbnRoLCBkYXRlKSk7
CkBAIC0yMDksNiArMjA5LDExMCBAQCBmdW5jdGlvbiBzZXJpYWxpemVEYXRlKHllYXIsIG1vbnRo
LCBkYXkpIHsKICAgICByZXR1cm4geWVhclN0cmluZyArICItIiArICgiMCIgKyAobW9udGggKyAx
KSkuc3Vic3RyKC0yLCAyKSArICItIiArICgiMCIgKyBkYXkpLnN1YnN0cigtMiwgMik7CiB9CiAK
Ky8qKgorICogQHBhcmFtIHshbnVtYmVyfE1vbnRofSB2YWx1ZU9yTW9udGhPclllYXIKKyAqIEBw
YXJhbSB7IW51bWJlcj19IG1vbnRoCisgKi8KK2Z1bmN0aW9uIE1vbnRoKHZhbHVlT3JNb250aE9y
WWVhciwgbW9udGgpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAyKSB7CisgICAgICAg
IHRoaXMueWVhciA9IHZhbHVlT3JNb250aE9yWWVhcjsKKyAgICAgICAgdGhpcy5tb250aCA9IG1v
bnRoOworICAgIH0gZWxzZSBpZiAodmFsdWVPck1vbnRoT3JZZWFyIGluc3RhbmNlb2YgTW9udGgp
IHsKKyAgICAgICAgdGhpcy55ZWFyID0gdmFsdWVPck1vbnRoT3JZZWFyLnllYXI7CisgICAgICAg
IHRoaXMubW9udGggPSB2YWx1ZU9yTW9udGhPclllYXIubW9udGg7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdGhpcy55ZWFyID0gTWF0aC5mbG9vcih2YWx1ZU9yTW9udGhPclllYXIgLyAxMikgKyAx
OTcwOworICAgICAgICB0aGlzLm1vbnRoID0gdmFsdWVPck1vbnRoT3JZZWFyICUgMTI7CisgICAg
fQorICAgIHRoaXMueWVhciA9IHRoaXMueWVhciArIE1hdGguZmxvb3IodGhpcy5tb250aCAvIDEy
KTsKKyAgICB0aGlzLm1vbnRoID0gdGhpcy5tb250aCA8IDAgPyB0aGlzLm1vbnRoICUgMTIgKyAx
MiA6IHRoaXMubW9udGggJSAxMjsKKyAgICBpZiAodGhpcy55ZWFyIDwgMCB8fCBNb250aC5NYXhp
bXVtIDwgdGhpcykgeworICAgICAgICB0aGlzLnllYXIgPSBOYU47CisgICAgICAgIHRoaXMubW9u
dGggPSBOYU47CisgICAgfQorfTsKKworTW9udGguSVNPU3RyaW5nUmVnRXhwID0gL14oXGQrKS0o
XGQrKSQvOworCisvLyBTZWUgV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5oLgorTW9u
dGguTWF4aW11bSA9IG5ldyBNb250aCgyNzU3NjAsIDgpOworCisvKioKKyAqIEBwYXJhbSB7IXN0
cmluZ30gc3RyCisgKiBAcmV0dXJuIHs/TW9udGh9CisgKi8KK01vbnRoLnBhcnNlID0gZnVuY3Rp
b24oc3RyKSB7CisgICAgdmFyIG1hdGNoID0gTW9udGguSVNPU3RyaW5nUmVnRXhwLmV4ZWMoc3Ry
KTsKKyAgICBpZiAoIW1hdGNoKQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB2YXIgeWVhciA9
IHBhcnNlSW50KG1hdGNoWzFdLCAxMCk7CisgICAgdmFyIG1vbnRoID0gcGFyc2VJbnQobWF0Y2hb
Ml0sIDEwKSAtIDE7CisgICAgcmV0dXJuIG5ldyBNb250aCh5ZWFyLCBtb250aCk7Cit9OworCisv
KioKKyAqIEBwYXJhbSB7IURhdGV9IGRhdGUKKyAqIEByZXR1cm4geyFNb250aH0KKyAqLworTW9u
dGguY3JlYXRlRnJvbURhdGUgPSBmdW5jdGlvbihkYXRlKSB7CisgICAgcmV0dXJuIG5ldyBNb250
aChkYXRlLmdldFVUQ0Z1bGxZZWFyKCksIGRhdGUuZ2V0VVRDTW9udGgoKSk7Cit9OworCisvKioK
KyAqIEBwYXJhbSB7IU1vbnRofSBvdGhlcgorICogQHJldHVybiB7IWJvb2x9CisgKi8KK01vbnRo
LnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbihvdGhlcikgeworICAgIHJldHVybiB0aGlzLnll
YXIgPT09IG90aGVyLnllYXIgJiYgdGhpcy5tb250aCA9PT0gb3RoZXIubW9udGg7Cit9OworCisv
KioKKyAqIEByZXR1cm4geyFNb250aH0KKyAqLworTW9udGgucHJvdG90eXBlLnByZXZpb3VzID0g
ZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBNb250aCh0aGlzLnllYXIsIHRoaXMubW9udGgg
LSAxKTsKK307CisKKy8qKgorICogQHJldHVybiB7IU1vbnRofQorICovCitNb250aC5wcm90b3R5
cGUubmV4dCA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgTW9udGgodGhpcy55ZWFyLCB0
aGlzLm1vbnRoICsgMSk7Cit9OworCisvKioKKyAqIEByZXR1cm4geyFEYXRlfQorICovCitNb250
aC5wcm90b3R5cGUuc3RhcnREYXRlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIGNyZWF0ZVVU
Q0RhdGUodGhpcy55ZWFyLCB0aGlzLm1vbnRoLCAxKTsKK307CisKKy8qKgorICogQHJldHVybiB7
IURhdGV9CisgKi8KK01vbnRoLnByb3RvdHlwZS5lbmREYXRlID0gZnVuY3Rpb24oKSB7CisgICAg
aWYgKHRoaXMuZXF1YWxzKE1vbnRoLk1heGltdW0pKQorICAgICAgICByZXR1cm4gQ2FsZW5kYXJQ
aWNrZXIuTWF4aW11bVBvc3NpYmxlRGF0ZTsKKyAgICByZXR1cm4gdGhpcy5uZXh0KCkuc3RhcnRE
YXRlKCk7Cit9OworCisvKioKKyAqIEByZXR1cm4geyFudW1iZXJ9CisgKi8KK01vbnRoLnByb3Rv
dHlwZS52YWx1ZU9mID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuICh0aGlzLnllYXIgLSAxOTcw
KSAqIDEyICsgdGhpcy5tb250aDsKK307CisKKy8qKgorICogQHJldHVybiB7IXN0cmluZ30KKyAq
LworTW9udGgucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHllYXJT
dHJpbmcgPSBTdHJpbmcodGhpcy55ZWFyKTsKKyAgICBpZiAoeWVhclN0cmluZy5sZW5ndGggPCA0
KQorICAgICAgICB5ZWFyU3RyaW5nID0gKCIwMDAiICsgeWVhclN0cmluZykuc3Vic3RyKC00LCA0
KTsKKyAgICByZXR1cm4geWVhclN0cmluZyArICItIiArICgiMCIgKyAodGhpcy5tb250aCArIDEp
KS5zdWJzdHIoLTIsIDIpOworfTsKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gSW5pdGlhbGl6YXRpb24KIApA
QCAtNDMzLDEzICs1MzcsOSBAQCBDYWxlbmRhclBpY2tlci5wcm90b3R5cGUuX2xheW91dEJ1dHRv
bnMgPSBmdW5jdGlvbigpIHsKIGZ1bmN0aW9uIFllYXJNb250aENvbnRyb2xsZXIocGlja2VyKSB7
CiAgICAgdGhpcy5waWNrZXIgPSBwaWNrZXI7CiAgICAgLyoqCi0gICAgICogQHR5cGUgeyFudW1i
ZXJ9Ci0gICAgICovCi0gICAgdGhpcy5fY3VycmVudFllYXIgPSAtMTsKLSAgICAvKioKLSAgICAg
KiBAdHlwZSB7IW51bWJlcn0KKyAgICAgKiBAdHlwZSB7P01vbnRofQogICAgICAqLwotICAgIHRo
aXMuX2N1cnJlbnRNb250aCA9IC0xOworICAgIHRoaXMuX2N1cnJlbnRNb250aCA9IG51bGw7CiB9
CiAKIC8qKgpAQCAtNDc3LDE0ICs1NzcsMTcgQEAgWWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5
cGUuYXR0YWNoVG8gPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl93YWxsKTsKIAogICAgIHZhciBtYXhpbXVtWWVhciA9IHRoaXMucGlja2VyLm1heGlt
dW1EYXRlLmdldFVUQ0Z1bGxZZWFyKCk7CisgICAgLy8gQmVjYXVzZSB0aGUgbWF4aW11bSBwb3Nz
aWJsZSB5ZWFyIGlzIFNlcHRlbWJlciB3ZSBzaG91bGQgdXNlIHRoZSB5ZWFyIGJlZm9yZSBpdC4K
KyAgICBpZiAobWF4aW11bVllYXIgPT09IE1vbnRoLk1heGltdW0ueWVhcikKKyAgICAgICAgbWF4
aW11bVllYXItLTsKICAgICB2YXIgbWF4V2lkdGggPSAwOwogICAgIGZvciAodmFyIG0gPSAwOyBt
IDwgMTI7ICsrbSkgewotICAgICAgICB0aGlzLl9tb250aC50ZXh0Q29udGVudCA9IGZvcm1hdFll
YXJNb250aChtYXhpbXVtWWVhciwgbSk7CisgICAgICAgIHRoaXMuX21vbnRoLnRleHRDb250ZW50
ID0gbmV3IE1vbnRoKG1heGltdW1ZZWFyLCBtKS50b0xvY2FsZVN0cmluZygpOwogICAgICAgICBt
YXhXaWR0aCA9IE1hdGgubWF4KG1heFdpZHRoLCB0aGlzLl9tb250aC5vZmZzZXRXaWR0aCk7CiAg
ICAgfQogICAgIGlmIChnZXRMYW5ndWFnZSgpID09ICJqYSIgJiYgSW1wZXJpYWxFcmFMaW1pdCA8
IG1heGltdW1ZZWFyKSB7CiAgICAgICAgIGZvciAodmFyIG0gPSAwOyBtIDwgMTI7ICsrbSkgewot
ICAgICAgICAgICAgdGhpcy5fbW9udGgudGV4dENvbnRlbnQgPSBmb3JtYXRZZWFyTW9udGgoSW1w
ZXJpYWxFcmFMaW1pdCwgbSk7CisgICAgICAgICAgICB0aGlzLl9tb250aC50ZXh0Q29udGVudCA9
IG5ldyBNb250aChJbXBlcmlhbEVyYUxpbWl0LCBtKS50b0xvY2FsZVN0cmluZygpOwogICAgICAg
ICAgICAgbWF4V2lkdGggPSBNYXRoLm1heChtYXhXaWR0aCwgdGhpcy5fbW9udGgub2Zmc2V0V2lk
dGgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTUxLDMzICs2NTQsMjQgQEAgWWVhck1vbnRoQ29u
dHJvbGxlci5wcm90b3R5cGUuX2F0dGFjaFJpZ2h0QnV0dG9uc1RvID0gZnVuY3Rpb24ocGFyZW50
KSB7CiB9OwogCiAvKioKLSAqIEByZXR1cm4geyFudW1iZXJ9Ci0gKi8KLVllYXJNb250aENvbnRy
b2xsZXIucHJvdG90eXBlLnllYXIgPSBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gdGhpcy5fY3Vy
cmVudFllYXI7Ci19OwotCi0vKioKLSAqIEByZXR1cm4geyFudW1iZXJ9CisgKiBAcmV0dXJuIHs/
TW9udGh9CiAgKi8KIFllYXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLm1vbnRoID0gZnVuY3Rp
b24oKSB7CiAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRNb250aDsKIH07CiAKIC8qKgotICogQHBh
cmFtIHshbnVtYmVyfSB5ZWFyCi0gKiBAcGFyYW0geyFudW1iZXJ9IG1vbnRoCisgKiBAcGFyYW0g
eyFNb250aH0gbW9udGgKICAqLwotWWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUuc2V0WWVh
ck1vbnRoID0gZnVuY3Rpb24oeWVhciwgbW9udGgpIHsKLSAgICB0aGlzLl9jdXJyZW50WWVhciA9
IHllYXI7Ci0gICAgdGhpcy5fY3VycmVudE1vbnRoID0gbW9udGg7CitZZWFyTW9udGhDb250cm9s
bGVyLnByb3RvdHlwZS5zZXRNb250aCA9IGZ1bmN0aW9uKG1vbnRoKSB7CisgICAgdGhpcy5fY3Vy
cmVudE1vbnRoID0gbmV3IE1vbnRoKG1vbnRoKTsKICAgICB0aGlzLl9yZWRyYXcoKTsKIH07CiAK
IFllYXJNb250aENvbnRyb2xsZXIucHJvdG90eXBlLl9yZWRyYXcgPSBmdW5jdGlvbigpIHsKLSAg
ICB2YXIgbWluID0gdGhpcy5waWNrZXIubWluaW11bURhdGUuZ2V0VVRDRnVsbFllYXIoKSAqIDEy
ICsgdGhpcy5waWNrZXIubWluaW11bURhdGUuZ2V0VVRDTW9udGgoKTsKLSAgICB2YXIgbWF4ID0g
dGhpcy5waWNrZXIubWF4aW11bURhdGUuZ2V0VVRDRnVsbFllYXIoKSAqIDEyICsgdGhpcy5waWNr
ZXIubWF4aW11bURhdGUuZ2V0VVRDTW9udGgoKTsKLSAgICB2YXIgY3VycmVudCA9IHRoaXMuX2N1
cnJlbnRZZWFyICogMTIgKyB0aGlzLl9jdXJyZW50TW9udGg7CisgICAgdmFyIG1pbiA9IE1vbnRo
LmNyZWF0ZUZyb21EYXRlKHRoaXMucGlja2VyLm1pbmltdW1EYXRlKS52YWx1ZU9mKCk7CisgICAg
dmFyIG1heCA9IE1vbnRoLmNyZWF0ZUZyb21EYXRlKHRoaXMucGlja2VyLm1heGltdW1EYXRlKS52
YWx1ZU9mKCk7CisgICAgdmFyIGN1cnJlbnQgPSB0aGlzLl9jdXJyZW50TW9udGgudmFsdWVPZigp
OwogICAgIGlmICh0aGlzLl9sZWZ0MykKICAgICAgICAgdGhpcy5fbGVmdDMuZGlzYWJsZWQgPSBj
dXJyZW50IC0gMTMgPCBtaW47CiAgICAgdGhpcy5fbGVmdDIuZGlzYWJsZWQgPSBjdXJyZW50IC0g
MiA8IG1pbjsKQEAgLTU4NiwxNSArNjgwLDE2IEBAIFllYXJNb250aENvbnRyb2xsZXIucHJvdG90
eXBlLl9yZWRyYXcgPSBmdW5jdGlvbigpIHsKICAgICB0aGlzLl9yaWdodDIuZGlzYWJsZWQgPSBj
dXJyZW50ICsgMiA+IG1heDsKICAgICBpZiAodGhpcy5fcmlnaHQzKQogICAgICAgICB0aGlzLl9y
aWdodDMuZGlzYWJsZWQgPSBjdXJyZW50ICsgMTMgPiBtYXg7Ci0gICAgdGhpcy5fbW9udGguaW5u
ZXJUZXh0ID0gZm9ybWF0WWVhck1vbnRoKHRoaXMuX2N1cnJlbnRZZWFyLCB0aGlzLl9jdXJyZW50
TW9udGgpOworICAgIHRoaXMuX21vbnRoLmlubmVyVGV4dCA9IHRoaXMuX2N1cnJlbnRNb250aC50
b0xvY2FsZVN0cmluZygpOwogICAgIHdoaWxlICh0aGlzLl9tb250aFBvcHVwQ29udGVudHMuaGFz
Q2hpbGROb2RlcygpKQogICAgICAgICB0aGlzLl9tb250aFBvcHVwQ29udGVudHMucmVtb3ZlQ2hp
bGQodGhpcy5fbW9udGhQb3B1cENvbnRlbnRzLmZpcnN0Q2hpbGQpOwogCiAgICAgZm9yICh2YXIg
bSA9IGN1cnJlbnQgLSA2OyBtIDw9IGN1cnJlbnQgKyA2OyBtKyspIHsKICAgICAgICAgaWYgKG0g
PCBtaW4gfHwgbSA+IG1heCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB2YXIgb3B0
aW9uID0gY3JlYXRlRWxlbWVudCgiZGl2IiwgQ2xhc3NOYW1lcy5Nb250aFNlbGVjdG9yUG9wdXBF
bnRyeSwgZm9ybWF0WWVhck1vbnRoKE1hdGguZmxvb3IobSAvIDEyKSwgbSAlIDEyKSk7Ci0gICAg
ICAgIG9wdGlvbi5kYXRhc2V0LnZhbHVlID0gU3RyaW5nKE1hdGguZmxvb3IobSAvIDEyKSkgKyAi
LSIgKyBTdHJpbmcobSAlIDEyKTsKKyAgICAgICAgdmFyIG1vbnRoID0gbmV3IE1vbnRoKG0pOwor
ICAgICAgICB2YXIgb3B0aW9uID0gY3JlYXRlRWxlbWVudCgiZGl2IiwgQ2xhc3NOYW1lcy5Nb250
aFNlbGVjdG9yUG9wdXBFbnRyeSwgbW9udGgudG9Mb2NhbGVTdHJpbmcoKSk7CisgICAgICAgIG9w
dGlvbi5kYXRhc2V0LnZhbHVlID0gbW9udGgudG9TdHJpbmcoKTsKICAgICAgICAgdGhpcy5fbW9u
dGhQb3B1cENvbnRlbnRzLmFwcGVuZENoaWxkKG9wdGlvbik7CiAgICAgICAgIGlmIChtID09IGN1
cnJlbnQpCiAgICAgICAgICAgICBvcHRpb24uY2xhc3NMaXN0LmFkZChDbGFzc05hbWVzLlNlbGVj
dGVkTW9udGhZZWFyKTsKQEAgLTcxNSwxMyArODEwLDcgQEAgWWVhck1vbnRoQ29udHJvbGxlci5w
cm90b3R5cGUuX2hhbmRsZVllYXJNb250aENoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgIHZhciBz
ZWxlY3Rpb24gPSB0aGlzLl9nZXRTZWxlY3Rpb24oKTsKICAgICBpZiAoIXNlbGVjdGlvbikKICAg
ICAgICAgcmV0dXJuOwotICAgIHZhciB2YWx1ZSA9IHNlbGVjdGlvbi5kYXRhc2V0LnZhbHVlOwot
ICAgIHZhciByZXN1bHQgID0gdmFsdWUubWF0Y2goLyhcZCspLShcZCspLyk7Ci0gICAgaWYgKCFy
ZXN1bHQpCi0gICAgICAgIHJldHVybjsKLSAgICB2YXIgbmV3WWVhciA9IE51bWJlcihyZXN1bHRb
MV0pOwotICAgIHZhciBuZXdNb250aCA9IE51bWJlcihyZXN1bHRbMl0pOwotICAgIHRoaXMucGlj
a2VyLmRheXNUYWJsZS5uYXZpZ2F0ZVRvTW9udGhBbmRLZWVwU2VsZWN0aW9uUG9zaXRpb24obmV3
WWVhciwgbmV3TW9udGgpOworICAgIHRoaXMucGlja2VyLmRheXNUYWJsZS5uYXZpZ2F0ZVRvTW9u
dGhBbmRLZWVwU2VsZWN0aW9uUG9zaXRpb24oTW9udGgucGFyc2Uoc2VsZWN0aW9uLmRhdGFzZXQu
dmFsdWUpKTsKIH07CiAKIC8qCkBAIC03NzksOSArODY4LDkgQEAgWWVhck1vbnRoQ29udHJvbGxl
ci5wcm90b3R5cGUuX2hhbmRsZUJ1dHRvbkNsaWNrID0gZnVuY3Rpb24oZXZlbnQpIHsKICAqIEBw
YXJhbSB7IW51bWJlcn0gYW1vdW50CiAgKi8KIFllYXJNb250aENvbnRyb2xsZXIucHJvdG90eXBl
Lm1vdmVSZWxhdGl2ZWx5ID0gZnVuY3Rpb24oYW1vdW50KSB7Ci0gICAgdmFyIG1pbiA9IHRoaXMu
cGlja2VyLm1pbmltdW1EYXRlLmdldFVUQ0Z1bGxZZWFyKCkgKiAxMiArIHRoaXMucGlja2VyLm1p
bmltdW1EYXRlLmdldFVUQ01vbnRoKCk7Ci0gICAgdmFyIG1heCA9IHRoaXMucGlja2VyLm1heGlt
dW1EYXRlLmdldFVUQ0Z1bGxZZWFyKCkgKiAxMiArIHRoaXMucGlja2VyLm1heGltdW1EYXRlLmdl
dFVUQ01vbnRoKCk7Ci0gICAgdmFyIGN1cnJlbnQgPSB0aGlzLl9jdXJyZW50WWVhciAqIDEyICsg
dGhpcy5fY3VycmVudE1vbnRoOworICAgIHZhciBtaW4gPSBNb250aC5jcmVhdGVGcm9tRGF0ZSh0
aGlzLnBpY2tlci5taW5pbXVtRGF0ZSkudmFsdWVPZigpOworICAgIHZhciBtYXggPSBNb250aC5j
cmVhdGVGcm9tRGF0ZSh0aGlzLnBpY2tlci5tYXhpbXVtRGF0ZSkudmFsdWVPZigpOworICAgIHZh
ciBjdXJyZW50ID0gdGhpcy5fY3VycmVudE1vbnRoLnZhbHVlT2YoKTsKICAgICB2YXIgdXBkYXRl
ZCA9IGN1cnJlbnQ7CiAgICAgaWYgKGFtb3VudCA8IDApCiAgICAgICAgIHVwZGF0ZWQgPSBjdXJy
ZW50ICsgYW1vdW50ID49IG1pbiA/IGN1cnJlbnQgKyBhbW91bnQgOiBtaW47CkBAIC03ODksNyAr
ODc4LDcgQEAgWWVhck1vbnRoQ29udHJvbGxlci5wcm90b3R5cGUubW92ZVJlbGF0aXZlbHkgPSBm
dW5jdGlvbihhbW91bnQpIHsKICAgICAgICAgdXBkYXRlZCA9IGN1cnJlbnQgKyBhbW91bnQgPD0g
bWF4ID8gY3VycmVudCArIGFtb3VudCA6IG1heDsKICAgICBpZiAodXBkYXRlZCA9PSBjdXJyZW50
KQogICAgICAgICByZXR1cm47Ci0gICAgdGhpcy5waWNrZXIuZGF5c1RhYmxlLm5hdmlnYXRlVG9N
b250aEFuZEtlZXBTZWxlY3Rpb25Qb3NpdGlvbihNYXRoLmZsb29yKHVwZGF0ZWQgLyAxMiksIHVw
ZGF0ZWQgJSAxMik7CisgICAgdGhpcy5waWNrZXIuZGF5c1RhYmxlLm5hdmlnYXRlVG9Nb250aEFu
ZEtlZXBTZWxlY3Rpb25Qb3NpdGlvbihuZXcgTW9udGgodXBkYXRlZCkpOwogfTsKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtODAxLDEzICs4OTAsOSBAQCBZZWFyTW9udGhDb250cm9sbGVyLnByb3RvdHlwZS5t
b3ZlUmVsYXRpdmVseSA9IGZ1bmN0aW9uKGFtb3VudCkgewogZnVuY3Rpb24gRGF5c1RhYmxlKHBp
Y2tlcikgewogICAgIHRoaXMucGlja2VyID0gcGlja2VyOwogICAgIC8qKgotICAgICAqIEB0eXBl
IHshbnVtYmVyfQorICAgICAqIEB0eXBlIHs/TW9udGh9CiAgICAgICovCi0gICAgdGhpcy5fY3Vy
cmVudFllYXIgPSAtMTsKLSAgICAvKioKLSAgICAgKiBAdHlwZSB7IW51bWJlcn0KLSAgICAgKi8K
LSAgICB0aGlzLl9jdXJyZW50TW9udGggPSAtMTsKKyAgICB0aGlzLl9jdXJyZW50TW9udGggPSBu
dWxsOwogfQogCiAvKioKQEAgLTg4OSwxMCArOTc0LDkgQEAgQ2FsZW5kYXJQaWNrZXIucHJvdG90
eXBlLmlzVmFsaWREYXRlID0gZnVuY3Rpb24odGltZSkgewogICogQHBhcmFtIHshbnVtYmVyfSB5
ZWFyCiAgKiBAcGFyYW0geyFudW1iZXJ9IG1vbnRoCiAgKi8KLURheXNUYWJsZS5wcm90b3R5cGUu
X3JlbmRlck1vbnRoID0gZnVuY3Rpb24oeWVhciwgbW9udGgpIHsKLSAgICB0aGlzLl9jdXJyZW50
WWVhciA9IHllYXI7Ci0gICAgdGhpcy5fY3VycmVudE1vbnRoID0gbW9udGg7Ci0gICAgdmFyIGRh
eUl0ZXJhdG9yID0gY3JlYXRlVVRDRGF0ZSh5ZWFyLCBtb250aCwgMSk7CitEYXlzVGFibGUucHJv
dG90eXBlLl9yZW5kZXJNb250aCA9IGZ1bmN0aW9uKG1vbnRoKSB7CisgICAgdGhpcy5fY3VycmVu
dE1vbnRoID0gbmV3IE1vbnRoKG1vbnRoKTsKKyAgICB2YXIgZGF5SXRlcmF0b3IgPSB0aGlzLl9j
dXJyZW50TW9udGguc3RhcnREYXRlKCk7CiAgICAgdmFyIG1vbnRoU3RhcnREYXkgPSBkYXlJdGVy
YXRvci5nZXRVVENEYXkoKTsKICAgICB2YXIgd2Vla1N0YXJ0RGF5ID0gZ2xvYmFsLnBhcmFtcy53
ZWVrU3RhcnREYXkgfHwgMDsKICAgICB2YXIgc3RhcnRPZmZzZXQgPSB3ZWVrU3RhcnREYXkgLSBt
b250aFN0YXJ0RGF5OwpAQCAtOTAxLDI2ICs5ODUsMjIgQEAgRGF5c1RhYmxlLnByb3RvdHlwZS5f
cmVuZGVyTW9udGggPSBmdW5jdGlvbih5ZWFyLCBtb250aCkgewogICAgIGRheUl0ZXJhdG9yLnNl
dFVUQ0RhdGUoc3RhcnRPZmZzZXQgKyAxKTsKICAgICBmb3IgKHZhciB3ID0gMDsgdyA8IERheXNU
YWJsZS5fV2Vla3M7IHcrKykgewogICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IDc7IGQrKykg
ewotICAgICAgICAgICAgdmFyIGl0ZXJZZWFyID0gZGF5SXRlcmF0b3IuZ2V0VVRDRnVsbFllYXIo
KTsKLSAgICAgICAgICAgIHZhciBpdGVyTW9udGggPSBkYXlJdGVyYXRvci5nZXRVVENNb250aCgp
OworICAgICAgICAgICAgdmFyIGl0ZXJNb250aCA9IE1vbnRoLmNyZWF0ZUZyb21EYXRlKGRheUl0
ZXJhdG9yKTsKICAgICAgICAgICAgIHZhciB0aW1lID0gZGF5SXRlcmF0b3IuZ2V0VGltZSgpOwog
ICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9kYXlzW3ddW2RdOwogICAgICAgICAgICAg
ZWxlbWVudC5pbm5lclRleHQgPSBsb2NhbGl6ZU51bWJlcihkYXlJdGVyYXRvci5nZXRVVENEYXRl
KCkpOwogICAgICAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBDbGFzc05hbWVzLkRheTsKLSAg
ICAgICAgICAgIGVsZW1lbnQuZGF0YXNldC5zdWJtaXRWYWx1ZSA9IHNlcmlhbGl6ZURhdGUoaXRl
clllYXIsIGl0ZXJNb250aCwgZGF5SXRlcmF0b3IuZ2V0VVRDRGF0ZSgpKTsKLSAgICAgICAgICAg
IGlmICh0aGlzLnBpY2tlci5vdXRPZlJhbmdlKHRpbWUpKQorICAgICAgICAgICAgZWxlbWVudC5k
YXRhc2V0LnN1Ym1pdFZhbHVlID0gc2VyaWFsaXplRGF0ZShpdGVyTW9udGgueWVhciwgaXRlck1v
bnRoLm1vbnRoLCBkYXlJdGVyYXRvci5nZXRVVENEYXRlKCkpOworICAgICAgICAgICAgaWYgKGlz
TmFOKHRpbWUpKSB7CisgICAgICAgICAgICAgICAgZWxlbWVudC5pbm5lclRleHQgPSAiLSI7Cisg
ICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuVW5hdmFpbGFi
bGUpOworICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBpY2tlci5vdXRPZlJhbmdlKHRpbWUp
KQogICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDbGFzc05hbWVzLlVuYXZh
aWxhYmxlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMucGlja2VyLnN0ZXBNaXNtYXRjaCh0
aW1lKSkKICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5V
bmF2YWlsYWJsZSk7Ci0gICAgICAgICAgICBlbHNlIGlmICgoaXRlclllYXIgPT0geWVhciAmJiBk
YXlJdGVyYXRvci5nZXRVVENNb250aCgpIDwgbW9udGgpIHx8IChtb250aCA9PSAwICYmIGl0ZXJN
b250aCA9PSAxMSkpIHsKLSAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ2xh
c3NOYW1lcy5BdmFpbGFibGUpOwotICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFk
ZChDbGFzc05hbWVzLk5vdFRoaXNNb250aCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKChpdGVy
WWVhciA9PSB5ZWFyICYmIGRheUl0ZXJhdG9yLmdldFVUQ01vbnRoKCkgPiBtb250aCkgfHwgKG1v
bnRoID09IDExICYmIGl0ZXJNb250aCA9PSAwKSkgeworICAgICAgICAgICAgZWxzZSBpZiAoIWl0
ZXJNb250aC5lcXVhbHModGhpcy5fY3VycmVudE1vbnRoKSkgewogICAgICAgICAgICAgICAgIGVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChDbGFzc05hbWVzLkF2YWlsYWJsZSk7CiAgICAgICAgICAgICAg
ICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENsYXNzTmFtZXMuTm90VGhpc01vbnRoKTsKLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAoaXNOYU4odGltZSkpIHsKLSAgICAgICAgICAgICAgICBlbGVtZW50
LmlubmVyVGV4dCA9ICItIjsKLSAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQo
Q2xhc3NOYW1lcy5VbmF2YWlsYWJsZSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ2xhc3NOYW1lcy5BdmFpbGFibGUpOwogICAgICAg
ICAgICAgZGF5SXRlcmF0b3Iuc2V0VVRDRGF0ZShkYXlJdGVyYXRvci5nZXRVVENEYXRlKCkgKyAx
KTsKQEAgLTkzMSwzNSArMTAxMSwyNyBAQCBEYXlzVGFibGUucHJvdG90eXBlLl9yZW5kZXJNb250
aCA9IGZ1bmN0aW9uKHllYXIsIG1vbnRoKSB7CiB9OwogCiAvKioKLSAqIEBwYXJhbSB7IW51bWJl
cn0geWVhcgotICogQHBhcmFtIHshbnVtYmVyfSBtb250aAorICogQHBhcmFtIHshTW9udGh9IG1v
bnRoCiAgKi8KLURheXNUYWJsZS5wcm90b3R5cGUuX25hdmlnYXRlVG9Nb250aCA9IGZ1bmN0aW9u
KHllYXIsIG1vbnRoKSB7Ci0gICAgdGhpcy5waWNrZXIueWVhck1vbnRoQ29udHJvbGxlci5zZXRZ
ZWFyTW9udGgoeWVhciwgbW9udGgpOwotICAgIHRoaXMuX3JlbmRlck1vbnRoKHllYXIsIG1vbnRo
KTsKK0RheXNUYWJsZS5wcm90b3R5cGUuX25hdmlnYXRlVG9Nb250aCA9IGZ1bmN0aW9uKG1vbnRo
KSB7CisgICAgdGhpcy5waWNrZXIueWVhck1vbnRoQ29udHJvbGxlci5zZXRNb250aChtb250aCk7
CisgICAgdGhpcy5fcmVuZGVyTW9udGgobW9udGgpOwogfTsKIAogLyoqCi0gKiBAcGFyYW0geyFu
dW1iZXJ9IHllYXIKLSAqIEBwYXJhbSB7IW51bWJlcn0gbW9udGgKKyAqIEBwYXJhbSB7IU1vbnRo
fSBtb250aAogICovCi1EYXlzVGFibGUucHJvdG90eXBlLl9uYXZpZ2F0ZVRvTW9udGhXaXRoQW5p
bWF0aW9uID0gZnVuY3Rpb24oeWVhciwgbW9udGgpIHsKLSAgICBpZiAodGhpcy5fY3VycmVudFll
YXIgPj0gMCAmJiB0aGlzLl9jdXJyZW50TW9udGggPj0gMCkgewotICAgICAgICBpZiAoeWVhciA9
PSB0aGlzLl9jdXJyZW50WWVhciAmJiBtb250aCA9PSB0aGlzLl9jdXJyZW50TW9udGgpCitEYXlz
VGFibGUucHJvdG90eXBlLl9uYXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0aW9uID0gZnVuY3Rpb24o
bW9udGgpIHsKKyAgICBpZiAodGhpcy5fY3VycmVudE1vbnRoKSB7CisgICAgICAgIHZhciBkZWx0
YSA9IHRoaXMuX2N1cnJlbnRNb250aC52YWx1ZU9mKCkgLSBtb250aC52YWx1ZU9mKCk7CisgICAg
ICAgIGlmIChkZWx0YSA9PT0gMCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIGRl
Y3JlYXNpbmcgPSBmYWxzZTsKLSAgICAgICAgaWYgKHllYXIgPCB0aGlzLl9jdXJyZW50WWVhcikK
LSAgICAgICAgICAgIGRlY3JlYXNpbmcgPSB0cnVlOwotICAgICAgICBlbHNlIGlmICh5ZWFyID4g
dGhpcy5fY3VycmVudFllYXIpCi0gICAgICAgICAgICBkZWNyZWFzaW5nID0gZmFsc2U7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGRlY3JlYXNpbmcgPSBtb250aCA8IHRoaXMuX2N1cnJlbnRN
b250aDsKICAgICAgICAgdmFyIGRheXNTdHlsZSA9IHRoaXMuX2RheXNDb250YWluZXIuc3R5bGU7
CiAgICAgICAgIGRheXNTdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSI7CiAgICAgICAgIGRheXNT
dHlsZS53ZWJraXRUcmFuc2l0aW9uID0gImxlZnQgMC4xcyBlYXNlIjsKLSAgICAgICAgZGF5c1N0
eWxlLmxlZnQgPSAoZGVjcmVhc2luZyA/ICIiIDogIi0iKSArIHRoaXMuX2RheXNDb250YWluZXIu
b2Zmc2V0V2lkdGggKyAicHgiOworICAgICAgICBkYXlzU3R5bGUubGVmdCA9IChkZWx0YSA+IDAg
PyAiIiA6ICItIikgKyB0aGlzLl9kYXlzQ29udGFpbmVyLm9mZnNldFdpZHRoICsgInB4IjsKICAg
ICB9Ci0gICAgdGhpcy5fbmF2aWdhdGVUb01vbnRoKHllYXIsIG1vbnRoKTsKKyAgICB0aGlzLl9u
YXZpZ2F0ZVRvTW9udGgobW9udGgpOwogfTsKIAogRGF5c1RhYmxlLnByb3RvdHlwZS5fbW92ZUlu
RGF5cyA9IGZ1bmN0aW9uKCkgewpAQCAtOTc0LDE0ICsxMDQ2LDEzIEBAIERheXNUYWJsZS5wcm90
b3R5cGUuX21vdmVJbkRheXMgPSBmdW5jdGlvbigpIHsKIH07CiAKIC8qKgotICogQHBhcmFtIHsh
bnVtYmVyfSB5ZWFyCi0gKiBAcGFyYW0geyFudW1iZXJ9IG1vbnRoCisgKiBAcGFyYW0geyFNb250
aH0gbW9udGgKICAqLwotRGF5c1RhYmxlLnByb3RvdHlwZS5uYXZpZ2F0ZVRvTW9udGhBbmRLZWVw
U2VsZWN0aW9uUG9zaXRpb24gPSBmdW5jdGlvbih5ZWFyLCBtb250aCkgewotICAgIGlmICh5ZWFy
ID09IHRoaXMuX2N1cnJlbnRZZWFyICYmIG1vbnRoID09IHRoaXMuX2N1cnJlbnRNb250aCkKK0Rh
eXNUYWJsZS5wcm90b3R5cGUubmF2aWdhdGVUb01vbnRoQW5kS2VlcFNlbGVjdGlvblBvc2l0aW9u
ID0gZnVuY3Rpb24obW9udGgpIHsKKyAgICBpZiAodGhpcy5fY3VycmVudE1vbnRoLmVxdWFscyht
b250aCkpCiAgICAgICAgIHJldHVybjsKICAgICB2YXIgZmlyc3ROb2RlSW5TZWxlY3RlZFJhbmdl
ID0gdGhpcy5fZmlyc3ROb2RlSW5TZWxlY3RlZFJhbmdlKCk7Ci0gICAgdGhpcy5fbmF2aWdhdGVU
b01vbnRoV2l0aEFuaW1hdGlvbih5ZWFyLCBtb250aCk7CisgICAgdGhpcy5fbmF2aWdhdGVUb01v
bnRoV2l0aEFuaW1hdGlvbihtb250aCk7CiAgICAgaWYgKGZpcnN0Tm9kZUluU2VsZWN0ZWRSYW5n
ZSkgewogICAgICAgICB2YXIgeCA9IHBhcnNlSW50KGZpcnN0Tm9kZUluU2VsZWN0ZWRSYW5nZS5k
YXRhc2V0LnBvc2l0aW9uWCwgMTApOwogICAgICAgICB2YXIgeSA9IHBhcnNlSW50KGZpcnN0Tm9k
ZUluU2VsZWN0ZWRSYW5nZS5kYXRhc2V0LnBvc2l0aW9uWSwgMTApOwpAQCAtOTk0LDcgKzEwNjUs
NyBAQCBEYXlzVGFibGUucHJvdG90eXBlLm5hdmlnYXRlVG9Nb250aEFuZEtlZXBTZWxlY3Rpb25Q
b3NpdGlvbiA9IGZ1bmN0aW9uKHllYXIsIG1vbgogICovCiBEYXlzVGFibGUucHJvdG90eXBlLnNl
bGVjdERhdGUgPSBmdW5jdGlvbihkYXRlKSB7CiAgICAgdGhpcy5fZGVzZWxlY3QoKTsKLSAgICB0
aGlzLl9uYXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0aW9uKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwg
ZGF0ZS5nZXRVVENNb250aCgpKTsKKyAgICB0aGlzLl9uYXZpZ2F0ZVRvTW9udGhXaXRoQW5pbWF0
aW9uKE1vbnRoLmNyZWF0ZUZyb21EYXRlKGRhdGUpKTsKICAgICB2YXIgZGF0ZVN0cmluZyA9IHNl
cmlhbGl6ZURhdGUoZGF0ZS5nZXRVVENGdWxsWWVhcigpLCBkYXRlLmdldFVUQ01vbnRoKCksIGRh
dGUuZ2V0VVRDRGF0ZSgpKTsKICAgICBmb3IgKHZhciB3ID0gMDsgdyA8IERheXNUYWJsZS5fV2Vl
a3M7IHcrKykgewogICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IDc7IGQrKykgewpAQCAtMTA0
MiwxNyArMTExMywxMCBAQCBEYXlzVGFibGUucHJvdG90eXBlLl9kZXNlbGVjdCA9IGZ1bmN0aW9u
KCkgewogICogQHJldHVybiB7IWJvb2xlYW59CiAgKi8KIERheXNUYWJsZS5wcm90b3R5cGUuX21h
eWJlU2V0UHJldmlvdXNNb250aCA9IGZ1bmN0aW9uKCkgewotICAgIHZhciB5ZWFyID0gdGhpcy5w
aWNrZXIueWVhck1vbnRoQ29udHJvbGxlci55ZWFyKCk7Ci0gICAgdmFyIG1vbnRoID0gdGhpcy5w
aWNrZXIueWVhck1vbnRoQ29udHJvbGxlci5tb250aCgpOwotICAgIHZhciB0aGlzTW9udGhTdGFy
dFRpbWUgPSBjcmVhdGVVVENEYXRlKHllYXIsIG1vbnRoLCAxKS5nZXRUaW1lKCk7Ci0gICAgaWYg
KHRoaXMucGlja2VyLm1pbmltdW1EYXRlLmdldFRpbWUoKSA+PSB0aGlzTW9udGhTdGFydFRpbWUp
CisgICAgdmFyIGN1cnJlbnRNb250aCA9IHRoaXMucGlja2VyLnllYXJNb250aENvbnRyb2xsZXIu
bW9udGgoKTsKKyAgICBpZiAodGhpcy5waWNrZXIubWluaW11bURhdGUgPj0gY3VycmVudE1vbnRo
LnN0YXJ0RGF0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1vbnRoID09IDAp
IHsKLSAgICAgICAgeWVhci0tOwotICAgICAgICBtb250aCA9IDExOwotICAgIH0gZWxzZQotICAg
ICAgICBtb250aC0tOwotICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aFdpdGhBbmltYXRpb24oeWVh
ciwgbW9udGgpOworICAgIHRoaXMuX25hdmlnYXRlVG9Nb250aFdpdGhBbmltYXRpb24oY3VycmVu
dE1vbnRoLnByZXZpb3VzKCkpOwogICAgIHJldHVybiB0cnVlOwogfTsKIApAQCAtMTA2MCwxNyAr
MTEyNCwxMCBAQCBEYXlzVGFibGUucHJvdG90eXBlLl9tYXliZVNldFByZXZpb3VzTW9udGggPSBm
dW5jdGlvbigpIHsKICAqIEByZXR1cm4geyFib29sZWFufQogICovCiBEYXlzVGFibGUucHJvdG90
eXBlLl9tYXliZVNldE5leHRNb250aCA9IGZ1bmN0aW9uKCkgewotICAgIHZhciB5ZWFyID0gdGhp
cy5waWNrZXIueWVhck1vbnRoQ29udHJvbGxlci55ZWFyKCk7Ci0gICAgdmFyIG1vbnRoID0gdGhp
cy5waWNrZXIueWVhck1vbnRoQ29udHJvbGxlci5tb250aCgpOwotICAgIGlmIChtb250aCA9PSAx
MSkgewotICAgICAgICB5ZWFyKys7Ci0gICAgICAgIG1vbnRoID0gMDsKLSAgICB9IGVsc2UKLSAg
ICAgICAgbW9udGgrKzsKLSAgICB2YXIgbmV4dE1vbnRoU3RhcnRUaW1lID0gY3JlYXRlVVRDRGF0
ZSh5ZWFyLCBtb250aCwgMSkuZ2V0VGltZSgpOwotICAgIGlmICh0aGlzLnBpY2tlci5tYXhpbXVt
RGF0ZS5nZXRUaW1lKCkgPCBuZXh0TW9udGhTdGFydFRpbWUpCisgICAgdmFyIGN1cnJlbnRNb250
aCA9IHRoaXMucGlja2VyLnllYXJNb250aENvbnRyb2xsZXIubW9udGgoKTsKKyAgICBpZiAodGhp
cy5waWNrZXIubWF4aW11bURhdGUgPCBjdXJyZW50TW9udGguZW5kRGF0ZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgdGhpcy5fbmF2aWdhdGVUb01vbnRoV2l0aEFuaW1hdGlvbih5ZWFy
LCBtb250aCk7CisgICAgdGhpcy5fbmF2aWdhdGVUb01vbnRoV2l0aEFuaW1hdGlvbihjdXJyZW50
TW9udGgubmV4dCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhY2Y1ZTdmN2Y2
ZmM2NmVhZDRjMTVhMDg2MTI5OGM5NzZlMjlkNDdjLi5mZTc3ZjljY2RiZTU0MjYyNzRmMDliNWNm
MzI1MjY3M2U2OTkyODk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTEtMDMgIEtlaXNo
aSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIE1vbnRo
IGNsYXNzIHRvIGNhbGVuZGFyIHBpY2tlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11
cmEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLWtleS1vcGVyYXRpb25z
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2Nh
bGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXIta2V5LW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2Vy
L2NhbGVuZGFyLXBpY2tlci1rZXktb3BlcmF0aW9ucy5odG1sOiBBZGp1c3QgdGhlIGV4cGVjdGF0
aW9uIGJlY2F1c2Ugd2UgY2hhbmdlZCB0aGUgbW9udGggc3RyaW5nIGZvcm1hdC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1w
aWNrZXItbW91c2Utb3BlcmF0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLW1vdXNl
LW9wZXJhdGlvbnMuaHRtbDogRGl0dG8uCisKIDIwMTItMTEtMDQgIEppbndvbyBTb25nICA8amlu
d29vNy5zb25nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW0RSVF0gU2tpcCBhIGZhc3Qv
aW1hZ2VzL3JlcGFpbnQtc3VicmVjdC1ncmlkLmh0bWwgdGVzdCBjYXNlIGFmdGVyIHIxMzMzMjIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9wbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXIta2V5LW9w
ZXJhdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2lu
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBp
Y2tlci1rZXktb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKaW5kZXggODYwM2IzNzRlODhlNGQzY2Zm
NmI2ZDc4ODE1ZTIwNzljNDljNWYyYi4uNWViZmU2YjM5M2EzMWFmNDdiNGVhM2JiNzJmMDQyY2Mw
MGViZTUyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tl
ci1rZXktb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0td2luL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2Vy
L2NhbGVuZGFyLXBpY2tlci1rZXktb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTgsNDAgKzgs
NDAgQEAgUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9jay1wYWdlLXBvcHVwIikgaXMg
bnVsbAogQ2hlY2sgdGhhdCBwYWdlIHBvcHVwIGV4aXN0cy4KIFBBU1MgcG9wdXBXaW5kb3cucGFn
ZVBvcHVwQ29udHJvbGxlci50b1N0cmluZygpIGlzICJbb2JqZWN0IFBhZ2VQb3B1cENvbnRyb2xs
ZXJdIgogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMjAwMC0wMS0wMiIKLVBBU1MgY3VycmVudE1v
bnRoKCkgaXMgIjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBDaGVj
ayB0aGF0IGFycm93IGtleXMgd29yayBwcm9wZXJseSBldmVuIHdoZW4gZ29pbmcgYmV0d2VlbiB3
ZWVrcyBhbmQgbW9udGhzLgogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMTk5OS0xMi0yNiIKLVBB
U1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIw
MDAtMDEiCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIyMDAwLTAxLTAyIgotUEFTUyBjdXJyZW50
TW9udGgoKSBpcyAiMTk5OS0xMSIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjE5OTktMTIiCiBQ
QVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIxOTk5LTEyLTI2IgotUEFTUyBjdXJyZW50TW9udGgoKSBp
cyAiMjAwMC0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wMSIKIFBBU1Mgc2VsZWN0
ZWREYXRlKCkgaXMgIjIwMDAtMDEtMDIiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAi
CitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgogUEFTUyBzZWxlY3RlZERhdGUoKSBp
cyAiMTk5OS0xMi0yNiIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMCIKK1BBU1MgY3Vy
cmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIyMDAwLTAx
LTA4IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMTk5OS0xMSIKK1BBU1MgY3VycmVudE1vbnRo
KCkgaXMgIjE5OTktMTIiCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIxOTk5LTEyLTI2IgotUEFT
UyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAw
MC0wMSIKIHByZXNzIG0KIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIwMDAtMDEtMzAiCi1QQVNT
IGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTEiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAw
LTAyIgogcHJlc3Mgc2hpZnQgKyBtCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIxOTk5LTEyLTI2
IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBp
cyAiMjAwMC0wMSIKIHByZXNzIHkKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIwMDAtMTItMzEi
Ci1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAxLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlz
ICIyMDAxLTAxIgogcHJlc3Mgc2hpZnQgKyB5CiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIxOTk5
LTEyLTI2IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFTUyBjdXJyZW50TW9u
dGgoKSBpcyAiMjAwMC0wMSIKIHByZXNzIGQKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjIwMDkt
MTItMjciCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDEwLTAiCitQQVNTIGN1cnJlbnRNb250
aCgpIGlzICIyMDEwLTAxIgogcHJlc3Mgc2hpZnQgKyBkCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlz
ICIxOTk5LTEyLTI2IgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFTUyBjdXJy
ZW50TW9udGgoKSBpcyAiMjAwMC0wMSIKIFBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1v
Y2stcGFnZS1wb3B1cCIpIGlzIG51bGwKIFBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRh
dGUiKS52YWx1ZSBpcyAiMTk5OS0xMi0yNiIKIFBBU1MgdGVzdFRvZGF5KCkgfHwgdGVzdFRvZGF5
KCkgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLWtleS1vcGVyYXRpb25zLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2Fs
ZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1rZXktb3BlcmF0aW9ucy1leHBlY3RlZC50eHQK
aW5kZXggNmU5MGRjODk3ZDJjMDYwZDVjOGFjNzYwY2ZkZGI3Zjg3MWJiZGQyYS4uM2ZiZTBmNzJi
ZjcyOWVkYmU2ZmIyOTY5MjZhNmQzYmYxYjk3YzQ2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlj
a2VyLWtleS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXIta2V5
LW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC04LDQwICs4LDQwIEBAIFBBU1MgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIpIGlzIG51bGwKIENoZWNrIHRoYXQgcGFn
ZSBwb3B1cCBleGlzdHMuCiBQQVNTIHBvcHVwV2luZG93LnBhZ2VQb3B1cENvbnRyb2xsZXIudG9T
dHJpbmcoKSBpcyAiW29iamVjdCBQYWdlUG9wdXBDb250cm9sbGVyXSIKIFBBU1Mgc2VsZWN0ZWRE
YXRlKCkgaXMgIjIwMDAtMDEtMDIiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQ
QVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgogQ2hlY2sgdGhhdCBhcnJvdyBrZXlzIHdv
cmsgcHJvcGVybHkgZXZlbiB3aGVuIGdvaW5nIGJldHdlZW4gd2Vla3MgYW5kIG1vbnRocy4KIFBB
U1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjE5OTktMTItMjYiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlz
ICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgogUEFTUyBzZWxlY3Rl
ZERhdGUoKSBpcyAiMjAwMC0wMS0wMiIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjE5OTktMTEi
CitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIxOTk5LTEyIgogUEFTUyBzZWxlY3RlZERhdGUoKSBp
cyAiMTk5OS0xMi0yNiIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMCIKK1BBU1MgY3Vy
cmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIyMDAwLTAx
LTAyIgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wIgorUEFTUyBjdXJyZW50TW9udGgo
KSBpcyAiMjAwMC0wMSIKIFBBU1Mgc2VsZWN0ZWREYXRlKCkgaXMgIjE5OTktMTItMjYiCi1QQVNT
IGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAw
LTAxIgogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMjAwMC0wMS0wOCIKLVBBU1MgY3VycmVudE1v
bnRoKCkgaXMgIjE5OTktMTEiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIxOTk5LTEyIgogUEFT
UyBzZWxlY3RlZERhdGUoKSBpcyAiMTk5OS0xMi0yNiIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMg
IjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBwcmVzcyBtCiBQQVNT
IHNlbGVjdGVkRGF0ZSgpIGlzICIyMDAwLTAxLTMwIgotUEFTUyBjdXJyZW50TW9udGgoKSBpcyAi
MjAwMC0xIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMC0wMiIKIHByZXNzIHNoaWZ0ICsg
bQogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMTk5OS0xMi0yNiIKLVBBU1MgY3VycmVudE1vbnRo
KCkgaXMgIjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBwcmVzcyB5
CiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIyMDAwLTEyLTMxIgotUEFTUyBjdXJyZW50TW9udGgo
KSBpcyAiMjAwMS0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAwMS0wMSIKIHByZXNzIHNo
aWZ0ICsgeQogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMTk5OS0xMi0yNiIKLVBBU1MgY3VycmVu
dE1vbnRoKCkgaXMgIjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBw
cmVzcyBkCiBQQVNTIHNlbGVjdGVkRGF0ZSgpIGlzICIyMDA5LTEyLTI3IgotUEFTUyBjdXJyZW50
TW9udGgoKSBpcyAiMjAxMC0wIgorUEFTUyBjdXJyZW50TW9udGgoKSBpcyAiMjAxMC0wMSIKIHBy
ZXNzIHNoaWZ0ICsgZAogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMTk5OS0xMi0yNiIKLVBBU1Mg
Y3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAt
MDEiCiBQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2NrLXBhZ2UtcG9wdXAiKSBpcyBu
dWxsCiBQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkYXRlIikudmFsdWUgaXMgIjE5OTkt
MTItMjYiCiBQQVNTIHRlc3RUb2RheSgpIHx8IHRlc3RUb2RheSgpIGlzIHRydWUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlj
a2VyL2NhbGVuZGFyLXBpY2tlci1rZXktb3BlcmF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2Vy
LWtleS1vcGVyYXRpb25zLmh0bWwKaW5kZXggMTgzODBiY2RlZTc3YjFkM2ExNjZkNGE5N2QxYzhh
M2YxNDExZGExMy4uY2E4NDI3N2ZiZThjNjE3OWM2Nzc4OWU0ZTE4Nzg0NWI3MWFiODNhYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRh
ci1waWNrZXIvY2FsZW5kYXItcGlja2VyLWtleS1vcGVyYXRpb25zLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5k
YXItcGlja2VyLWtleS1vcGVyYXRpb25zLmh0bWwKQEAgLTIyLDY3ICsyMiw2NyBAQCBmdW5jdGlv
biB0ZXN0MSgpIHsKICAgICBzaG91bGRCZSgncG9wdXBXaW5kb3cucGFnZVBvcHVwQ29udHJvbGxl
ci50b1N0cmluZygpJywgJyJbb2JqZWN0IFBhZ2VQb3B1cENvbnRyb2xsZXJdIicpOwogCiAgICAg
c2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAwLTAxLTAyIicpOwotICAgIHNob3VsZEJl
KCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9u
dGgoKScsICciMjAwMC0wMSInKTsKIAogICAgIGRlYnVnKCdDaGVjayB0aGF0IGFycm93IGtleXMg
d29yayBwcm9wZXJseSBldmVuIHdoZW4gZ29pbmcgYmV0d2VlbiB3ZWVrcyBhbmQgbW9udGhzLicp
OwogCiAgICAgZXZlbnRTZW5kZXIua2V5RG93bigndXBBcnJvdycpOwogICAgIHNob3VsZEJlKCdz
ZWxlY3RlZERhdGUoKScsICciMTk5OS0xMi0yNiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1v
bnRoKCknLCAnIjIwMDAtMCInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIw
MDAtMDEiJyk7CiAgICAgLy8gTW92ZSBmcm9tIGZpcnN0IHJvdyBvZiBKYW51YXJ5IDIwMDAgdG8g
bGFzdCByb3cgb2YgRGVjZW1iZXIgMTk5OS4KICAgICBldmVudFNlbmRlci5rZXlEb3duKCd1cEFy
cm93Jyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAwLTAxLTAyIicpOwot
ICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMTk5OS0xMSInKTsKKyAgICBzaG91bGRC
ZSgnY3VycmVudE1vbnRoKCknLCAnIjE5OTktMTIiJyk7CiAgICAgCiAgICAgZXZlbnRTZW5kZXIu
a2V5RG93bignZG93bkFycm93Jyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIx
OTk5LTEyLTI2IicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wIicp
OworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSInKTsKICAgICBldmVu
dFNlbmRlci5rZXlEb3duKCdkb3duQXJyb3cnKTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRl
KCknLCAnIjIwMDAtMDEtMDIiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIy
MDAwLTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAxIicpOwog
CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bigndXBBcnJvdycpOwogICAgIHNob3VsZEJlKCdzZWxl
Y3RlZERhdGUoKScsICciMTk5OS0xMi0yNiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRo
KCknLCAnIjIwMDAtMCInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAt
MDEiJyk7CiAKICAgICAvLyBNb3ZlIGZyb20gdG9wIGxlZnQgb2YgSmFudWFyeSAyMDAwIHRvIGJv
dHRvbSByaWdodCBvZiBEZWNlbWJlciAxOTk5LgogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ2xl
ZnRBcnJvdycpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMjAwMC0wMS0wOCIn
KTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjE5OTktMTEiJyk7CisgICAgc2hv
dWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIxOTk5LTEyIicpOwogCiAgICAgZXZlbnRTZW5kZXIu
a2V5RG93bigncmlnaHRBcnJvdycpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICci
MTk5OS0xMi0yNiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMCIn
KTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAKICAgICBk
ZWJ1ZygicHJlc3MgbSIpOwogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ20nKTsKICAgICBzaG91
bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjIwMDAtMDEtMzAiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1
cnJlbnRNb250aCgpJywgJyIyMDAwLTEiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgp
JywgJyIyMDAwLTAyIicpOwogCiAgICAgZGVidWcoInByZXNzIHNoaWZ0ICsgbSIpOwogICAgIGV2
ZW50U2VuZGVyLmtleURvd24oJ00nKTsKICAgICBzaG91bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAn
IjE5OTktMTItMjYiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAi
Jyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgpJywgJyIyMDAwLTAxIicpOwogCiAgICAg
ZGVidWcoInByZXNzIHkiKTsKICAgICBldmVudFNlbmRlci5rZXlEb3duKCd5Jyk7CiAgICAgc2hv
dWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAwLTEyLTMxIicpOwotICAgIHNob3VsZEJlKCdj
dXJyZW50TW9udGgoKScsICciMjAwMS0wIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgo
KScsICciMjAwMS0wMSInKTsKIAogICAgIGRlYnVnKCJwcmVzcyBzaGlmdCArIHkiKTsKICAgICBl
dmVudFNlbmRlci5rZXlEb3duKCdZJyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywg
JyIxOTk5LTEyLTI2IicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0w
IicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMSInKTsKIAogICAg
IGRlYnVnKCJwcmVzcyBkIik7CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bignZCcpOwogICAgIHNo
b3VsZEJlKCdzZWxlY3RlZERhdGUoKScsICciMjAwOS0xMi0yNyInKTsKLSAgICBzaG91bGRCZSgn
Y3VycmVudE1vbnRoKCknLCAnIjIwMTAtMCInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRo
KCknLCAnIjIwMTAtMDEiJyk7CiAKICAgICBkZWJ1ZygicHJlc3Mgc2hpZnQgKyBkIik7CiAgICAg
ZXZlbnRTZW5kZXIua2V5RG93bignRCcpOwogICAgIHNob3VsZEJlKCdzZWxlY3RlZERhdGUoKScs
ICciMTk5OS0xMi0yNiInKTsKLSAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAt
MCInKTsKKyAgICBzaG91bGRCZSgnY3VycmVudE1vbnRoKCknLCAnIjIwMDAtMDEiJyk7CiAKICAg
ICBldmVudFNlbmRlci5rZXlEb3duKCdcbicpOwogICAgIHNob3VsZEJlTnVsbCgnZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIpJyk7CkBAIC0xMjEsNyArMTIxLDcgQEAg
ZnVuY3Rpb24gdGVzdFRvZGF5KCkgewogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ3QnKTsKICAg
ICB2YXIgbm93ID0gbmV3IERhdGUoKTsKICAgICB2YXIgZXhwZWN0ZWREYXRlID0gc2VyaWFsaXpl
RGF0ZShub3cuZ2V0VVRDRnVsbFllYXIoKSwgbm93LmdldFVUQ01vbnRoKCksIG5vdy5nZXRVVENE
YXRlKCkpOwotICAgIHZhciBleHBlY3RlZE1vbnRoID0gbm93LmdldFVUQ0Z1bGxZZWFyKCkgKyAi
LSIgKyBub3cuZ2V0TW9udGgoKTsKKyAgICB2YXIgZXhwZWN0ZWRNb250aCA9IHBvcHVwV2luZG93
Lk1vbnRoLmNyZWF0ZUZyb21EYXRlKG5vdykudG9TdHJpbmcoKTsKICAgICByZXR1cm4gc2VsZWN0
ZWREYXRlKCkgPT09IGV4cGVjdGVkRGF0ZSAmJiBjdXJyZW50TW9udGgoKSA9PT0gZXhwZWN0ZWRN
b250aDsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLW1vdXNlLW9wZXJhdGlvbnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9j
YWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLW1vdXNlLW9wZXJhdGlvbnMtZXhwZWN0ZWQu
dHh0CmluZGV4IGU5NjcwNjMyMTU3OGNhOGU2M2M5NTFhNzhiMzk3ODJmNDVlYTA5YWIuLjVhMjdk
NDE3M2RlZjA1YWZlY2ZlZWFiOGMyYjg4YWU4MmExMDE2MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFy
LXBpY2tlci1tb3VzZS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNr
ZXItbW91c2Utb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTYsMTUgKzYsMTUgQEAgT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUKIENoZWNrIHRoYXQgcGFnZSBwb3B1cCBkb2Vzbid0IGV4aXN0IGF0
IGZpcnN0LgogUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9jay1wYWdlLXBvcHVwIikg
aXMgbnVsbAogUEFTUyBzZWxlY3RlZERhdGUoKSBpcyAiMjAwMC0wMS0wMiIKLVBBU1MgY3VycmVu
dE1vbnRoKCkgaXMgIjIwMDAtMCIKK1BBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBD
aGVjayB0aGF0IGhvdmVyaW5nIG92ZXIgYW4gZW50cnkgaGlnaGxpZ2h0cyBpdC4KIFBBU1Mgc2Vs
ZWN0ZWREYXRlKCkgaXMgIjE5OTktMTItMzEiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAw
LTAiCitQQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAxIgogUEFTUyBzZWxlY3RlZERhdGUo
KSBpcyAiMjAwMC0wMS0wNCIKLVBBU1MgY3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMCIKK1BBU1Mg
Y3VycmVudE1vbnRoKCkgaXMgIjIwMDAtMDEiCiBDaGVjayB0aGF0IG5hdmlnYXRpbmcgYmV0d2Vl
biBtb250aHMgbWFpbnRhaW5zIHNlbGVjdGlvbiBwb3NpdGlvbi4KIFBBU1Mgc2VsZWN0ZWREYXRl
KCkgaXMgIjIwMDAtMDItMDgiCi1QQVNTIGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTEiCitQQVNT
IGN1cnJlbnRNb250aCgpIGlzICIyMDAwLTAyIgogQ2hlY2sgdGhhdCBtb3ZpbmcgdGhlIG1vdXNl
IG91dHNpZGUgdGhlIHBvcHVwIGRlLWhpZ2hsaWdodHMgZW50cmllcy4KIFBBU1Mgc2VsZWN0ZWRE
YXRlKCkgaXMgdW5kZWZpbmVkLgogQ2hlY2sgdGhhdCBtb3VzZSBjbGljayBjbG9zZXMgdGhlIHBv
cHVwIGFuZCBzZXRzIHRoZSB2YWx1ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBpY2tlci1tb3Vz
ZS1vcGVyYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zv
cm1zL2NhbGVuZGFyLXBpY2tlci9jYWxlbmRhci1waWNrZXItbW91c2Utb3BlcmF0aW9ucy5odG1s
CmluZGV4IDUyZDAzZmU1OWY0MzUzY2YyODViZWEwODJkZjQ1YTgzNTI0ZDdkMmQuLmY4MDFhNDdh
YWQzNTI3YmZkNTM0YzY2MzczZmM1ZWQ0ZmE3NDJlODAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY2FsZW5kYXItcGlja2VyL2NhbGVuZGFyLXBp
Y2tlci1tb3VzZS1vcGVyYXRpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIvY2FsZW5kYXItcGlja2VyLW1vdXNlLW9w
ZXJhdGlvbnMuaHRtbApAQCAtMjAsMjEgKzIwLDIxIEBAIG9wZW5QaWNrZXIoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2RhdGUnKSwgdGVzdCk7CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgc2hv
dWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAwLTAxLTAyIicpOwotICAgIHNob3VsZEJlKCdj
dXJyZW50TW9udGgoKScsICciMjAwMC0wIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgo
KScsICciMjAwMC0wMSInKTsKIAogICAgIGRlYnVnKCdDaGVjayB0aGF0IGhvdmVyaW5nIG92ZXIg
YW4gZW50cnkgaGlnaGxpZ2h0cyBpdC4nKTsKICAgICBob3Zlck92ZXJFbGVtZW50KHBvcHVwV2lu
ZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImRheSIpWzVdKTsKICAgICBzaG91
bGRCZSgnc2VsZWN0ZWREYXRlKCknLCAnIjE5OTktMTItMzEiJyk7Ci0gICAgc2hvdWxkQmUoJ2N1
cnJlbnRNb250aCgpJywgJyIyMDAwLTAiJyk7CisgICAgc2hvdWxkQmUoJ2N1cnJlbnRNb250aCgp
JywgJyIyMDAwLTAxIicpOwogCiAgICAgaG92ZXJPdmVyRWxlbWVudChwb3B1cFdpbmRvdy5kb2N1
bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJkYXkiKVs5XSk7CiAgICAgc2hvdWxkQmUoJ3Nl
bGVjdGVkRGF0ZSgpJywgJyIyMDAwLTAxLTA0IicpOwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9u
dGgoKScsICciMjAwMC0wIicpOworICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAw
MC0wMSInKTsKIAogICAgIGRlYnVnKCdDaGVjayB0aGF0IG5hdmlnYXRpbmcgYmV0d2VlbiBtb250
aHMgbWFpbnRhaW5zIHNlbGVjdGlvbiBwb3NpdGlvbi4nKTsKICAgICBldmVudFNlbmRlci5rZXlE
b3duKCdtJyk7CiAgICAgc2hvdWxkQmUoJ3NlbGVjdGVkRGF0ZSgpJywgJyIyMDAwLTAyLTA4Iicp
OwotICAgIHNob3VsZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0xIicpOworICAgIHNob3Vs
ZEJlKCdjdXJyZW50TW9udGgoKScsICciMjAwMC0wMiInKTsKIAogICAgIGRlYnVnKCdDaGVjayB0
aGF0IG1vdmluZyB0aGUgbW91c2Ugb3V0c2lkZSB0aGUgcG9wdXAgZGUtaGlnaGxpZ2h0cyBlbnRy
aWVzLicpOwogICAgIGhvdmVyT3ZlckVsZW1lbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rl
c2NyaXB0aW9uJykpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>