<?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>77493</bug_id>
          
          <creation_ts>2012-01-31 16:30:52 -0800</creation_ts>
          <short_desc>PopStateEvent.state should use the same object as history.state</short_desc>
          <delta_ts>2012-02-22 19:05:47 -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>DOM</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>
          <dependson>76035</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pablo Flouret">pf</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>beidson</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>546621</commentid>
    <comment_count>0</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-01-31 16:30:52 -0800</bug_when>
    <thetext>When state is added to history&apos;s dom interface, PopStateEvent should use that same deserialization for the state attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552674</commentid>
    <comment_count>1</comment_count>
      <attachid>126201</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-02-08 17:30:54 -0800</bug_when>
    <thetext>Created attachment 126201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552682</commentid>
    <comment_count>2</comment_count>
      <attachid>126201</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-08 17:37:55 -0800</bug_when>
    <thetext>Comment on attachment 126201
Patch

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

&gt; Source/WebCore/bindings/js/JSPopStateEventCustom.cpp:53
&gt; +    return jsHistory-&gt;get(exec, Identifier(exec, &quot;state&quot;));

If the web page installs a getter on the history object, does this call that getter?  (Seems like something we should test.)

&gt; Source/WebCore/bindings/v8/custom/V8PopStateEventCustom.cpp:55
&gt; +    return toV8(history).As&lt;v8::Object&gt;()-&gt;Get(v8::String::NewSymbol(&quot;state&quot;));

I would think you&apos;d want to get the hidden property rather than the real property.  The hidden property can&apos;t be manipulated by the web page where as the real property can.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552874</commentid>
    <comment_count>3</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-02-08 22:40:42 -0800</bug_when>
    <thetext>Yeah, and i found other issues as well, so i&apos;ll make more tests and maybe rethink it a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553346</commentid>
    <comment_count>4</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-02-09 11:12:20 -0800</bug_when>
    <thetext>It seems the existing behavior for PopStateEvent.state is not totally correct, or at least different to the other browsers, due to history.back et al being asynchronous.

Consider:

&lt;script&gt;
history.pushState(1, &quot;&quot;, &quot;&quot;);                                   
history.pushState(2, &quot;&quot;, &quot;&quot;);                                   
window.onpopstate = function (e) { alert(e.state); }
history.back();
history.pushState(3, &quot;&quot;, &quot;&quot;);
&lt;/script&gt;

Webkit alerts 2, gecko alerts 1, presto doesn&apos;t even fire the event (pushState(3) cancels the navigation?)

I&apos;ll try to find a better solution to the whole thing and spam some lists in the meantime to see what should happen here. In the meantime ignore the patch, it&apos;s very wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554440</commentid>
    <comment_count>5</comment_count>
      <attachid>126594</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-02-10 15:31:09 -0800</bug_when>
    <thetext>Created attachment 126594
Patch

New try. The bindings code is a bit fragile, i wonder if the first approach in 76035 (keeping the ScriptValue in HistoryItem) wasn&apos;t cleaner after all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554443</commentid>
    <comment_count>6</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-02-10 15:33:30 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 126201 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126201&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSPopStateEventCustom.cpp:53
&gt; &gt; +    return jsHistory-&gt;get(exec, Identifier(exec, &quot;state&quot;));
&gt; 
&gt; If the web page installs a getter on the history object, does this call that getter?  (Seems like something we should test.)
&gt; 

Apparently the attribute in JSC isn&apos;t configurable so there would be no way to set a custom getter, right? I modified it to call jsHistory-&gt;state() directly to be sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554449</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-02-10 15:40:05 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 126201 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126201&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/bindings/js/JSPopStateEventCustom.cpp:53
&gt; &gt; &gt; +    return jsHistory-&gt;get(exec, Identifier(exec, &quot;state&quot;));
&gt; &gt; 
&gt; &gt; If the web page installs a getter on the history object, does this call that getter?  (Seems like something we should test.)
&gt; &gt; 
&gt; 
&gt; Apparently the attribute in JSC isn&apos;t configurable so there would be no way to set a custom getter, right? I modified it to call jsHistory-&gt;state() directly to be sure.

The History IDL says history.state is readonly.  I don&apos;t think a page can install a custom getter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557634</commentid>
    <comment_count>8</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-02-15 15:27:06 -0800</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557649</commentid>
    <comment_count>9</comment_count>
      <attachid>126594</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-15 15:39:38 -0800</bug_when>
    <thetext>Comment on attachment 126594
Patch

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

This feels more complicated than it should be, but I don&apos;t immediately see a way to simplify it.  Can we try for a version that doesn&apos;t use goto?

&gt; Source/WebCore/bindings/js/JSPopStateEventCustom.cpp:50
&gt; +    History* history;
&gt; +    bool isSameState;

Generally we like to declare variables at the same time as they&apos;re initialized.  Here, we should move the History* history declaration to line 57

&gt; Source/WebCore/bindings/js/JSPopStateEventCustom.cpp:54
&gt; +        goto saveResultAndReturnIt;

There&apos;s got to be a better way to structure this code than to use goto.  Perhaps use a helper function that returns the proper result?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557775</commentid>
    <comment_count>10</comment_count>
      <attachid>127283</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-02-15 17:36:44 -0800</bug_when>
    <thetext>Created attachment 127283
Got rid of gotos</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562153</commentid>
    <comment_count>11</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-02-22 10:59:15 -0800</bug_when>
    <thetext>Ping again? :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562431</commentid>
    <comment_count>12</comment_count>
      <attachid>127283</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-22 15:11:11 -0800</bug_when>
    <thetext>Comment on attachment 127283
Got rid of gotos

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

&gt; Source/WebCore/bindings/v8/custom/V8PopStateEventCustom.cpp:53
&gt; +    v8::Handle&lt;v8::String&gt; propertyName = v8::String::NewSymbol(&quot;state&quot;);

Why not use V8HiddenPropertyNames ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562432</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-22 15:11:27 -0800</bug_when>
    <thetext>Sorry for the delay in reviewing.  One nit above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562437</commentid>
    <comment_count>14</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-02-22 15:17:16 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 127283 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127283&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/custom/V8PopStateEventCustom.cpp:53
&gt; &gt; +    v8::Handle&lt;v8::String&gt; propertyName = v8::String::NewSymbol(&quot;state&quot;);
&gt; 
&gt; Why not use V8HiddenPropertyNames ?

Wasn&apos;t aware of its existence, will use, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562524</commentid>
    <comment_count>15</comment_count>
      <attachid>128324</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-02-22 16:24:09 -0800</bug_when>
    <thetext>Created attachment 128324
Use V8HiddenPropertyName</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562531</commentid>
    <comment_count>16</comment_count>
      <attachid>128324</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-22 16:29:32 -0800</bug_when>
    <thetext>Comment on attachment 128324
Use V8HiddenPropertyName

One good way not to invalidate the previous r+ is as follows:
- Manually change the &quot;Reviewed by NOBODY&quot; line to &quot;Reviewed by Adam Barth&quot;
- Upload the patch by &apos;./webkit-patch upload ... --no-review --no-obsolete --request-commit -m &quot;patch for landing&quot;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562696</commentid>
    <comment_count>17</comment_count>
      <attachid>128324</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-22 19:05:39 -0800</bug_when>
    <thetext>Comment on attachment 128324
Use V8HiddenPropertyName

Clearing flags on attachment: 128324

Committed r108596: &lt;http://trac.webkit.org/changeset/108596&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562697</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-22 19:05:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126201</attachid>
            <date>2012-02-08 17:30:54 -0800</date>
            <delta_ts>2012-02-09 11:12:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77493-20120208173054.patch</filename>
            <type>text/plain</type>
            <size>17970</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJjMGM4ZDVhNjNlZjBl
