<?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>136051</bug_id>
          
          <creation_ts>2014-08-18 16:07:57 -0700</creation_ts>
          <short_desc>EventSender dispatches should be per-Document</short_desc>
          <delta_ts>2019-02-06 09:19:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137397</dependson>
          <blocked>137090</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1029905</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-18 16:07:57 -0700</bug_when>
    <thetext>EventSender causes JS code to execute nondeterministically. It uses a Timer to asynchronously dispatch the same event to multiple elements of the same type on a future run loop. It also force-dispatches the event when the document closes.

Currently, each (event name, element) pair gets its own static EventSender. This is quite nondeterministic because unrelated pages (say, the Inspector or another tab) share the same static EventSenders and can force-dispatch each others&apos; pending events on implicitClose.

I propose making EventSender instances per-Document. Then we can use ReplayableTimer to iron out the scheduling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029930</commentid>
    <comment_count>1</comment_count>
      <attachid>236793</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-18 18:56:18 -0700</bug_when>
    <thetext>Created attachment 236793
Proposed Fix

I uploaded a patch to fix this. Looking forward to any feedback. I should probably write a replay test for this bug before landing, but the non-replay portions should be covered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037089</commentid>
    <comment_count>2</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-24 16:56:39 -0700</bug_when>
    <thetext>Splitting replay parts from the refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037548</commentid>
    <comment_count>3</comment_count>
      <attachid>238735</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-26 13:42:12 -0700</bug_when>
    <thetext>Created attachment 238735
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037567</commentid>
    <comment_count>4</comment_count>
      <attachid>238741</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-26 15:04:16 -0700</bug_when>
    <thetext>Created attachment 238741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037568</commentid>
    <comment_count>5</comment_count>
      <attachid>238741</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-26 15:09:18 -0700</bug_when>
    <thetext>Comment on attachment 238741
Patch

To remove a source of nondeterminism for web replay, this patch makes EventSenders associated with the Document, without trying to overly optimize or re-architect how EventSender works. I am not equipped to make useful (ie., data driven) performance optimizations on this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038699</commentid>
    <comment_count>6</comment_count>
      <attachid>239062</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-01 16:04:51 -0700</bug_when>
    <thetext>Created attachment 239062
