<?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>73094</bug_id>
          
          <creation_ts>2011-11-24 13:34:08 -0800</creation_ts>
          <short_desc>InspectorServer: Enable and connect the WebInspectorServer with WebKit2 pages.</short_desc>
          <delta_ts>2012-04-03 06:35:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>73092</dependson>
    
    <dependson>73093</dependson>
    
    <dependson>73852</dependson>
    
    <dependson>73855</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jocelyn Turcotte">jturcotte</reporter>
          <assigned_to name="Jocelyn Turcotte">jturcotte</assigned_to>
          <cc>andersca</cc>
    
    <cc>hausmann</cc>
    
    <cc>joepeck</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>sam</cc>
    
    <cc>seokju.kwon</cc>
    
    <cc>thomas</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>508885</commentid>
    <comment_count>0</comment_count>
      <attachid>116542</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-11-24 13:34:08 -0800</bug_when>
    <thetext>Created attachment 116542
Original patch

Tracks the &quot;New Part 5&quot; patch of bug #51364.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508886</commentid>
    <comment_count>1</comment_count>
      <attachid>116543</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-11-24 13:37:01 -0800</bug_when>
    <thetext>Created attachment 116543
Patch

This patch depends on another patch exposing the DeveloperExtras preference that I&apos;ll upload once this looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508891</commentid>
    <comment_count>2</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-11-24 13:44:03 -0800</bug_when>
    <thetext>Sam, Timothy, could you have a look at WebInspectorProxy, WebPageProxy and WebInspector to tell me if the approach looks reasonable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515318</commentid>
    <comment_count>3</comment_count>
      <attachid>117925</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-12-05 12:48:23 -0800</bug_when>
    <thetext>Created attachment 117925
Patch

Changes from last patch:
- The actual server implementation has been moved to bug #73855 and this patch now only contains the bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517539</commentid>
    <comment_count>4</comment_count>
      <attachid>117925</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-12-08 10:42:14 -0800</bug_when>
    <thetext>Comment on attachment 117925
Patch

This patch looks like it adds InspectorServer to the build and includes &quot;WebInspectorServer.h&quot; but I don&apos;t see those files anywhere. Are they in another patch or am I just missing them? The path looks okay from my perspective.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517570</commentid>
    <comment_count>5</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-12-08 11:00:02 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 117925 [details])
&gt; This patch looks like it adds InspectorServer to the build and includes &quot;WebInspectorServer.h&quot; but I don&apos;t see those files anywhere. Are they in another patch or am I just missing them? The path looks okay from my perspective.

The files are added in bug #73855 but adding the include path to other builds shouldn&apos;t be necessary if I guard the include with ENABLE(INSPECTOR_SERVER).
I&apos;ll upload an update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517577</commentid>
    <comment_count>6</comment_count>
      <attachid>118425</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-12-08 11:04:26 -0800</bug_when>
    <thetext>Created attachment 118425
Patch

Guard the include instead of adding InspectorServer to platforms without ENABLE(INSPECTOR_SERVER)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536210</commentid>
    <comment_count>7</comment_count>
      <attachid>118425</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-01-14 12:54:30 -0800</bug_when>
    <thetext>Comment on attachment 118425
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1500
&gt; +#endif

You shouldn&apos;t register the page unconditionally each time that preferences change. You will end up with the same page being registered multiple times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536211</commentid>
    <comment_count>8</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-01-14 12:57:40 -0800</bug_when>
    <thetext>Sorry, the context of my comment got messed up. This is about 
&gt;@@ -1489,6 +1494,11 @@ void WebPageProxy::preferencesDidChange()
&gt;     if (!isValid())
&gt;         return;
&gt; 
&gt;+#if ENABLE(INSPECTOR_SERVER)
&gt;+    if (m_pageGroup-&gt;preferences()-&gt;developerExtrasEnabled())
&gt;+        inspector()-&gt;enableRemoteInspection();
&gt;+#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556662</commentid>
    <comment_count>9</comment_count>
      <attachid>118425</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-14 15:15:39 -0800</bug_when>
    <thetext>Comment on attachment 118425
Patch

r- per comment #7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591381</commentid>
    <comment_count>10</comment_count>
      <attachid>134629</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-03-29 11:38:12 -0700</bug_when>
    <thetext>Created attachment 134629
Patch

- Rebased
- Fixed the registration problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591434</commentid>
    <comment_count>11</comment_count>
      <attachid>134629</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-29 12:24:22 -0700</bug_when>
    <thetext>Comment on attachment 134629
Patch

Attachment 134629 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12202425</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593363</commentid>
    <comment_count>12</comment_count>
      <attachid>134629</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-04-02 05:00:54 -0700</bug_when>
    <thetext>Comment on attachment 134629
Patch

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

&gt; Source/WebKit2/ChangeLog:9
&gt; +        Pages are registered and unregistered as they are created
&gt; +        and destroyed if they have developer extras enabled. The server is

So they are destroyed if developer extras is enabled? :) I think this could be written to avoid confusion.

&gt; Source/WebKit2/UIProcess/qt/QtWebContext.cpp:65
&gt; +            LOG_ERROR(&quot;Non numeric port for the inspector server \&quot;%s\&quot;. Examples of valid input: \&quot;12345\&quot; or \&quot;192.168.2.14:12345\&quot; (with the address of one of this host&apos;s interface).&quot;, qPrintable(portStr));

LOG_ERROR here

&gt; Source/WebKit2/UIProcess/qt/QtWebContext.cpp:72
&gt; +            qWarning(&quot;Inspector server started successfully. Try pointing a WebKit browser to %s&quot;, qPrintable(inspectorServerUrl));

Then qWarning here...

&gt; Source/WebKit2/UIProcess/qt/QtWebContext.cpp:78
&gt; +static void initWebKit()

Could we find a better name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593463</commentid>
    <comment_count>13</comment_count>
      <attachid>135100</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-04-02 07:46:48 -0700</bug_when>
    <thetext>Created attachment 135100
Patch

- Addressed noted issues.
- Changed the Nokia copyrights to 2012 for new files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593629</commentid>
    <comment_count>14</comment_count>
      <attachid>135100</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-02 11:31:28 -0700</bug_when>
    <thetext>Comment on attachment 135100
Patch

Attachment 135100 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12311617</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594337</commentid>
    <comment_count>15</comment_count>
      <attachid>135100</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-04-03 03:16:12 -0700</bug_when>
    <thetext>Comment on attachment 135100
Patch

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

&gt; Source/WebKit2/UIProcess/qt/QtWebContext.cpp:50
&gt; +    QString inspectorEnv = QString::fromLatin1(qgetenv(&quot;QTWEBKIT_INSPECTOR_SERVER&quot;));

I suggest to use fromUtf8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594434</commentid>
    <comment_count>16</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-04-03 06:35:54 -0700</bug_when>
    <thetext>Committed r113028: &lt;http://trac.webkit.org/changeset/113028&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116542</attachid>
            <date>2011-11-24 13:34:08 -0800</date>
            <delta_ts>2011-11-24 13:36:49 -0800</delta_ts>
            <desc>Original patch</desc>
            <filename>new-part-5.patch</filename>
            <type>text/plain</type>
            <size>44301</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYzFiMjFkOC4uNDlmYWJhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTExNjksNiArMTE2OSw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTZXJ2ZXIuY3BwCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvclNldHRpbmdzLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2M2UxZWMx
