<?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>79308</bug_id>
          
          <creation_ts>2012-02-22 17:10:42 -0800</creation_ts>
          <short_desc>[V8] IndexedDB: IDBTransaction objects leak in Workers</short_desc>
          <delta_ts>2012-02-24 16:27:10 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>adamk</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dgrogan</cc>
    
    <cc>dimich</cc>
    
    <cc>dslomov</cc>
    
    <cc>japhet</cc>
    
    <cc>levin</cc>
    
    <cc>rafaelw</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>562592</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-22 17:10:42 -0800</bug_when>
    <thetext>[V8] IndexedDB: IDBTransaction objects leak in Workers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562593</commentid>
    <comment_count>1</comment_count>
      <attachid>128341</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-22 17:11:00 -0800</bug_when>
    <thetext>Created attachment 128341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562596</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-22 17:13:34 -0800</bug_when>
    <thetext>http://crbug.com/115341 has repro steps

I have no idea if the patch is complete or sensible, but it appears to address the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562622</commentid>
    <comment_count>3</comment_count>
      <attachid>128341</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-02-22 17:35:33 -0800</bug_when>
    <thetext>Comment on attachment 128341
Patch

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

The patch looks good, but will be nice to have tests

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

Can we have a layout test for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563426</commentid>
    <comment_count>4</comment_count>
      <attachid>128548</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-23 13:46:00 -0800</bug_when>
    <thetext>Created attachment 128548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563433</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-23 13:50:07 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Can we have a layout test for this?

Of course! I identified a few more points where Workers call into script (Events, Errors) so those are handled and there are tests.

(Having to trap the Worker&apos;s error event in the page is unfortunate.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563435</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-23 13:51:58 -0800</bug_when>
    <thetext>dslomov, are there other reviewers I should have take a look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563462</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-02-23 14:08:05 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; dslomov, are there other reviewers I should have take a look at this?

(I am not a reviewer) levin@ and dimich@ would be other people, but I know they are both on vacation.
I&apos;ll add abarth@ too. maybe he can review, suggest someone else or trust my judgement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563472</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-23 14:19:07 -0800</bug_when>
    <thetext>This seems related to https://bugs.webkit.org/show_bug.cgi?id=72063

+rafaelw: thoughts on this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563473</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-23 14:19:44 -0800</bug_when>
    <thetext>This generally seems reasonable to me, but we should check with rafaelw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563478</commentid>
    <comment_count>10</comment_count>
      <attachid>128548</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-02-23 14:22:47 -0800</bug_when>
    <thetext>Comment on attachment 128548
Patch

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

LGTM with nit and other ports&apos; expectations

&gt; LayoutTests/fast/js/resources/js-test-pre.js:469
&gt; +    };

nit: Is this required for this fix? We try to avoid unnecessary style changes bundled with patches. Ditto other places.

&gt; LayoutTests/storage/indexeddb/transaction-abort-workers-expected.txt:1
&gt; +[Worker] Test IndexedDB workers, recursion, and transaction termination.

Do JSC ports work fine on this test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563485</commentid>
    <comment_count>11</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-23 14:27:28 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 128548 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128548&amp;action=review
&gt; 
&gt; LGTM with nit and other ports&apos; expectations
&gt; 
&gt; &gt; LayoutTests/fast/js/resources/js-test-pre.js:469
&gt; &gt; +    };
&gt; 
&gt; nit: Is this required for this fix? We try to avoid unnecessary style changes bundled with patches. Ditto other places.

Not required; I&apos;ll pull it out.

&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/transaction-abort-workers-expected.txt:1
&gt; &gt; +[Worker] Test IndexedDB workers, recursion, and transaction termination.
&gt; 
&gt; Do JSC ports work fine on this test?

Only the Chromium/V8 currently enables IndexedDB; see https://bugs.webkit.org/show_bug.cgi?id=45110</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563488</commentid>
    <comment_count>12</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-02-23 14:29:51 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (From update of attachment 128548 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128548&amp;action=review
&gt; &gt; 
&gt; &gt; LGTM with nit and other ports&apos; expectations
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/fast/js/resources/js-test-pre.js:469
&gt; &gt; &gt; +    };
&gt; &gt; 
&gt; &gt; nit: Is this required for this fix? We try to avoid unnecessary style changes bundled with patches. Ditto other places.
&gt; 
&gt; Not required; I&apos;ll pull it out.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/storage/indexeddb/transaction-abort-workers-expected.txt:1
&gt; &gt; &gt; +[Worker] Test IndexedDB workers, recursion, and transaction termination.
&gt; &gt; 
&gt; &gt; Do JSC ports work fine on this test?
&gt; 
&gt; Only the Chromium/V8 currently enables IndexedDB; see https://bugs.webkit.org/show_bug.cgi?id=45110

Right so this test will fail on those ports wouldn&apos;t it? You should add it to the appropriate platform/*/Skipped</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563489</commentid>
    <comment_count>13</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-23 14:32:17 -0800</bug_when>
    <thetext>(In reply to comment #12)&gt; 
&gt; Right so this test will fail on those ports wouldn&apos;t it? You should add it to the appropriate platform/*/Skipped

All of storage/indexeddb is skipped on all of the non-Chromium platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563494</commentid>
    <comment_count>14</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-02-23 14:33:59 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)&gt; 
