<?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>40554</bug_id>
          
          <creation_ts>2010-06-13 18:31:03 -0700</creation_ts>
          <short_desc>Rename HTMLParser to LegacyHTMLTreeConstructor</short_desc>
          <delta_ts>2010-06-13 22:20:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>237650</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-13 18:31:03 -0700</bug_when>
    <thetext>Rename HTMLParser to HTMLTreeBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237654</commentid>
    <comment_count>1</comment_count>
      <attachid>58613</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-13 18:39:28 -0700</bug_when>
    <thetext>Created attachment 58613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237663</commentid>
    <comment_count>2</comment_count>
      <attachid>58613</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-13 19:05:51 -0700</bug_when>
    <thetext>Comment on attachment 58613
Patch

Is TreeBuilder a name we made up, or is it something from the spec?  In any case, this class is only part of the parser, so HTMLParser is/was a misnomer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237664</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-13 19:09:23 -0700</bug_when>
    <thetext>I thought it was in the spec, but I guess the spec calls it &quot;tree construction&quot;:
http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#tree-construction

We could call it the TreeConstructor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237671</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-13 19:39:28 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; We could call it the TreeConstructor?

That seems like a good choice; the name is both clear and matches the specification.

We could also break out the tokenizer part of the parser into a separate class at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237681</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-13 20:43:26 -0700</bug_when>
    <thetext>In the new world, the Tokenizer (named HTML5Lexer) is a separate class.  I don&apos;t think anyone is going to be hacking on the old HTMLDocumentParser (formerly HTMLTokenizer) anytime soon.

I&apos;m happy to regen this patch as HTMLTreeConstructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237685</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-13 20:58:26 -0700</bug_when>
    <thetext>I think it’s slightly unfortunate that the future parser is named HTML5Parser, since I assume we will be using it even once HTML becomes HTML6.

And the old parser is named HTMLParser, but really it soon will be obsolete and perhaps even deleted.

I suppose that it’s too late to discuss this since we’ve already done the renaming, though. Generally speaking the new stuff should have the most beautiful names and the old stuff needs to have some sort of old prefix or name that points to a specific point in time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237688</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-13 21:02:57 -0700</bug_when>
    <thetext>My vision was that we would rename HTMLParser to LegacyHTMLDocumentParser and HTML5DocumentParser to HTMLDocumentParser once we&apos;ve switched and stayed switched.  Seemed premature at this point.  Then again, renamings may have been pre-mature.  They were prompted by our attempts as writing emails to explain what we&apos;ve done and the class names being horribly confusing. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237689</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-13 21:08:24 -0700</bug_when>
    <thetext>I might be overly optimistic, but I&apos;m hopeful we&apos;ll eventually be able to remove the legacy parsing classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237690</commentid>
    <comment_count>9</comment_count>
      <attachid>58619</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-13 21:09:22 -0700</bug_when>
    <thetext>Created attachment 58619
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237691</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-13 21:10:59 -0700</bug_when>
    <thetext>I expect we will be able to remove them too. So I think with planning we would want the new parser to have a name that reflects that optimism so we can avoid a rename later. Similarly if we are doing a rename for clarity I suggest going straight to that “Legacy” naming. Anyway, I think we’re good the way we are now, but the general principle that things should not have a “New” prefix or things that are “HTML5 and beyond” should not be named “HTML5” is what I wanted to mention. In case it informs future decisions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237692</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-13 21:15:17 -0700</bug_when>
    <thetext>I&apos;m slightly sad we&apos;re bike shedding about naming for classes we&apos;re going to delete, but I can see how going straight to &quot;legacy&quot; might be clearer to some.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237693</commentid>
    <comment_count>12</comment_count>
      <attachid>58620</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-13 21:19:26 -0700</bug_when>
    <thetext>Created attachment 58620
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237694</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-13 21:23:01 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I&apos;m slightly sad we&apos;re bike shedding about naming for classes we&apos;re going to delete, but I can see how going straight to &quot;legacy&quot; might be clearer to some.

My primary comments are about the names of the new classes. My primary concern is that we’re giving the old classes the names that the new classes should have later.

I don’t think we’re “bike shedding” yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237697</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-13 21:30:53 -0700</bug_when>
    <thetext>&gt; My primary comments are about the names of the new classes. My primary concern is that we’re giving the old classes the names that the new classes should have later.

My guess is the next phase of development is going to involve a lot of discussion comparing the behavior of the legacy parser with the HTML5 parser.  For example, here&apos;s a doc we wrote up recently entitled &quot;HTML5 parser vs WebKit legacy parser&quot;

https://docs.google.com/document/edit?id=1as5xYjyMSCph4960iz0-Kb7hZKf_L6f2vts57NMcVBI&amp;hl=en

As the new parsing algorithm is commonly known in the industry as the &quot;HTML5 parser&quot; (e.g., http://hacks.mozilla.org/2010/05/firefox-4-the-html5-parser-inline-svg-speed-and-more/comment-page-1/), that seems like reasonable terminology to use, at least in the interim.

In the long term, however, I agree that we&apos;ll want to remove the &quot;5&quot; from the class names.  My guess is a good time to do that will be once we&apos;re happy with it&apos;s behavior and are no longer comparing it with the old parser in detail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237714</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-13 22:20:13 -0700</bug_when>
    <thetext>Committed r61107: &lt;http://trac.webkit.org/changeset/61107&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58613</attachid>
            <date>2010-06-13 18:39:28 -0700</date>
            <delta_ts>2010-06-13 21:09:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40554-20100613183927.patch</filename>
            <type>text/plain</type>
            <size>62006</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA2OGVkNDkwM2Y2YzJlM2FjNmMyYzEzMzhlZjQ1MjA4YWU3YWY1NDI5Li4zYzM0NDYxYWY5NzM2
MmVhOWU0NmRiNzYwZmVkY2I2NGNmODNjZWMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNjIsNyArMjYyLDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3Bw
IFwKIAlodG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAgXAogCWh0bWwvSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uLmNwcCBcCi0JaHRtbC9IVE1MUGFyc2VyLmNwcCBcCisJaHRtbC9IVE1MVHJlZUJ1aWxk
ZXIuY3BwIFwKIAlodG1sL0hUTUxQYXJzZXJFcnJvckNvZGVzLmNwcCBcCiAJaHRtbC9IVE1MVGFi
bGVSb3dzQ29sbGVjdGlvbi5jcHAgXAogCWh0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBcCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA5ZTRjYjYxOTZmYmMzM2EzZTYwZDU4M2UzNjhiNTlhM2QzZTBhNzhkLi44YjI4NTVl
MjE4ZDJkZjUwNDFiOGNiZWY0YzA1ZDZmZWNiZDVhNDhjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTk2OSw3ICs5Njks
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24u
Y3BwCiAgICAgaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxQYXJh
bUVsZW1lbnQuY3BwCi0gICAgaHRtbC9IVE1MUGFyc2VyLmNwcAorICAgIGh0bWwvSFRNTFRyZWVC
dWlsZGVyLmNwcAogICAgIGh0bWwvSFRNTFBhcnNlckVycm9yQ29kZXMuY3BwCiAgICAgaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDRlM2ViZmExNjY0OTVlNTg2MTlhMDc5NzI1ODM1ZjlmMGNlMDFjNTkuLjRmYzViNTkzODZmNmM4
ZjQyMWI0ODNlMzE2MGI4MDdiMGIzMmVhNWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI2IEBACisyMDEwLTA2LTEzICBF
cmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgSFRNTFBhcnNlciB0byBIVE1MVHJlZUJ1aWxk
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNTU0
CisKKyAgICAgICAgVGhpcyBtYWtlcyBvdXIgb2xkIEhUTUwgcGFyc2luZyBzeXN0ZW0gY2xvc2Vy
IG1hdGNoIHRoZQorICAgICAgICBIVE1MNSBzcGVjLCBhbmQgdGh1cyBlYXNpZXIgdG8gY29tcGFy
ZSB0byB0aGUgbmV3IEhUTUw1CisgICAgICAgIHBhcnNpbmcgc3lzdGVtLgorCisgICAgICAgIFRo
aXMgcmVuYW1lIHdhcyBlbnRpcmVseSBhdXRvbWF0aWMuICBEb25lIGJ5IGRvLXdlYmNvcmUtcmVu
YW1lLgorCisgICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgICogZG9tL0RvY3VtZW50UGFyc2VyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFBhcnNlcjo6aHRtbFRyZWVCdWlsZGVyKToKKyAgICAg
ICAgKiBodG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TDVEb2N1bWVudFBhcnNlcjo6aHRtbFRyZWVCdWlsZGVyKToKKyAgICAgICAgKiBodG1sL0hUTUw1
RG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6SFRNTDVUcmVlQnVpbGRlcik6Cisg
ICAgICAgICogaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
NVRyZWVCdWlsZGVyOjpsZWdhY3lUcmVlQnVpbGRlcik6CisgICAgICAgICogaHRtbC9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpI
VE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50UGFyc2VyLmg6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6Omh0bWxUcmVlQnVpbGRlcik6
CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAg
ICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxNZXRlckVs
ZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTFBhcnNlci5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogaHRtbC9IVE1MUGFyc2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MUHJv
Z3Jlc3NFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxUcmVlQnVpbGRlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6YWRkVGFncyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U3RhY2tFbGVtOjpIVE1MU3RhY2tFbGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdGFja0Vs
ZW06OmRlcmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkhUTUxU
cmVlQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6On5IVE1MVHJl
ZUJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpyZXNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnNldEN1cnJlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6dGFnUHJpb3JpdHlPZk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpsaW1pdERlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
aW5zZXJ0Tm9kZUFmdGVyTGltaXREZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OnBhcnNlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpw
YXJzZURvY3R5cGVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjppc1RhYmxlU2VjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjppc1RhYmxlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjppc1RhYmxl
UmVsYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjppc1Njb3BpbmdUYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjppbnNlcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmVlQnVpbGRlcjo6aGFuZGxlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjp0ZXh0Q3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OmNvbW1lbnRDcmVhdGVFcnJvckNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmVlQnVpbGRlcjo6aGVhZENyZWF0ZUVycm9yQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyZWVCdWlsZGVyOjpib2R5Q3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJlZUJ1aWxkZXI6OmZyYW1lc2V0Q3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmZvcm1DcmVhdGVFcnJvckNoZWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6aXNpbmRleENyZWF0ZUVycm9yQ2hlY2spOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpzZWxlY3RDcmVhdGVFcnJvckNoZWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6ZGRDcmVhdGVFcnJvckNoZWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6ZHRDcmVhdGVFcnJvckNoZWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cnBDcmVhdGVFcnJvckNoZWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cnRDcmVhdGVFcnJvckNoZWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6bmVzdGVkQ3JlYXRlRXJyb3JDaGVj
ayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6Om5lc3RlZFBDbG9zZXJDcmVh
dGVFcnJvckNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6bmVzdGVk
U3R5bGVDcmVhdGVFcnJvckNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6dGFibGVDZWxsQ3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OnRhYmxlU2VjdGlvbkNyZWF0ZUVycm9yQ2hlY2spOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyZWVCdWlsZGVyOjpub2VtYmVkQ3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6Om5vZnJhbWVzQ3JlYXRlRXJyb3JDaGVjayk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6Om5vc2NyaXB0Q3JlYXRlRXJyb3JDaGVjayk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnBDbG9zZXJDcmVhdGVFcnJvckNo
ZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cENsb3NlclN0cmljdENy
ZWF0ZUVycm9yQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjptYXBD
cmVhdGVFcnJvckNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6Om1hcFRhZ1RvRnVuYyk6CisgICAg
ICAgIChXZWJDb3JlOjptYXBUYWdzVG9GdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6Z2V0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmFs
bG93TmVzdGVkUmVkdW5kYW50VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0Nsb3NlVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
aXNIZWFkaW5nVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6aXNJbmxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjppc1Jlc2lkdWFsU3R5bGVU
YWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjppc0FmZmVjdGVkQnlSZXNp
ZHVhbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6aGFuZGxlUmVz
aWR1YWxTdHlsZUNsb3NlVGFnQWNyb3NzQmxvY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6cmVvcGVuUmVzaWR1YWxTdHlsZVRhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyZWVCdWlsZGVyOjpwdXNoQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpwb3BCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnBv
cE9uZUJsb2NrQ29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cG9w
T25lQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjptb3ZlT25lQmxv
Y2tUb1N0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6Y2hlY2tJZkhh
c1BFbGVtZW50SW5TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnBv
cElubGluZUJsb2Nrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmZyZWVC
bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmNyZWF0ZUhlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpoYW5kbGVJc2luZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6c3RhcnRCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6ZmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpyZXBvcnRFcnJvclRvQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpzaG91
bGRDcmVhdGVJbXBsaWNpdEhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplRm9yTnVt
YmVyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZSk6
CisgICAgICAgICogaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnNraXBNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6aXNIYW5kbGluZ1Jlc2lkdWFsU3R5bGVBY3Jvc3NCbG9ja3MpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpzZXRTa2lwTW9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnBvcEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6aGFzUEVsZW1lbnRJblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6cmVwb3J0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjopOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQ3JlYXRlSW1wbGljaXRIZWFkKToKKyAg
ICAgICAgKiBodG1sL1N0ZXBSYW5nZS5jcHA6CisgICAgICAgICogaHRtbC9WYWxpZGl0eVN0YXRl
LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcDoKKwogMjAxMC0wNi0x
MSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlYWQ4ZmVlOTRjZWZmYzE2MDhjMTVhNzAwYjNmMmFkMWUz
ZTNiZjU4Li4xMDY2OWQzZjIyNjZlZTM2OTQ2NDE5YjhhMDU2MjMzZjdkYzlkNDkwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
QEAgLTEyMjEsOCArMTIyMSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9odG1s
L0hUTUxQYXJhZ3JhcGhFbGVtZW50LmggXAogCVdlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50
LmNwcCBcCiAJV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaCBcCi0JV2ViQ29yZS9odG1s
L0hUTUxQYXJzZXIuY3BwIFwKLQlXZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5oIFwKKwlXZWJDb3Jl
L2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcCBcCisJV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRl
ci5oIFwKIAlXZWJDb3JlL2h0bWwvSFRNTFBhcnNlckVycm9yQ29kZXMuY3BwIFwKIAlXZWJDb3Jl
L2h0bWwvSFRNTFBhcnNlckVycm9yQ29kZXMuaCBcCiAJV2ViQ29yZS9odG1sL0hUTUxQYXJzZXJR
dWlya3MuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IGEzNGFiZTQ0ZTNiNDZmZWVlMDFjOTg4MTAxMTljN2JmMjI1ODEzZTcu
LjI4ZmE0MmI2OTYxMWUxYzYyNWU4MzY4OTAxNjhjNTkzODY5NGZmODIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNjEwLDgg
KzE2MTAsOCBAQAogICAgICAgICAgICAgJ2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRt
bC9IVE1MUGFyYW1FbGVtZW50LmgnLAotICAgICAgICAgICAgJ2h0bWwvSFRNTFBhcnNlci5jcHAn
LAotICAgICAgICAgICAgJ2h0bWwvSFRNTFBhcnNlci5oJywKKyAgICAgICAgICAgICdodG1sL0hU
TUxUcmVlQnVpbGRlci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvSFRNTFRyZWVCdWlsZGVyLmgn
LAogICAgICAgICAgICAgJ2h0bWwvSFRNTFBhcnNlckVycm9yQ29kZXMuY3BwJywKICAgICAgICAg
ICAgICdodG1sL0hUTUxQYXJzZXJFcnJvckNvZGVzLmgnLAogICAgICAgICAgICAgJ2h0bWwvSFRN
TFBsdWdJbkVsZW1lbnQuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9X
ZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDg5YjhiM2ZmMmE4ZmIzMzc2Yjc5YTQzZjJhNDc1NTQ0
ZjI3Yjg0NGQuLjllNDE1MzQ3YmU0OTIwOWMyNTEyZDNhMWQwY2ViODFiNzgzOWRkN2QgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAt
Njc2LDcgKzY3Niw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLmNwcCBcCiAgICAgaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAgXAogICAgIGh0bWwv
SFRNTFBhcmFtRWxlbWVudC5jcHAgXAotICAgIGh0bWwvSFRNTFBhcnNlci5jcHAgXAorICAgIGh0
bWwvSFRNTFRyZWVCdWlsZGVyLmNwcCBcCiAgICAgaHRtbC9IVE1MUGFyc2VyRXJyb3JDb2Rlcy5j
cHAgXAogICAgIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwIFwKQEAgLTE0MTUsNyArMTQxNSw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIGh0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1MUGFyYW1FbGVt
ZW50LmggXAogICAgIGh0bWwvSFRNTFBhcnNlckVycm9yQ29kZXMuaCBcCi0gICAgaHRtbC9IVE1M
UGFyc2VyLmggXAorICAgIGh0bWwvSFRNTFRyZWVCdWlsZGVyLmggXAogICAgIGh0bWwvSFRNTFBs
dWdJbkVsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggXAogICAg
IGh0bWwvSFRNTFByZUVsZW1lbnQuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCBiOTJlYzIyODI0ZDRkNTM3M2I4N2U4OWJmOGFkOGEzODZmZTRmZDg1Li4xNzIzZDIw
YmUzYzY4MjVkZjg3M2IxMzc5NDhjYTZjYWViNzgzYTI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKQEAgLTM2NDQ5LDExICszNjQ0OSwxMSBAQAogCQkJCT4NCiAJCQk8L0Zp
bGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxQYXJzZXIuY3Bw
Ig0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTFRyZWVCdWlsZGVyLmNwcCINCiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRN
TFBhcnNlci5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTFRyZWVCdWlsZGVyLmgi
DQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI5ZGE2ZDE4YmY0OWFmNDAwNmRiNmFmN2QzNWU0ZTky
NGI2MDFjODcuLjdmNGEzMWUzZDM0MGI1MDZiOWVkMTY1MmQ5MGE3MGE1NmVlYmFlN2IgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDg0LDcgKzI0ODQs
NyBAQAogCQk5M0VCMzU1RjA5RTM3RkQ2MDBGNDM3OTkgLyogTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0VCMzU1RTA5RTM3RkQ2MDBGNDM3OTkgLyogTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cy5jcHAgKi87IH07CiAJCTkzRjE5OEU1MDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1MRG9jdW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjNEMjND
MDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MRG9jdW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOThFNjA4MjQ1RTU5MDAxRTlBQkMgLyog
SFRNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY1MjNEMjNGMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MRWxlbWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzRjE5OEVGMDgyNDVFNTkw
MDFFOUFCQyAvKiBIVE1MUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNTIzRDI1MTAyREU0Mzk2MDE4NjM1Q0EgLyogSFRNTFBhcnNlci5oICov
OyB9OworCQk5M0YxOThFRjA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTFRyZWVCdWlsZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTIzRDI1MTAyREU0
Mzk2MDE4NjM1Q0EgLyogSFRNTFRyZWVCdWlsZGVyLmggKi87IH07CiAJCTkzRjE5OEYwMDgyNDVF
NTkwMDFFOUFCQyAvKiBIVE1MRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjNEMjUzMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1M
RG9jdW1lbnRQYXJzZXIuaCAqLzsgfTsKIAkJOTNGMTk4RjYwODI0NUU1OTAwMUU5QUJDIC8qIFRl
eHRSZXNvdXJjZURlY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY1MjNEMjc5MDJERTQzRDcwMTg2MzVDQSAvKiBUZXh0UmVzb3VyY2VEZWNvZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNG
MTk5MTgwODI0NUU1OTAwMUU5QUJDIC8qIFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTIzRDMwNDAyREU0NDc2MDE4NjM1Q0EgLyogUmFuZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjUx
NCw3ICsyNTE0LDcgQEAKIAkJOTNGMTlBNUYwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVWaWV3
RmFjdG9yeS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjU4Nzg1NTUwMkRFMzc1OTAxRUE0MTIyIC8qIFdlYkNvcmVWaWV3RmFjdG9yeS5tICovOyB9Owog
CQk5M0YxOUE5MTA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTERvY3VtZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjNEMjNCMDJERTQzOTYwMTg2
MzVDQSAvKiBIVE1MRG9jdW1lbnQuY3BwICovOyB9OwogCQk5M0YxOUE5MjA4MjQ1RTU5MDAxRTlB
QkMgLyogSFRNTEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjUyM0QyM0UwMkRFNDM5NjAxODYzNUNBIC8qIEhUTUxFbGVtZW50LmNwcCAq
LzsgfTsKLQkJOTNGMTlBOUIwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUyM0QyNTAwMkRFNDM5
NjAxODYzNUNBIC8qIEhUTUxQYXJzZXIuY3BwICovOyB9OworCQk5M0YxOUE5QjA4MjQ1RTU5MDAx
RTlBQkMgLyogSFRNTFRyZWVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjNEMjUwMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MVHJlZUJ1
aWxkZXIuY3BwICovOyB9OwogCQk5M0YxOUE5QzA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY1MjNEMjUyMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MRG9jdW1lbnRQYXJzZXIuY3BwICov
OyB9OwogCQk5M0YxOUE5RDA4MjQ1RTU5MDAxRTlBQkMgLyogVGV4dFJlc291cmNlRGVjb2Rlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTIzRDI3
ODAyREU0M0Q3MDE4NjM1Q0EgLyogVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgKi87IH07CiAJCTkz
RjE5QUI5MDgyNDVFNTkwMDFFOUFCQyAvKiBSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTIzRDMwMzAyREU0NDc2MDE4NjM1Q0EgLyogUmFu
Z2UuY3BwICovOyB9OwpAQCAtMTA2MzksOCArMTA2MzksOCBAQAogCQlGNTIzRDIzQzAyREU0Mzk2
MDE4NjM1Q0EgLyogSFRNTERvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjUyM0QyM0UwMkRFNDM5NjAx
ODYzNUNBIC8qIEhUTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1MjNEMjNGMDJERTQz
OTYwMTg2MzVDQSAvKiBIVE1MRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJRjUyM0QyNTAwMkRFNDM5NjAx
ODYzNUNBIC8qIEhUTUxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQlGNTIzRDI1MTAyREU0Mzk2
MDE4NjM1Q0EgLyogSFRNTFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQlGNTIzRDI1MDAyREU0Mzk2MDE4NjM1
Q0EgLyogSFRNTFRyZWVCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxUcmVlQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQlGNTIzRDI1MTAy
REU0Mzk2MDE4NjM1Q0EgLyogSFRNTFRyZWVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxUcmVlQnVpbGRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjUyM0Qy
NTIwMkRFNDM5NjAxODYzNUNBIC8qIEhUTUxEb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJRjUyM0QyNTMwMkRFNDM5NjAxODYzNUNBIC8qIEhUTUxEb2N1bWVudFBhcnNl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
VE1MRG9jdW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1MjNEMjc4MDJERTQzRDcwMTg2MzVDQSAvKiBUZXh0UmVz
b3VyY2VEZWNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRleHRSZXNvdXJjZURlY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTEzNjQwLDggKzEzNjQw
LDggQEAKIAkJCQlBODcxRDQ0RjBBMTI3Q0JDMDBCMTJBNjggLyogSFRNTFBhcmFtRWxlbWVudC5j
cHAgKi8sCiAJCQkJQTg3MUQ0NEUwQTEyN0NCQzAwQjEyQTY4IC8qIEhUTUxQYXJhbUVsZW1lbnQu
aCAqLywKIAkJCQkxQUUyQUI3MjBBMUNFODE1MDBCNDJCMjUgLyogSFRNTFBhcmFtRWxlbWVudC5p
ZGwgKi8sCi0JCQkJRjUyM0QyNTAwMkRFNDM5NjAxODYzNUNBIC8qIEhUTUxQYXJzZXIuY3BwICov
LAotCQkJCUY1MjNEMjUxMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MUGFyc2VyLmggKi8sCisJCQkJ
RjUyM0QyNTAwMkRFNDM5NjAxODYzNUNBIC8qIEhUTUxUcmVlQnVpbGRlci5jcHAgKi8sCisJCQkJ
RjUyM0QyNTEwMkRFNDM5NjAxODYzNUNBIC8qIEhUTUxUcmVlQnVpbGRlci5oICovLAogCQkJCUJD
NTg4QjRBMEJGQTcyM0MwMEVFNjc5RSAvKiBIVE1MUGFyc2VyRXJyb3JDb2Rlcy5jcHAgKi8sCiAJ
CQkJQkM1ODhBRUYwQkZBNkNGOTAwRUU2NzlFIC8qIEhUTUxQYXJzZXJFcnJvckNvZGVzLmggKi8s
CiAJCQkJNDQ5QjE5RjMwRkE3MkVDRTAwMTVDQTRBIC8qIEhUTUxQYXJzZXJRdWlya3MuaCAqLywK
QEAgLTE4MDg2LDcgKzE4MDg2LDcgQEAKIAkJCQlBODEzNjlEQTA5NzM3NEY2MDBENzQ0NjMgLyog
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0NCNTBBMTky
QjlDMDBBOEVGNUYgLyogSFRNTFBhcmFncmFwaEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4NzFENDU4MEExMjdDQkMwMEIxMkE2OCAvKiBIVE1MUGFyYW1FbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKLQkJCQk5M0YxOThFRjA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTFBhcnNlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTNGMTk4RUYwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxUcmVlQnVpbGRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1ODhBRjAwQkZBNkNGOTAwRUU2NzlFIC8qIEhUTUxQ
YXJzZXJFcnJvckNvZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDlCMTlGNTBGQTcyRUNFMDAx
NUNBNEEgLyogSFRNTFBhcnNlclF1aXJrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MUQ0NTYw
QTEyN0NCQzAwQjEyQTY4IC8qIEhUTUxQbHVnSW5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTIwNDE3LDcgKzIwNDE3LDcgQEAKIAkJCQk5MzI3QTk0MjA5OTY4RDFBMDA2OEE1NDYgLyogSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RUE3Q0IyMEExOTJC
OUMwMEE4RUY1RiAvKiBIVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBODcxRDQ1OTBBMTI3Q0JDMDBCMTJBNjggLyogSFRNTFBhcmFtRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk5M0YxOUE5QjA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTFBhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk5M0YxOUE5QjA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTFRyZWVC
dWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNTg4QjRCMEJGQTcyM0MwMEVFNjc5RSAv
KiBIVE1MUGFyc2VyRXJyb3JDb2Rlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxRDQ1NzBB
MTI3Q0JDMDBCMTJBNjggLyogSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDQxNTI5MkYwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYWNiNTdlMGY1OGM4YWM0ZDIxZTgzNmZlZGUw
ODY5NWJlM2VmZDc5My4uZmNkY2EzM2Y0ZGUyODZkZjI0ZDBmNjE4N2NiZTgxMWMyMTliMGZjMSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNzYsNyArNzYsNyBAQAogI2luY2x1ZGUgIkhUTUxNYXBFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
Ci0jaW5jbHVkZSAiSFRNTFBhcnNlci5oIgorI2luY2x1ZGUgIkhUTUxUcmVlQnVpbGRlci5oIgog
I2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGl0bGVFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgiCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFBhcnNlci5oIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaAppbmRl
eCA3ZTBhZTYwNTc4NjdlNDY0ZmE4NjQzYzM1YWZiMThiYWVmZDAwMjdiLi5kZTc4YWM3YTcyNGNm
MDk2NTM0NTQwMTRlOGI4ZmFlMzE5MmExZDg3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFBhcnNlci5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKQEAgLTI1LDcg
KzI1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgSFRNTFBhcnNlcjsK
KyAgICBjbGFzcyBIVE1MVHJlZUJ1aWxkZXI7CiAgICAgY2xhc3MgSFRNTERvY3VtZW50UGFyc2Vy
OwogICAgIGNsYXNzIFNlZ21lbnRlZFN0cmluZzsKICAgICBjbGFzcyBYU1NBdWRpdG9yOwpAQCAt
NTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkge30KIAotICAgICAgICB2aXJ0
dWFsIEhUTUxQYXJzZXIqIGh0bWxUcmVlQnVpbGRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAg
ICAgICAgdmlydHVhbCBIVE1MVHJlZUJ1aWxkZXIqIGh0bWxUcmVlQnVpbGRlcigpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KICAgICAgICAgdmlydHVhbCBIVE1MRG9jdW1lbnRQYXJzZXIqIGFzSFRNTERv
Y3VtZW50UGFyc2VyKCkgeyByZXR1cm4gMDsgfQogCiAgICAgICAgIFhTU0F1ZGl0b3IqIHhzc0F1
ZGl0b3IoKSBjb25zdCB7IHJldHVybiBtX1hTU0F1ZGl0b3I7IH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MNURvY3Vt
ZW50UGFyc2VyLmNwcAppbmRleCBhZDRiNGRmZTlhMDIxN2I4NTFiNmI2OGQzNWE2MjcwNzgxYWNi
OTVkLi5mZDhlNTExYjc0NTk1Y2VmYmM1ZjgwN2UzMGE0OTZjNmExOTYxODEyIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgaW50IEhUTUw1RG9j
dW1lbnRQYXJzZXI6OmNvbHVtbk51bWJlcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGV4ZXItPmNv
bHVtbk51bWJlcigpOwogfQogCi1IVE1MUGFyc2VyKiBIVE1MNURvY3VtZW50UGFyc2VyOjpodG1s
VHJlZUJ1aWxkZXIoKSBjb25zdAorSFRNTFRyZWVCdWlsZGVyKiBIVE1MNURvY3VtZW50UGFyc2Vy
OjpodG1sVHJlZUJ1aWxkZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyZWVCdWlsZGVyLT5s
ZWdhY3lUcmVlQnVpbGRlcigpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1RG9j
dW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmgKaW5kZXgg
NDYzZDc3NjljZGVlMjY4MTBhYWQyYjM0YzUxN2ZkZDE2YmJmYzI1ZS4uNzI0NzI1MjA0NjAzYzdh
MDA4MmFlZjY5MjQ1N2E2ZjA4OTk2MzdjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1
RG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5o
CkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxEb2N1
bWVudDsKLWNsYXNzIEhUTUxQYXJzZXI7CitjbGFzcyBIVE1MVHJlZUJ1aWxkZXI7CiBjbGFzcyBI
VE1MNUxleGVyOwogY2xhc3MgSFRNTDVTY3JpcHRSdW5uZXI7CiBjbGFzcyBIVE1MNVRyZWVCdWls
ZGVyOwpAQCAtNTgsOSArNTgsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVT
Y3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCk7CiAgICAgdmlydHVhbCBpbnQgbGluZU51bWJl
cigpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IGNvbHVtbk51bWJlcigpIGNvbnN0OwotICAgIC8v
IEZJWE1FOiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGFjY2Vzc2VzIHRoZSBIVE1MUGFyc2VyIHZp
YSB0aGlzIG1ldGhvZC4KLSAgICAvLyBSZW1vdmUgdGhpcyB3aGVuIHRoZSBIVE1MUGFyc2VyIGlz
IG5vIGxvbmdlciB1c2VkLgotICAgIHZpcnR1YWwgSFRNTFBhcnNlciogaHRtbFRyZWVCdWlsZGVy
KCkgY29uc3Q7CisgICAgLy8gRklYTUU6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgYWNjZXNzZXMg
dGhlIEhUTUxUcmVlQnVpbGRlciB2aWEgdGhpcyBtZXRob2QuCisgICAgLy8gUmVtb3ZlIHRoaXMg
d2hlbiB0aGUgSFRNTFRyZWVCdWlsZGVyIGlzIG5vIGxvbmdlciB1c2VkLgorICAgIHZpcnR1YWwg
SFRNTFRyZWVCdWlsZGVyKiBodG1sVHJlZUJ1aWxkZXIoKSBjb25zdDsKIAogICAgIC8vIEhUTUw1
U2NyaXB0UnVubmVySG9zdAogICAgIHZpcnR1YWwgdm9pZCB3YXRjaEZvckxvYWQoQ2FjaGVkUmVz
b3VyY2UqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcAppbmRleCAyYmVhMzgyNzM4NGYzZDZm
NDkyYmM2MjFlMzBiYWNkOWQ2YThmNjMwLi5jMDI1Yjg0MjI1NDkxYWY3ODk5ZWJkZjIwNzdiNDNl
NTI4NGZlMWNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBA
CiAjaW5jbHVkZSAiSFRNTDVUb2tlbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxQYXJzZXIuaCIKKyNpbmNsdWRlICJI
VE1MVHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAt
NDgsNyArNDgsNyBAQCBIVE1MNVRyZWVCdWlsZGVyOjpIVE1MNVRyZWVCdWlsZGVyKEhUTUw1TGV4
ZXIqIGxleGVyLCBIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBibwogICAgICwgbV9pc1BhdXNlZChm
YWxzZSkKICAgICAsIG1faW5zZXJ0aW9uTW9kZShJbml0aWFsKQogICAgICwgbV9sZXhlcihsZXhl
cikKLSAgICAsIG1fbGVnYWN5VHJlZUJ1aWxkZXIobmV3IEhUTUxQYXJzZXIoZG9jdW1lbnQsIHJl
cG9ydEVycm9ycykpCisgICAgLCBtX2xlZ2FjeVRyZWVCdWlsZGVyKG5ldyBIVE1MVHJlZUJ1aWxk
ZXIoZG9jdW1lbnQsIHJlcG9ydEVycm9ycykpCiAgICAgLCBtX2xhc3RTY3JpcHRFbGVtZW50U3Rh
cnRMaW5lKHVuaW5pdGlhbGl6ZWRMaW5lTnVtYmVyVmFsdWUpCiAgICAgLCBtX3NjcmlwdFRvUHJv
Y2Vzc1N0YXJ0TGluZSh1bmluaXRpYWxpemVkTGluZU51bWJlclZhbHVlKQogewpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNVRy
ZWVCdWlsZGVyLmgKaW5kZXggNmYwZGU2Yjk3Yzk4ODliNjc1NWExMmRkMTcyOWVhNzdjNTVmOTQ3
Yi4uYjZiYjhhMWFjOTFlNjFkY2Q3OWE3Mjc1YjcxM2IzNTAzOTU3OTAxOCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVU
cmVlQnVpbGRlci5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTDVM
ZXhlcjsKIGNsYXNzIEhUTUw1VG9rZW47CiBjbGFzcyBIVE1MRG9jdW1lbnQ7Ci1jbGFzcyBIVE1M
UGFyc2VyOworY2xhc3MgSFRNTFRyZWVCdWlsZGVyOwogY2xhc3MgTm9kZTsKIAogY2xhc3MgSFRN
TDVUcmVlQnVpbGRlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CkBAIC02MCw3ICs2MCw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgZGlydHksIHJvdHRlbiBoYWNrIHRvIGtl
ZXAgSFRNTEZvcm1Db250cm9sRWxlbWVudCBoYXBweQogICAgIC8vIHVudGlsIHdlIHN0b3AgdXNp
bmcgdGhlIGxlZ2FjeSBwYXJzZXIuIERPIE5PVCBDQUxMIFRISVMgTUVUSE9ELgotICAgIEhUTUxQ
YXJzZXIqIGxlZ2FjeVRyZWVCdWlsZGVyKCkgY29uc3QgeyByZXR1cm4gbV9sZWdhY3lUcmVlQnVp
bGRlci5nZXQoKTsgfQorICAgIEhUTUxUcmVlQnVpbGRlciogbGVnYWN5VHJlZUJ1aWxkZXIoKSBj
b25zdCB7IHJldHVybiBtX2xlZ2FjeVRyZWVCdWlsZGVyLmdldCgpOyB9CiAKIHByaXZhdGU6CiAg
ICAgLy8gUmVwcmVzZW50cyBIVE1MNSAiaW5zZXJ0aW9uIG1vZGUiCkBAIC05MCw4ICs5MCw4IEBA
IHByaXZhdGU6CiAgICAgLy8gZnJvbSB3aXRoaW4gcGFyc2VyIGFjdGlvbnMuCiAgICAgSFRNTDVM
ZXhlciogbV9sZXhlcjsKIAotICAgIC8vIFdlJ3JlIHJlLXVzaW5nIGxvZ2ljIGZyb20gdGhlIG9s
ZCBIVE1MUGFyc2VyIHdoaWxlIHRoaXMgY2xhc3MgaXMgYmVpbmcgd3JpdHRlbi4KLSAgICBPd25Q
dHI8SFRNTFBhcnNlcj4gbV9sZWdhY3lUcmVlQnVpbGRlcjsKKyAgICAvLyBXZSdyZSByZS11c2lu
ZyBsb2dpYyBmcm9tIHRoZSBvbGQgSFRNTFRyZWVCdWlsZGVyIHdoaWxlIHRoaXMgY2xhc3MgaXMg
YmVpbmcgd3JpdHRlbi4KKyAgICBPd25QdHI8SFRNTFRyZWVCdWlsZGVyPiBtX2xlZ2FjeVRyZWVC
dWlsZGVyOwogCiAgICAgLy8gVGhlc2UgbWVtYmVycyBhcmUgaW50ZW50aW9uYWxseSBkdXBsaWNh
dGVkIGFzIHRoZSBmaXJzdCBzZXQgaXMgYSBoYWNrCiAgICAgLy8gb24gdG9wIG9mIHRoZSBsZWdh
Y3kgcGFyc2VyIHdoaWNoIHdpbGwgZXZlbnR1YWxseSBiZSByZW1vdmVkLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcAppbmRleCA5NTE2N2NmM2FjNTQyMDYwMjU2ZDVjMWU2MjM0MjUxMGI3
ZGFkNDRkLi4zOWM0MmIyYjM0NjIyOTgyMjgzZTVkYjFhYTc4Nzc2MjdkNThlNjhjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCi0jaW5jbHVkZSAiSFRNTFBhcnNlci5oIgorI2luY2x1ZGUgIkhUTUxUcmVlQnVpbGRlci5o
IgogI2luY2x1ZGUgIkhUTUxTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZXdTb3Vy
Y2VEb2N1bWVudC5oIgogI2luY2x1ZGUgIkltYWdlTG9hZGVyLmgiCkBAIC0xNjAsNyArMTYwLDcg
QEAgSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiBk
b2MsIGJvb2wgcmVwb3J0RXJyb3JzKQogICAgICwgbV90aW1lcih0aGlzLCAmSFRNTERvY3VtZW50
UGFyc2VyOjp0aW1lckZpcmVkKQogICAgICwgbV9leHRlcm5hbFNjcmlwdHNUaW1lcih0aGlzLCAm
SFRNTERvY3VtZW50UGFyc2VyOjpleGVjdXRlRXh0ZXJuYWxTY3JpcHRzVGltZXJGaXJlZCkKICAg
ICAsIG1fZG9jKGRvYykKLSAgICAsIG1fdHJlZUJ1aWxkZXIobmV3IEhUTUxQYXJzZXIoZG9jLCBy
ZXBvcnRFcnJvcnMpKQorICAgICwgbV90cmVlQnVpbGRlcihuZXcgSFRNTFRyZWVCdWlsZGVyKGRv
YywgcmVwb3J0RXJyb3JzKSkKICAgICAsIG1faW5Xcml0ZShmYWxzZSkKICAgICAsIG1fZnJhZ21l
bnQoZmFsc2UpCiAgICAgLCBtX3NjcmlwdGluZ1Blcm1pc3Npb24oRnJhZ21lbnRTY3JpcHRpbmdB
bGxvd2VkKQpAQCAtMjAwLDcgKzIwMCw3IEBAIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3Vt
ZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWcsIEZyYWdtZW50U2NyaXB0aW5nCiAgICAg
LCBtX3RpbWVyKHRoaXMsICZIVE1MRG9jdW1lbnRQYXJzZXI6OnRpbWVyRmlyZWQpCiAgICAgLCBt
X2V4dGVybmFsU2NyaXB0c1RpbWVyKHRoaXMsICZIVE1MRG9jdW1lbnRQYXJzZXI6OmV4ZWN1dGVF
eHRlcm5hbFNjcmlwdHNUaW1lckZpcmVkKQogICAgICwgbV9kb2MoZnJhZy0+ZG9jdW1lbnQoKSkK
LSAgICAsIG1fdHJlZUJ1aWxkZXIobmV3IEhUTUxQYXJzZXIoZnJhZywgc2NyaXB0aW5nUGVybWlz
c2lvbikpCisgICAgLCBtX3RyZWVCdWlsZGVyKG5ldyBIVE1MVHJlZUJ1aWxkZXIoZnJhZywgc2Ny
aXB0aW5nUGVybWlzc2lvbikpCiAgICAgLCBtX2luV3JpdGUoZmFsc2UpCiAgICAgLCBtX2ZyYWdt
ZW50KHRydWUpCiAgICAgLCBtX3NjcmlwdGluZ1Blcm1pc3Npb24oc2NyaXB0aW5nUGVybWlzc2lv
bikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNv
cmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCAxZDllYmY3MTE3ZTUwYjk2ZmJhOGQ4
YjNmNmQwMGIyMjA3M2IwNTY4Li5lZTZiZWYwZjRkYmJmMTUxNTIyNWU2YTU3MjRkMjc1NTBmMmYz
YTcyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmgKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNz
IEhUTUxEb2N1bWVudDsKIGNsYXNzIEhUTUxTY3JpcHRFbGVtZW50OwogY2xhc3MgSFRNTFZpZXdT
b3VyY2VEb2N1bWVudDsKIGNsYXNzIEZyYW1lVmlldzsKLWNsYXNzIEhUTUxQYXJzZXI7CitjbGFz
cyBIVE1MVHJlZUJ1aWxkZXI7CiBjbGFzcyBOb2RlOwogY2xhc3MgUHJlbG9hZFNjYW5uZXI7CiBj
bGFzcyBTY3JpcHRTb3VyY2VDb2RlOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpOwogCi0g
ICAgdmlydHVhbCBIVE1MUGFyc2VyKiBodG1sVHJlZUJ1aWxkZXIoKSBjb25zdCB7IHJldHVybiBt
X3RyZWVCdWlsZGVyLmdldCgpOyB9CisgICAgdmlydHVhbCBIVE1MVHJlZUJ1aWxkZXIqIGh0bWxU
cmVlQnVpbGRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZUJ1aWxkZXIuZ2V0KCk7IH0KICAgICB2
aXJ0dWFsIEhUTUxEb2N1bWVudFBhcnNlciogYXNIVE1MRG9jdW1lbnRQYXJzZXIoKSB7IHJldHVy
biB0aGlzOyB9CiAKIHByaXZhdGU6CkBAIC00MzEsNyArNDMxLDcgQEAgcHJpdmF0ZToKIAogICAg
IFNlZ21lbnRlZFN0cmluZyBtX3NyYzsKICAgICBEb2N1bWVudCogbV9kb2M7Ci0gICAgT3duUHRy
PEhUTUxQYXJzZXI+IG1fdHJlZUJ1aWxkZXI7CisgICAgT3duUHRyPEhUTUxUcmVlQnVpbGRlcj4g
bV90cmVlQnVpbGRlcjsKICAgICBib29sIG1faW5Xcml0ZTsKICAgICBib29sIG1fZnJhZ21lbnQ7
CiAgICAgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIG1fc2NyaXB0aW5nUGVybWlzc2lvbjsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCAyMDRiOTlhZmMyMjdj
NzMwNzNmZWFmNWI3YTBkMTRiYjk5ZWMxNGFmLi41NjE3YzU0ZDRhMGU5YTdkODk2NTY2NTQ3ODJj
MzAzYTA1NWQ3ZDQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBA
IC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhU
TUxQYXJzZXIuaCIKKyNpbmNsdWRlICJIVE1MVHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJIVE1M
RG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJMYWJlbHNOb2RlTGlzdC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OnJlbW92ZWRGcm9tVHJlZShib29sIGRlZXApCiB7CiAgICAgLy8gSWYgdGhlIGZvcm0gYW5kIGVs
ZW1lbnQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdHJlZSwgcHJlc2VydmUgdGhlIGNvbm5lY3Rpb24g
dG8gdGhlIGZvcm0uCiAgICAgLy8gT3RoZXJ3aXNlLCBudWxsIG91dCBvdXIgZm9ybSBhbmQgcmVt
b3ZlIG91cnNlbHZlcyBmcm9tIHRoZSBmb3JtJ3MgbGlzdCBvZiBlbGVtZW50cy4KLSAgICBIVE1M
UGFyc2VyKiB0cmVlQnVpbGRlciA9IDA7CisgICAgSFRNTFRyZWVCdWlsZGVyKiB0cmVlQnVpbGRl
ciA9IDA7CiAgICAgaWYgKERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBkb2N1bWVudCgpLT5wYXJz
ZXIoKSkKICAgICAgICAgdHJlZUJ1aWxkZXIgPSBwYXJzZXItPmh0bWxUcmVlQnVpbGRlcigpOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMWM2OTM0YjYwYmE1MmY3ZjFlNzdmZGNh
YjdlNDY4M2UxMTAxODY5MS4uZTcxZDk5YzIwODk3ZjM3OGRiYjk4YWMzMmMyOTQxMjcyNDQ4MTQw
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2luY2x1
ZGUgIkhUTUxJbWFnZUxvYWRlci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxPcHRpb25FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTFBhcnNlci5oIgorI2luY2x1ZGUg
IkhUTUxUcmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRl
ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxN
ZXRlckVsZW1lbnQuY3BwCmluZGV4IGYzMWE4OTliYWUzMjkzMzI2MjAxNDY1ODk0NGQ1NmYyZWQ0
NGI1NTUuLjQ3ZTU4ZmNjNmRiY2NiMmY5YTAzYmU5OWRhYTE4MWI2Nzg3M2I5MTUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTE1ldGVyRWxlbWVudC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJGb3JtRGF0
YUxpc3QuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKLSNpbmNsdWRlICJIVE1MUGFyc2VyLmgiCisjaW5jbHVkZSAiSFRNTFRyZWVCdWlsZGVy
LmgiCiAjaW5jbHVkZSAiUmVuZGVyTWV0ZXIuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAppbmRleCBmN2U4NmYzYTlhZmZl
Y2VkZWJiOTNiOTM1MzUwZGFiODUyYWVhNmM1Li4yZDQxMjUxZDdkYWMzNDBiM2U3ZDIxYjk3ZTY0
NzZhNzM4MmIzMzcyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCkBAIC0yOCw3
ICsyOCw3IEBACiAjaW5jbHVkZSAiRm9ybURhdGFMaXN0LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1F
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTFBhcnNlci5o
IgorI2luY2x1ZGUgIkhUTUxUcmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIlJlbmRlclByb2dyZXNz
LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcApz
aW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBXZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5j
cHAKcmVuYW1lIHRvIFdlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDA2MmM2
OTQ0NDExYTMwZTY5YjhkMGJkOGI5MDg5OWJjMGMyMDAyMDUuLjI4MDliMWI5NjQyOGJhNTJjNjVl
MzM4NjkyODQ5YjJkZWZhYWI2ODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MUGFyc2Vy
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMjMsNyArMjMs
NyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhUTUxQYXJzZXIuaCIK
KyNpbmNsdWRlICJIVE1MVHJlZUJ1aWxkZXIuaCIKIAogI2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVz
LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgpAQCAtMTQwLDcgKzE0MCw3IEBAIHN0
cnVjdCBIVE1MU3RhY2tFbGVtIDogTm9uY29weWFibGUgewogICoKICAqLwogCi1IVE1MUGFyc2Vy
OjpIVE1MUGFyc2VyKEhUTUxEb2N1bWVudCogZG9jLCBib29sIHJlcG9ydEVycm9ycykKK0hUTUxU
cmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxEb2N1bWVudCogZG9jLCBib29sIHJlcG9y
dEVycm9ycykKICAgICA6IG1fZG9jdW1lbnQoZG9jKQogICAgICwgbV9jdXJyZW50KGRvYykKICAg
ICAsIG1fZGlkUmVmQ3VycmVudChmYWxzZSkKQEAgLTE2MCw3ICsxNjAsNyBAQCBIVE1MUGFyc2Vy
OjpIVE1MUGFyc2VyKEhUTUxEb2N1bWVudCogZG9jLCBib29sIHJlcG9ydEVycm9ycykKIHsKIH0K
IAotSFRNTFBhcnNlcjo6SFRNTFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiBmcmFnLCBGcmFnbWVu
dFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKK0hUTUxUcmVlQnVpbGRl
cjo6SFRNTFRyZWVCdWlsZGVyKERvY3VtZW50RnJhZ21lbnQqIGZyYWcsIEZyYWdtZW50U2NyaXB0
aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQogICAgIDogbV9kb2N1bWVudChmcmFn
LT5kb2N1bWVudCgpKQogICAgICwgbV9jdXJyZW50KGZyYWcpCiAgICAgLCBtX2RpZFJlZkN1cnJl
bnQodHJ1ZSkKQEAgLTE4MiwxNCArMTgyLDE0IEBAIEhUTUxQYXJzZXI6OkhUTUxQYXJzZXIoRG9j
dW1lbnRGcmFnbWVudCogZnJhZywgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwCiAg
ICAgICAgIGZyYWctPnJlZigpOwogfQogCi1IVE1MUGFyc2VyOjp+SFRNTFBhcnNlcigpCitIVE1M
VHJlZUJ1aWxkZXI6On5IVE1MVHJlZUJ1aWxkZXIoKQogewogICAgIGZyZWVCbG9jaygpOwogICAg
IGlmIChtX2RpZFJlZkN1cnJlbnQpCiAgICAgICAgIG1fY3VycmVudC0+ZGVyZWYoKTsKIH0KIAot
dm9pZCBIVE1MUGFyc2VyOjpyZXNldCgpCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cmVzZXQoKQog
ewogICAgIEFTU0VSVCghbV9pc1BhcnNpbmdGcmFnbWVudCk7CiAKQEAgLTIwOSwxNyArMjA5LDE3
IEBAIHZvaWQgSFRNTFBhcnNlcjo6cmVzZXQoKQogICAgIG1faXNpbmRleEVsZW1lbnQgPSAwOwog
CiAgICAgbV9za2lwTW9kZVRhZyA9IG51bGxBdG9tOwotICAgIAorCiAgICAgaWYgKG1fcGFyc2Vy
UXVpcmtzKQogICAgICAgICBtX3BhcnNlclF1aXJrcy0+cmVzZXQoKTsKIH0KIAotdm9pZCBIVE1M
UGFyc2VyOjpzZXRDdXJyZW50KE5vZGUqIG5ld0N1cnJlbnQpIAordm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnNldEN1cnJlbnQoTm9kZSogbmV3Q3VycmVudCkKIHsKICAgICBib29sIGRpZFJlZk5ld0N1
cnJlbnQgPSBuZXdDdXJyZW50ICYmIG5ld0N1cnJlbnQgIT0gbV9kb2N1bWVudDsKLSAgICBpZiAo
ZGlkUmVmTmV3Q3VycmVudCkgCi0gICAgICAgIG5ld0N1cnJlbnQtPnJlZigpOyAKLSAgICBpZiAo
bV9kaWRSZWZDdXJyZW50KSAKKyAgICBpZiAoZGlkUmVmTmV3Q3VycmVudCkKKyAgICAgICAgbmV3
Q3VycmVudC0+cmVmKCk7CisgICAgaWYgKG1fZGlkUmVmQ3VycmVudCkKICAgICAgICAgbV9jdXJy
ZW50LT5kZXJlZigpOwogICAgIG1fY3VycmVudCA9IG5ld0N1cnJlbnQ7CiAgICAgbV9kaWRSZWZD
dXJyZW50ID0gZGlkUmVmTmV3Q3VycmVudDsKQEAgLTIzMCw3ICsyMzAsNyBAQCBpbmxpbmUgc3Rh
dGljIGludCB0YWdQcmlvcml0eU9mTm9kZShOb2RlKiBuKQogICAgIHJldHVybiBuLT5pc0hUTUxF
bGVtZW50KCkgPyBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KG4pLT50YWdQcmlvcml0eSgpIDog
MDsKIH0KIAotaW5saW5lIHZvaWQgSFRNTFBhcnNlcjo6bGltaXREZXB0aChpbnQgdGFnUHJpb3Jp
dHkpCitpbmxpbmUgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmxpbWl0RGVwdGgoaW50IHRhZ1ByaW9y
aXR5KQogewogICAgIHdoaWxlIChtX3RyZWVEZXB0aCA+PSBtYXhET01UcmVlRGVwdGgpCiAgICAg
ICAgIHBvcEJsb2NrKG1fYmxvY2tTdGFjay0+dGFnTmFtZSk7CkBAIC0yNDAsMTMgKzI0MCwxMyBA
QCBpbmxpbmUgdm9pZCBIVE1MUGFyc2VyOjpsaW1pdERlcHRoKGludCB0YWdQcmlvcml0eSkKICAg
ICB9CiB9CiAKLWlubGluZSBib29sIEhUTUxQYXJzZXI6Omluc2VydE5vZGVBZnRlckxpbWl0RGVw
dGgoTm9kZSogbiwgYm9vbCBmbGF0KQoraW5saW5lIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjppbnNl
cnROb2RlQWZ0ZXJMaW1pdERlcHRoKE5vZGUqIG4sIGJvb2wgZmxhdCkKIHsKICAgICBsaW1pdERl
cHRoKHRhZ1ByaW9yaXR5T2ZOb2RlKG4pKTsKICAgICByZXR1cm4gaW5zZXJ0Tm9kZShuLCBmbGF0
KTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBIVE1MUGFyc2VyOjpwYXJzZVRva2VuKFRva2VuKiB0
KQorUGFzc1JlZlB0cjxOb2RlPiBIVE1MVHJlZUJ1aWxkZXI6OnBhcnNlVG9rZW4oVG9rZW4qIHQp
CiB7CiAgICAgaWYgKCFtX3NraXBNb2RlVGFnLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmICghdC0+
YmVnaW5UYWcgJiYgdC0+dGFnTmFtZSA9PSBtX3NraXBNb2RlVGFnKQpAQCAtMjc3LDcgKzI3Nyw3
IEBAIFBhc3NSZWZQdHI8Tm9kZT4gSFRNTFBhcnNlcjo6cGFyc2VUb2tlbihUb2tlbiogdCkKICAg
ICAgICAgaWYgKG1faW5Cb2R5ICYmICFza2lwTW9kZSgpICYmIG1fY3VycmVudC0+bG9jYWxOYW1l
KCkgIT0gc3R5bGVUYWcgJiYKICAgICAgICAgICAgIG1fY3VycmVudC0+bG9jYWxOYW1lKCkgIT0g
dGl0bGVUYWcgJiYgIXQtPnRleHQtPmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSkKICAgICAgICAg
ICAgIG1faGF2ZUNvbnRlbnQgPSB0cnVlOwotICAgICAgICAKKwogICAgICAgICBSZWZQdHI8Tm9k
ZT4gbjsKICAgICAgICAgU3RyaW5nIHRleHQgPSB0LT50ZXh0LmdldCgpOwogICAgICAgICB1bnNp
Z25lZCBjaGFyc0xlZnQgPSB0ZXh0Lmxlbmd0aCgpOwpAQCAtMzA0LDcgKzMwNCw3IEBAIFBhc3NS
ZWZQdHI8Tm9kZT4gSFRNTFBhcnNlcjo6cGFyc2VUb2tlbihUb2tlbiogdCkKICAgICAgICAgLy8g
dGFrZSBjYXJlIG9mIG9wdGlvbmFsIGNsb3NlIHRhZ3MKICAgICAgICAgaWYgKGUtPmVuZFRhZ1Jl
cXVpcmVtZW50KCkgPT0gVGFnU3RhdHVzT3B0aW9uYWwpCiAgICAgICAgICAgICBwb3BCbG9jayh0
LT50YWdOYW1lKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgIC8vIElmIHRoZSBub2RlIGRvZXMg
bm90IGhhdmUgYSBmb3JiaWRkZW4gZW5kIHRhZyByZXF1aXJlbWVudCwgYW5kIGlmIHRoZSBicm9r
ZW4gWE1MIHNlbGYtY2xvc2luZwogICAgICAgICAvLyBzeW50YXggd2FzIHVzZWQsIHJlcG9ydCBh
biBlcnJvci4KICAgICAgICAgaWYgKHQtPmJyb2tlblhNTFN0eWxlICYmIGUtPmVuZFRhZ1JlcXVp
cmVtZW50KCkgIT0gVGFnU3RhdHVzRm9yYmlkZGVuKSB7CkBAIC0zMzcsNyArMzM3LDcgQEAgUGFz
c1JlZlB0cjxOb2RlPiBIVE1MUGFyc2VyOjpwYXJzZVRva2VuKFRva2VuKiB0KQogICAgIHJldHVy
biBuOwogfQogCi12b2lkIEhUTUxQYXJzZXI6OnBhcnNlRG9jdHlwZVRva2VuKERvY3R5cGVUb2tl
biogdCkKK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwYXJzZURvY3R5cGVUb2tlbihEb2N0eXBlVG9r
ZW4qIHQpCiB7CiAgICAgLy8gSWdub3JlIGFueSBkb2N0eXBlIGFmdGVyIHRoZSBmaXJzdC4gIEln
bm9yZSBkb2N0eXBlcyBpbiBmcmFnbWVudHMuCiAgICAgaWYgKG1fZG9jdW1lbnQtPmRvY3R5cGUo
KSB8fCBtX2lzUGFyc2luZ0ZyYWdtZW50IHx8IG1fY3VycmVudCAhPSBtX2RvY3VtZW50KQpAQCAt
MzcyLDEyICszNzIsMTIgQEAgc3RhdGljIGJvb2wgaXNTY29waW5nVGFnKGNvbnN0IEF0b21pY1N0
cmluZyYgdGFnTmFtZSkKICAgICAgICAgfHwgdGFnTmFtZSA9PSBvYmplY3RUYWcgfHwgdGFnTmFt
ZSA9PSB0YWJsZVRhZyB8fCB0YWdOYW1lID09IGh0bWxUYWc7CiB9CiAKLWJvb2wgSFRNTFBhcnNl
cjo6aW5zZXJ0Tm9kZShOb2RlKiBuLCBib29sIGZsYXQpCitib29sIEhUTUxUcmVlQnVpbGRlcjo6
aW5zZXJ0Tm9kZShOb2RlKiBuLCBib29sIGZsYXQpCiB7CiAgICAgUmVmUHRyPE5vZGU+IHByb3Rl
Y3ROb2RlKG4pOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSBuLT5sb2Nh
bE5hbWUoKTsKLSAgICAKKwogICAgIC8vIDx0YWJsZT4gaXMgbmV2ZXIgYWxsb3dlZCBpbnNpZGUg
c3RyYXkgdGFibGUgY29udGVudC4gIEFsd2F5cyBwb3Agb3V0IG9mIHRoZSBzdHJheSB0YWJsZSBj
b250ZW50CiAgICAgLy8gYW5kIGNsb3NlIHVwIHRoZSBmaXJzdCB0YWJsZSwgYW5kIHRoZW4gc3Rh
cnQgdGhlIHNlY29uZCB0YWJsZSBhcyBhIHNpYmxpbmcuCiAgICAgaWYgKG1faW5TdHJheVRhYmxl
Q29udGVudCAmJiBsb2NhbE5hbWUgPT0gdGFibGVUYWcpCkBAIC00MTEsNyArNDExLDcgQEAgYm9v
bCBIVE1MUGFyc2VyOjppbnNlcnROb2RlKE5vZGUqIG4sIGJvb2wgZmxhdCkKICAgICAgICAgICAg
IHB1c2hCbG9jayhsb2NhbE5hbWUsIHRhZ1ByaW9yaXR5KTsKICAgICAgICAgICAgIG5ld05vZGUt
PmJlZ2luUGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgICAgICAgICBBU1NFUlQoIW1fZGlkUmVmQ3Vy
cmVudCk7Ci0gICAgICAgICAgICBuZXdOb2RlLT5yZWYoKTsgCisgICAgICAgICAgICBuZXdOb2Rl
LT5yZWYoKTsKICAgICAgICAgICAgIG1fY3VycmVudCA9IG5ld05vZGU7CiAgICAgICAgICAgICBt
X2RpZFJlZkN1cnJlbnQgPSB0cnVlOwogICAgICAgICB9CkBAIC00MjksNyArNDI5LDcgQEAgYm9v
bCBIVE1MUGFyc2VyOjppbnNlcnROb2RlKE5vZGUqIG4sIGJvb2wgZmxhdCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjpoYW5kbGVFcnJvcihOb2RlKiBuLCBib29sIGZs
YXQsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBpbnQgdGFnUHJpb3JpdHkpCitib29s
IEhUTUxUcmVlQnVpbGRlcjo6aGFuZGxlRXJyb3IoTm9kZSogbiwgYm9vbCBmbGF0LCBjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgaW50IHRhZ1ByaW9yaXR5KQogewogICAgIC8vIEVycm9y
IGhhbmRsaW5nIGNvZGUuICBUaGlzIGlzIGp1c3QgYWQgaG9jIGhhbmRsaW5nIG9mIHNwZWNpZmlj
IHBhcmVudC9jaGlsZCBjb21iaW5hdGlvbnMuCiAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CkBA
IC00OTUsMTAgKzQ5NSwxMCBAQCBib29sIEhUTUxQYXJzZXI6OmhhbmRsZUVycm9yKE5vZGUqIG4s
IGJvb2wgZmxhdCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgIHNldFNraXBNb2RlKGgtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAorCiAgICAg
ICAgICAgICAgICAgaWYgKCFjcmVhdGVkSGVhZCkKICAgICAgICAgICAgICAgICAgICAgcmVwb3J0
RXJyb3IoTWlzcGxhY2VkSGVhZENvbnRlbnRFcnJvciwgJmxvY2FsTmFtZSwgJm1fY3VycmVudC0+
bG9jYWxOYW1lKCkpOwotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgcHVzaEJs
b2NrKGxvY2FsTmFtZSwgdGFnUHJpb3JpdHkpOwogICAgICAgICAgICAgICAgIG5ld05vZGUtPmJl
Z2luUGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgICAgICAgICAgICAgc2V0Q3VycmVudChuZXdOb2Rl
KTsKQEAgLTY0Myw3ICs2NDMsNyBAQCBib29sIEhUTUxQYXJzZXI6OmhhbmRsZUVycm9yKE5vZGUq
IG4sIGJvb2wgZmxhdCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKG4sIG5vZGUsIGVjKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFlYykgewogICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3Io
U3RyYXlUYWJsZUNvbnRlbnRFcnJvciwgJmxvY2FsTmFtZSwgJmN1cnJlbnRUYWdOYW1lKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChuLT5pc0hUTUxFbGVtZW50KCkgJiYgdGFnUHJpb3Jp
dHkgPiAwICYmIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4tPmlzSFRNTEVsZW1lbnQo
KSAmJiB0YWdQcmlvcml0eSA+IDAgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhZmxh
dCAmJiBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KG4pLT5lbmRUYWdSZXF1aXJlbWVudCgpICE9
IFRhZ1N0YXR1c0ZvcmJpZGRlbikKICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoQmxvY2sobG9jYWxOYW1lLCB0YWdQcmlvcml0eSk7CkBA
IC03MjQsMjIgKzcyNCwyMiBAQCBib29sIEhUTUxQYXJzZXI6OmhhbmRsZUVycm9yKE5vZGUqIG4s
IGJvb2wgZmxhdCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsCiAgICAgcmV0dXJuIGlu
c2VydE5vZGUobik7CiB9CiAKLXR5cGVkZWYgYm9vbCAoSFRNTFBhcnNlcjo6KkNyZWF0ZUVycm9y
Q2hlY2tGdW5jKShUb2tlbiogdCwgUmVmUHRyPE5vZGU+Jik7Cit0eXBlZGVmIGJvb2wgKEhUTUxU
cmVlQnVpbGRlcjo6KkNyZWF0ZUVycm9yQ2hlY2tGdW5jKShUb2tlbiogdCwgUmVmUHRyPE5vZGU+
Jik7CiB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENyZWF0ZUVycm9yQ2hlY2tG
dW5jPiBGdW5jdGlvbk1hcDsKIAotYm9vbCBIVE1MUGFyc2VyOjp0ZXh0Q3JlYXRlRXJyb3JDaGVj
ayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+JiByZXN1bHQpCitib29sIEhUTUxUcmVlQnVpbGRlcjo6
dGV4dENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qIHQsIFJlZlB0cjxOb2RlPiYgcmVzdWx0KQogewog
ICAgIHJlc3VsdCA9IFRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LCB0LT50ZXh0LmdldCgpKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6Y29tbWVudENyZWF0ZUVycm9y
Q2hlY2soVG9rZW4qIHQsIFJlZlB0cjxOb2RlPiYgcmVzdWx0KQorYm9vbCBIVE1MVHJlZUJ1aWxk
ZXI6OmNvbW1lbnRDcmVhdGVFcnJvckNoZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mIHJlc3Vs
dCkKIHsKICAgICByZXN1bHQgPSBDb21tZW50OjpjcmVhdGUobV9kb2N1bWVudCwgdC0+dGV4dC5n
ZXQoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEhUTUxQYXJzZXI6OmhlYWRDcmVh
dGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JiByZXN1bHQpCitib29sIEhUTUxUcmVl
QnVpbGRlcjo6aGVhZENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mIHJlc3Vs
dCkKIHsKICAgICBpZiAoIW1faGVhZCB8fCBtX2N1cnJlbnQtPmxvY2FsTmFtZSgpID09IGh0bWxU
YWcpIHsKICAgICAgICAgbV9oZWFkID0gSFRNTEhlYWRFbGVtZW50OjpjcmVhdGUobV9kb2N1bWVu
dCk7CkBAIC03NDksMjMgKzc0OSwyMyBAQCBib29sIEhUTUxQYXJzZXI6OmhlYWRDcmVhdGVFcnJv
ckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JiByZXN1bHQpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIEhUTUxQYXJzZXI6OmJvZHlDcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRy
PE5vZGU+JikKK2Jvb2wgSFRNTFRyZWVCdWlsZGVyOjpib2R5Q3JlYXRlRXJyb3JDaGVjayhUb2tl
biosIFJlZlB0cjxOb2RlPiYpCiB7CiAgICAgLy8gYm9keSBubyBsb25nZXIgYWxsb3dlZCBpZiB3
ZSBoYXZlIGEgZnJhbWVzZXQKICAgICBpZiAobV9oYXZlRnJhbWVTZXQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKKwogICAgIC8vIEVuc3VyZSB0aGF0IGhlYWQgZXhpc3RzICh1bmxlc3Mg
cGFyc2luZyBhIGZyYWdtZW50KS4KICAgICAvLyBCdXQgbm90IGZvciBvbGRlciB2ZXJzaW9ucyBv
ZiBNYWlsLCB3aGVyZSB0aGUgaW1wbGljaXQgPGhlYWQ+IGlzbid0IGV4cGVjdGVkIC0gPHJkYXI6
Ly9wcm9ibGVtLzY4NjM3OTU+CiAgICAgaWYgKCFtX2lzUGFyc2luZ0ZyYWdtZW50ICYmIHNob3Vs
ZENyZWF0ZUltcGxpY2l0SGVhZChtX2RvY3VtZW50KSkKICAgICAgICAgY3JlYXRlSGVhZCgpOwot
ICAgIAorCiAgICAgcG9wQmxvY2soaGVhZFRhZyk7CiAgICAgc3RhcnRCb2R5KCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6ZnJhbWVzZXRDcmVhdGVFcnJvckNoZWNr
KFRva2VuKiwgUmVmUHRyPE5vZGU+JikKK2Jvb2wgSFRNTFRyZWVCdWlsZGVyOjpmcmFtZXNldENy
ZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQogewogICAgIHBvcEJsb2NrKGhl
YWRUYWcpOwogICAgIGlmIChtX2luQm9keSAmJiAhbV9oYXZlRnJhbWVTZXQgJiYgIW1faGF2ZUNv
bnRlbnQpIHsKQEAgLTc4NSw3ICs3ODUsNyBAQCBib29sIEhUTUxQYXJzZXI6OmZyYW1lc2V0Q3Jl
YXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgSFRNTFBhcnNlcjo6Zm9ybUNyZWF0ZUVycm9yQ2hlY2soVG9rZW4qIHQsIFJlZlB0
cjxOb2RlPiYgcmVzdWx0KQorYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OmZvcm1DcmVhdGVFcnJvckNo
ZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mIHJlc3VsdCkKIHsKICAgICAvLyBPbmx5IGNyZWF0
ZSBhIG5ldyBmb3JtIGlmIHdlJ3JlIG5vdCBhbHJlYWR5IGluc2lkZSBvbmUuCiAgICAgLy8gVGhp
cyBpcyBjb25zaXN0ZW50IHdpdGggb3RoZXIgYnJvd3NlcnMnIGJlaGF2aW9yLgpAQCAtNzk3LDcg
Kzc5Nyw3IEBAIGJvb2wgSFRNTFBhcnNlcjo6Zm9ybUNyZWF0ZUVycm9yQ2hlY2soVG9rZW4qIHQs
IFJlZlB0cjxOb2RlPiYgcmVzdWx0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBIVE1M
UGFyc2VyOjppc2luZGV4Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+JiBy
ZXN1bHQpCitib29sIEhUTUxUcmVlQnVpbGRlcjo6aXNpbmRleENyZWF0ZUVycm9yQ2hlY2soVG9r
ZW4qIHQsIFJlZlB0cjxOb2RlPiYgcmVzdWx0KQogewogICAgIFJlZlB0cjxOb2RlPiBuID0gaGFu
ZGxlSXNpbmRleCh0KTsKICAgICBpZiAoIW1faW5Cb2R5KQpAQCAtODA5LDEyICs4MDksMTIgQEAg
Ym9vbCBIVE1MUGFyc2VyOjppc2luZGV4Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRy
PE5vZGU+JiByZXN1bHQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEhUTUxQYXJzZXI6
OnNlbGVjdENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQorYm9vbCBIVE1M
VHJlZUJ1aWxkZXI6OnNlbGVjdENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4m
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxQYXJzZXI6OmRkQ3JlYXRlRXJy
b3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+JiByZXN1bHQpCitib29sIEhUTUxUcmVlQnVp
bGRlcjo6ZGRDcmVhdGVFcnJvckNoZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mIHJlc3VsdCkK
IHsKICAgICBwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayh0LCByZXN1bHQpOwogICAgIHBvcEJsb2Nr
KGR0VGFnKTsKQEAgLTgyMiw3ICs4MjIsNyBAQCBib29sIEhUTUxQYXJzZXI6OmRkQ3JlYXRlRXJy
b3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+JiByZXN1bHQpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6ZHRDcmVhdGVFcnJvckNoZWNrKFRva2VuKiB0LCBSZWZQ
dHI8Tm9kZT4mIHJlc3VsdCkKK2Jvb2wgSFRNTFRyZWVCdWlsZGVyOjpkdENyZWF0ZUVycm9yQ2hl
Y2soVG9rZW4qIHQsIFJlZlB0cjxOb2RlPiYgcmVzdWx0KQogewogICAgIHBDbG9zZXJDcmVhdGVF
cnJvckNoZWNrKHQsIHJlc3VsdCk7CiAgICAgcG9wQmxvY2soZGRUYWcpOwpAQCAtODMwLDQ2ICs4
MzAsNDYgQEAgYm9vbCBIVE1MUGFyc2VyOjpkdENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qIHQsIFJl
ZlB0cjxOb2RlPiYgcmVzdWx0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxQYXJz
ZXI6OnJwQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCitib29sIEhUTUxU
cmVlQnVpbGRlcjo6cnBDcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JikKIHsK
ICAgICBwb3BCbG9jayhycFRhZyk7CiAgICAgcG9wQmxvY2socnRUYWcpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIEhUTUxQYXJzZXI6OnJ0Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJl
ZlB0cjxOb2RlPiYpCitib29sIEhUTUxUcmVlQnVpbGRlcjo6cnRDcmVhdGVFcnJvckNoZWNrKFRv
a2VuKiwgUmVmUHRyPE5vZGU+JikKIHsKICAgICBwb3BCbG9jayhycFRhZyk7CiAgICAgcG9wQmxv
Y2socnRUYWcpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxQYXJzZXI6Om5lc3Rl
ZENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qIHQsIFJlZlB0cjxOb2RlPiYpCitib29sIEhUTUxUcmVl
QnVpbGRlcjo6bmVzdGVkQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+JikK
IHsKICAgICBwb3BCbG9jayh0LT50YWdOYW1lKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBIVE1MUGFyc2VyOjpuZXN0ZWRQQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVm
UHRyPE5vZGU+JiByZXN1bHQpCitib29sIEhUTUxUcmVlQnVpbGRlcjo6bmVzdGVkUENsb3NlckNy
ZWF0ZUVycm9yQ2hlY2soVG9rZW4qIHQsIFJlZlB0cjxOb2RlPiYgcmVzdWx0KQogewogICAgIHBD
bG9zZXJDcmVhdGVFcnJvckNoZWNrKHQsIHJlc3VsdCk7CiAgICAgcG9wQmxvY2sodC0+dGFnTmFt
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6bmVzdGVkU3R5bGVD
cmVhdGVFcnJvckNoZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mKQorYm9vbCBIVE1MVHJlZUJ1
aWxkZXI6Om5lc3RlZFN0eWxlQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+
JikKIHsKICAgICByZXR1cm4gYWxsb3dOZXN0ZWRSZWR1bmRhbnRUYWcodC0+dGFnTmFtZSk7CiB9
CiAKLWJvb2wgSFRNTFBhcnNlcjo6dGFibGVDZWxsQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJl
ZlB0cjxOb2RlPiYpCitib29sIEhUTUxUcmVlQnVpbGRlcjo6dGFibGVDZWxsQ3JlYXRlRXJyb3JD
aGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCiB7CiAgICAgcG9wQmxvY2sodGRUYWcpOwogICAg
IHBvcEJsb2NrKHRoVGFnKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBIVE1MUGFyc2Vy
Ojp0YWJsZVNlY3Rpb25DcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JikKK2Jv
b2wgSFRNTFRyZWVCdWlsZGVyOjp0YWJsZVNlY3Rpb25DcmVhdGVFcnJvckNoZWNrKFRva2VuKiwg
UmVmUHRyPE5vZGU+JikKIHsKICAgICBwb3BCbG9jayh0aGVhZFRhZyk7CiAgICAgcG9wQmxvY2so
dGJvZHlUYWcpOwpAQCAtODc3LDE5ICs4NzcsMTkgQEAgYm9vbCBIVE1MUGFyc2VyOjp0YWJsZVNl
Y3Rpb25DcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JikKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjpub2VtYmVkQ3JlYXRlRXJyb3JDaGVjayhUb2tl
biosIFJlZlB0cjxOb2RlPiYpCitib29sIEhUTUxUcmVlQnVpbGRlcjo6bm9lbWJlZENyZWF0ZUVy
cm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQogewogICAgIHNldFNraXBNb2RlKG5vZW1i
ZWRUYWcpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxQYXJzZXI6Om5vZnJhbWVz
Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCitib29sIEhUTUxUcmVlQnVp
bGRlcjo6bm9mcmFtZXNDcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JikKIHsK
ICAgICBzZXRTa2lwTW9kZShub2ZyYW1lc1RhZyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgSFRNTFBhcnNlcjo6bm9zY3JpcHRDcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5v
ZGU+JikKK2Jvb2wgSFRNTFRyZWVCdWlsZGVyOjpub3NjcmlwdENyZWF0ZUVycm9yQ2hlY2soVG9r
ZW4qLCBSZWZQdHI8Tm9kZT4mKQogewogICAgIGlmICghbV9pc1BhcnNpbmdGcmFnbWVudCkgewog
ICAgICAgICBGcmFtZSogZnJhbWUgPSBtX2RvY3VtZW50LT5mcmFtZSgpOwpAQCAtODk5LDE0ICs4
OTksMTQgQEAgYm9vbCBIVE1MUGFyc2VyOjpub3NjcmlwdENyZWF0ZUVycm9yQ2hlY2soVG9rZW4q
LCBSZWZQdHI8Tm9kZT4mKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxQYXJzZXI6
OnBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JikKK2Jvb2wgSFRN
TFRyZWVCdWlsZGVyOjpwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2Rl
PiYpCiB7CiAgICAgaWYgKGhhc1BFbGVtZW50SW5TY29wZSgpKQogICAgICAgICBwb3BCbG9jayhw
VGFnKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjpwQ2xvc2VyU3Ry
aWN0Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCitib29sIEhUTUxUcmVl
QnVpbGRlcjo6cENsb3NlclN0cmljdENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9k
ZT4mKQogewogICAgIGlmIChtX2RvY3VtZW50LT5pbkNvbXBhdE1vZGUoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC05MTUsNyArOTE1LDcgQEAgYm9vbCBIVE1MUGFyc2VyOjpwQ2xvc2VyU3Ry
aWN0Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6bWFwQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJl
ZlB0cjxOb2RlPiYgcmVzdWx0KQorYm9vbCBIVE1MVHJlZUJ1aWxkZXI6Om1hcENyZWF0ZUVycm9y
Q2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mIHJlc3VsdCkKIHsKICAgICBtX2N1cnJlbnRNYXBF
bGVtZW50ID0gSFRNTE1hcEVsZW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKICAgICByZXN1bHQg
PSBtX2N1cnJlbnRNYXBFbGVtZW50OwpAQCAtOTM2LDQ4ICs5MzYsNDggQEAgc3RhdGljIHZvaWQg
bWFwVGFnc1RvRnVuYyhGdW5jdGlvbk1hcCYgbWFwLCBRdWFsaWZpZWROYW1lICgmbmFtZXMpW0Fy
cmF5U2l6ZV0sIEMKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZT4gSFRNTFBhcnNlcjo6Z2V0
Tm9kZShUb2tlbiogdCkKK1Bhc3NSZWZQdHI8Tm9kZT4gSFRNTFRyZWVCdWlsZGVyOjpnZXROb2Rl
KFRva2VuKiB0KQogewogICAgIC8vIEluaXQgb3VyIGVycm9yIGhhbmRsaW5nIHRhYmxlLgogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoRnVuY3Rpb25NYXAsIGdGdW5jdGlvbk1hcCwgKCkpOwogICAg
IGlmIChnRnVuY3Rpb25NYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIFF1YWxpZmllZE5hbWUgbmVz
dGVkQ3JlYXRlRXJyb3JUYWdzW10gPSB7IGFUYWcsIGJ1dHRvblRhZywgbm9iclRhZywgdHJUYWcg
fTsKLSAgICAgICAgbWFwVGFnc1RvRnVuYyhnRnVuY3Rpb25NYXAsIG5lc3RlZENyZWF0ZUVycm9y
VGFncywgJkhUTUxQYXJzZXI6Om5lc3RlZENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBU
YWdzVG9GdW5jKGdGdW5jdGlvbk1hcCwgbmVzdGVkQ3JlYXRlRXJyb3JUYWdzLCAmSFRNTFRyZWVC
dWlsZGVyOjpuZXN0ZWRDcmVhdGVFcnJvckNoZWNrKTsKIAogICAgICAgICBRdWFsaWZpZWROYW1l
IG5lc3RlZFN0eWxlQ3JlYXRlRXJyb3JUYWdzW10gPSB7IGJUYWcsIGJpZ1RhZywgaVRhZywgc1Rh
Zywgc21hbGxUYWcsIHN0cmlrZVRhZywgdHRUYWcsIHVUYWcgfTsKLSAgICAgICAgbWFwVGFnc1Rv
RnVuYyhnRnVuY3Rpb25NYXAsIG5lc3RlZFN0eWxlQ3JlYXRlRXJyb3JUYWdzLCAmSFRNTFBhcnNl
cjo6bmVzdGVkU3R5bGVDcmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnc1RvRnVuYyhn
RnVuY3Rpb25NYXAsIG5lc3RlZFN0eWxlQ3JlYXRlRXJyb3JUYWdzLCAmSFRNTFRyZWVCdWlsZGVy
OjpuZXN0ZWRTdHlsZUNyZWF0ZUVycm9yQ2hlY2spOwogCiAgICAgICAgIFF1YWxpZmllZE5hbWUg
cENsb3NlckNyZWF0ZUVycm9yVGFnc1tdID0geyBhZGRyZXNzVGFnLCBhcnRpY2xlVGFnLAogICAg
ICAgICAgICAgYXNpZGVUYWcsIGJsb2NrcXVvdGVUYWcsIGNlbnRlclRhZywgZGlyVGFnLCBkaXZU
YWcsIGRsVGFnLAogICAgICAgICAgICAgZmllbGRzZXRUYWcsIGZvb3RlclRhZywgaDFUYWcsIGgy
VGFnLCBoM1RhZywgaDRUYWcsIGg1VGFnLCBoNlRhZywKICAgICAgICAgICAgIGhlYWRlclRhZywg
aGdyb3VwVGFnLCBoclRhZywgbGlzdGluZ1RhZywgbWVudVRhZywgbmF2VGFnLCBvbFRhZywKICAg
ICAgICAgICAgIHBUYWcsIHBsYWludGV4dFRhZywgcHJlVGFnLCBzZWN0aW9uVGFnLCB1bFRhZyB9
OwotICAgICAgICBtYXBUYWdzVG9GdW5jKGdGdW5jdGlvbk1hcCwgcENsb3NlckNyZWF0ZUVycm9y
VGFncywgJkhUTUxQYXJzZXI6OnBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKTsKLQotICAgICAgICBt
YXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBib2R5VGFnLCAmSFRNTFBhcnNlcjo6Ym9keUNyZWF0
ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBkZFRhZywg
JkhUTUxQYXJzZXI6OmRkQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIG1hcFRhZ1RvRnVuYyhn
RnVuY3Rpb25NYXAsIGR0VGFnLCAmSFRNTFBhcnNlcjo6ZHRDcmVhdGVFcnJvckNoZWNrKTsKLSAg
ICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgZm9ybVRhZywgJkhUTUxQYXJzZXI6OmZv
cm1DcmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwg
ZnJhbWVzZXRUYWcsICZIVE1MUGFyc2VyOjpmcmFtZXNldENyZWF0ZUVycm9yQ2hlY2spOwotICAg
ICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBoZWFkVGFnLCAmSFRNTFBhcnNlcjo6aGVh
ZENyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBp
c2luZGV4VGFnLCAmSFRNTFBhcnNlcjo6aXNpbmRleENyZWF0ZUVycm9yQ2hlY2spOwotICAgICAg
ICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBtYXBUYWcsICZIVE1MUGFyc2VyOjptYXBDcmVh
dGVFcnJvckNoZWNrKTsKLSAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgbGlUYWcs
ICZIVE1MUGFyc2VyOjpuZXN0ZWRQQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIG1h
cFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIG5vZW1iZWRUYWcsICZIVE1MUGFyc2VyOjpub2VtYmVk
Q3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIG5v
ZnJhbWVzVGFnLCAmSFRNTFBhcnNlcjo6bm9mcmFtZXNDcmVhdGVFcnJvckNoZWNrKTsKLSAgICAg
ICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgbm9zY3JpcHRUYWcsICZIVE1MUGFyc2VyOjpu
b3NjcmlwdENyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9u
TWFwLCB0YWJsZVRhZywgJkhUTUxQYXJzZXI6OnBDbG9zZXJTdHJpY3RDcmVhdGVFcnJvckNoZWNr
KTsKLSAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgcnBUYWcsICZIVE1MUGFyc2Vy
OjpycENyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFw
LCBydFRhZywgJkhUTUxQYXJzZXI6OnJ0Q3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIG1hcFRh
Z1RvRnVuYyhnRnVuY3Rpb25NYXAsIHNlbGVjdFRhZywgJkhUTUxQYXJzZXI6OnNlbGVjdENyZWF0
ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCB0ZFRhZywg
JkhUTUxQYXJzZXI6OnRhYmxlQ2VsbENyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBUYWdU
b0Z1bmMoZ0Z1bmN0aW9uTWFwLCB0aFRhZywgJkhUTUxQYXJzZXI6OnRhYmxlQ2VsbENyZWF0ZUVy
cm9yQ2hlY2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCB0Ym9keVRhZywg
JkhUTUxQYXJzZXI6OnRhYmxlU2VjdGlvbkNyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBU
YWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCB0Zm9vdFRhZywgJkhUTUxQYXJzZXI6OnRhYmxlU2VjdGlv
bkNyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCB0
aGVhZFRhZywgJkhUTUxQYXJzZXI6OnRhYmxlU2VjdGlvbkNyZWF0ZUVycm9yQ2hlY2spOwotCi0g
ICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoY29tbWVudEF0b20uaW1wbCgpLCAmSFRNTFBhcnNlcjo6
Y29tbWVudENyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KHRleHRB
dG9tLmltcGwoKSwgJkhUTUxQYXJzZXI6OnRleHRDcmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAg
bWFwVGFnc1RvRnVuYyhnRnVuY3Rpb25NYXAsIHBDbG9zZXJDcmVhdGVFcnJvclRhZ3MsICZIVE1M
VHJlZUJ1aWxkZXI6OnBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKTsKKworICAgICAgICBtYXBUYWdU
b0Z1bmMoZ0Z1bmN0aW9uTWFwLCBib2R5VGFnLCAmSFRNTFRyZWVCdWlsZGVyOjpib2R5Q3JlYXRl
RXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIGRkVGFnLCAm
SFRNTFRyZWVCdWlsZGVyOjpkZENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBUYWdUb0Z1
bmMoZ0Z1bmN0aW9uTWFwLCBkdFRhZywgJkhUTUxUcmVlQnVpbGRlcjo6ZHRDcmVhdGVFcnJvckNo
ZWNrKTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgZm9ybVRhZywgJkhUTUxU
cmVlQnVpbGRlcjo6Zm9ybUNyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBUYWdUb0Z1bmMo
Z0Z1bmN0aW9uTWFwLCBmcmFtZXNldFRhZywgJkhUTUxUcmVlQnVpbGRlcjo6ZnJhbWVzZXRDcmVh
dGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgaGVhZFRh
ZywgJkhUTUxUcmVlQnVpbGRlcjo6aGVhZENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBU
YWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBpc2luZGV4VGFnLCAmSFRNTFRyZWVCdWlsZGVyOjppc2lu
ZGV4Q3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAs
IG1hcFRhZywgJkhUTUxUcmVlQnVpbGRlcjo6bWFwQ3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAg
IG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIGxpVGFnLCAmSFRNTFRyZWVCdWlsZGVyOjpuZXN0
ZWRQQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rp
b25NYXAsIG5vZW1iZWRUYWcsICZIVE1MVHJlZUJ1aWxkZXI6Om5vZW1iZWRDcmVhdGVFcnJvckNo
ZWNrKTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgbm9mcmFtZXNUYWcsICZI
VE1MVHJlZUJ1aWxkZXI6Om5vZnJhbWVzQ3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRh
Z1RvRnVuYyhnRnVuY3Rpb25NYXAsIG5vc2NyaXB0VGFnLCAmSFRNTFRyZWVCdWlsZGVyOjpub3Nj
cmlwdENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFw
LCB0YWJsZVRhZywgJkhUTUxUcmVlQnVpbGRlcjo6cENsb3NlclN0cmljdENyZWF0ZUVycm9yQ2hl
Y2spOworICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBycFRhZywgJkhUTUxUcmVl
QnVpbGRlcjo6cnBDcmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5j
dGlvbk1hcCwgcnRUYWcsICZIVE1MVHJlZUJ1aWxkZXI6OnJ0Q3JlYXRlRXJyb3JDaGVjayk7Cisg
ICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIHNlbGVjdFRhZywgJkhUTUxUcmVlQnVp
bGRlcjo6c2VsZWN0Q3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVu
Y3Rpb25NYXAsIHRkVGFnLCAmSFRNTFRyZWVCdWlsZGVyOjp0YWJsZUNlbGxDcmVhdGVFcnJvckNo
ZWNrKTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgdGhUYWcsICZIVE1MVHJl
ZUJ1aWxkZXI6OnRhYmxlQ2VsbENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBUYWdUb0Z1
bmMoZ0Z1bmN0aW9uTWFwLCB0Ym9keVRhZywgJkhUTUxUcmVlQnVpbGRlcjo6dGFibGVTZWN0aW9u
Q3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIHRm
b290VGFnLCAmSFRNTFRyZWVCdWlsZGVyOjp0YWJsZVNlY3Rpb25DcmVhdGVFcnJvckNoZWNrKTsK
KyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgdGhlYWRUYWcsICZIVE1MVHJlZUJ1
aWxkZXI6OnRhYmxlU2VjdGlvbkNyZWF0ZUVycm9yQ2hlY2spOworCisgICAgICAgIGdGdW5jdGlv
bk1hcC5zZXQoY29tbWVudEF0b20uaW1wbCgpLCAmSFRNTFRyZWVCdWlsZGVyOjpjb21tZW50Q3Jl
YXRlRXJyb3JDaGVjayk7CisgICAgICAgIGdGdW5jdGlvbk1hcC5zZXQodGV4dEF0b20uaW1wbCgp
LCAmSFRNTFRyZWVCdWlsZGVyOjp0ZXh0Q3JlYXRlRXJyb3JDaGVjayk7CiAgICAgfQogCiAgICAg
Ym9vbCBwcm9jZWVkID0gdHJ1ZTsKQEAgLTk4OSw3ICs5ODksNyBAQCBQYXNzUmVmUHRyPE5vZGU+
IEhUTUxQYXJzZXI6OmdldE5vZGUoVG9rZW4qIHQpCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
KCk7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6YWxsb3dOZXN0ZWRSZWR1bmRhbnRUYWcoY29uc3Qg
QXRvbWljU3RyaW5nJiB0YWdOYW1lKQorYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OmFsbG93TmVzdGVk
UmVkdW5kYW50VGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKIHsKICAgICAvLyB3d3cu
bGljZW8uZWR1Lm14IGlzIGFuIGV4YW1wbGUgb2YgYSBzaXRlIHRoYXQgYWNoaWV2ZXMgYSBsZXZl
bCBvZiBuZXN0aW5nIG9mCiAgICAgLy8gYWJvdXQgMTUwMCB0YWdzLCBhbGwgZnJvbSBhIGJ1bmNo
IG9mIDxiPnMuICBXZSB3aWxsIG9ubHkgYWxsb3cgYXQgbW9zdCAyMApAQCAtMTAwMSwxNCArMTAw
MSwxNCBAQCBib29sIEhUTUxQYXJzZXI6OmFsbG93TmVzdGVkUmVkdW5kYW50VGFnKGNvbnN0IEF0
b21pY1N0cmluZyYgdGFnTmFtZSkKICAgICByZXR1cm4gaSAhPSBjTWF4UmVkdW5kYW50VGFnRGVw
dGg7CiB9CiAKLXZvaWQgSFRNTFBhcnNlcjo6cHJvY2Vzc0Nsb3NlVGFnKFRva2VuKiB0KQordm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDbG9zZVRhZyhUb2tlbiogdCkKIHsKICAgICAvLyBT
dXBwb3J0IGZvciByZWFsbHkgYnJva2VuIGh0bWwuCiAgICAgLy8gd2UgbmV2ZXIgY2xvc2UgdGhl
IGJvZHkgdGFnLCBzaW5jZSBzb21lIHN0dXBpZCB3ZWIgcGFnZXMgY2xvc2UgaXQgYmVmb3JlIHRo
ZSBhY3R1YWwgZW5kIG9mIHRoZSBkb2MuCiAgICAgLy8gbGV0J3MgcmVseSBvbiB0aGUgZW5kKCkg
Y2FsbCB0byBjbG9zZSB0aGluZ3MuCiAgICAgaWYgKHQtPnRhZ05hbWUgPT0gaHRtbFRhZyB8fCB0
LT50YWdOYW1lID09IGJvZHlUYWcgfHwgdC0+dGFnTmFtZSA9PSBjb21tZW50QXRvbSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAorCiAgICAgYm9vbCBjaGVja0ZvckNsb3NlVGFnRXJyb3JzID0gdHJ1
ZTsKICAgICBpZiAodC0+dGFnTmFtZSA9PSBmb3JtVGFnICYmIG1fY3VycmVudEZvcm1FbGVtZW50
KSB7CiAgICAgICAgIG1fY3VycmVudEZvcm1FbGVtZW50ID0gMDsKQEAgLTEwMTcsNyArMTAxNyw3
IEBAIHZvaWQgSFRNTFBhcnNlcjo6cHJvY2Vzc0Nsb3NlVGFnKFRva2VuKiB0KQogICAgICAgICBt
X2N1cnJlbnRNYXBFbGVtZW50ID0gMDsKICAgICBlbHNlIGlmICh0LT50YWdOYW1lID09IHBUYWcp
CiAgICAgICAgIGNoZWNrRm9yQ2xvc2VUYWdFcnJvcnMgPSBmYWxzZTsKLSAgICAgICAgCisKICAg
ICBIVE1MU3RhY2tFbGVtKiBvbGRFbGVtID0gbV9ibG9ja1N0YWNrOwogICAgIHBvcEJsb2NrKHQt
PnRhZ05hbWUsIGNoZWNrRm9yQ2xvc2VUYWdFcnJvcnMpOwogICAgIGlmIChvbGRFbGVtID09IG1f
YmxvY2tTdGFjayAmJiB0LT50YWdOYW1lID09IHBUYWcpIHsKQEAgLTEwMzEsNyArMTAzMSw3IEBA
IHZvaWQgSFRNTFBhcnNlcjo6cHJvY2Vzc0Nsb3NlVGFnKFRva2VuKiB0KQogICAgIH0KIH0KIAot
Ym9vbCBIVE1MUGFyc2VyOjppc0hlYWRpbmdUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1l
KQorYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OmlzSGVhZGluZ1RhZyhjb25zdCBBdG9taWNTdHJpbmcm
IHRhZ05hbWUpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUYWdOYW1lU2V0LCBoZWFkaW5n
VGFncywgKCkpOwogICAgIGlmIChoZWFkaW5nVGFncy5pc0VtcHR5KCkpIHsKQEAgLTEwNDEsNyAr
MTA0MSw3IEBAIGJvb2wgSFRNTFBhcnNlcjo6aXNIZWFkaW5nVGFnKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdGFnTmFtZSkKICAgICByZXR1cm4gaGVhZGluZ1RhZ3MuY29udGFpbnModGFnTmFtZS5pbXBs
KCkpOwogfQogCi1ib29sIEhUTUxQYXJzZXI6OmlzSW5saW5lKE5vZGUqIG5vZGUpIGNvbnN0Citi
b29sIEhUTUxUcmVlQnVpbGRlcjo6aXNJbmxpbmUoTm9kZSogbm9kZSkgY29uc3QKIHsKICAgICBp
ZiAobm9kZS0+aXNUZXh0Tm9kZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNjcsMTEg
KzEwNjcsMTEgQEAgYm9vbCBIVE1MUGFyc2VyOjppc0lubGluZShOb2RlKiBub2RlKSBjb25zdAog
ICAgICAgICB9CiAjZW5kaWYKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgSFRNTFBhcnNlcjo6aXNSZXNpZHVhbFN0eWxlVGFnKGNvbnN0IEF0b21pY1N0cmluZyYg
dGFnTmFtZSkKK2Jvb2wgSFRNTFRyZWVCdWlsZGVyOjppc1Jlc2lkdWFsU3R5bGVUYWcoY29uc3Qg
QXRvbWljU3RyaW5nJiB0YWdOYW1lKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNl
dDxBdG9taWNTdHJpbmdJbXBsKj4sIHJlc2lkdWFsU3R5bGVUYWdzLCAoKSk7CiAgICAgaWYgKHJl
c2lkdWFsU3R5bGVUYWdzLmlzRW1wdHkoKSkgewpAQCAtMTA4Myw3ICsxMDgzLDcgQEAgYm9vbCBI
VE1MUGFyc2VyOjppc1Jlc2lkdWFsU3R5bGVUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1l
KQogICAgIHJldHVybiByZXNpZHVhbFN0eWxlVGFncy5jb250YWlucyh0YWdOYW1lLmltcGwoKSk7
CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6aXNBZmZlY3RlZEJ5UmVzaWR1YWxTdHlsZShjb25zdCBB
dG9taWNTdHJpbmcmIHRhZ05hbWUpCitib29sIEhUTUxUcmVlQnVpbGRlcjo6aXNBZmZlY3RlZEJ5
UmVzaWR1YWxTdHlsZShjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiwgdW5hZmZlY3RlZFRhZ3Ms
ICgpKTsKICAgICBpZiAodW5hZmZlY3RlZFRhZ3MuaXNFbXB0eSgpKSB7CkBAIC0xMDk1LDcgKzEw
OTUsNyBAQCBib29sIEhUTUxQYXJzZXI6OmlzQWZmZWN0ZWRCeVJlc2lkdWFsU3R5bGUoY29uc3Qg
QXRvbWljU3RyaW5nJiB0YWdOYW1lKQogICAgIHJldHVybiAhdW5hZmZlY3RlZFRhZ3MuY29udGFp
bnModGFnTmFtZS5pbXBsKCkpOwogfQogCi12b2lkIEhUTUxQYXJzZXI6OmhhbmRsZVJlc2lkdWFs
U3R5bGVDbG9zZVRhZ0Fjcm9zc0Jsb2NrcyhIVE1MU3RhY2tFbGVtKiBlbGVtKQordm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OmhhbmRsZVJlc2lkdWFsU3R5bGVDbG9zZVRhZ0Fjcm9zc0Jsb2NrcyhIVE1M
U3RhY2tFbGVtKiBlbGVtKQogewogICAgIEhUTUxTdGFja0VsZW0qIG1heEVsZW0gPSAwOwogICAg
IGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKQEAgLTExODEsNyArMTE4MSw3IEBAIHZvaWQgSFRNTFBh
cnNlcjo6aGFuZGxlUmVzaWR1YWxTdHlsZUNsb3NlVGFnQWNyb3NzQmxvY2tzKEhUTUxTdGFja0Vs
ZW0qIGVsZW0pCiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbGwgcmVsZWFzZVJlZiB0byBn
ZXQgYSByYXcgcG9pbnRlciBzaW5jZSB3ZSBwbGFuIHRvIGhhbmQgb3ZlciBvd25lcnNoaXAgdG8g
Y3VyckVsZW0uCiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGN1cnJOb2RlID0gY3VyckVsZW0t
Pm5vZGUtPmNsb25lTm9kZShmYWxzZSkucmVsZWFzZVJlZigpOwogICAgICAgICAgICAgICAgICAg
ICByZXBvcnRFcnJvcihSZXNpZHVhbFN0eWxlRXJyb3IsICZjdXJyTm9kZS0+bG9jYWxOYW1lKCkp
OwotICAgIAorCiAgICAgICAgICAgICAgICAgICAgIC8vIENoYW5nZSB0aGUgc3RhY2sgZWxlbWVu
dCdzIG5vZGUgdG8gcG9pbnQgdG8gdGhlIGNsb25lLgogICAgICAgICAgICAgICAgICAgICAvLyBU
aGUgc3RhY2sgZWxlbWVudCBhZG9wdHMgdGhlIHJlZmVyZW5jZSB3ZSBvYnRhaW5lZCBhYm92ZSBi
eSBjYWxsaW5nIHJlbGVhc2UoKS4KICAgICAgICAgICAgICAgICAgICAgY3VyckVsZW0tPmRlcmVm
Tm9kZSgpOwpAQCAtMTI4OSw3ICsxMjg5LDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpoYW5kbGVSZXNp
ZHVhbFN0eWxlQ2xvc2VUYWdBY3Jvc3NCbG9ja3MoSFRNTFN0YWNrRWxlbSogZWxlbSkKICAgICAv
LyBTdGVwIDc6IFJlb3BlbiBpbnRlcm1lZGlhdGUgaW5saW5lcywgZS5nLiwgPGI+PHA+PGk+Rm9v
PC9iPkdvbzwvcD4uCiAgICAgLy8gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIEdvbyBzaG91bGQgc3Rh
eSBpdGFsaWMuCiAgICAgLy8gV2UgY2FwIHRoZSBudW1iZXIgb2YgdGFncyB3ZSdyZSB3aWxsaW5n
IHRvIHJlb3BlbiBiYXNlZCBvZmYgY1Jlc2lkdWFsU3R5bGVNYXhEZXB0aC4KLSAgICAKKwogICAg
IEhUTUxTdGFja0VsZW0qIGN1cnIgPSBtX2Jsb2NrU3RhY2s7CiAgICAgSFRNTFN0YWNrRWxlbSog
cmVzaWR1YWxTdHlsZVN0YWNrID0gMDsKICAgICB1bnNpZ25lZCBzdGFja0RlcHRoID0gMTsKQEAg
LTEzMjYsMTIgKzEzMjYsMTIgQEAgdm9pZCBIVE1MUGFyc2VyOjpoYW5kbGVSZXNpZHVhbFN0eWxl
Q2xvc2VUYWdBY3Jvc3NCbG9ja3MoSFRNTFN0YWNrRWxlbSogZWxlbSkKICAgICBtX2hhbmRsaW5n
UmVzaWR1YWxTdHlsZUFjcm9zc0Jsb2NrcyA9IGZhbHNlOwogfQogCi12b2lkIEhUTUxQYXJzZXI6
OnJlb3BlblJlc2lkdWFsU3R5bGVUYWdzKEhUTUxTdGFja0VsZW0qIGVsZW0sIE5vZGUqIG1hbGZv
cm1lZFRhYmxlUGFyZW50KQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlb3BlblJlc2lkdWFsU3R5
bGVUYWdzKEhUTUxTdGFja0VsZW0qIGVsZW0sIE5vZGUqIG1hbGZvcm1lZFRhYmxlUGFyZW50KQog
ewogICAgIC8vIExvb3AgZm9yIGVhY2ggdGFnIHRoYXQgbmVlZHMgdG8gYmUgcmVvcGVuZWQuCiAg
ICAgd2hpbGUgKGVsZW0pIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgc2hhbGxvdyBjbG9uZSBvZiB0
aGUgRE9NIG5vZGUgZm9yIHRoaXMgZWxlbWVudC4KLSAgICAgICAgUmVmUHRyPE5vZGU+IG5ld05v
ZGUgPSBlbGVtLT5ub2RlLT5jbG9uZU5vZGUoZmFsc2UpOyAKKyAgICAgICAgUmVmUHRyPE5vZGU+
IG5ld05vZGUgPSBlbGVtLT5ub2RlLT5jbG9uZU5vZGUoZmFsc2UpOwogICAgICAgICByZXBvcnRF
cnJvcihSZXNpZHVhbFN0eWxlRXJyb3IsICZuZXdOb2RlLT5sb2NhbE5hbWUoKSk7CiAKICAgICAg
ICAgLy8gQXBwZW5kIHRoZSBuZXcgbm9kZS4gSW4gdGhlIG1hbGZvcm1lZCB0YWJsZSBjYXNlLCB3
ZSBuZWVkIHRvIGluc2VydCBiZWZvcmUgdGhlIHRhYmxlLApAQCAtMTM1OCw3ICsxMzU4LDcgQEAg
dm9pZCBIVE1MUGFyc2VyOjpyZW9wZW5SZXNpZHVhbFN0eWxlVGFncyhIVE1MU3RhY2tFbGVtKiBl
bGVtLCBOb2RlKiBtYWxmb3JtZWRUYWIKIAogICAgICAgICAvLyBVcGRhdGUgfGN1cnJlbnR8IG1h
bnVhbGx5IHRvIHBvaW50IHRvIHRoZSBuZXcgbm9kZS4KICAgICAgICAgc2V0Q3VycmVudChuZXdO
b2RlLmdldCgpKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gQWR2YW5jZSB0byB0aGUgbmV4dCB0
YWcgdGhhdCBuZWVkcyB0byBiZSByZW9wZW5lZC4KICAgICAgICAgSFRNTFN0YWNrRWxlbSogbmV4
dCA9IGVsZW0tPm5leHQ7CiAgICAgICAgIGVsZW0tPmRlcmVmTm9kZSgpOwpAQCAtMTM2Nyw3ICsx
MzY3LDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpyZW9wZW5SZXNpZHVhbFN0eWxlVGFncyhIVE1MU3Rh
Y2tFbGVtKiBlbGVtLCBOb2RlKiBtYWxmb3JtZWRUYWIKICAgICB9CiB9CiAKLXZvaWQgSFRNTFBh
cnNlcjo6cHVzaEJsb2NrKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgaW50IGxldmVsKQor
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnB1c2hCbG9jayhjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05h
bWUsIGludCBsZXZlbCkKIHsKICAgICBtX2Jsb2NrU3RhY2sgPSBuZXcgSFRNTFN0YWNrRWxlbSh0
YWdOYW1lLCBsZXZlbCwgbV9jdXJyZW50LCBtX2RpZFJlZkN1cnJlbnQsIG1fYmxvY2tTdGFjayk7
CiAgICAgaWYgKGxldmVsID49IG1pbkJsb2NrTGV2ZWxUYWdQcmlvcml0eSkKQEAgLTEzODAsNyAr
MTM4MCw3IEBAIHZvaWQgSFRNTFBhcnNlcjo6cHVzaEJsb2NrKGNvbnN0IEF0b21pY1N0cmluZyYg
dGFnTmFtZSwgaW50IGxldmVsKQogICAgICAgICBtX2hhc1BFbGVtZW50SW5TY29wZSA9IE5vdElu
U2NvcGU7CiB9CiAKLXZvaWQgSFRNTFBhcnNlcjo6cG9wQmxvY2soY29uc3QgQXRvbWljU3RyaW5n
JiB0YWdOYW1lLCBib29sIHJlcG9ydEVycm9ycykKK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwb3BC
bG9jayhjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUsIGJvb2wgcmVwb3J0RXJyb3JzKQogewog
ICAgIEhUTUxTdGFja0VsZW0qIGVsZW0gPSBtX2Jsb2NrU3RhY2s7CiAKQEAgLTE0MTIsNyArMTQx
Miw3IEBAIHZvaWQgSFRNTFBhcnNlcjo6cG9wQmxvY2soY29uc3QgQXRvbWljU3RyaW5nJiB0YWdO
YW1lLCBib29sIHJlcG9ydEVycm9ycykKICAgICBib29sIGlzQWZmZWN0ZWRCeVN0eWxlID0gaXNB
ZmZlY3RlZEJ5UmVzaWR1YWxTdHlsZShlbGVtLT50YWdOYW1lKTsKICAgICBIVE1MU3RhY2tFbGVt
KiByZXNpZHVhbFN0eWxlU3RhY2sgPSAwOwogICAgIE5vZGUqIG1hbGZvcm1lZFRhYmxlUGFyZW50
ID0gMDsKLSAgICAKKwogICAgIGVsZW0gPSBtX2Jsb2NrU3RhY2s7CiAgICAgdW5zaWduZWQgc3Rh
Y2tEZXB0aCA9IDE7CiAgICAgdW5zaWduZWQgcmVkdW5kYW50U3R5bGVDb3VudCA9IDA7CkBAIC0x
NDY5LDcgKzE0NjksNyBAQCB2b2lkIEhUTUxQYXJzZXI6OnBvcEJsb2NrKGNvbnN0IEF0b21pY1N0
cmluZyYgdGFnTmFtZSwgYm9vbCByZXBvcnRFcnJvcnMpCiAgICAgcmVvcGVuUmVzaWR1YWxTdHls
ZVRhZ3MocmVzaWR1YWxTdHlsZVN0YWNrLCBtYWxmb3JtZWRUYWJsZVBhcmVudCk7CiB9CiAKLWlu
bGluZSBIVE1MU3RhY2tFbGVtKiBIVE1MUGFyc2VyOjpwb3BPbmVCbG9ja0NvbW1vbigpCitpbmxp
bmUgSFRNTFN0YWNrRWxlbSogSFRNTFRyZWVCdWlsZGVyOjpwb3BPbmVCbG9ja0NvbW1vbigpCiB7
CiAgICAgSFRNTFN0YWNrRWxlbSogZWxlbSA9IG1fYmxvY2tTdGFjazsKIApAQCAtMTQ5OCw3ICsx
NDk4LDcgQEAgaW5saW5lIEhUTUxTdGFja0VsZW0qIEhUTUxQYXJzZXI6OnBvcE9uZUJsb2NrQ29t
bW9uKCkKICAgICByZXR1cm4gZWxlbTsKIH0KIAotdm9pZCBIVE1MUGFyc2VyOjpwb3BPbmVCbG9j
aygpCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cG9wT25lQmxvY2soKQogewogICAgIC8vIFN0b3Jl
IHRoZSBjdXJyZW50IG5vZGUgYmVmb3JlIHBvcE9uZUJsb2NrQ29tbW9uIG92ZXJ3cml0ZXMgaXQu
CiAgICAgTm9kZSogbGFzdEN1cnJlbnQgPSBtX2N1cnJlbnQ7CkBAIC0xNTEwLDcgKzE1MTAsNyBA
QCB2b2lkIEhUTUxQYXJzZXI6OnBvcE9uZUJsb2NrKCkKICAgICAgICAgbGFzdEN1cnJlbnQtPmRl
cmVmKCk7CiB9CiAKLXZvaWQgSFRNTFBhcnNlcjo6bW92ZU9uZUJsb2NrVG9TdGFjayhIVE1MU3Rh
Y2tFbGVtKiYgaGVhZCkKK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjptb3ZlT25lQmxvY2tUb1N0YWNr
KEhUTUxTdGFja0VsZW0qJiBoZWFkKQogewogICAgIC8vIFdlJ2xsIGJlIHVzaW5nIHRoZSBzdGFj
ayBlbGVtZW50IHdlJ3JlIHBvcHBpbmcsIGJ1dCBmb3IgdGhlIGN1cnJlbnQgbm9kZS4KICAgICAv
LyBTZWUgdGhlIHR3byBjYWxsZXJzIGZvciBkZXRhaWxzLgpAQCAtMTUzMiw3ICsxNTMyLDcgQEAg
dm9pZCBIVE1MUGFyc2VyOjptb3ZlT25lQmxvY2tUb1N0YWNrKEhUTUxTdGFja0VsZW0qJiBoZWFk
KQogICAgIGhlYWQgPSBlbGVtOwogfQogCi12b2lkIEhUTUxQYXJzZXI6OmNoZWNrSWZIYXNQRWxl
bWVudEluU2NvcGUoKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNoZWNrSWZIYXNQRWxlbWVudElu
U2NvcGUoKQogewogICAgIG1faGFzUEVsZW1lbnRJblNjb3BlID0gTm90SW5TY29wZTsKICAgICBI
VE1MU3RhY2tFbGVtKiBlbGVtID0gbV9ibG9ja1N0YWNrOwpAQCAtMTU0NywxMyArMTU0NywxMyBA
QCB2b2lkIEhUTUxQYXJzZXI6OmNoZWNrSWZIYXNQRWxlbWVudEluU2NvcGUoKQogICAgIH0KIH0K
IAotdm9pZCBIVE1MUGFyc2VyOjpwb3BJbmxpbmVCbG9ja3MoKQordm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnBvcElubGluZUJsb2NrcygpCiB7CiAgICAgd2hpbGUgKG1fYmxvY2tTdGFjayAmJiBpc0lu
bGluZShtX2N1cnJlbnQpKQogICAgICAgICBwb3BPbmVCbG9jaygpOwogfQogCi12b2lkIEhUTUxQ
YXJzZXI6OmZyZWVCbG9jaygpCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZnJlZUJsb2NrKCkKIHsK
ICAgICB3aGlsZSAobV9ibG9ja1N0YWNrKQogICAgICAgICBwb3BPbmVCbG9jaygpOwpAQCAtMTU2
MSw3ICsxNTYxLDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpmcmVlQmxvY2soKQogICAgIEFTU0VSVCgh
bV90cmVlRGVwdGgpOwogfQogCi12b2lkIEhUTUxQYXJzZXI6OmNyZWF0ZUhlYWQoKQordm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OmNyZWF0ZUhlYWQoKQogewogICAgIGlmIChtX2hlYWQpCiAgICAgICAg
IHJldHVybjsKQEAgLTE1ODEsNyArMTU4MSw3IEBAIHZvaWQgSFRNTFBhcnNlcjo6Y3JlYXRlSGVh
ZCgpCiAgICAgbV9kb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPmluc2VydEJlZm9yZShtX2hl
YWQuZ2V0KCksIGJvZHksIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIG1faGVhZCA9IDA7Ci0g
ICAgICAgIAorCiAgICAgLy8gSWYgdGhlIGJvZHkgZG9lcyBub3QgZXhpc3QgeWV0LCB0aGVuIHRo
ZSA8aGVhZD4gc2hvdWxkIGJlIHB1c2hlZCBhcyB0aGUgY3VycmVudCBibG9jay4KICAgICBpZiAo
bV9oZWFkICYmICFib2R5KSB7CiAgICAgICAgIHB1c2hCbG9jayhtX2hlYWQtPmxvY2FsTmFtZSgp
LCBtX2hlYWQtPnRhZ1ByaW9yaXR5KCkpOwpAQCAtMTU4OSw3ICsxNTg5LDcgQEAgdm9pZCBIVE1M
UGFyc2VyOjpjcmVhdGVIZWFkKCkKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZT4gSFRNTFBh
cnNlcjo6aGFuZGxlSXNpbmRleChUb2tlbiogdCkKK1Bhc3NSZWZQdHI8Tm9kZT4gSFRNTFRyZWVC
dWlsZGVyOjpoYW5kbGVJc2luZGV4KFRva2VuKiB0KQogewogICAgIFJlZlB0cjxOb2RlPiBuID0g
SFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKIApAQCAtMTYxNCw3ICsxNjE0LDcg
QEAgUGFzc1JlZlB0cjxOb2RlPiBIVE1MUGFyc2VyOjpoYW5kbGVJc2luZGV4KFRva2VuKiB0KQog
ICAgIHJldHVybiBuLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBIVE1MUGFyc2VyOjpzdGFydEJvZHko
KQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnN0YXJ0Qm9keSgpCiB7CiAgICAgaWYgKG1faW5Cb2R5
KQogICAgICAgICByZXR1cm47CkBAIC0xNjI3LDcgKzE2MjcsNyBAQCB2b2lkIEhUTUxQYXJzZXI6
OnN0YXJ0Qm9keSgpCiAgICAgfQogfQogCi12b2lkIEhUTUxQYXJzZXI6OmZpbmlzaGVkKCkKK3Zv
aWQgSFRNTFRyZWVCdWlsZGVyOjpmaW5pc2hlZCgpCiB7CiAgICAgLy8gSW4gdGhlIGNhc2Ugb2Yg
YSBjb21wbGV0ZWx5IGVtcHR5IGRvY3VtZW50LCBoZXJlJ3MgdGhlIHBsYWNlIHRvIGNyZWF0ZSB0
aGUgSFRNTCBlbGVtZW50LgogICAgIGlmIChtX2N1cnJlbnQgJiYgbV9jdXJyZW50LT5pc0RvY3Vt
ZW50Tm9kZSgpICYmICFtX2RvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSkKQEAgLTE2NDIsMTIg
KzE2NDIsMTIgQEAgdm9pZCBIVE1MUGFyc2VyOjpmaW5pc2hlZCgpCiAgICAgICAgIG1fZG9jdW1l
bnQtPmZpbmlzaGVkUGFyc2luZygpOwogfQogCi12b2lkIEhUTUxQYXJzZXI6OnJlcG9ydEVycm9y
VG9Db25zb2xlKEhUTUxQYXJzZXJFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBBdG9taWNTdHJp
bmcqIHRhZ05hbWUxLCBjb25zdCBBdG9taWNTdHJpbmcqIHRhZ05hbWUyLCBib29sIGNsb3NlVGFn
cykKLXsgICAgCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cmVwb3J0RXJyb3JUb0NvbnNvbGUoSFRN
TFBhcnNlckVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IEF0b21pY1N0cmluZyogdGFnTmFtZTEs
IGNvbnN0IEF0b21pY1N0cmluZyogdGFnTmFtZTIsIGJvb2wgY2xvc2VUYWdzKQorewogICAgIEZy
YW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAorCiAgICAgSFRNTERvY3VtZW50UGFyc2VyKiBodG1sVG9rZW5pemVy
ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50UGFyc2VyKj4obV9kb2N1bWVudC0+cGFyc2VyKCkp
OwogICAgIGludCBsaW5lTnVtYmVyID0gaHRtbFRva2VuaXplci0+bGluZU51bWJlcigpICsgMTsK
IApAQCAtMTY2OSwxMSArMTY2OSwxMSBAQCB2b2lkIEhUTUxQYXJzZXI6OnJlcG9ydEVycm9yVG9D
b25zb2xlKEhUTUxQYXJzZXJFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBBdG9taQogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICB0YWcyID0gKGNsb3NlVGFncyA/ICI8LyIgOiAiPCIpICsgKnRh
Z05hbWUyICsgIj4iOwogICAgIH0KLSAgICAgICAgCisKICAgICBjb25zdCBjaGFyKiBlcnJvck1z
ZyA9IGh0bWxQYXJzZXJFcnJvck1lc3NhZ2VUZW1wbGF0ZShlcnJvckNvZGUpOwogICAgIGlmICgh
ZXJyb3JNc2cpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBTdHJpbmcgbWVzc2Fn
ZTsKICAgICBpZiAoaHRtbFRva2VuaXplci0+cHJvY2Vzc2luZ0NvbnRlbnRXcml0dGVuQnlTY3Jp
cHQoKSkKICAgICAgICAgbWVzc2FnZSArPSBodG1sUGFyc2VyRG9jdW1lbnRXcml0ZU1lc3NhZ2Uo
KTsKQEAgLTE2ODEsNyArMTY4MSw3IEBAIHZvaWQgSFRNTFBhcnNlcjo6cmVwb3J0RXJyb3JUb0Nv
bnNvbGUoSFRNTFBhcnNlckVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IEF0b21pCiAgICAgbWVz
c2FnZS5yZXBsYWNlKCIldGFnMSIsIHRhZzEpOwogICAgIG1lc3NhZ2UucmVwbGFjZSgiJXRhZzIi
LCB0YWcyKTsKIAotICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdl
KEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgCisgICAgZnJhbWUtPmRvbVdpbmRv
dygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VU
eXBlLAogICAgICAgICBpc1dhcm5pbmcoZXJyb3JDb2RlKSA/IFdhcm5pbmdNZXNzYWdlTGV2ZWwg
OiBFcnJvck1lc3NhZ2VMZXZlbCwKICAgICAgICAgbWVzc2FnZSwgbGluZU51bWJlciwgbV9kb2N1
bWVudC0+dXJsKCkuc3RyaW5nKCkpOwogfQpAQCAtMTY5MCw3ICsxNjkwLDcgQEAgdm9pZCBIVE1M
UGFyc2VyOjpyZXBvcnRFcnJvclRvQ29uc29sZShIVE1MUGFyc2VyRXJyb3JDb2RlIGVycm9yQ29k
ZSwgY29uc3QgQXRvbWkKIGJvb2wgc2hvdWxkQ3JlYXRlSW1wbGljaXRIZWFkKERvY3VtZW50KiBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwotICAgIAorCiAgICAgU2V0dGluZ3Mq
IHNldHRpbmdzID0gZG9jdW1lbnQtPnBhZ2UoKSA/IGRvY3VtZW50LT5wYWdlKCktPnNldHRpbmdz
KCkgOiAwOwogICAgIHJldHVybiBzZXR0aW5ncyA/ICFzZXR0aW5ncy0+bmVlZHNMZW9wYXJkTWFp
bFF1aXJrcygpIDogdHJ1ZTsKIH0KQEAgLTE2OTgsNyArMTY5OCw3IEBAIGJvb2wgc2hvdWxkQ3Jl
YXRlSW1wbGljaXRIZWFkKERvY3VtZW50KiBkb2N1bWVudCkKIGJvb2wgc2hvdWxkQ3JlYXRlSW1w
bGljaXRIZWFkKERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwot
ICAgIAorCiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQtPnBhZ2UoKSA/IGRvY3Vt
ZW50LT5wYWdlKCktPnNldHRpbmdzKCkgOiAwOwogICAgIHJldHVybiBzZXR0aW5ncyA/ICFzZXR0
aW5ncy0+bmVlZHNUaWdlck1haWxRdWlya3MoKSA6IHRydWU7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSFRNTFBhcnNlci5oIGIvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5oCnNp
bWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIFdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmgK
cmVuYW1lIHRvIFdlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaAppbmRleCAwY2E1ZjhhNWI4
YzA2NDg3NDI1NjdhNDgyN2M5NjEyOWJkNGM0MTQxLi5kM2RmMDFmODAzNzkxZjA5MjQwYjM3NjVl
MmQwOTViMzkwYjI0N2I3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5oCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaApAQCAtNTAsMTcgKzUwLDE3IEBAIHN0
cnVjdCBUb2tlbjsKICAqIFRoZSBwYXJzZXIgZm9yIEhUTUwuIEl0IHJlY2VpdmVzIGEgc3RyZWFt
IG9mIHRva2VucyBmcm9tIHRoZSBIVE1MRG9jdW1lbnRQYXJzZXIsIGFuZAogICogYnVpbGRzIHVw
IHRoZSBEb2N1bWVudCBzdHJ1Y3R1cmUgZnJvbSBpdC4KICAqLwotY2xhc3MgSFRNTFBhcnNlciA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CitjbGFzcyBIVE1MVHJlZUJ1aWxkZXIgOiBwdWJsaWMgTm9u
Y29weWFibGUgewogcHVibGljOgotICAgIEhUTUxQYXJzZXIoSFRNTERvY3VtZW50KiwgYm9vbCBy
ZXBvcnRFcnJvcnMpOwotICAgIEhUTUxQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCosIEZyYWdtZW50
U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7Ci0gICAgdmly
dHVhbCB+SFRNTFBhcnNlcigpOworICAgIEhUTUxUcmVlQnVpbGRlcihIVE1MRG9jdW1lbnQqLCBi
b29sIHJlcG9ydEVycm9ycyk7CisgICAgSFRNTFRyZWVCdWlsZGVyKERvY3VtZW50RnJhZ21lbnQq
LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQp
OworICAgIHZpcnR1YWwgfkhUTUxUcmVlQnVpbGRlcigpOwogCiAgICAgLyoqCiAgICAgICogcGFy
c2VzIG9uZSB0b2tlbiBkZWxpdmVyZWQgYnkgdGhlIHRva2VuaXplcgogICAgICAqLwogICAgIFBh
c3NSZWZQdHI8Tm9kZT4gcGFyc2VUb2tlbihUb2tlbiopOwotICAgIAorCiAgICAgLy8gUGFyc2Vz
IGEgZG9jdHlwZSB0b2tlbi4KICAgICB2b2lkIHBhcnNlRG9jdHlwZVRva2VuKERvY3R5cGVUb2tl
biopOwogCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGluc2VydE5vZGVB
ZnRlckxpbWl0RGVwdGgoTm9kZSosIGJvb2wgZmxhdCA9IGZhbHNlKTsKICAgICBib29sIGluc2Vy
dE5vZGUoTm9kZSosIGJvb2wgZmxhdCA9IGZhbHNlKTsKICAgICBib29sIGhhbmRsZUVycm9yKE5v
ZGUqLCBib29sIGZsYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBpbnQgdGFnUHJp
b3JpdHkpOwotICAgIAorCiAgICAgdm9pZCBwdXNoQmxvY2soY29uc3QgQXRvbWljU3RyaW5nJiB0
YWdOYW1lLCBpbnQgbGV2ZWwpOwogICAgIHZvaWQgcG9wQmxvY2soY29uc3QgQXRvbWljU3RyaW5n
JiB0YWdOYW1lLCBib29sIHJlcG9ydEVycm9ycyA9IGZhbHNlKTsKICAgICB2b2lkIHBvcEJsb2Nr
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lLCBib29sIHJlcG9ydEVycm9ycyA9IGZhbHNlKSB7
IHJldHVybiBwb3BCbG9jayhxTmFtZS5sb2NhbE5hbWUoKSwgcmVwb3J0RXJyb3JzKTsgfSAvLyBD
b252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgcmVhZGFiaWxpdHkuCkBAIC0xMzUsMTEgKzEzNSwxMSBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVvcGVuUmVzaWR1YWxTdHlsZVRhZ3MoSFRNTFN0YWNrRWxl
bSosIE5vZGUqIG1hbGZvcm1lZFRhYmxlUGFyZW50KTsKIAogICAgIGJvb2wgYWxsb3dOZXN0ZWRS
ZWR1bmRhbnRUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKTsKLSAgICAKKwogICAgIHN0
YXRpYyBib29sIGlzSGVhZGluZ1RhZyhjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpOwogCiAg
ICAgYm9vbCBpc0lubGluZShOb2RlKikgY29uc3Q7Ci0gICAgCisKICAgICB2b2lkIHN0YXJ0Qm9k
eSgpOyAvLyBpbnNlcnRzIHRoZSBpc2luZGV4IGVsZW1lbnQKICAgICBQYXNzUmVmUHRyPE5vZGU+
IGhhbmRsZUlzaW5kZXgoVG9rZW4qKTsKIApAQCAtMTU1LDcgKzE1NSw3IEBAIHByaXZhdGU6CiAg
ICAgeyBpZiAoIW1fcmVwb3J0RXJyb3JzKSByZXR1cm47IHJlcG9ydEVycm9yVG9Db25zb2xlKGVy
cm9yQ29kZSwgdGFnTmFtZTEsIHRhZ05hbWUyLCBjbG9zZVRhZ3MpOyB9CiAKICAgICB2b2lkIHJl
cG9ydEVycm9yVG9Db25zb2xlKEhUTUxQYXJzZXJFcnJvckNvZGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyogdGFnTmFtZTEsIGNvbnN0IEF0b21pY1N0cmluZyogdGFnTmFtZTIsIGJvb2wgY2xvc2VUYWdz
KTsKLSAgICAKKwogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwogCiAgICAgLy8gVGhlIGN1cnJl
bnRseSBhY3RpdmUgZWxlbWVudCAodGhlIG9uZSBuZXcgZWxlbWVudHMgd2lsbCBiZSBhZGRlZCB0
bykuIENhbiBiZSBhIGRvY3VtZW50IGZyYWdtZW50LCBhIGRvY3VtZW50IG9yIGFuIGVsZW1lbnQu
CkBAIC0xNzIsNyArMTcyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBEZXB0aCBvZiB0aGUgdHJlZS4K
ICAgICB1bnNpZ25lZCBtX3RyZWVEZXB0aDsKIAotICAgIGVudW0gRWxlbWVudEluU2NvcGVTdGF0
ZSB7IE5vdEluU2NvcGUsIEluU2NvcGUsIFVua25vd24gfTsgCisgICAgZW51bSBFbGVtZW50SW5T
Y29wZVN0YXRlIHsgTm90SW5TY29wZSwgSW5TY29wZSwgVW5rbm93biB9OwogICAgIEVsZW1lbnRJ
blNjb3BlU3RhdGUgbV9oYXNQRWxlbWVudEluU2NvcGU7CiAKICAgICBSZWZQdHI8SFRNTEZvcm1F
bGVtZW50PiBtX2N1cnJlbnRGb3JtRWxlbWVudDsgLy8gY3VycmVudGx5IGFjdGl2ZSBmb3JtCkBA
IC0yMTAsNSArMjEwLDUgQEAgYm9vbCBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBT
dHJpbmcmLCBkb3VibGUqKTsKIFN0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSk7
CiAKIH0KLSAgICAKKwogI2VuZGlmIC8vIEhUTUxQYXJzZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL1N0ZXBSYW5nZS5jcHAgYi9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAppbmRleCAw
NGY0ZWQzYmIxMTJlYzNlYzZhZTJkM2NmYjk4ZTZjMWMwMGI5ZDhkLi5hZWFmNjJmZDRmMDUwZDg1
M2RhZTExNTk2NDQ5ZjkzY2IxNTJiOTIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvU3RlcFJh
bmdlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcApAQCAtMjMsNyArMjMsNyBA
QAogCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgotI2luY2x1ZGUgIkhUTUxQYXJzZXIuaCIKKyNpbmNsdWRlICJIVE1MVHJlZUJ1aWxkZXIuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBiL1dlYkNvcmUv
aHRtbC9WYWxpZGl0eVN0YXRlLmNwcAppbmRleCBmYzYwYTIyZDY1ODM2MmExNmZmODRjNjMzMzli
ZDg2YjRhMWU4ODMxLi5mNGZlOGIyYjJhMzg3OTRlMDFjNjU0YTIxODQxN2VhY2YwOTE0ZTQ0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKKysrIGIvV2ViQ29yZS9o
dG1sL1ZhbGlkaXR5U3RhdGUuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJIVE1M
SW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTFBh
cnNlci5oIgorI2luY2x1ZGUgIkhUTUxUcmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Np
b24uaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCmluZGV4IDc4OTY0YTY5MDc4NDk5NThh
ZDE1MGVlZjM5NWRmYmQyMDg5MDQ2ZjEuLmQ5YjcxZWYwYzM2NGI1ZDI0OGRiYzk3MmZlYmNhYTc4
ZGYzMTczZGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcApAQCAtMjksNyArMjksNyBA
QAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxQYXJzZXIuaCIKKyNpbmNsdWRlICJI
VE1MVHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogI2lu
Y2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58619</attachid>
            <date>2010-06-13 21:09:22 -0700</date>
            <delta_ts>2010-06-13 21:19:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-40554-20100613210920.patch</filename>
            <type>text/plain</type>
            <size>52849</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA2OGVkNDkwM2Y2YzJlM2FjNmMyYzEzMzhlZjQ1MjA4YWU3YWY1NDI5Li5lYjYwYjRmNjA4ZWI0
NGZmYzZmZmZkYTdiNzBmYjE2MzMwZmY1NzFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNjIsNyArMjYyLDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3Bw
IFwKIAlodG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAgXAogCWh0bWwvSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uLmNwcCBcCi0JaHRtbC9IVE1MUGFyc2VyLmNwcCBcCisJaHRtbC9IVE1MVHJlZUNvbnN0
cnVjdG9yLmNwcCBcCiAJaHRtbC9IVE1MUGFyc2VyRXJyb3JDb2Rlcy5jcHAgXAogCWh0bWwvSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwIFwKIAlodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAg
XApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggOWU0Y2I2MTk2ZmJjMzNhM2U2MGQ1ODNlMzY4YjU5YTNkM2UwYTc4ZC4uZGE3
NjdlZTBkODkwN2Y0OTU1NDE2YjdhZjZiMGZkYzc5NDEzM2QyYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05NjksNyAr
OTY5LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLmNwcAogICAgIGh0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1M
UGFyYW1FbGVtZW50LmNwcAotICAgIGh0bWwvSFRNTFBhcnNlci5jcHAKKyAgICBodG1sL0hUTUxU
cmVlQ29uc3RydWN0b3IuY3BwCiAgICAgaHRtbC9IVE1MUGFyc2VyRXJyb3JDb2Rlcy5jcHAKICAg
ICBodG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAogICAgIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMjE5MWEzNDA2Njk3Yzc3YzA0MzFkYTE2YjA4NmY2Y2U3NzY3NDk5NC4uMTA5YTll
ZmIyNmYwZTY3YjU3YTQxZGI1ZDE4MTlmMzU2Nzg3N2UzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjYgQEAKKzIwMTAt
MDYtMTMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgUmVuYW1lIEhUTUxQYXJzZXIgdG8gSFRNTFRyZWVD
b25zdHJ1Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDA1NTQKKworICAgICAgICBUaGlzIG1ha2VzIG91ciBvbGQgSFRNTCBwYXJzaW5nIHN5c3Rl
bSBjbG9zZXIgbWF0Y2ggdGhlCisgICAgICAgIEhUTUw1IHNwZWMsIGFuZCB0aHVzIGVhc2llciB0
byBjb21wYXJlIHRvIHRoZSBuZXcgSFRNTDUKKyAgICAgICAgcGFyc2luZyBzeXN0ZW0uCisKKyAg
ICAgICAgVGhpcyByZW5hbWUgd2FzIGVudGlyZWx5IGF1dG9tYXRpYy4gIERvbmUgYnkgZG8td2Vi
Y29yZS1yZW5hbWUuCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRQYXJz
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UGFyc2VyOjpodG1sVHJlZUNvbnN0cnVj
dG9yKToKKyAgICAgICAgKiBodG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTDVEb2N1bWVudFBhcnNlcjo6aHRtbFRyZWVDb25zdHJ1Y3Rvcik6CisgICAg
ICAgICogaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmg6CisgICAgICAgICogaHRtbC9IVE1MNVRy
ZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VHJlZUJ1aWxkZXI6OkhUTUw1
VHJlZUJ1aWxkZXIpOgorICAgICAgICAqIGh0bWwvSFRNTDVUcmVlQnVpbGRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6bGVnYWN5VHJlZUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6CisgICAgICAgICogaHRtbC9I
VE1MRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNl
cjo6aHRtbFRyZWVDb25zdHJ1Y3Rvcik6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJl
bW92ZWRGcm9tVHJlZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBodG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTFBh
cnNlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MUGFyc2VyLmg6IFJlbW92ZWQu
CisgICAgICAgICogaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1s
L0hUTUxUcmVlQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFkZFRh
Z3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0YWNrRWxlbTo6SFRNTFN0YWNrRWxlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU3RhY2tFbGVtOjpkZXJlZk5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6SFRNTFRyZWVDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUNvbnN0cnVjdG9yOjp+SFRNTFRyZWVDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUNvbnN0cnVjdG9yOjpyZXNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUNvbnN0cnVjdG9yOjpzZXRDdXJyZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OnRhZ1ByaW9yaXR5T2ZOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3Ry
dWN0b3I6OmxpbWl0RGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVDb25zdHJ1Y3Rv
cjo6aW5zZXJ0Tm9kZUFmdGVyTGltaXREZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUNvbnN0cnVjdG9yOjpwYXJzZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29u
c3RydWN0b3I6OnBhcnNlRG9jdHlwZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVGFibGVT
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVGFibGVQYXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OmlzVGFibGVSZWxhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2NvcGluZ1RhZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUNvbnN0cnVjdG9yOjppbnNlcnROb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6OmhhbmRsZUVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6OnRleHRDcmVhdGVFcnJvckNoZWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6OmNvbW1lbnRDcmVhdGVFcnJvckNo
ZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6OmhlYWRDcmVhdGVF
cnJvckNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6OmJvZHlD
cmVhdGVFcnJvckNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6
OmZyYW1lc2V0Q3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUNv
bnN0cnVjdG9yOjpmb3JtQ3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUNvbnN0cnVjdG9yOjppc2luZGV4Q3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUNvbnN0cnVjdG9yOjpzZWxlY3RDcmVhdGVFcnJvckNoZWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6OmRkQ3JlYXRlRXJyb3JDaGVjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUNvbnN0cnVjdG9yOjpkdENyZWF0ZUVycm9yQ2hlY2sp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cnBDcmVhdGVFcnJvckNo
ZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6OnJ0Q3JlYXRlRXJy
b3JDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUNvbnN0cnVjdG9yOjpuZXN0ZWRD
cmVhdGVFcnJvckNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6
Om5lc3RlZFBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQ29uc3RydWN0b3I6Om5lc3RlZFN0eWxlQ3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUNvbnN0cnVjdG9yOjp0YWJsZUNlbGxDcmVhdGVFcnJvckNoZWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6OnRhYmxlU2VjdGlvbkNyZWF0
ZUVycm9yQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6bm9l
bWJlZENyZWF0ZUVycm9yQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVDb25zdHJ1
Y3Rvcjo6bm9mcmFtZXNDcmVhdGVFcnJvckNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQ29uc3RydWN0b3I6Om5vc2NyaXB0Q3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUNvbnN0cnVjdG9yOjpwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUNvbnN0cnVjdG9yOjpwQ2xvc2VyU3RyaWN0Q3JlYXRlRXJy
b3JDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUNvbnN0cnVjdG9yOjptYXBDcmVh
dGVFcnJvckNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6Om1hcFRhZ1RvRnVuYyk6CisgICAgICAg
IChXZWJDb3JlOjptYXBUYWdzVG9GdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29u
c3RydWN0b3I6OmdldE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVDb25zdHJ1Y3Rv
cjo6YWxsb3dOZXN0ZWRSZWR1bmRhbnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVD
b25zdHJ1Y3Rvcjo6cHJvY2Vzc0Nsb3NlVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
Q29uc3RydWN0b3I6OmlzSGVhZGluZ1RhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUNv
bnN0cnVjdG9yOjppc0lubGluZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUNvbnN0cnVj
dG9yOjppc1Jlc2lkdWFsU3R5bGVUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVDb25z
dHJ1Y3Rvcjo6aXNBZmZlY3RlZEJ5UmVzaWR1YWxTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUNvbnN0cnVjdG9yOjpoYW5kbGVSZXNpZHVhbFN0eWxlQ2xvc2VUYWdBY3Jvc3NCbG9j
a3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cmVvcGVuUmVzaWR1
YWxTdHlsZVRhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cHVz
aEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6OnBvcEJsb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6OnBvcE9uZUJsb2NrQ29t
bW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6OnBvcE9uZUJsb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6Om1vdmVPbmVCbG9ja1Rv
U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6Y2hlY2tJZkhh
c1BFbGVtZW50SW5TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUNvbnN0cnVjdG9y
Ojpwb3BJbmxpbmVCbG9ja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVDb25zdHJ1Y3Rv
cjo6ZnJlZUJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6OmNy
ZWF0ZUhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6aGFuZGxl
SXNpbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUNvbnN0cnVjdG9yOjpzdGFydEJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6ZmluaXNoZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cmVwb3J0RXJyb3JUb0NvbnNv
bGUpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQ3JlYXRlSW1wbGljaXRIZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUZvck51bWJlclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRyZWVDb25z
dHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6
OnNraXBNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3RydWN0b3I6OmlzSGFu
ZGxpbmdSZXNpZHVhbFN0eWxlQWNyb3NzQmxvY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQ29uc3RydWN0b3I6OnNldFNraXBNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
Q29uc3RydWN0b3I6OnBvcEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQ29uc3Ry
dWN0b3I6Omhhc1BFbGVtZW50SW5TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUNv
bnN0cnVjdG9yOjpyZXBvcnRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUNvbnN0
cnVjdG9yOjopOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQ3JlYXRlSW1wbGljaXRIZWFkKToK
KyAgICAgICAgKiBodG1sL1N0ZXBSYW5nZS5jcHA6CisgICAgICAgICogaHRtbC9WYWxpZGl0eVN0
YXRlLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcDoKKwogMjAxMC0w
Ni0xMSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlYWQ4ZmVlOTRjZWZmYzE2MDhjMTVhNzAwYjNmMmFk
MWUzZTNiZjU4Li42MjJmZmRhYTBjMTczNjVmOWMzODc3M2ZlOTkzZGY5ODIyNDAyODg0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTEyMjEsOCArMTIyMSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9o
dG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmggXAogCVdlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVt
ZW50LmNwcCBcCiAJV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaCBcCi0JV2ViQ29yZS9o
dG1sL0hUTUxQYXJzZXIuY3BwIFwKLQlXZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5oIFwKKwlXZWJD
b3JlL2h0bWwvSFRNTFRyZWVDb25zdHJ1Y3Rvci5jcHAgXAorCVdlYkNvcmUvaHRtbC9IVE1MVHJl
ZUNvbnN0cnVjdG9yLmggXAogCVdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyRXJyb3JDb2Rlcy5jcHAg
XAogCVdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyRXJyb3JDb2Rlcy5oIFwKIAlXZWJDb3JlL2h0bWwv
SFRNTFBhcnNlclF1aXJrcy5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYTM0YWJlNDRlM2I0NmZlZWUwMWM5ODgxMDExOWM3
YmYyMjU4MTNlNy4uZWI0M2MxYzRkYTdiMDUzM2JlNGEzNDVjZTk0MjNkYjM1ZDRmZjFkOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTE2MTAsOCArMTYxMCw4IEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MUGFyYWdyYXBoRWxl
bWVudC5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwJywKICAgICAg
ICAgICAgICdodG1sL0hUTUxQYXJhbUVsZW1lbnQuaCcsCi0gICAgICAgICAgICAnaHRtbC9IVE1M
UGFyc2VyLmNwcCcsCi0gICAgICAgICAgICAnaHRtbC9IVE1MUGFyc2VyLmgnLAorICAgICAgICAg
ICAgJ2h0bWwvSFRNTFRyZWVDb25zdHJ1Y3Rvci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvSFRN
TFRyZWVDb25zdHJ1Y3Rvci5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxQYXJzZXJFcnJvckNv
ZGVzLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MUGFyc2VyRXJyb3JDb2Rlcy5oJywKICAg
ICAgICAgICAgICdodG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcCcsCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA4OWI4YjNmZjJhOGZi
MzM3NmI3OWE0M2YyYTQ3NTU0NGYyN2I4NDRkLi45MjBlOTA0MGQwZDg4OTM3MTZiN2MzZjQyOWZk
YWVlZWYxNzYyZjFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS5wcm8KQEAgLTY3Niw3ICs2NzYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1s
L0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgXAogICAgIGh0bWwvSFRNTFBhcmFncmFwaEVsZW1l
bnQuY3BwIFwKICAgICBodG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwIFwKLSAgICBodG1sL0hUTUxQ
YXJzZXIuY3BwIFwKKyAgICBodG1sL0hUTUxUcmVlQ29uc3RydWN0b3IuY3BwIFwKICAgICBodG1s
L0hUTUxQYXJzZXJFcnJvckNvZGVzLmNwcCBcCiAgICAgaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5j
cHAgXAogICAgIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgXApAQCAtMTQxNSw3ICsx
NDE1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5oIFwK
ICAgICBodG1sL0hUTUxQYXJhbUVsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1MUGFyc2VyRXJyb3JD
b2Rlcy5oIFwKLSAgICBodG1sL0hUTUxQYXJzZXIuaCBcCisgICAgaHRtbC9IVE1MVHJlZUNvbnN0
cnVjdG9yLmggXAogICAgIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmggXAogICAgIGh0bWwvSFRNTFByZUVsZW1lbnQuaCBcCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBiOTJlYzIyODI0ZDRkNTM3M2I4N2U4
OWJmOGFkOGEzODZmZTRmZDg1Li43MmIzYzA2MjNhYzM0MjNjYjA1NDBiZGE3MmIzMDIyOTNhNmE5
ZGIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTM2NDQ5LDExICsz
NjQ0OSwxMSBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXEhUTUxQYXJzZXIuY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
SFRNTFRyZWVDb25zdHJ1Y3Rvci5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxQYXJzZXIuaCINCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXEhUTUxUcmVlQ29uc3RydWN0b3IuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4N
CiAJCQk8RmlsZQ0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMjlkYTZkMThiZjQ5YWY0MDA2ZGI2YWY3ZDM1ZTRlOTI0YjYwMWM4Ny4uOWQxOWY1NTlkODM3
ZDg4NDU1ZDU1ZjYwZjM5ZTM3OWQ5NDc4YjIyZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTI0ODQsNyArMjQ4NCw3IEBACiAJCTkzRUIzNTVGMDlFMzdG
RDYwMEY0Mzc5OSAvKiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRUIzNTVFMDlFMzdGRDYwMEY0
Mzc5OSAvKiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcCAqLzsgfTsKIAkJOTNGMTk4
RTUwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUyM0QyM0MwMkRFNDM5NjAxODYzNUNBIC8qIEhU
TUxEb2N1bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTkzRjE5OEU2MDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1MRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUyM0QyM0YwMkRFNDM5NjAx
ODYzNUNBIC8qIEhUTUxFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJOTNGMTk4RUYwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxQYXJzZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjNEMjUx
MDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MUGFyc2VyLmggKi87IH07CisJCTkzRjE5OEVGMDgyNDVF
NTkwMDFFOUFCQyAvKiBIVE1MVHJlZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTIzRDI1MTAyREU0Mzk2MDE4NjM1Q0EgLyogSFRN
TFRyZWVDb25zdHJ1Y3Rvci5oICovOyB9OwogCQk5M0YxOThGMDA4MjQ1RTU5MDAxRTlBQkMgLyog
SFRNTERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNTIzRDI1MzAyREU0Mzk2MDE4NjM1Q0EgLyogSFRNTERvY3VtZW50UGFyc2Vy
LmggKi87IH07CiAJCTkzRjE5OEY2MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVzb3VyY2VEZWNv
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTIz
RDI3OTAyREU0M0Q3MDE4NjM1Q0EgLyogVGV4dFJlc291cmNlRGVjb2Rlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5OTE4MDgyNDVFNTkw
MDFFOUFCQyAvKiBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjUyM0QzMDQwMkRFNDQ3NjAxODYzNUNBIC8qIFJhbmdlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI1MTQsNyArMjUxNCw3IEBA
CiAJCTkzRjE5QTVGMDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlVmlld0ZhY3RvcnkubSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NTU1MDJERTM3
NTkwMUVBNDEyMiAvKiBXZWJDb3JlVmlld0ZhY3RvcnkubSAqLzsgfTsKIAkJOTNGMTlBOTEwODI0
NUU1OTAwMUU5QUJDIC8qIEhUTUxEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTIzRDIzQjAyREU0Mzk2MDE4NjM1Q0EgLyogSFRNTERv
Y3VtZW50LmNwcCAqLzsgfTsKIAkJOTNGMTlBOTIwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1
MjNEMjNFMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MRWxlbWVudC5jcHAgKi87IH07Ci0JCTkzRjE5
QTlCMDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1MUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjNEMjUwMDJERTQzOTYwMTg2MzVDQSAvKiBI
VE1MUGFyc2VyLmNwcCAqLzsgfTsKKwkJOTNGMTlBOUIwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxU
cmVlQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjUyM0QyNTAwMkRFNDM5NjAxODYzNUNBIC8qIEhUTUxUcmVlQ29uc3RydWN0b3Iu
Y3BwICovOyB9OwogCQk5M0YxOUE5QzA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTERvY3VtZW50UGFy
c2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1
MjNEMjUyMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MRG9jdW1lbnRQYXJzZXIuY3BwICovOyB9Owog
CQk5M0YxOUE5RDA4MjQ1RTU5MDAxRTlBQkMgLyogVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTIzRDI3ODAyREU0
M0Q3MDE4NjM1Q0EgLyogVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgKi87IH07CiAJCTkzRjE5QUI5
MDgyNDVFNTkwMDFFOUFCQyAvKiBSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNTIzRDMwMzAyREU0NDc2MDE4NjM1Q0EgLyogUmFuZ2UuY3Bw
ICovOyB9OwpAQCAtMTA2MzksOCArMTA2MzksOCBAQAogCQlGNTIzRDIzQzAyREU0Mzk2MDE4NjM1
Q0EgLyogSFRNTERvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhUTUxEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjUyM0QyM0UwMkRFNDM5NjAxODYzNUNB
IC8qIEhUTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1MjNEMjNGMDJERTQzOTYwMTg2
MzVDQSAvKiBIVE1MRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIVE1MRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJRjUyM0QyNTAwMkRFNDM5NjAxODYzNUNB
IC8qIEhUTUxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSFRNTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQlGNTIzRDI1MTAyREU0Mzk2MDE4NjM1
Q0EgLyogSFRNTFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIVE1MUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQlGNTIzRDI1MDAyREU0Mzk2MDE4NjM1Q0EgLyog
SFRNTFRyZWVDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MVHJlZUNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCUY1MjNEMjUx
MDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MVHJlZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxUcmVlQ29uc3RydWN0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
CiAJCUY1MjNEMjUyMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MRG9jdW1lbnRQYXJzZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRN
TERvY3VtZW50UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1MjNEMjUzMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MRG9j
dW1lbnRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSFRNTERvY3VtZW50UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTIzRDI3ODAyREU0M0Q3MDE4NjM1Q0Eg
LyogVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0xMzY0
MCw4ICsxMzY0MCw4IEBACiAJCQkJQTg3MUQ0NEYwQTEyN0NCQzAwQjEyQTY4IC8qIEhUTUxQYXJh
bUVsZW1lbnQuY3BwICovLAogCQkJCUE4NzFENDRFMEExMjdDQkMwMEIxMkE2OCAvKiBIVE1MUGFy
YW1FbGVtZW50LmggKi8sCiAJCQkJMUFFMkFCNzIwQTFDRTgxNTAwQjQyQjI1IC8qIEhUTUxQYXJh
bUVsZW1lbnQuaWRsICovLAotCQkJCUY1MjNEMjUwMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MUGFy
c2VyLmNwcCAqLywKLQkJCQlGNTIzRDI1MTAyREU0Mzk2MDE4NjM1Q0EgLyogSFRNTFBhcnNlci5o
ICovLAorCQkJCUY1MjNEMjUwMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MVHJlZUNvbnN0cnVjdG9y
LmNwcCAqLywKKwkJCQlGNTIzRDI1MTAyREU0Mzk2MDE4NjM1Q0EgLyogSFRNTFRyZWVDb25zdHJ1
Y3Rvci5oICovLAogCQkJCUJDNTg4QjRBMEJGQTcyM0MwMEVFNjc5RSAvKiBIVE1MUGFyc2VyRXJy
b3JDb2Rlcy5jcHAgKi8sCiAJCQkJQkM1ODhBRUYwQkZBNkNGOTAwRUU2NzlFIC8qIEhUTUxQYXJz
ZXJFcnJvckNvZGVzLmggKi8sCiAJCQkJNDQ5QjE5RjMwRkE3MkVDRTAwMTVDQTRBIC8qIEhUTUxQ
YXJzZXJRdWlya3MuaCAqLywKQEAgLTE4MDg2LDcgKzE4MDg2LDcgQEAKIAkJCQlBODEzNjlEQTA5
NzM3NEY2MDBENzQ0NjMgLyogSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEVBN0NCNTBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTFBhcmFncmFwaEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4NzFENDU4MEExMjdDQkMwMEIxMkE2OCAvKiBIVE1MUGFyYW1F
bGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk5M0YxOThFRjA4MjQ1RTU5MDAxRTlBQkMgLyog
SFRNTFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNGMTk4RUYwODI0NUU1OTAwMUU5QUJD
IC8qIEhUTUxUcmVlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTg4QUYwMEJG
QTZDRjkwMEVFNjc5RSAvKiBIVE1MUGFyc2VyRXJyb3JDb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDQ5QjE5RjUwRkE3MkVDRTAwMTVDQTRBIC8qIEhUTUxQYXJzZXJRdWlya3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4NzFENDU2MEExMjdDQkMwMEIxMkE2OCAvKiBIVE1MUGx1Z0luRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMDQxNyw3ICsyMDQxNyw3IEBACiAJCQkJOTMyN0E5NDIw
OTk2OEQxQTAwNjhBNTQ2IC8qIEhUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEVBN0NCMjBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTFBhcmFncmFwaEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MUQ0NTkwQTEyN0NCQzAwQjEyQTY4IC8qIEhUTUxQ
YXJhbUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTNGMTlBOUIwODI0NUU1OTAwMUU5
QUJDIC8qIEhUTUxQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTNGMTlBOUIwODI0NUU1
OTAwMUU5QUJDIC8qIEhUTUxUcmVlQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM1ODhCNEIwQkZBNzIzQzAwRUU2NzlFIC8qIEhUTUxQYXJzZXJFcnJvckNvZGVzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4NzFENDU3MEExMjdDQkMwMEIxMkE2OCAvKiBIVE1MUGx1Z0luRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0NDE1MjkyRjBFMUFFOEEwMDBDNEEyRDAgLyog
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBh
Y2I1N2UwZjU4YzhhYzRkMjFlODM2ZmVkZTA4Njk1YmUzZWZkNzkzLi4zNDU1Y2Y2NzI5ZDJkOTEy
ZjBmOWI3YmRhYWRmNDk4NTdhZmU4YTU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03Niw3ICs3Niw3IEBACiAj
aW5jbHVkZSAiSFRNTE1hcEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZUNvbGxlY3Rpb24u
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MUGFyc2VyLmgiCisjaW5j
bHVkZSAiSFRNTFRyZWVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MVGl0bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50
UGFyc2VyLmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oIGIvV2Vi
Q29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaAppbmRleCBjMWFmYWNjYWI5MmNiZDZhNTA2ZjMxNGYw
ZDA2YWQxYTE3YTgwNzY1Li4wMmY4NTBjOGFmMGNlNGI3ZTM3MDgxMGFlOGI5NjY5ZDBiZjFmMWM0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCisrKyBiL1dlYkNvcmUv
ZG9tL0RvY3VtZW50UGFyc2VyLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0gICAgY2xhc3MgSFRNTFBhcnNlcjsKKyAgICBjbGFzcyBIVE1MVHJlZUNvbnN0cnVj
dG9yOwogICAgIGNsYXNzIEhUTUxEb2N1bWVudFBhcnNlcjsKICAgICBjbGFzcyBTZWdtZW50ZWRT
dHJpbmc7CiAgICAgY2xhc3MgWFNTQXVkaXRvcjsKQEAgLTU4LDcgKzU4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU2NyaXB0c1dhaXRpbmdG
b3JTdHlsZXNoZWV0cygpIHt9CiAKLSAgICAgICAgdmlydHVhbCBIVE1MUGFyc2VyKiBodG1sVHJl
ZUNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgICAgICB2aXJ0dWFsIEhUTUxU
cmVlQ29uc3RydWN0b3IqIGh0bWxUcmVlQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiAwOyB9
CiAgICAgICAgIHZpcnR1YWwgSFRNTERvY3VtZW50UGFyc2VyKiBhc0hUTUxEb2N1bWVudFBhcnNl
cigpIHsgcmV0dXJuIDA7IH0KIAogICAgICAgICBYU1NBdWRpdG9yKiB4c3NBdWRpdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9YU1NBdWRpdG9yOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRN
TDVEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5j
cHAKaW5kZXggMWM2M2Q4ZDA4ZjEwYTljMzU2ODU0OTQ0OWViNTQ2ZjQ3ZGQ2ZGU5Mi4uYTM0YTdi
NmRiYmM1ZGQzZmFmMDc4ZjFiNDRmMTViZWZjOTFkMjEzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNURvY3Vt
ZW50UGFyc2VyLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIGludCBIVE1MNURvY3VtZW50UGFyc2Vy
Ojpjb2x1bW5OdW1iZXIoKSBjb25zdAogICAgIHJldHVybiBtX2xleGVyLT5jb2x1bW5OdW1iZXIo
KTsKIH0KIAotSFRNTFBhcnNlciogSFRNTDVEb2N1bWVudFBhcnNlcjo6aHRtbFRyZWVDb25zdHJ1
Y3RvcigpIGNvbnN0CitIVE1MVHJlZUNvbnN0cnVjdG9yKiBIVE1MNURvY3VtZW50UGFyc2VyOjpo
dG1sVHJlZUNvbnN0cnVjdG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmVlQ29uc3RydWN0
b3ItPmxlZ2FjeVRyZWVDb25zdHJ1Y3RvcigpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUw1RG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2Vy
LmgKaW5kZXggZjM5ZjY0YTI5ZGZiYWYxNWJiNDg2ZmIwZjY1MGJlMWQ0OGU2NjdjYS4uNDRlZDRl
MjlmZDdiNzAxNmNmYzliMDU4MmMxNGQ3YjlhODhiYjVjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVu
dFBhcnNlci5oCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEhUTUxEb2N1bWVudDsKLWNsYXNzIEhUTUxQYXJzZXI7CitjbGFzcyBIVE1MVHJlZUNvbnN0cnVj
dG9yOwogY2xhc3MgSFRNTDVMZXhlcjsKIGNsYXNzIEhUTUw1U2NyaXB0UnVubmVyOwogY2xhc3Mg
SFRNTDVUcmVlQnVpbGRlcjsKQEAgLTU4LDkgKzU4LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpOwogICAgIHZpcnR1YWwg
aW50IGxpbmVOdW1iZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBjb2x1bW5OdW1iZXIoKSBj
b25zdDsKLSAgICAvLyBGSVhNRTogSFRNTEZvcm1Db250cm9sRWxlbWVudCBhY2Nlc3NlcyB0aGUg
SFRNTFBhcnNlciB2aWEgdGhpcyBtZXRob2QuCi0gICAgLy8gUmVtb3ZlIHRoaXMgd2hlbiB0aGUg
SFRNTFBhcnNlciBpcyBubyBsb25nZXIgdXNlZC4KLSAgICB2aXJ0dWFsIEhUTUxQYXJzZXIqIGh0
bWxUcmVlQ29uc3RydWN0b3IoKSBjb25zdDsKKyAgICAvLyBGSVhNRTogSFRNTEZvcm1Db250cm9s
RWxlbWVudCBhY2Nlc3NlcyB0aGUgSFRNTFRyZWVDb25zdHJ1Y3RvciB2aWEgdGhpcyBtZXRob2Qu
CisgICAgLy8gUmVtb3ZlIHRoaXMgd2hlbiB0aGUgSFRNTFRyZWVDb25zdHJ1Y3RvciBpcyBubyBs
b25nZXIgdXNlZC4KKyAgICB2aXJ0dWFsIEhUTUxUcmVlQ29uc3RydWN0b3IqIGh0bWxUcmVlQ29u
c3RydWN0b3IoKSBjb25zdDsKIAogICAgIC8vIEhUTUw1U2NyaXB0UnVubmVySG9zdAogICAgIHZp
cnR1YWwgdm9pZCB3YXRjaEZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVC
dWlsZGVyLmNwcAppbmRleCBmMTA1YTc2MTY1YzkwYjUxYzk0ZTJkNjUyNjBkZmZmODFkZjVkMDQ4
Li43ZmM0MmU5M2Y5N2U5MDczNTNjNjlkMzk0MDRhZDU1NjdlNmFmMDZlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1
VHJlZUJ1aWxkZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiSFRNTDVUb2tlbi5o
IgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2lu
Y2x1ZGUgIkhUTUxQYXJzZXIuaCIKKyNpbmNsdWRlICJIVE1MVHJlZUNvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTQ4LDcgKzQ4LDcgQEAgSFRNTDVU
cmVlQnVpbGRlcjo6SFRNTDVUcmVlQnVpbGRlcihIVE1MNUxleGVyKiBsZXhlciwgSFRNTERvY3Vt
ZW50KiBkb2N1bWVudCwgYm8KICAgICAsIG1faXNQYXVzZWQoZmFsc2UpCiAgICAgLCBtX2luc2Vy
dGlvbk1vZGUoSW5pdGlhbCkKICAgICAsIG1fbGV4ZXIobGV4ZXIpCi0gICAgLCBtX2xlZ2FjeVRy
ZWVDb25zdHJ1Y3RvcihuZXcgSFRNTFBhcnNlcihkb2N1bWVudCwgcmVwb3J0RXJyb3JzKSkKKyAg
ICAsIG1fbGVnYWN5VHJlZUNvbnN0cnVjdG9yKG5ldyBIVE1MVHJlZUNvbnN0cnVjdG9yKGRvY3Vt
ZW50LCByZXBvcnRFcnJvcnMpKQogICAgICwgbV9sYXN0U2NyaXB0RWxlbWVudFN0YXJ0TGluZSh1
bmluaXRpYWxpemVkTGluZU51bWJlclZhbHVlKQogICAgICwgbV9zY3JpcHRUb1Byb2Nlc3NTdGFy
dExpbmUodW5pbml0aWFsaXplZExpbmVOdW1iZXJWYWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmggYi9XZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRl
ci5oCmluZGV4IDY3YzAyMjE5ZTA2MWFmYzNmMWQxODdkZjAwYzdlYzBjY2U2NDM0NGQuLjllZjdj
ODdkMDExYTFlM2UwMDliZDEwYzI5ZTVjNTY2MjVjYmE3ZWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MNVRyZWVCdWlsZGVyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxk
ZXIuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUw1TGV4ZXI7CiBj
bGFzcyBIVE1MNVRva2VuOwogY2xhc3MgSFRNTERvY3VtZW50OwotY2xhc3MgSFRNTFBhcnNlcjsK
K2NsYXNzIEhUTUxUcmVlQ29uc3RydWN0b3I7CiBjbGFzcyBOb2RlOwogCiBjbGFzcyBIVE1MNVRy
ZWVCdWlsZGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBkaXJ0eSwgcm90dGVuIGhhY2sgdG8ga2VlcCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50IGhhcHB5CiAgICAgLy8gdW50aWwgd2Ugc3RvcCB1c2luZyB0
aGUgbGVnYWN5IHBhcnNlci4gRE8gTk9UIENBTEwgVEhJUyBNRVRIT0QuCi0gICAgSFRNTFBhcnNl
ciogbGVnYWN5VHJlZUNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9sZWdhY3lUcmVlQ29u
c3RydWN0b3IuZ2V0KCk7IH0KKyAgICBIVE1MVHJlZUNvbnN0cnVjdG9yKiBsZWdhY3lUcmVlQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2xlZ2FjeVRyZWVDb25zdHJ1Y3Rvci5nZXQoKTsg
fQogCiBwcml2YXRlOgogICAgIC8vIFJlcHJlc2VudHMgSFRNTDUgImluc2VydGlvbiBtb2RlIgpA
QCAtOTAsOCArOTAsOCBAQCBwcml2YXRlOgogICAgIC8vIGZyb20gd2l0aGluIHBhcnNlciBhY3Rp
b25zLgogICAgIEhUTUw1TGV4ZXIqIG1fbGV4ZXI7CiAKLSAgICAvLyBXZSdyZSByZS11c2luZyBs
b2dpYyBmcm9tIHRoZSBvbGQgSFRNTFBhcnNlciB3aGlsZSB0aGlzIGNsYXNzIGlzIGJlaW5nIHdy
aXR0ZW4uCi0gICAgT3duUHRyPEhUTUxQYXJzZXI+IG1fbGVnYWN5VHJlZUNvbnN0cnVjdG9yOwor
ICAgIC8vIFdlJ3JlIHJlLXVzaW5nIGxvZ2ljIGZyb20gdGhlIG9sZCBIVE1MVHJlZUNvbnN0cnVj
dG9yIHdoaWxlIHRoaXMgY2xhc3MgaXMgYmVpbmcgd3JpdHRlbi4KKyAgICBPd25QdHI8SFRNTFRy
ZWVDb25zdHJ1Y3Rvcj4gbV9sZWdhY3lUcmVlQ29uc3RydWN0b3I7CiAKICAgICAvLyBUaGVzZSBt
ZW1iZXJzIGFyZSBpbnRlbnRpb25hbGx5IGR1cGxpY2F0ZWQgYXMgdGhlIGZpcnN0IHNldCBpcyBh
IGhhY2sKICAgICAvLyBvbiB0b3Agb2YgdGhlIGxlZ2FjeSBwYXJzZXIgd2hpY2ggd2lsbCBldmVu
dHVhbGx5IGJlIHJlbW92ZWQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDlj
OTNkOTg2N2FkMjA5ZWYwNjkxZjE1MTAyMzQ4OWJhZWI1NzBhNjkuLmZhMzc4MTdiMmU2Zjk0MTMz
ZDZiNTZhMWNkODQ2ODJlOTAxZTZiMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MUGFyc2Vy
LmgiCisjaW5jbHVkZSAiSFRNTFRyZWVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkhUTUxTY3Jp
cHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkltYWdlTG9hZGVyLmgiCkBAIC0xNjAsNyArMTYwLDcgQEAgSFRNTERvY3VtZW50UGFyc2Vy
OjpIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiBkb2MsIGJvb2wgcmVwb3J0RXJyb3Jz
KQogICAgICwgbV90aW1lcih0aGlzLCAmSFRNTERvY3VtZW50UGFyc2VyOjp0aW1lckZpcmVkKQog
ICAgICwgbV9leHRlcm5hbFNjcmlwdHNUaW1lcih0aGlzLCAmSFRNTERvY3VtZW50UGFyc2VyOjpl
eGVjdXRlRXh0ZXJuYWxTY3JpcHRzVGltZXJGaXJlZCkKICAgICAsIG1fZG9jKGRvYykKLSAgICAs
IG1fdHJlZUNvbnN0cnVjdG9yKG5ldyBIVE1MUGFyc2VyKGRvYywgcmVwb3J0RXJyb3JzKSkKKyAg
ICAsIG1fdHJlZUNvbnN0cnVjdG9yKG5ldyBIVE1MVHJlZUNvbnN0cnVjdG9yKGRvYywgcmVwb3J0
RXJyb3JzKSkKICAgICAsIG1faW5Xcml0ZShmYWxzZSkKICAgICAsIG1fZnJhZ21lbnQoZmFsc2Up
CiAgICAgLCBtX3NjcmlwdGluZ1Blcm1pc3Npb24oRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKQpA
QCAtMjAwLDcgKzIwMCw3IEBAIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2Vy
KERvY3VtZW50RnJhZ21lbnQqIGZyYWcsIEZyYWdtZW50U2NyaXB0aW5nCiAgICAgLCBtX3RpbWVy
KHRoaXMsICZIVE1MRG9jdW1lbnRQYXJzZXI6OnRpbWVyRmlyZWQpCiAgICAgLCBtX2V4dGVybmFs
U2NyaXB0c1RpbWVyKHRoaXMsICZIVE1MRG9jdW1lbnRQYXJzZXI6OmV4ZWN1dGVFeHRlcm5hbFNj
cmlwdHNUaW1lckZpcmVkKQogICAgICwgbV9kb2MoZnJhZy0+ZG9jdW1lbnQoKSkKLSAgICAsIG1f
dHJlZUNvbnN0cnVjdG9yKG5ldyBIVE1MUGFyc2VyKGZyYWcsIHNjcmlwdGluZ1Blcm1pc3Npb24p
KQorICAgICwgbV90cmVlQ29uc3RydWN0b3IobmV3IEhUTUxUcmVlQ29uc3RydWN0b3IoZnJhZywg
c2NyaXB0aW5nUGVybWlzc2lvbikpCiAgICAgLCBtX2luV3JpdGUoZmFsc2UpCiAgICAgLCBtX2Zy
YWdtZW50KHRydWUpCiAgICAgLCBtX3NjcmlwdGluZ1Blcm1pc3Npb24oc2NyaXB0aW5nUGVybWlz
c2lvbikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1dl
YkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCBjZGZjODhhMjNlYjY2ZjQ1NTE1
MTkyYWU2OTM4NTY0MmI5MWRkZGQyLi5iMjRhMzdjMzJiMDdiZTM4ODE0YzkzYjMzYTVhNzRhMGFk
MzA4MzlmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmgKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC00NCw3ICs0NCw3IEBAIGNs
YXNzIEhUTUxEb2N1bWVudDsKIGNsYXNzIEhUTUxTY3JpcHRFbGVtZW50OwogY2xhc3MgSFRNTFZp
ZXdTb3VyY2VEb2N1bWVudDsKIGNsYXNzIEZyYW1lVmlldzsKLWNsYXNzIEhUTUxQYXJzZXI7Citj
bGFzcyBIVE1MVHJlZUNvbnN0cnVjdG9yOwogY2xhc3MgTm9kZTsKIGNsYXNzIFByZWxvYWRTY2Fu
bmVyOwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKQEAgLTE2Myw3ICsxNjMsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMo
KTsKIAotICAgIHZpcnR1YWwgSFRNTFBhcnNlciogaHRtbFRyZWVDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fdHJlZUNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgdmlydHVhbCBIVE1MVHJl
ZUNvbnN0cnVjdG9yKiBodG1sVHJlZUNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV90cmVl
Q29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIEhUTUxEb2N1bWVudFBhcnNlciogYXNI
VE1MRG9jdW1lbnRQYXJzZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CkBAIC00MzEs
NyArNDMxLDcgQEAgcHJpdmF0ZToKIAogICAgIFNlZ21lbnRlZFN0cmluZyBtX3NyYzsKICAgICBE
b2N1bWVudCogbV9kb2M7Ci0gICAgT3duUHRyPEhUTUxQYXJzZXI+IG1fdHJlZUNvbnN0cnVjdG9y
OworICAgIE93blB0cjxIVE1MVHJlZUNvbnN0cnVjdG9yPiBtX3RyZWVDb25zdHJ1Y3RvcjsKICAg
ICBib29sIG1faW5Xcml0ZTsKICAgICBib29sIG1fZnJhZ21lbnQ7CiAgICAgRnJhZ21lbnRTY3Jp
cHRpbmdQZXJtaXNzaW9uIG1fc2NyaXB0aW5nUGVybWlzc2lvbjsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA2ZTIxZGRlYjBkZjUwYmYzNWM1NzRkMGE0NjU4MDFk
MjFlYmYyOTFmLi5jNWU1NjQ1OTFhNjBmYzNkYTc1Y2QyOThkOTUxYTVmMzQ5YzU5ZDc4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAj
aW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxQYXJzZXIuaCIKKyNpbmNs
dWRlICJIVE1MVHJlZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2Vy
LmgiCiAjaW5jbHVkZSAiTGFiZWxzTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0x
NzgsNyArMTc4LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZW1vdmVkRnJvbVRy
ZWUoYm9vbCBkZWVwKQogewogICAgIC8vIElmIHRoZSBmb3JtIGFuZCBlbGVtZW50IGFyZSBib3Ro
IGluIHRoZSBzYW1lIHRyZWUsIHByZXNlcnZlIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBmb3JtLgog
ICAgIC8vIE90aGVyd2lzZSwgbnVsbCBvdXQgb3VyIGZvcm0gYW5kIHJlbW92ZSBvdXJzZWx2ZXMg
ZnJvbSB0aGUgZm9ybSdzIGxpc3Qgb2YgZWxlbWVudHMuCi0gICAgSFRNTFBhcnNlciogdHJlZUNv
bnN0cnVjdG9yID0gMDsKKyAgICBIVE1MVHJlZUNvbnN0cnVjdG9yKiB0cmVlQ29uc3RydWN0b3Ig
PSAwOwogICAgIGlmIChEb2N1bWVudFBhcnNlciogcGFyc2VyID0gZG9jdW1lbnQoKS0+cGFyc2Vy
KCkpCiAgICAgICAgIHRyZWVDb25zdHJ1Y3RvciA9IHBhcnNlci0+aHRtbFRyZWVDb25zdHJ1Y3Rv
cigpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMWM2OTM0YjYwYmE1MmY3ZjFl
NzdmZGNhYjdlNDY4M2UxMTAxODY5MS4uNjllMzg5OWJjZGEwMWYyY2I3NmU3NGVkZjE2YTAyMGI5
NDU0ZTY2ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNDcsNyArNDcsNyBAQAog
I2luY2x1ZGUgIkhUTUxJbWFnZUxvYWRlci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTFBhcnNlci5oIgorI2lu
Y2x1ZGUgIkhUTUxUcmVlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50Lmgi
CiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcCBiL1dlYkNvcmUv
aHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAppbmRleCBmMzFhODk5YmFlMzI5MzMyNjIwMTQ2NTg5
NDRkNTZmMmVkNDRiNTU1Li5mYmQxOGU1NDM5MzJiYWI3MjA2NWRlNjNjMGZkODc4MTVlOGVlNTcw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVk
ZSAiRm9ybURhdGFMaXN0LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTFBhcnNlci5oIgorI2luY2x1ZGUgIkhUTUxU
cmVlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJNZXRlci5oIgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVz
c0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCmluZGV4
IGY3ZTg2ZjNhOWFmZmVjZWRlYmI5M2I5MzUzNTBkYWI4NTJhZWE2YzUuLmY2ZWE0NWZjZWU0MTY1
YjM0OTk1MzNjNzAxZTI4NDEzMjBlYjY0NWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
UHJvZ3Jlc3NFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVu
dC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNs
dWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRl
ICJIVE1MUGFyc2VyLmgiCisjaW5jbHVkZSAiSFRNTFRyZWVDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIlJlbmRlclByb2dyZXNzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRN
TFRyZWVDb25zdHJ1Y3Rvci5jcHAKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gV2Vi
Q29yZS9odG1sL0hUTUxQYXJzZXIuY3BwCnJlbmFtZSB0byBXZWJDb3JlL2h0bWwvSFRNTFRyZWVD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggMDYyYzY5NDQ0MTFhMzBlNjliOGQwYmQ4YjkwODk5YmMwYzIw
MDIwNS4uOTZjMGYyYTA5NGNlYzU2ZDY5NDk3MDkyNTU5MTEwNzExMTgzNTk5MiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVHJl
ZUNvbnN0cnVjdG9yLmNwcApAQCAtMjMsNyArMjMsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkhUTUxQYXJzZXIuaCIKKyNpbmNsdWRlICJIVE1MVHJlZUNvbnN0cnVj
dG9yLmgiCiAKICNpbmNsdWRlICJDaGFyYWN0ZXJOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdHJ1Y3QgSFRNTFN0YWNrRWxlbSA6IE5v
bmNvcHlhYmxlIHsKICAqCiAgKi8KIAotSFRNTFBhcnNlcjo6SFRNTFBhcnNlcihIVE1MRG9jdW1l
bnQqIGRvYywgYm9vbCByZXBvcnRFcnJvcnMpCitIVE1MVHJlZUNvbnN0cnVjdG9yOjpIVE1MVHJl
ZUNvbnN0cnVjdG9yKEhUTUxEb2N1bWVudCogZG9jLCBib29sIHJlcG9ydEVycm9ycykKICAgICA6
IG1fZG9jdW1lbnQoZG9jKQogICAgICwgbV9jdXJyZW50KGRvYykKICAgICAsIG1fZGlkUmVmQ3Vy
cmVudChmYWxzZSkKQEAgLTE2MCw3ICsxNjAsNyBAQCBIVE1MUGFyc2VyOjpIVE1MUGFyc2VyKEhU
TUxEb2N1bWVudCogZG9jLCBib29sIHJlcG9ydEVycm9ycykKIHsKIH0KIAotSFRNTFBhcnNlcjo6
SFRNTFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiBmcmFnLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKK0hUTUxUcmVlQ29uc3RydWN0b3I6OkhUTUxUcmVl
Q29uc3RydWN0b3IoRG9jdW1lbnRGcmFnbWVudCogZnJhZywgRnJhZ21lbnRTY3JpcHRpbmdQZXJt
aXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiAgICAgOiBtX2RvY3VtZW50KGZyYWctPmRvY3Vt
ZW50KCkpCiAgICAgLCBtX2N1cnJlbnQoZnJhZykKICAgICAsIG1fZGlkUmVmQ3VycmVudCh0cnVl
KQpAQCAtMTgyLDE0ICsxODIsMTQgQEAgSFRNTFBhcnNlcjo6SFRNTFBhcnNlcihEb2N1bWVudEZy
YWdtZW50KiBmcmFnLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXAKICAgICAgICAg
ZnJhZy0+cmVmKCk7CiB9CiAKLUhUTUxQYXJzZXI6On5IVE1MUGFyc2VyKCkKK0hUTUxUcmVlQ29u
c3RydWN0b3I6On5IVE1MVHJlZUNvbnN0cnVjdG9yKCkKIHsKICAgICBmcmVlQmxvY2soKTsKICAg
ICBpZiAobV9kaWRSZWZDdXJyZW50KQogICAgICAgICBtX2N1cnJlbnQtPmRlcmVmKCk7CiB9CiAK
LXZvaWQgSFRNTFBhcnNlcjo6cmVzZXQoKQordm9pZCBIVE1MVHJlZUNvbnN0cnVjdG9yOjpyZXNl
dCgpCiB7CiAgICAgQVNTRVJUKCFtX2lzUGFyc2luZ0ZyYWdtZW50KTsKIApAQCAtMjE0LDcgKzIx
NCw3IEBAIHZvaWQgSFRNTFBhcnNlcjo6cmVzZXQoKQogICAgICAgICBtX3BhcnNlclF1aXJrcy0+
cmVzZXQoKTsKIH0KIAotdm9pZCBIVE1MUGFyc2VyOjpzZXRDdXJyZW50KE5vZGUqIG5ld0N1cnJl
bnQpIAordm9pZCBIVE1MVHJlZUNvbnN0cnVjdG9yOjpzZXRDdXJyZW50KE5vZGUqIG5ld0N1cnJl
bnQpIAogewogICAgIGJvb2wgZGlkUmVmTmV3Q3VycmVudCA9IG5ld0N1cnJlbnQgJiYgbmV3Q3Vy
cmVudCAhPSBtX2RvY3VtZW50OwogICAgIGlmIChkaWRSZWZOZXdDdXJyZW50KSAKQEAgLTIzMCw3
ICsyMzAsNyBAQCBpbmxpbmUgc3RhdGljIGludCB0YWdQcmlvcml0eU9mTm9kZShOb2RlKiBuKQog
ICAgIHJldHVybiBuLT5pc0hUTUxFbGVtZW50KCkgPyBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+
KG4pLT50YWdQcmlvcml0eSgpIDogMDsKIH0KIAotaW5saW5lIHZvaWQgSFRNTFBhcnNlcjo6bGlt
aXREZXB0aChpbnQgdGFnUHJpb3JpdHkpCitpbmxpbmUgdm9pZCBIVE1MVHJlZUNvbnN0cnVjdG9y
OjpsaW1pdERlcHRoKGludCB0YWdQcmlvcml0eSkKIHsKICAgICB3aGlsZSAobV90cmVlRGVwdGgg
Pj0gbWF4RE9NVHJlZURlcHRoKQogICAgICAgICBwb3BCbG9jayhtX2Jsb2NrU3RhY2stPnRhZ05h
bWUpOwpAQCAtMjQwLDEzICsyNDAsMTMgQEAgaW5saW5lIHZvaWQgSFRNTFBhcnNlcjo6bGltaXRE
ZXB0aChpbnQgdGFnUHJpb3JpdHkpCiAgICAgfQogfQogCi1pbmxpbmUgYm9vbCBIVE1MUGFyc2Vy
OjppbnNlcnROb2RlQWZ0ZXJMaW1pdERlcHRoKE5vZGUqIG4sIGJvb2wgZmxhdCkKK2lubGluZSBi
b29sIEhUTUxUcmVlQ29uc3RydWN0b3I6Omluc2VydE5vZGVBZnRlckxpbWl0RGVwdGgoTm9kZSog
biwgYm9vbCBmbGF0KQogewogICAgIGxpbWl0RGVwdGgodGFnUHJpb3JpdHlPZk5vZGUobikpOwog
ICAgIHJldHVybiBpbnNlcnROb2RlKG4sIGZsYXQpOwogfQogCi1QYXNzUmVmUHRyPE5vZGU+IEhU
TUxQYXJzZXI6OnBhcnNlVG9rZW4oVG9rZW4qIHQpCitQYXNzUmVmUHRyPE5vZGU+IEhUTUxUcmVl
Q29uc3RydWN0b3I6OnBhcnNlVG9rZW4oVG9rZW4qIHQpCiB7CiAgICAgaWYgKCFtX3NraXBNb2Rl
VGFnLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmICghdC0+YmVnaW5UYWcgJiYgdC0+dGFnTmFtZSA9
PSBtX3NraXBNb2RlVGFnKQpAQCAtMzM3LDcgKzMzNyw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gSFRN
TFBhcnNlcjo6cGFyc2VUb2tlbihUb2tlbiogdCkKICAgICByZXR1cm4gbjsKIH0KIAotdm9pZCBI
VE1MUGFyc2VyOjpwYXJzZURvY3R5cGVUb2tlbihEb2N0eXBlVG9rZW4qIHQpCit2b2lkIEhUTUxU
cmVlQ29uc3RydWN0b3I6OnBhcnNlRG9jdHlwZVRva2VuKERvY3R5cGVUb2tlbiogdCkKIHsKICAg
ICAvLyBJZ25vcmUgYW55IGRvY3R5cGUgYWZ0ZXIgdGhlIGZpcnN0LiAgSWdub3JlIGRvY3R5cGVz
IGluIGZyYWdtZW50cy4KICAgICBpZiAobV9kb2N1bWVudC0+ZG9jdHlwZSgpIHx8IG1faXNQYXJz
aW5nRnJhZ21lbnQgfHwgbV9jdXJyZW50ICE9IG1fZG9jdW1lbnQpCkBAIC0zNzIsNyArMzcyLDcg
QEAgc3RhdGljIGJvb2wgaXNTY29waW5nVGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkK
ICAgICAgICAgfHwgdGFnTmFtZSA9PSBvYmplY3RUYWcgfHwgdGFnTmFtZSA9PSB0YWJsZVRhZyB8
fCB0YWdOYW1lID09IGh0bWxUYWc7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6aW5zZXJ0Tm9kZShO
b2RlKiBuLCBib29sIGZsYXQpCitib29sIEhUTUxUcmVlQ29uc3RydWN0b3I6Omluc2VydE5vZGUo
Tm9kZSogbiwgYm9vbCBmbGF0KQogewogICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0Tm9kZShuKTsK
IApAQCAtNDI5LDcgKzQyOSw3IEBAIGJvb2wgSFRNTFBhcnNlcjo6aW5zZXJ0Tm9kZShOb2RlKiBu
LCBib29sIGZsYXQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6aGFu
ZGxlRXJyb3IoTm9kZSogbiwgYm9vbCBmbGF0LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFt
ZSwgaW50IHRhZ1ByaW9yaXR5KQorYm9vbCBIVE1MVHJlZUNvbnN0cnVjdG9yOjpoYW5kbGVFcnJv
cihOb2RlKiBuLCBib29sIGZsYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBpbnQg
dGFnUHJpb3JpdHkpCiB7CiAgICAgLy8gRXJyb3IgaGFuZGxpbmcgY29kZS4gIFRoaXMgaXMganVz
dCBhZCBob2MgaGFuZGxpbmcgb2Ygc3BlY2lmaWMgcGFyZW50L2NoaWxkIGNvbWJpbmF0aW9ucy4K
ICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKQEAgLTcyNCwyMiArNzI0LDIyIEBAIGJvb2wgSFRN
TFBhcnNlcjo6aGFuZGxlRXJyb3IoTm9kZSogbiwgYm9vbCBmbGF0LCBjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsTmFtZSwKICAgICByZXR1cm4gaW5zZXJ0Tm9kZShuKTsKIH0KIAotdHlwZWRlZiBi
b29sIChIVE1MUGFyc2VyOjoqQ3JlYXRlRXJyb3JDaGVja0Z1bmMpKFRva2VuKiB0LCBSZWZQdHI8
Tm9kZT4mKTsKK3R5cGVkZWYgYm9vbCAoSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6KkNyZWF0ZUVycm9y
Q2hlY2tGdW5jKShUb2tlbiogdCwgUmVmUHRyPE5vZGU+Jik7CiB0eXBlZGVmIEhhc2hNYXA8QXRv
bWljU3RyaW5nSW1wbCosIENyZWF0ZUVycm9yQ2hlY2tGdW5jPiBGdW5jdGlvbk1hcDsKIAotYm9v
bCBIVE1MUGFyc2VyOjp0ZXh0Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+
JiByZXN1bHQpCitib29sIEhUTUxUcmVlQ29uc3RydWN0b3I6OnRleHRDcmVhdGVFcnJvckNoZWNr
KFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mIHJlc3VsdCkKIHsKICAgICByZXN1bHQgPSBUZXh0Ojpj
cmVhdGUobV9kb2N1bWVudCwgdC0+dGV4dC5nZXQoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIEhUTUxQYXJzZXI6OmNvbW1lbnRDcmVhdGVFcnJvckNoZWNrKFRva2VuKiB0LCBSZWZQ
dHI8Tm9kZT4mIHJlc3VsdCkKK2Jvb2wgSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6Y29tbWVudENyZWF0
ZUVycm9yQ2hlY2soVG9rZW4qIHQsIFJlZlB0cjxOb2RlPiYgcmVzdWx0KQogewogICAgIHJlc3Vs
dCA9IENvbW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50LCB0LT50ZXh0LmdldCgpKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6aGVhZENyZWF0ZUVycm9yQ2hlY2soVG9r
ZW4qLCBSZWZQdHI8Tm9kZT4mIHJlc3VsdCkKK2Jvb2wgSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6aGVh
ZENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mIHJlc3VsdCkKIHsKICAgICBp
ZiAoIW1faGVhZCB8fCBtX2N1cnJlbnQtPmxvY2FsTmFtZSgpID09IGh0bWxUYWcpIHsKICAgICAg
ICAgbV9oZWFkID0gSFRNTEhlYWRFbGVtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CkBAIC03NDks
NyArNzQ5LDcgQEAgYm9vbCBIVE1MUGFyc2VyOjpoZWFkQ3JlYXRlRXJyb3JDaGVjayhUb2tlbios
IFJlZlB0cjxOb2RlPiYgcmVzdWx0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBIVE1M
UGFyc2VyOjpib2R5Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCitib29s
IEhUTUxUcmVlQ29uc3RydWN0b3I6OmJvZHlDcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRy
PE5vZGU+JikKIHsKICAgICAvLyBib2R5IG5vIGxvbmdlciBhbGxvd2VkIGlmIHdlIGhhdmUgYSBm
cmFtZXNldAogICAgIGlmIChtX2hhdmVGcmFtZVNldCkKQEAgLTc2NSw3ICs3NjUsNyBAQCBib29s
IEhUTUxQYXJzZXI6OmJvZHlDcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JikK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjpmcmFtZXNldENyZWF0ZUVy
cm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQorYm9vbCBIVE1MVHJlZUNvbnN0cnVjdG9y
OjpmcmFtZXNldENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQogewogICAg
IHBvcEJsb2NrKGhlYWRUYWcpOwogICAgIGlmIChtX2luQm9keSAmJiAhbV9oYXZlRnJhbWVTZXQg
JiYgIW1faGF2ZUNvbnRlbnQpIHsKQEAgLTc4NSw3ICs3ODUsNyBAQCBib29sIEhUTUxQYXJzZXI6
OmZyYW1lc2V0Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6Zm9ybUNyZWF0ZUVycm9yQ2hlY2soVG9r
ZW4qIHQsIFJlZlB0cjxOb2RlPiYgcmVzdWx0KQorYm9vbCBIVE1MVHJlZUNvbnN0cnVjdG9yOjpm
b3JtQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+JiByZXN1bHQpCiB7CiAg
ICAgLy8gT25seSBjcmVhdGUgYSBuZXcgZm9ybSBpZiB3ZSdyZSBub3QgYWxyZWFkeSBpbnNpZGUg
b25lLgogICAgIC8vIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIG90aGVyIGJyb3dzZXJzJyBiZWhh
dmlvci4KQEAgLTc5Nyw3ICs3OTcsNyBAQCBib29sIEhUTUxQYXJzZXI6OmZvcm1DcmVhdGVFcnJv
ckNoZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mIHJlc3VsdCkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6aXNpbmRleENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qIHQs
IFJlZlB0cjxOb2RlPiYgcmVzdWx0KQorYm9vbCBIVE1MVHJlZUNvbnN0cnVjdG9yOjppc2luZGV4
Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+JiByZXN1bHQpCiB7CiAgICAg
UmVmUHRyPE5vZGU+IG4gPSBoYW5kbGVJc2luZGV4KHQpOwogICAgIGlmICghbV9pbkJvZHkpCkBA
IC04MDksMTIgKzgwOSwxMiBAQCBib29sIEhUTUxQYXJzZXI6OmlzaW5kZXhDcmVhdGVFcnJvckNo
ZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mIHJlc3VsdCkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgSFRNTFBhcnNlcjo6c2VsZWN0Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0
cjxOb2RlPiYpCitib29sIEhUTUxUcmVlQ29uc3RydWN0b3I6OnNlbGVjdENyZWF0ZUVycm9yQ2hl
Y2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEhUTUxQYXJzZXI6OmRkQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+JiBy
ZXN1bHQpCitib29sIEhUTUxUcmVlQ29uc3RydWN0b3I6OmRkQ3JlYXRlRXJyb3JDaGVjayhUb2tl
biogdCwgUmVmUHRyPE5vZGU+JiByZXN1bHQpCiB7CiAgICAgcENsb3NlckNyZWF0ZUVycm9yQ2hl
Y2sodCwgcmVzdWx0KTsKICAgICBwb3BCbG9jayhkdFRhZyk7CkBAIC04MjIsNyArODIyLDcgQEAg
Ym9vbCBIVE1MUGFyc2VyOjpkZENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qIHQsIFJlZlB0cjxOb2Rl
PiYgcmVzdWx0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxQYXJzZXI6OmR0Q3Jl
YXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+JiByZXN1bHQpCitib29sIEhUTUxU
cmVlQ29uc3RydWN0b3I6OmR0Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+
JiByZXN1bHQpCiB7CiAgICAgcENsb3NlckNyZWF0ZUVycm9yQ2hlY2sodCwgcmVzdWx0KTsKICAg
ICBwb3BCbG9jayhkZFRhZyk7CkBAIC04MzAsNDYgKzgzMCw0NiBAQCBib29sIEhUTUxQYXJzZXI6
OmR0Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+JiByZXN1bHQpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6cnBDcmVhdGVFcnJvckNoZWNrKFRv
a2VuKiwgUmVmUHRyPE5vZGU+JikKK2Jvb2wgSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cnBDcmVhdGVF
cnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JikKIHsKICAgICBwb3BCbG9jayhycFRhZyk7
CiAgICAgcG9wQmxvY2socnRUYWcpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxQ
YXJzZXI6OnJ0Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCitib29sIEhU
TUxUcmVlQ29uc3RydWN0b3I6OnJ0Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2Rl
PiYpCiB7CiAgICAgcG9wQmxvY2socnBUYWcpOwogICAgIHBvcEJsb2NrKHJ0VGFnKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjpuZXN0ZWRDcmVhdGVFcnJvckNoZWNr
KFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mKQorYm9vbCBIVE1MVHJlZUNvbnN0cnVjdG9yOjpuZXN0
ZWRDcmVhdGVFcnJvckNoZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mKQogewogICAgIHBvcEJs
b2NrKHQtPnRhZ05hbWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxQYXJzZXI6
Om5lc3RlZFBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mIHJl
c3VsdCkKK2Jvb2wgSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6bmVzdGVkUENsb3NlckNyZWF0ZUVycm9y
Q2hlY2soVG9rZW4qIHQsIFJlZlB0cjxOb2RlPiYgcmVzdWx0KQogewogICAgIHBDbG9zZXJDcmVh
dGVFcnJvckNoZWNrKHQsIHJlc3VsdCk7CiAgICAgcG9wQmxvY2sodC0+dGFnTmFtZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6bmVzdGVkU3R5bGVDcmVhdGVFcnJv
ckNoZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mKQorYm9vbCBIVE1MVHJlZUNvbnN0cnVjdG9y
OjpuZXN0ZWRTdHlsZUNyZWF0ZUVycm9yQ2hlY2soVG9rZW4qIHQsIFJlZlB0cjxOb2RlPiYpCiB7
CiAgICAgcmV0dXJuIGFsbG93TmVzdGVkUmVkdW5kYW50VGFnKHQtPnRhZ05hbWUpOwogfQogCi1i
b29sIEhUTUxQYXJzZXI6OnRhYmxlQ2VsbENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8
Tm9kZT4mKQorYm9vbCBIVE1MVHJlZUNvbnN0cnVjdG9yOjp0YWJsZUNlbGxDcmVhdGVFcnJvckNo
ZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JikKIHsKICAgICBwb3BCbG9jayh0ZFRhZyk7CiAgICAg
cG9wQmxvY2sodGhUYWcpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxQYXJzZXI6
OnRhYmxlU2VjdGlvbkNyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQorYm9v
bCBIVE1MVHJlZUNvbnN0cnVjdG9yOjp0YWJsZVNlY3Rpb25DcmVhdGVFcnJvckNoZWNrKFRva2Vu
KiwgUmVmUHRyPE5vZGU+JikKIHsKICAgICBwb3BCbG9jayh0aGVhZFRhZyk7CiAgICAgcG9wQmxv
Y2sodGJvZHlUYWcpOwpAQCAtODc3LDE5ICs4NzcsMTkgQEAgYm9vbCBIVE1MUGFyc2VyOjp0YWJs
ZVNlY3Rpb25DcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JikKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjpub2VtYmVkQ3JlYXRlRXJyb3JDaGVjayhU
b2tlbiosIFJlZlB0cjxOb2RlPiYpCitib29sIEhUTUxUcmVlQ29uc3RydWN0b3I6Om5vZW1iZWRD
cmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JikKIHsKICAgICBzZXRTa2lwTW9k
ZShub2VtYmVkVGFnKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjpu
b2ZyYW1lc0NyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQorYm9vbCBIVE1M
VHJlZUNvbnN0cnVjdG9yOjpub2ZyYW1lc0NyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8
Tm9kZT4mKQogewogICAgIHNldFNraXBNb2RlKG5vZnJhbWVzVGFnKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjpub3NjcmlwdENyZWF0ZUVycm9yQ2hlY2soVG9rZW4q
LCBSZWZQdHI8Tm9kZT4mKQorYm9vbCBIVE1MVHJlZUNvbnN0cnVjdG9yOjpub3NjcmlwdENyZWF0
ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQogewogICAgIGlmICghbV9pc1BhcnNp
bmdGcmFnbWVudCkgewogICAgICAgICBGcmFtZSogZnJhbWUgPSBtX2RvY3VtZW50LT5mcmFtZSgp
OwpAQCAtODk5LDE0ICs4OTksMTQgQEAgYm9vbCBIVE1MUGFyc2VyOjpub3NjcmlwdENyZWF0ZUVy
cm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEhUTUxQYXJzZXI6OnBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5v
ZGU+JikKK2Jvb2wgSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cENsb3NlckNyZWF0ZUVycm9yQ2hlY2so
VG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQogewogICAgIGlmIChoYXNQRWxlbWVudEluU2NvcGUoKSkK
ICAgICAgICAgcG9wQmxvY2socFRhZyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSFRN
TFBhcnNlcjo6cENsb3NlclN0cmljdENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9k
ZT4mKQorYm9vbCBIVE1MVHJlZUNvbnN0cnVjdG9yOjpwQ2xvc2VyU3RyaWN0Q3JlYXRlRXJyb3JD
aGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCiB7CiAgICAgaWYgKG1fZG9jdW1lbnQtPmluQ29t
cGF0TW9kZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTkxNSw3ICs5MTUsNyBAQCBib29s
IEhUTUxQYXJzZXI6OnBDbG9zZXJTdHJpY3RDcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRy
PE5vZGU+JikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjptYXBDcmVh
dGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JiByZXN1bHQpCitib29sIEhUTUxUcmVl
Q29uc3RydWN0b3I6Om1hcENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mIHJl
c3VsdCkKIHsKICAgICBtX2N1cnJlbnRNYXBFbGVtZW50ID0gSFRNTE1hcEVsZW1lbnQ6OmNyZWF0
ZShtX2RvY3VtZW50KTsKICAgICByZXN1bHQgPSBtX2N1cnJlbnRNYXBFbGVtZW50OwpAQCAtOTM2
LDQ4ICs5MzYsNDggQEAgc3RhdGljIHZvaWQgbWFwVGFnc1RvRnVuYyhGdW5jdGlvbk1hcCYgbWFw
LCBRdWFsaWZpZWROYW1lICgmbmFtZXMpW0FycmF5U2l6ZV0sIEMKICAgICB9CiB9CiAKLVBhc3NS
ZWZQdHI8Tm9kZT4gSFRNTFBhcnNlcjo6Z2V0Tm9kZShUb2tlbiogdCkKK1Bhc3NSZWZQdHI8Tm9k
ZT4gSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6Z2V0Tm9kZShUb2tlbiogdCkKIHsKICAgICAvLyBJbml0
IG91ciBlcnJvciBoYW5kbGluZyB0YWJsZS4KICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZ1bmN0
aW9uTWFwLCBnRnVuY3Rpb25NYXAsICgpKTsKICAgICBpZiAoZ0Z1bmN0aW9uTWFwLmlzRW1wdHko
KSkgewogICAgICAgICBRdWFsaWZpZWROYW1lIG5lc3RlZENyZWF0ZUVycm9yVGFnc1tdID0geyBh
VGFnLCBidXR0b25UYWcsIG5vYnJUYWcsIHRyVGFnIH07Ci0gICAgICAgIG1hcFRhZ3NUb0Z1bmMo
Z0Z1bmN0aW9uTWFwLCBuZXN0ZWRDcmVhdGVFcnJvclRhZ3MsICZIVE1MUGFyc2VyOjpuZXN0ZWRD
cmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnc1RvRnVuYyhnRnVuY3Rpb25NYXAsIG5l
c3RlZENyZWF0ZUVycm9yVGFncywgJkhUTUxUcmVlQ29uc3RydWN0b3I6Om5lc3RlZENyZWF0ZUVy
cm9yQ2hlY2spOwogCiAgICAgICAgIFF1YWxpZmllZE5hbWUgbmVzdGVkU3R5bGVDcmVhdGVFcnJv
clRhZ3NbXSA9IHsgYlRhZywgYmlnVGFnLCBpVGFnLCBzVGFnLCBzbWFsbFRhZywgc3RyaWtlVGFn
LCB0dFRhZywgdVRhZyB9OwotICAgICAgICBtYXBUYWdzVG9GdW5jKGdGdW5jdGlvbk1hcCwgbmVz
dGVkU3R5bGVDcmVhdGVFcnJvclRhZ3MsICZIVE1MUGFyc2VyOjpuZXN0ZWRTdHlsZUNyZWF0ZUVy
cm9yQ2hlY2spOworICAgICAgICBtYXBUYWdzVG9GdW5jKGdGdW5jdGlvbk1hcCwgbmVzdGVkU3R5
bGVDcmVhdGVFcnJvclRhZ3MsICZIVE1MVHJlZUNvbnN0cnVjdG9yOjpuZXN0ZWRTdHlsZUNyZWF0
ZUVycm9yQ2hlY2spOwogCiAgICAgICAgIFF1YWxpZmllZE5hbWUgcENsb3NlckNyZWF0ZUVycm9y
VGFnc1tdID0geyBhZGRyZXNzVGFnLCBhcnRpY2xlVGFnLAogICAgICAgICAgICAgYXNpZGVUYWcs
IGJsb2NrcXVvdGVUYWcsIGNlbnRlclRhZywgZGlyVGFnLCBkaXZUYWcsIGRsVGFnLAogICAgICAg
ICAgICAgZmllbGRzZXRUYWcsIGZvb3RlclRhZywgaDFUYWcsIGgyVGFnLCBoM1RhZywgaDRUYWcs
IGg1VGFnLCBoNlRhZywKICAgICAgICAgICAgIGhlYWRlclRhZywgaGdyb3VwVGFnLCBoclRhZywg
bGlzdGluZ1RhZywgbWVudVRhZywgbmF2VGFnLCBvbFRhZywKICAgICAgICAgICAgIHBUYWcsIHBs
YWludGV4dFRhZywgcHJlVGFnLCBzZWN0aW9uVGFnLCB1bFRhZyB9OwotICAgICAgICBtYXBUYWdz
VG9GdW5jKGdGdW5jdGlvbk1hcCwgcENsb3NlckNyZWF0ZUVycm9yVGFncywgJkhUTUxQYXJzZXI6
OnBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKTsKLQotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0
aW9uTWFwLCBib2R5VGFnLCAmSFRNTFBhcnNlcjo6Ym9keUNyZWF0ZUVycm9yQ2hlY2spOwotICAg
ICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBkZFRhZywgJkhUTUxQYXJzZXI6OmRkQ3Jl
YXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIGR0VGFn
LCAmSFRNTFBhcnNlcjo6ZHRDcmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAgbWFwVGFnVG9GdW5j
KGdGdW5jdGlvbk1hcCwgZm9ybVRhZywgJkhUTUxQYXJzZXI6OmZvcm1DcmVhdGVFcnJvckNoZWNr
KTsKLSAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgZnJhbWVzZXRUYWcsICZIVE1M
UGFyc2VyOjpmcmFtZXNldENyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMo
Z0Z1bmN0aW9uTWFwLCBoZWFkVGFnLCAmSFRNTFBhcnNlcjo6aGVhZENyZWF0ZUVycm9yQ2hlY2sp
OwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBpc2luZGV4VGFnLCAmSFRNTFBh
cnNlcjo6aXNpbmRleENyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1
bmN0aW9uTWFwLCBtYXBUYWcsICZIVE1MUGFyc2VyOjptYXBDcmVhdGVFcnJvckNoZWNrKTsKLSAg
ICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgbGlUYWcsICZIVE1MUGFyc2VyOjpuZXN0
ZWRQQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rp
b25NYXAsIG5vZW1iZWRUYWcsICZIVE1MUGFyc2VyOjpub2VtYmVkQ3JlYXRlRXJyb3JDaGVjayk7
Ci0gICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIG5vZnJhbWVzVGFnLCAmSFRNTFBh
cnNlcjo6bm9mcmFtZXNDcmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAgbWFwVGFnVG9GdW5jKGdG
dW5jdGlvbk1hcCwgbm9zY3JpcHRUYWcsICZIVE1MUGFyc2VyOjpub3NjcmlwdENyZWF0ZUVycm9y
Q2hlY2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCB0YWJsZVRhZywgJkhU
TUxQYXJzZXI6OnBDbG9zZXJTdHJpY3RDcmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAgbWFwVGFn
VG9GdW5jKGdGdW5jdGlvbk1hcCwgcnBUYWcsICZIVE1MUGFyc2VyOjpycENyZWF0ZUVycm9yQ2hl
Y2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBydFRhZywgJkhUTUxQYXJz
ZXI6OnJ0Q3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25N
YXAsIHNlbGVjdFRhZywgJkhUTUxQYXJzZXI6OnNlbGVjdENyZWF0ZUVycm9yQ2hlY2spOwotICAg
ICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCB0ZFRhZywgJkhUTUxQYXJzZXI6OnRhYmxl
Q2VsbENyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFw
LCB0aFRhZywgJkhUTUxQYXJzZXI6OnRhYmxlQ2VsbENyZWF0ZUVycm9yQ2hlY2spOwotICAgICAg
ICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCB0Ym9keVRhZywgJkhUTUxQYXJzZXI6OnRhYmxl
U2VjdGlvbkNyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9u
TWFwLCB0Zm9vdFRhZywgJkhUTUxQYXJzZXI6OnRhYmxlU2VjdGlvbkNyZWF0ZUVycm9yQ2hlY2sp
OwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCB0aGVhZFRhZywgJkhUTUxQYXJz
ZXI6OnRhYmxlU2VjdGlvbkNyZWF0ZUVycm9yQ2hlY2spOwotCi0gICAgICAgIGdGdW5jdGlvbk1h
cC5zZXQoY29tbWVudEF0b20uaW1wbCgpLCAmSFRNTFBhcnNlcjo6Y29tbWVudENyZWF0ZUVycm9y
Q2hlY2spOwotICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KHRleHRBdG9tLmltcGwoKSwgJkhUTUxQ
YXJzZXI6OnRleHRDcmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnc1RvRnVuYyhnRnVu
Y3Rpb25NYXAsIHBDbG9zZXJDcmVhdGVFcnJvclRhZ3MsICZIVE1MVHJlZUNvbnN0cnVjdG9yOjpw
Q2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7CisKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlv
bk1hcCwgYm9keVRhZywgJkhUTUxUcmVlQ29uc3RydWN0b3I6OmJvZHlDcmVhdGVFcnJvckNoZWNr
KTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgZGRUYWcsICZIVE1MVHJlZUNv
bnN0cnVjdG9yOjpkZENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1
bmN0aW9uTWFwLCBkdFRhZywgJkhUTUxUcmVlQ29uc3RydWN0b3I6OmR0Q3JlYXRlRXJyb3JDaGVj
ayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIGZvcm1UYWcsICZIVE1MVHJl
ZUNvbnN0cnVjdG9yOjpmb3JtQ3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVu
YyhnRnVuY3Rpb25NYXAsIGZyYW1lc2V0VGFnLCAmSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6ZnJhbWVz
ZXRDcmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwg
aGVhZFRhZywgJkhUTUxUcmVlQ29uc3RydWN0b3I6OmhlYWRDcmVhdGVFcnJvckNoZWNrKTsKKyAg
ICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgaXNpbmRleFRhZywgJkhUTUxUcmVlQ29u
c3RydWN0b3I6OmlzaW5kZXhDcmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnVG9GdW5j
KGdGdW5jdGlvbk1hcCwgbWFwVGFnLCAmSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6bWFwQ3JlYXRlRXJy
b3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIGxpVGFnLCAmSFRN
TFRyZWVDb25zdHJ1Y3Rvcjo6bmVzdGVkUENsb3NlckNyZWF0ZUVycm9yQ2hlY2spOworICAgICAg
ICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBub2VtYmVkVGFnLCAmSFRNTFRyZWVDb25zdHJ1
Y3Rvcjo6bm9lbWJlZENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1
bmN0aW9uTWFwLCBub2ZyYW1lc1RhZywgJkhUTUxUcmVlQ29uc3RydWN0b3I6Om5vZnJhbWVzQ3Jl
YXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIG5vc2Ny
aXB0VGFnLCAmSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6bm9zY3JpcHRDcmVhdGVFcnJvckNoZWNrKTsK
KyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgdGFibGVUYWcsICZIVE1MVHJlZUNv
bnN0cnVjdG9yOjpwQ2xvc2VyU3RyaWN0Q3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRh
Z1RvRnVuYyhnRnVuY3Rpb25NYXAsIHJwVGFnLCAmSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cnBDcmVh
dGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgcnRUYWcs
ICZIVE1MVHJlZUNvbnN0cnVjdG9yOjpydENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBU
YWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBzZWxlY3RUYWcsICZIVE1MVHJlZUNvbnN0cnVjdG9yOjpz
ZWxlY3RDcmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1h
cCwgdGRUYWcsICZIVE1MVHJlZUNvbnN0cnVjdG9yOjp0YWJsZUNlbGxDcmVhdGVFcnJvckNoZWNr
KTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgdGhUYWcsICZIVE1MVHJlZUNv
bnN0cnVjdG9yOjp0YWJsZUNlbGxDcmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnVG9G
dW5jKGdGdW5jdGlvbk1hcCwgdGJvZHlUYWcsICZIVE1MVHJlZUNvbnN0cnVjdG9yOjp0YWJsZVNl
Y3Rpb25DcmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1h
cCwgdGZvb3RUYWcsICZIVE1MVHJlZUNvbnN0cnVjdG9yOjp0YWJsZVNlY3Rpb25DcmVhdGVFcnJv
ckNoZWNrKTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgdGhlYWRUYWcsICZI
VE1MVHJlZUNvbnN0cnVjdG9yOjp0YWJsZVNlY3Rpb25DcmVhdGVFcnJvckNoZWNrKTsKKworICAg
ICAgICBnRnVuY3Rpb25NYXAuc2V0KGNvbW1lbnRBdG9tLmltcGwoKSwgJkhUTUxUcmVlQ29uc3Ry
dWN0b3I6OmNvbW1lbnRDcmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAgZ0Z1bmN0aW9uTWFwLnNl
dCh0ZXh0QXRvbS5pbXBsKCksICZIVE1MVHJlZUNvbnN0cnVjdG9yOjp0ZXh0Q3JlYXRlRXJyb3JD
aGVjayk7CiAgICAgfQogCiAgICAgYm9vbCBwcm9jZWVkID0gdHJ1ZTsKQEAgLTk4OSw3ICs5ODks
NyBAQCBQYXNzUmVmUHRyPE5vZGU+IEhUTUxQYXJzZXI6OmdldE5vZGUoVG9rZW4qIHQpCiAgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6YWxsb3dOZXN0
ZWRSZWR1bmRhbnRUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQorYm9vbCBIVE1MVHJl
ZUNvbnN0cnVjdG9yOjphbGxvd05lc3RlZFJlZHVuZGFudFRhZyhjb25zdCBBdG9taWNTdHJpbmcm
IHRhZ05hbWUpCiB7CiAgICAgLy8gd3d3LmxpY2VvLmVkdS5teCBpcyBhbiBleGFtcGxlIG9mIGEg
c2l0ZSB0aGF0IGFjaGlldmVzIGEgbGV2ZWwgb2YgbmVzdGluZyBvZgogICAgIC8vIGFib3V0IDE1
MDAgdGFncywgYWxsIGZyb20gYSBidW5jaCBvZiA8Yj5zLiAgV2Ugd2lsbCBvbmx5IGFsbG93IGF0
IG1vc3QgMjAKQEAgLTEwMDEsNyArMTAwMSw3IEBAIGJvb2wgSFRNTFBhcnNlcjo6YWxsb3dOZXN0
ZWRSZWR1bmRhbnRUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogICAgIHJldHVybiBp
ICE9IGNNYXhSZWR1bmRhbnRUYWdEZXB0aDsKIH0KIAotdm9pZCBIVE1MUGFyc2VyOjpwcm9jZXNz
Q2xvc2VUYWcoVG9rZW4qIHQpCit2b2lkIEhUTUxUcmVlQ29uc3RydWN0b3I6OnByb2Nlc3NDbG9z
ZVRhZyhUb2tlbiogdCkKIHsKICAgICAvLyBTdXBwb3J0IGZvciByZWFsbHkgYnJva2VuIGh0bWwu
CiAgICAgLy8gd2UgbmV2ZXIgY2xvc2UgdGhlIGJvZHkgdGFnLCBzaW5jZSBzb21lIHN0dXBpZCB3
ZWIgcGFnZXMgY2xvc2UgaXQgYmVmb3JlIHRoZSBhY3R1YWwgZW5kIG9mIHRoZSBkb2MuCkBAIC0x
MDMxLDcgKzEwMzEsNyBAQCB2b2lkIEhUTUxQYXJzZXI6OnByb2Nlc3NDbG9zZVRhZyhUb2tlbiog
dCkKICAgICB9CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6aXNIZWFkaW5nVGFnKGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFnTmFtZSkKK2Jvb2wgSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6aXNIZWFkaW5nVGFn
KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFRhZ05hbWVTZXQsIGhlYWRpbmdUYWdzLCAoKSk7CiAgICAgaWYgKGhlYWRpbmdUYWdzLmlzRW1w
dHkoKSkgewpAQCAtMTA0MSw3ICsxMDQxLDcgQEAgYm9vbCBIVE1MUGFyc2VyOjppc0hlYWRpbmdU
YWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogICAgIHJldHVybiBoZWFkaW5nVGFncy5j
b250YWlucyh0YWdOYW1lLmltcGwoKSk7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6aXNJbmxpbmUo
Tm9kZSogbm9kZSkgY29uc3QKK2Jvb2wgSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6aXNJbmxpbmUoTm9k
ZSogbm9kZSkgY29uc3QKIHsKICAgICBpZiAobm9kZS0+aXNUZXh0Tm9kZSgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIGJvb2wgSFRNTFBhcnNlcjo6aXNJbmxp
bmUoTm9kZSogbm9kZSkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSFRNTFBh
cnNlcjo6aXNSZXNpZHVhbFN0eWxlVGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKK2Jv
b2wgSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6aXNSZXNpZHVhbFN0eWxlVGFnKGNvbnN0IEF0b21pY1N0
cmluZyYgdGFnTmFtZSkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8QXRvbWlj
U3RyaW5nSW1wbCo+LCByZXNpZHVhbFN0eWxlVGFncywgKCkpOwogICAgIGlmIChyZXNpZHVhbFN0
eWxlVGFncy5pc0VtcHR5KCkpIHsKQEAgLTEwODMsNyArMTA4Myw3IEBAIGJvb2wgSFRNTFBhcnNl
cjo6aXNSZXNpZHVhbFN0eWxlVGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKICAgICBy
ZXR1cm4gcmVzaWR1YWxTdHlsZVRhZ3MuY29udGFpbnModGFnTmFtZS5pbXBsKCkpOwogfQogCi1i
b29sIEhUTUxQYXJzZXI6OmlzQWZmZWN0ZWRCeVJlc2lkdWFsU3R5bGUoY29uc3QgQXRvbWljU3Ry
aW5nJiB0YWdOYW1lKQorYm9vbCBIVE1MVHJlZUNvbnN0cnVjdG9yOjppc0FmZmVjdGVkQnlSZXNp
ZHVhbFN0eWxlKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKIHsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+LCB1bmFmZmVjdGVkVGFncywgKCkp
OwogICAgIGlmICh1bmFmZmVjdGVkVGFncy5pc0VtcHR5KCkpIHsKQEAgLTEwOTUsNyArMTA5NSw3
IEBAIGJvb2wgSFRNTFBhcnNlcjo6aXNBZmZlY3RlZEJ5UmVzaWR1YWxTdHlsZShjb25zdCBBdG9t
aWNTdHJpbmcmIHRhZ05hbWUpCiAgICAgcmV0dXJuICF1bmFmZmVjdGVkVGFncy5jb250YWlucyh0
YWdOYW1lLmltcGwoKSk7CiB9CiAKLXZvaWQgSFRNTFBhcnNlcjo6aGFuZGxlUmVzaWR1YWxTdHls
ZUNsb3NlVGFnQWNyb3NzQmxvY2tzKEhUTUxTdGFja0VsZW0qIGVsZW0pCit2b2lkIEhUTUxUcmVl
Q29uc3RydWN0b3I6OmhhbmRsZVJlc2lkdWFsU3R5bGVDbG9zZVRhZ0Fjcm9zc0Jsb2NrcyhIVE1M
U3RhY2tFbGVtKiBlbGVtKQogewogICAgIEhUTUxTdGFja0VsZW0qIG1heEVsZW0gPSAwOwogICAg
IGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKQEAgLTEzMjYsNyArMTMyNiw3IEBAIHZvaWQgSFRNTFBh
cnNlcjo6aGFuZGxlUmVzaWR1YWxTdHlsZUNsb3NlVGFnQWNyb3NzQmxvY2tzKEhUTUxTdGFja0Vs
ZW0qIGVsZW0pCiAgICAgbV9oYW5kbGluZ1Jlc2lkdWFsU3R5bGVBY3Jvc3NCbG9ja3MgPSBmYWxz
ZTsKIH0KIAotdm9pZCBIVE1MUGFyc2VyOjpyZW9wZW5SZXNpZHVhbFN0eWxlVGFncyhIVE1MU3Rh
Y2tFbGVtKiBlbGVtLCBOb2RlKiBtYWxmb3JtZWRUYWJsZVBhcmVudCkKK3ZvaWQgSFRNTFRyZWVD
b25zdHJ1Y3Rvcjo6cmVvcGVuUmVzaWR1YWxTdHlsZVRhZ3MoSFRNTFN0YWNrRWxlbSogZWxlbSwg
Tm9kZSogbWFsZm9ybWVkVGFibGVQYXJlbnQpCiB7CiAgICAgLy8gTG9vcCBmb3IgZWFjaCB0YWcg
dGhhdCBuZWVkcyB0byBiZSByZW9wZW5lZC4KICAgICB3aGlsZSAoZWxlbSkgewpAQCAtMTM2Nyw3
ICsxMzY3LDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpyZW9wZW5SZXNpZHVhbFN0eWxlVGFncyhIVE1M
U3RhY2tFbGVtKiBlbGVtLCBOb2RlKiBtYWxmb3JtZWRUYWIKICAgICB9CiB9CiAKLXZvaWQgSFRN
TFBhcnNlcjo6cHVzaEJsb2NrKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgaW50IGxldmVs
KQordm9pZCBIVE1MVHJlZUNvbnN0cnVjdG9yOjpwdXNoQmxvY2soY29uc3QgQXRvbWljU3RyaW5n
JiB0YWdOYW1lLCBpbnQgbGV2ZWwpCiB7CiAgICAgbV9ibG9ja1N0YWNrID0gbmV3IEhUTUxTdGFj
a0VsZW0odGFnTmFtZSwgbGV2ZWwsIG1fY3VycmVudCwgbV9kaWRSZWZDdXJyZW50LCBtX2Jsb2Nr
U3RhY2spOwogICAgIGlmIChsZXZlbCA+PSBtaW5CbG9ja0xldmVsVGFnUHJpb3JpdHkpCkBAIC0x
MzgwLDcgKzEzODAsNyBAQCB2b2lkIEhUTUxQYXJzZXI6OnB1c2hCbG9jayhjb25zdCBBdG9taWNT
dHJpbmcmIHRhZ05hbWUsIGludCBsZXZlbCkKICAgICAgICAgbV9oYXNQRWxlbWVudEluU2NvcGUg
PSBOb3RJblNjb3BlOwogfQogCi12b2lkIEhUTUxQYXJzZXI6OnBvcEJsb2NrKGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFnTmFtZSwgYm9vbCByZXBvcnRFcnJvcnMpCit2b2lkIEhUTUxUcmVlQ29uc3Ry
dWN0b3I6OnBvcEJsb2NrKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgYm9vbCByZXBvcnRF
cnJvcnMpCiB7CiAgICAgSFRNTFN0YWNrRWxlbSogZWxlbSA9IG1fYmxvY2tTdGFjazsKIApAQCAt
MTQ2OSw3ICsxNDY5LDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpwb3BCbG9jayhjb25zdCBBdG9taWNT
dHJpbmcmIHRhZ05hbWUsIGJvb2wgcmVwb3J0RXJyb3JzKQogICAgIHJlb3BlblJlc2lkdWFsU3R5
bGVUYWdzKHJlc2lkdWFsU3R5bGVTdGFjaywgbWFsZm9ybWVkVGFibGVQYXJlbnQpOwogfQogCi1p
bmxpbmUgSFRNTFN0YWNrRWxlbSogSFRNTFBhcnNlcjo6cG9wT25lQmxvY2tDb21tb24oKQoraW5s
aW5lIEhUTUxTdGFja0VsZW0qIEhUTUxUcmVlQ29uc3RydWN0b3I6OnBvcE9uZUJsb2NrQ29tbW9u
KCkKIHsKICAgICBIVE1MU3RhY2tFbGVtKiBlbGVtID0gbV9ibG9ja1N0YWNrOwogCkBAIC0xNDk4
LDcgKzE0OTgsNyBAQCBpbmxpbmUgSFRNTFN0YWNrRWxlbSogSFRNTFBhcnNlcjo6cG9wT25lQmxv
Y2tDb21tb24oKQogICAgIHJldHVybiBlbGVtOwogfQogCi12b2lkIEhUTUxQYXJzZXI6OnBvcE9u
ZUJsb2NrKCkKK3ZvaWQgSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cG9wT25lQmxvY2soKQogewogICAg
IC8vIFN0b3JlIHRoZSBjdXJyZW50IG5vZGUgYmVmb3JlIHBvcE9uZUJsb2NrQ29tbW9uIG92ZXJ3
cml0ZXMgaXQuCiAgICAgTm9kZSogbGFzdEN1cnJlbnQgPSBtX2N1cnJlbnQ7CkBAIC0xNTEwLDcg
KzE1MTAsNyBAQCB2b2lkIEhUTUxQYXJzZXI6OnBvcE9uZUJsb2NrKCkKICAgICAgICAgbGFzdEN1
cnJlbnQtPmRlcmVmKCk7CiB9CiAKLXZvaWQgSFRNTFBhcnNlcjo6bW92ZU9uZUJsb2NrVG9TdGFj
ayhIVE1MU3RhY2tFbGVtKiYgaGVhZCkKK3ZvaWQgSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6bW92ZU9u
ZUJsb2NrVG9TdGFjayhIVE1MU3RhY2tFbGVtKiYgaGVhZCkKIHsKICAgICAvLyBXZSdsbCBiZSB1
c2luZyB0aGUgc3RhY2sgZWxlbWVudCB3ZSdyZSBwb3BwaW5nLCBidXQgZm9yIHRoZSBjdXJyZW50
IG5vZGUuCiAgICAgLy8gU2VlIHRoZSB0d28gY2FsbGVycyBmb3IgZGV0YWlscy4KQEAgLTE1MzIs
NyArMTUzMiw3IEBAIHZvaWQgSFRNTFBhcnNlcjo6bW92ZU9uZUJsb2NrVG9TdGFjayhIVE1MU3Rh
Y2tFbGVtKiYgaGVhZCkKICAgICBoZWFkID0gZWxlbTsKIH0KIAotdm9pZCBIVE1MUGFyc2VyOjpj
aGVja0lmSGFzUEVsZW1lbnRJblNjb3BlKCkKK3ZvaWQgSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6Y2hl
Y2tJZkhhc1BFbGVtZW50SW5TY29wZSgpCiB7CiAgICAgbV9oYXNQRWxlbWVudEluU2NvcGUgPSBO
b3RJblNjb3BlOwogICAgIEhUTUxTdGFja0VsZW0qIGVsZW0gPSBtX2Jsb2NrU3RhY2s7CkBAIC0x
NTQ3LDEzICsxNTQ3LDEzIEBAIHZvaWQgSFRNTFBhcnNlcjo6Y2hlY2tJZkhhc1BFbGVtZW50SW5T
Y29wZSgpCiAgICAgfQogfQogCi12b2lkIEhUTUxQYXJzZXI6OnBvcElubGluZUJsb2NrcygpCit2
b2lkIEhUTUxUcmVlQ29uc3RydWN0b3I6OnBvcElubGluZUJsb2NrcygpCiB7CiAgICAgd2hpbGUg
KG1fYmxvY2tTdGFjayAmJiBpc0lubGluZShtX2N1cnJlbnQpKQogICAgICAgICBwb3BPbmVCbG9j
aygpOwogfQogCi12b2lkIEhUTUxQYXJzZXI6OmZyZWVCbG9jaygpCit2b2lkIEhUTUxUcmVlQ29u
c3RydWN0b3I6OmZyZWVCbG9jaygpCiB7CiAgICAgd2hpbGUgKG1fYmxvY2tTdGFjaykKICAgICAg
ICAgcG9wT25lQmxvY2soKTsKQEAgLTE1NjEsNyArMTU2MSw3IEBAIHZvaWQgSFRNTFBhcnNlcjo6
ZnJlZUJsb2NrKCkKICAgICBBU1NFUlQoIW1fdHJlZURlcHRoKTsKIH0KIAotdm9pZCBIVE1MUGFy
c2VyOjpjcmVhdGVIZWFkKCkKK3ZvaWQgSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6Y3JlYXRlSGVhZCgp
CiB7CiAgICAgaWYgKG1faGVhZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTU4OSw3ICsxNTg5LDcg
QEAgdm9pZCBIVE1MUGFyc2VyOjpjcmVhdGVIZWFkKCkKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8
Tm9kZT4gSFRNTFBhcnNlcjo6aGFuZGxlSXNpbmRleChUb2tlbiogdCkKK1Bhc3NSZWZQdHI8Tm9k
ZT4gSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6aGFuZGxlSXNpbmRleChUb2tlbiogdCkKIHsKICAgICBS
ZWZQdHI8Tm9kZT4gbiA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CiAKQEAg
LTE2MTQsNyArMTYxNCw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gSFRNTFBhcnNlcjo6aGFuZGxlSXNp
bmRleChUb2tlbiogdCkKICAgICByZXR1cm4gbi5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSFRNTFBh
cnNlcjo6c3RhcnRCb2R5KCkKK3ZvaWQgSFRNTFRyZWVDb25zdHJ1Y3Rvcjo6c3RhcnRCb2R5KCkK
IHsKICAgICBpZiAobV9pbkJvZHkpCiAgICAgICAgIHJldHVybjsKQEAgLTE2MjcsNyArMTYyNyw3
IEBAIHZvaWQgSFRNTFBhcnNlcjo6c3RhcnRCb2R5KCkKICAgICB9CiB9CiAKLXZvaWQgSFRNTFBh
cnNlcjo6ZmluaXNoZWQoKQordm9pZCBIVE1MVHJlZUNvbnN0cnVjdG9yOjpmaW5pc2hlZCgpCiB7
CiAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYSBjb21wbGV0ZWx5IGVtcHR5IGRvY3VtZW50LCBoZXJl
J3MgdGhlIHBsYWNlIHRvIGNyZWF0ZSB0aGUgSFRNTCBlbGVtZW50LgogICAgIGlmIChtX2N1cnJl
bnQgJiYgbV9jdXJyZW50LT5pc0RvY3VtZW50Tm9kZSgpICYmICFtX2RvY3VtZW50LT5kb2N1bWVu
dEVsZW1lbnQoKSkKQEAgLTE2NDIsNyArMTY0Miw3IEBAIHZvaWQgSFRNTFBhcnNlcjo6ZmluaXNo
ZWQoKQogICAgICAgICBtX2RvY3VtZW50LT5maW5pc2hlZFBhcnNpbmcoKTsKIH0KIAotdm9pZCBI
VE1MUGFyc2VyOjpyZXBvcnRFcnJvclRvQ29uc29sZShIVE1MUGFyc2VyRXJyb3JDb2RlIGVycm9y
Q29kZSwgY29uc3QgQXRvbWljU3RyaW5nKiB0YWdOYW1lMSwgY29uc3QgQXRvbWljU3RyaW5nKiB0
YWdOYW1lMiwgYm9vbCBjbG9zZVRhZ3MpCit2b2lkIEhUTUxUcmVlQ29uc3RydWN0b3I6OnJlcG9y
dEVycm9yVG9Db25zb2xlKEhUTUxQYXJzZXJFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBBdG9t
aWNTdHJpbmcqIHRhZ05hbWUxLCBjb25zdCBBdG9taWNTdHJpbmcqIHRhZ05hbWUyLCBib29sIGNs
b3NlVGFncykKIHsgICAgCiAgICAgRnJhbWUqIGZyYW1lID0gbV9kb2N1bWVudC0+ZnJhbWUoKTsK
ICAgICBpZiAoIWZyYW1lKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuaCBi
L1dlYkNvcmUvaHRtbC9IVE1MVHJlZUNvbnN0cnVjdG9yLmgKc2ltaWxhcml0eSBpbmRleCA5NyUK
cmVuYW1lIGZyb20gV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuaApyZW5hbWUgdG8gV2ViQ29yZS9o
dG1sL0hUTUxUcmVlQ29uc3RydWN0b3IuaAppbmRleCAwY2E1ZjhhNWI4YzA2NDg3NDI1NjdhNDgy
N2M5NjEyOWJkNGM0MTQxLi5kNDJlODRlYjIyODYxZTlhZDU1M2Y3ZjcxMTNiZGEwNWE0NDQ4NGNh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5oCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MVHJlZUNvbnN0cnVjdG9yLmgKQEAgLTUwLDExICs1MCwxMSBAQCBzdHJ1Y3QgVG9rZW47
CiAgKiBUaGUgcGFyc2VyIGZvciBIVE1MLiBJdCByZWNlaXZlcyBhIHN0cmVhbSBvZiB0b2tlbnMg
ZnJvbSB0aGUgSFRNTERvY3VtZW50UGFyc2VyLCBhbmQKICAqIGJ1aWxkcyB1cCB0aGUgRG9jdW1l
bnQgc3RydWN0dXJlIGZyb20gaXQuCiAgKi8KLWNsYXNzIEhUTUxQYXJzZXIgOiBwdWJsaWMgTm9u
Y29weWFibGUgeworY2xhc3MgSFRNTFRyZWVDb25zdHJ1Y3RvciA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CiBwdWJsaWM6Ci0gICAgSFRNTFBhcnNlcihIVE1MRG9jdW1lbnQqLCBib29sIHJlcG9ydEVy
cm9ycyk7Ci0gICAgSFRNTFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiwgRnJhZ21lbnRTY3JpcHRp
bmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKLSAgICB2aXJ0dWFsIH5I
VE1MUGFyc2VyKCk7CisgICAgSFRNTFRyZWVDb25zdHJ1Y3RvcihIVE1MRG9jdW1lbnQqLCBib29s
IHJlcG9ydEVycm9ycyk7CisgICAgSFRNTFRyZWVDb25zdHJ1Y3RvcihEb2N1bWVudEZyYWdtZW50
KiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2Vk
KTsKKyAgICB2aXJ0dWFsIH5IVE1MVHJlZUNvbnN0cnVjdG9yKCk7CiAKICAgICAvKioKICAgICAg
KiBwYXJzZXMgb25lIHRva2VuIGRlbGl2ZXJlZCBieSB0aGUgdG9rZW5pemVyCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBiL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3Bw
CmluZGV4IDA0ZjRlZDNiYjExMmVjM2VjNmFlMmQzY2ZiOThlNmMxYzAwYjlkOGQuLjA3ZThmOTk5
NWIxNTJlNDJhODA3OTVlYzBmMzI2OTY3ZGYyMmVjNjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9TdGVwUmFuZ2UuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCkBAIC0yMyw3
ICsyMyw3IEBACiAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTFBhcnNlci5oIgorI2luY2x1ZGUgIkhUTUxUcmVlQ29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNw
cCBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcAppbmRleCBmYzYwYTIyZDY1ODM2MmEx
NmZmODRjNjMzMzliZDg2YjRhMWU4ODMxLi4zZjAyNDQ5ZDA4N2RhNThlNTBkMmVkMDY2OGQyOTE5
NjFiZTNmN2E1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAKICNp
bmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5j
bHVkZSAiSFRNTFBhcnNlci5oIgorI2luY2x1ZGUgIkhUTUxUcmVlQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUg
IlJlZ3VsYXJFeHByZXNzaW9uLmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbGlkZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAppbmRleCA3
ODk2NGE2OTA3ODQ5OTU4YWQxNTBlZWYzOTVkZmJkMjA4OTA0NmYxLi5lOWVmZjNmZGM5MjQ4MGNk
MjMwYjkyOWYwMTRiMTM1YjBmYmY0Mjc3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTbGlkZXIuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAK
QEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MUGFyc2Vy
LmgiCisjaW5jbHVkZSAiSFRNTFRyZWVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1lZGlhQ29u
dHJvbEVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlJlbmRl
ckxheWVyLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58620</attachid>
            <date>2010-06-13 21:19:26 -0700</date>
            <delta_ts>2010-06-13 21:19:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-40554-20100613211925.patch</filename>
            <type>text/plain</type>
            <size>123393</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA2OGVkNDkwM2Y2YzJlM2FjNmMyYzEzMzhlZjQ1MjA4YWU3YWY1NDI5Li5kYzk1Y2RhMGY0Yjlj
YmNlNzM3MDA3MzQzMmNkNGI3YzQyZGMwYTQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNjIsNyArMjYyLDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3Bw
IFwKIAlodG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAgXAogCWh0bWwvSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uLmNwcCBcCi0JaHRtbC9IVE1MUGFyc2VyLmNwcCBcCisJaHRtbC9MZWdhY3lIVE1MVHJl
ZUNvbnN0cnVjdG9yLmNwcCBcCiAJaHRtbC9IVE1MUGFyc2VyRXJyb3JDb2Rlcy5jcHAgXAogCWh0
bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwIFwKIAlodG1sL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggOWU0Y2I2MTk2ZmJjMzNhM2U2MGQ1ODNlMzY4YjU5YTNkM2UwYTc4
ZC4uNjY5YjIwM2M4Mzc5ZDkzYWY0MjZjMjcxMjNhYmRmNjQzODc2MmYzMSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05
NjksNyArOTY5LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmNwcAogICAgIGh0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCiAgICAgaHRt
bC9IVE1MUGFyYW1FbGVtZW50LmNwcAotICAgIGh0bWwvSFRNTFBhcnNlci5jcHAKKyAgICBodG1s
L0xlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3IuY3BwCiAgICAgaHRtbC9IVE1MUGFyc2VyRXJyb3JD
b2Rlcy5jcHAKICAgICBodG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAogICAgIGh0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ3M2Y2NzFmMGJjY2JlNWVjMjdiYzkyYzBjYWFhOGQ0ZGYy
YmQ2MS4uMWI0ODlhYTk2OTFjMGM3NWVmY2VhNDRmMjRkODQ5NmQzYjMyYWY5MCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MTMgQEAKKzIwMTAtMDYtMTMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBIVE1MUGFy
c2VyIHRvIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNTU0CisKKyAgICAgICAgVGhpcyBtYWtlcyBvdXIg
b2xkIEhUTUwgcGFyc2luZyBzeXN0ZW0gY2xvc2VyIG1hdGNoIHRoZQorICAgICAgICBIVE1MNSBz
cGVjLCBhbmQgdGh1cyBlYXNpZXIgdG8gY29tcGFyZSB0byB0aGUgbmV3IEhUTUw1CisgICAgICAg
IHBhcnNpbmcgc3lzdGVtLgorCisgICAgICAgIFRoaXMgcmVuYW1lIHdhcyBlbnRpcmVseSBhdXRv
bWF0aWMuICBEb25lIGJ5IGRvLXdlYmNvcmUtcmVuYW1lLgorCisgICAgICAgICogQW5kcm9pZC5t
azoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgICogZG9tL0RvY3VtZW50UGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFBh
cnNlcjo6aHRtbFRyZWVDb25zdHJ1Y3Rvcik6CisgICAgICAgICogaHRtbC9IVE1MNURvY3VtZW50
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1RG9jdW1lbnRQYXJzZXI6Omh0bWxU
cmVlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5oOgor
ICAgICAgICAqIGh0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MNVRyZWVCdWlsZGVyOjpIVE1MNVRyZWVCdWlsZGVyKToKKyAgICAgICAgKiBodG1sL0hUTUw1
VHJlZUJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VHJlZUJ1aWxkZXI6OmxlZ2Fj
eVRyZWVDb25zdHJ1Y3Rvcik6CisgICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJz
ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50UGFyc2VyLmg6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6Omh0bWxUcmVlQ29uc3RydWN0b3IpOgorICAgICAgICAq
IGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OjpyZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAqIGh0bWwvSFRN
TElucHV0RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcDoK
KyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwv
TGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvci5jcHA6IFJlbmFtZWQgZnJvbSBXZWJDb3JlL2h0bWwv
SFRNTFBhcnNlci5jcHAuCisgICAgICAgIChXZWJDb3JlOjphZGRUYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTdGFja0VsZW06OkhUTUxTdGFja0VsZW0pOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFN0YWNrRWxlbTo6ZGVyZWZOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxU
cmVlQ29uc3RydWN0b3I6OkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6fkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cmVzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6c2V0Q3VycmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjp0YWdQcmlvcml0eU9mTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpsaW1pdERlcHRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6Omluc2VydE5vZGVBZnRlckxpbWl0RGVw
dGgpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cGFyc2VU
b2tlbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpwYXJz
ZURvY3R5cGVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjppc1RhYmxlU2VjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjppc1RhYmxlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjppc1RhYmxlUmVs
YXRlZCk6CisgICAgICAgIChXZWJDb3JlOjppc1Njb3BpbmdUYWcpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6aW5zZXJ0Tm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpoYW5kbGVFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjp0ZXh0Q3JlYXRlRXJyb3JDaGVjayk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpjb21tZW50Q3Jl
YXRlRXJyb3JDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVj
dG9yOjpoZWFkQ3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1M
VHJlZUNvbnN0cnVjdG9yOjpib2R5Q3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpmcmFtZXNldENyZWF0ZUVycm9yQ2hlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6Zm9ybUNyZWF0ZUVy
cm9yQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6
aXNpbmRleENyZWF0ZUVycm9yQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRy
ZWVDb25zdHJ1Y3Rvcjo6c2VsZWN0Q3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpkZENyZWF0ZUVycm9yQ2hlY2spOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6ZHRDcmVhdGVFcnJvckNoZWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OnJwQ3JlYXRl
RXJyb3JDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9y
OjpydENyZWF0ZUVycm9yQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRyZWVD
b25zdHJ1Y3Rvcjo6bmVzdGVkQ3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpuZXN0ZWRQQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpuZXN0ZWRTdHls
ZUNyZWF0ZUVycm9yQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRyZWVDb25z
dHJ1Y3Rvcjo6dGFibGVDZWxsQ3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjp0YWJsZVNlY3Rpb25DcmVhdGVFcnJvckNoZWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6Om5vZW1iZWRDcmVh
dGVFcnJvckNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0
b3I6Om5vZnJhbWVzQ3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lI
VE1MVHJlZUNvbnN0cnVjdG9yOjpub3NjcmlwdENyZWF0ZUVycm9yQ2hlY2spOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cENsb3NlckNyZWF0ZUVycm9yQ2hl
Y2spOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cENsb3Nl
clN0cmljdENyZWF0ZUVycm9yQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRy
ZWVDb25zdHJ1Y3Rvcjo6bWFwQ3JlYXRlRXJyb3JDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpt
YXBUYWdUb0Z1bmMpOgorICAgICAgICAoV2ViQ29yZTo6bWFwVGFnc1RvRnVuYyk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpnZXROb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OmFsbG93TmVzdGVkUmVkdW5kYW50
VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OnByb2Nl
c3NDbG9zZVRhZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9y
Ojppc0hlYWRpbmdUYWcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRyZWVDb25zdHJ1
Y3Rvcjo6aXNJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRyZWVDb25zdHJ1
Y3Rvcjo6aXNSZXNpZHVhbFN0eWxlVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxU
cmVlQ29uc3RydWN0b3I6OmlzQWZmZWN0ZWRCeVJlc2lkdWFsU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6aGFuZGxlUmVzaWR1YWxTdHlsZUNsb3Nl
VGFnQWNyb3NzQmxvY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxUcmVlQ29uc3Ry
dWN0b3I6OnJlb3BlblJlc2lkdWFsU3R5bGVUYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUhUTUxUcmVlQ29uc3RydWN0b3I6OnB1c2hCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpwb3BCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpwb3BPbmVCbG9ja0NvbW1vbik6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpwb3BPbmVCbG9jayk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjptb3ZlT25lQmxvY2tUb1N0YWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OmNoZWNrSWZIYXNQ
RWxlbWVudEluU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRyZWVDb25zdHJ1
Y3Rvcjo6cG9wSW5saW5lQmxvY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxUcmVl
Q29uc3RydWN0b3I6OmZyZWVCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MVHJl
ZUNvbnN0cnVjdG9yOjpjcmVhdGVIZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxU
cmVlQ29uc3RydWN0b3I6OmhhbmRsZUlzaW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6c3RhcnRCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUhUTUxUcmVlQ29uc3RydWN0b3I6OmZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUhUTUxUcmVlQ29uc3RydWN0b3I6OnJlcG9ydEVycm9yVG9Db25zb2xlKToKKyAgICAgICAgKFdl
YkNvcmU6OnNob3VsZENyZWF0ZUltcGxpY2l0SGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpzZXJp
YWxpemVGb3JOdW1iZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlVG9Eb3VibGVGb3JO
dW1iZXJUeXBlKToKKyAgICAgICAgKiBodG1sL0xlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3IuaDog
UmVuYW1lZCBmcm9tIFdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmguCisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpza2lwTW9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjppc0hhbmRsaW5nUmVzaWR1YWxTdHlsZUFjcm9z
c0Jsb2Nrcyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpz
ZXRTa2lwTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9y
Ojpwb3BCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9y
OjpoYXNQRWxlbWVudEluU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRyZWVD
b25zdHJ1Y3Rvcjo6cmVwb3J0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTFRy
ZWVDb25zdHJ1Y3Rvcjo6KToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZENyZWF0ZUltcGxpY2l0
SGVhZCk6CisgICAgICAgICogaHRtbC9TdGVwUmFuZ2UuY3BwOgorICAgICAgICAqIGh0bWwvVmFs
aWRpdHlTdGF0ZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHA6CisK
KzIwMTAtMDYtMTEgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbmFtZSBtX3BhcnNlciwgaHRtbFBh
cnNlcigpIHRvIG1fdHJlZUNvbnN0cnVjdG9yLCBodG1sVHJlZUNvbnN0cnVjdG9yKCkgaW4gcHJl
cGFyYXRpb24gZm9yIHJlbmFtaW5nIEhUTUxQYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNTE0CisKKyAgICAgICAgVGhpcyByZW5hbWUgd2Fz
IGRvbmUgYnkgaGFuZC4gIEkgcmVhbGl6ZSBub3cgSSBzaG91bGQgaGF2ZQorICAgICAgICByZW5h
bWVkIEhUTUxQYXJzZXIgdG8gSFRNTFRyZWVDb25zdHJ1Y3RvciBiZWZvcmUgcmVuYW1pbmcgSFRN
TFRva2VuaXplci4KKworICAgICAgICBObyBmdW5jdGlvbmFsIGNoYW5nZXMsIHRodXMgbm8gdGVz
dHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50UGFyc2VyOjpodG1sVHJlZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBodG1sL0hU
TUw1RG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVEb2N1bWVudFBh
cnNlcjo6SFRNTDVEb2N1bWVudFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNURvY3Vt
ZW50UGFyc2VyOjpwdW1wTGV4ZXJJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1
RG9jdW1lbnRQYXJzZXI6OnB1bXBMZXhlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNURvY3Vt
ZW50UGFyc2VyOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVEb2N1bWVudFBhcnNlcjo6
aHRtbFRyZWVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNURvY3VtZW50UGFy
c2VyOjppc1dhaXRpbmdGb3JTY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1RG9jdW1l
bnRQYXJzZXI6OnJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNURvY3VtZW50UGFyc2VyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNURvY3VtZW50UGFyc2VyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHls
ZXNoZWV0cyk6CisgICAgICAgICogaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmg6CisgICAgICAg
ICogaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VHJl
ZUJ1aWxkZXI6OkhUTUw1VHJlZUJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUcmVl
QnVpbGRlcjo6cGFzc1Rva2VuVG9MZWdhY3lQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TDVUcmVlQnVpbGRlcjo6ZmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvSFRNTDVUcmVlQnVpbGRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6bGVnYWN5VHJlZUNvbnN0
cnVjdG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnNjcmlwdEhhbmRsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwYXJzZVRhZyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9j
dW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1l
bnRQYXJzZXI6OnByb2Nlc3NEb2N0eXBlVG9rZW4pOgorICAgICAgICAqIGh0bWwvSFRNTERvY3Vt
ZW50UGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6Omh0bWxU
cmVlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZW1vdmVkRnJv
bVRyZWUpOgorCisyMDEwLTA2LTExICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZW5hbWUgdG9rLCBh
c0hUTUxUb2tlbml6ZXIgdG8gcGFyc2VyLCBhc0hUTUxEb2N1bWVudFBhcnNlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA1MTMKKworICAgICAgICBM
YXN0IHNldCBvZiBUb2tlbml6ZXIgcmVsYXRlZCByZW5hbWVzLCBhbHNvIGRvbmUgdmlhIGRvLXdl
YmNvcmUtcmVuYW1lOgorICAgICAgICBhc0hUTUxUb2tlbml6ZXIgPT4gYXNIVE1MRG9jdW1lbnRQ
YXJzZXIKKyAgICAgICAgdG9rID0+IHBhcnNlcgorCisgICAgICAgIE5vIGZ1bmN0aW9uYWwgY2hh
bmdlcywgdGh1cyBubyB0ZXN0cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d3JpdGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFBh
cnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRQYXJzZXI6OmFzSFRNTERvY3VtZW50
UGFyc2VyKToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwYXJzZUhUTUxEb2N1bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2Vy
Ojphc0hUTUxEb2N1bWVudFBhcnNlcik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppc0xvYWRpbmdJbkFQSVNl
bnNlKToKKworMjAxMC0wNi0xMSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgRml4IHRoZSByZXN0IG9m
IHRoZSByZWZlcmVuY2VzIHRvIHRoZSBvbGQgVG9rZW5pemVyIGNsYXNzIChub3cgRG9jdW1lbnRQ
YXJzZXIpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MDUxMgorCisgICAgICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcywgdGh1cyBubyBuZXcgdGVzdHMu
CisgICAgICAgIFRoaXMgd2FzIG1vc3RseSBkb25lIGJ5IGRvLXdlYmNvcmUtcmVuYW1lOgorICAg
ICAgICB0b2tlbml6ZXIgPT4gcGFyc2VyCisgICAgICAgIG1fdG9rZW5pemVyID0+IG1fcGFyc2Vy
CisgICAgICAgIGNyZWF0ZVRleHRUb2tlbml6ZXIgPT4gY3JlYXRlVGV4dERvY3VtZW50UGFyc2Vy
CisgICAgICAgIGNyZWF0ZVRva2VuaXplciA9PiBjcmVhdGVQYXJzZXIKKyAgICAgICAgZ2V0VG9r
ZW5pemVyID0+IGdldFBhcnNlcgorCisgICAgICAgIEhvd2V2ZXIgaGFkIHRvIGJlIGNhcmVmdWwg
dG8gYXZvaWQgcmVuYW1pbmcgdGhpbmdzIHJlbGF0ZWQgdG8KKyAgICAgICAgY3NzL3Rva2VuaXpl
ci5mbGV4ICh3aGljaCB3ZSBzaG91bGQgbGF0ZXIgcmVuYW1lIHRvIENTU1Rva2VuaXplci5mbGV4
KQorCisgICAgICAgIFN0aWxsIGEgY291cGxlIHJlZmVyZW5jZXMgd2l0aCAidG9rIiBhbmQgImFz
SFRNTFRva2VuaXplciIgd2hpY2ggSSdsbAorICAgICAgICBnZXQgaW4gdGhlIG5leHQgcGF0Y2gu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNMb2FkZWQp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVkTGFzdFJl
Zik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpjcmVhdGVQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNhbmNlbFBhcnNpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxpY2l0T3Blbik6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZpbmlzaFBhcnNpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZVBlbmRpbmdTaGVldCk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cGFyc2VyKToK
KyAgICAgICAgKiBkb20vRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKiBkb20vVmlld3BvcnRB
cmd1bWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0Vmlld3BvcnRXYXJuaW5nKToK
KyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmNhbGxBbmRSZW1vdmVGaXJzdENhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OlBlbmRpbmdTdGFydEVsZW1lbnROU0Nh
bGxiYWNrOjpjYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OlBlbmRp
bmdFbmRFbGVtZW50TlNDYWxsYmFjazo6Y2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5n
Q2FsbGJhY2tzOjpQZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNrOjpjYWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OlBlbmRpbmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxs
YmFjazo6Y2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjpQZW5kaW5n
Q0RBVEFCbG9ja0NhbGxiYWNrOjpjYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxs
YmFja3M6OlBlbmRpbmdDb21tZW50Q2FsbGJhY2s6OmNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6
UGVuZGluZ0NhbGxiYWNrczo6UGVuZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJhY2s6OmNhbGwpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6KToKKyAgICAgICAgKFdlYkNvcmU6
OmdldFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpzdGFydEVsZW1lbnROc0hhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6ZW5kRWxlbWVudE5zSGFuZGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpjaGFyYWN0ZXJzSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzaW5nSW5zdHJ1
Y3Rpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNkYXRhQmxvY2tIYW5kbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbW1lbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ondhcm5p
bmdIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmZhdGFsRXJyb3JIYW5kbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Om5vcm1hbEVycm9ySGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpnZXRF
bnRpdHlIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0RG9jdW1lbnRIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmVuZERvY3VtZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjppbnRlcm5hbFN1YnNldEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0ZXJuYWxTdWJz
ZXRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlWE1MRG9jdW1lbnRGcmFnbWVudCk6
CisgICAgICAgICogZG9tL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VYTUxEb2N1bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUw1RW50aXR5
UGFyc2VyLmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcik6CisgICAgICAgICogaHRtbC9IVE1M
RG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OndyaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6c3RvcFBhcnNpbmcpOgorICAgICAgICAqIGh0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpyZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAqIGh0bWwvSFRNTFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyOjpmaW5pc2hlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGFyc2VyOjpyZXBvcnRFcnJvclRvQ29uc29sZSk6CisgICAgICAgICogaHRt
bC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3
U291cmNlRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmll
d1NvdXJjZURvY3VtZW50OjphZGRMaW5lKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWV3U291cmNl
RG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmlzTG9hZGluZ0luQVBJU2Vuc2UpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFdyaXRlcjo6YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OmFkZERh
dGEpOgorICAgICAgICAqIGxvYWRlci9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKToKKyAgICAgICAg
KiBsb2FkZXIvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdG9wKToKKyAgICAgICAgKiBsb2FkZXIv
SW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpjcmVh
dGVQYXJzZXIpOgorICAgICAgICAqIGxvYWRlci9JbWFnZURvY3VtZW50Lmg6CisgICAgICAgICog
bG9hZGVyL01lZGlhRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEb2N1bWVu
dDo6Y3JlYXRlUGFyc2VyKToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFEb2N1bWVudC5oOgorICAg
ICAgICAqIGxvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5Eb2N1bWVudDo6Y3JlYXRlUGFyc2VyKToKKyAgICAgICAgKiBsb2FkZXIvUGx1Z2luRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvU2lua0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNpbmtEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKToKKyAgICAgICAgKiBsb2FkZXIvU2lua0Rv
Y3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL1RleHREb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVUZXh0RG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIGxvYWRlci9UZXh0RG9jdW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0V2FybmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlcG9ydEVycm9yKToKKyAgICAgICAgKiB3
bWwvV01MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V01MRG9jdW1lbnQ6OmZpbmlz
aGVkUGFyc2luZyk6CisgICAgICAgICogd21sL1dNTEVycm9ySGFuZGxpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVwb3J0V01MRXJyb3IpOgorICAgICAgICAqIHdtbC9XTUxUZW1wbGF0ZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V01MVGVtcGxhdGVFbGVtZW50OjpyZWdpc3Rl
clRlbXBsYXRlc0luRG9jdW1lbnQpOgorCiAyMDEwLTA2LTEzICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292Lgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggZWFkOGZlZTk0Y2VmZmMxNjA4YzE1YTcwMGIzZjJhZDFlM2UzYmY1OC4uNTVjMjAz
OTg0MDkyM2NjOWNjOGQ4NDZkNjY2MmZkMTQ3NDYyOGMwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMjIxLDggKzEy
MjEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBo
RWxlbWVudC5oIFwKIAlXZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAgXAogCVdlYkNv
cmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmggXAotCVdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNw
cCBcCi0JV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuaCBcCisJV2ViQ29yZS9odG1sL0xlZ2FjeUhU
TUxUcmVlQ29uc3RydWN0b3IuY3BwIFwKKwlXZWJDb3JlL2h0bWwvTGVnYWN5SFRNTFRyZWVDb25z
dHJ1Y3Rvci5oIFwKIAlXZWJDb3JlL2h0bWwvSFRNTFBhcnNlckVycm9yQ29kZXMuY3BwIFwKIAlX
ZWJDb3JlL2h0bWwvSFRNTFBhcnNlckVycm9yQ29kZXMuaCBcCiAJV2ViQ29yZS9odG1sL0hUTUxQ
YXJzZXJRdWlya3MuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IGEzNGFiZTQ0ZTNiNDZmZWVlMDFjOTg4MTAxMTljN2JmMjI1
ODEzZTcuLmNjNmNjMDA0OWM0Yjg4N2U3NTNjY2IzOTZhZTIwNGI4ZTFmNGRlZTkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0x
NjEwLDggKzE2MTAsOCBAQAogICAgICAgICAgICAgJ2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQu
aCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcCcsCiAgICAgICAgICAg
ICAnaHRtbC9IVE1MUGFyYW1FbGVtZW50LmgnLAotICAgICAgICAgICAgJ2h0bWwvSFRNTFBhcnNl
ci5jcHAnLAotICAgICAgICAgICAgJ2h0bWwvSFRNTFBhcnNlci5oJywKKyAgICAgICAgICAgICdo
dG1sL0xlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3IuY3BwJywKKyAgICAgICAgICAgICdodG1sL0xl
Z2FjeUhUTUxUcmVlQ29uc3RydWN0b3IuaCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MUGFyc2Vy
RXJyb3JDb2Rlcy5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTFBhcnNlckVycm9yQ29kZXMu
aCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAnLApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggODliOGIz
ZmYyYThmYjMzNzZiNzlhNDNmMmE0NzU1NDRmMjdiODQ0ZC4uNGY3MDNkZmYwZTlkOTU3MGM5Zjhm
MTAwNDA3ZTA5M2Y2NDdmMTE2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysg
Yi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC02NzYsNyArNjc2LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwIFwKICAgICBodG1sL0hUTUxQYXJhZ3Jh
cGhFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcCBcCi0gICAgaHRt
bC9IVE1MUGFyc2VyLmNwcCBcCisgICAgaHRtbC9MZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yLmNw
cCBcCiAgICAgaHRtbC9IVE1MUGFyc2VyRXJyb3JDb2Rlcy5jcHAgXAogICAgIGh0bWwvSFRNTFBs
dWdJbkVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIFwK
QEAgLTE0MTUsNyArMTQxNSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvSFRNTFBhcmFncmFw
aEVsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1MUGFyYW1FbGVtZW50LmggXAogICAgIGh0bWwvSFRN
TFBhcnNlckVycm9yQ29kZXMuaCBcCi0gICAgaHRtbC9IVE1MUGFyc2VyLmggXAorICAgIGh0bWwv
TGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvci5oIFwKICAgICBodG1sL0hUTUxQbHVnSW5FbGVtZW50
LmggXAogICAgIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxQ
cmVFbGVtZW50LmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYjky
ZWMyMjgyNGQ0ZDUzNzNiODdlODliZjhhZDhhMzg2ZmU0ZmQ4NS4uYmNmMTIwYTJiMGY1NzYyNGFh
YzAyZmExMDlhMjQxZDAwNTc5YTFlMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCkBAIC0zNjQ0OSwxMSArMzY0NDksMTEgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MUGFyc2VyLmNwcCINCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxodG1sXExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3IuY3BwIg0KIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1M
UGFyc2VyLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxMZWdhY3lIVE1MVHJlZUNvbnN0
cnVjdG9yLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI5MzRhZjRlZmU2NDViMTJiMWI3NjVl
NmIxN2M0YTRkZjc3ODRkNDUuLjQ4N2YxMTFkY2FlZmQ2OGE4MWMyNjgzNTk5OWNhZjQ3MjdlOGJi
ZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDg0
LDcgKzI0ODQsNyBAQAogCQk5M0VCMzU1RjA5RTM3RkQ2MDBGNDM3OTkgLyogTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0VCMzU1RTA5RTM3RkQ2MDBGNDM3OTkgLyogTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cy5jcHAgKi87IH07CiAJCTkzRjE5OEU1MDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1M
RG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY1MjNEMjNDMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MRG9jdW1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOThFNjA4MjQ1RTU5MDAx
RTlBQkMgLyogSFRNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY1MjNEMjNGMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MRWxlbWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzRjE5OEVG
MDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1MUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTIzRDI1MTAyREU0Mzk2MDE4NjM1Q0EgLyogSFRNTFBh
cnNlci5oICovOyB9OworCQk5M0YxOThFRjA4MjQ1RTU5MDAxRTlBQkMgLyogTGVnYWN5SFRNTFRy
ZWVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjUyM0QyNTEwMkRFNDM5NjAxODYzNUNBIC8qIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0
b3IuaCAqLzsgfTsKIAkJOTNGMTk4RjAwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxEb2N1bWVudFBh
cnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUy
M0QyNTMwMkRFNDM5NjAxODYzNUNBIC8qIEhUTUxEb2N1bWVudFBhcnNlci5oICovOyB9OwogCQk5
M0YxOThGNjA4MjQ1RTU5MDAxRTlBQkMgLyogVGV4dFJlc291cmNlRGVjb2Rlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUyM0QyNzkwMkRFNDNENzAx
ODYzNUNBIC8qIFRleHRSZXNvdXJjZURlY29kZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTkxODA4MjQ1RTU5MDAxRTlBQkMgLyogUmFu
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjNE
MzA0MDJERTQ0NzYwMTg2MzVDQSAvKiBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNTE0LDcgKzI1MTQsNyBAQAogCQk5M0YxOUE1RjA4
MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZVZpZXdGYWN0b3J5Lm0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODU1NTAyREUzNzU5MDFFQTQxMjIgLyog
V2ViQ29yZVZpZXdGYWN0b3J5Lm0gKi87IH07CiAJCTkzRjE5QTkxMDgyNDVFNTkwMDFFOUFCQyAv
KiBIVE1MRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjUyM0QyM0IwMkRFNDM5NjAxODYzNUNBIC8qIEhUTUxEb2N1bWVudC5jcHAgKi87
IH07CiAJCTkzRjE5QTkyMDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1MRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTIzRDIzRTAyREU0Mzk2
MDE4NjM1Q0EgLyogSFRNTEVsZW1lbnQuY3BwICovOyB9OwotCQk5M0YxOUE5QjA4MjQ1RTU5MDAx
RTlBQkMgLyogSFRNTFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNTIzRDI1MDAyREU0Mzk2MDE4NjM1Q0EgLyogSFRNTFBhcnNlci5jcHAg
Ki87IH07CisJCTkzRjE5QTlCMDgyNDVFNTkwMDFFOUFCQyAvKiBMZWdhY3lIVE1MVHJlZUNvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY1MjNEMjUwMDJERTQzOTYwMTg2MzVDQSAvKiBMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yLmNw
cCAqLzsgfTsKIAkJOTNGMTlBOUMwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxEb2N1bWVudFBhcnNl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTIz
RDI1MjAyREU0Mzk2MDE4NjM1Q0EgLyogSFRNTERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKIAkJ
OTNGMTlBOUQwODI0NUU1OTAwMUU5QUJDIC8qIFRleHRSZXNvdXJjZURlY29kZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUyM0QyNzgwMkRFNDNE
NzAxODYzNUNBIC8qIFRleHRSZXNvdXJjZURlY29kZXIuY3BwICovOyB9OwogCQk5M0YxOUFCOTA4
MjQ1RTU5MDAxRTlBQkMgLyogUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjUyM0QzMDMwMkRFNDQ3NjAxODYzNUNBIC8qIFJhbmdlLmNwcCAq
LzsgfTsKQEAgLTEwNTQ1LDE0ICsxMDU0NSwxNCBAQAogCQlFMUYxRTgyRTBDM0MyQkI5MDA2REIz
OTEgLyogWFNMVEV4dGVuc2lvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
WFNMVEV4dGVuc2lvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRjU3QTIw
RjAxMjU1QjAwODkxRUJCIC8qIFRocmVhZEdsb2JhbERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGhyZWFkR2xvYmFsRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMUZGNTdBNTBGMDEyNTZCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRHbG9iYWxEYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTQwNkYzRkExMTk4MzA0RDAwOUQ1OUQ2
IC8qIERvY1R5cGVTdHJpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERvY1R5cGVTdHJpbmdzLmNwcDsgcGF0aCA9IERvY1R5cGVTdHJpbmdzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTQwNkYzRkIxMTk4MzA3RDAwOUQ1OUQ2IC8qIENvbG9y
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb2xvckRhdGEu
Y3BwOyBwYXRoID0gQ29sb3JEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RTQwNkY0MDIxMTk4MzI5QTAwOUQ1OUQ2IC8qIEhUTUxFbnRpdHlOYW1lcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIVE1MRW50aXR5TmFtZXMuY3BwOyBwYXRoID0g
SFRNTEVudGl0eU5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTQxRUEw
MzgxMTk4MzZEQjAwNzEwQkM1IC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUHJvcGVydHlOYW1lcy5jcHA7IHBhdGggPSBDU1NQ
cm9wZXJ0eU5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTQxRUEwMzkx
MTk4Mzc0OTAwNzEwQkM1IC8qIENTU1ZhbHVlS2V5d29yZHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTVmFsdWVLZXl3b3Jkcy5jcHA7IHBhdGggPSBDU1NWYWx1
ZUtleXdvcmRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTQwNkYzRkExMTk4
MzA0RDAwOUQ1OUQ2IC8qIERvY1R5cGVTdHJpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERvY1R5cGVTdHJpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTQwNkYzRkIxMTk4MzA3RDAwOUQ1OUQ2IC8qIENvbG9yRGF0YS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xvckRhdGEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFNDA2RjQwMjExOTgzMjlBMDA5RDU5RDYgLyogSFRNTEVudGl0
eU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbnRp
dHlOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MTVGMTBDMEQ5QTA1
ODcwMDMzQ0U5NyAvKiBFbGVtZW50VGltZUNvbnRyb2wuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEVsZW1lbnRUaW1lQ29udHJvbC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUU0MTVGMTY4MEQ5QTE2NUQwMDMzQ0U5NyAvKiBET01FbGVtZW50VGltZUNvbnRyb2wuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRWxlbWVudFRpbWVDb250cm9sLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MTVGMTgzMEQ5QTFBODMwMDMzQ0U5NyAvKiBF
bGVtZW50VGltZUNvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxl
bWVudFRpbWVDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0MUVBMDM4
MTE5ODM2REIwMDcxMEJDNSAvKiBDU1NQcm9wZXJ0eU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1Byb3BlcnR5TmFtZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFNDFFQTAzOTExOTgzNzQ5MDA3MTBCQzUgLyogQ1NTVmFsdWVLZXl3
b3Jkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NWYWx1ZUtl
eXdvcmRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ0MEEyRDQxMTkxQTUw
QjAwMDgyMEIwIC8qIFNWR0ZFTGlnaHRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHRkVMaWdodGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0NDBBMkQ2MTE5MUE1MjMwMDA4MjBCMCAvKiBTVkdGRUxpZ2h0aW5nLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZFTGlnaHRpbmcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTQ0NjEzOEYwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxBdWRpb0VsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEF1ZGlvRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDYzOSw4ICsxMDYzOSw4
IEBACiAJCUY1MjNEMjNDMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MRG9jdW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTERvY3VtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwogCQlGNTIzRDIzRTAyREU0Mzk2MDE4NjM1Q0EgLyogSFRNTEVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKIAkJRjUyM0QyM0YwMkRFNDM5NjAxODYzNUNBIC8qIEhUTUxFbGVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwotCQlGNTIzRDI1MDAyREU0Mzk2MDE4NjM1Q0EgLyogSFRNTFBhcnNlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MUGFyc2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07Ci0JCUY1MjNEMjUxMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MUGFyc2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxQYXJzZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJ
CUY1MjNEMjUwMDJERTQzOTYwMTg2MzVDQSAvKiBMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKKwkJRjUyM0QyNTEwMkRFNDM5NjAxODYzNUNB
IC8qIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
RjUyM0QyNTIwMkRFNDM5NjAxODYzNUNBIC8qIEhUTUxEb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRG9j
dW1lbnRQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJRjUyM0QyNTMwMkRFNDM5NjAxODYzNUNBIC8qIEhUTUxEb2N1bWVu
dFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBIVE1MRG9jdW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1MjNEMjc4MDJERTQzRDcwMTg2MzVDQSAvKiBU
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRSZXNvdXJjZURlY29kZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTEzNjQwLDgg
KzEzNjQwLDggQEAKIAkJCQlBODcxRDQ0RjBBMTI3Q0JDMDBCMTJBNjggLyogSFRNTFBhcmFtRWxl
bWVudC5jcHAgKi8sCiAJCQkJQTg3MUQ0NEUwQTEyN0NCQzAwQjEyQTY4IC8qIEhUTUxQYXJhbUVs
ZW1lbnQuaCAqLywKIAkJCQkxQUUyQUI3MjBBMUNFODE1MDBCNDJCMjUgLyogSFRNTFBhcmFtRWxl
bWVudC5pZGwgKi8sCi0JCQkJRjUyM0QyNTAwMkRFNDM5NjAxODYzNUNBIC8qIEhUTUxQYXJzZXIu
Y3BwICovLAotCQkJCUY1MjNEMjUxMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MUGFyc2VyLmggKi8s
CisJCQkJRjUyM0QyNTAwMkRFNDM5NjAxODYzNUNBIC8qIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0
b3IuY3BwICovLAorCQkJCUY1MjNEMjUxMDJERTQzOTYwMTg2MzVDQSAvKiBMZWdhY3lIVE1MVHJl
ZUNvbnN0cnVjdG9yLmggKi8sCiAJCQkJQkM1ODhCNEEwQkZBNzIzQzAwRUU2NzlFIC8qIEhUTUxQ
YXJzZXJFcnJvckNvZGVzLmNwcCAqLywKIAkJCQlCQzU4OEFFRjBCRkE2Q0Y5MDBFRTY3OUUgLyog
SFRNTFBhcnNlckVycm9yQ29kZXMuaCAqLywKIAkJCQk0NDlCMTlGMzBGQTcyRUNFMDAxNUNBNEEg
LyogSFRNTFBhcnNlclF1aXJrcy5oICovLApAQCAtMTgwODYsNyArMTgwODYsNyBAQAogCQkJCUE4
MTM2OURBMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4RUE3Q0I1MEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MUGFyYWdyYXBoRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MUQ0NTgwQTEyN0NCQzAwQjEyQTY4IC8qIEhU
TUxQYXJhbUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzRjE5OEVGMDgyNDVFNTkwMDFF
OUFCQyAvKiBIVE1MUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0YxOThFRjA4MjQ1RTU5
MDAxRTlBQkMgLyogTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM1ODhBRjAwQkZBNkNGOTAwRUU2NzlFIC8qIEhUTUxQYXJzZXJFcnJvckNvZGVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0NDlCMTlGNTBGQTcyRUNFMDAxNUNBNEEgLyogSFRNTFBhcnNlclF1
aXJrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MUQ0NTYwQTEyN0NCQzAwQjEyQTY4IC8qIEhU
TUxQbHVnSW5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTIwNDE3LDcgKzIwNDE3LDcgQEAK
IAkJCQk5MzI3QTk0MjA5OTY4RDFBMDA2OEE1NDYgLyogSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4RUE3Q0IyMEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MUGFy
YWdyYXBoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxRDQ1OTBBMTI3Q0JDMDBC
MTJBNjggLyogSFRNTFBhcmFtRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5M0YxOUE5
QjA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5
M0YxOUE5QjA4MjQ1RTU5MDAxRTlBQkMgLyogTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzU4OEI0QjBCRkE3MjNDMDBFRTY3OUUgLyogSFRNTFBhcnNl
ckVycm9yQ29kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MUQ0NTcwQTEyN0NCQzAwQjEy
QTY4IC8qIEhUTUxQbHVnSW5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ0MTUyOTJG
MEUxQUU4QTAwMEM0QTJEMCAvKiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCmluZGV4IGYzYmNjNGU2ZmUyZTM5MjJjZjZiOWEwZmE1MTdiN2ZlZmI5YzUzYjcu
LmM3NjM5ZTU1MjljNDZlZjhmNTk2ODljNTk4YzI0ZmNiODNmOTYwMWUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTE4
NTMsNyArMTg1Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpIGNvbnN0CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNMb2FkZWQoKSBjb25zdAogewotICAgIHJldHVybiAhbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS0+
dG9rZW5pemVyKCk7CisgICAgcmV0dXJuICFtX3JlbmRlcmVyLT5kb2N1bWVudCgpLT5wYXJzZXIo
KTsKIH0KIAogZG91YmxlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVzdGltYXRlZExvYWRp
bmdQcm9ncmVzcygpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dEV2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3Rl
bmVyLmNwcAppbmRleCBjZjIxMDQ1MGM5NzlkZDM5NGYyM2U1ZjEwNzdhNGM5YzcyMGM5NWZlLi41
N2EyODI0YTg1MjY1OGE5NmVjZDAzMmU0NTE1NDU4NjZmZDEzNWNjIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTY0LDEwICs2NCwxMCBAQCBQYXNz
UmVmUHRyPFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
Tm9kZSogbm9kZSwgQXR0cmlidQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCktPnRva2VuaXplcigpKSB7CisgICAgICAgIGlm
IChmcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBD
aGFuZ2UgdG8gdXNlIHNjcmlwdC0+ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpIHdoZW4gaW1wbGVt
ZW50ZWQuCi0gICAgICAgICAgICBsaW5lTnVtYmVyID0gZnJhbWUtPmRvY3VtZW50KCktPnRva2Vu
aXplcigpLT5saW5lTnVtYmVyKCk7Ci0gICAgICAgICAgICBjb2x1bW5OdW1iZXIgPSBmcmFtZS0+
ZG9jdW1lbnQoKS0+dG9rZW5pemVyKCktPmNvbHVtbk51bWJlcigpOworICAgICAgICAgICAgbGlu
ZU51bWJlciA9IGZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKS0+bGluZU51bWJlcigpOworICAg
ICAgICAgICAgY29sdW1uTnVtYmVyID0gZnJhbWUtPmRvY3VtZW50KCktPnBhcnNlcigpLT5jb2x1
bW5OdW1iZXIoKTsKICAgICAgICAgfQogICAgICAgICBzb3VyY2VVUkwgPSBub2RlLT5kb2N1bWVu
dCgpLT51cmwoKS5zdHJpbmcoKTsKICAgICB9CkBAIC05NywxMCArOTcsMTAgQEAgUGFzc1JlZlB0
cjxWOExhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKEZyYW1l
KiBmcmFtZSwgQXR0cmkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGZyYW1l
LT5kb2N1bWVudCgpLT50b2tlbml6ZXIoKSkgeworICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+
cGFyc2VyKCkpIHsKICAgICAgICAgLy8gRklYTUU6IENoYW5nZSB0byB1c2Ugc2NyaXB0LT5ldmVu
dEhhbmRsZXJMaW5lTnVtYmVyKCkgd2hlbiBpbXBsZW1lbnRlZC4KLSAgICAgICAgbGluZU51bWJl
ciA9IGZyYW1lLT5kb2N1bWVudCgpLT50b2tlbml6ZXIoKS0+bGluZU51bWJlcigpOwotICAgICAg
ICBjb2x1bW5OdW1iZXIgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dG9rZW5pemVyKCktPmNvbHVtbk51
bWJlcigpOworICAgICAgICBsaW5lTnVtYmVyID0gZnJhbWUtPmRvY3VtZW50KCktPnBhcnNlcigp
LT5saW5lTnVtYmVyKCk7CisgICAgICAgIGNvbHVtbk51bWJlciA9IGZyYW1lLT5kb2N1bWVudCgp
LT5wYXJzZXIoKS0+Y29sdW1uTnVtYmVyKCk7CiAgICAgfQogICAgIHNvdXJjZVVSTCA9IGZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKICAgICByZXR1cm4gVjhMYXp5RXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBmcmFtZS0+ZG9jdW1lbnQo
KS0+aXNTVkdEb2N1bWVudCgpLCBhdHRyLT52YWx1ZSgpLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgV29ybGRDb250ZXh0SGFuZGxlKFVzZU1haW5Xb3JsZCkpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IDk3N2M0YmNkZmI3ZTJlNzJkZTVhOTE4ODczOTI3ZTEyYWY5ODY3YzYuLjYzNWQzM2Yw
ZjAxNmM3NmJmYjZjMzEyOWVkMWQwMjdhYWZmOTc0ZGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTc2LDcgKzc2
LDcgQEAKICNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lQ29s
bGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxQYXJzZXIu
aCIKKyNpbmNsdWRlICJMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSFRN
TFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUaXRsZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIERvY3VtZW50
OjpyZW1vdmVkTGFzdFJlZigpCiAgICAgICAgIGRlbGV0ZUFsbFZhbHVlcyhtX21hcmtlcnMpOwog
ICAgICAgICBtX21hcmtlcnMuY2xlYXIoKTsKIAotICAgICAgICBtX3Rva2VuaXplci5jbGVhcigp
OworICAgICAgICBtX3BhcnNlci5jbGVhcigpOwogCiAgICAgICAgIG1fY3NzQ2FudmFzRWxlbWVu
dHMuY2xlYXIoKTsKIApAQCAtNTI0LDcgKzUyNCw3IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQog
ICAgIGRlc3Ryb3lBbGxXcmFwcGVyQ2FjaGVzKCk7CiAjZW5kaWYKIAotICAgIG1fdG9rZW5pemVy
LmNsZWFyKCk7CisgICAgbV9wYXJzZXIuY2xlYXIoKTsKICAgICBtX2RvY3VtZW50ID0gMDsKICAg
ICBtX2RvY0xvYWRlci5jbGVhcigpOwogCkBAIC0xNjYyLDcgKzE2NjIsNyBAQCB2b2lkIERvY3Vt
ZW50OjpzZXRWaXN1YWxseU9yZGVyZWQoKQogICAgICAgICByZW5kZXJlcigpLT5zdHlsZSgpLT5z
ZXRWaXN1YWxseU9yZGVyZWQodHJ1ZSk7CiB9CiAKLURvY3VtZW50UGFyc2VyKiBEb2N1bWVudDo6
Y3JlYXRlVG9rZW5pemVyKCkKK0RvY3VtZW50UGFyc2VyKiBEb2N1bWVudDo6Y3JlYXRlUGFyc2Vy
KCkKIHsKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgcGFzcyB0aGUgZnJhbWUg
aW5zdGVhZAogICAgIHJldHVybiBuZXcgWE1MRG9jdW1lbnRQYXJzZXIodGhpcywgdmlldygpKTsK
QEAgLTE2NzcsNyArMTY3Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6Om9wZW4oRG9jdW1lbnQqIG93bmVy
RG9jdW1lbnQpCiAgICAgfQogCiAgICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgaWYgKG1fZnJh
bWUtPmxvYWRlcigpLT5pc0xvYWRpbmdNYWluUmVzb3VyY2UoKSB8fCAodG9rZW5pemVyKCkgJiYg
dG9rZW5pemVyKCktPmV4ZWN1dGluZ1NjcmlwdCgpKSkKKyAgICAgICAgaWYgKG1fZnJhbWUtPmxv
YWRlcigpLT5pc0xvYWRpbmdNYWluUmVzb3VyY2UoKSB8fCAocGFyc2VyKCkgJiYgcGFyc2VyKCkt
PmV4ZWN1dGluZ1NjcmlwdCgpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAKICAgICAgICAg
aWYgKG1fZnJhbWUtPmxvYWRlcigpLT5zdGF0ZSgpID09IEZyYW1lU3RhdGVQcm92aXNpb25hbCkK
QEAgLTE2OTUsMTIgKzE2OTUsMTIgQEAgdm9pZCBEb2N1bWVudDo6b3BlbihEb2N1bWVudCogb3du
ZXJEb2N1bWVudCkKIAogdm9pZCBEb2N1bWVudDo6Y2FuY2VsUGFyc2luZygpCiB7Ci0gICAgaWYg
KG1fdG9rZW5pemVyKSB7Ci0gICAgICAgIC8vIFdlIGhhdmUgdG8gY2xlYXIgdGhlIHRva2VuaXpl
ciB0byBhdm9pZCBwb3NzaWJseSB0cmlnZ2VyaW5nCisgICAgaWYgKG1fcGFyc2VyKSB7CisgICAg
ICAgIC8vIFdlIGhhdmUgdG8gY2xlYXIgdGhlIHBhcnNlciB0byBhdm9pZCBwb3NzaWJseSB0cmln
Z2VyaW5nCiAgICAgICAgIC8vIHRoZSBvbmxvYWQgaGFuZGxlciB3aGVuIGNsb3NpbmcgYXMgYSBz
aWRlIGVmZmVjdCBvZiBhIGNhbmNlbC1zdHlsZQogICAgICAgICAvLyBjaGFuZ2UsIHN1Y2ggYXMg
b3BlbmluZyBhIG5ldyBkb2N1bWVudCBvciBjbG9zaW5nIHRoZSB3aW5kb3cgd2hpbGUKICAgICAg
ICAgLy8gc3RpbGwgcGFyc2luZwotICAgICAgICBtX3Rva2VuaXplci5jbGVhcigpOworICAgICAg
ICBtX3BhcnNlci5jbGVhcigpOwogICAgICAgICBjbG9zZSgpOwogICAgIH0KIH0KQEAgLTE3MDks
MTUgKzE3MDksMTUgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRPcGVuKCkKIHsKICAgICBjYW5j
ZWxQYXJzaW5nKCk7CiAKLSAgICBtX3Rva2VuaXplci5jbGVhcigpOworICAgIG1fcGFyc2VyLmNs
ZWFyKCk7CiAKICAgICByZW1vdmVDaGlsZHJlbigpOwogCi0gICAgbV90b2tlbml6ZXIgPSBjcmVh
dGVUb2tlbml6ZXIoKTsKKyAgICBtX3BhcnNlciA9IGNyZWF0ZVBhcnNlcigpOwogICAgIHNldFBh
cnNpbmcodHJ1ZSk7CiAKICAgICBpZiAobV9mcmFtZSkKLSAgICAgICAgbV90b2tlbml6ZXItPnNl
dFhTU0F1ZGl0b3IobV9mcmFtZS0+c2NyaXB0KCktPnhzc0F1ZGl0b3IoKSk7CisgICAgICAgIG1f
cGFyc2VyLT5zZXRYU1NBdWRpdG9yKG1fZnJhbWUtPnNjcmlwdCgpLT54c3NBdWRpdG9yKCkpOwog
CiAgICAgLy8gSWYgd2UgcmVsb2FkLCB0aGUgYW5pbWF0aW9uIGNvbnRyb2xsZXIgc3RpY2tzIGFy
b3VuZCBhbmQgaGFzCiAgICAgLy8gYSBzdGFsZSBhbmltYXRpb24gdGltZS4gV2UgbmVlZCB0byB1
cGRhdGUgaXQgaGVyZS4KQEAgLTE3OTUsMTggKzE3OTUsMTggQEAgdm9pZCBEb2N1bWVudDo6aW1w
bGljaXRDbG9zZSgpCiAgICAgfQogCiAgICAgYm9vbCB3YXNMb2NhdGlvbkNoYW5nZVBlbmRpbmcg
PSBmcmFtZSgpICYmIGZyYW1lKCktPnJlZGlyZWN0U2NoZWR1bGVyKCktPmxvY2F0aW9uQ2hhbmdl
UGVuZGluZygpOwotICAgIGJvb2wgZG9sb2FkID0gIXBhcnNpbmcoKSAmJiBtX3Rva2VuaXplciAm
JiAhbV9wcm9jZXNzaW5nTG9hZEV2ZW50ICYmICF3YXNMb2NhdGlvbkNoYW5nZVBlbmRpbmc7Cisg
ICAgYm9vbCBkb2xvYWQgPSAhcGFyc2luZygpICYmIG1fcGFyc2VyICYmICFtX3Byb2Nlc3NpbmdM
b2FkRXZlbnQgJiYgIXdhc0xvY2F0aW9uQ2hhbmdlUGVuZGluZzsKICAgICAKICAgICBpZiAoIWRv
bG9hZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wcm9jZXNzaW5nTG9hZEV2ZW50ID0gdHJ1
ZTsKIAotICAgIG1fd2VsbEZvcm1lZCA9IG1fdG9rZW5pemVyICYmIG1fdG9rZW5pemVyLT53ZWxs
Rm9ybWVkKCk7CisgICAgbV93ZWxsRm9ybWVkID0gbV9wYXJzZXIgJiYgbV9wYXJzZXItPndlbGxG
b3JtZWQoKTsKIAotICAgIC8vIFdlIGhhdmUgdG8gY2xlYXIgdGhlIHRva2VuaXplciwgaW4gY2Fz
ZSBzb21lb25lIGRvY3VtZW50LndyaXRlKClzIGZyb20gdGhlCisgICAgLy8gV2UgaGF2ZSB0byBj
bGVhciB0aGUgcGFyc2VyLCBpbiBjYXNlIHNvbWVvbmUgZG9jdW1lbnQud3JpdGUoKXMgZnJvbSB0
aGUKICAgICAvLyBvbkxvYWQgZXZlbnQgaGFuZGxlciwgYXMgaW4gUmFkYXIgMzIwNjUyNC4KLSAg
ICBtX3Rva2VuaXplci5jbGVhcigpOworICAgIG1fcGFyc2VyLmNsZWFyKCk7CiAKICAgICAvLyBQ
YXJzZXIgc2hvdWxkIGhhdmUgcGlja2VkIHVwIGFsbCBwcmVsb2FkcyBieSBub3cKICAgICBtX2Rv
Y0xvYWRlci0+Y2xlYXJQcmVsb2FkcygpOwpAQCAtMTk1NCwyMSArMTk1NCwyMSBAQCB2b2lkIERv
Y3VtZW50Ojp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHRleHQsIERvY3VtZW50KiBvd25l
ckRvY3VtZW50KQogICAgICAgICBwcmludGYoIkJlZ2lubmluZyBhIGRvY3VtZW50LndyaXRlIGF0
ICVkXG4iLCBlbGFwc2VkVGltZSgpKTsKICNlbmRpZgogCi0gICAgaWYgKCFtX3Rva2VuaXplcikK
KyAgICBpZiAoIW1fcGFyc2VyKQogICAgICAgICBvcGVuKG93bmVyRG9jdW1lbnQpOwogCi0gICAg
QVNTRVJUKG1fdG9rZW5pemVyKTsKKyAgICBBU1NFUlQobV9wYXJzZXIpOwogICAgIGJvb2wgd2Fz
Rm9yY2VkU3luY2hyb25vdXMgPSBmYWxzZTsKLSAgICBIVE1MRG9jdW1lbnRQYXJzZXIqIHRva2Vu
aXplciA9IG1fdG9rZW5pemVyLT5hc0hUTUxUb2tlbml6ZXIoKTsKLSAgICBpZiAodG9rZW5pemVy
KSB7Ci0gICAgICAgIHdhc0ZvcmNlZFN5bmNocm9ub3VzID0gdG9rZW5pemVyLT5mb3JjZVN5bmNo
cm9ub3VzKCk7Ci0gICAgICAgIHRva2VuaXplci0+c2V0Rm9yY2VTeW5jaHJvbm91cyh0cnVlKTsK
KyAgICBIVE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fcGFyc2VyLT5hc0hUTUxEb2N1bWVu
dFBhcnNlcigpOworICAgIGlmIChwYXJzZXIpIHsKKyAgICAgICAgd2FzRm9yY2VkU3luY2hyb25v
dXMgPSBwYXJzZXItPmZvcmNlU3luY2hyb25vdXMoKTsKKyAgICAgICAgcGFyc2VyLT5zZXRGb3Jj
ZVN5bmNocm9ub3VzKHRydWUpOwogICAgIH0KIAotICAgIG1fdG9rZW5pemVyLT53cml0ZSh0ZXh0
LCBmYWxzZSk7CisgICAgbV9wYXJzZXItPndyaXRlKHRleHQsIGZhbHNlKTsKIAotICAgIGlmICht
X3Rva2VuaXplciAmJiB0b2tlbml6ZXIgJiYgbV90b2tlbml6ZXItPmFzSFRNTFRva2VuaXplcigp
ID09IHRva2VuaXplcikKLSAgICAgICAgdG9rZW5pemVyLT5zZXRGb3JjZVN5bmNocm9ub3VzKHdh
c0ZvcmNlZFN5bmNocm9ub3VzKTsKKyAgICBpZiAobV9wYXJzZXIgJiYgcGFyc2VyICYmIG1fcGFy
c2VyLT5hc0hUTUxEb2N1bWVudFBhcnNlcigpID09IHBhcnNlcikKKyAgICAgICAgcGFyc2VyLT5z
ZXRGb3JjZVN5bmNocm9ub3VzKHdhc0ZvcmNlZFN5bmNocm9ub3VzKTsKIAogI2lmZGVmIElOU1RS
VU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKICAgICBpZiAoIW93bmVyRWxlbWVudCgpKQpAQCAtMTk5
NCwxMyArMTk5NCwxMyBAQCB2b2lkIERvY3VtZW50OjpmaW5pc2hQYXJzaW5nKCkKICAgICAgICAg
cHJpbnRmKCJSZWNlaXZlZCBhbGwgZGF0YSBhdCAlZFxuIiwgZWxhcHNlZFRpbWUoKSk7CiAjZW5k
aWYKICAgICAKLSAgICAvLyBMZXQgdGhlIHRva2VuaXplciBnbyB0aHJvdWdoIGFzIG11Y2ggZGF0
YSBhcyBpdCBjYW4uICBUaGVyZSB3aWxsIGJlIHRocmVlIHBvc3NpYmxlIG91dGNvbWVzIGFmdGVy
CisgICAgLy8gTGV0IHRoZSBwYXJzZXIgZ28gdGhyb3VnaCBhcyBtdWNoIGRhdGEgYXMgaXQgY2Fu
LiAgVGhlcmUgd2lsbCBiZSB0aHJlZSBwb3NzaWJsZSBvdXRjb21lcyBhZnRlcgogICAgIC8vIGZp
bmlzaCgpIGlzIGNhbGxlZDoKICAgICAvLyAoMSkgQWxsIHJlbWFpbmluZyBkYXRhIGlzIHBhcnNl
ZCwgZG9jdW1lbnQgaXNuJ3QgbG9hZGVkIHlldAotICAgIC8vICgyKSBBbGwgcmVtYWluaW5nIGRh
dGEgaXMgcGFyc2VkLCBkb2N1bWVudCBpcyBsb2FkZWQsIHRva2VuaXplciBnZXRzIGRlbGV0ZWQK
KyAgICAvLyAoMikgQWxsIHJlbWFpbmluZyBkYXRhIGlzIHBhcnNlZCwgZG9jdW1lbnQgaXMgbG9h
ZGVkLCBwYXJzZXIgZ2V0cyBkZWxldGVkCiAgICAgLy8gKDMpIERhdGEgaXMgc3RpbGwgcmVtYWlu
aW5nIHRvIGJlIHBhcnNlZC4KLSAgICBpZiAobV90b2tlbml6ZXIpCi0gICAgICAgIG1fdG9rZW5p
emVyLT5maW5pc2goKTsKKyAgICBpZiAobV9wYXJzZXIpCisgICAgICAgIG1fcGFyc2VyLT5maW5p
c2goKTsKIH0KIAogY29uc3QgS1VSTCYgRG9jdW1lbnQ6OnZpcnR1YWxVUkwoKSBjb25zdApAQCAt
MjU2NSw4ICsyNTY1LDggQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlUGVuZGluZ1NoZWV0KCkKIAog
ICAgIHVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKICAgICAKLSAgICBpZiAoIW1fcGVuZGluZ1N0eWxl
c2hlZXRzICYmIG1fdG9rZW5pemVyKQotICAgICAgICBtX3Rva2VuaXplci0+ZXhlY3V0ZVNjcmlw
dHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKKyAgICBpZiAoIW1fcGVuZGluZ1N0eWxlc2hlZXRz
ICYmIG1fcGFyc2VyKQorICAgICAgICBtX3BhcnNlci0+ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9y
U3R5bGVzaGVldHMoKTsKIAogICAgIGlmICghbV9wZW5kaW5nU3R5bGVzaGVldHMgJiYgbV9nb3Rv
QW5jaG9yTmVlZGVkQWZ0ZXJTdHlsZXNoZWV0c0xvYWQgJiYgdmlldygpKQogICAgICAgICB2aWV3
KCktPnNjcm9sbFRvRnJhZ21lbnQobV9mcmFtZS0+bG9hZGVyKCktPnVybCgpKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4
IDdjZTk3Y2I3M2IwOGQyN2MyZGU5ZjIyZDkzZjU2YzY0ZjE4NTJkMDMuLjZlZDdmOTBkODI5NWQ5
NDNmODRlNDE0MDQ3ZmE4MTUwYmY5YzZkMzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNTM2LDggKzUzNiw4IEBAIHB1
YmxpYzoKICAgICBDU1NTdHlsZVNoZWV0KiBlbGVtZW50U2hlZXQoKTsKICAgICBDU1NTdHlsZVNo
ZWV0KiBtYXBwZWRFbGVtZW50U2hlZXQoKTsKICAgICAKLSAgICB2aXJ0dWFsIERvY3VtZW50UGFy
c2VyKiBjcmVhdGVUb2tlbml6ZXIoKTsKLSAgICBEb2N1bWVudFBhcnNlciogdG9rZW5pemVyKCkg
eyByZXR1cm4gbV90b2tlbml6ZXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIERvY3VtZW50UGFyc2Vy
KiBjcmVhdGVQYXJzZXIoKTsKKyAgICBEb2N1bWVudFBhcnNlciogcGFyc2VyKCkgeyByZXR1cm4g
bV9wYXJzZXIuZ2V0KCk7IH0KICAgICAKICAgICBib29sIHByaW50aW5nKCkgY29uc3QgeyByZXR1
cm4gbV9wcmludGluZzsgfQogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwKSB7IG1fcHJpbnRp
bmcgPSBwOyB9CkBAIC0xMDMzLDcgKzEwMzMsNyBAQCBwcml2YXRlOgogCiAgICAgRnJhbWUqIG1f
ZnJhbWU7CiAgICAgT3duUHRyPERvY0xvYWRlcj4gbV9kb2NMb2FkZXI7Ci0gICAgT3duUHRyPERv
Y3VtZW50UGFyc2VyPiBtX3Rva2VuaXplcjsKKyAgICBPd25QdHI8RG9jdW1lbnRQYXJzZXI+IG1f
cGFyc2VyOwogICAgIGJvb2wgbV93ZWxsRm9ybWVkOwogCiAgICAgLy8gRG9jdW1lbnQgVVJMcy4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmggYi9XZWJDb3JlL2RvbS9E
b2N1bWVudFBhcnNlci5oCmluZGV4IGU4YmViZjk5YjgwMjE0MGNhYTYxMzZkNDBmOTkyOTkyMDA2
YWRhMGMuLmM3ZWVhMDY0YzdhNDYwZjQxNzViNThjOTRlNGJjOThiNzU1NDI1OTUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1l
bnRQYXJzZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAg
ICBjbGFzcyBIVE1MUGFyc2VyOworICAgIGNsYXNzIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I7
CiAgICAgY2xhc3MgSFRNTERvY3VtZW50UGFyc2VyOwogICAgIGNsYXNzIFNlZ21lbnRlZFN0cmlu
ZzsKICAgICBjbGFzcyBYU1NBdWRpdG9yOwpAQCAtNTgsOCArNTgsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0
eWxlc2hlZXRzKCkge30KIAotICAgICAgICB2aXJ0dWFsIEhUTUxQYXJzZXIqIGh0bWxQYXJzZXIo
KSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgICAgIHZpcnR1YWwgSFRNTERvY3VtZW50UGFyc2Vy
KiBhc0hUTUxUb2tlbml6ZXIoKSB7IHJldHVybiAwOyB9CisgICAgICAgIHZpcnR1YWwgTGVnYWN5
SFRNTFRyZWVDb25zdHJ1Y3RvciogaHRtbFRyZWVDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KKyAgICAgICAgdmlydHVhbCBIVE1MRG9jdW1lbnRQYXJzZXIqIGFzSFRNTERvY3VtZW50
UGFyc2VyKCkgeyByZXR1cm4gMDsgfQogCiAgICAgICAgIFhTU0F1ZGl0b3IqIHhzc0F1ZGl0b3Io
KSBjb25zdCB7IHJldHVybiBtX1hTU0F1ZGl0b3I7IH0KICAgICAgICAgdm9pZCBzZXRYU1NBdWRp
dG9yKFhTU0F1ZGl0b3IqIGF1ZGl0b3IpIHsgbV9YU1NBdWRpdG9yID0gYXVkaXRvcjsgfQpAQCAt
NzIsOCArNzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIC8vIFRoZSB0b2tlbml6ZXIgaGFzIGJ1ZmZlcnMsIHNvIHBhcnNpbmcgbWF5IGNv
bnRpbnVlIGV2ZW4gYWZ0ZXIKLSAgICAgICAgLy8gaXQgc3RvcHMgcmVjZWl2aW5nIGRhdGEuIFdl
IHVzZSBtX3BhcnNlclN0b3BwZWQgdG8gc3RvcCB0aGUgdG9rZW5pemVyCisgICAgICAgIC8vIFRo
ZSBwYXJzZXIgaGFzIGJ1ZmZlcnMsIHNvIHBhcnNpbmcgbWF5IGNvbnRpbnVlIGV2ZW4gYWZ0ZXIK
KyAgICAgICAgLy8gaXQgc3RvcHMgcmVjZWl2aW5nIGRhdGEuIFdlIHVzZSBtX3BhcnNlclN0b3Bw
ZWQgdG8gc3RvcCB0aGUgcGFyc2VyCiAgICAgICAgIC8vIGV2ZW4gd2hlbiBpdCBoYXMgYnVmZmVy
ZWQgZGF0YS4KICAgICAgICAgYm9vbCBtX3BhcnNlclN0b3BwZWQ7CiAgICAgICAgIGJvb2wgbV9p
blZpZXdTb3VyY2VNb2RlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVu
dHMuY3BwIGIvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IDMzNjQ2OTc1
M2IxZDM3NDdiMTY2NGFmODk3NzRhZDMzNDZjZGFiMGIuLjIzZDAyOTdkOTg3Nzk0MDExNmY4Y2E2
NWUzOGY1ZmNkMjU5ODc5MWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1l
bnRzLmNwcAorKysgYi9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKQEAgLTEwNSw3
ICsxMDUsNyBAQCBzdGF0aWMgTWVzc2FnZUxldmVsIHZpZXdwb3J0RXJyb3JNZXNzYWdlTGV2ZWwo
Vmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlKQogCiB2b2lkIHJlcG9ydFZpZXdwb3J0V2Fybmlu
ZyhEb2N1bWVudCogZG9jdW1lbnQsIFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudCkKIHsKLSAgICBEb2N1bWVudFBhcnNlciogdG9rZW5pemVyID0g
ZG9jdW1lbnQtPnRva2VuaXplcigpOworICAgIERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBkb2N1
bWVudC0+cGFyc2VyKCk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsK
ICAgICBpZiAoIWZyYW1lKQpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgcmVwb3J0Vmlld3BvcnRX
YXJuaW5nKERvY3VtZW50KiBkb2N1bWVudCwgVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBj
b25zCiAgICAgU3RyaW5nIG1lc3NhZ2UgPSB2aWV3cG9ydEVycm9yTWVzc2FnZVRlbXBsYXRlKGVy
cm9yQ29kZSk7CiAgICAgbWVzc2FnZS5yZXBsYWNlKCIlcmVwbGFjZW1lbnQiLCByZXBsYWNlbWVu
dCk7CiAKLSAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1M
TWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIHZpZXdwb3J0RXJyb3JNZXNzYWdlTGV2ZWwo
ZXJyb3JDb2RlKSwgbWVzc2FnZSwgdG9rZW5pemVyID8gdG9rZW5pemVyLT5saW5lTnVtYmVyKCkg
KyAxIDogMCwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpKTsKKyAgICBmcmFtZS0+ZG9tV2luZG93
KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5
cGUsIHZpZXdwb3J0RXJyb3JNZXNzYWdlTGV2ZWwoZXJyb3JDb2RlKSwgbWVzc2FnZSwgcGFyc2Vy
ID8gcGFyc2VyLT5saW5lTnVtYmVyKCkgKyAxIDogMCwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAKaW5kZXggZmY5ODYxYWM5MzE5ZjcxNThiZGY4YWE3NmM3ZGFhNWEyZDFh
OWQwZS4uMmExYmFjNjA5M2Q3ZWRhYzk4ZDFlZWIzMWU4ZWVmNzY4OGY3NWZiNCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC0xODAsMTAgKzE4MCwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChjYWxsYmFjayk7CiAgICAgfQogCi0g
ICAgdm9pZCBjYWxsQW5kUmVtb3ZlRmlyc3RDYWxsYmFjayhYTUxEb2N1bWVudFBhcnNlciogdG9r
ZW5pemVyKQorICAgIHZvaWQgY2FsbEFuZFJlbW92ZUZpcnN0Q2FsbGJhY2soWE1MRG9jdW1lbnRQ
YXJzZXIqIHBhcnNlcikKICAgICB7CiAgICAgICAgIE93blB0cjxQZW5kaW5nQ2FsbGJhY2s+IGNh
bGxiYWNrKG1fY2FsbGJhY2tzLnRha2VGaXJzdCgpKTsKLSAgICAgICAgY2FsbGJhY2stPmNhbGwo
dG9rZW5pemVyKTsKKyAgICAgICAgY2FsbGJhY2stPmNhbGwocGFyc2VyKTsKICAgICB9CiAKICAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrcy5pc0VtcHR5KCk7IH0K
QEAgLTE5MSw3ICsxOTEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0cnVjdCBQZW5kaW5n
Q2FsbGJhY2sgewogICAgICAgICB2aXJ0dWFsIH5QZW5kaW5nQ2FsbGJhY2soKSB7IH0KLSAgICAg
ICAgdmlydHVhbCB2b2lkIGNhbGwoWE1MRG9jdW1lbnRQYXJzZXIqIHRva2VuaXplcikgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsbChYTUxEb2N1bWVudFBhcnNlciogcGFyc2VyKSA9IDA7
CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nU3RhcnRFbGVtZW50TlNDYWxsYmFjayA6IHB1
YmxpYyBQZW5kaW5nQ2FsbGJhY2sgewpAQCAtMjA5LDkgKzIwOSw5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB4bWxGcmVlKGF0dHJpYnV0ZXMpOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVh
bCB2b2lkIGNhbGwoWE1MRG9jdW1lbnRQYXJzZXIqIHRva2VuaXplcikKKyAgICAgICAgdmlydHVh
bCB2b2lkIGNhbGwoWE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlcikKICAgICAgICAgewotICAgICAg
ICAgICAgdG9rZW5pemVyLT5zdGFydEVsZW1lbnROcyh4bWxMb2NhbE5hbWUsIHhtbFByZWZpeCwg
eG1sVVJJLAorICAgICAgICAgICAgcGFyc2VyLT5zdGFydEVsZW1lbnROcyh4bWxMb2NhbE5hbWUs
IHhtbFByZWZpeCwgeG1sVVJJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuYl9uYW1lc3BhY2VzLCBjb25zdF9jYXN0PGNvbnN0IHhtbENoYXIqKj4obmFtZXNwYWNlcyks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5iX2F0dHJpYnV0ZXMsIG5i
X2RlZmF1bHRlZCwgY29uc3RfY2FzdDxjb25zdCB4bWxDaGFyKio+KGF0dHJpYnV0ZXMpKTsKICAg
ICAgICAgfQpAQCAtMjI3LDkgKzIyNyw5IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIHN0cnVj
dCBQZW5kaW5nRW5kRWxlbWVudE5TQ2FsbGJhY2sgOiBwdWJsaWMgUGVuZGluZ0NhbGxiYWNrIHsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGNhbGwoWE1MRG9jdW1lbnRQYXJzZXIqIHRva2VuaXplcikK
KyAgICAgICAgdmlydHVhbCB2b2lkIGNhbGwoWE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlcikKICAg
ICAgICAgewotICAgICAgICAgICAgdG9rZW5pemVyLT5lbmRFbGVtZW50TnMoKTsKKyAgICAgICAg
ICAgIHBhcnNlci0+ZW5kRWxlbWVudE5zKCk7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC0yMzks
OSArMjM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHhtbEZyZWUocyk7CiAgICAgICAgIH0K
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsbChYTUxEb2N1bWVudFBhcnNlciogdG9rZW5pemVy
KQorICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsbChYTUxEb2N1bWVudFBhcnNlciogcGFyc2VyKQog
ICAgICAgICB7Ci0gICAgICAgICAgICB0b2tlbml6ZXItPmNoYXJhY3RlcnMocywgbGVuKTsKKyAg
ICAgICAgICAgIHBhcnNlci0+Y2hhcmFjdGVycyhzLCBsZW4pOwogICAgICAgICB9CiAKICAgICAg
ICAgeG1sQ2hhciogczsKQEAgLTI1NSw5ICsyNTUsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
eG1sRnJlZShkYXRhKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKFhN
TERvY3VtZW50UGFyc2VyKiB0b2tlbml6ZXIpCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKFhN
TERvY3VtZW50UGFyc2VyKiBwYXJzZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRva2VuaXpl
ci0+cHJvY2Vzc2luZ0luc3RydWN0aW9uKHRhcmdldCwgZGF0YSk7CisgICAgICAgICAgICBwYXJz
ZXItPnByb2Nlc3NpbmdJbnN0cnVjdGlvbih0YXJnZXQsIGRhdGEpOwogICAgICAgICB9CiAKICAg
ICAgICAgeG1sQ2hhciogdGFyZ2V0OwpAQCAtMjcwLDkgKzI3MCw5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB4bWxGcmVlKHMpOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGNh
bGwoWE1MRG9jdW1lbnRQYXJzZXIqIHRva2VuaXplcikKKyAgICAgICAgdmlydHVhbCB2b2lkIGNh
bGwoWE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlcikKICAgICAgICAgewotICAgICAgICAgICAgdG9r
ZW5pemVyLT5jZGF0YUJsb2NrKHMsIGxlbik7CisgICAgICAgICAgICBwYXJzZXItPmNkYXRhQmxv
Y2socywgbGVuKTsKICAgICAgICAgfQogCiAgICAgICAgIHhtbENoYXIqIHM7CkBAIC0yODUsOSAr
Mjg1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHhtbEZyZWUocyk7CiAgICAgICAgIH0KIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsbChYTUxEb2N1bWVudFBhcnNlciogdG9rZW5pemVyKQor
ICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsbChYTUxEb2N1bWVudFBhcnNlciogcGFyc2VyKQogICAg
ICAgICB7Ci0gICAgICAgICAgICB0b2tlbml6ZXItPmNvbW1lbnQocyk7CisgICAgICAgICAgICBw
YXJzZXItPmNvbW1lbnQocyk7CiAgICAgICAgIH0KIAogICAgICAgICB4bWxDaGFyKiBzOwpAQCAt
MzAxLDkgKzMwMSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB4bWxGcmVlKHN5c3RlbUlEKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKFhNTERvY3VtZW50UGFyc2Vy
KiB0b2tlbml6ZXIpCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKFhNTERvY3VtZW50UGFyc2Vy
KiBwYXJzZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRva2VuaXplci0+aW50ZXJuYWxTdWJz
ZXQobmFtZSwgZXh0ZXJuYWxJRCwgc3lzdGVtSUQpOworICAgICAgICAgICAgcGFyc2VyLT5pbnRl
cm5hbFN1YnNldChuYW1lLCBleHRlcm5hbElELCBzeXN0ZW1JRCk7CiAgICAgICAgIH0KIAogICAg
ICAgICB4bWxDaGFyKiBuYW1lOwpAQCAtMzE3LDkgKzMxNyw5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICB4bWxGcmVlKG1lc3NhZ2UpOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IGNhbGwoWE1MRG9jdW1lbnRQYXJzZXIqIHRva2VuaXplcikKKyAgICAgICAgdmlydHVhbCB2b2lk
IGNhbGwoWE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlcikKICAgICAgICAgewotICAgICAgICAgICAg
dG9rZW5pemVyLT5oYW5kbGVFcnJvcih0eXBlLCByZWludGVycHJldF9jYXN0PGNoYXIqPihtZXNz
YWdlKSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKKyAgICAgICAgICAgIHBhcnNlci0+aGFu
ZGxlRXJyb3IodHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWVzc2FnZSksIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIH0KIAogICAgICAgICBYTUxEb2N1bWVudFBhcnNl
cjo6RXJyb3JUeXBlIHR5cGU7CkBAIC0xMDYxLDcgKzEwNjEsNyBAQCB2b2lkIFhNTERvY3VtZW50
UGFyc2VyOjppbnRlcm5hbFN1YnNldChjb25zdCB4bWxDaGFyKiBuYW1lLCBjb25zdCB4bWxDaGFy
KiBleHRlcgogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBYTUxEb2N1bWVudFBhcnNlciogZ2V0
VG9rZW5pemVyKHZvaWQqIGNsb3N1cmUpCitzdGF0aWMgaW5saW5lIFhNTERvY3VtZW50UGFyc2Vy
KiBnZXRQYXJzZXIodm9pZCogY2xvc3VyZSkKIHsKICAgICB4bWxQYXJzZXJDdHh0UHRyIGN0eHQg
PSBzdGF0aWNfY2FzdDx4bWxQYXJzZXJDdHh0UHRyPihjbG9zdXJlKTsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8WE1MRG9jdW1lbnRQYXJzZXIqPihjdHh0LT5fcHJpdmF0ZSk7CkBAIC0xMDg2LDcg
KzEwODYsNyBAQCBzdGF0aWMgdm9pZCBzdGFydEVsZW1lbnROc0hhbmRsZXIodm9pZCogY2xvc3Vy
ZSwgY29uc3QgeG1sQ2hhciogbG9jYWxuYW1lLCBjb25zdAogICAgIGlmIChoYWNrQXJvdW5kTGli
WE1MRW50aXR5QnVnKGNsb3N1cmUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnZXRUb2tlbml6
ZXIoY2xvc3VyZSktPnN0YXJ0RWxlbWVudE5zKGxvY2FsbmFtZSwgcHJlZml4LCB1cmksIG5iX25h
bWVzcGFjZXMsIG5hbWVzcGFjZXMsIG5iX2F0dHJpYnV0ZXMsIG5iX2RlZmF1bHRlZCwgbGlieG1s
QXR0cmlidXRlcyk7CisgICAgZ2V0UGFyc2VyKGNsb3N1cmUpLT5zdGFydEVsZW1lbnROcyhsb2Nh
bG5hbWUsIHByZWZpeCwgdXJpLCBuYl9uYW1lc3BhY2VzLCBuYW1lc3BhY2VzLCBuYl9hdHRyaWJ1
dGVzLCBuYl9kZWZhdWx0ZWQsIGxpYnhtbEF0dHJpYnV0ZXMpOwogfQogCiBzdGF0aWMgdm9pZCBl
bmRFbGVtZW50TnNIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHhtbENoYXIqLCBjb25zdCB4
bWxDaGFyKiwgY29uc3QgeG1sQ2hhciopCkBAIC0xMDk0LDcgKzEwOTQsNyBAQCBzdGF0aWMgdm9p
ZCBlbmRFbGVtZW50TnNIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHhtbENoYXIqLCBjb25z
dCB4bWxDaGFyKiwgYwogICAgIGlmIChoYWNrQXJvdW5kTGliWE1MRW50aXR5QnVnKGNsb3N1cmUp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBnZXRUb2tlbml6ZXIoY2xvc3VyZSktPmVuZEVsZW1l
bnROcygpOworICAgIGdldFBhcnNlcihjbG9zdXJlKS0+ZW5kRWxlbWVudE5zKCk7CiB9CiAKIHN0
YXRpYyB2b2lkIGNoYXJhY3RlcnNIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHhtbENoYXIq
IHMsIGludCBsZW4pCkBAIC0xMTAyLDcgKzExMDIsNyBAQCBzdGF0aWMgdm9pZCBjaGFyYWN0ZXJz
SGFuZGxlcih2b2lkKiBjbG9zdXJlLCBjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVuKQogICAgIGlm
IChoYWNrQXJvdW5kTGliWE1MRW50aXR5QnVnKGNsb3N1cmUpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBnZXRUb2tlbml6ZXIoY2xvc3VyZSktPmNoYXJhY3RlcnMocywgbGVuKTsKKyAgICBnZXRQ
YXJzZXIoY2xvc3VyZSktPmNoYXJhY3RlcnMocywgbGVuKTsKIH0KIAogc3RhdGljIHZvaWQgcHJv
Y2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcih2b2lkKiBjbG9zdXJlLCBjb25zdCB4bWxDaGFyKiB0
YXJnZXQsIGNvbnN0IHhtbENoYXIqIGRhdGEpCkBAIC0xMTEwLDcgKzExMTAsNyBAQCBzdGF0aWMg
dm9pZCBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHht
bENoYXIqIHRhcmdldCwgYwogICAgIGlmIChoYWNrQXJvdW5kTGliWE1MRW50aXR5QnVnKGNsb3N1
cmUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnZXRUb2tlbml6ZXIoY2xvc3VyZSktPnByb2Nl
c3NpbmdJbnN0cnVjdGlvbih0YXJnZXQsIGRhdGEpOworICAgIGdldFBhcnNlcihjbG9zdXJlKS0+
cHJvY2Vzc2luZ0luc3RydWN0aW9uKHRhcmdldCwgZGF0YSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNk
YXRhQmxvY2tIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHhtbENoYXIqIHMsIGludCBsZW4p
CkBAIC0xMTE4LDcgKzExMTgsNyBAQCBzdGF0aWMgdm9pZCBjZGF0YUJsb2NrSGFuZGxlcih2b2lk
KiBjbG9zdXJlLCBjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVuKQogICAgIGlmIChoYWNrQXJvdW5k
TGliWE1MRW50aXR5QnVnKGNsb3N1cmUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnZXRUb2tl
bml6ZXIoY2xvc3VyZSktPmNkYXRhQmxvY2socywgbGVuKTsKKyAgICBnZXRQYXJzZXIoY2xvc3Vy
ZSktPmNkYXRhQmxvY2socywgbGVuKTsKIH0KIAogc3RhdGljIHZvaWQgY29tbWVudEhhbmRsZXIo
dm9pZCogY2xvc3VyZSwgY29uc3QgeG1sQ2hhciogY29tbWVudCkKQEAgLTExMjYsNyArMTEyNiw3
IEBAIHN0YXRpYyB2b2lkIGNvbW1lbnRIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHhtbENo
YXIqIGNvbW1lbnQpCiAgICAgaWYgKGhhY2tBcm91bmRMaWJYTUxFbnRpdHlCdWcoY2xvc3VyZSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGdldFRva2VuaXplcihjbG9zdXJlKS0+Y29tbWVudChj
b21tZW50KTsKKyAgICBnZXRQYXJzZXIoY2xvc3VyZSktPmNvbW1lbnQoY29tbWVudCk7CiB9CiAK
IFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDMpCkBAIC0xMTM0LDcgKzExMzQsNyBAQCBzdGF0aWMg
dm9pZCB3YXJuaW5nSGFuZGxlcih2b2lkKiBjbG9zdXJlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCAu
Li4pCiB7CiAgICAgdmFfbGlzdCBhcmdzOwogICAgIHZhX3N0YXJ0KGFyZ3MsIG1lc3NhZ2UpOwot
ICAgIGdldFRva2VuaXplcihjbG9zdXJlKS0+ZXJyb3IoWE1MRG9jdW1lbnRQYXJzZXI6Ondhcm5p
bmcsIG1lc3NhZ2UsIGFyZ3MpOworICAgIGdldFBhcnNlcihjbG9zdXJlKS0+ZXJyb3IoWE1MRG9j
dW1lbnRQYXJzZXI6Ondhcm5pbmcsIG1lc3NhZ2UsIGFyZ3MpOwogICAgIHZhX2VuZChhcmdzKTsK
IH0KIApAQCAtMTE0Myw3ICsxMTQzLDcgQEAgc3RhdGljIHZvaWQgZmF0YWxFcnJvckhhbmRsZXIo
dm9pZCogY2xvc3VyZSwgY29uc3QgY2hhciogbWVzc2FnZSwgLi4uKQogewogICAgIHZhX2xpc3Qg
YXJnczsKICAgICB2YV9zdGFydChhcmdzLCBtZXNzYWdlKTsKLSAgICBnZXRUb2tlbml6ZXIoY2xv
c3VyZSktPmVycm9yKFhNTERvY3VtZW50UGFyc2VyOjpmYXRhbCwgbWVzc2FnZSwgYXJncyk7Cisg
ICAgZ2V0UGFyc2VyKGNsb3N1cmUpLT5lcnJvcihYTUxEb2N1bWVudFBhcnNlcjo6ZmF0YWwsIG1l
c3NhZ2UsIGFyZ3MpOwogICAgIHZhX2VuZChhcmdzKTsKIH0KIApAQCAtMTE1Miw3ICsxMTUyLDcg
QEAgc3RhdGljIHZvaWQgbm9ybWFsRXJyb3JIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNvbnN0IGNo
YXIqIG1lc3NhZ2UsIC4uLikKIHsKICAgICB2YV9saXN0IGFyZ3M7CiAgICAgdmFfc3RhcnQoYXJn
cywgbWVzc2FnZSk7Ci0gICAgZ2V0VG9rZW5pemVyKGNsb3N1cmUpLT5lcnJvcihYTUxEb2N1bWVu
dFBhcnNlcjo6bm9uRmF0YWwsIG1lc3NhZ2UsIGFyZ3MpOworICAgIGdldFBhcnNlcihjbG9zdXJl
KS0+ZXJyb3IoWE1MRG9jdW1lbnRQYXJzZXI6Om5vbkZhdGFsLCBtZXNzYWdlLCBhcmdzKTsKICAg
ICB2YV9lbmQoYXJncyk7CiB9CiAKQEAgLTExOTksMTIgKzExOTksMTIgQEAgc3RhdGljIHhtbEVu
dGl0eVB0ciBnZXRFbnRpdHlIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHhtbENoYXIqIG5h
bWUpCiAgICAgfQogCiAgICAgZW50ID0geG1sR2V0RG9jRW50aXR5KGN0eHQtPm15RG9jLCBuYW1l
KTsKLSAgICBpZiAoIWVudCAmJiAoZ2V0VG9rZW5pemVyKGNsb3N1cmUpLT5pc1hIVE1MRG9jdW1l
bnQoKQorICAgIGlmICghZW50ICYmIChnZXRQYXJzZXIoY2xvc3VyZSktPmlzWEhUTUxEb2N1bWVu
dCgpCiAjaWYgRU5BQkxFKFhIVE1MTVApCi0gICAgICAgICAgICAgICAgIHx8IGdldFRva2VuaXpl
cihjbG9zdXJlKS0+aXNYSFRNTE1QRG9jdW1lbnQoKQorICAgICAgICAgICAgICAgICB8fCBnZXRQ
YXJzZXIoY2xvc3VyZSktPmlzWEhUTUxNUERvY3VtZW50KCkKICNlbmRpZgogI2lmIEVOQUJMRShX
TUwpCi0gICAgICAgICAgICAgICAgIHx8IGdldFRva2VuaXplcihjbG9zdXJlKS0+aXNXTUxEb2N1
bWVudCgpCisgICAgICAgICAgICAgICAgIHx8IGdldFBhcnNlcihjbG9zdXJlKS0+aXNXTUxEb2N1
bWVudCgpCiAjZW5kaWYKICAgICAgICApKSB7CiAgICAgICAgIGVudCA9IGdldFhIVE1MRW50aXR5
KG5hbWUpOwpAQCAtMTIxOCwxOSArMTIxOCwxOSBAQCBzdGF0aWMgeG1sRW50aXR5UHRyIGdldEVu
dGl0eUhhbmRsZXIodm9pZCogY2xvc3VyZSwgY29uc3QgeG1sQ2hhciogbmFtZSkKIHN0YXRpYyB2
b2lkIHN0YXJ0RG9jdW1lbnRIYW5kbGVyKHZvaWQqIGNsb3N1cmUpCiB7CiAgICAgeG1sUGFyc2Vy
Q3R4dCogY3R4dCA9IHN0YXRpY19jYXN0PHhtbFBhcnNlckN0eHQqPihjbG9zdXJlKTsKLSAgICBn
ZXRUb2tlbml6ZXIoY2xvc3VyZSktPnN0YXJ0RG9jdW1lbnQoY3R4dC0+dmVyc2lvbiwgY3R4dC0+
ZW5jb2RpbmcsIGN0eHQtPnN0YW5kYWxvbmUpOworICAgIGdldFBhcnNlcihjbG9zdXJlKS0+c3Rh
cnREb2N1bWVudChjdHh0LT52ZXJzaW9uLCBjdHh0LT5lbmNvZGluZywgY3R4dC0+c3RhbmRhbG9u
ZSk7CiAgICAgeG1sU0FYMlN0YXJ0RG9jdW1lbnQoY2xvc3VyZSk7CiB9CiAKIHN0YXRpYyB2b2lk
IGVuZERvY3VtZW50SGFuZGxlcih2b2lkKiBjbG9zdXJlKQogewotICAgIGdldFRva2VuaXplcihj
bG9zdXJlKS0+ZW5kRG9jdW1lbnQoKTsKKyAgICBnZXRQYXJzZXIoY2xvc3VyZSktPmVuZERvY3Vt
ZW50KCk7CiAgICAgeG1sU0FYMkVuZERvY3VtZW50KGNsb3N1cmUpOwogfQogCiBzdGF0aWMgdm9p
ZCBpbnRlcm5hbFN1YnNldEhhbmRsZXIodm9pZCogY2xvc3VyZSwgY29uc3QgeG1sQ2hhciogbmFt
ZSwgY29uc3QgeG1sQ2hhciogZXh0ZXJuYWxJRCwgY29uc3QgeG1sQ2hhciogc3lzdGVtSUQpCiB7
Ci0gICAgZ2V0VG9rZW5pemVyKGNsb3N1cmUpLT5pbnRlcm5hbFN1YnNldChuYW1lLCBleHRlcm5h
bElELCBzeXN0ZW1JRCk7CisgICAgZ2V0UGFyc2VyKGNsb3N1cmUpLT5pbnRlcm5hbFN1YnNldChu
YW1lLCBleHRlcm5hbElELCBzeXN0ZW1JRCk7CiAgICAgeG1sU0FYMkludGVybmFsU3Vic2V0KGNs
b3N1cmUsIG5hbWUsIGV4dGVybmFsSUQsIHN5c3RlbUlEKTsKIH0KIApAQCAtMTI0Niw3ICsxMjQ2
LDcgQEAgc3RhdGljIHZvaWQgZXh0ZXJuYWxTdWJzZXRIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNv
bnN0IHhtbENoYXIqLCBjb25zdCB4bWxDaGFyKgogICAgICAgICB8fCAoZXh0SWQgPT0gIi0vL1cz
Qy8vRFREIFhIVE1MIDEuMSBwbHVzIE1hdGhNTCAyLjAgcGx1cyBTVkcgMS4xLy9FTiIpCiAgICAg
ICAgIHx8IChleHRJZCA9PSAiLS8vV0FQRk9SVU0vL0RURCBYSFRNTCBNb2JpbGUgMS4wLy9FTiIp
CiAgICAgICAgKQotICAgICAgICBnZXRUb2tlbml6ZXIoY2xvc3VyZSktPnNldElzWEhUTUxEb2N1
bWVudCh0cnVlKTsgLy8gY29udHJvbHMgaWYgd2UgcmVwbGFjZSBlbnRpdGllcyBvciBub3QuCisg
ICAgICAgIGdldFBhcnNlcihjbG9zdXJlKS0+c2V0SXNYSFRNTERvY3VtZW50KHRydWUpOyAvLyBj
b250cm9scyBpZiB3ZSByZXBsYWNlIGVudGl0aWVzIG9yIG5vdC4KIH0KIAogc3RhdGljIHZvaWQg
aWdub3JhYmxlV2hpdGVzcGFjZUhhbmRsZXIodm9pZCosIGNvbnN0IHhtbENoYXIqLCBpbnQpCkBA
IC0xMzg4LDIyICsxMzg4LDIyIEBAIGJvb2wgcGFyc2VYTUxEb2N1bWVudEZyYWdtZW50KGNvbnN0
IFN0cmluZyYgY2h1bmssIERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFCiAgICAgaWYgKCFj
aHVuay5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBYTUxEb2N1bWVudFBh
cnNlciB0b2tlbml6ZXIoZnJhZ21lbnQsIHBhcmVudCwgc2NyaXB0aW5nUGVybWlzc2lvbik7Cisg
ICAgWE1MRG9jdW1lbnRQYXJzZXIgcGFyc2VyKGZyYWdtZW50LCBwYXJlbnQsIHNjcmlwdGluZ1Bl
cm1pc3Npb24pOwogCiAgICAgQ1N0cmluZyBjaHVua0FzVXRmOCA9IGNodW5rLnV0ZjgoKTsKLSAg
ICB0b2tlbml6ZXIuaW5pdGlhbGl6ZVBhcnNlckNvbnRleHQoY2h1bmtBc1V0ZjguZGF0YSgpKTsK
KyAgICBwYXJzZXIuaW5pdGlhbGl6ZVBhcnNlckNvbnRleHQoY2h1bmtBc1V0ZjguZGF0YSgpKTsK
IAotICAgIHhtbFBhcnNlQ29udGVudCh0b2tlbml6ZXIuY29udGV4dCgpKTsKKyAgICB4bWxQYXJz
ZUNvbnRlbnQocGFyc2VyLmNvbnRleHQoKSk7CiAKLSAgICB0b2tlbml6ZXIuZW5kRG9jdW1lbnQo
KTsKKyAgICBwYXJzZXIuZW5kRG9jdW1lbnQoKTsKIAogICAgIC8vIENoZWNrIGlmIGFsbCB0aGUg
Y2h1bmsgaGFzIGJlZW4gcHJvY2Vzc2VkLgotICAgIGxvbmcgYnl0ZXNQcm9jZXNzZWQgPSB4bWxC
eXRlQ29uc3VtZWQodG9rZW5pemVyLmNvbnRleHQoKSk7CisgICAgbG9uZyBieXRlc1Byb2Nlc3Nl
ZCA9IHhtbEJ5dGVDb25zdW1lZChwYXJzZXIuY29udGV4dCgpKTsKICAgICBpZiAoYnl0ZXNQcm9j
ZXNzZWQgPT0gLTEgfHwgKCh1bnNpZ25lZCBsb25nKWJ5dGVzUHJvY2Vzc2VkKSAhPSBjaHVua0Fz
VXRmOC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gTm8gZXJyb3Ig
aWYgdGhlIGNodW5rIGlzIHdlbGwgZm9ybWVkIG9yIGl0IGlzIG5vdCBidXQgd2UgaGF2ZSBubyBl
cnJvci4KLSAgICByZXR1cm4gdG9rZW5pemVyLmNvbnRleHQoKS0+d2VsbEZvcm1lZCB8fCB4bWxD
dHh0R2V0TGFzdEVycm9yKHRva2VuaXplci5jb250ZXh0KCkpID09IDA7CisgICAgcmV0dXJuIHBh
cnNlci5jb250ZXh0KCktPndlbGxGb3JtZWQgfHwgeG1sQ3R4dEdldExhc3RFcnJvcihwYXJzZXIu
Y29udGV4dCgpKSA9PSAwOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJRdC5jcHAgYi9XZWJD
b3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlclF0LmNwcAppbmRleCBmMDdiYzVlMTIzNzYwNzBkYTM1
YmE3MjVmYTVlZGFmNWVkMWNmMDcxLi44OWY1NDJmNmJhNzg1MDEwN2Q5OTI0M2ViMDg4NjBhYmJm
NzcwNjE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlclF0LmNwcAor
KysgYi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlclF0LmNwcApAQCAtMjYyLDEzICsyNjIs
MTMgQEAgYm9vbCBwYXJzZVhNTERvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBjaHVuaywg
RG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEUKICAgICBpZiAoIWNodW5rLmxlbmd0aCgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFhNTERvY3VtZW50UGFyc2VyIHRva2VuaXplcihm
cmFnbWVudCwgcGFyZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICBYTUxEb2N1bWVudFBh
cnNlciBwYXJzZXIoZnJhZ21lbnQsIHBhcmVudCwgc2NyaXB0aW5nUGVybWlzc2lvbik7CiAKLSAg
ICB0b2tlbml6ZXIud3JpdGUoU3RyaW5nKCI8cXhtbHN0cmVhbWR1bW15ZWxlbWVudD4iKSwgZmFs
c2UpOwotICAgIHRva2VuaXplci53cml0ZShjaHVuaywgZmFsc2UpOwotICAgIHRva2VuaXplci53
cml0ZShTdHJpbmcoIjwvcXhtbHN0cmVhbWR1bW15ZWxlbWVudD4iKSwgZmFsc2UpOwotICAgIHRv
a2VuaXplci5maW5pc2goKTsKLSAgICByZXR1cm4gIXRva2VuaXplci5oYXNFcnJvcigpOworICAg
IHBhcnNlci53cml0ZShTdHJpbmcoIjxxeG1sc3RyZWFtZHVtbXllbGVtZW50PiIpLCBmYWxzZSk7
CisgICAgcGFyc2VyLndyaXRlKGNodW5rLCBmYWxzZSk7CisgICAgcGFyc2VyLndyaXRlKFN0cmlu
ZygiPC9xeG1sc3RyZWFtZHVtbXllbGVtZW50PiIpLCBmYWxzZSk7CisgICAgcGFyc2VyLmZpbmlz
aCgpOworICAgIHJldHVybiAhcGFyc2VyLmhhc0Vycm9yKCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1
bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKaW5k
ZXggYTE0NmE1NzczOGI3NTZiOTIyYjUyZmNiM2Y1OWQxNGZjZWMzMTYwZi4uMjhkZjE0ZTI1YzFm
YmExMDY5Yzg4ZDVhNWFlNTM2ODc2NDU5Nzk4OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUw1RG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFy
c2VyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBIVE1MNURvY3VtZW50UGFyc2VyOjpIVE1MNURvY3Vt
ZW50UGFyc2VyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgcmVwb3J0RXJybwogICAgICwg
bV9kb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1fbGV4ZXIobmV3IEhUTUw1TGV4ZXIpCiAgICAg
LCBtX3NjcmlwdFJ1bm5lcihuZXcgSFRNTDVTY3JpcHRSdW5uZXIoZG9jdW1lbnQsIHRoaXMpKQot
ICAgICwgbV90cmVlQnVpbGRlcihuZXcgSFRNTDVUcmVlQnVpbGRlcihtX2xleGVyLmdldCgpLCBk
b2N1bWVudCwgcmVwb3J0RXJyb3JzKSkKKyAgICAsIG1fdHJlZUNvbnN0cnVjdG9yKG5ldyBIVE1M
NVRyZWVCdWlsZGVyKG1fbGV4ZXIuZ2V0KCksIGRvY3VtZW50LCByZXBvcnRFcnJvcnMpKQogICAg
ICwgbV9lbmRXYXNEZWxheWVkKGZhbHNlKQogICAgICwgbV93cml0ZU5lc3RpbmdMZXZlbCgwKQog
ewpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEhUTUw1RG9jdW1lbnRQYXJzZXI6OmJlZ2luKCkKIAog
dm9pZCBIVE1MNURvY3VtZW50UGFyc2VyOjpwdW1wTGV4ZXJJZlBvc3NpYmxlKCkKIHsKLSAgICBp
ZiAobV9wYXJzZXJTdG9wcGVkIHx8IG1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpCisgICAgaWYg
KG1fcGFyc2VyU3RvcHBlZCB8fCBtX3RyZWVDb25zdHJ1Y3Rvci0+aXNQYXVzZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIHB1bXBMZXhlcigpOwogfQpAQCAtMTAyLDI2ICsxMDIsMjYgQEAgdm9p
ZCBIVE1MNURvY3VtZW50UGFyc2VyOjpwdW1wTGV4ZXIoKQogICAgIHdpbGxQdW1wTGV4ZXIoKTsK
IAogICAgIEFTU0VSVCghbV9wYXJzZXJTdG9wcGVkKTsKLSAgICBBU1NFUlQoIW1fdHJlZUJ1aWxk
ZXItPmlzUGF1c2VkKCkpOworICAgIEFTU0VSVCghbV90cmVlQ29uc3RydWN0b3ItPmlzUGF1c2Vk
KCkpOwogICAgIHdoaWxlICghbV9wYXJzZXJTdG9wcGVkICYmIG1fbGV4ZXItPm5leHRUb2tlbiht
X2lucHV0LmN1cnJlbnQoKSwgbV90b2tlbikpIHsKICAgICAgICAgaWYgKFNjcmlwdENvbnRyb2xs
ZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBzY3JpcHQoKSkKICAgICAgICAgICAgIHNjcmlwdENvbnRy
b2xsZXItPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobGluZU51bWJlcigpICsgMSk7CiAKLSAg
ICAgICAgbV90cmVlQnVpbGRlci0+Y29uc3RydWN0VHJlZUZyb21Ub2tlbihtX3Rva2VuKTsKKyAg
ICAgICAgbV90cmVlQ29uc3RydWN0b3ItPmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4obV90b2tlbik7
CiAgICAgICAgIG1fdG9rZW4uY2xlYXIoKTsKIAogICAgICAgICBpZiAoU2NyaXB0Q29udHJvbGxl
ciogc2NyaXB0Q29udHJvbGxlciA9IHNjcmlwdCgpKQogICAgICAgICAgICAgc2NyaXB0Q29udHJv
bGxlci0+c2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcigwKTsKIAotICAgICAgICBpZiAoIW1fdHJl
ZUJ1aWxkZXItPmlzUGF1c2VkKCkpCisgICAgICAgIGlmICghbV90cmVlQ29uc3RydWN0b3ItPmlz
UGF1c2VkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBUaGUgcGFyc2Vy
IHdpbGwgcGF1c2UgaXRzZWxmIHdoZW4gd2FpdGluZyBvbiBhIHNjcmlwdCB0byBsb2FkIG9yIHJ1
bi4KICAgICAgICAgLy8gU2NyaXB0UnVubmVyIGV4ZWN1dGVzIHNjcmlwdHMgYXQgdGhlIHJpZ2h0
IHRpbWVzIGFuZCBoYW5kbGVzIHJlZW50cmFuY3kuCiAgICAgICAgIGludCBzY3JpcHRTdGFydExp
bmUgPSAwOwotICAgICAgICBSZWZQdHI8RWxlbWVudD4gc2NyaXB0RWxlbWVudCA9IG1fdHJlZUJ1
aWxkZXItPnRha2VTY3JpcHRUb1Byb2Nlc3Moc2NyaXB0U3RhcnRMaW5lKTsKKyAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IHNjcmlwdEVsZW1lbnQgPSBtX3RyZWVDb25zdHJ1Y3Rvci0+dGFrZVNjcmlw
dFRvUHJvY2VzcyhzY3JpcHRTdGFydExpbmUpOwogICAgICAgICBib29sIHNob3VsZENvbnRpbnVl
UGFyc2luZyA9IG1fc2NyaXB0UnVubmVyLT5leGVjdXRlKHNjcmlwdEVsZW1lbnQucmVsZWFzZSgp
LCBzY3JpcHRTdGFydExpbmUpOwotICAgICAgICBtX3RyZWVCdWlsZGVyLT5zZXRQYXVzZWQoIXNo
b3VsZENvbnRpbnVlUGFyc2luZyk7CisgICAgICAgIG1fdHJlZUNvbnN0cnVjdG9yLT5zZXRQYXVz
ZWQoIXNob3VsZENvbnRpbnVlUGFyc2luZyk7CiAgICAgICAgIGlmICghc2hvdWxkQ29udGludWVQ
YXJzaW5nKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE3NCw3ICsxNzQsNyBAQCB2
b2lkIEhUTUw1RG9jdW1lbnRQYXJzZXI6OmVuZCgpCiB7CiAgICAgcHVtcExleGVySWZQb3NzaWJs
ZSgpOwogICAgIC8vIEluZm9ybXMgdGhlIHRoZSByZXN0IG9mIFdlYkNvcmUgdGhhdCBwYXJzaW5n
IGlzIHJlYWxseSBmaW5pc2hlZC4KLSAgICBtX3RyZWVCdWlsZGVyLT5maW5pc2hlZCgpOworICAg
IG1fdHJlZUNvbnN0cnVjdG9yLT5maW5pc2hlZCgpOwogfQogCiB2b2lkIEhUTUw1RG9jdW1lbnRQ
YXJzZXI6OmF0dGVtcHRUb0VuZCgpCkBAIC0yMjEsMjAgKzIyMSwyMCBAQCBpbnQgSFRNTDVEb2N1
bWVudFBhcnNlcjo6Y29sdW1uTnVtYmVyKCkgY29uc3QKICAgICByZXR1cm4gbV9sZXhlci0+Y29s
dW1uTnVtYmVyKCk7CiB9CiAKLUhUTUxQYXJzZXIqIEhUTUw1RG9jdW1lbnRQYXJzZXI6Omh0bWxQ
YXJzZXIoKSBjb25zdAorTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3RvciogSFRNTDVEb2N1bWVudFBh
cnNlcjo6aHRtbFRyZWVDb25zdHJ1Y3RvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdHJlZUJ1
aWxkZXItPmh0bWxQYXJzZXIoKTsKKyAgICByZXR1cm4gbV90cmVlQ29uc3RydWN0b3ItPmxlZ2Fj
eVRyZWVDb25zdHJ1Y3RvcigpOwogfQogCiBib29sIEhUTUw1RG9jdW1lbnRQYXJzZXI6OmlzV2Fp
dGluZ0ZvclNjcmlwdHMoKSBjb25zdAogewotICAgIHJldHVybiBtX3RyZWVCdWlsZGVyLT5pc1Bh
dXNlZCgpOworICAgIHJldHVybiBtX3RyZWVDb25zdHJ1Y3Rvci0+aXNQYXVzZWQoKTsKIH0KIAog
dm9pZCBIVE1MNURvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRp
b24oKQogewogICAgIEFTU0VSVCghbV9zY3JpcHRSdW5uZXItPmluU2NyaXB0RXhlY3V0aW9uKCkp
OwotICAgIEFTU0VSVCghbV90cmVlQnVpbGRlci0+aXNQYXVzZWQoKSk7CisgICAgQVNTRVJUKCFt
X3RyZWVDb25zdHJ1Y3Rvci0+aXNQYXVzZWQoKSk7CiAgICAgcHVtcExleGVySWZQb3NzaWJsZSgp
OwogCiAgICAgLy8gVGhlIGRvY3VtZW50IGFscmVhZHkgZmluaXNoZWQgcGFyc2luZyB3ZSB3ZXJl
IGp1c3Qgd2FpdGluZyBvbiBzY3JpcHRzIHdoZW4gZmluaXNoZWQoKSB3YXMgY2FsbGVkLgpAQCAt
Mjc0LDEyICsyNzQsMTIgQEAgdm9pZCBIVE1MNURvY3VtZW50UGFyc2VyOjpleGVjdXRlU2NyaXB0
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB2b2lkIEhUTUw1RG9jdW1lbnRQ
YXJzZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsK
ICAgICBBU1NFUlQoIW1fc2NyaXB0UnVubmVyLT5pblNjcmlwdEV4ZWN1dGlvbigpKTsKLSAgICBB
U1NFUlQobV90cmVlQnVpbGRlci0+aXNQYXVzZWQoKSk7CisgICAgQVNTRVJUKG1fdHJlZUNvbnN0
cnVjdG9yLT5pc1BhdXNlZCgpKTsKICAgICAvLyBOb3RlOiBXZSBvbmx5IGV2ZXIgd2FpdCBvbiBv
bmUgc2NyaXB0IGF0IGEgdGltZSwgc28gd2UgYWx3YXlzIGtub3cgdGhpcwogICAgIC8vIGlzIHRo
ZSBvbmUgd2Ugd2VyZSB3YWl0aW5nIG9uIGFuZCBjYW4gdW4tcGF1c2UgdGhlIHRyZWUgYnVpbGRl
ci4KLSAgICBtX3RyZWVCdWlsZGVyLT5zZXRQYXVzZWQoZmFsc2UpOworICAgIG1fdHJlZUNvbnN0
cnVjdG9yLT5zZXRQYXVzZWQoZmFsc2UpOwogICAgIGJvb2wgc2hvdWxkQ29udGludWVQYXJzaW5n
ID0gbV9zY3JpcHRSdW5uZXItPmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQoY2FjaGVkUmVz
b3VyY2UpOwotICAgIG1fdHJlZUJ1aWxkZXItPnNldFBhdXNlZCghc2hvdWxkQ29udGludWVQYXJz
aW5nKTsKKyAgICBtX3RyZWVDb25zdHJ1Y3Rvci0+c2V0UGF1c2VkKCFzaG91bGRDb250aW51ZVBh
cnNpbmcpOwogICAgIGlmIChzaG91bGRDb250aW51ZVBhcnNpbmcpCiAgICAgICAgIHJlc3VtZVBh
cnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlvbigpOwogfQpAQCAtMjkyLDEyICsyOTIsMTIgQEAgdm9p
ZCBIVE1MNURvY3VtZW50UGFyc2VyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0
cygpCiAgICAgaWYgKCFtX3NjcmlwdFJ1bm5lci0+aGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNo
ZWV0cygpKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKCFtX3NjcmlwdFJ1bm5lci0+aW5T
Y3JpcHRFeGVjdXRpb24oKSk7Ci0gICAgQVNTRVJUKG1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkp
OworICAgIEFTU0VSVChtX3RyZWVDb25zdHJ1Y3Rvci0+aXNQYXVzZWQoKSk7CiAgICAgLy8gTm90
ZTogV2Ugb25seSBldmVyIHdhaXQgb24gb25lIHNjcmlwdCBhdCBhIHRpbWUsIHNvIHdlIGFsd2F5
cyBrbm93IHRoaXMKICAgICAvLyBpcyB0aGUgb25lIHdlIHdlcmUgd2FpdGluZyBvbiBhbmQgY2Fu
IHVuLXBhdXNlIHRoZSB0cmVlIGJ1aWxkZXIuCi0gICAgbV90cmVlQnVpbGRlci0+c2V0UGF1c2Vk
KGZhbHNlKTsKKyAgICBtX3RyZWVDb25zdHJ1Y3Rvci0+c2V0UGF1c2VkKGZhbHNlKTsKICAgICBi
b29sIHNob3VsZENvbnRpbnVlUGFyc2luZyA9IG1fc2NyaXB0UnVubmVyLT5leGVjdXRlU2NyaXB0
c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpOwotICAgIG1fdHJlZUJ1aWxkZXItPnNldFBhdXNlZCgh
c2hvdWxkQ29udGludWVQYXJzaW5nKTsKKyAgICBtX3RyZWVDb25zdHJ1Y3Rvci0+c2V0UGF1c2Vk
KCFzaG91bGRDb250aW51ZVBhcnNpbmcpOwogICAgIGlmIChzaG91bGRDb250aW51ZVBhcnNpbmcp
CiAgICAgICAgIHJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlvbigpOwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvaHRtbC9I
VE1MNURvY3VtZW50UGFyc2VyLmgKaW5kZXggMTdlNTgxNzU5ZTI3MDFjMTAzZWZhMjNlYTFjNTVi
ZWIxODlmYTAwNC4uNGE3NWNlYzFlYWRhYzY1OGMzZWEwMTUzZjU0ZWIwMWE1NzBlZjc2YSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5oCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxEb2N1bWVudDsKLWNsYXNzIEhUTUxQYXJzZXI7CitjbGFz
cyBMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOwogY2xhc3MgSFRNTDVMZXhlcjsKIGNsYXNzIEhU
TUw1U2NyaXB0UnVubmVyOwogY2xhc3MgSFRNTDVUcmVlQnVpbGRlcjsKQEAgLTU4LDkgKzU4LDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHls
ZXNoZWV0cygpOwogICAgIHZpcnR1YWwgaW50IGxpbmVOdW1iZXIoKSBjb25zdDsKICAgICB2aXJ0
dWFsIGludCBjb2x1bW5OdW1iZXIoKSBjb25zdDsKLSAgICAvLyBGSVhNRTogSFRNTEZvcm1Db250
cm9sRWxlbWVudCBhY2Nlc3NlcyB0aGUgSFRNTFBhcnNlciB2aWEgdGhpcyBtZXRob2QuCi0gICAg
Ly8gUmVtb3ZlIHRoaXMgd2hlbiB0aGUgSFRNTFBhcnNlciBpcyBubyBsb25nZXIgdXNlZC4KLSAg
ICB2aXJ0dWFsIEhUTUxQYXJzZXIqIGh0bWxQYXJzZXIoKSBjb25zdDsKKyAgICAvLyBGSVhNRTog
SFRNTEZvcm1Db250cm9sRWxlbWVudCBhY2Nlc3NlcyB0aGUgTGVnYWN5SFRNTFRyZWVDb25zdHJ1
Y3RvciB2aWEgdGhpcyBtZXRob2QuCisgICAgLy8gUmVtb3ZlIHRoaXMgd2hlbiB0aGUgTGVnYWN5
SFRNTFRyZWVDb25zdHJ1Y3RvciBpcyBubyBsb25nZXIgdXNlZC4KKyAgICB2aXJ0dWFsIExlZ2Fj
eUhUTUxUcmVlQ29uc3RydWN0b3IqIGh0bWxUcmVlQ29uc3RydWN0b3IoKSBjb25zdDsKIAogICAg
IC8vIEhUTUw1U2NyaXB0UnVubmVySG9zdAogICAgIHZpcnR1YWwgdm9pZCB3YXRjaEZvckxvYWQo
Q2FjaGVkUmVzb3VyY2UqKTsKQEAgLTE4Miw3ICsxODIsNyBAQCBwcml2YXRlOgogICAgIEhUTUxE
b2N1bWVudCogbV9kb2N1bWVudDsKICAgICBPd25QdHI8SFRNTDVMZXhlcj4gbV9sZXhlcjsKICAg
ICBPd25QdHI8SFRNTDVTY3JpcHRSdW5uZXI+IG1fc2NyaXB0UnVubmVyOwotICAgIE93blB0cjxI
VE1MNVRyZWVCdWlsZGVyPiBtX3RyZWVCdWlsZGVyOworICAgIE93blB0cjxIVE1MNVRyZWVCdWls
ZGVyPiBtX3RyZWVDb25zdHJ1Y3RvcjsKICAgICBib29sIG1fZW5kV2FzRGVsYXllZDsKICAgICBp
bnQgbV93cml0ZU5lc3RpbmdMZXZlbDsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRN
TDVFbnRpdHlQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1RW50aXR5UGFyc2VyLmNwcApp
bmRleCBmNTk4OWY5YzIwM2NhOTMyYTUwZjc1YjVhZTBiMDM2NjQ3ZDc4ZTdiLi5mMTY4MjQ1YjRh
MzZiYzc4MjMzMTFiM2QyMTUzNTBiNDY3OTU2N2RjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTDVFbnRpdHlQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNUVudGl0eVBhcnNl
ci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogLy8gVXNlIF9fR05VQ19fIGluc3RlYWQgb2YgUExB
VEZPUk0oR0NDKSB0byBzdGF5IGNvbnNpc3RlbnQgd2l0aCB0aGUgZ3BlcmYgZ2VuZXJhdGVkIGMg
ZmlsZQogI2lmZGVmIF9fR05VQ19fCi0vLyBUaGUgbWFpbiB0b2tlbml6ZXIgaW5jbHVkZXMgdGhp
cyB0b28gc28gd2UgYXJlIGdldHRpbmcgdHdvIGNvcGllcyBvZiB0aGUgZGF0YS4gSG93ZXZlciwg
dGhpcyB3YXkgdGhlIGNvZGUgZ2V0cyBpbmxpbmVkLgorLy8gVGhlIG1haW4gcGFyc2VyIGluY2x1
ZGVzIHRoaXMgdG9vIHNvIHdlIGFyZSBnZXR0aW5nIHR3byBjb3BpZXMgb2YgdGhlIGRhdGEuIEhv
d2V2ZXIsIHRoaXMgd2F5IHRoZSBjb2RlIGdldHMgaW5saW5lZC4KICNpbmNsdWRlICJIVE1MRW50
aXR5TmFtZXMuY3BwIgogI2Vsc2UKIC8vIE5vdCBpbmxpbmVkIGZvciBub24tR0NDIGNvbXBpbGVy
cwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwIGIvV2ViQ29y
ZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwCmluZGV4IGQ0YjM0ZTJmMTBjZWVmZjhkZTlkODgy
MmEzYjdhNWQ1YjExYjg3NzYuLjc5ZTFlMGVkMmNhYjI1YTdkYjE4MGMwNjgyZWRjZDViY2EwMzhl
MTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNs
dWRlICJIVE1MNVRva2VuLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTFBhcnNlci5oIgorI2luY2x1ZGUgIkxlZ2FjeUhU
TUxUcmVlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpA
QCAtNDgsNyArNDgsNyBAQCBIVE1MNVRyZWVCdWlsZGVyOjpIVE1MNVRyZWVCdWlsZGVyKEhUTUw1
TGV4ZXIqIGxleGVyLCBIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBibwogICAgICwgbV9pc1BhdXNl
ZChmYWxzZSkKICAgICAsIG1faW5zZXJ0aW9uTW9kZShJbml0aWFsKQogICAgICwgbV9sZXhlcihs
ZXhlcikKLSAgICAsIG1fbGVnYWN5SFRNTFBhcnNlcihuZXcgSFRNTFBhcnNlcihkb2N1bWVudCwg
cmVwb3J0RXJyb3JzKSkKKyAgICAsIG1fbGVnYWN5VHJlZUNvbnN0cnVjdG9yKG5ldyBMZWdhY3lI
VE1MVHJlZUNvbnN0cnVjdG9yKGRvY3VtZW50LCByZXBvcnRFcnJvcnMpKQogICAgICwgbV9sYXN0
U2NyaXB0RWxlbWVudFN0YXJ0TGluZSh1bmluaXRpYWxpemVkTGluZU51bWJlclZhbHVlKQogICAg
ICwgbV9zY3JpcHRUb1Byb2Nlc3NTdGFydExpbmUodW5pbml0aWFsaXplZExpbmVOdW1iZXJWYWx1
ZSkKIHsKQEAgLTE0MSw3ICsxNDEsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IEhUTUw1VHJlZUJ1aWxk
ZXI6OnBhc3NUb2tlblRvTGVnYWN5UGFyc2VyKEhUTUw1VG9rZW4mIHRva2VuKQogICAgICAgICBk
b2N0eXBlVG9rZW4ubV9zeXN0ZW1JRCA9IHRva2VuLnN5c3RlbUlkZW50aWZpZXIoKTsKICAgICAg
ICAgZG9jdHlwZVRva2VuLm1fZm9yY2VRdWlya3MgPSB0b2tlbi5mb3JjZVF1aXJrcygpOwogCi0g
ICAgICAgIG1fbGVnYWN5SFRNTFBhcnNlci0+cGFyc2VEb2N0eXBlVG9rZW4oJmRvY3R5cGVUb2tl
bik7CisgICAgICAgIG1fbGVnYWN5VHJlZUNvbnN0cnVjdG9yLT5wYXJzZURvY3R5cGVUb2tlbigm
ZG9jdHlwZVRva2VuKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xNDksNyArMTQ5
LDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBIVE1MNVRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2Fj
eVBhcnNlcihIVE1MNVRva2VuJiB0b2tlbikKICAgICBUb2tlbiBvbGRTdHlsZVRva2VuOwogICAg
IGNvbnZlcnRUb09sZFN0eWxlKHRva2VuLCBvbGRTdHlsZVRva2VuKTsKIAotICAgIFJlZlB0cjxO
b2RlPiByZXN1bHQgPSAgbV9sZWdhY3lIVE1MUGFyc2VyLT5wYXJzZVRva2VuKCZvbGRTdHlsZVRv
a2VuKTsKKyAgICBSZWZQdHI8Tm9kZT4gcmVzdWx0ID0gIG1fbGVnYWN5VHJlZUNvbnN0cnVjdG9y
LT5wYXJzZVRva2VuKCZvbGRTdHlsZVRva2VuKTsKICAgICBpZiAodG9rZW4udHlwZSgpID09IEhU
TUw1VG9rZW46OlN0YXJ0VGFnKSB7CiAgICAgICAgIC8vIFRoaXMgd29yayBpcyBzdXBwb3NlZCB0
byBiZSBkb25lIGJ5IHRoZSBwYXJzZXIsIGJ1dAogICAgICAgICAvLyB3aGVuIHVzaW5nIHRoZSBv
bGQgcGFyc2VyIGZvciB3ZSBoYXZlIHRvIGRvIHRoaXMgbWFudWFsbHkuCkBAIC0yMTMsOCArMjEz
LDggQEAgUGFzc1JlZlB0cjxOb2RlPiBIVE1MNVRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW4oSFRN
TDVUb2tlbiYgdG9rZW4sIFVDaGFyIGN1cnJlbnQKIHZvaWQgSFRNTDVUcmVlQnVpbGRlcjo6Zmlu
aXNoZWQoKQogewogICAgIC8vIFdlIHNob3VsZCBjYWxsIG1fZG9jdW1lbnQtPmZpbmlzaGVkUGFy
c2luZygpIGhlcmUsIGV4Y2VwdAotICAgIC8vIG1fbGVnYWN5SFRNTFBhcnNlci0+ZmluaXNoZWQo
KSBkb2VzIGl0IGZvciB1cy4KLSAgICBtX2xlZ2FjeUhUTUxQYXJzZXItPmZpbmlzaGVkKCk7Cisg
ICAgLy8gbV9sZWdhY3lUcmVlQ29uc3RydWN0b3ItPmZpbmlzaGVkKCkgZG9lcyBpdCBmb3IgdXMu
CisgICAgbV9sZWdhY3lUcmVlQ29uc3RydWN0b3ItPmZpbmlzaGVkKCk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmggYi9XZWJDb3JlL2h0bWwvSFRN
TDVUcmVlQnVpbGRlci5oCmluZGV4IDE3M2Q1ZTlmZWRhNTFmMmRjZjcwMWUwNzExMGI5N2I0ZmM3
NWY5Y2QuLmE2MWJiN2ZhYWQ3Mzg3NDU0YTViZmIwOGY0OGEwZDY5MjVmNzA0NTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUw1VHJlZUJ1aWxkZXIuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEhU
TUw1TGV4ZXI7CiBjbGFzcyBIVE1MNVRva2VuOwogY2xhc3MgSFRNTERvY3VtZW50OwotY2xhc3Mg
SFRNTFBhcnNlcjsKK2NsYXNzIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I7CiBjbGFzcyBOb2Rl
OwogCiBjbGFzcyBIVE1MNVRyZWVCdWlsZGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKQEAgLTYw
LDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBkaXJ0eSwgcm90
dGVuIGhhY2sgdG8ga2VlcCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGhhcHB5CiAgICAgLy8gdW50
aWwgd2Ugc3RvcCB1c2luZyB0aGUgbGVnYWN5IHBhcnNlci4gRE8gTk9UIENBTEwgVEhJUyBNRVRI
T0QuCi0gICAgSFRNTFBhcnNlciogaHRtbFBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGVnYWN5
SFRNTFBhcnNlci5nZXQoKTsgfQorICAgIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3IqIGxlZ2Fj
eVRyZWVDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fbGVnYWN5VHJlZUNvbnN0cnVjdG9y
LmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gUmVwcmVzZW50cyBIVE1MNSAiaW5zZXJ0aW9u
IG1vZGUiCkBAIC05MCw4ICs5MCw4IEBAIHByaXZhdGU6CiAgICAgLy8gZnJvbSB3aXRoaW4gcGFy
c2VyIGFjdGlvbnMuCiAgICAgSFRNTDVMZXhlciogbV9sZXhlcjsKIAotICAgIC8vIFdlJ3JlIHJl
LXVzaW5nIGxvZ2ljIGZyb20gdGhlIG9sZCBIVE1MUGFyc2VyIHdoaWxlIHRoaXMgY2xhc3MgaXMg
YmVpbmcgd3JpdHRlbi4KLSAgICBPd25QdHI8SFRNTFBhcnNlcj4gbV9sZWdhY3lIVE1MUGFyc2Vy
OworICAgIC8vIFdlJ3JlIHJlLXVzaW5nIGxvZ2ljIGZyb20gdGhlIG9sZCBMZWdhY3lIVE1MVHJl
ZUNvbnN0cnVjdG9yIHdoaWxlIHRoaXMgY2xhc3MgaXMgYmVpbmcgd3JpdHRlbi4KKyAgICBPd25Q
dHI8TGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcj4gbV9sZWdhY3lUcmVlQ29uc3RydWN0b3I7CiAK
ICAgICAvLyBUaGVzZSBtZW1iZXJzIGFyZSBpbnRlbnRpb25hbGx5IGR1cGxpY2F0ZWQgYXMgdGhl
IGZpcnN0IHNldCBpcyBhIGhhY2sKICAgICAvLyBvbiB0b3Agb2YgdGhlIGxlZ2FjeSBwYXJzZXIg
d2hpY2ggd2lsbCBldmVudHVhbGx5IGJlIHJlbW92ZWQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTERvY3VtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4
IDFmODc5MGNlMGE3ZmNhNGM4ZDM0NzVlZWU0NDdjMjdkYjZiNTRiZGIuLjA1MDc0YTQ2NWY2Mzgy
OWYxZjcxOWE4ZTg5MDIzNjYzZjQyMTI4YzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
RG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC0yODMs
NyArMjgzLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OnJlbGVhc2VFdmVudHMoKQogewogfQogCi1E
b2N1bWVudFBhcnNlciogSFRNTERvY3VtZW50OjpjcmVhdGVUb2tlbml6ZXIoKQorRG9jdW1lbnRQ
YXJzZXIqIEhUTUxEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKIHsKICAgICBib29sIHJlcG9ydEVy
cm9ycyA9IGZhbHNlOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKaW5kZXgg
MGUyNzRlNTZiYjIwYWQ0ZmNhNTBiMmJkMjQyNTgwM2JhMTMzMWQ5MC4uMzNhZTM2OWZhNmI2YjNi
OTJmNjVjOGQ4Y2U5NDE4YTJjZmZmNzNiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxE
b2N1bWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaApAQCAtODgsNyArODgs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVt
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAg
dmlydHVhbCBib29sIGlzRnJhbWVTZXQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIERvY3VtZW50UGFy
c2VyKiBjcmVhdGVUb2tlbml6ZXIoKTsKKyAgICB2aXJ0dWFsIERvY3VtZW50UGFyc2VyKiBjcmVh
dGVQYXJzZXIoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lUGFyc2VNb2RlKCk7CiAKICAg
ICB2b2lkIGFkZEl0ZW1Ub01hcChIYXNoQ291bnRlZFNldDxBdG9taWNTdHJpbmdJbXBsKj4mLCBj
b25zdCBBdG9taWNTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1l
bnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXgg
MmIwOGZlOTA1M2VkNmZhOTBlMzUxN2YyYTAzYmFlOTU0ZTVhZmUxZS4uMjRkNjk4NTRjOWRlN2Jj
YTkwOTk5ZGVjM2JlZGZiNTY0Y2UwNmE1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxE
b2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJI
VE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxQYXJz
ZXIuaCIKKyNpbmNsdWRlICJMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
SFRNTFNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlld1NvdXJjZURvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiSW1hZ2VMb2FkZXIuaCIKQEAgLTY2LDE1ICs2NiwxNSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLS8vIFRoaXMgdmFsdWUg
aXMgdXNlZCB0byBkZWZpbmUgaG93IG1hbnkgY2hhcmFjdGVycyB0aGUgdG9rZW5pemVyIHdpbGwg
cHJvY2VzcyBiZWZvcmUKKy8vIFRoaXMgdmFsdWUgaXMgdXNlZCB0byBkZWZpbmUgaG93IG1hbnkg
Y2hhcmFjdGVycyB0aGUgcGFyc2VyIHdpbGwgcHJvY2VzcyBiZWZvcmUKIC8vIHllaWxkaW5nIGNv
bnRyb2wuCi0vLyBUbyBpbmNyZWFzZSByZXNwb25zaXZuZXNzIHJlZHVjZSB0aGUgdG9rZW5pemVy
IGNodW5rIHNpemUuCisvLyBUbyBpbmNyZWFzZSByZXNwb25zaXZuZXNzIHJlZHVjZSB0aGUgcGFy
c2VyIGNodW5rIHNpemUuCiBzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRUb2tlbml6ZXJDaHVua1Np
emUgPSA0MDk2OwogCiAvLyBGSVhNRTogV2Ugd291bGQgbGlrZSB0aGlzIGNvbnN0YW50IHRvIGJl
IDIwMG1zLgogLy8gWWllbGRpbmcgbW9yZSBhZ2dyZXNzaXZlbHkgcmVzdWx0cyBpbiBpbmNyZWFz
ZWQgcmVzcG9uc2l2ZW5lc3MgYW5kIGJldHRlciBpbmNyZW1lbnRhbCByZW5kZXJpbmcuCiAvLyBJ
dCBzbG93cyBkb3duIG92ZXJhbGwgcGFnZS1sb2FkIG9uIHNsb3dlciBtYWNoaW5lcywgdGhvdWdo
LCBzbyBmb3Igbm93IHdlIHNldCBhIHZhbHVlIG9mIDUwMC4KLS8vIEZvciBzbWFsbGVyIGNodW5r
cyAoYWJvdmUpIGRlY3JlYXNlIHRoZSB2YWx1ZSBvZiBUaW1lckRlbGF5IGFzIHRoZSB0aGUgdG9r
ZW5pemVyIHNob3VsZCBub3QKKy8vIEZvciBzbWFsbGVyIGNodW5rcyAoYWJvdmUpIGRlY3JlYXNl
IHRoZSB2YWx1ZSBvZiBUaW1lckRlbGF5IGFzIHRoZSB0aGUgcGFyc2VyIHNob3VsZCBub3QKIC8v
IHlpZWxkIGZvciBhcyBsb25nIGEgcGVyaW9kIG90aGVyd2lzZSBpdCB3aWxsIHRha2Ugd2F5IHRv
IGxvbmcgdG8gbG9hZCBhIHBhZ2UuCiBzdGF0aWMgY29uc3QgZG91YmxlIGRlZmF1bHRUb2tlbml6
ZXJUaW1lRGVsYXkgPSAwLjUwMDsKIApAQCAtMTYwLDcgKzE2MCw3IEBAIEhUTUxEb2N1bWVudFBh
cnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCogZG9jLCBib29sIHJlcG9ydEVy
cm9ycykKICAgICAsIG1fdGltZXIodGhpcywgJkhUTUxEb2N1bWVudFBhcnNlcjo6dGltZXJGaXJl
ZCkKICAgICAsIG1fZXh0ZXJuYWxTY3JpcHRzVGltZXIodGhpcywgJkhUTUxEb2N1bWVudFBhcnNl
cjo6ZXhlY3V0ZUV4dGVybmFsU2NyaXB0c1RpbWVyRmlyZWQpCiAgICAgLCBtX2RvYyhkb2MpCi0g
ICAgLCBtX3BhcnNlcihuZXcgSFRNTFBhcnNlcihkb2MsIHJlcG9ydEVycm9ycykpCisgICAgLCBt
X3RyZWVDb25zdHJ1Y3RvcihuZXcgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcihkb2MsIHJlcG9y
dEVycm9ycykpCiAgICAgLCBtX2luV3JpdGUoZmFsc2UpCiAgICAgLCBtX2ZyYWdtZW50KGZhbHNl
KQogICAgICwgbV9zY3JpcHRpbmdQZXJtaXNzaW9uKEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCkK
QEAgLTE4MSw3ICsxODEsNiBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNl
cihIVE1MVmlld1NvdXJjZURvY3VtZW50KiBkb2MpCiAgICAgLCBtX3RpbWVyKHRoaXMsICZIVE1M
RG9jdW1lbnRQYXJzZXI6OnRpbWVyRmlyZWQpCiAgICAgLCBtX2V4dGVybmFsU2NyaXB0c1RpbWVy
KHRoaXMsICZIVE1MRG9jdW1lbnRQYXJzZXI6OmV4ZWN1dGVFeHRlcm5hbFNjcmlwdHNUaW1lckZp
cmVkKQogICAgICwgbV9kb2MoZG9jKQotICAgICwgbV9wYXJzZXIoMCkKICAgICAsIG1faW5Xcml0
ZShmYWxzZSkKICAgICAsIG1fZnJhZ21lbnQoZmFsc2UpCiAgICAgLCBtX3NjcmlwdGluZ1Blcm1p
c3Npb24oRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKQpAQCAtMjAxLDcgKzIwMCw3IEBAIEhUTUxE
b2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWcs
IEZyYWdtZW50U2NyaXB0aW5nCiAgICAgLCBtX3RpbWVyKHRoaXMsICZIVE1MRG9jdW1lbnRQYXJz
ZXI6OnRpbWVyRmlyZWQpCiAgICAgLCBtX2V4dGVybmFsU2NyaXB0c1RpbWVyKHRoaXMsICZIVE1M
RG9jdW1lbnRQYXJzZXI6OmV4ZWN1dGVFeHRlcm5hbFNjcmlwdHNUaW1lckZpcmVkKQogICAgICwg
bV9kb2MoZnJhZy0+ZG9jdW1lbnQoKSkKLSAgICAsIG1fcGFyc2VyKG5ldyBIVE1MUGFyc2VyKGZy
YWcsIHNjcmlwdGluZ1Blcm1pc3Npb24pKQorICAgICwgbV90cmVlQ29uc3RydWN0b3IobmV3IExl
Z2FjeUhUTUxUcmVlQ29uc3RydWN0b3IoZnJhZywgc2NyaXB0aW5nUGVybWlzc2lvbikpCiAgICAg
LCBtX2luV3JpdGUoZmFsc2UpCiAgICAgLCBtX2ZyYWdtZW50KHRydWUpCiAgICAgLCBtX3Njcmlw
dGluZ1Blcm1pc3Npb24oc2NyaXB0aW5nUGVybWlzc2lvbikKQEAgLTQzMyw3ICs0MzIsNyBAQCBI
VE1MRG9jdW1lbnRQYXJzZXI6OlN0YXRlIEhUTUxEb2N1bWVudFBhcnNlcjo6c2NyaXB0SGFuZGxl
cihTdGF0ZSBzdGF0ZSkKICAgICBpZiAoIWluVmlld1NvdXJjZU1vZGUoKSkgewogICAgICAgICBp
ZiAoIW1fc2NyaXB0VGFnU3JjQXR0clZhbHVlLmlzRW1wdHkoKSAmJiBtX2RvYy0+ZnJhbWUoKSkg
ewogICAgICAgICAgICAgLy8gZm9yZ2V0IHdoYXQgd2UganVzdCBnb3Q7IGxvYWQgZnJvbSBzcmMg
dXJsIGluc3RlYWQKLSAgICAgICAgICAgIGlmICghbV9wYXJzZXItPnNraXBNb2RlKCkgJiYgIWZv
bGxvd2luZ0ZyYW1lc2V0KSB7CisgICAgICAgICAgICBpZiAoIW1fdHJlZUNvbnN0cnVjdG9yLT5z
a2lwTW9kZSgpICYmICFmb2xsb3dpbmdGcmFtZXNldCkgewogICAgICAgICAgICAgICAgIC8vIFRo
ZSBwYXJzZXIgbWlnaHQgaGF2ZSBiZWVuIHN0b3BwZWQgYnkgZm9yIGV4YW1wbGUgYSB3aW5kb3cu
Y2xvc2UgY2FsbCBpbiBhbiBlYXJsaWVyIHNjcmlwdC4KICAgICAgICAgICAgICAgICAvLyBJZiBz
bywgd2UgZG9uJ3Qgd2FudCB0byBsb2FkIHNjcmlwdHMuCiAgICAgICAgICAgICAgICAgaWYgKCFt
X3BhcnNlclN0b3BwZWQgJiYgbV9zY3JpcHROb2RlLT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVudCht
X3NjcmlwdFRhZ1NyY0F0dHJWYWx1ZSkgJiYKQEAgLTQ4MCw3ICs0NzksNyBAQCBIVE1MRG9jdW1l
bnRQYXJzZXI6OlN0YXRlIEhUTUxEb2N1bWVudFBhcnNlcjo6c2NyaXB0SGFuZGxlcihTdGF0ZSBz
dGF0ZSkKICAgICBTZWdtZW50ZWRTdHJpbmcgcHJlcGVuZGluZ1NyYzsKICAgICBtX2N1cnJlbnRQ
cmVwZW5kaW5nU3JjID0gJnByZXBlbmRpbmdTcmM7CiAKLSAgICBpZiAoIW1fcGFyc2VyLT5za2lw
TW9kZSgpICYmICFmb2xsb3dpbmdGcmFtZXNldCkgeworICAgIGlmICghbV90cmVlQ29uc3RydWN0
b3ItPnNraXBNb2RlKCkgJiYgIWZvbGxvd2luZ0ZyYW1lc2V0KSB7CiAgICAgICAgIGlmIChjcykg
ewogICAgICAgICAgICAgaWYgKHNhdmVkUHJlcGVuZGluZ1NyYykKICAgICAgICAgICAgICAgICBz
YXZlZFByZXBlbmRpbmdTcmMtPmFwcGVuZChtX3NyYyk7CkBAIC0xMzkzLDcgKzEzOTIsNyBAQCBI
VE1MRG9jdW1lbnRQYXJzZXI6OlN0YXRlIEhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VUYWcoU2Vn
bWVudGVkU3RyaW5nJiBzcmMsIFN0YQogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChpblZpZXdTb3VyY2VNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJy
ZW50VG9rZW4uYWRkVmlld1NvdXJjZUNoYXIoJ3YnKTsKIAotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fY3VycmVudFRva2VuLmJlZ2luVGFnICYmIG1fY3VycmVudFRva2VuLnRhZ05hbWUg
PT0gc2NyaXB0VGFnICYmICFpblZpZXdTb3VyY2VNb2RlKCkgJiYgIW1fcGFyc2VyLT5za2lwTW9k
ZSgpICYmIG1fYXR0ck5hbWUgPT0gc3JjQXR0cikgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG1fY3VycmVudFRva2VuLmJlZ2luVGFnICYmIG1fY3VycmVudFRva2VuLnRhZ05hbWUgPT0g
c2NyaXB0VGFnICYmICFpblZpZXdTb3VyY2VNb2RlKCkgJiYgIW1fdHJlZUNvbnN0cnVjdG9yLT5z
a2lwTW9kZSgpICYmIG1fYXR0ck5hbWUgPT0gc3JjQXR0cikgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFN0cmluZyBjb250ZXh0KG1fcmF3QXR0cmlidXRlQmVmb3JlVmFsdWUuZGF0YSgp
LCBtX3Jhd0F0dHJpYnV0ZUJlZm9yZVZhbHVlLnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fWFNTQXVkaXRvciAmJiAhbV9YU1NBdWRpdG9yLT5jYW5Mb2FkRXh0ZXJu
YWxTY3JpcHRGcm9tU3JjKGF0dHJpYnV0ZVZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSBibGFua1VSTCgpLnN0cmluZygpOwpAQCAtMTQzMCw3
ICsxNDI5LDcgQEAgSFRNTERvY3VtZW50UGFyc2VyOjpTdGF0ZSBIVE1MRG9jdW1lbnRQYXJzZXI6
OnBhcnNlVGFnKFNlZ21lbnRlZFN0cmluZyYgc3JjLCBTdGEKICAgICAgICAgICAgICAgICAgICAg
aWYgKGlzQVNDSUlTcGFjZShjdXJjaGFyKSB8fCBjdXJjaGFyID09ICc+JykgewogICAgICAgICAg
ICAgICAgICAgICAgICAgQXRvbWljU3RyaW5nIGF0dHJpYnV0ZVZhbHVlKG1fYnVmZmVyICsgMSwg
bV9kZXN0IC0gbV9idWZmZXIgLSAxKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1f
Y3VycmVudFRva2VuLmJlZ2luVGFnICYmIG1fY3VycmVudFRva2VuLnRhZ05hbWUgPT0gc2NyaXB0
VGFnICYmICFpblZpZXdTb3VyY2VNb2RlKCkgJiYgIW1fcGFyc2VyLT5za2lwTW9kZSgpICYmIG1f
YXR0ck5hbWUgPT0gc3JjQXR0cikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fY3Vy
cmVudFRva2VuLmJlZ2luVGFnICYmIG1fY3VycmVudFRva2VuLnRhZ05hbWUgPT0gc2NyaXB0VGFn
ICYmICFpblZpZXdTb3VyY2VNb2RlKCkgJiYgIW1fdHJlZUNvbnN0cnVjdG9yLT5za2lwTW9kZSgp
ICYmIG1fYXR0ck5hbWUgPT0gc3JjQXR0cikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN0cmluZyBjb250ZXh0KG1fcmF3QXR0cmlidXRlQmVmb3JlVmFsdWUuZGF0YSgpLCBtX3Jhd0F0
dHJpYnV0ZUJlZm9yZVZhbHVlLnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG1fWFNTQXVkaXRvciAmJiAhbV9YU1NBdWRpdG9yLT5jYW5Mb2FkRXh0ZXJuYWxTY3JpcHRG
cm9tU3JjKGF0dHJpYnV0ZVZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXR0cmlidXRlVmFsdWUgPSBibGFua1VSTCgpLnN0cmluZygpOwpAQCAtMTQ4Miw3ICsxNDgxLDcg
QEAgSFRNTERvY3VtZW50UGFyc2VyOjpTdGF0ZSBIVE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlVGFn
KFNlZ21lbnRlZFN0cmluZyYgc3JjLCBTdGEKICAgICAgICAgICAgIC8vIGNvbXBhdGliaWxpdHku
CiAgICAgICAgICAgICBib29sIGlzU2VsZkNsb3NpbmdTY3JpcHQgPSBtX2N1cnJlbnRUb2tlbi5z
ZWxmQ2xvc2luZ1RhZyAmJiBtX2N1cnJlbnRUb2tlbi5iZWdpblRhZyAmJiBtX2N1cnJlbnRUb2tl
bi50YWdOYW1lID09IHNjcmlwdFRhZzsKICAgICAgICAgICAgIGJvb2wgYmVnaW5UYWcgPSAhbV9j
dXJyZW50VG9rZW4uc2VsZkNsb3NpbmdUYWcgJiYgbV9jdXJyZW50VG9rZW4uYmVnaW5UYWc7Ci0g
ICAgICAgICAgICBpZiAobV9jdXJyZW50VG9rZW4uYmVnaW5UYWcgJiYgbV9jdXJyZW50VG9rZW4u
dGFnTmFtZSA9PSBzY3JpcHRUYWcgJiYgIWluVmlld1NvdXJjZU1vZGUoKSAmJiAhbV9wYXJzZXIt
PnNraXBNb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChtX2N1cnJlbnRUb2tlbi5iZWdpblRhZyAm
JiBtX2N1cnJlbnRUb2tlbi50YWdOYW1lID09IHNjcmlwdFRhZyAmJiAhaW5WaWV3U291cmNlTW9k
ZSgpICYmICFtX3RyZWVDb25zdHJ1Y3Rvci0+c2tpcE1vZGUoKSkgewogICAgICAgICAgICAgICAg
IEF0dHJpYnV0ZSogYSA9IDA7CiAgICAgICAgICAgICAgICAgbV9zY3JpcHRUYWdTcmNBdHRyVmFs
dWUgPSBTdHJpbmcoKTsKICAgICAgICAgICAgICAgICBtX3NjcmlwdFRhZ0NoYXJzZXRBdHRyVmFs
dWUgPSBTdHJpbmcoKTsKQEAgLTE3NjMsNyArMTc2Miw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFy
c2VyOjp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHN0ciwgYm9vbCBhcHBlbmREYXRhKQog
ICAgIGVsc2UKICAgICAgICAgc2V0U3JjKHNvdXJjZSk7CiAKLSAgICAvLyBPbmNlIGEgdGltZXIg
aXMgc2V0LCBpdCBoYXMgY29udHJvbCBvZiB3aGVuIHRoZSB0b2tlbml6ZXIgY29udGludWVzLgor
ICAgIC8vIE9uY2UgYSB0aW1lciBpcyBzZXQsIGl0IGhhcyBjb250cm9sIG9mIHdoZW4gdGhlIHBh
cnNlciBjb250aW51ZXMuCiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xODAxLDcgKzE4MDAsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6c3Rv
cFBhcnNpbmcoKQogICAgIG1fdGltZXIuc3RvcCgpOwogCiAgICAgLy8gRklYTUU6IFdoeSBpcyBI
VE1MRG9jdW1lbnRQYXJzZXIgdGhlIG9ubHkgRG9jdW1lbnRQYXJzZXIgd2hpY2ggY2FsbHMgY2hl
Y2tDb21wbGV0ZWQ/Ci0gICAgLy8gVGhlIEZyYW1lTG9hZGVyIG5lZWRzIHRvIGtub3cgdGhhdCB0
aGUgdG9rZW5pemVyIGhhcyBmaW5pc2hlZCB3aXRoIGl0cyBkYXRhLAorICAgIC8vIFRoZSBGcmFt
ZUxvYWRlciBuZWVkcyB0byBrbm93IHRoYXQgdGhlIHBhcnNlciBoYXMgZmluaXNoZWQgd2l0aCBp
dHMgZGF0YSwKICAgICAvLyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgaGFwcGVuZWQgbmF0dXJh
bGx5IG9yIGR1ZSB0byBtYW51YWwgaW50ZXJ2ZW50aW9uLgogICAgIGlmICghbV9mcmFnbWVudCAm
JiBtX2RvYy0+ZnJhbWUoKSkKICAgICAgICAgbV9kb2MtPmZyYW1lKCktPmxvYWRlcigpLT5jaGVj
a0NvbXBsZXRlZCgpOwpAQCAtMTg0NCw3ICsxODQzLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJz
ZXI6OmVuZCgpCiAgICAgfQogCiAgICAgaWYgKCFpblZpZXdTb3VyY2VNb2RlKCkpCi0gICAgICAg
IG1fcGFyc2VyLT5maW5pc2hlZCgpOworICAgICAgICBtX3RyZWVDb25zdHJ1Y3Rvci0+ZmluaXNo
ZWQoKTsKICAgICBlbHNlCiAgICAgICAgIG1fZG9jLT5maW5pc2hlZFBhcnNpbmcoKTsKIH0KQEAg
LTE5MTUsNyArMTkxNCw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gSFRNTERvY3VtZW50UGFyc2VyOjpw
cm9jZXNzVG9rZW4oKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFZpZXdTb3VyY2VEb2N1
bWVudCo+KG1fZG9jKS0+YWRkVmlld1NvdXJjZVRva2VuKCZtX2N1cnJlbnRUb2tlbik7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIC8vIHBhc3MgdGhlIHRva2VuIG92ZXIgdG8gdGhlIHBhcnNl
ciwgdGhlIHBhcnNlciBET0VTIE5PVCBkZWxldGUgdGhlIHRva2VuCi0gICAgICAgICAgICBuID0g
bV9wYXJzZXItPnBhcnNlVG9rZW4oJm1fY3VycmVudFRva2VuKTsKKyAgICAgICAgICAgIG4gPSBt
X3RyZWVDb25zdHJ1Y3Rvci0+cGFyc2VUb2tlbigmbV9jdXJyZW50VG9rZW4pOwogICAgIH0KICAg
ICBtX2N1cnJlbnRUb2tlbi5yZXNldCgpOwogICAgIGlmIChzY3JpcHRDb250cm9sbGVyKQpAQCAt
MTkyOSw3ICsxOTI4LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NEb2N0eXBl
VG9rZW4oKQogICAgIGlmIChpblZpZXdTb3VyY2VNb2RlKCkpCiAgICAgICAgIHN0YXRpY19jYXN0
PEhUTUxWaWV3U291cmNlRG9jdW1lbnQqPihtX2RvYyktPmFkZFZpZXdTb3VyY2VEb2N0eXBlVG9r
ZW4oJm1fZG9jdHlwZVRva2VuKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGFyc2VyLT5wYXJzZURv
Y3R5cGVUb2tlbigmbV9kb2N0eXBlVG9rZW4pOworICAgICAgICBtX3RyZWVDb25zdHJ1Y3Rvci0+
cGFyc2VEb2N0eXBlVG9rZW4oJm1fZG9jdHlwZVRva2VuKTsKIH0KIAogSFRNTERvY3VtZW50UGFy
c2VyOjp+SFRNTERvY3VtZW50UGFyc2VyKCkKQEAgLTIwOTcsMTEgKzIwOTYsMTEgQEAgdm9pZCBI
VE1MRG9jdW1lbnRQYXJzZXI6OnNldFNyYyhjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkK
IAogdm9pZCBwYXJzZUhUTUxEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYgc291cmNlLCBE
b2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNj
cmlwdGluZ1Blcm1pc3Npb24pCiB7Ci0gICAgSFRNTERvY3VtZW50UGFyc2VyIHRvayhmcmFnbWVu
dCwgc2NyaXB0aW5nUGVybWlzc2lvbik7Ci0gICAgdG9rLnNldEZvcmNlU3luY2hyb25vdXModHJ1
ZSk7Ci0gICAgdG9rLndyaXRlKHNvdXJjZSwgdHJ1ZSk7Ci0gICAgdG9rLmZpbmlzaCgpOwotICAg
IEFTU0VSVCghdG9rLnByb2Nlc3NpbmdEYXRhKCkpOyAgICAgIC8vIG1ha2Ugc3VyZSB3ZSdyZSBk
b25lIChzZWUgMzk2MzE1MSkKKyAgICBIVE1MRG9jdW1lbnRQYXJzZXIgcGFyc2VyKGZyYWdtZW50
LCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICBwYXJzZXIuc2V0Rm9yY2VTeW5jaHJvbm91cyh0
cnVlKTsKKyAgICBwYXJzZXIud3JpdGUoc291cmNlLCB0cnVlKTsKKyAgICBwYXJzZXIuZmluaXNo
KCk7CisgICAgQVNTRVJUKCFwYXJzZXIucHJvY2Vzc2luZ0RhdGEoKSk7ICAgICAgLy8gbWFrZSBz
dXJlIHdlJ3JlIGRvbmUgKHNlZSAzOTYzMTUxKQogfQogCiBVQ2hhciBkZWNvZGVOYW1lZEVudGl0
eShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVu
dFBhcnNlci5oIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDljY2Vi
ZTVkYzE3NjY4ZjMwODJkZWU1YmI3ZWJmZDlmMzkxZDIxNmMuLjYwNzJhN2U5MGU4N2M4OTRiNGU0
MjdlNmU2MWQzZjExNDdiMTAzOWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1l
bnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAgLTQ0
LDcgKzQ0LDcgQEAgY2xhc3MgSFRNTERvY3VtZW50OwogY2xhc3MgSFRNTFNjcmlwdEVsZW1lbnQ7
CiBjbGFzcyBIVE1MVmlld1NvdXJjZURvY3VtZW50OwogY2xhc3MgRnJhbWVWaWV3OwotY2xhc3Mg
SFRNTFBhcnNlcjsKK2NsYXNzIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I7CiBjbGFzcyBOb2Rl
OwogY2xhc3MgUHJlbG9hZFNjYW5uZXI7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwpAQCAtMTYz
LDggKzE2Myw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU2NyaXB0c1dh
aXRpbmdGb3JTdHlsZXNoZWV0cygpOwogCi0gICAgdmlydHVhbCBIVE1MUGFyc2VyKiBodG1sUGFy
c2VyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIEhUTUxE
b2N1bWVudFBhcnNlciogYXNIVE1MVG9rZW5pemVyKCkgeyByZXR1cm4gdGhpczsgfQorICAgIHZp
cnR1YWwgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3RvciogaHRtbFRyZWVDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1fdHJlZUNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgdmlydHVhbCBIVE1M
RG9jdW1lbnRQYXJzZXIqIGFzSFRNTERvY3VtZW50UGFyc2VyKCkgeyByZXR1cm4gdGhpczsgfQog
CiBwcml2YXRlOgogICAgIGNsYXNzIFN0YXRlOwpAQCAtNDMxLDcgKzQzMSw3IEBAIHByaXZhdGU6
CiAKICAgICBTZWdtZW50ZWRTdHJpbmcgbV9zcmM7CiAgICAgRG9jdW1lbnQqIG1fZG9jOwotICAg
IE93blB0cjxIVE1MUGFyc2VyPiBtX3BhcnNlcjsKKyAgICBPd25QdHI8TGVnYWN5SFRNTFRyZWVD
b25zdHJ1Y3Rvcj4gbV90cmVlQ29uc3RydWN0b3I7CiAgICAgYm9vbCBtX2luV3JpdGU7CiAgICAg
Ym9vbCBtX2ZyYWdtZW50OwogICAgIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBtX3Njcmlw
dGluZ1Blcm1pc3Npb247CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5k
ZXggMmI2ODI0YTM0ZmQ5ZmQ5NmM0MGE3ZWM1NGJhZDU4M2ZiYzZlOTBmMC4uNjI0NzRjY2U0OTA0
ZWU5Y2ViZWRkZmM2ZjcwNjY1Mjk2MmRjMGY5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKLSNpbmNsdWRlICJIVE1MUGFyc2VyLmgiCisjaW5jbHVkZSAiTGVnYWN5SFRNTFRyZWVDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIkxh
YmVsc05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTc4LDExICsxNzgsMTEgQEAg
dm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZW1vdmVkRnJvbVRyZWUoYm9vbCBkZWVwKQog
ewogICAgIC8vIElmIHRoZSBmb3JtIGFuZCBlbGVtZW50IGFyZSBib3RoIGluIHRoZSBzYW1lIHRy
ZWUsIHByZXNlcnZlIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBmb3JtLgogICAgIC8vIE90aGVyd2lz
ZSwgbnVsbCBvdXQgb3VyIGZvcm0gYW5kIHJlbW92ZSBvdXJzZWx2ZXMgZnJvbSB0aGUgZm9ybSdz
IGxpc3Qgb2YgZWxlbWVudHMuCi0gICAgSFRNTFBhcnNlciogcGFyc2VyID0gMDsKLSAgICBpZiAo
RG9jdW1lbnRQYXJzZXIqIHRva2VuaXplciA9IGRvY3VtZW50KCktPnRva2VuaXplcigpKQotICAg
ICAgICBwYXJzZXIgPSB0b2tlbml6ZXItPmh0bWxQYXJzZXIoKTsKKyAgICBMZWdhY3lIVE1MVHJl
ZUNvbnN0cnVjdG9yKiB0cmVlQ29uc3RydWN0b3IgPSAwOworICAgIGlmIChEb2N1bWVudFBhcnNl
ciogcGFyc2VyID0gZG9jdW1lbnQoKS0+cGFyc2VyKCkpCisgICAgICAgIHRyZWVDb25zdHJ1Y3Rv
ciA9IHBhcnNlci0+aHRtbFRyZWVDb25zdHJ1Y3RvcigpOwogCi0gICAgaWYgKG1fZm9ybSAmJiAh
KHBhcnNlciAmJiBwYXJzZXItPmlzSGFuZGxpbmdSZXNpZHVhbFN0eWxlQWNyb3NzQmxvY2tzKCkp
ICYmIGZpbmRSb290KHRoaXMpICE9IGZpbmRSb290KG1fZm9ybSkpIHsKKyAgICBpZiAobV9mb3Jt
ICYmICEodHJlZUNvbnN0cnVjdG9yICYmIHRyZWVDb25zdHJ1Y3Rvci0+aXNIYW5kbGluZ1Jlc2lk
dWFsU3R5bGVBY3Jvc3NCbG9ja3MoKSkgJiYgZmluZFJvb3QodGhpcykgIT0gZmluZFJvb3QobV9m
b3JtKSkgewogICAgICAgICBtX2Zvcm0tPnJlbW92ZUZvcm1FbGVtZW50KHRoaXMpOwogICAgICAg
ICBtX2Zvcm0gPSAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAxYzY5
MzRiNjBiYTUyZjdmMWU3N2ZkY2FiN2U0NjgzZTExMDE4NjkxLi4zZDMzZmY4YjhhMTgzN2MzMmMz
MTk1ZTcxZWE3N2NlNmQ5NTY5MjBiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC00
Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSAiSFRNTEltYWdlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1M
UGFyc2VyLmgiCisjaW5jbHVkZSAiTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5j
bHVkZSAiTW91c2VFdmVudC5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVs
ZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCmluZGV4IGYzMWE4
OTliYWUzMjkzMzI2MjAxNDY1ODk0NGQ1NmYyZWQ0NGI1NTUuLjFlODk1NmQyMDMzMTg5YWQ5MjFi
ZTk4YWMwYjEwOGQxMTYzMGU0NjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJF
bGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKQEAgLTI4
LDcgKzI4LDcgQEAKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRlICJIVE1MRm9y
bUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MUGFyc2Vy
LmgiCisjaW5jbHVkZSAiTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlJl
bmRlck1ldGVyLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRN
TFByb2dyZXNzRWxlbWVudC5jcHAKaW5kZXggZjdlODZmM2E5YWZmZWNlZGViYjkzYjkzNTM1MGRh
Yjg1MmFlYTZjNS4uMjIyMjZkOWFhM2M3ZjUxNGZhNGVkYWNmZWQ0N2QyZjQ0MjdiYWU0ZCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1
ZGUgIkZvcm1EYXRhTGlzdC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxQYXJzZXIuaCIKKyNpbmNsdWRlICJMZWdh
Y3lIVE1MVHJlZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyUHJvZ3Jlc3MuaCIKICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MVmlld1NvdXJjZURvY3VtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURv
Y3VtZW50LmNwcAppbmRleCA5ZDI2ZDdhYjgxMjFjNzY0MDk1ZTFlYWY4ZGRkMGEyMzRkNjZiYTdm
Li41MzkxZGRjMmQ4MDRjY2RmNTc2YjZiNTZhZWNlYjVkMjdlNTIzMTM5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEhUTUxWaWV3U291
cmNlRG9jdW1lbnQ6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBT
dHJpbmcmIG1pbWVUCiAgICAgc2V0VXNlc0JlZm9yZUFmdGVyUnVsZXModHJ1ZSk7CiB9CiAKLURv
Y3VtZW50UGFyc2VyKiBIVE1MVmlld1NvdXJjZURvY3VtZW50OjpjcmVhdGVUb2tlbml6ZXIoKQor
RG9jdW1lbnRQYXJzZXIqIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiB7
CiAgICAgLy8gVXNlIEhUTUxEb2N1bWVudFBhcnNlciBpZiBhcHBsaWNhYmxlLCBvdGhlcndpc2Ug
dXNlIFRleHREb2N1bWVudFBhcnNlci4KICAgICBpZiAobV90eXBlID09ICJ0ZXh0L2h0bWwiIHx8
IG1fdHlwZSA9PSAiYXBwbGljYXRpb24veGh0bWwreG1sIiB8fCBtX3R5cGUgPT0gImltYWdlL3N2
Zyt4bWwiIHx8IERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKG1fdHlwZSkKQEAgLTYz
LDcgKzYzLDcgQEAgRG9jdW1lbnRQYXJzZXIqIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmNyZWF0
ZVRva2VuaXplcigpCiAgICAgICAgIHJldHVybiBuZXcgSFRNTERvY3VtZW50UGFyc2VyKHRoaXMp
OwogICAgIH0KIAotICAgIHJldHVybiBjcmVhdGVUZXh0VG9rZW5pemVyKHRoaXMpOworICAgIHJl
dHVybiBjcmVhdGVUZXh0RG9jdW1lbnRQYXJzZXIodGhpcyk7CiB9CiAKIHZvaWQgSFRNTFZpZXdT
b3VyY2VEb2N1bWVudDo6Y3JlYXRlQ29udGFpbmluZ1RhYmxlKCkKQEAgLTI0NCw3ICsyNDQsNyBA
QCB2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZExpbmUoY29uc3QgU3RyaW5nJiBjbGFz
c05hbWUpCiAgICAgbV9jdXJyZW50ID0gbV90ZCA9IHRkOwogCiAjaWZkZWYgREVCVUdfTElORV9O
VU1CRVJTCi0gICAgUmVmUHRyPFRleHQ+IGxpbmVOdW1iZXJUZXh0ID0gVGV4dDo6Y3JlYXRlKHRo
aXMsIFN0cmluZzo6bnVtYmVyKHRva2VuaXplcigpLT5saW5lTnVtYmVyKCkgKyAxKSArICIgIik7
CisgICAgUmVmUHRyPFRleHQ+IGxpbmVOdW1iZXJUZXh0ID0gVGV4dDo6Y3JlYXRlKHRoaXMsIFN0
cmluZzo6bnVtYmVyKHBhcnNlcigpLT5saW5lTnVtYmVyKCkgKyAxKSArICIgIik7CiAgICAgdGQt
PmFkZENoaWxkKGxpbmVOdW1iZXJUZXh0KTsKICAgICBsaW5lTnVtYmVyVGV4dC0+YXR0YWNoKCk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50
LmggYi9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCmluZGV4IDE3ZGI4ZWY3
ZDI3MGNhZjk5OWZkNzk5NmY3YzEwYTRjMjk4OGYwNjIuLjdkZTdmMzExMTQ3ZmQxNzEzYzJkMDAz
NjU3MzJjNjA1YjllZmRhYWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJj
ZURvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaApA
QCAtNDIsMTUgKzQyLDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBI
VE1MVmlld1NvdXJjZURvY3VtZW50KGZyYW1lLCBtaW1lVHlwZSkpOwogICAgIH0KIAotICAgIHZv
aWQgYWRkVmlld1NvdXJjZVRva2VuKFRva2VuKik7IC8vIFVzZWQgYnkgdGhlIEhUTUwgdG9rZW5p
emVyLgotICAgIHZvaWQgYWRkVmlld1NvdXJjZVRleHQoY29uc3QgU3RyaW5nJik7IC8vIFVzZWQg
YnkgdGhlIHBsYWludGV4dCB0b2tlbml6ZXIuCisgICAgdm9pZCBhZGRWaWV3U291cmNlVG9rZW4o
VG9rZW4qKTsgLy8gVXNlZCBieSB0aGUgSFRNTERvY3VtZW50UGFyc2VyLgorICAgIHZvaWQgYWRk
Vmlld1NvdXJjZVRleHQoY29uc3QgU3RyaW5nJik7IC8vIFVzZWQgYnkgdGhlIFRleHREb2N1bWVu
dFBhcnNlci4KICAgICB2b2lkIGFkZFZpZXdTb3VyY2VEb2N0eXBlVG9rZW4oRG9jdHlwZVRva2Vu
Kik7CiAKIHByaXZhdGU6CiAgICAgSFRNTFZpZXdTb3VyY2VEb2N1bWVudChGcmFtZSosIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gUmV0dXJucyBIVE1MRG9jdW1lbnRQYXJzZXIg
b3IgVGV4dERvY3VtZW50UGFyc2VyIGJhc2VkIG9uIG1fdHlwZS4KLSAgICB2aXJ0dWFsIERvY3Vt
ZW50UGFyc2VyKiBjcmVhdGVUb2tlbml6ZXIoKTsKKyAgICB2aXJ0dWFsIERvY3VtZW50UGFyc2Vy
KiBjcmVhdGVQYXJzZXIoKTsKIAogICAgIHZvaWQgY3JlYXRlQ29udGFpbmluZ1RhYmxlKCk7CiAg
ICAgUGFzc1JlZlB0cjxFbGVtZW50PiBhZGRTcGFuV2l0aENsYXNzTmFtZShjb25zdCBTdHJpbmcm
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRt
bC9MZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yLmNwcApzaW1pbGFyaXR5IGluZGV4IDg5JQpyZW5h
bWUgZnJvbSBXZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAKcmVuYW1lIHRvIFdlYkNvcmUvaHRt
bC9MZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yLmNwcAppbmRleCAyNDAxY2JiZTUyNWRmYjQ4YWQ2
OWMwZTYzYmRkZGY2NGMxMjdmYzA2Li4xZGIwYmI2ZjU1MGYwOTRhZGQxMjYzODBmYmQyNjZmNDAz
MmI0ZGUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAKKysrIGIvV2Vi
Q29yZS9odG1sL0xlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3IuY3BwCkBAIC0yMyw3ICsyMyw3IEBA
CiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSFRNTFBhcnNlci5oIgorI2lu
Y2x1ZGUgIkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkNoYXJhY3Rl
ck5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgpAQCAtMTQwLDcgKzE0MCw3
IEBAIHN0cnVjdCBIVE1MU3RhY2tFbGVtIDogTm9uY29weWFibGUgewogICoKICAqLwogCi1IVE1M
UGFyc2VyOjpIVE1MUGFyc2VyKEhUTUxEb2N1bWVudCogZG9jLCBib29sIHJlcG9ydEVycm9ycykK
K0xlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3IoSFRN
TERvY3VtZW50KiBkb2MsIGJvb2wgcmVwb3J0RXJyb3JzKQogICAgIDogbV9kb2N1bWVudChkb2Mp
CiAgICAgLCBtX2N1cnJlbnQoZG9jKQogICAgICwgbV9kaWRSZWZDdXJyZW50KGZhbHNlKQpAQCAt
MTYwLDcgKzE2MCw3IEBAIEhUTUxQYXJzZXI6OkhUTUxQYXJzZXIoSFRNTERvY3VtZW50KiBkb2Ms
IGJvb2wgcmVwb3J0RXJyb3JzKQogewogfQogCi1IVE1MUGFyc2VyOjpIVE1MUGFyc2VyKERvY3Vt
ZW50RnJhZ21lbnQqIGZyYWcsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQ
ZXJtaXNzaW9uKQorTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6TGVnYWN5SFRNTFRyZWVDb25z
dHJ1Y3RvcihEb2N1bWVudEZyYWdtZW50KiBmcmFnLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Np
b24gc2NyaXB0aW5nUGVybWlzc2lvbikKICAgICA6IG1fZG9jdW1lbnQoZnJhZy0+ZG9jdW1lbnQo
KSkKICAgICAsIG1fY3VycmVudChmcmFnKQogICAgICwgbV9kaWRSZWZDdXJyZW50KHRydWUpCkBA
IC0xODIsMTQgKzE4MiwxNCBAQCBIVE1MUGFyc2VyOjpIVE1MUGFyc2VyKERvY3VtZW50RnJhZ21l
bnQqIGZyYWcsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcAogICAgICAgICBmcmFn
LT5yZWYoKTsKIH0KIAotSFRNTFBhcnNlcjo6fkhUTUxQYXJzZXIoKQorTGVnYWN5SFRNTFRyZWVD
b25zdHJ1Y3Rvcjo6fkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3IoKQogewogICAgIGZyZWVCbG9j
aygpOwogICAgIGlmIChtX2RpZFJlZkN1cnJlbnQpCiAgICAgICAgIG1fY3VycmVudC0+ZGVyZWYo
KTsKIH0KIAotdm9pZCBIVE1MUGFyc2VyOjpyZXNldCgpCit2b2lkIExlZ2FjeUhUTUxUcmVlQ29u
c3RydWN0b3I6OnJlc2V0KCkKIHsKICAgICBBU1NFUlQoIW1faXNQYXJzaW5nRnJhZ21lbnQpOwog
CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpyZXNldCgpCiAgICAgICAgIG1f
cGFyc2VyUXVpcmtzLT5yZXNldCgpOwogfQogCi12b2lkIEhUTUxQYXJzZXI6OnNldEN1cnJlbnQo
Tm9kZSogbmV3Q3VycmVudCkgCit2b2lkIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OnNldEN1
cnJlbnQoTm9kZSogbmV3Q3VycmVudCkgCiB7CiAgICAgYm9vbCBkaWRSZWZOZXdDdXJyZW50ID0g
bmV3Q3VycmVudCAmJiBuZXdDdXJyZW50ICE9IG1fZG9jdW1lbnQ7CiAgICAgaWYgKGRpZFJlZk5l
d0N1cnJlbnQpIApAQCAtMjMwLDcgKzIzMCw3IEBAIGlubGluZSBzdGF0aWMgaW50IHRhZ1ByaW9y
aXR5T2ZOb2RlKE5vZGUqIG4pCiAgICAgcmV0dXJuIG4tPmlzSFRNTEVsZW1lbnQoKSA/IHN0YXRp
Y19jYXN0PEhUTUxFbGVtZW50Kj4obiktPnRhZ1ByaW9yaXR5KCkgOiAwOwogfQogCi1pbmxpbmUg
dm9pZCBIVE1MUGFyc2VyOjpsaW1pdERlcHRoKGludCB0YWdQcmlvcml0eSkKK2lubGluZSB2b2lk
IExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OmxpbWl0RGVwdGgoaW50IHRhZ1ByaW9yaXR5KQog
ewogICAgIHdoaWxlIChtX3RyZWVEZXB0aCA+PSBtYXhET01UcmVlRGVwdGgpCiAgICAgICAgIHBv
cEJsb2NrKG1fYmxvY2tTdGFjay0+dGFnTmFtZSk7CkBAIC0yNDAsMTMgKzI0MCwxMyBAQCBpbmxp
bmUgdm9pZCBIVE1MUGFyc2VyOjpsaW1pdERlcHRoKGludCB0YWdQcmlvcml0eSkKICAgICB9CiB9
CiAKLWlubGluZSBib29sIEhUTUxQYXJzZXI6Omluc2VydE5vZGVBZnRlckxpbWl0RGVwdGgoTm9k
ZSogbiwgYm9vbCBmbGF0KQoraW5saW5lIGJvb2wgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6
aW5zZXJ0Tm9kZUFmdGVyTGltaXREZXB0aChOb2RlKiBuLCBib29sIGZsYXQpCiB7CiAgICAgbGlt
aXREZXB0aCh0YWdQcmlvcml0eU9mTm9kZShuKSk7CiAgICAgcmV0dXJuIGluc2VydE5vZGUobiwg
ZmxhdCk7CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZT4gSFRNTFBhcnNlcjo6cGFyc2VUb2tlbihUb2tl
biogdCkKK1Bhc3NSZWZQdHI8Tm9kZT4gTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cGFyc2VU
b2tlbihUb2tlbiogdCkKIHsKICAgICBpZiAoIW1fc2tpcE1vZGVUYWcuaXNOdWxsKCkpIHsKICAg
ICAgICAgaWYgKCF0LT5iZWdpblRhZyAmJiB0LT50YWdOYW1lID09IG1fc2tpcE1vZGVUYWcpCkBA
IC0zMzcsNyArMzM3LDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBIVE1MUGFyc2VyOjpwYXJzZVRva2Vu
KFRva2VuKiB0KQogICAgIHJldHVybiBuOwogfQogCi12b2lkIEhUTUxQYXJzZXI6OnBhcnNlRG9j
dHlwZVRva2VuKERvY3R5cGVUb2tlbiogdCkKK3ZvaWQgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rv
cjo6cGFyc2VEb2N0eXBlVG9rZW4oRG9jdHlwZVRva2VuKiB0KQogewogICAgIC8vIElnbm9yZSBh
bnkgZG9jdHlwZSBhZnRlciB0aGUgZmlyc3QuICBJZ25vcmUgZG9jdHlwZXMgaW4gZnJhZ21lbnRz
LgogICAgIGlmIChtX2RvY3VtZW50LT5kb2N0eXBlKCkgfHwgbV9pc1BhcnNpbmdGcmFnbWVudCB8
fCBtX2N1cnJlbnQgIT0gbV9kb2N1bWVudCkKQEAgLTM3Miw3ICszNzIsNyBAQCBzdGF0aWMgYm9v
bCBpc1Njb3BpbmdUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogICAgICAgICB8fCB0
YWdOYW1lID09IG9iamVjdFRhZyB8fCB0YWdOYW1lID09IHRhYmxlVGFnIHx8IHRhZ05hbWUgPT0g
aHRtbFRhZzsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjppbnNlcnROb2RlKE5vZGUqIG4sIGJvb2wg
ZmxhdCkKK2Jvb2wgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6aW5zZXJ0Tm9kZShOb2RlKiBu
LCBib29sIGZsYXQpCiB7CiAgICAgUmVmUHRyPE5vZGU+IHByb3RlY3ROb2RlKG4pOwogCkBAIC00
MjksNyArNDI5LDcgQEAgYm9vbCBIVE1MUGFyc2VyOjppbnNlcnROb2RlKE5vZGUqIG4sIGJvb2wg
ZmxhdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjpoYW5kbGVFcnJv
cihOb2RlKiBuLCBib29sIGZsYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBpbnQg
dGFnUHJpb3JpdHkpCitib29sIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OmhhbmRsZUVycm9y
KE5vZGUqIG4sIGJvb2wgZmxhdCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGludCB0
YWdQcmlvcml0eSkKIHsKICAgICAvLyBFcnJvciBoYW5kbGluZyBjb2RlLiAgVGhpcyBpcyBqdXN0
IGFkIGhvYyBoYW5kbGluZyBvZiBzcGVjaWZpYyBwYXJlbnQvY2hpbGQgY29tYmluYXRpb25zLgog
ICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwpAQCAtNzI0LDIyICs3MjQsMjIgQEAgYm9vbCBIVE1M
UGFyc2VyOjpoYW5kbGVFcnJvcihOb2RlKiBuLCBib29sIGZsYXQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxOYW1lLAogICAgIHJldHVybiBpbnNlcnROb2RlKG4pOwogfQogCi10eXBlZGVmIGJv
b2wgKEhUTUxQYXJzZXI6OipDcmVhdGVFcnJvckNoZWNrRnVuYykoVG9rZW4qIHQsIFJlZlB0cjxO
b2RlPiYpOwordHlwZWRlZiBib29sIChMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjoqQ3JlYXRl
RXJyb3JDaGVja0Z1bmMpKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mKTsKIHR5cGVkZWYgSGFzaE1h
cDxBdG9taWNTdHJpbmdJbXBsKiwgQ3JlYXRlRXJyb3JDaGVja0Z1bmM+IEZ1bmN0aW9uTWFwOwog
Ci1ib29sIEhUTUxQYXJzZXI6OnRleHRDcmVhdGVFcnJvckNoZWNrKFRva2VuKiB0LCBSZWZQdHI8
Tm9kZT4mIHJlc3VsdCkKK2Jvb2wgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6dGV4dENyZWF0
ZUVycm9yQ2hlY2soVG9rZW4qIHQsIFJlZlB0cjxOb2RlPiYgcmVzdWx0KQogewogICAgIHJlc3Vs
dCA9IFRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LCB0LT50ZXh0LmdldCgpKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6Y29tbWVudENyZWF0ZUVycm9yQ2hlY2soVG9r
ZW4qIHQsIFJlZlB0cjxOb2RlPiYgcmVzdWx0KQorYm9vbCBMZWdhY3lIVE1MVHJlZUNvbnN0cnVj
dG9yOjpjb21tZW50Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+JiByZXN1
bHQpCiB7CiAgICAgcmVzdWx0ID0gQ29tbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQsIHQtPnRleHQu
Z2V0KCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjpoZWFkQ3Jl
YXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYgcmVzdWx0KQorYm9vbCBMZWdhY3lI
VE1MVHJlZUNvbnN0cnVjdG9yOjpoZWFkQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxO
b2RlPiYgcmVzdWx0KQogewogICAgIGlmICghbV9oZWFkIHx8IG1fY3VycmVudC0+bG9jYWxOYW1l
KCkgPT0gaHRtbFRhZykgewogICAgICAgICBtX2hlYWQgPSBIVE1MSGVhZEVsZW1lbnQ6OmNyZWF0
ZShtX2RvY3VtZW50KTsKQEAgLTc0OSw3ICs3NDksNyBAQCBib29sIEhUTUxQYXJzZXI6OmhlYWRD
cmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JiByZXN1bHQpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1ib29sIEhUTUxQYXJzZXI6OmJvZHlDcmVhdGVFcnJvckNoZWNrKFRva2Vu
KiwgUmVmUHRyPE5vZGU+JikKK2Jvb2wgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6Ym9keUNy
ZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQogewogICAgIC8vIGJvZHkgbm8g
bG9uZ2VyIGFsbG93ZWQgaWYgd2UgaGF2ZSBhIGZyYW1lc2V0CiAgICAgaWYgKG1faGF2ZUZyYW1l
U2V0KQpAQCAtNzY1LDcgKzc2NSw3IEBAIGJvb2wgSFRNTFBhcnNlcjo6Ym9keUNyZWF0ZUVycm9y
Q2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEhUTUxQYXJzZXI6OmZyYW1lc2V0Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2Rl
PiYpCitib29sIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OmZyYW1lc2V0Q3JlYXRlRXJyb3JD
aGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCiB7CiAgICAgcG9wQmxvY2soaGVhZFRhZyk7CiAg
ICAgaWYgKG1faW5Cb2R5ICYmICFtX2hhdmVGcmFtZVNldCAmJiAhbV9oYXZlQ29udGVudCkgewpA
QCAtNzg1LDcgKzc4NSw3IEBAIGJvb2wgSFRNTFBhcnNlcjo6ZnJhbWVzZXRDcmVhdGVFcnJvckNo
ZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBI
VE1MUGFyc2VyOjpmb3JtQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+JiBy
ZXN1bHQpCitib29sIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OmZvcm1DcmVhdGVFcnJvckNo
ZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mIHJlc3VsdCkKIHsKICAgICAvLyBPbmx5IGNyZWF0
ZSBhIG5ldyBmb3JtIGlmIHdlJ3JlIG5vdCBhbHJlYWR5IGluc2lkZSBvbmUuCiAgICAgLy8gVGhp
cyBpcyBjb25zaXN0ZW50IHdpdGggb3RoZXIgYnJvd3NlcnMnIGJlaGF2aW9yLgpAQCAtNzk3LDcg
Kzc5Nyw3IEBAIGJvb2wgSFRNTFBhcnNlcjo6Zm9ybUNyZWF0ZUVycm9yQ2hlY2soVG9rZW4qIHQs
IFJlZlB0cjxOb2RlPiYgcmVzdWx0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBIVE1M
UGFyc2VyOjppc2luZGV4Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+JiBy
ZXN1bHQpCitib29sIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OmlzaW5kZXhDcmVhdGVFcnJv
ckNoZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mIHJlc3VsdCkKIHsKICAgICBSZWZQdHI8Tm9k
ZT4gbiA9IGhhbmRsZUlzaW5kZXgodCk7CiAgICAgaWYgKCFtX2luQm9keSkKQEAgLTgwOSwxMiAr
ODA5LDEyIEBAIGJvb2wgSFRNTFBhcnNlcjo6aXNpbmRleENyZWF0ZUVycm9yQ2hlY2soVG9rZW4q
IHQsIFJlZlB0cjxOb2RlPiYgcmVzdWx0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBI
VE1MUGFyc2VyOjpzZWxlY3RDcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JikK
K2Jvb2wgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6c2VsZWN0Q3JlYXRlRXJyb3JDaGVjayhU
b2tlbiosIFJlZlB0cjxOb2RlPiYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSFRN
TFBhcnNlcjo6ZGRDcmVhdGVFcnJvckNoZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mIHJlc3Vs
dCkKK2Jvb2wgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6ZGRDcmVhdGVFcnJvckNoZWNrKFRv
a2VuKiB0LCBSZWZQdHI8Tm9kZT4mIHJlc3VsdCkKIHsKICAgICBwQ2xvc2VyQ3JlYXRlRXJyb3JD
aGVjayh0LCByZXN1bHQpOwogICAgIHBvcEJsb2NrKGR0VGFnKTsKQEAgLTgyMiw3ICs4MjIsNyBA
QCBib29sIEhUTUxQYXJzZXI6OmRkQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5v
ZGU+JiByZXN1bHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6ZHRD
cmVhdGVFcnJvckNoZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mIHJlc3VsdCkKK2Jvb2wgTGVn
YWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6ZHRDcmVhdGVFcnJvckNoZWNrKFRva2VuKiB0LCBSZWZQ
dHI8Tm9kZT4mIHJlc3VsdCkKIHsKICAgICBwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayh0LCByZXN1
bHQpOwogICAgIHBvcEJsb2NrKGRkVGFnKTsKQEAgLTgzMCw0NiArODMwLDQ2IEBAIGJvb2wgSFRN
TFBhcnNlcjo6ZHRDcmVhdGVFcnJvckNoZWNrKFRva2VuKiB0LCBSZWZQdHI8Tm9kZT4mIHJlc3Vs
dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjpycENyZWF0ZUVycm9y
Q2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQorYm9vbCBMZWdhY3lIVE1MVHJlZUNvbnN0cnVj
dG9yOjpycENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQogewogICAgIHBv
cEJsb2NrKHJwVGFnKTsKICAgICBwb3BCbG9jayhydFRhZyk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgSFRNTFBhcnNlcjo6cnRDcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5v
ZGU+JikKK2Jvb2wgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cnRDcmVhdGVFcnJvckNoZWNr
KFRva2VuKiwgUmVmUHRyPE5vZGU+JikKIHsKICAgICBwb3BCbG9jayhycFRhZyk7CiAgICAgcG9w
QmxvY2socnRUYWcpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxQYXJzZXI6Om5l
c3RlZENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qIHQsIFJlZlB0cjxOb2RlPiYpCitib29sIExlZ2Fj
eUhUTUxUcmVlQ29uc3RydWN0b3I6Om5lc3RlZENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qIHQsIFJl
ZlB0cjxOb2RlPiYpCiB7CiAgICAgcG9wQmxvY2sodC0+dGFnTmFtZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6bmVzdGVkUENsb3NlckNyZWF0ZUVycm9yQ2hlY2so
VG9rZW4qIHQsIFJlZlB0cjxOb2RlPiYgcmVzdWx0KQorYm9vbCBMZWdhY3lIVE1MVHJlZUNvbnN0
cnVjdG9yOjpuZXN0ZWRQQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5v
ZGU+JiByZXN1bHQpCiB7CiAgICAgcENsb3NlckNyZWF0ZUVycm9yQ2hlY2sodCwgcmVzdWx0KTsK
ICAgICBwb3BCbG9jayh0LT50YWdOYW1lKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBI
VE1MUGFyc2VyOjpuZXN0ZWRTdHlsZUNyZWF0ZUVycm9yQ2hlY2soVG9rZW4qIHQsIFJlZlB0cjxO
b2RlPiYpCitib29sIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6Om5lc3RlZFN0eWxlQ3JlYXRl
RXJyb3JDaGVjayhUb2tlbiogdCwgUmVmUHRyPE5vZGU+JikKIHsKICAgICByZXR1cm4gYWxsb3dO
ZXN0ZWRSZWR1bmRhbnRUYWcodC0+dGFnTmFtZSk7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6dGFi
bGVDZWxsQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCitib29sIExlZ2Fj
eUhUTUxUcmVlQ29uc3RydWN0b3I6OnRhYmxlQ2VsbENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBS
ZWZQdHI8Tm9kZT4mKQogewogICAgIHBvcEJsb2NrKHRkVGFnKTsKICAgICBwb3BCbG9jayh0aFRh
Zyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6dGFibGVTZWN0aW9u
Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCitib29sIExlZ2FjeUhUTUxU
cmVlQ29uc3RydWN0b3I6OnRhYmxlU2VjdGlvbkNyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQ
dHI8Tm9kZT4mKQogewogICAgIHBvcEJsb2NrKHRoZWFkVGFnKTsKICAgICBwb3BCbG9jayh0Ym9k
eVRhZyk7CkBAIC04NzcsMTkgKzg3NywxOSBAQCBib29sIEhUTUxQYXJzZXI6OnRhYmxlU2VjdGlv
bkNyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIEhUTUxQYXJzZXI6Om5vZW1iZWRDcmVhdGVFcnJvckNoZWNrKFRva2VuKiwg
UmVmUHRyPE5vZGU+JikKK2Jvb2wgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6bm9lbWJlZENy
ZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQogewogICAgIHNldFNraXBNb2Rl
KG5vZW1iZWRUYWcpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxQYXJzZXI6Om5v
ZnJhbWVzQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCitib29sIExlZ2Fj
eUhUTUxUcmVlQ29uc3RydWN0b3I6Om5vZnJhbWVzQ3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJl
ZlB0cjxOb2RlPiYpCiB7CiAgICAgc2V0U2tpcE1vZGUobm9mcmFtZXNUYWcpOwogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIEhUTUxQYXJzZXI6Om5vc2NyaXB0Q3JlYXRlRXJyb3JDaGVjayhU
b2tlbiosIFJlZlB0cjxOb2RlPiYpCitib29sIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6Om5v
c2NyaXB0Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCiB7CiAgICAgaWYg
KCFtX2lzUGFyc2luZ0ZyYWdtZW50KSB7CiAgICAgICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1l
bnQtPmZyYW1lKCk7CkBAIC04OTksMTQgKzg5OSwxNCBAQCBib29sIEhUTUxQYXJzZXI6Om5vc2Ny
aXB0Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgSFRNTFBhcnNlcjo6cENsb3NlckNyZWF0ZUVycm9yQ2hlY2soVG9rZW4q
LCBSZWZQdHI8Tm9kZT4mKQorYm9vbCBMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpwQ2xvc2Vy
Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCiB7CiAgICAgaWYgKGhhc1BF
bGVtZW50SW5TY29wZSgpKQogICAgICAgICBwb3BCbG9jayhwVGFnKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjpwQ2xvc2VyU3RyaWN0Q3JlYXRlRXJyb3JDaGVjayhU
b2tlbiosIFJlZlB0cjxOb2RlPiYpCitib29sIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OnBD
bG9zZXJTdHJpY3RDcmVhdGVFcnJvckNoZWNrKFRva2VuKiwgUmVmUHRyPE5vZGU+JikKIHsKICAg
ICBpZiAobV9kb2N1bWVudC0+aW5Db21wYXRNb2RlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtOTE1LDcgKzkxNSw3IEBAIGJvb2wgSFRNTFBhcnNlcjo6cENsb3NlclN0cmljdENyZWF0ZUVy
cm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4mKQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEhUTUxQYXJzZXI6Om1hcENyZWF0ZUVycm9yQ2hlY2soVG9rZW4qLCBSZWZQdHI8Tm9kZT4m
IHJlc3VsdCkKK2Jvb2wgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6bWFwQ3JlYXRlRXJyb3JD
aGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYgcmVzdWx0KQogewogICAgIG1fY3VycmVudE1hcEVs
ZW1lbnQgPSBIVE1MTWFwRWxlbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQpOwogICAgIHJlc3VsdCA9
IG1fY3VycmVudE1hcEVsZW1lbnQ7CkBAIC05MzYsNDggKzkzNiw0OCBAQCBzdGF0aWMgdm9pZCBt
YXBUYWdzVG9GdW5jKEZ1bmN0aW9uTWFwJiBtYXAsIFF1YWxpZmllZE5hbWUgKCZuYW1lcylbQXJy
YXlTaXplXSwgQwogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBIVE1MUGFyc2VyOjpnZXRO
b2RlKFRva2VuKiB0KQorUGFzc1JlZlB0cjxOb2RlPiBMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9y
OjpnZXROb2RlKFRva2VuKiB0KQogewogICAgIC8vIEluaXQgb3VyIGVycm9yIGhhbmRsaW5nIHRh
YmxlLgogICAgIERFRklORV9TVEFUSUNfTE9DQUwoRnVuY3Rpb25NYXAsIGdGdW5jdGlvbk1hcCwg
KCkpOwogICAgIGlmIChnRnVuY3Rpb25NYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIFF1YWxpZmll
ZE5hbWUgbmVzdGVkQ3JlYXRlRXJyb3JUYWdzW10gPSB7IGFUYWcsIGJ1dHRvblRhZywgbm9iclRh
ZywgdHJUYWcgfTsKLSAgICAgICAgbWFwVGFnc1RvRnVuYyhnRnVuY3Rpb25NYXAsIG5lc3RlZENy
ZWF0ZUVycm9yVGFncywgJkhUTUxQYXJzZXI6Om5lc3RlZENyZWF0ZUVycm9yQ2hlY2spOworICAg
ICAgICBtYXBUYWdzVG9GdW5jKGdGdW5jdGlvbk1hcCwgbmVzdGVkQ3JlYXRlRXJyb3JUYWdzLCAm
TGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6bmVzdGVkQ3JlYXRlRXJyb3JDaGVjayk7CiAKICAg
ICAgICAgUXVhbGlmaWVkTmFtZSBuZXN0ZWRTdHlsZUNyZWF0ZUVycm9yVGFnc1tdID0geyBiVGFn
LCBiaWdUYWcsIGlUYWcsIHNUYWcsIHNtYWxsVGFnLCBzdHJpa2VUYWcsIHR0VGFnLCB1VGFnIH07
Ci0gICAgICAgIG1hcFRhZ3NUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBuZXN0ZWRTdHlsZUNyZWF0ZUVy
cm9yVGFncywgJkhUTUxQYXJzZXI6Om5lc3RlZFN0eWxlQ3JlYXRlRXJyb3JDaGVjayk7CisgICAg
ICAgIG1hcFRhZ3NUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBuZXN0ZWRTdHlsZUNyZWF0ZUVycm9yVGFn
cywgJkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6Om5lc3RlZFN0eWxlQ3JlYXRlRXJyb3JDaGVj
ayk7CiAKICAgICAgICAgUXVhbGlmaWVkTmFtZSBwQ2xvc2VyQ3JlYXRlRXJyb3JUYWdzW10gPSB7
IGFkZHJlc3NUYWcsIGFydGljbGVUYWcsCiAgICAgICAgICAgICBhc2lkZVRhZywgYmxvY2txdW90
ZVRhZywgY2VudGVyVGFnLCBkaXJUYWcsIGRpdlRhZywgZGxUYWcsCiAgICAgICAgICAgICBmaWVs
ZHNldFRhZywgZm9vdGVyVGFnLCBoMVRhZywgaDJUYWcsIGgzVGFnLCBoNFRhZywgaDVUYWcsIGg2
VGFnLAogICAgICAgICAgICAgaGVhZGVyVGFnLCBoZ3JvdXBUYWcsIGhyVGFnLCBsaXN0aW5nVGFn
LCBtZW51VGFnLCBuYXZUYWcsIG9sVGFnLAogICAgICAgICAgICAgcFRhZywgcGxhaW50ZXh0VGFn
LCBwcmVUYWcsIHNlY3Rpb25UYWcsIHVsVGFnIH07Ci0gICAgICAgIG1hcFRhZ3NUb0Z1bmMoZ0Z1
bmN0aW9uTWFwLCBwQ2xvc2VyQ3JlYXRlRXJyb3JUYWdzLCAmSFRNTFBhcnNlcjo6cENsb3NlckNy
ZWF0ZUVycm9yQ2hlY2spOwotCi0gICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIGJv
ZHlUYWcsICZIVE1MUGFyc2VyOjpib2R5Q3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIG1hcFRh
Z1RvRnVuYyhnRnVuY3Rpb25NYXAsIGRkVGFnLCAmSFRNTFBhcnNlcjo6ZGRDcmVhdGVFcnJvckNo
ZWNrKTsKLSAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgZHRUYWcsICZIVE1MUGFy
c2VyOjpkdENyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9u
TWFwLCBmb3JtVGFnLCAmSFRNTFBhcnNlcjo6Zm9ybUNyZWF0ZUVycm9yQ2hlY2spOwotICAgICAg
ICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBmcmFtZXNldFRhZywgJkhUTUxQYXJzZXI6OmZy
YW1lc2V0Q3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25N
YXAsIGhlYWRUYWcsICZIVE1MUGFyc2VyOjpoZWFkQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAg
IG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIGlzaW5kZXhUYWcsICZIVE1MUGFyc2VyOjppc2lu
ZGV4Q3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAs
IG1hcFRhZywgJkhUTUxQYXJzZXI6Om1hcENyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBU
YWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBsaVRhZywgJkhUTUxQYXJzZXI6Om5lc3RlZFBDbG9zZXJD
cmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgbm9l
bWJlZFRhZywgJkhUTUxQYXJzZXI6Om5vZW1iZWRDcmVhdGVFcnJvckNoZWNrKTsKLSAgICAgICAg
bWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgbm9mcmFtZXNUYWcsICZIVE1MUGFyc2VyOjpub2Zy
YW1lc0NyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFw
LCBub3NjcmlwdFRhZywgJkhUTUxQYXJzZXI6Om5vc2NyaXB0Q3JlYXRlRXJyb3JDaGVjayk7Ci0g
ICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIHRhYmxlVGFnLCAmSFRNTFBhcnNlcjo6
cENsb3NlclN0cmljdENyZWF0ZUVycm9yQ2hlY2spOwotICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1
bmN0aW9uTWFwLCBycFRhZywgJkhUTUxQYXJzZXI6OnJwQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAg
ICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIHJ0VGFnLCAmSFRNTFBhcnNlcjo6cnRDcmVh
dGVFcnJvckNoZWNrKTsKLSAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgc2VsZWN0
VGFnLCAmSFRNTFBhcnNlcjo6c2VsZWN0Q3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIG1hcFRh
Z1RvRnVuYyhnRnVuY3Rpb25NYXAsIHRkVGFnLCAmSFRNTFBhcnNlcjo6dGFibGVDZWxsQ3JlYXRl
RXJyb3JDaGVjayk7Ci0gICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIHRoVGFnLCAm
SFRNTFBhcnNlcjo6dGFibGVDZWxsQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIG1hcFRhZ1Rv
RnVuYyhnRnVuY3Rpb25NYXAsIHRib2R5VGFnLCAmSFRNTFBhcnNlcjo6dGFibGVTZWN0aW9uQ3Jl
YXRlRXJyb3JDaGVjayk7Ci0gICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIHRmb290
VGFnLCAmSFRNTFBhcnNlcjo6dGFibGVTZWN0aW9uQ3JlYXRlRXJyb3JDaGVjayk7Ci0gICAgICAg
IG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIHRoZWFkVGFnLCAmSFRNTFBhcnNlcjo6dGFibGVT
ZWN0aW9uQ3JlYXRlRXJyb3JDaGVjayk7Ci0KLSAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldChjb21t
ZW50QXRvbS5pbXBsKCksICZIVE1MUGFyc2VyOjpjb21tZW50Q3JlYXRlRXJyb3JDaGVjayk7Ci0g
ICAgICAgIGdGdW5jdGlvbk1hcC5zZXQodGV4dEF0b20uaW1wbCgpLCAmSFRNTFBhcnNlcjo6dGV4
dENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBUYWdzVG9GdW5jKGdGdW5jdGlvbk1hcCwg
cENsb3NlckNyZWF0ZUVycm9yVGFncywgJkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OnBDbG9z
ZXJDcmVhdGVFcnJvckNoZWNrKTsKKworICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFw
LCBib2R5VGFnLCAmTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6Ym9keUNyZWF0ZUVycm9yQ2hl
Y2spOworICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBkZFRhZywgJkxlZ2FjeUhU
TUxUcmVlQ29uc3RydWN0b3I6OmRkQ3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1Rv
RnVuYyhnRnVuY3Rpb25NYXAsIGR0VGFnLCAmTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6ZHRD
cmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgZm9y
bVRhZywgJkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OmZvcm1DcmVhdGVFcnJvckNoZWNrKTsK
KyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgZnJhbWVzZXRUYWcsICZMZWdhY3lI
VE1MVHJlZUNvbnN0cnVjdG9yOjpmcmFtZXNldENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBt
YXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBoZWFkVGFnLCAmTGVnYWN5SFRNTFRyZWVDb25zdHJ1
Y3Rvcjo6aGVhZENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0
aW9uTWFwLCBpc2luZGV4VGFnLCAmTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6aXNpbmRleENy
ZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCBtYXBU
YWcsICZMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjptYXBDcmVhdGVFcnJvckNoZWNrKTsKKyAg
ICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgbGlUYWcsICZMZWdhY3lIVE1MVHJlZUNv
bnN0cnVjdG9yOjpuZXN0ZWRQQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRh
Z1RvRnVuYyhnRnVuY3Rpb25NYXAsIG5vZW1iZWRUYWcsICZMZWdhY3lIVE1MVHJlZUNvbnN0cnVj
dG9yOjpub2VtYmVkQ3JlYXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVu
Y3Rpb25NYXAsIG5vZnJhbWVzVGFnLCAmTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6bm9mcmFt
ZXNDcmVhdGVFcnJvckNoZWNrKTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwg
bm9zY3JpcHRUYWcsICZMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpub3NjcmlwdENyZWF0ZUVy
cm9yQ2hlY2spOworICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCB0YWJsZVRhZywg
JkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OnBDbG9zZXJTdHJpY3RDcmVhdGVFcnJvckNoZWNr
KTsKKyAgICAgICAgbWFwVGFnVG9GdW5jKGdGdW5jdGlvbk1hcCwgcnBUYWcsICZMZWdhY3lIVE1M
VHJlZUNvbnN0cnVjdG9yOjpycENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBUYWdUb0Z1
bmMoZ0Z1bmN0aW9uTWFwLCBydFRhZywgJkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OnJ0Q3Jl
YXRlRXJyb3JDaGVjayk7CisgICAgICAgIG1hcFRhZ1RvRnVuYyhnRnVuY3Rpb25NYXAsIHNlbGVj
dFRhZywgJkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OnNlbGVjdENyZWF0ZUVycm9yQ2hlY2sp
OworICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCB0ZFRhZywgJkxlZ2FjeUhUTUxU
cmVlQ29uc3RydWN0b3I6OnRhYmxlQ2VsbENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBU
YWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCB0aFRhZywgJkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6
OnRhYmxlQ2VsbENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0
aW9uTWFwLCB0Ym9keVRhZywgJkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OnRhYmxlU2VjdGlv
bkNyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCB0
Zm9vdFRhZywgJkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OnRhYmxlU2VjdGlvbkNyZWF0ZUVy
cm9yQ2hlY2spOworICAgICAgICBtYXBUYWdUb0Z1bmMoZ0Z1bmN0aW9uTWFwLCB0aGVhZFRhZywg
JkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OnRhYmxlU2VjdGlvbkNyZWF0ZUVycm9yQ2hlY2sp
OworCisgICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoY29tbWVudEF0b20uaW1wbCgpLCAmTGVnYWN5
SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6Y29tbWVudENyZWF0ZUVycm9yQ2hlY2spOworICAgICAgICBn
RnVuY3Rpb25NYXAuc2V0KHRleHRBdG9tLmltcGwoKSwgJkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0
b3I6OnRleHRDcmVhdGVFcnJvckNoZWNrKTsKICAgICB9CiAKICAgICBib29sIHByb2NlZWQgPSB0
cnVlOwpAQCAtOTg5LDcgKzk4OSw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gSFRNTFBhcnNlcjo6Z2V0
Tm9kZShUb2tlbiogdCkKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotYm9vbCBI
VE1MUGFyc2VyOjphbGxvd05lc3RlZFJlZHVuZGFudFRhZyhjb25zdCBBdG9taWNTdHJpbmcmIHRh
Z05hbWUpCitib29sIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OmFsbG93TmVzdGVkUmVkdW5k
YW50VGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKIHsKICAgICAvLyB3d3cubGljZW8u
ZWR1Lm14IGlzIGFuIGV4YW1wbGUgb2YgYSBzaXRlIHRoYXQgYWNoaWV2ZXMgYSBsZXZlbCBvZiBu
ZXN0aW5nIG9mCiAgICAgLy8gYWJvdXQgMTUwMCB0YWdzLCBhbGwgZnJvbSBhIGJ1bmNoIG9mIDxi
PnMuICBXZSB3aWxsIG9ubHkgYWxsb3cgYXQgbW9zdCAyMApAQCAtMTAwMSw3ICsxMDAxLDcgQEAg
Ym9vbCBIVE1MUGFyc2VyOjphbGxvd05lc3RlZFJlZHVuZGFudFRhZyhjb25zdCBBdG9taWNTdHJp
bmcmIHRhZ05hbWUpCiAgICAgcmV0dXJuIGkgIT0gY01heFJlZHVuZGFudFRhZ0RlcHRoOwogfQog
Ci12b2lkIEhUTUxQYXJzZXI6OnByb2Nlc3NDbG9zZVRhZyhUb2tlbiogdCkKK3ZvaWQgTGVnYWN5
SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cHJvY2Vzc0Nsb3NlVGFnKFRva2VuKiB0KQogewogICAgIC8v
IFN1cHBvcnQgZm9yIHJlYWxseSBicm9rZW4gaHRtbC4KICAgICAvLyB3ZSBuZXZlciBjbG9zZSB0
aGUgYm9keSB0YWcsIHNpbmNlIHNvbWUgc3R1cGlkIHdlYiBwYWdlcyBjbG9zZSBpdCBiZWZvcmUg
dGhlIGFjdHVhbCBlbmQgb2YgdGhlIGRvYy4KQEAgLTEwMzEsNyArMTAzMSw3IEBAIHZvaWQgSFRN
TFBhcnNlcjo6cHJvY2Vzc0Nsb3NlVGFnKFRva2VuKiB0KQogICAgIH0KIH0KIAotYm9vbCBIVE1M
UGFyc2VyOjppc0hlYWRpbmdUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQorYm9vbCBM
ZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjppc0hlYWRpbmdUYWcoY29uc3QgQXRvbWljU3RyaW5n
JiB0YWdOYW1lKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoVGFnTmFtZVNldCwgaGVhZGlu
Z1RhZ3MsICgpKTsKICAgICBpZiAoaGVhZGluZ1RhZ3MuaXNFbXB0eSgpKSB7CkBAIC0xMDQxLDcg
KzEwNDEsNyBAQCBib29sIEhUTUxQYXJzZXI6OmlzSGVhZGluZ1RhZyhjb25zdCBBdG9taWNTdHJp
bmcmIHRhZ05hbWUpCiAgICAgcmV0dXJuIGhlYWRpbmdUYWdzLmNvbnRhaW5zKHRhZ05hbWUuaW1w
bCgpKTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjppc0lubGluZShOb2RlKiBub2RlKSBjb25zdAor
Ym9vbCBMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjppc0lubGluZShOb2RlKiBub2RlKSBjb25z
dAogewogICAgIGlmIChub2RlLT5pc1RleHROb2RlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMTA3MSw3ICsxMDcxLDcgQEAgYm9vbCBIVE1MUGFyc2VyOjppc0lubGluZShOb2RlKiBub2Rl
KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBIVE1MUGFyc2VyOjppc1Jlc2lk
dWFsU3R5bGVUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQorYm9vbCBMZWdhY3lIVE1M
VHJlZUNvbnN0cnVjdG9yOjppc1Jlc2lkdWFsU3R5bGVUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0
YWdOYW1lKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmdJ
bXBsKj4sIHJlc2lkdWFsU3R5bGVUYWdzLCAoKSk7CiAgICAgaWYgKHJlc2lkdWFsU3R5bGVUYWdz
LmlzRW1wdHkoKSkgewpAQCAtMTA4Myw3ICsxMDgzLDcgQEAgYm9vbCBIVE1MUGFyc2VyOjppc1Jl
c2lkdWFsU3R5bGVUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogICAgIHJldHVybiBy
ZXNpZHVhbFN0eWxlVGFncy5jb250YWlucyh0YWdOYW1lLmltcGwoKSk7CiB9CiAKLWJvb2wgSFRN
TFBhcnNlcjo6aXNBZmZlY3RlZEJ5UmVzaWR1YWxTdHlsZShjb25zdCBBdG9taWNTdHJpbmcmIHRh
Z05hbWUpCitib29sIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OmlzQWZmZWN0ZWRCeVJlc2lk
dWFsU3R5bGUoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogewogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4sIHVuYWZmZWN0ZWRUYWdzLCAoKSk7
CiAgICAgaWYgKHVuYWZmZWN0ZWRUYWdzLmlzRW1wdHkoKSkgewpAQCAtMTA5NSw3ICsxMDk1LDcg
QEAgYm9vbCBIVE1MUGFyc2VyOjppc0FmZmVjdGVkQnlSZXNpZHVhbFN0eWxlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFnTmFtZSkKICAgICByZXR1cm4gIXVuYWZmZWN0ZWRUYWdzLmNvbnRhaW5zKHRh
Z05hbWUuaW1wbCgpKTsKIH0KIAotdm9pZCBIVE1MUGFyc2VyOjpoYW5kbGVSZXNpZHVhbFN0eWxl
Q2xvc2VUYWdBY3Jvc3NCbG9ja3MoSFRNTFN0YWNrRWxlbSogZWxlbSkKK3ZvaWQgTGVnYWN5SFRN
TFRyZWVDb25zdHJ1Y3Rvcjo6aGFuZGxlUmVzaWR1YWxTdHlsZUNsb3NlVGFnQWNyb3NzQmxvY2tz
KEhUTUxTdGFja0VsZW0qIGVsZW0pCiB7CiAgICAgSFRNTFN0YWNrRWxlbSogbWF4RWxlbSA9IDA7
CiAgICAgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOwpAQCAtMTMyNiw3ICsxMzI2LDcgQEAgdm9pZCBI
VE1MUGFyc2VyOjpoYW5kbGVSZXNpZHVhbFN0eWxlQ2xvc2VUYWdBY3Jvc3NCbG9ja3MoSFRNTFN0
YWNrRWxlbSogZWxlbSkKICAgICBtX2hhbmRsaW5nUmVzaWR1YWxTdHlsZUFjcm9zc0Jsb2NrcyA9
IGZhbHNlOwogfQogCi12b2lkIEhUTUxQYXJzZXI6OnJlb3BlblJlc2lkdWFsU3R5bGVUYWdzKEhU
TUxTdGFja0VsZW0qIGVsZW0sIE5vZGUqIG1hbGZvcm1lZFRhYmxlUGFyZW50KQordm9pZCBMZWdh
Y3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpyZW9wZW5SZXNpZHVhbFN0eWxlVGFncyhIVE1MU3RhY2tF
bGVtKiBlbGVtLCBOb2RlKiBtYWxmb3JtZWRUYWJsZVBhcmVudCkKIHsKICAgICAvLyBMb29wIGZv
ciBlYWNoIHRhZyB0aGF0IG5lZWRzIHRvIGJlIHJlb3BlbmVkLgogICAgIHdoaWxlIChlbGVtKSB7
CkBAIC0xMzY3LDcgKzEzNjcsNyBAQCB2b2lkIEhUTUxQYXJzZXI6OnJlb3BlblJlc2lkdWFsU3R5
bGVUYWdzKEhUTUxTdGFja0VsZW0qIGVsZW0sIE5vZGUqIG1hbGZvcm1lZFRhYgogICAgIH0KIH0K
IAotdm9pZCBIVE1MUGFyc2VyOjpwdXNoQmxvY2soY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1l
LCBpbnQgbGV2ZWwpCit2b2lkIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3I6OnB1c2hCbG9jayhj
b25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUsIGludCBsZXZlbCkKIHsKICAgICBtX2Jsb2NrU3Rh
Y2sgPSBuZXcgSFRNTFN0YWNrRWxlbSh0YWdOYW1lLCBsZXZlbCwgbV9jdXJyZW50LCBtX2RpZFJl
ZkN1cnJlbnQsIG1fYmxvY2tTdGFjayk7CiAgICAgaWYgKGxldmVsID49IG1pbkJsb2NrTGV2ZWxU
YWdQcmlvcml0eSkKQEAgLTEzODAsNyArMTM4MCw3IEBAIHZvaWQgSFRNTFBhcnNlcjo6cHVzaEJs
b2NrKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgaW50IGxldmVsKQogICAgICAgICBtX2hh
c1BFbGVtZW50SW5TY29wZSA9IE5vdEluU2NvcGU7CiB9CiAKLXZvaWQgSFRNTFBhcnNlcjo6cG9w
QmxvY2soY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lLCBib29sIHJlcG9ydEVycm9ycykKK3Zv
aWQgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cG9wQmxvY2soY29uc3QgQXRvbWljU3RyaW5n
JiB0YWdOYW1lLCBib29sIHJlcG9ydEVycm9ycykKIHsKICAgICBIVE1MU3RhY2tFbGVtKiBlbGVt
ID0gbV9ibG9ja1N0YWNrOwogCkBAIC0xNDY5LDcgKzE0NjksNyBAQCB2b2lkIEhUTUxQYXJzZXI6
OnBvcEJsb2NrKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgYm9vbCByZXBvcnRFcnJvcnMp
CiAgICAgcmVvcGVuUmVzaWR1YWxTdHlsZVRhZ3MocmVzaWR1YWxTdHlsZVN0YWNrLCBtYWxmb3Jt
ZWRUYWJsZVBhcmVudCk7CiB9CiAKLWlubGluZSBIVE1MU3RhY2tFbGVtKiBIVE1MUGFyc2VyOjpw
b3BPbmVCbG9ja0NvbW1vbigpCitpbmxpbmUgSFRNTFN0YWNrRWxlbSogTGVnYWN5SFRNTFRyZWVD
b25zdHJ1Y3Rvcjo6cG9wT25lQmxvY2tDb21tb24oKQogewogICAgIEhUTUxTdGFja0VsZW0qIGVs
ZW0gPSBtX2Jsb2NrU3RhY2s7CiAKQEAgLTE0OTgsNyArMTQ5OCw3IEBAIGlubGluZSBIVE1MU3Rh
Y2tFbGVtKiBIVE1MUGFyc2VyOjpwb3BPbmVCbG9ja0NvbW1vbigpCiAgICAgcmV0dXJuIGVsZW07
CiB9CiAKLXZvaWQgSFRNTFBhcnNlcjo6cG9wT25lQmxvY2soKQordm9pZCBMZWdhY3lIVE1MVHJl
ZUNvbnN0cnVjdG9yOjpwb3BPbmVCbG9jaygpCiB7CiAgICAgLy8gU3RvcmUgdGhlIGN1cnJlbnQg
bm9kZSBiZWZvcmUgcG9wT25lQmxvY2tDb21tb24gb3ZlcndyaXRlcyBpdC4KICAgICBOb2RlKiBs
YXN0Q3VycmVudCA9IG1fY3VycmVudDsKQEAgLTE1MTAsNyArMTUxMCw3IEBAIHZvaWQgSFRNTFBh
cnNlcjo6cG9wT25lQmxvY2soKQogICAgICAgICBsYXN0Q3VycmVudC0+ZGVyZWYoKTsKIH0KIAot
dm9pZCBIVE1MUGFyc2VyOjptb3ZlT25lQmxvY2tUb1N0YWNrKEhUTUxTdGFja0VsZW0qJiBoZWFk
KQordm9pZCBMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjptb3ZlT25lQmxvY2tUb1N0YWNrKEhU
TUxTdGFja0VsZW0qJiBoZWFkKQogewogICAgIC8vIFdlJ2xsIGJlIHVzaW5nIHRoZSBzdGFjayBl
bGVtZW50IHdlJ3JlIHBvcHBpbmcsIGJ1dCBmb3IgdGhlIGN1cnJlbnQgbm9kZS4KICAgICAvLyBT
ZWUgdGhlIHR3byBjYWxsZXJzIGZvciBkZXRhaWxzLgpAQCAtMTUzMiw3ICsxNTMyLDcgQEAgdm9p
ZCBIVE1MUGFyc2VyOjptb3ZlT25lQmxvY2tUb1N0YWNrKEhUTUxTdGFja0VsZW0qJiBoZWFkKQog
ICAgIGhlYWQgPSBlbGVtOwogfQogCi12b2lkIEhUTUxQYXJzZXI6OmNoZWNrSWZIYXNQRWxlbWVu
dEluU2NvcGUoKQordm9pZCBMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpjaGVja0lmSGFzUEVs
ZW1lbnRJblNjb3BlKCkKIHsKICAgICBtX2hhc1BFbGVtZW50SW5TY29wZSA9IE5vdEluU2NvcGU7
CiAgICAgSFRNTFN0YWNrRWxlbSogZWxlbSA9IG1fYmxvY2tTdGFjazsKQEAgLTE1NDcsMTMgKzE1
NDcsMTMgQEAgdm9pZCBIVE1MUGFyc2VyOjpjaGVja0lmSGFzUEVsZW1lbnRJblNjb3BlKCkKICAg
ICB9CiB9CiAKLXZvaWQgSFRNTFBhcnNlcjo6cG9wSW5saW5lQmxvY2tzKCkKK3ZvaWQgTGVnYWN5
SFRNTFRyZWVDb25zdHJ1Y3Rvcjo6cG9wSW5saW5lQmxvY2tzKCkKIHsKICAgICB3aGlsZSAobV9i
bG9ja1N0YWNrICYmIGlzSW5saW5lKG1fY3VycmVudCkpCiAgICAgICAgIHBvcE9uZUJsb2NrKCk7
CiB9CiAKLXZvaWQgSFRNTFBhcnNlcjo6ZnJlZUJsb2NrKCkKK3ZvaWQgTGVnYWN5SFRNTFRyZWVD
b25zdHJ1Y3Rvcjo6ZnJlZUJsb2NrKCkKIHsKICAgICB3aGlsZSAobV9ibG9ja1N0YWNrKQogICAg
ICAgICBwb3BPbmVCbG9jaygpOwpAQCAtMTU2MSw3ICsxNTYxLDcgQEAgdm9pZCBIVE1MUGFyc2Vy
OjpmcmVlQmxvY2soKQogICAgIEFTU0VSVCghbV90cmVlRGVwdGgpOwogfQogCi12b2lkIEhUTUxQ
YXJzZXI6OmNyZWF0ZUhlYWQoKQordm9pZCBMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpjcmVh
dGVIZWFkKCkKIHsKICAgICBpZiAobV9oZWFkKQogICAgICAgICByZXR1cm47CkBAIC0xNTg5LDcg
KzE1ODksNyBAQCB2b2lkIEhUTUxQYXJzZXI6OmNyZWF0ZUhlYWQoKQogICAgIH0KIH0KIAotUGFz
c1JlZlB0cjxOb2RlPiBIVE1MUGFyc2VyOjpoYW5kbGVJc2luZGV4KFRva2VuKiB0KQorUGFzc1Jl
ZlB0cjxOb2RlPiBMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yOjpoYW5kbGVJc2luZGV4KFRva2Vu
KiB0KQogewogICAgIFJlZlB0cjxOb2RlPiBuID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShtX2Rv
Y3VtZW50KTsKIApAQCAtMTYxNCw3ICsxNjE0LDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBIVE1MUGFy
c2VyOjpoYW5kbGVJc2luZGV4KFRva2VuKiB0KQogICAgIHJldHVybiBuLnJlbGVhc2UoKTsKIH0K
IAotdm9pZCBIVE1MUGFyc2VyOjpzdGFydEJvZHkoKQordm9pZCBMZWdhY3lIVE1MVHJlZUNvbnN0
cnVjdG9yOjpzdGFydEJvZHkoKQogewogICAgIGlmIChtX2luQm9keSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTYyNyw3ICsxNjI3LDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpzdGFydEJvZHkoKQogICAg
IH0KIH0KIAotdm9pZCBIVE1MUGFyc2VyOjpmaW5pc2hlZCgpCit2b2lkIExlZ2FjeUhUTUxUcmVl
Q29uc3RydWN0b3I6OmZpbmlzaGVkKCkKIHsKICAgICAvLyBJbiB0aGUgY2FzZSBvZiBhIGNvbXBs
ZXRlbHkgZW1wdHkgZG9jdW1lbnQsIGhlcmUncyB0aGUgcGxhY2UgdG8gY3JlYXRlIHRoZSBIVE1M
IGVsZW1lbnQuCiAgICAgaWYgKG1fY3VycmVudCAmJiBtX2N1cnJlbnQtPmlzRG9jdW1lbnROb2Rl
KCkgJiYgIW1fZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpKQpAQCAtMTYzNywxOCArMTYzNywx
OCBAQCB2b2lkIEhUTUxQYXJzZXI6OmZpbmlzaGVkKCkKICAgICBmcmVlQmxvY2soKTsKICAgICBz
ZXRDdXJyZW50KDApOwogCi0gICAgLy8gV2FybmluZywgdGhpcyBtYXkgZGVsZXRlIHRoZSB0b2tl
bml6ZXIgYW5kIHBhcnNlciwgc28gZG9uJ3QgdHJ5IHRvIGRvIGFueXRoaW5nIGVsc2UgYWZ0ZXIg
dGhpcy4KKyAgICAvLyBXYXJuaW5nLCB0aGlzIG1heSBkZWxldGUgdGhlIHBhcnNlciwgc28gZG9u
J3QgdHJ5IHRvIGRvIGFueXRoaW5nIGVsc2UgYWZ0ZXIgdGhpcy4KICAgICBpZiAoIW1faXNQYXJz
aW5nRnJhZ21lbnQpCiAgICAgICAgIG1fZG9jdW1lbnQtPmZpbmlzaGVkUGFyc2luZygpOwogfQog
Ci12b2lkIEhUTUxQYXJzZXI6OnJlcG9ydEVycm9yVG9Db25zb2xlKEhUTUxQYXJzZXJFcnJvckNv
ZGUgZXJyb3JDb2RlLCBjb25zdCBBdG9taWNTdHJpbmcqIHRhZ05hbWUxLCBjb25zdCBBdG9taWNT
dHJpbmcqIHRhZ05hbWUyLCBib29sIGNsb3NlVGFncykKK3ZvaWQgTGVnYWN5SFRNTFRyZWVDb25z
dHJ1Y3Rvcjo6cmVwb3J0RXJyb3JUb0NvbnNvbGUoSFRNTFBhcnNlckVycm9yQ29kZSBlcnJvckNv
ZGUsIGNvbnN0IEF0b21pY1N0cmluZyogdGFnTmFtZTEsIGNvbnN0IEF0b21pY1N0cmluZyogdGFn
TmFtZTIsIGJvb2wgY2xvc2VUYWdzKQogeyAgICAKICAgICBGcmFtZSogZnJhbWUgPSBtX2RvY3Vt
ZW50LT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBIVE1MRG9jdW1lbnRQYXJzZXIqIGh0bWxUb2tlbml6ZXIgPSBzdGF0aWNfY2FzdDxIVE1MRG9j
dW1lbnRQYXJzZXIqPihtX2RvY3VtZW50LT50b2tlbml6ZXIoKSk7CisgICAgSFRNTERvY3VtZW50
UGFyc2VyKiBodG1sVG9rZW5pemVyID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50UGFyc2VyKj4o
bV9kb2N1bWVudC0+cGFyc2VyKCkpOwogICAgIGludCBsaW5lTnVtYmVyID0gaHRtbFRva2VuaXpl
ci0+bGluZU51bWJlcigpICsgMTsKIAogICAgIEF0b21pY1N0cmluZyB0YWcxOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuaCBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MVHJl
ZUNvbnN0cnVjdG9yLmgKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gV2ViQ29yZS9o
dG1sL0hUTUxQYXJzZXIuaApyZW5hbWUgdG8gV2ViQ29yZS9odG1sL0xlZ2FjeUhUTUxUcmVlQ29u
c3RydWN0b3IuaAppbmRleCAwY2E1ZjhhNWI4YzA2NDg3NDI1NjdhNDgyN2M5NjEyOWJkNGM0MTQx
Li5hYjFmNWFhZmRkZjA0ZjlhMzIwNjI3Y2JmM2VjY2UzNGUxMmU2MTVmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5oCisrKyBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MVHJl
ZUNvbnN0cnVjdG9yLmgKQEAgLTUwLDExICs1MCwxMSBAQCBzdHJ1Y3QgVG9rZW47CiAgKiBUaGUg
cGFyc2VyIGZvciBIVE1MLiBJdCByZWNlaXZlcyBhIHN0cmVhbSBvZiB0b2tlbnMgZnJvbSB0aGUg
SFRNTERvY3VtZW50UGFyc2VyLCBhbmQKICAqIGJ1aWxkcyB1cCB0aGUgRG9jdW1lbnQgc3RydWN0
dXJlIGZyb20gaXQuCiAgKi8KLWNsYXNzIEhUTUxQYXJzZXIgOiBwdWJsaWMgTm9uY29weWFibGUg
eworY2xhc3MgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3RvciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
CiBwdWJsaWM6Ci0gICAgSFRNTFBhcnNlcihIVE1MRG9jdW1lbnQqLCBib29sIHJlcG9ydEVycm9y
cyk7Ci0gICAgSFRNTFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiwgRnJhZ21lbnRTY3JpcHRpbmdQ
ZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKLSAgICB2aXJ0dWFsIH5IVE1M
UGFyc2VyKCk7CisgICAgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3RvcihIVE1MRG9jdW1lbnQqLCBi
b29sIHJlcG9ydEVycm9ycyk7CisgICAgTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3RvcihEb2N1bWVu
dEZyYWdtZW50KiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRp
bmdBbGxvd2VkKTsKKyAgICB2aXJ0dWFsIH5MZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9yKCk7CiAK
ICAgICAvKioKICAgICAgKiBwYXJzZXMgb25lIHRva2VuIGRlbGl2ZXJlZCBieSB0aGUgdG9rZW5p
emVyCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBiL1dlYkNvcmUvaHRt
bC9TdGVwUmFuZ2UuY3BwCmluZGV4IDA0ZjRlZDNiYjExMmVjM2VjNmFlMmQzY2ZiOThlNmMxYzAw
YjlkOGQuLjM5MjNhYmUyZWQxODFkY2Y0MzkzNmUxZTgyZTVkNzViMjdhYmU4NmQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9TdGVwUmFu
Z2UuY3BwCkBAIC0yMyw3ICsyMyw3IEBACiAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTFBhcnNlci5oIgorI2luY2x1
ZGUgIkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcApp
bmRleCBmYzYwYTIyZDY1ODM2MmExNmZmODRjNjMzMzliZDg2YjRhMWU4ODMxLi43ZjZiOGJlNzEx
NjQ3N2UyNGJiOTlhZjNmYTY3OGE4MDE2MzA5NzI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
VmFsaWRpdHlTdGF0ZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCkBA
IC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTFBhcnNlci5oIgorI2luY2x1ZGUgIkxlZ2Fj
eUhUTUxUcmVlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTG9j
YWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKaW5kZXggYTFiMWNkMDZkMzU3NTI4MTYyYjdmYmY2MGJmMTkwN2Q4
MDlmYWJiMS4uYTYyODUwY2FjZDFkOGNjZTVkZjBmOWRlYzBjYTQzYmI1ZDQ3NDg1ZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMzkzLDggKzM5Myw4IEBAIGJvb2wgRG9jdW1lbnRM
b2FkZXI6OmlzTG9hZGluZ0luQVBJU2Vuc2UoKSBjb25zdAogICAgICAgICBEb2N1bWVudCogZG9j
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKGRvYy0+ZG9jTG9hZGVyKCktPnJl
cXVlc3RDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChEb2N1
bWVudFBhcnNlciogdG9rID0gZG9jLT50b2tlbml6ZXIoKSkKLSAgICAgICAgICAgIGlmICh0b2st
PnByb2Nlc3NpbmdEYXRhKCkpCisgICAgICAgIGlmIChEb2N1bWVudFBhcnNlciogcGFyc2VyID0g
ZG9jLT5wYXJzZXIoKSkKKyAgICAgICAgICAgIGlmIChwYXJzZXItPnByb2Nlc3NpbmdEYXRhKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmcmFtZUxv
YWRlcigpLT5zdWJmcmFtZUlzTG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRXcml0ZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmlu
ZGV4IDQ5ZjU3MjEzYzY4NWY1M2ZjZTRiNGI3YzAxMDY1NDAwODQ3NmQzYWQuLmNjMjYzMmIzYTRi
YTA4OGMyNDNmY2RlNTQ2NmEyZThkZTgwMDE0MTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5j
cHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oY29uc3QgS1VS
TCYgdXJsLCBib29sIGRpc3BhdGNoLCBTZWN1cml0eU9yaWdpbiogb3JpZ2kKICAgICBSZWZQdHI8
RG9jdW1lbnQ+IGRvY3VtZW50ID0gY3JlYXRlRG9jdW1lbnQoKTsKICAgICAKICAgICAvLyBJZiB0
aGUgbmV3IGRvY3VtZW50IGlzIGZvciBhIFBsdWdpbiBidXQgd2UncmUgc3VwcG9zZWQgdG8gYmUg
c2FuZGJveGVkIGZyb20gUGx1Z2lucywKLSAgICAvLyB0aGVuIHJlcGxhY2UgdGhlIGRvY3VtZW50
IHdpdGggb25lIHdob3NlIHRva2VuaXplciB3aWxsIGlnbm9yZSB0aGUgaW5jb21pbmcgZGF0YSAo
YnVnIDM5MzIzKQorICAgIC8vIHRoZW4gcmVwbGFjZSB0aGUgZG9jdW1lbnQgd2l0aCBvbmUgd2hv
c2UgcGFyc2VyIHdpbGwgaWdub3JlIHRoZSBpbmNvbWluZyBkYXRhIChidWcgMzkzMjMpCiAgICAg
aWYgKGRvY3VtZW50LT5pc1BsdWdpbkRvY3VtZW50KCkgJiYgbV9mcmFtZS0+bG9hZGVyKCktPmlz
U2FuZGJveGVkKFNhbmRib3hQbHVnaW5zKSkKICAgICAgICAgZG9jdW1lbnQgPSBTaW5rRG9jdW1l
bnQ6OmNyZWF0ZShtX2ZyYW1lKTsKIApAQCAtMTM2LDEwICsxMzYsMTAgQEAgdm9pZCBEb2N1bWVu
dFdyaXRlcjo6YWRkRGF0YShjb25zdCBjaGFyKiBzdHIsIGludCBsZW4sIGJvb2wgZmx1c2gpCiAg
ICAgaWYgKGxlbiA9PSAtMSkKICAgICAgICAgbGVuID0gc3RybGVuKHN0cik7CiAKLSAgICBEb2N1
bWVudFBhcnNlciogdG9rZW5pemVyID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dG9rZW5pemVyKCk7
Ci0gICAgaWYgKHRva2VuaXplciAmJiB0b2tlbml6ZXItPndhbnRzUmF3RGF0YSgpKSB7CisgICAg
RG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnBhcnNlcigpOwor
ICAgIGlmIChwYXJzZXIgJiYgcGFyc2VyLT53YW50c1Jhd0RhdGEoKSkgewogICAgICAgICBpZiAo
bGVuID4gMCkKLSAgICAgICAgICAgIHRva2VuaXplci0+d3JpdGVSYXdEYXRhKHN0ciwgbGVuKTsK
KyAgICAgICAgICAgIHBhcnNlci0+d3JpdGVSYXdEYXRhKHN0ciwgbGVuKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKQEAgLTE4Niw5ICsxODYsOSBAQCB2b2lkIERvY3VtZW50V3JpdGVy
OjphZGREYXRhKGNvbnN0IGNoYXIqIHN0ciwgaW50IGxlbiwgYm9vbCBmbHVzaCkKICAgICAgICAg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVjYWxjU3R5bGUoTm9kZTo6Rm9yY2UpOwogICAgIH0KIAot
ICAgIGlmICh0b2tlbml6ZXIpIHsKLSAgICAgICAgQVNTRVJUKCF0b2tlbml6ZXItPndhbnRzUmF3
RGF0YSgpKTsKLSAgICAgICAgdG9rZW5pemVyLT53cml0ZShkZWNvZGVkLCB0cnVlKTsKKyAgICBp
ZiAocGFyc2VyKSB7CisgICAgICAgIEFTU0VSVCghcGFyc2VyLT53YW50c1Jhd0RhdGEoKSk7Cisg
ICAgICAgIHBhcnNlci0+d3JpdGUoZGVjb2RlZCwgdHJ1ZSk7CiAgICAgfQogfQogCkBAIC0yMDIs
OCArMjAyLDggQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBTdHJpbmcmIHN0
cikKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0UGFyc2VNb2RlKERvY3VtZW50OjpT
dHJpY3QpOwogICAgIH0KIAotICAgIGlmIChEb2N1bWVudFBhcnNlciogdG9rZW5pemVyID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dG9rZW5pemVyKCkpCi0gICAgICAgIHRva2VuaXplci0+d3JpdGUo
c3RyLCB0cnVlKTsKKyAgICBpZiAoRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUtPmRv
Y3VtZW50KCktPnBhcnNlcigpKQorICAgICAgICBwYXJzZXItPndyaXRlKHN0ciwgdHJ1ZSk7CiB9
CiAKIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmVuZCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRl
ci9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHAKaW5kZXggNzlhZDgzZjM2ZGU5NGQxZTJmNjUwMGFhODkyOTVmZDllZmY2MWIx
Yi4uNWQxYjJiZjk5OTA4MTdlNmJhOTkyNzVjNGM5YjRjY2UxZGVmNjJlYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvbG9h
ZGVyL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAg
ICAgfQogICAgICAgICAKIHByaXZhdGU6Ci0gICAgLy8gVGhlIHRva2VuaXplciB3aWxsIGF0dGVt
cHQgdG8gbG9hZCB0aGUgZG9jdW1lbnQgdGVtcGxhdGUgc3BlY2lmaWVkIHZpYSB0aGUgcHJlZmVy
ZW5jZQorICAgIC8vIFRoZSBwYXJzZXIgd2lsbCBhdHRlbXB0IHRvIGxvYWQgdGhlIGRvY3VtZW50
IHRlbXBsYXRlIHNwZWNpZmllZCB2aWEgdGhlIHByZWZlcmVuY2UKICAgICAvLyBGYWlsaW5nIHRo
YXQsIGl0IHdpbGwgZmFsbCBiYWNrIGFuZCBjcmVhdGUgdGhlIGJhc2ljIGRvY3VtZW50IHdoaWNo
IHdpbGwgaGF2ZSBhIG1pbmltYWwKICAgICAvLyB0YWJsZSBmb3IgcHJlc2VudGluZyB0aGUgRlRQ
IGRpcmVjdG9yeSBpbiBhIHVzZWZ1bCBtYW5uZXIKICAgICBib29sIGxvYWREb2N1bWVudFRlbXBs
YXRlKCk7CkBAIC00NDIsNyArNDQyLDcgQEAgRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OkZUUERpcmVj
dG9yeURvY3VtZW50KEZyYW1lKiBmcmFtZSkKICNlbmRpZgogfQogCi1Eb2N1bWVudFBhcnNlciog
RlRQRGlyZWN0b3J5RG9jdW1lbnQ6OmNyZWF0ZVRva2VuaXplcigpCitEb2N1bWVudFBhcnNlciog
RlRQRGlyZWN0b3J5RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiB7CiAgICAgcmV0dXJuIG5ldyBG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcih0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
bG9hZGVyL0ZUUERpcmVjdG9yeURvY3VtZW50LmggYi9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5oCmluZGV4IDk2NDM1NmVlNDc5OGQxMGY3ODBhZmQxZTBiYTBiMWY2MWUxOGJh
MGEuLmY3NDUwOGM1ZGY0OTNjYzI3MGE2NDM0ZWVjZDZlYzQwMjQ0NzBkNWQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeURvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9sb2Fk
ZXIvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgRlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqKTsKLSAgICB2aXJ0dWFsIERv
Y3VtZW50UGFyc2VyKiBjcmVhdGVUb2tlbml6ZXIoKTsKKyAgICB2aXJ0dWFsIERvY3VtZW50UGFy
c2VyKiBjcmVhdGVQYXJzZXIoKTsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYTViOGZmYjA0MzhiMjBjYjhhNGY3OWVkYWU1NzgwZWYx
NjJhZDY3NC4uOTc0NThmYTBhOGU1YzQ0YzgzNGMyOTgxMDA5N2E2OTM5ODg0YWQxMCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcApAQCAtNTQ4LDggKzU0OCw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN1
Ym1pdEZvcm0oY29uc3QgY2hhciogYWN0aW9uLCBjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0
cjxGCiAKIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5IHVu
bG9hZEV2ZW50UG9saWN5LCBEYXRhYmFzZVBvbGljeSBkYXRhYmFzZVBvbGljeSkKIHsKLSAgICBp
ZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpLT50b2tlbml6ZXIo
KSkKLSAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dG9rZW5pemVyKCktPnN0b3BQYXJzaW5n
KCk7CisgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
cGFyc2VyKCkpCisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnBhcnNlcigpLT5zdG9wUGFy
c2luZygpOwogCiAgICAgaWYgKHVubG9hZEV2ZW50UG9saWN5ICE9IFVubG9hZEV2ZW50UG9saWN5
Tm9uZSkgewogICAgICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSkgewpAQCAtNjE4LDggKzYx
OCw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3AoKQogICAgIC8vIFRoZSBmcmFtZSdzIGxhc3Qg
cmVmIG1heSBiZSByZW1vdmVkIGFuZCBpdCB3aWxsIGJlIGRlbGV0ZWQgYnkgY2hlY2tDb21wbGV0
ZWQoKS4KICAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKICAgICAKLSAgICBp
ZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dG9rZW5pemVyKCkpCi0gICAgICAgIG1fZnJhbWUtPmRv
Y3VtZW50KCktPnRva2VuaXplcigpLT5zdG9wUGFyc2luZygpOworICAgIGlmIChtX2ZyYW1lLT5k
b2N1bWVudCgpLT5wYXJzZXIoKSkKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2Vy
KCktPnN0b3BQYXJzaW5nKCk7CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZmluaXNoUGFyc2lu
ZygpOwogCiAgICAgaWYgKG1faWNvbkxvYWRlcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L0ltYWdlRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAKaW5k
ZXggNDc4NWYwNGFiYTNlODVjODhmY2M4MmNhMDc2NWI0ZjFjNWJmNTE4MS4uOGFiNDEyZmNlNDdk
ODk0M2RhNmNjYThjZTBjN2U4MGQzYTg0NTNmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
SW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAK
QEAgLTE5Miw3ICsxOTIsNyBAQCBJbWFnZURvY3VtZW50OjpJbWFnZURvY3VtZW50KEZyYW1lKiBm
cmFtZSkKICAgICBzZXRQYXJzZU1vZGUoQ29tcGF0KTsKIH0KICAgICAKLURvY3VtZW50UGFyc2Vy
KiBJbWFnZURvY3VtZW50OjpjcmVhdGVUb2tlbml6ZXIoKQorRG9jdW1lbnRQYXJzZXIqIEltYWdl
RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiB7CiAgICAgcmV0dXJuIG5ldyBJbWFnZVRva2VuaXpl
cih0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuaCBi
L1dlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuaAppbmRleCBjYzY1YWJmMjM2MDVhMDRhNDg3
MTdkZTRjMTAzNWY3ZmU2ZTk1MWRhLi5iZDYyN2I0MjU1ODAxZTY1MjFjZmM4NWQ5NTgzMjBmYmJj
ZGZkY2RjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9JbWFnZURvY3VtZW50LmgKKysrIGIv
V2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgSW1hZ2VEb2N1bWVudChGcmFtZSopOwogCi0gICAgdmlydHVhbCBEb2N1
bWVudFBhcnNlciogY3JlYXRlVG9rZW5pemVyKCk7CisgICAgdmlydHVhbCBEb2N1bWVudFBhcnNl
ciogY3JlYXRlUGFyc2VyKCk7CiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2VEb2N1bWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICB2b2lkIGNyZWF0ZURvY3VtZW50U3RydWN0
dXJlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50LmNwcCBiL1dl
YkNvcmUvbG9hZGVyL01lZGlhRG9jdW1lbnQuY3BwCmluZGV4IGRiMDBlMDhiMDk5ZGJhZDhhMmVj
YTA3ZjUxOGM5ZTBjYTEzYjBkM2EuLmU1MDVjMmY1ZTkzNzc3ZDFlNjk5Zjc4NTk4YWY0YzU0MmY0
YjRhMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL01lZGlhRG9jdW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvbG9hZGVyL01lZGlhRG9jdW1lbnQuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgTWVk
aWFEb2N1bWVudDo6fk1lZGlhRG9jdW1lbnQoKQogICAgIEFTU0VSVCghbV9yZXBsYWNlTWVkaWFF
bGVtZW50VGltZXIuaXNBY3RpdmUoKSk7CiB9CiAKLURvY3VtZW50UGFyc2VyKiBNZWRpYURvY3Vt
ZW50OjpjcmVhdGVUb2tlbml6ZXIoKQorRG9jdW1lbnRQYXJzZXIqIE1lZGlhRG9jdW1lbnQ6OmNy
ZWF0ZVBhcnNlcigpCiB7CiAgICAgcmV0dXJuIG5ldyBNZWRpYURvY3VtZW50UGFyc2VyKHRoaXMp
OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvTWVkaWFEb2N1bWVudC5oIGIvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFEb2N1bWVudC5oCmluZGV4IDM0MTQ5ZTVmOWVmZGYyM2JiZDk1MDA4OGVh
NzE4YWUwZWY2ODc3M2EuLjk4ZWIwMmZjN2JkNTNkMWJlNTg1ZWY1YjZhNWQyYjU4NmFiZWRhM2Yg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL01lZGlhRG9jdW1lbnQuaAorKysgYi9XZWJDb3Jl
L2xvYWRlci9NZWRpYURvY3VtZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICBN
ZWRpYURvY3VtZW50KEZyYW1lKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYURvY3VtZW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfSAgICAgICAgCi0gICAgdmlydHVhbCBEb2N1bWVudFBh
cnNlciogY3JlYXRlVG9rZW5pemVyKCk7CisgICAgdmlydHVhbCBEb2N1bWVudFBhcnNlciogY3Jl
YXRlUGFyc2VyKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCopOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHAgYi9X
ZWJDb3JlL2xvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHAKaW5kZXggOGRiMDk5YWIxZTExMWQwZGY1
MDdjYTRiYzNlZTAyMzIyZGQ2NjAwYy4uNzgzM2Q0MTIyZTYxZDI2YjFhMzY0MDJkYWIyMjljM2M2
NDA2MzBmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUGx1Z2luRG9jdW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBA
IFBsdWdpbkRvY3VtZW50OjpQbHVnaW5Eb2N1bWVudChGcmFtZSogZnJhbWUpCiAgICAgc2V0UGFy
c2VNb2RlKENvbXBhdCk7CiB9CiAgICAgCi1Eb2N1bWVudFBhcnNlciogUGx1Z2luRG9jdW1lbnQ6
OmNyZWF0ZVRva2VuaXplcigpCitEb2N1bWVudFBhcnNlciogUGx1Z2luRG9jdW1lbnQ6OmNyZWF0
ZVBhcnNlcigpCiB7CiAgICAgcmV0dXJuIG5ldyBQbHVnaW5Eb2N1bWVudFBhcnNlcih0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50LmggYi9XZWJDb3Jl
L2xvYWRlci9QbHVnaW5Eb2N1bWVudC5oCmluZGV4IDlmZmRiODhmYjM5M2RmZjM2OTQ1OWRiMTEx
NGRjZWE5MzZiZDhlN2EuLmUzZjk4YTdkOTkwNDNiOWQ2YTQ0OGY0ZTgwNGNmZTIwYTlmNGZiYTAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50LmgKKysrIGIvV2ViQ29y
ZS9sb2FkZXIvUGx1Z2luRG9jdW1lbnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFBsdWdpbkRvY3VtZW50KEZyYW1lKik7CiAKLSAgICB2aXJ0dWFsIERvY3VtZW50
UGFyc2VyKiBjcmVhdGVUb2tlbml6ZXIoKTsKKyAgICB2aXJ0dWFsIERvY3VtZW50UGFyc2VyKiBj
cmVhdGVQYXJzZXIoKTsKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9T
aW5rRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcAppbmRleCA5
ZTNjNjcwNGI0ZWFiMjIyMmRhNGE1MDkzOWM3YzMxYmY4NjE0NGU0Li5kNDBlNTY3MjMwNjkxZDZi
MjFmOTNhYmVjNTM5NzEyNTY1NWZhZTk3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9TaW5r
RG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgU2lua0RvY3VtZW50OjpTaW5rRG9jdW1lbnQoRnJhbWUqIGZyYW1lKQogICAg
IHNldFBhcnNlTW9kZShDb21wYXQpOwogfQogICAgIAotRG9jdW1lbnRQYXJzZXIqIFNpbmtEb2N1
bWVudDo6Y3JlYXRlVG9rZW5pemVyKCkKK0RvY3VtZW50UGFyc2VyKiBTaW5rRG9jdW1lbnQ6OmNy
ZWF0ZVBhcnNlcigpCiB7CiAgICAgcmV0dXJuIG5ldyBTaW5rRG9jdW1lbnRQYXJzZXIodGhpcyk7
CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaCBiL1dlYkNvcmUv
bG9hZGVyL1NpbmtEb2N1bWVudC5oCmluZGV4IGQyMjNjOTVjMzA1OGVhY2VlMzg5MjhlMGE2ZTY2
YzA1OTFkYzYyM2IuLjM4NjY2MGM1ZjQyNzdiY2Q5YTk5M2ZmOTRkMjk1YjRiODdlNWMyNDMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5oCisrKyBiL1dlYkNvcmUvbG9h
ZGVyL1NpbmtEb2N1bWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgU2lua0RvY3VtZW50KEZyYW1lKik7CiAgICAgCi0gICAgdmlydHVhbCBEb2N1bWVudFBhcnNl
ciogY3JlYXRlVG9rZW5pemVyKCk7CisgICAgdmlydHVhbCBEb2N1bWVudFBhcnNlciogY3JlYXRl
UGFyc2VyKCk7CiB9OwogCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1RleHREb2N1bWVu
dC5jcHAgYi9XZWJDb3JlL2xvYWRlci9UZXh0RG9jdW1lbnQuY3BwCmluZGV4IDVmYzUzMjkxZmRi
Mzk3NmNkMGZmYWFlZDJlZWExMzE1NTlmNTQ4YTEuLjY4MzM1YTc4YjRjNDVhY2I0NDEzNmU3NGI0
YTA1OTcwMDZjMTE3MDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1RleHREb2N1bWVudC5j
cHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGV4dERvY3VtZW50LmNwcApAQCAtMTgzLDEyICsxODMs
MTIgQEAgVGV4dERvY3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZyYW1lKQogewogfQogCi1E
b2N1bWVudFBhcnNlciogVGV4dERvY3VtZW50OjpjcmVhdGVUb2tlbml6ZXIoKQorRG9jdW1lbnRQ
YXJzZXIqIFRleHREb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKIHsKICAgICByZXR1cm4gbmV3IFRl
eHREb2N1bWVudFBhcnNlcih0aGlzKTsKIH0KIAotRG9jdW1lbnRQYXJzZXIqIGNyZWF0ZVRleHRU
b2tlbml6ZXIoSFRNTFZpZXdTb3VyY2VEb2N1bWVudCogZG9jdW1lbnQpCitEb2N1bWVudFBhcnNl
ciogY3JlYXRlVGV4dERvY3VtZW50UGFyc2VyKEhUTUxWaWV3U291cmNlRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewogICAgIHJldHVybiBuZXcgVGV4dERvY3VtZW50UGFyc2VyKGRvY3VtZW50KTsKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1RleHREb2N1bWVudC5oIGIvV2ViQ29yZS9sb2Fk
ZXIvVGV4dERvY3VtZW50LmgKaW5kZXggZDgzZWQ5NDExMzE3YTFjYzBmMzQ2YmM1YWNjZjNmYjE3
ZWMwMzgxYS4uMDJjN2FmNTZjNWI0ZGZlZTdhNWVkZDZhMDAyZjJjNzEyODFiMDFhMCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9sb2FkZXIvVGV4dERvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9sb2FkZXIv
VGV4dERvY3VtZW50LmgKQEAgLTQxLDEwICs0MSwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFRleHREb2N1bWVudChGcmFtZSopOwogICAgIAotICAgIHZpcnR1YWwgRG9jdW1lbnRQYXJzZXIq
IGNyZWF0ZVRva2VuaXplcigpOworICAgIHZpcnR1YWwgRG9jdW1lbnRQYXJzZXIqIGNyZWF0ZVBh
cnNlcigpOwogfTsKIAotRG9jdW1lbnRQYXJzZXIqIGNyZWF0ZVRleHRUb2tlbml6ZXIoSFRNTFZp
ZXdTb3VyY2VEb2N1bWVudCopOworRG9jdW1lbnRQYXJzZXIqIGNyZWF0ZVRleHREb2N1bWVudFBh
cnNlcihIVE1MVmlld1NvdXJjZURvY3VtZW50Kik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNs
aWRlci5jcHAKaW5kZXggNzg5NjRhNjkwNzg0OTk1OGFkMTUwZWVmMzk1ZGZiZDIwODkwNDZmMS4u
YWM3M2ZiMWU3MjU1YTJjYmViNTJiYTgyYzE2YTI2MjIyOTQxMmE1NiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTbGlkZXIuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5j
bHVkZSAiSFRNTFBhcnNlci5oIgorI2luY2x1ZGUgIkxlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogI2luY2x1ZGUgIk1vdXNlRXZl
bnQuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHAKaW5kZXggMjQ3M2U3ZWIyMTYzN2Q1MTJlYWE5YWUyM2ZlNTJhNmU3NmJiMzRlZC4u
N2IyODVlYjg2MWY3YTUxNzg4MGJkODkzZjk1ZDQwYTFhZjI4ODQ2MCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdE
b2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC0xMjgsMTMgKzEyOCwxMyBAQCBib29sIFNWR0RvY3Vt
ZW50RXh0ZW5zaW9uczo6c2FtcGxlQW5pbWF0aW9uQXRUaW1lKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElkLCBTVkdTTQogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlcG9ydFdhcm5pbmcoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RvYy0+ZnJh
bWUoKSkKLSAgICAgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uo
SlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJXYXJu
aW5nOiAiICsgbWVzc2FnZSwgbV9kb2MtPnRva2VuaXplcigpID8gbV9kb2MtPnRva2VuaXplcigp
LT5saW5lTnVtYmVyKCkgOiAxLCBTdHJpbmcoKSk7CisgICAgICAgIGZyYW1lLT5kb21XaW5kb3co
KS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IEVycm9yTWVzc2FnZUxldmVsLCAiV2FybmluZzogIiArIG1lc3NhZ2UsIG1fZG9jLT5wYXJzZXIo
KSA/IG1fZG9jLT5wYXJzZXIoKS0+bGluZU51bWJlcigpIDogMSwgU3RyaW5nKCkpOwogfQogCiB2
b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0RXJyb3IoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewogICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RvYy0+ZnJhbWUoKSkKLSAgICAgICAg
ZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvcjogIiArIG1lc3NhZ2Us
IG1fZG9jLT50b2tlbml6ZXIoKSA/IG1fZG9jLT50b2tlbml6ZXIoKS0+bGluZU51bWJlcigpIDog
MSwgU3RyaW5nKCkpOworICAgICAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRk
TWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgIkVycm9yOiAiICsgbWVzc2FnZSwgbV9kb2MtPnBhcnNlcigpID8gbV9kb2MtPnBhcnNlcigp
LT5saW5lTnVtYmVyKCkgOiAxLCBTdHJpbmcoKSk7CiB9CiAKIHZvaWQgU1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgU1ZHU3R5
bGVkRWxlbWVudCogb2JqKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93bWwvV01MRG9jdW1lbnQuY3Bw
IGIvV2ViQ29yZS93bWwvV01MRG9jdW1lbnQuY3BwCmluZGV4IDRiODljOTlmNWE3NzY5MTZiMGUy
NTY1M2QyY2FkNDZmNTE5MzBkZDMuLmJhNGJiNTcyOWQzZGNkMzUwMGYzYjg3YzIzMTVkMTVkODFl
NGUwNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd21sL1dNTERvY3VtZW50LmNwcAorKysgYi9XZWJD
b3JlL3dtbC9XTUxEb2N1bWVudC5jcHAKQEAgLTQ3LDggKzQ3LDggQEAgV01MRG9jdW1lbnQ6On5X
TUxEb2N1bWVudCgpCiAKIHZvaWQgV01MRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiB7Ci0g
ICAgaWYgKERvY3VtZW50UGFyc2VyKiB0b2tlbml6ZXIgPSB0aGlzLT50b2tlbml6ZXIoKSkgewot
ICAgICAgICBpZiAoIXRva2VuaXplci0+d2VsbEZvcm1lZCgpKSB7CisgICAgaWYgKERvY3VtZW50
UGFyc2VyKiBwYXJzZXIgPSB0aGlzLT5wYXJzZXIoKSkgeworICAgICAgICBpZiAoIXBhcnNlci0+
d2VsbEZvcm1lZCgpKSB7CiAgICAgICAgICAgICBEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd21s
L1dNTEVycm9ySGFuZGxpbmcuY3BwIGIvV2ViQ29yZS93bWwvV01MRXJyb3JIYW5kbGluZy5jcHAK
aW5kZXggYmM4NzQ3ZmI5OTQ0ZWRkNTE3MTAyMDBkODY5MjY3NWQyNzdkN2IwZS4uODUzMjgyMjIz
M2E3ZWFhYTg0ZjgwNGZmZDVjZWMyOGY3NmY5MmZlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93bWwv
V01MRXJyb3JIYW5kbGluZy5jcHAKKysrIGIvV2ViQ29yZS93bWwvV01MRXJyb3JIYW5kbGluZy5j
cHAKQEAgLTM4LDE3ICszOCwxNyBAQCB2b2lkIHJlcG9ydFdNTEVycm9yKERvY3VtZW50KiBkb2Ms
IFdNTEVycm9yQ29kZSBlcnJvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGVycm9y
TWVzc2FnZSA9IGVycm9yTWVzc2FnZUZvckVycm9yQ29kZShlcnJvcik7Ci0gICAgWE1MRG9jdW1l
bnRQYXJzZXIqIHRva2VuaXplciA9IHN0YXRpY19jYXN0PFhNTERvY3VtZW50UGFyc2VyKj4oZG9j
LT50b2tlbml6ZXIoKSk7Ci0gICAgaWYgKHRva2VuaXplciAmJiBlcnJvciAhPSBXTUxFcnJvckRl
Y2tOb3RBY2Nlc3NpYmxlKSB7CisgICAgWE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IHN0YXRp
Y19jYXN0PFhNTERvY3VtZW50UGFyc2VyKj4oZG9jLT5wYXJzZXIoKSk7CisgICAgaWYgKHBhcnNl
ciAmJiBlcnJvciAhPSBXTUxFcnJvckRlY2tOb3RBY2Nlc3NpYmxlKSB7CiAgICAgICAgIC8vIFNv
bWUgZXJyb3JzIGFyZSByZXBvcnRlZCBhcyByZXN1bHQgb2YgYW4gaW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoKSBjYWxsLgogICAgICAgICAvLyBJZiB0aGlzIGhhcHBlbmVkLCBwYXJzaW5nIGhhcyBiZWVu
IHN0b3BwZWQsIGFuZCB0aGUgZG9jdW1lbnQgZnJhZ21lbnQKICAgICAgICAgLy8gaXMgd3JhcHBl
ZCBpbiBhIFhIVE1MIGVycm9yIGRvY3VtZW50LiBUaGF0IG1lYW5zIGluc2VydGVkSW50b0RvY3Vt
ZW50KCkKICAgICAgICAgLy8gd2lsbCBiZSBjYWxsZWQgYWdhaW4gLSBkbyBOT1QgcmVwb3J0IHRo
ZSBlcnJvciB0d2ljZSwgdGhhdCB3b3VsZCByZXN1bHQKICAgICAgICAgLy8gaW4gYW4gaW5maW5p
dGUgZXJyb3IgcmVwb3J0aW5nIGxvb3AuCi0gICAgICAgIGlmICghdG9rZW5pemVyLT53ZWxsRm9y
bWVkKCkpCisgICAgICAgIGlmICghcGFyc2VyLT53ZWxsRm9ybWVkKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgdG9rZW5pemVyLT5oYW5kbGVFcnJvcihYTUxEb2N1bWVudFBhcnNl
cjo6ZmF0YWwsIGVycm9yTWVzc2FnZS5sYXRpbjEoKS5kYXRhKCksIHRva2VuaXplci0+bGluZU51
bWJlcigpLCB0b2tlbml6ZXItPmNvbHVtbk51bWJlcigpKTsKKyAgICAgICAgcGFyc2VyLT5oYW5k
bGVFcnJvcihYTUxEb2N1bWVudFBhcnNlcjo6ZmF0YWwsIGVycm9yTWVzc2FnZS5sYXRpbjEoKS5k
YXRhKCksIHBhcnNlci0+bGluZU51bWJlcigpLCBwYXJzZXItPmNvbHVtbk51bWJlcigpKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBGcmFtZSogZnJhbWUgPSBkb2MtPmZyYW1lKCk7CiAgICAgICAg
IGlmICghZnJhbWUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dtbC9XTUxUZW1wbGF0ZUVsZW1lbnQu
Y3BwIGIvV2ViQ29yZS93bWwvV01MVGVtcGxhdGVFbGVtZW50LmNwcAppbmRleCAyNTM3YzNiMGQ1
YzZjMjg1YzlhNmE4NWRkODU0ZmM4NDE2Y2JhNDVkLi4yN2M4MjhjNzc2MmY2NTEzM2IzMjA3ZGNm
NWRlNzg4YjI0YTIzY2I2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dtbC9XTUxUZW1wbGF0ZUVsZW1l
bnQuY3BwCisrKyBiL1dlYkNvcmUvd21sL1dNTFRlbXBsYXRlRWxlbWVudC5jcHAKQEAgLTk4LDcg
Kzk4LDcgQEAgdm9pZCBXTUxUZW1wbGF0ZUVsZW1lbnQ6OnJlZ2lzdGVyVGVtcGxhdGVzSW5Eb2N1
bWVudChEb2N1bWVudCogZG9jKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBPbmx5IG9uZSB0
ZW1wbGF0ZSBlbGVtZW50IHNob3VsZCBiZSBhbGxvd2VkIGluIGEgZG9jdW1lbnQKLSAgICAvLyBD
YWxsaW5nIHNldFRlbXBsYXRlRWxlbWVudCgpIHR3aWNlIG9uIGEgV01MQ2FyZEVsZW1lbnQsIHdp
bGwgcmVzdWx0IGluIGEgdG9rZW5pemVyIGVycm9yLgorICAgIC8vIENhbGxpbmcgc2V0VGVtcGxh
dGVFbGVtZW50KCkgdHdpY2Ugb24gYSBXTUxDYXJkRWxlbWVudCwgd2lsbCByZXN1bHQgaW4gYSBw
YXJzZXIgZXJyb3IuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CiAgICAgICAgIFdNTFRlbXBsYXRlRWxlbWVudCogdGVtcCA9IHN0YXRpY19jYXN0PFdNTFRlbXBs
YXRlRWxlbWVudCo+KG5vZGVMaXN0LT5pdGVtKGkpKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvZG8td2Vi
Y29yZS1yZW5hbWUKaW5kZXggZTJjZTAxOTA3NGU4NTcyYjY5MWZkYzk4ZGU1MTM3MjAyYjkzNzk4
YS4uZTU0Y2EyYzNkNGJhNDdiODU0ZTU2NGNjNGQ2ZjJiOWJiZmI3ZDg3NyAxMDA3NTUKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCkBAIC05NSw3ICs5NSw3IEBAIHN1YiB3YW50ZWQKIG15
ICRpc0RPTVR5cGVSZW5hbWUgPSAwOwogbXkgJXJlbmFtZXMgPSAoCiAgICAgIyBSZW5hbWVzIGdv
IGhlcmUgaW4gdGhlIGZvcm0gb2Y6Ci0gICAgIyAiVG9rZW5pemVyIiA9PiAiRG9jdW1lbnRQYXJz
ZXIiLAorICAgICJIVE1MUGFyc2VyIiA9PiAiTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3RvciIsCiAp
OwogCiBteSAlcmVuYW1lc0NvbnRlbXBsYXRlZEZvclRoZUZ1dHVyZSA9ICgK
</data>
<flag name="commit-queue"
          id="44997"
          type_id="3"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>