Li5mMWM2NTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC01LDYgKzUsODMgQEAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogUmVtb3RlIFdlYiBJbnNwZWN0b3IgLSBDcm9zcyBQbGF0Zm9ybSBJbnNwZWN0b3JTZXJ2
ZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMzY0
CiAKKyAgICAgICAgUGFydCA1IC0gQWRkIEluc3BlY3RvclNlcnZlciBsb2dpYyB0byBoYW5kbGUg
Y29ubmVjdGlvbnMuCisKKyAgICAgICAgQWRkIGEgZ2xvYmFsIGluc3BlY3RvclNlcnZlcigpIHNp
bmdsZXRvbi4gUGFnZXMgcmVnaXN0ZXIKKyAgICAgICAgYW5kIHVucmVnaXN0ZXIgYXMgdGhleSBh
cmUgY3JlYXRlZCBhbmQgZGVzdHJveWVkLiBPbmNlIHRoZQorICAgICAgICBzZXJ2ZXIgaXMgbGlz
dGVuaW5nIG9uIGEgcG9ydCwgdGhlbjoKKworICAgICAgICBXaGlsZSBhY3RpbmcgYXMgYW4gSFRU
UCBTZXJ2ZXIsIHRoZSBXZWJLaXQgY2xpZW50IHNob3VsZCBkbworICAgICAgICBoYW5kbGUgdGhl
IHJlcXVlc3QgcGF0aHMgbGlrZSBzbzoKKworICAgICAgICAgIC0gIi8iIHdpbGwgcHJvdmlkZSBh
IGxpc3RpbmcgcGFnZSBvZiBhbGwgdGhlIGluc3BlY3RhYmxlIHBhZ2VzLgorICAgICAgICAgIC0g
Ii8/cGFnZT08bnVtPiIgd2lsbCByZXR1cm4gdGhlIGluc3BlY3Rvci5odG1sIGZpbGUuIFRoZSBs
aW5rcworICAgICAgICAgICAgb24gdGhlIGxpc3RpbmcgcGFnZSBhcmUgb2YgdGhpcyBmb3JtYXQu
CisgICAgICAgICAgLSBhbnl0aGluZyBlbHNlLCBmb3IgZXhhbXBsZSAiL2luc3BlY3Rvci5qcyIg
d2lsbCByZXR1cm4gdGhlIGZpbGUKKyAgICAgICAgICAgIHdpdGggdGhlIHNhbWUgbmFtZSB1bmRl
cm5lYXRoIHRoZSBidW5kbGUncyBpbnNwZWN0b3IgZGlyZWN0b3J5LgorICAgICAgICAgICAgSW52
YWxpZCBmaWxlcyBzaG91bGQgcmV0dXJuIGEgNDA0LgorCisgICAgICAgIFdoZW4gdGhlcmUgaXMg
YSByZW1vdGUgY29ubmVjdGlvbiwgbWVzc2FnZXMgY2FuIGJlIHNlbnQgb3ZlcgorICAgICAgICB0
aGUgc29ja2V0IGJ5IGlkZW50aWZ5aW5nIHRoZSBjb25uZWN0aW9uIHdpdGggYSBjb25uZWN0aW9u
IGlkLAorICAgICAgICBhbmQgc2VuZGluZyBkYXRhIHRocm91Z2ggSW5zcGVjdG9yU2VydmVyOjpz
ZW5kTWVzc2FnZU92ZXJDb25uZWN0aW9uLgorCisgICAgICAgIFRoZSBJbnNwZWN0b3JDbGllbnQg
aW50ZXJmYWNlIGhhcyBiZWVuIGV4dGVuZGVkIHRvIGJlIGEgcmVtb3RlIGNvbm5lY3Rpb24uCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnQ6Okluc3BlY3RvckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnQ6Omhhc1JlbW90ZUNvbm5lY3Rpb24pOiB0aGVyZSBpcyBhIHJlbW90ZSBj
b25uZWN0aW9uLCBtZXNzYWdlcyBzaG91bGQgZ28gdGhyb3VnaCB0aGUgaW5zcGVjdG9yIHNlcnZl
ci4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6cmVtb3RlQ29ubmVjdGlvbklk
KTogdGhlIGNvbm5lY3Rpb24gaWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6
OnNldFJlbW90ZUNvbm5lY3Rpb25JZCk6IHVzZWQgb25seSBieSB0aGUgaW5zcGVjdG9yIHNlcnZl
ciB0byBpZGVudGlmeSB0aGUgY29ubmVjdGlvbiBpZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudDo6c2V0dXBSZW1vdGVDb25uZWN0aW9uKTogd2hlbiBpbXBsZW1lbnRlZCwgcmV0
dXJuIHRydWUgYW5kIHN0YXJ0IHRoZSBpbnNwZWN0b3IgY29tbXVuaWNhdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6dGVhcmRvd25SZW1vdGVDb25uZWN0aW9uRnJvbVJl
bW90ZVNpZGUpOiBjbGVhbnVwIHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgdGVybWluYXRlZCByZW1v
dGVseS4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKTog
cmVnaXN0ZXIgdGhlIHBhZ2UuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKTogdW5yZWdpc3RlciB0aGUgcGFnZS4KKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOiBhbGxvdyBmb3Igc3RvcmluZyB0aGUg
cGFnZUlkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cGFnZUlkRm9y
SW5zcGVjdG9yU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OnNldFBhZ2VJZEZvckluc3BlY3RvclNlcnZlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclNlcnZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aW5zcGVjdG9yU2VydmVy
KTogZ2xvYmFsIHNpbmdsZXRvbi4gTm8gbmVlZCBmb3IgbXVsdGlwbGUgc2VydmVycywgYW5kIHRo
aXMgc2hvdWxkIGJlIGFsd2F5cyBydW5uaW5nIHRvIGFsd2F5cyBoYXZlIGEgbGlzdCBvZiBwYWdl
cy4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclNlcnZlcjo6SW5zcGVjdG9yU2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclNlcnZlcjo6fkluc3BlY3RvclNlcnZlcik6IGNs
ZWFudXAgY29ubmVjdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTZXJ2ZXI6OnJl
Z2lzdGVyUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTZXJ2ZXI6OnVucmVnaXN0
ZXJQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclNlcnZlcjo6cGFnZUZvcklkZW50
aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2VydmVyOjppbnNwZWN0YWJsZVBh
Z2VzKTogbGlzdCBvZiBwYWdlcywgYW5kIHRoZWlyIHBhZ2VJZHMsIHVzZWZ1bCB0byBwcm92aWRl
IGEgbGlzdGluZyBwYWdlLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2VydmVyOjpjbG9z
ZUNvbm5lY3Rpb24pOiBsb2NhbCBzaWRlIGNhdXNlIGEgY29ubmVjdGlvbiB0byBjbG9zZS4gRm9y
IGV4YW1wbGUsIGNsb3NpbmcgYSBicm93c2VyIHRhYi4KKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclNlcnZlcjo6c2VuZE1lc3NhZ2VPdmVyQ29ubmVjdGlvbik6IHNlbmQgYSBXZWJTb2NrZXQg
bWVzc2FnZSBvdmVyIHRoZSBzb2NrZXQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTZXJ2
ZXI6OmRpZFJlY2VpdmVVbnJlY29nbml6ZWRIVFRQUmVxdWVzdCk6IGhhbmRsZSBhbiBIVFRQIHJl
cXVlc3QgYXMgZGVzY3JpYmVkIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2Vy
dmVyOjpkaWRSZWNlaXZlV2ViU29ja2V0VXBncmFkZUhUVFBSZXF1ZXN0KTogcmVzdHJpY3QgdXBn
cmFkZSByZXF1ZXN0cyB0byB0aGUgIi9kZXZ0b29scy9wYWdlLzxudW0+IiBmb3JtYXQuCisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTZXJ2ZXI6OmRpZEVzdGFibGlzaFdlYlNvY2tldENvbm5l
Y3Rpb24pOiBwZXJmb3JtIHNldHVwLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2VydmVy
OjpkaWRSZWNlaXZlV2ViU29ja2V0TWVzc2FnZSk6IGRpc3BhdGNoIGluY29taW5nIG1lc3NhZ2Ug
b24gdGhlIGJhY2tlbmQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTZXJ2ZXI6OmRpZENs
b3NlV2ViU29ja2V0Q29ubmVjdGlvbik6IHJlbW90ZSBzaWRlIGNsb3NpbmcsIGhhbmRsZSBjbGVh
bnVwLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2VydmVyOjpkb2VzUGFnZUFsbG93UmVt
b3RlSW5zcGVjdGlvbik6IGhlbHBlciB0byB2ZXJpZnkgaWYgYSBwYWdlIGFsbG93cyByZW1vdGUg
aW5zcGVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclNlcnZlcjo6Y2xvc2VGcm9t
TG9jYWxTaWRlKTogaGVscGVyIGZvciBjbGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yU2VydmVyOjpjbG9zZUZyb21SZW1vdGVTaWRlKTogaGVscGVyIGZvciBjbGVhbnVwLgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2VydmVyOjppc1JlcXVlc3RQYXRoTGlzdGluZ1BhZ2Up
OiBoZWxwZXIgZm9yIHBhcnNpbmcgdGhlIHJlcXVlc3QgcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclNlcnZlcjo6cGFnZUlkRnJvbVJlcXVlc3RQYXRoKTogaGVscGVyIGZvciBwYXJz
aW5nIHRoZSBwYWdlSWQgZnJvbSBhIHJlcXVlc3QgcGF0aC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yU2VydmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2Vy
dmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2VydmVyOjpzZXRJbnNw
ZWN0b3JTZXJ2ZXJDbGllbnQpOiBhbGxvdyBhIHBsYXRmb3JtIHRvIHJlZ2lzdGVyIGEgV2ViS2l0
IGNsaWVudC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU2VydmVyQ2xpZW50Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2VydmVyQ2xpZW50Ojp+SW5zcGVjdG9y
U2VydmVyQ2xpZW50KToKKworICAgICAgICAgIE1pc2NlbGxhbmVvdXMuIEFkZCBuZXcgZmlsZXMg
dG8gdGhlIGJ1aWxkLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05V
bWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUu
cHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworMjAxMS0wMS0yNiAgSm9zZXBo
IFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW90ZSBXZWIgSW5zcGVj
dG9yIC0gQ3Jvc3MgUGxhdGZvcm0gSW5zcGVjdG9yU2VydmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTM2NAorCiAgICAgICAgIFBhcnQgNCAtIEFk
ZCBhIEdlbmVyaWMgV2ViU29ja2V0IFNlcnZlci4KIAogICAgICAgICBUaGUgSW5zcGVjdG9yIFNl
cnZlciB3aWxsIGJlIGEgV2ViU29ja2V0IFNlcnZlciB0aGF0IGFsc28gcmVzcG9uZHMgdG8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KaW5kZXggMzYwOTc2YS4uY2RmNjNjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTE5ODEsNiArMTk4MSw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCBcCiAJU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU2VydmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclNlcnZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U2VydmVyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTZXR0
aW5ncy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTZXR0aW5ncy5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCBlYjI2YzM5Li44MzE0ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMDM1
LDggKzIwMzUsMTEgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAnLAotICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JTZXR0aW5ncy5oJywKKyAgICAgICAgICAgICdpbnNw
ZWN0b3IvSW5zcGVjdG9yU2VydmVyLmNwcCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvclNlcnZlci5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yU2VydmVyQ2xp
ZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JTZXR0aW5ncy5jcHAnLAor
ICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JTZXR0aW5ncy5oJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNjJmNjNiYi4uODU5ZmE0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KQEAgLTEwNjAsNiArMTA2MCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3RvclNlcnZlci5jcHAgXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JTZXR0aW5ncy5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5j
cHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBcCkBAIC0xOTU1LDYg
KzE5NTYsOCBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggXAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggXAorICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JTZXJ2ZXIuaCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3RvclNlcnZlckNsaWVudC5oIFwK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yU2V0dGluZ3MuaCBcCiAgICAgaW5zcGVjdG9yL0luc3Bl
Y3RvclN0YXRlLmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA2MWU4NTE0
Li4xOWE0OGZlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtNjUxNzQsNiArNjUxNzQsMTggQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvclNlcnZlci5jcHAiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxJbnNwZWN0b3JTZXJ2ZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvclNlcnZlckNsaWVudC5oIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9yU2V0dGluZ3MuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYmEyOGMwLi5jYmY4
MTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0zMTU1LDggKzMxNTUsMTEgQEAKIAkJQTU3REM0REIxMkU3Qzc2QzAwQzdBMjlD
IC8qIFNlcnZlclNvY2tldEhhbmRsZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3REM0RDkxMkU3Qzc2QzAwQzdBMjlDIC8qIFNlcnZlclNv
Y2tldEhhbmRsZUJhc2UuY3BwICovOyB9OwogCQlBNTdEQzRFQTEyRTdEM0Q5MDBDN0EyOUMgLyog
U2VydmVyU29ja2V0SGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTdEQzRFODEyRTdEM0Q5MDBDN0EyOUMgLyogU2VydmVyU29ja2V0SGFuZGxl
LmggKi87IH07CiAJCUE1N0RDNEVCMTJFN0QzRDkwMEM3QTI5QyAvKiBTZXJ2ZXJTb2NrZXRIYW5k
bGVDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTdEQzRFOTEyRTdEM0Q5MDBDN0EyOUMgLyogU2VydmVyU29ja2V0SGFuZGxlQ0ZOZXQuY3Bw
ICovOyB9OworCQlBNTdEQzVCMzEyRTgxOTcwMDBDN0EyOUMgLyogSW5zcGVjdG9yU2VydmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdEQzVCMTEy
RTgxOTcwMDBDN0EyOUMgLyogSW5zcGVjdG9yU2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU3REM1QjQxMkU4MTk3MDAwQzdBMjlDIC8q
IEluc3BlY3RvclNlcnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTdEQzVCMjEyRTgxOTcwMDBDN0EyOUMgLyogSW5zcGVjdG9yU2VydmVyLmNw
cCAqLzsgfTsKIAkJQTU4NzQ2NTMxMkVBMTk2QTAwMDNGNkYwIC8qIFdlYlNvY2tldFNlcnZlckNv
bm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1ODc0NjUxMTJFQTE5NkEwMDAzRjZGMCAvKiBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU4NzQ2
NTQxMkVBMTk2QTAwMDNGNkYwIC8qIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NzQ2NTIxMkVBMTk2
QTAwMDNGNkYwIC8qIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24uY3BwICovOyB9OworCQlBNTg3
NDcwQjEyRUU5NzBCMDAwM0Y2RjAgLyogSW5zcGVjdG9yU2VydmVyQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg3NDcwQTEyRUU5NzBCMDAw
M0Y2RjAgLyogSW5zcGVjdG9yU2VydmVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU4NzQ3QjExMkVGNjU4MjAwMDNGNkYwIC8qIFdl
YlNvY2tldFNlcnZlckNvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODc0N0IwMTJFRjY1ODIwMDAzRjZGMCAvKiBXZWJTb2Nr
ZXRTZXJ2ZXJDb25uZWN0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU4NzQ4MUIxMkVGOEY5OTAwMDNGNkYwIC8qIFdlYlNvY2tl
dEZyYW1pbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU4NzQ4MTkxMkVGOEY5OTAwMDNGNkYwIC8qIFdlYlNvY2tldEZyYW1pbmcuY3BwICovOyB9
OwogCQlBNTg3NDgxQzEyRUY4Rjk5MDAwM0Y2RjAgLyogV2ViU29ja2V0RnJhbWluZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NzQ4MUExMkVGOEY5
OTAwMDNGNkYwIC8qIFdlYlNvY2tldEZyYW1pbmcuaCAqLzsgfTsKQEAgLTk1MzMsOCArOTUzNiwx
MSBAQAogCQlBNTdEQzREOTEyRTdDNzZDMDBDN0EyOUMgLyogU2VydmVyU29ja2V0SGFuZGxlQmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2ZXJTb2NrZXRI
YW5kbGVCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3REM0RTgxMkU3
RDNEOTAwQzdBMjlDIC8qIFNlcnZlclNvY2tldEhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZXJ2ZXJTb2NrZXRIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU3REM0RTkxMkU3RDNEOTAwQzdBMjlDIC8qIFNlcnZlclNvY2tldEhhbmRsZUNG
TmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZlclNvY2tl
dEhhbmRsZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU3REM1QjEx
MkU4MTk3MDAwQzdBMjlDIC8qIEluc3BlY3RvclNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTU3REM1QjIxMkU4MTk3MDAwQzdBMjlDIC8qIEluc3BlY3RvclNlcnZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JTZXJ2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg3NDY1MTEyRUExOTZBMDAwM0Y2RjAgLyog
V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1ODc0NjUyMTJFQTE5NkEwMDAzRjZGMCAvKiBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldFNl
cnZlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTg3NDcw
QTEyRUU5NzBCMDAwM0Y2RjAgLyogSW5zcGVjdG9yU2VydmVyQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclNlcnZlckNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNTg3NDdCMDEyRUY2NTgyMDAwM0Y2RjAgLyogV2ViU29ja2V0
U2VydmVyQ29ubmVjdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1ODc0ODE5MTJFRjhGOTkwMDAzRjZGMCAvKiBXZWJTb2NrZXRGcmFtaW5nLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldEZyYW1pbmcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg3NDgxQTEyRUY4Rjk5MDAwM0Y2
RjAgLyogV2ViU29ja2V0RnJhbWluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJTb2NrZXRGcmFtaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjk5
Nyw2ICsxMzAwMyw5IEBACiAJCQkJOUYwRDZCMkQxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3Rv
clByb2ZpbGVyQWdlbnQuaCAqLywKIAkJCQk4MkFCMTc3MTEyNUM4MjY3MDBDNTA2OUQgLyogSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgKi8sCiAJCQkJODJBQjE3NzIxMjVDODI2NzAwQzUwNjlE
IC8qIEluc3BlY3RvclJlc291cmNlQWdlbnQuaCAqLywKKwkJCQlBNTdEQzVCMjEyRTgxOTcwMDBD
N0EyOUMgLyogSW5zcGVjdG9yU2VydmVyLmNwcCAqLywKKwkJCQlBNTdEQzVCMTEyRTgxOTcwMDBD
N0EyOUMgLyogSW5zcGVjdG9yU2VydmVyLmggKi8sCisJCQkJQTU4NzQ3MEExMkVFOTcwQjAwMDNG
NkYwIC8qIEluc3BlY3RvclNlcnZlckNsaWVudC5oICovLAogCQkJCTRGQTNCOTA4MTI1Q0QxMjEw
MDMwMEJBRCAvKiBJbnNwZWN0b3JTdGF0ZS5jcHAgKi8sCiAJCQkJNEZBM0I5MDkxMjVDRDEyMjAw
MzAwQkFEIC8qIEluc3BlY3RvclN0YXRlLmggKi8sCiAJCQkJODJBQjE3NkYxMjVDODI2NzAwQzUw
NjlEIC8qIEluc3BlY3RvclN0eWxlU2hlZXQuY3BwICovLApAQCAtMjA4ODEsNiArMjA4OTAsNyBA
QAogCQkJCTIwRDYyOTI3MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlGMEQ2QjJGMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNw
ZWN0b3JQcm9maWxlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MkFCMTc3NjEyNUM4MjY3
MDBDNTA2OUQgLyogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTU3REM1QjMxMkU4MTk3MDAwQzdBMjlDIC8qIEluc3BlY3RvclNlcnZlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNEZBM0I5MEIxMjVDRDEyMjAwMzAwQkFEIC8qIEluc3BlY3RvclN0YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4MkFCMTc3NDEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5
bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzU0MTMzQTgxMDJFMDBFODAwMDc1RDAwIC8q
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjIzOTUsNiArMjI0
MDUsNyBAQAogCQkJCUE1N0RDNEVBMTJFN0QzRDkwMEM3QTI5QyAvKiBTZXJ2ZXJTb2NrZXRIYW5k
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RDIxNEIyMTJFOTA1NTEwMDkwRjM3MCAvKiBIVFRQ
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVEMjE0QjMxMkU5MDU1MTAwOTBGMzcwIC8q
IEhUVFBQYXJzZUVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTg3NDcwQjEyRUU5NzBCMDAw
M0Y2RjAgLyogSW5zcGVjdG9yU2VydmVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg3
NDgxQzEyRUY4Rjk5MDAwM0Y2RjAgLyogV2ViU29ja2V0RnJhbWluZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0y
NTA4Niw2ICsyNTA5Nyw3IEBACiAJCQkJRjNENEM0NzgxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3Bl
Y3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0RDNERC
MTJFN0M3NkMwMEM3QTI5QyAvKiBTZXJ2ZXJTb2NrZXRIYW5kbGVCYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1N0RDNEVCMTJFN0QzRDkwMEM3QTI5QyAvKiBTZXJ2ZXJTb2NrZXRIYW5kbGVD
Rk5ldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTdEQzVCNDEyRTgxOTcwMDBDN0EyOUMgLyog
SW5zcGVjdG9yU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RDIxNEIxMTJFOTA1NTEw
MDkwRjM3MCAvKiBIVFRQUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTg3NDgxQjEy
RUY4Rjk5MDAwM0Y2RjAgLyogV2ViU29ja2V0RnJhbWluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNTdEQzRBQTEyRTdDMDkwMDBDN0EyOUMgLyogV2ViU29ja2V0U2VydmVyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCmluZGV4
IDNiODAwN2UuLjBjMGMxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgUGFnZTsKIAogY2xhc3MgSW5zcGVjdG9y
Q2xpZW50IHsKIHB1YmxpYzoKKyAgICBJbnNwZWN0b3JDbGllbnQoKSA6IG1fcmVtb3RlQ29ubmVj
dGlvbklkKDApIHsgfQogICAgIHZpcnR1YWwgfkluc3BlY3RvckNsaWVudCgpIHsgfQogCiAgICAg
dmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpID0gMDsKQEAgLTU2LDYgKzU3LDE3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSW5zcGVjdG9yU3RhdGVDb29raWUoY29u
c3QgU3RyaW5nJikgeyB9OwogCiAgICAgYm9vbCBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQ
YWdlKFBhZ2UqIGZyb250ZW5kUGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKworICAgIC8v
IFdoZW4gdGhlIGNsaWVudCBpcyBmb3IgYSByZW1vdGUgY29ubmVjdGlvbi4KKyAgICBib29sIGhh
c1JlbW90ZUNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZUNvbm5lY3Rpb25JZCAh
PSAwOyB9CisgICAgdW5zaWduZWQgcmVtb3RlQ29ubmVjdGlvbklkKCkgY29uc3QgeyByZXR1cm4g
bV9yZW1vdGVDb25uZWN0aW9uSWQ7IH0KKyAgICB2b2lkIHNldFJlbW90ZUNvbm5lY3Rpb25JZCh1
bnNpZ25lZCBpZCkgeyBtX3JlbW90ZUNvbm5lY3Rpb25JZCA9IGlkOyB9CisKKyAgICB2aXJ0dWFs
IGJvb2wgc2V0dXBSZW1vdGVDb25uZWN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdGVhcmRvd25SZW1vdGVDb25uZWN0aW9uRnJvbVJlbW90ZVNpZGUoKSB7IH0KKwor
cHJvdGVjdGVkOgorICAgIHVuc2lnbmVkIG1fcmVtb3RlQ29ubmVjdGlvbklkOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDZlNWI1MGMuLjJlMjA4MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTcwLDYgKzcw
LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclNlcnZlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvclNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JUaW1lbGluZUFnZW50LmgiCkBAIC0xNDgsNiArMTQ5LDEwIEBAIEluc3BlY3RvckNvbnRyb2xs
ZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGll
bnQpCiB7CiAgICAgQVNTRVJUX0FSRyhwYWdlLCBwYWdlKTsKICAgICBBU1NFUlRfQVJHKGNsaWVu
dCwgY2xpZW50KTsKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBtX3BhZ2VJZEZvcklu
c3BlY3RvclNlcnZlciA9IGluc3BlY3RvclNlcnZlcigpLT5yZWdpc3RlclBhZ2UobV9pbnNwZWN0
ZWRQYWdlKTsKKyNlbmRpZgogfQogCiBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29u
dHJvbGxlcigpCkBAIC0xNzUsNiArMTgwLDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpp
bnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkKICNlbmRpZgogCiAgICAgQVNTRVJUKG1faW5zcGVjdGVk
UGFnZSk7CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGluc3BlY3RvclNlcnZlcigpLT51
bnJlZ2lzdGVyUGFnZShtX2luc3BlY3RlZFBhZ2UpOworI2VuZGlmCiAgICAgbV9pbnNwZWN0ZWRQ
YWdlID0gMDsKIAogICAgIG1fY2xpZW50LT5pbnNwZWN0b3JEZXN0cm95ZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDk5Yzk2MmMu
LjUxMTMzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaApAQCAtMjQzLDYgKzI0Myw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEluc3BlY3Rv
ckF0dGFjaGVkSGVpZ2h0KGxvbmcgaGVpZ2h0KTsKICAgICBsb25nIGluc3BlY3RvckF0dGFjaGVk
SGVpZ2h0KCkgY29uc3Q7CiAKKyAgICB1bnNpZ25lZCBwYWdlSWRGb3JJbnNwZWN0b3JTZXJ2ZXIo
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VJZEZvckluc3BlY3RvclNlcnZlcjsgfQorICAgIHZvaWQg
c2V0UGFnZUlkRm9ySW5zcGVjdG9yU2VydmVyKHVuc2lnbmVkIHBhZ2VJZCkgeyBtX3BhZ2VJZEZv
ckluc3BlY3RvclNlcnZlciA9IHBhZ2VJZDsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBJbnNwZWN0b3JCYWNrZW5kOwogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjsKQEAgLTM1MCw2ICszNTMsOCBAQCBwcml2YXRlOgogCiAgICAgV29ya2Vyc01hcCBt
X3dvcmtlcnM7CiAjZW5kaWYKKworICAgIHVuc2lnbmVkIG1fcGFnZUlkRm9ySW5zcGVjdG9yU2Vy
dmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU2VydmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4yZTVjZGUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclNlcnZlci5jcHAKQEAgLTAsMCArMSwyOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIklu
c3BlY3RvclNlcnZlci5oIgorCisjaW5jbHVkZSAiSFRUUFJlcXVlc3QuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNlcnZlclNvY2tldEhhbmRsZS5oIgorI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0luc3BlY3RvclNlcnZlciogaW5zcGVjdG9yU2VydmVyKCkKK3sK
KyAgICBzdGF0aWMgUmVmUHRyPEluc3BlY3RvclNlcnZlcj4gc3RhdGljU2VydmVyID0gSW5zcGVj
dG9yU2VydmVyOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gc3RhdGljU2VydmVyLmdldCgpOworfQor
CitJbnNwZWN0b3JTZXJ2ZXI6Okluc3BlY3RvclNlcnZlcigpCisgICAgOiBXZWJTb2NrZXRTZXJ2
ZXIodGhpcykKKyAgICAsIG1fbmV4dEF2YWlsYWJsZVBhZ2VJZCgxKQorICAgICwgbV9pbnNwZWN0
b3JTZXJ2ZXJDbGllbnQoMCkKK3sKK30KKworSW5zcGVjdG9yU2VydmVyOjp+SW5zcGVjdG9yU2Vy
dmVyKCkKK3sKKyAgICAvLyBDbG9zZSBhbnkgcmVtYWluaW5nIG9wZW4gY29ubmVjdGlvbnMuCisg
ICAgLy8gRklYTUU6IExvY2tzIGFyZSBub3QgcmVjdXJzaXZlLCBzbyB3ZSBkb24ndCBncmFiIGEg
bG9jayBoZXJlIG9uIHRoZSBvdXRzaWRlLiBUaGlzCisgICAgLy8gaXNuJ3QgdG9vIGltcG9ydGFu
dCwgc2luY2UgdGhpcyBjYXNlIHNob3VsZCBvbmx5IGhhcHBlbiBpZiB3ZSBhcmUgY2xvc2luZyB0
aGUgYnJvd3NlciwKKyAgICAvLyBiZWNhdXNlIGluc3BlY3RvclNlcnZlcigpIGlzIGEgZ2xvYmFs
IHNpbmdsZXRvbi4KKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0
aW9uKj46Oml0ZXJhdG9yIGVuZCA9IG1fY29ubmVjdGlvbk1hcC5lbmQoKTsKKyAgICBmb3IgKEhh
c2hNYXA8dW5zaWduZWQsIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qPjo6aXRlcmF0b3IgaXQg
PSBtX2Nvbm5lY3Rpb25NYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFdl
YlNvY2tldFNlcnZlckNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBpdC0+c2Vjb25kOworICAgICAg
ICBQYWdlKiBwYWdlID0gcGFnZUZvcklkZW50aWZpZXIoY29ubmVjdGlvbi0+aWRlbnRpZmllcigp
KTsKKyAgICAgICAgY2xvc2VGcm9tUmVtb3RlU2lkZShwYWdlLCBjb25uZWN0aW9uKTsKKyAgICB9
Cit9CisKK3Vuc2lnbmVkIEluc3BlY3RvclNlcnZlcjo6cmVnaXN0ZXJQYWdlKFBhZ2UqIHBhZ2Up
Cit7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX21hcEFjY2Vzc011dGV4KTsKKyAgICB1bnNpZ25l
ZCBwYWdlSWQgPSBtX25leHRBdmFpbGFibGVQYWdlSWQrKzsKKyAgICBtX3BhZ2VNYXAuc2V0KHBh
Z2VJZCwgcGFnZSk7CisgICAgcmV0dXJuIHBhZ2VJZDsKK30KKwordm9pZCBJbnNwZWN0b3JTZXJ2
ZXI6OnVucmVnaXN0ZXJQYWdlKFBhZ2UqIHBhZ2UpCit7CisgICAgSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAg
ICB1bnNpZ25lZCBwYWdlSWQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5wYWdlSWRGb3JJbnNwZWN0
b3JTZXJ2ZXIoKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5zZXRQYWdlSWRGb3JJbnNwZWN0
b3JTZXJ2ZXIoMCk7CisKKyAgICBNdXRleExvY2tlciBsb2NrKG1fbWFwQWNjZXNzTXV0ZXgpOwor
ICAgIG1fcGFnZU1hcC5yZW1vdmUocGFnZUlkKTsKK30KKworUGFnZSogSW5zcGVjdG9yU2VydmVy
OjpwYWdlRm9ySWRlbnRpZmllcih1bnNpZ25lZCBwYWdlSWQpCit7CisgICAgcmV0dXJuIG1fcGFn
ZU1hcC5nZXQocGFnZUlkKTsKK30KKwordm9pZCBJbnNwZWN0b3JTZXJ2ZXI6Omluc3BlY3RhYmxl
UGFnZXMoSGFzaE1hcDx1bnNpZ25lZCwgUGFnZSo+JiBwYWdlcykKK3sKKyAgICBwYWdlcy5jbGVh
cigpOworCisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX21hcEFjY2Vzc011dGV4KTsKKyAgICBIYXNo
TWFwPHVuc2lnbmVkLCBQYWdlKj46Oml0ZXJhdG9yIGVuZCA9IG1fcGFnZU1hcC5lbmQoKTsKKyAg
ICBmb3IgKEhhc2hNYXA8dW5zaWduZWQsIFBhZ2UqPjo6aXRlcmF0b3IgaXQgPSBtX3BhZ2VNYXAu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmIChkb2VzUGFnZUFsbG93UmVt
b3RlSW5zcGVjdGlvbihpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpKQorICAgICAgICAgICAgcGFnZXMu
c2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZCk7CisgICAgfQorfQorCit2b2lkIEluc3BlY3RvclNl
cnZlcjo6Y2xvc2VDb25uZWN0aW9uKHVuc2lnbmVkIHBhZ2VJZEZvckNvbm5lY3Rpb24pCit7Cisg
ICAgLy8gVGhlIGxvY2FsIHNpZGUgaXMgYXNraW5nIHRvIGNsb3NlIHRoZSBjb25uZWN0aW9uLgor
ICAgIFBhZ2UqIHBhZ2UgPSBwYWdlRm9ySWRlbnRpZmllcihwYWdlSWRGb3JDb25uZWN0aW9uKTsK
KyAgICBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9u
TWFwLmdldChwYWdlSWRGb3JDb25uZWN0aW9uKTsKKyAgICBjbG9zZUZyb21Mb2NhbFNpZGUocGFn
ZSwgY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgSW5zcGVjdG9yU2VydmVyOjpzZW5kTWVzc2FnZU92
ZXJDb25uZWN0aW9uKHVuc2lnbmVkIHBhZ2VJZEZvckNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiBjb25uZWN0aW9uID0g
bV9jb25uZWN0aW9uTWFwLmdldChwYWdlSWRGb3JDb25uZWN0aW9uKTsKKyAgICBBU1NFUlQoY29u
bmVjdGlvbik7CisgICAgY29ubmVjdGlvbi0+c2VuZFdlYlNvY2tldE1lc3NhZ2UobWVzc2FnZSk7
Cit9CisKK3ZvaWQgSW5zcGVjdG9yU2VydmVyOjpkaWRSZWNlaXZlVW5yZWNvZ25pemVkSFRUUFJl
cXVlc3QoV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgUGFzc1JlZlB0cjxI
VFRQUmVxdWVzdD4gcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIFN0cmlu
ZyBwYXRoID0gcmVxdWVzdC0+dXJsKCkuc3RyaW5nKCk7CisgICAgTE9HKE5ldHdvcmssICJJbnNw
ZWN0b3JTZXJ2ZXI6IFJlcXVlc3QgZm9yIHJlc291cmNlICglcykiLCBwYXRoLnV0ZjgoKS5kYXRh
KCkpOworCisgICAgLy8gQXNrIHRoZSBjbGllbnQgZm9yIHRoZSByYXcgSFRUUCByZXNwb25zZS4K
KyAgICAvLyBGSVhNRTogSW4gdGhlIGZ1dHVyZSB3ZSBjb3VsZCB1c2UgYSBnZW5lcmljIEhUVFBS
ZXNwb25zZSBjbGFzcyBpbnN0ZWFkIG9mIHJldHVybmluZyBTdHJpbmdzLgorICAgIFZlY3Rvcjxj
aGFyPiByZXNwb25zZTsKKyAgICBpZiAoaXNSZXF1ZXN0UGF0aExpc3RpbmdQYWdlKHBhdGgpKQor
ICAgICAgICBtX2luc3BlY3RvclNlcnZlckNsaWVudC0+bGlzdGluZ1BhZ2UocmVzcG9uc2UpOwor
ICAgIGVsc2UKKyAgICAgICAgbV9pbnNwZWN0b3JTZXJ2ZXJDbGllbnQtPmluc3BlY3RvclJlc291
cmNlRm9yUGF0aChwYXRoLCByZXNwb25zZSk7CisKKyAgICAvLyBTZW5kIHdoZW4gcmVhZHkgYW5k
IGNsb3NlIGltbWVkaWF0ZWx5IGFmdGVyd2FyZHMuCisgICAgY29ubmVjdGlvbi0+c2VuZFJhd0Rh
dGEocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpOworICAgIGNvbm5lY3Rpb24tPnNo
dXRkb3duQWZ0ZXJTZW5kT3JOb3coKTsKK30KKworYm9vbCBJbnNwZWN0b3JTZXJ2ZXI6OmRpZFJl
Y2VpdmVXZWJTb2NrZXRVcGdyYWRlSFRUUFJlcXVlc3QoV2ViU29ja2V0U2VydmVyQ29ubmVjdGlv
biosIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+IHJlcXVlc3QpCit7CisgICAgQVNTRVJUKG1fY2xp
ZW50KTsKKyAgICBTdHJpbmcgcGF0aCA9IHJlcXVlc3QtPnVybCgpLnN0cmluZygpOworCisgICAg
Ly8gTk9URTogS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzLgorICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBp
bnNwZWN0b3JXZWJTb2NrZXRDb25uZWN0aW9uUGF0aFByZWZpeCwgKCIvZGV2dG9vbHMvcGFnZS8i
KSk7CisKKyAgICAvLyBVbmtub3duIHBhdGggcmVxdWVzdGVkLgorICAgIGlmICghcGF0aC5zdGFy
dHNXaXRoKGluc3BlY3RvcldlYlNvY2tldENvbm5lY3Rpb25QYXRoUHJlZml4KSkgeworICAgICAg
ICBMT0coTmV0d29yaywgIkluc3BlY3RvclNlcnZlcjogVXBncmFkZSByZXF1ZXN0IGZvciB1bmtu
b3duIHBhdGg6ICglcykiLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgLy8gSW52YWxpZCBwYWdlIGlkLgorICAgIGludCBwYWdlSWQgPSBw
YWdlSWRGcm9tUmVxdWVzdFBhdGgocGF0aCk7CisgICAgaWYgKCFwYWdlSWQpIHsKKyAgICAgICAg
TE9HKE5ldHdvcmssICJJbnNwZWN0b3JTZXJ2ZXI6IEludmFsaWQgcGFnZSBpZDogKCVkKSIsIHBh
Z2VJZCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBUaGVyZSBpcyBu
byBwYWdlIGZvciB0aGF0IHBhZ2UgaWQuCisgICAgUGFnZSogcGFnZSA9IHBhZ2VGb3JJZGVudGlm
aWVyKHBhZ2VJZCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiSW5z
cGVjdG9yU2VydmVyOiBQYWdlIHJlcXVlc3RlZCBubyBsb25nZXIgZXhpc3RzOiAoJWQpIiwgcGFn
ZUlkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIENoZWNrIHJlYXNv
bnMgdGhlIHBhZ2UgbWF5IG5vdCBhbGxvdyByZW1vdGUgaW5zcGVjdGlvbi4KKyAgICByZXR1cm4g
ZG9lc1BhZ2VBbGxvd1JlbW90ZUluc3BlY3Rpb24ocGFnZUlkLCBwYWdlKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JTZXJ2ZXI6OmRpZEVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24oV2ViU29ja2V0
U2VydmVyQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgUGFzc1JlZlB0cjxIVFRQUmVxdWVzdD4gcmVx
dWVzdCkKK3sKKyAgICBTdHJpbmcgcGF0aCA9IHJlcXVlc3QtPnVybCgpLnN0cmluZygpOworICAg
IHVuc2lnbmVkIHBhZ2VJZCA9IHBhZ2VJZEZyb21SZXF1ZXN0UGF0aChwYXRoKTsKKyAgICBBU1NF
UlQocGFnZUlkKTsKKworICAgIC8vIE1hcCB0aGUgcGFnZUlkIHRvIHRoZSBjb25uZWN0aW9uIGlu
IGNhc2UgbG9jYWxseSB3ZSBuZWVkIHRvIGNsb3NlIHRoZSBjb25uZWN0aW9uLAorICAgIC8vIG9y
IGluIGNhc2UgdGhlIGNsaWVudCB3YW50cyB0byBzZW5kIGEgV2ViU29ja2V0IG1lc3NhZ2Ugb24g
c2V0dXBSZW1vdGVDb25uZWN0aW9uLgorICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayht
X21hcEFjY2Vzc011dGV4KTsKKyAgICAgICAgY29ubmVjdGlvbi0+c2V0SWRlbnRpZmllcihwYWdl
SWQpOworICAgICAgICBtX2Nvbm5lY3Rpb25NYXAuc2V0KHBhZ2VJZCwgY29ubmVjdGlvbik7Cisg
ICAgfQorCisgICAgLy8gTG9jYWwgc2lkZSwgc2V0dXAgZm9yIGEgcmVtb3RlIGNvbm5lY3Rpb24u
CisgICAgUGFnZSogcGFnZSA9IHBhZ2VGb3JJZGVudGlmaWVyKHBhZ2VJZCk7CisgICAgSW5zcGVj
dG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
Pmluc3BlY3RvckNsaWVudCgpOworICAgIGluc3BlY3RvckNsaWVudC0+c2V0UmVtb3RlQ29ubmVj
dGlvbklkKHBhZ2VJZCk7CisgICAgYm9vbCBzdWNjZXNzZnVsU2V0dXAgPSBpbnNwZWN0b3JDbGll
bnQtPnNldHVwUmVtb3RlQ29ubmVjdGlvbigpOworCisgICAgLy8gQ2xpZW50IGRpZG4ndCBzZXR1
cCBzdWNjZXNzZnVsbHkuIEZhc3QgU2h1dGRvd24uCisgICAgaWYgKCFzdWNjZXNzZnVsU2V0dXAp
IHsKKyAgICAgICAgTE9HX0VSUk9SKCJJbnNwZWN0b3JTZXJ2ZXI6IENvdWxkIG5vdCBzZXR1cCB0
aGUgSW5zcGVjdG9yQ2xpZW50IGZvciBhIHJlbW90ZSBjb25uZWN0aW9uLiBJcyBJbnNwZWN0b3JD
bGllbnQ6OnNldHVwUmVtb3RlQ29ubmVjdGlvbiBpbXBsZW1lbnRlZD8iKTsKKyAgICAgICAgaW5z
cGVjdG9yQ2xpZW50LT5zZXRSZW1vdGVDb25uZWN0aW9uSWQoMCk7CisgICAgICAgIE11dGV4TG9j
a2VyIGxvY2sobV9tYXBBY2Nlc3NNdXRleCk7CisgICAgICAgIG1fY29ubmVjdGlvbk1hcC5yZW1v
dmUocGFnZUlkKTsKKyAgICAgICAgY29ubmVjdGlvbi0+c2V0SWRlbnRpZmllcigwKTsKKyAgICAg
ICAgY29ubmVjdGlvbi0+c2h1dGRvd25Ob3coKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30K
Kwordm9pZCBJbnNwZWN0b3JTZXJ2ZXI6OmRpZFJlY2VpdmVXZWJTb2NrZXRNZXNzYWdlKFdlYlNv
Y2tldFNlcnZlckNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
K3sKKyAgICAvLyBEaXNwYXRjaCBpbmNvbWluZyByZW1vdGUgbWVzc2FnZSBsb2NhbGx5LgorICAg
IHVuc2lnbmVkIHBhZ2VJZCA9IGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKTsKKyAgICBQYWdlKiBw
YWdlID0gcGFnZUZvcklkZW50aWZpZXIocGFnZUlkKTsKKyAgICBBU1NFUlQocGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5pbnNwZWN0b3JDbGllbnQoKS0+aGFzUmVtb3RlQ29ubmVjdGlvbigp
KTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKCktPmRpc3BhdGNoKG1lc3NhZ2UpOworfQorCit2b2lkIEluc3BlY3RvclNlcnZlcjo6
ZGlkQ2xvc2VXZWJTb2NrZXRDb25uZWN0aW9uKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24pCit7CisgICAgLy8gQ29ubmVjdGlvbiBoYXMgYWxyZWFkeSBzaHV0ZG93bi4KKyAg
ICB1bnNpZ25lZCBwYWdlSWQgPSBjb25uZWN0aW9uLT5pZGVudGlmaWVyKCk7CisgICAgaWYgKCFw
YWdlSWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBzb2NrZXQgY2xvc2luZyBtZWFu
cyB0aGUgcmVtb3RlIHNpZGUgaGFzIGNhdXNlZCB0aGUgY2xvc2UuCisgICAgUGFnZSogcGFnZSA9
IHBhZ2VGb3JJZGVudGlmaWVyKHBhZ2VJZCk7CisgICAgY2xvc2VGcm9tUmVtb3RlU2lkZShwYWdl
LCBjb25uZWN0aW9uKTsKK30KKworYm9vbCBJbnNwZWN0b3JTZXJ2ZXI6OmRvZXNQYWdlQWxsb3dS
ZW1vdGVJbnNwZWN0aW9uKHVuc2lnbmVkIHBhZ2VJZCwgUGFnZSogcGFnZSkKK3sKKyAgICBVTlVT
RURfUEFSQU0ocGFnZUlkKTsKKworICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBs
b2NhbCBvciByZW1vdGUgc2Vzc2lvbi4KKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIGlmIChpbnNw
ZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVuZCgpKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAi
SW5zcGVjdG9yU2VydmVyOiBQYWdlICglZCkgYWxyZWFkeSBoYXMgYSBmcm9udGVuZC4gUHJvYmFi
bHkgYWxyZWFkeSBhIGxvY2FsIHNlc3Npb24iLCBwYWdlSWQpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgLy8gRG8gbm90IGFsbG93IGluc3BlY3Rpb24gaWYgUHJpdmF0ZSBi
cm93c2luZyBpcyBlbmFibGVkLgorICAgIGlmIChwYWdlLT5zZXR0aW5ncygpLT5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCkpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJJbnNwZWN0b3JTZXJ2ZXI6
IFBhZ2UgKCVkKSBoYXMgcHJpdmF0ZSBicm93c2luZyBlbmFibGVkIiwgcGFnZUlkKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEFzayBXZWJLaXQgZGVsZWdhdGUgaWYg
dGhlIFBhZ2UgYWxsb3dzIHJlbW90ZSBpbnNwZWN0b24uCisgICAgaWYgKCFtX2luc3BlY3RvclNl
cnZlckNsaWVudC0+ZG9lc1BhZ2VBbGxvd1JlbW90ZUluc3BlY3Rpb24ocGFnZSkpIHsKKyAgICAg
ICAgTE9HKE5ldHdvcmssICJJbnNwZWN0b3JTZXJ2ZXI6IFBhZ2UgKCVkKSBkb2VzIG5vdCBhbGxv
dyByZW1vdGUgaW5zcGVjdGlvbiIsIHBhZ2VJZCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBJbnNwZWN0b3JTZXJ2ZXI6OmNsb3Nl
RnJvbUxvY2FsU2lkZShQYWdlKiBwYWdlLCBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiBjb25u
ZWN0aW9uKQoreworICAgIC8vIExvY2FsIHNpZGUgY2xlYW51cC4KKyAgICBpZiAocGFnZSAmJiBw
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+aW5zcGVjdG9yQ2xpZW50KCktPnNldFJlbW90ZUNvbm5lY3Rpb25JZCgwKTsKKwor
ICAgIC8vIFJlbW90ZSBzaWRlIGNsZWFudXAuCisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX21hcEFj
Y2Vzc011dGV4KTsKKyAgICBtX2Nvbm5lY3Rpb25NYXAucmVtb3ZlKGNvbm5lY3Rpb24tPmlkZW50
aWZpZXIoKSk7CisgICAgY29ubmVjdGlvbi0+c2V0SWRlbnRpZmllcigwKTsKKyAgICBjb25uZWN0
aW9uLT5zaHV0ZG93bk5vdygpOworfQorCit2b2lkIEluc3BlY3RvclNlcnZlcjo6Y2xvc2VGcm9t
UmVtb3RlU2lkZShQYWdlKiBwYWdlLCBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiBjb25uZWN0
aW9uKQoreworICAgIC8vIExvY2FsIHNpZGUgY2xlYW51cC4KKyAgICBJbnNwZWN0b3JDbGllbnQq
IGluc3BlY3RvckNsaWVudCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aW5zcGVjdG9y
Q2xpZW50KCk7CisgICAgaW5zcGVjdG9yQ2xpZW50LT50ZWFyZG93blJlbW90ZUNvbm5lY3Rpb25G
cm9tUmVtb3RlU2lkZSgpOworICAgIGluc3BlY3RvckNsaWVudC0+c2V0UmVtb3RlQ29ubmVjdGlv
bklkKDApOworCisgICAgLy8gUmVtb3RlIHNpZGUgY2xlYW51cC4KKyAgICBNdXRleExvY2tlciBs
b2NrKG1fbWFwQWNjZXNzTXV0ZXgpOworICAgIG1fY29ubmVjdGlvbk1hcC5yZW1vdmUoY29ubmVj
dGlvbi0+aWRlbnRpZmllcigpKTsKKyAgICBjb25uZWN0aW9uLT5zZXRJZGVudGlmaWVyKDApOwor
ICAgIGNvbm5lY3Rpb24tPnNodXRkb3duTm93KCk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yU2VydmVy
Ojppc1JlcXVlc3RQYXRoTGlzdGluZ1BhZ2UoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdAorewor
ICAgIHJldHVybiBwYXRoLmlzRW1wdHkoKSB8fCBwYXRoID09ICIvIjsKK30KKwordW5zaWduZWQg
SW5zcGVjdG9yU2VydmVyOjpwYWdlSWRGcm9tUmVxdWVzdFBhdGgoY29uc3QgU3RyaW5nJiBwYXRo
KSBjb25zdAoreworICAgIHNpemVfdCBzdGFydCA9IHBhdGgucmV2ZXJzZUZpbmQoJy8nKTsKKyAg
ICBTdHJpbmcgbnVtYmVyU3RyaW5nID0gcGF0aC5zdWJzdHJpbmcoc3RhcnQgKyAxLCBwYXRoLmxl
bmd0aCgpIC0gc3RhcnQgLSAxKTsKKworICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICB1bnNpZ25l
ZCBudW1iZXIgPSBudW1iZXJTdHJpbmcudG9VSW50U3RyaWN0KCZvayk7CisgICAgaWYgKCFvaykK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bWJlcjsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1OGUz
YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U2VydmVyLmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yU2VydmVyX2gKKyNkZWZpbmUgSW5zcGVj
dG9yU2VydmVyX2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisjaWYgRU5BQkxFKFdFQl9TT0NL
RVRTKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yU2VydmVyQ2xpZW50LmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRTZXJ2ZXIuaCIKKyNpbmNsdWRlICJX
ZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWdlOworCitjbGFzcyBJbnNwZWN0
b3JTZXJ2ZXIgOiBwdWJsaWMgV2ViU29ja2V0U2VydmVyLCBwdWJsaWMgV2ViU29ja2V0U2VydmVy
Q29ubmVjdGlvbkNsaWVudCB7CitwdWJsaWM6CisgICAgZnJpZW5kIEluc3BlY3RvclNlcnZlciog
aW5zcGVjdG9yU2VydmVyKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU2VydmVy
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yU2VydmVyKCkpOyB9CisK
KyAgICAvLyBPbmx5IGFsbG93IHNldHRpbmcgdGhlIGNsaWVudCBvbmNlLgorICAgIHZvaWQgc2V0
SW5zcGVjdG9yU2VydmVyQ2xpZW50KEluc3BlY3RvclNlcnZlckNsaWVudCogY2xpZW50KSB7IEFT
U0VSVCghbV9pbnNwZWN0b3JTZXJ2ZXJDbGllbnQpOyBtX2luc3BlY3RvclNlcnZlckNsaWVudCA9
IGNsaWVudDsgfQorCisgICAgLy8gUGFnZSByZWdpc3RyeSB0byBtYW5hZ2Uga25vd24gcGFnZXMu
CisgICAgdW5zaWduZWQgcmVnaXN0ZXJQYWdlKFBhZ2UqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJQ
YWdlKFBhZ2UqKTsKKyAgICBQYWdlKiBwYWdlRm9ySWRlbnRpZmllcih1bnNpZ25lZCBwYWdlSWQp
OworICAgIHZvaWQgaW5zcGVjdGFibGVQYWdlcyhIYXNoTWFwPHVuc2lnbmVkLCBQYWdlKj4mKTsK
KworICAgIC8vIEV2ZW50cyBvY2N1cmluZyBsb2NhbGx5LgorICAgIHZvaWQgY2xvc2VDb25uZWN0
aW9uKHVuc2lnbmVkIHBhZ2VJZEZvckNvbm5lY3Rpb24pOworICAgIHZvaWQgc2VuZE1lc3NhZ2VP
dmVyQ29ubmVjdGlvbih1bnNpZ25lZCBwYWdlSWRGb3JDb25uZWN0aW9uLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpOworCisgICAgLy8gV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbkNsaWVudCBpbXBs
ZW1lbnRhdGlvbi4gRXZlbnRzIGNvbWluZyBmcm9tIHJlbW90ZSBjb25uZWN0aW9ucy4KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVVucmVjb2duaXplZEhUVFBSZXF1ZXN0KFdlYlNvY2tldFNl
cnZlckNvbm5lY3Rpb24qLCBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0Pik7CisgICAgdmlydHVhbCBi
b29sIGRpZFJlY2VpdmVXZWJTb2NrZXRVcGdyYWRlSFRUUFJlcXVlc3QoV2ViU29ja2V0U2VydmVy
Q29ubmVjdGlvbiosIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+KTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRXN0YWJsaXNoV2ViU29ja2V0Q29ubmVjdGlvbihXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9u
KiwgUGFzc1JlZlB0cjxIVFRQUmVxdWVzdD4pOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
V2ViU29ja2V0TWVzc2FnZShXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXRDb25uZWN0aW9u
KFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qKTsKKworcHJpdmF0ZToKKyAgICBJbnNwZWN0b3JT
ZXJ2ZXIoKTsKKyAgICB+SW5zcGVjdG9yU2VydmVyKCk7CisKKyAgICBib29sIGRvZXNQYWdlQWxs
b3dSZW1vdGVJbnNwZWN0aW9uKHVuc2lnbmVkLCBQYWdlKik7CisKKyAgICB2b2lkIGNsb3NlRnJv
bUxvY2FsU2lkZShQYWdlKiwgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiopOworICAgIHZvaWQg
Y2xvc2VGcm9tUmVtb3RlU2lkZShQYWdlKiwgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiopOwor
CisgICAgYm9vbCBpc1JlcXVlc3RQYXRoTGlzdGluZ1BhZ2UoY29uc3QgU3RyaW5nJiBwYXRoKSBj
b25zdDsKKyAgICB1bnNpZ25lZCBwYWdlSWRGcm9tUmVxdWVzdFBhdGgoY29uc3QgU3RyaW5nJiBw
YXRoKSBjb25zdDsKKworICAgIHVuc2lnbmVkIG1fbmV4dEF2YWlsYWJsZVBhZ2VJZDsKKyAgICBJ
bnNwZWN0b3JTZXJ2ZXJDbGllbnQqIG1faW5zcGVjdG9yU2VydmVyQ2xpZW50OworCisgICAgTXV0
ZXggbV9tYXBBY2Nlc3NNdXRleDsgLy8gUHJvdGVjdCBhZ2FpbnN0IG11bHRpLXRocmVhZGVkIGFj
Y2VzcyB0byBlaXRoZXIgbWFwLgorICAgIEhhc2hNYXA8dW5zaWduZWQsIFBhZ2UqPiBtX3BhZ2VN
YXA7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbio+IG1f
Y29ubmVjdGlvbk1hcDsKK307CisKK0luc3BlY3RvclNlcnZlciogaW5zcGVjdG9yU2VydmVyKCk7
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VU
UykKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gSW5zcGVjdG9yU2Vy
dmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTZXJ2
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTZXJ2ZXJDbGll
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDQ3MDEzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNlcnZlckNsaWVu
dC5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEluc3BlY3RvclNlcnZlckNsaWVudF9oCisjZGVmaW5lIEluc3Bl
Y3RvclNlcnZlckNsaWVudF9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWdlOwor
CitjbGFzcyBJbnNwZWN0b3JTZXJ2ZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfklu
c3BlY3RvclNlcnZlckNsaWVudCgpIHsgfQorCisgICAgLy8gR2V0IGEgbGlzdGluZyBwYWdlLgor
ICAgIHZpcnR1YWwgdm9pZCBsaXN0aW5nUGFnZShWZWN0b3I8Y2hhcj4mIGRhdGEpID0gMDsKKwor
ICAgIC8vIEFzayBmb3IgYW4gaW5zcGVjdG9yIHJlc291cmNlLgorICAgIHZpcnR1YWwgdm9pZCBp
bnNwZWN0b3JSZXNvdXJjZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBWZWN0b3I8Y2hhcj4m
IGRhdGEpID0gMDsKKworICAgIC8vIEFzayBpZiBwYWdlIGlzIGFsbG93ZWQgdG8gYmUgcmVtb3Rl
bHkgaW5zcGVjdGVkLgorICAgIHZpcnR1YWwgYm9vbCBkb2VzUGFnZUFsbG93UmVtb3RlSW5zcGVj
dGlvbihQYWdlKikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gSW5zcGVjdG9yU2VydmVyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
NTJkNWI0Ni4uZDU1OWUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMS0wMS0yNiAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFJlbW90ZSBXZWIgSW5zcGVjdG9yIC0gQ3Jvc3MgUGxhdGZvcm0gSW5zcGVjdG9yU2Vy
dmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTM2
NAorCisgICAgICAgICogc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbnNwZWN0b3JDbGllbnRJbXBsOjpJbnNwZWN0b3JDbGllbnRJbXBsKToKKwogMjAxMS0w
MS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAppbmRleCA3NzE1MGJiLi40M2JlNWE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBs
LmNwcApAQCAtNDgsNyArNDgsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBJbnNwZWN0b3JDbGllbnRJbXBsOjpJbnNwZWN0b3JDbGllbnRJbXBsKFdl
YlZpZXdJbXBsKiB3ZWJWaWV3KQotICAgIDogbV9pbnNwZWN0ZWRXZWJWaWV3KHdlYlZpZXcpCisg
ICAgOiBJbnNwZWN0b3JDbGllbnQoKQorICAgICwgbV9pbnNwZWN0ZWRXZWJWaWV3KHdlYlZpZXcp
CiB7CiAgICAgQVNTRVJUKG1faW5zcGVjdGVkV2ViVmlldyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5k
ZXggZWYxZjJhYS4uNjZhNGJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDExLTAxLTI2ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
UmVtb3RlIFdlYiBJbnNwZWN0b3IgLSBDcm9zcyBQbGF0Zm9ybSBJbnNwZWN0b3JTZXJ2ZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMzY0CisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6Okluc3BlY3RvckNsaWVudCk6CisKIDIwMTEtMDEtMTcg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIGJ1aWxkIGZpeCBmb3IgMiBHVEsgdGVzdHMgaHRtbCBmaWxlIHBhdGhzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0
ay5jcHAKaW5kZXggMzFhZjI0My4uZWMzNWUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCkBAIC00MSw3ICs0
MSw4IEBAIHN0YXRpYyB2b2lkIG5vdGlmeVdlYlZpZXdEZXN0cm95ZWQoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgSW5zcGVjdG9yRnJvbnRlbmRDbGllCiB9CiAKIEluc3BlY3RvckNsaWVudDo6SW5z
cGVjdG9yQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCi0gICAgOiBtX2luc3BlY3RlZFdl
YlZpZXcod2ViVmlldykKKyAgICA6IEluc3BlY3RvckNsaWVudCgpCisgICAgLCBtX2luc3BlY3Rl
ZFdlYlZpZXcod2ViVmlldykKICAgICAsIG1fZnJvbnRlbmRQYWdlKDApCiAgICAgLCBtX2Zyb250
ZW5kQ2xpZW50KDApCiB7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGRlMmFmZjAuLjZmNDNjOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMS0yNiAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW90ZSBXZWIgSW5zcGVjdG9yIC0g
Q3Jvc3MgUGxhdGZvcm0gSW5zcGVjdG9yU2VydmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTM2NAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJ
bnNwZWN0b3JDbGllbnQpOgorCiAyMDExLTAxLTE3ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5tbQppbmRleCA1YmVlZGNmLi4xZjJkZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW1wb3J0ICJXZWJOb2RlSGlnaGxpZ2h0LmgiCiAjaW1wb3J0ICJXZWJVSURlbGVn
YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvSW5z
cGVjdG9yU2VydmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTUV4dGVuc2lvbnMu
aD4KQEAgLTg1LDkgKzg2LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAKIFdlYklu
c3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCi06IG1f
d2ViVmlldyh3ZWJWaWV3KQotLCBtX2hpZ2hsaWdodGVyKEFkb3B0TlMsIFtbV2ViTm9kZUhpZ2hs
aWdodGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6d2ViVmlld10pCi0sIG1fZnJv
bnRlbmRQYWdlKDApCisgICAgOiBJbnNwZWN0b3JDbGllbnQoKQorICAgICwgbV93ZWJWaWV3KHdl
YlZpZXcpCisgICAgLCBtX2hpZ2hsaWdodGVyKEFkb3B0TlMsIFtbV2ViTm9kZUhpZ2hsaWdodGVy
IGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6d2ViVmlld10pCisgICAgLCBtX2Zyb250
ZW5kUGFnZSgwKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDA2ZmIzNjguLjJjOWFiYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDEtMjYgIEpvc2VwaCBQZWNvcmFy
byAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdGUgV2ViIEluc3BlY3RvciAtIENy
b3NzIFBsYXRmb3JtIEluc3BlY3RvclNlcnZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEzNjQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0
OjpJbnNwZWN0b3JDbGllbnRRdCk6CisKIDIwMTEtMDEtMTcgIEFsZXhleSBQcm9za3VyeWFrb3Yg
IDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUyNDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwCmluZGV4IDFiMDZlMmUuLjAyNjgzZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQu
Y3BwCkBAIC0xMTQsNyArMTE0LDggQEAgc3RhdGljIHZvaWQgZW5zdXJlRGVidWdnZXJTY3JpcHRM
b2FkZWQoKQogI2VuZGlmCiAKIEluc3BlY3RvckNsaWVudFF0OjpJbnNwZWN0b3JDbGllbnRRdChR
V2ViUGFnZSogcGFnZSkKLSAgICA6IG1faW5zcGVjdGVkV2ViUGFnZShwYWdlKQorICAgIDogSW5z
cGVjdG9yQ2xpZW50KCkKKyAgICAsIG1faW5zcGVjdGVkV2ViUGFnZShwYWdlKQogICAgICwgbV9m
cm9udGVuZFdlYlBhZ2UoMCkKICAgICAsIG1fZnJvbnRlbmRDbGllbnQoMCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwppbmRleCAxYzMwYmExLi42NjQ0NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTEtMDEtMjYgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBSZW1vdGUgV2ViIEluc3BlY3RvciAtIENyb3NzIFBsYXRmb3JtIEluc3BlY3RvclNl
cnZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEz
NjQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudCk6CisKIDIwMTEt
MDEtMTcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDc2ZWJjOGYu
LmQyY2Q0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtNjksNyArNjksOCBAQCBzdGF0aWMgQ0ZCdW5k
bGVSZWYgZ2V0V2ViS2l0QnVuZGxlKCkKIH0KIAogV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNw
ZWN0b3JDbGllbnQoV2ViVmlldyogd2ViVmlldykKLSAgICA6IG1faW5zcGVjdGVkV2ViVmlldyh3
ZWJWaWV3KQorICAgIDogSW5zcGVjdG9yQ2xpZW50KCkKKyAgICAsIG1faW5zcGVjdGVkV2ViVmll
dyh3ZWJWaWV3KQogICAgICwgbV9mcm9udGVuZFBhZ2UoMCkKIHsKICAgICBBU1NFUlQobV9pbnNw
ZWN0ZWRXZWJWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKaW5kZXggZjQ0YmRkZi4uNzVhZWFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC93aW5jZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMS0yNiAgSm9zZXBo
IFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW90ZSBXZWIgSW5zcGVj
dG9yIC0gQ3Jvc3MgUGxhdGZvcm0gSW5zcGVjdG9yU2VydmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTM2NAorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2luQ0UuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0
b3JDbGllbnRXaW5DRTo6SW5zcGVjdG9yQ2xpZW50V2luQ0UpOgorCiAyMDExLTAxLTA0ICBQYXRy
aWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
V2luQ0UgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdpbkNFLmNwcAppbmRleCA1MTY4ODg1Li4wYTE2
ZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudFdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFdpbkNFLmNwcApAQCAtMzIsNyArMzIsOCBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBJbnNwZWN0b3JDbGllbnRXaW5D
RTo6SW5zcGVjdG9yQ2xpZW50V2luQ0UoV2ViVmlldyogd2ViVmlldykKLSAgICA6IG1faW5zcGVj
dGVkV2ViVmlldyh3ZWJWaWV3KQorICAgIDogSW5zcGVjdG9yQ2xpZW50KCkKKyAgICAsIG1faW5z
cGVjdGVkV2ViVmlldyh3ZWJWaWV3KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3d4L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCmluZGV4IDQ4NjIyMjUu
LmRlMjg2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDEtMjYgIEpv
c2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdGUgV2ViIElu
c3BlY3RvciAtIENyb3NzIFBsYXRmb3JtIEluc3BlY3RvclNlcnZlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEzNjQKKworICAgICAgICAqIFdlYktp
dFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50V3g6Okluc3BlY3RvckNsaWVudFd4KToKKwogMjAxMS0wMS0xNCAgWXV6byBGdWpp
c2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50V3guY3BwIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudFd4LmNwcAppbmRleCBjOTQ5ZDc3Li4zZThiMDYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5zcGVjdG9yQ2xpZW50V3g6Okluc3Bl
Y3RvckNsaWVudFd4KCkKKyAgICA6IEluc3BlY3RvckNsaWVudCgpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116543</attachid>
            <date>2011-11-24 13:37:01 -0800</date>
            <delta_ts>2011-12-05 12:48:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73094-20111124223645.patch</filename>
            <type>text/plain</type>
            <size>36365</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGZmY2IyMjk2NjljNjIz