YjgzMTYzMmFhMWI4NmExZmQ3OTRjYzdkOC4uMTljY2FlM2Y3NGE2MzYzMzllZTdjY2Y4MDQ1ZmFi
ZmI1MWQ2ZGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAyLTA4ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQb3BTdGF0ZUV2ZW50
LnN0YXRlIHNob3VsZCB1c2UgdGhlIHNhbWUgb2JqZWN0IGFzIGhpc3Rvcnkuc3RhdGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NDkzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBN
b2RpZmllZCBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRlLW9ubHktb25l
LWRlc2VyaWFsaXphdGlvbi5odG1sCisgICAgICAgIHRvIHRlc3QgdGhpcyBjYXNlIGNvcnJlY3Rs
eS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1BvcFN0YXRlRXZlbnQ6OnN0YXRlKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4UG9wU3RhdGVFdmVudDo6c3RhdGVBY2Nlc3NvckdldHRlcik6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c3RhdGVQb3BwZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmVucXVldWVQb3BzdGF0ZUV2ZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAg
ICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vUG9wU3RhdGVFdmVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQb3BTdGF0ZUV2ZW50OjpQb3BTdGF0ZUV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlBvcFN0YXRlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL1BvcFN0YXRlRXZlbnQu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUG9wU3RhdGVFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpQb3BTdGF0ZUV2ZW50OjpoaXN0b3J5KToKKyAgICAgICAgKiBoaXN0b3J5L0Nh
Y2hlZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lQmFzZTo6cmVzdG9y
ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZGlkQmVnaW5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9h
ZEluU2FtZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp0cmFuc2l0
aW9uVG9Db21taXR0ZWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAg
ICAoRnJhbWVMb2FkZXIpOgorCiAyMDEyLTAyLTA4ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgdmlld0JveCBvbiBuZXN0ZWQgU1ZHIGNhdXNlcyB3cm9uZyBjb250
ZW50IHNpemUgZm9yIHJlbGF0aXZlIHZhbHVlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKaW5kZXggMzhlZGZiNjhkZDYxZjY5
MTI4MDM5ODA0ODY3YzVkMTYwOTU3YTJhMS4uMTNhODI1MzUzZjE4MWI5ZGNjYmI1YTQzYWJhYjBi
ZDEzMTdjMzJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQb3BT
dGF0ZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bv
cFN0YXRlRXZlbnRDdXN0b20uY3BwCkBAIC0zMCw2ICszMCw4IEBACiAKICNpbmNsdWRlICJjb25m
aWcuaCIKIAorI2luY2x1ZGUgIkhpc3RvcnkuaCIKKyNpbmNsdWRlICJKU0hpc3RvcnkuaCIKICNp
bmNsdWRlICJKU1BvcFN0YXRlRXZlbnQuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTM5
LDEyICs0MSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBKU1ZhbHVlIEpTUG9wU3RhdGVFdmVu
dDo6c3RhdGUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewogICAgIFBvcFN0YXRlRXZlbnQqIGV2
ZW50ID0gc3RhdGljX2Nhc3Q8UG9wU3RhdGVFdmVudCo+KGltcGwoKSk7Ci0gICAgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU3RhdGUgPSBldmVudC0+c2VyaWFsaXplZFN0YXRlKCk7
Ci0gICAgaWYgKHNlcmlhbGl6ZWRTdGF0ZSkKLSAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZWRTdGF0
ZS0+ZGVzZXJpYWxpemUoZXhlYywgZ2xvYmFsT2JqZWN0KCksIDApOworCiAgICAgaWYgKCFldmVu
dC0+c3RhdGUoKS5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBldmVudC0+c3RhdGUoKS5q
c1ZhbHVlKCk7Ci0gICAgcmV0dXJuIGpzTnVsbCgpOworCisgICAgSGlzdG9yeSogaGlzdG9yeSA9
IGV2ZW50LT5oaXN0b3J5KCk7CisgICAgaWYgKCFoaXN0b3J5KQorICAgICAgICByZXR1cm4ganNO
dWxsKCk7CisKKyAgICBKU0hpc3RvcnkqIGpzSGlzdG9yeSA9IHN0YXRpY19jYXN0PEpTSGlzdG9y
eSo+KHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGhpc3RvcnkpLmFzQ2VsbCgpKTsKKyAgICBy
ZXR1cm4ganNIaXN0b3J5LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAic3RhdGUiKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKaW5kZXggNTdj
ZTIzOGZlZTQyZTBhNmIyMDNhZGZlMjQwYWY4OWY0YjU5N2ZmNy4uZmE1ZDBjNmM5MWM4M2E2MmM3
MWU2MDgwYjg4YzgwNjNjMjlkMGNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKQEAgLTMxLDgg
KzMxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVjhQb3BTdGF0ZUV2ZW50
LmgiCiAKKyNpbmNsdWRlICJIaXN0b3J5LmgiCiAjaW5jbHVkZSAiUG9wU3RhdGVFdmVudC5oIgog
I2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlY4SGlzdG9yeS5o
IgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsMTIg
KzQ0LDE1IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFBvcFN0YXRlRXZlbnQ6OnN0YXRlQWNj
ZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgSU5DX1NUQVRTKCJET00uUG9w
U3RhdGVFdmVudC5zdGF0ZSIpOwogCiAgICAgUG9wU3RhdGVFdmVudCogZXZlbnQgPSBWOFBvcFN0
YXRlRXZlbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSogc2VyaWFsaXplZFN0YXRlID0gZXZlbnQtPnNlcmlhbGl6ZWRTdGF0ZSgpOwotICAgIGlm
IChzZXJpYWxpemVkU3RhdGUpCi0gICAgICAgIHJldHVybiBzZXJpYWxpemVkU3RhdGUtPmRlc2Vy
aWFsaXplKCk7CisKICAgICBpZiAoIWV2ZW50LT5zdGF0ZSgpLmhhc05vVmFsdWUoKSkKICAgICAg
ICAgcmV0dXJuIGV2ZW50LT5zdGF0ZSgpLnY4VmFsdWUoKTsKLSAgICByZXR1cm4gdjg6Ok51bGwo
KTsKKworICAgIEhpc3RvcnkqIGhpc3RvcnkgPSBldmVudC0+aGlzdG9yeSgpOworICAgIGlmICgh
aGlzdG9yeSkKKyAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CisKKyAgICByZXR1cm4gdG9WOCho
aXN0b3J5KS5Bczx2ODo6T2JqZWN0PigpLT5HZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdGF0
ZSIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggMzlhOTdiMmM0ZDhhNWJlMzYzYjU4MWEwYTUwYTdkM2M1OTgxNzIyOC4uOTU3ZWE4MGM2
MGVhNzJkYjdkYzI3ZGY1OTc3OTExMTgwOTRmMzNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC03OCw2ICs3OCw3IEBACiAjaW5jbHVkZSAiR2VvbG9jYXRpb25Db250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiSGFzaENoYW5nZUV2ZW50LmgiCiAjaW5jbHVkZSAiSGlzdG9ncmFtU3VwcG9ydC5o
IgorI2luY2x1ZGUgIkhpc3RvcnkuaCIKICNpbmNsdWRlICJIVE1MQWxsQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIkhUTUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50
LmgiCkBAIC0zOTksNiArNDAwLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV90aXRs
ZVNldEV4cGxpY2l0bHkoZmFsc2UpCiAgICAgLCBtX3VwZGF0ZUZvY3VzQXBwZWFyYW5jZVRpbWVy
KHRoaXMsICZEb2N1bWVudDo6dXBkYXRlRm9jdXNBcHBlYXJhbmNlVGltZXJGaXJlZCkKICAgICAs
IG1fbG9hZEV2ZW50RmluaXNoZWQoZmFsc2UpCisgICAgLCBtX3Nob3VsZEVucXVldWVQb3BTdGF0
ZUV2ZW50KGZhbHNlKQogICAgICwgbV9zdGFydFRpbWUoY3VycmVudFRpbWUoKSkKICAgICAsIG1f
b3Zlck1pbmltdW1MYXlvdXRUaHJlc2hvbGQoZmFsc2UpCiAgICAgLCBtX3NjcmlwdFJ1bm5lcihT
Y3JpcHRSdW5uZXI6OmNyZWF0ZSh0aGlzKSkKQEAgLTIyNjksNyArMjI3MSw4IEBAIHZvaWQgRG9j
dW1lbnQ6OmltcGxpY2l0Q2xvc2UoKQogCiAgICAgZGlzcGF0Y2hXaW5kb3dMb2FkRXZlbnQoKTsK
ICAgICBlbnF1ZXVlUGFnZXNob3dFdmVudChQYWdlc2hvd0V2ZW50Tm90UGVyc2lzdGVkKTsKLSAg
ICBlbnF1ZXVlUG9wc3RhdGVFdmVudChtX3BlbmRpbmdTdGF0ZU9iamVjdCA/IG1fcGVuZGluZ1N0
YXRlT2JqZWN0LnJlbGVhc2UoKSA6IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkp
OworICAgIGVucXVldWVQb3BzdGF0ZUV2ZW50KCk7CisgICAgbV9zaG91bGRFbnF1ZXVlUG9wU3Rh
dGVFdmVudCA9IGZhbHNlOwogICAgIAogICAgIGlmIChmKQogICAgICAgICBmLT5sb2FkZXIoKS0+
aGFuZGxlZE9ubG9hZEV2ZW50cygpOwpAQCAtNDc3Miw3ICs0Nzc1LDcgQEAgdm9pZCBEb2N1bWVu
dDo6dXBkYXRlVVJMRm9yUHVzaE9yUmVwbGFjZVN0YXRlKGNvbnN0IEtVUkwmIHVybCkKICAgICAg
ICAgZG9jdW1lbnRMb2FkZXItPnJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdh
dGlvbih1cmwpOwogfQogCi12b2lkIERvY3VtZW50OjpzdGF0ZVBvcHBlZChTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIHN0YXRlT2JqZWN0KQordm9pZCBEb2N1bWVudDo6c3RhdGVQb3BwZWQoKQogewog
ICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDc4MCw5ICs0NzgzLDkgQEAg
dm9pZCBEb2N1bWVudDo6c3RhdGVQb3BwZWQoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0ZU9i
amVjdCkKICAgICAvLyBQZXIgc3RlcCAxMSBvZiBzZWN0aW9uIDYuNS45IChoaXN0b3J5IHRyYXZl
cnNhbCkgb2YgdGhlIEhUTUw1IHNwZWMsIHdlIAogICAgIC8vIGRlZmVyIGZpcmluZyBvZiBwb3Bz
dGF0ZSB1bnRpbCB3ZSdyZSBpbiB0aGUgY29tcGxldGUgc3RhdGUuCiAgICAgaWYgKG1fcmVhZHlT
dGF0ZSA9PSBDb21wbGV0ZSkKLSAgICAgICAgZW5xdWV1ZVBvcHN0YXRlRXZlbnQoc3RhdGVPYmpl
Y3QpOworICAgICAgICBlbnF1ZXVlUG9wc3RhdGVFdmVudCgpOwogICAgIGVsc2UKLSAgICAgICAg
bV9wZW5kaW5nU3RhdGVPYmplY3QgPSBzdGF0ZU9iamVjdDsKKyAgICAgICAgbV9zaG91bGRFbnF1
ZXVlUG9wU3RhdGVFdmVudCA9IHRydWU7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUZvY3Vz
QXBwZWFyYW5jZVNvb24oYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pCkBAIC01MDEwLDEw
ICs1MDEzLDEwIEBAIHZvaWQgRG9jdW1lbnQ6OmVucXVldWVIYXNoY2hhbmdlRXZlbnQoY29uc3Qg
U3RyaW5nJiBvbGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMCiAgICAgZW5xdWV1ZVdpbmRvd0V2
ZW50KEhhc2hDaGFuZ2VFdmVudDo6Y3JlYXRlKG9sZFVSTCwgbmV3VVJMKSk7CiB9CiAKLXZvaWQg
RG9jdW1lbnQ6OmVucXVldWVQb3BzdGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBzdGF0ZU9iamVjdCkKK3ZvaWQgRG9jdW1lbnQ6OmVucXVldWVQb3BzdGF0ZUV2ZW50
KCkKIHsKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM2MjAyIFBvcHN0YXRlIGV2ZW50IG5lZWRzIHRvIGZpcmUgYXN5bmNocm9ub3VzbHkKLSAg
ICBkaXNwYXRjaFdpbmRvd0V2ZW50KFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZShzdGF0ZU9iamVjdCkp
OworICAgIGRpc3BhdGNoV2luZG93RXZlbnQoUG9wU3RhdGVFdmVudDo6Y3JlYXRlKGRvbVdpbmRv
dygpID8gZG9tV2luZG93KCktPmhpc3RvcnkoKSA6IDApKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6
YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogbGlzdGVuZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGE0YmRhZDY4NWNjMzRkY2UyZGIwNmM2MjA3OWNiZGM5
ZjUxNGNlYzIuLmE5MTk0ODEzMmZiM2NiYmI0OTNjYWIwYmY1Y2Q4YzY4YWQxZjQ1ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC0xMDIxLDcgKzEwMjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRTZWN1cml0eU9yaWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPik7CiAKICAgICB2b2lk
IHVwZGF0ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0ZShjb25zdCBLVVJMJik7Ci0gICAgdm9pZCBz
dGF0ZVBvcHBlZChTZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKKyAgICB2b2lkIHN0YXRlUG9wcGVk
KCk7CiAKICAgICBib29sIHByb2Nlc3NpbmdMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX3By
b2Nlc3NpbmdMb2FkRXZlbnQ7IH0KICAgICBib29sIGxvYWRFdmVudEZpbmlzaGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9sb2FkRXZlbnRGaW5pc2hlZDsgfQpAQCAtMTA0NCw3ICsxMDQ0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZW5xdWV1ZURvY3VtZW50RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwog
ICAgIHZvaWQgZW5xdWV1ZVBhZ2VzaG93RXZlbnQoUGFnZXNob3dFdmVudFBlcnNpc3RlbmNlKTsK
ICAgICB2b2lkIGVucXVldWVIYXNoY2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiBvbGRVUkwsIGNv
bnN0IFN0cmluZyYgbmV3VVJMKTsKLSAgICB2b2lkIGVucXVldWVQb3BzdGF0ZUV2ZW50KFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCk7CisgICAgdm9pZCBlbnF1
ZXVlUG9wc3RhdGVFdmVudCgpOwogICAgIHZpcnR1YWwgRG9jdW1lbnRFdmVudFF1ZXVlKiBldmVu
dFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFF1ZXVlLmdldCgpOyB9CiAKICAgICB2b2lk
IGFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKQEAgLTEz
NDQsNyArMTM0NCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Byb2Nlc3NpbmdMb2FkRXZlbnQ7
CiAgICAgYm9vbCBtX2xvYWRFdmVudEZpbmlzaGVkOwogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbV9wZW5kaW5nU3RhdGVPYmplY3Q7CisgICAgYm9vbCBtX3Nob3VsZEVucXVl
dWVQb3BTdGF0ZUV2ZW50OworCiAgICAgZG91YmxlIG1fc3RhcnRUaW1lOwogICAgIGJvb2wgbV9v
dmVyTWluaW11bUxheW91dFRocmVzaG9sZDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2
ZW50LmNwcAppbmRleCA4ZDBjYjcyOTI0OWY1YzJlZmRmOWQyZmIyMWNlYTI0ZTE2N2Y4YmJmLi44
ODljZWJiNGYxMDBlODRmMzVkMTBlMjVjY2Y5ZThkMjIxNWUzMzA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1BvcFN0YXRlRXZlbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiUG9wU3RhdGVF
dmVudC5oIgogCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkhpc3RvcnkuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNywyNyArMzgsMjAgQEAgUG9wU3RhdGVFdmVu
dEluaXQ6OlBvcFN0YXRlRXZlbnRJbml0KCkKIAogUG9wU3RhdGVFdmVudDo6UG9wU3RhdGVFdmVu
dCgpCiAgICAgOiBFdmVudChldmVudE5hbWVzKCkucG9wc3RhdGVFdmVudCwgZmFsc2UsIHRydWUp
Ci0gICAgLCBtX3NlcmlhbGl6ZWRTdGF0ZSgwKQorICAgICwgbV9oaXN0b3J5KDApCiB7CiB9CiAK
IFBvcFN0YXRlRXZlbnQ6OlBvcFN0YXRlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAgOiBFdmVudCh0eXBlLCBp
bml0aWFsaXplcikKICAgICAsIG1fc3RhdGUoaW5pdGlhbGl6ZXIuc3RhdGUpCi0gICAgLCBtX3Nl
cmlhbGl6ZWRTdGF0ZSgwKQorICAgICwgbV9oaXN0b3J5KDApCiB7CiB9CiAKLVBvcFN0YXRlRXZl
bnQ6OlBvcFN0YXRlRXZlbnQoY29uc3QgU2NyaXB0VmFsdWUmIHN0YXRlKQorUG9wU3RhdGVFdmVu
dDo6UG9wU3RhdGVFdmVudChQYXNzUmVmUHRyPEhpc3Rvcnk+IGhpc3RvcnkpCiAgICAgOiBFdmVu
dChldmVudE5hbWVzKCkucG9wc3RhdGVFdmVudCwgZmFsc2UsIHRydWUpCi0gICAgLCBtX3N0YXRl
KHN0YXRlKQotICAgICwgbV9zZXJpYWxpemVkU3RhdGUoMCkKLXsKLX0KLQotUG9wU3RhdGVFdmVu
dDo6UG9wU3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFs
aXplZFN0YXRlKQotICAgIDogRXZlbnQoZXZlbnROYW1lcygpLnBvcHN0YXRlRXZlbnQsIGZhbHNl
LCB0cnVlKQotICAgICwgbV9zZXJpYWxpemVkU3RhdGUoc2VyaWFsaXplZFN0YXRlKQorICAgICwg
bV9oaXN0b3J5KGhpc3RvcnkpCiB7CiB9CiAKQEAgLTcwLDE2ICs2NCwxMCBAQCBQYXNzUmVmUHRy
PFBvcFN0YXRlRXZlbnQ+IFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBQb3BTdGF0ZUV2ZW50KTsKIH0KIAotUGFzc1JlZlB0cjxQb3BTdGF0ZUV2ZW50PiBQ
b3BTdGF0ZUV2ZW50OjpjcmVhdGUoY29uc3QgU2NyaXB0VmFsdWUmIHN0YXRlKQorUGFzc1JlZlB0
cjxQb3BTdGF0ZUV2ZW50PiBQb3BTdGF0ZUV2ZW50OjpjcmVhdGUoUGFzc1JlZlB0cjxIaXN0b3J5
PiBoaXN0b3J5KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUG9wU3RhdGVFdmVudChzdGF0
ZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUG9wU3RhdGVFdmVudChoaXN0b3J5KSk7CiB9
Ci0KLVBhc3NSZWZQdHI8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3JlYXRlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU3RhdGUpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQb3BTdGF0ZUV2ZW50KHNlcmlhbGl6ZWRTdGF0ZSkpOwotfQotCiBQ
YXNzUmVmUHRyPFBvcFN0YXRlRXZlbnQ+IFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0JiBpbml0aWFsaXplcikKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcFN0YXRlRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCmluZGV4IDUxMjVmYzFjYThhMDhlNDA4NDli
MTI4YTdhZWZhMTg3NTNmZjMwYmIuLjNkMGE3ZmVhY2NhZTNiYTA3NDI4YTM2MGRkMjRhY2I2ZWVk
MDkwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaApAQCAtMjksNyArMjksNiBAQAog
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUg
IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5
LDI3ICszOCwyNyBAQCBzdHJ1Y3QgUG9wU3RhdGVFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0
IHsKICAgICBTY3JpcHRWYWx1ZSBzdGF0ZTsKIH07CiAKK2NsYXNzIEhpc3Rvcnk7CisKIGNsYXNz
IFBvcFN0YXRlRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflBv
cFN0YXRlRXZlbnQoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb3BTdGF0ZUV2ZW50PiBjcmVh
dGUoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGUoY29uc3Qg
U2NyaXB0VmFsdWUmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb3BTdGF0ZUV2ZW50PiBjcmVh
dGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgUG9w
U3RhdGVFdmVudEluaXQmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb3BTdGF0ZUV2ZW50PiBj
cmVhdGUoUGFzc1JlZlB0cjxIaXN0b3J5Pik7CiAKLSAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IHNlcmlhbGl6ZWRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VyaWFsaXplZFN0YXRlLmdldCgp
OyB9CiAgICAgU2NyaXB0VmFsdWUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9Cisg
ICAgSGlzdG9yeSogaGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faGlzdG9yeS5nZXQoKTsgfQog
CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsK
IAogcHJpdmF0ZToKICAgICBQb3BTdGF0ZUV2ZW50KCk7CiAgICAgUG9wU3RhdGVFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmLCBjb25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYpOwotICAgIGV4cGxpY2l0
IFBvcFN0YXRlRXZlbnQoY29uc3QgU2NyaXB0VmFsdWUmKTsKLSAgICBleHBsaWNpdCBQb3BTdGF0
ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CisgICAgZXhwbGljaXQg
UG9wU3RhdGVFdmVudChQYXNzUmVmUHRyPEhpc3Rvcnk+KTsKIAogICAgIFNjcmlwdFZhbHVlIG1f
c3RhdGU7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9zZXJpYWxpemVkU3Rh
dGU7CisgICAgUmVmUHRyPEhpc3Rvcnk+IG1faGlzdG9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggNjBmYWIw
NDNmOTAwMjA5MTQxNDE0NTkwMzdhNTJhZDhhYTJmYmFiMy4uYjYwMmJjZWM1OGNmMTVlMDc2MzJh
YmZiYTYwNzY3NGY2OGViZGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9D
YWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5j
cHAKQEAgLTEyOCw5ICsxMjgsNyBAQCB2b2lkIENhY2hlZEZyYW1lQmFzZTo6cmVzdG9yZSgpCiAg
ICAgICAgIG1fY2hpbGRGcmFtZXNbaV0tPm9wZW4oKTsKIAogICAgIG1fZG9jdW1lbnQtPmVucXVl
dWVQYWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnRQZXJzaXN0ZWQpOwotICAgIAotICAgIEhpc3Rv
cnlJdGVtKiBoaXN0b3J5SXRlbSA9IGZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5jdXJyZW50
SXRlbSgpOwotICAgIG1fZG9jdW1lbnQtPmVucXVldWVQb3BzdGF0ZUV2ZW50KGhpc3RvcnlJdGVt
ICYmIGhpc3RvcnlJdGVtLT5zdGF0ZU9iamVjdCgpID8gaGlzdG9yeUl0ZW0tPnN0YXRlT2JqZWN0
KCkgOiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpKTsKKyAgICBtX2RvY3VtZW50
LT5lbnF1ZXVlUG9wc3RhdGVFdmVudCgpOwogICAgIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CiAgICAgaWYgKG1fZG9jdW1lbnQtPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6VE9VQ0hfTElT
VEVORVIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggY2QyMjhkNGJh
OGRmZjBjYjI1ZjU1NTk2ODM1NGRkNjM4MmQwZDM2MS4uMmRiNTEyNmIxNDkyZDAxZGUyNDRhZWVk
NDI5Yzk4ZjU0YzNlMzA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBA
IC0xODUsNiArMTg1LDcgQEAgRnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKEZyYW1lKiBmcmFtZSwg
RnJhbWVMb2FkZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1fcGFnZURpc21pc3NhbEV2ZW50QmVp
bmdEaXNwYXRjaGVkKE5vRGlzbWlzc2FsKQogICAgICwgbV9pc0NvbXBsZXRlKGZhbHNlKQogICAg
ICwgbV9pc0xvYWRpbmdNYWluUmVzb3VyY2UoZmFsc2UpCisgICAgLCBtX3Nob3VsZFBvcFN0YXRl
KGZhbHNlKQogICAgICwgbV9oYXNSZWNlaXZlZEZpcnN0RGF0YShmYWxzZSkKICAgICAsIG1fbmVl
ZHNDbGVhcihmYWxzZSkKICAgICAsIG1fY2hlY2tUaW1lcih0aGlzLCAmRnJhbWVMb2FkZXI6OmNo
ZWNrVGltZXJGaXJlZCkKQEAgLTYyNCw5ICs2MjUsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRC
ZWdpbkRvY3VtZW50KGJvb2wgZGlzcGF0Y2gpCiAgICAgbV9pc0xvYWRpbmdNYWluUmVzb3VyY2Ug
PSB0cnVlOwogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNldFJlYWR5U3RhdGUoRG9jdW1lbnQ6
OkxvYWRpbmcpOwogCi0gICAgaWYgKG1fcGVuZGluZ1N0YXRlT2JqZWN0KSB7Ci0gICAgICAgIG1f
ZnJhbWUtPmRvY3VtZW50KCktPnN0YXRlUG9wcGVkKG1fcGVuZGluZ1N0YXRlT2JqZWN0LmdldCgp
KTsKLSAgICAgICAgbV9wZW5kaW5nU3RhdGVPYmplY3QuY2xlYXIoKTsKKyAgICBpZiAobV9zaG91
bGRQb3BTdGF0ZSkgeworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zdGF0ZVBvcHBlZCgp
OworICAgICAgICBtX3Nob3VsZFBvcFN0YXRlID0gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGRp
c3BhdGNoKQpAQCAtMTA1NSw3ICsxMDU2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2Ft
ZURvY3VtZW50KGNvbnN0IEtVUkwmIHVybCwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGEKIAog
ICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE5hdmlnYXRlV2l0aGluUGFnZSgpOwogCi0gICAgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+c3RhdGVQb3BwZWQoc3RhdGVPYmplY3QgPyBzdGF0ZU9iamVjdCA6
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOworICAgIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPnN0YXRlUG9wcGVkKCk7CiAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkUG9wU3RhdGVX
aXRoaW5QYWdlKCk7CiAgICAgCiAgICAgaWYgKGhhc2hDaGFuZ2UpIHsKQEAgLTE4ODUsOCArMTg4
Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZChQYXNzUmVmUHRy
PENhY2hlZFBhZ2U+IGNhY2hlZFBhZ2UpCiAgICAgICAgICAgICAgICAgaGlzdG9yeSgpLT51cGRh
dGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24oKTsKIAogICAgICAgICAgICAgICAgIC8vIEZvciBj
YWNoZWQgcGFnZXMsIENhY2hlZEZyYW1lOjpyZXN0b3JlIHdpbGwgdGFrZSBjYXJlIG9mIGZpcmlu
ZyB0aGUgcG9wc3RhdGUgZXZlbnQgd2l0aCB0aGUgaGlzdG9yeSBpdGVtJ3Mgc3RhdGUgb2JqZWN0
Ci0gICAgICAgICAgICAgICAgaWYgKGhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKSAmJiAhY2FjaGVk
UGFnZSkKLSAgICAgICAgICAgICAgICAgICAgbV9wZW5kaW5nU3RhdGVPYmplY3QgPSBoaXN0b3J5
KCktPmN1cnJlbnRJdGVtKCktPnN0YXRlT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgbV9zaG91
bGRQb3BTdGF0ZSA9IGhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKSAmJiAhY2FjaGVkUGFnZTsKIAog
ICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGRvY3VtZW50IHZpZXcgZm9yIHRoaXMgZG9jdW1l
bnQsIG9yIHVzZWQgdGhlIGNhY2hlZCB2aWV3LgogICAgICAgICAgICAgICAgIGlmIChjYWNoZWRQ
YWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDIxODAyOGM2NDcyZjk1
ZmI0NjNmZTEwNzViYTk4ZTY0N2M0Y2MzYjkuLmExZjA5ODRjY2UwZGYwODhkNGRhNDY0ZDAyMDkz
Y2ViYzM3ZDEyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC00MDksNyAr
NDA5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNDb21wbGV0ZTsKICAgICBib29sIG1faXNM
b2FkaW5nTWFpblJlc291cmNlOwogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bV9wZW5kaW5nU3RhdGVPYmplY3Q7CisgICAgYm9vbCBtX3Nob3VsZFBvcFN0YXRlOwogCiAgICAg
Ym9vbCBtX2hhc1JlY2VpdmVkRmlyc3REYXRhOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjIxNGQxN2RjNzgyY2UzYWZj
MWU4MThiNzI2ZWQzYWYzZjEwNDQ4OS4uY2E5MTM4YWE0ZjM4ODU1ZWE5YjcyY2ExZDgyYjMzMzA0
ZmE0Njk0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAyLTA4ICBQYWJsbyBGbG91cmV0
ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQb3BTdGF0ZUV2ZW50LnN0YXRlIHNo
b3VsZCB1c2UgdGhlIHNhbWUgb2JqZWN0IGFzIGhpc3Rvcnkuc3RhdGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NDkzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvc3RhdGUtYXR0cmlidXRlLW9ubHktb25lLWRlc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1vbmx5
LW9uZS1kZXNlcmlhbGl6YXRpb24uaHRtbDoKKwogMjAxMi0wMi0wOCAgSnVsaWVuIENoYWZmcmFp
eCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRlbmlu
Zy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0
ZS1hdHRyaWJ1dGUtb25seS1vbmUtZGVzZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtb25seS1vbmUt
ZGVzZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCBlM2QwMTE3Zjk5ZGQ4ZmFiYTZiZDUy
NDRmZDc0NWM3NGRhNjlkZmMwLi4xNTkxNTVlOWJkNDU0OWVkNjVkNmFjOGFjZmE2ODYwZTlhZDM0
OGJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3Rh
dGUtYXR0cmlidXRlLW9ubHktb25lLWRlc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1vbmx5
LW9uZS1kZXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0xMiw3ICsxMiw3IEBAIEluc2lk
ZSBwb3BzdGF0ZSBldmVudAogCiBQQVNTIGhpc3Rvcnkuc3RhdGUgIT09IHN0YXRlT2JqZWN0IGlz
IHRydWUKIFBBU1MgcG9wU3RhdGVFdmVudC5zdGF0ZSAhPT0gc3RhdGVPYmplY3QgaXMgdHJ1ZQot
RkFJTCBwb3BTdGF0ZUV2ZW50LnN0YXRlID09PSBoaXN0b3J5LnN0YXRlIHNob3VsZCBiZSB0cnVl
LiBXYXMgZmFsc2UuCitQQVNTIHBvcFN0YXRlRXZlbnQuc3RhdGUgPT09IGhpc3Rvcnkuc3RhdGUg
aXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUt
YXR0cmlidXRlLW9ubHktb25lLWRlc2VyaWFsaXphdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1vbmx5LW9uZS1kZXNlcmlhbGl6
YXRpb24uaHRtbAppbmRleCAwODM3MjFkMzgzNDg5NjAwMmI2YmY1YjIzNTkxMTAyYjFjM2ZlYWRj
Li45NTI5NDk1N2IzMjIwOWNlMzFiYzBmOTJjNGJlMjFhYWM0ODc1MjcyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRlLW9ubHkt
b25lLWRlc2VyaWFsaXphdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0
YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtb25seS1vbmUtZGVzZXJpYWxpemF0aW9uLmh0bWwK
QEAgLTQ1LDcgKzQ1LDcgQEAKICAgICAgICAgLy8gT3VyIHN0b3JlZCByZWZlcmVuY2UgdG8gc3Rh
dGVPYmplY3Qgd2lsbCBub3QgbWF0Y2ggdGhlIHN0YXRlIG9iamVjdCBpbiB0aGlzIHBvcCBzdGF0
ZSBldmVudCwgYXMgaXQgaXMgdGhlIHNhbWUgYXMgaGlzdG9yeS5zdGF0ZSB3aGljaCBpcyBhIHN0
cnVjdHVyZWQgY2xvbmUgb2YgdGhlIGhpc3RvcnkgaXRlbSdzIHN0YXRlIG9iamVjdC4KICAgICAg
ICAgc2hvdWxkQmVUcnVlKCJwb3BTdGF0ZUV2ZW50LnN0YXRlICE9PSBzdGF0ZU9iamVjdCIpOwog
ICAgICAgICAvLyBUaGUgZXZlbnQncyBzdGF0ZSBvYmplY3QgYW5kIHRoZSBjdXJyZW50IHN0YXRl
IG9iamVjdCBzaG91bGQgbWF0Y2guCi0gICAgICAgIHNob3VsZEJlVHJ1ZSgicG9wU3RhdGVFdmVu
dC5zdGF0ZSA9PT0gaGlzdG9yeS5zdGF0ZSIpOyAvLyBUaGlzIGZhaWxzIGZvciBub3csIG5lZWRz
IHRvIGJlIGZpeGVkLgorICAgICAgICBzaG91bGRCZVRydWUoInBvcFN0YXRlRXZlbnQuc3RhdGUg
PT09IGhpc3Rvcnkuc3RhdGUiKTsKIAogICAgICAgICB2YXIgcyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNjcmlwdCIpOwogICAgICAgICBzLnNyYyA9ICIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIjsK
</data>
<flag name="review"
          id="127952"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126594</attachid>
            <date>2012-02-10 15:31:09 -0800</date>
            <delta_ts>2012-02-15 17:36:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77493-20120210153107.patch</filename>
            <type>text/plain</type>
            <size>20986</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJjMGM4ZDVhNjNlZjBl