&gt; &gt; Right so this test will fail on those ports wouldn&apos;t it? You should add it to the appropriate platform/*/Skipped
&gt; 
&gt; All of storage/indexeddb is skipped on all of the non-Chromium platforms.

Got it - thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563496</commentid>
    <comment_count>15</comment_count>
      <attachid>128558</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-23 14:37:28 -0800</bug_when>
    <thetext>Created attachment 128558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563863</commentid>
    <comment_count>16</comment_count>
      <attachid>128558</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-23 20:03:19 -0800</bug_when>
    <thetext>Comment on attachment 128558
Patch

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

LGTM, FWIW

&gt; LayoutTests/fast/js/resources/js-test-pre.js:463
&gt; +    return worker;

Thanks for adding this, I had to add it locally for something else.

&gt; LayoutTests/storage/indexeddb/resources/transaction-abort-workers.js:37
&gt; +    evalAndLog(&quot;store = transaction.objectStore(&apos;store&apos;)&quot;);

Before this patch, none of these event handlers would be called?

&gt; LayoutTests/storage/indexeddb/resources/transaction-abort-workers.js:50
&gt; +function recursionTest()

This still worked before this patch, right?

&gt; LayoutTests/storage/indexeddb/resources/transaction-abort-workers.js:86
&gt; +function timeoutTest()

This tests the change to V8WorkerContextEventListener.cpp ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563899</commentid>
    <comment_count>17</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-23 21:21:33 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 128558 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128558&amp;action=review
&gt; 
&gt; LGTM, FWIW
&gt; 
&gt; &gt; LayoutTests/fast/js/resources/js-test-pre.js:463
&gt; &gt; +    return worker;
&gt; 
&gt; Thanks for adding this, I had to add it locally for something else.
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/resources/transaction-abort-workers.js:37
&gt; &gt; +    evalAndLog(&quot;store = transaction.objectStore(&apos;store&apos;)&quot;);
&gt; 
&gt; Before this patch, none of these event handlers would be called?

Yes. Because the transaction didn&apos;t start, it would remain in the queue since an abort was never fired.

&gt; &gt; LayoutTests/storage/indexeddb/resources/transaction-abort-workers.js:50
&gt; &gt; +function recursionTest()
&gt; 
&gt; This still worked before this patch, right?

Yes; this test is to verify that the transaction abort logic isn&apos;t kicking in too early with the change

&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/resources/transaction-abort-workers.js:86
&gt; &gt; +function timeoutTest()
&gt; 
&gt; This tests the change to V8WorkerContextEventListener.cpp ?

The timeout test tests the change to ScheduledAction.cpp (which deals with setTimeout, setInterval and friends).

The V8WorkerContextEventListener.cpp change is actually tested by the createTransaction test, since that runs in response to the setVersion&apos;s transaction&apos;s &quot;complete&quot; event.

The V8WorkerContextErrorHandler.cpp change is tested by the errorTest.

The WorkerContextExecutionProxy.cpp change is not directly tested, since it would require a transaction to be created in the worker&apos;s &quot;root&quot; execution context and not in any event/error/scheduled callbacks, which I don&apos;t think is possible in IDB (since you get the initial DB handle via a callback). Ideas welcome, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564692</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-02-24 15:07:59 -0800</bug_when>
    <thetext>Looks good to me from the V8RecursionScope angle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564752</commentid>
    <comment_count>19</comment_count>
      <attachid>128558</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-24 16:27:04 -0800</bug_when>
    <thetext>Comment on attachment 128558
Patch

Clearing flags on attachment: 128558

Committed r108867: &lt;http://trac.webkit.org/changeset/108867&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564753</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-24 16:27:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128341</attachid>
            <date>2012-02-22 17:11:00 -0800</date>
            <delta_ts>2012-02-23 13:45:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79308-20120222171100.patch</filename>
            <type>text/plain</type>
            <size>4321</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEyMjlhZTVkMGEzMThm
YWQ4NGNhYTM3ZTI4MzYyYjE4MjA5YTdhNS4uMzc4MGEyYzllZTllZWFiYjgxZmU1MWE4NWFkZjMz
ODc5MTRlNzIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAyLTIyICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBJbmRleGVkREI6
IElEQlRyYW5zYWN0aW9uIG9iamVjdHMgbGVhayBpbiBXb3JrZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTMwOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisg
ICAgICAgICogYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvV29y
a2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNv
bnRleHRFeGVjdXRpb25Qcm94eTo6V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6cnVuU2NyaXB0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaDoKKyAgICAg
ICAgKFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSk6CisKIDIwMTItMDItMjIgIFNoaW55YSBL
YXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGZpcnN0UmVuZGVyZXJP
ZigpIHNob3VsZCBhbHNvIHJldHVybiBhIGZhbGxiYWNrIGVsZW1lbnQgcmVuZGVyZXIgaW4gTm9k
ZVJlbmRlcmluZ0NvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1
bGVkQWN0aW9uLmNwcAppbmRleCBmNzZiNThkMWNjNjE0MWZjMGE2YWNkMmRlOGVjNDExY2E5NmFj
NzM2Li4yZjc0ZTYwOTZjZWRkNmFmMzdhNDc3M2M5MDQwYjYxZDFhZGI3N2YyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTQxLDYgKzQx
LDcgQEAKIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNp
bmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgog
I2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgogI2luY2x1ZGUgIldvcmtl
clRocmVhZC5oIgpAQCAtMTQxLDcgKzE0Miw5IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVj
dXRlKFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQpCiB7CiAgICAgLy8gSW4gYSBXb3JrZXIs
IHRoZSBleGVjdXRpb24gc2hvdWxkIGFsd2F5cyBoYXBwZW4gb24gYSB3b3JrZXIgdGhyZWFkLgog
ICAgIEFTU0VSVCh3b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+dGhyZWFkSUQoKSA9PSBjdXJyZW50
VGhyZWFkKCkpOwotICAKKworICAgIFY4UmVjdXJzaW9uU2NvcGUgcmVjdXJzaW9uU2NvcGUod29y
a2VyQ29udGV4dCk7CisKICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9s
bGVyID0gd29ya2VyQ29udGV4dC0+c2NyaXB0KCk7CiAKICAgICBpZiAoIW1fZnVuY3Rpb24uSXNF
bXB0eSgpICYmIG1fZnVuY3Rpb24tPklzRnVuY3Rpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAK
aW5kZXggZDI4NDBiZDA4ODgyMTA3NTlkZGI0YWJlZGMyYzM3MTRlN2NmYzIyYS4uNTFiZTVjYTgz
ZjcwNzljNzRhMjQ3ZDMyNTNmMDU1NzdjOGNjODQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBA
IC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNsdWRlICJWOERlZGlj
YXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhS
ZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIlY4U2hhcmVkV29ya2VyQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldvcmtlci5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKQEAgLTgxLDcgKzgy
LDYgQEAgc3RhdGljIHZvaWQgdjhNZXNzYWdlSGFuZGxlcih2ODo6SGFuZGxlPHY4OjpNZXNzYWdl
PiBtZXNzYWdlLCB2ODo6SGFuZGxlPHY4OjpWYWwKIAogV29ya2VyQ29udGV4dEV4ZWN1dGlvblBy
b3h5OjpXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkoV29ya2VyQ29udGV4dCogd29ya2VyQ29u
dGV4dCkKICAgICA6IG1fd29ya2VyQ29udGV4dCh3b3JrZXJDb250ZXh0KQotICAgICwgbV9yZWN1
cnNpb24oMCkKIHsKICAgICBpbml0SXNvbGF0ZSgpOwogfQpAQCAtMjM0LDcgKzIzNCw3IEBAIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6cnVuU2NyaXB0
KHY4OjpIYW5kbGU8djg6OlNjcmlwCiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVl
PigpOwogCiAgICAgLy8gQ29tcHV0ZSB0aGUgc291cmNlIHN0cmluZyBhbmQgcHJldmVudCBhZ2Fp
bnN0IGluZmluaXRlIHJlY3Vyc2lvbi4KLSAgICBpZiAobV9yZWN1cnNpb24gPj0ga01heFJlY3Vy
c2lvbkRlcHRoKSB7CisgICAgaWYgKFY4UmVjdXJzaW9uU2NvcGU6OnJlY3Vyc2lvbkxldmVsKCkg
Pj0ga01heFJlY3Vyc2lvbkRlcHRoKSB7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBj
b2RlID0gdjhFeHRlcm5hbFN0cmluZygidGhyb3cgUmFuZ2VFcnJvcignUmVjdXJzaW9uIHRvbyBk
ZWVwJykiKTsKICAgICAgICAgc2NyaXB0ID0gVjhQcm94eTo6Y29tcGlsZVNjcmlwdChjb2RlLCAi
IiwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSk7CiAgICAgfQpAQCAtMjQ4LDkgKzI0
OCw4IEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6
cnVuU2NyaXB0KHY4OjpIYW5kbGU8djg6OlNjcmlwCiAgICAgLy8gUnVuIHRoZSBzY3JpcHQgYW5k
IGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGRlcHRoLgogICAgIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHJlc3VsdDsKICAgICB7Ci0gICAgICAgIG1fcmVjdXJzaW9uKys7CisgICAg
ICAgIFY4UmVjdXJzaW9uU2NvcGUgcmVjdXJzaW9uU2NvcGUobV93b3JrZXJDb250ZXh0KTsKICAg
ICAgICAgcmVzdWx0ID0gc2NyaXB0LT5SdW4oKTsKLSAgICAgICAgbV9yZWN1cnNpb24tLTsKICAg
ICB9CiAKICAgICAvLyBIYW5kbGUgVjggaW50ZXJuYWwgZXJyb3Igc2l0dWF0aW9uIChPdXQtb2Yt
bWVtb3J5KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNv
bnRleHRFeGVjdXRpb25Qcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2Vy
Q29udGV4dEV4ZWN1dGlvblByb3h5LmgKaW5kZXggN2Q0ZDcwY2U2YWJhNWQ5Njc2MzlkZWI3NzEy
MTg1NmRlMDA1ZjYzNi4uZTZjMTYwNTQ0OWIwOWI4YjE1MjU2YzQxNjNhZTJkMzExZWYwYTZlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1
dGlvblByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5LmgKQEAgLTg2LDcgKzg2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIFdvcmtlckNvbnRleHQqIG1fd29ya2VyQ29udGV4dDsKICAgICAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkNvbnRleHQ+IG1fY29udGV4dDsKLSAgICAgICAgaW50IG1fcmVjdXJzaW9u
OwogCiAgICAgICAgIFZlY3RvcjxFdmVudCo+IG1fZXZlbnRzOwogICAgIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128548</attachid>
            <date>2012-02-23 13:46:00 -0800</date>
            <delta_ts>2012-02-23 14:37:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79308-20120223134559.patch</filename>
            <type>text/plain</type>
            <size>18116</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEyMjlhZTVkMGEzMThm
YWQ4NGNhYTM3ZTI4MzYyYjE4MjA5YTdhNS4uMmE2MDMxMjNjNzk5OWUzMjAwY2Y3NGJiMDdhY2Nh
NWJjYTJmNTkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAyLTIzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBJbmRleGVkREI6
IElEQlRyYW5zYWN0aW9uIG9iamVjdHMgbGVhayBpbiBXb3JrZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTMwOAorCisgICAgICAgIFVzZSBhIFY4
UmVjdXJzaW9uU2NvcGUgd2hlbmV2ZXIgV29ya2VycyBjYWxsIGludG8gc2NyaXB0LCBzbyB0aGF0
CisgICAgICAgIHBvc3Qtc2NyaXB0IHNpZGUtZWZmZWN0cyBjYW4gYmUgZXhlY3V0ZWQuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd29ya2Vycy5odG1sCisKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1
bGVkQWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFdvcmtlckNvbnRl
eHRFcnJvckhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0RXJy
b3JIYW5kbGVyOjpjYWxsTGlzdGVuZXJGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdv
cmtlckNvbnRleHRFdmVudExpc3RlbmVyOjpjYWxsTGlzdGVuZXJGdW5jdGlvbik6CisgICAgICAg
ICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDogUmVwbGFjZSBj
dXN0b20gcmVjdXJzaW9uIHRyYWNraW5nLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5OjpXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpydW5TY3JpcHQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oOgorICAgICAgICAo
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KToKKwogMjAxMi0wMi0yMiAgU2hpbnlhIEthd2Fu
YWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgZmlyc3RSZW5kZXJlck9mKCkg
c2hvdWxkIGFsc28gcmV0dXJuIGEgZmFsbGJhY2sgZWxlbWVudCByZW5kZXJlciBpbiBOb2RlUmVu
ZGVyaW5nQ29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
aGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRB
Y3Rpb24uY3BwCmluZGV4IGY3NmI1OGQxY2M2MTQxZmMwYTZhY2QyZGU4ZWM0MTFjYTk2YWM3MzYu
LmM0MDYwNDc2YjhmOGEzZjdiODZjMjc3MDU0ZTI2OWI2YTA2ZjNlZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtNDEsNiArNDEsNyBA
QAogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1
ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5j
bHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhy
ZWFkLmgiCkBAIC0xNDEsNyArMTQyLDggQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUo
V29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkKIHsKICAgICAvLyBJbiBhIFdvcmtlciwgdGhl
IGV4ZWN1dGlvbiBzaG91bGQgYWx3YXlzIGhhcHBlbiBvbiBhIHdvcmtlciB0aHJlYWQuCiAgICAg
QVNTRVJUKHdvcmtlckNvbnRleHQtPnRocmVhZCgpLT50aHJlYWRJRCgpID09IGN1cnJlbnRUaHJl
YWQoKSk7Ci0gIAorCisgICAgVjhSZWN1cnNpb25TY29wZSByZWN1cnNpb25TY29wZSh3b3JrZXJD
b250ZXh0KTsKICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0g
d29ya2VyQ29udGV4dC0+c2NyaXB0KCk7CiAKICAgICBpZiAoIW1fZnVuY3Rpb24uSXNFbXB0eSgp
ICYmIG1fZnVuY3Rpb24tPklzRnVuY3Rpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAKaW5kZXgg
ZDAyMjc4ZWQ0ODIyYTM0NzZjMjY4N2Y0MDliN2JkZWYyOThhYzdkNS4uYjliZGVjZDRiNDE2NDE3
MzZlNTYxM2QwMzRhNTE3ZGFhNmRjN2IzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkVycm9yRXZlbnQu
aCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNiArNTYsNyBAQCB2ODo6TG9jYWw8djg6
OlZhbHVlPiBWOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXI6OmNhbGxMaXN0ZW5lckZ1bmN0aW9u
KFNjcmlwdEV4ZQogICAgICAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBjYWxsRnVuY3Rpb24g
PSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChsaXN0ZW5lcik7CiAgICAgICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiB0aGlzVmFsdWUgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpLT5H
bG9iYWwoKTsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBhcmFtZXRlcnNbM10gPSB7
IHY4U3RyaW5nKGVycm9yRXZlbnQtPm1lc3NhZ2UoKSksIHY4U3RyaW5nKGVycm9yRXZlbnQtPmZp
bGVuYW1lKCkpLCB2ODo6SW50ZWdlcjo6TmV3KGVycm9yRXZlbnQtPmxpbmVubygpKSB9OworICAg
ICAgICBWOFJlY3Vyc2lvblNjb3BlIHJlY3Vyc2lvblNjb3BlKGNvbnRleHQpOwogICAgICAgICBy
ZXR1cm5WYWx1ZSA9IGNhbGxGdW5jdGlvbi0+Q2FsbCh0aGlzVmFsdWUsIDMsIHBhcmFtZXRlcnMp
OwogICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwCmlu
ZGV4IDMwYjk4NjU4NjExYjNhNGYwZWQ5ZGUwYWJlMTdiNjFkZGExOTdlMmQuLjdmZDRmM2YxZTFh
MzQyODA5MzBiYTgyZmFkODI5OWQzYjAyOGEwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhET01X
cmFwcGVyLmgiCiAjaW5jbHVkZSAiVjhFdmVudC5oIgorI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2Nv
cGUuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5LmgiCiAKQEAgLTkwLDYgKzkxLDcgQEAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lcjo6Y2FsbExpc3RlbmVyRnVuY3Rpb24oU2Ny
aXB0RXgKICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CiAKICAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gcGFyYW1ldGVyc1sxXSA9IHsganNFdmVudCB9OworICAgIFY4UmVj
dXJzaW9uU2NvcGUgcmVjdXJzaW9uU2NvcGUoY29udGV4dCk7CiAgICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gcmVzdWx0ID0gaGFuZGxlckZ1bmN0aW9uLT5DYWxsKHJlY2VpdmVyLCAxLCBwYXJhbWV0
ZXJzKTsKIAogICAgIGlmIChXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkqIHByb3h5ID0gd29y
a2VyUHJveHkoY29udGV4dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAppbmRleCBkMjg0MGJkMDg4ODIx
MDc1OWRkYjRhYmVkYzJjMzcxNGU3Y2ZjMjJhLi41MWJlNWNhODNmNzA3OWM3NGEyNDdkMzI1M2Yw
NTU3N2M4Y2M4NDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNp
bmNsdWRlICJWOERPTU1hcC5oIgogI2luY2x1ZGUgIlY4RGVkaWNhdGVkV29ya2VyQ29udGV4dC5o
IgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAj
aW5jbHVkZSAiVjhTaGFyZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyLmgiCiAj
aW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgpAQCAtODEsNyArODIsNiBAQCBzdGF0aWMgdm9pZCB2
OE1lc3NhZ2VIYW5kbGVyKHY4OjpIYW5kbGU8djg6Ok1lc3NhZ2U+IG1lc3NhZ2UsIHY4OjpIYW5k
bGU8djg6OlZhbAogCiBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OldvcmtlckNvbnRleHRF
eGVjdXRpb25Qcm94eShXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KQogICAgIDogbV93b3Jr
ZXJDb250ZXh0KHdvcmtlckNvbnRleHQpCi0gICAgLCBtX3JlY3Vyc2lvbigwKQogewogICAgIGlu
aXRJc29sYXRlKCk7CiB9CkBAIC0yMzQsNyArMjM0LDcgQEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpydW5TY3JpcHQodjg6OkhhbmRsZTx2ODo6U2Ny
aXAKICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CiAKICAgICAvLyBDb21w
dXRlIHRoZSBzb3VyY2Ugc3RyaW5nIGFuZCBwcmV2ZW50IGFnYWluc3QgaW5maW5pdGUgcmVjdXJz
aW9uLgotICAgIGlmIChtX3JlY3Vyc2lvbiA+PSBrTWF4UmVjdXJzaW9uRGVwdGgpIHsKKyAgICBp
ZiAoVjhSZWN1cnNpb25TY29wZTo6cmVjdXJzaW9uTGV2ZWwoKSA+PSBrTWF4UmVjdXJzaW9uRGVw
dGgpIHsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IGNvZGUgPSB2OEV4dGVybmFsU3Ry
aW5nKCJ0aHJvdyBSYW5nZUVycm9yKCdSZWN1cnNpb24gdG9vIGRlZXAnKSIpOwogICAgICAgICBz
Y3JpcHQgPSBWOFByb3h5Ojpjb21waWxlU2NyaXB0KGNvZGUsICIiLCBUZXh0UG9zaXRpb246Om1p
bmltdW1Qb3NpdGlvbigpKTsKICAgICB9CkBAIC0yNDgsOSArMjQ4LDggQEAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpydW5TY3JpcHQodjg6OkhhbmRs
ZTx2ODo6U2NyaXAKICAgICAvLyBSdW4gdGhlIHNjcmlwdCBhbmQga2VlcCB0cmFjayBvZiB0aGUg
Y3VycmVudCByZWN1cnNpb24gZGVwdGguCiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcmVzdWx0
OwogICAgIHsKLSAgICAgICAgbV9yZWN1cnNpb24rKzsKKyAgICAgICAgVjhSZWN1cnNpb25TY29w
ZSByZWN1cnNpb25TY29wZShtX3dvcmtlckNvbnRleHQpOwogICAgICAgICByZXN1bHQgPSBzY3Jp
cHQtPlJ1bigpOwotICAgICAgICBtX3JlY3Vyc2lvbi0tOwogICAgIH0KIAogICAgIC8vIEhhbmRs
ZSBWOCBpbnRlcm5hbCBlcnJvciBzaXR1YXRpb24gKE91dC1vZi1tZW1vcnkpLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJv
eHkuaAppbmRleCA3ZDRkNzBjZTZhYmE1ZDk2NzYzOWRlYjc3MTIxODU2ZGUwMDVmNjM2Li5lNmMx
NjA1NDQ5YjA5YjhiMTUyNTZjNDE2M2FlMmQzMTFlZjBhNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaApA
QCAtODYsNyArODYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgV29ya2VyQ29u
dGV4dCogbV93b3JrZXJDb250ZXh0OwogICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4
dD4gbV9jb250ZXh0OwotICAgICAgICBpbnQgbV9yZWN1cnNpb247CiAKICAgICAgICAgVmVjdG9y
PEV2ZW50Kj4gbV9ldmVudHM7CiAgICAgfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4Nzg5Y2FkZGMzMzA1ZDZhOGVlMjhm
ZGZhOTUyNDQ5MDVmOGQ2OWYyLi40OWQxZjRkYTI1YTU3YTc3YTAzYmRiZTJhZGI2OTAzNjM5MmJl
NmIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDItMjMgIEpvc2h1YSBCZWxsICA8anNi
ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEluZGV4ZWREQjogSURCVHJhbnNhY3Rp
b24gb2JqZWN0cyBsZWFrIGluIFdvcmtlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc5MzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qczogQWRk
ZWQgbWlzc2luZyBzZW1pY29sb25zLgorICAgICAgICAoc3RhcnRXb3JrZXIpOiBSZXR1cm4gV29y
a2VyIG9iamVjdCBzbyBvbmVycm9yIGNhbiBiZSBob29rZWQuCisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcnMuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcnMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1hYm9ydC13b3JrZXJzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAyLTIyICBZdXRhIEtpdGFtdXJh
ICA8eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCwg
cmVndWxhciBtYWludGVuYW5jZSBvZiB0ZXN0IGV4cGVjdGF0aW9ucy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKaW5kZXggY2FkMDA1N2ZkMzJhMmFlNjZh
Y2U5N2VkZjQzMmI2ZjNlOWFiYjJkMy4uMzA1YTk3NWU1N2ViMzFlZWY1NDA4YzZmZTM2ZTMxYTgx
YTcxODY4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMKQEAgLTY4LDcgKzY4LDcgQEAgdmFyIGRlc2NyaXB0aW9uLCBkZWJ1Zywgc3VjY2Vzc2Z1bGx5
UGFyc2VkLCBlcnJvck1lc3NhZ2U7CiAgICAgICAgIHN0eWxlRWxlbWVudC50ZXh0Q29udGVudCA9
IGNzczsKICAgICAgICAgKGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
KS5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpOwogICAgIH0KLSAgICAKKwogICAgIGlmICghaXNX
b3JrZXIoKSkKICAgICAgICAgaW5zZXJ0U3R5bGVTaGVldCgpOwogCkBAIC00NTgsMjMgKzQ1OCwy
NSBAQCBmdW5jdGlvbiBzdGFydFdvcmtlcih0ZXN0U2NyaXB0VVJMKQogICAgIHsKICAgICAgICAg
ZGVidWcoJ0dvdCBlcnJvciBmcm9tIHdvcmtlcjogJyArIGV2ZW50Lm1lc3NhZ2UpOwogICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9CisgICAgfTsKKworICAgIHJldHVybiB3b3JrZXI7CiB9
CiAKIGlmIChpc1dvcmtlcigpKSB7CiAgICAgZGVzY3JpcHRpb24gPSBmdW5jdGlvbihtc2csIHF1
aWV0KSB7CiAgICAgICAgIHBvc3RNZXNzYWdlKCdERVNDOicgKyBtc2cpOwotICAgIH0KKyAgICB9
OwogICAgIHRlc3RGYWlsZWQgPSBmdW5jdGlvbihtc2cpIHsKICAgICAgICAgcG9zdE1lc3NhZ2Uo
J0ZBSUw6JyArIG1zZyk7Ci0gICAgfQorICAgIH07CiAgICAgdGVzdFBhc3NlZCA9IGZ1bmN0aW9u
KG1zZykgewogICAgICAgICBwb3N0TWVzc2FnZSgnUEFTUzonICsgbXNnKTsKLSAgICB9CisgICAg
fTsKICAgICBmaW5pc2hKU1Rlc3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgcG9zdE1lc3NhZ2Uo
J0RPTkU6Jyk7Ci0gICAgfQorICAgIH07CiAgICAgZGVidWcgPSBmdW5jdGlvbihtc2cpIHsKICAg
ICAgICAgcG9zdE1lc3NhZ2UobXNnKTsKLSAgICB9CisgICAgfTsKIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC13
b3JrZXJzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5z
YWN0aW9uLWFib3J0LXdvcmtlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkxYjRlYTI4OWU2YWJlN2UyYmMx
NTFlY2QyYjdiNTUzYzg2M2NjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLmpzCkBAIC0w
LDAgKzEsMTMyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBv
cnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
IHdvcmtlcnMsIHJlY3Vyc2lvbiwgYW5kIHRyYW5zYWN0aW9uIHRlcm1pbmF0aW9uLiIpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBzaG91bGRCZVRydWUoIid3ZWJraXRJbmRleGVkREInIGlu
IHNlbGYiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJ3ZWJraXRJbmRleGVkREIgPT0gbnVsbCIpOwor
CisgICAgc2hvdWxkQmVUcnVlKCInd2Via2l0SURCQ3Vyc29yJyBpbiBzZWxmIik7CisgICAgc2hv
dWxkQmVGYWxzZSgid2Via2l0SURCQ3Vyc29yID09IG51bGwiKTsKKworICAgIGV2YWxBbmRMb2co
InJlcXVlc3QgPSB3ZWJraXRJbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWJvcnQtd29ya2Vy
JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZXZhbEFuZExvZygi
ZGIgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9j
a2VkQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
ImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgICAgICAgICB0cmFucy5vbmNv
bXBsZXRlID0gY3JlYXRlVHJhbnNhY3Rpb247CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVu
Y3Rpb24gY3JlYXRlVHJhbnNhY3Rpb24oKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
Y3JlYXRlVHJhbnNhY3Rpb24oKToiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHRyYW5z
YWN0aW9uQWJvcnRlZDsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKK3sKKyAg
ICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBhYm9ydGVkIik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIHJlY3Vyc2lvblRlc3QoKTsKK30KKworZnVuY3Rp
b24gcmVjdXJzaW9uVGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJyZWN1cnNp
b25UZXN0KCk6Iik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlv
bignc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0
U3RvcmUoJ3N0b3JlJykiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdHJhbnNhY3Rp
b25Db21wbGV0ZWQ7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOworICAgIGV2YWxBbmRMb2coInN0b3JlLmdldCgwKSIpOworICAgIHRlc3RQYXNzZWQo
InRyYW5zYWN0aW9uIGlzIGFjdGl2ZSIpOworICAgIHJlY3Vyc2UoMSk7Cit9CisKK2Z1bmN0aW9u
IHJlY3Vyc2UoY291bnQpCit7CisgICAgZGVidWcoInJlY3Vyc2lvbiBkZXB0aDogIiArIGNvdW50
KTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5nZXQoMCkiKTsKKyAgICB0ZXN0UGFzc2VkKCJ0cmFu
c2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUiKTsKKyAgICBpZiAoY291bnQgPCAzKSB7CisgICAgICAg
IHJlY3Vyc2UoY291bnQgKyAxKTsKKyAgICB9CisgICAgZGVidWcoInJlY3Vyc2lvbiBkZXB0aDog
IiArIGNvdW50KTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5nZXQoMCkiKTsKKyAgICB0ZXN0UGFz
c2VkKCJ0cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUiKTsKK30KKworZnVuY3Rpb24gdHJhbnNh
Y3Rpb25Db21wbGV0ZWQoKQoreworICAgIHRlc3RQYXNzZWQoInRyYW5zYWN0aW9uIGNvbXBsZXRl
ZCIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgwKSIsICJ3ZWJraXRJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygidHJ5aW5nIGEgdGltZW91dCBjYWxsYmFjazoiKTsKKyAgICBl
dmFsQW5kTG9nKCJzZXRUaW1lb3V0KHRpbWVvdXRUZXN0LCAwKSIpOworfQorCitmdW5jdGlvbiB0
aW1lb3V0VGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0aW1lb3V0VGVzdCgp
OiIpOworCisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3Rv
cmUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J3N0b3JlJykiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBs
ZXRlQ2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgdGVzdFBhc3NlZCgidHJhbnNhY3Rpb24gc3RhcnRlZCBpbiBzZXRUaW1lb3V0KCkgY2Fs
bGJhY2sgYWJvcnRlZCIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5n
ZXQoMCkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSIik7CisKKyAgICAgICAgZXJyb3JUZXN0KCk7CisgICAgfTsKK30KKworZnVuY3Rpb24gZXJy
b3JUZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImVycm9yVGVzdCgpOiIpOwor
ICAgIGV2YWxBbmRMb2coInNlbGYub2xkX29uZXJyb3IgPSBzZWxmLm9uZXJyb3IiKTsKKyAgICBl
dmFsQW5kTG9nKCJzZWxmLm9uZXJyb3IgPSBlcnJvckhhbmRsZXIiKTsKKyAgICB0aHJvdyBuZXcg
RXJyb3IoImlnbm9yZSB0aGlzIik7Cit9CisKK2Z1bmN0aW9uIGVycm9ySGFuZGxlcihlKQorewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZXJyb3JIYW5kbGVyKCk6Iik7CisgICAgLy8gRklY
TUU6IFNob3VsZCBiZSBhYmxlIHRvIHN0b3AgdGhlIGVycm9yIGhlcmUsIGJ1dCBpdCBpc24ndCBh
biBFdmVudCBvYmplY3QuCisgICAgLy8gZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQo
KSIpOworICAgIGV2YWxBbmRMb2coInNlbGYub25lcnJvciA9IHNlbGYub2xkX29uZXJyb3IiKTsK
KyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7
CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUn
KSIpOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxs
YmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGVycm9yVHJhbnNhY3Rpb25BYm9ydGVkOworfQor
CitmdW5jdGlvbiBlcnJvclRyYW5zYWN0aW9uQWJvcnRlZCgpCit7CisgICAgdGVzdFBhc3NlZCgi
VHJhbnNhY3Rpb24gYWJvcnRlZCIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3Jl
LmdldCgwKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElW
RV9FUlIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd29ya2Vycy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1h
Ym9ydC13b3JrZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzQwMjAyMzI2MzJkZDRjYWVl
MjBiODYyODc2YjczZjI5MTA5NDUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd29ya2Vycy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4MiBAQAorW1dvcmtlcl0gVGVzdCBJbmRleGVkREIgd29ya2VycywgcmVjdXJzaW9u
LCBhbmQgdHJhbnNhY3Rpb24gdGVybWluYXRpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC13b3Jr
ZXJzLmpzCitQQVNTIFtXb3JrZXJdICd3ZWJraXRJbmRleGVkREInIGluIHNlbGYgaXMgdHJ1ZQor
UEFTUyBbV29ya2VyXSB3ZWJraXRJbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQorUEFTUyBbV29y
a2VyXSAnd2Via2l0SURCQ3Vyc29yJyBpbiBzZWxmIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gd2Vi
a2l0SURCQ3Vyc29yID09IG51bGwgaXMgZmFsc2UKK1tXb3JrZXJdIHJlcXVlc3QgPSB3ZWJraXRJ
bmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWJvcnQtd29ya2VyJykKK1tXb3JrZXJdIGRiID0g
cmVxdWVzdC5yZXN1bHQKK1tXb3JrZXJdIHJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykKK1tX
b3JrZXJdIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitbV29ya2VyXSB0cmFucyA9IHJlcXVl
c3QucmVzdWx0CitbV29ya2VyXSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQorW1dvcmtl
cl0gCitbV29ya2VyXSBjcmVhdGVUcmFuc2FjdGlvbigpOgorW1dvcmtlcl0gdHJhbnNhY3Rpb24g
PSBkYi50cmFuc2FjdGlvbignc3RvcmUnKQorW1dvcmtlcl0gc3RvcmUgPSB0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmUnKQorUEFTUyBbV29ya2VyXSBUcmFuc2FjdGlvbiBhYm9ydGVkCitb
V29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3Jr
ZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElE
QkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorW1dvcmtlcl0gCitb
V29ya2VyXSByZWN1cnNpb25UZXN0KCk6CitbV29ya2VyXSB0cmFuc2FjdGlvbiA9IGRiLnRyYW5z
YWN0aW9uKCdzdG9yZScpCitbV29ya2VyXSBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCdzdG9yZScpCitbV29ya2VyXSBzdG9yZS5nZXQoMCkKK1BBU1MgW1dvcmtlcl0gdHJhbnNhY3Rp
b24gaXMgYWN0aXZlCitbV29ya2VyXSByZWN1cnNpb24gZGVwdGg6IDEKK1tXb3JrZXJdIHN0b3Jl
LmdldCgwKQorUEFTUyBbV29ya2VyXSB0cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUKK1tXb3Jr
ZXJdIHJlY3Vyc2lvbiBkZXB0aDogMgorW1dvcmtlcl0gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3Jr
ZXJdIHRyYW5zYWN0aW9uIGlzIHN0aWxsIGFjdGl2ZQorW1dvcmtlcl0gcmVjdXJzaW9uIGRlcHRo
OiAzCitbV29ya2VyXSBzdG9yZS5nZXQoMCkKK1BBU1MgW1dvcmtlcl0gdHJhbnNhY3Rpb24gaXMg
c3RpbGwgYWN0aXZlCitbV29ya2VyXSByZWN1cnNpb24gZGVwdGg6IDMKK1tXb3JrZXJdIHN0b3Jl
LmdldCgwKQorUEFTUyBbV29ya2VyXSB0cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUKK1tXb3Jr
ZXJdIHJlY3Vyc2lvbiBkZXB0aDogMgorW1dvcmtlcl0gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3Jr
ZXJdIHRyYW5zYWN0aW9uIGlzIHN0aWxsIGFjdGl2ZQorW1dvcmtlcl0gcmVjdXJzaW9uIGRlcHRo
OiAxCitbV29ya2VyXSBzdG9yZS5nZXQoMCkKK1BBU1MgW1dvcmtlcl0gdHJhbnNhY3Rpb24gaXMg
c3RpbGwgYWN0aXZlCitQQVNTIFtXb3JrZXJdIHRyYW5zYWN0aW9uIGNvbXBsZXRlZAorW1dvcmtl
cl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmdldCgwKQorUEFTUyBbV29ya2VyXSBF
eGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRh
YmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1tXb3JrZXJdIAorW1dvcmtl
cl0gdHJ5aW5nIGEgdGltZW91dCBjYWxsYmFjazoKK1tXb3JrZXJdIHNldFRpbWVvdXQodGltZW91
dFRlc3QsIDApCitbV29ya2VyXSAKK1tXb3JrZXJdIHRpbWVvdXRUZXN0KCk6CitbV29ya2VyXSB0
cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpCitbV29ya2VyXSBzdG9yZSA9IHRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpCitQQVNTIFtXb3JrZXJdIHRyYW5zYWN0aW9u
IHN0YXJ0ZWQgaW4gc2V0VGltZW91dCgpIGNhbGxiYWNrIGFib3J0ZWQKK1tXb3JrZXJdIEV4cGVj
dGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5nZXQoMCkKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9u
IHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNl
cHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitbV29ya2VyXSAKK1tXb3JrZXJdIGVycm9y
VGVzdCgpOgorW1dvcmtlcl0gc2VsZi5vbGRfb25lcnJvciA9IHNlbGYub25lcnJvcgorW1dvcmtl
cl0gc2VsZi5vbmVycm9yID0gZXJyb3JIYW5kbGVyCitbV29ya2VyXSAKK1tXb3JrZXJdIGVycm9y
SGFuZGxlcigpOgorW1dvcmtlcl0gc2VsZi5vbmVycm9yID0gc2VsZi5vbGRfb25lcnJvcgorW1dv
cmtlcl0gdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKQorW1dvcmtlcl0gc3Rv
cmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKQorR290IGV4cGVjdGVkIGVycm9y
IGZyb20gd29ya2VyLCBpZ25vcmluZworZXZlbnQucHJldmVudERlZmF1bHQoKQorUEFTUyBbV29y
a2VyXSBUcmFuc2FjdGlvbiBhYm9ydGVkCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZy
b20gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFT
UyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9O
X0lOQUNUSVZFX0VSUgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5z
YWN0aW9uLWFib3J0LXdvcmtlcnMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTIxYWFkOTdmYWQw
MjRjMTYxNmRjMGY2YjJlOGViNDBkYzFiY2M1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd29ya2Vycy5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKwordmFyIHdvcmtl
ciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWJvcnQtd29ya2Vycy5qcycp
OworCisvLyBGSVhNRTogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIGZvciB0aGUgd29ya2VyIHRvIHNl
dCBzZWxmLm9uZXJyb3IgdG8gY2F0Y2ggdGhlIGV2ZW50CisvLyBhbmQgY2FsbCBldmVudC5wcmV2
ZW50RGVmYXVsdCgpLCBidXQgaW4gdGhlIGN1cnJlbnQgV29ya2VyIGltcGxlbWVudGF0aW9uIHRo
ZSByYXcKKy8vIGV4Y2VwdGlvbiBpcyBzZWVuIGJ5IHRoZSBldmVudCBoYW5kbGVyIGluIHRoZSB3
b3JrZXIsIG5vdCBhbiBFcnJvckV2ZW50IG9iamVjdC4KKwordmFyIG9yaWdfb25lcnJvciA9IHdv
cmtlci5vbmVycm9yOword29ya2VyLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICBp
ZiAoZXZlbnQubWVzc2FnZSA9PT0gIlVuY2F1Z2h0IEVycm9yOiBpZ25vcmUgdGhpcyIpIHsKKyAg
ICAgICAgZGVidWcoIkdvdCBleHBlY3RlZCBlcnJvciBmcm9tIHdvcmtlciwgaWdub3JpbmciKTsK
KyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOworICAgIH0gZWxz
ZSBpZiAob3JpZ19vbmVycm9yKSB7CisgICAgICAgIG9yaWdfb25lcnJvcihldmVudCk7CisgICAg
fQorfTsKKworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128558</attachid>
            <date>2012-02-23 14:37:28 -0800</date>
            <delta_ts>2012-02-24 16:27:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79308-20120223143727.patch</filename>
            <type>text/plain</type>
            <size>17439</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdkNDY4ZDQyODkxMzc5
YjNlNjA3MTU2N2ViMzNhNmYwZTY4ZWM1ZS4uMDNhNWUzZmVkZWE0MGU0YjEyYzg0MThlOTEzZGFh
NTE1ZTkzZjc1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAyLTIzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBJbmRleGVkREI6
IElEQlRyYW5zYWN0aW9uIG9iamVjdHMgbGVhayBpbiBXb3JrZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTMwOAorCisgICAgICAgIFVzZSBhIFY4
UmVjdXJzaW9uU2NvcGUgd2hlbmV2ZXIgV29ya2VycyBjYWxsIGludG8gc2NyaXB0LCBzbyB0aGF0
CisgICAgICAgIHBvc3Qtc2NyaXB0IHNpZGUtZWZmZWN0cyBjYW4gYmUgZXhlY3V0ZWQuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd29ya2Vycy5odG1sCisKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1
bGVkQWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFdvcmtlckNvbnRl
eHRFcnJvckhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0RXJy
b3JIYW5kbGVyOjpjYWxsTGlzdGVuZXJGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdv
cmtlckNvbnRleHRFdmVudExpc3RlbmVyOjpjYWxsTGlzdGVuZXJGdW5jdGlvbik6CisgICAgICAg
ICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDogUmVwbGFjZSBj
dXN0b20gcmVjdXJzaW9uIHRyYWNraW5nLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5OjpXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpydW5TY3JpcHQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oOgorICAgICAgICAo
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KToKKwogMjAxMi0wMi0yMiAgSWdvciBPbGl2ZWly
YSAgPGlnb3Iub0BzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIEV2ZXJ5IGNhbGwgdG8gUmVu
ZGVyT2JqZWN0OjpzZXRBbmltYXRhYmxlU3R5bGUoKSBpdGVyYXRlcyB0aHJvdWdoIGFsbCBtX2Nv
bXBvc2l0ZUFuaW1hdGlvbnM6IHBvdGVudGlhbGx5IE8oTl4yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggZjc2YjU4ZDFjYzYxNDFmYzBh
NmFjZDJkZThlYzQxMWNhOTZhYzczNi4uYzQwNjA0NzZiOGY4YTNmN2I4NmMyNzcwNTRlMjY5YjZh
MDZmM2VmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVk
QWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rp
b24uY3BwCkBAIC00MSw2ICs0MSw3IEBACiAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNs
dWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUg
IldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHku
aCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKQEAgLTE0MSw3ICsxNDIsOCBAQCB2b2lkIFNj
aGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KQogewog
ICAgIC8vIEluIGEgV29ya2VyLCB0aGUgZXhlY3V0aW9uIHNob3VsZCBhbHdheXMgaGFwcGVuIG9u
IGEgd29ya2VyIHRocmVhZC4KICAgICBBU1NFUlQod29ya2VyQ29udGV4dC0+dGhyZWFkKCktPnRo
cmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKTsKLSAgCisKKyAgICBWOFJlY3Vyc2lvblNjb3Bl
IHJlY3Vyc2lvblNjb3BlKHdvcmtlckNvbnRleHQpOwogICAgIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXIqIHNjcmlwdENvbnRyb2xsZXIgPSB3b3JrZXJDb250ZXh0LT5zY3JpcHQoKTsKIAogICAgIGlm
ICghbV9mdW5jdGlvbi5Jc0VtcHR5KCkgJiYgbV9mdW5jdGlvbi0+SXNGdW5jdGlvbigpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFcnJv
ckhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0
RXJyb3JIYW5kbGVyLmNwcAppbmRleCBkMDIyNzhlZDQ4MjJhMzQ3NmMyNjg3ZjQwOWI3YmRlZjI5
OGFjN2Q1Li5iOWJkZWNkNGI0MTY0MTczNmU1NjEzZDAzNGE1MTdkYWE2ZGM3YjM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFcnJvckhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEVy
cm9ySGFuZGxlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CiAjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1
ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw2
ICs1Niw3IEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxl
cjo6Y2FsbExpc3RlbmVyRnVuY3Rpb24oU2NyaXB0RXhlCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6
RnVuY3Rpb24+IGNhbGxGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KGxp
c3RlbmVyKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHRoaXNWYWx1ZSA9IHY4OjpD
b250ZXh0OjpHZXRDdXJyZW50KCktPkdsb2JhbCgpOwogICAgICAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gcGFyYW1ldGVyc1szXSA9IHsgdjhTdHJpbmcoZXJyb3JFdmVudC0+bWVzc2FnZSgpKSwg
djhTdHJpbmcoZXJyb3JFdmVudC0+ZmlsZW5hbWUoKSksIHY4OjpJbnRlZ2VyOjpOZXcoZXJyb3JF
dmVudC0+bGluZW5vKCkpIH07CisgICAgICAgIFY4UmVjdXJzaW9uU2NvcGUgcmVjdXJzaW9uU2Nv
cGUoY29udGV4dCk7CiAgICAgICAgIHJldHVyblZhbHVlID0gY2FsbEZ1bmN0aW9uLT5DYWxsKHRo
aXNWYWx1ZSwgMywgcGFyYW1ldGVycyk7CiAgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2
ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250
ZXh0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggMzBiOTg2NTg2MTFiM2E0ZjBlZDlkZTBhYmUxN2I2
MWRkYTE5N2UyZC4uN2ZkNGYzZjFlMWEzNDI4MDkzMGJhODJmYWQ4Mjk5ZDNiMDI4YTAxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRM
aXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250
ZXh0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOEV2ZW50LmgiCisj
aW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIK
ICNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKIApAQCAtOTAsNiArOTEs
NyBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyOjpj
YWxsTGlzdGVuZXJGdW5jdGlvbihTY3JpcHRFeAogICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4
OjpWYWx1ZT4oKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwYXJhbWV0ZXJzWzFdID0g
eyBqc0V2ZW50IH07CisgICAgVjhSZWN1cnNpb25TY29wZSByZWN1cnNpb25TY29wZShjb250ZXh0
KTsKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1bHQgPSBoYW5kbGVyRnVuY3Rpb24tPkNh
bGwocmVjZWl2ZXIsIDEsIHBhcmFtZXRlcnMpOwogCiAgICAgaWYgKFdvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eSogcHJveHkgPSB3b3JrZXJQcm94eShjb250ZXh0KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHku
Y3BwCmluZGV4IGQyODQwYmQwODg4MjEwNzU5ZGRiNGFiZWRjMmMzNzE0ZTdjZmMyMmEuLjUxYmU1
Y2E4M2Y3MDc5Yzc0YTI0N2QzMjUzZjA1NTc3YzhjYzg0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNw
cApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlY4RE9NTWFwLmgiCiAjaW5jbHVkZSAiVjhE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUg
IlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlICJWOFNoYXJlZFdvcmtlckNvbnRleHQuaCIK
ICNpbmNsdWRlICJXb3JrZXIuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCkBAIC04MSw3
ICs4Miw2IEBAIHN0YXRpYyB2b2lkIHY4TWVzc2FnZUhhbmRsZXIodjg6OkhhbmRsZTx2ODo6TWVz
c2FnZT4gbWVzc2FnZSwgdjg6OkhhbmRsZTx2ODo6VmFsCiAKIFdvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eTo6V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KFdvcmtlckNvbnRleHQqIHdvcmtl
ckNvbnRleHQpCiAgICAgOiBtX3dvcmtlckNvbnRleHQod29ya2VyQ29udGV4dCkKLSAgICAsIG1f
cmVjdXJzaW9uKDApCiB7CiAgICAgaW5pdElzb2xhdGUoKTsKIH0KQEAgLTIzNCw3ICsyMzQsNyBA
QCB2ODo6TG9jYWw8djg6OlZhbHVlPiBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OnJ1blNj
cmlwdCh2ODo6SGFuZGxlPHY4OjpTY3JpcAogICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpW
YWx1ZT4oKTsKIAogICAgIC8vIENvbXB1dGUgdGhlIHNvdXJjZSBzdHJpbmcgYW5kIHByZXZlbnQg
YWdhaW5zdCBpbmZpbml0ZSByZWN1cnNpb24uCi0gICAgaWYgKG1fcmVjdXJzaW9uID49IGtNYXhS
ZWN1cnNpb25EZXB0aCkgeworICAgIGlmIChWOFJlY3Vyc2lvblNjb3BlOjpyZWN1cnNpb25MZXZl
bCgpID49IGtNYXhSZWN1cnNpb25EZXB0aCkgewogICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gY29kZSA9IHY4RXh0ZXJuYWxTdHJpbmcoInRocm93IFJhbmdlRXJyb3IoJ1JlY3Vyc2lvbiB0
b28gZGVlcCcpIik7CiAgICAgICAgIHNjcmlwdCA9IFY4UHJveHk6OmNvbXBpbGVTY3JpcHQoY29k
ZSwgIiIsIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpOwogICAgIH0KQEAgLTI0OCw5
ICsyNDgsOCBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJv
eHk6OnJ1blNjcmlwdCh2ODo6SGFuZGxlPHY4OjpTY3JpcAogICAgIC8vIFJ1biB0aGUgc2NyaXB0
IGFuZCBrZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IHJlY3Vyc2lvbiBkZXB0aC4KICAgICB2ODo6
TG9jYWw8djg6OlZhbHVlPiByZXN1bHQ7CiAgICAgewotICAgICAgICBtX3JlY3Vyc2lvbisrOwor
ICAgICAgICBWOFJlY3Vyc2lvblNjb3BlIHJlY3Vyc2lvblNjb3BlKG1fd29ya2VyQ29udGV4dCk7
CiAgICAgICAgIHJlc3VsdCA9IHNjcmlwdC0+UnVuKCk7Ci0gICAgICAgIG1fcmVjdXJzaW9uLS07
CiAgICAgfQogCiAgICAgLy8gSGFuZGxlIFY4IGludGVybmFsIGVycm9yIHNpdHVhdGlvbiAoT3V0
LW9mLW1lbW9yeSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dv
cmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oCmluZGV4IDdkNGQ3MGNlNmFiYTVkOTY3NjM5ZGVi
NzcxMjE4NTZkZTAwNWY2MzYuLmU2YzE2MDU0NDliMDliOGIxNTI1NmM0MTYzYWUyZDMxMWVmMGE2
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRF
eGVjdXRpb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNv
bnRleHRFeGVjdXRpb25Qcm94eS5oCkBAIC04Niw3ICs4Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICBXb3JrZXJDb250ZXh0KiBtX3dvcmtlckNvbnRleHQ7CiAgICAgICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgICAgIGludCBtX3JlY3Vy
c2lvbjsKIAogICAgICAgICBWZWN0b3I8RXZlbnQqPiBtX2V2ZW50czsKICAgICB9OwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGU3YzA1YTY0OTI4ZGI2YmQ3MmQ1ZjRjODJiMTA2ZDFhZjRkOTUwZmIuLmM4NzYwN2JmYmNiNWYx
NmJiMTMyMzBjM2MzMjkyZjYzOThiM2EwYjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0w
Mi0yMyAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtWOF0g
SW5kZXhlZERCOiBJREJUcmFuc2FjdGlvbiBvYmplY3RzIGxlYWsgaW4gV29ya2VycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkzMDgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzOgorICAgICAgICAoc3RhcnRXb3JrZXIpOiBSZXR1cm4gV29ya2Vy
IG9iamVjdCBzbyBvbmVycm9yIGNhbiBiZSBob29rZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcnMuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcnMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1h
Ym9ydC13b3JrZXJzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAyLTIzICBLZW5pY2hpIElzaGliYXNo
aSAgPGJhc2hpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQg
dGVzdCBleHBlY3RhdGlvbnMgdXBkYXRlIGZvciBmYXN0L2Nzcy9mb250LWZhY2UtZGVmYXVsdC1m
b250Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMK
aW5kZXggY2FkMDA1N2ZkMzJhMmFlNjZhY2U5N2VkZjQzMmI2ZjNlOWFiYjJkMy4uZDE3NTk5MmZh
MTc1NzE1Yjg0NTliOWE2MDgzNGNjYzQyODIxYWMwMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKQEAgLTQ1OSw2ICs0NTksOCBAQCBmdW5jdGlvbiBz
dGFydFdvcmtlcih0ZXN0U2NyaXB0VVJMKQogICAgICAgICBkZWJ1ZygnR290IGVycm9yIGZyb20g
d29ya2VyOiAnICsgZXZlbnQubWVzc2FnZSk7CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAg
IH0KKworICAgIHJldHVybiB3b3JrZXI7CiB9CiAKIGlmIChpc1dvcmtlcigpKSB7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
YWJvcnQtd29ya2Vycy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MWI0ZWEyODllNmFi
ZTdlMmJjMTUxZWNkMmI3YjU1M2M4NjNjYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWJvcnQtd29ya2Vycy5q
cwpAQCAtMCwwICsxLDEzMiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Cisg
ICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQiB3b3JrZXJzLCByZWN1cnNpb24sIGFuZCB0cmFuc2FjdGlvbiB0ZXJtaW5hdGlvbi4i
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgc2hvdWxkQmVUcnVlKCInd2Via2l0SW5kZXhl
ZERCJyBpbiBzZWxmIik7CisgICAgc2hvdWxkQmVGYWxzZSgid2Via2l0SW5kZXhlZERCID09IG51
bGwiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiJ3dlYmtpdElEQkN1cnNvcicgaW4gc2VsZiIpOwor
ICAgIHNob3VsZEJlRmFsc2UoIndlYmtpdElEQkN1cnNvciA9PSBudWxsIik7CisKKyAgICBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gd2Via2l0SW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFib3J0
LXdvcmtlcicpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGV2YWxB
bmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVj
dGVkQmxvY2tlZENhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICBldmFs
QW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgdHJh
bnMub25jb21wbGV0ZSA9IGNyZWF0ZVRyYW5zYWN0aW9uOworICAgICAgICB9OworICAgIH07Cit9
CisKK2Z1bmN0aW9uIGNyZWF0ZVRyYW5zYWN0aW9uKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoImNyZWF0ZVRyYW5zYWN0aW9uKCk6Iik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rp
b24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmNv
bXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSB0cmFuc2FjdGlvbkFib3J0ZWQ7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZCgp
Cit7CisgICAgdGVzdFBhc3NlZCgiVHJhbnNhY3Rpb24gYWJvcnRlZCIpOworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgwKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlv
bi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICByZWN1cnNpb25UZXN0KCk7Cit9CisK
K2Z1bmN0aW9uIHJlY3Vyc2lvblRlc3QoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
cmVjdXJzaW9uVGVzdCgpOiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJh
bnNhY3Rpb24oJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHRy
YW5zYWN0aW9uQ29tcGxldGVkOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjazsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5nZXQoMCkiKTsKKyAgICB0ZXN0
UGFzc2VkKCJ0cmFuc2FjdGlvbiBpcyBhY3RpdmUiKTsKKyAgICByZWN1cnNlKDEpOworfQorCitm
dW5jdGlvbiByZWN1cnNlKGNvdW50KQoreworICAgIGRlYnVnKCJyZWN1cnNpb24gZGVwdGg6ICIg
KyBjb3VudCk7CisgICAgZXZhbEFuZExvZygic3RvcmUuZ2V0KDApIik7CisgICAgdGVzdFBhc3Nl
ZCgidHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZlIik7CisgICAgaWYgKGNvdW50IDwgMykgewor
ICAgICAgICByZWN1cnNlKGNvdW50ICsgMSk7CisgICAgfQorICAgIGRlYnVnKCJyZWN1cnNpb24g
ZGVwdGg6ICIgKyBjb3VudCk7CisgICAgZXZhbEFuZExvZygic3RvcmUuZ2V0KDApIik7CisgICAg
dGVzdFBhc3NlZCgidHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZlIik7Cit9CisKK2Z1bmN0aW9u
IHRyYW5zYWN0aW9uQ29tcGxldGVkKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJ0cmFuc2FjdGlvbiBj
b21wbGV0ZWQiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5nZXQoMCkiLCAi
d2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRyeWluZyBhIHRpbWVvdXQgY2FsbGJhY2s6Iik7
CisgICAgZXZhbEFuZExvZygic2V0VGltZW91dCh0aW1lb3V0VGVzdCwgMCkiKTsKK30KKworZnVu
Y3Rpb24gdGltZW91dFRlc3QoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGltZW91
dFRlc3QoKToiKTsKKworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rp
b24oJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZScpIik7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0
ZWRDb21wbGV0ZUNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbiAo
KSB7CisgICAgICAgIHRlc3RQYXNzZWQoInRyYW5zYWN0aW9uIHN0YXJ0ZWQgaW4gc2V0VGltZW91
dCgpIGNhbGxiYWNrIGFib3J0ZWQiKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
c3RvcmUuZ2V0KDApIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lO
QUNUSVZFX0VSUiIpOworCisgICAgICAgIGVycm9yVGVzdCgpOworICAgIH07Cit9CisKK2Z1bmN0
aW9uIGVycm9yVGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJlcnJvclRlc3Qo
KToiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmLm9sZF9vbmVycm9yID0gc2VsZi5vbmVycm9yIik7
CisgICAgZXZhbEFuZExvZygic2VsZi5vbmVycm9yID0gZXJyb3JIYW5kbGVyIik7CisgICAgdGhy
b3cgbmV3IEVycm9yKCJpZ25vcmUgdGhpcyIpOworfQorCitmdW5jdGlvbiBlcnJvckhhbmRsZXIo
ZSkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImVycm9ySGFuZGxlcigpOiIpOworICAg
IC8vIEZJWE1FOiBTaG91bGQgYmUgYWJsZSB0byBzdG9wIHRoZSBlcnJvciBoZXJlLCBidXQgaXQg
aXNuJ3QgYW4gRXZlbnQgb2JqZWN0LgorICAgIC8vIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnRE
ZWZhdWx0KCkiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmLm9uZXJyb3IgPSBzZWxmLm9sZF9vbmVy
cm9yIik7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3Rv
cmUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J3N0b3JlJykiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBs
ZXRlQ2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBlcnJvclRyYW5zYWN0aW9uQWJvcnRl
ZDsKK30KKworZnVuY3Rpb24gZXJyb3JUcmFuc2FjdGlvbkFib3J0ZWQoKQoreworICAgIHRlc3RQ
YXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZS5nZXQoMCkiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdv
cmtlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNh
Y3Rpb24tYWJvcnQtd29ya2Vycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM0MDIwMjMyNjMy
ZGQ0Y2FlZTIwYjg2Mjg3NmI3M2YyOTEwOTQ1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcnMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsODIgQEAKK1tXb3JrZXJdIFRlc3QgSW5kZXhlZERCIHdvcmtlcnMsIHJl
Y3Vyc2lvbiwgYW5kIHRyYW5zYWN0aW9uIHRlcm1pbmF0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworU3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWJv
cnQtd29ya2Vycy5qcworUEFTUyBbV29ya2VyXSAnd2Via2l0SW5kZXhlZERCJyBpbiBzZWxmIGlz
IHRydWUKK1BBU1MgW1dvcmtlcl0gd2Via2l0SW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK1BB
U1MgW1dvcmtlcl0gJ3dlYmtpdElEQkN1cnNvcicgaW4gc2VsZiBpcyB0cnVlCitQQVNTIFtXb3Jr
ZXJdIHdlYmtpdElEQkN1cnNvciA9PSBudWxsIGlzIGZhbHNlCitbV29ya2VyXSByZXF1ZXN0ID0g
d2Via2l0SW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcicpCitbV29ya2Vy
XSBkYiA9IHJlcXVlc3QucmVzdWx0CitbV29ya2VyXSByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpCitbV29ya2VyXSBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorW1dvcmtlcl0gdHJhbnMg
PSByZXF1ZXN0LnJlc3VsdAorW1dvcmtlcl0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykK
K1tXb3JrZXJdIAorW1dvcmtlcl0gY3JlYXRlVHJhbnNhY3Rpb24oKToKK1tXb3JrZXJdIHRyYW5z
YWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKK1tXb3JrZXJdIHN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK1BBU1MgW1dvcmtlcl0gVHJhbnNhY3Rpb24gYWJv
cnRlZAorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmdldCgwKQorUEFT
UyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3
ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIKK1tXb3Jr
ZXJdIAorW1dvcmtlcl0gcmVjdXJzaW9uVGVzdCgpOgorW1dvcmtlcl0gdHJhbnNhY3Rpb24gPSBk
Yi50cmFuc2FjdGlvbignc3RvcmUnKQorW1dvcmtlcl0gc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgnc3RvcmUnKQorW1dvcmtlcl0gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3JrZXJdIHRy
YW5zYWN0aW9uIGlzIGFjdGl2ZQorW1dvcmtlcl0gcmVjdXJzaW9uIGRlcHRoOiAxCitbV29ya2Vy
XSBzdG9yZS5nZXQoMCkKK1BBU1MgW1dvcmtlcl0gdHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZl
CitbV29ya2VyXSByZWN1cnNpb24gZGVwdGg6IDIKK1tXb3JrZXJdIHN0b3JlLmdldCgwKQorUEFT
UyBbV29ya2VyXSB0cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUKK1tXb3JrZXJdIHJlY3Vyc2lv
biBkZXB0aDogMworW1dvcmtlcl0gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3JrZXJdIHRyYW5zYWN0
aW9uIGlzIHN0aWxsIGFjdGl2ZQorW1dvcmtlcl0gcmVjdXJzaW9uIGRlcHRoOiAzCitbV29ya2Vy
XSBzdG9yZS5nZXQoMCkKK1BBU1MgW1dvcmtlcl0gdHJhbnNhY3Rpb24gaXMgc3RpbGwgYWN0aXZl
CitbV29ya2VyXSByZWN1cnNpb24gZGVwdGg6IDIKK1tXb3JrZXJdIHN0b3JlLmdldCgwKQorUEFT
UyBbV29ya2VyXSB0cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUKK1tXb3JrZXJdIHJlY3Vyc2lv
biBkZXB0aDogMQorW1dvcmtlcl0gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3JrZXJdIHRyYW5zYWN0
aW9uIGlzIHN0aWxsIGFjdGl2ZQorUEFTUyBbV29ya2VyXSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQK
K1tXb3JrZXJdIEV4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5nZXQoMCkKK1BBU1MgW1dv
cmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0
SURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSCitbV29ya2VyXSAK
K1tXb3JrZXJdIHRyeWluZyBhIHRpbWVvdXQgY2FsbGJhY2s6CitbV29ya2VyXSBzZXRUaW1lb3V0
KHRpbWVvdXRUZXN0LCAwKQorW1dvcmtlcl0gCitbV29ya2VyXSB0aW1lb3V0VGVzdCgpOgorW1dv
cmtlcl0gdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKQorW1dvcmtlcl0gc3Rv
cmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKQorUEFTUyBbV29ya2VyXSB0cmFu
c2FjdGlvbiBzdGFydGVkIGluIHNldFRpbWVvdXQoKSBjYWxsYmFjayBhYm9ydGVkCitbV29ya2Vy
XSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuZ2V0KDApCitQQVNTIFtXb3JrZXJdIEV4
Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtpdElEQkRhdGFi
YXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUgorW1dvcmtlcl0gCitbV29ya2Vy
XSBlcnJvclRlc3QoKToKK1tXb3JrZXJdIHNlbGYub2xkX29uZXJyb3IgPSBzZWxmLm9uZXJyb3IK
K1tXb3JrZXJdIHNlbGYub25lcnJvciA9IGVycm9ySGFuZGxlcgorW1dvcmtlcl0gCitbV29ya2Vy
XSBlcnJvckhhbmRsZXIoKToKK1tXb3JrZXJdIHNlbGYub25lcnJvciA9IHNlbGYub2xkX29uZXJy
b3IKK1tXb3JrZXJdIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykKK1tXb3Jr
ZXJdIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykKK0dvdCBleHBlY3Rl
ZCBlcnJvciBmcm9tIHdvcmtlciwgaWdub3JpbmcKK2V2ZW50LnByZXZlbnREZWZhdWx0KCkKK1BB
U1MgW1dvcmtlcl0gVHJhbnNhY3Rpb24gYWJvcnRlZAorW1dvcmtlcl0gRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIHN0b3JlLmdldCgwKQorUEFTUyBbV29ya2VyXSBFeGNlcHRpb24gd2FzIHRocm93
bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFO
U0FDVElPTl9JTkFDVElWRV9FUlIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC13b3JrZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUyMWFh
ZDk3ZmFkMDI0YzE2MTZkYzBmNmIyZThlYjQwZGMxYmNjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdvcmtlcnMuaHRt
bApAQCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3Zh
ciB3b3JrZXIgPSBzdGFydFdvcmtlcigncmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFib3J0LXdvcmtl
cnMuanMnKTsKKworLy8gRklYTUU6IEl0IHNob3VsZCBiZSBwb3NzaWJsZSBmb3IgdGhlIHdvcmtl
ciB0byBzZXQgc2VsZi5vbmVycm9yIHRvIGNhdGNoIHRoZSBldmVudAorLy8gYW5kIGNhbGwgZXZl
bnQucHJldmVudERlZmF1bHQoKSwgYnV0IGluIHRoZSBjdXJyZW50IFdvcmtlciBpbXBsZW1lbnRh
dGlvbiB0aGUgcmF3CisvLyBleGNlcHRpb24gaXMgc2VlbiBieSB0aGUgZXZlbnQgaGFuZGxlciBp
biB0aGUgd29ya2VyLCBub3QgYW4gRXJyb3JFdmVudCBvYmplY3QuCisKK3ZhciBvcmlnX29uZXJy
b3IgPSB3b3JrZXIub25lcnJvcjsKK3dvcmtlci5vbmVycm9yID0gZnVuY3Rpb24gKGV2ZW50KSB7
CisgICAgaWYgKGV2ZW50Lm1lc3NhZ2UgPT09ICJVbmNhdWdodCBFcnJvcjogaWdub3JlIHRoaXMi
KSB7CisgICAgICAgIGRlYnVnKCJHb3QgZXhwZWN0ZWQgZXJyb3IgZnJvbSB3b3JrZXIsIGlnbm9y
aW5nIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKKyAg
ICB9IGVsc2UgaWYgKG9yaWdfb25lcnJvcikgeworICAgICAgICBvcmlnX29uZXJyb3IoZXZlbnQp
OworICAgIH0KK307CisKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>