OWUxY2NkODdlMTdlNTA3MjIzOGVkZWQxMC4uZTA2NGQyNzc2YjgwMjY5ODI0MjZkNTdiNTgxNGJm
ZmE0ZTU1YTgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDExLTExLTI0ICBKb3Nl
cGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+IGFuZCBKb2NlbHluIFR1cmNvdHRlICA8
am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgV2ViSW5zcGVjdG9yU2VydmVy
IGZvciBXZWJLaXQyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzMwOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBzaW5nbGV0b24sIHBhZ2VzIHJlZ2lzdGVyIGFuZCB1bnJlZ2lzdGVyIGFzIHRo
ZXkgYXJlIGNyZWF0ZWQKKyAgICAgICAgYW5kIGRlc3Ryb3llZCBpZiB0aGV5IGhhdmUgZGV2ZWxv
cGVyIGV4dHJhcyBlbmFibGVkLiBUaGUgc2VydmVyIGlzCisgICAgICAgIHN0YXJ0ZWQgdGhyb3Vn
aCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBzcGVjaWZ5aW5nIHRoZSBpbnRlcmZhY2UgYW5kCisg
ICAgICAgIHBvcnQgdG8gYmluZCB0aGUgc2VydmVyIHRvLCBieSBkZWZhdWx0IG9uIGxvY2FsaG9z
dC4KKworICAgICAgICBUaGUgc2VydmVyIHVzZXMgV2ViU29ja2V0IGZvciBjb21tdW5pY2F0aW9u
IHdpdGggdGhlIHJlbW90ZSBjbGllbnQgYW5kCisgICAgICAgIG5vcm1hbCBIVFRQIHJlcXVlc3Rz
IGFyZSBoYW5kbGVkIHRvIG9wdGlvbmFsbHkgc2VuZCB0aGUgZnJvbnRlbmQgb24gdGhlCisgICAg
ICAgIHdpcmUuIFRob3NlIGRlY2lzaW9uIGFyZSBoYW5kbGVkIHBlciBwbGF0Zm9ybSBhbmQgUXQg
Y3VycmVudGx5IG1hcHM6CisKKyAgICAgICAgICAtICIvIiB0byBhIHN0YXRpYyBsaXN0aW5nIHBh
Z2UuCisgICAgICAgICAgLSAiL3BhZ2VsaXN0Lmpzb24iIHRvIHRoZSBwYWdlIGxpc3QgZm9yIHRo
ZSBsaXN0aW5nIHBhZ2Ugb3IgdG9vbHMuCisgICAgICAgICAgLSBhbnl0aGluZyBlbHNlLCBmb3Ig
ZXhhbXBsZSAiL2luc3BlY3Rvci5qcyIgdG8gdGhlIGZpbGUgd2l0aCB0aGUKKyAgICAgICAgICAg
IHNhbWUgbmFtZSBpbiB0aGUgZHluYW1pYyBsaWJyYXJpZXMgYnVpbHQgcmVzb3VyY2VzLgorICAg
ICAgICAgICAgSW52YWxpZCBmaWxlcyBzaG91bGQgcmV0dXJuIGEgNDA0LgorCisgICAgICAgIFRo
ZSBzZXJ2ZXIgaXMgcnVuIG9uIHRoZSBVSSBwcm9jZXNzIGFuZCBjb21tdW5pY2F0ZXMgd2l0aCB0
aGUgd2ViIHByb2Nlc3MgdGhyb3VnaAorICAgICAgICBJUEMgZm9yIGVhY2ggbWVzc2FnZSBiZXR3
ZWVuIHRoZSBpbnNwZWN0b3IgY29udHJvbGxlciBhbmQgdGhlIHJlbW90ZSBmcm9udGVuZC4KKwor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OldlYkluc3BlY3Rv
clByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmludmFsaWRhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZW5hYmxlUmVtb3RlSW5zcGVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVu
ZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpyZW1vdGVG
cm9udGVuZERpc2Nvbm5lY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eTo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3Bl
Y3RvclNlcnZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpwYWdlSWRGcm9tUmVxdWVz
dFBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JTZXJ2ZXI6OnNlcnZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclNlcnZlcjo6V2ViSW5zcGVjdG9yU2VydmVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjp+V2ViSW5zcGVjdG9yU2VydmVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjpyZWdpc3RlclBhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JTZXJ2ZXI6OnVucmVnaXN0ZXJQYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjpzZW5kTWVzc2FnZU92ZXJDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjpkaWRSZWNlaXZlVW5y
ZWNvZ25pemVkSFRUUFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JTZXJ2
ZXI6OmRpZFJlY2VpdmVXZWJTb2NrZXRVcGdyYWRlSFRUUFJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JTZXJ2ZXI6OmRpZEVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JTZXJ2ZXI6OmRpZFJlY2VpdmVXZWJTb2Nr
ZXRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjpkaWRDbG9z
ZVdlYlNvY2tldENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JTZXJ2
ZXI6OmNsb3NlQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclNl
cnZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChpbml0SW5zcGVjdG9y
U2VydmVyKToKKyAgICAgICAgKGluaXRXZWJLaXQpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6
OmRlZmF1bHRXS0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JT
ZXJ2ZXJRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JTZXJ2ZXI6
OnBsYXRmb3JtUmVzb3VyY2VGb3JQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
U2VydmVyOjpidWlsZFBhZ2VMaXN0KToKKyAgICAgICAgKiBXZWJLaXQyLnFyYzogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9u
dGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVu
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kRGlzY29u
bmVjdGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6aGFzUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW46
CisgICAgICAgICogcXQvUmVzb3VyY2VzL2luc3BlY3RvclBhZ2VJbmRleC5odG1sOiBBZGRlZC4K
KwogMjAxMS0xMS0yMyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9i
aT4KIAogICAgICAgICBbQ01ha2VdIE1vdmUgdGhlIHRvcC1sZXZlbCBsb2dpYyB0byB0aGUgdG9w
LWxldmVsIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IGE1NTJkNTVkOGRmYWE1YzJhMWY1YTBj
MjMwZGY1M2Y1MzcwOTcxZDMuLjU1NWY0NzI4MjhkODY3N2ViZjFlZDg2NzNhY2RhZmVhYTkyMjNj
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaQpAQCAtMTksNiArMTksOCBAQCBERVNURElSID0gJCRXRUJLSVQyX0RF
U1RESVIKIAogUVQgKz0gZGVjbGFyYXRpdmUKIAorUkVTT1VSQ0VTICs9ICQkUFdEL1dlYktpdDIu
cXJjCisKIFdFQktJVDJfR0VORVJBVEVEX0hFQURFUlMgPSBcCiAgICAgJCRXRUJLSVQyX0dFTkVS
QVRFRF9TT1VSQ0VTX0RJUi9BdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIFwKICAgICAk
JFdFQktJVDJfR0VORVJBVEVEX1NPVVJDRVNfRElSL0Rvd25sb2FkUHJveHlNZXNzYWdlcy5oIFwK
QEAgLTI5OSw2ICszMDEsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRh
dGFiYXNlLmggXAogICAgIFVJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQuaCBcCiAgICAg
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggXAorICAgIFVJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JTZXJ2ZXIuaCBcCiAgICAgVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94
eS5oIFwKICAgICBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmggXAogICAgIFVJUHJvY2Vzcy9X
ZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmggXApAQCAtNjA2LDYgKzYwOSw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgIFVJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwIFwKICAgICBVSVByb2Nlc3Mv
V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmNwcCBcCisgICAgVUlQcm9jZXNzL1dlYkluc3BlY3RvclNlcnZlci5jcHAgXAogICAgIFVJ
UHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuY3BwIFwKICAgICBVSVByb2Nl
c3MvV2ViTG9hZGVyQ2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYk1lZGlhQ2FjaGVNYW5h
Z2VyUHJveHkuY3BwIFwKQEAgLTY0Myw2ICs2NDcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVBy
b2Nlc3MvcXQvV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJJ
bnNwZWN0b3JQcm94eVF0LmNwcCBcCisgICAgVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclNlcnZl
clF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNwcCBcCiAgICAgVUlQ
cm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvV2Vi
UG9wdXBNZW51UHJveHlRdERlc2t0b3AuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDBhMzY1MzAzOTYxMzkxNDJlYTYzYTFmMDIy
OGNkZGJiMmQ4MTJkOWUuLmJkODRiY2FhMTM5YWZmYTQ4NTIwYzA5NjRkY2I4OTJiMDg3YWEzM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJXZWJJ
bnNwZWN0b3JNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlR3Jv
dXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKQEAgLTc1LDYgKzc2LDkgQEAgV2ViSW5z
cGVjdG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKICAgICAs
IG1faW5zcGVjdG9yVmlldygwKQogICAgICwgbV9pbnNwZWN0b3JXaW5kb3coMCkKICNlbmRpZgor
I2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgICwgbV9yZW1vdGVJbnNwZWN0aW9uUGFn
ZUlkKDApCisjZW5kaWYKIHsKIH0KIApAQCAtODQsNiArODgsMTEgQEAgV2ViSW5zcGVjdG9yUHJv
eHk6On5XZWJJbnNwZWN0b3JQcm94eSgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmludmFs
aWRhdGUoKQogeworI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgIGlmIChtX3JlbW90
ZUluc3BlY3Rpb25QYWdlSWQpCisgICAgICAgIFdlYkluc3BlY3RvclNlcnZlcjo6c2VydmVyKCkt
PnVucmVnaXN0ZXJQYWdlKG1fcmVtb3RlSW5zcGVjdGlvblBhZ2VJZCk7CisjZW5kaWYKKwogICAg
IG1fcGFnZS0+Y2xvc2UoKTsKICAgICBkaWRDbG9zZSgpOwogCkBAIC0xOTUsNiArMjA0LDI4IEBA
IGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmlzSW5zcGVjdG9yUGFnZShXZWJQYWdlUHJveHkqIHBh
Z2UpCiAgICAgcmV0dXJuIHBhZ2UtPnBhZ2VHcm91cCgpID09IGluc3BlY3RvclBhZ2VHcm91cCgp
OwogfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCit2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjplbmFibGVSZW1vdGVJbnNwZWN0aW9uKCkKK3sKKyAgICBtX3JlbW90ZUluc3BlY3Rpb25Q
YWdlSWQgPSBXZWJJbnNwZWN0b3JTZXJ2ZXI6OnNlcnZlcigpLT5yZWdpc3RlclBhZ2UodGhpcyk7
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkK
K3sKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpS
ZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQoreworICAgIG1f
cGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250
ZW5kRGlzY29ubmVjdGVkKCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQoreworICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OkRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChtZXNzYWdlKSwgbV9w
YWdlLT5wYWdlSUQoKSk7Cit9CisjZW5kaWYKKwogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclBy
b3h5IG1lc3NhZ2VzCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdl
KHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIGlu
c3BlY3RvclBhZ2VQYXJhbWV0ZXJzKQogewpAQCAtMjYxLDYgKzI5MiwxNCBAQCBib29sIFdlYklu
c3BlY3RvclByb3h5OjpzaG91bGRPcGVuQXR0YWNoZWQoKQogICAgIHJldHVybiBpbnNwZWN0b3JQ
YWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+aW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoKSAmJiBj
YW5BdHRhY2goKTsKIH0KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQordm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlkKTsKKyAgICBX
ZWJJbnNwZWN0b3JTZXJ2ZXI6OnNlcnZlcigpLT5zZW5kTWVzc2FnZU92ZXJDb25uZWN0aW9uKG1f
cmVtb3RlSW5zcGVjdGlvblBhZ2VJZCwgbWVzc2FnZSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCBhNzBhYzcwMGM3ZWNkMDEy
ZWZiMWRhNmM1YzBhMGE5YjBjYWZkMDU5Li4zNmQzNjczNzgwOGU4YWU5MzFiYTQ5ZjIyOGJhOTMy
OTBmYjcyZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVj
dG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuaApAQCAtMTExLDYgKzExMSwxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc0lu
c3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5Kik7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZF
UikKKyAgICB2b2lkIGVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKTsKKyAgICB2b2lkIHJlbW90ZUZy
b250ZW5kQ29ubmVjdGVkKCk7CisgICAgdm9pZCByZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgp
OworICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJJbnNwZWN0b3JQcm94eShX
ZWJQYWdlUHJveHkqIHBhZ2UpOwogCkBAIC0xMzcsNiArMTQ0LDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3Qg
U3RyaW5nJik7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworI2VuZGlmCisK
ICAgICBib29sIGNhbkF0dGFjaCgpOwogICAgIGJvb2wgc2hvdWxkT3BlbkF0dGFjaGVkKCk7CiAK
QEAgLTE4Miw2ICsxOTMsOSBAQCBwcml2YXRlOgogICAgIEd0a1dpZGdldCogbV9pbnNwZWN0b3JW
aWV3OwogICAgIEd0a1dpZGdldCogbV9pbnNwZWN0b3JXaW5kb3c7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBpbnQgbV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlkOwor
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhMTk0
OTg1OGUwNDMzZDk4NGYwN2ExNWE5ZDJkYmQxNmY2MzI0OGUyLi4yYjY2NjMzNjljYzA5ODc0NDIw
MTdiNzc5YWJmMmJjNmM3YjdlZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMiw2ICszMiwxMCBAQCBt
ZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7CiAgICAgQXR0YWNoKCkKICAgICBEZXRhY2go
KQogICAgIFNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKKworI2lmIEVO
QUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgIFNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChX
VEY6OlN0cmluZyBtZXNzYWdlKQorI2VuZGlmCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclNlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yU2VydmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjYzZGY1
OGRkZDc1MzNiOTFlZWQzMzhhNjMxOGFjZDg1NGJiMThjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclNlcnZlci5jcHAKQEAgLTAsMCArMSwy
MDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZF
UikKKworI2luY2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgorCisjaW5jbHVkZSAiSFRUUFJl
cXVlc3QuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eS5oIgorI2luY2x1ZGUgIldlYlNv
Y2tldFNlcnZlckNvbm5lY3Rpb24uaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdW5zaWduZWQgcGFnZUlkRnJvbVJlcXVlc3RQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBzaXplX3Qgc3RhcnQgPSBwYXRoLnJldmVyc2VG
aW5kKCcvJyk7CisgICAgU3RyaW5nIG51bWJlclN0cmluZyA9IHBhdGguc3Vic3RyaW5nKHN0YXJ0
ICsgMSwgcGF0aC5sZW5ndGgoKSAtIHN0YXJ0IC0gMSk7CisKKyAgICBib29sIG9rID0gZmFsc2U7
CisgICAgdW5zaWduZWQgbnVtYmVyID0gbnVtYmVyU3RyaW5nLnRvVUludFN0cmljdCgmb2spOwor
ICAgIGlmICghb2spCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBudW1iZXI7Cit9CisK
K1dlYkluc3BlY3RvclNlcnZlciogV2ViSW5zcGVjdG9yU2VydmVyOjpzZXJ2ZXIoKQoreworICAg
IHN0YXRpYyBXZWJJbnNwZWN0b3JTZXJ2ZXIqIHN0YXRpY1NlcnZlciA9IG5ldyBXZWJJbnNwZWN0
b3JTZXJ2ZXI7CisgICAgcmV0dXJuIHN0YXRpY1NlcnZlcjsKK30KKworV2ViSW5zcGVjdG9yU2Vy
dmVyOjpXZWJJbnNwZWN0b3JTZXJ2ZXIoKQorICAgIDogV2ViU29ja2V0U2VydmVyKHRoaXMpCisg
ICAgLCBtX25leHRBdmFpbGFibGVQYWdlSWQoMSkKK3sKK30KKworV2ViSW5zcGVjdG9yU2VydmVy
Ojp+V2ViSW5zcGVjdG9yU2VydmVyKCkKK3sKKyAgICAvLyBDbG9zZSBhbnkgcmVtYWluaW5nIG9w
ZW4gY29ubmVjdGlvbnMuCisgICAgSGFzaE1hcDx1bnNpZ25lZCwgV2ViU29ja2V0U2VydmVyQ29u
bmVjdGlvbio+OjppdGVyYXRvciBlbmQgPSBtX2Nvbm5lY3Rpb25NYXAuZW5kKCk7CisgICAgZm9y
IChIYXNoTWFwPHVuc2lnbmVkLCBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKj46Oml0ZXJhdG9y
IGl0ID0gbV9jb25uZWN0aW9uTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAg
ICBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gaXQtPnNlY29uZDsKKyAg
ICAgICAgV2ViSW5zcGVjdG9yUHJveHkqIGNsaWVudCA9IG1fY2xpZW50TWFwLmdldChjb25uZWN0
aW9uLT5pZGVudGlmaWVyKCkpOworICAgICAgICBjbG9zZUNvbm5lY3Rpb24oY2xpZW50LCBjb25u
ZWN0aW9uKTsKKyAgICB9Cit9CisKK2ludCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OnJlZ2lzdGVyUGFn
ZShXZWJJbnNwZWN0b3JQcm94eSogY2xpZW50KQoreworI2lmbmRlZiBBU1NFUlRfRElTQUJMRUQK
KyAgICBDbGllbnRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fY2xpZW50TWFwLmVuZCgpOworICAgIGZv
ciAoQ2xpZW50TWFwOjppdGVyYXRvciBpdCA9IG1fY2xpZW50TWFwLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkKKyAgICAgICAgQVNTRVJUKGl0LT5zZWNvbmQgIT0gY2xpZW50KTsKKyNlbmRpZgor
CisgICAgaW50IHBhZ2VJZCA9IG1fbmV4dEF2YWlsYWJsZVBhZ2VJZCsrOworICAgIG1fY2xpZW50
TWFwLnNldChwYWdlSWQsIGNsaWVudCk7CisgICAgcmV0dXJuIHBhZ2VJZDsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JTZXJ2ZXI6OnVucmVnaXN0ZXJQYWdlKGludCBwYWdlSWQpCit7CisgICAgbV9j
bGllbnRNYXAucmVtb3ZlKHBhZ2VJZCk7CisgICAgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiog
Y29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQocGFnZUlkKTsKKyAgICBpZiAoY29ubmVj
dGlvbikKKyAgICAgICAgY2xvc2VDb25uZWN0aW9uKDAsIGNvbm5lY3Rpb24pOworfQorCit2b2lk
IFdlYkluc3BlY3RvclNlcnZlcjo6c2VuZE1lc3NhZ2VPdmVyQ29ubmVjdGlvbih1bnNpZ25lZCBw
YWdlSWRGb3JDb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgV2ViU29j
a2V0U2VydmVyQ29ubmVjdGlvbiogY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQocGFn
ZUlkRm9yQ29ubmVjdGlvbik7CisgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworICAgIGNvbm5lY3Rp
b24tPnNlbmRXZWJTb2NrZXRNZXNzYWdlKG1lc3NhZ2UpOworfQorCit2b2lkIFdlYkluc3BlY3Rv
clNlcnZlcjo6ZGlkUmVjZWl2ZVVucmVjb2duaXplZEhUVFBSZXF1ZXN0KFdlYlNvY2tldFNlcnZl
ckNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+IHJlcXVlc3Qp
Cit7CisgICAgU3RyaW5nIHBhdGggPSByZXF1ZXN0LT51cmwoKTsKKyAgICBzaXplX3QgcGF0aEVu
ZCA9IHBhdGguZmluZCgnPycpOworICAgIGlmIChwYXRoRW5kID09IG5vdEZvdW5kKQorICAgICAg
ICBwYXRoRW5kID0gcGF0aC5maW5kKCcjJyk7CisgICAgaWYgKHBhdGhFbmQgIT0gbm90Rm91bmQp
CisgICAgICAgIHBhdGgudHJ1bmNhdGUocGF0aEVuZCk7CisKKyAgICAvLyBBc2sgZm9yIHRoZSBj
b21wbGV0ZSBwYXlsb2FkIGluIG1lbW9yeSBmb3IgdGhlIHNha2Ugb2Ygc2ltcGxpY2l0eS4gQSBt
b3JlIGVmZmljaWVudCB3YXkgd291bGQgYmUKKyAgICAvLyB0byBhc2sgZm9yIGhlYWRlciBkYXRh
IGFuZCB0aGVuIGxldCB0aGUgcGxhdGZvcm0gYWJzdHJhY3Rpb24gd3JpdGUgdGhlIHBheWxvYWQg
c3RyYWlnaHQgb24gdGhlIGNvbm5lY3Rpb24uCisgICAgVmVjdG9yPGNoYXI+IGJvZHk7CisgICAg
U3RyaW5nIGNvbnRlbnRUeXBlOworICAgIGJvb2wgZm91bmQgPSBwbGF0Zm9ybVJlc291cmNlRm9y
UGF0aChwYXRoLCBib2R5LCBjb250ZW50VHlwZSk7CisKKyAgICBIVFRQSGVhZGVyTWFwIGhlYWRl
ckZpZWxkczsKKyAgICBoZWFkZXJGaWVsZHMuc2V0KCJDb25uZWN0aW9uIiwgImNsb3NlIik7Cisg
ICAgaGVhZGVyRmllbGRzLnNldCgiQ29udGVudC1MZW5ndGgiLCBTdHJpbmc6Om51bWJlcihib2R5
LnNpemUoKSkpOworICAgIGlmIChmb3VuZCkKKyAgICAgICAgaGVhZGVyRmllbGRzLnNldCgiQ29u
dGVudC1UeXBlIiwgY29udGVudFR5cGUpOworCisgICAgLy8gU2VuZCB3aGVuIHJlYWR5IGFuZCBj
bG9zZSBpbW1lZGlhdGVseSBhZnRlcndhcmRzLgorICAgIGNvbm5lY3Rpb24tPnNlbmRIVFRQUmVz
cG9uc2VIZWFkZXIoZm91bmQgPyAyMDAgOiA0MDQsIGZvdW5kID8gIk9LIiA6ICJOb3QgRm91bmQi
LCBoZWFkZXJGaWVsZHMpOworICAgIGNvbm5lY3Rpb24tPnNlbmRSYXdEYXRhKGJvZHkuZGF0YSgp
LCBib2R5LnNpemUoKSk7CisgICAgY29ubmVjdGlvbi0+c2h1dGRvd25BZnRlclNlbmRPck5vdygp
OworfQorCitib29sIFdlYkluc3BlY3RvclNlcnZlcjo6ZGlkUmVjZWl2ZVdlYlNvY2tldFVwZ3Jh
ZGVIVFRQUmVxdWVzdChXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiwgUGFzc1JlZlB0cjxIVFRQ
UmVxdWVzdD4gcmVxdWVzdCkKK3sKKyAgICBTdHJpbmcgcGF0aCA9IHJlcXVlc3QtPnVybCgpOwor
CisgICAgLy8gTk9URTogS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBXZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzLgorICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3Ry
aW5nLCBpbnNwZWN0b3JXZWJTb2NrZXRDb25uZWN0aW9uUGF0aFByZWZpeCwgKCIvZGV2dG9vbHMv
cGFnZS8iKSk7CisKKyAgICAvLyBVbmtub3duIHBhdGggcmVxdWVzdGVkLgorICAgIGlmICghcGF0
aC5zdGFydHNXaXRoKGluc3BlY3RvcldlYlNvY2tldENvbm5lY3Rpb25QYXRoUHJlZml4KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSW52YWxpZCBwYWdlIGlkLgorICAgIGludCBw
YWdlSWQgPSBwYWdlSWRGcm9tUmVxdWVzdFBhdGgocGF0aCk7CisgICAgaWYgKCFwYWdlSWQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFRoZXJlIGlzIG5vIGNsaWVudCBmb3IgdGhh
dCBwYWdlIGlkLgorICAgIFdlYkluc3BlY3RvclByb3h5KiBjbGllbnQgPSBtX2NsaWVudE1hcC5n
ZXQocGFnZUlkKTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpkaWRFc3RhYmxp
c2hXZWJTb2NrZXRDb25uZWN0aW9uKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qIGNvbm5lY3Rp
b24sIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+IHJlcXVlc3QpCit7CisgICAgU3RyaW5nIHBhdGgg
PSByZXF1ZXN0LT51cmwoKTsKKyAgICB1bnNpZ25lZCBwYWdlSWQgPSBwYWdlSWRGcm9tUmVxdWVz
dFBhdGgocGF0aCk7CisgICAgQVNTRVJUKHBhZ2VJZCk7CisKKyAgICAvLyBNYXAgdGhlIHBhZ2VJ
ZCB0byB0aGUgY29ubmVjdGlvbiBpbiBjYXNlIGxvY2FsbHkgd2UgbmVlZCB0byBjbG9zZSB0aGUg
Y29ubmVjdGlvbi4KKyAgICBjb25uZWN0aW9uLT5zZXRJZGVudGlmaWVyKHBhZ2VJZCk7CisgICAg
bV9jb25uZWN0aW9uTWFwLnNldChwYWdlSWQsIGNvbm5lY3Rpb24pOworCisgICAgV2ViSW5zcGVj
dG9yUHJveHkqIGNsaWVudCA9IG1fY2xpZW50TWFwLmdldChwYWdlSWQpOworICAgIGNsaWVudC0+
cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JTZXJ2ZXI6
OmRpZFJlY2VpdmVXZWJTb2NrZXRNZXNzYWdlKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICAvLyBEaXNwYXRjaCBpbmNv
bWluZyByZW1vdGUgbWVzc2FnZSBsb2NhbGx5LgorICAgIHVuc2lnbmVkIHBhZ2VJZCA9IGNvbm5l
Y3Rpb24tPmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQocGFnZUlkKTsKKyAgICBXZWJJbnNwZWN0
b3JQcm94eSogY2xpZW50ID0gbV9jbGllbnRNYXAuZ2V0KHBhZ2VJZCk7CisgICAgY2xpZW50LT5k
aXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQobWVzc2FnZSk7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yU2VydmVyOjpkaWRDbG9zZVdlYlNvY2tldENvbm5lY3Rpb24oV2ViU29ja2V0U2Vy
dmVyQ29ubmVjdGlvbiogY29ubmVjdGlvbikKK3sKKyAgICAvLyBDb25uZWN0aW9uIGhhcyBhbHJl
YWR5IHNodXRkb3duLgorICAgIHVuc2lnbmVkIHBhZ2VJZCA9IGNvbm5lY3Rpb24tPmlkZW50aWZp
ZXIoKTsKKyAgICBpZiAoIXBhZ2VJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIHNv
Y2tldCBjbG9zaW5nIG1lYW5zIHRoZSByZW1vdGUgc2lkZSBoYXMgY2F1c2VkIHRoZSBjbG9zZS4K
KyAgICBXZWJJbnNwZWN0b3JQcm94eSogY2xpZW50ID0gbV9jbGllbnRNYXAuZ2V0KHBhZ2VJZCk7
CisgICAgY2xvc2VDb25uZWN0aW9uKGNsaWVudCwgY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yU2VydmVyOjpjbG9zZUNvbm5lY3Rpb24oV2ViSW5zcGVjdG9yUHJveHkqIGNsaWVu
dCwgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiogY29ubmVjdGlvbikKK3sKKyAgICAvLyBMb2Nh
bCBzaWRlIGNsZWFudXAuCisgICAgaWYgKGNsaWVudCkKKyAgICAgICAgY2xpZW50LT5yZW1vdGVG
cm9udGVuZERpc2Nvbm5lY3RlZCgpOworCisgICAgLy8gUmVtb3RlIHNpZGUgY2xlYW51cC4KKyAg
ICBtX2Nvbm5lY3Rpb25NYXAucmVtb3ZlKGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKSk7CisgICAg
Y29ubmVjdGlvbi0+c2V0SWRlbnRpZmllcigwKTsKKyAgICBjb25uZWN0aW9uLT5zaHV0ZG93bk5v
dygpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JTZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JTZXJ2ZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
NjAwNDJlNzAzZDQwZmY4M2M2ZDk4N2ViOWExMDVmMGIwYTNkNTg0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclNlcnZlci5oCkBAIC0wLDAg
KzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYkluc3BlY3RvclNlcnZlcl9oCisjZGVmaW5lIFdlYkluc3Bl
Y3RvclNlcnZlcl9oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKworI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0U2VydmVyLmgiCisjaW5jbHVk
ZSAiV2ViU29ja2V0U2VydmVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkluc3BlY3RvclByb3h5OworCitjbGFzcyBX
ZWJJbnNwZWN0b3JTZXJ2ZXIgOiBwdWJsaWMgV2ViQ29yZTo6V2ViU29ja2V0U2VydmVyLCBwdWJs
aWMgV2ViQ29yZTo6V2ViU29ja2V0U2VydmVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEhhc2hNYXA8dW5zaWduZWQsIFdlYkluc3BlY3RvclByb3h5Kj4gQ2xpZW50TWFwOworICAgIC8v
IFRoZSBzaW5nbGV0b24gaW5zdGFuY2UuCisgICAgc3RhdGljIFdlYkluc3BlY3RvclNlcnZlciog
c2VydmVyKCk7CisKKyAgICAvLyBQYWdlIHJlZ2lzdHJ5IHRvIG1hbmFnZSBrbm93biBwYWdlcy4K
KyAgICBpbnQgcmVnaXN0ZXJQYWdlKFdlYkluc3BlY3RvclByb3h5KiBjbGllbnQpOworICAgIHZv
aWQgdW5yZWdpc3RlclBhZ2UoaW50IHBhZ2VJZCk7CisgICAgdm9pZCBzZW5kTWVzc2FnZU92ZXJD
b25uZWN0aW9uKHVuc2lnbmVkIHBhZ2VJZEZvckNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7CisKK3ByaXZhdGU6CisgICAgV2ViSW5zcGVjdG9yU2VydmVyKCk7CisgICAgfldlYklu
c3BlY3RvclNlcnZlcigpOworCisgICAgLy8gV2ViU29ja2V0U2VydmVyQ2xpZW50IGltcGxlbWVu
dGF0aW9uLiBFdmVudHMgY29taW5nIGZyb20gcmVtb3RlIGNvbm5lY3Rpb25zLgorICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlVW5yZWNvZ25pemVkSFRUUFJlcXVlc3QoV2ViQ29yZTo6V2ViU29j
a2V0U2VydmVyQ29ubmVjdGlvbiosIFBhc3NSZWZQdHI8V2ViQ29yZTo6SFRUUFJlcXVlc3Q+KTsK
KyAgICB2aXJ0dWFsIGJvb2wgZGlkUmVjZWl2ZVdlYlNvY2tldFVwZ3JhZGVIVFRQUmVxdWVzdChX
ZWJDb3JlOjpXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpI
VFRQUmVxdWVzdD4pOworICAgIHZpcnR1YWwgdm9pZCBkaWRFc3RhYmxpc2hXZWJTb2NrZXRDb25u
ZWN0aW9uKFdlYkNvcmU6OldlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBQYXNzUmVmUHRyPFdl
YkNvcmU6OkhUVFBSZXF1ZXN0Pik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVXZWJTb2Nr
ZXRNZXNzYWdlKFdlYkNvcmU6OldlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVdlYlNvY2tldENvbm5lY3Rp
b24oV2ViQ29yZTo6V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiopOworCisgICAgYm9vbCBwbGF0
Zm9ybVJlc291cmNlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFZlY3RvcjxjaGFyPiYgZGF0
YSwgU3RyaW5nJiBjb250ZW50VHlwZSk7CisjaWYgUExBVEZPUk0oUVQpCisgICAgdm9pZCBidWls
ZFBhZ2VMaXN0KFZlY3RvcjxjaGFyPiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSk7CisjZW5k
aWYKKworICAgIHZvaWQgY2xvc2VDb25uZWN0aW9uKFdlYkluc3BlY3RvclByb3h5KiwgV2ViQ29y
ZTo6V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiopOworCisgICAgdW5zaWduZWQgbV9uZXh0QXZh
aWxhYmxlUGFnZUlkOworICAgIENsaWVudE1hcCBtX2NsaWVudE1hcDsKKyAgICBIYXNoTWFwPHVu
c2lnbmVkLCBXZWJDb3JlOjpXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKj4gbV9jb25uZWN0aW9u
TWFwOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisKKyNl
bmRpZiAvLyBXZWJJbnNwZWN0b3JTZXJ2ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA4M2U1OGYyZDg1YjFiYjBjMDFlNjJiMmE4MzZkNzdlZWQ1MzIx
YWE0Li41YTNlYzNiNTJhNzU5N2Y3NzdkNTYxZDBlZGJkYWQ2Y2M0ZTBmODAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzI3LDYgKzMyNywxMSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogICAgIG1fZHJhd2luZ0FyZWEg
PSBtX3BhZ2VDbGllbnQtPmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKTsKICAgICBBU1NFUlQobV9k
cmF3aW5nQXJlYSk7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBpZiAobV9w
YWdlR3JvdXAtPnByZWZlcmVuY2VzKCktPmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKKyAgICAg
ICAgaW5zcGVjdG9yKCktPmVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKTsKKyNlbmRpZgorCiAgICAg
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDcmVhdGVXZWJQYWdlKG1fcGFn
ZUlELCBjcmVhdGlvblBhcmFtZXRlcnMoKSksIDApOwogfQogCkBAIC0xNDc0LDYgKzE0NzksMTEg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKICAgICBpZiAoIWlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIp
CisgICAgaWYgKG1fcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLT5kZXZlbG9wZXJFeHRyYXNFbmFi
bGVkKCkpCisgICAgICAgIGluc3BlY3RvcigpLT5lbmFibGVSZW1vdGVJbnNwZWN0aW9uKCk7Cisj
ZW5kaWYKKwogICAgIC8vIEZJWE1FOiBJdCBwcm9iYWJseSBtYWtlcyBtb3JlIHNlbnNlIHRvIHNl
bmQgaW5kaXZpZHVhbCBwcmVmZXJlbmNlIGNoYW5nZXMuCiAgICAgLy8gSG93ZXZlciwgV2ViS2l0
VGVzdFJ1bm5lciBkZXBlbmRzIG9uIGdldHRpbmcgYSBwcmVmZXJlbmNlIGNoYW5nZSBub3RpZmlj
YXRpb24KICAgICAvLyBldmVuIGlmIG5vdGhpbmcgY2hhbmdlZCBpbiBVSSBwcm9jZXNzLCBzbyB0
aGF0IG92ZXJyaWRlcyBnZXQgcmVtb3ZlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IGMxMDc3M2JhOTQ1NDBjY2U3MmYzOWJkMzM3ZDZi
ZjBmYWE4YWRjZWUuLjY2YjNmZmFkNjRjOTY5YjcwMjU4MDA2Y2YyZTUzZjUzZGQzYzQxNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcApAQCAt
NTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHlRdC5oIgogI2luY2x1
ZGUgIldlYkVkaXRDb21tYW5kUHJveHkuaCIKICNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnlRdC5o
IgorI2luY2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVu
dVByb3h5UXREZXNrdG9wLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmdRdC5oIgogI2luY2x1ZGUgIldL
VVJMUXQuaCIKQEAgLTgxLDkgKzgyLDUzIEBAIFJlZlB0cjxRdERvd25sb2FkTWFuYWdlcj4gUXRX
ZWJQYWdlUHJveHk6OnNfZG93bmxvYWRNYW5hZ2VyOwogCiB1bnNpZ25lZCBRdFdlYlBhZ2VQcm94
eTo6c19kZWZhdWx0UGFnZVByb3h5Q291bnQgPSAwOwogCitzdGF0aWMgdm9pZCBpbml0SW5zcGVj
dG9yU2VydmVyKCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBRU3RyaW5n
IGluc3BlY3RvckVudiA9IFFTdHJpbmc6OmZyb21MYXRpbjEocWdldGVudigiUVRXRUJLSVRfSU5T
UEVDVE9SX1NFUlZFUiIpKTsKKyAgICBpZiAoIWluc3BlY3RvckVudi5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgUVN0cmluZyBiaW5kQWRkcmVzcyA9IFFMYXRpbjFTdHJpbmcoIjEyNy4wLjAuMSIpOwor
ICAgICAgICBRU3RyaW5nIHBvcnRTdHIgPSBpbnNwZWN0b3JFbnY7CisgICAgICAgIGludCBwb3J0
ID0gMDsKKworICAgICAgICBpbnQgcG9ydENvbG9uUG9zID0gaW5zcGVjdG9yRW52Lmxhc3RJbmRl
eE9mKCc6Jyk7CisgICAgICAgIGlmIChwb3J0Q29sb25Qb3MgIT0gLTEpIHsKKyAgICAgICAgICAg
IHBvcnRTdHIgPSBpbnNwZWN0b3JFbnYubWlkKHBvcnRDb2xvblBvcyArIDEpOworICAgICAgICAg
ICAgYmluZEFkZHJlc3MgPSBpbnNwZWN0b3JFbnYubWlkKDAsIHBvcnRDb2xvblBvcyk7CisgICAg
ICAgIH0KKworICAgICAgICBib29sIG9rID0gZmFsc2U7CisgICAgICAgIHBvcnQgPSBwb3J0U3Ry
LnRvSW50KCZvayk7CisgICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIExPR19FUlJPUigi
Tm9uIG51bWVyaWMgcG9ydCBmb3IgdGhlIGluc3BlY3RvciBzZXJ2ZXIgXCIlc1wiLiBFeGFtcGxl
cyBvZiB2YWxpZCBpbnB1dDogXCIxMjM0NVwiIG9yIFwiMTkyLjE2OC4yLjE0OjEyMzQ1XCIgKHdp
dGggdGhlIGFkZHJlc3Mgb2Ygb25lIG9mIHRoaXMgaG9zdCdzIGludGVyZmFjZSkuIiwgcVByaW50
YWJsZShwb3J0U3RyKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBib29sIHN1Y2Nlc3MgPSBXZWJJbnNwZWN0b3JTZXJ2ZXI6OnNlcnZlcigpLT5saXN0ZW4oYmlu
ZEFkZHJlc3MsIHBvcnQpOworICAgICAgICBpZiAoc3VjY2VzcykgeworICAgICAgICAgICAgUVN0
cmluZyBpbnNwZWN0b3JTZXJ2ZXJVcmwgPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJodHRwOi8vJTE6
JTIiKS5hcmcoYmluZEFkZHJlc3MpLmFyZyhwb3J0KTsKKyAgICAgICAgICAgIHFXYXJuaW5nKCJJ
bnNwZWN0b3Igc2VydmVyIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LiBUcnkgcG9pbnRpbmcgYSBXZWJL
aXQgYnJvd3NlciB0byAlcyIsIHFQcmludGFibGUoaW5zcGVjdG9yU2VydmVyVXJsKSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBzdGFydCB0aGUgaW5z
cGVjdG9yIHNlcnZlciBvbiBiaW5kIGFkZHJlc3MgXCIlc1wiIGFuZCBwb3J0IFwiJWRcIi4gSW4g
Y2FzZSBvZiBpbnZhbGlkIGlucHV0LCB0cnkgc29tZXRoaW5nIGxpa2U6IFwiMTIzNDVcIiBvciBc
IjE5Mi4xNjguMi4xNDoxMjM0NVwiICh3aXRoIHRoZSBhZGRyZXNzIG9mIG9uZSBvZiB0aGlzIGhv
c3QncyBpbnRlcmZhY2UpLiIsIHFQcmludGFibGUoYmluZEFkZHJlc3MpLCBwb3J0KTsKKyAgICB9
CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgaW5pdFdlYktpdCgpCit7CisgICAgc3RhdGljIGJv
b2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBBU1NFUlQoIWluaXRpYWxpemVkKTsKKworICAg
IGluaXRJbnNwZWN0b3JTZXJ2ZXIoKTsKKyAgICBpbml0aWFsaXplZCA9IHRydWU7Cit9CisKIFBh
c3NSZWZQdHI8V2ViQ29udGV4dD4gUXRXZWJQYWdlUHJveHk6OmRlZmF1bHRXS0NvbnRleHQoKQog
ewogICAgIGlmICghc19kZWZhdWx0Q29udGV4dCkgeworICAgICAgICAvLyBUaGlzIHNob3VsZCBi
ZSBhIGdvb2QgcGxhY2UgdG8gY2FsbCB0aGlzIHVudGlsIHdlIGRlY2lkZSB0byBzdXBwb3J0IG11
bHRpcGxlIGNvbnRleHRzLgorICAgICAgICBpbml0V2ViS2l0KCk7CisKICAgICAgICAgc19kZWZh
dWx0Q29udGV4dCA9IFdlYkNvbnRleHQ6OmNyZWF0ZShTdHJpbmcoKSk7CiAgICAgICAgIHNldHVw
Q29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50KHRvQVBJKHNfZGVmYXVsdENvbnRleHQuZ2V0KCkp
KTsKICAgICAgICAgc19kb3dubG9hZE1hbmFnZXIgPSBRdERvd25sb2FkTWFuYWdlcjo6Y3JlYXRl
KHNfZGVmYXVsdENvbnRleHQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYkluc3BlY3RvclNlcnZlclF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9XZWJJbnNwZWN0b3JTZXJ2ZXJRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVhNGYwYmUyOTk4
ZjJiODlhNGM2YjIzMDdjZTljNDYwNTA0YmYzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JTZXJ2ZXJRdC5jcHAKQEAgLTAsMCArMSw4
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9TRVJWRVIpCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIK
KworI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JQ
cm94eS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitib29sIFdlYkluc3BlY3RvclNlcnZlcjo6cGxhdGZvcm1SZXNvdXJjZUZv
clBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBWZWN0b3I8Y2hhcj4mIGRhdGEsIFN0cmluZyYgY29u
dGVudFR5cGUpCit7CisgICAgaWYgKHBhdGggPT0gIi9wYWdlbGlzdC5qc29uIikgeworICAgICAg
ICBidWlsZFBhZ2VMaXN0KGRhdGEsIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgU3RyaW5nIGxvY2FsUGF0aCA9IChwYXRoID09ICIvIikgPyAiL3dlYmtp
dC9yZXNvdXJjZXMvaW5zcGVjdG9yUGFnZUluZGV4Lmh0bWwiIDogcGF0aDsKKyAgICBRRmlsZSBm
aWxlKFFTdHJpbmc6OmZyb21MYXRpbjEoIjolMSIpLmFyZyhsb2NhbFBhdGgpKTsKKyAgICBpZiAo
ZmlsZS5leGlzdHMoKSkgeworICAgICAgICBmaWxlLm9wZW4oUUlPRGV2aWNlOjpSZWFkT25seSk7
CisgICAgICAgIGRhdGEuZ3JvdyhmaWxlLnNpemUoKSk7CisgICAgICAgIGZpbGUucmVhZChkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOworCisgICAgICAgIHNpemVfdCBleHRTdGFydCA9IGxvY2Fs
UGF0aC5yZXZlcnNlRmluZCgnLicpOworICAgICAgICBTdHJpbmcgZXh0ID0gbG9jYWxQYXRoLnN1
YnN0cmluZyhleHRTdGFydCAhPSBub3RGb3VuZCA/IGV4dFN0YXJ0ICsgMSA6IDApOworICAgICAg
ICBjb250ZW50VHlwZSA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9y
RXh0ZW5zaW9uKGV4dCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpidWlsZFBhZ2VMaXN0KFZlY3Rv
cjxjaGFyPiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSkKK3sKKyAgICBDbGllbnRNYXA6Oml0
ZXJhdG9yIGVuZCA9IG1fY2xpZW50TWFwLmVuZCgpOworCisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCJbICIpOworICAgIGZvciAoQ2xpZW50TWFwOjppdGVy
YXRvciBpdGVyID0gbV9jbGllbnRNYXAuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewor
ICAgICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBpdGVyLT5zZWNvbmQtPnBhZ2UoKTsKKyAg
ICAgICAgaWYgKGl0ZXIgIT0gbV9jbGllbnRNYXAuYmVnaW4oKSkKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgieyBcImRlc2NyaXB0aW9u
XCI6IFwiIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHdlYlBhZ2UtPnBhZ2VUaXRsZSgpKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlwiLCBcImluc3BlY3RvckxvY2F0aW9uXCI6IFwiIik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIvd2Via2l0L2luc3BlY3Rvci9pbnNwZWN0b3IuaHRt
bD9wYWdlPSIgKyBTdHJpbmc6Om51bWJlcihpdGVyLT5maXJzdCkpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCgiXCIgfSIpOworICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZCgiIF0iKTsKKyAgICBD
U3RyaW5nIGNzdHIgPSBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOworICAgIGRhdGEuYXBwZW5k
KGNzdHIuZGF0YSgpLCBjc3RyLmxlbmd0aCgpKTsKKyAgICBjb250ZW50VHlwZSA9ICJhcHBsaWNh
dGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04IjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIucXJjIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5xcmMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDUwNDE2YzdlYWI4MzZjNTBjOWIzMGIxMTcwMzc2ZThlMWQ0M2M5MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucXJjCkBAIC0wLDAgKzEsNSBAQAorPCFET0NU
WVBFIFJDQz48UkNDIHZlcnNpb249IjEuMCI+Cis8cXJlc291cmNlIHByZWZpeD0iL3dlYmtpdC9y
ZXNvdXJjZXMiPgorICAgIDxmaWxlIGFsaWFzPSJpbnNwZWN0b3JQYWdlSW5kZXguaHRtbCI+cXQv
UmVzb3VyY2VzL2luc3BlY3RvclBhZ2VJbmRleC5odG1sPC9maWxlPgorPC9xcmVzb3VyY2U+Cis8
L1JDQz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA0OTFlZTU3NDM3MDhjMTQy
YmYwYjAyMzZlYzg1ZDgyNmI4ZDMwMDk5Li5iNjhhYzQwOGE5Nzg2NTgzY2I4ZTgwYzhhMzEzYjE1
M2EwODdiMTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC03NCwxMCArNzQs
MTkgQEAgYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSBtX3BhZ2Ut
Pmluc3BlY3RvcigpOwogICAgIGlmICghaW5zcGVjdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBpZiAoaW5zcGVjdG9yLT5oYXNS
ZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpKSB7CisgICAgICAgIGluc3BlY3Rvci0+c2VuZE1lc3Nh
Z2VUb1JlbW90ZUZyb250ZW5kKG1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisjZW5kaWYKKwogICAgIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UgPSBpbnNwZWN0b3ItPmluc3Bl
Y3RvclBhZ2UoKTsKLSAgICBpZiAoIWluc3BlY3RvclBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZShpbnNwZWN0b3JQ
YWdlLT5jb3JlUGFnZSgpLCBtZXNzYWdlKTsKKyAgICBpZiAoaW5zcGVjdG9yUGFnZSkKKyAgICAg
ICAgcmV0dXJuIGRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2UoaW5zcGVjdG9yUGFnZS0+
Y29yZVBhZ2UoKSwgbWVzc2FnZSk7CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpwYWdlT3ZlcmxheURlc3Ryb3llZChQYWdlT3ZlcmxheSopCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmlu
ZGV4IGUxMzgzYzgzMmIwMjI3NjE4NjdjNTVhYTU2MTUyOGRjNzc4YjI0MDUuLjIzMDVkNWFhNGZh
ZmRkZDM0Mzk3NmNiNDBjMzQ3ODhlMzZjNWNiMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC00OSw2ICs0OSw3IEBAIFdl
Ykluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlBhZ2UqIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFn
ZSkKICAgICAsIG1faW5zcGVjdG9yUGFnZSgwKQogICAgICwgbV9mcm9udGVuZENsaWVudCgwKQor
ICAgICwgbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZChmYWxzZSkKIHsKIH0KIApAQCAtMjAyLDYg
KzIwMywzNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c3RvcFBhZ2VQcm9maWxpbmcoKQogICAgICAg
ICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoZmFsc2UpOwog
fQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCit2b2lkIFdlYkluc3BlY3Rvcjo6c2Vu
ZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBB
U1NFUlQobV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1l
c3NhZ2VUb1JlbW90ZUZyb250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3I6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKK3sKKyAgICBBU1NF
UlQoIW1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOworICAgIC8vIFN3aXRjaGluZyBiZXR3ZWVu
IGluLXByb2Nlc3MgYW5kIHJlbW90ZSBpbnNwZWN0b3JzIGlzbid0IHN1cHBvcnRlZCB5ZXQuCisg
ICAgQVNTRVJUKCFtX2luc3BlY3RvclBhZ2UpOworCisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVuZCgpOworICAgIG1fcmVtb3RlRnJv
bnRlbmRDb25uZWN0ZWQgPSB0cnVlOworfQorCit2b2lkIFdlYkluc3BlY3Rvcjo6cmVtb3RlRnJv
bnRlbmREaXNjb25uZWN0ZWQoKQoreworICAgIEFTU0VSVChtX3JlbW90ZUZyb250ZW5kQ29ubmVj
dGVkKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlz
Y29ubmVjdEZyb250ZW5kKCk7CisgICAgbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCA9IGZhbHNl
OworfQorI2VuZGlmCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5oCmluZGV4IDc5ZmY4MDc0YTFkYzU4Y2NlMTU2NDFkMzFmNzIzMzQzM2U0NDVi
YjkuLjVhMDVmNzg4NmJhZDdjMzVkZDJjMDU5ZmJlMmY5YWUwNzNlZDM2N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAgLTQ3LDYg
KzQ3LDcgQEAgcHVibGljOgogCiAgICAgV2ViUGFnZSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZTsgfQogICAgIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lu
c3BlY3RvclBhZ2U7IH0KKyAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZDsgfQogCiAgICAgLy8gSW1wbGVt
ZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2
b2lkIGRpZFJlY2VpdmVXZWJJbnNwZWN0b3JNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBD
b3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpAQCAtNjEsNiAr
NjIsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRQYWdlUHJvZmlsaW5nKCk7CiAgICAgdm9p
ZCBzdG9wUGFnZVByb2ZpbGluZygpOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisg
ICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KTsKKyAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOworICAgIHZvaWQgcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKTsKKyAgICB2
b2lkIHJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCk7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBzdGF0aWMgdm9pZCBzZXRMb2NhbGl6ZWRTdHJpbmdzUGF0aChjb25zdCBTdHJp
bmcmKTsKICNlbmRpZgpAQCAtMTAxLDYgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZSog
bV9wYWdlOwogICAgIFdlYlBhZ2UqIG1faW5zcGVjdG9yUGFnZTsKICAgICBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudCogbV9mcm9udGVuZENsaWVudDsKKyAgICBib29sIG1fcmVtb3RlRnJvbnRl
bmRDb25uZWN0ZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2Vz
LmluCmluZGV4IGRjMTg0YjY4YWNiZWFlNjE5YjFiNjEyMjFjY2RkNTY1NWI2NGQ3NzguLjYzNjJm
YWMxNzgwOTMwYmY3MmQ5YzEzMTAyNTY2OGMwMmUyOTIwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5p
bgpAQCAtMzIsNiArMzIsMTIgQEAgbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yIHsKICAgICBTdG9w
SmF2YVNjcmlwdFByb2ZpbGluZygpCiAgICAgU3RhcnRQYWdlUHJvZmlsaW5nKCkKICAgICBTdG9w
UGFnZVByb2ZpbGluZygpCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBEaXNw
YXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoV1RGOjpTdHJpbmcgbWVzc2FnZSkKKyAgICBS
ZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCisgICAgUmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQo
KQorI2VuZGlmCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvcXQvUmVz
b3VyY2VzL2luc3BlY3RvclBhZ2VJbmRleC5odG1sIGIvU291cmNlL1dlYktpdDIvcXQvUmVzb3Vy
Y2VzL2luc3BlY3RvclBhZ2VJbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhNzMyNDdkN2QwNzJkNTZj
MDEwN2FmNGI1NzBjMTFlYTkyZmMyYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9xdC9SZXNvdXJjZXMvaW5zcGVjdG9yUGFnZUluZGV4Lmh0bWwKQEAgLTAsMCArMSwyOSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD48aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KK2Z1bmN0aW9uIGNyZWF0ZVBhZ2VMaXN0KCkgeworICAgIHZhciB4aHIgPSBuZXcgWE1M
SHR0cFJlcXVlc3Q7CisgICAgeGhyLm9wZW4oIkdFVCIsICIvcGFnZWxpc3QuanNvbiIpOworICAg
IHhoci5vbmxvYWQgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIGlmICh4aHIuc3RhdHVzID09IDIw
MCkgeworICAgICAgICAgICAgdmFyIHBhZ2VzID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0
KTsKKyAgICAgICAgICAgIGlmIChwYWdlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIm5vUGFnZU5vdGljZSIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7
CisgICAgICAgICAgICBmb3IgKHZhciBpIGluIHBhZ2VzKSB7CisgICAgICAgICAgICAgICAgdmFy
IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CisgICAgICAgICAgICAgICAgbGlu
ay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwYWdlc1tpXS5kZXNjcmlwdGlv
biA/IHBhZ2VzW2ldLmRlc2NyaXB0aW9uIDogKCJQYWdlICIgKyAoTnVtYmVyKGkpKzEpKSkpOwor
ICAgICAgICAgICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCJocmVmIiwgcGFnZXNbaV0uaW5zcGVj
dG9yTG9jYXRpb24pOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
bGluayk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJiciIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07
CisgICAgeGhyLnNlbmQoKTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29u
dGVudExvYWRlZCIsIGNyZWF0ZVBhZ2VMaXN0LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD48
Ym9keT4KKzxoMT5JbnNwZWN0YWJsZSB3ZWIgdmlld3M8L2gxPgorPHAgaWQ9Im5vUGFnZU5vdGlj
ZSIgc3R5bGU9ImNvbG9yOmdyZXkiPk5vbmUgZm91bmQsIG1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZl
IHNldCB0aGUgZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCBwcmVmZXJlbmNlIHByb3BlcnR5IG9uIHlv
dXIgV2ViVmlldy48L3A+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc1ZjRlZmZjZWFiYzU0OWI2N2YxNDQzMjg2ZjYz
MDE3ZjA2MzBkZWUuLmY4YjQ4MDk1Y2YyMmVjMDUwYzE1MWRiZjFiMDgzYzY1OTVhYmQxNzAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMS0xMS0yNCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVA
bm9raWEuY29tPgorCisgICAgICAgIFtRdF0gRW5hYmxlIGRldmVsb3BlciBleHRyYXMgb24gcGFn
ZXMgaW4gTWluaUJyb3dzZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MzA5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sOgorCiAyMDEx
LTExLTIzICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgogCiAg
ICAgICAgIFtDTWFrZV0gTW92ZSB0aGUgdG9wLWxldmVsIGxvZ2ljIHRvIHRoZSB0b3AtbGV2ZWwg
ZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJX
aW5kb3cucW1sIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sCmlu
ZGV4IDVjYzE1MmFmNDk3YzUxYmIzYmY0NDliMWQ5ZWQwMmJjMzgzZDE0ZmMuLjUwM2VmMGI4NGRl
M2NiY2ViY2QxNGQ2YThlZDU3ZGUxMGU1N2YyY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9x
bWwvQnJvd3NlcldpbmRvdy5xbWwKQEAgLTE5NSw2ICsxOTUsOSBAQCBSZWN0YW5nbGUgewogICAg
ICAgICAgICAgcmlnaHQ6IHBhcmVudC5yaWdodAogICAgICAgICAgICAgYm90dG9tOiBwYXJlbnQu
Ym90dG9tCiAgICAgICAgIH0KKyAgICAgICAgcHJlZmVyZW5jZXMgeworICAgICAgICAgICAgZGV2
ZWxvcGVyRXh0cmFzRW5hYmxlZDogdHJ1ZQorICAgICAgICB9CiAKICAgICAgICAgb25UaXRsZUNo
YW5nZWQ6IHBhZ2VUaXRsZUNoYW5nZWQodGl0bGUpCiAgICAgICAgIG9uVXJsQ2hhbmdlZDogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117925</attachid>
            <date>2011-12-05 12:48:23 -0800</date>
            <delta_ts>2011-12-08 11:04:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73094-20111205214820.patch</filename>
            <type>text/plain</type>
            <size>25543</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzBhMDNiMjUxMmY1ZGU4
MGZkNWNjYTM1OGQwZWE0YWZjYjQxMDg5Ny4uNDliZDJhYmM1NWY1NzI3MGViMmRjMjBkZjdlYmEx
YzMyYmUwY2VlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDExLTEyLTA1ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgRW5h
YmxlIGFuZCBjb25uZWN0IHRoZSBXZWJJbnNwZWN0b3JTZXJ2ZXIgd2l0aCBXZWJLaXQyIHBhZ2Vz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwOTQK
KworICAgICAgICBQYWdlcyBhcmUgcmVnaXN0ZXJlZCBhbmQgdW5yZWdpc3RlcmVkIGFzIHRoZXkg
YXJlIGNyZWF0ZWQKKyAgICAgICAgYW5kIGRlc3Ryb3llZCBpZiB0aGV5IGhhdmUgZGV2ZWxvcGVy
IGV4dHJhcyBlbmFibGVkLiBUaGUgc2VydmVyIGlzCisgICAgICAgIHJ1biBvbiB0aGUgVUkgcHJv
Y2VzcyBhbmQgY29tbXVuaWNhdGVzIHdpdGggdGhlIHdlYiBwcm9jZXNzIHRocm91Z2gKKyAgICAg
ICAgSVBDIGZvciBlYWNoIG1lc3NhZ2UgYmV0d2VlbiB0aGUgaW5zcGVjdG9yIGNvbnRyb2xsZXIg
YW5kIHRoZSByZW1vdGUgZnJvbnRlbmQuCisKKyAgICAgICAgSW5jbHVkZXMgdGhlIHNlcnZlciBz
cGF3bmluZyBsb2dpYyBmb3IgdGhlIFF0IHBvcnQsIHRoZSBzZXJ2ZXIgaXMKKyAgICAgICAgc3Rh
cnRlZCB0aHJvdWdoIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHNwZWNpZnlpbmcgdGhlIGludGVy
ZmFjZSBhbmQKKyAgICAgICAgcG9ydCB0byBiaW5kIHRoZSBzZXJ2ZXIgdG8sIGJ5IGRlZmF1bHQg
b24gMTI3LjAuMC4xLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6ZW5hYmxlUmVtb3RlSW5zcGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
RnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6c2VuZE1lc3Nh
Z2VUb1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW46
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQv
UXRXZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoaW5pdEluc3BlY3RvclNlcnZlcik6CisgICAg
ICAgIChpbml0V2ViS2l0KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpkZWZhdWx0V0tDb250
ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90
ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVu
ZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRl
bmREaXNjb25uZWN0ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3IuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpoYXNSZW1vdGVGcm9udGVuZENv
bm5lY3RlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkNvbW1vbi52c3Byb3BzOgorCiAyMDExLTEy
LTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+IGFuZCBKb2NlbHluIFR1
cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgV2ViSW5zcGVj
dG9yU2VydmVyIGZvciBXZWJLaXQyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCA5YTA0YWYyMTdm
M2FkYzBlMGE4ZmQ5NzZlMmRkMjk5MjIxYjJkNmNmLi41MjE1M2Y3YTRlZmY0MDJkYWRlYjUxYzUx
NWVjMjBlNzc5NmYyMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtMTcsNiArMTcsNyBAQCBT
RVQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvY3BwIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQXV0aGVudGljYXRp
b24iCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9Eb3dubG9hZHMiCisgICAgIiR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9MYXVuY2hlciIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL1BsdWdp
bnMiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9lZmwiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFt
CmluZGV4IDc1YTA0NzBmNGFjMTA0MmY0MTdiNTE0OTRjNDllZTVjNTgwMjk1M2MuLjE3ZDA4NmVl
MGQ3ODQ5OTczNjRlZGM5NjBiMWNiZDJkMjk3NDU4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBA
IC04OTgsNiArODk4LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJT
SU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFAKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24gXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9JbnNwZWN0b3JTZXJ2ZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAK
aW5kZXggMGEzNjUzMDM5NjEzOTE0MmVhNjNhMWYwMjI4Y2RkYmIyZDgxMmQ5ZS4uYmQ4NGJjYWEx
MzlhZmZhNDg1MjBjMDk2NGRjYjg5MmIwODdhYTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgpAQCAtNzUsNiArNzYsOSBAQCBXZWJJbnNwZWN0b3JQcm94eTo6V2ViSW5zcGVjdG9y
UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogICAgICwgbV9pbnNwZWN0b3JWaWV3KDApCiAgICAg
LCBtX2luc3BlY3RvcldpbmRvdygwKQogI2VuZGlmCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJW
RVIpCisgICAgLCBtX3JlbW90ZUluc3BlY3Rpb25QYWdlSWQoMCkKKyNlbmRpZgogewogfQogCkBA
IC04NCw2ICs4OCwxMSBAQCBXZWJJbnNwZWN0b3JQcm94eTo6fldlYkluc3BlY3RvclByb3h5KCkK
IAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW52YWxpZGF0ZSgpCiB7CisjaWYgRU5BQkxFKElO
U1BFQ1RPUl9TRVJWRVIpCisgICAgaWYgKG1fcmVtb3RlSW5zcGVjdGlvblBhZ2VJZCkKKyAgICAg
ICAgV2ViSW5zcGVjdG9yU2VydmVyOjpzZXJ2ZXIoKS0+dW5yZWdpc3RlclBhZ2UobV9yZW1vdGVJ
bnNwZWN0aW9uUGFnZUlkKTsKKyNlbmRpZgorCiAgICAgbV9wYWdlLT5jbG9zZSgpOwogICAgIGRp
ZENsb3NlKCk7CiAKQEAgLTE5NSw2ICsyMDQsMjggQEAgYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6
aXNJbnNwZWN0b3JQYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkKICAgICByZXR1cm4gcGFnZS0+cGFn
ZUdyb3VwKCkgPT0gaW5zcGVjdG9yUGFnZUdyb3VwKCk7CiB9CiAKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SX1NFUlZFUikKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3BlY3Rp
b24oKQoreworICAgIG1fcmVtb3RlSW5zcGVjdGlvblBhZ2VJZCA9IFdlYkluc3BlY3RvclNlcnZl
cjo6c2VydmVyKCktPnJlZ2lzdGVyUGFnZSh0aGlzKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQoreworICAgIG1fcGFnZS0+cHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCks
IG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpyZW1vdGVG
cm9udGVuZERpc2Nvbm5lY3RlZCgpCit7CisgICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3Rvcjo6UmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpc3BhdGNoTWVzc2Fn
ZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9wYWdl
LT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlzcGF0Y2hNZXNzYWdl
RnJvbVJlbW90ZUZyb250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKyNlbmRp
ZgorCiAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJ
RCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCiB7
CkBAIC0yNjEsNiArMjkyLDE0IEBAIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OnNob3VsZE9wZW5B
dHRhY2hlZCgpCiAgICAgcmV0dXJuIGluc3BlY3RvclBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygp
LT5pbnNwZWN0b3JTdGFydHNBdHRhY2hlZCgpICYmIGNhbkF0dGFjaCgpOwogfQogCisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9TRVJWRVIpCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZW5kTWVzc2Fn
ZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIEFTU0VSVCht
X3JlbW90ZUluc3BlY3Rpb25QYWdlSWQpOworICAgIFdlYkluc3BlY3RvclNlcnZlcjo6c2VydmVy
KCktPnNlbmRNZXNzYWdlT3ZlckNvbm5lY3Rpb24obV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlkLCBt
ZXNzYWdlKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JQcm94eS5oCmluZGV4IGE3MGFjNzAwYzdlY2QwMTJlZmIxZGE2YzVjMGEwYTliMGNhZmQwNTku
LjM2ZDM2NzM3ODA4ZThhZTkzMWJhNDlmMjI4YmE5MzI5MGZiNzJkZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCkBAIC0xMTEsNiArMTExLDEzIEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGlzSW5zcGVjdG9yUGFnZShXZWJQYWdlUHJveHkq
KTsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgIHZvaWQgZW5hYmxlUmVtb3Rl
SW5zcGVjdGlvbigpOworICAgIHZvaWQgcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKTsKKyAgICB2
b2lkIHJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCk7CisgICAgdm9pZCBkaXNwYXRjaE1lc3Nh
Z2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIFdlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSk7CiAKQEAg
LTEzNyw2ICsxNDQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOwogICAg
IHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKTsKIAorI2lmIEVOQUJMRShJ
TlNQRUNUT1JfU0VSVkVSKQorICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CisjZW5kaWYKKwogICAgIGJvb2wgY2FuQXR0YWNoKCk7CiAg
ICAgYm9vbCBzaG91bGRPcGVuQXR0YWNoZWQoKTsKIApAQCAtMTgyLDYgKzE5Myw5IEBAIHByaXZh
dGU6CiAgICAgR3RrV2lkZ2V0KiBtX2luc3BlY3RvclZpZXc7CiAgICAgR3RrV2lkZ2V0KiBtX2lu
c3BlY3RvcldpbmRvdzsKICNlbmRpZgorI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAg
IGludCBtX3JlbW90ZUluc3BlY3Rpb25QYWdlSWQ7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3Bl
Y3RvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3Bl
Y3RvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGExOTQ5ODU4ZTA0MzNkOTg0ZjA3YTE1YTlkMmRi
ZDE2ZjYzMjQ4ZTIuLjJiNjY2MzM2OWNjMDk4NzQ0MjAxN2I3NzlhYmYyYmM2YzdiN2VkYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
bWVzc2FnZXMuaW4KQEAgLTMyLDYgKzMyLDEwIEBAIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclBy
b3h5IHsKICAgICBBdHRhY2goKQogICAgIERldGFjaCgpCiAgICAgU2V0QXR0YWNoZWRXaW5kb3dI
ZWlnaHQodW5zaWduZWQgaGVpZ2h0KQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisg
ICAgU2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKFdURjo6U3RyaW5nIG1lc3NhZ2UpCisjZW5k
aWYKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IDgzZTU4ZjJkODViMWJiMGMwMWU2MmIyYTgzNmQ3N2VlZDUzMjFhYTQuLjVhM2VjM2I1
MmE3NTk3Zjc3N2Q1NjFkMGVkYmRhZDZjYzRlMGY4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zMjcsNiArMzI3LDExIEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCiAgICAgbV9kcmF3aW5nQXJlYSA9IG1fcGFnZUNsaWVu
dC0+Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpOwogICAgIEFTU0VSVChtX2RyYXdpbmdBcmVhKTsK
IAorI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgIGlmIChtX3BhZ2VHcm91cC0+cHJl
ZmVyZW5jZXMoKS0+ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQorICAgICAgICBpbnNwZWN0b3Io
KS0+ZW5hYmxlUmVtb3RlSW5zcGVjdGlvbigpOworI2VuZGlmCisKICAgICBwcm9jZXNzKCktPnNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNyZWF0ZVdlYlBhZ2UobV9wYWdlSUQsIGNyZWF0aW9u
UGFyYW1ldGVycygpKSwgMCk7CiB9CiAKQEAgLTE0NzQsNiArMTQ3OSwxMSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogICAgIGlmICghaXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm47CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBpZiAobV9w
YWdlR3JvdXAtPnByZWZlcmVuY2VzKCktPmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKKyAgICAg
ICAgaW5zcGVjdG9yKCktPmVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKTsKKyNlbmRpZgorCiAgICAg
Ly8gRklYTUU6IEl0IHByb2JhYmx5IG1ha2VzIG1vcmUgc2Vuc2UgdG8gc2VuZCBpbmRpdmlkdWFs
IHByZWZlcmVuY2UgY2hhbmdlcy4KICAgICAvLyBIb3dldmVyLCBXZWJLaXRUZXN0UnVubmVyIGRl
cGVuZHMgb24gZ2V0dGluZyBhIHByZWZlcmVuY2UgY2hhbmdlIG5vdGlmaWNhdGlvbgogICAgIC8v
IGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkIGluIFVJIHByb2Nlc3MsIHNvIHRoYXQgb3ZlcnJpZGVz
IGdldCByZW1vdmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggYzEwNzczYmE5NDU0MGNjZTcyZjM5YmQzMzdkNmJmMGZhYThhZGNlZS4u
NjgyODhmMzI4NjdjZDE5MDgyMTAzOTIwYzUwMTMyMjE5NzQ3ZmU3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCkBAIC01Miw2ICs1Miw3IEBA
CiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eVF0LmgiCiAjaW5jbHVkZSAiV2ViRWRpdENv
bW1hbmRQcm94eS5oIgogI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeVF0LmgiCisjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlRdERlc2t0
b3AuaCIKICNpbmNsdWRlICJXS1N0cmluZ1F0LmgiCiAjaW5jbHVkZSAiV0tVUkxRdC5oIgpAQCAt
ODEsOSArODIsNTQgQEAgUmVmUHRyPFF0RG93bmxvYWRNYW5hZ2VyPiBRdFdlYlBhZ2VQcm94eTo6
c19kb3dubG9hZE1hbmFnZXI7CiAKIHVuc2lnbmVkIFF0V2ViUGFnZVByb3h5OjpzX2RlZmF1bHRQ
YWdlUHJveHlDb3VudCA9IDA7CiAKK3N0YXRpYyB2b2lkIGluaXRJbnNwZWN0b3JTZXJ2ZXIoKQor
eworI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgIFFTdHJpbmcgaW5zcGVjdG9yRW52
ID0gUVN0cmluZzo6ZnJvbUxhdGluMShxZ2V0ZW52KCJRVFdFQktJVF9JTlNQRUNUT1JfU0VSVkVS
IikpOworICAgIGlmICghaW5zcGVjdG9yRW52LmlzRW1wdHkoKSkgeworICAgICAgICBRU3RyaW5n
IGJpbmRBZGRyZXNzID0gUUxhdGluMVN0cmluZygiMTI3LjAuMC4xIik7CisgICAgICAgIFFTdHJp
bmcgcG9ydFN0ciA9IGluc3BlY3RvckVudjsKKyAgICAgICAgaW50IHBvcnQgPSAwOworCisgICAg
ICAgIGludCBwb3J0Q29sb25Qb3MgPSBpbnNwZWN0b3JFbnYubGFzdEluZGV4T2YoJzonKTsKKyAg
ICAgICAgaWYgKHBvcnRDb2xvblBvcyAhPSAtMSkgeworICAgICAgICAgICAgcG9ydFN0ciA9IGlu
c3BlY3RvckVudi5taWQocG9ydENvbG9uUG9zICsgMSk7CisgICAgICAgICAgICBiaW5kQWRkcmVz
cyA9IGluc3BlY3RvckVudi5taWQoMCwgcG9ydENvbG9uUG9zKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICAgICAgcG9ydCA9IHBvcnRTdHIudG9JbnQoJm9rKTsK
KyAgICAgICAgaWYgKCFvaykgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJOb24gbnVtZXJpYyBw
b3J0IGZvciB0aGUgaW5zcGVjdG9yIHNlcnZlciBcIiVzXCIuIEV4YW1wbGVzIG9mIHZhbGlkIGlu
cHV0OiBcIjEyMzQ1XCIgb3IgXCIxOTIuMTY4LjIuMTQ6MTIzNDVcIiAod2l0aCB0aGUgYWRkcmVz
cyBvZiBvbmUgb2YgdGhpcyBob3N0J3MgaW50ZXJmYWNlKS4iLCBxUHJpbnRhYmxlKHBvcnRTdHIp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgc3VjY2Vz
cyA9IFdlYkluc3BlY3RvclNlcnZlcjo6c2VydmVyKCktPmxpc3RlbihiaW5kQWRkcmVzcywgcG9y
dCk7CisgICAgICAgIGlmIChzdWNjZXNzKSB7CisgICAgICAgICAgICBRU3RyaW5nIGluc3BlY3Rv
clNlcnZlclVybCA9IFFTdHJpbmc6OmZyb21MYXRpbjEoImh0dHA6Ly8lMTolMiIpLmFyZyhiaW5k
QWRkcmVzcykuYXJnKHBvcnQpOworICAgICAgICAgICAgcVdhcm5pbmcoIkluc3BlY3RvciBzZXJ2
ZXIgc3RhcnRlZCBzdWNjZXNzZnVsbHkuIFRyeSBwb2ludGluZyBhIFdlYktpdCBicm93c2VyIHRv
ICVzIiwgcVByaW50YWJsZShpbnNwZWN0b3JTZXJ2ZXJVcmwpKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHN0YXJ0IHRoZSBpbnNwZWN0b3Igc2VydmVy
IG9uIGJpbmQgYWRkcmVzcyBcIiVzXCIgYW5kIHBvcnQgXCIlZFwiLiBJbiBjYXNlIG9mIGludmFs
aWQgaW5wdXQsIHRyeSBzb21ldGhpbmcgbGlrZTogXCIxMjM0NVwiIG9yIFwiMTkyLjE2OC4yLjE0
OjEyMzQ1XCIgKHdpdGggdGhlIGFkZHJlc3Mgb2Ygb25lIG9mIHRoaXMgaG9zdCdzIGludGVyZmFj
ZSkuIiwgcVByaW50YWJsZShiaW5kQWRkcmVzcyksIHBvcnQpOworICAgIH0KKyNlbmRpZgorfQor
CitzdGF0aWMgdm9pZCBpbml0V2ViS2l0KCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXpl
ZCA9IGZhbHNlOworICAgIGlmIChpbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aW5pdEluc3BlY3RvclNlcnZlcigpOworICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKK30KKwogUGFz
c1JlZlB0cjxXZWJDb250ZXh0PiBRdFdlYlBhZ2VQcm94eTo6ZGVmYXVsdFdLQ29udGV4dCgpCiB7
CiAgICAgaWYgKCFzX2RlZmF1bHRDb250ZXh0KSB7CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIGJl
IGEgZ29vZCBwbGFjZSB0byBjYWxsIHRoaXMgdW50aWwgd2UgZGVjaWRlIHRvIHN1cHBvcnQgbXVs
dGlwbGUgY29udGV4dHMuCisgICAgICAgIGluaXRXZWJLaXQoKTsKKwogICAgICAgICBzX2RlZmF1
bHRDb250ZXh0ID0gV2ViQ29udGV4dDo6Y3JlYXRlKFN0cmluZygpKTsKICAgICAgICAgc2V0dXBD
b250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQodG9BUEkoc19kZWZhdWx0Q29udGV4dC5nZXQoKSkp
OwogICAgICAgICBzX2Rvd25sb2FkTWFuYWdlciA9IFF0RG93bmxvYWRNYW5hZ2VyOjpjcmVhdGUo
c19kZWZhdWx0Q29udGV4dC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5k
ZXggNDkxZWU1NzQzNzA4YzE0MmJmMGIwMjM2ZWM4NWQ4MjZiOGQzMDA5OS4uYjY4YWM0MDhhOTc4
NjU4M2NiOGU4MGM4YTMxM2IxNTNhMDg3YjEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcApAQCAtNzQsMTAgKzc0LDE5IEBAIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVz
c2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIFdlYkluc3BlY3Rvciog
aW5zcGVjdG9yID0gbV9wYWdlLT5pbnNwZWN0b3IoKTsKICAgICBpZiAoIWluc3BlY3RvcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisgICAg
aWYgKGluc3BlY3Rvci0+aGFzUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKSkgeworICAgICAgICBp
bnNwZWN0b3ItPnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChtZXNzYWdlKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisKICAgICBXZWJQYWdlKiBpbnNwZWN0b3JQYWdl
ID0gaW5zcGVjdG9yLT5pbnNwZWN0b3JQYWdlKCk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQYWdlKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9u
dGVuZFBhZ2UoaW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKSwgbWVzc2FnZSk7CisgICAgaWYgKGlu
c3BlY3RvclBhZ2UpCisgICAgICAgIHJldHVybiBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQ
YWdlKGluc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCksIG1lc3NhZ2UpOworCisgICAgcmV0dXJuIGZh
bHNlOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cGFnZU92ZXJsYXlEZXN0cm95ZWQo
UGFnZU92ZXJsYXkqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmNwcAppbmRleCBlMTM4M2M4MzJiMDIyNzYxODY3YzU1YWE1NjE1MjhkYzc3
OGIyNDA1Li5lYmVlNjhjZjk4ODY4MzE4OGZiMzRlMmJlODY4NzMzNWQ4YWNjYzI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApA
QCAtNDksNiArNDksOSBAQCBXZWJJbnNwZWN0b3I6OldlYkluc3BlY3RvcihXZWJQYWdlKiBwYWdl
KQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3RvclBhZ2UoMCkKICAgICAsIG1f
ZnJvbnRlbmRDbGllbnQoMCkKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICAsIG1f
cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoZmFsc2UpCisjZW5kaWYKIHsKIH0KIApAQCAtMjAyLDYg
KzIwNSwzNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c3RvcFBhZ2VQcm9maWxpbmcoKQogICAgICAg
ICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoZmFsc2UpOwog
fQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCit2b2lkIFdlYkluc3BlY3Rvcjo6c2Vu
ZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBB
U1NFUlQobV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1l
c3NhZ2VUb1JlbW90ZUZyb250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3I6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKK3sKKyAgICBBU1NF
UlQoIW1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOworICAgIC8vIFN3aXRjaGluZyBiZXR3ZWVu
IGluLXByb2Nlc3MgYW5kIHJlbW90ZSBpbnNwZWN0b3JzIGlzbid0IHN1cHBvcnRlZCB5ZXQuCisg
ICAgQVNTRVJUKCFtX2luc3BlY3RvclBhZ2UpOworCisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVuZCgpOworICAgIG1fcmVtb3RlRnJv
bnRlbmRDb25uZWN0ZWQgPSB0cnVlOworfQorCit2b2lkIFdlYkluc3BlY3Rvcjo6cmVtb3RlRnJv
bnRlbmREaXNjb25uZWN0ZWQoKQoreworICAgIEFTU0VSVChtX3JlbW90ZUZyb250ZW5kQ29ubmVj
dGVkKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlz
Y29ubmVjdEZyb250ZW5kKCk7CisgICAgbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCA9IGZhbHNl
OworfQorI2VuZGlmCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5oCmluZGV4IDc5ZmY4MDc0YTFkYzU4Y2NlMTU2NDFkMzFmNzIzMzQzM2U0NDVi
YjkuLmQ1NTM4NjI1ZmQ0MjlkM2U1MWM3NmE1MDVkMTgyZGU2ZTA4Njg4NTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAgLTYxLDYg
KzYxLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0UGFnZVByb2ZpbGluZygpOwogICAgIHZv
aWQgc3RvcFBhZ2VQcm9maWxpbmcoKTsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQor
ICAgIGJvb2wgaGFzUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3Jl
bW90ZUZyb250ZW5kQ29ubmVjdGVkOyB9CisgICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3RlRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZy
b21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgcmVtb3Rl
RnJvbnRlbmRDb25uZWN0ZWQoKTsKKyAgICB2b2lkIHJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVk
KCk7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGF0aWMgdm9pZCBzZXRMb2Nh
bGl6ZWRTdHJpbmdzUGF0aChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgpAQCAtMTAxLDYgKzEwOSw5
IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZSogbV9wYWdlOwogICAgIFdlYlBhZ2UqIG1faW5zcGVj
dG9yUGFnZTsKICAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9mcm9udGVuZENsaWVu
dDsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBib29sIG1fcmVtb3RlRnJvbnRl
bmRDb25uZWN0ZWQ7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3Iu
bWVzc2FnZXMuaW4KaW5kZXggZGMxODRiNjhhY2JlYWU2MTliMWI2MTIyMWNjZGQ1NjU1YjY0ZDc3
OC4uNjM2MmZhYzE3ODA5MzBiZjcyZDljMTMxMDI1NjY4YzAyZTI5MjBjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1l
c3NhZ2VzLmluCkBAIC0zMiw2ICszMiwxMiBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3Igewog
ICAgIFN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCkKICAgICBTdGFydFBhZ2VQcm9maWxpbmcoKQog
ICAgIFN0b3BQYWdlUHJvZmlsaW5nKCkKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQor
ICAgIERpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChXVEY6OlN0cmluZyBtZXNzYWdl
KQorICAgIFJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKKyAgICBSZW1vdGVGcm9udGVuZERpc2Nv
bm5lY3RlZCgpCisjZW5kaWYKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0MkNvbW1vbi52c3Byb3BzIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJD
b21tb24udnNwcm9wcwppbmRleCAxMjMyNGI3ODk1NzZhMzRmY2E5YWYxZWU4Y2MzNjg5MDFiYjVm
ZTk2Li42NjdmMTVkYWQyZjM1ODFhNDU2Y2JmYzFhODUzZjg3MDhiNDU4MWI0IDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNvbW1vbi52c3Byb3BzCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyQ29tbW9uLnZzcHJvcHMKQEAgLTYsNyArNiw3IEBACiAJPgogCTxU
b29sCiAJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM9IiZxdW90OyQoUHJvamVjdERpcikmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLiZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcilcLi5cUGxhdGZvcm1cY2cmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxQbGF0Zm9y
bVxDb3JlSVBDJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cUGx1Z2luUHJvY2VzcyZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFNoYXJlZCZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
XC4uXFNoYXJlZFx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWRcY2YmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWRcQVBJXGMmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxTaGFyZWRcQVBJXGNcY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxT
aGFyZWRcQVBJXGNcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cU2hhcmVkXENvcmVJ
UENTdXBwb3J0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cU2hhcmVkXFBsdWdpbnMmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWRcUGx1Z2luc1xOZXRzY2FwZSZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2VzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
XC4uXFVJUHJvY2Vzc1xBUElcQyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vz
c1xBUElcQ1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcQVBJXGNw
cCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xBUElcd2luJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXEF1dGhlbnRpY2F0aW9uJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXERvd25sb2FkcyZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpXC4uXFVJUHJvY2Vzc1xMYXVuY2hlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFVJUHJvY2Vzc1xQbHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNz
XHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3MmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXFdlYkNvcmVTdXBwb3J0JnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJDb3JlU3VwcG9ydFx3aW4mcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXFdlYlBhZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxXZWJQcm9jZXNzXFdlYlBhZ2Vcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilc
Li5cV2ViUHJvY2Vzc1xJY29uRGF0YWJhc2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxX
ZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2Vi
UHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcRE9NJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilc
Li5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxXZWJQcm9jZXNzXFBsdWdpbnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQ
cm9jZXNzXFBsdWdpbnNcTmV0c2NhcGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQ
cm9jZXNzXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcQXBwbGlj
YXRpb25DYWNoZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcQXV0aGVu
dGljYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXENvb2tpZXMm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXENvb2tpZXNcY2YmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXERvd25sb2FkcyZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcRG93bmxvYWRzXGNmJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcilcLi5cV2ViUHJvY2Vzc1xGdWxsU2NyZWVuJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cilcLi5cV2ViUHJvY2Vzc1xHZW9sb2NhdGlvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFdlYlByb2Nlc3NcS2V5VmFsdWVTdG9yYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5c
V2ViUHJvY2Vzc1xNZWRpYUNhY2hlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJv
Y2Vzc1xSZXNvdXJjZUNhY2hlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXMmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XEluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVk
ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxwcml2YXRlJnF1b3Q7
OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZx
dW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENv
cmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcSmF2YVNjcmlwdENv
cmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVccHJpdmF0ZVxKYXZh
U2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxX
ZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGly
KVxJbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDsiCisJCUFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoUHJvamVjdERpcikmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFBsYXRmb3JtJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcilcLi5cUGxhdGZvcm1cY2cmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxQbGF0Zm9ybVxDb3JlSVBDJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cUGx1Z2lu
UHJvY2VzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFNoYXJlZCZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpXC4uXFNoYXJlZFx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxT
aGFyZWRcY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWRcQVBJXGMmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWRcQVBJXGNcY2YmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxTaGFyZWRcQVBJXGNcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5c
U2hhcmVkXENvcmVJUENTdXBwb3J0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cU2hhcmVk
XFBsdWdpbnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWRcUGx1Z2luc1xOZXRz
Y2FwZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2VzcyZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xBUElcQyZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
XC4uXFVJUHJvY2Vzc1xBUElcQ1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVBy
b2Nlc3NcQVBJXGNwcCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xBUElc
d2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXEF1dGhlbnRpY2F0aW9u
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXERvd25sb2FkcyZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xJbnNwZWN0b3JTZXJ2ZXImcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcTGF1bmNoZXImcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxVSVByb2Nlc3NcUGx1Z2lucyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFVJUHJvY2Vzc1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJDb3JlU3VwcG9ydCZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcV2ViQ29yZVN1cHBvcnRcd2luJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJQYWdlJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJQYWdlXHdpbiZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpXC4uXFdlYlByb2Nlc3NcSWNvbkRhdGFiYXNlJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcilcLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZSZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpXC4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGMmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXERPTSZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpXC4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcd2luJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xQbHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cilcLi5cV2ViUHJvY2Vzc1xQbHVnaW5zXE5ldHNjYXBlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cilcLi5cV2ViUHJvY2Vzc1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9j
ZXNzXEFwcGxpY2F0aW9uQ2FjaGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9j
ZXNzXEF1dGhlbnRpY2F0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vz
c1xDb29raWVzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xDb29raWVz
XGNmJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xEb3dubG9hZHMmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXERvd25sb2Fkc1xjZiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcRnVsbFNjcmVlbiZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcR2VvbG9jYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxXZWJQcm9jZXNzXEtleVZhbHVlU3RvcmFnZSZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpXC4uXFdlYlByb2Nlc3NcTWVkaWFDYWNoZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
XC4uXFdlYlByb2Nlc3NcUmVzb3VyY2VDYWNoZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzJnF1b3Q7OyZxdW90OyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxJbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNE
aXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVccHJp
dmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxwdGhyZWFkcyZx
dW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29y
ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxwcml2YXRlXEph
dmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXEph
dmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXHBy
aXZhdGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExp
YnJhcmllc0RpcilcSW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7IgogCQlQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtXRUJLSVRfRVhQT1JUUztGUkFNRVdPUktf
TkFNRT1XZWJLaXQ7QlVJTERJTkdfV0VCS0lUIgogCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIK
IAkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdoPSJXZWJLaXQyUHJlZml4LmgiCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzVmNGVmZmNlYWJjNTQ5
YjY3ZjE0NDMyODZmNjMwMTdmMDYzMGRlZS4uNmUxMTIxZDEzMDAyNTcyMzJlNDI1OWM2NWZjNWFh
NDA4M2RkYjFlNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTEyLTA1ICBKb2NlbHluIFR1cmNvdHRlICA8am9j
ZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBFbmFibGUgZGV2ZWxvcGVy
IGV4dHJhcyBvbiBwYWdlcyBpbiBNaW5pQnJvd3Nlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRv
dy5xbWw6CisgICAgICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy93ZWJraXQyLnByZjogQWRq
dXN0IHRoZSBpbmNsdWRlIHBhdGguCisKIDIwMTEtMTEtMjMgIFJhcGhhZWwgS3VibyBkYSBDb3N0
YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW0NNYWtlXSBNb3ZlIHRoZSB0b3At
bGV2ZWwgbG9naWMgdG8gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwgYi9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwKaW5kZXggNWNjMTUyYWY0OTdjNTFiYjNiZjQ0OWIx
ZDllZDAyYmMzODNkMTRmYy4uNTAzZWYwYjg0ZGUzY2JjZWJjZDE0ZDZhOGVkNTdkZTEwZTU3ZjJj
YyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1s
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbApAQCAtMTk1
LDYgKzE5NSw5IEBAIFJlY3RhbmdsZSB7CiAgICAgICAgICAgICByaWdodDogcGFyZW50LnJpZ2h0
CiAgICAgICAgICAgICBib3R0b206IHBhcmVudC5ib3R0b20KICAgICAgICAgfQorICAgICAgICBw
cmVmZXJlbmNlcyB7CisgICAgICAgICAgICBkZXZlbG9wZXJFeHRyYXNFbmFibGVkOiB0cnVlCisg
ICAgICAgIH0KIAogICAgICAgICBvblRpdGxlQ2hhbmdlZDogcGFnZVRpdGxlQ2hhbmdlZCh0aXRs
ZSkKICAgICAgICAgb25VcmxDaGFuZ2VkOiB7CmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3Nw
ZWNzL2ZlYXR1cmVzL3dlYmtpdDIucHJmIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy93
ZWJraXQyLnByZgppbmRleCBlNDc2MTA0MmEzNWQ1YjAwYTJjMjU4MDhlNDczNjE1OGM5YjQ2NzZk
Li4zNjczOWRjMTgxYTI1OGNhNzc4ZDVlNjljMzhjNTZhYzZiYTcxODlkIDEwMDY0NAotLS0gYS9U
b29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL3dlYmtpdDIucHJmCisrKyBiL1Rvb2xzL3FtYWtl
L21rc3BlY3MvZmVhdHVyZXMvd2Via2l0Mi5wcmYKQEAgLTM1LDYgKzM1LDggQEAgV0VCS0lUMl9J
TkNMVURFUEFUSCA9IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24gXAog
ICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMgXAorICAgICQkU09V
UkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIgXAorICAgICQkU09VUkNF
X0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvcXQgXAogICAgICQkU09VUkNF
X0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlciBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vz
cy9xdCBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118425</attachid>
            <date>2011-12-08 11:04:26 -0800</date>
            <delta_ts>2012-03-29 11:37:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73094-20111208200411.patch</filename>
            <type>text/plain</type>
            <size>17244</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2ZkMDlmMzgzYjNhNGQy