YjgzMTYzMmFhMWI4NmExZmQ3OTRjYzdkOC4uZDZjNjA1MzJlOGYzNzZmYzgwMGQ4YzdlMGQxMGFh
MzEwODBkOTcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAyLTEwICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQb3BTdGF0ZUV2ZW50
LnN0YXRlIHNob3VsZCB1c2UgdGhlIHNhbWUgb2JqZWN0IGFzIGhpc3Rvcnkuc3RhdGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NDkzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtaGlzdG9yeS1nZXR0ZXIuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1wb3Bz
dGF0ZS1ldmVudC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNQb3BTdGF0ZUV2ZW50OjpzdGF0ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFBvcFN0YXRlRXZlbnQ6OnN0YXRlQWNjZXNzb3JHZXR0ZXIpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
ZW5xdWV1ZVBvcHN0YXRlRXZlbnQpOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBvcFN0YXRlRXZlbnQ6OlBvcFN0YXRlRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UG9wU3RhdGVFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBkb20vUG9wU3Rh
dGVFdmVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQb3BTdGF0ZUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlBvcFN0YXRlRXZlbnQ6Omhpc3RvcnkpOgorICAgICAgICAqIGRv
bS9Qb3BTdGF0ZUV2ZW50LmlkbDoKKyAgICAgICAgKiBwYWdlL0hpc3RvcnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SGlzdG9yeTo6c3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeTo6aXNTYW1lQXNDdXJyZW50U3RhdGUpOgorICAgICAg
ICAqIHBhZ2UvSGlzdG9yeS5oOgorICAgICAgICAoSGlzdG9yeSk6CisKIDIwMTItMDItMDggIERp
cmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICB2aWV3Qm94IG9uIG5lc3Rl
ZCBTVkcgY2F1c2VzIHdyb25nIGNvbnRlbnQgc2l6ZSBmb3IgcmVsYXRpdmUgdmFsdWVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNw
cAppbmRleCAzOGVkZmI2OGRkNjFmNjkxMjgwMzk4MDQ4NjdjNWQxNjA5NTdhMmExLi4yNTM5MDMx
ZDJmZDEyMjdkMDQ3ZWM5MmUwMWY4NWNjYjg2MjIzZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKQEAgLTMwLDYgKzMw
LDggQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisjaW5jbHVkZSAiSGlzdG9yeS5oIgorI2lu
Y2x1ZGUgIkpTSGlzdG9yeS5oIgogI2luY2x1ZGUgIkpTUG9wU3RhdGVFdmVudC5oIgogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwpAQCAtMzgsMTMgKzQwLDQxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogSlNWYWx1ZSBKU1BvcFN0YXRlRXZlbnQ6OnN0YXRlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
IHsKKyAgICBKU1ZhbHVlIGNhY2hlZFZhbHVlID0gbV9zdGF0ZS5nZXQoKTsKKyAgICBpZiAoIWNh
Y2hlZFZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGNhY2hlZFZhbHVlOworCiAgICAg
UG9wU3RhdGVFdmVudCogZXZlbnQgPSBzdGF0aWNfY2FzdDxQb3BTdGF0ZUV2ZW50Kj4oaW1wbCgp
KTsKLSAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTdGF0ZSA9IGV2ZW50LT5z
ZXJpYWxpemVkU3RhdGUoKTsKLSAgICBpZiAoc2VyaWFsaXplZFN0YXRlKQotICAgICAgICByZXR1
cm4gc2VyaWFsaXplZFN0YXRlLT5kZXNlcmlhbGl6ZShleGVjLCBnbG9iYWxPYmplY3QoKSwgMCk7
Ci0gICAgaWYgKCFldmVudC0+c3RhdGUoKS5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBl
dmVudC0+c3RhdGUoKS5qc1ZhbHVlKCk7Ci0gICAgcmV0dXJuIGpzTnVsbCgpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdWxsKCk7CisgICAgSGlzdG9yeSogaGlzdG9yeTsKKyAgICBib29sIGlz
U2FtZVN0YXRlOworCisgICAgaWYgKCFldmVudC0+c3RhdGUoKS5oYXNOb1ZhbHVlKCkpIHsKKyAg
ICAgICAgcmVzdWx0ID0gZXZlbnQtPnN0YXRlKCkuanNWYWx1ZSgpOworICAgICAgICBnb3RvIHNh
dmVSZXN1bHRBbmRSZXR1cm5JdDsKKyAgICB9CisKKyAgICBoaXN0b3J5ID0gZXZlbnQtPmhpc3Rv
cnkoKTsKKyAgICBpZiAoIWhpc3RvcnkgfHwgIWV2ZW50LT5zZXJpYWxpemVkU3RhdGUoKSkKKyAg
ICAgICAgZ290byBzYXZlUmVzdWx0QW5kUmV0dXJuSXQ7CisKKyAgICAvLyBUaGVyZSdzIG5vIGNh
Y2hlZCB2YWx1ZSBmcm9tIGEgcHJldmlvdXMgaW52b2NhdGlvbiwgbm9yIGEgc3RhdGUgdmFsdWUg
d2FzIHByb3ZpZGVkIGJ5IHRoZQorICAgIC8vIGV2ZW50LCBidXQgdGhlcmUgaXMgYSBoaXN0b3J5
IG9iamVjdCwgc28gZmlyc3Qgd2UgbmVlZCB0byBzZWUgaWYgdGhlIHN0YXRlIG9iamVjdCBoYXMg
YmVlbgorICAgIC8vIGRlc2VyaWFsaXplZCB0aHJvdWdoIHRoZSBoaXN0b3J5IG9iamVjdCBhbHJl
YWR5LgorICAgIC8vIFRoZSBjdXJyZW50IGhpc3Rvcnkgc3RhdGUgb2JqZWN0IG1pZ2h0J3ZlIGNo
YW5nZWQgaW4gdGhlIG1lYW50aW1lLCBzbyB3ZSBuZWVkIHRvIHRha2UgY2FyZQorICAgIC8vIG9m
IHVzaW5nIHRoZSBjb3JyZWN0IG9uZSwgYW5kIGFsd2F5cyBzaGFyZSB0aGUgc2FtZSBkZXNlcmlh
bGl6YXRpb24gd2l0aCBoaXN0b3J5LnN0YXRlLgorCisgICAgaXNTYW1lU3RhdGUgPSBoaXN0b3J5
LT5pc1NhbWVBc0N1cnJlbnRTdGF0ZShldmVudC0+c2VyaWFsaXplZFN0YXRlKCkpOworCisgICAg
aWYgKGlzU2FtZVN0YXRlKSB7CisgICAgICAgIEpTSGlzdG9yeSoganNIaXN0b3J5ID0gc3RhdGlj
X2Nhc3Q8SlNIaXN0b3J5Kj4odG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaGlzdG9yeSkuYXND
ZWxsKCkpOworICAgICAgICByZXN1bHQgPSBqc0hpc3RvcnktPnN0YXRlKGV4ZWMpOworICAgIH0g
ZWxzZQorICAgICAgICByZXN1bHQgPSBldmVudC0+c2VyaWFsaXplZFN0YXRlKCktPmRlc2VyaWFs
aXplKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCAwKTsKKworc2F2ZVJlc3VsdEFuZFJldHVybkl0Ogor
ICAgIGNvbnN0X2Nhc3Q8SlNQb3BTdGF0ZUV2ZW50Kj4odGhpcyktPm1fc3RhdGUuc2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgdGhpcywgcmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwCmluZGV4IDU3Y2UyMzhm
ZWU0MmUwYTZiMjAzYWRmZTI0MGFmODlmNGI1OTdmZjcuLjJkZGNmYTc4MjQwNTJhMjk2MTVmZjI3
ZmExMTZiYWU1NTM4MTM5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwCkBAIC0zMSw4ICszMSwx
MCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlY4UG9wU3RhdGVFdmVudC5oIgog
CisjaW5jbHVkZSAiSGlzdG9yeS5oIgogI2luY2x1ZGUgIlBvcFN0YXRlRXZlbnQuaCIKICNpbmNs
dWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJWOEhpc3RvcnkuaCIKICNp
bmNsdWRlICJWOFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQxLDEzICs0Myw1
MCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhQb3BTdGF0ZUV2ZW50OjpzdGF0ZUFjY2Vzc29y
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogewogICAgIElOQ19TVEFUUygiRE9NLlBvcFN0
YXRlRXZlbnQuc3RhdGUiKTsKIAorICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gcHJvcGVydHlO
YW1lID0gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdGF0ZSIpOworICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiByZXN1bHQgPSBpbmZvLkhvbGRlcigpLT5HZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5h
bWUpOworCisgICAgaWYgKCFyZXN1bHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gcmVzdWx0
OworCiAgICAgUG9wU3RhdGVFdmVudCogZXZlbnQgPSBWOFBvcFN0YXRlRXZlbnQ6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFN0
YXRlID0gZXZlbnQtPnNlcmlhbGl6ZWRTdGF0ZSgpOwotICAgIGlmIChzZXJpYWxpemVkU3RhdGUp
Ci0gICAgICAgIHJldHVybiBzZXJpYWxpemVkU3RhdGUtPmRlc2VyaWFsaXplKCk7Ci0gICAgaWYg
KCFldmVudC0+c3RhdGUoKS5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBldmVudC0+c3Rh
dGUoKS52OFZhbHVlKCk7Ci0gICAgcmV0dXJuIHY4OjpOdWxsKCk7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB2OEhpc3Rvcnk7CisgICAgSGlzdG9yeSogaGlzdG9yeTsKKyAgICBib29sIGlz
U2FtZVN0YXRlOworICAgIHJlc3VsdCA9IHY4OjpOdWxsKCk7CisKKyAgICBpZiAoIWV2ZW50LT5z
dGF0ZSgpLmhhc05vVmFsdWUoKSkgeworICAgICAgICByZXN1bHQgPSBldmVudC0+c3RhdGUoKS52
OFZhbHVlKCk7CisgICAgICAgIGdvdG8gc2F2ZVJlc3VsdEFuZFJldHVybkl0OworICAgIH0KKwor
ICAgIGhpc3RvcnkgPSBldmVudC0+aGlzdG9yeSgpOworICAgIGlmICghaGlzdG9yeSB8fCAhZXZl
bnQtPnNlcmlhbGl6ZWRTdGF0ZSgpKQorICAgICAgICBnb3RvIHNhdmVSZXN1bHRBbmRSZXR1cm5J
dDsKKworICAgIC8vIFRoZXJlJ3Mgbm8gY2FjaGVkIHZhbHVlIGZyb20gYSBwcmV2aW91cyBpbnZv
Y2F0aW9uLCBub3IgYSBzdGF0ZSB2YWx1ZSB3YXMgcHJvdmlkZWQgYnkgdGhlCisgICAgLy8gZXZl
bnQsIGJ1dCB0aGVyZSBpcyBhIGhpc3Rvcnkgb2JqZWN0LCBzbyBmaXJzdCB3ZSBuZWVkIHRvIHNl
ZSBpZiB0aGUgc3RhdGUgb2JqZWN0IGhhcyBiZWVuCisgICAgLy8gZGVzZXJpYWxpemVkIHRocm91
Z2ggdGhlIGhpc3Rvcnkgb2JqZWN0IGFscmVhZHkuCisgICAgLy8gVGhlIGN1cnJlbnQgaGlzdG9y
eSBzdGF0ZSBvYmplY3QgbWlnaHQndmUgY2hhbmdlZCBpbiB0aGUgbWVhbnRpbWUsIHNvIHdlIG5l
ZWQgdG8gdGFrZSBjYXJlCisgICAgLy8gb2YgdXNpbmcgdGhlIGNvcnJlY3Qgb25lLCBhbmQgYWx3
YXlzIHNoYXJlIHRoZSBzYW1lIGRlc2VyaWFsaXphdGlvbiB3aXRoIGhpc3Rvcnkuc3RhdGUuCisK
KyAgICBpc1NhbWVTdGF0ZSA9IGhpc3RvcnktPmlzU2FtZUFzQ3VycmVudFN0YXRlKGV2ZW50LT5z
ZXJpYWxpemVkU3RhdGUoKSk7CisKKyAgICBpZiAoaXNTYW1lU3RhdGUpIHsKKyAgICAgICAgdjhI
aXN0b3J5ID0gdG9WOChoaXN0b3J5KS5Bczx2ODo6T2JqZWN0PigpOworICAgICAgICBpZiAoIWhp
c3RvcnktPnN0YXRlQ2hhbmdlZCgpKSB7CisgICAgICAgICAgICByZXN1bHQgPSB2OEhpc3Rvcnkt
PkdldEhpZGRlblZhbHVlKHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5J
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgZ290byBzYXZlUmVzdWx0QW5kUmV0dXJuSXQ7Cisg
ICAgICAgIH0KKyAgICAgICAgcmVzdWx0ID0gZXZlbnQtPnNlcmlhbGl6ZWRTdGF0ZSgpLT5kZXNl
cmlhbGl6ZSgpOworICAgICAgICB2OEhpc3RvcnktPlNldEhpZGRlblZhbHVlKHByb3BlcnR5TmFt
ZSwgcmVzdWx0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0gZXZlbnQtPnNlcmlhbGl6
ZWRTdGF0ZSgpLT5kZXNlcmlhbGl6ZSgpOworCitzYXZlUmVzdWx0QW5kUmV0dXJuSXQ6CisgICAg
aW5mby5Ib2xkZXIoKS0+U2V0SGlkZGVuVmFsdWUocHJvcGVydHlOYW1lLCByZXN1bHQpOworICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDM5YTk3YjJjNGQ4YTViZTM2M2I1ODFhMGE1MGE3ZDNjNTk4MTcyMjgu
Ljk5MDU2MjhjNjgxN2Y3MTM0OTA2OTEyMTAzZDA2MmE2YjQ0MmFiOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNzgsNiArNzgsNyBAQAogI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIkhhc2hDaGFuZ2VFdmVudC5oIgogI2luY2x1ZGUgIkhpc3RvZ3Jh
bVN1cHBvcnQuaCIKKyNpbmNsdWRlICJIaXN0b3J5LmgiCiAjaW5jbHVkZSAiSFRNTEFsbENvbGxl
Y3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxC
b2R5RWxlbWVudC5oIgpAQCAtNTAxMyw3ICs1MDE0LDcgQEAgdm9pZCBEb2N1bWVudDo6ZW5xdWV1
ZUhhc2hjaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIG9sZFVSTCwgY29uc3QgU3RyaW5nJiBuZXdV
UkwKIHZvaWQgRG9jdW1lbnQ6OmVucXVldWVQb3BzdGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCkKIHsKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MjAyIFBvcHN0YXRlIGV2ZW50IG5lZWRz
IHRvIGZpcmUgYXN5bmNocm9ub3VzbHkKLSAgICBkaXNwYXRjaFdpbmRvd0V2ZW50KFBvcFN0YXRl
RXZlbnQ6OmNyZWF0ZShzdGF0ZU9iamVjdCkpOworICAgIGRpc3BhdGNoV2luZG93RXZlbnQoUG9w
U3RhdGVFdmVudDo6Y3JlYXRlKHN0YXRlT2JqZWN0LCBkb21XaW5kb3coKSA/IGRvbVdpbmRvdygp
LT5oaXN0b3J5KCkgOiAwKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmFkZE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqIGxpc3RlbmVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bv
cFN0YXRlRXZlbnQuY3BwCmluZGV4IDhkMGNiNzI5MjQ5ZjVjMmVmZGY5ZDJmYjIxY2VhMjRlMTY3
ZjhiYmYuLmQxZTBjNzU4YTQ5NzY2YzZmNmZmMTU2ZTgzZDZhNjY2NTdkNmIxNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNsdWRlICJQ
b3BTdGF0ZUV2ZW50LmgiCiAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiSGlz
dG9yeS5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTM4LDYgKzQwLDcgQEAgUG9wU3RhdGVFdmVudEluaXQ6OlBvcFN0YXRl
RXZlbnRJbml0KCkKIFBvcFN0YXRlRXZlbnQ6OlBvcFN0YXRlRXZlbnQoKQogICAgIDogRXZlbnQo
ZXZlbnROYW1lcygpLnBvcHN0YXRlRXZlbnQsIGZhbHNlLCB0cnVlKQogICAgICwgbV9zZXJpYWxp
emVkU3RhdGUoMCkKKyAgICAsIG1faGlzdG9yeSgwKQogewogfQogCkBAIC00NSwxOSArNDgsMTQg
QEAgUG9wU3RhdGVFdmVudDo6UG9wU3RhdGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0JgogICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIp
CiAgICAgLCBtX3N0YXRlKGluaXRpYWxpemVyLnN0YXRlKQogICAgICwgbV9zZXJpYWxpemVkU3Rh
dGUoMCkKKyAgICAsIG1faGlzdG9yeSgwKQogewogfQogCi1Qb3BTdGF0ZUV2ZW50OjpQb3BTdGF0
ZUV2ZW50KGNvbnN0IFNjcmlwdFZhbHVlJiBzdGF0ZSkKLSAgICA6IEV2ZW50KGV2ZW50TmFtZXMo
KS5wb3BzdGF0ZUV2ZW50LCBmYWxzZSwgdHJ1ZSkKLSAgICAsIG1fc3RhdGUoc3RhdGUpCi0gICAg
LCBtX3NlcmlhbGl6ZWRTdGF0ZSgwKQotewotfQotCi1Qb3BTdGF0ZUV2ZW50OjpQb3BTdGF0ZUV2
ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU3RhdGUpCitQ
b3BTdGF0ZUV2ZW50OjpQb3BTdGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzZXJpYWxpemVkU3RhdGUsIFBhc3NSZWZQdHI8SGlzdG9yeT4gaGlzdG9yeSkKICAgICA6
IEV2ZW50KGV2ZW50TmFtZXMoKS5wb3BzdGF0ZUV2ZW50LCBmYWxzZSwgdHJ1ZSkKICAgICAsIG1f
c2VyaWFsaXplZFN0YXRlKHNlcmlhbGl6ZWRTdGF0ZSkKKyAgICAsIG1faGlzdG9yeShoaXN0b3J5
KQogewogfQogCkBAIC03MCwxNCArNjgsOSBAQCBQYXNzUmVmUHRyPFBvcFN0YXRlRXZlbnQ+IFBv
cFN0YXRlRXZlbnQ6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3BTdGF0ZUV2
ZW50KTsKIH0KIAotUGFzc1JlZlB0cjxQb3BTdGF0ZUV2ZW50PiBQb3BTdGF0ZUV2ZW50OjpjcmVh
dGUoY29uc3QgU2NyaXB0VmFsdWUmIHN0YXRlKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UG9wU3RhdGVFdmVudChzdGF0ZSkpOwotfQotCi1QYXNzUmVmUHRyPFBvcFN0YXRlRXZlbnQ+IFBv
cFN0YXRlRXZlbnQ6OmNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2Vy
aWFsaXplZFN0YXRlKQorUGFzc1JlZlB0cjxQb3BTdGF0ZUV2ZW50PiBQb3BTdGF0ZUV2ZW50Ojpj
cmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTdGF0ZSwg
UGFzc1JlZlB0cjxIaXN0b3J5PiBoaXN0b3J5KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UG9wU3RhdGVFdmVudChzZXJpYWxpemVkU3RhdGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFBvcFN0YXRlRXZlbnQoc2VyaWFsaXplZFN0YXRlLCBoaXN0b3J5KSk7CiB9CiAKIFBhc3NSZWZQ
dHI8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgY29uc3QgUG9wU3RhdGVFdmVudEluaXQmIGluaXRpYWxpemVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3BTdGF0ZUV2ZW50LmgKaW5kZXggNTEyNWZjMWNhOGEwOGU0MDg0OWIxMjhhN2FlZmExODc1
M2ZmMzBiYi4uOGRlMGFlNmQxY2M1N2ExYmFjZWY2NWRkOTc5MzI0M2FjOGU1MzAwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9wU3RhdGVFdmVudC5oCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJF
dmVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzksMjcgKzM4LDMwIEBA
IHN0cnVjdCBQb3BTdGF0ZUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewogICAgIFNjcmlw
dFZhbHVlIHN0YXRlOwogfTsKIAorY2xhc3MgSGlzdG9yeTsKK2NsYXNzIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTsKKwogY2xhc3MgUG9wU3RhdGVFdmVudCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+UG9wU3RhdGVFdmVudCgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBv
cFN0YXRlRXZlbnQ+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvcFN0YXRlRXZl
bnQ+IGNyZWF0ZShjb25zdCBTY3JpcHRWYWx1ZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBv
cFN0YXRlRXZlbnQ+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SGlzdG9yeT4pOwogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25z
dCBQb3BTdGF0ZUV2ZW50SW5pdCYpOwogCiAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJp
YWxpemVkU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcmlhbGl6ZWRTdGF0ZS5nZXQoKTsgfQog
ICAgIFNjcmlwdFZhbHVlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQorICAgIEhp
c3RvcnkqIGhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2hpc3RvcnkuZ2V0KCk7IH0KIAogICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAKIHBy
aXZhdGU6CiAgICAgUG9wU3RhdGVFdmVudCgpOwogICAgIFBvcFN0YXRlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiwgY29uc3QgUG9wU3RhdGVFdmVudEluaXQmKTsKLSAgICBleHBsaWNpdCBQb3BT
dGF0ZUV2ZW50KGNvbnN0IFNjcmlwdFZhbHVlJik7Ci0gICAgZXhwbGljaXQgUG9wU3RhdGVFdmVu
dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOworICAgIGV4cGxpY2l0IFBvcFN0
YXRlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPEhp
c3Rvcnk+KTsKIAogICAgIFNjcmlwdFZhbHVlIG1fc3RhdGU7CiAgICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbV9zZXJpYWxpemVkU3RhdGU7CisgICAgUmVmUHRyPEhpc3Rvcnk+IG1f
aGlzdG9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BT
dGF0ZUV2ZW50LmlkbAppbmRleCA2MzI2YTlkN2E0NjAxZDI4NmJlMTc4ZmVlNmNiOTU1ZmE3MWIx
ODcyLi5jOTM0M2NhODBlZDE3OTI0MmIxZGI0ZjViMTY3ZWU4YzY2MDNhNTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1BvcFN0YXRlRXZlbnQuaWRsCkBAIC0zMCw3ICszMCw3IEBAIG1vZHVsZSBldmVudHMg
ewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQKICAg
ICBdIFBvcFN0YXRlRXZlbnQgOiBFdmVudCB7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBb
SW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3IsIEN1c3RvbUdldHRlcl0gRE9NT2JqZWN0IHN0
YXRlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRpYWxpemVkQnlFdmVudENvbnN0
cnVjdG9yLCBDYWNoZWRBdHRyaWJ1dGUsIEN1c3RvbUdldHRlcl0gRE9NT2JqZWN0IHN0YXRlOwog
ICAgIH07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKaW5kZXggYTFmOWEwNWY2NjFj
MTNmZjJhZDZkNjI5ZWE4N2FlNzRlODVhMmFmYy4uZjM4YThjOTJiMTExYmE4NTViNzhjMGE1MDY4
M2U3NWNlZGMwZjk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCkBAIC03Nyw2ICs3NywxMSBA
QCBib29sIEhpc3Rvcnk6OnN0YXRlQ2hhbmdlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGFzdFN0
YXRlT2JqZWN0UmVxdWVzdGVkICE9IHN0YXRlSW50ZXJuYWwoKTsKIH0KIAorYm9vbCBIaXN0b3J5
Ojppc1NhbWVBc0N1cnJlbnRTdGF0ZShTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHN0YXRlKSBjb25z
dAoreworICAgIHJldHVybiBzdGF0ZSA9PSBzdGF0ZUludGVybmFsKCk7Cit9CisKIHZvaWQgSGlz
dG9yeTo6YmFjaygpCiB7CiAgICAgZ28oLTEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9IaXN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAppbmRleCBiZDZm
NmFhMjEzMTVmYTU1ZmVlZGM0NTI3ZDBkMzJjYjM5MGMyZTU4Li44ODljMzc0MTBjNmI3Y2E5NDE4
NGQzNjE1YTJmODdkY2M3YjE0ZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hp
c3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaApAQCAtNDUsNyArNDUs
NiBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICBTZXJpYWxp
emVkU2NyaXB0VmFsdWUqIHN0YXRlKCk7Ci0gICAgYm9vbCBzdGF0ZUNoYW5nZWQoKSBjb25zdDsK
ICAgICB2b2lkIGJhY2soKTsKICAgICB2b2lkIGZvcndhcmQoKTsKICAgICB2b2lkIGdvKGludCBk
aXN0YW5jZSk7CkBAIC01NCw2ICs1Myw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvcndhcmQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHZvaWQgZ28oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGludCBkaXN0YW5jZSk7CiAKKyAgICBib29sIHN0YXRlQ2hhbmdlZCgpIGNvbnN0OworICAg
IGJvb2wgaXNTYW1lQXNDdXJyZW50U3RhdGUoU2VyaWFsaXplZFNjcmlwdFZhbHVlKikgY29uc3Q7
CisKICAgICBlbnVtIFN0YXRlT2JqZWN0VHlwZSB7CiAgICAgICAgIFN0YXRlT2JqZWN0UHVzaCwK
ICAgICAgICAgU3RhdGVPYmplY3RSZXBsYWNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjIxNGQxN2RjNzgyY2UzYWZjMWU4
MThiNzI2ZWQzYWYzZjEwNDQ4OS4uZmE3MTViYzEyZmRmYzViZTE0YzI3MDg5NDdmZWNjOGJiZWY5
Zjg5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAyLTEwICBQYWJsbyBGbG91cmV0ICA8
cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQb3BTdGF0ZUV2ZW50LnN0YXRlIHNob3Vs
ZCB1c2UgdGhlIHNhbWUgb2JqZWN0IGFzIGhpc3Rvcnkuc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NDkzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
c3RhdGUtYXR0cmlidXRlLWhpc3RvcnktZ2V0dGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1oaXN0b3J5LWdl
dHRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3Rh
dGUtYXR0cmlidXRlLW9ubHktb25lLWRlc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1vbmx5LW9uZS1k
ZXNlcmlhbGl6YXRpb24uaHRtbDoKKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
c3RhdGUtYXR0cmlidXRlLXBvcHN0YXRlLWV2ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1wb3BzdGF0ZS1l
dmVudC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMi0wOCAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFm
ZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1
dGUtaGlzdG9yeS1nZXR0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
c3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1oaXN0b3J5LWdldHRlci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDQ3NTNhMTU5ZDg0ZTYzZDk4Zjk3YjMzY2RmMjIyYjJiMjNjODA3YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0
ZS1hdHRyaWJ1dGUtaGlzdG9yeS1nZXR0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAor
Q2hlY2sgdGhhdCBzZXR0aW5nIGEgY3VzdG9tIGdldHRlciBmb3IgaGlzdG9yeS5zdGF0ZSB3b3Jr
cyBjb3JyZWN0bHkgYW5kIHRoYXQgUG9wU3RhdGVFdmVudC5zdGF0ZSBzdGlsbCBoYXMgYSBjb3Jy
ZWN0IHZhbHVlLgorCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtaGlzdG9yeS1nZXR0ZXIuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtaGlzdG9yeS1n
ZXR0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOWExN2IwNDNjYmI0ZDcyZmU0YTNiYzZmMTNjNDBkZGU3
N2YzN2I3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVv
YmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1oaXN0b3J5LWdldHRlci5odG1sCkBAIC0wLDAgKzEsNTAg
QEAKKzwhRE9DVFlQRSBodG1sPgorPHA+Q2hlY2sgdGhhdCBzZXR0aW5nIGEgY3VzdG9tIGdldHRl
ciBmb3IgaGlzdG9yeS5zdGF0ZSB3b3JrcyBjb3JyZWN0bHkgYW5kIHRoYXQgUG9wU3RhdGVFdmVu
dC5zdGF0ZSBzdGlsbCBoYXMgYSBjb3JyZWN0IHZhbHVlLjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJl
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCIjbG9nIikuaW5uZXJIVE1MICs9IG1zZyArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFj
a0ZvcndhcmRMaXN0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24g
dGVzdCgpIHsKKyAgICBpZiAoISgic3RhdGUiIGluIGhpc3RvcnkpKSB7CisgICAgICAgIGxvZygi
RkFJTDogaGlzdG9yeS5zdGF0ZSBpcyBub3QgZGVmaW5lZCIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGhpc3Rvcnks
ICJzdGF0ZSIsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiAib2ggaGFpIiB9IH0pOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgLy8gaGlzdG9yeS5zdGF0ZSBpcyBub3QgY29uZmlndXJh
YmxlIGluIEpTQy4KKyAgICAgICAgbG9nKGUubmFtZSA9PSAiVHlwZUVycm9yIiA/ICJQQVNTIiA6
ICgiRkFJTDogdW5leHBlY3RlZCBleGNlcHRpb246ICIgKyBlKSk7CisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChoaXN0b3J5LnN0YXRlICE9PSAib2ggaGFpIikgeworICAgICAgICBsb2coJ0ZBSUw6IGhp
c3Rvcnkuc3RhdGUgIT0gIm9oIGhhaSInKTsKKyAgICB9CisKKyAgICBoaXN0b3J5LnB1c2hTdGF0
ZSg0MiwgIiIsICIiKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZSg0MywgIiIsICIiKTsKKworICAg
IHdpbmRvdy5vbnBvcHN0YXRlID0gZnVuY3Rpb24oZSkgeworICAgICAgICBpZiAoZS5zdGF0ZSAh
PT0gNDIpCisgICAgICAgICAgICBsb2coIkZBSUw6IGUuc3RhdGUgZXhwZWN0ZWQgNDIsIHdhcyAi
ICsgZS5zdGF0ZSArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBlLnN0YXRlICsgIikiKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbG9nKCJQQVNTIik7CisgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgfQorCisgICAgaGlzdG9yeS5iYWNrKCk7Cit9CisKK3Rlc3QoKTsKKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3N0YXRlLWF0dHJpYnV0ZS1vbmx5LW9uZS1kZXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1vbmx5
LW9uZS1kZXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IGUzZDAxMTdmOTlkZDhmYWJh
NmJkNTI0NGZkNzQ1Yzc0ZGE2OWRmYzAuLjE1OTE1NWU5YmQ0NTQ5ZWQ2NWQ2YWM4YWNmYTY4NjBl
OWFkMzQ4YmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cy9zdGF0ZS1hdHRyaWJ1dGUtb25seS1vbmUtZGVzZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRl
LW9ubHktb25lLWRlc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQKQEAgLTEyLDcgKzEyLDcgQEAg
SW5zaWRlIHBvcHN0YXRlIGV2ZW50CiAKIFBBU1MgaGlzdG9yeS5zdGF0ZSAhPT0gc3RhdGVPYmpl
Y3QgaXMgdHJ1ZQogUEFTUyBwb3BTdGF0ZUV2ZW50LnN0YXRlICE9PSBzdGF0ZU9iamVjdCBpcyB0
cnVlCi1GQUlMIHBvcFN0YXRlRXZlbnQuc3RhdGUgPT09IGhpc3Rvcnkuc3RhdGUgc2hvdWxkIGJl
IHRydWUuIFdhcyBmYWxzZS4KK1BBU1MgcG9wU3RhdGVFdmVudC5zdGF0ZSA9PT0gaGlzdG9yeS5z
dGF0ZSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9z
dGF0ZS1hdHRyaWJ1dGUtb25seS1vbmUtZGVzZXJpYWxpemF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRlLW9ubHktb25lLWRlc2Vy
aWFsaXphdGlvbi5odG1sCmluZGV4IDA4MzcyMWQzODM0ODk2MDAyYjZiZjViMjM1OTExMDJiMWMz
ZmVhZGMuLjk1Mjk0OTU3YjMyMjA5Y2UzMWJjMGY5MmM0YmUyMWFhYzQ4NzUyNzIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUt
b25seS1vbmUtZGVzZXJpYWxpemF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1vbmx5LW9uZS1kZXNlcmlhbGl6YXRpb24u
aHRtbApAQCAtNDUsNyArNDUsNyBAQAogICAgICAgICAvLyBPdXIgc3RvcmVkIHJlZmVyZW5jZSB0
byBzdGF0ZU9iamVjdCB3aWxsIG5vdCBtYXRjaCB0aGUgc3RhdGUgb2JqZWN0IGluIHRoaXMgcG9w
IHN0YXRlIGV2ZW50LCBhcyBpdCBpcyB0aGUgc2FtZSBhcyBoaXN0b3J5LnN0YXRlIHdoaWNoIGlz
IGEgc3RydWN0dXJlZCBjbG9uZSBvZiB0aGUgaGlzdG9yeSBpdGVtJ3Mgc3RhdGUgb2JqZWN0Lgog
ICAgICAgICBzaG91bGRCZVRydWUoInBvcFN0YXRlRXZlbnQuc3RhdGUgIT09IHN0YXRlT2JqZWN0
Iik7CiAgICAgICAgIC8vIFRoZSBldmVudCdzIHN0YXRlIG9iamVjdCBhbmQgdGhlIGN1cnJlbnQg
c3RhdGUgb2JqZWN0IHNob3VsZCBtYXRjaC4KLSAgICAgICAgc2hvdWxkQmVUcnVlKCJwb3BTdGF0
ZUV2ZW50LnN0YXRlID09PSBoaXN0b3J5LnN0YXRlIik7IC8vIFRoaXMgZmFpbHMgZm9yIG5vdywg
bmVlZHMgdG8gYmUgZml4ZWQuCisgICAgICAgIHNob3VsZEJlVHJ1ZSgicG9wU3RhdGVFdmVudC5z
dGF0ZSA9PT0gaGlzdG9yeS5zdGF0ZSIpOwogCiAgICAgICAgIHZhciBzID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgIHMuc3JjID0gIi4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
c3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1wb3BzdGF0ZS1ldmVudC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRlLXBv
cHN0YXRlLWV2ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWFiYzNiMDQxYzlmNzkwMzU3
YTRmNGRjZGI2OTk3ZmU5NmM3OTcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1wb3BzdGF0ZS1ldmVudC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorQ2hlY2sgdGhhdCBQb3BTdGF0ZUV2ZW50LnN0YXRl
IGFsd2F5cyBoYXMgYSBjb3JyZWN0IHZhbHVlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBoaXN0b3J5LnN0YXRlIGlzIGRlZmluZWQuCitQdXNoIHN0YXRlIDEKK1B1c2gg
c3RhdGUgMgorUEFTUyBoaXN0b3J5LnN0YXRlIGlzIDIKK0dvIGJhY2sKK1BBU1MgcG9wU3RhdGVF
dmVudC5zdGF0ZSBpcyAxCitQQVNTIGhpc3Rvcnkuc3RhdGUgaXMgMQorUHVzaCBzdGF0ZSAzCitQ
QVNTIHBvcFN0YXRlRXZlbnQuc3RhdGUgaXMgMQorUEFTUyBoaXN0b3J5LnN0YXRlIGlzIDMKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRl
LXBvcHN0YXRlLWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvc3RhdGUtYXR0cmlidXRlLXBvcHN0YXRlLWV2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ5YmZi
NTc3ZTliMWFkZjY4NmRjMDg1ZDA1MDQwMzI2MzQzMjUxNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtcG9wc3Rh
dGUtZXZlbnQuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQvPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9u
KCJDaGVjayB0aGF0IFBvcFN0YXRlRXZlbnQuc3RhdGUgYWx3YXlzIGhhcyBhIGNvcnJlY3QgdmFs
dWUuIik7CisKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5j
bGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgfQorCisgICAgc2hvdWxkQmVEZWZpbmVkKCJoaXN0b3J5LnN0YXRl
Iik7CisKKyAgICBkZWJ1ZygiUHVzaCBzdGF0ZSAxIik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUo
MSwgIiIsICIiKTsKKyAgICBkZWJ1ZygiUHVzaCBzdGF0ZSAyIik7CisgICAgaGlzdG9yeS5wdXNo
U3RhdGUoMiwgIiIsICIiKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJoaXN0b3J5LnN0YXRlIiwg
Mik7CisKKyAgICB2YXIgcG9wU3RhdGVFdmVudDsKKyAgICB3aW5kb3cub25wb3BzdGF0ZSA9IGZ1
bmN0aW9uKGUpIHsKKyAgICAgICAgcG9wU3RhdGVFdmVudCA9IGU7CisgICAgICAgIHNob3VsZEV2
YWx1YXRlVG8oInBvcFN0YXRlRXZlbnQuc3RhdGUiLCAxKTsKKyAgICAgICAgc2hvdWxkRXZhbHVh
dGVUbygiaGlzdG9yeS5zdGF0ZSIsIDEpOworCisgICAgICAgIGRlYnVnKCJQdXNoIHN0YXRlIDMi
KTsKKyAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUoMywgIiIsICIiKTsKKyAgICAgICAgc2hvdWxk
RXZhbHVhdGVUbygicG9wU3RhdGVFdmVudC5zdGF0ZSIsIDEpOworICAgICAgICBzaG91bGRFdmFs
dWF0ZVRvKCJoaXN0b3J5LnN0YXRlIiwgMyk7CisKKyAgICAgICAgdmFyIHMgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKKyAgICAgICAgcy5zcmMgPSAiLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
cyk7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoSlNUZXN0LCAwKTsKKyAgICB9CisKKyAgICBk
ZWJ1ZygiR28gYmFjayIpOworICAgIGhpc3RvcnkuYmFjaygpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127283</attachid>
            <date>2012-02-15 17:36:44 -0800</date>
            <delta_ts>2012-02-22 16:24:03 -0800</delta_ts>
            <desc>Got rid of gotos</desc>
            <filename>bug-77493-20120215173643.patch</filename>
            <type>text/plain</type>
            <size>21517</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJjMGM4ZDVhNjNlZjBl