Proposed Fix (+win build fix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038702</commentid>
    <comment_count>7</comment_count>
      <attachid>239062</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-10-01 16:09:40 -0700</bug_when>
    <thetext>Comment on attachment 239062
Proposed Fix (+win build fix)

r=me, thanks for taking care of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038722</commentid>
    <comment_count>8</comment_count>
      <attachid>239062</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-01 16:57:01 -0700</bug_when>
    <thetext>Comment on attachment 239062
Proposed Fix (+win build fix)

Rejecting attachment 239062 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 239062, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

/Volumes/Data/EWS/WebKit/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-queues.appspot.com/results/5927535393112064</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038724</commentid>
    <comment_count>9</comment_count>
      <attachid>239062</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-01 16:58:25 -0700</bug_when>
    <thetext>Comment on attachment 239062
Proposed Fix (+win build fix)

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

&gt; Source/WebCore/ChangeLog:5
&gt; +

You dropped the Reviewed By NOBODY line, which is why the commit queue complained about not being able to update that line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038741</commentid>
    <comment_count>10</comment_count>
      <attachid>239062</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-01 17:54:15 -0700</bug_when>
    <thetext>Comment on attachment 239062
Proposed Fix (+win build fix)

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

&gt;&gt; Source/WebCore/ChangeLog:5
&gt;&gt; +
&gt; 
&gt; You dropped the Reviewed By NOBODY line, which is why the commit queue complained about not being able to update that line.

Weird, didn&apos;t think I touched that! Will fix and land by `webkit-patch land` later tonight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039292</commentid>
    <comment_count>11</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-03 12:21:53 -0700</bug_when>
    <thetext>Committed r174270: &lt;http://trac.webkit.org/changeset/174270&gt;

But, needs to be rolled out as there are several crashes on bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327181</commentid>
    <comment_count>12</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-07-10 14:06:23 -0700</bug_when>
    <thetext>Closing web replay-related bugs until we resume working on the feature again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503313</commentid>
    <comment_count>13</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:19:06 -0800</bug_when>
    <thetext>Mass move bugs into the DOM component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236793</attachid>
            <date>2014-08-18 18:56:18 -0700</date>
            <delta_ts>2014-09-24 16:56:52 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-136051-20140818185608.patch</filename>
            <type>text/plain</type>
            <size>32111</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyNDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzViNzRiMzFjMzRkNGFh
YTc1N2I0NWRkMWIzZjEyYzUxOTIzYWE3Ny4uYjMwYThhZTFjODNlOGUxNWY0MzZiNzMwMDNiYjYz
NGYzZjYxNmQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE0LTA4LTE4ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgUmVwbGF5
OiBFdmVudFNlbmRlciBkaXNwYXRjaGVzIHNob3VsZCBiZSBkZXRlcm1pbmlzdGljIGFuZCBwZXIt
RG9jdW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNjA1MQorCisgICAgICAgIEV2ZW50U2VuZGVyIHVzZXMgYSBUaW1lciB0byBhc3luY2hyb25v
dXNseSBkaXNwYXRjaCB0aGUgc2FtZSBldmVudCB0byBtdWx0aXBsZQorICAgICAgICBlbGVtZW50
cyBvZiB0aGUgc2FtZSB0eXBlIG9uIGEgZnV0dXJlIHJ1biBsb29wLiBUaGlzIGlzIG5vbmRldGVy
bWluaXN0aWMgYmVjYXVzZQorICAgICAgICBzdGF0aWMgaW5zdGFuY2VzIGFyZSBzaGFyZWQgYmV0
d2VlbiBhbGwgRG9jdW1lbnRzIGluIHRoZSBzYW1lIHByb2Nlc3MuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBzaGFyZXMgRXZlbnRTZW5kZXIgaW5zdGFuY2VzIGFtb25nIGVsZW1lbnRzIGluIHRoZSBz
YW1lIERvY3VtZW50LgorICAgICAgICBUaGUgZXZlbnQgZGlzcGF0Y2hpbmcgaXMgbWFkZSBkZXRl
cm1pbmlzdGljIGJ5IHVzaW5nIGEgUmVwbGF5YWJsZVRpbWVyLgorCisgICAgICAgIE5vcm1hbCAo
bm9uLXJlcGxheSkgZnVuY3Rpb25hbGl0eSBpcyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UpOiBEaXNwYXRjaCBw
ZW5kaW5nIGV2ZW50cyBmb3IgdGhpcyBkb2N1bWVudCBvbmx5LgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNoYXJlZEV2ZW50U2VuZGVycyk6
CisgICAgICAgICogZG9tL0V2ZW50U2VuZGVyLmg6IEtlZXAgYSBEb2N1bWVudCByZWZlcmVuY2Ug
YXJvdW5kIGZvciBmaXJpbmcgdGhlIHRpbWVyLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTZW5k
ZXI6OkV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U2VuZGVyOjpoYXNQZW5k
aW5nRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U2VuZGVyOjp0aW1lckZpcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U2VuZGVyPFQ+OjpkaXNwYXRjaEV2ZW50U29vbik6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFNlbmRlcjxUPjo6Y2FuY2VsRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRTZW5kZXI8VD46OmRpc3BhdGNoUGVuZGluZ0V2ZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudFNlbmRlcjxUPjo6RXZlbnRTZW5kZXIpOiBEZWxldGVkLiBUaGUgdHlw
ZSBhcmd1bWVudCB3YXMgbm90IG5lY2Vzc2FyeS4KKworICAgICAgICAqIGRvbS9TaGFyZWRFdmVu
dFNlbmRlcnMuY3BwOiBBZGRlZC4gTGF6aWx5IGNyZWF0ZXMgZXZlbnQgc2VuZGVycyBhcyB0aGV5
IGFyZSByZXF1ZXN0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRFdmVudFNlbmRlcnM6Omxp
bmtMb2FkRXZlbnRTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkRXZlbnRTZW5kZXJz
OjpzdHlsZUxvYWRFdmVudFNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRFdmVudFNl
bmRlcnM6OmltYWdlQmVmb3JlbG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEV2ZW50U2VuZGVyczo6aW1hZ2VMb2FkRXZlbnRTZW5kZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkRXZlbnRTZW5kZXJzOjppbWFnZUVycm9yRXZlbnRTZW5kZXIpOgorICAgICAgICAq
IGRvbS9TaGFyZWRFdmVudFNlbmRlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRFdmVudFNlbmRlcnM6OlNoYXJlZEV2ZW50U2VuZGVycyk6CisgICAgICAgICogaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpsaW5r
TG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6ZGlz
cGF0Y2hQZW5kaW5nRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6bGlua0xvYWRFdmVudFNlbmRl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNo
UGVuZGluZ0xvYWRFdmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnN0eWxlTG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnN0eWxlTG9hZEV2ZW50U2VuZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMpOiBEZWxl
dGVkLgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5oOgorICAgICAgICAqIGxvYWRl
ci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6YmVmb3Jl
TG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpsb2FkRXZl
bnRTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OmVycm9yRXZlbnRTZW5k
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0V2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmJlZm9yZUxvYWRFdmVudFNlbmRlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpsb2FkRXZlbnRTZW5kZXIpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6ZXJyb3JFdmVudFNlbmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50cyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJy
b3JFdmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorCisg
ICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKTogUmVtb3ZlIGFuIGVhcmx5IGNhbGwgdG8g
dGhlIEV2ZW50U2VuZGVyIGZvciBpbWFnZSBiZWZvcmVsb2FkCisgICAgICAgIGV2ZW50cy4gVGhp
cyB3YXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIGJ1dCBpcyBubyBsb25nZXIgc2FmZSBz
aW5jZSB0aGUgZG9jdW1lbnQgKGFuZCB0aHVzCisgICAgICAgIHRoZSBldmVudCBzZW5kZXIpIG1h
eSBub3QgYmUgYXZhaWxhYmxlIGluIGEgc3luY2hyb25vdXMgZG9jdW1lbnQgd3JpdGUuCisKIDIw
MTQtMDgtMTEgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBlamVjdCBjdXJyZW50IHJlY29yZGluZyBidXR0b24gdG8g
dGhlIHJlcGxheSBkYXNoYm9hcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMWE5ZTE5ZGUxMTY3ZDUxMDhlMDYwZDdlNjA2ODE5
YzA4MmY0ODljLi43MGMzMGQzNjM2N2U1OWFkZmQxOGFlZTdjY2RkYjhhODc4OTVlNjYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC01NTMyLDYgKzU1MzIsOSBAQAogCQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMzQ0YxN0EyMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnkuY3BwICovOyB9OwogCQlDM0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDM0NGMTdBMzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQzQwMEQxMDkxOEYxQzhGNjAwOTBEODYzIC8qIEV2ZW50TG9vcElucHV0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0MDBEMTA4MThGMUM4RjYw
MDkwRDg2MyAvKiBFdmVudExvb3BJbnB1dC5jcHAgKi87IH07CisJCUM0OTQ3NEExMTlBMjg0N0Mw
MDlCM0RFOCAvKiBTaGFyZWRFdmVudFNlbmRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0OTQ3NEEwMTlBMjg0N0MwMDlCM0RFOCAvKiBTaGFyZWRF
dmVudFNlbmRlcnMuaCAqLzsgfTsKKwkJQzQ5NDc0QTgxOUEyRDYxMjAwOUIzREU4IC8qIEV2ZW50
U2VuZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RTVDQjFCMzE0RURBQjZGMDBCQjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLzsgfTsKKwkJQzQ5NDc0
QUExOUEyRTJFNTAwOUIzREU4IC8qIFNoYXJlZEV2ZW50U2VuZGVycy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDk0NzRBOTE5QTJFMkU1MDA5QjNE
RTggLyogU2hhcmVkRXZlbnRTZW5kZXJzLmNwcCAqLzsgfTsKIAkJQzRDRDYyOUExODM4Mzc2NjAw
N0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNu
YXBzaG90dGluZy5jcHAgKi87IH07CiAJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzRDRDYyOTkxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzRENEY1MkIx
OTc1Qzg4QjAwM0VGNUJDIC8qIFJlcGxheWFibGVUaW1lci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNEQ0RjUyNzE5NzVDODhCMDAzRUY1QkMgLyog
UmVwbGF5YWJsZVRpbWVyLmNwcCAqLzsgfTsKQEAgLTEyOTU1LDYgKzEyOTU4LDggQEAKIAkJQzND
RjE3QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzNFNjFDNjUzQTY0ODA3QTgzRTc2RkI4IC8q
IE1hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDNDAwRDEwODE4RjFDOEY2MDA5MEQ4NjMgLyogRXZlbnRMb29wSW5wdXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRMb29wSW5wdXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNDk0NzRBMDE5QTI4NDdDMDA5QjNERTggLyog
U2hhcmVkRXZlbnRTZW5kZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNo
YXJlZEV2ZW50U2VuZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNDk0NzRB
OTE5QTJFMkU1MDA5QjNERTggLyogU2hhcmVkRXZlbnRTZW5kZXJzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZEV2ZW50U2VuZGVycy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNu
YXBzaG90dGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFt
ZVNuYXBzaG90dGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0Q0Q2Mjk5
MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDNEQ0RjUyNzE5NzVDODhCMDAzRUY1QkMgLyogUmVwbGF5YWJsZVRpbWVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlcGxheWFibGVUaW1lci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjgxMyw2ICsyMjgxOCw4IEBACiAJ
CQkJRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLywKIAkJCQlB
NkQxNjk2MTEzNDZCNDlCMDAwRUI3NzAgLyogU2hhZG93Um9vdC5jcHAgKi8sCiAJCQkJQTZEMTY5
NjMxMzQ2QjRDMTAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuaCAqLywKKwkJCQlDNDk0NzRBOTE5QTJF
MkU1MDA5QjNERTggLyogU2hhcmVkRXZlbnRTZW5kZXJzLmNwcCAqLywKKwkJCQlDNDk0NzRBMDE5
QTI4NDdDMDA5QjNERTggLyogU2hhcmVkRXZlbnRTZW5kZXJzLmggKi8sCiAJCQkJMzE3NDFBQUIx
NjYzNUU0NTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oICovLAogCQkJCUQwMUEy
N0FCMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNwcCAqLywKIAkJCQlEMDFB
MjdBQzEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5oICovLApAQCAtMjM0MDQs
NiArMjM0MTEsNyBAQAogCQkJCTA3MDM2M0UwMTgxQTFDREMwMEMwNzRBNSAvKiBBVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwMzYzRTIxODFBMUNEQzAwQzA3NEE1
IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDM2M0U0
MTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQzQ5NDc0QTgxOUEyRDYxMjAwOUIzREU4IC8qIEV2ZW50U2VuZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRDMzNkY2MjE3RjlGNjQ3MDBERERDRDAgLyogQVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwMzYzRTYxODFBMUNEQzAwQzA3NEE1IC8q
IEFWVmlkZW9DYXB0dXJlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzODBGQkI5
QzFEMDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjQ0Nyw2
ICsyNjQ1NSw3IEBACiAJCQkJODUwMzFCNEYwQTQ0RUZDNzAwRjk5MkUwIC8qIFVJRXZlbnRXaXRo
S2V5U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBNDczOUQyMTc1N0FGRUMwMEU3Njc2NyAv
KiBVSVJlcXVlc3RFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIyRDhBNzkxNDk5N0NDRjAw
RUNFRjNFIC8qIFVuZG9TdGVwLmggaW4gSGVhZGVycyAqLywKKwkJCQlDNDk0NzRBMTE5QTI4NDdD
MDA5QjNERTggLyogU2hhcmVkRXZlbnRTZW5kZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODYz
RTIwMTEzNDM0MTIwMDAyNzQ5MjYgLyogVW5pY29kZUJpZGkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlEMDg2RkU5ODA5RDUzQUFCMDA1QkM3NEQgLyogVW5saW5rQ29tbWFuZC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yODExOCw2ICsyODEyNyw3IEBACiAJCQkJODkzMURFNUIxNEM0NEM0NDAwMERD
OUQyIC8qIEpTQmxvYkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ5RTI4NzEwN0Q0
REI0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVE
RjMyMzkwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzR3JhZGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQzQ5NDc0QUExOUEyRTJFNTAwOUIzREU4IC8qIFNoYXJlZEV2ZW50U2VuZGVycy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzIzQjA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52
YXNQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVEMTQyMTA1MTk2OTQwMDA5OUZB
QiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlF
RUQxNDQxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYWEzMDc4NTg1M2Y4ODI3
NTU4Y2I1OTc1YjQwZDlkOTI0MjRiOWJkZC4uYmNmYzQ1MGI4NjA2ZjNlY2YwYWFmMGU0YWJkMmVi
YTY1NjJjYThjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMzgsNiArMTM4LDcgQEAK
ICNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiU2hhcmVkRXZlbnRTZW5kZXJzLmgiCiAjaW5j
bHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2lu
Y2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgpAQCAtNDcxLDYgKzQ3Miw3IEBAIERvY3VtZW50
OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVu
dENsYXNzZXMsIHVuc2lnCiAgICAgLCBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXMoZmFs
c2UpCiAgICAgLCBtX2lzU3JjZG9jRG9jdW1lbnQoZmFsc2UpCiAgICAgLCBtX2V2ZW50UXVldWUo
KnRoaXMpCisgICAgLCBtX3NoYXJlZEV2ZW50U2VuZGVycyhzdGQ6Om1ha2VfdW5pcXVlPFNoYXJl
ZEV2ZW50U2VuZGVycz4oKnRoaXMpKQogICAgICwgbV93ZWFrRmFjdG9yeSh0aGlzKQogI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAsIG1fYXJlS2V5c0VuYWJsZWRJbkZ1bGxTY3JlZW4o
MCkKQEAgLTIzODQsMTIgKzIzODYsMTIgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgp
CiAgICAgICAgIGYtPmFuaW1hdGlvbigpLnN0YXJ0QW5pbWF0aW9uc0lmTm90U3VzcGVuZGVkKHRo
aXMpOwogICAgIH0KIAotICAgIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2Fk
RXZlbnRzKCk7Ci0gICAgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsK
LSAgICBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJyb3JFdmVudHMoKTsKKyAgICBzaGFy
ZWRFdmVudFNlbmRlcnMoKS5pbWFnZUJlZm9yZWxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVu
ZGluZ0V2ZW50cygpOworICAgIHNoYXJlZEV2ZW50U2VuZGVycygpLmltYWdlTG9hZEV2ZW50U2Vu
ZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7CisgICAgc2hhcmVkRXZlbnRTZW5kZXJzKCku
aW1hZ2VFcnJvckV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7CiAKLSAgICBI
VE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKLSAgICBIVE1MU3R5
bGVFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7CisgICAgc2hhcmVkRXZlbnRT
ZW5kZXJzKCkubGlua0xvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOwor
ICAgIHNoYXJlZEV2ZW50U2VuZGVycygpLnN0eWxlTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQ
ZW5kaW5nRXZlbnRzKCk7CiAKICAgICAvLyBUbyBhbGlnbiB0aGUgSFRNTCBsb2FkIGV2ZW50IGFu
ZCB0aGUgU1ZHTG9hZCBldmVudCBmb3IgdGhlIG91dGVybW9zdCA8c3ZnPiBlbGVtZW50LCBmaXJl
IGl0IGZyb20KICAgICAvLyBoZXJlLCBpbnN0ZWFkIG9mIGRvaW5nIGl0IGZyb20gU1ZHRWxlbWVu
dDo6ZmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4gKGlmIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ9
ImZhbHNlIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNjIxNDNkMzA3ODNiOTM2ZGVkNjBlYjhj
MTgyYzg5YmY5MWU3Mzk3My4uODliOGZhNTAxZTQ0MWQ1MDlhODc2NDE5ZWM5YWFkZWI0MmU5MTNi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE0NSw2ICsxNDUsNyBAQCBjbGFzcyBTZWxlY3Rv
clF1ZXJ5Q2FjaGU7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBTZWdtZW50
ZWRTdHJpbmc7CiBjbGFzcyBTZXR0aW5nczsKK2NsYXNzIFNoYXJlZEV2ZW50U2VuZGVyczsKIGNs
YXNzIFN0eWxlUmVzb2x2ZXI7CiBjbGFzcyBTdHlsZVNoZWV0OwogY2xhc3MgU3R5bGVTaGVldENv
bnRlbnRzOwpAQCAtMTExNyw2ICsxMTE4LDggQEAgcHVibGljOgogICAgIHZvaWQgZW5xdWV1ZVBv
cHN0YXRlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0
KTsKICAgICB2aXJ0dWFsIERvY3VtZW50RXZlbnRRdWV1ZSYgZXZlbnRRdWV1ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fZXZlbnRRdWV1ZTsgfQogCisgICAgU2hhcmVkRXZlbnRTZW5kZXJz
JiBzaGFyZWRFdmVudFNlbmRlcnMoKSBjb25zdCB7IHJldHVybiAqbV9zaGFyZWRFdmVudFNlbmRl
cnM7IH0KKwogICAgIHZvaWQgYWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lciopOwogICAgIHZvaWQgcmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lciopOwogICAgIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogdGFrZUFueU1lZGlh
Q2FuU3RhcnRMaXN0ZW5lcigpOwpAQCAtMTU2Niw2ICsxNTY5LDggQEAgcHJpdmF0ZToKICAgICBS
ZW5kZXJQdHI8UmVuZGVyVmlldz4gbV9yZW5kZXJWaWV3OwogICAgIG11dGFibGUgRG9jdW1lbnRF
dmVudFF1ZXVlIG1fZXZlbnRRdWV1ZTsKIAorICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxTaGFy
ZWRFdmVudFNlbmRlcnM+IG1fc2hhcmVkRXZlbnRTZW5kZXJzOworCiAgICAgV2Vha1B0ckZhY3Rv
cnk8RG9jdW1lbnQ+IG1fd2Vha0ZhY3Rvcnk7CiAKICAgICBIYXNoU2V0PE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lcio+IG1fbWVkaWFDYW5TdGFydExpc3RlbmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFNlbmRlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50U2VuZGVy
LmgKaW5kZXggMmNiNWFhZjE4YTgxNGUxYTcxYzJjYjE0OTJjNzQyZWI1NzBmNjczNy4uOTdhNmE4
Yjk4MTQ0YTZkM2U2NTE0ZGFkMjQ0YzAwYTMzMjc2OGI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50U2VuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50U2Vu
ZGVyLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5
IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI2LDE1ICsyNywyMyBAQAogI2lmbmRlZiBFdmVudFNlbmRlcl9oCiAj
ZGVmaW5lIEV2ZW50U2VuZGVyX2gKIAotI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiUmVw
bGF5YWJsZVRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEV2ZW50U2VuZGVyIHsKK2NsYXNz
IERvY3VtZW50OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEV2ZW50U2VuZGVyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVudFNlbmRlcik7IFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IEV2ZW50U2VuZGVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlKTsKKyAgICBFdmVudFNlbmRlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQorICAgICAgICA6IG1fZG9jdW1lbnQoZG9jdW1l
bnQpCisgICAgICAgICwgbV9ldmVudFR5cGUoZXZlbnRUeXBlKQorICAgICAgICAsIG1fdGltZXIo
dGhpcywgJkV2ZW50U2VuZGVyOjp0aW1lckZpcmVkKQorICAgIHsKKyAgICB9CiAKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRUeXBlOyB9
CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50U29vbihUKik7CkBAIC00Miw1MSArNTEsNTMgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7CiAKICNpZm5kZWYgTkRFQlVH
Ci0gICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKFQqIHNlbmRlcikgY29uc3QKKyAgICBib29sIGhh
c1BlbmRpbmdFdmVudHMoVCogY2xpZW50KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
ZGlzcGF0Y2hTb29uTGlzdC5maW5kKHNlbmRlcikgIT0gbm90Rm91bmQgfHwgbV9kaXNwYXRjaGlu
Z0xpc3QuZmluZChzZW5kZXIpICE9IG5vdEZvdW5kOworICAgICAgICByZXR1cm4gbV9kaXNwYXRj
aFNvb25MaXN0LmZpbmQoY2xpZW50KSAhPSBub3RGb3VuZCB8fCBtX2Rpc3BhdGNoaW5nTGlzdC5m
aW5kKGNsaWVudCkgIT0gbm90Rm91bmQ7CiAgICAgfQogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAg
dm9pZCB0aW1lckZpcmVkKFRpbWVyPEV2ZW50U2VuZGVyPFQ+PiYpIHsgZGlzcGF0Y2hQZW5kaW5n
RXZlbnRzKCk7IH0KKyAgICB2b2lkIHRpbWVyRmlyZWQoUmVwbGF5YWJsZVRpbWVyPEV2ZW50U2Vu
ZGVyPFQ+PiYpIHsgZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7IH0KIAorICAgIERvY3VtZW50JiBt
X2RvY3VtZW50OwogICAgIEF0b21pY1N0cmluZyBtX2V2ZW50VHlwZTsKLSAgICBUaW1lcjxFdmVu
dFNlbmRlcjxUPj4gbV90aW1lcjsKKyAgICBSZXBsYXlhYmxlVGltZXI8RXZlbnRTZW5kZXI8VD4+
IG1fdGltZXI7CiAgICAgVmVjdG9yPFQqPiBtX2Rpc3BhdGNoU29vbkxpc3Q7CiAgICAgVmVjdG9y
PFQqPiBtX2Rpc3BhdGNoaW5nTGlzdDsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEV2ZW50
U2VuZGVyPFQ+OjpFdmVudFNlbmRlcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKLSAg
ICA6IG1fZXZlbnRUeXBlKGV2ZW50VHlwZSkKLSAgICAsIG1fdGltZXIodGhpcywgJkV2ZW50U2Vu
ZGVyOjp0aW1lckZpcmVkKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIEV2ZW50U2VuZGVy
PFQ+OjpkaXNwYXRjaEV2ZW50U29vbihUKiBjbGllbnQpCiB7Ci19CisgICAgQVNTRVJUX0FSRyhj
bGllbnQsIGNsaWVudCk7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZlbnRTZW5kZXI8
VD46OmRpc3BhdGNoRXZlbnRTb29uKFQqIHNlbmRlcikKLXsKLSAgICBtX2Rpc3BhdGNoU29vbkxp
c3QuYXBwZW5kKHNlbmRlcik7CisgICAgbV9kaXNwYXRjaFNvb25MaXN0LmFwcGVuZChjbGllbnQp
OwogICAgIGlmICghbV90aW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3RpbWVyLnN0YXJ0T25l
U2hvdCgwKTsKKyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCwgJm1fZG9jdW1lbnQpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIEV2ZW50U2VuZGVyPFQ+OjpjYW5jZWxFdmVu
dChUKiBzZW5kZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCBFdmVudFNlbmRlcjxUPjo6
Y2FuY2VsRXZlbnQoVCogY2xpZW50KQogewotICAgIC8vIFJlbW92ZSBpbnN0YW5jZXMgb2YgdGhp
cyBzZW5kZXIgZnJvbSBib3RoIGxpc3RzLgorICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQp
OworCisgICAgLy8gUmVtb3ZlIGluc3RhbmNlcyBvZiB0aGlzIGNsaWVudCBmcm9tIGJvdGggbGlz
dHMuCiAgICAgLy8gVXNlIGxvb3BzIGJlY2F1c2Ugd2UgYWxsb3cgbXVsdGlwbGUgaW5zdGFuY2Vz
IHRvIGdldCBpbnRvIHRoZSBsaXN0cy4KICAgICBzaXplX3Qgc2l6ZSA9IG1fZGlzcGF0Y2hTb29u
TGlzdC5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAg
ICAgICAgaWYgKG1fZGlzcGF0Y2hTb29uTGlzdFtpXSA9PSBzZW5kZXIpCi0gICAgICAgICAgICBt
X2Rpc3BhdGNoU29vbkxpc3RbaV0gPSAwOworICAgICAgICBpZiAobV9kaXNwYXRjaFNvb25MaXN0
W2ldID09IGNsaWVudCkKKyAgICAgICAgICAgIG1fZGlzcGF0Y2hTb29uTGlzdFtpXSA9IG51bGxw
dHI7CiAgICAgfQogICAgIHNpemUgPSBtX2Rpc3BhdGNoaW5nTGlzdC5zaXplKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKG1fZGlzcGF0Y2hp
bmdMaXN0W2ldID09IHNlbmRlcikKLSAgICAgICAgICAgIG1fZGlzcGF0Y2hpbmdMaXN0W2ldID0g
MDsKKyAgICAgICAgaWYgKG1fZGlzcGF0Y2hpbmdMaXN0W2ldID09IGNsaWVudCkKKyAgICAgICAg
ICAgIG1fZGlzcGF0Y2hpbmdMaXN0W2ldID0gbnVsbHB0cjsKICAgICB9CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHZvaWQgRXZlbnRTZW5kZXI8VD46OmRpc3BhdGNoUGVuZGluZ0V2ZW50cygp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCBFdmVudFNlbmRlcjxUPjo6ZGlzcGF0Y2hQZW5k
aW5nRXZlbnRzKCkKIHsKICAgICAvLyBOZWVkIHRvIGF2b2lkIHJlLWVudGVyaW5nIHRoaXMgZnVu
Y3Rpb247IGlmIG5ldyBkaXNwYXRjaGVzIGFyZQogICAgIC8vIHNjaGVkdWxlZCBiZWZvcmUgdGhl
IHBhcmVudCBmaW5pc2hlcyBwcm9jZXNzaW5nIHRoZSBsaXN0LCB0aGV5CkBAIC05NiwxNCArMTA3
LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZlbnRTZW5kZXI8VD46OmRpc3BhdGNo
UGVuZGluZ0V2ZW50cygpCiAKICAgICBtX3RpbWVyLnN0b3AoKTsKIAotICAgIG1fZGlzcGF0Y2hT
b29uTGlzdC5jaGVja0NvbnNpc3RlbmN5KCk7Ci0KICAgICBtX2Rpc3BhdGNoaW5nTGlzdC5zd2Fw
KG1fZGlzcGF0Y2hTb29uTGlzdCk7CiAgICAgc2l6ZV90IHNpemUgPSBtX2Rpc3BhdGNoaW5nTGlz
dC5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAg
ICAgaWYgKFQqIHNlbmRlciA9IG1fZGlzcGF0Y2hpbmdMaXN0W2ldKSB7Ci0gICAgICAgICAgICBt
X2Rpc3BhdGNoaW5nTGlzdFtpXSA9IDA7Ci0gICAgICAgICAgICBzZW5kZXItPmRpc3BhdGNoUGVu
ZGluZ0V2ZW50KHRoaXMpOworICAgICAgICBpZiAoVCogY2xpZW50ID0gbV9kaXNwYXRjaGluZ0xp
c3RbaV0pIHsKKyAgICAgICAgICAgIG1fZGlzcGF0Y2hpbmdMaXN0W2ldID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIGNsaWVudC0+ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoKnRoaXMpOwogICAgICAgICB9
CiAgICAgfQogICAgIG1fZGlzcGF0Y2hpbmdMaXN0LmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhcmVkRXZlbnRTZW5kZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFyZWRFdmVudFNlbmRlcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjNzQ5MDEzOTI4YjMwZjUzMGI4
MWUyNTE2YTY0MjZmNDQzZGJlNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhcmVkRXZlbnRTZW5kZXJzLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZEV2ZW50
U2VuZGVycy5oIgorCisjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TFN0eWxlRWxlbWVudC5oIgorI2luY2x1ZGUgIkltYWdlTG9hZGVyLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworRXZlbnRTZW5kZXI8SFRNTExpbmtFbGVtZW50PiYgU2hhcmVkRXZlbnRTZW5k
ZXJzOjpsaW5rTG9hZEV2ZW50U2VuZGVyKCkKK3sKKyAgICBpZiAoIW1fbGlua0xvYWRFdmVudFNl
bmRlcikKKyAgICAgICAgbV9saW5rTG9hZEV2ZW50U2VuZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxF
dmVudFNlbmRlcjxIVE1MTGlua0VsZW1lbnQ+PihtX2RvY3VtZW50LCBldmVudE5hbWVzKCkubG9h
ZEV2ZW50KTsKKworICAgIHJldHVybiAqbV9saW5rTG9hZEV2ZW50U2VuZGVyOworfQorCitFdmVu
dFNlbmRlcjxIVE1MU3R5bGVFbGVtZW50PiYgU2hhcmVkRXZlbnRTZW5kZXJzOjpzdHlsZUxvYWRF
dmVudFNlbmRlcigpCit7CisgICAgaWYgKCFtX3N0eWxlTG9hZEV2ZW50U2VuZGVyKQorICAgICAg
ICBtX3N0eWxlTG9hZEV2ZW50U2VuZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFNlbmRlcjxI
VE1MU3R5bGVFbGVtZW50Pj4obV9kb2N1bWVudCwgZXZlbnROYW1lcygpLmxvYWRFdmVudCk7CisK
KyAgICByZXR1cm4gKm1fc3R5bGVMb2FkRXZlbnRTZW5kZXI7Cit9CisKK0V2ZW50U2VuZGVyPElt
YWdlTG9hZGVyPiYgU2hhcmVkRXZlbnRTZW5kZXJzOjppbWFnZUJlZm9yZWxvYWRFdmVudFNlbmRl
cigpCit7CisgICAgaWYgKCFtX2ltYWdlQmVmb3JlbG9hZEV2ZW50U2VuZGVyKQorICAgICAgICBt
X2ltYWdlQmVmb3JlbG9hZEV2ZW50U2VuZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFNlbmRl
cjxJbWFnZUxvYWRlcj4+KG1fZG9jdW1lbnQsIGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQp
OworCisgICAgcmV0dXJuICptX2ltYWdlQmVmb3JlbG9hZEV2ZW50U2VuZGVyOworfQorCitFdmVu
dFNlbmRlcjxJbWFnZUxvYWRlcj4mIFNoYXJlZEV2ZW50U2VuZGVyczo6aW1hZ2VMb2FkRXZlbnRT
ZW5kZXIoKQoreworICAgIGlmICghbV9pbWFnZUxvYWRFdmVudFNlbmRlcikKKyAgICAgICAgbV9p
bWFnZUxvYWRFdmVudFNlbmRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRTZW5kZXI8SW1hZ2VM
b2FkZXI+PihtX2RvY3VtZW50LCBldmVudE5hbWVzKCkubG9hZEV2ZW50KTsKKworICAgIHJldHVy
biAqbV9pbWFnZUxvYWRFdmVudFNlbmRlcjsKK30KKworRXZlbnRTZW5kZXI8SW1hZ2VMb2FkZXI+
JiBTaGFyZWRFdmVudFNlbmRlcnM6OmltYWdlRXJyb3JFdmVudFNlbmRlcigpCit7CisgICAgaWYg
KCFtX2ltYWdlRXJyb3JFdmVudFNlbmRlcikKKyAgICAgICAgbV9pbWFnZUVycm9yRXZlbnRTZW5k
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50U2VuZGVyPEltYWdlTG9hZGVyPj4obV9kb2N1bWVu
dCwgZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOworCisgICAgcmV0dXJuICptX2ltYWdlRXJyb3JF
dmVudFNlbmRlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYXJlZEV2ZW50U2VuZGVycy5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYXJlZEV2ZW50U2VuZGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5ZDNhOTQyMDdmMzJhMzI0ZmQ4MjM3
OWUzMmVlYzU5NzNjNjRiODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhcmVkRXZlbnRTZW5kZXJzLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgU2hhcmVkRXZlbnRTZW5kZXJzX2gKKyNkZWZpbmUgU2hhcmVkRXZl
bnRTZW5kZXJzX2gKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJFdmVudFNl
bmRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEhUTUxMaW5rRWxlbWVudDsK
K2NsYXNzIEhUTUxTdHlsZUVsZW1lbnQ7CitjbGFzcyBJbWFnZUxvYWRlcjsKKworY2xhc3MgU2hh
cmVkRXZlbnRTZW5kZXJzIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFyZWRFdmVudFNl
bmRlcnMpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBT
aGFyZWRFdmVudFNlbmRlcnMoRG9jdW1lbnQmIGRvY3VtZW50KQorICAgICAgICA6IG1fZG9jdW1l
bnQoZG9jdW1lbnQpCisgICAgeworICAgIH0KKworICAgIEV2ZW50U2VuZGVyPEhUTUxMaW5rRWxl
bWVudD4mIGxpbmtMb2FkRXZlbnRTZW5kZXIoKTsKKyAgICBFdmVudFNlbmRlcjxIVE1MU3R5bGVF
bGVtZW50PiYgc3R5bGVMb2FkRXZlbnRTZW5kZXIoKTsKKyAgICBFdmVudFNlbmRlcjxJbWFnZUxv
YWRlcj4mIGltYWdlQmVmb3JlbG9hZEV2ZW50U2VuZGVyKCk7CisgICAgRXZlbnRTZW5kZXI8SW1h
Z2VMb2FkZXI+JiBpbWFnZUxvYWRFdmVudFNlbmRlcigpOworICAgIEV2ZW50U2VuZGVyPEltYWdl
TG9hZGVyPiYgaW1hZ2VFcnJvckV2ZW50U2VuZGVyKCk7Citwcml2YXRlOgorICAgIERvY3VtZW50
JiBtX2RvY3VtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFNlbmRlcjxIVE1MTGlua0Vs
ZW1lbnQ+PiBtX2xpbmtMb2FkRXZlbnRTZW5kZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50
U2VuZGVyPEhUTUxTdHlsZUVsZW1lbnQ+PiBtX3N0eWxlTG9hZEV2ZW50U2VuZGVyOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxFdmVudFNlbmRlcjxJbWFnZUxvYWRlcj4+IG1faW1hZ2VCZWZvcmVsb2Fk
RXZlbnRTZW5kZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50U2VuZGVyPEltYWdlTG9hZGVy
Pj4gbV9pbWFnZUxvYWRFdmVudFNlbmRlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRTZW5k
ZXI8SW1hZ2VMb2FkZXI+PiBtX2ltYWdlRXJyb3JFdmVudFNlbmRlcjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNoYXJlZEV2ZW50U2VuZGVyc19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggYjg1MTE0NWYwOGY3MTgyMjg0NWEz
OGI1NDE2MDM2YTlkMzY3YTU1NC4uMmMzZjExOWJkMDA0YmRmYmQ3MDA5NzlkOTMxNDYzNjEzMTcz
N2UyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNDcsNiAr
NDcsNyBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNoYXJlZEV2ZW50U2VuZGVy
cy5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlUmVz
b2x2ZUZvckRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCkBAIC01
NywxMCArNTgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKLXN0YXRpYyBMaW5rRXZlbnRTZW5kZXImIGxpbmtMb2FkRXZlbnRTZW5kZXIoKQor
TGlua0V2ZW50U2VuZGVyJiBIVE1MTGlua0VsZW1lbnQ6OmxpbmtMb2FkRXZlbnRTZW5kZXIoKSBj
b25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChMaW5rRXZlbnRTZW5k
ZXIsIHNoYXJlZExvYWRFdmVudFNlbmRlciwgKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpKTsKLSAg
ICByZXR1cm4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyOworICAgIHJldHVybiBkb2N1bWVudCgpLnNo
YXJlZEV2ZW50U2VuZGVycygpLmxpbmtMb2FkRXZlbnRTZW5kZXIoKTsKIH0KIAogaW5saW5lIEhU
TUxMaW5rRWxlbWVudDo6SFRNTExpbmtFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCkBAIC0zNjEsMTQg
KzM2MSw5IEBAIGJvb2wgSFRNTExpbmtFbGVtZW50OjpzaGVldExvYWRlZCgpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2
ZW50cygpCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoTGlua0V2
ZW50U2VuZGVyJiBldmVudFNlbmRlcikKIHsKLSAgICBsaW5rTG9hZEV2ZW50U2VuZGVyKCkuZGlz
cGF0Y2hQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgSFRNTExpbmtFbGVtZW50OjpkaXNwYXRj
aFBlbmRpbmdFdmVudChMaW5rRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKQotewotICAgIEFTU0VS
VF9VTlVTRUQoZXZlbnRTZW5kZXIsIGV2ZW50U2VuZGVyID09ICZsaW5rTG9hZEV2ZW50U2VuZGVy
KCkpOworICAgIEFTU0VSVF9VTlVTRUQoZXZlbnRTZW5kZXIsICZldmVudFNlbmRlciA9PSAmbGlu
a0xvYWRFdmVudFNlbmRlcigpKTsKICAgICBpZiAobV9sb2FkZWRTaGVldCkKICAgICAgICAgbGlu
a0xvYWRlZCgpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCmlu
ZGV4IDY1YjMyNDE3NjAxMDgxOTNhMjljOTczYTA5YzlkMWU1YzVkNzNlNTkuLmE0MjlmYWJlN2Y3
ZTg1MDljMmI4Y2ZkYWE0YTg1ZjFjMDM5N2RiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuaApAQCAtNjgsOCArNjgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaXplcyhj
b25zdCBTdHJpbmcmKTsKICAgICBET01TZXR0YWJsZVRva2VuTGlzdCogc2l6ZXMoKSBjb25zdDsK
IAotICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nRXZlbnQoTGlua0V2ZW50U2VuZGVyKik7Ci0gICAg
c3RhdGljIHZvaWQgZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOworICAgIHZvaWQgZGlzcGF0
Y2hQZW5kaW5nRXZlbnQoTGlua0V2ZW50U2VuZGVyJik7CisgICAgTGlua0V2ZW50U2VuZGVyJiBs
aW5rTG9hZEV2ZW50U2VuZGVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCmluZGV4
IGM1OWVmMTY4NWQ2YmJjNmU1Yzk3ZWI3Y2IxYTc4NTFlMjc3MTdhNjkuLjcwNmVkOTAwNGJkYjk4
Yjk0M2E3M2NlZjhiMDJiMzE3ZDRlZDFhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5
bGVFbGVtZW50LmNwcApAQCAtMzMsMTYgKzMzLDE2IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJTaGFyZWRFdmVudFNlbmRlcnMuaCIKICNp
bmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgU3R5bGVFdmVudFNlbmRlciYgc3R5
bGVMb2FkRXZlbnRTZW5kZXIoKQorU3R5bGVFdmVudFNlbmRlciYgSFRNTFN0eWxlRWxlbWVudDo6
c3R5bGVMb2FkRXZlbnRTZW5kZXIoKSBjb25zdAogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTdHlsZUV2ZW50U2VuZGVyLCBzaGFyZWRMb2FkRXZlbnRTZW5kZXIsIChldmVu
dE5hbWVzKCkubG9hZEV2ZW50KSk7Ci0gICAgcmV0dXJuIHNoYXJlZExvYWRFdmVudFNlbmRlcjsK
KyAgICByZXR1cm4gZG9jdW1lbnQoKS5zaGFyZWRFdmVudFNlbmRlcnMoKS5zdHlsZUxvYWRFdmVu
dFNlbmRlcigpOwogfQogCiBpbmxpbmUgSFRNTFN0eWxlRWxlbWVudDo6SFRNTFN0eWxlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wg
Y3JlYXRlZEJ5UGFyc2VyKQpAQCAtMTE0LDE0ICsxMTQsOSBAQCB2b2lkIEhUTUxTdHlsZUVsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIG1fc3R5
bGVTaGVldE93bmVyLmNoaWxkcmVuQ2hhbmdlZCgqdGhpcyk7CiB9CiAKLXZvaWQgSFRNTFN0eWxl
RWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpCit2b2lkIEhUTUxTdHlsZUVsZW1l
bnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KFN0eWxlRXZlbnRTZW5kZXImIGV2ZW50U2VuZGVyKQog
ewotICAgIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7Ci19
Ci0KLXZvaWQgSFRNTFN0eWxlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoU3R5bGVFdmVu
dFNlbmRlciogZXZlbnRTZW5kZXIpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChldmVudFNlbmRlciwg
ZXZlbnRTZW5kZXIgPT0gJnN0eWxlTG9hZEV2ZW50U2VuZGVyKCkpOworICAgIEFTU0VSVF9VTlVT
RUQoZXZlbnRTZW5kZXIsICZldmVudFNlbmRlciA9PSAmc3R5bGVMb2FkRXZlbnRTZW5kZXIoKSk7
CiAgICAgaWYgKG1fbG9hZGVkU2hlZXQpCiAgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICBlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCmluZGV4IDk5NTdiYTUwNzAyODIxYWJh
ZWY2OGQwNzIyZmU3ZDU2ZjE2NDQzODAuLjJkN2VhYTliNWQyYzc2NDUyMDczNDdmNWVkMGVjMWNl
ZTM0OTc0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCkBAIC00NCw4
ICs0NCw5IEBAIHB1YmxpYzoKICAgICBib29sIGRpc2FibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXREaXNhYmxlZChib29sKTsKIAotICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nRXZlbnQoU3R5bGVF
dmVudFNlbmRlciopOwotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMo
KTsKKyAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0V2ZW50KFN0eWxlRXZlbnRTZW5kZXImKTsKKwor
ICAgIFN0eWxlRXZlbnRTZW5kZXImIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkgY29uc3Q7CiAKIHBy
aXZhdGU6CiAgICAgSFRNTFN0eWxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVy
LmNwcAppbmRleCA3ZDk0ZmM4NmY3NmE4ZWM2ODY1YTY3MGI0MDlkOTliMDYyNjZmMTk4Li5hYTVh
NDY5ZDEzMTg0ZDlmNDdmZDhjYzI3NDU0Y2ViNWZkNzQ3YTEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJbWFn
ZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0ltYWdlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKKyNpbmNsdWRlICJTaGFyZWRFdmVudFNlbmRlcnMuaCIKICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogI2lmIEVOQUJMRShWSURFTykKQEAgLTYzLDIyICs2NCwxOSBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBWYWx1ZUNoZWNrPFdlYkNvcmU6OkltYWdlTG9hZGVyKj4gewogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBJbWFnZUV2ZW50U2VuZGVyJiBiZWZvcmVMb2Fk
RXZlbnRTZW5kZXIoKQorSW1hZ2VFdmVudFNlbmRlciYgSW1hZ2VMb2FkZXI6OmJlZm9yZUxvYWRF
dmVudFNlbmRlcigpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEltYWdlRXZl
bnRTZW5kZXI+IHNlbmRlcihldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50KTsKLSAgICByZXR1
cm4gc2VuZGVyOworICAgIHJldHVybiBtX2VsZW1lbnQuZG9jdW1lbnQoKS5zaGFyZWRFdmVudFNl
bmRlcnMoKS5pbWFnZUJlZm9yZWxvYWRFdmVudFNlbmRlcigpOwogfQogCi1zdGF0aWMgSW1hZ2VF
dmVudFNlbmRlciYgbG9hZEV2ZW50U2VuZGVyKCkKK0ltYWdlRXZlbnRTZW5kZXImIEltYWdlTG9h
ZGVyOjpsb2FkRXZlbnRTZW5kZXIoKSBjb25zdAogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxJbWFnZUV2ZW50U2VuZGVyPiBzZW5kZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCk7Ci0gICAg
cmV0dXJuIHNlbmRlcjsKKyAgICByZXR1cm4gbV9lbGVtZW50LmRvY3VtZW50KCkuc2hhcmVkRXZl
bnRTZW5kZXJzKCkuaW1hZ2VMb2FkRXZlbnRTZW5kZXIoKTsKIH0KIAotc3RhdGljIEltYWdlRXZl
bnRTZW5kZXImIGVycm9yRXZlbnRTZW5kZXIoKQorSW1hZ2VFdmVudFNlbmRlciYgSW1hZ2VMb2Fk
ZXI6OmVycm9yRXZlbnRTZW5kZXIoKSBjb25zdAogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxJbWFnZUV2ZW50U2VuZGVyPiBzZW5kZXIoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOwotICAg
IHJldHVybiBzZW5kZXI7CisgICAgcmV0dXJuIG1fZWxlbWVudC5kb2N1bWVudCgpLnNoYXJlZEV2
ZW50U2VuZGVycygpLmltYWdlRXJyb3JFdmVudFNlbmRlcigpOwogfQogCiBzdGF0aWMgaW5saW5l
IGJvb2wgcGFnZUlzQmVpbmdEaXNtaXNzZWQoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMzc5LDEw
ICszNzcsMTAgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dGltZXJGaXJlZChUaW1lcjxJbWFnZUxvYWRl
cj4mKQogICAgIGVsZW1lbnQoKS5kZXJlZigpOwogfQogCi12b2lkIEltYWdlTG9hZGVyOjpkaXNw
YXRjaFBlbmRpbmdFdmVudChJbWFnZUV2ZW50U2VuZGVyKiBldmVudFNlbmRlcikKK3ZvaWQgSW1h
Z2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KEltYWdlRXZlbnRTZW5kZXImIGV2ZW50U2Vu
ZGVyKQogewotICAgIEFTU0VSVChldmVudFNlbmRlciA9PSAmYmVmb3JlTG9hZEV2ZW50U2VuZGVy
KCkgfHwgZXZlbnRTZW5kZXIgPT0gJmxvYWRFdmVudFNlbmRlcigpIHx8IGV2ZW50U2VuZGVyID09
ICZlcnJvckV2ZW50U2VuZGVyKCkpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
ID0gZXZlbnRTZW5kZXItPmV2ZW50VHlwZSgpOworICAgIEFTU0VSVCgmZXZlbnRTZW5kZXIgPT0g
JmJlZm9yZUxvYWRFdmVudFNlbmRlcigpIHx8ICZldmVudFNlbmRlciA9PSAmbG9hZEV2ZW50U2Vu
ZGVyKCkgfHwgJmV2ZW50U2VuZGVyID09ICZlcnJvckV2ZW50U2VuZGVyKCkpOworICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlID0gZXZlbnRTZW5kZXIuZXZlbnRUeXBlKCk7CiAgICAg
aWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50KQogICAgICAgICBk
aXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnQoKTsKICAgICBpZiAoZXZlbnRUeXBlID09IGV2
ZW50TmFtZXMoKS5sb2FkRXZlbnQpCkBAIC00NDgsMjEgKzQ0Niw2IEBAIHZvaWQgSW1hZ2VMb2Fk
ZXI6OmRpc3BhdGNoUGVuZGluZ0Vycm9yRXZlbnQoKQogICAgIHVwZGF0ZWRIYXNQZW5kaW5nRXZl
bnQoKTsKIH0KIAotdm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2
ZW50cygpCi17Ci0gICAgYmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZl
bnRzKCk7Ci19Ci0KLXZvaWQgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMo
KQotewotICAgIGxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOwotfQot
Ci12b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdFcnJvckV2ZW50cygpCi17Ci0gICAg
ZXJyb3JFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOwotfQotCiB2b2lkIElt
YWdlTG9hZGVyOjplbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQoKQogewogICAgIGNsZWFyRmFp
bGVkTG9hZFVSTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAppbmRleCA1ZjM3MjRj
Y2FiYjY1ZWZhNzhiZmRmODY3ZGExZjI3OGQ0ZGRkNzNkLi4zNmJhNThlOGM0NGVkMzZiZDEyNDgx
YWQ0MGRiNjUxMmZiNGJlZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1h
Z2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaApAQCAt
NjUsMTEgKzY1LDExIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BlbmRpbmdCZWZvcmVMb2FkRXZl
bnQoKSBjb25zdCB7IHJldHVybiBtX2hhc1BlbmRpbmdCZWZvcmVMb2FkRXZlbnQ7IH0KICAgICBi
b29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUGVuZGluZ0xvYWRF
dmVudCB8fCBtX2hhc1BlbmRpbmdFcnJvckV2ZW50OyB9CiAKLSAgICB2b2lkIGRpc3BhdGNoUGVu
ZGluZ0V2ZW50KEltYWdlRXZlbnRTZW5kZXIqKTsKKyAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0V2
ZW50KEltYWdlRXZlbnRTZW5kZXImKTsKIAotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGlu
Z0JlZm9yZUxvYWRFdmVudHMoKTsKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFBlbmRpbmdMb2Fk
RXZlbnRzKCk7Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hQZW5kaW5nRXJyb3JFdmVudHMoKTsK
KyAgICBJbWFnZUV2ZW50U2VuZGVyJiBiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKSBjb25zdDsKKyAg
ICBJbWFnZUV2ZW50U2VuZGVyJiBsb2FkRXZlbnRTZW5kZXIoKSBjb25zdDsKKyAgICBJbWFnZUV2
ZW50U2VuZGVyJiBlcnJvckV2ZW50U2VuZGVyKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBl
eHBsaWNpdCBJbWFnZUxvYWRlcihFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDExZTM0N2UwM2E1YmYzMGUyMzNlMjYz
NjAwYTVlOTMyMTY1M2E1MzMuLjQ1ZWE5OTVjZWVmNzMwMGU0YzBjYzRlNzI2ZmI3OTc5NjhjMmQ4
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiU1ZHU3R5bGVFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNp
bmNsdWRlICJTaGFyZWRFdmVudFNlbmRlcnMuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCiAjaW5jbHVkZSAiVHJlZURlcHRoTGltaXQuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+
CkBAIC0xMjAsOSArMTIxLDYgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gaW5wdXRTb3VyY2UpCiAgICAgfQogCiAgICAgZG9Xcml0ZShzb3Vy
Y2UudG9TdHJpbmcoKSk7Ci0KLSAgICAvLyBBZnRlciBwYXJzaW5nLCBnbyBhaGVhZCBhbmQgZGlz
cGF0Y2ggaW1hZ2UgYmVmb3JlbG9hZCBldmVudHMuCi0gICAgSW1hZ2VMb2FkZXI6OmRpc3BhdGNo
UGVuZGluZ0JlZm9yZUxvYWRFdmVudHMoKTsKIH0KIAogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6
aGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbSwgVGV4
dFBvc2l0aW9uIHBvc2l0aW9uKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238735</attachid>
            <date>2014-09-26 13:42:12 -0700</date>
            <delta_ts>2014-09-26 15:04:08 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-136051-20140926134159.patch</filename>
            <type>text/plain</type>
            <size>32178</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZjYmRjZmFkYjI1MDA4
ZDRmMGI4OWEwZWUzMzYwM2FjYzUyMDExOC4uMjRlNTYyZDdmNmRiZGY2NGNkMDM3NDRlZDI3NmNk
OTY4YTkyZTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE0LTA4LTE4ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgUmVwbGF5
OiBFdmVudFNlbmRlciBkaXNwYXRjaGVzIHNob3VsZCBiZSBkZXRlcm1pbmlzdGljIGFuZCBwZXIt
RG9jdW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNjA1MQorCisgICAgICAgIEV2ZW50U2VuZGVyIHVzZXMgYSBUaW1lciB0byBhc3luY2hyb25v
dXNseSBkaXNwYXRjaCB0aGUgc2FtZSBldmVudCB0byBtdWx0aXBsZQorICAgICAgICBlbGVtZW50
cyBvZiB0aGUgc2FtZSB0eXBlIG9uIGEgZnV0dXJlIHJ1biBsb29wLiBUaGlzIGlzIG5vbmRldGVy
bWluaXN0aWMgYmVjYXVzZQorICAgICAgICBzdGF0aWMgaW5zdGFuY2VzIGFyZSBzaGFyZWQgYmV0
d2VlbiBhbGwgRG9jdW1lbnRzIGluIHRoZSBzYW1lIHByb2Nlc3MuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBzaGFyZXMgRXZlbnRTZW5kZXIgaW5zdGFuY2VzIGFtb25nIGVsZW1lbnRzIGluIHRoZSBz
YW1lIERvY3VtZW50LgorICAgICAgICBUaGUgZXZlbnQgZGlzcGF0Y2hpbmcgaXMgbWFkZSBkZXRl
cm1pbmlzdGljIGJ5IHVzaW5nIGEgUmVwbGF5YWJsZVRpbWVyLgorCisgICAgICAgIE5vcm1hbCAo
bm9uLXJlcGxheSkgZnVuY3Rpb25hbGl0eSBpcyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UpOiBEaXNwYXRjaCBw
ZW5kaW5nIGV2ZW50cyBmb3IgdGhpcyBkb2N1bWVudCBvbmx5LgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNoYXJlZEV2ZW50U2VuZGVycyk6
CisgICAgICAgICogZG9tL0V2ZW50U2VuZGVyLmg6IEtlZXAgYSBEb2N1bWVudCByZWZlcmVuY2Ug
YXJvdW5kIGZvciBmaXJpbmcgdGhlIHRpbWVyLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTZW5k
ZXI6OkV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U2VuZGVyOjpoYXNQZW5k
aW5nRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U2VuZGVyOjp0aW1lckZpcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U2VuZGVyPFQ+OjpkaXNwYXRjaEV2ZW50U29vbik6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFNlbmRlcjxUPjo6Y2FuY2VsRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRTZW5kZXI8VD46OmRpc3BhdGNoUGVuZGluZ0V2ZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudFNlbmRlcjxUPjo6RXZlbnRTZW5kZXIpOiBEZWxldGVkLiBUaGUgdHlw
ZSBhcmd1bWVudCB3YXMgbm90IG5lY2Vzc2FyeS4KKworICAgICAgICAqIGRvbS9TaGFyZWRFdmVu
dFNlbmRlcnMuY3BwOiBBZGRlZC4gTGF6aWx5IGNyZWF0ZXMgZXZlbnQgc2VuZGVycyBhcyB0aGV5
IGFyZSByZXF1ZXN0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRFdmVudFNlbmRlcnM6Omxp
bmtMb2FkRXZlbnRTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkRXZlbnRTZW5kZXJz
OjpzdHlsZUxvYWRFdmVudFNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRFdmVudFNl
bmRlcnM6OmltYWdlQmVmb3JlbG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEV2ZW50U2VuZGVyczo6aW1hZ2VMb2FkRXZlbnRTZW5kZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkRXZlbnRTZW5kZXJzOjppbWFnZUVycm9yRXZlbnRTZW5kZXIpOgorICAgICAgICAq
IGRvbS9TaGFyZWRFdmVudFNlbmRlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRFdmVudFNlbmRlcnM6OlNoYXJlZEV2ZW50U2VuZGVycyk6CisgICAgICAgICogaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpsaW5r
TG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6ZGlz
cGF0Y2hQZW5kaW5nRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6bGlua0xvYWRFdmVudFNlbmRl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNo
UGVuZGluZ0xvYWRFdmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnN0eWxlTG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnN0eWxlTG9hZEV2ZW50U2VuZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMpOiBEZWxl
dGVkLgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5oOgorICAgICAgICAqIGxvYWRl
ci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6YmVmb3Jl
TG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpsb2FkRXZl
bnRTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OmVycm9yRXZlbnRTZW5k
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0V2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmJlZm9yZUxvYWRFdmVudFNlbmRlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpsb2FkRXZlbnRTZW5kZXIpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6ZXJyb3JFdmVudFNlbmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50cyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJy
b3JFdmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorCisg
ICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKTogUmVtb3ZlIGFuIGVhcmx5IGNhbGwgdG8g
dGhlIEV2ZW50U2VuZGVyIGZvciBpbWFnZSBiZWZvcmVsb2FkCisgICAgICAgIGV2ZW50cy4gVGhp
cyB3YXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIGJ1dCBpcyBubyBsb25nZXIgc2FmZSBz
aW5jZSB0aGUgZG9jdW1lbnQgKGFuZCB0aHVzCisgICAgICAgIHRoZSBldmVudCBzZW5kZXIpIG1h
eSBub3QgYmUgYXZhaWxhYmxlIGluIGEgc3luY2hyb25vdXMgZG9jdW1lbnQgd3JpdGUuCisKIDIw
MTQtMDctMTUgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgogCiAgICAg
ICAgIFdlYiBSZXBsYXk6IG1ha2UgY2FsbHMgaW50byBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29t
cGxldGUoKSBkZXRlcm1pbmlzdGljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGJmNGYzNTM3YjYwNWJiMjJkNTBlNGQyZDg5MDkx
NmM2NjM2NWVmOC4uMjRmNzJhNmJiOWViNDUxN2Q0NDAzNWQwMTRkYzQ3ZWEyNjJkNzU5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNTUxMCw2ICs1NTEwLDkgQEAKIAkJQzNDRjE3QTYxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDM0NGMTdBMjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJQzNDRjE3QTcxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzNDRjE3QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUM0MDBEMTA5MThGMUM4RjYwMDkwRDg2MyAvKiBFdmVudExvb3BJbnB1dC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDAwRDEwODE4RjFDOEY2
MDA5MEQ4NjMgLyogRXZlbnRMb29wSW5wdXQuY3BwICovOyB9OworCQlDNDk0NzRBMTE5QTI4NDdD
MDA5QjNERTggLyogU2hhcmVkRXZlbnRTZW5kZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDk0NzRBMDE5QTI4NDdDMDA5QjNERTggLyogU2hhcmVk
RXZlbnRTZW5kZXJzLmggKi87IH07CisJCUM0OTQ3NEE4MTlBMkQ2MTIwMDlCM0RFOCAvKiBFdmVu
dFNlbmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0U1Q0IxQjMxNEVEQUI2RjAwQkIyNzk1IC8qIEV2ZW50U2VuZGVyLmggKi87IH07CisJCUM0OTQ3
NEFBMTlBMkUyRTUwMDlCM0RFOCAvKiBTaGFyZWRFdmVudFNlbmRlcnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzQ5NDc0QTkxOUEyRTJFNTAwOUIz
REU4IC8qIFNoYXJlZEV2ZW50U2VuZGVycy5jcHAgKi87IH07CiAJCUM0Q0Q2MjlBMTgzODM3NjYw
MDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNENENjI5ODE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVT
bmFwc2hvdHRpbmcuY3BwICovOyB9OwogCQlDNENENjI5QjE4MzgzNzY2MDA3RUJBRjEgLyogRnJh
bWVTbmFwc2hvdHRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM0Q0Q2Mjk5MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM0RDRGNTJC
MTk3NUM4OEIwMDNFRjVCQyAvKiBSZXBsYXlhYmxlVGltZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRENEY1MjcxOTc1Qzg4QjAwM0VGNUJDIC8q
IFJlcGxheWFibGVUaW1lci5jcHAgKi87IH07CkBAIC0xMjkyNSw2ICsxMjkyOCw4IEBACiAJCUMz
Q0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzRTYxQzY1M0E2NDgwN0E4M0U3NkZCOCAv
KiBNYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzQwMEQxMDgxOEYxQzhGNjAwOTBEODYzIC8qIEV2ZW50TG9vcElucHV0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50TG9vcElucHV0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzQ5NDc0QTAxOUEyODQ3QzAwOUIzREU4IC8q
IFNoYXJlZEV2ZW50U2VuZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRFdmVudFNlbmRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzQ5NDc0
QTkxOUEyRTJFNTAwOUIzREU4IC8qIFNoYXJlZEV2ZW50U2VuZGVycy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRFdmVudFNlbmRlcnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDNENENjI5ODE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVT
bmFwc2hvdHRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJh
bWVTbmFwc2hvdHRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNENENjI5
OTE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVTbmFwc2hvdHRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzRENEY1MjcxOTc1Qzg4QjAwM0VGNUJDIC8qIFJlcGxheWFibGVUaW1lci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXBsYXlhYmxlVGltZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI3NzUsNiArMjI3ODAsOCBAQAog
CQkJCUU0NTMyMkFBMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggKi8sCiAJCQkJ
QTZEMTY5NjExMzQ2QjQ5QjAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuY3BwICovLAogCQkJCUE2RDE2
OTYzMTM0NkI0QzEwMDBFQjc3MCAvKiBTaGFkb3dSb290LmggKi8sCisJCQkJQzQ5NDc0QTkxOUEy
RTJFNTAwOUIzREU4IC8qIFNoYXJlZEV2ZW50U2VuZGVycy5jcHAgKi8sCisJCQkJQzQ5NDc0QTAx
OUEyODQ3QzAwOUIzREU4IC8qIFNoYXJlZEV2ZW50U2VuZGVycy5oICovLAogCQkJCTMxNzQxQUFC
MTY2MzVFNDUwMDhBNUI3RSAvKiBTaW11bGF0ZWRDbGlja09wdGlvbnMuaCAqLywKIAkJCQlEMDFB
MjdBQjEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5jcHAgKi8sCiAJCQkJRDAx
QTI3QUMxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuaCAqLywKQEAgLTIzMzY4
LDYgKzIzMzc1LDcgQEAKIAkJCQkwNzAzNjNFMDE4MUExQ0RDMDBDMDc0QTUgLyogQVZBdWRpb0Nh
cHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDM2M0UyMTgxQTFDREMwMEMwNzRB
NSAvKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzAzNjNF
NDE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCUM0OTQ3NEE4MTlBMkQ2MTIwMDlCM0RFOCAvKiBFdmVudFNlbmRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0QzMzZGNjIxN0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDM2M0U2MTgxQTFDREMwMEMwNzRBNSAv
KiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzgwRkJC
OUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjY0MDUs
NiArMjY0MTMsNyBAQAogCQkJCTg1MDMxQjRGMEE0NEVGQzcwMEY5OTJFMCAvKiBVSUV2ZW50V2l0
aEtleVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQTQ3MzlEMjE3NTdBRkVDMDBFNzY3Njcg
LyogVUlSZXF1ZXN0RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMkQ4QTc5MTQ5OTdDQ0Yw
MEVDRUYzRSAvKiBVbmRvU3RlcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzQ5NDc0QTExOUEyODQ3
QzAwOUIzREU4IC8qIFNoYXJlZEV2ZW50U2VuZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg2
M0UyMDExMzQzNDEyMDAwMjc0OTI2IC8qIFVuaWNvZGVCaWRpLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNEFGQ0ZBNTBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRDA4NkZFOTgwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjgwNzAsNiArMjgwNzksNyBAQAogCQkJCTg5MzFERTVCMTRDNDRDNDQwMDBE
QzlEMiAvKiBKU0Jsb2JDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0OUUyODcxMDdE
NERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1
REYzMjM5MDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc0dyYWRpZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUM0OTQ3NEFBMTlBMkUyRTUwMDlCM0RFOCAvKiBTaGFyZWRFdmVudFNlbmRlcnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERjMyM0IwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2Fu
dmFzUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFRDE0MjEwNTE5Njk0MDAwOTlG
QUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5
RUVEMTQ0MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQ4NTEzYWZkODQyOTMz
M2JiYWUwMjljNDUwM2E5OTRhODEyZWIzZTcuLjcwZDU4NDY3MTRjN2Y2YjU5MDZmODU2N2IzOTlj
ZTM1MmEwYjRhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTM4LDYgKzEzOCw3IEBA
CiAjaW5jbHVkZSAiU2VsZWN0b3JRdWVyeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlNoYXJlZEV2ZW50U2VuZGVycy5oIgogI2lu
Y2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNp
bmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKQEAgLTQ3Miw2ICs0NzMsNyBAQCBEb2N1bWVu
dDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1l
bnRDbGFzc2VzLCB1bnNpZwogICAgICwgbV9zYXdFbGVtZW50c0luS25vd25OYW1lc3BhY2VzKGZh
bHNlKQogICAgICwgbV9pc1NyY2RvY0RvY3VtZW50KGZhbHNlKQogICAgICwgbV9ldmVudFF1ZXVl
KCp0aGlzKQorICAgICwgbV9zaGFyZWRFdmVudFNlbmRlcnMoc3RkOjptYWtlX3VuaXF1ZTxTaGFy
ZWRFdmVudFNlbmRlcnM+KCp0aGlzKSkKICAgICAsIG1fd2Vha0ZhY3RvcnkodGhpcykKICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgLCBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVu
KDApCkBAIC0yMzgzLDE3ICsyMzg1LDE1IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2Uo
KQogICAgIGlmIChmKSB7CiAgICAgICAgIGYtPmxvYWRlcigpLmljb24oKS5zdGFydExvYWRlcigp
OwogICAgICAgICBmLT5hbmltYXRpb24oKS5zdGFydEFuaW1hdGlvbnNJZk5vdFN1c3BlbmRlZCh0
aGlzKTsKLQotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGRpc3BhdGNoaW5nIHBl
bmRpbmcgZXZlbnRzIGdsb2JhbGx5IG9uIGFsbCBEb2N1bWVudHMgaGVyZS4KLSAgICAgICAgLy8g
Rm9yIG5vdywgb25seSBkbyB0aGlzIHdoZW4gdGhlcmUgaXMgYSBGcmFtZSwgb3RoZXJ3aXNlIHRo
aXMgY291bGQgY2F1c2UgSlMgcmVlbnRyYW5jeQotICAgICAgICAvLyBiZWxvdyBTVkcgZm9udCBw
YXJzaW5nLCBmb3IgZXhhbXBsZS4gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEzNjI2OT4KLSAgICAg
ICAgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudHMoKTsKLSAgICAg
ICAgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKLSAgICAgICAgSW1h
Z2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0Vycm9yRXZlbnRzKCk7Ci0gICAgICAgIEhUTUxMaW5r
RWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOwotICAgICAgICBIVE1MU3R5bGVF
bGVtZW50OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7CiAgICAgfQogCisgICAgc2hhcmVk
RXZlbnRTZW5kZXJzKCkuaW1hZ2VCZWZvcmVsb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRp
bmdFdmVudHMoKTsKKyAgICBzaGFyZWRFdmVudFNlbmRlcnMoKS5pbWFnZUxvYWRFdmVudFNlbmRl
cigpLmRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOworICAgIHNoYXJlZEV2ZW50U2VuZGVycygpLmlt
YWdlRXJyb3JFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOworCisgICAgc2hh
cmVkRXZlbnRTZW5kZXJzKCkubGlua0xvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2
ZW50cygpOworICAgIHNoYXJlZEV2ZW50U2VuZGVycygpLnN0eWxlTG9hZEV2ZW50U2VuZGVyKCku
ZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7CisKICAgICAvLyBUbyBhbGlnbiB0aGUgSFRNTCBsb2Fk
IGV2ZW50IGFuZCB0aGUgU1ZHTG9hZCBldmVudCBmb3IgdGhlIG91dGVybW9zdCA8c3ZnPiBlbGVt
ZW50LCBmaXJlIGl0IGZyb20KICAgICAvLyBoZXJlLCBpbnN0ZWFkIG9mIGRvaW5nIGl0IGZyb20g
U1ZHRWxlbWVudDo6ZmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4gKGlmIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQ9ImZhbHNlIiwKICAgICAvLyB3aGljaCBpcyB0aGUgZGVmYXVsdCwgZm9yID0ndHJ1
ZScgaXRzIGZpcmVkIGF0IGEgbGF0ZXIgdGltZSwgb25jZSBhbGwgZXh0ZXJuYWwgcmVzb3VyY2Vz
IGZpbmlzaGVkIGxvYWRpbmcpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBmNzU0YmM0NjBmMDBh
YjgyNDcyNjkzMjI0M2U2ZTdmMmM1YjdjYmQzLi41OTczYjMzMGQxNDEyMzFjNzBjYjJjMjliYzlk
ZjBlMmE3YzcwOGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTQ1LDYgKzE0NSw3IEBAIGNs
YXNzIFNlbGVjdG9yUXVlcnlDYWNoZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNs
YXNzIFNlZ21lbnRlZFN0cmluZzsKIGNsYXNzIFNldHRpbmdzOworY2xhc3MgU2hhcmVkRXZlbnRT
ZW5kZXJzOwogY2xhc3MgU3R5bGVSZXNvbHZlcjsKIGNsYXNzIFN0eWxlU2hlZXQ7CiBjbGFzcyBT
dHlsZVNoZWV0Q29udGVudHM7CkBAIC0xMTIzLDYgKzExMjQsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBlbnF1ZXVlUG9wc3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c3RhdGVPYmplY3QpOwogICAgIHZpcnR1YWwgRG9jdW1lbnRFdmVudFF1ZXVlJiBldmVudFF1ZXVl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ldmVudFF1ZXVlOyB9CiAKKyAgICBTaGFyZWRF
dmVudFNlbmRlcnMmIHNoYXJlZEV2ZW50U2VuZGVycygpIGNvbnN0IHsgcmV0dXJuICptX3NoYXJl
ZEV2ZW50U2VuZGVyczsgfQorCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRNZWRpYUNhblN0
YXJ0TGlzdGVuZXIoTWVkaWFDYW5TdGFydExpc3RlbmVyKik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVNZWRpYUNhblN0YXJ0TGlzdGVuZXIoTWVkaWFDYW5TdGFydExpc3RlbmVyKik7
CiAgICAgTWVkaWFDYW5TdGFydExpc3RlbmVyKiB0YWtlQW55TWVkaWFDYW5TdGFydExpc3RlbmVy
KCk7CkBAIC0xNTcwLDYgKzE1NzMsOCBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJW
aWV3PiBtX3JlbmRlclZpZXc7CiAgICAgbXV0YWJsZSBEb2N1bWVudEV2ZW50UXVldWUgbV9ldmVu
dFF1ZXVlOwogCisgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZEV2ZW50U2VuZGVycz4g
bV9zaGFyZWRFdmVudFNlbmRlcnM7CisKICAgICBXZWFrUHRyRmFjdG9yeTxEb2N1bWVudD4gbV93
ZWFrRmFjdG9yeTsKIAogICAgIEhhc2hTZXQ8TWVkaWFDYW5TdGFydExpc3RlbmVyKj4gbV9tZWRp
YUNhblN0YXJ0TGlzdGVuZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
U2VuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRTZW5kZXIuaAppbmRleCAwNGZlMjU4
ZjcyMmUyOGFkNGY2Y2UxYTNlNDZhODEzYjFjNGQ1MTI5Li4zYmQyMWRkMzg2NTM1ZDRkMGMzMTJm
ODA1MWNkMzAwMjcwMjYyNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRT
ZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRTZW5kZXIuaApAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsMTUgKzI3LDIzIEBACiAjaWZuZGVmIEV2ZW50U2VuZGVyX2gKICNkZWZpbmUgRXZlbnRTZW5k
ZXJfaAogCi0jaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJSZXBsYXlhYmxlVGltZXIuaCIK
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY2xhc3MgRXZlbnRTZW5kZXIgeworY2xhc3MgRG9jdW1lbnQ7CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgRXZlbnRTZW5kZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEV2ZW50U2VuZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgRXZlbnRTZW5kZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUp
OworICAgIEV2ZW50U2VuZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUpCisgICAgICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAgICAgLCBt
X2V2ZW50VHlwZShldmVudFR5cGUpCisgICAgICAgICwgbV90aW1lcih0aGlzLCAmRXZlbnRTZW5k
ZXI6OnRpbWVyRmlyZWQpCisgICAgeworICAgIH0KIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFR5cGU7IH0KICAgICB2b2lkIGRpc3Bh
dGNoRXZlbnRTb29uKFQmKTsKQEAgLTQyLDQ5ICs1MSw0NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBib29sIGhhc1Bl
bmRpbmdFdmVudHMoVCYgc2VuZGVyKSBjb25zdAorICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyhU
JiBjbGllbnQpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9kaXNwYXRjaFNvb25MaXN0
LmZpbmQoJnNlbmRlcikgIT0gbm90Rm91bmQgfHwgbV9kaXNwYXRjaGluZ0xpc3QuZmluZCgmc2Vu
ZGVyKSAhPSBub3RGb3VuZDsKKyAgICAgICAgcmV0dXJuIG1fZGlzcGF0Y2hTb29uTGlzdC5maW5k
KCZjbGllbnQpICE9IG5vdEZvdW5kIHx8IG1fZGlzcGF0Y2hpbmdMaXN0LmZpbmQoJmNsaWVudCkg
IT0gbm90Rm91bmQ7CiAgICAgfQogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdm9pZCB0aW1lckZp
cmVkKFRpbWVyPEV2ZW50U2VuZGVyPFQ+PiYpIHsgZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7IH0K
KyAgICB2b2lkIHRpbWVyRmlyZWQoUmVwbGF5YWJsZVRpbWVyPEV2ZW50U2VuZGVyPFQ+PiYpIHsg
ZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7IH0KIAorICAgIERvY3VtZW50JiBtX2RvY3VtZW50Owog
ICAgIEF0b21pY1N0cmluZyBtX2V2ZW50VHlwZTsKLSAgICBUaW1lcjxFdmVudFNlbmRlcjxUPj4g
bV90aW1lcjsKKyAgICBSZXBsYXlhYmxlVGltZXI8RXZlbnRTZW5kZXI8VD4+IG1fdGltZXI7CiAg
ICAgVmVjdG9yPFQqPiBtX2Rpc3BhdGNoU29vbkxpc3Q7CiAgICAgVmVjdG9yPFQqPiBtX2Rpc3Bh
dGNoaW5nTGlzdDsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEV2ZW50U2VuZGVyPFQ+OjpF
dmVudFNlbmRlcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKLSAgICA6IG1fZXZlbnRU
eXBlKGV2ZW50VHlwZSkKLSAgICAsIG1fdGltZXIodGhpcywgJkV2ZW50U2VuZGVyOjp0aW1lckZp
cmVkKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIEV2ZW50U2VuZGVyPFQ+OjpkaXNwYXRj
aEV2ZW50U29vbihUJiBjbGllbnQpCiB7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQg
RXZlbnRTZW5kZXI8VD46OmRpc3BhdGNoRXZlbnRTb29uKFQmIHNlbmRlcikKLXsKLSAgICBtX2Rp
c3BhdGNoU29vbkxpc3QuYXBwZW5kKCZzZW5kZXIpOworICAgIG1fZGlzcGF0Y2hTb29uTGlzdC5h
cHBlbmQoJmNsaWVudCk7CiAgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1f
dGltZXIuc3RhcnRPbmVTaG90KDApOworICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwLCAm
bV9kb2N1bWVudCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZlbnRTZW5kZXI8
VD46OmNhbmNlbEV2ZW50KFQmIHNlbmRlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIEV2
ZW50U2VuZGVyPFQ+OjpjYW5jZWxFdmVudChUJiBjbGllbnQpCiB7Ci0gICAgLy8gUmVtb3ZlIGlu
c3RhbmNlcyBvZiB0aGlzIHNlbmRlciBmcm9tIGJvdGggbGlzdHMuCisgICAgLy8gUmVtb3ZlIGlu
c3RhbmNlcyBvZiB0aGlzIGNsaWVudCBmcm9tIGJvdGggbGlzdHMuCiAgICAgLy8gVXNlIGxvb3Bz
IGJlY2F1c2Ugd2UgYWxsb3cgbXVsdGlwbGUgaW5zdGFuY2VzIHRvIGdldCBpbnRvIHRoZSBsaXN0
cy4KICAgICBmb3IgKGF1dG8mIGV2ZW50IDogbV9kaXNwYXRjaFNvb25MaXN0KSB7Ci0gICAgICAg
IGlmIChldmVudCA9PSAmc2VuZGVyKQorICAgICAgICBpZiAoZXZlbnQgPT0gJmNsaWVudCkKICAg
ICAgICAgICAgIGV2ZW50ID0gbnVsbHB0cjsKICAgICB9CiAgICAgZm9yIChhdXRvJiBldmVudCA6
IG1fZGlzcGF0Y2hpbmdMaXN0KSB7Ci0gICAgICAgIGlmIChldmVudCA9PSAmc2VuZGVyKQorICAg
ICAgICBpZiAoZXZlbnQgPT0gJmNsaWVudCkKICAgICAgICAgICAgIGV2ZW50ID0gbnVsbHB0cjsK
ICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZlbnRTZW5kZXI8VD46OmRp
c3BhdGNoUGVuZGluZ0V2ZW50cygpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCBFdmVudFNl
bmRlcjxUPjo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCkKIHsKICAgICAvLyBOZWVkIHRvIGF2b2lk
IHJlLWVudGVyaW5nIHRoaXMgZnVuY3Rpb247IGlmIG5ldyBkaXNwYXRjaGVzIGFyZQogICAgIC8v
IHNjaGVkdWxlZCBiZWZvcmUgdGhlIHBhcmVudCBmaW5pc2hlcyBwcm9jZXNzaW5nIHRoZSBsaXN0
LCB0aGV5CkBAIC05NCwxMyArMTAxLDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZl
bnRTZW5kZXI8VD46OmRpc3BhdGNoUGVuZGluZ0V2ZW50cygpCiAKICAgICBtX3RpbWVyLnN0b3Ao
KTsKIAotICAgIG1fZGlzcGF0Y2hTb29uTGlzdC5jaGVja0NvbnNpc3RlbmN5KCk7Ci0KICAgICBt
X2Rpc3BhdGNoaW5nTGlzdC5zd2FwKG1fZGlzcGF0Y2hTb29uTGlzdCk7CiAgICAgZm9yIChhdXRv
JiBldmVudCA6IG1fZGlzcGF0Y2hpbmdMaXN0KSB7Ci0gICAgICAgIGlmIChUKiBzZW5kZXIgPSBl
dmVudCkgeworICAgICAgICBpZiAoVCogY2xpZW50ID0gZXZlbnQpIHsKICAgICAgICAgICAgIGV2
ZW50ID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHNlbmRlci0+ZGlzcGF0Y2hQZW5kaW5nRXZlbnQo
dGhpcyk7CisgICAgICAgICAgICBjbGllbnQtPmRpc3BhdGNoUGVuZGluZ0V2ZW50KCp0aGlzKTsK
ICAgICAgICAgfQogICAgIH0KICAgICBtX2Rpc3BhdGNoaW5nTGlzdC5jbGVhcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYXJlZEV2ZW50U2VuZGVycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhcmVkRXZlbnRTZW5kZXJzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Yzc0OTAxMzky
OGIzMGY1MzBiODFlMjUxNmE2NDI2ZjQ0M2RiZTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYXJlZEV2ZW50U2VuZGVycy5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
aGFyZWRFdmVudFNlbmRlcnMuaCIKKworI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbWFnZUxvYWRlci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0V2ZW50U2VuZGVyPEhUTUxMaW5rRWxlbWVudD4mIFNoYXJl
ZEV2ZW50U2VuZGVyczo6bGlua0xvYWRFdmVudFNlbmRlcigpCit7CisgICAgaWYgKCFtX2xpbmtM
b2FkRXZlbnRTZW5kZXIpCisgICAgICAgIG1fbGlua0xvYWRFdmVudFNlbmRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RXZlbnRTZW5kZXI8SFRNTExpbmtFbGVtZW50Pj4obV9kb2N1bWVudCwgZXZlbnRO
YW1lcygpLmxvYWRFdmVudCk7CisKKyAgICByZXR1cm4gKm1fbGlua0xvYWRFdmVudFNlbmRlcjsK
K30KKworRXZlbnRTZW5kZXI8SFRNTFN0eWxlRWxlbWVudD4mIFNoYXJlZEV2ZW50U2VuZGVyczo6
c3R5bGVMb2FkRXZlbnRTZW5kZXIoKQoreworICAgIGlmICghbV9zdHlsZUxvYWRFdmVudFNlbmRl
cikKKyAgICAgICAgbV9zdHlsZUxvYWRFdmVudFNlbmRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RXZl
bnRTZW5kZXI8SFRNTFN0eWxlRWxlbWVudD4+KG1fZG9jdW1lbnQsIGV2ZW50TmFtZXMoKS5sb2Fk
RXZlbnQpOworCisgICAgcmV0dXJuICptX3N0eWxlTG9hZEV2ZW50U2VuZGVyOworfQorCitFdmVu
dFNlbmRlcjxJbWFnZUxvYWRlcj4mIFNoYXJlZEV2ZW50U2VuZGVyczo6aW1hZ2VCZWZvcmVsb2Fk
RXZlbnRTZW5kZXIoKQoreworICAgIGlmICghbV9pbWFnZUJlZm9yZWxvYWRFdmVudFNlbmRlcikK
KyAgICAgICAgbV9pbWFnZUJlZm9yZWxvYWRFdmVudFNlbmRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RXZlbnRTZW5kZXI8SW1hZ2VMb2FkZXI+PihtX2RvY3VtZW50LCBldmVudE5hbWVzKCkuYmVmb3Jl
bG9hZEV2ZW50KTsKKworICAgIHJldHVybiAqbV9pbWFnZUJlZm9yZWxvYWRFdmVudFNlbmRlcjsK
K30KKworRXZlbnRTZW5kZXI8SW1hZ2VMb2FkZXI+JiBTaGFyZWRFdmVudFNlbmRlcnM6OmltYWdl
TG9hZEV2ZW50U2VuZGVyKCkKK3sKKyAgICBpZiAoIW1faW1hZ2VMb2FkRXZlbnRTZW5kZXIpCisg
ICAgICAgIG1faW1hZ2VMb2FkRXZlbnRTZW5kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50U2Vu
ZGVyPEltYWdlTG9hZGVyPj4obV9kb2N1bWVudCwgZXZlbnROYW1lcygpLmxvYWRFdmVudCk7CisK
KyAgICByZXR1cm4gKm1faW1hZ2VMb2FkRXZlbnRTZW5kZXI7Cit9CisKK0V2ZW50U2VuZGVyPElt
YWdlTG9hZGVyPiYgU2hhcmVkRXZlbnRTZW5kZXJzOjppbWFnZUVycm9yRXZlbnRTZW5kZXIoKQor
eworICAgIGlmICghbV9pbWFnZUVycm9yRXZlbnRTZW5kZXIpCisgICAgICAgIG1faW1hZ2VFcnJv
ckV2ZW50U2VuZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFNlbmRlcjxJbWFnZUxvYWRlcj4+
KG1fZG9jdW1lbnQsIGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsKKworICAgIHJldHVybiAqbV9p
bWFnZUVycm9yRXZlbnRTZW5kZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFyZWRFdmVudFNlbmRlcnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFyZWRFdmVudFNlbmRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOWQzYTk0MjA3ZjMy
YTMyNGZkODIzNzllMzJlZWM1OTczYzY0YjgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NoYXJlZEV2ZW50U2VuZGVycy5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNoYXJlZEV2ZW50U2VuZGVyc19oCisjZGVmaW5l
IFNoYXJlZEV2ZW50U2VuZGVyc19oCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVk
ZSAiRXZlbnRTZW5kZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIVE1MTGlu
a0VsZW1lbnQ7CitjbGFzcyBIVE1MU3R5bGVFbGVtZW50OworY2xhc3MgSW1hZ2VMb2FkZXI7CisK
K2NsYXNzIFNoYXJlZEV2ZW50U2VuZGVycyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2hh
cmVkRXZlbnRTZW5kZXJzKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgU2hhcmVkRXZlbnRTZW5kZXJzKERvY3VtZW50JiBkb2N1bWVudCkKKyAgICAgICAg
OiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgIHsKKyAgICB9CisKKyAgICBFdmVudFNlbmRlcjxI
VE1MTGlua0VsZW1lbnQ+JiBsaW5rTG9hZEV2ZW50U2VuZGVyKCk7CisgICAgRXZlbnRTZW5kZXI8
SFRNTFN0eWxlRWxlbWVudD4mIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCk7CisgICAgRXZlbnRTZW5k
ZXI8SW1hZ2VMb2FkZXI+JiBpbWFnZUJlZm9yZWxvYWRFdmVudFNlbmRlcigpOworICAgIEV2ZW50
U2VuZGVyPEltYWdlTG9hZGVyPiYgaW1hZ2VMb2FkRXZlbnRTZW5kZXIoKTsKKyAgICBFdmVudFNl
bmRlcjxJbWFnZUxvYWRlcj4mIGltYWdlRXJyb3JFdmVudFNlbmRlcigpOworcHJpdmF0ZToKKyAg
ICBEb2N1bWVudCYgbV9kb2N1bWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRTZW5kZXI8
SFRNTExpbmtFbGVtZW50Pj4gbV9saW5rTG9hZEV2ZW50U2VuZGVyOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxFdmVudFNlbmRlcjxIVE1MU3R5bGVFbGVtZW50Pj4gbV9zdHlsZUxvYWRFdmVudFNlbmRl
cjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRTZW5kZXI8SW1hZ2VMb2FkZXI+PiBtX2ltYWdl
QmVmb3JlbG9hZEV2ZW50U2VuZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFNlbmRlcjxJ
bWFnZUxvYWRlcj4+IG1faW1hZ2VMb2FkRXZlbnRTZW5kZXI7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEV2ZW50U2VuZGVyPEltYWdlTG9hZGVyPj4gbV9pbWFnZUVycm9yRXZlbnRTZW5kZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTaGFyZWRFdmVudFNlbmRlcnNf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGRkNmY5ODc4NDUy
ZmY0MGNiYTA1MTdiOWFmZDIxZGNjYTdkMGY5NjEuLjBmOWEzMDIwYjcxN2M4YTkxY2M5OWZkOWIz
NDQxMTc1ZjRlZDJmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAK
QEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaGFyZWRF
dmVudFNlbmRlcnMuaCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIKICNpbmNsdWRl
ICJTdHlsZVJlc29sdmVGb3JEb2N1bWVudC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50
cy5oIgpAQCAtNTcsMTAgKzU4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgTGlua0V2ZW50U2VuZGVyJiBsaW5rTG9hZEV2ZW50
U2VuZGVyKCkKK0xpbmtFdmVudFNlbmRlciYgSFRNTExpbmtFbGVtZW50OjpsaW5rTG9hZEV2ZW50
U2VuZGVyKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTGlu
a0V2ZW50U2VuZGVyLCBzaGFyZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2
ZW50KSk7Ci0gICAgcmV0dXJuIHNoYXJlZExvYWRFdmVudFNlbmRlcjsKKyAgICByZXR1cm4gZG9j
dW1lbnQoKS5zaGFyZWRFdmVudFNlbmRlcnMoKS5saW5rTG9hZEV2ZW50U2VuZGVyKCk7CiB9CiAK
IGlubGluZSBIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQpA
QCAtMzYxLDE0ICszNjEsOSBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6c2hlZXRMb2FkZWQoKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNoUGVu
ZGluZ0xvYWRFdmVudHMoKQordm9pZCBIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2
ZW50KExpbmtFdmVudFNlbmRlciYgZXZlbnRTZW5kZXIpCiB7Ci0gICAgbGlua0xvYWRFdmVudFNl
bmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOwotfQotCi12b2lkIEhUTUxMaW5rRWxlbWVu
dDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoTGlua0V2ZW50U2VuZGVyKiBldmVudFNlbmRlcikKLXsK
LSAgICBBU1NFUlRfVU5VU0VEKGV2ZW50U2VuZGVyLCBldmVudFNlbmRlciA9PSAmbGlua0xvYWRF
dmVudFNlbmRlcigpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGV2ZW50U2VuZGVyLCAmZXZlbnRTZW5k
ZXIgPT0gJmxpbmtMb2FkRXZlbnRTZW5kZXIoKSk7CiAgICAgaWYgKG1fbG9hZGVkU2hlZXQpCiAg
ICAgICAgIGxpbmtMb2FkZWQoKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaAppbmRleCA0OTcwMWY4NmZlNGU3ZTQzYjExYzI0YmQ3NzU5NWE3MGM0ZjZmYzgzLi5i
ZmI2OTVkYjNjZWIxYjhmMTY3YjU5NzIxMTNhNzlmMmFhZWQ0M2IxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmgKQEAgLTY4LDggKzY4LDggQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U2l6ZXMoY29uc3QgU3RyaW5nJik7CiAgICAgRE9NU2V0dGFibGVUb2tlbkxpc3QqIHNpemVz
KCkgY29uc3Q7CiAKLSAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0V2ZW50KExpbmtFdmVudFNlbmRl
ciopOwotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKKyAgICB2
b2lkIGRpc3BhdGNoUGVuZGluZ0V2ZW50KExpbmtFdmVudFNlbmRlciYpOworICAgIExpbmtFdmVu
dFNlbmRlciYgbGlua0xvYWRFdmVudFNlbmRlcigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50
LmNwcAppbmRleCA2ODA2NDk0OTI4ZGM4MzFjODdkODlkMThlOTdmZjg1OTJhMDYxYjlkLi5kNTk4
NmU1ODM5ZDAyMmU5ZDFlMGJiYjVmMzAzZDRhYjE5YTlkMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTMzLDE2ICszMywxNiBAQAogI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiU2hhcmVkRXZlbnRTZW5k
ZXJzLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotc3RhdGljIFN0eWxlRXZlbnRT
ZW5kZXImIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkKK1N0eWxlRXZlbnRTZW5kZXImIEhUTUxTdHls
ZUVsZW1lbnQ6OnN0eWxlTG9hZEV2ZW50U2VuZGVyKCkgY29uc3QKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVFdmVudFNlbmRlciwgc2hhcmVkTG9hZEV2ZW50U2Vu
ZGVyLCAoZXZlbnROYW1lcygpLmxvYWRFdmVudCkpOwotICAgIHJldHVybiBzaGFyZWRMb2FkRXZl
bnRTZW5kZXI7CisgICAgcmV0dXJuIGRvY3VtZW50KCkuc2hhcmVkRXZlbnRTZW5kZXJzKCkuc3R5
bGVMb2FkRXZlbnRTZW5kZXIoKTsKIH0KIAogaW5saW5lIEhUTUxTdHlsZUVsZW1lbnQ6OkhUTUxT
dHlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3Vt
ZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKQEAgLTExNCwxNCArMTE0LDkgQEAgdm9pZCBIVE1M
U3R5bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkK
ICAgICBtX3N0eWxlU2hlZXRPd25lci5jaGlsZHJlbkNoYW5nZWQoKnRoaXMpOwogfQogCi12b2lk
IEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKQordm9pZCBIVE1M
U3R5bGVFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudChTdHlsZUV2ZW50U2VuZGVyJiBldmVu
dFNlbmRlcikKIHsKLSAgICBzdHlsZUxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2
ZW50cygpOwotfQotCi12b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50
KFN0eWxlRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKQotewotICAgIEFTU0VSVF9VTlVTRUQoZXZl
bnRTZW5kZXIsIGV2ZW50U2VuZGVyID09ICZzdHlsZUxvYWRFdmVudFNlbmRlcigpKTsKKyAgICBB
U1NFUlRfVU5VU0VEKGV2ZW50U2VuZGVyLCAmZXZlbnRTZW5kZXIgPT0gJnN0eWxlTG9hZEV2ZW50
U2VuZGVyKCkpOwogICAgIGlmIChtX2xvYWRlZFNoZWV0KQogICAgICAgICBkaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAg
ICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAppbmRleCA5OTU3YmE1
MDcwMjgyMWFiYWVmNjhkMDcyMmZlN2Q1NmYxNjQ0MzgwLi4yZDdlYWE5YjVkMmM3NjQ1MjA3MzQ3
ZjVlZDBlYzFjZWUzNDk3NGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dHlsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQu
aApAQCAtNDQsOCArNDQsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaXNhYmxlZCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCk7CiAKLSAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0V2
ZW50KFN0eWxlRXZlbnRTZW5kZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFBlbmRpbmdM
b2FkRXZlbnRzKCk7CisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudChTdHlsZUV2ZW50U2Vu
ZGVyJik7CisKKyAgICBTdHlsZUV2ZW50U2VuZGVyJiBzdHlsZUxvYWRFdmVudFNlbmRlcigpIGNv
bnN0OwogCiBwcml2YXRlOgogICAgIEhUTUxTdHlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5jcHAKaW5kZXggOWJhZDliNDdlNGM2ZmY1ZWI5NmY4YWJhZWY5MmE3MmY1NmY0
MjU0MS4uZWEzNDBmOTMzMWVjMGRjMGFjOTA5ODBiOGU4MTczZmZlYjU0YzQxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAi
UmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdJbWFnZS5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2hhcmVkRXZlbnRTZW5kZXJzLmgiCiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNpZiBFTkFCTEUoVklERU8pCkBAIC02MywyMiAr
NjQsMTkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmFsdWVDaGVjazxXZWJDb3JlOjpJbWFnZUxvYWRl
cio+IHsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgSW1hZ2VFdmVudFNlbmRlciYg
YmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkKK0ltYWdlRXZlbnRTZW5kZXImIEltYWdlTG9hZGVyOjpi
ZWZvcmVMb2FkRXZlbnRTZW5kZXIoKSBjb25zdAogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxJbWFnZUV2ZW50U2VuZGVyPiBzZW5kZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCk7
Ci0gICAgcmV0dXJuIHNlbmRlcjsKKyAgICByZXR1cm4gbV9lbGVtZW50LmRvY3VtZW50KCkuc2hh
cmVkRXZlbnRTZW5kZXJzKCkuaW1hZ2VCZWZvcmVsb2FkRXZlbnRTZW5kZXIoKTsKIH0KIAotc3Rh
dGljIEltYWdlRXZlbnRTZW5kZXImIGxvYWRFdmVudFNlbmRlcigpCitJbWFnZUV2ZW50U2VuZGVy
JiBJbWFnZUxvYWRlcjo6bG9hZEV2ZW50U2VuZGVyKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2VFdmVudFNlbmRlcj4gc2VuZGVyKGV2ZW50TmFtZXMoKS5sb2FkRXZl
bnQpOwotICAgIHJldHVybiBzZW5kZXI7CisgICAgcmV0dXJuIG1fZWxlbWVudC5kb2N1bWVudCgp
LnNoYXJlZEV2ZW50U2VuZGVycygpLmltYWdlTG9hZEV2ZW50U2VuZGVyKCk7CiB9CiAKLXN0YXRp
YyBJbWFnZUV2ZW50U2VuZGVyJiBlcnJvckV2ZW50U2VuZGVyKCkKK0ltYWdlRXZlbnRTZW5kZXIm
IEltYWdlTG9hZGVyOjplcnJvckV2ZW50U2VuZGVyKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SW1hZ2VFdmVudFNlbmRlcj4gc2VuZGVyKGV2ZW50TmFtZXMoKS5lcnJvckV2
ZW50KTsKLSAgICByZXR1cm4gc2VuZGVyOworICAgIHJldHVybiBtX2VsZW1lbnQuZG9jdW1lbnQo
KS5zaGFyZWRFdmVudFNlbmRlcnMoKS5pbWFnZUVycm9yRXZlbnRTZW5kZXIoKTsKIH0KIAogc3Rh
dGljIGlubGluZSBib29sIHBhZ2VJc0JlaW5nRGlzbWlzc2VkKERvY3VtZW50JiBkb2N1bWVudCkK
QEAgLTM3OSwxMCArMzc3LDEwIEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnRpbWVyRmlyZWQoVGltZXI8
SW1hZ2VMb2FkZXI+JikKICAgICBlbGVtZW50KCkuZGVyZWYoKTsKIH0KIAotdm9pZCBJbWFnZUxv
YWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoSW1hZ2VFdmVudFNlbmRlciogZXZlbnRTZW5kZXIp
Cit2b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdFdmVudChJbWFnZUV2ZW50U2VuZGVy
JiBldmVudFNlbmRlcikKIHsKLSAgICBBU1NFUlQoZXZlbnRTZW5kZXIgPT0gJmJlZm9yZUxvYWRF
dmVudFNlbmRlcigpIHx8IGV2ZW50U2VuZGVyID09ICZsb2FkRXZlbnRTZW5kZXIoKSB8fCBldmVu
dFNlbmRlciA9PSAmZXJyb3JFdmVudFNlbmRlcigpKTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSA9IGV2ZW50U2VuZGVyLT5ldmVudFR5cGUoKTsKKyAgICBBU1NFUlQoJmV2ZW50
U2VuZGVyID09ICZiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKSB8fCAmZXZlbnRTZW5kZXIgPT0gJmxv
YWRFdmVudFNlbmRlcigpIHx8ICZldmVudFNlbmRlciA9PSAmZXJyb3JFdmVudFNlbmRlcigpKTsK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9IGV2ZW50U2VuZGVyLmV2ZW50VHlw
ZSgpOwogICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCkK
ICAgICAgICAgZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCk7CiAgICAgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkubG9hZEV2ZW50KQpAQCAtNDQ4LDIxICs0NDYsNiBAQCB2b2lk
IEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdFcnJvckV2ZW50KCkKICAgICB1cGRhdGVkSGFz
UGVuZGluZ0V2ZW50KCk7CiB9CiAKLXZvaWQgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0Jl
Zm9yZUxvYWRFdmVudHMoKQotewotICAgIGJlZm9yZUxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNo
UGVuZGluZ0V2ZW50cygpOwotfQotCi12b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdM
b2FkRXZlbnRzKCkKLXsKLSAgICBsb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVu
dHMoKTsKLX0KLQotdm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJyb3JFdmVudHMo
KQotewotICAgIGVycm9yRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKLX0K
LQogdm9pZCBJbWFnZUxvYWRlcjo6ZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50KCkKIHsKICAg
ICBjbGVhckZhaWxlZExvYWRVUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5k
ZXggNWYzNzI0Y2NhYmI2NWVmYTc4YmZkZjg2N2RhMWYyNzhkNGRkZDczZC4uMzZiYTU4ZThjNDRl
ZDM2YmQxMjQ4MWFkNDBkYjY1MTJmYjRiZWQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmgKQEAgLTY1LDExICs2NSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQZW5kaW5nQmVm
b3JlTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNQZW5kaW5nQmVmb3JlTG9hZEV2ZW50
OyB9CiAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCB7IHJldHVybiBtX2hhc1Bl
bmRpbmdMb2FkRXZlbnQgfHwgbV9oYXNQZW5kaW5nRXJyb3JFdmVudDsgfQogCi0gICAgdm9pZCBk
aXNwYXRjaFBlbmRpbmdFdmVudChJbWFnZUV2ZW50U2VuZGVyKik7CisgICAgdm9pZCBkaXNwYXRj
aFBlbmRpbmdFdmVudChJbWFnZUV2ZW50U2VuZGVyJik7CiAKLSAgICBzdGF0aWMgdm9pZCBkaXNw
YXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnRzKCk7Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hQ
ZW5kaW5nTG9hZEV2ZW50cygpOwotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGluZ0Vycm9y
RXZlbnRzKCk7CisgICAgSW1hZ2VFdmVudFNlbmRlciYgYmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkg
Y29uc3Q7CisgICAgSW1hZ2VFdmVudFNlbmRlciYgbG9hZEV2ZW50U2VuZGVyKCkgY29uc3Q7Cisg
ICAgSW1hZ2VFdmVudFNlbmRlciYgZXJyb3JFdmVudFNlbmRlcigpIGNvbnN0OwogCiBwcm90ZWN0
ZWQ6CiAgICAgZXhwbGljaXQgSW1hZ2VMb2FkZXIoRWxlbWVudCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAxMWUzNDdlMDNhNWJm
MzBlMjMzZTI2MzYwMGE1ZTkzMjE2NTNhNTMzLi40NWVhOTk1Y2VlZjczMDBlNGMwY2M0ZTcyNmZi
Nzk3OTY4YzJkOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VD
b2RlLmgiCisjaW5jbHVkZSAiU2hhcmVkRXZlbnRTZW5kZXJzLmgiCiAjaW5jbHVkZSAiVGV4dFJl
c291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRyZWVEZXB0aExpbWl0LmgiCiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgpAQCAtMTIwLDkgKzEyMSw2IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmFw
cGVuZChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGlucHV0U291cmNlKQogICAgIH0KIAogICAgIGRv
V3JpdGUoc291cmNlLnRvU3RyaW5nKCkpOwotCi0gICAgLy8gQWZ0ZXIgcGFyc2luZywgZ28gYWhl
YWQgYW5kIGRpc3BhdGNoIGltYWdlIGJlZm9yZWxvYWQgZXZlbnRzLgotICAgIEltYWdlTG9hZGVy
OjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnRzKCk7CiB9CiAKIHZvaWQgWE1MRG9jdW1l
bnRQYXJzZXI6OmhhbmRsZUVycm9yKFhNTEVycm9yczo6RXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNo
YXIqIG0sIFRleHRQb3NpdGlvbiBwb3NpdGlvbikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238741</attachid>
            <date>2014-09-26 15:04:16 -0700</date>
            <delta_ts>2014-10-01 16:04:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136051-20140926150402.patch</filename>
            <type>text/plain</type>
            <size>41516</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk2MzhjMDc5YWIzMjVh
YjFkYWU0MTAxZmM1OTVlODlhZmZmNDcwMC4uMmI0MzgwY2RhYTJjNTA0YzE2Yzg0MzkxOTM5YzFi
NmM1MGZjYmExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc5IEBACiAyMDE0LTA5LTI2ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KIAorICAgICAgICBXZWIgUmVwbGF5
OiBFdmVudFNlbmRlciBkaXNwYXRjaGVzIHNob3VsZCBiZSBwZXItRG9jdW1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjA1MQorCisgICAgICAg
IEV2ZW50U2VuZGVyIHVzZXMgYSBUaW1lciB0byBhc3luY2hyb25vdXNseSBkaXNwYXRjaCB0aGUg
c2FtZSBldmVudCB0byBtdWx0aXBsZQorICAgICAgICBlbGVtZW50cyBvZiB0aGUgc2FtZSB0eXBl
IG9uIGEgZnV0dXJlIHJ1biBsb29wLiBIb3dldmVyLCB3ZSBwcmV2aW91c2x5IGRpc3BhdGNoZWQg
ZXZlbnRzCisgICAgICAgIHRvIGVsZW1lbnRzIGZyb20gYW55IERvY3VtZW50IHJhdGhlciB0aGFu
IHRoZSBvbmUgdGhhdCByZXF1ZXN0ZWQgdGhlIGV2ZW50IHNlbmQuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBjaGFuZ2VzIEV2ZW50U2VuZGVyIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhIHNpbmdsZSBE
b2N1bWVudC4gRXZlbnRTZW5kZXJzCisgICAgICAgIGZvciBlYWNoIERvY3VtZW50IGFyZSBsYXpp
bHkgYWxsb2NhdGVkLiBGdXJ0aGVyIHBlci1Eb2N1bWVudCBvciBnbG9iYWwgb3B0aW1pemF0aW9u
cworICAgICAgICBhcmUgcG9zc2libGUuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWxzbyBsYXlz
IHRoZSBncm91bmR3b3JrIGZvciBtYWtpbmcgRXZlbnRTZW5kZXItcmVsYXRlZCBET00gZXZlbnRz
CisgICAgICAgIGRldGVybWluaXN0aWMgZHVyaW5nIHdlYiByZXBsYXksIHRyYWNrZWQgYXQgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzEzNzA5MD4uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3Zl
cmVkIGJ5IGZhc3QvdGV4dC9zdmctZm9udC10cmlnZ2VyLWxvYWQtZXZlbnQuaHRtbC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbXBsaWNpdENsb3NlKToKKyAgICAg
ICAgRGlzcGF0Y2ggcGVuZGluZyBldmVudHMgZm9yIHRoaXMgZG9jdW1lbnQgb25seS4gUmVuYW1l
IGxvY2FsIHZhcmlhYmxlIGYgdG8gZnJhbWUuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzaGFyZWRFdmVudFNlbmRlcnMpOgorICAgICAg
ICAqIGRvbS9FdmVudFNlbmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTZW5kZXI6OkV2
ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U2VuZGVyOjpoYXNQZW5kaW5nRXZl
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U2VuZGVyPFQ+OjpkaXNwYXRjaEV2ZW50U29v
bik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNlbmRlcjxUPjo6Y2FuY2VsRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRTZW5kZXI8VD46OmRpc3BhdGNoUGVuZGluZ0V2ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFNlbmRlcjxUPjo6RXZlbnRTZW5kZXIpOiBEZWxldGVkLiBU
aGUgdHlwZSBhcmd1bWVudCB3YXMgbm90IG5lY2Vzc2FyeS4KKyAgICAgICAgKiBkb20vU2hhcmVk
RXZlbnRTZW5kZXJzLmNwcDogQWRkZWQuIExhemlseSBjcmVhdGVzIGV2ZW50IHNlbmRlcnMgYXMg
dGhleSBhcmUgcmVxdWVzdGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkRXZlbnRTZW5kZXJz
OjpsaW5rTG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEV2ZW50U2Vu
ZGVyczo6c3R5bGVMb2FkRXZlbnRTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkRXZl
bnRTZW5kZXJzOjppbWFnZUJlZm9yZWxvYWRFdmVudFNlbmRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRFdmVudFNlbmRlcnM6OmltYWdlTG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEV2ZW50U2VuZGVyczo6aW1hZ2VFcnJvckV2ZW50U2VuZGVyKToKKyAgICAg
ICAgKiBkb20vU2hhcmVkRXZlbnRTZW5kZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkRXZlbnRTZW5kZXJzOjpTaGFyZWRFdmVudFNlbmRlcnMpOgorICAgICAgICAqIGh0bWwv
SFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6
fkhUTUxMaW5rRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmRp
c3BhdGNoUGVuZGluZ0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6
bm90aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpsaW5rTG9hZEV2ZW50U2VuZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cyk6IERlbGV0ZWQuCisg
ICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTdHls
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6fkhUTUxT
dHlsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6ZGlzcGF0
Y2hQZW5kaW5nRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6bm90
aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpzdHlsZUxvYWRFdmVudFNlbmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OmJlZm9yZUxvYWRFdmVu
dFNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6bG9hZEV2ZW50U2VuZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjplcnJvckV2ZW50U2VuZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpiZWZvcmVMb2FkRXZlbnRTZW5kZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6bG9hZEV2ZW50U2VuZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmVy
cm9yRXZlbnRTZW5kZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6
OmRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudHMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0Vycm9yRXZlbnRz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuaDoKKyAgICAgICAgKiB4
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERv
Y3VtZW50UGFyc2VyOjphcHBlbmQpOiBSZW1vdmUgYW4gZWFybHkgY2FsbCB0byB0aGUgRXZlbnRT
ZW5kZXIgZm9yIGltYWdlIGJlZm9yZWxvYWQgZXZlbnRzLiBUaGlzIHdhcyBhIHBlcmZvcm1hbmNl
IG9wdGltaXphdGlvbiwgYnV0IGlzIG5vIGxvbmdlciBzYWZlIHNpbmNlIHRoZQorICAgICAgICBk
b2N1bWVudCAoYW5kIHRodXMgdGhlIGV2ZW50IHNlbmRlcikgbWF5IG5vdCBiZSBhdmFpbGFibGUg
aW4gYSBzeW5jaHJvbm91cyBkb2N1bWVudCB3cml0ZS4KKworMjAxNC0wOS0yNiAgQnJpYW4gSi4g
QnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKICAgICAgICAgU3RvcmFnZVRyYWNrZXI6
OmRlbGV0ZU9yaWdpbiBiZWluZyBjYWxsZWQgb2ZmIHRoZSBtYWluIHRocmVhZCAoQVNTRVJUcyBp
biBpbnNwZWN0b3IvdGVzdC1oYXJuZXNzLXRyaXZpYWxseS13b3Jrcy5odG1sIHRlc3QpCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk2NDIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCA4ZGI3ZDdkMTkzYTNjZDlmMTNkNzc5NDg0ZDIxM2JiOGFmYmNk
MDczLi5jZDZhOTM3OWMyNjU4OGNjMTdlYjgxYTBjNWQxMDVmZDAwYWE3NDZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMTQzNyw2ICsxNDM3LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IGRvbS9TZWN1cml0eUNvbnRleHQuY3BwCiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3BwCiAgICAg
ZG9tL1NoYWRvd1Jvb3QuY3BwCisgICAgZG9tL1NoYXJlZEV2ZW50U2VuZGVycy5jcHAKICAgICBk
b20vU3BhY2VTcGxpdFN0cmluZy5jcHAKICAgICBkb20vU3RhdGljTm9kZUxpc3QuY3BwCiAgICAg
ZG9tL1N0cmluZ0NhbGxiYWNrLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2oKaW5kZXggODY2MWJiMTcxOTU5Njk1MzEwZDEyMDZlYTgzZjhkYmE0
MzQwOTQ2Yy4uNWNhNzQ3NDZkYWY4OTBjNDc0YjQ1YWYyMWYxOGI4NDk1N2E1ZDM0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xMzc3
Niw2ICsxMzc3NiwyMCBAQCDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
ICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRvbVxTaGFyZWRF
dmVudFNlbmRlcnMuY3BwIj4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGRvbVxTcGFjZVNwbGl0U3RyaW5nLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CkBAIC0yMDU3OSw2ICsyMDU5Myw3IEBAIO+7vzw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21c
U2VjdXJpdHlDb250ZXh0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21cU2Vs
ZWN0b3JRdWVyeS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9tXFNpbXVsYXRl
ZENsaWNrT3B0aW9ucy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9tXFNoYXJl
ZEV2ZW50U2VuZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21cU3BhY2VT
cGxpdFN0cmluZy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9tXFN0YXRpY0hh
c2hTZXROb2RlTGlzdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9tXFN0YXRp
Y05vZGVMaXN0LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZDcxY2NmZGFjZGI2MWQ0NzgwODFkZDdh
NWNmNGQ5MjdmMDBjYTZjMy4uODhiODM1YmFjYTUzOGYwZGJkNWMxMWVlZDc4MmIwN2E5ZGE3YzAw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycwpAQCAtMzM1NCw2ICszMzU0LDkgQEAg77u/PD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRvbVxT
ZWxlY3RvclF1ZXJ5LmNwcCI+CiAgICAgICA8RmlsdGVyPmRvbTwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZG9tXFNoYXJlZEV2ZW50U2VuZGVy
cy5jcHAiPgorICAgICAgPEZpbHRlcj5kb208L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRvbVxTcGFjZVNwbGl0U3RyaW5nLmNwcCI+CiAgICAg
ICA8RmlsdGVyPmRvbTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTA0NDYsNiArMTA0
NDksOSBAQCDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9tXFNlbGVjdG9yUXVlcnkuaCI+CiAgICAgICA8RmlsdGVy
PmRvbTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cZG9tXFNoYXJlZEV2ZW50U2VuZGVycy5oIj4KKyAgICAgIDxGaWx0ZXI+ZG9tPC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21cU2ltdWxh
dGVkQ2xpY2tPcHRpb25zLmgiPgogICAgICAgPEZpbHRlcj5kb208L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBhNjllOTZjMzYwZTRiOTA0OTQ5MDFhMDc5ODJhMjcyZTRiZTRkYzhlLi5h
ZjEyNmY5NzM1MWUyODQ5YjM0ZjdhYmM5OTdjZDkyYzExZjRmYjMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NTExLDYgKzU1
MTEsOSBAQAogCQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMzQ0YxN0EyMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3Bw
ICovOyB9OwogCQlDM0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
M0NGMTdBMzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzQwMEQxMDkx
OEYxQzhGNjAwOTBEODYzIC8qIEV2ZW50TG9vcElucHV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0MDBEMTA4MThGMUM4RjYwMDkwRDg2MyAvKiBF
dmVudExvb3BJbnB1dC5jcHAgKi87IH07CisJCUM0OTQ3NEExMTlBMjg0N0MwMDlCM0RFOCAvKiBT
aGFyZWRFdmVudFNlbmRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM0OTQ3NEEwMTlBMjg0N0MwMDlCM0RFOCAvKiBTaGFyZWRFdmVudFNlbmRlcnMu
aCAqLzsgfTsKKwkJQzQ5NDc0QTgxOUEyRDYxMjAwOUIzREU4IC8qIEV2ZW50U2VuZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTVDQjFCMzE0RURB
QjZGMDBCQjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLzsgfTsKKwkJQzQ5NDc0QUExOUEyRTJFNTAw
OUIzREU4IC8qIFNoYXJlZEV2ZW50U2VuZGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDk0NzRBOTE5QTJFMkU1MDA5QjNERTggLyogU2hhcmVk
RXZlbnRTZW5kZXJzLmNwcCAqLzsgfTsKIAkJQzRDRDYyOUExODM4Mzc2NjAwN0VCQUYxIC8qIEZy
YW1lU25hcHNob3R0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5j
cHAgKi87IH07CiAJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGlu
Zy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRDRDYy
OTkxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwQjU2MTYxMjExOUQyMzAwOEI0
NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3Mu
Y3BwICovOyB9OwpAQCAtMTI5MjMsNiArMTI5MjYsOCBAQAogCQlDM0NGMTdBMzE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDM0U2MUM2NTNBNjQ4MDdBODNFNzZGQjggLyogTWF0aE1MTWVuY2xvc2VF
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTE1l
bmNsb3NlRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0MDBEMTA4
MThGMUM4RjYwMDkwRDg2MyAvKiBFdmVudExvb3BJbnB1dC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudExvb3BJbnB1dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUM0OTQ3NEEwMTlBMjg0N0MwMDlCM0RFOCAvKiBTaGFyZWRFdmVudFNlbmRl
cnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkRXZlbnRTZW5kZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0OTQ3NEE5MTlBMkUyRTUwMDlCM0RF
OCAvKiBTaGFyZWRFdmVudFNlbmRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2hhcmVkRXZlbnRTZW5kZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzRDRDYyOTgxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lU25hcHNob3R0aW5nLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRDRDYyOTkxODM4Mzc2NjAwN0VCQUYx
IC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZyYW1lU25hcHNob3R0aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MEI1
NjE0MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyb3VwU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjI3NjYsNiArMjI3NzEsOCBAQAogCQkJCUU0NTMyMkFBMTQwQ0UyNjcw
MDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggKi8sCiAJCQkJQTZEMTY5NjExMzQ2QjQ5QjAwMEVC
NzcwIC8qIFNoYWRvd1Jvb3QuY3BwICovLAogCQkJCUE2RDE2OTYzMTM0NkI0QzEwMDBFQjc3MCAv
KiBTaGFkb3dSb290LmggKi8sCisJCQkJQzQ5NDc0QTkxOUEyRTJFNTAwOUIzREU4IC8qIFNoYXJl
ZEV2ZW50U2VuZGVycy5jcHAgKi8sCisJCQkJQzQ5NDc0QTAxOUEyODQ3QzAwOUIzREU4IC8qIFNo
YXJlZEV2ZW50U2VuZGVycy5oICovLAogCQkJCTMxNzQxQUFCMTY2MzVFNDUwMDhBNUI3RSAvKiBT
aW11bGF0ZWRDbGlja09wdGlvbnMuaCAqLywKIAkJCQlEMDFBMjdBQjEwQzlCRkQ4MDAwMjZBNDIg
LyogU3BhY2VTcGxpdFN0cmluZy5jcHAgKi8sCiAJCQkJRDAxQTI3QUMxMEM5QkZEODAwMDI2QTQy
IC8qIFNwYWNlU3BsaXRTdHJpbmcuaCAqLywKQEAgLTIzMzU5LDYgKzIzMzY2LDcgQEAKIAkJCQkw
NzAzNjNFMDE4MUExQ0RDMDBDMDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3MDM2M0UyMTgxQTFDREMwMEMwNzRBNSAvKiBBVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzAzNjNFNDE4MUExQ0RDMDBDMDc0QTUgLyog
QVZNZWRpYUNhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUM0OTQ3NEE4MTlBMkQ2
MTIwMDlCM0RFOCAvKiBFdmVudFNlbmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzMzZGNjIx
N0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3MDM2M0U2MTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzgwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2Jq
ZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjYzOTUsNiArMjY0MDMsNyBAQAogCQkJCTg1
MDMxQjRGMEE0NEVGQzcwMEY5OTJFMCAvKiBVSUV2ZW50V2l0aEtleVN0YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBQTQ3MzlEMjE3NTdBRkVDMDBFNzY3NjcgLyogVUlSZXF1ZXN0RXZlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTlCMkQ4QTc5MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQzQ5NDc0QTExOUEyODQ3QzAwOUIzREU4IC8qIFNoYXJlZEV2
ZW50U2VuZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg2M0UyMDExMzQzNDEyMDAwMjc0OTI2
IC8qIFVuaWNvZGVCaWRpLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFGQ0ZBNTBEQUYyOUEzMDBG
NUY1NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDA4NkZFOTgwOUQ1M0FB
QjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAtMjgwNTksNiAr
MjgwNjgsNyBAQAogCQkJCTg5MzFERTVCMTRDNDRDNDQwMDBEQzlEMiAvKiBKU0Jsb2JDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0OUUyODcxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2Fs
bGJhY2tEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMjM5MDlEMURFNjUwMDBCRTMy
NSAvKiBKU0NhbnZhc0dyYWRpZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM0OTQ3NEFBMTlB
MkUyRTUwMDlCM0RFOCAvKiBTaGFyZWRFdmVudFNlbmRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNjVERjMyM0IwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0OUVFRDE0MjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVEMTQ0MTA1MTk2OTQwMDA5OUZB
QiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDA3MGQwZTdiNmY1NzY4MTM2NWQ0M2RjNGJmZGU0MWViMzQ1
MjZkNzkuLjIzMWYzYjEyMzg1NzQ3ZGYxNzRiMDNhZjNjMDQ5OWJhMzViNzliNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTM4LDYgKzEzOCw3IEBACiAjaW5jbHVkZSAiU2VsZWN0b3JR
dWVyeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgor
I2luY2x1ZGUgIlNoYXJlZEV2ZW50U2VuZGVycy5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGll
cy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29u
dGVudHMuaCIKQEAgLTQ3MSw2ICs0NzIsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZy
YW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzLCB1bnNpZwogICAg
ICwgbV9zYXdFbGVtZW50c0luS25vd25OYW1lc3BhY2VzKGZhbHNlKQogICAgICwgbV9pc1NyY2Rv
Y0RvY3VtZW50KGZhbHNlKQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQorICAgICwgbV9zaGFy
ZWRFdmVudFNlbmRlcnMoc3RkOjptYWtlX3VuaXF1ZTxTaGFyZWRFdmVudFNlbmRlcnM+KCkpCiAg
ICAgLCBtX3dlYWtGYWN0b3J5KHRoaXMpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAg
ICwgbV9hcmVLZXlzRW5hYmxlZEluRnVsbFNjcmVlbigwKQpAQCAtMjQyMSwyMSArMjQyMywxOSBA
QCB2b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKICAgICAvLyAgLVdoZW4gYW55IG5ldyBI
VE1MTGlua0VsZW1lbnQgaXMgaW5zZXJ0ZWQgaW50byB0aGUgZG9jdW1lbnQKICAgICAvLyBCdXQg
dGhvc2UgYWRkIGEgZHluYW1pYyBjb21wb25lbnQgdG8gdGhlIGZhdmljb24gdGhhdCBoYXMgVUkg
CiAgICAgLy8gcmFtaWZpY2F0aW9ucywgYW5kIHdlIG5lZWQgdG8gZGVjaWRlIHdoYXQgaXMgdGhl
IFJpZ2h0IFRoaW5nIFRvIERvKHRtKQotICAgIEZyYW1lKiBmID0gZnJhbWUoKTsKLSAgICBpZiAo
ZikgewotICAgICAgICBmLT5sb2FkZXIoKS5pY29uKCkuc3RhcnRMb2FkZXIoKTsKLSAgICAgICAg
Zi0+YW5pbWF0aW9uKCkuc3RhcnRBbmltYXRpb25zSWZOb3RTdXNwZW5kZWQodGhpcyk7Ci0KLSAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSBkaXNwYXRjaGluZyBwZW5kaW5nIGV2ZW50
cyBnbG9iYWxseSBvbiBhbGwgRG9jdW1lbnRzIGhlcmUuCi0gICAgICAgIC8vIEZvciBub3csIG9u
bHkgZG8gdGhpcyB3aGVuIHRoZXJlIGlzIGEgRnJhbWUsIG90aGVyd2lzZSB0aGlzIGNvdWxkIGNh
dXNlIEpTIHJlZW50cmFuY3kKLSAgICAgICAgLy8gYmVsb3cgU1ZHIGZvbnQgcGFyc2luZywgZm9y
IGV4YW1wbGUuIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzYyNjk+Ci0gICAgICAgIEltYWdlTG9h
ZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnRzKCk7Ci0gICAgICAgIEltYWdlTG9h
ZGVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7Ci0gICAgICAgIEltYWdlTG9hZGVyOjpk
aXNwYXRjaFBlbmRpbmdFcnJvckV2ZW50cygpOwotICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OmRp
c3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKLSAgICAgICAgSFRNTFN0eWxlRWxlbWVudDo6ZGlz
cGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOworICAgIEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1l
KCk7CisgICAgaWYgKGZyYW1lKSB7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5pY29uKCkuc3Rh
cnRMb2FkZXIoKTsKKyAgICAgICAgZnJhbWUtPmFuaW1hdGlvbigpLnN0YXJ0QW5pbWF0aW9uc0lm
Tm90U3VzcGVuZGVkKHRoaXMpOwogICAgIH0KIAorICAgIHNoYXJlZEV2ZW50U2VuZGVycygpLmlt
YWdlQmVmb3JlbG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7CisgICAg
c2hhcmVkRXZlbnRTZW5kZXJzKCkuaW1hZ2VMb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRp
bmdFdmVudHMoKTsKKyAgICBzaGFyZWRFdmVudFNlbmRlcnMoKS5pbWFnZUVycm9yRXZlbnRTZW5k
ZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKKworICAgIHNoYXJlZEV2ZW50U2VuZGVycygp
LmxpbmtMb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKKyAgICBzaGFy
ZWRFdmVudFNlbmRlcnMoKS5zdHlsZUxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2
ZW50cygpOworCiAgICAgLy8gVG8gYWxpZ24gdGhlIEhUTUwgbG9hZCBldmVudCBhbmQgdGhlIFNW
R0xvYWQgZXZlbnQgZm9yIHRoZSBvdXRlcm1vc3QgPHN2Zz4gZWxlbWVudCwgZmlyZSBpdCBmcm9t
CiAgICAgLy8gaGVyZSwgaW5zdGVhZCBvZiBkb2luZyBpdCBmcm9tIFNWR0VsZW1lbnQ6OmZpbmlz
aGVkUGFyc2luZ0NoaWxkcmVuIChpZiBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPSJmYWxzZSIs
CiAgICAgLy8gd2hpY2ggaXMgdGhlIGRlZmF1bHQsIGZvciA9J3RydWUnIGl0cyBmaXJlZCBhdCBh
IGxhdGVyIHRpbWUsIG9uY2UgYWxsIGV4dGVybmFsIHJlc291cmNlcyBmaW5pc2hlZCBsb2FkaW5n
KS4KQEAgLTI0NDYsMTUgKzI0NDYsMTUgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgp
CiAgICAgZW5xdWV1ZVBhZ2VzaG93RXZlbnQoUGFnZXNob3dFdmVudE5vdFBlcnNpc3RlZCk7CiAg
ICAgZW5xdWV1ZVBvcHN0YXRlRXZlbnQobV9wZW5kaW5nU3RhdGVPYmplY3QgPyBtX3BlbmRpbmdT
dGF0ZU9iamVjdC5yZWxlYXNlKCkgOiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgp
KTsKICAgICAKLSAgICBpZiAoZikKLSAgICAgICAgZi0+bG9hZGVyKCkuaGFuZGxlZE9ubG9hZEV2
ZW50cygpOworICAgIGlmIChmcmFtZSkKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLmhhbmRsZWRP
bmxvYWRFdmVudHMoKTsKICNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCiAgICAg
aWYgKCFvd25lckVsZW1lbnQoKSkKICAgICAgICAgcHJpbnRmKCJvbmxvYWQgZmlyZWQgYXQgJWxs
ZFxuIiwgZWxhcHNlZFRpbWUoKS5jb3VudCgpKTsKICNlbmRpZgogCiAgICAgLy8gQW4gZXZlbnQg
aGFuZGxlciBtYXkgaGF2ZSByZW1vdmVkIHRoZSBmcmFtZQotICAgIGlmICghZnJhbWUoKSkgewor
ICAgIGlmICghdGhpcy0+ZnJhbWUoKSkgewogICAgICAgICBtX3Byb2Nlc3NpbmdMb2FkRXZlbnQg
PSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0NjMsNyArMjQ2Myw3IEBAIHZv
aWQgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKQogICAgIC8vIGZpcmVzLiBUaGlzIHdpbGwgaW1w
cm92ZSBvbmxvYWQgc2NvcmVzLCBhbmQgb3RoZXIgYnJvd3NlcnMgZG8gaXQuCiAgICAgLy8gSWYg
dGhleSB3YW5uYSBjaGVhdCwgd2UgY2FuIHRvby4gLWR3aAogCi0gICAgaWYgKGZyYW1lKCktPm5h
dmlnYXRpb25TY2hlZHVsZXIoKS5sb2NhdGlvbkNoYW5nZVBlbmRpbmcoKSAmJiBlbGFwc2VkVGlt
ZSgpIDwgc2V0dGluZ3MoKS0+bGF5b3V0SW50ZXJ2YWwoKSkgeworICAgIGlmICh0aGlzLT5mcmFt
ZSgpLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkubG9jYXRpb25DaGFuZ2VQZW5kaW5nKCkgJiYgZWxh
cHNlZFRpbWUoKSA8IHNldHRpbmdzKCktPmxheW91dEludGVydmFsKCkpIHsKICAgICAgICAgLy8g
SnVzdCBiYWlsIG91dC4gQmVmb3JlIG9yIGR1cmluZyB0aGUgb25sb2FkIHdlIHdlcmUgc2hpZnRl
ZCB0byBhbm90aGVyIHBhZ2UuCiAgICAgICAgIC8vIFRoZSBvbGQgaS1CZW5jaCBzdWl0ZSBkb2Vz
IHRoaXMuIFdoZW4gdGhpcyBoYXBwZW5zIGRvbid0IGJvdGhlciBwYWludGluZyBvciBsYXlpbmcg
b3V0LiAgICAgICAgCiAgICAgICAgIG1fcHJvY2Vzc2luZ0xvYWRFdmVudCA9IGZhbHNlOwpAQCAt
MjQ3MSw3ICsyNDcxLDcgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBmcmFtZSgpLT5sb2FkZXIoKS5jaGVja0NhbGxJbXBsaWNp
dENsb3NlKCk7CisgICAgdGhpcy0+ZnJhbWUoKS0+bG9hZGVyKCkuY2hlY2tDYWxsSW1wbGljaXRD
bG9zZSgpOwogICAgIAogICAgIC8vIFdlIHVzZWQgdG8gZm9yY2UgYSBzeW5jaHJvbm91cyBkaXNw
bGF5IGFuZCBmbHVzaCBoZXJlLiAgVGhpcyByZWFsbHkgaXNuJ3QKICAgICAvLyBuZWNlc3Nhcnkg
YW5kIGNhbiBpbiBmYWN0IGJlIGFjdGl2ZWx5IGhhcm1mdWwgaWYgcGFnZXMgYXJlIGxvYWRpbmcg
YXQgYSByYXRlIG9mID4gNjBmcHMKQEAgLTI0ODgsNyArMjQ4OCw3IEBAIHZvaWQgRG9jdW1lbnQ6
OmltcGxpY2l0Q2xvc2UoKQogICAgIG1fcHJvY2Vzc2luZ0xvYWRFdmVudCA9IGZhbHNlOwogCiAj
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShFRkwpCi0gICAgaWYgKGYgJiYgaGFzTGl2aW5nUmVuZGVyVHJlZSgpICYmIEFYT2Jq
ZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpIHsKKyAgICBpZiAoZnJhbWUgJiYgaGFz
TGl2aW5nUmVuZGVyVHJlZSgpICYmIEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVk
KCkpIHsKICAgICAgICAgLy8gVGhlIEFYIGNhY2hlIG1heSBoYXZlIGJlZW4gY2xlYXJlZCBhdCB0
aGlzIHBvaW50LCBidXQgd2UgbmVlZCB0byBtYWtlIHN1cmUgaXQgY29udGFpbnMgYW4KICAgICAg
ICAgLy8gQVggb2JqZWN0IHRvIHNlbmQgdGhlIG5vdGlmaWNhdGlvbiB0by4gZ2V0T3JDcmVhdGUg
d2lsbCBtYWtlIHN1cmUgdGhhdCBhbiB2YWxpZCBBWCBvYmplY3QKICAgICAgICAgLy8gZXhpc3Rz
IGluIHRoZSBjYWNoZSAod2UgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgYmVjYXVzZSB3ZSBkb24n
dCBuZWVkIGl0IGhlcmUpLiBUaGlzIGlzIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAzN2Q0ZmQz
OWRhYzFiNTcwMWUzNGNmODZiYmVjZjExZDU1MjUzOWJjLi5hZDVkYjJiOTY5MmMxNGNlOTljNzY3
NGY1ODQwZjA0NTRjYWJmNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTQ0LDYgKzE0NCw3
IEBAIGNsYXNzIFNlbGVjdG9yUXVlcnlDYWNoZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTsKIGNsYXNzIFNlZ21lbnRlZFN0cmluZzsKIGNsYXNzIFNldHRpbmdzOworY2xhc3MgU2hhcmVk
RXZlbnRTZW5kZXJzOwogY2xhc3MgU3R5bGVSZXNvbHZlcjsKIGNsYXNzIFN0eWxlU2hlZXQ7CiBj
bGFzcyBTdHlsZVNoZWV0Q29udGVudHM7CkBAIC0xMTE5LDYgKzExMjAsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBlbnF1ZXVlUG9wc3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gc3RhdGVPYmplY3QpOwogICAgIHZpcnR1YWwgRG9jdW1lbnRFdmVudFF1ZXVlJiBldmVu
dFF1ZXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ldmVudFF1ZXVlOyB9CiAKKyAgICBT
aGFyZWRFdmVudFNlbmRlcnMmIHNoYXJlZEV2ZW50U2VuZGVycygpIGNvbnN0IHsgcmV0dXJuICpt
X3NoYXJlZEV2ZW50U2VuZGVyczsgfQorCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRNZWRp
YUNhblN0YXJ0TGlzdGVuZXIoTWVkaWFDYW5TdGFydExpc3RlbmVyKik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZW1vdmVNZWRpYUNhblN0YXJ0TGlzdGVuZXIoTWVkaWFDYW5TdGFydExpc3Rl
bmVyKik7CiAgICAgTWVkaWFDYW5TdGFydExpc3RlbmVyKiB0YWtlQW55TWVkaWFDYW5TdGFydExp
c3RlbmVyKCk7CkBAIC0xNTY4LDYgKzE1NzEsOCBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxS
ZW5kZXJWaWV3PiBtX3JlbmRlclZpZXc7CiAgICAgbXV0YWJsZSBEb2N1bWVudEV2ZW50UXVldWUg
bV9ldmVudFF1ZXVlOwogCisgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZEV2ZW50U2Vu
ZGVycz4gbV9zaGFyZWRFdmVudFNlbmRlcnM7CisKICAgICBXZWFrUHRyRmFjdG9yeTxEb2N1bWVu
dD4gbV93ZWFrRmFjdG9yeTsKIAogICAgIEhhc2hTZXQ8TWVkaWFDYW5TdGFydExpc3RlbmVyKj4g
bV9tZWRpYUNhblN0YXJ0TGlzdGVuZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50U2VuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRTZW5kZXIuaAppbmRleCAw
NGZlMjU4ZjcyMmUyOGFkNGY2Y2UxYTNlNDZhODEzYjFjNGQ1MTI5Li5iZDg2YzQ0NzkxZDExNGM0
ZmVjMGE3MzliNjYwNDA4NTNmMzZkNmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRTZW5kZXIuaApAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGlu
Z3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzEsMTAgKzMyLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8
dHlwZW5hbWUgVD4gY2xhc3MgRXZlbnRTZW5kZXIgewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citj
bGFzcyBFdmVudFNlbmRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnRTZW5kZXIp
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFdmVudFNl
bmRlcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CisgICAgRXZlbnRTZW5kZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCisgICAgICAgIDogbV9ldmVudFR5cGUoZXZlbnRU
eXBlKQorICAgICAgICAsIG1fdGltZXIodGhpcywgJkV2ZW50U2VuZGVyOjp0aW1lckZpcmVkKQor
ICAgIHsKKyAgICB9CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZXZlbnRUeXBlOyB9CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50U29vbihUJik7
CkBAIC00Miw5ICs0OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0V2ZW50
cygpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyhUJiBzZW5k
ZXIpIGNvbnN0CisgICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKFQmIGNsaWVudCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2Rpc3BhdGNoU29vbkxpc3QuZmluZCgmc2VuZGVyKSAhPSBu
b3RGb3VuZCB8fCBtX2Rpc3BhdGNoaW5nTGlzdC5maW5kKCZzZW5kZXIpICE9IG5vdEZvdW5kOwor
ICAgICAgICByZXR1cm4gbV9kaXNwYXRjaFNvb25MaXN0LmZpbmQoJmNsaWVudCkgIT0gbm90Rm91
bmQgfHwgbV9kaXNwYXRjaGluZ0xpc3QuZmluZCgmY2xpZW50KSAhPSBub3RGb3VuZDsKICAgICB9
CiAjZW5kaWYKIApAQCAtNTcsMzQgKzYzLDMxIEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFQqPiBt
X2Rpc3BhdGNoaW5nTGlzdDsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEV2ZW50U2VuZGVy
PFQ+OjpFdmVudFNlbmRlcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKLSAgICA6IG1f
ZXZlbnRUeXBlKGV2ZW50VHlwZSkKLSAgICAsIG1fdGltZXIodGhpcywgJkV2ZW50U2VuZGVyOjp0
aW1lckZpcmVkKQotewotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIEV2ZW50U2VuZGVy
PFQ+OjpkaXNwYXRjaEV2ZW50U29vbihUJiBzZW5kZXIpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K3ZvaWQgRXZlbnRTZW5kZXI8VD46OmRpc3BhdGNoRXZlbnRTb29uKFQmIGNsaWVudCkKIHsKLSAg
ICBtX2Rpc3BhdGNoU29vbkxpc3QuYXBwZW5kKCZzZW5kZXIpOworICAgIG1fZGlzcGF0Y2hTb29u
TGlzdC5hcHBlbmQoJmNsaWVudCk7CiAgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCiAgICAg
ICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2
b2lkIEV2ZW50U2VuZGVyPFQ+OjpjYW5jZWxFdmVudChUJiBzZW5kZXIpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgordm9pZCBFdmVudFNlbmRlcjxUPjo6Y2FuY2VsRXZlbnQoVCYgY2xpZW50KQogewot
ICAgIC8vIFJlbW92ZSBpbnN0YW5jZXMgb2YgdGhpcyBzZW5kZXIgZnJvbSBib3RoIGxpc3RzLgor
ICAgIC8vIFJlbW92ZSBpbnN0YW5jZXMgb2YgdGhpcyBjbGllbnQgZnJvbSBib3RoIGxpc3RzLgog
ICAgIC8vIFVzZSBsb29wcyBiZWNhdXNlIHdlIGFsbG93IG11bHRpcGxlIGluc3RhbmNlcyB0byBn
ZXQgaW50byB0aGUgbGlzdHMuCiAgICAgZm9yIChhdXRvJiBldmVudCA6IG1fZGlzcGF0Y2hTb29u
TGlzdCkgewotICAgICAgICBpZiAoZXZlbnQgPT0gJnNlbmRlcikKKyAgICAgICAgaWYgKGV2ZW50
ID09ICZjbGllbnQpCiAgICAgICAgICAgICBldmVudCA9IG51bGxwdHI7CiAgICAgfQogICAgIGZv
ciAoYXV0byYgZXZlbnQgOiBtX2Rpc3BhdGNoaW5nTGlzdCkgewotICAgICAgICBpZiAoZXZlbnQg
PT0gJnNlbmRlcikKKyAgICAgICAgaWYgKGV2ZW50ID09ICZjbGllbnQpCiAgICAgICAgICAgICBl
dmVudCA9IG51bGxwdHI7CiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIEV2
ZW50U2VuZGVyPFQ+OjpkaXNwYXRjaFBlbmRpbmdFdmVudHMoKQordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK3ZvaWQgRXZlbnRTZW5kZXI8VD46OmRpc3BhdGNoUGVuZGluZ0V2ZW50cygpCiB7CiAgICAg
Ly8gTmVlZCB0byBhdm9pZCByZS1lbnRlcmluZyB0aGlzIGZ1bmN0aW9uOyBpZiBuZXcgZGlzcGF0
Y2hlcyBhcmUKICAgICAvLyBzY2hlZHVsZWQgYmVmb3JlIHRoZSBwYXJlbnQgZmluaXNoZXMgcHJv
Y2Vzc2luZyB0aGUgbGlzdCwgdGhleQpAQCAtOTQsMTMgKzk3LDExIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHZvaWQgRXZlbnRTZW5kZXI8VD46OmRpc3BhdGNoUGVuZGluZ0V2ZW50cygpCiAKICAg
ICBtX3RpbWVyLnN0b3AoKTsKIAotICAgIG1fZGlzcGF0Y2hTb29uTGlzdC5jaGVja0NvbnNpc3Rl
bmN5KCk7Ci0KICAgICBtX2Rpc3BhdGNoaW5nTGlzdC5zd2FwKG1fZGlzcGF0Y2hTb29uTGlzdCk7
CiAgICAgZm9yIChhdXRvJiBldmVudCA6IG1fZGlzcGF0Y2hpbmdMaXN0KSB7Ci0gICAgICAgIGlm
IChUKiBzZW5kZXIgPSBldmVudCkgeworICAgICAgICBpZiAoVCogY2xpZW50ID0gZXZlbnQpIHsK
ICAgICAgICAgICAgIGV2ZW50ID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHNlbmRlci0+ZGlzcGF0
Y2hQZW5kaW5nRXZlbnQodGhpcyk7CisgICAgICAgICAgICBjbGllbnQtPmRpc3BhdGNoUGVuZGlu
Z0V2ZW50KCp0aGlzKTsKICAgICAgICAgfQogICAgIH0KICAgICBtX2Rpc3BhdGNoaW5nTGlzdC5j
bGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYXJlZEV2ZW50U2VuZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhcmVkRXZlbnRTZW5kZXJzLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMTQ1ZGQ0MTMxOWI3YmUzNDY5ODJjNTVjODcxN2Y3ZjU0YWRjZGQxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYXJlZEV2ZW50U2VuZGVycy5jcHAKQEAgLTAs
MCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hp
bmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJTaGFyZWRFdmVudFNlbmRlcnMuaCIKKworI2luY2x1ZGUgIkhUTUxMaW5r
RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbWFn
ZUxvYWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V2ZW50U2VuZGVyPEhUTUxMaW5r
RWxlbWVudD4mIFNoYXJlZEV2ZW50U2VuZGVyczo6bGlua0xvYWRFdmVudFNlbmRlcigpCit7Cisg
ICAgaWYgKCFtX2xpbmtMb2FkRXZlbnRTZW5kZXIpCisgICAgICAgIG1fbGlua0xvYWRFdmVudFNl
bmRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRTZW5kZXI8SFRNTExpbmtFbGVtZW50Pj4oZXZl
bnROYW1lcygpLmxvYWRFdmVudCk7CisKKyAgICByZXR1cm4gKm1fbGlua0xvYWRFdmVudFNlbmRl
cjsKK30KKworRXZlbnRTZW5kZXI8SFRNTFN0eWxlRWxlbWVudD4mIFNoYXJlZEV2ZW50U2VuZGVy
czo6c3R5bGVMb2FkRXZlbnRTZW5kZXIoKQoreworICAgIGlmICghbV9zdHlsZUxvYWRFdmVudFNl
bmRlcikKKyAgICAgICAgbV9zdHlsZUxvYWRFdmVudFNlbmRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RXZlbnRTZW5kZXI8SFRNTFN0eWxlRWxlbWVudD4+KGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpOwor
CisgICAgcmV0dXJuICptX3N0eWxlTG9hZEV2ZW50U2VuZGVyOworfQorCitFdmVudFNlbmRlcjxJ
bWFnZUxvYWRlcj4mIFNoYXJlZEV2ZW50U2VuZGVyczo6aW1hZ2VCZWZvcmVsb2FkRXZlbnRTZW5k
ZXIoKQoreworICAgIGlmICghbV9pbWFnZUJlZm9yZWxvYWRFdmVudFNlbmRlcikKKyAgICAgICAg
bV9pbWFnZUJlZm9yZWxvYWRFdmVudFNlbmRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRTZW5k
ZXI8SW1hZ2VMb2FkZXI+PihldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50KTsKKworICAgIHJl
dHVybiAqbV9pbWFnZUJlZm9yZWxvYWRFdmVudFNlbmRlcjsKK30KKworRXZlbnRTZW5kZXI8SW1h
Z2VMb2FkZXI+JiBTaGFyZWRFdmVudFNlbmRlcnM6OmltYWdlTG9hZEV2ZW50U2VuZGVyKCkKK3sK
KyAgICBpZiAoIW1faW1hZ2VMb2FkRXZlbnRTZW5kZXIpCisgICAgICAgIG1faW1hZ2VMb2FkRXZl
bnRTZW5kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50U2VuZGVyPEltYWdlTG9hZGVyPj4oZXZl
bnROYW1lcygpLmxvYWRFdmVudCk7CisKKyAgICByZXR1cm4gKm1faW1hZ2VMb2FkRXZlbnRTZW5k
ZXI7Cit9CisKK0V2ZW50U2VuZGVyPEltYWdlTG9hZGVyPiYgU2hhcmVkRXZlbnRTZW5kZXJzOjpp
bWFnZUVycm9yRXZlbnRTZW5kZXIoKQoreworICAgIGlmICghbV9pbWFnZUVycm9yRXZlbnRTZW5k
ZXIpCisgICAgICAgIG1faW1hZ2VFcnJvckV2ZW50U2VuZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxF
dmVudFNlbmRlcjxJbWFnZUxvYWRlcj4+KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsKKworICAg
IHJldHVybiAqbV9pbWFnZUVycm9yRXZlbnRTZW5kZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFyZWRFdmVudFNlbmRlcnMu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFyZWRFdmVudFNlbmRlcnMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
OTdjODc4MDI0ZDM1MjJhNDY5ZjA4NzI2ZjM0YzNlOWVmZWIyZmYyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYXJlZEV2ZW50U2VuZGVycy5oCkBAIC0wLDAgKzEsNTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNoYXJlZEV2ZW50U2VuZGVy
c19oCisjZGVmaW5lIFNoYXJlZEV2ZW50U2VuZGVyc19oCisKKyNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCisjaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBIVE1MTGlua0VsZW1lbnQ7CitjbGFzcyBIVE1MU3R5bGVFbGVtZW50OworY2xhc3MgSW1h
Z2VMb2FkZXI7CisKK2NsYXNzIFNoYXJlZEV2ZW50U2VuZGVycyB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoU2hhcmVkRXZlbnRTZW5kZXJzKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgU2hhcmVkRXZlbnRTZW5kZXJzKCkgeyB9CisKKyAgICBFdmVu
dFNlbmRlcjxIVE1MTGlua0VsZW1lbnQ+JiBsaW5rTG9hZEV2ZW50U2VuZGVyKCk7CisgICAgRXZl
bnRTZW5kZXI8SFRNTFN0eWxlRWxlbWVudD4mIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCk7CisgICAg
RXZlbnRTZW5kZXI8SW1hZ2VMb2FkZXI+JiBpbWFnZUJlZm9yZWxvYWRFdmVudFNlbmRlcigpOwor
ICAgIEV2ZW50U2VuZGVyPEltYWdlTG9hZGVyPiYgaW1hZ2VMb2FkRXZlbnRTZW5kZXIoKTsKKyAg
ICBFdmVudFNlbmRlcjxJbWFnZUxvYWRlcj4mIGltYWdlRXJyb3JFdmVudFNlbmRlcigpOworcHJp
dmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRTZW5kZXI8SFRNTExpbmtFbGVtZW50Pj4g
bV9saW5rTG9hZEV2ZW50U2VuZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFNlbmRlcjxI
VE1MU3R5bGVFbGVtZW50Pj4gbV9zdHlsZUxvYWRFdmVudFNlbmRlcjsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXZlbnRTZW5kZXI8SW1hZ2VMb2FkZXI+PiBtX2ltYWdlQmVmb3JlbG9hZEV2ZW50U2Vu
ZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFNlbmRlcjxJbWFnZUxvYWRlcj4+IG1faW1h
Z2VMb2FkRXZlbnRTZW5kZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50U2VuZGVyPEltYWdl
TG9hZGVyPj4gbV9pbWFnZUVycm9yRXZlbnRTZW5kZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBTaGFyZWRFdmVudFNlbmRlcnNfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGRkNmY5ODc4NDUyZmY0MGNiYTA1MTdiOWFmZDIx
ZGNjYTdkMGY5NjEuLmJmYTA1MGYxZGUxZTBiM2IwMWRhODI4YzQ1YWMwMzhjMWIwNDc0MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50U3R5bGVTaGVldENvbGxl
Y3Rpb24uaCIKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50U2VuZGVyLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyQ2xpZW50LmgiCkBAIC00Nyw2ICs0Niw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CisjaW5jbHVkZSAiU2hhcmVkRXZlbnRTZW5kZXJzLmgiCiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0
ZWREYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJTdHlsZVNoZWV0Q29udGVudHMuaCIKQEAgLTU3LDEyICs1Nyw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotc3RhdGljIExpbmtFdmVudFNl
bmRlciYgbGlua0xvYWRFdmVudFNlbmRlcigpCi17Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKExpbmtFdmVudFNlbmRlciwgc2hhcmVkTG9hZEV2ZW50U2VuZGVyLCAoZXZlbnRO
YW1lcygpLmxvYWRFdmVudCkpOwotICAgIHJldHVybiBzaGFyZWRMb2FkRXZlbnRTZW5kZXI7Ci19
Ci0KIGlubGluZSBIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2Vy
KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2xpbmtMb2Fk
ZXIodGhpcykKQEAgLTk0LDcgKzg4LDcgQEAgSFRNTExpbmtFbGVtZW50Ojp+SFRNTExpbmtFbGVt
ZW50KCkKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVudCgpLnN0eWxlU2hl
ZXRDb2xsZWN0aW9uKCkucmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUoKnRoaXMpOwogCi0g
ICAgbGlua0xvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KCp0aGlzKTsKKyAgICBkb2N1bWVu
dCgpLnNoYXJlZEV2ZW50U2VuZGVycygpLmxpbmtMb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVu
dCgqdGhpcyk7CiB9CiAKIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXREaXNhYmxlZFN0YXRlKGJv
b2wgZGlzYWJsZWQpCkBAIC0zNjEsMTQgKzM1NSwxMCBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6
c2hlZXRMb2FkZWQoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBIVE1MTGlua0VsZW1l
bnQ6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKQordm9pZCBIVE1MTGlua0VsZW1lbnQ6OmRp
c3BhdGNoUGVuZGluZ0V2ZW50KEV2ZW50U2VuZGVyPEhUTUxMaW5rRWxlbWVudD4mIGV2ZW50U2Vu
ZGVyKQogewotICAgIGxpbmtMb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMo
KTsKLX0KKyAgICBBU1NFUlRfVU5VU0VEKGV2ZW50U2VuZGVyLCAmZXZlbnRTZW5kZXIgPT0gJmRv
Y3VtZW50KCkuc2hhcmVkRXZlbnRTZW5kZXJzKCkubGlua0xvYWRFdmVudFNlbmRlcigpKTsKIAot
dm9pZCBIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KExpbmtFdmVudFNlbmRl
ciogZXZlbnRTZW5kZXIpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChldmVudFNlbmRlciwgZXZlbnRT
ZW5kZXIgPT0gJmxpbmtMb2FkRXZlbnRTZW5kZXIoKSk7CiAgICAgaWYgKG1fbG9hZGVkU2hlZXQp
CiAgICAgICAgIGxpbmtMb2FkZWQoKTsKICAgICBlbHNlCkBAIC0zODAsNyArMzcwLDcgQEAgdm9p
ZCBIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNv
dXJjZXMoYm9vbCBlcnJvck9jY3UKICAgICBpZiAobV9maXJlZExvYWQpCiAgICAgICAgIHJldHVy
bjsKICAgICBtX2xvYWRlZFNoZWV0ID0gIWVycm9yT2NjdXJyZWQ7Ci0gICAgbGlua0xvYWRFdmVu
dFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKCp0aGlzKTsKKyAgICBkb2N1bWVudCgpLnNoYXJl
ZEV2ZW50U2VuZGVycygpLmxpbmtMb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaEV2ZW50U29vbigq
dGhpcyk7CiAgICAgbV9maXJlZExvYWQgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuaAppbmRleCA1Y2FjYjc3ZDJhZWE1MTVjMGQ1OWJhNTQ2YTQ3NmI0YThiNjQ3
MzBiLi4wMjZkYzJhZTkwZTZkNzQ5ZTdlMmY0YzJhMDExYjAxODUyN2U3OWM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xhc3MgSFRNTExp
bmtFbGVtZW50OwogY2xhc3MgVVJMOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBFdmVu
dFNlbmRlcjsKLXR5cGVkZWYgRXZlbnRTZW5kZXI8SFRNTExpbmtFbGVtZW50PiBMaW5rRXZlbnRT
ZW5kZXI7CiAKIGNsYXNzIEhUTUxMaW5rRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVu
dCwgcHVibGljIENhY2hlZFN0eWxlU2hlZXRDbGllbnQsIHB1YmxpYyBMaW5rTG9hZGVyQ2xpZW50
IHsKIHB1YmxpYzoKQEAgLTY4LDggKzY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2l6ZXMo
Y29uc3QgU3RyaW5nJik7CiAgICAgRE9NU2V0dGFibGVUb2tlbkxpc3QqIHNpemVzKCkgY29uc3Q7
CiAKLSAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0V2ZW50KExpbmtFdmVudFNlbmRlciopOwotICAg
IHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKKyAgICB2b2lkIGRpc3Bh
dGNoUGVuZGluZ0V2ZW50KEV2ZW50U2VuZGVyPEhUTUxMaW5rRWxlbWVudD4mKTsKIAogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0
eWxlRWxlbWVudC5jcHAKaW5kZXggNjgwNjQ5NDkyOGRjODMxYzg3ZDg5ZDE4ZTk3ZmY4NTkyYTA2
MWI5ZC4uMGZiM2QxNDA1MTgwNDNjYmM2ZjI0NmYzYTQ3MWVlNmUwZDMyYzgwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCkBAIC0yNywyMyArMjcsMTggQEAKICNp
bmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2
ZW50LmgiCi0jaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Um9vdC5oIgorI2luY2x1ZGUgIlNoYXJlZEV2ZW50U2VuZGVycy5oIgogI2luY2x1ZGUgIlN0
eWxlU2hlZXRDb250ZW50cy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBTdHlsZUV2ZW50U2VuZGVyJiBzdHlsZUxvYWRFdmVu
dFNlbmRlcigpCi17Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlRXZl
bnRTZW5kZXIsIHNoYXJlZExvYWRFdmVudFNlbmRlciwgKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQp
KTsKLSAgICByZXR1cm4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyOwotfQogCiBpbmxpbmUgSFRNTFN0
eWxlRWxlbWVudDo6SFRNTFN0eWxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogICAgIDogSFRNTEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC02MCw3ICs1NSw3IEBAIEhUTUxTdHlsZUVsZW1l
bnQ6On5IVE1MU3R5bGVFbGVtZW50KCkKICAgICAvLyBUaGVyZWZvcmUgd2UgY2FuJ3QgQVNTRVJU
KG1fc2NvcGVkU3R5bGVSZWdpc3RyYXRpb25TdGF0ZSA9PSBOb3RSZWdpc3RlcmVkKS4KICAgICBt
X3N0eWxlU2hlZXRPd25lci5jbGVhckRvY3VtZW50RGF0YShkb2N1bWVudCgpLCAqdGhpcyk7CiAK
LSAgICBzdHlsZUxvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KCp0aGlzKTsKKyAgICBkb2N1
bWVudCgpLnNoYXJlZEV2ZW50U2VuZGVycygpLnN0eWxlTG9hZEV2ZW50U2VuZGVyKCkuY2FuY2Vs
RXZlbnQoKnRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxTdHlsZUVsZW1lbnQ+IEhUTUxTdHls
ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQpAQCAtMTE0LDE0ICsxMDksMTAgQEAgdm9p
ZCBIVE1MU3R5bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNo
YW5nZSkKICAgICBtX3N0eWxlU2hlZXRPd25lci5jaGlsZHJlbkNoYW5nZWQoKnRoaXMpOwogfQog
Ci12b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKQordm9p
ZCBIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudChFdmVudFNlbmRlcjxIVE1M
U3R5bGVFbGVtZW50PiYgZXZlbnRTZW5kZXIpCiB7Ci0gICAgc3R5bGVMb2FkRXZlbnRTZW5kZXIo
KS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKLX0KKyAgICBBU1NFUlRfVU5VU0VEKGV2ZW50U2Vu
ZGVyLCAmZXZlbnRTZW5kZXIgPT0gJmRvY3VtZW50KCkuc2hhcmVkRXZlbnRTZW5kZXJzKCkuc3R5
bGVMb2FkRXZlbnRTZW5kZXIoKSk7CiAKLXZvaWQgSFRNTFN0eWxlRWxlbWVudDo6ZGlzcGF0Y2hQ
ZW5kaW5nRXZlbnQoU3R5bGVFdmVudFNlbmRlciogZXZlbnRTZW5kZXIpCi17Ci0gICAgQVNTRVJU
X1VOVVNFRChldmVudFNlbmRlciwgZXZlbnRTZW5kZXIgPT0gJnN0eWxlTG9hZEV2ZW50U2VuZGVy
KCkpOwogICAgIGlmIChtX2xvYWRlZFNoZWV0KQogICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgZWxz
ZQpAQCAtMTMzLDcgKzEyNCw3IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6bm90aWZ5TG9hZGVk
U2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2NjCiAgICAgaWYgKG1f
ZmlyZWRMb2FkKQogICAgICAgICByZXR1cm47CiAgICAgbV9sb2FkZWRTaGVldCA9ICFlcnJvck9j
Y3VycmVkOwotICAgIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24oKnRo
aXMpOworICAgIGRvY3VtZW50KCkuc2hhcmVkRXZlbnRTZW5kZXJzKCkuc3R5bGVMb2FkRXZlbnRT
ZW5kZXIoKS5kaXNwYXRjaEV2ZW50U29vbigqdGhpcyk7CiAgICAgbV9maXJlZExvYWQgPSB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCmluZGV4IDkxZjBiN2Nk
NThkNDY2ODhiZWNmNjRmNDcwMDUwMDA0M2UyM2I4NzYuLjAyNWQ5M2Q2NDJjOTdjODE1NDdjOWJl
ZDlhMGJiMjVlM2YzODc3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0
eWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5o
CkBAIC0zMiw3ICszMiw2IEBAIGNsYXNzIEhUTUxTdHlsZUVsZW1lbnQ7CiBjbGFzcyBTdHlsZVNo
ZWV0OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBFdmVudFNlbmRlcjsKLXR5cGVkZWYg
RXZlbnRTZW5kZXI8SFRNTFN0eWxlRWxlbWVudD4gU3R5bGVFdmVudFNlbmRlcjsKIAogY2xhc3Mg
SFRNTFN0eWxlRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CkBA
IC00NCw4ICs0Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGRpc2FibGVkKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXREaXNhYmxlZChib29sKTsKIAotICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nRXZlbnQo
U3R5bGVFdmVudFNlbmRlciopOwotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGluZ0xvYWRF
dmVudHMoKTsKKyAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0V2ZW50KEV2ZW50U2VuZGVyPEhUTUxT
dHlsZUVsZW1lbnQ+Jik7CiAKIHByaXZhdGU6CiAgICAgSFRNTFN0eWxlRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCBmOGY0ZjQzYzI3MTA1ZWEyNmU2MmM3Nzkw
ZGFiM2JmNTgwYmFmMzQwLi4wOWVmZTdhNzI3ZTIzYzUyZTFlMGQzNTEwNDc4ZTM1NWE2OTJjZWY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJF
dmVudC5oIgotI2luY2x1ZGUgIkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgpAQCAt
MzgsNiArMzcsNyBAQAogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNoYXJl
ZEV2ZW50U2VuZGVycy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYg
RU5BQkxFKFZJREVPKQpAQCAtNjMsMjIgKzYzLDE5IEBAIHRlbXBsYXRlPD4gc3RydWN0IFZhbHVl
Q2hlY2s8V2ViQ29yZTo6SW1hZ2VMb2FkZXIqPiB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIEltYWdlRXZlbnRTZW5kZXImIGJlZm9yZUxvYWRFdmVudFNlbmRlcigpCitFdmVudFNl
bmRlcjxJbWFnZUxvYWRlcj4mIEltYWdlTG9hZGVyOjpiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKSBj
b25zdAogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJbWFnZUV2ZW50U2VuZGVyPiBzZW5k
ZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCk7Ci0gICAgcmV0dXJuIHNlbmRlcjsKKyAg
ICByZXR1cm4gbV9lbGVtZW50LmRvY3VtZW50KCkuc2hhcmVkRXZlbnRTZW5kZXJzKCkuaW1hZ2VC
ZWZvcmVsb2FkRXZlbnRTZW5kZXIoKTsKIH0KIAotc3RhdGljIEltYWdlRXZlbnRTZW5kZXImIGxv
YWRFdmVudFNlbmRlcigpCitFdmVudFNlbmRlcjxJbWFnZUxvYWRlcj4mIEltYWdlTG9hZGVyOjps
b2FkRXZlbnRTZW5kZXIoKSBjb25zdAogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJbWFn
ZUV2ZW50U2VuZGVyPiBzZW5kZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCk7Ci0gICAgcmV0dXJu
IHNlbmRlcjsKKyAgICByZXR1cm4gbV9lbGVtZW50LmRvY3VtZW50KCkuc2hhcmVkRXZlbnRTZW5k
ZXJzKCkuaW1hZ2VMb2FkRXZlbnRTZW5kZXIoKTsKIH0KIAotc3RhdGljIEltYWdlRXZlbnRTZW5k
ZXImIGVycm9yRXZlbnRTZW5kZXIoKQorRXZlbnRTZW5kZXI8SW1hZ2VMb2FkZXI+JiBJbWFnZUxv
YWRlcjo6ZXJyb3JFdmVudFNlbmRlcigpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEltYWdlRXZlbnRTZW5kZXI+IHNlbmRlcihldmVudE5hbWVzKCkuZXJyb3JFdmVudCk7Ci0g
ICAgcmV0dXJuIHNlbmRlcjsKKyAgICByZXR1cm4gbV9lbGVtZW50LmRvY3VtZW50KCkuc2hhcmVk
RXZlbnRTZW5kZXJzKCkuaW1hZ2VFcnJvckV2ZW50U2VuZGVyKCk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgYm9vbCBwYWdlSXNCZWluZ0Rpc21pc3NlZChEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0zNzks
MTAgKzM3NiwxMCBAQCB2b2lkIEltYWdlTG9hZGVyOjp0aW1lckZpcmVkKFRpbWVyPEltYWdlTG9h
ZGVyPiYpCiAgICAgZWxlbWVudCgpLmRlcmVmKCk7CiB9CiAKLXZvaWQgSW1hZ2VMb2FkZXI6OmRp
c3BhdGNoUGVuZGluZ0V2ZW50KEltYWdlRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKQordm9pZCBJ
bWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoRXZlbnRTZW5kZXI8SW1hZ2VMb2FkZXI+
JiBldmVudFNlbmRlcikKIHsKLSAgICBBU1NFUlQoZXZlbnRTZW5kZXIgPT0gJmJlZm9yZUxvYWRF
dmVudFNlbmRlcigpIHx8IGV2ZW50U2VuZGVyID09ICZsb2FkRXZlbnRTZW5kZXIoKSB8fCBldmVu
dFNlbmRlciA9PSAmZXJyb3JFdmVudFNlbmRlcigpKTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSA9IGV2ZW50U2VuZGVyLT5ldmVudFR5cGUoKTsKKyAgICBBU1NFUlQoJmV2ZW50
U2VuZGVyID09ICZiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKSB8fCAmZXZlbnRTZW5kZXIgPT0gJmxv
YWRFdmVudFNlbmRlcigpIHx8ICZldmVudFNlbmRlciA9PSAmZXJyb3JFdmVudFNlbmRlcigpKTsK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9IGV2ZW50U2VuZGVyLmV2ZW50VHlw
ZSgpOwogICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCkK
ICAgICAgICAgZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCk7CiAgICAgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkubG9hZEV2ZW50KQpAQCAtNDQ4LDIxICs0NDUsNiBAQCB2b2lk
IEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdFcnJvckV2ZW50KCkKICAgICB1cGRhdGVkSGFz
UGVuZGluZ0V2ZW50KCk7CiB9CiAKLXZvaWQgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0Jl
Zm9yZUxvYWRFdmVudHMoKQotewotICAgIGJlZm9yZUxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNo
UGVuZGluZ0V2ZW50cygpOwotfQotCi12b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdM
b2FkRXZlbnRzKCkKLXsKLSAgICBsb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVu
dHMoKTsKLX0KLQotdm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJyb3JFdmVudHMo
KQotewotICAgIGVycm9yRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKLX0K
LQogdm9pZCBJbWFnZUxvYWRlcjo6ZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50KCkKIHsKICAg
ICBjbGVhckZhaWxlZExvYWRVUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5k
ZXggNWYzNzI0Y2NhYmI2NWVmYTc4YmZkZjg2N2RhMWYyNzhkNGRkZDczZC4uOGEwMTU2Yjc3MGQ0
YWQ5NTkyMGQwNWE1NjNlNGNmNzRjMjVjM2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmgKQEAgLTM1LDcgKzM1LDYgQEAgY2xhc3MgSW1hZ2VMb2FkZXI7CiBjbGFzcyBSZW5kZXJJ
bWFnZVJlc291cmNlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBFdmVudFNlbmRlcjsK
LXR5cGVkZWYgRXZlbnRTZW5kZXI8SW1hZ2VMb2FkZXI+IEltYWdlRXZlbnRTZW5kZXI7CiAKIGNs
YXNzIEltYWdlTG9hZGVyIDogcHVibGljIENhY2hlZEltYWdlQ2xpZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY1LDExICs2NCwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNQZW5kaW5nQmVm
b3JlTG9hZEV2ZW50OyB9CiAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCB7IHJl
dHVybiBtX2hhc1BlbmRpbmdMb2FkRXZlbnQgfHwgbV9oYXNQZW5kaW5nRXJyb3JFdmVudDsgfQog
Ci0gICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudChJbWFnZUV2ZW50U2VuZGVyKik7CisgICAg
dm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudChFdmVudFNlbmRlcjxJbWFnZUxvYWRlcj4mKTsKIAot
ICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudHMoKTsKLSAgICBz
dGF0aWMgdm9pZCBkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7Ci0gICAgc3RhdGljIHZvaWQg
ZGlzcGF0Y2hQZW5kaW5nRXJyb3JFdmVudHMoKTsKKyAgICBFdmVudFNlbmRlcjxJbWFnZUxvYWRl
cj4mIGJlZm9yZUxvYWRFdmVudFNlbmRlcigpIGNvbnN0OworICAgIEV2ZW50U2VuZGVyPEltYWdl
TG9hZGVyPiYgbG9hZEV2ZW50U2VuZGVyKCkgY29uc3Q7CisgICAgRXZlbnRTZW5kZXI8SW1hZ2VM
b2FkZXI+JiBlcnJvckV2ZW50U2VuZGVyKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBleHBs
aWNpdCBJbWFnZUxvYWRlcihFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDExZTM0N2UwM2E1YmYzMGUyMzNlMjYzNjAw
YTVlOTMyMTY1M2E1MzMuLjFlOTliYmNkYTQ0YzUzMzA0ZTc0OWYzNzRmNjIwNGQ2MThhOTc5ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CkBAIC0xMjAsOSArMTIwLDYgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gaW5wdXRTb3VyY2UpCiAgICAgfQogCiAgICAgZG9Xcml0ZShzb3Vy
Y2UudG9TdHJpbmcoKSk7Ci0KLSAgICAvLyBBZnRlciBwYXJzaW5nLCBnbyBhaGVhZCBhbmQgZGlz
cGF0Y2ggaW1hZ2UgYmVmb3JlbG9hZCBldmVudHMuCi0gICAgSW1hZ2VMb2FkZXI6OmRpc3BhdGNo
UGVuZGluZ0JlZm9yZUxvYWRFdmVudHMoKTsKIH0KIAogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6
aGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbSwgVGV4
dFBvc2l0aW9uIHBvc2l0aW9uKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239062</attachid>
            <date>2014-10-01 16:04:51 -0700</date>
            <delta_ts>2014-10-01 17:54:15 -0700</delta_ts>
            <desc>Proposed Fix (+win build fix)</desc>
            <filename>bug-136051-20141001160417.patch</filename>
            <type>text/plain</type>
            <size>41964</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM4ZWIyNjY1ODQ0Y2Ux
OTU4ZDM1NmQ4YzI0YTEyMzJkZDdlNWQ5NS4uMDEzNzE2ZTMyOGZkYTA0NTgyMTA1YWIyYzM3NDM1
MjU5MmI0MjExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE0LTEwLTAxICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgUmVwbGF5
OiBFdmVudFNlbmRlciBkaXNwYXRjaGVzIHNob3VsZCBiZSBwZXItRG9jdW1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjA1MQorCisgICAgICAg
IEV2ZW50U2VuZGVyIHVzZXMgYSBUaW1lciB0byBhc3luY2hyb25vdXNseSBkaXNwYXRjaCB0aGUg
c2FtZSBldmVudCB0byBtdWx0aXBsZQorICAgICAgICBlbGVtZW50cyBvZiB0aGUgc2FtZSB0eXBl
IG9uIGEgZnV0dXJlIHJ1biBsb29wLiBIb3dldmVyLCB3ZSBwcmV2aW91c2x5IGRpc3BhdGNoZWQg
ZXZlbnRzCisgICAgICAgIHRvIGVsZW1lbnRzIGZyb20gYW55IERvY3VtZW50IHJhdGhlciB0aGFu
IHRoZSBvbmUgdGhhdCByZXF1ZXN0ZWQgdGhlIGV2ZW50IHNlbmQuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBjaGFuZ2VzIEV2ZW50U2VuZGVyIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhIHNpbmdsZSBE
b2N1bWVudC4gRXZlbnRTZW5kZXJzCisgICAgICAgIGZvciBlYWNoIERvY3VtZW50IGFyZSBsYXpp
bHkgYWxsb2NhdGVkLiBGdXJ0aGVyIHBlci1Eb2N1bWVudCBvciBnbG9iYWwgb3B0aW1pemF0aW9u
cworICAgICAgICBhcmUgcG9zc2libGUuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWxzbyBsYXlz
IHRoZSBncm91bmR3b3JrIGZvciBtYWtpbmcgRXZlbnRTZW5kZXItcmVsYXRlZCBET00gZXZlbnRz
CisgICAgICAgIGRldGVybWluaXN0aWMgZHVyaW5nIHdlYiByZXBsYXksIHRyYWNrZWQgYXQgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzEzNzA5MD4uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3Zl
cmVkIGJ5IGZhc3QvdGV4dC9zdmctZm9udC10cmlnZ2VyLWxvYWQtZXZlbnQuaHRtbC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBkb20vRE9NQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UpOgorICAgICAgICBEaXNwYXRjaCBwZW5kaW5nIGV2ZW50
cyBmb3IgdGhpcyBkb2N1bWVudCBvbmx5LiBSZW5hbWUgbG9jYWwgdmFyaWFibGUgZiB0byBmcmFt
ZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnNoYXJlZEV2ZW50U2VuZGVycyk6CisgICAgICAgICogZG9tL0V2ZW50U2VuZGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRTZW5kZXI6Omhhc1BlbmRpbmdFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRTZW5kZXI8VD46OmRpc3BhdGNoRXZlbnRTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50U2VuZGVyPFQ+OjpjYW5jZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNlbmRl
cjxUPjo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U2Vu
ZGVyPFQ+OjpFdmVudFNlbmRlcik6IERlbGV0ZWQuIFRoZSB0eXBlIGFyZ3VtZW50IHdhcyBub3Qg
bmVjZXNzYXJ5LgorICAgICAgICAqIGRvbS9TaGFyZWRFdmVudFNlbmRlcnMuY3BwOiBBZGRlZC4g
TGF6aWx5IGNyZWF0ZXMgZXZlbnQgc2VuZGVycyBhcyB0aGV5IGFyZSByZXF1ZXN0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRFdmVudFNlbmRlcnM6OmxpbmtMb2FkRXZlbnRTZW5kZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkRXZlbnRTZW5kZXJzOjpzdHlsZUxvYWRFdmVudFNlbmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRFdmVudFNlbmRlcnM6OmltYWdlQmVmb3JlbG9h
ZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEV2ZW50U2VuZGVyczo6aW1h
Z2VMb2FkRXZlbnRTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkRXZlbnRTZW5kZXJz
OjppbWFnZUVycm9yRXZlbnRTZW5kZXIpOgorICAgICAgICAqIGRvbS9TaGFyZWRFdmVudFNlbmRl
cnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRFdmVudFNlbmRlcnM6OlNoYXJl
ZEV2ZW50U2VuZGVycyk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojp+SFRNTExpbmtFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpub3RpZnlMb2FkZWRTaGVldEFuZEFsbENy
aXRpY2FsU3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmxpbmtMb2FkRXZlbnRTZW5k
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpkaXNwYXRj
aFBlbmRpbmdMb2FkRXZlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50Ojp+SFRNTFN0eWxlRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50Ojpub3RpZnlMb2FkZWRTaGVldEFuZEFsbENyaXRp
Y2FsU3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlTG9hZEV2ZW50U2VuZGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNo
UGVuZGluZ0xvYWRFdmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxl
bWVudC5oOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUxvYWRlcjo6YmVmb3JlTG9hZEV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTG9hZGVyOjpsb2FkRXZlbnRTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VMb2FkZXI6OmVycm9yRXZlbnRTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2Fk
ZXI6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmJlZm9yZUxvYWRF
dmVudFNlbmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpsb2FkRXZlbnRTZW5kZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZXJyb3JFdmVudFNlbmRlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9h
ZEV2ZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZGlzcGF0
Y2hQZW5kaW5nTG9hZEV2ZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxv
YWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJyb3JFdmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGxv
YWRlci9JbWFnZUxvYWRlci5oOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZCk6IFJl
bW92ZSBhbiBlYXJseSBjYWxsIHRvIHRoZSBFdmVudFNlbmRlciBmb3IgaW1hZ2UKKyAgICAgICAg
YmVmb3JlbG9hZCBldmVudHMuIFRoaXMgd2FzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCBi
dXQgaXMgbm8gbG9uZ2VyIHNhZmUgc2luY2UgdGhlCisgICAgICAgIGRvY3VtZW50IChhbmQgdGh1
cyB0aGUgZXZlbnQgc2VuZGVyKSBtYXkgbm90IGJlIGF2YWlsYWJsZSBpbiBhIHN5bmNocm9ub3Vz
IGRvY3VtZW50IHdyaXRlLgorCiAyMDE0LTEwLTAxICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbVGV4TWFwXSBTcHJpbmtsZSByYW5nZS1iYXNlZCBmb3It
bG9vcHMgaW4gR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIsIFRleHR1cmVNYXBwZXJMYXllcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCAyMGVjZjU4YmFmOWI1NDBjMGM4OTBmMDRiNWRiM2JlNjZm
NDA2ZDQxLi4xZjFkMGJiNWZlYTZlYmEyYjhmMGFhOTkzMjFkODIwNzc1NzdmYmRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTQzNyw2ICsxNDM3LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwog
ICAgIGRvbS9TZWN1cml0eUNvbnRleHQuY3BwCiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3BwCiAg
ICAgZG9tL1NoYWRvd1Jvb3QuY3BwCisgICAgZG9tL1NoYXJlZEV2ZW50U2VuZGVycy5jcHAKICAg
ICBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKICAgICBkb20vU3RhdGljTm9kZUxpc3QuY3BwCiAg
ICAgZG9tL1N0cmluZ0NhbGxiYWNrLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggODY2MWJiMTcxOTU5Njk1MzEwZDEyMDZlYTgzZjhk
YmE0MzQwOTQ2Yy4uZWFkOTZhZjQ1ZDFmMWYxNWJkZTg4OGViMjk1ZDg3YmU2OGQ4MWY0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0x
Mzc3Niw2ICsxMzc3NiwyMCBAQCDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYt
OCI/PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRvbVxTaGFy
ZWRFdmVudFNlbmRlcnMuY3BwIj4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGRvbVxTcGFjZVNwbGl0U3RyaW5nLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0yMDU3OSw2ICsyMDU5Myw3IEBAIO+7vzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxk
b21cU2VjdXJpdHlDb250ZXh0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkb21c
U2VsZWN0b3JRdWVyeS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9tXFNpbXVs
YXRlZENsaWNrT3B0aW9ucy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9tXFNo
YXJlZEV2ZW50U2VuZGVycy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9tXFNw
YWNlU3BsaXRTdHJpbmcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRvbVxTdGF0
aWNIYXNoU2V0Tm9kZUxpc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRvbVxT
dGF0aWNOb2RlTGlzdC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGQ3MWNjZmRhY2RiNjFkNDc4MDgx
ZGQ3YTVjZjRkOTI3ZjAwY2E2YzMuLjg4YjgzNWJhY2E1MzhmMGRiZDVjMTFlZWQ3ODJiMDdhOWRh
N2MwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTMzNTQsNiArMzM1NCw5IEBAIO+7vzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxk
b21cU2VsZWN0b3JRdWVyeS5jcHAiPgogICAgICAgPEZpbHRlcj5kb208L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRvbVxTaGFyZWRFdmVudFNl
bmRlcnMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+ZG9tPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkb21cU3BhY2VTcGxpdFN0cmluZy5jcHAiPgog
ICAgICAgPEZpbHRlcj5kb208L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEwNDQ2LDYg
KzEwNDQ5LDkgQEAg77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRvbVxTZWxlY3RvclF1ZXJ5LmgiPgogICAgICAgPEZp
bHRlcj5kb208L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGRvbVxTaGFyZWRFdmVudFNlbmRlcnMuaCI+CisgICAgICA8RmlsdGVyPmRvbTwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZG9tXFNp
bXVsYXRlZENsaWNrT3B0aW9ucy5oIj4KICAgICAgIDxGaWx0ZXI+ZG9tPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZDU0M2Q3OTIzYmZhODRiZGU5ZGZmOTk2OTNkM2QzNTNmYTA2Nzg1
YS4uMDg0ZWY1ODBmZDI2NzRmMGQwYTc3Y2NmYjkyNTBjNTkwZDEwYjgwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTUxMiw2
ICs1NTEyLDkgQEAKIAkJQzNDRjE3QTYxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDM0NGMTdBMjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
LmNwcCAqLzsgfTsKIAkJQzNDRjE3QTcxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzNDRjE3QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM0MDBE
MTA5MThGMUM4RjYwMDkwRDg2MyAvKiBFdmVudExvb3BJbnB1dC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDAwRDEwODE4RjFDOEY2MDA5MEQ4NjMg
LyogRXZlbnRMb29wSW5wdXQuY3BwICovOyB9OworCQlDNDk0NzRBMTE5QTI4NDdDMDA5QjNERTgg
LyogU2hhcmVkRXZlbnRTZW5kZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNDk0NzRBMDE5QTI4NDdDMDA5QjNERTggLyogU2hhcmVkRXZlbnRTZW5k
ZXJzLmggKi87IH07CisJCUM0OTQ3NEE4MTlBMkQ2MTIwMDlCM0RFOCAvKiBFdmVudFNlbmRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U1Q0IxQjMx
NEVEQUI2RjAwQkIyNzk1IC8qIEV2ZW50U2VuZGVyLmggKi87IH07CisJCUM0OTQ3NEFBMTlBMkUy
RTUwMDlCM0RFOCAvKiBTaGFyZWRFdmVudFNlbmRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzQ5NDc0QTkxOUEyRTJFNTAwOUIzREU4IC8qIFNo
YXJlZEV2ZW50U2VuZGVycy5jcHAgKi87IH07CiAJCUM0Q0Q2MjlBMTgzODM3NjYwMDdFQkFGMSAv
KiBGcmFtZVNuYXBzaG90dGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNENENjI5ODE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRp
bmcuY3BwICovOyB9OwogCQlDNENENjI5QjE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hv
dHRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0
Q0Q2Mjk5MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM1MEI1NjE2MTIxMTlEMjMw
MDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEI1NjE0MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRp
bmdzLmNwcCAqLzsgfTsKQEAgLTEyOTI1LDYgKzEyOTI4LDggQEAKIAkJQzNDRjE3QTMxNUIwMDYz
RjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzNFNjFDNjUzQTY0ODA3QTgzRTc2RkI4IC8qIE1hdGhNTE1lbmNs
b3NlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRo
TUxNZW5jbG9zZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNDAw
RDEwODE4RjFDOEY2MDA5MEQ4NjMgLyogRXZlbnRMb29wSW5wdXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRMb29wSW5wdXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDNDk0NzRBMDE5QTI4NDdDMDA5QjNERTggLyogU2hhcmVkRXZlbnRT
ZW5kZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZEV2ZW50U2Vu
ZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNDk0NzRBOTE5QTJFMkU1MDA5
QjNERTggLyogU2hhcmVkRXZlbnRTZW5kZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNoYXJlZEV2ZW50U2VuZGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZVNuYXBzaG90dGlu
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0Q0Q2Mjk5MTgzODM3NjYwMDdF
QkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGcmFtZVNuYXBzaG90dGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NTBCNTYxNDEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcm91cFNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNzY5LDYgKzIyNzc0LDggQEAKIAkJCQlFNDUzMjJBQTE0MENF
MjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oICovLAogCQkJCUE2RDE2OTYxMTM0NkI0OUIw
MDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCAqLywKIAkJCQlBNkQxNjk2MzEzNDZCNEMxMDAwRUI3
NzAgLyogU2hhZG93Um9vdC5oICovLAorCQkJCUM0OTQ3NEE5MTlBMkUyRTUwMDlCM0RFOCAvKiBT
aGFyZWRFdmVudFNlbmRlcnMuY3BwICovLAorCQkJCUM0OTQ3NEEwMTlBMjg0N0MwMDlCM0RFOCAv
KiBTaGFyZWRFdmVudFNlbmRlcnMuaCAqLywKIAkJCQkzMTc0MUFBQjE2NjM1RTQ1MDA4QTVCN0Ug
LyogU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmggKi8sCiAJCQkJRDAxQTI3QUIxMEM5QkZEODAwMDI2
QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwICovLAogCQkJCUQwMUEyN0FDMTBDOUJGRDgwMDAy
NkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmggKi8sCkBAIC0yMzM2Miw2ICsyMzM2OSw3IEBACiAJ
CQkJMDcwMzYzRTAxODFBMUNEQzAwQzA3NEE1IC8qIEFWQXVkaW9DYXB0dXJlU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwNzAzNjNFMjE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwMzYzRTQxODFBMUNEQzAwQzA3NEE1
IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDNDk0NzRBODE5
QTJENjEyMDA5QjNERTggLyogRXZlbnRTZW5kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMzM2
RjYyMTdGOUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwNzAzNjNFNjE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVT
b3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM4MEZCQjlDMUQwMDUxMDI5MyAvKiBB
WE9iamVjdENhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2Mzk5LDYgKzI2NDA3LDcgQEAKIAkJ
CQk4NTAzMUI0RjBBNDRFRkM3MDBGOTkyRTAgLyogVUlFdmVudFdpdGhLZXlTdGF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQUE0NzM5RDIxNzU3QUZFQzAwRTc2NzY3IC8qIFVJUmVxdWVzdEV2ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjJEOEE3OTE0OTk3Q0NGMDBFQ0VGM0UgLyogVW5kb1N0
ZXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUM0OTQ3NEExMTlBMjg0N0MwMDlCM0RFOCAvKiBTaGFy
ZWRFdmVudFNlbmRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NjNFMjAxMTM0MzQxMjAwMDI3
NDkyNiAvKiBVbmljb2RlQmlkaS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBRkNGQTUwREFGMjlB
MzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwODZGRTk4MDlE
NTNBQUIwMDVCQzc0RCAvKiBVbmxpbmtDb21tYW5kLmggaW4gSGVhZGVycyAqLywKQEAgLTI4MDY0
LDYgKzI4MDczLDcgQEAKIAkJCQk4OTMxREU1QjE0QzQ0QzQ0MDAwREM5RDIgLyogSlNCbG9iQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDlFMjg3MTA3RDREQjQwMEI1NzkzRiAvKiBK
U0NhbGxiYWNrRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzIzOTA5RDFERTY1MDAw
QkUzMjUgLyogSlNDYW52YXNHcmFkaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNDk0NzRB
QTE5QTJFMkU1MDA5QjNERTggLyogU2hhcmVkRXZlbnRTZW5kZXJzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTY1REYzMjNCMDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDlFRUQxNDIxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFRDE0NDEwNTE5Njk0MDAw
OTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAppbmRleCA2NjUzOWVjNzg5NmQ0YjYzYmQ1NDI5Y2Ix
ZWE3YTQwYjE0MDE4MjBmLi42MGQzYTk5OWRmN2Q3NWEzYmYwMmYyNDhhZTY0MjhmYTJhZGRkYzc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKQEAgLTEyNCw2ICsxMjQsNyBAQAogI2lu
Y2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5jcHAiCiAjaW5jbHVkZSAiU2VsZWN0b3JRdWVyeS5jcHAi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5jcHAiCisjaW5jbHVkZSAiU2hhcmVkRXZlbnRTZW5kZXJz
LmNwcCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmNwcCIKICNpbmNsdWRlICJTdGF0aWNO
b2RlTGlzdC5jcHAiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5jcHAiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCAzZThhY2JjNjY5OThiZWNiNzE1MTg5MWIxNDA1YWM5ZWRlM2U1ZmUzLi4y
ZTdhYWJkYWRlZTM3MWE0ZTljYjE4MGViNTFmZWJmNjMzNzU1MzljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTEzOCw2ICsxMzgsNyBAQAogI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRl
ICJTaGFyZWRFdmVudFNlbmRlcnMuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNp
bmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgi
CkBAIC00NzEsNiArNDcyLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29u
c3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICAgICAsIG1fc2F3
RWxlbWVudHNJbktub3duTmFtZXNwYWNlcyhmYWxzZSkKICAgICAsIG1faXNTcmNkb2NEb2N1bWVu
dChmYWxzZSkKICAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKKyAgICAsIG1fc2hhcmVkRXZlbnRT
ZW5kZXJzKHN0ZDo6bWFrZV91bmlxdWU8U2hhcmVkRXZlbnRTZW5kZXJzPigpKQogICAgICwgbV93
ZWFrRmFjdG9yeSh0aGlzKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAsIG1fYXJl
S2V5c0VuYWJsZWRJbkZ1bGxTY3JlZW4oMCkKQEAgLTI0MjEsMjEgKzI0MjMsMTkgQEAgdm9pZCBE
b2N1bWVudDo6aW1wbGljaXRDbG9zZSgpCiAgICAgLy8gIC1XaGVuIGFueSBuZXcgSFRNTExpbmtF
bGVtZW50IGlzIGluc2VydGVkIGludG8gdGhlIGRvY3VtZW50CiAgICAgLy8gQnV0IHRob3NlIGFk
ZCBhIGR5bmFtaWMgY29tcG9uZW50IHRvIHRoZSBmYXZpY29uIHRoYXQgaGFzIFVJIAogICAgIC8v
IHJhbWlmaWNhdGlvbnMsIGFuZCB3ZSBuZWVkIHRvIGRlY2lkZSB3aGF0IGlzIHRoZSBSaWdodCBU
aGluZyBUbyBEbyh0bSkKLSAgICBGcmFtZSogZiA9IGZyYW1lKCk7Ci0gICAgaWYgKGYpIHsKLSAg
ICAgICAgZi0+bG9hZGVyKCkuaWNvbigpLnN0YXJ0TG9hZGVyKCk7Ci0gICAgICAgIGYtPmFuaW1h
dGlvbigpLnN0YXJ0QW5pbWF0aW9uc0lmTm90U3VzcGVuZGVkKHRoaXMpOwotCi0gICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgZGlzcGF0Y2hpbmcgcGVuZGluZyBldmVudHMgZ2xvYmFs
bHkgb24gYWxsIERvY3VtZW50cyBoZXJlLgotICAgICAgICAvLyBGb3Igbm93LCBvbmx5IGRvIHRo
aXMgd2hlbiB0aGVyZSBpcyBhIEZyYW1lLCBvdGhlcndpc2UgdGhpcyBjb3VsZCBjYXVzZSBKUyBy
ZWVudHJhbmN5Ci0gICAgICAgIC8vIGJlbG93IFNWRyBmb250IHBhcnNpbmcsIGZvciBleGFtcGxl
LiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTM2MjY5PgotICAgICAgICBJbWFnZUxvYWRlcjo6ZGlz
cGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50cygpOwotICAgICAgICBJbWFnZUxvYWRlcjo6ZGlz
cGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOwotICAgICAgICBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQ
ZW5kaW5nRXJyb3JFdmVudHMoKTsKLSAgICAgICAgSFRNTExpbmtFbGVtZW50OjpkaXNwYXRjaFBl
bmRpbmdMb2FkRXZlbnRzKCk7Ci0gICAgICAgIEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVu
ZGluZ0xvYWRFdmVudHMoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAg
IGlmIChmcmFtZSkgeworICAgICAgICBmcmFtZS0+bG9hZGVyKCkuaWNvbigpLnN0YXJ0TG9hZGVy
KCk7CisgICAgICAgIGZyYW1lLT5hbmltYXRpb24oKS5zdGFydEFuaW1hdGlvbnNJZk5vdFN1c3Bl
bmRlZCh0aGlzKTsKICAgICB9CiAKKyAgICBzaGFyZWRFdmVudFNlbmRlcnMoKS5pbWFnZUJlZm9y
ZWxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOworICAgIHNoYXJlZEV2
ZW50U2VuZGVycygpLmltYWdlTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRz
KCk7CisgICAgc2hhcmVkRXZlbnRTZW5kZXJzKCkuaW1hZ2VFcnJvckV2ZW50U2VuZGVyKCkuZGlz
cGF0Y2hQZW5kaW5nRXZlbnRzKCk7CisKKyAgICBzaGFyZWRFdmVudFNlbmRlcnMoKS5saW5rTG9h
ZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7CisgICAgc2hhcmVkRXZlbnRT
ZW5kZXJzKCkuc3R5bGVMb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsK
KwogICAgIC8vIFRvIGFsaWduIHRoZSBIVE1MIGxvYWQgZXZlbnQgYW5kIHRoZSBTVkdMb2FkIGV2
ZW50IGZvciB0aGUgb3V0ZXJtb3N0IDxzdmc+IGVsZW1lbnQsIGZpcmUgaXQgZnJvbQogICAgIC8v
IGhlcmUsIGluc3RlYWQgb2YgZG9pbmcgaXQgZnJvbSBTVkdFbGVtZW50OjpmaW5pc2hlZFBhcnNp
bmdDaGlsZHJlbiAoaWYgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD0iZmFsc2UiLAogICAgIC8v
IHdoaWNoIGlzIHRoZSBkZWZhdWx0LCBmb3IgPSd0cnVlJyBpdHMgZmlyZWQgYXQgYSBsYXRlciB0
aW1lLCBvbmNlIGFsbCBleHRlcm5hbCByZXNvdXJjZXMgZmluaXNoZWQgbG9hZGluZykuCkBAIC0y
NDQ2LDE1ICsyNDQ2LDE1IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKQogICAgIGVu
cXVldWVQYWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnROb3RQZXJzaXN0ZWQpOwogICAgIGVucXVl
dWVQb3BzdGF0ZUV2ZW50KG1fcGVuZGluZ1N0YXRlT2JqZWN0ID8gbV9wZW5kaW5nU3RhdGVPYmpl
Y3QucmVsZWFzZSgpIDogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CiAgICAg
Ci0gICAgaWYgKGYpCi0gICAgICAgIGYtPmxvYWRlcigpLmhhbmRsZWRPbmxvYWRFdmVudHMoKTsK
KyAgICBpZiAoZnJhbWUpCisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5oYW5kbGVkT25sb2FkRXZl
bnRzKCk7CiAjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwogICAgIGlmICghb3du
ZXJFbGVtZW50KCkpCiAgICAgICAgIHByaW50Zigib25sb2FkIGZpcmVkIGF0ICVsbGRcbiIsIGVs
YXBzZWRUaW1lKCkuY291bnQoKSk7CiAjZW5kaWYKIAogICAgIC8vIEFuIGV2ZW50IGhhbmRsZXIg
bWF5IGhhdmUgcmVtb3ZlZCB0aGUgZnJhbWUKLSAgICBpZiAoIWZyYW1lKCkpIHsKKyAgICBpZiAo
IXRoaXMtPmZyYW1lKCkpIHsKICAgICAgICAgbV9wcm9jZXNzaW5nTG9hZEV2ZW50ID0gZmFsc2U7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDYzLDcgKzI0NjMsNyBAQCB2b2lkIERvY3Vt
ZW50OjppbXBsaWNpdENsb3NlKCkKICAgICAvLyBmaXJlcy4gVGhpcyB3aWxsIGltcHJvdmUgb25s
b2FkIHNjb3JlcywgYW5kIG90aGVyIGJyb3dzZXJzIGRvIGl0LgogICAgIC8vIElmIHRoZXkgd2Fu
bmEgY2hlYXQsIHdlIGNhbiB0b28uIC1kd2gKIAotICAgIGlmIChmcmFtZSgpLT5uYXZpZ2F0aW9u
U2NoZWR1bGVyKCkubG9jYXRpb25DaGFuZ2VQZW5kaW5nKCkgJiYgZWxhcHNlZFRpbWUoKSA8IHNl
dHRpbmdzKCktPmxheW91dEludGVydmFsKCkpIHsKKyAgICBpZiAodGhpcy0+ZnJhbWUoKS0+bmF2
aWdhdGlvblNjaGVkdWxlcigpLmxvY2F0aW9uQ2hhbmdlUGVuZGluZygpICYmIGVsYXBzZWRUaW1l
KCkgPCBzZXR0aW5ncygpLT5sYXlvdXRJbnRlcnZhbCgpKSB7CiAgICAgICAgIC8vIEp1c3QgYmFp
bCBvdXQuIEJlZm9yZSBvciBkdXJpbmcgdGhlIG9ubG9hZCB3ZSB3ZXJlIHNoaWZ0ZWQgdG8gYW5v
dGhlciBwYWdlLgogICAgICAgICAvLyBUaGUgb2xkIGktQmVuY2ggc3VpdGUgZG9lcyB0aGlzLiBX
aGVuIHRoaXMgaGFwcGVucyBkb24ndCBib3RoZXIgcGFpbnRpbmcgb3IgbGF5aW5nIG91dC4gICAg
ICAgIAogICAgICAgICBtX3Byb2Nlc3NpbmdMb2FkRXZlbnQgPSBmYWxzZTsKQEAgLTI0NzEsNyAr
MjQ3MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgZnJhbWUoKS0+bG9hZGVyKCkuY2hlY2tDYWxsSW1wbGljaXRDbG9zZSgp
OworICAgIHRoaXMtPmZyYW1lKCktPmxvYWRlcigpLmNoZWNrQ2FsbEltcGxpY2l0Q2xvc2UoKTsK
ICAgICAKICAgICAvLyBXZSB1c2VkIHRvIGZvcmNlIGEgc3luY2hyb25vdXMgZGlzcGxheSBhbmQg
Zmx1c2ggaGVyZS4gIFRoaXMgcmVhbGx5IGlzbid0CiAgICAgLy8gbmVjZXNzYXJ5IGFuZCBjYW4g
aW4gZmFjdCBiZSBhY3RpdmVseSBoYXJtZnVsIGlmIHBhZ2VzIGFyZSBsb2FkaW5nIGF0IGEgcmF0
ZSBvZiA+IDYwZnBzCkBAIC0yNDg4LDcgKzI0ODgsNyBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNp
dENsb3NlKCkKICAgICBtX3Byb2Nlc3NpbmdMb2FkRXZlbnQgPSBmYWxzZTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
RUZMKQotICAgIGlmIChmICYmIGhhc0xpdmluZ1JlbmRlclRyZWUoKSAmJiBBWE9iamVjdENhY2hl
OjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKSB7CisgICAgaWYgKGZyYW1lICYmIGhhc0xpdmluZ1Jl
bmRlclRyZWUoKSAmJiBBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKSB7CiAg
ICAgICAgIC8vIFRoZSBBWCBjYWNoZSBtYXkgaGF2ZSBiZWVuIGNsZWFyZWQgYXQgdGhpcyBwb2lu
dCwgYnV0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIGl0IGNvbnRhaW5zIGFuCiAgICAgICAgIC8vIEFY
IG9iamVjdCB0byBzZW5kIHRoZSBub3RpZmljYXRpb24gdG8uIGdldE9yQ3JlYXRlIHdpbGwgbWFr
ZSBzdXJlIHRoYXQgYW4gdmFsaWQgQVggb2JqZWN0CiAgICAgICAgIC8vIGV4aXN0cyBpbiB0aGUg
Y2FjaGUgKHdlIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCBp
dCBoZXJlKS4gVGhpcyBpcyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggM2E5ODQyNmEwNjE3MGM4
NjRlOTc0ZTg0NTkxYzI2MTYyNzA0NDAzMC4uMDYyMGMyODU5MWE4ZTU3NTFlYWY1ZGYyNTNmMTQ4
M2FhN2ExZDQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE0NCw2ICsxNDQsNyBAQCBjbGFz
cyBTZWxlY3RvclF1ZXJ5Q2FjaGU7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFz
cyBTZWdtZW50ZWRTdHJpbmc7CiBjbGFzcyBTZXR0aW5nczsKK2NsYXNzIFNoYXJlZEV2ZW50U2Vu
ZGVyczsKIGNsYXNzIFN0eWxlUmVzb2x2ZXI7CiBjbGFzcyBTdHlsZVNoZWV0OwogY2xhc3MgU3R5
bGVTaGVldENvbnRlbnRzOwpAQCAtMTExOSw2ICsxMTIwLDggQEAgcHVibGljOgogICAgIHZvaWQg
ZW5xdWV1ZVBvcHN0YXRlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0
YXRlT2JqZWN0KTsKICAgICB2aXJ0dWFsIERvY3VtZW50RXZlbnRRdWV1ZSYgZXZlbnRRdWV1ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZXZlbnRRdWV1ZTsgfQogCisgICAgU2hhcmVkRXZl
bnRTZW5kZXJzJiBzaGFyZWRFdmVudFNlbmRlcnMoKSBjb25zdCB7IHJldHVybiAqbV9zaGFyZWRF
dmVudFNlbmRlcnM7IH0KKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTWVkaWFDYW5TdGFy
dExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwog
ICAgIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogdGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigp
OwpAQCAtMTU2OCw2ICsxNTcxLDggQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyVmll
dz4gbV9yZW5kZXJWaWV3OwogICAgIG11dGFibGUgRG9jdW1lbnRFdmVudFF1ZXVlIG1fZXZlbnRR
dWV1ZTsKIAorICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxTaGFyZWRFdmVudFNlbmRlcnM+IG1f
c2hhcmVkRXZlbnRTZW5kZXJzOworCiAgICAgV2Vha1B0ckZhY3Rvcnk8RG9jdW1lbnQ+IG1fd2Vh
a0ZhY3Rvcnk7CiAKICAgICBIYXNoU2V0PE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcio+IG1fbWVkaWFD
YW5TdGFydExpc3RlbmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFNl
bmRlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50U2VuZGVyLmgKaW5kZXggMDRmZTI1OGY3
MjJlMjhhZDRmNmNlMWEzZTQ2YTgxM2IxYzRkNTEyOS4uYmQ4NmM0NDc5MWQxMTRjNGZlYzBhNzM5
YjY2MDQwODUzZjM2ZDZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50U2Vu
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50U2VuZGVyLmgKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMx
LDEwICszMiwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGNsYXNzIEV2ZW50U2VuZGVyIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgRXZl
bnRTZW5kZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50U2VuZGVyKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRXZlbnRTZW5kZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOworICAgIEV2ZW50U2VuZGVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlKQorICAgICAgICA6IG1fZXZlbnRUeXBlKGV2ZW50VHlwZSkKKyAg
ICAgICAgLCBtX3RpbWVyKHRoaXMsICZFdmVudFNlbmRlcjo6dGltZXJGaXJlZCkKKyAgICB7Cisg
ICAgfQogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2V2ZW50VHlwZTsgfQogICAgIHZvaWQgZGlzcGF0Y2hFdmVudFNvb24oVCYpOwpAQCAtNDIs
OSArNDgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKIAog
I2lmbmRlZiBOREVCVUcKLSAgICBib29sIGhhc1BlbmRpbmdFdmVudHMoVCYgc2VuZGVyKSBjb25z
dAorICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyhUJiBjbGllbnQpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gbV9kaXNwYXRjaFNvb25MaXN0LmZpbmQoJnNlbmRlcikgIT0gbm90Rm91bmQg
fHwgbV9kaXNwYXRjaGluZ0xpc3QuZmluZCgmc2VuZGVyKSAhPSBub3RGb3VuZDsKKyAgICAgICAg
cmV0dXJuIG1fZGlzcGF0Y2hTb29uTGlzdC5maW5kKCZjbGllbnQpICE9IG5vdEZvdW5kIHx8IG1f
ZGlzcGF0Y2hpbmdMaXN0LmZpbmQoJmNsaWVudCkgIT0gbm90Rm91bmQ7CiAgICAgfQogI2VuZGlm
CiAKQEAgLTU3LDM0ICs2MywzMSBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxUKj4gbV9kaXNwYXRj
aGluZ0xpc3Q7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBFdmVudFNlbmRlcjxUPjo6RXZl
bnRTZW5kZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCi0gICAgOiBtX2V2ZW50VHlw
ZShldmVudFR5cGUpCi0gICAgLCBtX3RpbWVyKHRoaXMsICZFdmVudFNlbmRlcjo6dGltZXJGaXJl
ZCkKLXsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBFdmVudFNlbmRlcjxUPjo6ZGlz
cGF0Y2hFdmVudFNvb24oVCYgc2VuZGVyKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIEV2
ZW50U2VuZGVyPFQ+OjpkaXNwYXRjaEV2ZW50U29vbihUJiBjbGllbnQpCiB7Ci0gICAgbV9kaXNw
YXRjaFNvb25MaXN0LmFwcGVuZCgmc2VuZGVyKTsKKyAgICBtX2Rpc3BhdGNoU29vbkxpc3QuYXBw
ZW5kKCZjbGllbnQpOwogICAgIGlmICghbV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3Rp
bWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBFdmVu
dFNlbmRlcjxUPjo6Y2FuY2VsRXZlbnQoVCYgc2VuZGVyKQordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3ZvaWQgRXZlbnRTZW5kZXI8VD46OmNhbmNlbEV2ZW50KFQmIGNsaWVudCkKIHsKLSAgICAvLyBS
ZW1vdmUgaW5zdGFuY2VzIG9mIHRoaXMgc2VuZGVyIGZyb20gYm90aCBsaXN0cy4KKyAgICAvLyBS
ZW1vdmUgaW5zdGFuY2VzIG9mIHRoaXMgY2xpZW50IGZyb20gYm90aCBsaXN0cy4KICAgICAvLyBV
c2UgbG9vcHMgYmVjYXVzZSB3ZSBhbGxvdyBtdWx0aXBsZSBpbnN0YW5jZXMgdG8gZ2V0IGludG8g
dGhlIGxpc3RzLgogICAgIGZvciAoYXV0byYgZXZlbnQgOiBtX2Rpc3BhdGNoU29vbkxpc3QpIHsK
LSAgICAgICAgaWYgKGV2ZW50ID09ICZzZW5kZXIpCisgICAgICAgIGlmIChldmVudCA9PSAmY2xp
ZW50KQogICAgICAgICAgICAgZXZlbnQgPSBudWxscHRyOwogICAgIH0KICAgICBmb3IgKGF1dG8m
IGV2ZW50IDogbV9kaXNwYXRjaGluZ0xpc3QpIHsKLSAgICAgICAgaWYgKGV2ZW50ID09ICZzZW5k
ZXIpCisgICAgICAgIGlmIChldmVudCA9PSAmY2xpZW50KQogICAgICAgICAgICAgZXZlbnQgPSBu
dWxscHRyOwogICAgIH0KIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBFdmVudFNlbmRl
cjxUPjo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lk
IEV2ZW50U2VuZGVyPFQ+OjpkaXNwYXRjaFBlbmRpbmdFdmVudHMoKQogewogICAgIC8vIE5lZWQg
dG8gYXZvaWQgcmUtZW50ZXJpbmcgdGhpcyBmdW5jdGlvbjsgaWYgbmV3IGRpc3BhdGNoZXMgYXJl
CiAgICAgLy8gc2NoZWR1bGVkIGJlZm9yZSB0aGUgcGFyZW50IGZpbmlzaGVzIHByb2Nlc3Npbmcg
dGhlIGxpc3QsIHRoZXkKQEAgLTk0LDEzICs5NywxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2
b2lkIEV2ZW50U2VuZGVyPFQ+OjpkaXNwYXRjaFBlbmRpbmdFdmVudHMoKQogCiAgICAgbV90aW1l
ci5zdG9wKCk7CiAKLSAgICBtX2Rpc3BhdGNoU29vbkxpc3QuY2hlY2tDb25zaXN0ZW5jeSgpOwot
CiAgICAgbV9kaXNwYXRjaGluZ0xpc3Quc3dhcChtX2Rpc3BhdGNoU29vbkxpc3QpOwogICAgIGZv
ciAoYXV0byYgZXZlbnQgOiBtX2Rpc3BhdGNoaW5nTGlzdCkgewotICAgICAgICBpZiAoVCogc2Vu
ZGVyID0gZXZlbnQpIHsKKyAgICAgICAgaWYgKFQqIGNsaWVudCA9IGV2ZW50KSB7CiAgICAgICAg
ICAgICBldmVudCA9IG51bGxwdHI7Ci0gICAgICAgICAgICBzZW5kZXItPmRpc3BhdGNoUGVuZGlu
Z0V2ZW50KHRoaXMpOworICAgICAgICAgICAgY2xpZW50LT5kaXNwYXRjaFBlbmRpbmdFdmVudCgq
dGhpcyk7CiAgICAgICAgIH0KICAgICB9CiAgICAgbV9kaXNwYXRjaGluZ0xpc3QuY2xlYXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFyZWRFdmVudFNlbmRlcnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NoYXJlZEV2ZW50U2VuZGVycy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE0
NWRkNDEzMTliN2JlMzQ2OTgyYzU1Yzg3MTdmN2Y1NGFkY2RkMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFyZWRFdmVudFNlbmRlcnMuY3BwCkBAIC0wLDAgKzEsNzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU2hhcmVkRXZlbnRTZW5kZXJzLmgiCisKKyNpbmNsdWRlICJIVE1MTGlua0VsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCisjaW5jbHVkZSAiSW1hZ2VMb2FkZXIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFdmVudFNlbmRlcjxIVE1MTGlua0VsZW1lbnQ+
JiBTaGFyZWRFdmVudFNlbmRlcnM6OmxpbmtMb2FkRXZlbnRTZW5kZXIoKQoreworICAgIGlmICgh
bV9saW5rTG9hZEV2ZW50U2VuZGVyKQorICAgICAgICBtX2xpbmtMb2FkRXZlbnRTZW5kZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEV2ZW50U2VuZGVyPEhUTUxMaW5rRWxlbWVudD4+KGV2ZW50TmFtZXMo
KS5sb2FkRXZlbnQpOworCisgICAgcmV0dXJuICptX2xpbmtMb2FkRXZlbnRTZW5kZXI7Cit9CisK
K0V2ZW50U2VuZGVyPEhUTUxTdHlsZUVsZW1lbnQ+JiBTaGFyZWRFdmVudFNlbmRlcnM6OnN0eWxl
TG9hZEV2ZW50U2VuZGVyKCkKK3sKKyAgICBpZiAoIW1fc3R5bGVMb2FkRXZlbnRTZW5kZXIpCisg
ICAgICAgIG1fc3R5bGVMb2FkRXZlbnRTZW5kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50U2Vu
ZGVyPEhUTUxTdHlsZUVsZW1lbnQ+PihldmVudE5hbWVzKCkubG9hZEV2ZW50KTsKKworICAgIHJl
dHVybiAqbV9zdHlsZUxvYWRFdmVudFNlbmRlcjsKK30KKworRXZlbnRTZW5kZXI8SW1hZ2VMb2Fk
ZXI+JiBTaGFyZWRFdmVudFNlbmRlcnM6OmltYWdlQmVmb3JlbG9hZEV2ZW50U2VuZGVyKCkKK3sK
KyAgICBpZiAoIW1faW1hZ2VCZWZvcmVsb2FkRXZlbnRTZW5kZXIpCisgICAgICAgIG1faW1hZ2VC
ZWZvcmVsb2FkRXZlbnRTZW5kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50U2VuZGVyPEltYWdl
TG9hZGVyPj4oZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCk7CisKKyAgICByZXR1cm4gKm1f
aW1hZ2VCZWZvcmVsb2FkRXZlbnRTZW5kZXI7Cit9CisKK0V2ZW50U2VuZGVyPEltYWdlTG9hZGVy
PiYgU2hhcmVkRXZlbnRTZW5kZXJzOjppbWFnZUxvYWRFdmVudFNlbmRlcigpCit7CisgICAgaWYg
KCFtX2ltYWdlTG9hZEV2ZW50U2VuZGVyKQorICAgICAgICBtX2ltYWdlTG9hZEV2ZW50U2VuZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFNlbmRlcjxJbWFnZUxvYWRlcj4+KGV2ZW50TmFtZXMo
KS5sb2FkRXZlbnQpOworCisgICAgcmV0dXJuICptX2ltYWdlTG9hZEV2ZW50U2VuZGVyOworfQor
CitFdmVudFNlbmRlcjxJbWFnZUxvYWRlcj4mIFNoYXJlZEV2ZW50U2VuZGVyczo6aW1hZ2VFcnJv
ckV2ZW50U2VuZGVyKCkKK3sKKyAgICBpZiAoIW1faW1hZ2VFcnJvckV2ZW50U2VuZGVyKQorICAg
ICAgICBtX2ltYWdlRXJyb3JFdmVudFNlbmRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRTZW5k
ZXI8SW1hZ2VMb2FkZXI+PihldmVudE5hbWVzKCkuZXJyb3JFdmVudCk7CisKKyAgICByZXR1cm4g
Km1faW1hZ2VFcnJvckV2ZW50U2VuZGVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhcmVkRXZlbnRTZW5kZXJzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhcmVkRXZlbnRTZW5kZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk3Yzg3ODAy
NGQzNTIyYTQ2OWYwODcyNmYzNGMzZTllZmViMmZmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFyZWRFdmVudFNlbmRlcnMuaApAQCAtMCwwICsxLDU4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTaGFyZWRFdmVudFNlbmRlcnNfaAorI2Rl
ZmluZSBTaGFyZWRFdmVudFNlbmRlcnNfaAorCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2lu
Y2x1ZGUgIkV2ZW50U2VuZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRN
TExpbmtFbGVtZW50OworY2xhc3MgSFRNTFN0eWxlRWxlbWVudDsKK2NsYXNzIEltYWdlTG9hZGVy
OworCitjbGFzcyBTaGFyZWRFdmVudFNlbmRlcnMgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNoYXJlZEV2ZW50U2VuZGVycyk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIGV4cGxpY2l0IFNoYXJlZEV2ZW50U2VuZGVycygpIHsgfQorCisgICAgRXZlbnRTZW5kZXI8
SFRNTExpbmtFbGVtZW50PiYgbGlua0xvYWRFdmVudFNlbmRlcigpOworICAgIEV2ZW50U2VuZGVy
PEhUTUxTdHlsZUVsZW1lbnQ+JiBzdHlsZUxvYWRFdmVudFNlbmRlcigpOworICAgIEV2ZW50U2Vu
ZGVyPEltYWdlTG9hZGVyPiYgaW1hZ2VCZWZvcmVsb2FkRXZlbnRTZW5kZXIoKTsKKyAgICBFdmVu
dFNlbmRlcjxJbWFnZUxvYWRlcj4mIGltYWdlTG9hZEV2ZW50U2VuZGVyKCk7CisgICAgRXZlbnRT
ZW5kZXI8SW1hZ2VMb2FkZXI+JiBpbWFnZUVycm9yRXZlbnRTZW5kZXIoKTsKK3ByaXZhdGU6Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50U2VuZGVyPEhUTUxMaW5rRWxlbWVudD4+IG1fbGlua0xv
YWRFdmVudFNlbmRlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRTZW5kZXI8SFRNTFN0eWxl
RWxlbWVudD4+IG1fc3R5bGVMb2FkRXZlbnRTZW5kZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV2
ZW50U2VuZGVyPEltYWdlTG9hZGVyPj4gbV9pbWFnZUJlZm9yZWxvYWRFdmVudFNlbmRlcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRTZW5kZXI8SW1hZ2VMb2FkZXI+PiBtX2ltYWdlTG9hZEV2
ZW50U2VuZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudFNlbmRlcjxJbWFnZUxvYWRlcj4+
IG1faW1hZ2VFcnJvckV2ZW50U2VuZGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gU2hhcmVkRXZlbnRTZW5kZXJzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcAppbmRleCBkZDZmOTg3ODQ1MmZmNDBjYmEwNTE3YjlhZmQyMWRjY2E3ZDBm
OTYxLi5iZmEwNTBmMWRlMWUwYjNiMDFkYTgyOGM0NWFjMDM4YzFiMDQ3NDM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgi
CiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
ckNsaWVudC5oIgpAQCAtNDcsNiArNDYsNyBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1
ZGUgIlNoYXJlZEV2ZW50U2VuZGVycy5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5o
IgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVT
aGVldENvbnRlbnRzLmgiCkBAIC01NywxMiArNTcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBMaW5rRXZlbnRTZW5kZXImIGxp
bmtMb2FkRXZlbnRTZW5kZXIoKQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChMaW5rRXZlbnRTZW5kZXIsIHNoYXJlZExvYWRFdmVudFNlbmRlciwgKGV2ZW50TmFtZXMoKS5s
b2FkRXZlbnQpKTsKLSAgICByZXR1cm4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyOwotfQotCiBpbmxp
bmUgSFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6
IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9saW5rTG9hZGVyKHRoaXMp
CkBAIC05NCw3ICs4OCw3IEBAIEhUTUxMaW5rRWxlbWVudDo6fkhUTUxMaW5rRWxlbWVudCgpCiAg
ICAgaWYgKGluRG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1lbnQoKS5zdHlsZVNoZWV0Q29sbGVj
dGlvbigpLnJlbW92ZVN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlKCp0aGlzKTsKIAotICAgIGxpbmtM
b2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCgqdGhpcyk7CisgICAgZG9jdW1lbnQoKS5zaGFy
ZWRFdmVudFNlbmRlcnMoKS5saW5rTG9hZEV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQoKnRoaXMp
OwogfQogCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0RGlzYWJsZWRTdGF0ZShib29sIGRpc2Fi
bGVkKQpAQCAtMzYxLDE0ICszNTUsMTAgQEAgYm9vbCBIVE1MTGlua0VsZW1lbnQ6OnNoZWV0TG9h
ZGVkKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSFRNTExpbmtFbGVtZW50OjpkaXNw
YXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpkaXNwYXRjaFBl
bmRpbmdFdmVudChFdmVudFNlbmRlcjxIVE1MTGlua0VsZW1lbnQ+JiBldmVudFNlbmRlcikKIHsK
LSAgICBsaW5rTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7Ci19Cisg
ICAgQVNTRVJUX1VOVVNFRChldmVudFNlbmRlciwgJmV2ZW50U2VuZGVyID09ICZkb2N1bWVudCgp
LnNoYXJlZEV2ZW50U2VuZGVycygpLmxpbmtMb2FkRXZlbnRTZW5kZXIoKSk7CiAKLXZvaWQgSFRN
TExpbmtFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudChMaW5rRXZlbnRTZW5kZXIqIGV2ZW50
U2VuZGVyKQotewotICAgIEFTU0VSVF9VTlVTRUQoZXZlbnRTZW5kZXIsIGV2ZW50U2VuZGVyID09
ICZsaW5rTG9hZEV2ZW50U2VuZGVyKCkpOwogICAgIGlmIChtX2xvYWRlZFNoZWV0KQogICAgICAg
ICBsaW5rTG9hZGVkKCk7CiAgICAgZWxzZQpAQCAtMzgwLDcgKzM3MCw3IEBAIHZvaWQgSFRNTExp
bmtFbGVtZW50Ojpub3RpZnlMb2FkZWRTaGVldEFuZEFsbENyaXRpY2FsU3VicmVzb3VyY2VzKGJv
b2wgZXJyb3JPY2N1CiAgICAgaWYgKG1fZmlyZWRMb2FkKQogICAgICAgICByZXR1cm47CiAgICAg
bV9sb2FkZWRTaGVldCA9ICFlcnJvck9jY3VycmVkOwotICAgIGxpbmtMb2FkRXZlbnRTZW5kZXIo
KS5kaXNwYXRjaEV2ZW50U29vbigqdGhpcyk7CisgICAgZG9jdW1lbnQoKS5zaGFyZWRFdmVudFNl
bmRlcnMoKS5saW5rTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24oKnRoaXMpOwog
ICAgIG1fZmlyZWRMb2FkID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgKaW5kZXggNWNhY2I3N2QyYWVhNTE1YzBkNTliYTU0NmE0NzZiNGE4YjY0NzMwYi4uMDI2
ZGMyYWU5MGU2ZDc0OWU3ZTJmNGMyYTAxMWIwMTg1MjdlNzljNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIEhUTUxMaW5rRWxlbWVu
dDsKIGNsYXNzIFVSTDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRXZlbnRTZW5kZXI7
Ci10eXBlZGVmIEV2ZW50U2VuZGVyPEhUTUxMaW5rRWxlbWVudD4gTGlua0V2ZW50U2VuZGVyOwog
CiBjbGFzcyBIVE1MTGlua0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1Ymxp
YyBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LCBwdWJsaWMgTGlua0xvYWRlckNsaWVudCB7CiBwdWJs
aWM6CkBAIC02OCw4ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNpemVzKGNvbnN0IFN0
cmluZyYpOwogICAgIERPTVNldHRhYmxlVG9rZW5MaXN0KiBzaXplcygpIGNvbnN0OwogCi0gICAg
dm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudChMaW5rRXZlbnRTZW5kZXIqKTsKLSAgICBzdGF0aWMg
dm9pZCBkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7CisgICAgdm9pZCBkaXNwYXRjaFBlbmRp
bmdFdmVudChFdmVudFNlbmRlcjxIVE1MTGlua0VsZW1lbnQ+Jik7CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFN0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1l
bnQuY3BwCmluZGV4IDY4MDY0OTQ5MjhkYzgzMWM4N2Q4OWQxOGU5N2ZmODU5MmEwNjFiOWQuLjBm
YjNkMTQwNTE4MDQzY2JjNmYyNDZmM2E0NzFlZTZlMGQzMmM4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcApAQCAtMjcsMjMgKzI3LDE4IEBACiAjaW5jbHVkZSAi
QXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgot
I2luY2x1ZGUgIkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2lu
Y2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKKyNpbmNsdWRlICJTaGFyZWRFdmVudFNlbmRlcnMuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0
Q29udGVudHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogCi1zdGF0aWMgU3R5bGVFdmVudFNlbmRlciYgc3R5bGVMb2FkRXZlbnRTZW5kZXIo
KQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZUV2ZW50U2VuZGVy
LCBzaGFyZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2ZW50KSk7Ci0gICAg
cmV0dXJuIHNoYXJlZExvYWRFdmVudFNlbmRlcjsKLX0KIAogaW5saW5lIEhUTUxTdHlsZUVsZW1l
bnQ6OkhUTUxTdHlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KQpAQCAtNjAsNyArNTUsNyBAQCBIVE1MU3R5bGVFbGVtZW50Ojp+SFRN
TFN0eWxlRWxlbWVudCgpCiAgICAgLy8gVGhlcmVmb3JlIHdlIGNhbid0IEFTU0VSVChtX3Njb3Bl
ZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUgPT0gTm90UmVnaXN0ZXJlZCkuCiAgICAgbV9zdHlsZVNo
ZWV0T3duZXIuY2xlYXJEb2N1bWVudERhdGEoZG9jdW1lbnQoKSwgKnRoaXMpOwogCi0gICAgc3R5
bGVMb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCgqdGhpcyk7CisgICAgZG9jdW1lbnQoKS5z
aGFyZWRFdmVudFNlbmRlcnMoKS5zdHlsZUxvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KCp0
aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MU3R5bGVFbGVtZW50PiBIVE1MU3R5bGVFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKQEAgLTExNCwxNCArMTA5LDEwIEBAIHZvaWQgSFRNTFN0
eWxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAg
ICAgbV9zdHlsZVNoZWV0T3duZXIuY2hpbGRyZW5DaGFuZ2VkKCp0aGlzKTsKIH0KIAotdm9pZCBI
VE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkKK3ZvaWQgSFRNTFN0
eWxlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoRXZlbnRTZW5kZXI8SFRNTFN0eWxlRWxl
bWVudD4mIGV2ZW50U2VuZGVyKQogewotICAgIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0
Y2hQZW5kaW5nRXZlbnRzKCk7Ci19CisgICAgQVNTRVJUX1VOVVNFRChldmVudFNlbmRlciwgJmV2
ZW50U2VuZGVyID09ICZkb2N1bWVudCgpLnNoYXJlZEV2ZW50U2VuZGVycygpLnN0eWxlTG9hZEV2
ZW50U2VuZGVyKCkpOwogCi12b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2
ZW50KFN0eWxlRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKQotewotICAgIEFTU0VSVF9VTlVTRUQo
ZXZlbnRTZW5kZXIsIGV2ZW50U2VuZGVyID09ICZzdHlsZUxvYWRFdmVudFNlbmRlcigpKTsKICAg
ICBpZiAobV9sb2FkZWRTaGVldCkKICAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogICAgIGVsc2UKQEAgLTEz
Myw3ICsxMjQsNyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6Om5vdGlmeUxvYWRlZFNoZWV0QW5k
QWxsQ3JpdGljYWxTdWJyZXNvdXJjZXMoYm9vbCBlcnJvck9jYwogICAgIGlmIChtX2ZpcmVkTG9h
ZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fbG9hZGVkU2hlZXQgPSAhZXJyb3JPY2N1cnJlZDsK
LSAgICBzdHlsZUxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKCp0aGlzKTsKKyAg
ICBkb2N1bWVudCgpLnNoYXJlZEV2ZW50U2VuZGVycygpLnN0eWxlTG9hZEV2ZW50U2VuZGVyKCku
ZGlzcGF0Y2hFdmVudFNvb24oKnRoaXMpOwogICAgIG1fZmlyZWRMb2FkID0gdHJ1ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAppbmRleCA5MWYwYjdjZDU4ZDQ2Njg4
YmVjZjY0ZjQ3MDA1MDAwNDNlMjNiODc2Li4wMjVkOTNkNjQyYzk3YzgxNTQ3YzliZWQ5YTBiYjI1
ZTNmMzg3N2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaApAQCAtMzIs
NyArMzIsNiBAQCBjbGFzcyBIVE1MU3R5bGVFbGVtZW50OwogY2xhc3MgU3R5bGVTaGVldDsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRXZlbnRTZW5kZXI7Ci10eXBlZGVmIEV2ZW50U2Vu
ZGVyPEhUTUxTdHlsZUVsZW1lbnQ+IFN0eWxlRXZlbnRTZW5kZXI7CiAKIGNsYXNzIEhUTUxTdHls
ZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgpAQCAtNDQsOCAr
NDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaXNhYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0
RGlzYWJsZWQoYm9vbCk7CiAKLSAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0V2ZW50KFN0eWxlRXZl
bnRTZW5kZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7
CisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudChFdmVudFNlbmRlcjxIVE1MU3R5bGVFbGVt
ZW50PiYpOwogCiBwcml2YXRlOgogICAgIEhUTUxTdHlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAKaW5kZXggZjhmNGY0M2MyNzEwNWVhMjZlNjJjNzc5MGRhYjNiZjU4
MGJhZjM0MC4uMDllZmU3YTcyN2UyM2M1MmUxZTBkMzUxMDQ3OGUzNTVhNjkyY2VmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIK
LSNpbmNsdWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKQEAgLTM4LDYgKzM3
LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0ltYWdl
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTaGFyZWRFdmVudFNl
bmRlcnMuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogI2lmIEVOQUJMRShW
SURFTykKQEAgLTYzLDIyICs2MywxOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBWYWx1ZUNoZWNrPFdl
YkNvcmU6OkltYWdlTG9hZGVyKj4gewogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBJ
bWFnZUV2ZW50U2VuZGVyJiBiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKQorRXZlbnRTZW5kZXI8SW1h
Z2VMb2FkZXI+JiBJbWFnZUxvYWRlcjo6YmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkgY29uc3QKIHsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2VFdmVudFNlbmRlcj4gc2VuZGVyKGV2ZW50
TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQpOwotICAgIHJldHVybiBzZW5kZXI7CisgICAgcmV0dXJu
IG1fZWxlbWVudC5kb2N1bWVudCgpLnNoYXJlZEV2ZW50U2VuZGVycygpLmltYWdlQmVmb3JlbG9h
ZEV2ZW50U2VuZGVyKCk7CiB9CiAKLXN0YXRpYyBJbWFnZUV2ZW50U2VuZGVyJiBsb2FkRXZlbnRT
ZW5kZXIoKQorRXZlbnRTZW5kZXI8SW1hZ2VMb2FkZXI+JiBJbWFnZUxvYWRlcjo6bG9hZEV2ZW50
U2VuZGVyKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2VFdmVudFNl
bmRlcj4gc2VuZGVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpOwotICAgIHJldHVybiBzZW5kZXI7
CisgICAgcmV0dXJuIG1fZWxlbWVudC5kb2N1bWVudCgpLnNoYXJlZEV2ZW50U2VuZGVycygpLmlt
YWdlTG9hZEV2ZW50U2VuZGVyKCk7CiB9CiAKLXN0YXRpYyBJbWFnZUV2ZW50U2VuZGVyJiBlcnJv
ckV2ZW50U2VuZGVyKCkKK0V2ZW50U2VuZGVyPEltYWdlTG9hZGVyPiYgSW1hZ2VMb2FkZXI6OmVy
cm9yRXZlbnRTZW5kZXIoKSBjb25zdAogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJbWFn
ZUV2ZW50U2VuZGVyPiBzZW5kZXIoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOwotICAgIHJldHVy
biBzZW5kZXI7CisgICAgcmV0dXJuIG1fZWxlbWVudC5kb2N1bWVudCgpLnNoYXJlZEV2ZW50U2Vu
ZGVycygpLmltYWdlRXJyb3JFdmVudFNlbmRlcigpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wg
cGFnZUlzQmVpbmdEaXNtaXNzZWQoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMzc5LDEwICszNzYs
MTAgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dGltZXJGaXJlZChUaW1lcjxJbWFnZUxvYWRlcj4mKQog
ICAgIGVsZW1lbnQoKS5kZXJlZigpOwogfQogCi12b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBl
bmRpbmdFdmVudChJbWFnZUV2ZW50U2VuZGVyKiBldmVudFNlbmRlcikKK3ZvaWQgSW1hZ2VMb2Fk
ZXI6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KEV2ZW50U2VuZGVyPEltYWdlTG9hZGVyPiYgZXZlbnRT
ZW5kZXIpCiB7Ci0gICAgQVNTRVJUKGV2ZW50U2VuZGVyID09ICZiZWZvcmVMb2FkRXZlbnRTZW5k
ZXIoKSB8fCBldmVudFNlbmRlciA9PSAmbG9hZEV2ZW50U2VuZGVyKCkgfHwgZXZlbnRTZW5kZXIg
PT0gJmVycm9yRXZlbnRTZW5kZXIoKSk7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUgPSBldmVudFNlbmRlci0+ZXZlbnRUeXBlKCk7CisgICAgQVNTRVJUKCZldmVudFNlbmRlciA9
PSAmYmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkgfHwgJmV2ZW50U2VuZGVyID09ICZsb2FkRXZlbnRT
ZW5kZXIoKSB8fCAmZXZlbnRTZW5kZXIgPT0gJmVycm9yRXZlbnRTZW5kZXIoKSk7CisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUgPSBldmVudFNlbmRlci5ldmVudFR5cGUoKTsKICAg
ICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQpCiAgICAgICAg
IGRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudCgpOwogICAgIGlmIChldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLmxvYWRFdmVudCkKQEAgLTQ0OCwyMSArNDQ1LDYgQEAgdm9pZCBJbWFnZUxv
YWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJyb3JFdmVudCgpCiAgICAgdXBkYXRlZEhhc1BlbmRpbmdF
dmVudCgpOwogfQogCi12b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2Fk
RXZlbnRzKCkKLXsKLSAgICBiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdF
dmVudHMoKTsKLX0KLQotdm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50
cygpCi17Ci0gICAgbG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7Ci19
Ci0KLXZvaWQgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0Vycm9yRXZlbnRzKCkKLXsKLSAg
ICBlcnJvckV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KIHZvaWQg
SW1hZ2VMb2FkZXI6OmVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudCgpCiB7CiAgICAgY2xlYXJG
YWlsZWRMb2FkVVJMKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCmluZGV4IDVmMzcy
NGNjYWJiNjVlZmE3OGJmZGY4NjdkYTFmMjc4ZDRkZGQ3M2QuLjhhMDE1NmI3NzBkNGFkOTU5MjBk
MDVhNTYzZTRjZjc0YzI1YzNmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCkBA
IC0zNSw3ICszNSw2IEBAIGNsYXNzIEltYWdlTG9hZGVyOwogY2xhc3MgUmVuZGVySW1hZ2VSZXNv
dXJjZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRXZlbnRTZW5kZXI7Ci10eXBlZGVm
IEV2ZW50U2VuZGVyPEltYWdlTG9hZGVyPiBJbWFnZUV2ZW50U2VuZGVyOwogCiBjbGFzcyBJbWFn
ZUxvYWRlciA6IHB1YmxpYyBDYWNoZWRJbWFnZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC02NSwxMSArNjQsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUGVuZGlu
Z0JlZm9yZUxvYWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUGVuZGluZ0JlZm9yZUxvYWRF
dmVudDsgfQogICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgeyByZXR1cm4gbV9o
YXNQZW5kaW5nTG9hZEV2ZW50IHx8IG1faGFzUGVuZGluZ0Vycm9yRXZlbnQ7IH0KIAotICAgIHZv
aWQgZGlzcGF0Y2hQZW5kaW5nRXZlbnQoSW1hZ2VFdmVudFNlbmRlciopOworICAgIHZvaWQgZGlz
cGF0Y2hQZW5kaW5nRXZlbnQoRXZlbnRTZW5kZXI8SW1hZ2VMb2FkZXI+Jik7CiAKLSAgICBzdGF0
aWMgdm9pZCBkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnRzKCk7Ci0gICAgc3RhdGljIHZv
aWQgZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOwotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNo
UGVuZGluZ0Vycm9yRXZlbnRzKCk7CisgICAgRXZlbnRTZW5kZXI8SW1hZ2VMb2FkZXI+JiBiZWZv
cmVMb2FkRXZlbnRTZW5kZXIoKSBjb25zdDsKKyAgICBFdmVudFNlbmRlcjxJbWFnZUxvYWRlcj4m
IGxvYWRFdmVudFNlbmRlcigpIGNvbnN0OworICAgIEV2ZW50U2VuZGVyPEltYWdlTG9hZGVyPiYg
ZXJyb3JFdmVudFNlbmRlcigpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgSW1h
Z2VMb2FkZXIoRWxlbWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyLmNwcAppbmRleCAxMWUzNDdlMDNhNWJmMzBlMjMzZTI2MzYwMGE1ZTkzMjE2
NTNhNTMzLi4xZTk5YmJjZGE0NGM1MzMwNGU3NDlmMzc0ZjYyMDRkNjE4YTk3OWRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTIw
LDkgKzEyMCw2IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGlucHV0U291cmNlKQogICAgIH0KIAogICAgIGRvV3JpdGUoc291cmNlLnRvU3Ry
aW5nKCkpOwotCi0gICAgLy8gQWZ0ZXIgcGFyc2luZywgZ28gYWhlYWQgYW5kIGRpc3BhdGNoIGlt
YWdlIGJlZm9yZWxvYWQgZXZlbnRzLgotICAgIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdC
ZWZvcmVMb2FkRXZlbnRzKCk7CiB9CiAKIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVy
cm9yKFhNTEVycm9yczo6RXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG0sIFRleHRQb3NpdGlv
biBwb3NpdGlvbikK
</data>
<flag name="review"
          id="263766"
          type_id="1"
          status="+"
          setter="kling"
    />
    <flag name="commit-queue"
          id="263772"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>