NjdlYWNhZWY3ZDE5YTg0YTNkNTZmMjQyNi4uM2M0OTc0YWEzYjM1ZWUxN2UwNTNkYzZmMTcyYjc5
Zjc0ODk5NDc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDExLTEyLTA1ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgRW5h
YmxlIGFuZCBjb25uZWN0IHRoZSBXZWJJbnNwZWN0b3JTZXJ2ZXIgd2l0aCBXZWJLaXQyIHBhZ2Vz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwOTQK
KworICAgICAgICBQYWdlcyBhcmUgcmVnaXN0ZXJlZCBhbmQgdW5yZWdpc3RlcmVkIGFzIHRoZXkg
YXJlIGNyZWF0ZWQKKyAgICAgICAgYW5kIGRlc3Ryb3llZCBpZiB0aGV5IGhhdmUgZGV2ZWxvcGVy
IGV4dHJhcyBlbmFibGVkLiBUaGUgc2VydmVyIGlzCisgICAgICAgIHJ1biBvbiB0aGUgVUkgcHJv
Y2VzcyBhbmQgY29tbXVuaWNhdGVzIHdpdGggdGhlIHdlYiBwcm9jZXNzIHRocm91Z2gKKyAgICAg
ICAgSVBDIGZvciBlYWNoIG1lc3NhZ2UgYmV0d2VlbiB0aGUgaW5zcGVjdG9yIGNvbnRyb2xsZXIg
YW5kIHRoZSByZW1vdGUgZnJvbnRlbmQuCisKKyAgICAgICAgSW5jbHVkZXMgdGhlIHNlcnZlciBz
cGF3bmluZyBsb2dpYyBmb3IgdGhlIFF0IHBvcnQsIHRoZSBzZXJ2ZXIgaXMKKyAgICAgICAgc3Rh
cnRlZCB0aHJvdWdoIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHNwZWNpZnlpbmcgdGhlIGludGVy
ZmFjZSBhbmQKKyAgICAgICAgcG9ydCB0byBiaW5kIHRoZSBzZXJ2ZXIgdG8sIGJ5IGRlZmF1bHQg
b24gMTI3LjAuMC4xLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6ZW5hYmxlUmVtb3RlSW5zcGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVt
b3RlRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6c2VuZE1l
c3NhZ2VUb1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
cXQvUXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdEluc3BlY3RvclNlcnZl
cik6CisgICAgICAgIChXZWJLaXQ6OmluaXRXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpRdFdl
YkNvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGll
bnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6V2ViSW5z
cGVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVt
b3RlRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmRpc3BhdGNoTWVz
c2FnZUZyb21SZW1vdGVGcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6
cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6
OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6aGFzUmVt
b3RlRnJvbnRlbmRDb25uZWN0ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3IubWVzc2FnZXMuaW46CisgICAgICAgICogd2luL1dlYktpdDJDb21tb24udnNwcm9w
czoKKwogMjAxMS0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPiBh
bmQgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAg
ICAgIFdlYkluc3BlY3RvclNlcnZlciBmb3IgV2ViS2l0Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDExYTcwZTMxMjQ2NDEzZDJjYWY0
OGQ3OTk4NzkzYmI5N2ZhZmQwNWEuLmE2YjY2NWU5ODZlMTNhZDA3NGVhNDA5ZDEyYWFjMjQ2Y2E0
ZjQ1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5
LmNwcApAQCAtMzYsNiArMzYsOSBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikK
KyNpbmNsdWRlICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKKyNlbmRpZgogI2lmIFBMQVRGT1JNKFdJ
TikKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjZW5kaWYKQEAgLTc1LDYgKzc4LDkgQEAgV2ViSW5z
cGVjdG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKICAgICAs
IG1faW5zcGVjdG9yVmlldygwKQogICAgICwgbV9pbnNwZWN0b3JXaW5kb3coMCkKICNlbmRpZgor
I2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgICwgbV9yZW1vdGVJbnNwZWN0aW9uUGFn
ZUlkKDApCisjZW5kaWYKIHsKIH0KIApAQCAtODQsNiArOTAsMTEgQEAgV2ViSW5zcGVjdG9yUHJv
eHk6On5XZWJJbnNwZWN0b3JQcm94eSgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmludmFs
aWRhdGUoKQogeworI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgIGlmIChtX3JlbW90
ZUluc3BlY3Rpb25QYWdlSWQpCisgICAgICAgIFdlYkluc3BlY3RvclNlcnZlcjo6c2VydmVyKCkt
PnVucmVnaXN0ZXJQYWdlKG1fcmVtb3RlSW5zcGVjdGlvblBhZ2VJZCk7CisjZW5kaWYKKwogICAg
IG1fcGFnZS0+Y2xvc2UoKTsKICAgICBkaWRDbG9zZSgpOwogCkBAIC0xOTUsNiArMjA2LDI4IEBA
IGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmlzSW5zcGVjdG9yUGFnZShXZWJQYWdlUHJveHkqIHBh
Z2UpCiAgICAgcmV0dXJuIHBhZ2UtPnBhZ2VHcm91cCgpID09IGluc3BlY3RvclBhZ2VHcm91cCgp
OwogfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCit2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjplbmFibGVSZW1vdGVJbnNwZWN0aW9uKCkKK3sKKyAgICBtX3JlbW90ZUluc3BlY3Rpb25Q
YWdlSWQgPSBXZWJJbnNwZWN0b3JTZXJ2ZXI6OnNlcnZlcigpLT5yZWdpc3RlclBhZ2UodGhpcyk7
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkK
K3sKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpS
ZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQoreworICAgIG1f
cGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250
ZW5kRGlzY29ubmVjdGVkKCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQoreworICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OkRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChtZXNzYWdlKSwgbV9w
YWdlLT5wYWdlSUQoKSk7Cit9CisjZW5kaWYKKwogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclBy
b3h5IG1lc3NhZ2VzCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdl
KHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIGlu
c3BlY3RvclBhZ2VQYXJhbWV0ZXJzKQogewpAQCAtMjY0LDYgKzI5NywxNCBAQCBib29sIFdlYklu
c3BlY3RvclByb3h5OjpzaG91bGRPcGVuQXR0YWNoZWQoKQogICAgIHJldHVybiBpbnNwZWN0b3JQ
YWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+aW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoKSAmJiBj
YW5BdHRhY2goKTsKIH0KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQordm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlkKTsKKyAgICBX
ZWJJbnNwZWN0b3JTZXJ2ZXI6OnNlcnZlcigpLT5zZW5kTWVzc2FnZU92ZXJDb25uZWN0aW9uKG1f
cmVtb3RlSW5zcGVjdGlvblBhZ2VJZCwgbWVzc2FnZSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCBhNzBhYzcwMGM3ZWNkMDEy
ZWZiMWRhNmM1YzBhMGE5YjBjYWZkMDU5Li4zNmQzNjczNzgwOGU4YWU5MzFiYTQ5ZjIyOGJhOTMy
OTBmYjcyZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVj
dG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuaApAQCAtMTExLDYgKzExMSwxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc0lu
c3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5Kik7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZF
UikKKyAgICB2b2lkIGVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKTsKKyAgICB2b2lkIHJlbW90ZUZy
b250ZW5kQ29ubmVjdGVkKCk7CisgICAgdm9pZCByZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgp
OworICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJJbnNwZWN0b3JQcm94eShX
ZWJQYWdlUHJveHkqIHBhZ2UpOwogCkBAIC0xMzcsNiArMTQ0LDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3Qg
U3RyaW5nJik7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworI2VuZGlmCisK
ICAgICBib29sIGNhbkF0dGFjaCgpOwogICAgIGJvb2wgc2hvdWxkT3BlbkF0dGFjaGVkKCk7CiAK
QEAgLTE4Miw2ICsxOTMsOSBAQCBwcml2YXRlOgogICAgIEd0a1dpZGdldCogbV9pbnNwZWN0b3JW
aWV3OwogICAgIEd0a1dpZGdldCogbV9pbnNwZWN0b3JXaW5kb3c7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBpbnQgbV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlkOwor
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhMTk0
OTg1OGUwNDMzZDk4NGYwN2ExNWE5ZDJkYmQxNmY2MzI0OGUyLi4yYjY2NjMzNjljYzA5ODc0NDIw
MTdiNzc5YWJmMmJjNmM3YjdlZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMiw2ICszMiwxMCBAQCBt
ZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7CiAgICAgQXR0YWNoKCkKICAgICBEZXRhY2go
KQogICAgIFNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKKworI2lmIEVO
QUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgIFNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChX
VEY6OlN0cmluZyBtZXNzYWdlKQorI2VuZGlmCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiOTc3ZDg4ZWYwMzNkNWY2NzQwZGU0MTQ2
OTUyYzUzMDNiMjNhODM0Li41OGZlYTAxYTA1M2E4NGU3NTRlYjI4NzkxZDVlYzZmNzY3NDg0Yjdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzI4LDYg
KzMyOCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogICAgIG1f
ZHJhd2luZ0FyZWEgPSBtX3BhZ2VDbGllbnQtPmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKTsKICAg
ICBBU1NFUlQobV9kcmF3aW5nQXJlYSk7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikK
KyAgICBpZiAobV9wYWdlR3JvdXAtPnByZWZlcmVuY2VzKCktPmRldmVsb3BlckV4dHJhc0VuYWJs
ZWQoKSkKKyAgICAgICAgaW5zcGVjdG9yKCktPmVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKTsKKyNl
bmRpZgorCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDcmVhdGVX
ZWJQYWdlKG1fcGFnZUlELCBjcmVhdGlvblBhcmFtZXRlcnMoKSksIDApOwogfQogCkBAIC0xNDg5
LDYgKzE0OTQsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkK
ICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9TRVJWRVIpCisgICAgaWYgKG1fcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLT5kZXZlbG9w
ZXJFeHRyYXNFbmFibGVkKCkpCisgICAgICAgIGluc3BlY3RvcigpLT5lbmFibGVSZW1vdGVJbnNw
ZWN0aW9uKCk7CisjZW5kaWYKKwogICAgIC8vIEZJWE1FOiBJdCBwcm9iYWJseSBtYWtlcyBtb3Jl
IHNlbnNlIHRvIHNlbmQgaW5kaXZpZHVhbCBwcmVmZXJlbmNlIGNoYW5nZXMuCiAgICAgLy8gSG93
ZXZlciwgV2ViS2l0VGVzdFJ1bm5lciBkZXBlbmRzIG9uIGdldHRpbmcgYSBwcmVmZXJlbmNlIGNo
YW5nZSBub3RpZmljYXRpb24KICAgICAvLyBldmVuIGlmIG5vdGhpbmcgY2hhbmdlZCBpbiBVSSBw
cm9jZXNzLCBzbyB0aGF0IG92ZXJyaWRlcyBnZXQgcmVtb3ZlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5jcHAKaW5kZXggYTFmZjFkMjBkMWUwYmU0YjA0YmM1
MGJkMTczNzE5MTVmNTcwMThhYy4uMTI4YjYwNTVmNTVmNmE0MjY0ZjAxN2MyMmExOGZiZDEzNzk1
YTQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5jcHAK
QEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJRdERvd25sb2FkTWFuYWdlci5oIgogI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJJ
bnNwZWN0b3JTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxX
S0FycmF5Lmg+CiAjaW5jbHVkZSA8V0tQYWdlLmg+CkBAIC0zNSw2ICszNiw0NiBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogUXRXZWJDb250ZXh0KiBRdFdlYkNvbnRleHQ6OnNfZGVmYXVsdENvbnRl
eHQgPSAwOwogCitzdGF0aWMgdm9pZCBpbml0SW5zcGVjdG9yU2VydmVyKCkKK3sKKyAgICBRU3Ry
aW5nIGluc3BlY3RvckVudiA9IFFTdHJpbmc6OmZyb21MYXRpbjEocWdldGVudigiUVRXRUJLSVRf
SU5TUEVDVE9SX1NFUlZFUiIpKTsKKyAgICBpZiAoIWluc3BlY3RvckVudi5pc0VtcHR5KCkpIHsK
KyAgICAgICAgUVN0cmluZyBiaW5kQWRkcmVzcyA9IFFMYXRpbjFTdHJpbmcoIjEyNy4wLjAuMSIp
OworICAgICAgICBRU3RyaW5nIHBvcnRTdHIgPSBpbnNwZWN0b3JFbnY7CisgICAgICAgIGludCBw
b3J0ID0gMDsKKworICAgICAgICBpbnQgcG9ydENvbG9uUG9zID0gaW5zcGVjdG9yRW52Lmxhc3RJ
bmRleE9mKCc6Jyk7CisgICAgICAgIGlmIChwb3J0Q29sb25Qb3MgIT0gLTEpIHsKKyAgICAgICAg
ICAgIHBvcnRTdHIgPSBpbnNwZWN0b3JFbnYubWlkKHBvcnRDb2xvblBvcyArIDEpOworICAgICAg
ICAgICAgYmluZEFkZHJlc3MgPSBpbnNwZWN0b3JFbnYubWlkKDAsIHBvcnRDb2xvblBvcyk7Cisg
ICAgICAgIH0KKworICAgICAgICBib29sIG9rID0gZmFsc2U7CisgICAgICAgIHBvcnQgPSBwb3J0
U3RyLnRvSW50KCZvayk7CisgICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIExPR19FUlJP
UigiTm9uIG51bWVyaWMgcG9ydCBmb3IgdGhlIGluc3BlY3RvciBzZXJ2ZXIgXCIlc1wiLiBFeGFt
cGxlcyBvZiB2YWxpZCBpbnB1dDogXCIxMjM0NVwiIG9yIFwiMTkyLjE2OC4yLjE0OjEyMzQ1XCIg
KHdpdGggdGhlIGFkZHJlc3Mgb2Ygb25lIG9mIHRoaXMgaG9zdCdzIGludGVyZmFjZSkuIiwgcVBy
aW50YWJsZShwb3J0U3RyKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBib29sIHN1Y2Nlc3MgPSBXZWJJbnNwZWN0b3JTZXJ2ZXI6OnNlcnZlcigpLT5saXN0ZW4o
YmluZEFkZHJlc3MsIHBvcnQpOworICAgICAgICBpZiAoc3VjY2VzcykgeworICAgICAgICAgICAg
UVN0cmluZyBpbnNwZWN0b3JTZXJ2ZXJVcmwgPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJodHRwOi8v
JTE6JTIiKS5hcmcoYmluZEFkZHJlc3MpLmFyZyhwb3J0KTsKKyAgICAgICAgICAgIHFXYXJuaW5n
KCJJbnNwZWN0b3Igc2VydmVyIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LiBUcnkgcG9pbnRpbmcgYSBX
ZWJLaXQgYnJvd3NlciB0byAlcyIsIHFQcmludGFibGUoaW5zcGVjdG9yU2VydmVyVXJsKSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBzdGFydCB0aGUg
aW5zcGVjdG9yIHNlcnZlciBvbiBiaW5kIGFkZHJlc3MgXCIlc1wiIGFuZCBwb3J0IFwiJWRcIi4g
SW4gY2FzZSBvZiBpbnZhbGlkIGlucHV0LCB0cnkgc29tZXRoaW5nIGxpa2U6IFwiMTIzNDVcIiBv
ciBcIjE5Mi4xNjguMi4xNDoxMjM0NVwiICh3aXRoIHRoZSBhZGRyZXNzIG9mIG9uZSBvZiB0aGlz
IGhvc3QncyBpbnRlcmZhY2UpLiIsIHFQcmludGFibGUoYmluZEFkZHJlc3MpLCBwb3J0KTsKKyAg
ICB9Cit9CisKK3N0YXRpYyB2b2lkIGluaXRXZWJLaXQoKQoreworICAgIHN0YXRpYyBib29sIGlu
aXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKGluaXRpYWxpemVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBpbml0SW5zcGVjdG9yU2VydmVyKCk7CisgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwor
fQorCiBRdFdlYkNvbnRleHQ6OlF0V2ViQ29udGV4dChXZWJDb250ZXh0KiBjb250ZXh0KQogICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCiB7CkBAIC00OSw2ICs5MCw3IEBAIFF0V2ViQ29udGV4dDo6
flF0V2ViQ29udGV4dCgpCiAvLyBVc2VkIG9ubHkgYnkgV2ViS2l0VGVzdFJ1bm5lci4gSXQgYXZv
aWRzIGNhbGxpbmcgaW5pdGlhbGl6ZSgpLCBzbyB0aGF0IHdlIGRvbid0IHJlZ2lzdGVyIGFueSBj
bGllbnRzLgogUGFzc1JlZlB0cjxRdFdlYkNvbnRleHQ+IFF0V2ViQ29udGV4dDo6Y3JlYXRlKFdl
YkNvbnRleHQqIGNvbnRleHQpCiB7CisgICAgaW5pdFdlYktpdCgpOwogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUXRXZWJDb250ZXh0KGNvbnRleHQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwCmluZGV4IGVhMTVjN2Y5MzIyOWFhN2NmY2U2ZGI2YWMzY2I5MWRiNTUyZDRlNjIu
LjY1MTkxZWUxMzg4ZjRkMDAxOWE2ZjQ5NWU4ZDQ3ZDhkNDA4NWE0YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5jcHAKQEAgLTgxLDEwICs4MSwxOSBAQCBib29sIFdlYkluc3BlY3RvckNs
aWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBX
ZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IG1fcGFnZS0+aW5zcGVjdG9yKCk7CiAgICAgaWYgKCFp
bnNwZWN0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
U0VSVkVSKQorICAgIGlmIChpbnNwZWN0b3ItPmhhc1JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkp
IHsKKyAgICAgICAgaW5zcGVjdG9yLT5zZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQobWVzc2Fn
ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorCiAgICAgV2ViUGFnZSog
aW5zcGVjdG9yUGFnZSA9IGluc3BlY3Rvci0+aW5zcGVjdG9yUGFnZSgpOwotICAgIGlmICghaW5z
cGVjdG9yUGFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBkb0Rpc3BhdGNo
TWVzc2FnZU9uRnJvbnRlbmRQYWdlKGluc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCksIG1lc3NhZ2Up
OworICAgIGlmIChpbnNwZWN0b3JQYWdlKQorICAgICAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3Nh
Z2VPbkZyb250ZW5kUGFnZShpbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLCBtZXNzYWdlKTsKKwor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnBhZ2VPdmVy
bGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggZTEzODNjODMyYjAyMjc2MTg2N2M1
NWFhNTYxNTI4ZGM3NzhiMjQwNS4uZWJlZTY4Y2Y5ODg2ODMxODhmYjM0ZTJiZTg2ODczMzVkOGFj
Y2MyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5jcHAKQEAgLTQ5LDYgKzQ5LDkgQEAgV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3Io
V2ViUGFnZSogcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9pbnNwZWN0b3JQYWdl
KDApCiAgICAgLCBtX2Zyb250ZW5kQ2xpZW50KDApCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJW
RVIpCisgICAgLCBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKGZhbHNlKQorI2VuZGlmCiB7CiB9
CiAKQEAgLTIwMiw2ICsyMDUsMzcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BQYWdlUHJvZmls
aW5nKCkKICAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0VGltZWxpbmVQcm9maWxpbmdFbmFi
bGVkKGZhbHNlKTsKIH0KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQordm9pZCBXZWJJ
bnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCit7CisgICAgQVNTRVJUKG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOworICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6OlNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdl
SUQoKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1fcGFnZS0+Y29yZVBhZ2Uo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVz
c2FnZSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCgp
Cit7CisgICAgQVNTRVJUKCFtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKTsKKyAgICAvLyBTd2l0
Y2hpbmcgYmV0d2VlbiBpbi1wcm9jZXNzIGFuZCByZW1vdGUgaW5zcGVjdG9ycyBpc24ndCBzdXBw
b3J0ZWQgeWV0LgorICAgIEFTU0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKKworICAgIG1fcGFnZS0+
Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25uZWN0RnJvbnRlbmQoKTsKKyAg
ICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gdHJ1ZTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3I6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKK3sKKyAgICBBU1NFUlQobV9yZW1vdGVG
cm9udGVuZENvbm5lY3RlZCk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmRpc2Nvbm5lY3RGcm9udGVuZCgpOworICAgIG1fcmVtb3RlRnJvbnRlbmRDb25u
ZWN0ZWQgPSBmYWxzZTsKK30KKyNlbmRpZgorCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAppbmRleCA3OWZmODA3NGExZGM1OGNjZTE1NjQxZDMx
ZjcyMzM0MzNlNDQ1YmI5Li5kNTUzODYyNWZkNDI5ZDNlNTFjNzZhNTA1ZDE4MmRlNmUwODY4ODU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ci5oCkBAIC02MSw2ICs2MSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFBhZ2VQcm9maWxp
bmcoKTsKICAgICB2b2lkIHN0b3BQYWdlUHJvZmlsaW5nKCk7CiAKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SX1NFUlZFUikKKyAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZDsgfQorICAgIHZvaWQgc2VuZE1lc3Nh
Z2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBkaXNw
YXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAg
ICB2b2lkIHJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCk7CisgICAgdm9pZCByZW1vdGVGcm9udGVu
ZERpc2Nvbm5lY3RlZCgpOworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3RhdGlj
IHZvaWQgc2V0TG9jYWxpemVkU3RyaW5nc1BhdGgoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKQEAg
LTEwMSw2ICsxMDksOSBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2UqIG1fcGFnZTsKICAgICBXZWJQ
YWdlKiBtX2luc3BlY3RvclBhZ2U7CiAgICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1f
ZnJvbnRlbmRDbGllbnQ7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisgICAgYm9vbCBt
X3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3IubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCmluZGV4IGRjMTg0YjY4YWNiZWFlNjE5YjFiNjEyMjFj
Y2RkNTY1NWI2NGQ3NzguLjYzNjJmYWMxNzgwOTMwYmY3MmQ5YzEzMTAyNTY2OGMwMmUyOTIwYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3IubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5tZXNzYWdlcy5pbgpAQCAtMzIsNiArMzIsMTIgQEAgbWVzc2FnZXMgLT4gV2Vi
SW5zcGVjdG9yIHsKICAgICBTdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpCiAgICAgU3RhcnRQYWdl
UHJvZmlsaW5nKCkKICAgICBTdG9wUGFnZVByb2ZpbGluZygpCisKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SX1NFUlZFUikKKyAgICBEaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoV1RGOjpT
dHJpbmcgbWVzc2FnZSkKKyAgICBSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCisgICAgUmVtb3Rl
RnJvbnRlbmREaXNjb25uZWN0ZWQoKQorI2VuZGlmCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMxNDZiMzE2NWRiZWRmMmY0
YWM3MTdhYWRhMDQzYjZiYTdhZDdkN2IuLjkxMzAwZTNkMzE0ZWU0NThmNThmMTk5ODIyYjE0ZDM5
MDdhZDYyMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMi0wNSAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2Vs
eW4udHVyY290dGVAbm9raWEuY29tPgorCisgICAgICAgIFtRdF0gRW5hYmxlIGRldmVsb3BlciBl
eHRyYXMgb24gcGFnZXMgaW4gTWluaUJyb3dzZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzA5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cu
cW1sOgorICAgICAgICAqIHFtYWtlL21rc3BlY3MvZmVhdHVyZXMvd2Via2l0Mi5wcmY6IEFkanVz
dCB0aGUgaW5jbHVkZSBwYXRoLgorCiAyMDExLTEyLTA3ICBUb20gWmFrcmFqc2VrICA8dG9tekBj
b2RlYXVyb3JhLm9yZz4KIAogICAgICAgICBNb3ZlZCBteXNlbGYgdG8gdGhlIGNvbW1pdHRlcnMg
bGlzdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93
LnFtbCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbAppbmRleCAw
NDgwYTI2NWExZGE3ZDRjOGYzN2EzMmFmZGQ3MGYwYjZjZjlkYWFmLi4wMWUwNTZkNjRhNTJkZWM4
ODgxMWQxMjJhMTdjMTNjNjQ4ZDZjNzM3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9x
dC9xbWwvQnJvd3NlcldpbmRvdy5xbWwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jy
b3dzZXJXaW5kb3cucW1sCkBAIC0yMjIsNiArMjIyLDkgQEAgUmVjdGFuZ2xlIHsKICAgICAgICAg
ICAgIHJpZ2h0OiBwYXJlbnQucmlnaHQKICAgICAgICAgICAgIGJvdHRvbTogcGFyZW50LmJvdHRv
bQogICAgICAgICB9CisgICAgICAgIHByZWZlcmVuY2VzIHsKKyAgICAgICAgICAgIGRldmVsb3Bl
ckV4dHJhc0VuYWJsZWQ6IHRydWUKKyAgICAgICAgfQogCiAgICAgICAgIG9uVGl0bGVDaGFuZ2Vk
OiBwYWdlVGl0bGVDaGFuZ2VkKHRpdGxlKQogICAgICAgICBvblVybENoYW5nZWQ6IHsKZGlmZiAt
LWdpdCBhL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvd2Via2l0Mi5wcmYgYi9Ub29scy9x
bWFrZS9ta3NwZWNzL2ZlYXR1cmVzL3dlYmtpdDIucHJmCmluZGV4IGU3ODM0YzNhMGRmMzIwMDQ3
MGYyMDFjZGZhZjA4Yjk4OGE5M2U4NjQuLmJlODlhNDVhYjU0ODc4ZWIzOWJlYzNlY2Y3MWE1YTIy
YjRkYjljZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvd2Via2l0
Mi5wcmYKKysrIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy93ZWJraXQyLnByZgpAQCAt
MzUsNiArMzUsOCBAQCBXRUJLSVQyX0lOQ0xVREVQQVRIID0gXAogICAgICQkU09VUkNFX0RJUi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRoZW50aWNhdGlvbiBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNz
L0Rvd25sb2FkcyBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3Rv
clNlcnZlciBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9xdCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyIFwK
ICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucyBcCiAgICAgJCRTT1VS
Q0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL3F0IFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134629</attachid>
            <date>2012-03-29 11:38:12 -0700</date>
            <delta_ts>2012-04-02 07:46:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73094-20120329203603.patch</filename>
            <type>text/plain</type>
            <size>16790</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWEyOWM4OGIwNGI2ZTI3