YjgzMTYzMmFhMWI4NmExZmQ3OTRjYzdkOC4uNTI5MWJmNDY1NzJjMTQ2ZDVlYzJmZmIwNTdmZGU5
YjM4ZjQ1MzI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAyLTEwICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQb3BTdGF0ZUV2ZW50
LnN0YXRlIHNob3VsZCB1c2UgdGhlIHNhbWUgb2JqZWN0IGFzIGhpc3Rvcnkuc3RhdGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NDkzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtaGlzdG9yeS1nZXR0ZXIuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1wb3Bz
dGF0ZS1ldmVudC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZVN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUG9wU3RhdGVFdmVudDo6c3RhdGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZVN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4UG9wU3RhdGVFdmVudDo6c3RhdGVBY2Nlc3NvckdldHRlcik6CisgICAgICAgICog
ZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbnF1ZXVlUG9w
c3RhdGVFdmVudCk6CisgICAgICAgICogZG9tL1BvcFN0YXRlRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UG9wU3RhdGVFdmVudDo6UG9wU3RhdGVFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpQb3BTdGF0ZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBvcFN0YXRlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UG9wU3RhdGVFdmVudDo6aGlzdG9yeSk6CisgICAgICAgICogZG9tL1BvcFN0YXRl
RXZlbnQuaWRsOgorICAgICAgICAqIHBhZ2UvSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIaXN0b3J5OjpzdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIaXN0b3J5Ojppc1NhbWVBc0N1cnJlbnRTdGF0ZSk6CisgICAgICAgICogcGFnZS9I
aXN0b3J5Lmg6CisgICAgICAgIChIaXN0b3J5KToKKwogMjAxMi0wMi0wOCAgRGlyayBTY2h1bHpl
ICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIHZpZXdCb3ggb24gbmVzdGVkIFNWRyBjYXVz
ZXMgd3JvbmcgY29udGVudCBzaXplIGZvciByZWxhdGl2ZSB2YWx1ZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwCmluZGV4IDM4
ZWRmYjY4ZGQ2MWY2OTEyODAzOTgwNDg2N2M1ZDE2MDk1N2EyYTEuLmYwMWY4NGI5MDRlNGVkZmRl
M2ZlYzE4MmZiZWY1NDhmZWM5MjViOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcApAQCAtMzAsMjEgKzMwLDUyIEBACiAK
ICNpbmNsdWRlICJjb25maWcuaCIKIAorI2luY2x1ZGUgIkhpc3RvcnkuaCIKKyNpbmNsdWRlICJK
U0hpc3RvcnkuaCIKICNpbmNsdWRlICJKU1BvcFN0YXRlRXZlbnQuaCIKIAogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBTYXZlIHRoZSBzdGF0ZSB2YWx1
ZSB0byB0aGUgbV9zdGF0ZSBtZW1iZXIgb2YgYSBKU1BvcFN0YXRlRXZlbnQsIGFuZCByZXR1cm4g
aXQsIGZvciBjb252ZW5pZW5jZS4KK3N0YXRpYyBjb25zdCBKU1ZhbHVlJiBjYWNoZVN0YXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNQb3BTdGF0ZUV2ZW50KiBldmVudCwgY29uc3QgSlNWYWx1ZSYgc3Rh
dGUpCit7CisgICAgZXZlbnQtPm1fc3RhdGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXZlbnQs
IHN0YXRlKTsKKyAgICByZXR1cm4gc3RhdGU7Cit9CisKIEpTVmFsdWUgSlNQb3BTdGF0ZUV2ZW50
OjpzdGF0ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CisgICAgSlNWYWx1ZSBjYWNoZWRWYWx1
ZSA9IG1fc3RhdGUuZ2V0KCk7CisgICAgaWYgKCFjYWNoZWRWYWx1ZS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBjYWNoZWRWYWx1ZTsKKwogICAgIFBvcFN0YXRlRXZlbnQqIGV2ZW50ID0gc3Rh
dGljX2Nhc3Q8UG9wU3RhdGVFdmVudCo+KGltcGwoKSk7Ci0gICAgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKiBzZXJpYWxpemVkU3RhdGUgPSBldmVudC0+c2VyaWFsaXplZFN0YXRlKCk7Ci0gICAgaWYg
KHNlcmlhbGl6ZWRTdGF0ZSkKLSAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZWRTdGF0ZS0+ZGVzZXJp
YWxpemUoZXhlYywgZ2xvYmFsT2JqZWN0KCksIDApOworCiAgICAgaWYgKCFldmVudC0+c3RhdGUo
KS5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBldmVudC0+c3RhdGUoKS5qc1ZhbHVlKCk7
Ci0gICAgcmV0dXJuIGpzTnVsbCgpOworICAgICAgICByZXR1cm4gY2FjaGVTdGF0ZShleGVjLCBj
b25zdF9jYXN0PEpTUG9wU3RhdGVFdmVudCo+KHRoaXMpLCBldmVudC0+c3RhdGUoKS5qc1ZhbHVl
KCkpOworCisgICAgSGlzdG9yeSogaGlzdG9yeSA9IGV2ZW50LT5oaXN0b3J5KCk7CisgICAgaWYg
KCFoaXN0b3J5IHx8ICFldmVudC0+c2VyaWFsaXplZFN0YXRlKCkpCisgICAgICAgIHJldHVybiBj
YWNoZVN0YXRlKGV4ZWMsIGNvbnN0X2Nhc3Q8SlNQb3BTdGF0ZUV2ZW50Kj4odGhpcyksIGpzTnVs
bCgpKTsKKworICAgIC8vIFRoZXJlJ3Mgbm8gY2FjaGVkIHZhbHVlIGZyb20gYSBwcmV2aW91cyBp
bnZvY2F0aW9uLCBub3IgYSBzdGF0ZSB2YWx1ZSB3YXMgcHJvdmlkZWQgYnkgdGhlCisgICAgLy8g
ZXZlbnQsIGJ1dCB0aGVyZSBpcyBhIGhpc3Rvcnkgb2JqZWN0LCBzbyBmaXJzdCB3ZSBuZWVkIHRv
IHNlZSBpZiB0aGUgc3RhdGUgb2JqZWN0IGhhcyBiZWVuCisgICAgLy8gZGVzZXJpYWxpemVkIHRo
cm91Z2ggdGhlIGhpc3Rvcnkgb2JqZWN0IGFscmVhZHkuCisgICAgLy8gVGhlIGN1cnJlbnQgaGlz
dG9yeSBzdGF0ZSBvYmplY3QgbWlnaHQndmUgY2hhbmdlZCBpbiB0aGUgbWVhbnRpbWUsIHNvIHdl
IG5lZWQgdG8gdGFrZSBjYXJlCisgICAgLy8gb2YgdXNpbmcgdGhlIGNvcnJlY3Qgb25lLCBhbmQg
YWx3YXlzIHNoYXJlIHRoZSBzYW1lIGRlc2VyaWFsaXphdGlvbiB3aXRoIGhpc3Rvcnkuc3RhdGUu
CisKKyAgICBib29sIGlzU2FtZVN0YXRlID0gaGlzdG9yeS0+aXNTYW1lQXNDdXJyZW50U3RhdGUo
ZXZlbnQtPnNlcmlhbGl6ZWRTdGF0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdDsKKworICAgIGlm
IChpc1NhbWVTdGF0ZSkgeworICAgICAgICBKU0hpc3RvcnkqIGpzSGlzdG9yeSA9IHN0YXRpY19j
YXN0PEpTSGlzdG9yeSo+KHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGhpc3RvcnkpLmFzQ2Vs
bCgpKTsKKyAgICAgICAgcmVzdWx0ID0ganNIaXN0b3J5LT5zdGF0ZShleGVjKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgcmVzdWx0ID0gZXZlbnQtPnNlcmlhbGl6ZWRTdGF0ZSgpLT5kZXNlcmlhbGl6
ZShleGVjLCBnbG9iYWxPYmplY3QoKSwgMCk7CisKKyAgICByZXR1cm4gY2FjaGVTdGF0ZShleGVj
LCBjb25zdF9jYXN0PEpTUG9wU3RhdGVFdmVudCo+KHRoaXMpLCByZXN1bHQpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwCmluZGV4IDU3Y2UyMzhmZWU0
MmUwYTZiMjAzYWRmZTI0MGFmODlmNGI1OTdmZjcuLjRiOTNjNWE0NmMxMjczMGU3NTYwYTEzYjUw
MmE2MmM1NjZmODMwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwCkBAIC0zMSwyMyArMzEsNjAg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWOFBvcFN0YXRlRXZlbnQuaCIKIAor
I2luY2x1ZGUgIkhpc3RvcnkuaCIKICNpbmNsdWRlICJQb3BTdGF0ZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiVjhIaXN0b3J5LmgiCiAjaW5j
bHVkZSAiVjhQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIFNhdmUgdGhlIHN0
YXRlIHZhbHVlIHRvIGEgaGlkZGVuIGF0dHJpYnV0ZSBpbiB0aGUgVjhQb3BTdGF0ZUV2ZW50LCBh
bmQgcmV0dXJuIGl0LCBmb3IgY29udmVuaWVuY2UuCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNhY2hlU3RhdGUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBwb3BTdGF0ZUV2ZW50LCB2ODo6
SGFuZGxlPHY4OjpTdHJpbmc+IHByb3BlcnR5TmFtZSwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0
YXRlKQoreworICAgIHBvcFN0YXRlRXZlbnQtPlNldEhpZGRlblZhbHVlKHByb3BlcnR5TmFtZSwg
c3RhdGUpOworICAgIHJldHVybiBzdGF0ZTsKK30KKwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
UG9wU3RhdGVFdmVudDo6c3RhdGVBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5Qb3BTdGF0ZUV2ZW50LnN0YXRlIik7CiAKKyAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHBy
b3BlcnR5TmFtZSA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RhdGUiKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gaW5mby5Ib2xkZXIoKS0+R2V0SGlkZGVuVmFsdWUocHJv
cGVydHlOYW1lKTsKKworICAgIGlmICghcmVzdWx0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKwogICAgIFBvcFN0YXRlRXZlbnQqIGV2ZW50ID0gVjhQb3BTdGF0ZUV2ZW50Ojp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlh
bGl6ZWRTdGF0ZSA9IGV2ZW50LT5zZXJpYWxpemVkU3RhdGUoKTsKLSAgICBpZiAoc2VyaWFsaXpl
ZFN0YXRlKQotICAgICAgICByZXR1cm4gc2VyaWFsaXplZFN0YXRlLT5kZXNlcmlhbGl6ZSgpOwog
ICAgIGlmICghZXZlbnQtPnN0YXRlKCkuaGFzTm9WYWx1ZSgpKQotICAgICAgICByZXR1cm4gZXZl
bnQtPnN0YXRlKCkudjhWYWx1ZSgpOwotICAgIHJldHVybiB2ODo6TnVsbCgpOworICAgICAgICBy
ZXR1cm4gY2FjaGVTdGF0ZShpbmZvLkhvbGRlcigpLCBwcm9wZXJ0eU5hbWUsIGV2ZW50LT5zdGF0
ZSgpLnY4VmFsdWUoKSk7CisKKyAgICBIaXN0b3J5KiBoaXN0b3J5ID0gZXZlbnQtPmhpc3Rvcnko
KTsKKyAgICBpZiAoIWhpc3RvcnkgfHwgIWV2ZW50LT5zZXJpYWxpemVkU3RhdGUoKSkKKyAgICAg
ICAgcmV0dXJuIGNhY2hlU3RhdGUoaW5mby5Ib2xkZXIoKSwgcHJvcGVydHlOYW1lLCB2ODo6TnVs
bCgpKTsKKworICAgIC8vIFRoZXJlJ3Mgbm8gY2FjaGVkIHZhbHVlIGZyb20gYSBwcmV2aW91cyBp
bnZvY2F0aW9uLCBub3IgYSBzdGF0ZSB2YWx1ZSB3YXMgcHJvdmlkZWQgYnkgdGhlCisgICAgLy8g
ZXZlbnQsIGJ1dCB0aGVyZSBpcyBhIGhpc3Rvcnkgb2JqZWN0LCBzbyBmaXJzdCB3ZSBuZWVkIHRv
IHNlZSBpZiB0aGUgc3RhdGUgb2JqZWN0IGhhcyBiZWVuCisgICAgLy8gZGVzZXJpYWxpemVkIHRo
cm91Z2ggdGhlIGhpc3Rvcnkgb2JqZWN0IGFscmVhZHkuCisgICAgLy8gVGhlIGN1cnJlbnQgaGlz
dG9yeSBzdGF0ZSBvYmplY3QgbWlnaHQndmUgY2hhbmdlZCBpbiB0aGUgbWVhbnRpbWUsIHNvIHdl
IG5lZWQgdG8gdGFrZSBjYXJlCisgICAgLy8gb2YgdXNpbmcgdGhlIGNvcnJlY3Qgb25lLCBhbmQg
YWx3YXlzIHNoYXJlIHRoZSBzYW1lIGRlc2VyaWFsaXphdGlvbiB3aXRoIGhpc3Rvcnkuc3RhdGUu
CisKKyAgICBib29sIGlzU2FtZVN0YXRlID0gaGlzdG9yeS0+aXNTYW1lQXNDdXJyZW50U3RhdGUo
ZXZlbnQtPnNlcmlhbGl6ZWRTdGF0ZSgpKTsKKworICAgIGlmIChpc1NhbWVTdGF0ZSkgeworICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4SGlzdG9yeSA9IHRvVjgoaGlzdG9yeSkuQXM8
djg6Ok9iamVjdD4oKTsKKyAgICAgICAgaWYgKCFoaXN0b3J5LT5zdGF0ZUNoYW5nZWQoKSkgewor
ICAgICAgICAgICAgcmVzdWx0ID0gdjhIaXN0b3J5LT5HZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5h
bWUpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQuSXNFbXB0eSgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBjYWNoZVN0YXRlKGluZm8uSG9sZGVyKCksIHByb3BlcnR5TmFtZSwgcmVzdWx0KTsK
KyAgICAgICAgfQorICAgICAgICByZXN1bHQgPSBldmVudC0+c2VyaWFsaXplZFN0YXRlKCktPmRl
c2VyaWFsaXplKCk7CisgICAgICAgIHY4SGlzdG9yeS0+U2V0SGlkZGVuVmFsdWUocHJvcGVydHlO
YW1lLCByZXN1bHQpOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBldmVudC0+c2VyaWFs
aXplZFN0YXRlKCktPmRlc2VyaWFsaXplKCk7CisKKyAgICByZXR1cm4gY2FjaGVTdGF0ZShpbmZv
LkhvbGRlcigpLCBwcm9wZXJ0eU5hbWUsIHJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDM5YTk3YjJjNGQ4YTViZTM2M2I1ODFh
MGE1MGE3ZDNjNTk4MTcyMjguLjk5MDU2MjhjNjgxN2Y3MTM0OTA2OTEyMTAzZDA2MmE2YjQ0MmFi
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzgsNiArNzgsNyBAQAogI2luY2x1ZGUg
Ikdlb2xvY2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhhc2hDaGFuZ2VFdmVudC5oIgog
I2luY2x1ZGUgIkhpc3RvZ3JhbVN1cHBvcnQuaCIKKyNpbmNsdWRlICJIaXN0b3J5LmgiCiAjaW5j
bHVkZSAiSFRNTEFsbENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgpAQCAtNTAxMyw3ICs1MDE0LDcgQEAgdm9p
ZCBEb2N1bWVudDo6ZW5xdWV1ZUhhc2hjaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIG9sZFVSTCwg
Y29uc3QgU3RyaW5nJiBuZXdVUkwKIHZvaWQgRG9jdW1lbnQ6OmVucXVldWVQb3BzdGF0ZUV2ZW50
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCkKIHsKICAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MjAyIFBv
cHN0YXRlIGV2ZW50IG5lZWRzIHRvIGZpcmUgYXN5bmNocm9ub3VzbHkKLSAgICBkaXNwYXRjaFdp
bmRvd0V2ZW50KFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZShzdGF0ZU9iamVjdCkpOworICAgIGRpc3Bh
dGNoV2luZG93RXZlbnQoUG9wU3RhdGVFdmVudDo6Y3JlYXRlKHN0YXRlT2JqZWN0LCBkb21XaW5k
b3coKSA/IGRvbVdpbmRvdygpLT5oaXN0b3J5KCkgOiAwKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6
OmFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqIGxpc3RlbmVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuY3BwCmluZGV4IDhkMGNiNzI5MjQ5ZjVjMmVm
ZGY5ZDJmYjIxY2VhMjRlMTY3ZjhiYmYuLmQxZTBjNzU4YTQ5NzY2YzZmNmZmMTU2ZTgzZDZhNjY2
NTdkNmIxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAKQEAgLTI4LDYgKzI4
LDggQEAKICNpbmNsdWRlICJQb3BTdGF0ZUV2ZW50LmgiCiAKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCisjaW5jbHVkZSAiSGlzdG9yeS5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDYgKzQwLDcgQEAgUG9wU3RhdGVF
dmVudEluaXQ6OlBvcFN0YXRlRXZlbnRJbml0KCkKIFBvcFN0YXRlRXZlbnQ6OlBvcFN0YXRlRXZl
bnQoKQogICAgIDogRXZlbnQoZXZlbnROYW1lcygpLnBvcHN0YXRlRXZlbnQsIGZhbHNlLCB0cnVl
KQogICAgICwgbV9zZXJpYWxpemVkU3RhdGUoMCkKKyAgICAsIG1faGlzdG9yeSgwKQogewogfQog
CkBAIC00NSwxOSArNDgsMTQgQEAgUG9wU3RhdGVFdmVudDo6UG9wU3RhdGVFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0JgogICAgIDogRXZlbnQo
dHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgLCBtX3N0YXRlKGluaXRpYWxpemVyLnN0YXRlKQogICAg
ICwgbV9zZXJpYWxpemVkU3RhdGUoMCkKKyAgICAsIG1faGlzdG9yeSgwKQogewogfQogCi1Qb3BT
dGF0ZUV2ZW50OjpQb3BTdGF0ZUV2ZW50KGNvbnN0IFNjcmlwdFZhbHVlJiBzdGF0ZSkKLSAgICA6
IEV2ZW50KGV2ZW50TmFtZXMoKS5wb3BzdGF0ZUV2ZW50LCBmYWxzZSwgdHJ1ZSkKLSAgICAsIG1f
c3RhdGUoc3RhdGUpCi0gICAgLCBtX3NlcmlhbGl6ZWRTdGF0ZSgwKQotewotfQotCi1Qb3BTdGF0
ZUV2ZW50OjpQb3BTdGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBz
ZXJpYWxpemVkU3RhdGUpCitQb3BTdGF0ZUV2ZW50OjpQb3BTdGF0ZUV2ZW50KFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU3RhdGUsIFBhc3NSZWZQdHI8SGlzdG9y
eT4gaGlzdG9yeSkKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5wb3BzdGF0ZUV2ZW50LCBmYWxz
ZSwgdHJ1ZSkKICAgICAsIG1fc2VyaWFsaXplZFN0YXRlKHNlcmlhbGl6ZWRTdGF0ZSkKKyAgICAs
IG1faGlzdG9yeShoaXN0b3J5KQogewogfQogCkBAIC03MCwxNCArNjgsOSBAQCBQYXNzUmVmUHRy
PFBvcFN0YXRlRXZlbnQ+IFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBQb3BTdGF0ZUV2ZW50KTsKIH0KIAotUGFzc1JlZlB0cjxQb3BTdGF0ZUV2ZW50PiBQ
b3BTdGF0ZUV2ZW50OjpjcmVhdGUoY29uc3QgU2NyaXB0VmFsdWUmIHN0YXRlKQotewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUG9wU3RhdGVFdmVudChzdGF0ZSkpOwotfQotCi1QYXNzUmVmUHRy
PFBvcFN0YXRlRXZlbnQ+IFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFN0YXRlKQorUGFzc1JlZlB0cjxQb3BTdGF0ZUV2ZW50
PiBQb3BTdGF0ZUV2ZW50OjpjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHNlcmlhbGl6ZWRTdGF0ZSwgUGFzc1JlZlB0cjxIaXN0b3J5PiBoaXN0b3J5KQogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUG9wU3RhdGVFdmVudChzZXJpYWxpemVkU3RhdGUpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBvcFN0YXRlRXZlbnQoc2VyaWFsaXplZFN0YXRlLCBoaXN0b3J5
KSk7CiB9CiAKIFBhc3NSZWZQdHI8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgUG9wU3RhdGVFdmVudEluaXQmIGluaXRp
YWxpemVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKaW5kZXggNTEyNWZjMWNhOGEwOGU0
MDg0OWIxMjhhN2FlZmExODc1M2ZmMzBiYi4uOGRlMGFlNmQxY2M1N2ExYmFjZWY2NWRkOTc5MzI0
M2FjOGU1MzAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCkBAIC0yOSw3ICsyOSw2
IEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0jaW5j
bHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMzksMjcgKzM4LDMwIEBAIHN0cnVjdCBQb3BTdGF0ZUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVu
dEluaXQgewogICAgIFNjcmlwdFZhbHVlIHN0YXRlOwogfTsKIAorY2xhc3MgSGlzdG9yeTsKK2Ns
YXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKwogY2xhc3MgUG9wU3RhdGVFdmVudCA6IHB1Ymxp
YyBFdmVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UG9wU3RhdGVFdmVudCgpOwogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZShjb25zdCBTY3JpcHRWYWx1ZSYpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvcFN0YXRlRXZlbnQ+IGNy
ZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SGlzdG9y
eT4pOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmLCBjb25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYpOwogCiAgICAgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcmlhbGl6
ZWRTdGF0ZS5nZXQoKTsgfQogICAgIFNjcmlwdFZhbHVlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZTsgfQorICAgIEhpc3RvcnkqIGhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2hpc3Rv
cnkuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VO
YW1lKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgUG9wU3RhdGVFdmVudCgpOwogICAgIFBvcFN0
YXRlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgUG9wU3RhdGVFdmVudEluaXQmKTsK
LSAgICBleHBsaWNpdCBQb3BTdGF0ZUV2ZW50KGNvbnN0IFNjcmlwdFZhbHVlJik7Ci0gICAgZXhw
bGljaXQgUG9wU3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwor
ICAgIGV4cGxpY2l0IFBvcFN0YXRlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+LCBQYXNzUmVmUHRyPEhpc3Rvcnk+KTsKIAogICAgIFNjcmlwdFZhbHVlIG1fc3RhdGU7CiAg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9zZXJpYWxpemVkU3RhdGU7CisgICAg
UmVmUHRyPEhpc3Rvcnk+IG1faGlzdG9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmlkbAppbmRleCA2MzI2YTlkN2E0NjAxZDI4NmJl
MTc4ZmVlNmNiOTU1ZmE3MWIxODcyLi5jOTM0M2NhODBlZDE3OTI0MmIxZGI0ZjViMTY3ZWU4YzY2
MDNhNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaWRsCkBAIC0zMCw3ICszMCw3
IEBAIG1vZHVsZSBldmVudHMgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbnN0cnVjdG9y
VGVtcGxhdGU9RXZlbnQKICAgICBdIFBvcFN0YXRlRXZlbnQgOiBFdmVudCB7Ci0gICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3IsIEN1c3RvbUdl
dHRlcl0gRE9NT2JqZWN0IHN0YXRlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRp
YWxpemVkQnlFdmVudENvbnN0cnVjdG9yLCBDYWNoZWRBdHRyaWJ1dGUsIEN1c3RvbUdldHRlcl0g
RE9NT2JqZWN0IHN0YXRlOwogICAgIH07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9IaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAK
aW5kZXggYTFmOWEwNWY2NjFjMTNmZjJhZDZkNjI5ZWE4N2FlNzRlODVhMmFmYy4uZjM4YThjOTJi
MTExYmE4NTViNzhjMGE1MDY4M2U3NWNlZGMwZjk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9IaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3Bw
CkBAIC03Nyw2ICs3NywxMSBAQCBib29sIEhpc3Rvcnk6OnN0YXRlQ2hhbmdlZCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fbGFzdFN0YXRlT2JqZWN0UmVxdWVzdGVkICE9IHN0YXRlSW50ZXJuYWwoKTsK
IH0KIAorYm9vbCBIaXN0b3J5Ojppc1NhbWVBc0N1cnJlbnRTdGF0ZShTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHN0YXRlKSBjb25zdAoreworICAgIHJldHVybiBzdGF0ZSA9PSBzdGF0ZUludGVybmFs
KCk7Cit9CisKIHZvaWQgSGlzdG9yeTo6YmFjaygpCiB7CiAgICAgZ28oLTEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hp
c3RvcnkuaAppbmRleCBiZDZmNmFhMjEzMTVmYTU1ZmVlZGM0NTI3ZDBkMzJjYjM5MGMyZTU4Li44
ODljMzc0MTBjNmI3Y2E5NDE4NGQzNjE1YTJmODdkY2M3YjE0ZWNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3Rv
cnkuaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdDsKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHN0YXRlKCk7Ci0gICAgYm9vbCBzdGF0
ZUNoYW5nZWQoKSBjb25zdDsKICAgICB2b2lkIGJhY2soKTsKICAgICB2b2lkIGZvcndhcmQoKTsK
ICAgICB2b2lkIGdvKGludCBkaXN0YW5jZSk7CkBAIC01NCw2ICs1Myw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGZvcndhcmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHZvaWQgZ28oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGludCBkaXN0YW5jZSk7CiAKKyAgICBib29sIHN0YXRlQ2hh
bmdlZCgpIGNvbnN0OworICAgIGJvb2wgaXNTYW1lQXNDdXJyZW50U3RhdGUoU2VyaWFsaXplZFNj
cmlwdFZhbHVlKikgY29uc3Q7CisKICAgICBlbnVtIFN0YXRlT2JqZWN0VHlwZSB7CiAgICAgICAg
IFN0YXRlT2JqZWN0UHVzaCwKICAgICAgICAgU3RhdGVPYmplY3RSZXBsYWNlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjIx
NGQxN2RjNzgyY2UzYWZjMWU4MThiNzI2ZWQzYWYzZjEwNDQ4OS4uZmE3MTViYzEyZmRmYzViZTE0
YzI3MDg5NDdmZWNjOGJiZWY5Zjg5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAyLTEw
ICBQYWJsbyBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQb3BTdGF0
ZUV2ZW50LnN0YXRlIHNob3VsZCB1c2UgdGhlIHNhbWUgb2JqZWN0IGFzIGhpc3Rvcnkuc3RhdGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NDkzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2xv
YWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRlLWhpc3RvcnktZ2V0dGVyLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0
dHJpYnV0ZS1oaXN0b3J5LWdldHRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRl
ci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRlLW9ubHktb25lLWRlc2VyaWFsaXphdGlvbi1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0
dHJpYnV0ZS1vbmx5LW9uZS1kZXNlcmlhbGl6YXRpb24uaHRtbDoKKyAgICAgICAgKiBmYXN0L2xv
YWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRlLXBvcHN0YXRlLWV2ZW50LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0
dHJpYnV0ZS1wb3BzdGF0ZS1ldmVudC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMi0wOCAgSnVsaWVu
IENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
IGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2Jq
ZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtaGlzdG9yeS1nZXR0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1oaXN0b3J5LWdl
dHRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ3NTNhMTU5ZDg0ZTYzZDk4Zjk3YjMzY2Rm
MjIyYjJiMjNjODA3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtaGlzdG9yeS1nZXR0ZXItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNCBAQAorQ2hlY2sgdGhhdCBzZXR0aW5nIGEgY3VzdG9tIGdldHRlciBmb3Ig
aGlzdG9yeS5zdGF0ZSB3b3JrcyBjb3JyZWN0bHkgYW5kIHRoYXQgUG9wU3RhdGVFdmVudC5zdGF0
ZSBzdGlsbCBoYXMgYSBjb3JyZWN0IHZhbHVlLgorCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtaGlzdG9yeS1n
ZXR0ZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1h
dHRyaWJ1dGUtaGlzdG9yeS1nZXR0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOWExN2IwNDNjYmI0ZDcy
ZmU0YTNiYzZmMTNjNDBkZGU3N2YzN2I3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1oaXN0b3J5LWdldHRlci5o
dG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPHA+Q2hlY2sgdGhhdCBzZXR0
aW5nIGEgY3VzdG9tIGdldHRlciBmb3IgaGlzdG9yeS5zdGF0ZSB3b3JrcyBjb3JyZWN0bHkgYW5k
IHRoYXQgUG9wU3RhdGVFdmVudC5zdGF0ZSBzdGlsbCBoYXMgYSBjb3JyZWN0IHZhbHVlLjwvcD4K
KzxwcmUgaWQ9bG9nPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjbG9nIikuaW5uZXJIVE1MICs9IG1zZyArICI8YnI+IjsK
K30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBpZiAoISgic3RhdGUiIGluIGhpc3Rvcnkp
KSB7CisgICAgICAgIGxvZygiRkFJTDogaGlzdG9yeS5zdGF0ZSBpcyBub3QgZGVmaW5lZCIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGhpc3RvcnksICJzdGF0ZSIsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiAi
b2ggaGFpIiB9IH0pOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgLy8gaGlzdG9yeS5zdGF0
ZSBpcyBub3QgY29uZmlndXJhYmxlIGluIEpTQy4KKyAgICAgICAgbG9nKGUubmFtZSA9PSAiVHlw
ZUVycm9yIiA/ICJQQVNTIiA6ICgiRkFJTDogdW5leHBlY3RlZCBleGNlcHRpb246ICIgKyBlKSk7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChoaXN0b3J5LnN0YXRlICE9PSAib2ggaGFpIikgeworICAg
ICAgICBsb2coJ0ZBSUw6IGhpc3Rvcnkuc3RhdGUgIT0gIm9oIGhhaSInKTsKKyAgICB9CisKKyAg
ICBoaXN0b3J5LnB1c2hTdGF0ZSg0MiwgIiIsICIiKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZSg0
MywgIiIsICIiKTsKKworICAgIHdpbmRvdy5vbnBvcHN0YXRlID0gZnVuY3Rpb24oZSkgeworICAg
ICAgICBpZiAoZS5zdGF0ZSAhPT0gNDIpCisgICAgICAgICAgICBsb2coIkZBSUw6IGUuc3RhdGUg
ZXhwZWN0ZWQgNDIsIHdhcyAiICsgZS5zdGF0ZSArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBlLnN0
YXRlICsgIikiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9nKCJQQVNTIik7CisgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorCisgICAgaGlzdG9yeS5iYWNrKCk7
Cit9CisKK3Rlc3QoKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1vbmx5LW9uZS1kZXNlcmlhbGl6YXRp
b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0
YXRlLWF0dHJpYnV0ZS1vbmx5LW9uZS1kZXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQudHh0CmluZGV4
IGUzZDAxMTdmOTlkZDhmYWJhNmJkNTI0NGZkNzQ1Yzc0ZGE2OWRmYzAuLjE1OTE1NWU5YmQ0NTQ5
ZWQ2NWQ2YWM4YWNmYTY4NjBlOWFkMzQ4YmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtb25seS1vbmUtZGVzZXJpYWxpemF0
aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvc3RhdGUtYXR0cmlidXRlLW9ubHktb25lLWRlc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQK
QEAgLTEyLDcgKzEyLDcgQEAgSW5zaWRlIHBvcHN0YXRlIGV2ZW50CiAKIFBBU1MgaGlzdG9yeS5z
dGF0ZSAhPT0gc3RhdGVPYmplY3QgaXMgdHJ1ZQogUEFTUyBwb3BTdGF0ZUV2ZW50LnN0YXRlICE9
PSBzdGF0ZU9iamVjdCBpcyB0cnVlCi1GQUlMIHBvcFN0YXRlRXZlbnQuc3RhdGUgPT09IGhpc3Rv
cnkuc3RhdGUgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK1BBU1MgcG9wU3RhdGVFdmVudC5z
dGF0ZSA9PT0gaGlzdG9yeS5zdGF0ZSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtb25seS1vbmUtZGVzZXJpYWxpemF0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmli
dXRlLW9ubHktb25lLWRlc2VyaWFsaXphdGlvbi5odG1sCmluZGV4IDA4MzcyMWQzODM0ODk2MDAy
YjZiZjViMjM1OTExMDJiMWMzZmVhZGMuLjk1Mjk0OTU3YjMyMjA5Y2UzMWJjMGY5MmM0YmUyMWFh
YzQ4NzUyNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cy9zdGF0ZS1hdHRyaWJ1dGUtb25seS1vbmUtZGVzZXJpYWxpemF0aW9uLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1vbmx5LW9u
ZS1kZXNlcmlhbGl6YXRpb24uaHRtbApAQCAtNDUsNyArNDUsNyBAQAogICAgICAgICAvLyBPdXIg
c3RvcmVkIHJlZmVyZW5jZSB0byBzdGF0ZU9iamVjdCB3aWxsIG5vdCBtYXRjaCB0aGUgc3RhdGUg
b2JqZWN0IGluIHRoaXMgcG9wIHN0YXRlIGV2ZW50LCBhcyBpdCBpcyB0aGUgc2FtZSBhcyBoaXN0
b3J5LnN0YXRlIHdoaWNoIGlzIGEgc3RydWN0dXJlZCBjbG9uZSBvZiB0aGUgaGlzdG9yeSBpdGVt
J3Mgc3RhdGUgb2JqZWN0LgogICAgICAgICBzaG91bGRCZVRydWUoInBvcFN0YXRlRXZlbnQuc3Rh
dGUgIT09IHN0YXRlT2JqZWN0Iik7CiAgICAgICAgIC8vIFRoZSBldmVudCdzIHN0YXRlIG9iamVj
dCBhbmQgdGhlIGN1cnJlbnQgc3RhdGUgb2JqZWN0IHNob3VsZCBtYXRjaC4KLSAgICAgICAgc2hv
dWxkQmVUcnVlKCJwb3BTdGF0ZUV2ZW50LnN0YXRlID09PSBoaXN0b3J5LnN0YXRlIik7IC8vIFRo
aXMgZmFpbHMgZm9yIG5vdywgbmVlZHMgdG8gYmUgZml4ZWQuCisgICAgICAgIHNob3VsZEJlVHJ1
ZSgicG9wU3RhdGVFdmVudC5zdGF0ZSA9PT0gaGlzdG9yeS5zdGF0ZSIpOwogCiAgICAgICAgIHZh
ciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgIHMuc3JjID0g
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1wb3BzdGF0ZS1l
dmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
c3RhdGUtYXR0cmlidXRlLXBvcHN0YXRlLWV2ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YWFiYzNiMDQxYzlmNzkwMzU3YTRmNGRjZGI2OTk3ZmU5NmM3OTcxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1w
b3BzdGF0ZS1ldmVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorQ2hlY2sgdGhhdCBQ
b3BTdGF0ZUV2ZW50LnN0YXRlIGFsd2F5cyBoYXMgYSBjb3JyZWN0IHZhbHVlLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBoaXN0b3J5LnN0YXRlIGlzIGRlZmluZWQuCitQ
dXNoIHN0YXRlIDEKK1B1c2ggc3RhdGUgMgorUEFTUyBoaXN0b3J5LnN0YXRlIGlzIDIKK0dvIGJh
Y2sKK1BBU1MgcG9wU3RhdGVFdmVudC5zdGF0ZSBpcyAxCitQQVNTIGhpc3Rvcnkuc3RhdGUgaXMg
MQorUHVzaCBzdGF0ZSAzCitQQVNTIHBvcFN0YXRlRXZlbnQuc3RhdGUgaXMgMQorUEFTUyBoaXN0
b3J5LnN0YXRlIGlzIDMKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvc3RhdGUtYXR0cmlidXRlLXBvcHN0YXRlLWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRlLXBvcHN0YXRlLWV2ZW50Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGQ5YmZiNTc3ZTliMWFkZjY4NmRjMDg1ZDA1MDQwMzI2MzQzMjUxNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0
ZS1hdHRyaWJ1dGUtcG9wc3RhdGUtZXZlbnQuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQvPgorPGJvZHk+Cis8c2NyaXB0
PgorICAgIGRlc2NyaXB0aW9uKCJDaGVjayB0aGF0IFBvcFN0YXRlRXZlbnQuc3RhdGUgYWx3YXlz
IGhhcyBhIGNvcnJlY3QgdmFsdWUuIik7CisKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgc2hvdWxkQmVEZWZp
bmVkKCJoaXN0b3J5LnN0YXRlIik7CisKKyAgICBkZWJ1ZygiUHVzaCBzdGF0ZSAxIik7CisgICAg
aGlzdG9yeS5wdXNoU3RhdGUoMSwgIiIsICIiKTsKKyAgICBkZWJ1ZygiUHVzaCBzdGF0ZSAyIik7
CisgICAgaGlzdG9yeS5wdXNoU3RhdGUoMiwgIiIsICIiKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRv
KCJoaXN0b3J5LnN0YXRlIiwgMik7CisKKyAgICB2YXIgcG9wU3RhdGVFdmVudDsKKyAgICB3aW5k
b3cub25wb3BzdGF0ZSA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgcG9wU3RhdGVFdmVudCA9IGU7
CisgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oInBvcFN0YXRlRXZlbnQuc3RhdGUiLCAxKTsKKyAg
ICAgICAgc2hvdWxkRXZhbHVhdGVUbygiaGlzdG9yeS5zdGF0ZSIsIDEpOworCisgICAgICAgIGRl
YnVnKCJQdXNoIHN0YXRlIDMiKTsKKyAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUoMywgIiIsICIi
KTsKKyAgICAgICAgc2hvdWxkRXZhbHVhdGVUbygicG9wU3RhdGVFdmVudC5zdGF0ZSIsIDEpOwor
ICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCJoaXN0b3J5LnN0YXRlIiwgMyk7CisKKyAgICAgICAg
dmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKKyAgICAgICAgcy5zcmMg
PSAiLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI7CisgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQocyk7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoSlNUZXN0LCAw
KTsKKyAgICB9CisKKyAgICBkZWJ1ZygiR28gYmFjayIpOworICAgIGhpc3RvcnkuYmFjaygpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128324</attachid>
            <date>2012-02-22 16:24:09 -0800</date>
            <delta_ts>2012-02-22 19:05:39 -0800</delta_ts>
            <desc>Use V8HiddenPropertyName</desc>
            <filename>bug-77493-20120222162408.patch</filename>
            <type>text/plain</type>
            <size>24521</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJjMGM4ZDVhNjNlZjBl