ZjMyNGY5YTAwMzQ2NjVhZjMwY2UwOTNlYi4uMjYzMmFmMmYxZTk5ZjUxZmI2NmNiYmE4NDc4YmQx
NGJmMzkwZThmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAzLTI5ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgRW5h
YmxlIGFuZCBjb25uZWN0IHRoZSBXZWJJbnNwZWN0b3JTZXJ2ZXIgd2l0aCBXZWJLaXQyIHBhZ2Vz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwOTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYWdlcyBh
cmUgcmVnaXN0ZXJlZCBhbmQgdW5yZWdpc3RlcmVkIGFzIHRoZXkgYXJlIGNyZWF0ZWQKKyAgICAg
ICAgYW5kIGRlc3Ryb3llZCBpZiB0aGV5IGhhdmUgZGV2ZWxvcGVyIGV4dHJhcyBlbmFibGVkLiBU
aGUgc2VydmVyIGlzCisgICAgICAgIHJ1biBvbiB0aGUgVUkgcHJvY2VzcyBhbmQgY29tbXVuaWNh
dGVzIHdpdGggdGhlIHdlYiBwcm9jZXNzIHRocm91Z2gKKyAgICAgICAgSVBDIGZvciBlYWNoIG1l
c3NhZ2UgYmV0d2VlbiB0aGUgaW5zcGVjdG9yIGNvbnRyb2xsZXIgYW5kIHRoZSByZW1vdGUgZnJv
bnRlbmQuCisKKyAgICAgICAgSW5jbHVkZXMgdGhlIHNlcnZlciBzcGF3bmluZyBsb2dpYyBmb3Ig
dGhlIFF0IHBvcnQsIHRoZSBzZXJ2ZXIgaXMKKyAgICAgICAgc3RhcnRlZCB0aHJvdWdoIGFuIGVu
dmlyb25tZW50IHZhcmlhYmxlIHNwZWNpZnlpbmcgdGhlIGludGVyZmFjZSBhbmQKKyAgICAgICAg
cG9ydCB0byBiaW5kIHRoZSBzZXJ2ZXIgdG8sIGJ5IGRlZmF1bHQgb24gMTI3LjAuMC4xLgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3BlY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmRDb25u
ZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRl
bmREaXNjb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlz
cGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgIChXZWJJbnNwZWN0b3JQcm94eSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpwcmVmZXJlbmNlc0RpZENoYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2Vi
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmluaXRJbnNwZWN0b3JTZXJ2ZXIpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6aW5pdFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OlF0V2ViQ29udGV4dDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yOjpXZWJJbnNwZWN0b3IpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3I6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmg6CisgICAgICAg
IChXZWJJbnNwZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6Omhhc1JlbW90
ZUZyb250ZW5kQ29ubmVjdGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yLm1lc3NhZ2VzLmluOgorCiAyMDEyLTAzLTI5ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2Vw
ZWNrQHdlYmtpdC5vcmc+IGFuZCBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBu
b2tpYS5jb20+CiAKICAgICAgICAgV2ViSW5zcGVjdG9yU2VydmVyIGZvciBXZWJLaXQyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggNmJm
N2E2YmQ5YjdlYTI2OTY0MWUxMGVhNzcyMzZiZDliNjM4MjQwZC4uOWVmMDljNTkxNmEwMjRlM2Qx
NjMwZDAyODNlMTU2MDk4NDFlNGY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0zNyw2ICszNyw5IEBACiAjaW5jbHVkZSAiV2ViUHJl
ZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKIAorI2lmIEVOQUJMRShJ
TlNQRUNUT1JfU0VSVkVSKQorI2luY2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgorI2VuZGlm
CiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNlbmRpZgpAQCAtNzks
NiArODIsOSBAQCBXZWJJbnNwZWN0b3JQcm94eTo6V2ViSW5zcGVjdG9yUHJveHkoV2ViUGFnZVBy
b3h5KiBwYWdlKQogICAgICwgbV9pbnNwZWN0b3JWaWV3KDApCiAgICAgLCBtX2luc3BlY3Rvcldp
bmRvdygwKQogI2VuZGlmCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisgICAgLCBtX3Jl
bW90ZUluc3BlY3Rpb25QYWdlSWQoMCkKKyNlbmRpZgogewogfQogCkBAIC04OCw2ICs5NCwxMSBA
QCBXZWJJbnNwZWN0b3JQcm94eTo6fldlYkluc3BlY3RvclByb3h5KCkKIAogdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6aW52YWxpZGF0ZSgpCiB7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIp
CisgICAgaWYgKG1fcmVtb3RlSW5zcGVjdGlvblBhZ2VJZCkKKyAgICAgICAgV2ViSW5zcGVjdG9y
U2VydmVyOjpzZXJ2ZXIoKS0+dW5yZWdpc3RlclBhZ2UobV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlk
KTsKKyNlbmRpZgorCiAgICAgbV9wYWdlLT5jbG9zZSgpOwogICAgIGRpZENsb3NlKCk7CiAKQEAg
LTIyNCw2ICsyMzUsMjkgQEAgYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6aXNJbnNwZWN0b3JQYWdl
KFdlYlBhZ2VQcm94eSogcGFnZSkKICAgICByZXR1cm4gcGFnZS0+cGFnZUdyb3VwKCkgPT0gaW5z
cGVjdG9yUGFnZUdyb3VwKCk7CiB9CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKK3Zv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKQoreworICAgIGlm
ICghbV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlkKQorICAgICAgICBtX3JlbW90ZUluc3BlY3Rpb25Q
YWdlSWQgPSBXZWJJbnNwZWN0b3JTZXJ2ZXI6OnNlcnZlcigpLT5yZWdpc3RlclBhZ2UodGhpcyk7
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkK
K3sKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpS
ZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQoreworICAgIG1f
cGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250
ZW5kRGlzY29ubmVjdGVkKCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQoreworICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OkRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChtZXNzYWdlKSwgbV9w
YWdlLT5wYWdlSUQoKSk7Cit9CisjZW5kaWYKKwogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclBy
b3h5IG1lc3NhZ2VzCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdl
KHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIGlu
c3BlY3RvclBhZ2VQYXJhbWV0ZXJzKQogewpAQCAtMzAzLDYgKzMzNywxNCBAQCBib29sIFdlYklu
c3BlY3RvclByb3h5OjpzaG91bGRPcGVuQXR0YWNoZWQoKQogICAgIHJldHVybiBpbnNwZWN0b3JQ
YWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+aW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoKSAmJiBj
YW5BdHRhY2goKTsKIH0KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQordm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlkKTsKKyAgICBX
ZWJJbnNwZWN0b3JTZXJ2ZXI6OnNlcnZlcigpLT5zZW5kTWVzc2FnZU92ZXJDb25uZWN0aW9uKG1f
cmVtb3RlSW5zcGVjdGlvblBhZ2VJZCwgbWVzc2FnZSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCA4ODRiNjY2MjE5ODVlNmI0
YTRiNmU1ZTMyOWQzMTkxZTQ3Y2MyNzAwLi4yOGNkZDBiYjIxYzE3MDA5NWRmMGM4Y2RlNTQ5ZjQ3
MGE0MGUzYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVj
dG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuaApAQCAtMTE5LDYgKzExOSwxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc0lu
c3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5Kik7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZF
UikKKyAgICB2b2lkIGVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKTsKKyAgICB2b2lkIHJlbW90ZUZy
b250ZW5kQ29ubmVjdGVkKCk7CisgICAgdm9pZCByZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgp
OworICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJJbnNwZWN0b3JQcm94eShX
ZWJQYWdlUHJveHkqIHBhZ2UpOwogCkBAIC0xNDYsNiArMTUzLDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3Qg
U3RyaW5nJik7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworI2VuZGlmCisK
ICAgICBib29sIGNhbkF0dGFjaCgpOwogICAgIGJvb2wgc2hvdWxkT3BlbkF0dGFjaGVkKCk7CiAK
QEAgLTE5NCw2ICsyMDUsOSBAQCBwcml2YXRlOgogICAgIEd0a1dpZGdldCogbV9pbnNwZWN0b3JW
aWV3OwogICAgIEd0a1dpZGdldCogbV9pbnNwZWN0b3JXaW5kb3c7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBpbnQgbV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlkOwor
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhMTk0
OTg1OGUwNDMzZDk4NGYwN2ExNWE5ZDJkYmQxNmY2MzI0OGUyLi4yYjY2NjMzNjljYzA5ODc0NDIw
MTdiNzc5YWJmMmJjNmM3YjdlZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMiw2ICszMiwxMCBAQCBt
ZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7CiAgICAgQXR0YWNoKCkKICAgICBEZXRhY2go
KQogICAgIFNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKKworI2lmIEVO
QUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgIFNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChX
VEY6OlN0cmluZyBtZXNzYWdlKQorI2VuZGlmCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1ODQyMzdmZjkyZWI5YTMxM2UyY2I0Y2M0
NWNiYjYwMTYyOWRlMzViLi4xZmVmYTlmZjcwMGQ1MDhkMjlmOTE3N2MzYzQ1NjZkMGZmMGQwMzNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzM5LDYg
KzMzOSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogICAgIG1f
ZHJhd2luZ0FyZWEgPSBtX3BhZ2VDbGllbnQtPmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKTsKICAg
ICBBU1NFUlQobV9kcmF3aW5nQXJlYSk7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikK
KyAgICBpZiAobV9wYWdlR3JvdXAtPnByZWZlcmVuY2VzKCktPmRldmVsb3BlckV4dHJhc0VuYWJs
ZWQoKSkKKyAgICAgICAgaW5zcGVjdG9yKCktPmVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKTsKKyNl
bmRpZgorCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDcmVhdGVX
ZWJQYWdlKG1fcGFnZUlELCBjcmVhdGlvblBhcmFtZXRlcnMoKSksIDApOwogfQogCkBAIC0xNTcx
LDYgKzE1NzYsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkK
ICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9TRVJWRVIpCisgICAgaWYgKG1fcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLT5kZXZlbG9w
ZXJFeHRyYXNFbmFibGVkKCkpCisgICAgICAgIGluc3BlY3RvcigpLT5lbmFibGVSZW1vdGVJbnNw
ZWN0aW9uKCk7CisjZW5kaWYKKwogICAgIC8vIEZJWE1FOiBJdCBwcm9iYWJseSBtYWtlcyBtb3Jl
IHNlbnNlIHRvIHNlbmQgaW5kaXZpZHVhbCBwcmVmZXJlbmNlIGNoYW5nZXMuCiAgICAgLy8gSG93
ZXZlciwgV2ViS2l0VGVzdFJ1bm5lciBkZXBlbmRzIG9uIGdldHRpbmcgYSBwcmVmZXJlbmNlIGNo
YW5nZSBub3RpZmljYXRpb24KICAgICAvLyBldmVuIGlmIG5vdGhpbmcgY2hhbmdlZCBpbiBVSSBw
cm9jZXNzLCBzbyB0aGF0IG92ZXJyaWRlcyBnZXQgcmVtb3ZlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5jcHAKaW5kZXggYTgwMGZlZjE1MDIwNDVkNTZkNTIy
MmNkMjY3MGM4YzFlNDZjYjQ3YS4uMWY0YTkxZmMxNGYwMzA2YTQ5YTQyNzgwNDE5ODg5ZWNiMDQw
NDcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJRdFdlYkljb25EYXRhYmFzZUNsaWVudC5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNs
dWRlIDxXS0FycmF5Lmg+CiAjaW5jbHVkZSA8V0tQYWdlLmg+CkBAIC00NCw2ICs0NSw0NiBAQCBz
dGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgUXRXZWJDb250ZXh0Kj4gY29udGV4dE1hcDsKIAogUXRX
ZWJDb250ZXh0KiBRdFdlYkNvbnRleHQ6OnNfZGVmYXVsdENvbnRleHQgPSAwOwogCitzdGF0aWMg
dm9pZCBpbml0SW5zcGVjdG9yU2VydmVyKCkKK3sKKyAgICBRU3RyaW5nIGluc3BlY3RvckVudiA9
IFFTdHJpbmc6OmZyb21MYXRpbjEocWdldGVudigiUVRXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIp
KTsKKyAgICBpZiAoIWluc3BlY3RvckVudi5pc0VtcHR5KCkpIHsKKyAgICAgICAgUVN0cmluZyBi
aW5kQWRkcmVzcyA9IFFMYXRpbjFTdHJpbmcoIjEyNy4wLjAuMSIpOworICAgICAgICBRU3RyaW5n
IHBvcnRTdHIgPSBpbnNwZWN0b3JFbnY7CisgICAgICAgIGludCBwb3J0ID0gMDsKKworICAgICAg
ICBpbnQgcG9ydENvbG9uUG9zID0gaW5zcGVjdG9yRW52Lmxhc3RJbmRleE9mKCc6Jyk7CisgICAg
ICAgIGlmIChwb3J0Q29sb25Qb3MgIT0gLTEpIHsKKyAgICAgICAgICAgIHBvcnRTdHIgPSBpbnNw
ZWN0b3JFbnYubWlkKHBvcnRDb2xvblBvcyArIDEpOworICAgICAgICAgICAgYmluZEFkZHJlc3Mg
PSBpbnNwZWN0b3JFbnYubWlkKDAsIHBvcnRDb2xvblBvcyk7CisgICAgICAgIH0KKworICAgICAg
ICBib29sIG9rID0gZmFsc2U7CisgICAgICAgIHBvcnQgPSBwb3J0U3RyLnRvSW50KCZvayk7Cisg
ICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiTm9uIG51bWVyaWMgcG9y
dCBmb3IgdGhlIGluc3BlY3RvciBzZXJ2ZXIgXCIlc1wiLiBFeGFtcGxlcyBvZiB2YWxpZCBpbnB1
dDogXCIxMjM0NVwiIG9yIFwiMTkyLjE2OC4yLjE0OjEyMzQ1XCIgKHdpdGggdGhlIGFkZHJlc3Mg
b2Ygb25lIG9mIHRoaXMgaG9zdCdzIGludGVyZmFjZSkuIiwgcVByaW50YWJsZShwb3J0U3RyKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBib29sIHN1Y2Nlc3Mg
PSBXZWJJbnNwZWN0b3JTZXJ2ZXI6OnNlcnZlcigpLT5saXN0ZW4oYmluZEFkZHJlc3MsIHBvcnQp
OworICAgICAgICBpZiAoc3VjY2VzcykgeworICAgICAgICAgICAgUVN0cmluZyBpbnNwZWN0b3JT
ZXJ2ZXJVcmwgPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJodHRwOi8vJTE6JTIiKS5hcmcoYmluZEFk
ZHJlc3MpLmFyZyhwb3J0KTsKKyAgICAgICAgICAgIHFXYXJuaW5nKCJJbnNwZWN0b3Igc2VydmVy
IHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LiBUcnkgcG9pbnRpbmcgYSBXZWJLaXQgYnJvd3NlciB0byAl
cyIsIHFQcmludGFibGUoaW5zcGVjdG9yU2VydmVyVXJsKSk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBzdGFydCB0aGUgaW5zcGVjdG9yIHNlcnZlciBv
biBiaW5kIGFkZHJlc3MgXCIlc1wiIGFuZCBwb3J0IFwiJWRcIi4gSW4gY2FzZSBvZiBpbnZhbGlk
IGlucHV0LCB0cnkgc29tZXRoaW5nIGxpa2U6IFwiMTIzNDVcIiBvciBcIjE5Mi4xNjguMi4xNDox
MjM0NVwiICh3aXRoIHRoZSBhZGRyZXNzIG9mIG9uZSBvZiB0aGlzIGhvc3QncyBpbnRlcmZhY2Up
LiIsIHFQcmludGFibGUoYmluZEFkZHJlc3MpLCBwb3J0KTsKKyAgICB9Cit9CisKK3N0YXRpYyB2
b2lkIGluaXRXZWJLaXQoKQoreworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7
CisgICAgaWYgKGluaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpbml0SW5zcGVj
dG9yU2VydmVyKCk7CisgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworfQorCiBRdFdlYkNvbnRleHQ6
OlF0V2ViQ29udGV4dChXZWJDb250ZXh0KiBjb250ZXh0KQogICAgIDogbV9jb250ZXh0SUQoZ2Vu
ZXJhdGVDb250ZXh0SUQoKSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQpAQCAtNjMsNiArMTA0
LDcgQEAgUXRXZWJDb250ZXh0Ojp+UXRXZWJDb250ZXh0KCkKIC8vIFVzZWQgb25seSBieSBXZWJL
aXRUZXN0UnVubmVyLiBJdCBhdm9pZHMgY2FsbGluZyBpbml0aWFsaXplKCksIHNvIHRoYXQgd2Ug
ZG9uJ3QgcmVnaXN0ZXIgYW55IGNsaWVudHMuCiBQYXNzUmVmUHRyPFF0V2ViQ29udGV4dD4gUXRX
ZWJDb250ZXh0OjpjcmVhdGUoV2ViQ29udGV4dCogY29udGV4dCkKIHsKKyAgICBpbml0V2ViS2l0
KCk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBRdFdlYkNvbnRleHQoY29udGV4dCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggOTBhODcwNTM5MDdkNGMxZWVmOGRi
MmM5N2U1M2U0N2Y4MmMxZGVhZi4uNWJmYzk1MDk0NmUwYzIyY2JjZjZiZTJjMWQ4NTFlYjNjODkz
NGRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtODksMTAgKzg5LDE5IEBA
IGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogICAgIFdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gbV9wYWdlLT5pbnNw
ZWN0b3IoKTsKICAgICBpZiAoIWluc3BlY3RvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisj
aWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisgICAgaWYgKGluc3BlY3Rvci0+aGFzUmVtb3Rl
RnJvbnRlbmRDb25uZWN0ZWQoKSkgeworICAgICAgICBpbnNwZWN0b3ItPnNlbmRNZXNzYWdlVG9S
ZW1vdGVGcm9udGVuZChtZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2Vu
ZGlmCisKICAgICBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlID0gaW5zcGVjdG9yLT5pbnNwZWN0b3JQ
YWdlKCk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIGRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2UoaW5zcGVjdG9yUGFnZS0+
Y29yZVBhZ2UoKSwgbWVzc2FnZSk7CisgICAgaWYgKGluc3BlY3RvclBhZ2UpCisgICAgICAgIHJl
dHVybiBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKGluc3BlY3RvclBhZ2UtPmNvcmVQ
YWdlKCksIG1lc3NhZ2UpOworCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6cGFnZU92ZXJsYXlEZXN0cm95ZWQoUGFnZU92ZXJsYXkqKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCA0
MTc4MzdkZjY5M2ZjNTY5NGRjZmM3ZTA3NDQ5NmJmZjg2ODFmNWY5Li4wMWIzY2MyMDkxZWI5MmQw
YjM1NzdjNzA2YmE5NzY4YzZkMjJjYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtNTAsNiArNTAsOSBAQCBXZWJJbnNw
ZWN0b3I6OldlYkluc3BlY3RvcihXZWJQYWdlKiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCiAg
ICAgLCBtX2luc3BlY3RvclBhZ2UoMCkKICAgICAsIG1fZnJvbnRlbmRDbGllbnQoMCkKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICAsIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQo
ZmFsc2UpCisjZW5kaWYKIHsKIH0KIApAQCAtMjM2LDYgKzIzOSwzNiBAQCB2b2lkIFdlYkluc3Bl
Y3Rvcjo6dXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpCiAgICAgICAgIG1fZnJvbnRlbmRDbGll
bnQtPnNldERvY2tpbmdVbmF2YWlsYWJsZSghbV9mcm9udGVuZENsaWVudC0+Y2FuQXR0YWNoV2lu
ZG93KCkpOwogfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCit2b2lkIFdlYkluc3Bl
Y3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
K3sKKyAgICBBU1NFUlQobV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7CisgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6U2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3I6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9u
dGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdl
KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKK3sK
KyAgICBBU1NFUlQoIW1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOworICAgIC8vIFN3aXRjaGlu
ZyBiZXR3ZWVuIGluLXByb2Nlc3MgYW5kIHJlbW90ZSBpbnNwZWN0b3JzIGlzbid0IHN1cHBvcnRl
ZCB5ZXQuCisgICAgQVNTRVJUKCFtX2luc3BlY3RvclBhZ2UpOworCisgICAgbV9wYWdlLT5jb3Jl
UGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVuZCgpOworICAgIG1f
cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSB0cnVlOworfQorCit2b2lkIFdlYkluc3BlY3Rvcjo6
cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQoreworICAgIEFTU0VSVChtX3JlbW90ZUZyb250
ZW5kQ29ubmVjdGVkKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7CisgICAgbV9yZW1vdGVGcm9udGVuZENvbm5lY3Rl
ZCA9IGZhbHNlOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3IuaAppbmRleCAwOTA2ZTY0ZWY5MzBlNzI4NzBjMGY3ZmI3NjQ4N2Iz
ZjBiZjdjMWMxLi41NzU3MjVhZTY2MTM3ZDM3OGQyYWY1ZWNlNmUzMGJkYWI0ZTNhNGQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCkBA
IC02MSw2ICs2MSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFBhZ2VQcm9maWxpbmcoKTsK
ICAgICB2b2lkIHN0b3BQYWdlUHJvZmlsaW5nKCk7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NF
UlZFUikKKyAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1
cm4gbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZDsgfQorICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1Jl
bW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBkaXNwYXRjaE1l
c3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lk
IHJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCk7CisgICAgdm9pZCByZW1vdGVGcm9udGVuZERpc2Nv
bm5lY3RlZCgpOworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzZXRJbnNw
ZWN0b3JVc2VzV2ViS2l0VXNlckludGVyZmFjZShib29sKTsKICNlbmRpZgpAQCAtMTExLDYgKzEx
OSw5IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFN0cmluZyBtX2xvY2FsaXpl
ZFN0cmluZ3NVUkw7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBi
b29sIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQ7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KaW5kZXggYTFhODBmMDdmMjE0MDgwYmY2Y2E2
NTUwMDRlMzA0MWE0MjgwNTZjMS4uOTk4MjcyZDlmYTQ5MzhmOGYyNjdiOTkzNmU0ODhhOGM4ZTc4
OTBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCkBAIC0zNCw2ICszNCwxMiBAQCBtZXNzYWdlcyAt
PiBXZWJJbnNwZWN0b3IgewogICAgIFN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCkKICAgICBTdGFy
dFBhZ2VQcm9maWxpbmcoKQogICAgIFN0b3BQYWdlUHJvZmlsaW5nKCkKKworI2lmIEVOQUJMRShJ
TlNQRUNUT1JfU0VSVkVSKQorICAgIERpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChX
VEY6OlN0cmluZyBtZXNzYWdlKQorICAgIFJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKKyAgICBS
ZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCisjZW5kaWYKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDU5ZGVjYTg5NmRk
ODc1ZDBhYjViMzBkN2FiZTcwODE4MjMwNDY0Zi4uZDM1YzU1YzU3NjBmNWM1YWFhMzBkN2Q0NjJl
NzMwNDllZGQwODI5YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAzLTI5ICBKb2NlbHluIFR1cmNvdHRlICA8
am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBFbmFibGUgZGV2ZWxv
cGVyIGV4dHJhcyBvbiBwYWdlcyBpbiBNaW5pQnJvd3Nlci4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3Nlcldp
bmRvdy5xbWw6CisKIDIwMTItMDMtMjkgIFZpbmVldCBDaGF1ZGhhcnkgIDxyZ2Y3NDhAbW90b3Jv
bGEuY29tPgogCiAgICAgICAgIFJlbW92ZSBjdXN0b20gYmluZGluZ3MgZm9ybSBJbnRlcm5hbHMu
aWRsIG9mIGF0dHJpYnV0ZSB0eXBlIEFycmF5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jy
b3dzZXJXaW5kb3cucW1sCmluZGV4IDdkOGE5MWZkZmRlOTMxOTVkM2M5N2QxN2JkMDQwN2I0NDAy
MzJkNTIuLmVlYjg4MTY1YjRkOGE3MjA4NmZhMTkzOGE1YTQyYjU1MTBlZDgzNGEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbAorKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwKQEAgLTMxNCw2ICszMTQsNyBA
QCBSZWN0YW5nbGUgewogICAgICAgICBleHBlcmltZW50YWwuYXV0aGVudGljYXRpb25EaWFsb2c6
IEF1dGhlbnRpY2F0aW9uRGlhbG9nIHsgfQogICAgICAgICBleHBlcmltZW50YWwucHJveHlBdXRo
ZW50aWNhdGlvbkRpYWxvZzogUHJveHlBdXRoZW50aWNhdGlvbkRpYWxvZyB7IH0KICAgICAgICAg
ZXhwZXJpbWVudGFsLmZpbGVQaWNrZXI6IEZpbGVQaWNrZXIgeyB9CisgICAgICAgIGV4cGVyaW1l
bnRhbC5wcmVmZXJlbmNlcy5kZXZlbG9wZXJFeHRyYXNFbmFibGVkOiB0cnVlCiAgICAgICAgIGV4
cGVyaW1lbnRhbC5kYXRhYmFzZVF1b3RhRGlhbG9nOiBJdGVtIHsKICAgICAgICAgICAgIFRpbWVy
IHsKICAgICAgICAgICAgICAgICBpbnRlcnZhbDogMQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135100</attachid>
            <date>2012-04-02 07:46:48 -0700</date>
            <delta_ts>2012-04-03 03:16:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73094-20120402164423.patch</filename>
            <type>text/plain</type>
            <size>16885</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTQ1NTcxYTgyZjJkZTc2