YjgzMTYzMmFhMWI4NmExZmQ3OTRjYzdkOC4uODI0M2VkM2ZmZGY4YjQyZDIzNWJjMjA5MDVjNWJh
NGQ5MjAxYmU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAyLTEwICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQb3BTdGF0ZUV2ZW50
LnN0YXRlIHNob3VsZCB1c2UgdGhlIHNhbWUgb2JqZWN0IGFzIGhpc3Rvcnkuc3RhdGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NDkzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtaGlzdG9yeS1nZXR0ZXIuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1wb3Bz
dGF0ZS1ldmVudC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZVN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUG9wU3RhdGVFdmVudDo6c3RhdGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4SGlzdG9yeTo6c3RhdGVBY2Nlc3NvckdldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpWOEhpc3Rvcnk6OnB1c2hTdGF0ZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4SGlzdG9yeTo6cmVwbGFjZVN0YXRlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpjYWNoZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UG9w
U3RhdGVFdmVudDo6c3RhdGVBY2Nlc3NvckdldHRlcik6CisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbnF1ZXVlUG9wc3RhdGVFdmVudCk6
CisgICAgICAgICogZG9tL1BvcFN0YXRlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9w
U3RhdGVFdmVudDo6UG9wU3RhdGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2
ZW50OjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFBvcFN0YXRlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9w
U3RhdGVFdmVudDo6aGlzdG9yeSk6CisgICAgICAgICogZG9tL1BvcFN0YXRlRXZlbnQuaWRsOgor
ICAgICAgICAqIHBhZ2UvSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Ojpz
dGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0
b3J5Ojppc1NhbWVBc0N1cnJlbnRTdGF0ZSk6CisgICAgICAgICogcGFnZS9IaXN0b3J5Lmg6Cisg
ICAgICAgIChIaXN0b3J5KToKKwogMjAxMi0wMi0wOCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIHZpZXdCb3ggb24gbmVzdGVkIFNWRyBjYXVzZXMgd3JvbmcgY29u
dGVudCBzaXplIGZvciByZWxhdGl2ZSB2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwCmluZGV4IDM4ZWRmYjY4ZGQ2MWY2
OTEyODAzOTgwNDg2N2M1ZDE2MDk1N2EyYTEuLmYwMWY4NGI5MDRlNGVkZmRlM2ZlYzE4MmZiZWY1
NDhmZWM5MjViOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUG9w
U3RhdGVFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
b3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcApAQCAtMzAsMjEgKzMwLDUyIEBACiAKICNpbmNsdWRlICJj
b25maWcuaCIKIAorI2luY2x1ZGUgIkhpc3RvcnkuaCIKKyNpbmNsdWRlICJKU0hpc3RvcnkuaCIK
ICNpbmNsdWRlICJKU1BvcFN0YXRlRXZlbnQuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBTYXZlIHRoZSBzdGF0ZSB2YWx1ZSB0byB0aGUgbV9z
dGF0ZSBtZW1iZXIgb2YgYSBKU1BvcFN0YXRlRXZlbnQsIGFuZCByZXR1cm4gaXQsIGZvciBjb252
ZW5pZW5jZS4KK3N0YXRpYyBjb25zdCBKU1ZhbHVlJiBjYWNoZVN0YXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNQb3BTdGF0ZUV2ZW50KiBldmVudCwgY29uc3QgSlNWYWx1ZSYgc3RhdGUpCit7CisgICAg
ZXZlbnQtPm1fc3RhdGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXZlbnQsIHN0YXRlKTsKKyAg
ICByZXR1cm4gc3RhdGU7Cit9CisKIEpTVmFsdWUgSlNQb3BTdGF0ZUV2ZW50OjpzdGF0ZShFeGVj
U3RhdGUqIGV4ZWMpIGNvbnN0CiB7CisgICAgSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IG1fc3RhdGUu
Z2V0KCk7CisgICAgaWYgKCFjYWNoZWRWYWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBj
YWNoZWRWYWx1ZTsKKwogICAgIFBvcFN0YXRlRXZlbnQqIGV2ZW50ID0gc3RhdGljX2Nhc3Q8UG9w
U3RhdGVFdmVudCo+KGltcGwoKSk7Ci0gICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxp
emVkU3RhdGUgPSBldmVudC0+c2VyaWFsaXplZFN0YXRlKCk7Ci0gICAgaWYgKHNlcmlhbGl6ZWRT
dGF0ZSkKLSAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZWRTdGF0ZS0+ZGVzZXJpYWxpemUoZXhlYywg
Z2xvYmFsT2JqZWN0KCksIDApOworCiAgICAgaWYgKCFldmVudC0+c3RhdGUoKS5oYXNOb1ZhbHVl
KCkpCi0gICAgICAgIHJldHVybiBldmVudC0+c3RhdGUoKS5qc1ZhbHVlKCk7Ci0gICAgcmV0dXJu
IGpzTnVsbCgpOworICAgICAgICByZXR1cm4gY2FjaGVTdGF0ZShleGVjLCBjb25zdF9jYXN0PEpT
UG9wU3RhdGVFdmVudCo+KHRoaXMpLCBldmVudC0+c3RhdGUoKS5qc1ZhbHVlKCkpOworCisgICAg
SGlzdG9yeSogaGlzdG9yeSA9IGV2ZW50LT5oaXN0b3J5KCk7CisgICAgaWYgKCFoaXN0b3J5IHx8
ICFldmVudC0+c2VyaWFsaXplZFN0YXRlKCkpCisgICAgICAgIHJldHVybiBjYWNoZVN0YXRlKGV4
ZWMsIGNvbnN0X2Nhc3Q8SlNQb3BTdGF0ZUV2ZW50Kj4odGhpcyksIGpzTnVsbCgpKTsKKworICAg
IC8vIFRoZXJlJ3Mgbm8gY2FjaGVkIHZhbHVlIGZyb20gYSBwcmV2aW91cyBpbnZvY2F0aW9uLCBu
b3IgYSBzdGF0ZSB2YWx1ZSB3YXMgcHJvdmlkZWQgYnkgdGhlCisgICAgLy8gZXZlbnQsIGJ1dCB0
aGVyZSBpcyBhIGhpc3Rvcnkgb2JqZWN0LCBzbyBmaXJzdCB3ZSBuZWVkIHRvIHNlZSBpZiB0aGUg
c3RhdGUgb2JqZWN0IGhhcyBiZWVuCisgICAgLy8gZGVzZXJpYWxpemVkIHRocm91Z2ggdGhlIGhp
c3Rvcnkgb2JqZWN0IGFscmVhZHkuCisgICAgLy8gVGhlIGN1cnJlbnQgaGlzdG9yeSBzdGF0ZSBv
YmplY3QgbWlnaHQndmUgY2hhbmdlZCBpbiB0aGUgbWVhbnRpbWUsIHNvIHdlIG5lZWQgdG8gdGFr
ZSBjYXJlCisgICAgLy8gb2YgdXNpbmcgdGhlIGNvcnJlY3Qgb25lLCBhbmQgYWx3YXlzIHNoYXJl
IHRoZSBzYW1lIGRlc2VyaWFsaXphdGlvbiB3aXRoIGhpc3Rvcnkuc3RhdGUuCisKKyAgICBib29s
IGlzU2FtZVN0YXRlID0gaGlzdG9yeS0+aXNTYW1lQXNDdXJyZW50U3RhdGUoZXZlbnQtPnNlcmlh
bGl6ZWRTdGF0ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdDsKKworICAgIGlmIChpc1NhbWVTdGF0
ZSkgeworICAgICAgICBKU0hpc3RvcnkqIGpzSGlzdG9yeSA9IHN0YXRpY19jYXN0PEpTSGlzdG9y
eSo+KHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGhpc3RvcnkpLmFzQ2VsbCgpKTsKKyAgICAg
ICAgcmVzdWx0ID0ganNIaXN0b3J5LT5zdGF0ZShleGVjKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
cmVzdWx0ID0gZXZlbnQtPnNlcmlhbGl6ZWRTdGF0ZSgpLT5kZXNlcmlhbGl6ZShleGVjLCBnbG9i
YWxPYmplY3QoKSwgMCk7CisKKyAgICByZXR1cm4gY2FjaGVTdGF0ZShleGVjLCBjb25zdF9jYXN0
PEpTUG9wU3RhdGVFdmVudCo+KHRoaXMpLCByZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblBy
b3BlcnR5TmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0
eU5hbWUuaAppbmRleCBkZWJhNGE1MWQ3NzgwNzkwOTMzMjY3YjkyZDFmNjQwMmEyNzRmMDNmLi5j
OGY1MzUyN2ZlOGE4ZjJhNGM1ODg0NjJlMmIzOThhMTJkZGNhNTE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKQEAgLTQzLDcgKzQz
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFYoZGV2dG9vbHNJbmplY3RlZFNjcmlwdCkg
XAogICAgIFYoc2xlZXBGdW5jdGlvbikgXAogICAgIFYodG9TdHJpbmdTdHJpbmcpIFwKLSAgICBW
KGV2ZW50KQorICAgIFYoZXZlbnQpIFwKKyAgICBWKHN0YXRlKQogCiAKICAgICBjbGFzcyBWOEhp
ZGRlblByb3BlcnR5TmFtZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20uY3BwCmluZGV4IGExYmQ3NmIyYWJlNDA2M2VlYTdjNjVj
Yzc3ZTZhN2QwOTMyMzlmYmMuLmFiYWRkY2FhMTU1MTA2YzhkYTZiYmE2YmEzMzdmZTA4NTQxYTk4
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3Rv
cnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhp
c3RvcnlDdXN0b20uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKICNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgor
I2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NiwxNSArNDcsMTQgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SGlzdG9yeTo6c3RhdGVBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwKICAgICBJTkNfU1RBVFMoIkRPTS5IaXN0b3J5LnN0YXRlIik7CiAgICAgSGlzdG9y
eSogaGlzdG9yeSA9IFY4SGlzdG9yeTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAKLSAgICB2
ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3BlcnR5TmFtZSA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJv
bCgic3RhdGUiKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSBpbmZvLkhvbGRl
cigpLT5HZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSA9IGluZm8uSG9sZGVyKCktPkdldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVy
dHlOYW1lOjpzdGF0ZSgpKTsKIAogICAgIGlmICghdmFsdWUuSXNFbXB0eSgpICYmICFoaXN0b3J5
LT5zdGF0ZUNoYW5nZWQoKSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogCiAgICAgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkID0gaGlzdG9yeS0+c3RhdGUoKTsKICAgICB2YWx1ZSA9
IHNlcmlhbGl6ZWQgPyBzZXJpYWxpemVkLT5kZXNlcmlhbGl6ZSgpIDogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KHY4OjpOdWxsKCkpOwotICAgIGluZm8uSG9sZGVyKCktPlNldEhpZGRlblZhbHVlKHBy
b3BlcnR5TmFtZSwgdmFsdWUpOworICAgIGluZm8uSG9sZGVyKCktPlNldEhpZGRlblZhbHVlKFY4
SGlkZGVuUHJvcGVydHlOYW1lOjpzdGF0ZSgpLCB2YWx1ZSk7CiAKICAgICByZXR1cm4gdmFsdWU7
CiB9CkBAIC04MCw3ICs4MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhpc3Rvcnk6OnB1
c2hTdGF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgSGlzdG9yeSogaGlzdG9yeSA9IFY4SGlzdG9yeTo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CiAgICAgaGlzdG9yeS0+c3RhdGVPYmplY3RBZGRlZChoaXN0b3J5U3Rh
dGUucmVsZWFzZSgpLCB0aXRsZSwgdXJsLCBIaXN0b3J5OjpTdGF0ZU9iamVjdFB1c2gsIGVjKTsK
LSAgICBhcmdzLkhvbGRlcigpLT5EZWxldGVIaWRkZW5WYWx1ZSh2ODo6U3RyaW5nOjpOZXdTeW1i
b2woInN0YXRlIikpOworICAgIGFyZ3MuSG9sZGVyKCktPkRlbGV0ZUhpZGRlblZhbHVlKFY4SGlk
ZGVuUHJvcGVydHlOYW1lOjpzdGF0ZSgpKTsKICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CiB9
CiAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIaXN0b3J5Ojpy
ZXBsYWNlU3RhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIEhpc3RvcnkqIGhpc3RvcnkgPSBWOEhpc3Rvcnk6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGhpc3RvcnktPnN0YXRlT2JqZWN0QWRkZWQoaGlzdG9y
eVN0YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVPYmplY3RSZXBsYWNl
LCBlYyk7Ci0gICAgYXJncy5Ib2xkZXIoKS0+RGVsZXRlSGlkZGVuVmFsdWUodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJzdGF0ZSIpKTsKKyAgICBhcmdzLkhvbGRlcigpLT5EZWxldGVIaWRkZW5WYWx1
ZShWOEhpZGRlblByb3BlcnR5TmFtZTo6c3RhdGUoKSk7CiAgICAgcmV0dXJuIHRocm93RXJyb3Io
ZWMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwCmluZGV4IDU3Y2UyMzhmZWU0MmUwYTZiMjAz
YWRmZTI0MGFmODlmNGI1OTdmZjcuLmMwZjNlMzU4OTI0MTRhYjU3OTE5ZmFlMDYxMjY0M2I1OWJj
NzljODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBv
cFN0YXRlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwCkBAIC0zMSwyMyArMzEsNjAgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWOFBvcFN0YXRlRXZlbnQuaCIKIAorI2luY2x1ZGUg
Ikhpc3RvcnkuaCIKICNpbmNsdWRlICJQb3BTdGF0ZUV2ZW50LmgiCiAjaW5jbHVkZSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKKyNp
bmNsdWRlICJWOEhpc3RvcnkuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorLy8gU2F2ZSB0aGUgc3RhdGUgdmFsdWUgdG8gYSBoaWRkZW4gYXR0cmlidXRl
IGluIHRoZSBWOFBvcFN0YXRlRXZlbnQsIGFuZCByZXR1cm4gaXQsIGZvciBjb252ZW5pZW5jZS4K
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FjaGVTdGF0ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHBvcFN0YXRlRXZlbnQsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdGF0ZSkKK3sKKyAg
ICBwb3BTdGF0ZUV2ZW50LT5TZXRIaWRkZW5WYWx1ZShWOEhpZGRlblByb3BlcnR5TmFtZTo6c3Rh
dGUoKSwgc3RhdGUpOworICAgIHJldHVybiBzdGF0ZTsKK30KKwogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4UG9wU3RhdGVFdmVudDo6c3RhdGVBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5Qb3BTdGF0ZUV2ZW50LnN0YXRlIik7CiAKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcmVzdWx0ID0gaW5mby5Ib2xkZXIoKS0+R2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0
eU5hbWU6OnN0YXRlKCkpOworCisgICAgaWYgKCFyZXN1bHQuSXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gcmVzdWx0OworCiAgICAgUG9wU3RhdGVFdmVudCogZXZlbnQgPSBWOFBvcFN0YXRlRXZl
bnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
c2VyaWFsaXplZFN0YXRlID0gZXZlbnQtPnNlcmlhbGl6ZWRTdGF0ZSgpOwotICAgIGlmIChzZXJp
YWxpemVkU3RhdGUpCi0gICAgICAgIHJldHVybiBzZXJpYWxpemVkU3RhdGUtPmRlc2VyaWFsaXpl
KCk7CiAgICAgaWYgKCFldmVudC0+c3RhdGUoKS5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIHJldHVy
biBldmVudC0+c3RhdGUoKS52OFZhbHVlKCk7Ci0gICAgcmV0dXJuIHY4OjpOdWxsKCk7CisgICAg
ICAgIHJldHVybiBjYWNoZVN0YXRlKGluZm8uSG9sZGVyKCksIGV2ZW50LT5zdGF0ZSgpLnY4VmFs
dWUoKSk7CisKKyAgICBIaXN0b3J5KiBoaXN0b3J5ID0gZXZlbnQtPmhpc3RvcnkoKTsKKyAgICBp
ZiAoIWhpc3RvcnkgfHwgIWV2ZW50LT5zZXJpYWxpemVkU3RhdGUoKSkKKyAgICAgICAgcmV0dXJu
IGNhY2hlU3RhdGUoaW5mby5Ib2xkZXIoKSwgdjg6Ok51bGwoKSk7CisKKyAgICAvLyBUaGVyZSdz
IG5vIGNhY2hlZCB2YWx1ZSBmcm9tIGEgcHJldmlvdXMgaW52b2NhdGlvbiwgbm9yIGEgc3RhdGUg
dmFsdWUgd2FzIHByb3ZpZGVkIGJ5IHRoZQorICAgIC8vIGV2ZW50LCBidXQgdGhlcmUgaXMgYSBo
aXN0b3J5IG9iamVjdCwgc28gZmlyc3Qgd2UgbmVlZCB0byBzZWUgaWYgdGhlIHN0YXRlIG9iamVj
dCBoYXMgYmVlbgorICAgIC8vIGRlc2VyaWFsaXplZCB0aHJvdWdoIHRoZSBoaXN0b3J5IG9iamVj
dCBhbHJlYWR5LgorICAgIC8vIFRoZSBjdXJyZW50IGhpc3Rvcnkgc3RhdGUgb2JqZWN0IG1pZ2h0
J3ZlIGNoYW5nZWQgaW4gdGhlIG1lYW50aW1lLCBzbyB3ZSBuZWVkIHRvIHRha2UgY2FyZQorICAg
IC8vIG9mIHVzaW5nIHRoZSBjb3JyZWN0IG9uZSwgYW5kIGFsd2F5cyBzaGFyZSB0aGUgc2FtZSBk
ZXNlcmlhbGl6YXRpb24gd2l0aCBoaXN0b3J5LnN0YXRlLgorCisgICAgYm9vbCBpc1NhbWVTdGF0
ZSA9IGhpc3RvcnktPmlzU2FtZUFzQ3VycmVudFN0YXRlKGV2ZW50LT5zZXJpYWxpemVkU3RhdGUo
KSk7CisKKyAgICBpZiAoaXNTYW1lU3RhdGUpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB2OEhpc3RvcnkgPSB0b1Y4KGhpc3RvcnkpLkFzPHY4OjpPYmplY3Q+KCk7CisgICAgICAg
IGlmICghaGlzdG9yeS0+c3RhdGVDaGFuZ2VkKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHY4
SGlzdG9yeS0+R2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OnN0YXRlKCkpOwor
ICAgICAgICAgICAgaWYgKCFyZXN1bHQuSXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBjYWNoZVN0YXRlKGluZm8uSG9sZGVyKCksIHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAg
cmVzdWx0ID0gZXZlbnQtPnNlcmlhbGl6ZWRTdGF0ZSgpLT5kZXNlcmlhbGl6ZSgpOworICAgICAg
ICB2OEhpc3RvcnktPlNldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjpzdGF0ZSgp
LCByZXN1bHQpOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBldmVudC0+c2VyaWFsaXpl
ZFN0YXRlKCktPmRlc2VyaWFsaXplKCk7CisKKyAgICByZXR1cm4gY2FjaGVTdGF0ZShpbmZvLkhv
bGRlcigpLCByZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCAzOWE5N2IyYzRkOGE1YmUzNjNiNTgxYTBhNTBhN2QzYzU5ODE3MjI4
Li45OTA1NjI4YzY4MTdmNzEzNDkwNjkxMjEwM2QwNjJhNmI0NDJhYjkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTc4LDYgKzc4LDcgQEAKICNpbmNsdWRlICJHZW9sb2NhdGlvbkNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJIYXNoQ2hhbmdlRXZlbnQuaCIKICNpbmNsdWRlICJIaXN0b2dy
YW1TdXBwb3J0LmgiCisjaW5jbHVkZSAiSGlzdG9yeS5oIgogI2luY2x1ZGUgIkhUTUxBbGxDb2xs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
Qm9keUVsZW1lbnQuaCIKQEAgLTUwMTMsNyArNTAxNCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmVucXVl
dWVIYXNoY2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiBvbGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3
VVJMCiB2b2lkIERvY3VtZW50OjplbnF1ZXVlUG9wc3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QpCiB7CiAgICAgLy8gRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjIwMiBQb3BzdGF0ZSBldmVudCBuZWVk
cyB0byBmaXJlIGFzeW5jaHJvbm91c2x5Ci0gICAgZGlzcGF0Y2hXaW5kb3dFdmVudChQb3BTdGF0
ZUV2ZW50OjpjcmVhdGUoc3RhdGVPYmplY3QpKTsKKyAgICBkaXNwYXRjaFdpbmRvd0V2ZW50KFBv
cFN0YXRlRXZlbnQ6OmNyZWF0ZShzdGF0ZU9iamVjdCwgZG9tV2luZG93KCkgPyBkb21XaW5kb3co
KS0+aGlzdG9yeSgpIDogMCkpOwogfQogCiB2b2lkIERvY3VtZW50OjphZGRNZWRpYUNhblN0YXJ0
TGlzdGVuZXIoTWVkaWFDYW5TdGFydExpc3RlbmVyKiBsaXN0ZW5lcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3BTdGF0ZUV2ZW50LmNwcAppbmRleCA4ZDBjYjcyOTI0OWY1YzJlZmRmOWQyZmIyMWNlYTI0ZTE2
N2Y4YmJmLi5kMWUwYzc1OGE0OTc2NmM2ZjZmZjE1NmU4M2Q2YTY2NjU3ZDZiMTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAi
UG9wU3RhdGVFdmVudC5oIgogCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkhp
c3RvcnkuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0zOCw2ICs0MCw3IEBAIFBvcFN0YXRlRXZlbnRJbml0OjpQb3BTdGF0
ZUV2ZW50SW5pdCgpCiBQb3BTdGF0ZUV2ZW50OjpQb3BTdGF0ZUV2ZW50KCkKICAgICA6IEV2ZW50
KGV2ZW50TmFtZXMoKS5wb3BzdGF0ZUV2ZW50LCBmYWxzZSwgdHJ1ZSkKICAgICAsIG1fc2VyaWFs
aXplZFN0YXRlKDApCisgICAgLCBtX2hpc3RvcnkoMCkKIHsKIH0KIApAQCAtNDUsMTkgKzQ4LDE0
IEBAIFBvcFN0YXRlRXZlbnQ6OlBvcFN0YXRlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBjb25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVy
KQogICAgICwgbV9zdGF0ZShpbml0aWFsaXplci5zdGF0ZSkKICAgICAsIG1fc2VyaWFsaXplZFN0
YXRlKDApCisgICAgLCBtX2hpc3RvcnkoMCkKIHsKIH0KIAotUG9wU3RhdGVFdmVudDo6UG9wU3Rh
dGVFdmVudChjb25zdCBTY3JpcHRWYWx1ZSYgc3RhdGUpCi0gICAgOiBFdmVudChldmVudE5hbWVz
KCkucG9wc3RhdGVFdmVudCwgZmFsc2UsIHRydWUpCi0gICAgLCBtX3N0YXRlKHN0YXRlKQotICAg
ICwgbV9zZXJpYWxpemVkU3RhdGUoMCkKLXsKLX0KLQotUG9wU3RhdGVFdmVudDo6UG9wU3RhdGVF
dmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFN0YXRlKQor
UG9wU3RhdGVFdmVudDo6UG9wU3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gc2VyaWFsaXplZFN0YXRlLCBQYXNzUmVmUHRyPEhpc3Rvcnk+IGhpc3RvcnkpCiAgICAg
OiBFdmVudChldmVudE5hbWVzKCkucG9wc3RhdGVFdmVudCwgZmFsc2UsIHRydWUpCiAgICAgLCBt
X3NlcmlhbGl6ZWRTdGF0ZShzZXJpYWxpemVkU3RhdGUpCisgICAgLCBtX2hpc3RvcnkoaGlzdG9y
eSkKIHsKIH0KIApAQCAtNzAsMTQgKzY4LDkgQEAgUGFzc1JlZlB0cjxQb3BTdGF0ZUV2ZW50PiBQ
b3BTdGF0ZUV2ZW50OjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUG9wU3RhdGVF
dmVudCk7CiB9CiAKLVBhc3NSZWZQdHI8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6Y3Jl
YXRlKGNvbnN0IFNjcmlwdFZhbHVlJiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFBvcFN0YXRlRXZlbnQoc3RhdGUpKTsKLX0KLQotUGFzc1JlZlB0cjxQb3BTdGF0ZUV2ZW50PiBQ
b3BTdGF0ZUV2ZW50OjpjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNl
cmlhbGl6ZWRTdGF0ZSkKK1Bhc3NSZWZQdHI8UG9wU3RhdGVFdmVudD4gUG9wU3RhdGVFdmVudDo6
Y3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU3RhdGUs
IFBhc3NSZWZQdHI8SGlzdG9yeT4gaGlzdG9yeSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFBvcFN0YXRlRXZlbnQoc2VyaWFsaXplZFN0YXRlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBQb3BTdGF0ZUV2ZW50KHNlcmlhbGl6ZWRTdGF0ZSwgaGlzdG9yeSkpOwogfQogCiBQYXNzUmVm
UHRyPFBvcFN0YXRlRXZlbnQ+IFBvcFN0YXRlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0JiBpbml0aWFsaXplcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9wU3RhdGVFdmVudC5oCmluZGV4IDUxMjVmYzFjYThhMDhlNDA4NDliMTI4YTdhZWZhMTg3
NTNmZjMwYmIuLjhkZTBhZTZkMWNjNTdhMWJhY2VmNjVkZDk3OTMyNDNhYzhlNTMwMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAi
RXZlbnQuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDI3ICszOCwzMCBA
QCBzdHJ1Y3QgUG9wU3RhdGVFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKICAgICBTY3Jp
cHRWYWx1ZSBzdGF0ZTsKIH07CiAKK2NsYXNzIEhpc3Rvcnk7CitjbGFzcyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CisKIGNsYXNzIFBvcFN0YXRlRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGlj
OgogICAgIHZpcnR1YWwgflBvcFN0YXRlRXZlbnQoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
b3BTdGF0ZUV2ZW50PiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb3BTdGF0ZUV2
ZW50PiBjcmVhdGUoY29uc3QgU2NyaXB0VmFsdWUmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
b3BTdGF0ZUV2ZW50PiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGUoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPEhpc3Rvcnk+KTsKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiwgY29u
c3QgUG9wU3RhdGVFdmVudEluaXQmKTsKIAogICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2Vy
aWFsaXplZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJpYWxpemVkU3RhdGUuZ2V0KCk7IH0K
ICAgICBTY3JpcHRWYWx1ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICBI
aXN0b3J5KiBoaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9oaXN0b3J5LmdldCgpOyB9CiAKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIFBvcFN0YXRlRXZlbnQoKTsKICAgICBQb3BTdGF0ZUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0Jik7Ci0gICAgZXhwbGljaXQgUG9w
U3RhdGVFdmVudChjb25zdCBTY3JpcHRWYWx1ZSYpOwotICAgIGV4cGxpY2l0IFBvcFN0YXRlRXZl
bnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICBleHBsaWNpdCBQb3BT
dGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxI
aXN0b3J5Pik7CiAKICAgICBTY3JpcHRWYWx1ZSBtX3N0YXRlOwogICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1fc2VyaWFsaXplZFN0YXRlOworICAgIFJlZlB0cjxIaXN0b3J5PiBt
X2hpc3Rvcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9w
U3RhdGVFdmVudC5pZGwKaW5kZXggNjMyNmE5ZDdhNDYwMWQyODZiZTE3OGZlZTZjYjk1NWZhNzFi
MTg3Mi4uYzkzNDNjYTgwZWQxNzkyNDJiMWRiNGY1YjE2N2VlOGM2NjAzYTU3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmlkbApAQCAtMzAsNyArMzAsNyBAQCBtb2R1bGUgZXZlbnRz
IHsKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50CiAg
ICAgXSBQb3BTdGF0ZUV2ZW50IDogRXZlbnQgewotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
W0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yLCBDdXN0b21HZXR0ZXJdIERPTU9iamVjdCBz
dGF0ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEJ5RXZlbnRDb25z
dHJ1Y3RvciwgQ2FjaGVkQXR0cmlidXRlLCBDdXN0b21HZXR0ZXJdIERPTU9iamVjdCBzdGF0ZTsK
ICAgICB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9y
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCmluZGV4IGExZjlhMDVmNjYx
YzEzZmYyYWQ2ZDYyOWVhODdhZTc0ZTg1YTJhZmMuLmYzOGE4YzkyYjExMWJhODU1Yjc4YzBhNTA2
ODNlNzVjZWRjMGY5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcApAQCAtNzcsNiArNzcsMTEg
QEAgYm9vbCBIaXN0b3J5OjpzdGF0ZUNoYW5nZWQoKSBjb25zdAogICAgIHJldHVybiBtX2xhc3RT
dGF0ZU9iamVjdFJlcXVlc3RlZCAhPSBzdGF0ZUludGVybmFsKCk7CiB9CiAKK2Jvb2wgSGlzdG9y
eTo6aXNTYW1lQXNDdXJyZW50U3RhdGUoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0ZSkgY29u
c3QKK3sKKyAgICByZXR1cm4gc3RhdGUgPT0gc3RhdGVJbnRlcm5hbCgpOworfQorCiB2b2lkIEhp
c3Rvcnk6OmJhY2soKQogewogICAgIGdvKC0xKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvSGlzdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKaW5kZXggYmQ2
ZjZhYTIxMzE1ZmE1NWZlZWRjNDUyN2QwZDMyY2IzOTBjMmU1OC4uODg5YzM3NDEwYzZiN2NhOTQx
ODRkMzYxNWEyZjg3ZGNjN2IxNGVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9I
aXN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKQEAgLTQ1LDcgKzQ1
LDYgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAgICAgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBzdGF0ZSgpOwotICAgIGJvb2wgc3RhdGVDaGFuZ2VkKCkgY29uc3Q7
CiAgICAgdm9pZCBiYWNrKCk7CiAgICAgdm9pZCBmb3J3YXJkKCk7CiAgICAgdm9pZCBnbyhpbnQg
ZGlzdGFuY2UpOwpAQCAtNTQsNiArNTMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3J3YXJkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2b2lkIGdvKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBpbnQgZGlzdGFuY2UpOwogCisgICAgYm9vbCBzdGF0ZUNoYW5nZWQoKSBjb25zdDsKKyAg
ICBib29sIGlzU2FtZUFzQ3VycmVudFN0YXRlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSopIGNvbnN0
OworCiAgICAgZW51bSBTdGF0ZU9iamVjdFR5cGUgewogICAgICAgICBTdGF0ZU9iamVjdFB1c2gs
CiAgICAgICAgIFN0YXRlT2JqZWN0UmVwbGFjZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYyMTRkMTdkYzc4MmNlM2FmYzFl
ODE4YjcyNmVkM2FmM2YxMDQ0ODkuLmZhNzE1YmMxMmZkZmM1YmUxNGMyNzA4OTQ3ZmVjYzhiYmVm
OWY4OWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMi0xMCAgUGFibG8gRmxvdXJldCAg
PHBhYmxvZkBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgUG9wU3RhdGVFdmVudC5zdGF0ZSBzaG91
bGQgdXNlIHRoZSBzYW1lIG9iamVjdCBhcyBoaXN0b3J5LnN0YXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzQ5MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3N0YXRlLWF0dHJpYnV0ZS1oaXN0b3J5LWdldHRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtaGlzdG9yeS1n
ZXR0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0
YXRlLWF0dHJpYnV0ZS1vbmx5LW9uZS1kZXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtb25seS1vbmUt
ZGVzZXJpYWxpemF0aW9uLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3N0YXRlLWF0dHJpYnV0ZS1wb3BzdGF0ZS1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtcG9wc3RhdGUt
ZXZlbnQuaHRtbDogQWRkZWQuCisKIDIwMTItMDItMDggIEp1bGllbiBDaGFmZnJhaXggIDxqY2hh
ZmZyYWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmli
dXRlLWhpc3RvcnktZ2V0dGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtaGlzdG9yeS1nZXR0ZXItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA0NzUzYTE1OWQ4NGU2M2Q5OGY5N2IzM2NkZjIyMmIyYjIzYzgwN2EKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3Rh
dGUtYXR0cmlidXRlLWhpc3RvcnktZ2V0dGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
K0NoZWNrIHRoYXQgc2V0dGluZyBhIGN1c3RvbSBnZXR0ZXIgZm9yIGhpc3Rvcnkuc3RhdGUgd29y
a3MgY29ycmVjdGx5IGFuZCB0aGF0IFBvcFN0YXRlRXZlbnQuc3RhdGUgc3RpbGwgaGFzIGEgY29y
cmVjdCB2YWx1ZS4KKworUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRlLWhpc3RvcnktZ2V0dGVyLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRlLWhpc3Rvcnkt
Z2V0dGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzlhMTdiMDQzY2JiNGQ3MmZlNGEzYmM2ZjEzYzQwZGRl
NzdmMzdiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRl
b2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtaGlzdG9yeS1nZXR0ZXIuaHRtbApAQCAtMCwwICsxLDUw
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxwPkNoZWNrIHRoYXQgc2V0dGluZyBhIGN1c3RvbSBnZXR0
ZXIgZm9yIGhpc3Rvcnkuc3RhdGUgd29ya3MgY29ycmVjdGx5IGFuZCB0aGF0IFBvcFN0YXRlRXZl
bnQuc3RhdGUgc3RpbGwgaGFzIGEgY29ycmVjdCB2YWx1ZS48L3A+Cis8cHJlIGlkPWxvZz48L3By
ZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobXNnKSB7CisgICAgZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigiI2xvZyIpLmlubmVySFRNTCArPSBtc2cgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJh
Y2tGb3J3YXJkTGlzdCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3QoKSB7CisgICAgaWYgKCEoInN0YXRlIiBpbiBoaXN0b3J5KSkgeworICAgICAgICBsb2co
IkZBSUw6IGhpc3Rvcnkuc3RhdGUgaXMgbm90IGRlZmluZWQiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoaXN0b3J5
LCAic3RhdGUiLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gIm9oIGhhaSIgfSB9KTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIC8vIGhpc3Rvcnkuc3RhdGUgaXMgbm90IGNvbmZpZ3Vy
YWJsZSBpbiBKU0MuCisgICAgICAgIGxvZyhlLm5hbWUgPT0gIlR5cGVFcnJvciIgPyAiUEFTUyIg
OiAoIkZBSUw6IHVuZXhwZWN0ZWQgZXhjZXB0aW9uOiAiICsgZSkpOworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAoaGlzdG9yeS5zdGF0ZSAhPT0gIm9oIGhhaSIpIHsKKyAgICAgICAgbG9nKCdGQUlMOiBo
aXN0b3J5LnN0YXRlICE9ICJvaCBoYWkiJyk7CisgICAgfQorCisgICAgaGlzdG9yeS5wdXNoU3Rh
dGUoNDIsICIiLCAiIik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUoNDMsICIiLCAiIik7CisKKyAg
ICB3aW5kb3cub25wb3BzdGF0ZSA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgaWYgKGUuc3RhdGUg
IT09IDQyKQorICAgICAgICAgICAgbG9nKCJGQUlMOiBlLnN0YXRlIGV4cGVjdGVkIDQyLCB3YXMg
IiArIGUuc3RhdGUgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgZS5zdGF0ZSArICIpIik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGxvZygiUEFTUyIpOworICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgIH0KKworICAgIGhpc3RvcnkuYmFjaygpOworfQorCit0ZXN0KCk7Cis8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cy9zdGF0ZS1hdHRyaWJ1dGUtb25seS1vbmUtZGVzZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtb25s
eS1vbmUtZGVzZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCBlM2QwMTE3Zjk5ZGQ4ZmFi
YTZiZDUyNDRmZDc0NWM3NGRhNjlkZmMwLi4xNTkxNTVlOWJkNDU0OWVkNjVkNmFjOGFjZmE2ODYw
ZTlhZDM0OGJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvc3RhdGUtYXR0cmlidXRlLW9ubHktb25lLWRlc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0
ZS1vbmx5LW9uZS1kZXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0xMiw3ICsxMiw3IEBA
IEluc2lkZSBwb3BzdGF0ZSBldmVudAogCiBQQVNTIGhpc3Rvcnkuc3RhdGUgIT09IHN0YXRlT2Jq
ZWN0IGlzIHRydWUKIFBBU1MgcG9wU3RhdGVFdmVudC5zdGF0ZSAhPT0gc3RhdGVPYmplY3QgaXMg
dHJ1ZQotRkFJTCBwb3BTdGF0ZUV2ZW50LnN0YXRlID09PSBoaXN0b3J5LnN0YXRlIHNob3VsZCBi
ZSB0cnVlLiBXYXMgZmFsc2UuCitQQVNTIHBvcFN0YXRlRXZlbnQuc3RhdGUgPT09IGhpc3Rvcnku
c3RhdGUgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
c3RhdGUtYXR0cmlidXRlLW9ubHktb25lLWRlc2VyaWFsaXphdGlvbi5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1vbmx5LW9uZS1kZXNl
cmlhbGl6YXRpb24uaHRtbAppbmRleCAwODM3MjFkMzgzNDg5NjAwMmI2YmY1YjIzNTkxMTAyYjFj
M2ZlYWRjLi45NTI5NDk1N2IzMjIwOWNlMzFiYzBmOTJjNGJlMjFhYWM0ODc1MjcyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRl
LW9ubHktb25lLWRlc2VyaWFsaXphdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtb25seS1vbmUtZGVzZXJpYWxpemF0aW9u
Lmh0bWwKQEAgLTQ1LDcgKzQ1LDcgQEAKICAgICAgICAgLy8gT3VyIHN0b3JlZCByZWZlcmVuY2Ug
dG8gc3RhdGVPYmplY3Qgd2lsbCBub3QgbWF0Y2ggdGhlIHN0YXRlIG9iamVjdCBpbiB0aGlzIHBv
cCBzdGF0ZSBldmVudCwgYXMgaXQgaXMgdGhlIHNhbWUgYXMgaGlzdG9yeS5zdGF0ZSB3aGljaCBp
cyBhIHN0cnVjdHVyZWQgY2xvbmUgb2YgdGhlIGhpc3RvcnkgaXRlbSdzIHN0YXRlIG9iamVjdC4K
ICAgICAgICAgc2hvdWxkQmVUcnVlKCJwb3BTdGF0ZUV2ZW50LnN0YXRlICE9PSBzdGF0ZU9iamVj
dCIpOwogICAgICAgICAvLyBUaGUgZXZlbnQncyBzdGF0ZSBvYmplY3QgYW5kIHRoZSBjdXJyZW50
IHN0YXRlIG9iamVjdCBzaG91bGQgbWF0Y2guCi0gICAgICAgIHNob3VsZEJlVHJ1ZSgicG9wU3Rh
dGVFdmVudC5zdGF0ZSA9PT0gaGlzdG9yeS5zdGF0ZSIpOyAvLyBUaGlzIGZhaWxzIGZvciBub3cs
IG5lZWRzIHRvIGJlIGZpeGVkLgorICAgICAgICBzaG91bGRCZVRydWUoInBvcFN0YXRlRXZlbnQu
c3RhdGUgPT09IGhpc3Rvcnkuc3RhdGUiKTsKIAogICAgICAgICB2YXIgcyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwogICAgICAgICBzLnNyYyA9ICIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtcG9wc3RhdGUtZXZlbnQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0ZS1w
b3BzdGF0ZS1ldmVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFhYmMzYjA0MWM5Zjc5MDM1
N2E0ZjRkY2RiNjk5N2ZlOTZjNzk3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS1hdHRyaWJ1dGUtcG9wc3RhdGUtZXZlbnQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK0NoZWNrIHRoYXQgUG9wU3RhdGVFdmVudC5zdGF0
ZSBhbHdheXMgaGFzIGEgY29ycmVjdCB2YWx1ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgaGlzdG9yeS5zdGF0ZSBpcyBkZWZpbmVkLgorUHVzaCBzdGF0ZSAxCitQdXNo
IHN0YXRlIDIKK1BBU1MgaGlzdG9yeS5zdGF0ZSBpcyAyCitHbyBiYWNrCitQQVNTIHBvcFN0YXRl
RXZlbnQuc3RhdGUgaXMgMQorUEFTUyBoaXN0b3J5LnN0YXRlIGlzIDEKK1B1c2ggc3RhdGUgMwor
UEFTUyBwb3BTdGF0ZUV2ZW50LnN0YXRlIGlzIDEKK1BBU1MgaGlzdG9yeS5zdGF0ZSBpcyAzCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWF0dHJpYnV0
ZS1wb3BzdGF0ZS1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL3N0YXRlLWF0dHJpYnV0ZS1wb3BzdGF0ZS1ldmVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkOWJm
YjU3N2U5YjFhZGY2ODZkYzA4NWQwNTA0MDMyNjM0MzI1MTcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtYXR0cmlidXRlLXBvcHN0
YXRlLWV2ZW50Lmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkLz4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlv
bigiQ2hlY2sgdGhhdCBQb3BTdGF0ZUV2ZW50LnN0YXRlIGFsd2F5cyBoYXMgYSBjb3JyZWN0IHZh
bHVlLiIpOworCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
Y2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIH0KKworICAgIHNob3VsZEJlRGVmaW5lZCgiaGlzdG9yeS5zdGF0
ZSIpOworCisgICAgZGVidWcoIlB1c2ggc3RhdGUgMSIpOworICAgIGhpc3RvcnkucHVzaFN0YXRl
KDEsICIiLCAiIik7CisgICAgZGVidWcoIlB1c2ggc3RhdGUgMiIpOworICAgIGhpc3RvcnkucHVz
aFN0YXRlKDIsICIiLCAiIik7CisgICAgc2hvdWxkRXZhbHVhdGVUbygiaGlzdG9yeS5zdGF0ZSIs
IDIpOworCisgICAgdmFyIHBvcFN0YXRlRXZlbnQ7CisgICAgd2luZG93Lm9ucG9wc3RhdGUgPSBm
dW5jdGlvbihlKSB7CisgICAgICAgIHBvcFN0YXRlRXZlbnQgPSBlOworICAgICAgICBzaG91bGRF
dmFsdWF0ZVRvKCJwb3BTdGF0ZUV2ZW50LnN0YXRlIiwgMSk7CisgICAgICAgIHNob3VsZEV2YWx1
YXRlVG8oImhpc3Rvcnkuc3RhdGUiLCAxKTsKKworICAgICAgICBkZWJ1ZygiUHVzaCBzdGF0ZSAz
Iik7CisgICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKDMsICIiLCAiIik7CisgICAgICAgIHNob3Vs
ZEV2YWx1YXRlVG8oInBvcFN0YXRlRXZlbnQuc3RhdGUiLCAxKTsKKyAgICAgICAgc2hvdWxkRXZh
bHVhdGVUbygiaGlzdG9yeS5zdGF0ZSIsIDMpOworCisgICAgICAgIHZhciBzID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CisgICAgICAgIHMuc3JjID0gIi4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHMpOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaEpTVGVzdCwgMCk7CisgICAgfQorCisgICAg
ZGVidWcoIkdvIGJhY2siKTsKKyAgICBoaXN0b3J5LmJhY2soKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>