MTI4NWMyODZlZDEzMTJmNGZiZWFkMDgyMi4uNGE2MmZkODBjMDY3YTRhYTBjYjI1ODczMWI2MTFh
NTg3ODI4MGUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA0LTAyICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgRW5h
YmxlIGFuZCBjb25uZWN0IHRoZSBXZWJJbnNwZWN0b3JTZXJ2ZXIgd2l0aCBXZWJLaXQyIHBhZ2Vz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwOTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYWdlcyBh
cmUgcmVnaXN0ZXJlZC91bnJlZ2lzdGVyZWQgYXMgdGhleSBhcmUgY3JlYXRlZC9kZXN0cm95ZWQs
IGlmIHRoZXkgaGF2ZQorICAgICAgICBkZXZlbG9wZXIgZXh0cmFzIGVuYWJsZWQuIFRoZSBzZXJ2
ZXIgaXMgcnVuIG9uIHRoZSBVSSBwcm9jZXNzIGFuZCBjb21tdW5pY2F0ZXMKKyAgICAgICAgd2l0
aCB0aGUgd2ViIHByb2Nlc3MgdGhyb3VnaCBJUEMgZm9yIGVhY2ggbWVzc2FnZSBiZXR3ZWVuIHRo
ZSBpbnNwZWN0b3IKKyAgICAgICAgY29udHJvbGxlciBhbmQgdGhlIHJlbW90ZSBmcm9udGVuZC4K
KworICAgICAgICBJbmNsdWRlcyB0aGUgc2VydmVyIHNwYXduaW5nIGxvZ2ljIGZvciB0aGUgUXQg
cG9ydCwgdGhlIHNlcnZlciBpcworICAgICAgICBzdGFydGVkIHRocm91Z2ggYW4gZW52aXJvbm1l
bnQgdmFyaWFibGUgc3BlY2lmeWluZyB0aGUgaW50ZXJmYWNlIGFuZAorICAgICAgICBwb3J0IHRv
IGJpbmQgdGhlIHNlcnZlciB0bywgYnkgZGVmYXVsdCBvbiAxMjcuMC4wLjEuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6V2ViSW5zcGVjdG9yUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZW5hYmxlUmVtb3RlSW5zcGVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZERpc2Nv
bm5lY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1l
c3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKFdlYkluc3BlY3RvclByb3h5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBy
ZWZlcmVuY2VzRGlkQ2hhbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdEluc3BlY3RvclNlcnZlcik6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxJbml0aWFsaXphdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlF0V2ViQ29udGV4dDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yOjpXZWJJbnNwZWN0b3IpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3I6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVj
dGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmg6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6Omhhc1Jl
bW90ZUZyb250ZW5kQ29ubmVjdGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yLm1lc3NhZ2VzLmluOgorCiAyMDEyLTAzLTI5ICBKb3NlcGggUGVjb3Jhcm8gIDxq
b2VwZWNrQHdlYmtpdC5vcmc+IGFuZCBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0
ZUBub2tpYS5jb20+CiAKICAgICAgICAgV2ViSW5zcGVjdG9yU2VydmVyIGZvciBXZWJLaXQyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXgg
NmJmN2E2YmQ5YjdlYTI2OTY0MWUxMGVhNzcyMzZiZDliNjM4MjQwZC4uOWVmMDljNTkxNmEwMjRl
M2QxNjMwZDAyODNlMTU2MDk4NDFlNGY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0zNyw2ICszNyw5IEBACiAjaW5jbHVkZSAiV2Vi
UHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKIAorI2lmIEVOQUJM
RShJTlNQRUNUT1JfU0VSVkVSKQorI2luY2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgorI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNlbmRpZgpAQCAt
NzksNiArODIsOSBAQCBXZWJJbnNwZWN0b3JQcm94eTo6V2ViSW5zcGVjdG9yUHJveHkoV2ViUGFn
ZVByb3h5KiBwYWdlKQogICAgICwgbV9pbnNwZWN0b3JWaWV3KDApCiAgICAgLCBtX2luc3BlY3Rv
cldpbmRvdygwKQogI2VuZGlmCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisgICAgLCBt
X3JlbW90ZUluc3BlY3Rpb25QYWdlSWQoMCkKKyNlbmRpZgogewogfQogCkBAIC04OCw2ICs5NCwx
MSBAQCBXZWJJbnNwZWN0b3JQcm94eTo6fldlYkluc3BlY3RvclByb3h5KCkKIAogdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6aW52YWxpZGF0ZSgpCiB7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJW
RVIpCisgICAgaWYgKG1fcmVtb3RlSW5zcGVjdGlvblBhZ2VJZCkKKyAgICAgICAgV2ViSW5zcGVj
dG9yU2VydmVyOjpzZXJ2ZXIoKS0+dW5yZWdpc3RlclBhZ2UobV9yZW1vdGVJbnNwZWN0aW9uUGFn
ZUlkKTsKKyNlbmRpZgorCiAgICAgbV9wYWdlLT5jbG9zZSgpOwogICAgIGRpZENsb3NlKCk7CiAK
QEAgLTIyNCw2ICsyMzUsMjkgQEAgYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6aXNJbnNwZWN0b3JQ
YWdlKFdlYlBhZ2VQcm94eSogcGFnZSkKICAgICByZXR1cm4gcGFnZS0+cGFnZUdyb3VwKCkgPT0g
aW5zcGVjdG9yUGFnZUdyb3VwKCk7CiB9CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikK
K3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKQoreworICAg
IGlmICghbV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlkKQorICAgICAgICBtX3JlbW90ZUluc3BlY3Rp
b25QYWdlSWQgPSBXZWJJbnNwZWN0b3JTZXJ2ZXI6OnNlcnZlcigpLT5yZWdpc3RlclBhZ2UodGhp
cyk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVk
KCkKK3sKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQoreworICAg
IG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZy
b250ZW5kRGlzY29ubmVjdGVkKCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQoreworICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OkRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChtZXNzYWdlKSwg
bV9wYWdlLT5wYWdlSUQoKSk7Cit9CisjZW5kaWYKKwogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3Rv
clByb3h5IG1lc3NhZ2VzCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQ
YWdlKHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
IGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJzKQogewpAQCAtMzAzLDYgKzMzNywxNCBAQCBib29sIFdl
Ykluc3BlY3RvclByb3h5OjpzaG91bGRPcGVuQXR0YWNoZWQoKQogICAgIHJldHVybiBpbnNwZWN0
b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+aW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoKSAm
JiBjYW5BdHRhY2goKTsKIH0KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQordm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlkKTsKKyAg
ICBXZWJJbnNwZWN0b3JTZXJ2ZXI6OnNlcnZlcigpLT5zZW5kTWVzc2FnZU92ZXJDb25uZWN0aW9u
KG1fcmVtb3RlSW5zcGVjdGlvblBhZ2VJZCwgbWVzc2FnZSk7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCA4ODRiNjY2MjE5ODVl
NmI0YTRiNmU1ZTMyOWQzMTkxZTQ3Y2MyNzAwLi4yOGNkZDBiYjIxYzE3MDA5NWRmMGM4Y2RlNTQ5
ZjQ3MGE0MGUzYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuaApAQCAtMTE5LDYgKzExOSwxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBp
c0luc3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5Kik7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NF
UlZFUikKKyAgICB2b2lkIGVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKTsKKyAgICB2b2lkIHJlbW90
ZUZyb250ZW5kQ29ubmVjdGVkKCk7CisgICAgdm9pZCByZW1vdGVGcm9udGVuZERpc2Nvbm5lY3Rl
ZCgpOworICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJJbnNwZWN0b3JQcm94
eShXZWJQYWdlUHJveHkqIHBhZ2UpOwogCkBAIC0xNDYsNiArMTUzLDEwIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29u
c3QgU3RyaW5nJik7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICB2b2lkIHNl
bmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworI2VuZGlm
CisKICAgICBib29sIGNhbkF0dGFjaCgpOwogICAgIGJvb2wgc2hvdWxkT3BlbkF0dGFjaGVkKCk7
CiAKQEAgLTE5NCw2ICsyMDUsOSBAQCBwcml2YXRlOgogICAgIEd0a1dpZGdldCogbV9pbnNwZWN0
b3JWaWV3OwogICAgIEd0a1dpZGdldCogbV9pbnNwZWN0b3JXaW5kb3c7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBpbnQgbV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlk
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBh
MTk0OTg1OGUwNDMzZDk4NGYwN2ExNWE5ZDJkYmQxNmY2MzI0OGUyLi4yYjY2NjMzNjljYzA5ODc0
NDIwMTdiNzc5YWJmMmJjNmM3YjdlZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMiw2ICszMiwxMCBA
QCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7CiAgICAgQXR0YWNoKCkKICAgICBEZXRh
Y2goKQogICAgIFNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKKworI2lm
IEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgIFNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVu
ZChXVEY6OlN0cmluZyBtZXNzYWdlKQorI2VuZGlmCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1ODQyMzdmZjkyZWI5YTMxM2UyY2I0
Y2M0NWNiYjYwMTYyOWRlMzViLi4xZmVmYTlmZjcwMGQ1MDhkMjlmOTE3N2MzYzQ1NjZkMGZmMGQw
MzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzM5
LDYgKzMzOSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogICAg
IG1fZHJhd2luZ0FyZWEgPSBtX3BhZ2VDbGllbnQtPmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKTsK
ICAgICBBU1NFUlQobV9kcmF3aW5nQXJlYSk7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZF
UikKKyAgICBpZiAobV9wYWdlR3JvdXAtPnByZWZlcmVuY2VzKCktPmRldmVsb3BlckV4dHJhc0Vu
YWJsZWQoKSkKKyAgICAgICAgaW5zcGVjdG9yKCktPmVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKTsK
KyNlbmRpZgorCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDcmVh
dGVXZWJQYWdlKG1fcGFnZUlELCBjcmVhdGlvblBhcmFtZXRlcnMoKSksIDApOwogfQogCkBAIC0x
NTcxLDYgKzE1NzYsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdl
KCkKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgRU5BQkxFKElO
U1BFQ1RPUl9TRVJWRVIpCisgICAgaWYgKG1fcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLT5kZXZl
bG9wZXJFeHRyYXNFbmFibGVkKCkpCisgICAgICAgIGluc3BlY3RvcigpLT5lbmFibGVSZW1vdGVJ
bnNwZWN0aW9uKCk7CisjZW5kaWYKKwogICAgIC8vIEZJWE1FOiBJdCBwcm9iYWJseSBtYWtlcyBt
b3JlIHNlbnNlIHRvIHNlbmQgaW5kaXZpZHVhbCBwcmVmZXJlbmNlIGNoYW5nZXMuCiAgICAgLy8g
SG93ZXZlciwgV2ViS2l0VGVzdFJ1bm5lciBkZXBlbmRzIG9uIGdldHRpbmcgYSBwcmVmZXJlbmNl
IGNoYW5nZSBub3RpZmljYXRpb24KICAgICAvLyBldmVuIGlmIG5vdGhpbmcgY2hhbmdlZCBpbiBV
SSBwcm9jZXNzLCBzbyB0aGF0IG92ZXJyaWRlcyBnZXQgcmVtb3ZlZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5jcHAKaW5kZXggYTgwMGZlZjE1MDIwNDVkNTZk
NTIyMmNkMjY3MGM4YzFlNDZjYjQ3YS4uMjMzOWJjN2QxNTE4ZDAyNGM5ZjQ3ODI1MDdkZjA5MmM1
N2YzYWIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5j
cHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJRdFdlYkljb25EYXRhYmFzZUNsaWVudC5o
IgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNp
bmNsdWRlIDxXS0FycmF5Lmg+CiAjaW5jbHVkZSA8V0tQYWdlLmg+CkBAIC00NCw2ICs0NSw0NiBA
QCBzdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgUXRXZWJDb250ZXh0Kj4gY29udGV4dE1hcDsKIAog
UXRXZWJDb250ZXh0KiBRdFdlYkNvbnRleHQ6OnNfZGVmYXVsdENvbnRleHQgPSAwOwogCitzdGF0
aWMgdm9pZCBpbml0SW5zcGVjdG9yU2VydmVyKCkKK3sKKyAgICBRU3RyaW5nIGluc3BlY3RvckVu
diA9IFFTdHJpbmc6OmZyb21MYXRpbjEocWdldGVudigiUVRXRUJLSVRfSU5TUEVDVE9SX1NFUlZF
UiIpKTsKKyAgICBpZiAoIWluc3BlY3RvckVudi5pc0VtcHR5KCkpIHsKKyAgICAgICAgUVN0cmlu
ZyBiaW5kQWRkcmVzcyA9IFFMYXRpbjFTdHJpbmcoIjEyNy4wLjAuMSIpOworICAgICAgICBRU3Ry
aW5nIHBvcnRTdHIgPSBpbnNwZWN0b3JFbnY7CisgICAgICAgIGludCBwb3J0ID0gMDsKKworICAg
ICAgICBpbnQgcG9ydENvbG9uUG9zID0gaW5zcGVjdG9yRW52Lmxhc3RJbmRleE9mKCc6Jyk7Cisg
ICAgICAgIGlmIChwb3J0Q29sb25Qb3MgIT0gLTEpIHsKKyAgICAgICAgICAgIHBvcnRTdHIgPSBp
bnNwZWN0b3JFbnYubWlkKHBvcnRDb2xvblBvcyArIDEpOworICAgICAgICAgICAgYmluZEFkZHJl
c3MgPSBpbnNwZWN0b3JFbnYubWlkKDAsIHBvcnRDb2xvblBvcyk7CisgICAgICAgIH0KKworICAg
ICAgICBib29sIG9rID0gZmFsc2U7CisgICAgICAgIHBvcnQgPSBwb3J0U3RyLnRvSW50KCZvayk7
CisgICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIHFXYXJuaW5nKCJOb24gbnVtZXJpYyBw
b3J0IGZvciB0aGUgaW5zcGVjdG9yIHNlcnZlciBcIiVzXCIuIEV4YW1wbGVzIG9mIHZhbGlkIGlu
cHV0OiBcIjEyMzQ1XCIgb3IgXCIxOTIuMTY4LjIuMTQ6MTIzNDVcIiAod2l0aCB0aGUgYWRkcmVz
cyBvZiBvbmUgb2YgdGhpcyBob3N0J3MgaW50ZXJmYWNlKS4iLCBxUHJpbnRhYmxlKHBvcnRTdHIp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgc3VjY2Vz
cyA9IFdlYkluc3BlY3RvclNlcnZlcjo6c2VydmVyKCktPmxpc3RlbihiaW5kQWRkcmVzcywgcG9y
dCk7CisgICAgICAgIGlmIChzdWNjZXNzKSB7CisgICAgICAgICAgICBRU3RyaW5nIGluc3BlY3Rv
clNlcnZlclVybCA9IFFTdHJpbmc6OmZyb21MYXRpbjEoImh0dHA6Ly8lMTolMiIpLmFyZyhiaW5k
QWRkcmVzcykuYXJnKHBvcnQpOworICAgICAgICAgICAgcVdhcm5pbmcoIkluc3BlY3RvciBzZXJ2
ZXIgc3RhcnRlZCBzdWNjZXNzZnVsbHkuIFRyeSBwb2ludGluZyBhIFdlYktpdCBicm93c2VyIHRv
ICVzIiwgcVByaW50YWJsZShpbnNwZWN0b3JTZXJ2ZXJVcmwpKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBxV2FybmluZygiQ291bGRuJ3Qgc3RhcnQgdGhlIGluc3BlY3RvciBzZXJ2ZXIg
b24gYmluZCBhZGRyZXNzIFwiJXNcIiBhbmQgcG9ydCBcIiVkXCIuIEluIGNhc2Ugb2YgaW52YWxp
ZCBpbnB1dCwgdHJ5IHNvbWV0aGluZyBsaWtlOiBcIjEyMzQ1XCIgb3IgXCIxOTIuMTY4LjIuMTQ6
MTIzNDVcIiAod2l0aCB0aGUgYWRkcmVzcyBvZiBvbmUgb2YgdGhpcyBob3N0J3MgaW50ZXJmYWNl
KS4iLCBxUHJpbnRhYmxlKGJpbmRBZGRyZXNzKSwgcG9ydCk7CisgICAgfQorfQorCitzdGF0aWMg
dm9pZCBnbG9iYWxJbml0aWFsaXphdGlvbigpCit7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6
ZWQgPSBmYWxzZTsKKyAgICBpZiAoaW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IGluaXRJbnNwZWN0b3JTZXJ2ZXIoKTsKKyAgICBpbml0aWFsaXplZCA9IHRydWU7Cit9CisKIFF0
V2ViQ29udGV4dDo6UXRXZWJDb250ZXh0KFdlYkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBtX2Nv
bnRleHRJRChnZW5lcmF0ZUNvbnRleHRJRCgpKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCkBA
IC02Myw2ICsxMDQsNyBAQCBRdFdlYkNvbnRleHQ6On5RdFdlYkNvbnRleHQoKQogLy8gVXNlZCBv
bmx5IGJ5IFdlYktpdFRlc3RSdW5uZXIuIEl0IGF2b2lkcyBjYWxsaW5nIGluaXRpYWxpemUoKSwg
c28gdGhhdCB3ZSBkb24ndCByZWdpc3RlciBhbnkgY2xpZW50cy4KIFBhc3NSZWZQdHI8UXRXZWJD
b250ZXh0PiBRdFdlYkNvbnRleHQ6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQogeworICAg
IGdsb2JhbEluaXRpYWxpemF0aW9uKCk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBRdFdlYkNv
bnRleHQoY29udGV4dCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXgg
OTBhODcwNTM5MDdkNGMxZWVmOGRiMmM5N2U1M2U0N2Y4MmMxZGVhZi4uNWJmYzk1MDk0NmUwYzIy
Y2JjZjZiZTJjMWQ4NTFlYjNjODkzNGRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cApAQCAtODksMTAgKzg5LDE5IEBAIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIFdlYkluc3BlY3RvciogaW5z
cGVjdG9yID0gbV9wYWdlLT5pbnNwZWN0b3IoKTsKICAgICBpZiAoIWluc3BlY3RvcikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisgICAgaWYg
KGluc3BlY3Rvci0+aGFzUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKSkgeworICAgICAgICBpbnNw
ZWN0b3ItPnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChtZXNzYWdlKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisKICAgICBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlID0g
aW5zcGVjdG9yLT5pbnNwZWN0b3JQYWdlKCk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQYWdlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVu
ZFBhZ2UoaW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKSwgbWVzc2FnZSk7CisgICAgaWYgKGluc3Bl
Y3RvclBhZ2UpCisgICAgICAgIHJldHVybiBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdl
KGluc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCksIG1lc3NhZ2UpOworCisgICAgcmV0dXJuIGZhbHNl
OwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cGFnZU92ZXJsYXlEZXN0cm95ZWQoUGFn
ZU92ZXJsYXkqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yLmNwcAppbmRleCA0MTc4MzdkZjY5M2ZjNTY5NGRjZmM3ZTA3NDQ5NmJmZjg2ODFm
NWY5Li4wMWIzY2MyMDkxZWI5MmQwYjM1NzdjNzA2YmE5NzY4YzZkMjJjYjkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAt
NTAsNiArNTAsOSBAQCBXZWJJbnNwZWN0b3I6OldlYkluc3BlY3RvcihXZWJQYWdlKiBwYWdlKQog
ICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3RvclBhZ2UoMCkKICAgICAsIG1fZnJv
bnRlbmRDbGllbnQoMCkKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICAsIG1fcmVt
b3RlRnJvbnRlbmRDb25uZWN0ZWQoZmFsc2UpCisjZW5kaWYKIHsKIH0KIApAQCAtMjM2LDYgKzIz
OSwzNiBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6dXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpCiAg
ICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldERvY2tpbmdVbmF2YWlsYWJsZSghbV9mcm9udGVu
ZENsaWVudC0+Y2FuQXR0YWNoV2luZG93KCkpOwogfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9T
RVJWRVIpCit2b2lkIFdlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9yZW1vdGVGcm9udGVuZENvbm5l
Y3RlZCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKG1lc3Nh
Z2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3I6OmRpc3BhdGNo
TWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAg
bV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc3BhdGNoTWVzc2Fn
ZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZy
b250ZW5kQ29ubmVjdGVkKCkKK3sKKyAgICBBU1NFUlQoIW1fcmVtb3RlRnJvbnRlbmRDb25uZWN0
ZWQpOworICAgIC8vIFN3aXRjaGluZyBiZXR3ZWVuIGluLXByb2Nlc3MgYW5kIHJlbW90ZSBpbnNw
ZWN0b3JzIGlzbid0IHN1cHBvcnRlZCB5ZXQuCisgICAgQVNTRVJUKCFtX2luc3BlY3RvclBhZ2Up
OworCisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5l
Y3RGcm9udGVuZCgpOworICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSB0cnVlOworfQor
Cit2b2lkIFdlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQoreworICAg
IEFTU0VSVChtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdl
KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7CisgICAgbV9y
ZW1vdGVGcm9udGVuZENvbm5lY3RlZCA9IGZhbHNlOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAppbmRleCAwOTA2ZTY0ZWY5
MzBlNzI4NzBjMGY3ZmI3NjQ4N2IzZjBiZjdjMWMxLi41NzU3MjVhZTY2MTM3ZDM3OGQyYWY1ZWNl
NmUzMGJkYWI0ZTNhNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oCkBAIC02MSw2ICs2MSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dGFydFBhZ2VQcm9maWxpbmcoKTsKICAgICB2b2lkIHN0b3BQYWdlUHJvZmlsaW5nKCk7CiAKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kQ29u
bmVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZDsgfQorICAg
IHZvaWQgc2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
CisgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKKyAgICB2b2lkIHJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCk7CisgICAgdm9p
ZCByZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpOworI2VuZGlmCisKICNpZiBQTEFURk9STShN
QUMpCiAgICAgdm9pZCBzZXRJbnNwZWN0b3JVc2VzV2ViS2l0VXNlckludGVyZmFjZShib29sKTsK
ICNlbmRpZgpAQCAtMTExLDYgKzExOSw5IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIFN0cmluZyBtX2xvY2FsaXplZFN0cmluZ3NVUkw7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX1NFUlZFUikKKyAgICBib29sIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQ7CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KaW5kZXgg
YTFhODBmMDdmMjE0MDgwYmY2Y2E2NTUwMDRlMzA0MWE0MjgwNTZjMS4uOTk4MjcyZDlmYTQ5Mzhm
OGYyNjdiOTkzNmU0ODhhOGM4ZTc4OTBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCkBAIC0zNCw2
ICszNCwxMiBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3IgewogICAgIFN0b3BKYXZhU2NyaXB0
UHJvZmlsaW5nKCkKICAgICBTdGFydFBhZ2VQcm9maWxpbmcoKQogICAgIFN0b3BQYWdlUHJvZmls
aW5nKCkKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgIERpc3BhdGNoTWVzc2Fn
ZUZyb21SZW1vdGVGcm9udGVuZChXVEY6OlN0cmluZyBtZXNzYWdlKQorICAgIFJlbW90ZUZyb250
ZW5kQ29ubmVjdGVkKCkKKyAgICBSZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCisjZW5kaWYK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMDU5ZGVjYTg5NmRkODc1ZDBhYjViMzBkN2FiZTcwODE4MjMwNDY0Zi4uYzJmNTQ0
ZGExYTAyNzJiYzNiYWQ5YjljMzliMWZiZWYyOGM5MzUxZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA0LTAy
ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAg
ICAgRW5hYmxlIGFuZCBjb25uZWN0IHRoZSBXZWJJbnNwZWN0b3JTZXJ2ZXIgd2l0aCBXZWJLaXQy
IHBhZ2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzMwOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKQorCisgICAgICAgIEVu
YWJsZSBkZXZlbG9wZXIgZXh0cmFzIG9uIHBhZ2VzIGluIE1pbmlCcm93c2VyIGZvciBRdC4KKwor
ICAgICAgICAqIE1pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbDoKKwogMjAxMi0w
My0yOSAgVmluZWV0IENoYXVkaGFyeSAgPHJnZjc0OEBtb3Rvcm9sYS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIGN1c3RvbSBiaW5kaW5ncyBmb3JtIEludGVybmFscy5pZGwgb2YgYXR0cmlidXRlIHR5
cGUgQXJyYXkuCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3Nlcldp
bmRvdy5xbWwgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwKaW5k
ZXggN2Q4YTkxZmRmZGU5MzE5NWQzYzk3ZDE3YmQwNDA3YjQ0MDIzMmQ1Mi4uZWViODgxNjViNGQ4
YTcyMDg2ZmExOTM4YTVhNDJiNTUxMGVkODM0YSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dz
ZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3Ft
bC9Ccm93c2VyV2luZG93LnFtbApAQCAtMzE0LDYgKzMxNCw3IEBAIFJlY3RhbmdsZSB7CiAgICAg
ICAgIGV4cGVyaW1lbnRhbC5hdXRoZW50aWNhdGlvbkRpYWxvZzogQXV0aGVudGljYXRpb25EaWFs
b2cgeyB9CiAgICAgICAgIGV4cGVyaW1lbnRhbC5wcm94eUF1dGhlbnRpY2F0aW9uRGlhbG9nOiBQ
cm94eUF1dGhlbnRpY2F0aW9uRGlhbG9nIHsgfQogICAgICAgICBleHBlcmltZW50YWwuZmlsZVBp
Y2tlcjogRmlsZVBpY2tlciB7IH0KKyAgICAgICAgZXhwZXJpbWVudGFsLnByZWZlcmVuY2VzLmRl
dmVsb3BlckV4dHJhc0VuYWJsZWQ6IHRydWUKICAgICAgICAgZXhwZXJpbWVudGFsLmRhdGFiYXNl
UXVvdGFEaWFsb2c6IEl0ZW0gewogICAgICAgICAgICAgVGltZXIgewogICAgICAgICAgICAgICAg
IGludGVydmFsOiAxCg==
</data>
<flag name="review"
          id="139517"
          type_id="1"
          status="+"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="139565"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>