<?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>39941</bug_id>
          
          <creation_ts>2010-05-30 22:16:44 -0700</creation_ts>
          <short_desc>Deploy adoptRef in more places, including all HTML and MathML elements</short_desc>
          <delta_ts>2010-06-16 17:46:48 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>232258</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-30 22:16:44 -0700</bug_when>
    <thetext>Deploy adoptRef in more places, including all HTML and MathML elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232268</commentid>
    <comment_count>1</comment_count>
      <attachid>57436</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-30 23:08:12 -0700</bug_when>
    <thetext>Created attachment 57436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232278</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-31 00:28:21 -0700</bug_when>
    <thetext>Attachment 57436 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2699075</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232475</commentid>
    <comment_count>3</comment_count>
      <attachid>57486</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-31 11:31:02 -0700</bug_when>
    <thetext>Created attachment 57486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232498</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-31 12:43:35 -0700</bug_when>
    <thetext>Attachment 57486 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2763019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232511</commentid>
    <comment_count>5</comment_count>
      <attachid>57486</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-05-31 13:58:15 -0700</bug_when>
    <thetext>Comment on attachment 57486
Patch

This patch has the fix for 39941 and the fix for 39692, which seems like a mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232561</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-31 18:22:03 -0700</bug_when>
    <thetext>Darn, I guess I have much to learn about using webkit-patch. Now for some hand editing :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237594</commentid>
    <comment_count>7</comment_count>
      <attachid>58599</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-13 12:02:46 -0700</bug_when>
    <thetext>Created attachment 58599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237615</commentid>
    <comment_count>8</comment_count>
      <attachid>58599</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-06-13 14:41:04 -0700</bug_when>
    <thetext>Comment on attachment 58599
Patch

WebCore/editing/ModifySelectionListLevel.cpp:218
 +      return command-&gt;m_listElement;
(I know it is the same code as before but) It would be nice to make this &quot;return command-&gt;m_listElement.release();&quot;


WebCore/mathml/MathMLMathElement.cpp:47
 +  RenderObject* MathMLMathElement::createRenderer(RenderArena* arena, RenderStyle* style)
I don&apos;t really understand why this change was done.

Also, I don&apos;t know what this has to do with &quot;Deploy adoptRef in more place&quot;. (I suspect it was just some additional clean up. I suspect that if it is worth doing, then most of the MathML*Element classes should have this done and that could be a change by itself.)

In short, feel free to leave this in the change (but it would be nice to have the &quot;Why?&quot; answered).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238942</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-16 10:26:50 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; WebCore/mathml/MathMLMathElement.cpp:47
&gt;  +  RenderObject* MathMLMathElement::createRenderer(RenderArena* arena, RenderStyle* style)
&gt; I don&apos;t really understand why this change was done.
&gt; 
&gt; Also, I don&apos;t know what this has to do with &quot;Deploy adoptRef in more place&quot;. (I suspect it was just some additional clean up. I suspect that if it is worth doing, then most of the MathML*Element classes should have this done and that could be a change by itself.)

The other MathML elements don’t have their own unique element subclass, so they need to be handled in the MathMLInlineContainerElement. But this element does have a subclass, so there’s no need to have the base class createRenderer support it.

This is not critically important to this patch, and you’re right that I could have left it out or could land it separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239041</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-06-16 13:19:55 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; WebCore/mathml/MathMLMathElement.cpp:47
&gt; &gt;  +  RenderObject* MathMLMathElement::createRenderer(RenderArena* arena, RenderStyle* style)
&gt; &gt; I don&apos;t really understand why this change was done.
&gt; &gt; 
&gt; &gt; Also, I don&apos;t know what this has to do with &quot;Deploy adoptRef in more place&quot;. (I suspect it was just some additional clean up. I suspect that if it is worth doing, then most of the MathML*Element classes should have this done and that could be a change by itself.)
&gt; 
&gt; The other MathML elements don’t have their own unique element subclass, so they need to be handled in the MathMLInlineContainerElement. But this element does have a subclass, so there’s no need to have the base class createRenderer support it.
&gt; 
&gt; This is not critically important to this patch, and you’re right that I could have left it out or could land it separately.

Thanks for the info! (As I mentioned before) Feel free to leave it in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239137</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-16 16:07:50 -0700</bug_when>
    <thetext>Committed r61293: &lt;http://trac.webkit.org/changeset/61293&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239144</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-16 16:34:19 -0700</bug_when>
    <thetext>This must have broken MathML builds:

  virtual createRenderer(RenderArena*, RenderStyle*);
in trunk/WebCore/mathml/MathMLMathElement.h 

and in trunk/WebCore/mathml/MathMLMathElement.h 

Otherwise LGTM too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239145</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-16 16:38:57 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; in trunk/WebCore/mathml/MathMLMathElement.h 
&gt; and in trunk/WebCore/mathml/MathMLMathElement.h 

Those are both the same file. I fixed it, but couldn&apos;t find a second case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239164</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-16 17:46:48 -0700</bug_when>
    <thetext>I must have read the diff wrong.  Thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57436</attachid>
            <date>2010-05-30 23:08:12 -0700</date>
            <delta_ts>2010-05-31 11:30:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39941-20100530230811.patch</filename>
            <type>text/plain</type>
            <size>84431</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwNDI4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDUtMzAgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIERlcGxveSBhZG9wdFJlZiBpbiBtb3JlIHBsYWNlcywgaW5jbHVkaW5n
IGFsbCBIVE1MIGFuZCBNYXRoTUwgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTQxCisKKyAgICAgICAgKiB3dGYvVGhyZWFkU2FmZVNo
YXJlZC5oOiBNYWRlIHRoZSBjb25zdHJ1Y3RvciBwcm90ZWN0ZWQgYW5kIHJlbW92ZWQgdGhlCisg
ICAgICAgIHVubmVlZGVkIHN1cHBvcnQgZm9yIGluaXRpYWwgcmVmZXJlbmNlIGNvdW50cyBvdGhl
ciB0aGFuIDEuCisKIDIwMTAtMDUtMzAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93
dGYvVGhyZWFkU2FmZVNoYXJlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRTYWZlU2hhcmVkLmgJKHJldmlzaW9uIDYwNDE3KQorKysgSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZFNhZmVTaGFyZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDE2ICsxMjksMTYgQEAg
cHJpdmF0ZToKIAogdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgVGhyZWFkU2FmZVNoYXJlZCA6IHB1
YmxpYyBUaHJlYWRTYWZlU2hhcmVkQmFzZSB7CiBwdWJsaWM6Ci0gICAgVGhyZWFkU2FmZVNoYXJl
ZChpbnQgaW5pdGlhbFJlZkNvdW50ID0gMSkKLSAgICAgICAgOiBUaHJlYWRTYWZlU2hhcmVkQmFz
ZShpbml0aWFsUmVmQ291bnQpCi0gICAgewotICAgIH0KLQogICAgIHZvaWQgZGVyZWYoKQogICAg
IHsKICAgICAgICAgaWYgKGRlcmVmQmFzZSgpKQogICAgICAgICAgICAgZGVsZXRlIHN0YXRpY19j
YXN0PFQqPih0aGlzKTsKICAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBUaHJlYWRTYWZlU2hhcmVk
KCkKKyAgICB7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBXZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNjA0
MjgpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0NSBA
QAorMjAxMC0wNS0zMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVwbG95IGFkb3B0UmVmIGlu
IG1vcmUgcGxhY2VzLCBpbmNsdWRpbmcgYWxsIEhUTUwgYW5kIE1hdGhNTCBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5NDEKKworICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3Bh
dGNoQXR0clJlbW92YWxFdmVudCk6IFVzZSBjcmVhdGUgaW5zdGVhZCBvZiBuZXcKKyAgICAgICAg
aW4gY29tbWVudGVkLW91dCBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0
Y2hBdHRyQWRkaXRpb25FdmVudCk6IERpdHRvLgorCisgICAgICAgICogZG9tL05vZGUuaDogUmVt
b3ZlZCBub3ctdW51c2VkIENyZWF0ZUVsZW1lbnRaZXJvUmVmQ291bnQgYW5kCisgICAgICAgIENy
ZWF0ZUhUTUxFbGVtZW50WmVyb1JlZkNvdW50LgorCisgICAgICAgICogZWRpdGluZy9JbnNlcnRM
aXN0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0Q29tbWFuZDo6aW5z
ZXJ0TGlzdCk6IFVzZSBjcmVhdGUgaW5zdGVhZCBvZiBuZXcsIGZpeGluZworICAgICAgICBhIHN0
b3JhZ2UgbGVhay4KKworICAgICAgICAqIGVkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFu
ZDo6aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwpOgorICAgICAgICBSZW1vdmVkICJXaXRoVHlw
ZSIgZnJvbSBmdW5jdGlvbiBuYW1lLiBVc2UgY3JlYXRlIGluc3RlYWQgb2YgbmV3LCBmaXhpbmcg
YQorICAgICAgICBzdG9yYWdlIGxlYWsuCisgICAgICAgIChXZWJDb3JlOjpEZWNyZWFzZVNlbGVj
dGlvbkxpc3RMZXZlbENvbW1hbmQ6OmRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKTogVXNlCisg
ICAgICAgIGNyZWF0ZSBpbnN0ZWFkIG9mIG5ldywgZml4aW5nIGEgc3RvcmFnZSBsZWFrLgorCisg
ICAgICAgICogc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkluZGV4ZWREYXRhYmFzZUltcGw6OmNyZWF0ZSk6IFVzZSBhZG9wdFJlZiwgZml4aW5nIGEg
c3RvcmFnZSBsZWFrLgorCisgICAgICAgICogZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2
ZWwuaDogQWRkZWQgY3JlYXRlIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGh0bWwvSFRNTEFuY2hv
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OkhUTUxB
bmNob3JFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OkhUTUxGcmFtZU93bmVy
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQcm9ncmVzc0VsZW1lbnQ6OkhUTUxQcm9ncmVzc0VsZW1lbnQpOgor
ICAgICAgICBSZW1vdmVkIGNvZGUgdG8gZXhwbGljaXRseSBwYXNzIENyZWF0ZUhUTUxFbGVtZW50
IGNvbnN0cnVjdGlvbiB0eXBlIHNpbmNlIHRoYXQncworICAgICAgICBub3cgdGhlIHR5cGUgdXNl
ZCBmb3IgYWxsIEhUTUwgZWxlbWVudHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6
SFRNTEZvcm1Db250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50Lmg6CisgICAgICAgIFJlbW92ZWQgY29uc3RydWN0aW9uIHR5cGUgYXJndW1lbnQsIHNp
bmNlIENyZWF0ZUhUTUxFbGVtZW50IGlzIG5vdyB0aGUgdHlwZSB1c2VkCisgICAgICAgIGZvciBh
bGwgSFRNTCBlbGVtZW50cy4KKworICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6Ok1hdGhNTEVsZW1lbnQpOiBSZW1vdmVk
IGNvbnN0cnVjdGlvbiB0eXBlIG9mCisgICAgICAgIENyZWF0ZVN0eWxlZEVsZW1lbnRaZXJvUmVm
Q291bnQgc28gd2UnbGwgdXNlIHRoZSBkZWZhdWx0IGNvbnN0cnVjdGlvbgorICAgICAgICB0eXBl
LCBDcmVhdGVTdHlsZWRFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6
Y3JlYXRlKTogVXNlIGFkb3B0UmVmLgorCisgICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1lbnQu
aDogTWFkZSBpc01hdGhNTEVsZW1lbnQgZnVuY3Rpb24gcHJpdmF0ZSBhbmQKKyAgICAgICAgcmVt
b3ZlZCB1bm5lZWRlZCBvdmVycmlkZSBvZiBjcmVhdGVSZW5kZXJlciwgYmVjYXVzZSBpdCBkaWQg
dGhlCisgICAgICAgIHNhbWUgdGhpbmcgYXMgdGhlIGJhc2UgY2xhc3MncyBjcmVhdGVSZW5kZXJl
ciBmdW5jdGlvbi4KKworICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6
OmNyZWF0ZSk6IFVzZSBhZG9wdFJlZi4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgUmVtb3ZlZCB1bm5lY2Vz
c2FyaWx5IGluaXRpYWxpemF0aW9uIG9mIGxvY2FsIHZhcmlhYmxlIGFuZCByZW1vdmVkIHRoZQor
ICAgICAgICBjYXNlIGZvciBtYXRoVGFnLCBzaW5jZSB0aGF0IHVzZXMgYSBkaWZmZXJlbnQgZGVy
aXZlZCBjbGFzcy4KKworICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVt
ZW50Lmg6IE1hZGUgY3JlYXRlUmVuZGVycmVyIG92ZXJyaWRlCisgICAgICAgIHByaXZhdGUuCisK
KyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWF0aE1MTWF0aEVsZW1lbnQ6Ok1hdGhNTE1hdGhFbGVtZW50KTogTWFya2VkIGlubGluZSBz
aW5jZQorICAgICAgICBpdCBpcyBjYWxsZWQgaW4gb25seSBvbmUgcGxhY2UuCisgICAgICAgIChX
ZWJDb3JlOjpNYXRoTUxNYXRoRWxlbWVudDo6Y3JlYXRlKTogVXNlIGFkb3B0UmVmLgorICAgICAg
ICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKTogQWRkZWQuIENy
ZWF0ZXMgYQorICAgICAgICBSZW5kZXJNYXRoTUxNYXRoIG9iamVjdC4KKworICAgICAgICAqIG1h
dGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oOiBNYWRlIGNvbnN0cnVjdG9yIHByaXZhdGUgYW5kIGFk
ZGVkIGEKKyAgICAgICAgcHJpdmF0ZSBvdmVycmlkZSBvZiBjcmVhdGVSZW5kZXJlci4KKworICAg
ICAgICAqIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
YXRoTUxUZXh0RWxlbWVudDo6TWF0aE1MVGV4dEVsZW1lbnQpOiBNYXJrZWQgaW5saW5lIHNpbmNl
CisgICAgICAgIGl0IGlzIGNhbGxlZCBpbiBvbmx5IG9uZSBwbGFjZS4KKyAgICAgICAgKFdlYkNv
cmU6Ok1hdGhNTFRleHRFbGVtZW50OjpjcmVhdGUpOiBVc2UgYWRvcHRSZWYuCisgICAgICAgIChX
ZWJDb3JlOjpNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOiBDaGFuZ2VkIHRvIGNh
bGwgdGhyb3VnaAorICAgICAgICB0byB0aGUgYmFzZSBjbGFzcyBpbnN0ZWFkIG9mIGNhbGxpbmcg
UmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QgZGlyZWN0bHkuCisKKyAgICAgICAgKiBtYXRobWwv
TWF0aE1MVGV4dEVsZW1lbnQuaDogTWFkZSB0aGUgY29uc3RydWN0b3IgYW5kIGNyZWF0ZVJlbmRl
cmVyCisgICAgICAgIGZ1bmN0aW9uIHByaXZhdGUuCisKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0
ZUJ1dHRvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b246OmNyZWF0ZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXVkaW9FbGVt
ZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxCUkVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJSRWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxCYXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQmFz
ZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MQmFzZUZvbnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCYXNlRm9udEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgICogaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEJsb2NrcXVvdGVFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEJvZHlF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxCdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZSk6
CisgICAgICAgICogaHRtbC9IVE1MRExpc3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxETGlzdEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRGF0YUdyaWRD
ZWxsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGF0YUdyaWRDZWxsRWxlbWVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxEYXRhR3JpZENvbEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERhdGFHcmlkQ29sRWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxEYXRhR3JpZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERhdGFHcmlkRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxEYXRhR3JpZFJv
d0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERhdGFHcmlkUm93RWxlbWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTERhdGFMaXN0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1s
L0hUTUxEaXZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEaXZFbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OkhUTUxFbGVtZW50KToKKyAgICAgICAgKiBo
dG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxk
U2V0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb250RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9udEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICog
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVt
ZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAq
IGh0bWwvSFRNTEhSRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50
OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEhlYWRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxIZWFkRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxI
ZWFkaW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSGVhZGluZ0VsZW1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEh0bWxFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTElt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25z
dHJ1Y3Rvcik6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1M
SXNJbmRleEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElzSW5kZXhFbGVtZW50
OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9I
VE1MTElFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMSUVsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgICogaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxMYWJlbEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTGVnZW5k
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGVnZW5kRWxlbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTGlua0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWFwRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWFwRWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWFycXVlZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVudUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lbnVFbGVtZW50OjpjcmVhdGUpOgorICAgICAg
ICAqIGh0bWwvSFRNTE1ldGFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRh
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNb2RFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNb2RFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwv
SFRNTE5vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTm9TY3JpcHRF
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MT0xpc3RFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3Jv
dXBFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgICogaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxQYXJh
bUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcmFtRWxlbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKiBodG1sL0hUTUxQcmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxQcmVFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFF1b3RlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUXVvdGVFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFNjcmlwdEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTb3VyY2VFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1M
VGFibGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ29sRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAg
KiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxl
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlUm93RWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50
OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRN
TFVMaXN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVUxpc3RFbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9JbWFn
ZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnRFbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVt
ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sU3RhdHVzRGlzcGxh
eUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xNdXRlQnV0
dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFBsYXlC
dXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sU2Vl
a0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xS
ZXdpbmRCdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lRGlzcGxh
eUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0lucHV0RWxlbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UHJvZ3Jlc3NWYWx1ZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgVXNlIGFkb3B0UmVmLgorCiAyMDEwLTA1LTMwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDYwNDE3KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMDgsNyArMTEwOCw3IEBAIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hBdHRyUmVtb3Zh
bEV2ZW50KEEKICAgICBpZiAoIWRvY3VtZW50KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6
RE9NQVRUUk1PRElGSUVEX0xJU1RFTkVSKSkKICAgICAgICAgcmV0dXJuOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIGRpc3BhdGNoRXZlbnQobmV3IE11dGF0aW9uRXZlbnQoRE9NQXR0
ck1vZGlmaWVkRXZlbnQsIHRydWUsIGZhbHNlLCBhdHRyLCBhdHRyLT52YWx1ZSgpLAorICAgIGRp
c3BhdGNoRXZlbnQoTXV0YXRpb25FdmVudDo6Y3JlYXRlKERPTUF0dHJNb2RpZmllZEV2ZW50LCB0
cnVlLCBhdHRyLCBhdHRyLT52YWx1ZSgpLAogICAgICAgICBhdHRyLT52YWx1ZSgpLCBkb2N1bWVu
dCgpLT5hdHRyTmFtZShhdHRyLT5pZCgpKSwgTXV0YXRpb25FdmVudDo6UkVNT1ZBTCksIGVjKTsK
ICNlbmRpZgogfQpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9pZCBFbGVtZW50OjpkaXNwYXRjaEF0
dHJBZGRpdGlvbkV2ZW50KAogICAgIGlmICghZG9jdW1lbnQoKS0+aGFzTGlzdGVuZXJUeXBlKERv
Y3VtZW50OjpET01BVFRSTU9ESUZJRURfTElTVEVORVIpKQogICAgICAgICByZXR1cm47CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZGlzcGF0Y2hFdmVudChuZXcgTXV0YXRpb25FdmVu
dChET01BdHRyTW9kaWZpZWRFdmVudCwgdHJ1ZSwgZmFsc2UsIGF0dHIsIGF0dHItPnZhbHVlKCks
CisgICAgZGlzcGF0Y2hFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVhdGUoRE9NQXR0ck1vZGlmaWVk
RXZlbnQsIHRydWUsIGF0dHIsIGF0dHItPnZhbHVlKCksCiAgICAgICAgIGF0dHItPnZhbHVlKCks
IGRvY3VtZW50KCktPmF0dHJOYW1lKGF0dHItPmlkKCkpLCBNdXRhdGlvbkV2ZW50OjpBRERJVElP
TiksIGVjKTsKICNlbmRpZgogfQpJbmRleDogV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gNjA0MTcpCisrKyBXZWJDb3JlL2RvbS9O
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1NCw3ICs2NTQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgY2xlYXJGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1fbm9kZUZsYWdzICY9IH5tYXNr
OyB9IAogCiBwcm90ZWN0ZWQ6Ci0gICAgLy8gQ3JlYXRlRWxlbWVudFplcm9SZWZDb3VudCBpcyBk
ZXByZWNhdGVkIGFuZCBjYW4gYmUgcmVtb3ZlZCBvbmNlIHdlIGNvbnZlcnQgYWxsIGVsZW1lbnQK
KyAgICAvLyBDcmVhdGVXaXRoWmVyb1JlZkNvdW50RmxhZyBpcyBkZXByZWNhdGVkIGFuZCBjYW4g
YmUgcmVtb3ZlZCBvbmNlIHdlIGNvbnZlcnQgYWxsIGVsZW1lbnQKICAgICAvLyBjbGFzc2VzIHRv
IHN0YXJ0IHdpdGggYSByZWZlcmVuY2UgY291bnQgb2YgMS4KICAgICBlbnVtIENvbnN0cnVjdGlv
blR5cGUgeyAKICAgICAgICAgQ3JlYXRlT3RoZXIgPSBEZWZhdWx0Tm9kZUZsYWdzLApAQCAtNjYy
LDExICs2NjIsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIENyZWF0ZUNvbW1lbnQgPSBEZWZhdWx0
Tm9kZUZsYWdzIHwgSXNDb21tZW50RmxhZywKICAgICAgICAgQ3JlYXRlQ29udGFpbmVyID0gRGVm
YXVsdE5vZGVGbGFncyB8IElzQ29udGFpbmVyRmxhZywgCiAgICAgICAgIENyZWF0ZUVsZW1lbnQg
PSBDcmVhdGVDb250YWluZXIgfCBJc0VsZW1lbnRGbGFnLCAKLSAgICAgICAgQ3JlYXRlRWxlbWVu
dFplcm9SZWZDb3VudCA9IElzRWxlbWVudEZsYWcgfCBDcmVhdGVXaXRoWmVyb1JlZkNvdW50Rmxh
ZywgCiAgICAgICAgIENyZWF0ZVN0eWxlZEVsZW1lbnQgPSBDcmVhdGVFbGVtZW50IHwgSXNTdHls
ZWRFbGVtZW50RmxhZywgCiAgICAgICAgIENyZWF0ZVN0eWxlZEVsZW1lbnRaZXJvUmVmQ291bnQg
PSAgQ3JlYXRlU3R5bGVkRWxlbWVudCB8IENyZWF0ZVdpdGhaZXJvUmVmQ291bnRGbGFnLCAKICAg
ICAgICAgQ3JlYXRlSFRNTEVsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50IHwgSXNIVE1MRmxh
ZywgCi0gICAgICAgIENyZWF0ZUhUTUxFbGVtZW50WmVyb1JlZkNvdW50ID0gQ3JlYXRlSFRNTEVs
ZW1lbnQgfCBDcmVhdGVXaXRoWmVyb1JlZkNvdW50RmxhZywKICAgICAgICAgQ3JlYXRlU1ZHRWxl
bWVudCA9IENyZWF0ZVN0eWxlZEVsZW1lbnQgfCBJc1NWR0ZsYWcsIAogICAgICAgICBDcmVhdGVT
VkdFbGVtZW50WmVyb1JlZkNvdW50ID0gQ3JlYXRlU1ZHRWxlbWVudCB8IENyZWF0ZVdpdGhaZXJv
UmVmQ291bnRGbGFnLAogICAgIH07CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uLmNwcAkocmV2
aXNpb24gNjA0MTgpCisrKyBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBpbmxpbmUgRGVsZXRlQnV0dG9uOjpEZWxldGVCdXR0
b24oRG9jdW1lCiAKIFBhc3NSZWZQdHI8RGVsZXRlQnV0dG9uPiBEZWxldGVCdXR0b246OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBEZWxldGVCdXR0b24oZG9j
dW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVsZXRlQnV0dG9uKGRvY3VtZW50KSk7
CiB9CiAKIHZvaWQgRGVsZXRlQnV0dG9uOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcAkocmV2aXNpb24gNjA0
MTcpCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21w
dXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAogUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSW5zZXJ0TGlzdENvbW1hbmQ6Omluc2VydExpc3Qo
RG9jdW1lbnQqIGRvY3VtZW50LCBUeXBlIHR5cGUpCiB7Ci0gICAgUmVmUHRyPEluc2VydExpc3RD
b21tYW5kPiBpbnNlcnRDb21tYW5kID0gbmV3IEluc2VydExpc3RDb21tYW5kKGRvY3VtZW50LCB0
eXBlKTsKKyAgICBSZWZQdHI8SW5zZXJ0TGlzdENvbW1hbmQ+IGluc2VydENvbW1hbmQgPSBjcmVh
dGUoZG9jdW1lbnQsIHR5cGUpOwogICAgIGluc2VydENvbW1hbmQtPmFwcGx5KCk7CiAgICAgcmV0
dXJuIGluc2VydENvbW1hbmQtPm1fbGlzdEVsZW1lbnQ7CiB9CkluZGV4OiBXZWJDb3JlL2VkaXRp
bmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Vk
aXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcAkocmV2aXNpb24gNjA0MTcpCisrKyBX
ZWJDb3JlL2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA5LDI4ICsyMDksMjggQEAgYm9vbCBJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENv
bW1hbmQ6OgogICAgIHJldHVybiBjYW5JbmNyZWFzZUxpc3RMZXZlbChkb2N1bWVudC0+ZnJhbWUo
KS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLCBzdGFydExpc3RDaGlsZCwgZW5kTGlzdENoaWxk
KTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1h
bmQ6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsV2l0aFR5cGUoRG9jdW1lbnQqIGRvY3VtZW50
LCBUeXBlIGxpc3RUeXBlKQorUGFzc1JlZlB0cjxOb2RlPiBJbmNyZWFzZVNlbGVjdGlvbkxpc3RM
ZXZlbENvbW1hbmQ6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKERvY3VtZW50KiBkb2N1bWVu
dCwgVHlwZSB0eXBlKQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgQVNTRVJUKGRvY3Vt
ZW50LT5mcmFtZSgpKTsKLSAgICBSZWZQdHI8SW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21t
YW5kPiBtb2RDb21tYW5kID0gbmV3IEluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZChk
b2N1bWVudCwgbGlzdFR5cGUpOwotICAgIG1vZENvbW1hbmQtPmFwcGx5KCk7Ci0gICAgcmV0dXJu
IG1vZENvbW1hbmQtPm1fbGlzdEVsZW1lbnQ7CisgICAgUmVmUHRyPEluY3JlYXNlU2VsZWN0aW9u
TGlzdExldmVsQ29tbWFuZD4gY29tbWFuZCA9IGNyZWF0ZShkb2N1bWVudCwgdHlwZSk7CisgICAg
Y29tbWFuZC0+YXBwbHkoKTsKKyAgICByZXR1cm4gY29tbWFuZC0+bV9saXN0RWxlbWVudDsKIH0K
IAogUGFzc1JlZlB0cjxOb2RlPiBJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6Omlu
Y3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1
cm4gaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxXaXRoVHlwZShkb2N1bWVudCwgSW5oZXJpdGVk
TGlzdFR5cGUpOworICAgIHJldHVybiBpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbChkb2N1bWVu
dCwgSW5oZXJpdGVkTGlzdFR5cGUpOwogfQogCiBQYXNzUmVmUHRyPE5vZGU+IEluY3JlYXNlU2Vs
ZWN0aW9uTGlzdExldmVsQ29tbWFuZDo6aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxPcmRlcmVk
KERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gaW5jcmVhc2VTZWxlY3Rpb25MaXN0
TGV2ZWxXaXRoVHlwZShkb2N1bWVudCwgT3JkZXJlZExpc3QpOworICAgIHJldHVybiBpbmNyZWFz
ZVNlbGVjdGlvbkxpc3RMZXZlbChkb2N1bWVudCwgT3JkZXJlZExpc3QpOwogfQogCiBQYXNzUmVm
UHRyPE5vZGU+IEluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZDo6aW5jcmVhc2VTZWxl
Y3Rpb25MaXN0TGV2ZWxVbm9yZGVyZWQoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVy
biBpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbFdpdGhUeXBlKGRvY3VtZW50LCBVbm9yZGVyZWRM
aXN0KTsKKyAgICByZXR1cm4gaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoZG9jdW1lbnQsIFVu
b3JkZXJlZExpc3QpOwogfQogCiBEZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6OkRl
Y3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZChEb2N1bWVudCogZG9jdW1lbnQpIApAQCAt
Mjg5LDcgKzI4OSw3IEBAIHZvaWQgRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kOjoK
IHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VSVChkb2N1bWVudC0+ZnJhbWUoKSk7
Ci0gICAgYXBwbHlDb21tYW5kKG5ldyBEZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQo
ZG9jdW1lbnQpKTsKKyAgICBhcHBseUNvbW1hbmQoY3JlYXRlKGRvY3VtZW50KSk7CiB9CiAKIH0K
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmgJKHJldmlz
aW9uIDYwNDE3KQorKysgV2ViQ29yZS9lZGl0aW5nL01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDkgKzU1LDE1IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBlbnVtIFR5cGUgeyBJbmhlcml0ZWRMaXN0VHlwZSwgT3JkZXJlZExpc3QsIFVu
b3JkZXJlZExpc3QgfTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb2RlPiBpbmNyZWFzZVNlbGVj
dGlvbkxpc3RMZXZlbFdpdGhUeXBlKERvY3VtZW50KiwgVHlwZSBsaXN0VHlwZSk7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Tm9kZT4gaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoRG9jdW1lbnQq
LCBUeXBlKTsKIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluY3JlYXNlU2VsZWN0aW9uTGlzdExl
dmVsQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgVHlwZSB0eXBlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENv
bW1hbmQoZG9jdW1lbnQsIHR5cGUpKTsKKyAgICB9CisgICAgCiAgICAgSW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWxDb21tYW5kKERvY3VtZW50KiwgVHlwZSk7CisKICAgICB2aXJ0dWFsIHZvaWQg
ZG9BcHBseSgpOwogCiAgICAgVHlwZSBtX2xpc3RUeXBlOwpAQCAtNzEsNyArNzcsMTMgQEAgcHVi
bGljOgogICAgIHN0YXRpYyB2b2lkIGRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKERvY3VtZW50
Kik7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGVjcmVhc2VTZWxlY3Rpb25M
aXN0TGV2ZWxDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQo
ZG9jdW1lbnQpKTsKKyAgICB9CisKICAgICBEZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1h
bmQoRG9jdW1lbnQqKTsKKwogICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCk7CiB9OwogCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDE3KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBI
VE1MQW5jaG9yRWxlbWVudDo6SFRNTEFuY2hvckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQsIENyZWF0ZUhUTUxFbGVtZW50KQorICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiAgICAgLCBtX3dhc1NoaWZ0S2V5RG93bk9uTW91c2VEb3duKGZhbHNlKQogICAg
ICwgbV9saW5rUmVsYXRpb25zKDApCiB7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2MDQxNykKKysrIFdlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDMsMTIgKzQzLDEyIEBAIEhUTUxBdWRpb0VsZW1lbnQ6OkhUTUxB
dWRpb0VsZW1lbnQoY29uc3QKIAogUGFzc1JlZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVk
aW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEF1ZGlvRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQXVkaW9FbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1
ZGlvRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IFN0cmluZyYgc3JjKQogewotICAgIFJlZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBhdWRpbyA9
IG5ldyBIVE1MQXVkaW9FbGVtZW50KGF1ZGlvVGFnLCBkb2N1bWVudCk7CisgICAgUmVmUHRyPEhU
TUxBdWRpb0VsZW1lbnQ+IGF1ZGlvID0gYWRvcHRSZWYobmV3IEhUTUxBdWRpb0VsZW1lbnQoYXVk
aW9UYWcsIGRvY3VtZW50KSk7CiAgICAgYXVkaW8tPnNldFByZWxvYWQoImF1dG8iKTsKICAgICBp
ZiAoIXNyYy5pc051bGwoKSkgewogICAgICAgICBhdWRpby0+c2V0U3JjKHNyYyk7CkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxCUkVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQxNykKKysrIFdlYkNvcmUvaHRtbC9IVE1M
QlJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTIgKzQwLDEyIEBAIEhUTUxCUkVs
ZW1lbnQ6OkhUTUxCUkVsZW1lbnQoY29uc3QgUXVhbGkKIAogUGFzc1JlZlB0cjxIVE1MQlJFbGVt
ZW50PiBIVE1MQlJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJl
dHVybiBuZXcgSFRNTEJSRWxlbWVudChiclRhZywgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTEJSRWxlbWVudChiclRhZywgZG9jdW1lbnQpKTsKIH0KIAogUGFzc1JlZlB0
cjxIVE1MQlJFbGVtZW50PiBIVE1MQlJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEJS
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1M
QlJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wgSFRNTEJSRWxlbWVudDo6
bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRl
RW50cnkmIHJlc3VsdCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA2MDQxNykKKysrIFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGlubGluZSBIVE1MQmFzZUVsZW1lbnQ6OkhUTUxCYXNl
RWxlbWVudCgKIAogUGFzc1JlZlB0cjxIVE1MQmFzZUVsZW1lbnQ+IEhUTUxCYXNlRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
IHsKLSAgICByZXR1cm4gbmV3IEhUTUxCYXNlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQmFzZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKIH0KIAogdm9pZCBIVE1MQmFzZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0cikKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQmFzZUZvbnRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEJhc2VGb250RWxlbWVudC5jcHAJKHJldmlz
aW9uIDYwNDE3KQorKysgV2ViQ29yZS9odG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGlubGluZSBIVE1MQmFzZUZvbnRFbGVtZW50OjpI
VE1MQmFzZUZvbnQKIAogUGFzc1JlZlB0cjxIVE1MQmFzZUZvbnRFbGVtZW50PiBIVE1MQmFzZUZv
bnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEJhc2VGb250RWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQmFzZUZvbnRFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGludCBIVE1MQmFzZUZvbnRFbGVtZW50OjpzaXpl
KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA2MDQxNykKKysrIFdlYkNvcmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNywxMiArMzcsMTIgQEAgSFRNTEJsb2NrcXVvdGVFbGVtZW50OjpI
VE1MQmxvY2txdW90ZUVsZQogCiBQYXNzUmVmUHRyPEhUTUxCbG9ja3F1b3RlRWxlbWVudD4gSFRN
TEJsb2NrcXVvdGVFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJl
dHVybiBuZXcgSFRNTEJsb2NrcXVvdGVFbGVtZW50KGJsb2NrcXVvdGVUYWcsIGRvY3VtZW50KTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxCbG9ja3F1b3RlRWxlbWVudChibG9ja3F1b3Rl
VGFnLCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxCbG9ja3F1b3RlRWxlbWVudD4g
SFRNTEJsb2NrcXVvdGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEJsb2NrcXVvdGVF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxC
bG9ja3F1b3RlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiB9CkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTEJvZHlFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0MTcpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TEJvZHlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTIgKzQ3LDEyIEBAIEhUTUxC
b2R5RWxlbWVudDo6SFRNTEJvZHlFbGVtZW50KGNvbnN0IFEKIAogUGFzc1JlZlB0cjxIVE1MQm9k
eUVsZW1lbnQ+IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsK
LSAgICByZXR1cm4gbmV3IEhUTUxCb2R5RWxlbWVudChib2R5VGFnLCBkb2N1bWVudCk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQm9keUVsZW1lbnQoYm9keVRhZywgZG9jdW1lbnQpKTsK
IH0KIAogUGFzc1JlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAg
ICByZXR1cm4gbmV3IEhUTUxCb2R5RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIVE1MQm9keUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0K
IAogSFRNTEJvZHlFbGVtZW50Ojp+SFRNTEJvZHlFbGVtZW50KCkKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxC
dXR0b25FbGVtZW50LmNwcAkocmV2aXNpb24gNjA0MTcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEJ1
dHRvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIGlubGluZSBI
VE1MQnV0dG9uRWxlbWVudDo6SFRNTEJ1dHRvbkVsZW0KIAogUGFzc1JlZlB0cjxIVE1MQnV0dG9u
RWxlbWVudD4gSFRNTEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIHsKLSAg
ICByZXR1cm4gbmV3IEhUTUxCdXR0b25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxCdXR0b25FbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCBmb3JtKSk7CiB9CiAKIFJlbmRlck9iamVjdCogSFRNTEJ1dHRvbkVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQxNykKKysrIFdlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDEyICs2NSwxMiBAQCBI
VE1MQ2FudmFzRWxlbWVudDo6SFRNTENhbnZhc0VsZW1lbnQoY29uCiAKIFBhc3NSZWZQdHI8SFRN
TENhbnZhc0VsZW1lbnQ+IEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTENhbnZhc0VsZW1lbnQoY2FudmFzVGFnLCBkb2N1
bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQ2FudmFzRWxlbWVudChjYW52YXNU
YWcsIGRvY3VtZW50KSk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IEhUTUxD
YW52YXNFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTENhbnZhc0VsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTENhbnZhc0VsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogSFRNTENhbnZhc0VsZW1lbnQ6On5IVE1MQ2FudmFz
RWxlbWVudCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxETGlzdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQx
NykKKysrIFdlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNyBAQCBpbmxpbmUgSFRNTERMaXN0RWxlbWVudDo6SFRNTERMaXN0RWxlbWVu
CiAKIFBhc3NSZWZQdHI8SFRNTERMaXN0RWxlbWVudD4gSFRNTERMaXN0RWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAg
ICByZXR1cm4gbmV3IEhUTUxETGlzdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSFRNTERMaXN0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwog
fQogCiBib29sIEhUTUxETGlzdEVsZW1lbnQ6OmNvbXBhY3QoKSBjb25zdApJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxEYXRhR3JpZENlbGxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTERhdGFHcmlkQ2VsbEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQxNykKKysrIFdl
YkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRDZWxsRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDcgKzQyLDcgQEAgaW5saW5lIEhUTUxEYXRhR3JpZENlbGxFbGVtZW50OjpIVE1MRGF0YQog
CiBQYXNzUmVmUHRyPEhUTUxEYXRhR3JpZENlbGxFbGVtZW50PiBIVE1MRGF0YUdyaWRDZWxsRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxEYXRhR3JpZENlbGxFbGVtZW50KG5hbWUsIGRvY3Vt
ZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxEYXRhR3JpZENlbGxFbGVtZW50KG5h
bWUsIGRvY3VtZW50KSk7CiB9CiAKIFN0cmluZyBIVE1MRGF0YUdyaWRDZWxsRWxlbWVudDo6bGFi
ZWwoKSBjb25zdApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZENvbEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRDb2xFbGVtZW50LmNwcAko
cmV2aXNpb24gNjA0MTcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTERhdGFHcmlkQ29sRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgaW5saW5lIEhUTUxEYXRhR3JpZENv
bEVsZW1lbnQ6OkhUTUxEYXRhRwogCiBQYXNzUmVmUHRyPEhUTUxEYXRhR3JpZENvbEVsZW1lbnQ+
IEhUTUxEYXRhR3JpZENvbEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MRGF0YUdyaWRDb2xF
bGVtZW50KG5hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxEYXRh
R3JpZENvbEVsZW1lbnQobmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogSFRNTERhdGFHcmlkRWxlbWVu
dCogSFRNTERhdGFHcmlkQ29sRWxlbWVudDo6ZmluZERhdGFHcmlkQW5jZXN0b3IoKSBjb25zdApJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0MTcpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTERhdGFHcmlkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDcgKzQ3LDcgQEAgaW5saW5lIEhUTUxEYXRhR3JpZEVsZW1lbnQ6OkhUTUxEYXRhR3JpZAog
CiBQYXNzUmVmUHRyPEhUTUxEYXRhR3JpZEVsZW1lbnQ+IEhUTUxEYXRhR3JpZEVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7
Ci0gICAgcmV0dXJuIG5ldyBIVE1MRGF0YUdyaWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxEYXRhR3JpZEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpKTsKIH0KIAogSFRNTERhdGFHcmlkRWxlbWVudDo6fkhUTUxEYXRhR3JpZEVsZW1lbnQo
KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZFJvd0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRSb3dFbGVtZW50LmNwcAkocmV2aXNpb24g
NjA0MTcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTERhdGFHcmlkUm93RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgaW5saW5lIEhUTUxEYXRhR3JpZFJvd0VsZW1lbnQ6
OkhUTUxEYXRhRwogCiBQYXNzUmVmUHRyPEhUTUxEYXRhR3JpZFJvd0VsZW1lbnQ+IEhUTUxEYXRh
R3JpZFJvd0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MRGF0YUdyaWRSb3dFbGVtZW50KG5h
bWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxEYXRhR3JpZFJvd0Vs
ZW1lbnQobmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogYm9vbCBIVE1MRGF0YUdyaWRSb3dFbGVtZW50
OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
RGF0YUxpc3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERhdGFM
aXN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDE3KQorKysgV2ViQ29yZS9odG1sL0hUTUxEYXRh
TGlzdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGlubGluZSBI
VE1MRGF0YUxpc3RFbGVtZW50OjpIVE1MRGF0YUxpc3QKIAogUGFzc1JlZlB0cjxIVE1MRGF0YUxp
c3RFbGVtZW50PiBIVE1MRGF0YUxpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTERh
dGFMaXN0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MRGF0YUxpc3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wgSFRN
TERhdGFMaXN0RWxlbWVudDo6Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpCkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MRGl2RWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDE4KQorKysgV2ViQ29yZS9odG1sL0hU
TUxEaXZFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTIgKzQwLDEyIEBAIEhUTUxE
aXZFbGVtZW50OjpIVE1MRGl2RWxlbWVudChjb25zdCBRdWEKIAogUGFzc1JlZlB0cjxIVE1MRGl2
RWxlbWVudD4gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBIVE1MRGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQpKTsKIH0KIAog
UGFzc1JlZlB0cjxIVE1MRGl2RWxlbWVudD4gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJu
IG5ldyBIVE1MRGl2RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVE1MRGl2RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBib29sIEhU
TUxEaXZFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBN
YXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdApJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2MDQxNykKKysrIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgc3RkOjptYXg7CiAKIFBhc3NSZWZQdHI8
SFRNTEVsZW1lbnQ+IEhUTUxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUhUTUxFbGVtZW50KSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBT
dHJpbmcgSFRNTEVsZW1lbnQ6Om5vZGVOYW1lKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCShy
ZXZpc2lvbiA2MDQxNykKKysrIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQWxp
Z25tZW50VG9TdHlsZWRFbGVtZW50KFN0eWxlZEVsZW1lbnQqLCBBdHRyaWJ1dGUqKTsKIAogcHJv
dGVjdGVkOgotICAgIEhUTUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUhUTUxFbGVtZW50WmVyb1JlZkNvdW50
KTsKKyAgICBIVE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCopOwogCiAgICAgdm9pZCBhZGRIVE1MQWxpZ25tZW50KEF0dHJpYnV0ZSopOwogCkBAIC0xMTEs
OCArMTExLDggQEAgcHJpdmF0ZToKICAgICBOb2RlKiBpbnNlcnRBZGphY2VudChjb25zdCBTdHJp
bmcmIHdoZXJlLCBOb2RlKiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYpOwogfTsKIAotaW5saW5l
IEhUTUxFbGVtZW50OjpIVE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKLSAgICA6IFN0eWxlZEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIHR5cGUpCitpbmxpbmUgSFRNTEVsZW1lbnQ6OkhUTUxF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
KyAgICA6IFN0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUhUTUxFbGVtZW50
KQogewogICAgIEFTU0VSVCh0YWdOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQxNykKKysrIFdlYkNv
cmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNyBAQCBpbmxpbmUgSFRNTEZpZWxkU2V0RWxlbWVudDo6SFRNTEZpZWxkU2V0CiAKIFBhc3NS
ZWZQdHI8SFRNTEZpZWxkU2V0RWxlbWVudD4gSFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1F
bGVtZW50KiBmb3JtKQogewotICAgIHJldHVybiBuZXcgSFRNTEZpZWxkU2V0RWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCwgZm9ybSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRmllbGRT
ZXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKSk7CiB9CiAKIGJvb2wgSFRNTEZpZWxk
U2V0RWxlbWVudDo6Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpCkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TEZvbnRFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0MTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZv
bnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBIVE1MRm9udEVs
ZW1lbnQ6OkhUTUxGb250RWxlbWVudChjb25zdCBRCiAKIFBhc3NSZWZQdHI8SFRNTEZvbnRFbGVt
ZW50PiBIVE1MRm9udEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MRm9udEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZvbnRFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIC8vIEFsbG93cyBsZWFkaW5nIHNwYWNlcy4K
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDYw
NDE3KQorKysgV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw5ICs1Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTEZvcm1Db250cm9sRWxlbWVudDo6SFRNTEZvcm1Db250
cm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jLCBI
VE1MRm9ybUVsZW1lbnQqIGYsIENvbnN0cnVjdGlvblR5cGUgY29uc3RydWN0aW9uVHlwZSkKLSAg
ICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvYywgY29uc3RydWN0aW9uVHlwZSkKLSAgICAsIG1f
Zm9ybShmKQorSFRNTEZvcm1Db250cm9sRWxlbWVudDo6SFRNTEZvcm1Db250cm9sRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3Jt
RWxlbWVudCogZm9ybSkKKyAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQorICAg
ICwgbV9mb3JtKGZvcm0pCiAgICAgLCBtX2Rpc2FibGVkKGZhbHNlKQogICAgICwgbV9yZWFkT25s
eShmYWxzZSkKICAgICAsIG1fcmVxdWlyZWQoZmFsc2UpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgJKHJldmlzaW9uIDYwNDE4KQorKysgV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1
YmxpYzoKICAgICBib29sIHJlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9yZWFkT25seTsgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCosIENvbnN0cnVjdGlvblR5
cGUgPSBDcmVhdGVIVE1MRWxlbWVudFplcm9SZWZDb3VudCk7CisgICAgSFRNTEZvcm1Db250cm9s
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCosIEhUTUxGb3Jt
RWxlbWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQxOCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NiwxMiArODYsMTIgQEAgSFRNTEZvcm1FbGVtZW50
OjpIVE1MRm9ybUVsZW1lbnQoY29uc3QgUQogCiBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4g
SFRNTEZvcm1FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVy
biBuZXcgSFRNTEZvcm1FbGVtZW50KGZvcm1UYWcsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEhUTUxGb3JtRWxlbWVudChmb3JtVGFnLCBkb2N1bWVudCkpOwogfQogCiBQYXNz
UmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gSFRNTEZvcm1FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBu
ZXcgSFRNTEZvcm1FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxGb3JtRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBIVE1MRm9y
bUVsZW1lbnQ6On5IVE1MRm9ybUVsZW1lbnQoKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZU93bmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93
bmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDE3KQorKysgV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZU93bmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogSFRNTEZyYW1lT3duZXJFbGVtZW50OjpIVE1MRnJhbWVPd25lckVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQot
ICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUhUTUxFbGVtZW50KQor
ICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2NvbnRlbnRGcmFt
ZSgwKQogICAgICwgbV9zYW5kYm94RmxhZ3MoU2FuZGJveE5vbmUpCiB7CkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQxOCkKKysrIFdlYkNvcmUvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBA
QCBIVE1MRnJhbWVTZXRFbGVtZW50OjpIVE1MRnJhbWVTZXRFbGVtZW50CiAKIFBhc3NSZWZQdHI8
SFRNTEZyYW1lU2V0RWxlbWVudD4gSFRNTEZyYW1lU2V0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4g
bmV3IEhUTUxGcmFtZVNldEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSFRNTEZyYW1lU2V0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQog
CiBib29sIEhUTUxGcmFtZVNldEVsZW1lbnQ6OmNoZWNrRFREKGNvbnN0IE5vZGUqIG5ld0NoaWxk
KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0MTgpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTEhSRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEyICs0MCwxMiBA
QCBIVE1MSFJFbGVtZW50OjpIVE1MSFJFbGVtZW50KGNvbnN0IFF1YWxpCiAKIFBhc3NSZWZQdHI8
SFRNTEhSRWxlbWVudD4gSFRNTEhSRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkK
IHsKLSAgICByZXR1cm4gbmV3IEhUTUxIUkVsZW1lbnQoaHJUYWcsIGRvY3VtZW50KTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxIUkVsZW1lbnQoaHJUYWcsIGRvY3VtZW50KSk7CiB9CiAK
IFBhc3NSZWZQdHI8SFRNTEhSRWxlbWVudD4gSFRNTEhSRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4g
bmV3IEhUTUxIUkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSFRNTEhSRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBib29sIEhUTUxI
UkVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBl
ZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEhl
YWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50
LmNwcAkocmV2aXNpb24gNjA0MTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzksMTIgKzM5LDEyIEBAIEhUTUxIZWFkRWxlbWVudDo6SFRN
TEhlYWRFbGVtZW50KGNvbnN0IFEKIAogUGFzc1JlZlB0cjxIVE1MSGVhZEVsZW1lbnQ+IEhUTUxI
ZWFkRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3
IEhUTUxIZWFkRWxlbWVudChoZWFkVGFnLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBIVE1MSGVhZEVsZW1lbnQoaGVhZFRhZywgZG9jdW1lbnQpKTsKIH0KIAogUGFzc1JlZlB0
cjxIVE1MSGVhZEVsZW1lbnQ+IEhUTUxIZWFkRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhU
TUxIZWFkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MSGVhZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogU3RyaW5nIEhUTUxI
ZWFkRWxlbWVudDo6cHJvZmlsZSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEhlYWRp
bmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVt
ZW50LmNwcAkocmV2aXNpb24gNjA0MTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBpbmxpbmUgSFRNTEhlYWRp
bmdFbGVtZW50OjpIVE1MSGVhZGluZ0VsCiAKIFBhc3NSZWZQdHI8SFRNTEhlYWRpbmdFbGVtZW50
PiBIVE1MSGVhZGluZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MSGVhZGluZ0VsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEhlYWRp
bmdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wgSFRNTEhlYWRpbmdFbGVt
ZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MSHRtbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQxOCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMTIgQEAgSFRNTEh0bWxFbGVtZW50
OjpIVE1MSHRtbEVsZW1lbnQoY29uc3QgUQogCiBQYXNzUmVmUHRyPEhUTUxIdG1sRWxlbWVudD4g
SFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVy
biBuZXcgSFRNTEh0bWxFbGVtZW50KGh0bWxUYWcsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEhUTUxIdG1sRWxlbWVudChodG1sVGFnLCBkb2N1bWVudCkpOwogfQogCiBQYXNz
UmVmUHRyPEhUTUxIdG1sRWxlbWVudD4gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBu
ZXcgSFRNTEh0bWxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxIdG1sRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBTdHJpbmcg
SFRNTEh0bWxFbGVtZW50Ojp2ZXJzaW9uKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDYwNDE4KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMiArNTUsMTIgQEAgSFRNTEltYWdlRWxlbWVu
dDo6SFRNTEltYWdlRWxlbWVudChjb25zdAogCiBQYXNzUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+
IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0
dXJuIG5ldyBIVE1MSW1hZ2VFbGVtZW50KGltZ1RhZywgZG9jdW1lbnQpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSFRNTEltYWdlRWxlbWVudChpbWdUYWcsIGRvY3VtZW50KSk7CiB9CiAKIFBh
c3NSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVt
ZW50KiBmb3JtKQogewotICAgIHJldHVybiBuZXcgSFRNTEltYWdlRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCwgZm9ybSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSW1hZ2VFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKSk7CiB9CiAKIEhUTUxJbWFnZUVsZW1lbnQ6On5IVE1M
SW1hZ2VFbGVtZW50KCkKQEAgLTcxLDcgKzcxLDcgQEAgSFRNTEltYWdlRWxlbWVudDo6fkhUTUxJ
bWFnZUVsZW1lbnQoKQogCiBQYXNzUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IEhUTUxJbWFnZUVs
ZW1lbnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBp
bnQqIG9wdGlvbmFsV2lkdGgsIGNvbnN0IGludCogb3B0aW9uYWxIZWlnaHQpCiB7Ci0gICAgUmVm
UHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gbmV3IEhUTUxJbWFnZUVsZW1lbnQoaW1nVGFn
LCBkb2N1bWVudCk7CisgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gYWRvcHRS
ZWYobmV3IEhUTUxJbWFnZUVsZW1lbnQoaW1nVGFnLCBkb2N1bWVudCkpOwogICAgIGlmIChvcHRp
b25hbFdpZHRoKQogICAgICAgICBpbWFnZS0+c2V0V2lkdGgoKm9wdGlvbmFsV2lkdGgpOwogICAg
IGlmIChvcHRpb25hbEhlaWdodCA+IDApCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2MDQxOCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJ
bnB1dEVsZW1lbnQoY29uc3QKIAogUGFzc1JlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5w
dXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1M
SW5wdXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxJbnB1dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pKTsKIH0KIAog
SFRNTElucHV0RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQoKQpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxJc0luZGV4RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJ
c0luZGV4RWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDE4KQorKysgV2ViQ29yZS9odG1sL0hUTUxJ
c0luZGV4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEyICs0MSwxMiBAQCBIVE1M
SXNJbmRleEVsZW1lbnQ6OkhUTUxJc0luZGV4RWxlbWVudChjCiAKIFBhc3NSZWZQdHI8SFRNTElz
SW5kZXhFbGVtZW50PiBIVE1MSXNJbmRleEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1l
bnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxJc0luZGV4
RWxlbWVudChpc2luZGV4VGFnLCBkb2N1bWVudCwgZm9ybSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBIVE1MSXNJbmRleEVsZW1lbnQoaXNpbmRleFRhZywgZG9jdW1lbnQsIGZvcm0pKTsKIH0K
IAogUGFzc1JlZlB0cjxIVE1MSXNJbmRleEVsZW1lbnQ+IEhUTUxJc0luZGV4RWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRN
TEZvcm1FbGVtZW50KiBmb3JtKQogewotICAgIHJldHVybiBuZXcgSFRNTElzSW5kZXhFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxJ
c0luZGV4RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwogfQogCiB2b2lkIEhUTUxJ
c0luZGV4RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQxNykKKysrIFdlYkNv
cmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3
LDcgQEAgaW5saW5lIEhUTUxLZXlnZW5FbGVtZW50OjpIVE1MS2V5Z2VuRWxlbQogCiBQYXNzUmVm
UHRyPEhUTUxLZXlnZW5FbGVtZW50PiBIVE1MS2V5Z2VuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50
KiBmb3JtKQogewotICAgIHJldHVybiBuZXcgSFRNTEtleWdlbkVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQsIGZvcm0pOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEtleWdlbkVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1M
S2V5Z2VuRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MTElFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExJRWxl
bWVudC5jcHAJKHJldmlzaW9uIDYwNDE4KQorKysgV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMTIgQEAgSFRNTExJRWxlbWVudDo6SFRN
TExJRWxlbWVudChjb25zdCBRdWFsaQogCiBQYXNzUmVmUHRyPEhUTUxMSUVsZW1lbnQ+IEhUTUxM
SUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBI
VE1MTElFbGVtZW50KGxpVGFnLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBI
VE1MTElFbGVtZW50KGxpVGFnLCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxMSUVs
ZW1lbnQ+IEhUTUxMSUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MTElFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxMSUVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogYm9vbCBIVE1MTElFbGVtZW50OjptYXBUb0VudHJ5
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVz
dWx0KSBjb25zdApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0
MTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDcgKzU2LDcgQEAgaW5saW5lIEhUTUxMYWJlbEVsZW1lbnQ6OkhUTUxMYWJlbEVsZW1l
bgogCiBQYXNzUmVmUHRyPEhUTUxMYWJlbEVsZW1lbnQ+IEhUTUxMYWJlbEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBIVE1MTGFiZWxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxMYWJlbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
IH0KIAogYm9vbCBIVE1MTGFiZWxFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0CkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDE4KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBA
QCBpbmxpbmUgSFRNTExlZ2VuZEVsZW1lbnQ6OkhUTUxMZWdlbmRFbGVtCiAKIFBhc3NSZWZQdHI8
SFRNTExlZ2VuZEVsZW1lbnQ+IEhUTUxMZWdlbmRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZv
cm0pCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MTGVnZW5kRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCwgZm9ybSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTGVnZW5kRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCwgZm9ybSkpOwogfQogCiBib29sIEhUTUxMZWdlbmRFbGVtZW50OjpzdXBw
b3J0c0ZvY3VzKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCShyZXZpc2lv
biA2MDQxOCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Nyw3ICs1Nyw3IEBAIGlubGluZSBIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxl
bWVudCgKIAogUGFzc1JlZlB0cjxIVE1MTGlua0VsZW1lbnQ+IEhUTUxMaW5rRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9v
bCBjcmVhdGVkQnlQYXJzZXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MTGlua0VsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcik7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MTGlua0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpOwog
fQogCiBIVE1MTGlua0VsZW1lbnQ6On5IVE1MTGlua0VsZW1lbnQoKQpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxNYXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1h
cEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQxNykKKysrIFdlYkNvcmUvaHRtbC9IVE1MTWFwRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEyICs0NiwxMiBAQCBIVE1MTWFwRWxlbWVu
dDo6SFRNTE1hcEVsZW1lbnQoY29uc3QgUXVhCiAKIFBhc3NSZWZQdHI8SFRNTE1hcEVsZW1lbnQ+
IEhUTUxNYXBFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVy
biBuZXcgSFRNTE1hcEVsZW1lbnQobWFwVGFnLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVE1MTWFwRWxlbWVudChtYXBUYWcsIGRvY3VtZW50KSk7CiB9CiAKIFBhc3NSZWZQ
dHI8SFRNTE1hcEVsZW1lbnQ+IEhUTUxNYXBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRN
TE1hcEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTE1hcEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogSFRNTE1hcEVsZW1lbnQ6
On5IVE1MTWFwRWxlbWVudCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAko
cmV2aXNpb24gNjA0MTcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgSFRNTE1hcnF1ZWVFbGVtZW50
OjpIVE1MTWFycXVlZUVsCiAKIFBhc3NSZWZQdHI8SFRNTE1hcnF1ZWVFbGVtZW50PiBIVE1MTWFy
cXVlZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MTWFycXVlZUVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE1hcnF1ZWVFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wgSFRNTE1hcnF1ZWVFbGVtZW50OjptYXBU
b0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRy
eSYgcmVzdWx0KSBjb25zdApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAJKHJldmlzaW9u
IDYwNDE3KQorKysgV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAgaW5saW5lIEhUTUxNZW51RWxlbWVudDo6SFRNTE1lbnVFbGVt
ZW50KAogCiBQYXNzUmVmUHRyPEhUTUxNZW51RWxlbWVudD4gSFRNTE1lbnVFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewot
ICAgIHJldHVybiBuZXcgSFRNTE1lbnVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxNZW51RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwog
fQogCiBib29sIEhUTUxNZW51RWxlbWVudDo6Y29tcGFjdCgpIGNvbnN0CkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TE1ldGFFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0MTcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1l
dGFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBpbmxpbmUgSFRN
TE1ldGFFbGVtZW50OjpIVE1MTWV0YUVsZW1lbnQoCiAKIFBhc3NSZWZQdHI8SFRNTE1ldGFFbGVt
ZW50PiBIVE1MTWV0YUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MTWV0YUVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE1ldGFFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIHZvaWQgSFRNTE1ldGFFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TE1vZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDYwNDE3KQorKysgV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBpbmxpbmUgSFRNTE1vZEVsZW1lbnQ6
OkhUTUxNb2RFbGVtZW50KGNvCiAKIFBhc3NSZWZQdHI8SFRNTE1vZEVsZW1lbnQ+IEhUTUxNb2RF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTE1vZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE1vZEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpKTsKIH0KIAogU3RyaW5nIEhUTUxNb2RFbGVtZW50OjpjaXRlKCkgY29uc3QKSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MTm9TY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDE3KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBAIGlubGluZSBIVE1MTm9TY3JpcHRFbGVtZW50OjpIVE1MTm9TY3JpcHQKIAogUGFz
c1JlZlB0cjxIVE1MTm9TY3JpcHRFbGVtZW50PiBIVE1MTm9TY3JpcHRFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAg
IHJldHVybiBuZXcgSFRNTE5vU2NyaXB0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTm9TY3JpcHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KSk7CiB9CiAKIGJvb2wgSFRNTE5vU2NyaXB0RWxlbWVudDo6Y2hlY2tEVEQoY29uc3QgTm9kZSog
bmV3Q2hpbGQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQx
NykKKysrIFdlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsMTIgKzQyLDEyIEBAIEhUTUxPTGlzdEVsZW1lbnQ6OkhUTUxPTGlzdEVsZW1lbnQoY29u
c3QKIAogUGFzc1JlZlB0cjxIVE1MT0xpc3RFbGVtZW50PiBIVE1MT0xpc3RFbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTE9MaXN0RWxlbWVu
dChvbFRhZywgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE9MaXN0RWxl
bWVudChvbFRhZywgZG9jdW1lbnQpKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MT0xpc3RFbGVtZW50
PiBIVE1MT0xpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTE9MaXN0RWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT0xpc3RFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wgSFRNTE9MaXN0RWxlbWVudDo6bWFw
VG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50
cnkmIHJlc3VsdCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDYwNDE3KQorKysgV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIGlubGluZSBIVE1MT3B0R3JvdXBFbGVt
ZW50OjpIVE1MT3B0R3JvdXAKIAogUGFzc1JlZlB0cjxIVE1MT3B0R3JvdXBFbGVtZW50PiBIVE1M
T3B0R3JvdXBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiB7Ci0gICAgcmV0dXJuIG5l
dyBIVE1MT3B0R3JvdXBFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEhUTUxPcHRHcm91cEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZv
cm0pKTsKIH0KIAogYm9vbCBIVE1MT3B0R3JvdXBFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29u
c3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gNjA0MTcpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MCwxOCArNTAsMTggQEAgSFRNTE9wdGlvbkVsZW1lbnQ6OkhUTUxPcHRpb25FbGVtZW50KGNvbgog
CiBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewotICAgIHJldHVy
biBuZXcgSFRNTE9wdGlvbkVsZW1lbnQob3B0aW9uVGFnLCBkb2N1bWVudCwgZm9ybSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudChvcHRpb25UYWcsIGRvY3VtZW50
LCBmb3JtKSk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IEhUTUxPcHRpb25F
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MT3B0
aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBIVE1MT3B0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwogfQogCiBQ
YXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlRm9y
SlNDb25zdHJ1Y3RvcihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwKICAgICAgICAgYm9vbCBkZWZhdWx0U2VsZWN0ZWQsIGJvb2wgc2Vs
ZWN0ZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxIVE1MT3B0aW9uRWxlbWVu
dD4gZWxlbWVudCA9IG5ldyBIVE1MT3B0aW9uRWxlbWVudChvcHRpb25UYWcsIGRvY3VtZW50KTsK
KyAgICBSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgSFRN
TE9wdGlvbkVsZW1lbnQob3B0aW9uVGFnLCBkb2N1bWVudCkpOwogCiAgICAgUmVmUHRyPFRleHQ+
IHRleHQgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIGRhdGEuaXNOdWxsKCkgPyAiIiA6IGRhdGEp
OwogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDYw
NDE3KQorKysgV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNyArNDEsNyBAQCBpbmxpbmUgSFRNTFBhcmFncmFwaEVsZW1lbnQ6OkhUTUxQ
YXJhZ3JhCiAKIFBhc3NSZWZQdHI8SFRNTFBhcmFncmFwaEVsZW1lbnQ+IEhUTUxQYXJhZ3JhcGhF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTFBhcmFncmFwaEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFBhcmFncmFwaEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogYm9vbCBIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y2hl
Y2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFBhcmFt
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA2MDQxNykKKysrIFdlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBpbmxpbmUgSFRNTFBhcmFtRWxlbWVu
dDo6SFRNTFBhcmFtRWxlbWVuCiAKIFBhc3NSZWZQdHI8SFRNTFBhcmFtRWxlbWVudD4gSFRNTFBh
cmFtRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxQYXJhbUVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFBhcmFtRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkpOwogfQogCiB2b2lkIEhUTUxQYXJhbUVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MUHJlRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcAko
cmV2aXNpb24gNjA0MTcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGlubGluZSBIVE1MUHJlRWxlbWVudDo6SFRNTFBy
ZUVsZW1lbnQoY28KIAogUGFzc1JlZlB0cjxIVE1MUHJlRWxlbWVudD4gSFRNTFByZUVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MUHJlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MUHJlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkp
OwogfQogCiBib29sIEhUTUxQcmVFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdApJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0MTcpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcg
KzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAogSFRNTFByb2dyZXNzRWxlbWVudDo6SFRNTFByb2dyZXNzRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9y
bSkKLSAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0s
IENyZWF0ZUhUTUxFbGVtZW50KQorICAgIDogSFRNTEZvcm1Db250cm9sRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCwgZm9ybSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShwcm9ncmVzc1RhZykp
OwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0MTcpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDcgKzM4LDcgQEAgaW5saW5lIEhUTUxRdW90ZUVsZW1lbnQ6OkhUTUxRdW90ZUVsZW1lbgogCiBQ
YXNzUmVmUHRyPEhUTUxRdW90ZUVsZW1lbnQ+IEhUTUxRdW90ZUVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0
dXJuIG5ldyBIVE1MUXVvdGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEhUTUxRdW90ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAog
dm9pZCBIVE1MUXVvdGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDE3KQorKysgV2ViQ29yZS9odG1s
L0hUTUxTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBp
bmxpbmUgSFRNTFNjcmlwdEVsZW1lbnQ6OkhUTUxTY3JpcHRFbGVtCiAKIFBhc3NSZWZQdHI8SFRN
TFNjcmlwdEVsZW1lbnQ+IEhUTUxTY3JpcHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikK
IHsKLSAgICByZXR1cm4gbmV3IEhUTUxTY3JpcHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBj
cmVhdGVkQnlQYXJzZXIpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFNjcmlwdEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpOwogfQogCiBib29sIEhUTUxT
Y3JpcHRFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpIGNvbnN0CkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDE3KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUs
NyBAQCBIVE1MU2VsZWN0RWxlbWVudDo6SFRNTFNlbGVjdEVsZW1lbnQoY29uCiBQYXNzUmVmUHRy
PEhUTUxTZWxlY3RFbGVtZW50PiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBm
b3JtKQogewogICAgIEFTU0VSVCh0YWdOYW1lLm1hdGNoZXMoc2VsZWN0VGFnKSk7Ci0gICAgcmV0
dXJuIG5ldyBIVE1MU2VsZWN0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MU2VsZWN0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwg
Zm9ybSkpOwogfQogCiBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpjaGVja0RURChjb25zdCBOb2Rl
KiBuZXdDaGlsZCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAkocmV2aXNpb24g
NjA0MTcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw3ICs0OSw3IEBAIGlubGluZSBIVE1MU291cmNlRWxlbWVudDo6SFRNTFNvdXJj
ZUVsZW0KIAogUGFzc1JlZlB0cjxIVE1MU291cmNlRWxlbWVudD4gSFRNTFNvdXJjZUVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MU291cmNlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MU291cmNlRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQogCiB2b2lkIEhUTUxTb3VyY2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVu
dCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQxNykKKysr
IFdlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NyArNDIsNyBAQCBpbmxpbmUgSFRNTFN0eWxlRWxlbWVudDo6SFRNTFN0eWxlRWxlbWVuCiAKIFBh
c3NSZWZQdHI8SFRNTFN0eWxlRWxlbWVudD4gSFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVk
QnlQYXJzZXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MU3R5bGVFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFN0
eWxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyKSk7CiB9CiAKIC8v
IG90aGVyIHN0dWZmLi4uCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDYwNDE3KQorKysgV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBpbmxpbmUgSFRNTFRh
YmxlQ2FwdGlvbkVsZW1lbnQ6OkhUTUxUYWJsCiAKIFBhc3NSZWZQdHI8SFRNTFRhYmxlQ2FwdGlv
bkVsZW1lbnQ+IEhUTUxUYWJsZUNhcHRpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRN
TFRhYmxlQ2FwdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0K
IAogYm9vbCBIVE1MVGFibGVDYXB0aW9uRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0MTcpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Myw3ICs1Myw3IEBAIGlubGluZSBIVE1MVGFibGVDZWxsRWxlbWVudDo6SFRNTFRhYmxlQ2UK
IAogUGFzc1JlZlB0cjxIVE1MVGFibGVDZWxsRWxlbWVudD4gSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MVGFibGVDZWxsRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVGFibGVDZWxsRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCiBpbnQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNlbGxJbmRleCgp
IGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2
MDQxNykKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDQsNyArNDQsNyBAQCBpbmxpbmUgSFRNTFRhYmxlQ29sRWxlbWVudDo6SFRNTFRh
YmxlQ29sCiAKIFBhc3NSZWZQdHI8SFRNTFRhYmxlQ29sRWxlbWVudD4gSFRNTFRhYmxlQ29sRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxUYWJsZUNvbEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFRhYmxlQ29sRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkpOwogfQogCiBIVE1MVGFnU3RhdHVzIEhUTUxUYWJsZUNvbEVsZW1lbnQ6
OmVuZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGFibGVF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDYwNDE3KQorKysgV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMiArNTUsMTIgQEAgSFRNTFRhYmxlRWxlbWVudDo6SFRN
TFRhYmxlRWxlbWVudChjb25zdAogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxU
YWJsZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5l
dyBIVE1MVGFibGVFbGVtZW50KHRhYmxlVGFnLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVE1MVGFibGVFbGVtZW50KHRhYmxlVGFnLCBkb2N1bWVudCkpOwogfQogCiBQYXNz
UmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJu
IG5ldyBIVE1MVGFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEhUTUxUYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogYm9v
bCBIVE1MVGFibGVFbGVtZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkKSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDE3KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niwx
MiArNDYsMTIgQEAgSFRNTFRhYmxlUm93RWxlbWVudDo6SFRNTFRhYmxlUm93RWxlbWVudAogCiBQ
YXNzUmVmUHRyPEhUTUxUYWJsZVJvd0VsZW1lbnQ+IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MVGFibGVSb3dFbGVt
ZW50KHRyVGFnLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVGFibGVS
b3dFbGVtZW50KHRyVGFnLCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZVJv
d0VsZW1lbnQ+IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MVGFi
bGVSb3dFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEhUTUxUYWJsZVJvd0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogYm9vbCBIVE1M
VGFibGVSb3dFbGVtZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24gNjA0MTcpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw3ICs0NCw3IEBAIGlubGluZSBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6SFRNTFRh
YmwKIAogUGFzc1JlZlB0cjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4gSFRNTFRhYmxlU2VjdGlv
bkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MVGFibGVTZWN0aW9uRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVGFibGVTZWN0aW9u
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBib29sIEhUTUxUYWJsZVNlY3Rpb25F
bGVtZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDE3KQorKysgV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIEhU
TUxUZXh0QXJlYUVsZW1lbnQ6OkhUTUxUZXh0QXJlYUVsZW1lbnQKIAogUGFzc1JlZlB0cjxIVE1M
VGV4dEFyZWFFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZv
cm0pCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MVGV4dEFyZWFFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCBmb3JtKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUZXh0QXJlYUVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1M
VGV4dEFyZWFFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdApJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
VGl0bGVFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0MTcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRp
dGxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgaW5saW5lIEhU
TUxUaXRsZUVsZW1lbnQ6OkhUTUxUaXRsZUVsZW1lbgogCiBQYXNzUmVmUHRyPEhUTUxUaXRsZUVs
ZW1lbnQ+IEhUTUxUaXRsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MVGl0bGVFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUaXRs
ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogdm9pZCBIVE1MVGl0bGVFbGVtZW50
OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2MDQxNykKKysrIFdlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzksMTIgKzM5LDEyIEBAIEhUTUxVTGlzdEVsZW1lbnQ6OkhUTUxV
TGlzdEVsZW1lbnQoY29uc3QKIAogUGFzc1JlZlB0cjxIVE1MVUxpc3RFbGVtZW50PiBIVE1MVUxp
c3RFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcg
SFRNTFVMaXN0RWxlbWVudCh1bFRhZywgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTFVMaXN0RWxlbWVudCh1bFRhZywgZG9jdW1lbnQpKTsKIH0KIAogUGFzc1JlZlB0cjxI
VE1MVUxpc3RFbGVtZW50PiBIVE1MVUxpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRN
TFVMaXN0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MVUxpc3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wgSFRNTFVM
aXN0RWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFw
cGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHAJKHJldmlzaW9uIDYwNDE3KQorKysgV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIGlubGluZSBIVE1MVmlkZW9F
bGVtZW50OjpIVE1MVmlkZW9FbGVtZW4KIAogUGFzc1JlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBI
VE1MVmlkZW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTFZpZGVvRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVmlkZW9FbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIApJbmRleDogV2ViQ29yZS9sb2FkZXIvSW1h
Z2VEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDYwNDE4KQorKysgV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogCiBpbmxpbmUg
UGFzc1JlZlB0cjxJbWFnZURvY3VtZW50RWxlbWVudD4gSW1hZ2VEb2N1bWVudEVsZW1lbnQ6OmNy
ZWF0ZShJbWFnZURvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEltYWdlRG9j
dW1lbnRFbGVtZW50KGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlRG9j
dW1lbnRFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKIC8vIC0tLS0tLS0tCkluZGV4OiBXZWJDb3Jl
L21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9N
YXRoTUxFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0MTcpCisrKyBXZWJDb3JlL21hdGhtbC9NYXRo
TUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMjAgKzM4
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsK
ICAgICAKIE1hdGhNTEVsZW1lbnQ6Ok1hdGhNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogU3R5bGVkRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCwgQ3JlYXRlU3R5bGVkRWxlbWVudFplcm9SZWZDb3VudCkKKyAgICA6IFN0eWxl
ZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiB9CiAgICAgCiBQYXNzUmVmUHRyPE1hdGhN
TEVsZW1lbnQ+IE1hdGhNTEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBNYXRoTUxFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hdGhNTEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KLQotUmVuZGVyT2JqZWN0KiBNYXRoTUxFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKiBzdHlsZSkKLXsKLSAg
ICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOwotfQotICAg
IAogICAgIAogfQogCkluZGV4OiBXZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCShyZXZpc2lvbiA2MDQxNykK
KysrIFdlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBt
aWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzAsMTggKzMxLDE2IEBACiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKIGNsYXNzIE1hdGhNTEVsZW1lbnQgOiBwdWJs
aWMgU3R5bGVkRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWF0aE1M
RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7
Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGlzTWF0aE1MRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLSAgICAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotICAgIAorCiBwcm90ZWN0ZWQ6CiAgICAgTWF0
aE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwotICAg
IAorCitwcml2YXRlOiAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTUxFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogfTsKICAgICAKIH0KSW5kZXg6IFdlYkNvcmUvbWF0aG1sL01h
dGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0
aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQxNykKKysr
IFdlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1p
bG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMyw2IEBACiAjaW5jbHVkZSAiTWF0aE1M
TmFtZXMuaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRl
ck1hdGhNTEZyYWN0aW9uLmgiCi0jaW5jbHVkZSAiUmVuZGVyTWF0aE1MTWF0aC5oIgogI2luY2x1
ZGUgIlJlbmRlck1hdGhNTFJvb3QuaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxSb3cuaCIKICNp
bmNsdWRlICJSZW5kZXJNYXRoTUxTcXVhcmVSb290LmgiCkBAIC01MCwxNiArNTAsMTQgQEAgTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6TWF0aE1MSW5saQogCiBQYXNzUmVmUHRyPE1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQ+IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7
Ci0gICAgcmV0dXJuIG5ldyBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBNYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJlbmEsIFJl
bmRlclN0eWxlKiBzdHlsZSkKK1JlbmRlck9iamVjdCogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5
bGUpCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSAwOworICAgIFJlbmRlck9iamVjdCog
b2JqZWN0OwogICAgIGlmIChoYXNMb2NhbE5hbWUoTWF0aE1MTmFtZXM6Om1yb3dUYWcpKQogICAg
ICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxSb3codGhpcyk7Ci0gICAgZWxz
ZSBpZiAoaGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptYXRoVGFnKSkKLSAgICAgICAgb2JqZWN0
ID0gbmV3IChhcmVuYSkgUmVuZGVyTWF0aE1MTWF0aCh0aGlzKTsKICAgICBlbHNlIGlmIChoYXNM
b2NhbE5hbWUoTWF0aE1MTmFtZXM6Om1zdWJUYWcpKQogICAgICAgICBvYmplY3QgPSBuZXcgKGFy
ZW5hKSBSZW5kZXJNYXRoTUxTdWJTdXAodGhpcyk7CiAgICAgZWxzZSBpZiAoaGFzTG9jYWxOYW1l
KE1hdGhNTE5hbWVzOjptc3VwVGFnKSkKQEAgLTgzLDkgKzgxLDcgQEAgUmVuZGVyT2JqZWN0KiBN
YXRoTUxJbmxpbmVDb250YWluZXJFbGVtZQogICAgIG9iamVjdC0+c2V0U3R5bGUoc3R5bGUpOwog
ICAgIHJldHVybiBvYmplY3Q7CiB9Ci0gICAgCi0gICAgCisKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShNQVRITUwpCi0KSW5kZXg6IFdlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50LmgJKHJldmlzaW9uIDYwNDE3KQorKysgV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5s
aW5lQ29udGFpbmVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSku
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
NSwxMSArMzYsMTEgQEAgY2xhc3MgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCA6IHB1Ygog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwogCi0g
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKLQogcHJvdGVjdGVkOgogICAgIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAorcHJpdmF0ZToK
KyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOwogfTsKICAgICAKIH0KSW5kZXg6IFdlYkNvcmUvbWF0aG1sL01hdGhNTE1h
dGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxl
bWVudC5jcHAJKHJldmlzaW9uIDYwNDE3KQorKysgV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwyMSArMzAsMjUg
QEAKIAogI2luY2x1ZGUgIk1hdGhNTE1hdGhFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJNYXRoTUxO
YW1lcy5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhN
TE1hdGguaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotdXNpbmcgbmFtZXNwYWNlIE1h
dGhNTE5hbWVzOwogCi1NYXRoTUxNYXRoRWxlbWVudDo6TWF0aE1MTWF0aEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQoraW5saW5lIE1hdGhN
TE1hdGhFbGVtZW50OjpNYXRoTUxNYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogfQogCiBQYXNzUmVmUHRyPE1hdGhNTE1hdGhFbGVt
ZW50PiBNYXRoTUxNYXRoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IE1hdGhNTE1hdGhFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hdGhNTE1h
dGhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Cit9CisKK1JlbmRlck9iamVjdCogTWF0aE1M
TWF0aEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqIHN0eWxlKQoreworICAgIFJlbmRlck1hdGhNTE1hdGgqIHJlbmRlcmVyID0gbmV3IChhcmVu
YSkgUmVuZGVyTWF0aE1MTWF0aCh0aGlzKTsKKyAgICByZW5kZXJlci0+c2V0U3R5bGUoc3R5bGUp
OworICAgIHJldHVybiByZW5kZXJlcjsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9tYXRobWwvTWF0
aE1MTWF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRo
RWxlbWVudC5oCShyZXZpc2lvbiA2MDQxNykKKysrIFdlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDE0ICszMSwxNSBA
QAogI2luY2x1ZGUgIk1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotICAgIAorCiBjbGFzcyBNYXRoTUxNYXRoRWxlbWVudCA6IHB1YmxpYyBNYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNYXRoTUxNYXRoRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50Kik7Ci0gICAgCi1wcm90ZWN0ZWQ6CisKK3ByaXZhdGU6CiAgICAgTWF0aE1MTWF0
aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKLSAgICAK
KworICAgIHZpcnR1YWwgY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OwogfTsKICAgICAKIH0KSW5kZXg6IFdlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDYwNDE3KQorKysgV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBB
bGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwxNCArMzcsMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogCi1NYXRoTUxU
ZXh0RWxlbWVudDo6TWF0aE1MVGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQoraW5saW5lIE1hdGhNTFRleHRFbGVtZW50OjpNYXRoTUxU
ZXh0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgOiBNYXRoTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogfQogCiBQYXNz
UmVmUHRyPE1hdGhNTFRleHRFbGVtZW50PiBNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1
cm4gbmV3IE1hdGhNTFRleHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1hdGhNTFRleHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAK
IFJlbmRlck9iamVjdCogTWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQpAQCAtNTQsMTEgKzU1LDkgQEAgUmVuZGVy
T2JqZWN0KiBNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlUgogICAgICAgICByZXR1cm4gb2JqZWN0
OwogICAgIH0KIAotICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCh0aGlzLCBz
dHlsZSk7CisgICAgcmV0dXJuIE1hdGhNTEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKGFyZW5hLCBz
dHlsZSk7CiB9CiAKLSAgICAKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCi0KSW5kZXg6
IFdlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaAkocmV2aXNpb24gNjA0MTcpCisrKyBXZWJDb3Jl
L21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tp
LmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNSwxMSArMzYsMTAgQEAgY2xhc3MgTWF0aE1MVGV4dEVsZW1lbnQgOiBwdWJsaWMgTWF0
aE1MRQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1hdGhNTFRleHRFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAotICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKik7Ci0gICAgCi1wcm90ZWN0ZWQ6Citwcml2YXRlOgogICAgIE1hdGhNTFRleHRFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7Ci0gICAgCisKKyAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogfTsKICAgICAKIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDYwNDE4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIGlu
bGluZSBNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVudDo6TWUKIAogUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xTaGFkb3dSb290RWxlbWVudD4gTWVkaWFDb250cm9sU2hhZG93Um9vdEVsZW1lbnQ6
OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCiB7Ci0gICAgUmVmUHRyPE1l
ZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVtZW50PiBlbGVtZW50ID0gbmV3IE1lZGlhQ29udHJvbFNo
YWRvd1Jvb3RFbGVtZW50KG1lZGlhRWxlbWVudCk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFNo
YWRvd1Jvb3RFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFNoYWRv
d1Jvb3RFbGVtZW50KG1lZGlhRWxlbWVudCkpOwogCiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBy
b290U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAgICAgcm9vdFN0eWxlLT5pbmhlcml0
RnJvbShtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCkpOwpAQCAtMTMwLDcgKzEzMCw3
IEBAIE1lZGlhQ29udHJvbEVsZW1lbnQ6Ok1lZGlhQ29udHJvbEVsZW1lbnQKIAogUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xFbGVtZW50PiBNZWRpYUNvbnRyb2xFbGVtZW50OjpjcmVhdGUoSFRNTE1l
ZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9TdHlsZUlkKQogewotICAg
IHJldHVybiBuZXcgTWVkaWFDb250cm9sRWxlbWVudChtZWRpYUVsZW1lbnQsIHBzZXVkb1N0eWxl
SWQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRWxlbWVudChtZWRpYUVs
ZW1lbnQsIHBzZXVkb1N0eWxlSWQpKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xFbGVtZW50Ojph
dHRhY2hUb1BhcmVudChFbGVtZW50KiBwYXJlbnQpCkBAIC0yMjIsNyArMjIyLDcgQEAgaW5saW5l
IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbQogCiBQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sVGltZWxpbmVDb250YWlu
ZXJFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQogewotICAg
IHJldHVybiBuZXcgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KG1lZGlhRWxl
bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRh
aW5lckVsZW1lbnQobWVkaWFFbGVtZW50KSk7CiB9CiAKIGJvb2wgTWVkaWFDb250cm9sVGltZWxp
bmVDb250YWluZXJFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkK
QEAgLTI1Miw3ICsyNTIsNyBAQCBpbmxpbmUgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFp
bmVyCiAKIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVu
dD4gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKEhUTUxN
ZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKIHsKLSAgICByZXR1cm4gbmV3IE1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQobWVkaWFFbGVtZW50KTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQobWVk
aWFFbGVtZW50KSk7CiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IE1lZGlhQ29udHJvbFZv
bHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnN0eWxlRm9yRWxlbWVudCgpCkBAIC0yOTgsNyAr
Mjk4LDcgQEAgaW5saW5lIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50OgogCiBQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xTdGF0
dXNEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkK
IHsKLSAgICByZXR1cm4gbmV3IE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50KG1lZGlh
RWxlbWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xTdGF0dXNEaXNw
bGF5RWxlbWVudChtZWRpYUVsZW1lbnQpKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xTdGF0dXNE
aXNwbGF5RWxlbWVudDo6dXBkYXRlKCkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBpbmxpbmUgTWVkaWFD
b250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6Ok1lCiAKIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sTXV0
ZUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRN
TE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQogewotICAgIHJldHVybiBuZXcgTWVkaWFDb250
cm9sTXV0ZUJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkpOwogfQogCiB2
b2lkIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVudCkKQEAgLTUwOCw3ICs1MDgsNyBAQCBpbmxpbmUgTWVkaWFDb250cm9sUGxheUJ1
dHRvbkVsZW1lbnQ6Ok1lCiAKIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1l
bnQ+IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVu
dCogbWVkaWFFbGVtZW50KQogewotICAgIHJldHVybiBuZXcgTWVkaWFDb250cm9sUGxheUJ1dHRv
bkVsZW1lbnQobWVkaWFFbGVtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29u
dHJvbFBsYXlCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkpOwogfQogCiB2b2lkIE1lZGlhQ29u
dHJvbFBsYXlCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkK
QEAgLTUzNyw3ICs1MzcsNyBAQCBpbmxpbmUgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6
Ok1lCiAKIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ+IE1lZGlhQ29u
dHJvbFNlZWtCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVt
ZW50LCBQc2V1ZG9JZCBwc2V1ZG9TdHlsZUlkKQogewotICAgIHJldHVybiBuZXcgTWVkaWFDb250
cm9sU2Vla0J1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50LCBwc2V1ZG9TdHlsZUlkKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50KG1lZGlhRWxl
bWVudCwgcHNldWRvU3R5bGVJZCkpOwogfQogCiBpbmxpbmUgYm9vbCBNZWRpYUNvbnRyb2xTZWVr
QnV0dG9uRWxlbWVudDo6aXNGb3J3YXJkQnV0dG9uKCkgY29uc3QKQEAgLTYwMSw3ICs2MDEsNyBA
QCBpbmxpbmUgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6CiAKIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sUmV3aW5kQnV0dG9u
RWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKIHsKLSAgICBy
ZXR1cm4gbmV3IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQo
bWVkaWFFbGVtZW50KSk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkBAIC02MjMsNyArNjIzLDcgQEAg
aW5saW5lIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0bwogCiBQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xSZXR1
cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCkKIHsKLSAgICByZXR1cm4gbmV3IE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVC
dXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRp
YUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQpKTsKIH0K
IAogdm9pZCBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkBAIC02NDUsNyArNjQ1LDcgQEAgaW5saW5lIE1l
ZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQgogCiBQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sVG9nZ2xlQ2xv
c2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFF
bGVtZW50KQogewotICAgIHJldHVybiBuZXcgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlv
bnNCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50
KSk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKQEAgLTY3Miw3ICs2NzIsNyBA
QCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6Ok1lZGlhQ29udHJvCiAKIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6
OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5l
dyBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQobWVkaWFFbGVtZW50KTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudChtZWRpYUVsZW1lbnQpKTsK
IH0KIAogdm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqIGV2ZW50KQpAQCAtNzI1LDcgKzcyNSw3IEBAIGlubGluZSBNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJFbGVtZW50OjoKIAogUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoSFRNTE1l
ZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQogewotICAgIHJldHVybiBuZXcgTWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyRWxlbWVudChtZWRpYUVsZW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudChtZWRpYUVsZW1lbnQpKTsKIH0KIAog
dm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldmVudCkKQEAgLTc2Nyw3ICs3NjcsNyBAQCBpbmxpbmUgTWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lCiAKIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUo
SFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQogewotICAgIHJldHVybiBuZXcgTWVkaWFD
b250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KG1lZGlhRWxl
bWVudCkpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKQEAgLTc5MCw3ICs3OTAsNyBAQCBpbmxp
bmUgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OjpNCiAKIFBhc3NSZWZQdHI8TWVkaWFD
b250cm9sVGltZURpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ6
OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIFBzZXVkb0lkIHBzZXVkb1N0
eWxlSWQpCiB7Ci0gICAgcmV0dXJuIG5ldyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQo
bWVkaWFFbGVtZW50LCBwc2V1ZG9TdHlsZUlkKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1l
ZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChtZWRpYUVsZW1lbnQsIHBzZXVkb1N0eWxlSWQp
KTsKIH0KIAogUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gTWVkaWFDb250cm9sVGltZURpc3BsYXlF
bGVtZW50OjpzdHlsZUZvckVsZW1lbnQoKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAkocmV2aXNpb24gNjA0MTgpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcx
LDcgKzcxLDcgQEAgaW5saW5lIFNoYWRvd0lucHV0RWxlbWVudDo6U2hhZG93SW5wdXRFbAogCiBp
bmxpbmUgUGFzc1JlZlB0cjxTaGFkb3dJbnB1dEVsZW1lbnQ+IFNoYWRvd0lucHV0RWxlbWVudDo6
Y3JlYXRlKE5vZGUqIHNoYWRvd1BhcmVudCkKIHsKLSAgICByZXR1cm4gbmV3IFNoYWRvd0lucHV0
RWxlbWVudChzaGFkb3dQYXJlbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhZG93SW5w
dXRFbGVtZW50KHNoYWRvd1BhcmVudCkpOwogfQogCiBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6
UmVuZGVyRmlsZVVwbG9hZENvbnRyb2woSFRNTElucHV0RWxlbWVudCogaW5wdXQpCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCShyZXZpc2lvbiA2MDQxOCkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyAr
NTgsNyBAQCBpbmxpbmUgUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQ6OlByb2dyZXNzVmFsCiAKIGlubGlu
ZSBQYXNzUmVmUHRyPFByb2dyZXNzVmFsdWVFbGVtZW50PiBQcm9ncmVzc1ZhbHVlRWxlbWVudDo6
Y3JlYXRlKE5vZGUqIHNoYWRvd1BhcmVudCkKIHsKLSAgICByZXR1cm4gbmV3IFByb2dyZXNzVmFs
dWVFbGVtZW50KHNoYWRvd1BhcmVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcm9ncmVz
c1ZhbHVlRWxlbWVudChzaGFkb3dQYXJlbnQpKTsKIH0KIAogUmVuZGVyUHJvZ3Jlc3M6OlJlbmRl
clByb2dyZXNzKEhUTUxQcm9ncmVzc0VsZW1lbnQqIGVsZW1lbnQpCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNsaWRlci5jcHAJKHJldmlzaW9uIDYwNDE4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2xpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBpbmxpbmUg
U2xpZGVyVGh1bWJFbGVtZW50OjpTbGlkZXJUaHVtYkVsCiAKIGlubGluZSBQYXNzUmVmUHRyPFNs
aWRlclRodW1iRWxlbWVudD4gU2xpZGVyVGh1bWJFbGVtZW50OjpjcmVhdGUoTm9kZSogc2hhZG93
UGFyZW50KQogewotICAgIHJldHVybiBuZXcgU2xpZGVyVGh1bWJFbGVtZW50KHNoYWRvd1BhcmVu
dCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTbGlkZXJUaHVtYkVsZW1lbnQoc2hhZG93UGFy
ZW50KSk7CiB9CiAKIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldmVudCkKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcAkocmV2aXNpb24gNjA0MTgpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3
IEBAIFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpUZXh0Q29udHJvbElubmUKIAogUGFzc1JlZlB0
cjxUZXh0Q29udHJvbElubmVyRWxlbWVudD4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmNyZWF0
ZShOb2RlKiBzaGFkb3dQYXJlbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBUZXh0Q29udHJvbElubmVy
RWxlbWVudChzaGFkb3dQYXJlbnQtPmRvY3VtZW50KCksIHNoYWRvd1BhcmVudCk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBUZXh0Q29udHJvbElubmVyRWxlbWVudChzaGFkb3dQYXJlbnQtPmRv
Y3VtZW50KCksIHNoYWRvd1BhcmVudCkpOwogfQogCiB2b2lkIFRleHRDb250cm9sSW5uZXJFbGVt
ZW50OjphdHRhY2hJbm5lckVsZW1lbnQoTm9kZSogcGFyZW50LCBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBzdHlsZSwgUmVuZGVyQXJlbmEqIGFyZW5hKQpAQCAtMTI2LDcgKzEyNiw3IEBAIGlubGlu
ZSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OlRleHQKIAogUGFzc1JlZlB0cjxUZXh0Q29u
dHJvbElubmVyVGV4dEVsZW1lbnQ+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogc2hhZG93UGFyZW50KQogewotICAgIHJldHVybiBu
ZXcgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KGRvY3VtZW50LCBzaGFkb3dQYXJlbnQpOwor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KGRvY3Vt
ZW50LCBzaGFkb3dQYXJlbnQpKTsKIH0KIAogdm9pZCBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQpAQCAtMTYyLDcgKzE2Miw3IEBA
IGlubGluZSBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjoKIAogUGFzc1JlZlB0cjxT
ZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50PiBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25F
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgU2Vh
cmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudChkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50KGRvY3VtZW50KSk7CiB9CiAK
IHZvaWQgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCkBAIC0xOTQsNyArMTk0LDcgQEAgaW5saW5lIFNlYXJjaEZpZWxkQ2Fu
Y2VsQnV0dG9uRWxlbWVudDo6UwogCiBQYXNzUmVmUHRyPFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
RWxlbWVudD4gU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVt
ZW50KGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uRWxlbWVudChkb2N1bWVudCkpOwogfQogCiB2b2lkIFNlYXJjaEZpZWxkQ2FuY2VsQnV0
dG9uRWxlbWVudDo6ZGV0YWNoKCkKQEAgLTI1MSw3ICsyNTEsNyBAQCBpbmxpbmUgU3BpbkJ1dHRv
bkVsZW1lbnQ6OlNwaW5CdXR0b25FbGVtCiAKIFBhc3NSZWZQdHI8U3BpbkJ1dHRvbkVsZW1lbnQ+
IFNwaW5CdXR0b25FbGVtZW50OjpjcmVhdGUoTm9kZSogc2hhZG93UGFyZW50KQogewotICAgIHJl
dHVybiBuZXcgU3BpbkJ1dHRvbkVsZW1lbnQoc2hhZG93UGFyZW50KTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNwaW5CdXR0b25FbGVtZW50KHNoYWRvd1BhcmVudCkpOwogfQogCiB2b2lkIFNw
aW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKSW5kZXg6
IFdlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFiYXNlSW1wbC5jcHAJKHJldmlzaW9uIDYwNDE3KQor
KysgV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRhYmFzZUltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbmRl
eGVkRGF0YWJhc2VJbXBsPiBJbmRleGVkRGF0YWJhc2VJbXBsOjpjcmVhdGUoKQogewotICAgIHJl
dHVybiBuZXcgSW5kZXhlZERhdGFiYXNlSW1wbCgpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SW5kZXhlZERhdGFiYXNlSW1wbCk7CiB9CiAKIEluZGV4ZWREYXRhYmFzZUltcGw6OkluZGV4ZWRE
YXRhYmFzZUltcGwoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57486</attachid>
            <date>2010-05-31 11:31:02 -0700</date>
            <delta_ts>2010-06-13 12:02:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39941-20100531113100.patch</filename>
            <type>text/plain</type>
            <size>140919</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwNDQ0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDUtMzEgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIERlcGxveSBhZG9wdFJlZiBpbiBtb3JlIHBsYWNlcywgaW5jbHVkaW5n
IGFsbCBIVE1MIGFuZCBNYXRoTUwgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTQxCisKKyAgICAgICAgKiB3dGYvVGhyZWFkU2FmZVNo
YXJlZC5oOiBNYWRlIHRoZSBjb25zdHJ1Y3RvciBwcm90ZWN0ZWQgYW5kIHJlbW92ZWQgdGhlCisg
ICAgICAgIHVubmVlZGVkIHN1cHBvcnQgZm9yIGluaXRpYWwgcmVmZXJlbmNlIGNvdW50cyBvdGhl
ciB0aGFuIDEuCisKIDIwMTAtMDUtMzAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93
dGYvVGhyZWFkU2FmZVNoYXJlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRTYWZlU2hhcmVkLmgJKHJldmlzaW9uIDYwNDQ0KQorKysgSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZFNhZmVTaGFyZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDE2ICsxMjksMTYgQEAg
cHJpdmF0ZToKIAogdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgVGhyZWFkU2FmZVNoYXJlZCA6IHB1
YmxpYyBUaHJlYWRTYWZlU2hhcmVkQmFzZSB7CiBwdWJsaWM6Ci0gICAgVGhyZWFkU2FmZVNoYXJl
ZChpbnQgaW5pdGlhbFJlZkNvdW50ID0gMSkKLSAgICAgICAgOiBUaHJlYWRTYWZlU2hhcmVkQmFz
ZShpbml0aWFsUmVmQ291bnQpCi0gICAgewotICAgIH0KLQogICAgIHZvaWQgZGVyZWYoKQogICAg
IHsKICAgICAgICAgaWYgKGRlcmVmQmFzZSgpKQogICAgICAgICAgICAgZGVsZXRlIHN0YXRpY19j
YXN0PFQqPih0aGlzKTsKICAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBUaHJlYWRTYWZlU2hhcmVk
KCkKKyAgICB7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBXZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNjA0
NDYpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDM4NyBA
QAogMjAxMC0wNS0zMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVwbG95IGFkb3B0UmVmIGlu
IG1vcmUgcGxhY2VzLCBpbmNsdWRpbmcgYWxsIEhUTUwgYW5kIE1hdGhNTCBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5NDEKKworICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3Bh
dGNoQXR0clJlbW92YWxFdmVudCk6IFVzZSBjcmVhdGUgaW5zdGVhZCBvZiBuZXcKKyAgICAgICAg
aW4gY29tbWVudGVkLW91dCBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0
Y2hBdHRyQWRkaXRpb25FdmVudCk6IERpdHRvLgorCisgICAgICAgICogZG9tL05vZGUuaDogUmVt
b3ZlZCBub3ctdW51c2VkIENyZWF0ZUVsZW1lbnRaZXJvUmVmQ291bnQgYW5kCisgICAgICAgIENy
ZWF0ZUhUTUxFbGVtZW50WmVyb1JlZkNvdW50LgorCisgICAgICAgICogZWRpdGluZy9JbnNlcnRM
aXN0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0Q29tbWFuZDo6aW5z
ZXJ0TGlzdCk6IFVzZSBjcmVhdGUgaW5zdGVhZCBvZiBuZXcsIGZpeGluZworICAgICAgICBhIHN0
b3JhZ2UgbGVhay4KKworICAgICAgICAqIGVkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFu
ZDo6aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwpOgorICAgICAgICBSZW1vdmVkICJXaXRoVHlw
ZSIgZnJvbSBmdW5jdGlvbiBuYW1lLiBVc2UgY3JlYXRlIGluc3RlYWQgb2YgbmV3LCBmaXhpbmcg
YQorICAgICAgICBzdG9yYWdlIGxlYWsuCisgICAgICAgIChXZWJDb3JlOjpEZWNyZWFzZVNlbGVj
dGlvbkxpc3RMZXZlbENvbW1hbmQ6OmRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKTogVXNlCisg
ICAgICAgIGNyZWF0ZSBpbnN0ZWFkIG9mIG5ldywgZml4aW5nIGEgc3RvcmFnZSBsZWFrLgorCisg
ICAgICAgICogc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkluZGV4ZWREYXRhYmFzZUltcGw6OmNyZWF0ZSk6IFVzZSBhZG9wdFJlZiwgZml4aW5nIGEg
c3RvcmFnZSBsZWFrLgorCisgICAgICAgICogZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2
ZWwuaDogQWRkZWQgY3JlYXRlIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGh0bWwvSFRNTEFuY2hv
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OkhUTUxB
bmNob3JFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OkhUTUxGcmFtZU93bmVy
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OkhUTUxNZXRlckVsZW1lbnQpOgorICAgICAgICAq
IGh0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJv
Z3Jlc3NFbGVtZW50OjpIVE1MUHJvZ3Jlc3NFbGVtZW50KToKKyAgICAgICAgUmVtb3ZlZCBjb2Rl
IHRvIGV4cGxpY2l0bHkgcGFzcyBDcmVhdGVIVE1MRWxlbWVudCBjb25zdHJ1Y3Rpb24gdHlwZSBz
aW5jZSB0aGF0J3MKKyAgICAgICAgbm93IHRoZSB0eXBlIHVzZWQgZm9yIGFsbCBIVE1MIGVsZW1l
bnRzLgorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxGb3JtQ29udHJvbEVsZW1l
bnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICBS
ZW1vdmVkIGNvbnN0cnVjdGlvbiB0eXBlIGFyZ3VtZW50LCBzaW5jZSBDcmVhdGVIVE1MRWxlbWVu
dCBpcyBub3cgdGhlIHR5cGUgdXNlZAorICAgICAgICBmb3IgYWxsIEhUTUwgZWxlbWVudHMuCisK
KyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
YXRoTUxFbGVtZW50OjpNYXRoTUxFbGVtZW50KTogUmVtb3ZlZCBjb25zdHJ1Y3Rpb24gdHlwZSBv
ZgorICAgICAgICBDcmVhdGVTdHlsZWRFbGVtZW50WmVyb1JlZkNvdW50IHNvIHdlJ2xsIHVzZSB0
aGUgZGVmYXVsdCBjb25zdHJ1Y3Rpb24KKyAgICAgICAgdHlwZSwgQ3JlYXRlU3R5bGVkRWxlbWVu
dC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OmNyZWF0ZSk6IFVzZSBhZG9wdFJl
Zi4KKworICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50Lmg6IE1hZGUgaXNNYXRoTUxFbGVt
ZW50IGZ1bmN0aW9uIHByaXZhdGUgYW5kCisgICAgICAgIHJlbW92ZWQgdW5uZWVkZWQgb3ZlcnJp
ZGUgb2YgY3JlYXRlUmVuZGVyZXIsIGJlY2F1c2UgaXQgZGlkIHRoZQorICAgICAgICBzYW1lIHRo
aW5nIGFzIHRoZSBiYXNlIGNsYXNzJ3MgY3JlYXRlUmVuZGVyZXIgZnVuY3Rpb24uCisKKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUpOiBVc2UgYWRvcHRS
ZWYuCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcik6CisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcmlseSBpbml0aWFsaXphdGlv
biBvZiBsb2NhbCB2YXJpYWJsZSBhbmQgcmVtb3ZlZCB0aGUKKyAgICAgICAgY2FzZSBmb3IgbWF0
aFRhZywgc2luY2UgdGhhdCB1c2VzIGEgZGlmZmVyZW50IGRlcml2ZWQgY2xhc3MuCisKKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oOiBNYWRlIGNyZWF0ZVJl
bmRlcnJlciBvdmVycmlkZQorICAgICAgICBwcml2YXRlLgorCisgICAgICAgICogbWF0aG1sL01h
dGhNTE1hdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50
OjpNYXRoTUxNYXRoRWxlbWVudCk6IE1hcmtlZCBpbmxpbmUgc2luY2UKKyAgICAgICAgaXQgaXMg
Y2FsbGVkIGluIG9ubHkgb25lIHBsYWNlLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVs
ZW1lbnQ6OmNyZWF0ZSk6IFVzZSBhZG9wdFJlZi4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1h
dGhFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6IEFkZGVkLiBDcmVhdGVzIGEKKyAgICAgICAgUmVu
ZGVyTWF0aE1MTWF0aCBvYmplY3QuCisKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWF0aEVsZW1l
bnQuaDogTWFkZSBjb25zdHJ1Y3RvciBwcml2YXRlIGFuZCBhZGRlZCBhCisgICAgICAgIHByaXZh
dGUgb3ZlcnJpZGUgb2YgY3JlYXRlUmVuZGVyZXIuCisKKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVGV4dEVsZW1lbnQ6Ok1h
dGhNTFRleHRFbGVtZW50KTogTWFya2VkIGlubGluZSBzaW5jZQorICAgICAgICBpdCBpcyBjYWxs
ZWQgaW4gb25seSBvbmUgcGxhY2UuCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0RWxlbWVu
dDo6Y3JlYXRlKTogVXNlIGFkb3B0UmVmLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVGV4dEVs
ZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKTogQ2hhbmdlZCB0byBjYWxsIHRocm91Z2gKKyAgICAgICAg
dG8gdGhlIGJhc2UgY2xhc3MgaW5zdGVhZCBvZiBjYWxsaW5nIFJlbmRlck9iamVjdDo6Y3JlYXRl
T2JqZWN0IGRpcmVjdGx5LgorCisgICAgICAgICogbWF0aG1sL01hdGhNTFRleHRFbGVtZW50Lmg6
IE1hZGUgdGhlIGNvbnN0cnVjdG9yIGFuZCBjcmVhdGVSZW5kZXJlcgorICAgICAgICBmdW5jdGlv
biBwcml2YXRlLgorCisgICAgICAgICogZWRpdGluZy9EZWxldGVCdXR0b24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEF1
ZGlvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXVkaW9FbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25z
dHJ1Y3Rvcik6CisgICAgICAgICogaHRtbC9IVE1MQlJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxCUkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MQmFzZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJhc2VFbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTEJhc2VGb250RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQmFzZUZvbnRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEJsb2Nr
cXVvdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCbG9ja3F1b3RlRWxlbWVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1M
QnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRN
TERMaXN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRExpc3RFbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTERhdGFHcmlkQ2VsbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERhdGFHcmlkQ2VsbEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogaHRtbC9IVE1MRGF0YUdyaWRDb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEYXRhR3JpZENvbEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRGF0YUdy
aWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEYXRhR3JpZEVsZW1lbnQ6OmNy
ZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRGF0YUdyaWRSb3dFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxEYXRhR3JpZFJvd0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICog
aHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEYXRh
TGlzdEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRGl2RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbGVtZW50OjpIVE1MRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmNyZWF0ZSk6
CisgICAgICAgICogaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvbnRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZyYW1lU2V0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxIUkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEhSRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAg
KiBodG1sL0hUTUxIZWFkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSGVhZEVs
ZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEhlYWRpbmdFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAq
IGh0bWwvSFRNTEh0bWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxIdG1sRWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IpOgorICAgICAgICAq
IGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTElzSW5kZXhFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJc0luZGV4RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAg
KiBodG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxLZXln
ZW5FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTExJRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTElFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwv
SFRNTExhYmVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGFiZWxFbGVtZW50
OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTExlZ2VuZEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1hcEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWFycXVl
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcnF1ZWVFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1lbnVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZW51RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUVsZW1lbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MTW9kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TW9kRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5vU2NyaXB0RWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE9MaXN0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlv
bkVsZW1lbnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IpOgorICAgICAgICAqIGh0bWwvSFRNTFBh
cmFncmFwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcmFncmFwaEVsZW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQYXJhbUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9I
VE1MUHJlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJlRWxlbWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxRdW90ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFF1b3RlRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3Jp
cHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MU291
cmNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlRWxlbWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJs
ZUNhcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNhcHRpb25F
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUYWJsZUNvbEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAg
KiBodG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxl
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFVMaXN0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sU2hhZG93Um9vdEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVC
dXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVG9n
Z2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dJbnB1dEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclByb2dyZXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVmFsdWVF
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIFVzZSBhZG9wdFJlZi4K
KworMjAxMC0wNS0zMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydGx5IGRvbmUgc3VwcG9y
dCBmb3IgYWx0ZXJuYXRlIElEIGF0dHJpYnV0ZXMgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NjkyCisKKyAgICAgICAg
UmVtb3ZlZCB0aGUgaW5jbHVkZSBvZiAiSFRNTE5hbWVzLmgiIGZyb20gIkVsZW1lbnQuaCIuIFRo
aXMgcHJldmVudHMKKyAgICAgICAgbmVhci13b3JsZC1yZWJ1aWxkcyBldmVyeSB0aW1lIHlvdSBj
aGFuZ2UgSFRNTFRhZ05hbWVzLmluLgorCisgICAgICAgIFJlbmFtZWQgdGhlIGdldElEQXR0cmli
dXRlIGZ1bmN0aW9uIGluIHRoZSBFbGVtZW50IGNsYXNzIHRvCisgICAgICAgIGlkRm9yU3R5bGVS
ZXNvbHV0aW9uLCBzaW5jZSBpdCByZXR1cm5zIGEgdmFsdWUgb2YgdGhlIGlkIGF0dHJpYnV0ZQor
ICAgICAgICB0aGF0IGhhcyBiZWVuIGxvd2VyY2FzZWQgYXMgYXBwcm9wcmlhdGUgZm9yIHN0eWxl
IG1hdGNoaW5nLCBub3QgdGhlCisgICAgICAgIGFjdHVhbCB2YWx1ZSBvZiB0aGUgYXR0cmlidXRl
LiBXaXRoIHRoZSBvbGQgbmFtZSBpdCB3YXMgZWFzeSB0bworICAgICAgICBtaXN1c2UgaXQgaW4g
bm9uLXN0eWxlIGNvbnRleHRzLgorCisgICAgICAgIEdvdCByaWQgb2YgdGhlIGlkQXR0cmlidXRl
TmFtZSBmdW5jdGlvbiBvbiBFbGVtZW50LCBzaW5jZSBpdCBpcworICAgICAgICBlYXN5IHRvIHVz
ZSBpdCB3cm9uZy4gUmVwbGFjZSBpdCB3aXRoIGlzSWRBdHRyaWJ1dGVOYW1lLCBnZXRJZEF0dHJp
YnV0ZSwKKyAgICAgICAgYW5kIHNldElkQXR0cmlidXRlIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGEg
Z29vZCBmaXQgZm9yIHRoZSBuZWVkcyBvZgorICAgICAgICBtb3N0IGNhbGwgc2l0ZXMgdGhhdCB3
ZXJlIGRlYWxpbmcgd2l0aCB0aGUgaWQgYXR0cmlidXRlLgorCisgICAgICAgIEFkZGVkIGFuIGlk
QXR0cmlidXRlTmFtZSBmdW5jdGlvbiB0byBEb2N1bWVudC4gVGhpcyBpcyBmb3IgYSBmdXR1cmUK
KyAgICAgICAgd2hlcmUgYSBkb2N1bWVudCBjYW4gaGF2ZSBhIGN1c3RvbSBpZCBhdHRyaWJ1dGUg
bmFtZSBzcGVjaWZpZWQgaW4gaXRzCisgICAgICAgIGRvY3R5cGUuIEl0J3MgcG9zc2libGUgdGhp
cyB3aWxsIGJlIGluc3VmZmljaWVudCBiZWNhdXNlIHRoZSBzYW1lCisgICAgICAgIGRvY3VtZW50
IG1pZ2h0IGhhdmUgWEhUTUwgb3IgU1ZHIGVsZW1lbnRzIGluIGl0LCBhbmQgaXQncyBwb3NzaWJs
ZQorICAgICAgICB0aGF0IG9uIHRob3NlIGVsZW1lbnRzIHdlIHdpbGwgd2FudCB0aGUgYXR0cmli
dXRlIG5hbWVkICJpZCIgd2l0aAorICAgICAgICBubyBuYW1lc3BhY2UgdG8gc3RpbGwgd29yay4g
V2UgY2FuIGRlYWwgd2l0aCB0aGF0IHdoZW4gd2UgaW1wbGVtZW50CisgICAgICAgIHRoZSBhY3R1
YWwgZmVhdHVyZSwgdGhvdWdoLiBGb3Igbm93LCBpdCBzZWVtcyBPSyB0byBmZXRjaCB0aGUgbmFt
ZQorICAgICAgICBvZiB0aGUgaWQgYXR0cmlidXRlIGZyb20gdGhlIGRvY3VtZW50LgorCisgICAg
ICAgICogZG9tL0R5bmFtaWNOb2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWlj
Tm9kZUxpc3Q6Oml0ZW1XaXRoTmFtZSk6CisgICAgICAgICogZG9tL1N0YXRpY05vZGVMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY05vZGVMaXN0OjppdGVtV2l0aE5hbWUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OlJlbmRlclNWR1Jlc291cmNlQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjpp
ZENoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmhhbmRsZURlZXBVc2VSZWZlcmVuY2luZyk6CisgICAgICAg
ICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTTUlMVGltZUNvbnRhaW5lcjo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIFVzZSB0aGUg
bmV3IGlkRm9yU3R5bGVSZXNvbHV0aW9uIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUgbmV3IG5hbWUg
b2YKKyAgICAgICAgdGhlIGdldElEQXR0cmlidXRlIGZ1bmN0aW9uLiBUaGVyZSdzIGEgZ29vZCBj
aGFuY2UgdGhlc2UgY2FsbCBzaXRlcyBhcmUKKyAgICAgICAgaW5jb3JyZWN0LCB3aGljaCBpcyBz
b21ldGhpbmcgd2Ugc2hvdWxkIGludmVzdGlnYXRlIGxhdGVyLCBzbyB0aGVyZSdzCisgICAgICAg
IGEgRklYTUUgYXQgZWFjaCBjYWxsIHNpdGUuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KTogSW5pdGlhbGl6ZSBtX2lk
QXR0cmlidXRlTmFtZSB0byB0aGUKKyAgICAgICAgc3RhbmRhcmQgaWQgYXR0cmlidXRlIGZyb20g
SFRNTC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpnZXRFbGVtZW50QnlJZCk6IFVzZSBF
bGVtZW50OjpnZXRJZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDogQWRkZWQg
RG9jdW1lbnQ6OmlkQXR0cmlidXRlTmFtZS4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZSk6IFVzZSBEb2N1bWVudDo6
aWRBdHRyaWJ1dGVOYW1lLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRl
TWFwKTogVXNlIEVsZW1lbnQ6OmlzSWRBdHRyaWJ1dGVOYW1lLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOiBVc2UgRG9jdW1lbnQ6OmlkQXR0cmlidXRl
TmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZvcm1hdEZvckRlYnVnZ2VyKTogVXNl
IEVsZW1lbnQ6OmdldElkQXR0cmlidXRlLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6IEFkZGVk
IGlzSWRBdHRyaWJ1dGVOYW1lLCBnZXRJZEF0dHJpYnV0ZSwgc2V0SWRBdHRyaWJ1dGUsCisgICAg
ICAgIGlkRm9yU3R5bGVSZXNvbHV0aW9uLiBSZW1vdmVkIHJhcmVJREF0dHJpYnV0ZU5hbWUuCisK
KyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6IFJlbW92ZWQgbV9pZEF0dHJpYnV0ZU5h
bWUuCisKKyAgICAgICAgKiBkb20vTmFtZWROb2RlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5hbWVkTm9kZU1hcDo6c2V0QXR0cmlidXRlcyk6IFVzZSBEb2N1bWVudDo6aWRBdHRyaWJ1dGVO
YW1lLgorICAgICAgICAqIGRvbS9OYW1lZE5vZGVNYXAuaDogUmVuYW1lZCBpZCwgc2V0SUQsIGFu
ZCBtX2lkIHRvIGlkRm9yU3R5bGVSZXNvbHV0aW9uLAorICAgICAgICBzZXRJZEZvclN0eWxlUmVz
b2x1dGlvbiwgYW5kIG1faWRGb3JTdHlsZVJlc29sdXRpb24gc2luY2UgdGhpcyBpcyBub3QgdGhl
CisgICAgICAgIHZhbHVlIG9mIHRoZSBpZCBhdHRyaWJ1dGUgYmVjYXVzZSBpdCBnZXRzIGxvd2Vy
Y2FzZWQgZm9yIGNvbXBhdGliaWxpdHktbW9kZQorICAgICAgICBkb2N1bWVudHMuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUHJvZ3Jl
c3MuY3BwOgorICAgICAgICBBZGRlZCBpbmNsdWRlIG9mIEhUTUxOYW1lcy5oIG5vdyB0aGF0IEVs
ZW1lbnQuaCBubyBsb25nZXIgaW5jbHVkZXMgaXQuCisKKyAgICAgICAgKiBlZGl0aW5nL1NldE5v
ZGVBdHRyaWJ1dGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAg
ICAgICAqIGh0bWwvSFRNTFBhcnNlci5jcHA6CisgICAgICAgIFJlbW92ZWQgdW5uZWVkZWQgaW5j
bHVkZXMuCisKKyAgICAgICAgKiBodG1sL0hUTUxQYXJzZXIuaDogU29ydGVkIGluY2x1ZGVzLgor
CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hSdWxlcyk6IFVzZSBpZEZvclN0eWxlUmVzb2x1dGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmVTZWxlY3Rvcik6IFVzZSBpZEZvclN0eWxlUmVzb2x1dGlvbi4KKyAgICAgICAgKiBkb20v
QXR0ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjppc0lkKTogVXNlIERvY3VtZW50Ojpp
ZEF0dHJpYnV0ZU5hbWUuCisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBVc2UgaXNJ
ZEF0dHJpYnV0ZU5hbWUsCisgICAgICAgIGFuZCBzZXRJZEZvclN0eWxlUmVzb2x1dGlvbi4KKyAg
ICAgICAgKiBlZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6Y3JlYXRlRGVsZXRpb25VSSk6IFVzZSBzZXRJ
ZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZUluc2VydEhvcml6b250YWxSdWxlKTogRGl0dG8uCisgICAgICAg
ICogaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXBw
bGV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBVc2UgaXNJZEF0dHJpYnV0ZU5hbWUu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOiBV
c2UgZ2V0SWRBdHRyaWJ1dGUuCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6Y2hlY2tGb3JOYW1lTWF0Y2gpOiBVc2Ug
Z2V0SWRBdHRyaWJ1dGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6dXBkYXRl
TmFtZUNhY2hlKTogVXNlIGdldElkQXR0cmlidXRlLgorICAgICAgICAqIGh0bWwvSFRNTERhdGFH
cmlkQ29sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGF0YUdyaWRDb2xFbGVt
ZW50OjplbnN1cmVDb2x1bW4pOiBVc2UgZ2V0SWRBdHRyaWJ1dGUuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRGF0YUdyaWRDb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IFVzZSBpc0lk
QXR0cmlidXRlTmFtZS4KKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IFVzZSBpc0lkQXR0
cmlidXRlTmFtZS4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbGxlY3Rpb246Om5leHROYW1lZEl0ZW0pOiBBZGRlZCBt
aXNzaW5nIGJyYWNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29sbGVjdGlvbjo6dXBk
YXRlTmFtZUNhY2hlKTogVXNlIGdldElkQXR0cmlidXRlLgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJh
c2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKTogVXNlIGlzSWRBdHRyaWJ1dGVOYW1lLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWUpOiBVc2UgZ2V0SWRBdHRy
aWJ1dGUuCisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKTogVXNlIGlzSWRB
dHRyaWJ1dGVOYW1lLgorICAgICAgICAqIGh0bWwvSFRNTE1hcEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1hcEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKTogVXNlIGlz
SWRBdHRyaWJ1dGVOYW1lLgorICAgICAgICBBbHNvIHJlc3RydWN0dXJlZCB0aGUgZnVuY3Rpb24g
YSBiaXQgdG8gbWFrZSBpdHMgc3RydWN0dXJlIGNsZWFyZXIgYW5kIGFkZGVkCisgICAgICAgIGEg
Y29tbWVudCBwb2ludGluZyBvdXQgdGhhdCBpdCBjYW4ndCBiZSBxdWl0ZSByaWdodC4KKyAgICAg
ICAgKiBodG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TmFtZUNvbGxlY3Rpb246Oml0ZW1BZnRlcik6IFVzZSBnZXRJZEF0dHJpYnV0ZS4KKyAgICAgICAg
KiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmpl
Y3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IFVzZSBpc0lkQXR0cmlidXRlTmFtZS4K
KyAgICAgICAgKiBodG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBhcmFtRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBVc2UgaXNJZEF0dHJpYnV0
ZU5hbWUuCisgICAgICAgICogbG9hZGVyL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkRm9udDo6Z2V0U1ZHRm9udEJ5SWQpOiBVc2UgZ2V0SWRBdHRyaWJ1dGUuCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6Om5hbWVGb3JMYXllcik6IFVzZSBnZXRJZEF0dHJpYnV0ZS4K
KyAgICAgICAgKiByZW5kZXJpbmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp3cml0ZVNWR1BhaW50aW5nUmVzb3VyY2UpOiBVc2UgZ2V0SWRBdHRyaWJ1dGUuCisg
ICAgICAgIChXZWJDb3JlOjp3cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKTogRGl0dG8uCisgICAg
ICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOiBVc2UgZ2V0SWRBdHRyaWJ1dGUuCisgICAgICAgICogc3Zn
L1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVu
dDo6aXNLbm93bkF0dHJpYnV0ZSk6IFVzZSBpc0lkQXR0cmlidXRlTmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBVc2UgaXNJZEF0
dHJpYnV0ZU5hbWUuCisgICAgICAgICogd21sL1dNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V01MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBVc2UgaXNJZEF0dHJpYnV0
ZU5hbWUuCisKKzIwMTAtMDUtMzEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCiAg
ICAgICAgIFVwZGF0ZWQgYmluZGluZ3MgdGVzdCByZXN1bHRzIGZvciBjaGFuZ2UgaW4gSmF2YVNj
cmlwdCBob3N0IGNhbGxpbmcgY29udmVudGlvbiBjaGFuZ2UKICAgICAgICAgZnJvbSAyIGRheXMg
YWdvLgogCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNjA0NDQpCisr
KyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw3
ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3Jn
KQogICogICAgICAgICAgIChDKSAyMDA0LTIwMDUgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIChrZGVA
Y2FyZXdvbGYuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IE5pY2hvbGFzIFNoYW5r
cyAod2Via2l0QG5pY2tzaGFua3MuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5
YWtvdiA8YXBAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBFcmljIFNl
aWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNo
IE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxl
LmNvbS8pCkBAIC02NjYsNyArNjY2LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFJ1
bGVzKENTU1J1bAogICAgIC8vIFdlIG5lZWQgdG8gY29sbGVjdCB0aGUgcnVsZXMgZm9yIGlkLCBj
bGFzcywgdGFnLCBhbmQgZXZlcnl0aGluZyBlbHNlIGludG8gYSBidWZmZXIgYW5kCiAgICAgLy8g
dGhlbiBzb3J0IHRoZSBidWZmZXIuCiAgICAgaWYgKG1fZWxlbWVudC0+aGFzSUQoKSkKLSAgICAg
ICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldElEUnVsZXMobV9lbGVtZW50LT5nZXRJREF0
dHJpYnV0ZSgpLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKKyAgICAg
ICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldElEUnVsZXMobV9lbGVtZW50LT5pZEZvclN0
eWxlUmVzb2x1dGlvbigpLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsK
ICAgICBpZiAobV9lbGVtZW50LT5oYXNDbGFzcygpKSB7CiAgICAgICAgIEFTU0VSVChtX3N0eWxl
ZEVsZW1lbnQpOwogICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzID0g
bV9zdHlsZWRFbGVtZW50LT5jbGFzc05hbWVzKCk7CkBAIC0yMDM3LDcgKzIwMzcsNyBAQCBib29s
IENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICByZXR1cm4g
ZS0+aGFzQ2xhc3MoKSAmJiBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZSktPmNsYXNzTmFt
ZXMoKS5jb250YWlucyhzZWwtPm1fdmFsdWUpOwogCiAgICAgICAgIGlmIChzZWwtPm1fbWF0Y2gg
PT0gQ1NTU2VsZWN0b3I6OklkKQotICAgICAgICAgICAgcmV0dXJuIGUtPmhhc0lEKCkgJiYgZS0+
Z2V0SURBdHRyaWJ1dGUoKSA9PSBzZWwtPm1fdmFsdWU7CisgICAgICAgICAgICByZXR1cm4gZS0+
aGFzSUQoKSAmJiBlLT5pZEZvclN0eWxlUmVzb2x1dGlvbigpID09IHNlbC0+bV92YWx1ZTsKICAg
ICAgICAgCiAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHIgPSBzZWwtPmF0dHJpYnV0
ZSgpOwogCkluZGV4OiBXZWJDb3JlL2RvbS9BdHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9BdHRyLmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2RvbS9BdHRyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0
aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBQZXRl
ciBLZWxseSAocG1rQHBvc3QuY29tKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxl
ciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDkgKzIzLDkgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBdHRyLmgiCiAKLSNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlhNTE5TTmFt
ZXMuaCIKIApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgQXR0cjo6Y2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEIKIAogYm9vbCBBdHRyOjppc0lkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcXVh
bGlmaWVkTmFtZSgpLm1hdGNoZXMobV9lbGVtZW50ID8gbV9lbGVtZW50LT5pZEF0dHJpYnV0ZU5h
bWUoKSA6IGlkQXR0cik7CisgICAgcmV0dXJuIHF1YWxpZmllZE5hbWUoKS5tYXRjaGVzKGRvY3Vt
ZW50KCktPmlkQXR0cmlidXRlTmFtZSgpKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNp
b24gNjA0NDQpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwMCw2ICs0MDAsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBib29sIGlz
CiAgICAgLCBtX2NvbnRhaW5zV01MQ29udGVudChmYWxzZSkKICNlbmRpZgogICAgICwgbV93ZWFr
UmVmZXJlbmNlKERvY3VtZW50V2Vha1JlZmVyZW5jZTo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9p
ZEF0dHJpYnV0ZU5hbWUoaWRBdHRyKQogewogICAgIG1fZG9jdW1lbnQgPSB0aGlzOwogCkBAIC04
NzMsNyArODc0LDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbQog
ICAgIGVsc2UgaWYgKHFOYW1lLm5hbWVzcGFjZVVSSSgpID09IE1hdGhNTE5hbWVzOjptYXRobWxO
YW1lc3BhY2VVUkkpCiAgICAgICAgIGUgPSBNYXRoTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlTWF0
aE1MRWxlbWVudChxTmFtZSwgdGhpcywgY3JlYXRlZEJ5UGFyc2VyKTsKICNlbmRpZgotICAgIAor
CiAgICAgaWYgKCFlKQogICAgICAgICBlID0gRWxlbWVudDo6Y3JlYXRlKHFOYW1lLCBkb2N1bWVu
dCgpKTsKIApAQCAtOTE3LDcgKzkxOCw3IEBAIEVsZW1lbnQqIERvY3VtZW50OjpnZXRFbGVtZW50
QnlJZChjb25zdCAKICAgICAgICAgZm9yIChOb2RlICpuID0gdHJhdmVyc2VOZXh0Tm9kZSgpOyBu
ICE9IDA7IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKICAgICAgICAgICAgIGlmIChuLT5p
c0VsZW1lbnROb2RlKCkpIHsKICAgICAgICAgICAgICAgICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNJRCgpICYmIGVs
ZW1lbnQtPmdldEF0dHJpYnV0ZShlbGVtZW50LT5pZEF0dHJpYnV0ZU5hbWUoKSkgPT0gZWxlbWVu
dElkKSB7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc0lEKCkgJiYgZWxlbWVudC0+
Z2V0SWRBdHRyaWJ1dGUoKSA9PSBlbGVtZW50SWQpIHsKICAgICAgICAgICAgICAgICAgICAgbV9k
dXBsaWNhdGVJZHMucmVtb3ZlKGVsZW1lbnRJZC5pbXBsKCkpOwogICAgICAgICAgICAgICAgICAg
ICBtX2VsZW1lbnRzQnlJZC5zZXQoZWxlbWVudElkLmltcGwoKSwgZWxlbWVudCk7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA2MDQ0NCkK
KysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRNYXJrZXIuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hDb3VudGVkU2V0Lmg+CkBAIC05ODAsNiArOTgxLDggQEAgcHVibGljOgogICAgIHZv
aWQgcmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwog
ICAgIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogdGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigp
OwogCisgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgaWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZEF0dHJpYnV0ZU5hbWU7IH0KKwogcHJvdGVjdGVkOgogICAgIERvY3VtZW50KEZy
YW1lKiwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCk7CiAKQEAgLTEyNTYsNiArMTI1OSw4IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPERvY3VtZW50V2Vha1JlZmVyZW5jZT4gbV93ZWFrUmVmZXJl
bmNlOwogCiAgICAgSGFzaFNldDxNZWRpYUNhblN0YXJ0TGlzdGVuZXIqPiBtX21lZGlhQ2FuU3Rh
cnRMaXN0ZW5lcnM7CisKKyAgICBRdWFsaWZpZWROYW1lIG1faWRBdHRyaWJ1dGVOYW1lOwogfTsK
IAogaW5saW5lIGJvb2wgRG9jdW1lbnQ6Omhhc0VsZW1lbnRXaXRoSWQoQXRvbWljU3RyaW5nSW1w
bCogaWQpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5jcHAJKHJldmlzaW9uIDYwNDQ0
KQorKysgV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Miw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUu
b3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3Jn
KQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwNywgMjAw
OCwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTEzNyw3ICsxMzcsOCBAQCBOb2RlKiBEeW5hbWljTm9kZUxpc3Q6Oml0ZW1XaXRoTmFt
ZShjb25zCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBp
dGVtKGkpOwotICAgICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIHN0YXRpY19jYXN0
PEVsZW1lbnQqPihub2RlKS0+Z2V0SURBdHRyaWJ1dGUoKSA9PSBlbGVtZW50SWQpCisgICAgICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSB1c2luZyBnZXRJZEF0dHJpYnV0ZSBp
bnN0ZWFkIG9mIGlkRm9yU3R5bGVSZXNvbHV0aW9uLgorICAgICAgICBpZiAobm9kZS0+aGFzSUQo
KSAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCkg
PT0gZWxlbWVudElkKQogICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCkluZGV4OiBX
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjA2LDIxICsyMDYsNiBAQCBOb2RlOjpOb2RlVHlwZSBFbGVtZW50Ojpub2Rl
VHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIEVMRU1FTlRfTk9ERTsKIH0KIAotY29uc3QgQXRvbWlj
U3RyaW5nJiBFbGVtZW50OjpnZXRJREF0dHJpYnV0ZSgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6
IFRoZXJlIGFyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGZ1bmN0aW9uIGZvciBnZW5lcmFsIHB1
cnBvc2UgdXNlLgotICAgIC8vCi0gICAgLy8gMSkgSWYgdGhpcyBpcyBub3QgYSBTdHlsZWRFbGVt
ZW50LCB0aGVuIHRoZSByZXN1bHQgd2lsbCBhbHdheXMgYmUgbnVsbC4KLSAgICAvLyAyKSBJZiB0
aGUgZG9jdW1lbnQgdGhpcyBlbGVtZW50IGlzIHBhcnQgb2YgaXMgaW4gY29tcGF0aWJpbGl0eSBt
b2RlCi0gICAgLy8gKGluQ29tcGF0TW9kZSksIHRoZW4gdGhlIElEIHdpbGwgYmUgbG93ZXJjYXNl
ZC4KLSAgICAvLwotICAgIC8vIFNlZSBTdHlsZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZSBmb3IgZGV0YWlscy4gQmVjYXVzZSBvZiB0aGVzZSBpc3N1ZXMsCi0gICAgLy8gdGhpcyBmdW5j
dGlvbiBhbmQgTmFtZWROb2RlTWFwOjppZCBzaG91bGQgYm90aCBwcm9iYWJseSBiZSByZW5hbWVk
IHRvIG1ha2UgaXQKLSAgICAvLyBjbGVhciB0aGlzIGRvZXMgbm90IGdpdmUgdGhlIHNhbWUgcmVz
dWx0IGFzIGdldEF0dHJpYnV0ZS4KLQotICAgIHJldHVybiBuYW1lZEF0dHJNYXAgPyBuYW1lZEF0
dHJNYXAtPmlkKCkgOiBudWxsQXRvbTsKLX0KLQogYm9vbCBFbGVtZW50OjpoYXNBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzQXR0cmli
dXRlTlMobmFtZS5uYW1lc3BhY2VVUkkoKSwgbmFtZS5sb2NhbE5hbWUoKSk7CkBAIC01NDEsMTAg
KzUyNiwxMSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0CiAgICAg
fQogI2VuZGlmCiAKLSAgICBpZiAobmFtZWRBdHRyTWFwKQorICAgIGlmIChuYW1lZEF0dHJNYXAp
IHsKICAgICAgICAgaWYgKEF0dHJpYnV0ZSogYXR0cmlidXRlID0gbmFtZWRBdHRyTWFwLT5nZXRB
dHRyaWJ1dGVJdGVtKG5hbWUsIGlnbm9yZUNhc2UpKQogICAgICAgICAgICAgcmV0dXJuIGF0dHJp
YnV0ZS0+dmFsdWUoKTsKLSAgICAKKyAgICB9CisKICAgICByZXR1cm4gbnVsbEF0b207CiB9CiAK
QEAgLTU2MiwxMiArNTQ4LDE1IEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IEF0
b21pY1MKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gc2hvdWxkSWdub3Jl
QXR0cmlidXRlQ2FzZSh0aGlzKSA/IG5hbWUubG93ZXIoKSA6IG5hbWU7CiAKLSAgICAvLyBhbGxv
Y2F0ZSBhdHRyaWJ1dGVtYXAgaWYgbmVjZXNzYXJ5CisgICAgLy8gQWxsb2NhdGUgYXR0cmlidXRl
IG1hcCBpZiBuZWNlc3NhcnkuCiAgICAgQXR0cmlidXRlKiBvbGQgPSBhdHRyaWJ1dGVzKGZhbHNl
KS0+Z2V0QXR0cmlidXRlSXRlbShsb2NhbE5hbWUsIGZhbHNlKTsKIAogICAgIGRvY3VtZW50KCkt
PmluY0RPTVRyZWVWZXJzaW9uKCk7CiAKLSAgICBpZiAobG9jYWxOYW1lID09IGlkQXR0cmlidXRl
TmFtZSgpLmxvY2FsTmFtZSgpKQorICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlzIHByb2JhYmx5
IG5vdCBjb3JyZWN0IGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgZG9jdW1lbnQgaGFzIGFuIGlkIGF0
dHJpYnV0ZQorICAgIC8vIHdpdGggYSBub24tbnVsbCBuYW1lc3BhY2UsIGJlY2F1c2UgaXQgd2ls
bCByZXR1cm4gdHJ1ZSBpZiB0aGUgbG9jYWwgbmFtZSBoYXBwZW5zIHRvIG1hdGNoCisgICAgLy8g
YnV0IHRoZSBuYW1lc3BhY2UgZG9lcyBub3QuCisgICAgaWYgKGxvY2FsTmFtZSA9PSBkb2N1bWVu
dCgpLT5pZEF0dHJpYnV0ZU5hbWUoKS5sb2NhbE5hbWUoKSkKICAgICAgICAgdXBkYXRlSWQob2xk
ID8gb2xkLT52YWx1ZSgpIDogbnVsbEF0b20sIHZhbHVlKTsKIAogICAgIGlmIChvbGQgJiYgdmFs
dWUuaXNOdWxsKCkpCkBAIC01OTMsMTAgKzU4MiwxMCBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpCiB7CiAgICAgZG9jdW1lbnQoKS0+aW5jRE9NVHJlZVZlcnNpb24o
KTsKIAotICAgIC8vIGFsbG9jYXRlIGF0dHJpYnV0ZW1hcCBpZiBuZWNlc3NhcnkKKyAgICAvLyBB
bGxvY2F0ZSBhdHRyaWJ1dGUgbWFwIGlmIG5lY2Vzc2FyeS4KICAgICBBdHRyaWJ1dGUqIG9sZCA9
IGF0dHJpYnV0ZXMoZmFsc2UpLT5nZXRBdHRyaWJ1dGVJdGVtKG5hbWUpOwogCi0gICAgaWYgKG5h
bWUgPT0gaWRBdHRyaWJ1dGVOYW1lKCkpCisgICAgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKG5hbWUp
KQogICAgICAgICB1cGRhdGVJZChvbGQgPyBvbGQtPnZhbHVlKCkgOiBudWxsQXRvbSwgdmFsdWUp
OwogCiAgICAgaWYgKG9sZCAmJiB2YWx1ZS5pc051bGwoKSkKQEAgLTY3OCw3ICs2NjcsNyBAQCB2
b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU1hcChQYXNzUmVmUHRyCiAKICAgICAvLyBJZiBzZXR0
aW5nIHRoZSB3aG9sZSBtYXAgY2hhbmdlcyB0aGUgaWQgYXR0cmlidXRlLCB3ZSBuZWVkIHRvIGNh
bGwgdXBkYXRlSWQuCiAKLSAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBpZE5hbWUgPSBpZEF0dHJp
YnV0ZU5hbWUoKTsKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBpZE5hbWUgPSBkb2N1bWVudCgp
LT5pZEF0dHJpYnV0ZU5hbWUoKTsKICAgICBBdHRyaWJ1dGUqIG9sZElkID0gbmFtZWRBdHRyTWFw
ID8gbmFtZWRBdHRyTWFwLT5nZXRBdHRyaWJ1dGVJdGVtKGlkTmFtZSkgOiAwOwogICAgIEF0dHJp
YnV0ZSogbmV3SWQgPSBsaXN0ID8gbGlzdC0+Z2V0QXR0cmlidXRlSXRlbShpZE5hbWUpIDogMDsK
IApAQCAtODAyLDcgKzc5MSw3IEBAIHZvaWQgRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KQogCiAgICAgaWYgKGhhc0lEKCkpIHsKICAgICAgICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cnMg
PSBuYW1lZEF0dHJNYXAuZ2V0KCkpIHsKLSAgICAgICAgICAgIEF0dHJpYnV0ZSogaWRJdGVtID0g
YXR0cnMtPmdldEF0dHJpYnV0ZUl0ZW0oaWRBdHRyaWJ1dGVOYW1lKCkpOworICAgICAgICAgICAg
QXR0cmlidXRlKiBpZEl0ZW0gPSBhdHRycy0+Z2V0QXR0cmlidXRlSXRlbShkb2N1bWVudCgpLT5p
ZEF0dHJpYnV0ZU5hbWUoKSk7CiAgICAgICAgICAgICBpZiAoaWRJdGVtICYmICFpZEl0ZW0tPmlz
TnVsbCgpKQogICAgICAgICAgICAgICAgIHVwZGF0ZUlkKG51bGxBdG9tLCBpZEl0ZW0tPnZhbHVl
KCkpOwogICAgICAgICB9CkBAIC04MTMsNyArODAyLDcgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVk
RnJvbURvY3VtZW50KCkKIHsKICAgICBpZiAoaGFzSUQoKSkgewogICAgICAgICBpZiAoTmFtZWRO
b2RlTWFwKiBhdHRycyA9IG5hbWVkQXR0ck1hcC5nZXQoKSkgewotICAgICAgICAgICAgQXR0cmli
dXRlKiBpZEl0ZW0gPSBhdHRycy0+Z2V0QXR0cmlidXRlSXRlbShpZEF0dHJpYnV0ZU5hbWUoKSk7
CisgICAgICAgICAgICBBdHRyaWJ1dGUqIGlkSXRlbSA9IGF0dHJzLT5nZXRBdHRyaWJ1dGVJdGVt
KGRvY3VtZW50KCktPmlkQXR0cmlidXRlTmFtZSgpKTsKICAgICAgICAgICAgIGlmIChpZEl0ZW0g
JiYgIWlkSXRlbS0+aXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgdXBkYXRlSWQoaWRJdGVtLT52
YWx1ZSgpLCBudWxsQXRvbSk7CiAgICAgICAgIH0KQEAgLTExMDgsNyArMTA5Nyw3IEBAIHZvaWQg
RWxlbWVudDo6ZGlzcGF0Y2hBdHRyUmVtb3ZhbEV2ZW50KEEKICAgICBpZiAoIWRvY3VtZW50KCkt
Pmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NQVRUUk1PRElGSUVEX0xJU1RFTkVSKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGRpc3BhdGNoRXZl
bnQobmV3IE11dGF0aW9uRXZlbnQoRE9NQXR0ck1vZGlmaWVkRXZlbnQsIHRydWUsIGZhbHNlLCBh
dHRyLCBhdHRyLT52YWx1ZSgpLAorICAgIGRpc3BhdGNoRXZlbnQoTXV0YXRpb25FdmVudDo6Y3Jl
YXRlKERPTUF0dHJNb2RpZmllZEV2ZW50LCB0cnVlLCBhdHRyLCBhdHRyLT52YWx1ZSgpLAogICAg
ICAgICBhdHRyLT52YWx1ZSgpLCBkb2N1bWVudCgpLT5hdHRyTmFtZShhdHRyLT5pZCgpKSwgTXV0
YXRpb25FdmVudDo6UkVNT1ZBTCksIGVjKTsKICNlbmRpZgogfQpAQCAtMTEyMSw3ICsxMTEwLDcg
QEAgdm9pZCBFbGVtZW50OjpkaXNwYXRjaEF0dHJBZGRpdGlvbkV2ZW50KAogICAgIGlmICghZG9j
dW1lbnQoKS0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01BVFRSTU9ESUZJRURfTElTVEVO
RVIpKQogICAgICAgICByZXR1cm47CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZGlz
cGF0Y2hFdmVudChuZXcgTXV0YXRpb25FdmVudChET01BdHRyTW9kaWZpZWRFdmVudCwgdHJ1ZSwg
ZmFsc2UsIGF0dHIsIGF0dHItPnZhbHVlKCksCisgICAgZGlzcGF0Y2hFdmVudChNdXRhdGlvbkV2
ZW50OjpjcmVhdGUoRE9NQXR0ck1vZGlmaWVkRXZlbnQsIHRydWUsIGF0dHIsIGF0dHItPnZhbHVl
KCksCiAgICAgICAgIGF0dHItPnZhbHVlKCksIGRvY3VtZW50KCktPmF0dHJOYW1lKGF0dHItPmlk
KCkpLCBNdXRhdGlvbkV2ZW50OjpBRERJVElPTiksIGVjKTsKICNlbmRpZgogfQpAQCAtMTE2Miw3
ICsxMTUxLDcgQEAgdm9pZCBFbGVtZW50Ojpmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidQogICAg
ICAgICByZXN1bHQgKz0gczsKICAgICB9CiAgICAgICAgICAgCi0gICAgcyA9IGdldEF0dHJpYnV0
ZShpZEF0dHJpYnV0ZU5hbWUoKSk7CisgICAgcyA9IGdldElkQXR0cmlidXRlKCk7CiAgICAgaWYg
KHMubGVuZ3RoKCkgPiAwKSB7CiAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKCkgPiAwKQogICAg
ICAgICAgICAgcmVzdWx0ICs9ICI7ICI7CkBAIC0xNTM3LDkgKzE1MjYsNCBAQCBLVVJMIEVsZW1l
bnQ6OmdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsCiAgICAgcmV0dXJuIGRvY3VtZW50KCktPmNv
bXBsZXRlVVJMKGRlcHJlY2F0ZWRQYXJzZVVSTChnZXRBdHRyaWJ1dGUobmFtZSkpKTsKIH0KIAot
Y29uc3QgUXVhbGlmaWVkTmFtZSYgRWxlbWVudDo6cmFyZUlEQXR0cmlidXRlTmFtZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHJhcmVEYXRhKCktPm1faWRBdHRyaWJ1dGVOYW1lOwotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUv
ZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKICAqICAgICAgICAg
ICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAg
ICAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogICAgICAgICAgIChDKSAy
MDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTI1LDE5ICsyNSwxNCBAQAogI2lmbmRlZiBFbGVtZW50X2gKICNk
ZWZpbmUgRWxlbWVudF9oCiAKLSNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJNYXBwZWRBdHRy
aWJ1dGVFbnRyeS5oIgogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgotI2luY2x1ZGUgIlF1YWxp
ZmllZE5hbWUuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEF0dHI7CiBjbGFzcyBBdHRyaWJ1dGU7Ci1jbGFzcyBDU1NTdHlsZURlY2xh
cmF0aW9uOwogY2xhc3MgQ2xpZW50UmVjdDsKIGNsYXNzIENsaWVudFJlY3RMaXN0OwogY2xhc3Mg
RWxlbWVudFJhcmVEYXRhOwpAQCAtMTExLDkgKzEwNiw2IEBAIHB1YmxpYzoKICAgICBib29sIGZh
c3RIYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgZmFzdEdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7
CiAKLSAgICAvLyBDYWxsIHRoaXMgdG8gZ2V0IHRoZSB2YWx1ZSBvZiB0aGUgaWQgYXR0cmlidXRl
LiBGYXN0ZXIgdGhhbiBjYWxsaW5nIGZhc3RHZXRBdHRyaWJ1dGUuCi0gICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBnZXRJREF0dHJpYnV0ZSgpIGNvbnN0OwotCiAgICAgYm9vbCBoYXNBdHRyaWJ1dGVz
KCkgY29uc3Q7CiAKICAgICBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNv
bnN0OwpAQCAtMTI1LDcgKzExNywxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJt
aXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKIAotICAgIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGlkQXR0cmlidXRlTmFtZSgpIGNvbnN0OworICAgIGJvb2wgaXNJZEF0dHJpYnV0ZU5h
bWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
Z2V0SWRBdHRyaWJ1dGUoKSBjb25zdDsKKyAgICB2b2lkIHNldElkQXR0cmlidXRlKGNvbnN0IEF0
b21pY1N0cmluZyYpOworCisgICAgLy8gQ2FsbCB0aGlzIHRvIGdldCB0aGUgdmFsdWUgb2YgdGhl
IGlkIGF0dHJpYnV0ZSBmb3Igc3R5bGUgcmVzb2x1dGlvbiBwdXJwb3Nlcy4KKyAgICAvLyBUaGUg
dmFsdWUgd2lsbCBhbHJlYWR5IGJlIGxvd2VyY2FzZWQgaWYgdGhlIGRvY3VtZW50IGlzIGluIGNv
bXBhdGliaWxpdHkgbW9kZSwKKyAgICAvLyBzbyB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBzdWl0YWJs
ZSBmb3Igbm9uLXN0eWxlIHVzZXMuCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZEZvclN0eWxl
UmVzb2x1dGlvbigpIGNvbnN0OwogCiAgICAgdm9pZCBzY3JvbGxJbnRvVmlldyhib29sIGFsaWdu
VG9Ub3AgPSB0cnVlKTsKICAgICB2b2lkIHNjcm9sbEludG9WaWV3SWZOZWVkZWQoYm9vbCBjZW50
ZXJJZk5lZWRlZCA9IHRydWUpOwpAQCAtMzA0LDcgKzMwMyw2IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpOwogCiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEF0dHJpYnV0ZT4gY3JlYXRlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKLSAgICBjb25zdCBRdWFsaWZpZWROYW1lJiByYXJl
SURBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwogICAgIHZpcnR1
YWwgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkg
Y29uc3Q7CkBAIC0zNjIsMTEgKzM2MCw2IEBAIGlubGluZSBFbGVtZW50KiBOb2RlOjpwYXJlbnRF
bGVtZW50KCkgY28KICAgICByZXR1cm4gcGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgp
ID8gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHBhcmVudCkgOiAwOwogfQogCi1pbmxpbmUgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgRWxlbWVudDo6aWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gaGFzUmFyZURhdGEoKSA/IHJhcmVJREF0dHJpYnV0ZU5hbWUoKSA6IEhUTUxOYW1lczo6
aWRBdHRyOwotfQotCiBpbmxpbmUgTmFtZWROb2RlTWFwKiBFbGVtZW50OjphdHRyaWJ1dGVzKGJv
b2wgcmVhZG9ubHkpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1N0eWxlQXR0cmlidXRlVmFsaWQoKSkK
QEAgLTQxMSw2ICs0MDQsMzEgQEAgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6
ZmFzdAogICAgIHJldHVybiBudWxsQXRvbTsKIH0KIAotfSAvL25hbWVzcGFjZQoraW5saW5lIGNv
bnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6aWRGb3JTdHlsZVJlc29sdXRpb24oKSBjb25zdAor
eworICAgIEFTU0VSVChoYXNJRCgpKTsKKyAgICByZXR1cm4gbmFtZWRBdHRyTWFwLT5pZEZvclN0
eWxlUmVzb2x1dGlvbigpOworfQorCitpbmxpbmUgYm9vbCBFbGVtZW50Ojppc0lkQXR0cmlidXRl
TmFtZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAoreworICAgIC8v
IEZJWE1FOiBUaGlzIGNoZWNrIGlzIHByb2JhYmx5IG5vdCBjb3JyZWN0IGZvciB0aGUgY2FzZSB3
aGVyZSB0aGUgZG9jdW1lbnQgaGFzIGFuIGlkIGF0dHJpYnV0ZQorICAgIC8vIHdpdGggYSBub24t
bnVsbCBuYW1lc3BhY2UsIGJlY2F1c2UgaXQgd2lsbCByZXR1cm4gZmFsc2UsIGEgZmFsc2UgbmVn
YXRpdmUsIGlmIHRoZSBwcmVmaXhlcworICAgIC8vIGRvbid0IG1hdGNoIGJ1dCB0aGUgbG9jYWwg
bmFtZSBhbmQgbmFtZXNwYWNlIGJvdGggZG8uIEhvd2V2ZXIsIHNpbmNlIHRoaXMgaGFzIGJlZW4g
bGlrZSB0aGlzCisgICAgLy8gZm9yIGEgd2hpbGUgYW5kIHRoZSBjb2RlIHBhdGhzIG1heSBiZSBo
b3QsIHdlJ2xsIGhhdmUgdG8gbWVhc3VyZSBwZXJmb3JtYW5jZSBpZiB3ZSBmaXggaXQuCisgICAg
cmV0dXJuIGF0dHJpYnV0ZU5hbWUgPT0gZG9jdW1lbnQoKS0+aWRBdHRyaWJ1dGVOYW1lKCk7Cit9
CisKK2lubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmdldElkQXR0cmlidXRlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZShkb2N1bWVudCgpLT5pZEF0dHJp
YnV0ZU5hbWUoKSk7Cit9CisKK2lubGluZSB2b2lkIEVsZW1lbnQ6OnNldElkQXR0cmlidXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit7CisgICAgc2V0QXR0cmlidXRlKGRvY3VtZW50KCkt
PmlkQXR0cmlidXRlTmFtZSgpLCB2YWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlCiAKICNlbmRp
ZgpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9k
b20vRWxlbWVudFJhcmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRGF2aWQgU21pdGggPGNhdGZpc2gu
bWFuQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yNyw4ICsyNyw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQogY2xhc3MgRWxlbWVu
dFJhcmVEYXRhIDogcHVibGljIE5vZGVSYXJlRGF0YSB7CiBwdWJsaWM6CiAgICAgRWxlbWVudFJh
cmVEYXRhKCk7CkBAIC00MCw3ICszOCw2IEBAIHB1YmxpYzoKIAogICAgIEludFNpemUgbV9taW5p
bXVtU2l6ZUZvclJlc2l6aW5nOwogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9jb21wdXRlZFN0
eWxlOwotICAgIFF1YWxpZmllZE5hbWUgbV9pZEF0dHJpYnV0ZU5hbWU7CiB9OwogCiBpbmxpbmUg
SW50U2l6ZSBkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpCkBAIC01MCw3ICs0Nyw2IEBA
IGlubGluZSBJbnRTaXplIGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2kKIAogaW5saW5lIEVsZW1l
bnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKCkKICAgICA6IG1fbWluaW11bVNpemVGb3JSZXNp
emluZyhkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpKQotICAgICwgbV9pZEF0dHJpYnV0
ZU5hbWUoaWRBdHRyKQogewogfQogCkluZGV4OiBXZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5jcHAJKHJldmlzaW9uIDYw
NDQ0KQorKysgV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjI1LDggKzIyNSw4IEBAIHZvaWQgTmFtZWROb2RlTWFwOjpzZXRBdHRyaWJ1dGVzKGNvbnN0IE4K
IAogICAgIC8vIElmIGFzc2lnbmluZyB0aGUgbWFwIGNoYW5nZXMgdGhlIGlkIGF0dHJpYnV0ZSwg
d2UgbmVlZCB0byBjYWxsCiAgICAgLy8gdXBkYXRlSWQuCi0gICAgQXR0cmlidXRlKiBvbGRJZCA9
IGdldEF0dHJpYnV0ZUl0ZW0obV9lbGVtZW50LT5pZEF0dHJpYnV0ZU5hbWUoKSk7Ci0gICAgQXR0
cmlidXRlKiBuZXdJZCA9IG90aGVyLmdldEF0dHJpYnV0ZUl0ZW0obV9lbGVtZW50LT5pZEF0dHJp
YnV0ZU5hbWUoKSk7CisgICAgQXR0cmlidXRlKiBvbGRJZCA9IGdldEF0dHJpYnV0ZUl0ZW0obV9l
bGVtZW50LT5kb2N1bWVudCgpLT5pZEF0dHJpYnV0ZU5hbWUoKSk7CisgICAgQXR0cmlidXRlKiBu
ZXdJZCA9IG90aGVyLmdldEF0dHJpYnV0ZUl0ZW0obV9lbGVtZW50LT5kb2N1bWVudCgpLT5pZEF0
dHJpYnV0ZU5hbWUoKSk7CiAKICAgICBpZiAob2xkSWQgfHwgbmV3SWQpCiAgICAgICAgIG1fZWxl
bWVudC0+dXBkYXRlSWQob2xkSWQgPyBvbGRJZC0+dmFsdWUoKSA6IG51bGxBdG9tLCBuZXdJZCA/
IG5ld0lkLT52YWx1ZSgpIDogbnVsbEF0b20pOwpJbmRleDogV2ViQ29yZS9kb20vTmFtZWROb2Rl
TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmgJKHJldmlzaW9u
IDYwNDQ0KQorKysgV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMsNyArMyw3IEBACiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZp
c3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0
LmNvbSkKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9y
ZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0yOCwxMCArMjgsNiBAQAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5o
IgogI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuaCIKIAotI2lmZGVmIF9fT0JKQ19fCi0jZGVm
aW5lIGlkIGlkX0FWT0lEX0tFWVdPUkQKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE5vZGU7CkBAIC04NSw4ICs4MSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZShuZXdBdHRyaWJ1dGUpOwogICAgIH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
aWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Ci0gICAgdm9pZCBzZXRJRChjb25zdCBBdG9taWNT
dHJpbmcmIG5ld0lkKSB7IG1faWQgPSBuZXdJZDsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
aWRGb3JTdHlsZVJlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBtX2lkRm9yU3R5bGVSZXNvbHV0
aW9uOyB9CisgICAgdm9pZCBzZXRJZEZvclN0eWxlUmVzb2x1dGlvbihjb25zdCBBdG9taWNTdHJp
bmcmIG5ld0lkKSB7IG1faWRGb3JTdHlsZVJlc29sdXRpb24gPSBuZXdJZDsgfQogCiAgICAgLy8g
RklYTUU6IFRoZXNlIHR3byBmdW5jdGlvbnMgc2hvdWxkIGJlIG1lcmdlZCBpZiBwb3NzaWJsZS4K
ICAgICBib29sIG1hcHNFcXVpdmFsZW50KGNvbnN0IE5hbWVkTm9kZU1hcCogb3RoZXJNYXApIGNv
bnN0OwpAQCAtMTI0LDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgU3BhY2VTcGxpdFN0cmluZyBt
X2NsYXNzTmFtZXM7CiAgICAgRWxlbWVudCogbV9lbGVtZW50OwogICAgIFZlY3RvcjxSZWZQdHI8
QXR0cmlidXRlPiA+IG1fYXR0cmlidXRlczsKLSAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBB
dG9taWNTdHJpbmcgbV9pZEZvclN0eWxlUmVzb2x1dGlvbjsKIH07CiAKIGlubGluZSBBdHRyaWJ1
dGUqIE5hbWVkTm9kZU1hcDo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKSBjb25zdApAQCAtMTM4LDcgKzEzNCw3IEBAIGlubGluZSBBdHRyaWJ1dGUqIE5hbWVkTm9k
ZU1hcDo6Z2V0QXR0cmkKIH0KIAogLy8gV2UgdXNlIGEgYm9vbGVhbiBwYXJhbWV0ZXIgaW5zdGVh
ZCBvZiBjYWxsaW5nIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2Ugc28gdGhhdCB0aGUgY2FsbGVy
Ci0vLyBjYW4gdHVuZSB0aGUgYmVoYXZpb3VyIChoYXNBdHRyaWJ1dGUgaXMgY2FzZSBzZW5zaXRp
dmUgd2hlcmVhcyBnZXRBdHRyaWJ1dGUgaXMgbm90KS4KKy8vIGNhbiB0dW5lIHRoZSBiZWhhdmlv
ciAoaGFzQXR0cmlidXRlIGlzIGNhc2Ugc2Vuc2l0aXZlIHdoZXJlYXMgZ2V0QXR0cmlidXRlIGlz
IG5vdCkuCiBpbmxpbmUgQXR0cmlidXRlKiBOYW1lZE5vZGVNYXA6OmdldEF0dHJpYnV0ZUl0ZW0o
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0
CiB7CiAgICAgdW5zaWduZWQgbGVuID0gbGVuZ3RoKCk7CkBAIC0xNjEsNiArMTU3LDQgQEAgaW5s
aW5lIEF0dHJpYnV0ZSogTmFtZWROb2RlTWFwOjpnZXRBdHRyaQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKLSN1bmRlZiBpZAotCiAjZW5kaWYgLy8gTmFtZWROb2RlTWFwX2gKSW5kZXg6IFdl
YkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlz
aW9uIDYwNDQ0KQorKysgV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NTQs
NyArNjU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyRmxhZyhOb2RlRmxhZ3MgbWFzaykg
Y29uc3QgeyBtX25vZGVGbGFncyAmPSB+bWFzazsgfSAKIAogcHJvdGVjdGVkOgotICAgIC8vIENy
ZWF0ZUVsZW1lbnRaZXJvUmVmQ291bnQgaXMgZGVwcmVjYXRlZCBhbmQgY2FuIGJlIHJlbW92ZWQg
b25jZSB3ZSBjb252ZXJ0IGFsbCBlbGVtZW50CisgICAgLy8gQ3JlYXRlV2l0aFplcm9SZWZDb3Vu
dEZsYWcgaXMgZGVwcmVjYXRlZCBhbmQgY2FuIGJlIHJlbW92ZWQgb25jZSB3ZSBjb252ZXJ0IGFs
bCBlbGVtZW50CiAgICAgLy8gY2xhc3NlcyB0byBzdGFydCB3aXRoIGEgcmVmZXJlbmNlIGNvdW50
IG9mIDEuCiAgICAgZW51bSBDb25zdHJ1Y3Rpb25UeXBlIHsgCiAgICAgICAgIENyZWF0ZU90aGVy
ID0gRGVmYXVsdE5vZGVGbGFncywKQEAgLTY2MiwxMSArNjYyLDkgQEAgcHJvdGVjdGVkOgogICAg
ICAgICBDcmVhdGVDb21tZW50ID0gRGVmYXVsdE5vZGVGbGFncyB8IElzQ29tbWVudEZsYWcsCiAg
ICAgICAgIENyZWF0ZUNvbnRhaW5lciA9IERlZmF1bHROb2RlRmxhZ3MgfCBJc0NvbnRhaW5lckZs
YWcsIAogICAgICAgICBDcmVhdGVFbGVtZW50ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNFbGVtZW50
RmxhZywgCi0gICAgICAgIENyZWF0ZUVsZW1lbnRaZXJvUmVmQ291bnQgPSBJc0VsZW1lbnRGbGFn
IHwgQ3JlYXRlV2l0aFplcm9SZWZDb3VudEZsYWcsIAogICAgICAgICBDcmVhdGVTdHlsZWRFbGVt
ZW50ID0gQ3JlYXRlRWxlbWVudCB8IElzU3R5bGVkRWxlbWVudEZsYWcsIAogICAgICAgICBDcmVh
dGVTdHlsZWRFbGVtZW50WmVyb1JlZkNvdW50ID0gIENyZWF0ZVN0eWxlZEVsZW1lbnQgfCBDcmVh
dGVXaXRoWmVyb1JlZkNvdW50RmxhZywgCiAgICAgICAgIENyZWF0ZUhUTUxFbGVtZW50ID0gQ3Jl
YXRlU3R5bGVkRWxlbWVudCB8IElzSFRNTEZsYWcsIAotICAgICAgICBDcmVhdGVIVE1MRWxlbWVu
dFplcm9SZWZDb3VudCA9IENyZWF0ZUhUTUxFbGVtZW50IHwgQ3JlYXRlV2l0aFplcm9SZWZDb3Vu
dEZsYWcsCiAgICAgICAgIENyZWF0ZVNWR0VsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50IHwg
SXNTVkdGbGFnLCAKICAgICAgICAgQ3JlYXRlU1ZHRWxlbWVudFplcm9SZWZDb3VudCA9IENyZWF0
ZVNWR0VsZW1lbnQgfCBDcmVhdGVXaXRoWmVyb1JlZkNvdW50RmxhZywKICAgICB9OwpJbmRleDog
V2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L1N0YXRpY05vZGVMaXN0LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2RvbS9TdGF0
aWNOb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDcgKzUwLDggQEAgTm9kZSogU3RhdGlj
Tm9kZUxpc3Q6Oml0ZW1XaXRoTmFtZShjb25zdAogICAgIHNpemVfdCBsZW5ndGggPSBtX25vZGVz
LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAg
ICAgIE5vZGUqIG5vZGUgPSBtX25vZGVzW2ldLmdldCgpOwotICAgICAgICBpZiAobm9kZS0+aXNF
bGVtZW50Tm9kZSgpICYmIHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+Z2V0SURBdHRyaWJ1
dGUoKSA9PSBlbGVtZW50SWQpCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJs
eSBiZSB1c2luZyBnZXRJZEF0dHJpYnV0ZSBpbnN0ZWFkIG9mIGlkRm9yU3R5bGVSZXNvbHV0aW9u
LgorICAgICAgICBpZiAobm9kZS0+aGFzSUQoKSAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9k
ZSktPmdldElkQXR0cmlidXRlKCkgPT0gZWxlbWVudElkKQogICAgICAgICAgICAgcmV0dXJuIG5v
ZGU7CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0NDQpCisr
KyBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICsz
LDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2Rl
Lm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQog
ICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTE5NCw2ICsxOTQsNyBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoQXR0
CiAgICAgICAgIGlmIChuYW1lZEF0dHJNYXApCiAgICAgICAgICAgICBtYXBwZWRBdHRyaWJ1dGVz
KCktPmRlY2xBZGRlZCgpOwogICAgIH0KKwogICAgIHVwZGF0ZUFmdGVyQXR0cmlidXRlQ2hhbmdl
ZChhdHRyKTsKIH0KIApAQCAtMjI3LDE2ICsyMjgsMTUgQEAgdm9pZCBTdHlsZWRFbGVtZW50Ojpj
bGFzc0F0dHJpYnV0ZUNoYW5nZQogCiB2b2lkIFN0eWxlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IGlkQXR0
cmlidXRlTmFtZSgpKSB7Ci0gICAgICAgIC8vIHVuaXF1ZSBpZAorICAgIGlmIChpc0lkQXR0cmli
dXRlTmFtZShhdHRyLT5uYW1lKCkpKSB7CiAgICAgICAgIHNldEhhc0lEKCFhdHRyLT5pc051bGwo
KSk7CiAgICAgICAgIGlmIChuYW1lZEF0dHJNYXApIHsKICAgICAgICAgICAgIGlmIChhdHRyLT5p
c051bGwoKSkKLSAgICAgICAgICAgICAgICBuYW1lZEF0dHJNYXAtPnNldElEKG51bGxBdG9tKTsK
KyAgICAgICAgICAgICAgICBuYW1lZEF0dHJNYXAtPnNldElkRm9yU3R5bGVSZXNvbHV0aW9uKG51
bGxBdG9tKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgp
KQotICAgICAgICAgICAgICAgIG5hbWVkQXR0ck1hcC0+c2V0SUQoYXR0ci0+dmFsdWUoKS5sb3dl
cigpKTsKKyAgICAgICAgICAgICAgICBuYW1lZEF0dHJNYXAtPnNldElkRm9yU3R5bGVSZXNvbHV0
aW9uKGF0dHItPnZhbHVlKCkubG93ZXIoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgbmFtZWRBdHRyTWFwLT5zZXRJRChhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgICAg
ICBuYW1lZEF0dHJNYXAtPnNldElkRm9yU3R5bGVSZXNvbHV0aW9uKGF0dHItPnZhbHVlKCkpOwog
ICAgICAgICB9CiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBjbGFzc0F0dHIpCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRGVsZXRl
QnV0dG9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uLmNw
cAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBpbmxpbmUgRGVsZXRlQnV0dG9uOjpEZWxl
dGVCdXR0b24oRG9jdW1lCiAKIFBhc3NSZWZQdHI8RGVsZXRlQnV0dG9uPiBEZWxldGVCdXR0b246
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBEZWxldGVCdXR0
b24oZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVsZXRlQnV0dG9uKGRvY3Vt
ZW50KSk7CiB9CiAKIHZvaWQgRGVsZXRlQnV0dG9uOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
KiBldmVudCkKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBEZWxldGVC
dXR0b25Db250cm9sbGVyOjpyZXNwb25kVG9DaAogdm9pZCBEZWxldGVCdXR0b25Db250cm9sbGVy
OjpjcmVhdGVEZWxldGlvblVJKCkKIHsKICAgICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IGNvbnRh
aW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUobV90YXJnZXQtPmRvY3VtZW50KCkpOwotICAg
IGNvbnRhaW5lci0+c2V0QXR0cmlidXRlKGNvbnRhaW5lci0+aWRBdHRyaWJ1dGVOYW1lKCksIGNv
bnRhaW5lckVsZW1lbnRJZGVudGlmaWVyKTsKKyAgICBjb250YWluZXItPnNldElkQXR0cmlidXRl
KGNvbnRhaW5lckVsZW1lbnRJZGVudGlmaWVyKTsKIAogICAgIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKiBzdHlsZSA9IGNvbnRhaW5lci0+Z2V0SW5saW5lU3R5bGVEZWNsKCk7CiAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIENTU1ZhbHVlTm9uZSk7
CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBEZWxldGVCdXR0b25Db250cm9sbGVyOjpjcmVhdGVE
ZWxldAogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsICIwIik7CiAKICAg
ICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IG91dGxpbmUgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRl
KG1fdGFyZ2V0LT5kb2N1bWVudCgpKTsKLSAgICBvdXRsaW5lLT5zZXRBdHRyaWJ1dGUob3V0bGlu
ZS0+aWRBdHRyaWJ1dGVOYW1lKCksIG91dGxpbmVFbGVtZW50SWRlbnRpZmllcik7CisgICAgb3V0
bGluZS0+c2V0SWRBdHRyaWJ1dGUob3V0bGluZUVsZW1lbnRJZGVudGlmaWVyKTsKIAogICAgIGNv
bnN0IGludCBib3JkZXJXaWR0aCA9IDQ7CiAgICAgY29uc3QgaW50IGJvcmRlclJhZGl1cyA9IDY7
CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBEZWxldGVCdXR0b25Db250cm9sbGVyOjpjcmVhdGVE
ZWxldAogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8RGVsZXRlQnV0dG9uPiBidXR0b24g
PSBEZWxldGVCdXR0b246OmNyZWF0ZShtX3RhcmdldC0+ZG9jdW1lbnQoKSk7Ci0gICAgYnV0dG9u
LT5zZXRBdHRyaWJ1dGUoYnV0dG9uLT5pZEF0dHJpYnV0ZU5hbWUoKSwgYnV0dG9uRWxlbWVudElk
ZW50aWZpZXIpOworICAgIGJ1dHRvbi0+c2V0SWRBdHRyaWJ1dGUoYnV0dG9uRWxlbWVudElkZW50
aWZpZXIpOwogCiAgICAgY29uc3QgaW50IGJ1dHRvbldpZHRoID0gMzA7CiAgICAgY29uc3QgaW50
IGJ1dHRvbkhlaWdodCA9IDMwOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkocmV2
aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ3NCw3ICs0NzQsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0SG9y
aXpvbnRhbFJ1bGUoCiB7CiAgICAgUmVmUHRyPEhUTUxIUkVsZW1lbnQ+IHJ1bGUgPSBIVE1MSFJF
bGVtZW50OjpjcmVhdGUoZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIGlmICghdmFsdWUuaXNFbXB0
eSgpKQotICAgICAgICBydWxlLT5zZXRBdHRyaWJ1dGUocnVsZS0+aWRBdHRyaWJ1dGVOYW1lKCks
IHZhbHVlKTsKKyAgICAgICAgcnVsZS0+c2V0SWRBdHRyaWJ1dGUodmFsdWUpOwogICAgIHJldHVy
biBleGVjdXRlSW5zZXJ0Tm9kZShmcmFtZSwgcnVsZS5yZWxlYXNlKCkpOwogfQogCkluZGV4OiBX
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2Vi
Q29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFBhc3NSZWZQ
dHI8SFRNTEVsZW1lbnQ+IEluc2VydExpc3RDb21tYW5kOjppbnNlcnRMaXN0KERvY3VtZW50KiBk
b2N1bWVudCwgVHlwZSB0eXBlKQogewotICAgIFJlZlB0cjxJbnNlcnRMaXN0Q29tbWFuZD4gaW5z
ZXJ0Q29tbWFuZCA9IG5ldyBJbnNlcnRMaXN0Q29tbWFuZChkb2N1bWVudCwgdHlwZSk7CisgICAg
UmVmUHRyPEluc2VydExpc3RDb21tYW5kPiBpbnNlcnRDb21tYW5kID0gY3JlYXRlKGRvY3VtZW50
LCB0eXBlKTsKICAgICBpbnNlcnRDb21tYW5kLT5hcHBseSgpOwogICAgIHJldHVybiBpbnNlcnRD
b21tYW5kLT5tX2xpc3RFbGVtZW50OwogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL01vZGlmeVNl
bGVjdGlvbkxpc3RMZXZlbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL01vZGlm
eVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9lZGl0
aW5nL01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOSwy
OCArMjA5LDI4IEBAIGJvb2wgSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kOjoKICAg
ICByZXR1cm4gY2FuSW5jcmVhc2VMaXN0TGV2ZWwoZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlv
bigpLT5zZWxlY3Rpb24oKSwgc3RhcnRMaXN0Q2hpbGQsIGVuZExpc3RDaGlsZCk7CiB9CiAKLVBh
c3NSZWZQdHI8Tm9kZT4gSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kOjppbmNyZWFz
ZVNlbGVjdGlvbkxpc3RMZXZlbFdpdGhUeXBlKERvY3VtZW50KiBkb2N1bWVudCwgVHlwZSBsaXN0
VHlwZSkKK1Bhc3NSZWZQdHI8Tm9kZT4gSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5k
OjppbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbChEb2N1bWVudCogZG9jdW1lbnQsIFR5cGUgdHlw
ZSkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VSVChkb2N1bWVudC0+ZnJhbWUo
KSk7Ci0gICAgUmVmUHRyPEluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZD4gbW9kQ29t
bWFuZCA9IG5ldyBJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQoZG9jdW1lbnQsIGxp
c3RUeXBlKTsKLSAgICBtb2RDb21tYW5kLT5hcHBseSgpOwotICAgIHJldHVybiBtb2RDb21tYW5k
LT5tX2xpc3RFbGVtZW50OworICAgIFJlZlB0cjxJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENv
bW1hbmQ+IGNvbW1hbmQgPSBjcmVhdGUoZG9jdW1lbnQsIHR5cGUpOworICAgIGNvbW1hbmQtPmFw
cGx5KCk7CisgICAgcmV0dXJuIGNvbW1hbmQtPm1fbGlzdEVsZW1lbnQ7CiB9CiAKIFBhc3NSZWZQ
dHI8Tm9kZT4gSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kOjppbmNyZWFzZVNlbGVj
dGlvbkxpc3RMZXZlbChEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIGluY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsV2l0aFR5cGUoZG9jdW1lbnQsIEluaGVyaXRlZExpc3RUeXBlKTsK
KyAgICByZXR1cm4gaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoZG9jdW1lbnQsIEluaGVyaXRl
ZExpc3RUeXBlKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlPiBJbmNyZWFzZVNlbGVjdGlvbkxpc3RM
ZXZlbENvbW1hbmQ6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsT3JkZXJlZChEb2N1bWVudCog
ZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIGluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsV2l0aFR5
cGUoZG9jdW1lbnQsIE9yZGVyZWRMaXN0KTsKKyAgICByZXR1cm4gaW5jcmVhc2VTZWxlY3Rpb25M
aXN0TGV2ZWwoZG9jdW1lbnQsIE9yZGVyZWRMaXN0KTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlPiBJ
bmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6OmluY3JlYXNlU2VsZWN0aW9uTGlzdExl
dmVsVW5vcmRlcmVkKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gaW5jcmVhc2VT
ZWxlY3Rpb25MaXN0TGV2ZWxXaXRoVHlwZShkb2N1bWVudCwgVW5vcmRlcmVkTGlzdCk7CisgICAg
cmV0dXJuIGluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKGRvY3VtZW50LCBVbm9yZGVyZWRMaXN0
KTsKIH0KIAogRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kOjpEZWNyZWFzZVNlbGVj
dGlvbkxpc3RMZXZlbENvbW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50KSAKQEAgLTI4OSw3ICsyODks
NyBAQCB2b2lkIERlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZDo6CiB7CiAgICAgQVNT
RVJUKGRvY3VtZW50KTsKICAgICBBU1NFUlQoZG9jdW1lbnQtPmZyYW1lKCkpOwotICAgIGFwcGx5
Q29tbWFuZChuZXcgRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kKGRvY3VtZW50KSk7
CisgICAgYXBwbHlDb21tYW5kKGNyZWF0ZShkb2N1bWVudCkpOwogfQogCiB9CkluZGV4OiBXZWJD
b3JlL2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9lZGl0aW5nL01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oCShyZXZpc2lvbiA2MDQ0NCkK
KysrIFdlYkNvcmUvZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01NSw5ICs1NSwxNSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
ZW51bSBUeXBlIHsgSW5oZXJpdGVkTGlzdFR5cGUsIE9yZGVyZWRMaXN0LCBVbm9yZGVyZWRMaXN0
IH07Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Tm9kZT4gaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2
ZWxXaXRoVHlwZShEb2N1bWVudCosIFR5cGUgbGlzdFR5cGUpOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE5vZGU+IGluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKERvY3VtZW50KiwgVHlwZSk7CiAK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ+
IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kKGRvY3Vt
ZW50LCB0eXBlKSk7CisgICAgfQorICAgIAogICAgIEluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVs
Q29tbWFuZChEb2N1bWVudCosIFR5cGUpOworCiAgICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKTsK
IAogICAgIFR5cGUgbV9saXN0VHlwZTsKQEAgLTcxLDcgKzc3LDEzIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBkZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbChEb2N1bWVudCopOwogCiBwcml2
YXRlOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29t
bWFuZD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kKGRvY3VtZW50KSk7
CisgICAgfQorCiAgICAgRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kKERvY3VtZW50
Kik7CisKICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwogfTsKIApJbmRleDogV2ViQ29yZS9l
ZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9l
ZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmgJKHJldmlzaW9uIDYwNDQ0KQorKysgV2Vi
Q29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmRfaAogCiAjaW5j
bHVkZSAiRWRpdENvbW1hbmQuaCIKLSNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysg
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYg
QEAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
ICNpbmNsdWRlICJEZWxldGVCdXR0b25Db250cm9sbGVyLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBl
LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCkBAIC01Miw3ICs1MSw2IEBACiAjaW5jbHVkZSAiS1VS
TC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaCIKLSNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNp
bmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyAr
NDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
CiBIVE1MQW5jaG9yRWxlbWVudDo6SFRNTEFuY2hvckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRNTEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQsIENyZWF0ZUhUTUxFbGVtZW50KQorICAgIDogSFRNTEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCiAgICAgLCBtX3dhc1NoaWZ0S2V5RG93bk9uTW91c2VEb3duKGZhbHNlKQog
ICAgICwgbV9saW5rUmVsYXRpb25zKDApCiB7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFwcGxl
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIEhUTUxBcHBsZXRFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkTmFtZWRJdGVt
KG5ld05hbWUpOwogICAgICAgICB9CiAgICAgICAgIG1fbmFtZSA9IG5ld05hbWU7Ci0gICAgfSBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaWRBdHRyaWJ1dGVOYW1lKCkpIHsKKyAgICB9IGVsc2Ug
aWYgKGlzSWRBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSkpIHsKICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBuZXdJZCA9IGF0dHItPnZhbHVlKCk7CiAgICAgICAgIGlmIChpbkRvY3VtZW50
KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewogICAgICAgICAgICAgSFRNTERv
Y3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRvY3Vt
ZW50KCkpOwpAQCAtMTE4LDcgKzExOCw3IEBAIFJlbmRlck9iamVjdCogSFRNTEFwcGxldEVsZW1l
bnQ6OmNyZWF0ZVIKICAgICAgICAgaWYgKCFjb2RlQmFzZS5pc051bGwoKSkKICAgICAgICAgICAg
IGFyZ3Muc2V0KCJjb2RlQmFzZSIsIGNvZGVCYXNlKTsKIAotICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUgPSBnZXRBdHRyaWJ1dGUoZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSA/
IG5hbWVBdHRyIDogaWRBdHRyaWJ1dGVOYW1lKCkpOworICAgICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUgPSBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpID8gZ2V0QXR0cmlidXRlKG5h
bWVBdHRyKSA6IGdldElkQXR0cmlidXRlKCk7CiAgICAgICAgIGlmICghbmFtZS5pc051bGwoKSkK
ICAgICAgICAgICAgIGFyZ3Muc2V0KCJuYW1lIiwgbmFtZSk7CiAgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgYXJjaGl2ZSA9IGdldEF0dHJpYnV0ZShhcmNoaXZlQXR0cik7CkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxBdWRpb0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9I
VE1MQXVkaW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTIgKzQzLDEyIEBAIEhU
TUxBdWRpb0VsZW1lbnQ6OkhUTUxBdWRpb0VsZW1lbnQoY29uc3QKIAogUGFzc1JlZlB0cjxIVE1M
QXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEF1
ZGlvRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBI
VE1MQXVkaW9FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIFBhc3NSZWZQdHI8SFRN
TEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgc3JjKQogewotICAgIFJlZlB0cjxIVE1M
QXVkaW9FbGVtZW50PiBhdWRpbyA9IG5ldyBIVE1MQXVkaW9FbGVtZW50KGF1ZGlvVGFnLCBkb2N1
bWVudCk7CisgICAgUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IGF1ZGlvID0gYWRvcHRSZWYobmV3
IEhUTUxBdWRpb0VsZW1lbnQoYXVkaW9UYWcsIGRvY3VtZW50KSk7CiAgICAgYXVkaW8tPnNldFBy
ZWxvYWQoImF1dG8iKTsKICAgICBpZiAoIXNyYy5pc051bGwoKSkgewogICAgICAgICBhdWRpby0+
c2V0U3JjKHNyYyk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAs
MTIgKzQwLDEyIEBAIEhUTUxCUkVsZW1lbnQ6OkhUTUxCUkVsZW1lbnQoY29uc3QgUXVhbGkKIAog
UGFzc1JlZlB0cjxIVE1MQlJFbGVtZW50PiBIVE1MQlJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEJSRWxlbWVudChiclRhZywgZG9jdW1l
bnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEJSRWxlbWVudChiclRhZywgZG9jdW1l
bnQpKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQlJFbGVtZW50PiBIVE1MQlJFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewot
ICAgIHJldHVybiBuZXcgSFRNTEJSRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIVE1MQlJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAK
IGJvb2wgSFRNTEJSRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
QmFzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQmFz
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGlubGluZSBIVE1M
QmFzZUVsZW1lbnQ6OkhUTUxCYXNlRWxlbWVudCgKIAogUGFzc1JlZlB0cjxIVE1MQmFzZUVsZW1l
bnQ+IEhUTUxCYXNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxCYXNlRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQmFzZUVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogdm9pZCBIVE1MQmFzZUVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
QmFzZUZvbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEJhc2VG
b250RWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9odG1sL0hUTUxCYXNl
Rm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGlubGluZSBI
VE1MQmFzZUZvbnRFbGVtZW50OjpIVE1MQmFzZUZvbnQKIAogUGFzc1JlZlB0cjxIVE1MQmFzZUZv
bnRFbGVtZW50PiBIVE1MQmFzZUZvbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEJh
c2VGb250RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MQmFzZUZvbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGludCBIVE1M
QmFzZUZvbnRFbGVtZW50OjpzaXplKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQmxv
Y2txdW90ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQmxvY2tx
dW90ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQmxv
Y2txdW90ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMiArMzcsMTIgQEAgSFRN
TEJsb2NrcXVvdGVFbGVtZW50OjpIVE1MQmxvY2txdW90ZUVsZQogCiBQYXNzUmVmUHRyPEhUTUxC
bG9ja3F1b3RlRWxlbWVudD4gSFRNTEJsb2NrcXVvdGVFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEJsb2NrcXVvdGVFbGVtZW50KGJsb2Nr
cXVvdGVUYWcsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxCbG9ja3F1
b3RlRWxlbWVudChibG9ja3F1b3RlVGFnLCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhU
TUxCbG9ja3F1b3RlRWxlbWVudD4gSFRNTEJsb2NrcXVvdGVFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVy
biBuZXcgSFRNTEJsb2NrcXVvdGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEhUTUxCbG9ja3F1b3RlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkp
OwogfQogCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0NDQp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDcsMTIgKzQ3LDEyIEBAIEhUTUxCb2R5RWxlbWVudDo6SFRNTEJvZHlFbGVtZW50KGNvbnN0IFEK
IAogUGFzc1JlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxCb2R5RWxlbWVudChib2R5
VGFnLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQm9keUVsZW1lbnQo
Ym9keVRhZywgZG9jdW1lbnQpKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IEhU
TUxCb2R5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxCb2R5RWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQm9keUVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogSFRNTEJvZHlFbGVtZW50Ojp+SFRNTEJvZHlFbGVtZW50
KCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAkocmV2aXNpb24gNjA0NDQpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MCw3ICs1MCw3IEBAIGlubGluZSBIVE1MQnV0dG9uRWxlbWVudDo6SFRNTEJ1dHRvbkVsZW0KIAog
UGFzc1JlZlB0cjxIVE1MQnV0dG9uRWxlbWVudD4gSFRNTEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3Jt
RWxlbWVudCogZm9ybSkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxCdXR0b25FbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50LCBmb3JtKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxCdXR0b25F
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKSk7CiB9CiAKIFJlbmRlck9iamVjdCogSFRN
TEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVy
U3R5bGUqKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0
NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY1LDEyICs2NSwxMiBAQCBIVE1MQ2FudmFzRWxlbWVudDo6SFRNTENhbnZhc0VsZW1lbnQo
Y29uCiAKIFBhc3NSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IEhUTUxDYW52YXNFbGVtZW50Ojpj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTENhbnZhc0Vs
ZW1lbnQoY2FudmFzVGFnLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1M
Q2FudmFzRWxlbWVudChjYW52YXNUYWcsIGRvY3VtZW50KSk7CiB9CiAKIFBhc3NSZWZQdHI8SFRN
TENhbnZhc0VsZW1lbnQ+IEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRN
TENhbnZhc0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTENhbnZhc0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogSFRNTENhbnZh
c0VsZW1lbnQ6On5IVE1MQ2FudmFzRWxlbWVudCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5j
cHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgSFRNTENvbGxlY3Rpb246OmNo
ZWNrRm9yTmFtZU1hdGNoKEUKICAgICAKICAgICBIVE1MRWxlbWVudCogZSA9IHN0YXRpY19jYXN0
PEhUTUxFbGVtZW50Kj4oZWxlbWVudCk7CiAgICAgaWYgKCFjaGVja05hbWUpCi0gICAgICAgIHJl
dHVybiBlLT5nZXRBdHRyaWJ1dGUoZS0+aWRBdHRyaWJ1dGVOYW1lKCkpID09IG5hbWU7CisgICAg
ICAgIHJldHVybiBlLT5nZXRJZEF0dHJpYnV0ZSgpID09IG5hbWU7CiAKICAgICAvLyBkb2N1bWVu
dC5hbGwgcmV0dXJucyBvbmx5IGltYWdlcywgZm9ybXMsIGFwcGxldHMsIG9iamVjdHMgYW5kIGVt
YmVkcwogICAgIC8vIGJ5IG5hbWUgKHRob3VnaCBldmVyeXRoaW5nIGJ5IGlkKQpAQCAtMjc3LDcg
KzI3Nyw3IEBAIGJvb2wgSFRNTENvbGxlY3Rpb246OmNoZWNrRm9yTmFtZU1hdGNoKEUKICAgICAg
ICAgICBlLT5oYXNMb2NhbE5hbWUoc2VsZWN0VGFnKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBlLT5nZXRBdHRyaWJ1dGUobmFtZUF0dHIpID09IG5hbWUgJiYgZS0+Z2V0
QXR0cmlidXRlKGUtPmlkQXR0cmlidXRlTmFtZSgpKSAhPSBuYW1lOworICAgIHJldHVybiBlLT5n
ZXRBdHRyaWJ1dGUobmFtZUF0dHIpID09IG5hbWUgJiYgZS0+Z2V0SWRBdHRyaWJ1dGUoKSAhPSBu
YW1lOwogfQogCiBOb2RlKiBIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkgY29uc3QKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIEhUTUxDb2xsZWN0aW9u
Ojp1cGRhdGVOYW1lQ2FjaGUoKSBjCiAgICAgICAgIGlmICghZWxlbWVudC0+aXNIVE1MRWxlbWVu
dCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEhUTUxFbGVtZW50KiBlID0gc3Rh
dGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBpZEF0dHJWYWwgPSBlLT5nZXRBdHRyaWJ1dGUoZS0+aWRBdHRyaWJ1dGVOYW1lKCkpOwor
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkQXR0clZhbCA9IGUtPmdldElkQXR0cmlidXRl
KCk7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZUF0dHJWYWwgPSBlLT5nZXRBdHRy
aWJ1dGUobmFtZUF0dHIpOwogICAgICAgICBpZiAoIWlkQXR0clZhbC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgIC8vIGFkZCB0byBpZCBjYWNoZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxETGlz
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50
LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgaW5saW5lIEhUTUxETGlzdEVsZW1l
bnQ6OkhUTUxETGlzdEVsZW1lbgogCiBQYXNzUmVmUHRyPEhUTUxETGlzdEVsZW1lbnQ+IEhUTUxE
TGlzdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MRExpc3RFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxETGlzdEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogYm9vbCBIVE1MRExpc3RFbGVtZW50Ojpjb21wYWN0KCkg
Y29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRDZWxsRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZENlbGxFbGVtZW50LmNwcAkocmV2
aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTERhdGFHcmlkQ2VsbEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGlubGluZSBIVE1MRGF0YUdyaWRDZWxs
RWxlbWVudDo6SFRNTERhdGEKIAogUGFzc1JlZlB0cjxIVE1MRGF0YUdyaWRDZWxsRWxlbWVudD4g
SFRNTERhdGFHcmlkQ2VsbEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MRGF0YUdyaWRDZWxs
RWxlbWVudChuYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRGF0
YUdyaWRDZWxsRWxlbWVudChuYW1lLCBkb2N1bWVudCkpOwogfQogCiBTdHJpbmcgSFRNTERhdGFH
cmlkQ2VsbEVsZW1lbnQ6OmxhYmVsKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRGF0
YUdyaWRDb2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERhdGFH
cmlkQ29sRWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9odG1sL0hUTUxE
YXRhR3JpZENvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGlu
bGluZSBIVE1MRGF0YUdyaWRDb2xFbGVtZW50OjpIVE1MRGF0YUcKIAogUGFzc1JlZlB0cjxIVE1M
RGF0YUdyaWRDb2xFbGVtZW50PiBIVE1MRGF0YUdyaWRDb2xFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBu
ZXcgSFRNTERhdGFHcmlkQ29sRWxlbWVudChuYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBIVE1MRGF0YUdyaWRDb2xFbGVtZW50KG5hbWUsIGRvY3VtZW50KSk7CiB9CiAK
IEhUTUxEYXRhR3JpZEVsZW1lbnQqIEhUTUxEYXRhR3JpZENvbEVsZW1lbnQ6OmZpbmREYXRhR3Jp
ZEFuY2VzdG9yKCkgY29uc3QKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBIVE1MRGF0YUdyaWRDb2xF
bGVtZW50OjplbnN1cmVDb2x1bQogewogICAgIGlmIChtX2NvbHVtbikKICAgICAgICAgcmV0dXJu
OwotICAgIG1fY29sdW1uID0gRGF0YUdyaWRDb2x1bW46OmNyZWF0ZShnZXRBdHRyaWJ1dGUoaWRB
dHRyaWJ1dGVOYW1lKCkpLCBsYWJlbCgpLCB0eXBlKCksIHByaW1hcnkoKSwgc29ydGFibGUoKSk7
CisgICAgbV9jb2x1bW4gPSBEYXRhR3JpZENvbHVtbjo6Y3JlYXRlKGdldElkQXR0cmlidXRlKCks
IGxhYmVsKCksIHR5cGUoKSwgcHJpbWFyeSgpLCBzb3J0YWJsZSgpKTsKIH0KIAogdm9pZCBIVE1M
RGF0YUdyaWRDb2xFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCkKQEAgLTE2Nyw4
ICsxNjcsOCBAQCB2b2lkIEhUTUxEYXRhR3JpZENvbEVsZW1lbnQ6OnBhcnNlTWFwcGVkCiAgICAg
ICAgIGNvbHVtbigpLT5zZXRTb3J0YWJsZShzb3J0YWJsZSgpKTsKICAgICBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gc29ydGRpcmVjdGlvbkF0dHIpCiAgICAgICAgIGNvbHVtbigpLT5zZXRTb3J0
RGlyZWN0aW9uKHNvcnREaXJlY3Rpb24oKSk7Ci0gICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGlkQXR0cmlidXRlTmFtZSgpKQotICAgICAgICBjb2x1bW4oKS0+c2V0SWQoZ2V0QXR0cmlidXRl
KGlkQXR0cmlidXRlTmFtZSgpKSk7CisgICAgZWxzZSBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUoYXR0
ci0+bmFtZSgpKSkKKyAgICAgICAgY29sdW1uKCktPnNldElkKGdldElkQXR0cmlidXRlKCkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERhdGFH
cmlkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgSFRNTERh
dGFHcmlkRWxlbWVudDo6SFRNTERhdGFHcmlkCiAKIFBhc3NSZWZQdHI8SFRNTERhdGFHcmlkRWxl
bWVudD4gSFRNTERhdGFHcmlkRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxEYXRhR3Jp
ZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TERhdGFHcmlkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBIVE1MRGF0YUdyaWRF
bGVtZW50Ojp+SFRNTERhdGFHcmlkRWxlbWVudCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERh
dGFHcmlkUm93RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxEYXRh
R3JpZFJvd0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
RGF0YUdyaWRSb3dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBp
bmxpbmUgSFRNTERhdGFHcmlkUm93RWxlbWVudDo6SFRNTERhdGFHCiAKIFBhc3NSZWZQdHI8SFRN
TERhdGFHcmlkUm93RWxlbWVudD4gSFRNTERhdGFHcmlkUm93RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4g
bmV3IEhUTUxEYXRhR3JpZFJvd0VsZW1lbnQobmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSFRNTERhdGFHcmlkUm93RWxlbWVudChuYW1lLCBkb2N1bWVudCkpOwogfQog
CiBib29sIEhUTUxEYXRhR3JpZFJvd0VsZW1lbnQ6OmNoZWNrRFREKGNvbnN0IE5vZGUqIG5ld0No
aWxkKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0
NDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDcgKzQ0LDcgQEAgaW5saW5lIEhUTUxEYXRhTGlzdEVsZW1lbnQ6OkhUTUxEYXRh
TGlzdAogCiBQYXNzUmVmUHRyPEhUTUxEYXRhTGlzdEVsZW1lbnQ+IEhUTUxEYXRhTGlzdEVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MRGF0YUxpc3RFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxEYXRhTGlzdEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KIAogYm9vbCBIVE1MRGF0YUxpc3RFbGVtZW50OjpjaGVja0RURChj
b25zdCBOb2RlKiBuZXdDaGlsZCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAkocmV2aXNp
b24gNjA0NDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MCwxMiArNDAsMTIgQEAgSFRNTERpdkVsZW1lbnQ6OkhUTUxEaXZFbGVtZW50KGNv
bnN0IFF1YQogCiBQYXNzUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBIVE1MRGl2RWxlbWVudDo6Y3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxEaXZFbGVtZW50
KGRpdlRhZywgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERpdkVsZW1l
bnQoZGl2VGFnLCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxEaXZFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxEaXZFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wgSFRNTERpdkVsZW1lbnQ6Om1hcFRvRW50cnkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQp
IGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCB1
c2luZyBzdGQ6Om1heDsKIAogUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTEVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwg
Q3JlYXRlSFRNTEVsZW1lbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIFN0cmluZyBIVE1MRWxlbWVudDo6bm9kZU5hbWUo
KSBjb25zdApAQCAtMTQ0LDcgKzE0NCw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6Om1hcFRvRW50cnko
Y29uc3QgUXVhbGkKICAgICAKIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKIHsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IGlkQXR0cmlidXRl
TmFtZSgpIHx8IGF0dHItPm5hbWUoKSA9PSBjbGFzc0F0dHIgfHwgYXR0ci0+bmFtZSgpID09IHN0
eWxlQXR0cikKKyAgICBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKSB8fCBhdHRy
LT5uYW1lKCkgPT0gY2xhc3NBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBzdHlsZUF0dHIpCiAgICAg
ICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIAog
ICAgIFN0cmluZyBpbmRleHN0cmluZzsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCShyZXZpc2lvbiA2MDQ0
NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQWxpZ25tZW50VG9TdHls
ZWRFbGVtZW50KFN0eWxlZEVsZW1lbnQqLCBBdHRyaWJ1dGUqKTsKIAogcHJvdGVjdGVkOgotICAg
IEhUTUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiwgQ29u
c3RydWN0aW9uVHlwZSA9IENyZWF0ZUhUTUxFbGVtZW50WmVyb1JlZkNvdW50KTsKKyAgICBIVE1M
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwogCiAgICAg
dm9pZCBhZGRIVE1MQWxpZ25tZW50KEF0dHJpYnV0ZSopOwogCkBAIC0xMTEsOCArMTExLDggQEAg
cHJpdmF0ZToKICAgICBOb2RlKiBpbnNlcnRBZGphY2VudChjb25zdCBTdHJpbmcmIHdoZXJlLCBO
b2RlKiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYpOwogfTsKIAotaW5saW5lIEhUTUxFbGVtZW50
OjpIVE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKLSAgICA6IFN0eWxlZEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQsIHR5cGUpCitpbmxpbmUgSFRNTEVsZW1lbnQ6OkhUTUxFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFN0eWxl
ZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUhUTUxFbGVtZW50KQogewogICAgIEFT
U0VSVCh0YWdOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxG
aWVsZFNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBpbmxp
bmUgSFRNTEZpZWxkU2V0RWxlbWVudDo6SFRNTEZpZWxkU2V0CiAKIFBhc3NSZWZQdHI8SFRNTEZp
ZWxkU2V0RWxlbWVudD4gSFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3Jt
KQogewotICAgIHJldHVybiBuZXcgSFRNTEZpZWxkU2V0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCwgZm9ybSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRmllbGRTZXRFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50LCBmb3JtKSk7CiB9CiAKIGJvb2wgSFRNTEZpZWxkU2V0RWxlbWVudDo6
Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZv
bnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50
LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBIVE1MRm9udEVsZW1lbnQ6OkhUTUxG
b250RWxlbWVudChjb25zdCBRCiAKIFBhc3NSZWZQdHI8SFRNTEZvbnRFbGVtZW50PiBIVE1MRm9u
dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MRm9udEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZvbnRFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KSk7CiB9CiAKIC8vIEFsbG93cyBsZWFkaW5nIHNwYWNlcy4KSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsOCArMTExLDcg
QEAgRWxlbWVudCogSFRNTEZvcm1Db2xsZWN0aW9uOjpnZXROYW1lZEZvcgogICAgIGJvb2wgZm91
bmRJbnB1dEVsZW1lbnRzID0gZmFsc2U7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZv
cm0tPm1fYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQqIGUgPSBmb3JtLT5tX2Fzc29jaWF0ZWRFbGVtZW50c1tpXTsKLSAgICAg
ICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSA9IChhdHRyTmFtZSA9PSBpZEF0
dHIpID8gZS0+aWRBdHRyaWJ1dGVOYW1lKCkgOiBhdHRyTmFtZTsKLSAgICAgICAgaWYgKGUtPmlz
RW51bWVyYXRhYmxlKCkgJiYgZS0+Z2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpID09IG5hbWUp
IHsKKyAgICAgICAgaWYgKGUtPmlzRW51bWVyYXRhYmxlKCkgJiYgZS0+Z2V0QXR0cmlidXRlKGF0
dHJOYW1lKSA9PSBuYW1lKSB7CiAgICAgICAgICAgICBmb3VuZElucHV0RWxlbWVudHMgPSB0cnVl
OwogICAgICAgICAgICAgaWYgKCFkdXBsaWNhdGVOdW1iZXIpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGU7CkBAIC0xMjMsOCArMTIyLDcgQEAgRWxlbWVudCogSFRNTEZvcm1Db2xsZWN0aW9uOjpn
ZXROYW1lZEZvcgogICAgIGlmICghZm91bmRJbnB1dEVsZW1lbnRzKSB7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBmb3JtLT5tX2ltYWdlRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGUgPSBmb3JtLT5tX2ltYWdlRWxlbWVudHNb
aV07Ci0gICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lID0gKGF0
dHJOYW1lID09IGlkQXR0cikgPyBlLT5pZEF0dHJpYnV0ZU5hbWUoKSA6IGF0dHJOYW1lOwotICAg
ICAgICAgICAgaWYgKGUtPmdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSA9PSBuYW1lKSB7Cisg
ICAgICAgICAgICBpZiAoZS0+Z2V0QXR0cmlidXRlKGF0dHJOYW1lKSA9PSBuYW1lKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCFkdXBsaWNhdGVOdW1iZXIpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlOwogICAgICAgICAgICAgICAgIC0tZHVwbGljYXRlTnVtYmVyOwpAQCAtMTc2LDkgKzE3
NCwxMCBAQCBOb2RlKiBIVE1MRm9ybUNvbGxlY3Rpb246Om5leHROYW1lZEl0ZW0oCiAgICAgLy8g
Y2hlY2tzIGlmIHdlIGFyZSBvbiB0aGUgbmFtZUF0dHIgaGFsZiBvZiB0aGUgaXRlcmF0aW9uIGFu
ZCBza2lwcyBvdmVyIGFueQogICAgIC8vIHRoYXQgYWxzbyBoYXZlIHRoZSBzYW1lIGlkQXR0cmli
dXRlTmFtZS4KICAgICBFbGVtZW50KiBpbXBsID0gbmV4dE5hbWVkSXRlbUludGVybmFsKG5hbWUp
OwotICAgIGlmIChtX2lkc0RvbmUpCi0gICAgICAgIHdoaWxlIChpbXBsICYmIGltcGwtPmdldEF0
dHJpYnV0ZShpbXBsLT5pZEF0dHJpYnV0ZU5hbWUoKSkgPT0gbmFtZSkKKyAgICBpZiAobV9pZHNE
b25lKSB7CisgICAgICAgIHdoaWxlIChpbXBsICYmIGltcGwtPmdldElkQXR0cmlidXRlKCkgPT0g
bmFtZSkKICAgICAgICAgICAgIGltcGwgPSBuZXh0TmFtZWRJdGVtSW50ZXJuYWwobmFtZSk7Cisg
ICAgfQogICAgIHJldHVybiBpbXBsOwogfQogCkBAIC0xOTQsNyArMTkzLDcgQEAgdm9pZCBIVE1M
Rm9ybUNvbGxlY3Rpb246OnVwZGF0ZU5hbWVDYWNoZQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBmLT5tX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50KiBlID0gZi0+bV9hc3NvY2lhdGVkRWxlbWVudHNbaV07CiAgICAg
ICAgIGlmIChlLT5pc0VudW1lcmF0YWJsZSgpKSB7Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGlkQXR0clZhbCA9IGUtPmdldEF0dHJpYnV0ZShlLT5pZEF0dHJpYnV0ZU5hbWUoKSk7
CisgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkQXR0clZhbCA9IGUtPmdldElkQXR0
cmlidXRlKCk7CiAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVBdHRyVmFsID0g
ZS0+Z2V0QXR0cmlidXRlKG5hbWVBdHRyKTsKICAgICAgICAgICAgIGlmICghaWRBdHRyVmFsLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgICAgIC8vIGFkZCB0byBpZCBjYWNoZQpAQCAtMjIxLDcg
KzIyMCw3IEBAIHZvaWQgSFRNTEZvcm1Db2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUKIAogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmLT5tX2ltYWdlRWxlbWVudHMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgSFRNTEltYWdlRWxlbWVudCogZSA9IGYtPm1faW1hZ2VFbGVtZW50c1tpXTsK
LSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZEF0dHJWYWwgPSBlLT5nZXRBdHRyaWJ1dGUo
ZS0+aWRBdHRyaWJ1dGVOYW1lKCkpOworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkQXR0
clZhbCA9IGUtPmdldElkQXR0cmlidXRlKCk7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZUF0dHJWYWwgPSBlLT5nZXRBdHRyaWJ1dGUobmFtZUF0dHIpOwogICAgICAgICBpZiAoIWlk
QXR0clZhbC5pc0VtcHR5KCkgJiYgIWZvdW5kSW5wdXRFbGVtZW50cy5jb250YWlucyhpZEF0dHJW
YWwuaW1wbCgpKSkgewogICAgICAgICAgICAgLy8gYWRkIHRvIGlkIGNhY2hlCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTMsOSArNTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKLUhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYywgSFRNTEZvcm1FbGVt
ZW50KiBmLCBDb25zdHJ1Y3Rpb25UeXBlIGNvbnN0cnVjdGlvblR5cGUpCi0gICAgOiBIVE1MRWxl
bWVudCh0YWdOYW1lLCBkb2MsIGNvbnN0cnVjdGlvblR5cGUpCi0gICAgLCBtX2Zvcm0oZikKK0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZv
cm0pCisgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICAsIG1fZm9ybShm
b3JtKQogICAgICwgbV9kaXNhYmxlZChmYWxzZSkKICAgICAsIG1fcmVhZE9ubHkoZmFsc2UpCiAg
ICAgLCBtX3JlcXVpcmVkKGZhbHNlKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5oCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCByZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZE9ubHk7IH0KIAogcHJvdGVjdGVk
OgotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRl
SFRNTEVsZW1lbnRaZXJvUmVmQ291bnQpOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAko
cmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODYsMTIgKzg2LDEyIEBAIEhUTUxGb3JtRWxlbWVudDo6SFRNTEZvcm1F
bGVtZW50KGNvbnN0IFEKIAogUGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IEhUTUxGb3JtRWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxG
b3JtRWxlbWVudChmb3JtVGFnLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBI
VE1MRm9ybUVsZW1lbnQoZm9ybVRhZywgZG9jdW1lbnQpKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1M
Rm9ybUVsZW1lbnQ+IEhUTUxGb3JtRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxGb3Jt
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1M
Rm9ybUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogSFRNTEZvcm1FbGVtZW50Ojp+
SFRNTEZvcm1FbGVtZW50KCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNw
cAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBIVE1MRnJhbWVFbGVt
ZW50QmFzZTo6cGFyc2VNYXBwZWRBdAogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gc3JjQXR0
cikKICAgICAgICAgc2V0TG9jYXRpb24oZGVwcmVjYXRlZFBhcnNlVVJMKGF0dHItPnZhbHVlKCkp
KTsKLSAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaWRBdHRyaWJ1dGVOYW1lKCkpIHsKKyAg
ICBlbHNlIGlmIChpc0lkQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpKSB7CiAgICAgICAgIC8v
IEltcG9ydGFudCB0byBjYWxsIHRocm91Z2ggdG8gYmFzZSBmb3IgdGhlIGlkIGF0dHJpYnV0ZSBz
byB0aGUgaGFzSUQgYml0IGdldHMgc2V0LgogICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogICAgICAgICBtX2ZyYW1lTmFtZSA9IGF0dHIt
PnZhbHVlKCk7CkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6
c2V0TmFtZSgpCiB7CiAgICAgbV9mcmFtZU5hbWUgPSBnZXRBdHRyaWJ1dGUobmFtZUF0dHIpOwog
ICAgIGlmIChtX2ZyYW1lTmFtZS5pc051bGwoKSkKLSAgICAgICAgbV9mcmFtZU5hbWUgPSBnZXRB
dHRyaWJ1dGUoaWRBdHRyaWJ1dGVOYW1lKCkpOworICAgICAgICBtX2ZyYW1lTmFtZSA9IGdldElk
QXR0cmlidXRlKCk7CiAgICAgCiAgICAgaWYgKEZyYW1lKiBwYXJlbnRGcmFtZSA9IGRvY3VtZW50
KCktPmZyYW1lKCkpCiAgICAgICAgIG1fZnJhbWVOYW1lID0gcGFyZW50RnJhbWUtPnRyZWUoKS0+
dW5pcXVlQ2hpbGROYW1lKG1fZnJhbWVOYW1lKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVP
d25lckVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6SFRNTEZyYW1lT3duZXJF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
LSAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVIVE1MRWxlbWVudCkK
KyAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9jb250ZW50RnJh
bWUoMCkKICAgICAsIG1fc2FuZGJveEZsYWdzKFNhbmRib3hOb25lKQogewpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcg
QEAgSFRNTEZyYW1lU2V0RWxlbWVudDo6SFRNTEZyYW1lU2V0RWxlbWVudAogCiBQYXNzUmVmUHRy
PEhUTUxGcmFtZVNldEVsZW1lbnQ+IEhUTUxGcmFtZVNldEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJu
IG5ldyBIVE1MRnJhbWVTZXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEhUTUxGcmFtZVNldEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0K
IAogYm9vbCBIVE1MRnJhbWVTZXRFbGVtZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGls
ZCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMiArNDAsMTIg
QEAgSFRNTEhSRWxlbWVudDo6SFRNTEhSRWxlbWVudChjb25zdCBRdWFsaQogCiBQYXNzUmVmUHRy
PEhUTUxIUkVsZW1lbnQ+IEhUTUxIUkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQp
CiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MSFJFbGVtZW50KGhyVGFnLCBkb2N1bWVudCk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSFJFbGVtZW50KGhyVGFnLCBkb2N1bWVudCkpOwogfQog
CiBQYXNzUmVmUHRyPEhUTUxIUkVsZW1lbnQ+IEhUTUxIUkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJu
IG5ldyBIVE1MSFJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxIUkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogYm9vbCBIVE1M
SFJFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBw
ZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxI
ZWFkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxIZWFkRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9odG1sL0hUTUxIZWFkRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEyICszOSwxMiBAQCBIVE1MSGVhZEVsZW1lbnQ6OkhU
TUxIZWFkRWxlbWVudChjb25zdCBRCiAKIFBhc3NSZWZQdHI8SFRNTEhlYWRFbGVtZW50PiBIVE1M
SGVhZEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5l
dyBIVE1MSGVhZEVsZW1lbnQoaGVhZFRhZywgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSFRNTEhlYWRFbGVtZW50KGhlYWRUYWcsIGRvY3VtZW50KSk7CiB9CiAKIFBhc3NSZWZQ
dHI8SFRNTEhlYWRFbGVtZW50PiBIVE1MSGVhZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBI
VE1MSGVhZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTEhlYWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIFN0cmluZyBIVE1M
SGVhZEVsZW1lbnQ6OnByb2ZpbGUoKSBjb25zdApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxIZWFk
aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxl
bWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgaW5saW5lIEhUTUxIZWFk
aW5nRWxlbWVudDo6SFRNTEhlYWRpbmdFbAogCiBQYXNzUmVmUHRyPEhUTUxIZWFkaW5nRWxlbWVu
dD4gSFRNTEhlYWRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEhlYWRpbmdFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxIZWFk
aW5nRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBib29sIEhUTUxIZWFkaW5nRWxl
bWVudDo6Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpCkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTEh0bWxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEh0bWxF
bGVtZW50LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTIgKzQyLDEyIEBAIEhUTUxIdG1sRWxlbWVu
dDo6SFRNTEh0bWxFbGVtZW50KGNvbnN0IFEKIAogUGFzc1JlZlB0cjxIVE1MSHRtbEVsZW1lbnQ+
IEhUTUxIdG1sRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1
cm4gbmV3IEhUTUxIdG1sRWxlbWVudChodG1sVGFnLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBIVE1MSHRtbEVsZW1lbnQoaHRtbFRhZywgZG9jdW1lbnQpKTsKIH0KIAogUGFz
c1JlZlB0cjxIVE1MSHRtbEVsZW1lbnQ+IEhUTUxIdG1sRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4g
bmV3IEhUTUxIdG1sRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVE1MSHRtbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogU3RyaW5n
IEhUTUxIdG1sRWxlbWVudDo6dmVyc2lvbigpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTIgKzU1LDEyIEBAIEhUTUxJbWFnZUVsZW1l
bnQ6OkhUTUxJbWFnZUVsZW1lbnQoY29uc3QKIAogUGFzc1JlZlB0cjxIVE1MSW1hZ2VFbGVtZW50
PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJl
dHVybiBuZXcgSFRNTEltYWdlRWxlbWVudChpbWdUYWcsIGRvY3VtZW50KTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEhUTUxJbWFnZUVsZW1lbnQoaW1nVGFnLCBkb2N1bWVudCkpOwogfQogCiBQ
YXNzUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxl
bWVudCogZm9ybSkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxJbWFnZUVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQsIGZvcm0pOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEltYWdlRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwogfQogCiBIVE1MSW1hZ2VFbGVtZW50Ojp+SFRN
TEltYWdlRWxlbWVudCgpCkBAIC03MSw3ICs3MSw3IEBAIEhUTUxJbWFnZUVsZW1lbnQ6On5IVE1M
SW1hZ2VFbGVtZW50KCkKIAogUGFzc1JlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MSW1hZ2VF
bGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3Qg
aW50KiBvcHRpb25hbFdpZHRoLCBjb25zdCBpbnQqIG9wdGlvbmFsSGVpZ2h0KQogewotICAgIFJl
ZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbWFnZSA9IG5ldyBIVE1MSW1hZ2VFbGVtZW50KGltZ1Rh
ZywgZG9jdW1lbnQpOworICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbWFnZSA9IGFkb3B0
UmVmKG5ldyBIVE1MSW1hZ2VFbGVtZW50KGltZ1RhZywgZG9jdW1lbnQpKTsKICAgICBpZiAob3B0
aW9uYWxXaWR0aCkKICAgICAgICAgaW1hZ2UtPnNldFdpZHRoKCpvcHRpb25hbFdpZHRoKTsKICAg
ICBpZiAob3B0aW9uYWxIZWlnaHQgPiAwKQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgSFRNTElt
YWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRO
YW1lZEl0ZW0obmV3TmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9uYW1lID0gbmV3TmFtZTsK
LSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBpZEF0dHJpYnV0ZU5hbWUoKSkgeworICAg
IH0gZWxzZSBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKSkgewogICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIG5ld0lkID0gYXR0ci0+dmFsdWUoKTsKICAgICAgICAgaWYgKGlu
RG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7CiAgICAgICAgICAg
ICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhp
cy0+ZG9jdW1lbnQoKSk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lv
biA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI1LDcgKzEyNSw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1l
bnQoY29uc3QKIAogUGFzc1JlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MSW5wdXRFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhU
TUxJbnB1dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pKTsKIH0KIAogSFRNTElucHV0
RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1lbnQoKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJc0lu
ZGV4RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJc0luZGV4RWxl
bWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9odG1sL0hUTUxJc0luZGV4RWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEyICs0MSwxMiBAQCBIVE1MSXNJbmRleEVs
ZW1lbnQ6OkhUTUxJc0luZGV4RWxlbWVudChjCiAKIFBhc3NSZWZQdHI8SFRNTElzSW5kZXhFbGVt
ZW50PiBIVE1MSXNJbmRleEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxG
b3JtRWxlbWVudCogZm9ybSkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxJc0luZGV4RWxlbWVudChp
c2luZGV4VGFnLCBkb2N1bWVudCwgZm9ybSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1M
SXNJbmRleEVsZW1lbnQoaXNpbmRleFRhZywgZG9jdW1lbnQsIGZvcm0pKTsKIH0KIAogUGFzc1Jl
ZlB0cjxIVE1MSXNJbmRleEVsZW1lbnQ+IEhUTUxJc0luZGV4RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVt
ZW50KiBmb3JtKQogewotICAgIHJldHVybiBuZXcgSFRNTElzSW5kZXhFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50LCBmb3JtKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxJc0luZGV4RWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwogfQogCiB2b2lkIEhUTUxJc0luZGV4RWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTEtleWdlbkVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9I
VE1MS2V5Z2VuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgaW5s
aW5lIEhUTUxLZXlnZW5FbGVtZW50OjpIVE1MS2V5Z2VuRWxlbQogCiBQYXNzUmVmUHRyPEhUTUxL
ZXlnZW5FbGVtZW50PiBIVE1MS2V5Z2VuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQog
ewotICAgIHJldHVybiBuZXcgSFRNTEtleWdlbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZv
cm0pOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEtleWdlbkVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQsIGZvcm0pKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MS2V5Z2VuRWxl
bWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTElF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMTIgQEAgSFRNTExJRWxlbWVudDo6SFRNTExJRWxlbWVu
dChjb25zdCBRdWFsaQogCiBQYXNzUmVmUHRyPEhUTUxMSUVsZW1lbnQ+IEhUTUxMSUVsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MTElFbGVt
ZW50KGxpVGFnLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTElFbGVt
ZW50KGxpVGFnLCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxMSUVsZW1lbnQ+IEhU
TUxMSUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MTElFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxMSUVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpKTsKIH0KIAogYm9vbCBIVE1MTElFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25z
dApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcg
KzU2LDcgQEAgaW5saW5lIEhUTUxMYWJlbEVsZW1lbnQ6OkhUTUxMYWJlbEVsZW1lbgogCiBQYXNz
UmVmUHRyPEhUTUxMYWJlbEVsZW1lbnQ+IEhUTUxMYWJlbEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJu
IG5ldyBIVE1MTGFiZWxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEhUTUxMYWJlbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogYm9v
bCBIVE1MTGFiZWxFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
TGVnZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9odG1sL0hUTUxM
ZWdlbmRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBpbmxpbmUg
SFRNTExlZ2VuZEVsZW1lbnQ6OkhUTUxMZWdlbmRFbGVtCiAKIFBhc3NSZWZQdHI8SFRNTExlZ2Vu
ZEVsZW1lbnQ+IEhUTUxMZWdlbmRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiB7Ci0g
ICAgcmV0dXJuIG5ldyBIVE1MTGVnZW5kRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTGVnZW5kRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCwgZm9ybSkpOwogfQogCiBib29sIEhUTUxMZWdlbmRFbGVtZW50OjpzdXBwb3J0c0ZvY3Vz
KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Nyw3ICs1Nyw3IEBAIGlubGluZSBIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudCgKIAog
UGFzc1JlZlB0cjxIVE1MTGlua0VsZW1lbnQ+IEhUTUxMaW5rRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVk
QnlQYXJzZXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MTGlua0VsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQsIGNyZWF0ZWRCeVBhcnNlcik7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTGlu
a0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpOwogfQogCiBIVE1M
TGlua0VsZW1lbnQ6On5IVE1MTGlua0VsZW1lbnQoKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxN
YXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDEyICs0NiwxMiBAQCBIVE1MTWFwRWxlbWVudDo6SFRNTE1h
cEVsZW1lbnQoY29uc3QgUXVhCiAKIFBhc3NSZWZQdHI8SFRNTE1hcEVsZW1lbnQ+IEhUTUxNYXBF
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRN
TE1hcEVsZW1lbnQobWFwVGFnLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBI
VE1MTWFwRWxlbWVudChtYXBUYWcsIGRvY3VtZW50KSk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTE1h
cEVsZW1lbnQ+IEhUTUxNYXBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTE1hcEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE1hcEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogSFRNTE1hcEVsZW1lbnQ6On5IVE1MTWFw
RWxlbWVudCgpCkBAIC0xMDUsMjUgKzEwNSwzMCBAQCBIVE1MSW1hZ2VFbGVtZW50KiBIVE1MTWFw
RWxlbWVudDo6aW1hZ2VFCiAgICAgcmV0dXJuIDA7ICAgIAogfQogICAgIAotdm9pZCBIVE1MTWFw
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQordm9pZCBIVE1M
TWFwRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyaWJ1dGUpCiB7
Ci0gICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUgPSBhdHRyLT5uYW1lKCk7Ci0gICAg
aWYgKGF0dHJOYW1lID09IGlkQXR0cmlidXRlTmFtZSgpIHx8IGF0dHJOYW1lID09IG5hbWVBdHRy
KSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOwotICAgICAgICBpZiAoYXR0
ck5hbWUgPT0gaWRBdHRyaWJ1dGVOYW1lKCkpIHsKKyAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBz
ZWVtcyB3cm9uZyBmb3IgWE1MIGRvY3VtZW50cy4KKyAgICAvLyBFaXRoZXIgdGhlIGlkIG9yIG5h
bWUgd2lsbCBiZSB1c2VkIGRlcGVuZGluZyBvbiB0aGUgb3JkZXIgdGhlIGF0dHJpYnV0ZXMgYXJl
IHBhcnNlZC4KKworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0gYXR0cmlidXRl
LT5uYW1lKCk7CisgICAgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKGF0dHJOYW1lKSB8fCBhdHRyTmFt
ZSA9PSBuYW1lQXR0cikgeworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1
bWVudCgpOworICAgICAgICBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUoYXR0ck5hbWUpKSB7CiAgICAg
ICAgICAgICAvLyBDYWxsIGJhc2UgY2xhc3Mgc28gdGhhdCBoYXNJRCBiaXQgZ2V0cyBzZXQuCi0g
ICAgICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7Ci0gICAg
ICAgICAgICBpZiAoZG9jLT5pc0hUTUxEb2N1bWVudCgpKQorICAgICAgICAgICAgSFRNTEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBpZiAoZG9j
dW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9Ci0gICAgICAgIGRvYy0+cmVtb3ZlSW1hZ2VNYXAodGhpcyk7Ci0gICAgICAgIFN0cmluZyBt
YXBOYW1lID0gYXR0ci0+dmFsdWUoKTsKKyAgICAgICAgZG9jdW1lbnQtPnJlbW92ZUltYWdlTWFw
KHRoaXMpOworICAgICAgICBTdHJpbmcgbWFwTmFtZSA9IGF0dHJpYnV0ZS0+dmFsdWUoKTsKICAg
ICAgICAgaWYgKG1hcE5hbWVbMF0gPT0gJyMnKQogICAgICAgICAgICAgbWFwTmFtZSA9IG1hcE5h
bWUuc3Vic3RyaW5nKDEpOwotICAgICAgICBtX25hbWUgPSBkb2MtPmlzSFRNTERvY3VtZW50KCkg
PyBtYXBOYW1lLmxvd2VyKCkgOiBtYXBOYW1lOwotICAgICAgICBkb2MtPmFkZEltYWdlTWFwKHRo
aXMpOwotICAgIH0gZWxzZQotICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoYXR0cik7CisgICAgICAgIG1fbmFtZSA9IGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpID8g
bWFwTmFtZS5sb3dlcigpIDogbWFwTmFtZTsKKyAgICAgICAgZG9jdW1lbnQtPmFkZEltYWdlTWFw
KHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSFRNTEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rp
b24+IEhUTUxNYXBFbGVtZW50OjphcmVhcygpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1hcnF1
ZWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVt
ZW50LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgSFRNTE1hcnF1
ZWVFbGVtZW50OjpIVE1MTWFycXVlZUVsCiAKIFBhc3NSZWZQdHI8SFRNTE1hcnF1ZWVFbGVtZW50
PiBIVE1MTWFycXVlZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MTWFycXVlZUVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE1hcnF1
ZWVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wgSFRNTE1hcnF1ZWVFbGVt
ZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRy
aWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZW51RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgaW5saW5lIEhUTUxNZW51RWxlbWVudDo6SFRN
TE1lbnVFbGVtZW50KAogCiBQYXNzUmVmUHRyPEhUTUxNZW51RWxlbWVudD4gSFRNTE1lbnVFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTE1lbnVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxNZW51RWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQogCiBib29sIEhUTUxNZW51RWxlbWVudDo6Y29tcGFjdCgpIGNvbnN0CkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTE1ldGFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBp
bmxpbmUgSFRNTE1ldGFFbGVtZW50OjpIVE1MTWV0YUVsZW1lbnQoCiAKIFBhc3NSZWZQdHI8SFRN
TE1ldGFFbGVtZW50PiBIVE1MTWV0YUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MTWV0
YUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TE1ldGFFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIHZvaWQgSFRNTE1ldGFFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxNZXRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
TWV0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCisvLyBGSVhNRTog
VGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgdGFrZSBhbiBleHBsaWNpdCBmb3JtIGVsZW1lbnQgcG9p
bnRlciBwYXNzZWQgZnJvbSB0aGUKKy8vIHBhcnNlciBsaWtlIHRoZSBjb25zdHJ1Y3RvcnMgZm9y
IGFsbCB0aGUgb3RoZXIgY2xhc3NlcyBkZXJpdmVkIGZyb20gSFRNTEZvcm1Db250cm9sRWxlbWVu
dC4KIEhUTUxNZXRlckVsZW1lbnQ6OkhUTUxNZXRlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRNTEZvcm1Db250cm9sRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCwgMCwgQ3JlYXRlSFRNTEVsZW1lbnQpCisgICAgOiBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCAwKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKG1ldGVyVGFnKSk7CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1vZEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBpbmxpbmUgSFRNTE1vZEVsZW1lbnQ6OkhUTUxNb2RF
bGVtZW50KGNvCiAKIFBhc3NSZWZQdHI8SFRNTE1vZEVsZW1lbnQ+IEhUTUxNb2RFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQog
ewotICAgIHJldHVybiBuZXcgSFRNTE1vZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE1vZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
IH0KIAogU3RyaW5nIEhUTUxNb2RFbGVtZW50OjpjaXRlKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MTmFtZUNvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9I
VE1MTmFtZUNvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIEVs
ZW1lbnQqIEhUTUxOYW1lQ29sbGVjdGlvbjo6aXRlbUFmdGVyKEUKICAgICAgICAgICAgICAgICAg
ICAgZS0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQogICAgICAgICAgICAgICAgICAgICBpZiAoZS0+
Z2V0QXR0cmlidXRlKG5hbWVBdHRyKSA9PSBtX25hbWUpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZTsKLSAgICAgICAgICAgICAgICBpZiAoZS0+Z2V0QXR0cmlidXRlKGUtPmlkQXR0
cmlidXRlTmFtZSgpKSA9PSBtX25hbWUpCisgICAgICAgICAgICAgICAgaWYgKGUtPmdldElkQXR0
cmlidXRlKCkgPT0gbV9uYW1lKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROYW1lZEl0ZW1zOgpA
QCAtNzQsMTQgKzc0LDE0IEBAIEVsZW1lbnQqIEhUTUxOYW1lQ29sbGVjdGlvbjo6aXRlbUFmdGVy
KEUKICAgICAgICAgICAgICAgICAgICAgaWYgKGUtPmdldEF0dHJpYnV0ZShuYW1lQXR0cikgPT0g
bV9uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGU7CiAgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChlLT5oYXNUYWdOYW1lKGFwcGxldFRhZykpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGUtPmdldEF0dHJpYnV0ZShuYW1lQXR0cikgPT0gbV9uYW1lIHx8IGUtPmdldEF0
dHJpYnV0ZShlLT5pZEF0dHJpYnV0ZU5hbWUoKSkgPT0gbV9uYW1lKQorICAgICAgICAgICAgICAg
ICAgICBpZiAoZS0+Z2V0QXR0cmlidXRlKG5hbWVBdHRyKSA9PSBtX25hbWUgfHwgZS0+Z2V0SWRB
dHRyaWJ1dGUoKSA9PSBtX25hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAoKGUtPmdldEF0dHJpYnV0ZShuYW1lQXR0cikgPT0gbV9u
YW1lIHx8IGUtPmdldEF0dHJpYnV0ZShlLT5pZEF0dHJpYnV0ZU5hbWUoKSkgPT0gbV9uYW1lKQor
ICAgICAgICAgICAgICAgICAgICBpZiAoKGUtPmdldEF0dHJpYnV0ZShuYW1lQXR0cikgPT0gbV9u
YW1lIHx8IGUtPmdldElkQXR0cmlidXRlKCkgPT0gbV9uYW1lKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICYmIHN0YXRpY19jYXN0PEhUTUxPYmplY3RFbGVtZW50Kj4oZSktPmlzRG9jTmFt
ZWRJdGVtKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGUtPmhhc1RhZ05hbWUoaW1nVGFnKSkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoZS0+Z2V0QXR0cmlidXRlKG5hbWVBdHRyKSA9PSBtX25hbWUgfHwgKGUtPmdldEF0
dHJpYnV0ZShlLT5pZEF0dHJpYnV0ZU5hbWUoKSkgPT0gbV9uYW1lICYmIGUtPmhhc0F0dHJpYnV0
ZShuYW1lQXR0cikpKQorICAgICAgICAgICAgICAgICAgICBpZiAoZS0+Z2V0QXR0cmlidXRlKG5h
bWVBdHRyKSA9PSBtX25hbWUgfHwgKGUtPmdldElkQXR0cmlidXRlKCkgPT0gbV9uYW1lICYmIGUt
Pmhhc0F0dHJpYnV0ZShuYW1lQXR0cikpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MTm9TY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDcgQEAgaW5saW5lIEhUTUxOb1NjcmlwdEVsZW1lbnQ6OkhUTUxOb1NjcmlwdAogCiBQYXNzUmVm
UHRyPEhUTUxOb1NjcmlwdEVsZW1lbnQ+IEhUTUxOb1NjcmlwdEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0
dXJuIG5ldyBIVE1MTm9TY3JpcHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEhUTUxOb1NjcmlwdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
IH0KIAogYm9vbCBIVE1MTm9TY3JpcHRFbGVtZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdD
aGlsZCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0KQor
KysgV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MiwxMiArNDIsMTIgQEAgSFRNTE9MaXN0RWxlbWVudDo6SFRNTE9MaXN0RWxlbWVudChjb25zdAog
CiBQYXNzUmVmUHRyPEhUTUxPTGlzdEVsZW1lbnQ+IEhUTUxPTGlzdEVsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MT0xpc3RFbGVtZW50KG9s
VGFnLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT0xpc3RFbGVtZW50
KG9sVGFnLCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxPTGlzdEVsZW1lbnQ+IEhU
TUxPTGlzdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MT0xpc3RFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxPTGlzdEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogYm9vbCBIVE1MT0xpc3RFbGVtZW50OjptYXBUb0Vu
dHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYg
cmVzdWx0KSBjb25zdApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCShyZXZpc2lv
biA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkTmFtZWRJdGVtKG5ld05hbWUpOwog
ICAgICAgICB9CiAgICAgICAgIG1fbmFtZSA9IG5ld05hbWU7Ci0gICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gaWRBdHRyaWJ1dGVOYW1lKCkpIHsKKyAgICB9IGVsc2UgaWYgKGlzSWRBdHRy
aWJ1dGVOYW1lKGF0dHItPm5hbWUoKSkpIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdJZCA9IGF0dHItPnZhbHVlKCk7CiAgICAgICAgIGlmIChpc0RvY05hbWVkSXRlbSgpICYmIGlu
RG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7CiAgICAgICAgICAg
ICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhp
cy0+ZG9jdW1lbnQoKSk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBpbmxpbmUgSFRNTE9wdEdyb3VwRWxlbWVu
dDo6SFRNTE9wdEdyb3VwCiAKIFBhc3NSZWZQdHI8SFRNTE9wdEdyb3VwRWxlbWVudD4gSFRNTE9w
dEdyb3VwRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewotICAgIHJldHVybiBuZXcg
SFRNTE9wdEdyb3VwRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIVE1MT3B0R3JvdXBFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3Jt
KSk7CiB9CiAKIGJvb2wgSFRNTE9wdEdyb3VwRWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIGNvbnN0
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysg
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAs
MTggKzUwLDE4IEBAIEhUTUxPcHRpb25FbGVtZW50OjpIVE1MT3B0aW9uRWxlbWVudChjb24KIAog
UGFzc1JlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIHsKLSAgICByZXR1cm4g
bmV3IEhUTUxPcHRpb25FbGVtZW50KG9wdGlvblRhZywgZG9jdW1lbnQsIGZvcm0pOworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSFRNTE9wdGlvbkVsZW1lbnQob3B0aW9uVGFnLCBkb2N1bWVudCwg
Zm9ybSkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewotICAgIHJldHVybiBuZXcgSFRNTE9wdGlv
bkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTE9wdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pKTsKIH0KIAogUGFz
c1JlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZUZvckpT
Q29uc3RydWN0b3IoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0
IFN0cmluZyYgdmFsdWUsCiAgICAgICAgIGJvb2wgZGVmYXVsdFNlbGVjdGVkLCBib29sIHNlbGVj
dGVkLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+
IGVsZW1lbnQgPSBuZXcgSFRNTE9wdGlvbkVsZW1lbnQob3B0aW9uVGFnLCBkb2N1bWVudCk7Cisg
ICAgUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IEhUTUxP
cHRpb25FbGVtZW50KG9wdGlvblRhZywgZG9jdW1lbnQpKTsKIAogICAgIFJlZlB0cjxUZXh0PiB0
ZXh0ID0gVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBkYXRhLmlzTnVsbCgpID8gIiIgOiBkYXRhKTsK
IApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0
NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDcgKzQxLDcgQEAgaW5saW5lIEhUTUxQYXJhZ3JhcGhFbGVtZW50OjpIVE1MUGFy
YWdyYQogCiBQYXNzUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBIVE1MUGFyYWdyYXBoRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxQYXJhZ3JhcGhFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxQYXJhZ3JhcGhFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wgSFRNTFBhcmFncmFwaEVsZW1lbnQ6OmNoZWNr
RFREKGNvbnN0IE5vZGUqIG5ld0NoaWxkKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNw
cAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDEyICszOSwxMiBAQCBpbmxpbmUgSFRNTFBhcmFtRWxlbWVu
dDo6SFRNTFBhcmFtRWxlbWVuCiAKIFBhc3NSZWZQdHI8SFRNTFBhcmFtRWxlbWVudD4gSFRNTFBh
cmFtRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxQYXJhbUVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFBhcmFtRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkpOwogfQogCiB2b2lkIEhUTUxQYXJhbUVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IGlk
QXR0cmlidXRlTmFtZSgpKSB7CisgICAgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUo
KSkpIHsKICAgICAgICAgLy8gTXVzdCBjYWxsIGJhc2UgY2xhc3Mgc28gdGhhdCBoYXNJRCBiaXQg
Z2V0cyBzZXQuCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KTsKICAgICAgICAgaWYgKGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQ
YXJzZXIuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQAogI2luY2x1ZGUgIkhUTUxUb2tlbml6
ZXIuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgot
I2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUcmVlRGVwdGhMaW1pdC5oIgpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5o
CShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDEyICsyNCwxMiBAQAogI2lmbmRlZiBIVE1MUGFyc2VyX2gKICNkZWZpbmUg
SFRNTFBhcnNlcl9oCiAKKyNpbmNsdWRlICJIVE1MUGFyc2VyRXJyb3JDb2Rlcy5oIgorI2luY2x1
ZGUgIk1hcHBlZEF0dHJpYnV0ZUVudHJ5LmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlICJIVE1MUGFyc2VyRXJyb3JDb2Rlcy5oIgotI2lu
Y2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZUVudHJ5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUv
aHRtbC9IVE1MUHJlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAg
aW5saW5lIEhUTUxQcmVFbGVtZW50OjpIVE1MUHJlRWxlbWVudChjbwogCiBQYXNzUmVmUHRyPEhU
TUxQcmVFbGVtZW50PiBIVE1MUHJlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxQcmVF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxQ
cmVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wgSFRNTFByZUVsZW1lbnQ6
Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0
ZUVudHJ5JiByZXN1bHQpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBIVE1MUHJvZ3Jlc3NFbGVtZW50OjpIVE1M
UHJvZ3Jlc3NFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQotICAgIDogSFRNTEZvcm1Db250cm9sRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSwgQ3JlYXRlSFRNTEVsZW1lbnQpCisgICAgOiBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKHByb2dyZXNzVGFnKSk7CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TFF1b3RlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBpbmxpbmUgSFRNTFF1b3Rl
RWxlbWVudDo6SFRNTFF1b3RlRWxlbWVuCiAKIFBhc3NSZWZQdHI8SFRNTFF1b3RlRWxlbWVudD4g
SFRNTFF1b3RlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxRdW90ZUVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFF1b3RlRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiB2b2lkIEhUTUxRdW90ZUVsZW1lbnQ6Omluc2Vy
dGVkSW50b0RvY3VtZW50KCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkocmV2
aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIGlubGluZSBIVE1MU2NyaXB0RWxlbWVudDo6SFRN
TFNjcmlwdEVsZW0KIAogUGFzc1JlZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4gSFRNTFNjcmlwdEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewotICAgIHJldHVybiBuZXcgSFRNTFNjcmlw
dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcik7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIVE1MU2NyaXB0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRl
ZEJ5UGFyc2VyKSk7CiB9CiAKIGJvb2wgSFRNTFNjcmlwdEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIEhUTUxTZWxlY3RFbGVtZW50OjpIVE1M
U2VsZWN0RWxlbWVudChjb24KIFBhc3NSZWZQdHI8SFRNTFNlbGVjdEVsZW1lbnQ+IEhUTUxTZWxl
Y3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiB7CiAgICAgQVNTRVJUKHRhZ05hbWUu
bWF0Y2hlcyhzZWxlY3RUYWcpKTsKLSAgICByZXR1cm4gbmV3IEhUTUxTZWxlY3RFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50LCBmb3JtKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxTZWxl
Y3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKSk7CiB9CiAKIGJvb2wgSFRNTFNlbGVj
dEVsZW1lbnQ6OmNoZWNrRFREKGNvbnN0IE5vZGUqIG5ld0NoaWxkKQpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TFNvdXJjZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
U291cmNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgaW5saW5l
IEhUTUxTb3VyY2VFbGVtZW50OjpIVE1MU291cmNlRWxlbQogCiBQYXNzUmVmUHRyPEhUTUxTb3Vy
Y2VFbGVtZW50PiBIVE1MU291cmNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxTb3Vy
Y2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhU
TUxTb3VyY2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIHZvaWQgSFRNTFNvdXJj
ZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
U3R5bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGlubGluZSBIVE1MU3R5bGVF
bGVtZW50OjpIVE1MU3R5bGVFbGVtZW4KIAogUGFzc1JlZlB0cjxIVE1MU3R5bGVFbGVtZW50PiBI
VE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKLSAgICByZXR1cm4gbmV3
IEhUTUxTdHlsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcik7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MU3R5bGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
LCBjcmVhdGVkQnlQYXJzZXIpKTsKIH0KIAogLy8gb3RoZXIgc3R1ZmYuLi4KSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBAIGlubGluZSBIVE1MVGFibGVDYXB0aW9uRWxlbWVudDo6SFRNTFRhYmwK
IAogUGFzc1JlZlB0cjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4gSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MVGFibGVDYXB0aW9uRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVGFibGVDYXB0aW9uRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBib29sIEhUTUxUYWJsZUNhcHRpb25FbGVt
ZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRy
aWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNl
bGxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxs
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgaW5saW5lIEhUTUxU
YWJsZUNlbGxFbGVtZW50OjpIVE1MVGFibGVDZQogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZUNlbGxF
bGVtZW50PiBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxUYWJs
ZUNlbGxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEhUTUxUYWJsZUNlbGxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGludCBIVE1M
VGFibGVDZWxsRWxlbWVudDo6Y2VsbEluZGV4KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MVGFibGVDb2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRh
YmxlQ29sRWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUNvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGlubGlu
ZSBIVE1MVGFibGVDb2xFbGVtZW50OjpIVE1MVGFibGVDb2wKIAogUGFzc1JlZlB0cjxIVE1MVGFi
bGVDb2xFbGVtZW50PiBIVE1MVGFibGVDb2xFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRN
TFRhYmxlQ29sRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBIVE1MVGFibGVDb2xFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIEhUTUxU
YWdTdGF0dXMgSFRNTFRhYmxlQ29sRWxlbWVudDo6ZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdApJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEyICs1
NSwxMiBAQCBIVE1MVGFibGVFbGVtZW50OjpIVE1MVGFibGVFbGVtZW50KGNvbnN0CiAKIFBhc3NS
ZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxUYWJsZUVsZW1lbnQodGFibGVUYWcs
IGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUYWJsZUVsZW1lbnQodGFi
bGVUYWcsIGRvY3VtZW50KSk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gSFRN
TFRhYmxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxUYWJsZUVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFRhYmxlRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBib29sIEhUTUxUYWJsZUVsZW1lbnQ6OmNoZWNrRFRE
KGNvbnN0IE5vZGUqIG5ld0NoaWxkKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50
LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEyICs0NiwxMiBAQCBIVE1MVGFibGVSb3dFbGVt
ZW50OjpIVE1MVGFibGVSb3dFbGVtZW50CiAKIFBhc3NSZWZQdHI8SFRNTFRhYmxlUm93RWxlbWVu
dD4gSFRNTFRhYmxlUm93RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAg
ICByZXR1cm4gbmV3IEhUTUxUYWJsZVJvd0VsZW1lbnQodHJUYWcsIGRvY3VtZW50KTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUYWJsZVJvd0VsZW1lbnQodHJUYWcsIGRvY3VtZW50KSk7
CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRhYmxlUm93RWxlbWVudD4gSFRNTFRhYmxlUm93RWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxUYWJsZVJvd0VsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFRhYmxlUm93RWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCiBib29sIEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNoZWNrRFREKGNv
bnN0IE5vZGUqIG5ld0NoaWxkKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25F
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgaW5saW5lIEhU
TUxUYWJsZVNlY3Rpb25FbGVtZW50OjpIVE1MVGFibAogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50PiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3
IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CiAKIGJvb2wgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OmNoZWNrRFREKGNvbnN0IE5vZGUq
IG5ld0NoaWxkKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkocmV2aXNp
b24gNjA0NDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgSFRNTFRleHRBcmVhRWxlbWVudDo6SFRNTFRleHRB
cmVhRWxlbWVudAogCiBQYXNzUmVmUHRyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+IEhUTUxUZXh0QXJl
YUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxU
ZXh0QXJlYUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pOworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTFRleHRBcmVhRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmZvcm1Db250cm9s
VHlwZSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2
MDQ0NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNyArNDAsNyBAQCBpbmxpbmUgSFRNTFRpdGxlRWxlbWVudDo6SFRNTFRpdGxlRWxl
bWVuCiAKIFBhc3NSZWZQdHI8SFRNTFRpdGxlRWxlbWVudD4gSFRNTFRpdGxlRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsK
LSAgICByZXR1cm4gbmV3IEhUTUxUaXRsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFRpdGxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkp
OwogfQogCiB2b2lkIEhUTUxUaXRsZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzks
MTIgQEAgSFRNTFVMaXN0RWxlbWVudDo6SFRNTFVMaXN0RWxlbWVudChjb25zdAogCiBQYXNzUmVm
UHRyPEhUTUxVTGlzdEVsZW1lbnQ+IEhUTUxVTGlzdEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCog
ZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MVUxpc3RFbGVtZW50KHVsVGFnLCBkb2N1
bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVUxpc3RFbGVtZW50KHVsVGFnLCBk
b2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxVTGlzdEVsZW1lbnQ+IEhUTUxVTGlzdEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MVUxpc3RFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxVTGlzdEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpKTsKIH0KIAogYm9vbCBIVE1MVUxpc3RFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBj
b25zdApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gNjA0NDQpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDcgKzU0LDcgQEAgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQ6OkhUTUxWaWRlb0VsZW1lbgogCiBQ
YXNzUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0
dXJuIG5ldyBIVE1MVmlkZW9FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEhUTUxWaWRlb0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAog
Ym9vbCBIVE1MVmlkZW9FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHls
ZSkgCkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRGb250LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9DYWNoZWRGb250LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3Jl
L2xvYWRlci9DYWNoZWRGb250LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDExICsxNzYsOSBA
QCBTVkdGb250RWxlbWVudCogQ2FjaGVkRm9udDo6Z2V0U1ZHRm9udEJ5CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxTVkdGb250RWxlbWVudCo+KGxpc3QtPml0ZW0oMCkpOwogCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7ICsraSkgewotICAgICAgICBOb2RlKiBu
b2RlID0gbGlzdC0+aXRlbShpKTsKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PEVsZW1lbnQqPihu
b2RlKS0+Z2V0QXR0cmlidXRlKHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+aWRBdHRyaWJ1
dGVOYW1lKCkpICE9IGZvbnROYW1lKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFNWR0ZvbnRFbGVtZW50Kj4obm9kZSk7CisgICAgICAgIFNWR0Zv
bnRFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRm9udEVsZW1lbnQqPihsaXN0LT5p
dGVtKGkpKTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkgPT0gZm9udE5h
bWUpCisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICB9CiAKICAgICByZXR1cm4gMDsK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNv
cmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEw
LDcgQEAgcHJpdmF0ZToKIAogaW5saW5lIFBhc3NSZWZQdHI8SW1hZ2VEb2N1bWVudEVsZW1lbnQ+
IEltYWdlRG9jdW1lbnRFbGVtZW50OjpjcmVhdGUoSW1hZ2VEb2N1bWVudCogZG9jdW1lbnQpCiB7
Ci0gICAgcmV0dXJuIG5ldyBJbWFnZURvY3VtZW50RWxlbWVudChkb2N1bWVudCk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJbWFnZURvY3VtZW50RWxlbWVudChkb2N1bWVudCkpOwogfQogCiAv
LyAtLS0tLS0tLQpJbmRleDogV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0
KQorKysgV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFs
ZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM3LDIwICszOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2lu
ZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAgICAgCiBNYXRoTUxFbGVtZW50OjpNYXRoTUxFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKLSAg
ICA6IFN0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZVN0eWxlZEVsZW1lbnRa
ZXJvUmVmQ291bnQpCisgICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewog
fQogICAgIAogUGFzc1JlZlB0cjxNYXRoTUxFbGVtZW50PiBNYXRoTUxFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAg
IHJldHVybiBuZXcgTWF0aE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNYXRoTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9Ci0KLVJl
bmRlck9iamVjdCogTWF0aE1MRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSogc3R5bGUpCi17Ci0gICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRlT2Jq
ZWN0KHRoaXMsIHN0eWxlKTsKLX0KLSAgICAKICAgICAKIH0KIApJbmRleDogV2ViQ29yZS9tYXRo
bWwvTWF0aE1MRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL01hdGhNTEVs
ZW1lbnQuaAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDE4ICszMSwxNiBAQAogI2lu
Y2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiBj
bGFzcyBNYXRoTUxFbGVtZW50IDogcHVibGljIFN0eWxlZEVsZW1lbnQgewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1hdGhNTEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhN
TEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgCi0gICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKLSAg
ICAKKwogcHJvdGVjdGVkOgogICAgIE1hdGhNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqKTsKLSAgICAKKworcHJpdmF0ZTogICAgCisgICAgdmlydHVhbCBi
b29sIGlzTWF0aE1MRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIH07CiAgICAgCiB9
CkluZGV4OiBXZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250
YWluZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyAr
MzMsNiBAQAogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1M
QmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxGcmFjdGlvbi5oIgotI2luY2x1ZGUgIlJl
bmRlck1hdGhNTE1hdGguaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxSb290LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyTWF0aE1MUm93LmgiCiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5o
IgpAQCAtNTAsMTYgKzUwLDE0IEBAIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6Ok1hdGhN
TElubGkKIAogUGFzc1JlZlB0cjxNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50PiBNYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgTWF0aE1MSW5saW5lQ29u
dGFpbmVyRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAK
LVJlbmRlck9iamVjdCogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEgKmFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCitSZW5kZXJPYmplY3Qq
IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewotICAgIFJlbmRlck9iamVjdCogb2JqZWN0
ID0gMDsKKyAgICBSZW5kZXJPYmplY3QqIG9iamVjdDsKICAgICBpZiAoaGFzTG9jYWxOYW1lKE1h
dGhNTE5hbWVzOjptcm93VGFnKSkKICAgICAgICAgb2JqZWN0ID0gbmV3IChhcmVuYSkgUmVuZGVy
TWF0aE1MUm93KHRoaXMpOwotICAgIGVsc2UgaWYgKGhhc0xvY2FsTmFtZShNYXRoTUxOYW1lczo6
bWF0aFRhZykpCi0gICAgICAgIG9iamVjdCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTE1hdGgo
dGhpcyk7CiAgICAgZWxzZSBpZiAoaGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptc3ViVGFnKSkK
ICAgICAgICAgb2JqZWN0ID0gbmV3IChhcmVuYSkgUmVuZGVyTWF0aE1MU3ViU3VwKHRoaXMpOwog
ICAgIGVsc2UgaWYgKGhhc0xvY2FsTmFtZShNYXRoTUxOYW1lczo6bXN1cFRhZykpCkBAIC04Myw5
ICs4MSw3IEBAIFJlbmRlck9iamVjdCogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWUKICAgICBv
YmplY3QtPnNldFN0eWxlKHN0eWxlKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQotICAgIAotICAg
IAorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQotCkluZGV4OiBXZWJDb3JlL21hdGht
bC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9t
YXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oCShyZXZpc2lvbiA2MDQ0NCkKKysr
IFdlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxv
d3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMTEgKzM2LDExIEBAIGNsYXNzIE1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQgOiBwdWIKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
YXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0KIHByb3RlY3RlZDoKICAgICBN
YXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50Kik7CiAKK3ByaXZhdGU6CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIH07CiAgICAgCiB9CkluZGV4
OiBXZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdl
YkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBt
aWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjksMjEgKzMwLDI1IEBACiAKICNpbmNsdWRlICJNYXRoTUxNYXRoRWxlbWVu
dC5oIgogCi0jaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKKyNpbmNsdWRlICJSZW5kZXJNYXRoTUxNYXRoLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LSAgICAKLXVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAotTWF0aE1MTWF0aEVsZW1lbnQ6
Ok1hdGhNTE1hdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKK2lubGluZSBNYXRoTUxNYXRoRWxlbWVudDo6TWF0aE1MTWF0aEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDog
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKIH0KIAog
UGFzc1JlZlB0cjxNYXRoTUxNYXRoRWxlbWVudD4gTWF0aE1MTWF0aEVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAg
cmV0dXJuIG5ldyBNYXRoTUxNYXRoRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNYXRoTUxNYXRoRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwor
fQorCitSZW5kZXJPYmplY3QqIE1hdGhNTE1hdGhFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKK3sKKyAgICBSZW5kZXJNYXRoTUxN
YXRoKiByZW5kZXJlciA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTE1hdGgodGhpcyk7CisgICAg
cmVuZGVyZXItPnNldFN0eWxlKHN0eWxlKTsKKyAgICByZXR1cm4gcmVuZGVyZXI7CiB9CiAKIH0K
SW5kZXg6IFdlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaAkocmV2aXNpb24gNjA0NDQpCisrKyBX
ZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1p
bG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMCwxNCArMzEsMTUgQEAKICNpbmNsdWRlICJNYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogY2xhc3MgTWF0aE1M
TWF0aEVsZW1lbnQgOiBwdWJsaWMgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWF0aE1MTWF0aEVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwotICAgIAotcHJvdGVjdGVkOgor
Citwcml2YXRlOgogICAgIE1hdGhNTE1hdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50Kik7Ci0gICAgCisKKyAgICB2aXJ0dWFsIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIH07CiAgICAgCiB9CkluZGV4OiBXZWJDb3JlL21h
dGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwv
TWF0aE1MVGV4dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvbWF0aG1s
L01hdGhNTFRleHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20p
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzYsMTQgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFj
ZSBNYXRoTUxOYW1lczsKIAotTWF0aE1MVGV4dEVsZW1lbnQ6Ok1hdGhNTFRleHRFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKK2lubGluZSBN
YXRoTUxUZXh0RWxlbWVudDo6TWF0aE1MVGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogTWF0aE1MRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKIHsKIH0KIAogUGFzc1JlZlB0cjxNYXRoTUxUZXh0RWxlbWVudD4gTWF0aE1M
VGV4dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBNYXRoTUxUZXh0RWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXRoTUxUZXh0RWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBSZW5kZXJPYmplY3QqIE1hdGhNTFRleHRFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkK
QEAgLTU0LDExICs1NSw5IEBAIFJlbmRlck9iamVjdCogTWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0
ZVIKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKLSAgICByZXR1cm4gUmVuZGVyT2Jq
ZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOworICAgIHJldHVybiBNYXRoTUxFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihhcmVuYSwgc3R5bGUpOwogfQogCi0gICAgCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoTUFUSE1MKQotCkluZGV4OiBXZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgJKHJl
dmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxl
eCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMTEgKzM2LDEwIEBAIGNsYXNzIE1hdGhN
TFRleHRFbGVtZW50IDogcHVibGljIE1hdGhNTEUKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxNYXRoTUxUZXh0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotICAgIAotcHJvdGVjdGVkOgorcHJpdmF0
ZToKICAgICBNYXRoTUxUZXh0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCopOwotICAgIAorCisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIH07CiAgICAgCiB9CkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiA2MDQ0NCkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzAsNyArNzAsNyBAQCBpbmxpbmUgTWVkaWFDb250cm9sU2hhZG93Um9vdEVsZW1l
bnQ6Ok1lCiAKIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sU2hhZG93Um9vdEVsZW1lbnQ+IE1lZGlh
Q29udHJvbFNoYWRvd1Jvb3RFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFF
bGVtZW50KQogewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVudD4gZWxl
bWVudCA9IG5ldyBNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVudChtZWRpYUVsZW1lbnQpOwor
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVudD4gZWxlbWVudCA9IGFkb3B0
UmVmKG5ldyBNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVudChtZWRpYUVsZW1lbnQpKTsKIAog
ICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcm9vdFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgp
OwogICAgIHJvb3RTdHlsZS0+aW5oZXJpdEZyb20obWVkaWFFbGVtZW50LT5yZW5kZXJlcigpLT5z
dHlsZSgpKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBNZWRpYUNvbnRyb2xFbGVtZW50OjpNZWRpYUNv
bnRyb2xFbGVtZW50CiAKIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRWxlbWVudD4gTWVkaWFDb250
cm9sRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCwgUHNldWRv
SWQgcHNldWRvU3R5bGVJZCkKIHsKLSAgICByZXR1cm4gbmV3IE1lZGlhQ29udHJvbEVsZW1lbnQo
bWVkaWFFbGVtZW50LCBwc2V1ZG9TdHlsZUlkKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1l
ZGlhQ29udHJvbEVsZW1lbnQobWVkaWFFbGVtZW50LCBwc2V1ZG9TdHlsZUlkKSk7CiB9CiAKIHZv
aWQgTWVkaWFDb250cm9sRWxlbWVudDo6YXR0YWNoVG9QYXJlbnQoRWxlbWVudCogcGFyZW50KQpA
QCAtMjIyLDcgKzIyMiw3IEBAIGlubGluZSBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVs
ZW0KIAogUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IE1l
ZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCkKIHsKLSAgICByZXR1cm4gbmV3IE1lZGlhQ29udHJvbFRpbWVsaW5l
Q29udGFpbmVyRWxlbWVudChtZWRpYUVsZW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KG1lZGlhRWxlbWVudCkpOwogfQog
CiBib29sIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCkBAIC0yNTIsNyArMjUyLDcgQEAgaW5saW5lIE1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lcgogCiBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZv
bHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRh
aW5lckVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50KG1l
ZGlhRWxlbWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJDb250YWluZXJFbGVtZW50KG1lZGlhRWxlbWVudCkpOwogfQogCiBQYXNzUmVmUHRyPFJl
bmRlclN0eWxlPiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpzdHls
ZUZvckVsZW1lbnQoKQpAQCAtMjk4LDcgKzI5OCw3IEBAIGlubGluZSBNZWRpYUNvbnRyb2xTdGF0
dXNEaXNwbGF5RWxlbWVudDoKIAogUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5
RWxlbWVudD4gTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVk
aWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBNZWRpYUNvbnRyb2xT
dGF0dXNEaXNwbGF5RWxlbWVudChtZWRpYUVsZW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQobWVkaWFFbGVtZW50KSk7CiB9CiAK
IHZvaWQgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OnVwZGF0ZSgpCkBAIC00ODIs
NyArNDgyLDcgQEAgaW5saW5lIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpNZQogCiBQ
YXNzUmVmUHRyPE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xNdXRl
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKIHsK
LSAgICByZXR1cm4gbmV3IE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVu
dCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVu
dChtZWRpYUVsZW1lbnQpKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkBAIC01MDgsNyArNTA4LDcgQEAg
aW5saW5lIE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpNZQogCiBQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVu
dDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKIHsKLSAgICByZXR1cm4g
bmV3IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudChtZWRpYUVsZW1l
bnQpKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkBAIC01MzcsNyArNTM3LDcgQEAgaW5saW5lIE1lZGlh
Q29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpNZQogCiBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFNl
ZWtCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhU
TUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCwgUHNldWRvSWQgcHNldWRvU3R5bGVJZCkKIHsK
LSAgICByZXR1cm4gbmV3IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVu
dCwgcHNldWRvU3R5bGVJZCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xT
ZWVrQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQsIHBzZXVkb1N0eWxlSWQpKTsKIH0KIAogaW5s
aW5lIGJvb2wgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OmlzRm9yd2FyZEJ1dHRvbigp
IGNvbnN0CkBAIC02MDEsNyArNjAxLDcgQEAgaW5saW5lIE1lZGlhQ29udHJvbFJld2luZEJ1dHRv
bkVsZW1lbnQ6OgogCiBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+
IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0
b25FbGVtZW50KG1lZGlhRWxlbWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNv
bnRyb2xSZXdpbmRCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkpOwogfQogCiB2b2lkIE1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2
ZW50KQpAQCAtNjIzLDcgKzYyMyw3IEBAIGlubGluZSBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0
aW1lQnV0dG8KIAogUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9u
RWxlbWVudD4gTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0
ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBNZWRp
YUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQpOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVs
ZW1lbnQobWVkaWFFbGVtZW50KSk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFs
dGltZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQpAQCAt
NjQ1LDcgKzY0NSw3IEBAIGlubGluZSBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0IK
IAogUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1l
bnQ+IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRl
KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKIHsKLSAgICByZXR1cm4gbmV3IE1lZGlh
Q29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQpOwor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNC
dXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFRvZ2ds
ZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbnQpCkBAIC02NzIsNyArNjcyLDcgQEAgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpN
ZWRpYUNvbnRybwogCiBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFF
bGVtZW50KQogewotICAgIHJldHVybiBuZXcgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50KG1l
ZGlhRWxlbWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xUaW1lbGlu
ZUVsZW1lbnQobWVkaWFFbGVtZW50KSk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sVGltZWxpbmVF
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKQEAgLTcyNSw3ICs3MjUs
NyBAQCBpbmxpbmUgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6CiAKIFBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVm9sdW1lU2xp
ZGVyRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKIHsKLSAg
ICByZXR1cm4gbmV3IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQobWVkaWFFbGVtZW50
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1l
bnQobWVkaWFFbGVtZW50KSk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkBAIC03NjcsNyArNzY3LDcg
QEAgaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZQogCiBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkK
IHsKLSAgICByZXR1cm4gbmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KG1l
ZGlhRWxlbWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQpKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQp
CkBAIC03OTAsNyArNzkwLDcgQEAgaW5saW5lIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVu
dDo6TQogCiBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudD4gTWVkaWFD
b250cm9sVGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFF
bGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9TdHlsZUlkKQogewotICAgIHJldHVybiBuZXcgTWVkaWFD
b250cm9sVGltZURpc3BsYXlFbGVtZW50KG1lZGlhRWxlbWVudCwgcHNldWRvU3R5bGVJZCk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQobWVk
aWFFbGVtZW50LCBwc2V1ZG9TdHlsZUlkKSk7CiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudDo6c3R5bGVGb3JFbGVtZW50KCkKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAJKHJldmlz
aW9uIDYwNDQ0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIGlubGluZSBTaGFkb3dJbnB1dEVs
ZW1lbnQ6OlNoYWRvd0lucHV0RWwKIAogaW5saW5lIFBhc3NSZWZQdHI8U2hhZG93SW5wdXRFbGVt
ZW50PiBTaGFkb3dJbnB1dEVsZW1lbnQ6OmNyZWF0ZShOb2RlKiBzaGFkb3dQYXJlbnQpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBTaGFkb3dJbnB1dEVsZW1lbnQoc2hhZG93UGFyZW50KTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNoYWRvd0lucHV0RWxlbWVudChzaGFkb3dQYXJlbnQpKTsKIH0KIAog
UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sKEhUTUxJbnB1
dEVsZW1lbnQqIGlucHV0KQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCShyZXZp
c2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJRnJhbWUuaCIKIAog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxJRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1MiwxMCArMTI1Miw5IEBAIFN0cmluZyBSZW5k
ZXJMYXllckJhY2tpbmc6Om5hbWVGb3JMYXllcigKICAgICBTdHJpbmcgbmFtZSA9IHJlbmRlcmVy
KCktPnJlbmRlck5hbWUoKTsKICAgICBpZiAoTm9kZSogbm9kZSA9IHJlbmRlcmVyKCktPm5vZGUo
KSkgewogICAgICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICAgICAgbmFt
ZSArPSAiICIgKyBzdGF0aWNfY2FzdDxFbGVtZW50ICo+KG5vZGUpLT50YWdOYW1lKCk7Ci0KLSAg
ICAgICAgaWYgKG5vZGUtPmlzSFRNTEVsZW1lbnQoKSAmJiBzdGF0aWNfY2FzdDxIVE1MRWxlbWVu
dCAqPihub2RlKS0+aGFzSUQoKSkKLSAgICAgICAgICAgIG5hbWUgKz0gIiBcJyIgKyBzdGF0aWNf
Y2FzdDxFbGVtZW50ICo+KG5vZGUpLT5nZXRJREF0dHJpYnV0ZSgpICsgIlwnIjsKKyAgICAgICAg
ICAgIG5hbWUgKz0gIiAiICsgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT50YWdOYW1lKCk7
CisgICAgICAgIGlmIChub2RlLT5oYXNJRCgpKQorICAgICAgICAgICAgbmFtZSArPSAiIFwnIiAr
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+Z2V0SWRBdHRyaWJ1dGUoKSArICJcJyI7CiAg
ICAgfQogCiAgICAgaWYgKG1fb3duaW5nTGF5ZXItPmlzUmVmbGVjdGlvbigpKQpJbmRleDogV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCShyZXZpc2lvbiA2MDQ0
NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDE5ICsyOSwxNiBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9z
aXRvci5oIgogCiAjaW5jbHVkZSAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkNT
U1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVD
bGllbnQuaCIKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCi0j
aW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKLSNpZiBFTkFCTEUoUExVR0lOX1BST1hZ
X0ZPUl9WSURFTykKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCi0jZW5kaWYKKyNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAi
Tm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRP
YmplY3QuaCIKQEAgLTUyLDYgKzQ5LDEwIEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAKKyNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykK
KyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjZW5kaWYKKwogI2lmIFBST0ZJTEVfTEFZ
RVJfUkVCVUlMRAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2VuZGlmCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsNyBAQAogI2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgiCiAKICNpbmNsdWRlICJIVE1MRGl2
RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQcm9ncmVz
c0VsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZp
ZXcuaCIKQEAgLTU4LDcgKzU5LDcgQEAgaW5saW5lIFByb2dyZXNzVmFsdWVFbGVtZW50OjpQcm9n
cmVzc1ZhbAogCiBpbmxpbmUgUGFzc1JlZlB0cjxQcm9ncmVzc1ZhbHVlRWxlbWVudD4gUHJvZ3Jl
c3NWYWx1ZUVsZW1lbnQ6OmNyZWF0ZShOb2RlKiBzaGFkb3dQYXJlbnQpCiB7Ci0gICAgcmV0dXJu
IG5ldyBQcm9ncmVzc1ZhbHVlRWxlbWVudChzaGFkb3dQYXJlbnQpOworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQoc2hhZG93UGFyZW50KSk7CiB9CiAKIFJlbmRl
clByb2dyZXNzOjpSZW5kZXJQcm9ncmVzcyhIVE1MUHJvZ3Jlc3NFbGVtZW50KiBlbGVtZW50KQpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5o
CShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDggQEAgcHVibGljOgogICAg
IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKFNWR1N0eWxlZEVsZW1lbnQqIG5vZGUpCiAgICAg
ICAgIDogUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKG5vZGUpCiAgICAgICAgICwgUmVuZGVyU1ZH
UmVzb3VyY2UoKQotICAgICAgICAsIG1faWQobm9kZS0+Z2V0SURBdHRyaWJ1dGUoKSkKKyAgICAg
ICAgLy8gRklYTUU6IFNob3VsZCBwcm9iYWJseSBiZSB1c2luZyBnZXRJZEF0dHJpYnV0ZSByYXRo
ZXIgdGhhbiBpZEZvclN0eWxlUmVzb2x1dGlvbi4KKyAgICAgICAgLCBtX2lkKG5vZGUtPmhhc0lE
KCkgPyBub2RlLT5pZEZvclN0eWxlUmVzb2x1dGlvbigpIDogbnVsbEF0b20pCiAgICAgewogICAg
ICAgICBBU1NFUlQobm9kZS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIG5vZGUtPmRvY3VtZW50KCkt
PmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+YWRkUmVzb3VyY2UobV9pZCwgdGhpcyk7CkBAIC01NSw3
ICs1Niw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gUmVtb3ZlIG9sZCBpZCwgdGhhdCBpcyBndWFy
YW50ZWVkIHRvIGJlIHByZXNlbnQgaW4gY2FjaGUKICAgICAgICAgZXh0ZW5zaW9ucy0+cmVtb3Zl
UmVzb3VyY2UobV9pZCk7CiAKLSAgICAgICAgbV9pZCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihu
b2RlKCkpLT5nZXRJREF0dHJpYnV0ZSgpOworICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHByb2Jh
Ymx5IGJlIHVzaW5nIGdldElkQXR0cmlidXRlIHJhdGhlciB0aGFuIGlkRm9yU3R5bGVSZXNvbHV0
aW9uLgorICAgICAgICBtX2lkID0gbm9kZSgpLT5oYXNJRCgpID8gc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG5vZGUoKSktPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCkgOiBudWxsQXRvbTsKIAogICAgICAg
ICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgYW4gZWxlbWVudCBpcyByZWZlcmVuY2luZyB1cyB3aXRo
IHRoZSBuZXcgaWQsIGFuZCBoYXMgdG8gYmUgbm90aWZpZWQgdGhhdCB3ZSdyZSBleGlzdGluZyBu
b3cKICAgICAgICAgaWYgKGV4dGVuc2lvbnMtPmlzUGVuZGluZ1Jlc291cmNlKG1faWQpKSB7Cklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNyAr
ODQsNyBAQCBpbmxpbmUgU2xpZGVyVGh1bWJFbGVtZW50OjpTbGlkZXJUaHVtYkVsCiAKIGlubGlu
ZSBQYXNzUmVmUHRyPFNsaWRlclRodW1iRWxlbWVudD4gU2xpZGVyVGh1bWJFbGVtZW50OjpjcmVh
dGUoTm9kZSogc2hhZG93UGFyZW50KQogewotICAgIHJldHVybiBuZXcgU2xpZGVyVGh1bWJFbGVt
ZW50KHNoYWRvd1BhcmVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTbGlkZXJUaHVtYkVs
ZW1lbnQoc2hhZG93UGFyZW50KSk7CiB9CiAKIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NW
R1JlbmRlclRyZWVBc1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NW
R1JlbmRlclRyZWVBc1RleHQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTEsNyArMzUx
LDcgQEAgc3RhdGljIHZvaWQgd3JpdGVTVkdQYWludGluZ1Jlc291cmNlKFRleAogICAgIGVsc2Ug
aWYgKHJlc291cmNlLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJlc291cmNlVHlw
ZSkKICAgICAgICAgdHMgPDwgIlt0eXBlPVJBRElBTC1HUkFESUVOVF0iOwogCi0gICAgdHMgPDwg
IiBbaWQ9XCIiIDw8IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihub2RlKS0+Z2V0SURBdHRyaWJ1
dGUoKSA8PCAiXCJdIjsKKyAgICB0cyA8PCAiIFtpZD1cIiIgPDwgc3RhdGljX2Nhc3Q8U1ZHRWxl
bWVudCo+KG5vZGUpLT5nZXRJZEF0dHJpYnV0ZSgpIDw8ICJcIl0iOwogfQogCiBzdGF0aWMgdm9p
ZCB3cml0ZVN0eWxlKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3QmIG9iamVjdCkK
QEAgLTU4MSw3ICs1ODEsNyBAQCB2b2lkIHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIoVGV4dFN0
cmVhCiAgICAgd3JpdGVTdGFuZGFyZFByZWZpeCh0cywgb2JqZWN0LCBpbmRlbnQpOwogCiAgICAg
RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihvYmplY3Qubm9kZSgpKTsK
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZWxlbWVudC0+Z2V0SURBdHRyaWJ1dGUoKTsK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsK
ICAgICB3cml0ZU5hbWVBbmRRdW90ZWRWYWx1ZSh0cywgImlkIiwgaWQpOyAgICAKIAogICAgIFJl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiByZXNvdXJjZSA9IGNvbnN0X2Nhc3Q8UmVuZGVyT2Jq
ZWN0Jj4ob2JqZWN0KS50b1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKCk7CkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAJKHJldmlzaW9u
IDYwNDQ0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBUZXh0Q29udHJvbElubmVyRWxlbWVu
dDo6VGV4dENvbnRyb2xJbm5lCiAKIFBhc3NSZWZQdHI8VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ+
IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpjcmVhdGUoTm9kZSogc2hhZG93UGFyZW50KQogewot
ICAgIHJldHVybiBuZXcgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQoc2hhZG93UGFyZW50LT5kb2N1
bWVudCgpLCBzaGFkb3dQYXJlbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dENvbnRy
b2xJbm5lckVsZW1lbnQoc2hhZG93UGFyZW50LT5kb2N1bWVudCgpLCBzaGFkb3dQYXJlbnQpKTsK
IH0KIAogdm9pZCBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6YXR0YWNoSW5uZXJFbGVtZW50KE5v
ZGUqIHBhcmVudCwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIFJlbmRlckFyZW5hKiBh
cmVuYSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBpbmxpbmUgVGV4dENvbnRyb2xJbm5lclRleHRFbGVt
ZW50OjpUZXh0CiAKIFBhc3NSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUq
IHNoYWRvd1BhcmVudCkKIHsKLSAgICByZXR1cm4gbmV3IFRleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudChkb2N1bWVudCwgc2hhZG93UGFyZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRl
eHRDb250cm9sSW5uZXJUZXh0RWxlbWVudChkb2N1bWVudCwgc2hhZG93UGFyZW50KSk7CiB9CiAK
IHZvaWQgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVudCkKQEAgLTE2Miw3ICsxNjIsNyBAQCBpbmxpbmUgU2VhcmNoRmllbGRSZXN1bHRz
QnV0dG9uRWxlbWVudDo6CiAKIFBhc3NSZWZQdHI8U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxl
bWVudD4gU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBk
b2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1l
bnQoZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VhcmNoRmllbGRSZXN1bHRz
QnV0dG9uRWxlbWVudChkb2N1bWVudCkpOwogfQogCiB2b2lkIFNlYXJjaEZpZWxkUmVzdWx0c0J1
dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQpAQCAtMTk0LDcg
KzE5NCw3IEBAIGlubGluZSBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OlMKIAogUGFz
c1JlZlB0cjxTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ+IFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4g
bmV3IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudChkb2N1bWVudCk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsK
IH0KIAogdm9pZCBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmRldGFjaCgpCkBAIC0y
NTEsNyArMjUxLDcgQEAgaW5saW5lIFNwaW5CdXR0b25FbGVtZW50OjpTcGluQnV0dG9uRWxlbQog
CiBQYXNzUmVmUHRyPFNwaW5CdXR0b25FbGVtZW50PiBTcGluQnV0dG9uRWxlbWVudDo6Y3JlYXRl
KE5vZGUqIHNoYWRvd1BhcmVudCkKIHsKLSAgICByZXR1cm4gbmV3IFNwaW5CdXR0b25FbGVtZW50
KHNoYWRvd1BhcmVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGluQnV0dG9uRWxlbWVu
dChzaGFkb3dQYXJlbnQpKTsKIH0KIAogdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERh
dGFiYXNlSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWREYXRh
YmFzZUltcGwuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvc3RvcmFnZS9JbmRleGVk
RGF0YWJhc2VJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8SW5kZXhlZERhdGFiYXNlSW1wbD4gSW5kZXhlZERh
dGFiYXNlSW1wbDo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gbmV3IEluZGV4ZWREYXRhYmFzZUlt
cGwoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluZGV4ZWREYXRhYmFzZUltcGwpOwogfQog
CiBJbmRleGVkRGF0YWJhc2VJbXBsOjpJbmRleGVkRGF0YWJhc2VJbXBsKCkKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwCShyZXZpc2lvbiA2MDQ0NCkKKysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBTVkdFbGVtZW50OjppbnNlcnRl
ZEludG9Eb2N1bWVudCgpCiAgICAgU3R5bGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KTsKICAgICBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIGV4dGVuc2lvbnMgPSBkb2N1bWVudCgpLT5h
Y2Nlc3NTVkdFeHRlbnNpb25zKCk7CiAKLSAgICBTdHJpbmcgcmVzb3VyY2VJZCA9IGdldEF0dHJp
YnV0ZShpZEF0dHJpYnV0ZU5hbWUoKSk7CisgICAgU3RyaW5nIHJlc291cmNlSWQgPSBnZXRJZEF0
dHJpYnV0ZSgpOwogICAgIGlmIChleHRlbnNpb25zLT5pc1BlbmRpbmdSZXNvdXJjZShyZXNvdXJj
ZUlkKSkgewogICAgICAgICBPd25QdHI8SGFzaFNldDxTVkdTdHlsZWRFbGVtZW50Kj4gPiBjbGll
bnRzKGV4dGVuc2lvbnMtPnJlbW92ZVBlbmRpbmdSZXNvdXJjZShyZXNvdXJjZUlkKSk7CiAgICAg
ICAgIGlmIChjbGllbnRzLT5pc0VtcHR5KCkpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNw
cAkocmV2aXNpb24gNjA0NDQpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjMyLDcgKzIzMiw3IEBAIGJvb2wgU1ZHU3R5bGVkRWxlbWVudDo6
aXNLbm93bkF0dHJpYnV0ZSgKICAgICBpZiAocHJvcElkID4gMCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICByZXR1cm4gKGF0dHJOYW1lID09IGlkQXR0cmlidXRlTmFtZSgpIHx8IGF0dHJO
YW1lID09IEhUTUxOYW1lczo6c3R5bGVBdHRyKTsgCisgICAgcmV0dXJuIGlzSWRBdHRyaWJ1dGVO
YW1lKGF0dHJOYW1lKSB8fCBhdHRyTmFtZSA9PSBIVE1MTmFtZXM6OnN0eWxlQXR0cjsgCiB9CiAK
IHZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIFNWR1N0eWxlZEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAKICAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRl
cmVyKCk7CiAKLSAgICBpZiAoYXR0ck5hbWUgPT0gaWRBdHRyaWJ1dGVOYW1lKCkpIHsKKyAgICBp
ZiAoaXNJZEF0dHJpYnV0ZU5hbWUoYXR0ck5hbWUpKSB7CiAgICAgICAgIC8vIE5vdGlmeSByZXNv
dXJjZXMgYWJvdXQgaWQgY2hhbmdlcywgdGhpcyBpcyBpbXBvcnRhbnQgYXMgd2UgY2FjaGUgcmVz
b3VyY2VzIGJ5IGlkIGluIFNWR0RvY3VtZW50RXh0ZW5zaW9ucwogICAgICAgICBpZiAob2JqZWN0
ICYmIG9iamVjdC0+aXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpKQogICAgICAgICAgICAgb2JqZWN0
LT50b1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKCktPmlkQ2hhbmdlZCgpOwpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0KQorKysgV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIGR1bXBJbnN0
YW5jZVRyZWUodW5zaWduZWQgaW50JiBkZXB0CiAgICAgU1ZHRWxlbWVudCogc2hhZG93VHJlZUVs
ZW1lbnQgPSB0YXJnZXRJbnN0YW5jZS0+c2hhZG93VHJlZUVsZW1lbnQoKTsKICAgICBBU1NFUlQo
c2hhZG93VHJlZUVsZW1lbnQpOwogCi0gICAgU3RyaW5nIGVsZW1lbnRJZCA9IGVsZW1lbnQtPmdl
dElEQXR0cmlidXRlKCk7CisgICAgU3RyaW5nIGVsZW1lbnRJZCA9IGVsZW1lbnQtPmdldElkQXR0
cmlidXRlKCk7CiAgICAgU3RyaW5nIGVsZW1lbnROb2RlTmFtZSA9IGVsZW1lbnQtPm5vZGVOYW1l
KCk7CiAgICAgU3RyaW5nIHNoYWRvd1RyZWVFbGVtZW50Tm9kZU5hbWUgPSBzaGFkb3dUcmVlRWxl
bWVudC0+bm9kZU5hbWUoKTsKICAgICBTdHJpbmcgcGFyZW50Tm9kZU5hbWUgPSBlbGVtZW50LT5w
YXJlbnROb2RlKCkgPyBlbGVtZW50LT5wYXJlbnROb2RlKCktPm5vZGVOYW1lKCkgOiAibnVsbCI7
CkBAIC02ODEsNyArNjgxLDggQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpoYW5kbGVEZWVwVXNlUmVm
ZXJlbgogICAgIHdoaWxlIChpbnN0YW5jZSkgewogICAgICAgICBTVkdFbGVtZW50KiBlbGVtZW50
ID0gaW5zdGFuY2UtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCk7CiAKLSAgICAgICAgaWYgKGVsZW1l
bnQtPmdldElEQXR0cmlidXRlKCkgPT0gaWQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHByb2JhYmx5IGJlIHVzaW5nIGdldElkQXR0cmlidXRlIGluc3RlYWQgb2YgaWRGb3JTdHls
ZVJlc29sdXRpb24uCisgICAgICAgIGlmIChlbGVtZW50LT5oYXNJRCgpICYmIGVsZW1lbnQtPmlk
Rm9yU3R5bGVSZXNvbHV0aW9uKCkgPT0gaWQpIHsKICAgICAgICAgICAgIGZvdW5kUHJvYmxlbSA9
IHRydWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAkocmV2aXNpb24gNjA0NDQpCisrKyBX
ZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzYsNyArMjM2LDggQEAgdm9pZCBTTUlMVGltZUNvbnRhaW5lcjo6dXBkYXRlQW5pbWF0
aW9ucwogICAgICAgICAgICAgQVNTRVJUKGFuaW1hdGlvbi0+dGltZUNvbnRhaW5lcigpID09IHRo
aXMpOwogCiAgICAgICAgICAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gYW5pbWF0aW9u
LT50YXJnZXRFbGVtZW50KCk7Ci0gICAgICAgICAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgdGFy
Z2V0RWxlbWVudC0+Z2V0SURBdHRyaWJ1dGUoKSAhPSBtX25leHRTYW1wbGluZ1RhcmdldCkKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSB1c2luZyBnZXRJZEF0
dHJpYnV0ZSBpbnN0ZWFkIG9mIGlkRm9yU3R5bGVSZXNvbHV0aW9uLgorICAgICAgICAgICAgaWYg
KCF0YXJnZXRFbGVtZW50IHx8ICF0YXJnZXRFbGVtZW50LT5oYXNJRCgpIHx8IHRhcmdldEVsZW1l
bnQtPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCkgIT0gbV9uZXh0U2FtcGxpbmdUYXJnZXQpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIHNhbXBsaW5nRGlmZiA9IGFuaW1h
dGlvbi0+aW50ZXJ2YWxCZWdpbigpOwpJbmRleDogV2ViQ29yZS93bWwvV01MRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS93bWwvV01MRWxlbWVudC5jcHAJKHJldmlzaW9uIDYwNDQ0
KQorKysgV2ViQ29yZS93bWwvV01MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcg
KzYwLDcgQEAgYm9vbCBXTUxFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZgogICAgIAog
dm9pZCBXTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7
Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9PSBpZEF0dHJpYnV0ZU5hbWUoKQorICAgIGlmIChpc0lk
QXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpCiAgICAgICAgIHx8IGF0dHItPm5hbWUoKSA9PSBI
VE1MTmFtZXM6OmNsYXNzQXR0cgogICAgICAgICB8fCBhdHRyLT5uYW1lKCkgPT0gSFRNTE5hbWVz
OjpzdHlsZUF0dHIpCiAgICAgICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShhdHRyKTsK
</data>
<flag name="review"
          id="42079"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58599</attachid>
            <date>2010-06-13 12:02:46 -0700</date>
            <delta_ts>2010-06-13 14:41:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>AdoptPatch.txt</filename>
            <type>text/plain</type>
            <size>91586</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYxMDk0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDYtMTMgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIERlcGxveSBhZG9wdFJlZiBpbiBtb3JlIHBsYWNlcywgaW5jbHVkaW5n
IGFsbCBIVE1MIGFuZCBNYXRoTUwgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTQxCisKKyAgICAgICAgKiB3dGYvVGhyZWFkU2FmZVNo
YXJlZC5oOiBNYWRlIHRoZSBjb25zdHJ1Y3RvciBwcm90ZWN0ZWQgYW5kIHJlbW92ZWQgdGhlCisg
ICAgICAgIHVubmVlZGVkIHN1cHBvcnQgZm9yIGluaXRpYWwgcmVmZXJlbmNlIGNvdW50cyBvdGhl
ciB0aGFuIDEuCisKIDIwMTAtMDYtMTEgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93
dGYvVGhyZWFkU2FmZVNoYXJlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRTYWZlU2hhcmVkLmgJKHJldmlzaW9uIDYxMDk0KQorKysgSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZFNhZmVTaGFyZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDE2ICsxMjksMTYgQEAg
cHJpdmF0ZToKIAogdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgVGhyZWFkU2FmZVNoYXJlZCA6IHB1
YmxpYyBUaHJlYWRTYWZlU2hhcmVkQmFzZSB7CiBwdWJsaWM6Ci0gICAgVGhyZWFkU2FmZVNoYXJl
ZChpbnQgaW5pdGlhbFJlZkNvdW50ID0gMSkKLSAgICAgICAgOiBUaHJlYWRTYWZlU2hhcmVkQmFz
ZShpbml0aWFsUmVmQ291bnQpCi0gICAgewotICAgIH0KLQogICAgIHZvaWQgZGVyZWYoKQogICAg
IHsKICAgICAgICAgaWYgKGRlcmVmQmFzZSgpKQogICAgICAgICAgICAgZGVsZXRlIHN0YXRpY19j
YXN0PFQqPih0aGlzKTsKICAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBUaHJlYWRTYWZlU2hhcmVk
KCkKKyAgICB7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBXZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNjEw
OTUpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1MyBA
QAorMjAxMC0wNi0xMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVwbG95IGFkb3B0UmVmIGlu
IG1vcmUgcGxhY2VzLCBpbmNsdWRpbmcgYWxsIEhUTUwgYW5kIE1hdGhNTCBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5NDEKKworICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3Bh
dGNoQXR0clJlbW92YWxFdmVudCk6IFVzZSBjcmVhdGUgaW5zdGVhZCBvZiBuZXcKKyAgICAgICAg
aW4gY29tbWVudGVkLW91dCBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0
Y2hBdHRyQWRkaXRpb25FdmVudCk6IERpdHRvLgorCisgICAgICAgICogZG9tL05vZGUuaDogUmVt
b3ZlZCBub3ctdW51c2VkIENyZWF0ZUVsZW1lbnRaZXJvUmVmQ291bnQgYW5kCisgICAgICAgIENy
ZWF0ZUhUTUxFbGVtZW50WmVyb1JlZkNvdW50LgorCisgICAgICAgICogZWRpdGluZy9JbnNlcnRM
aXN0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0Q29tbWFuZDo6aW5z
ZXJ0TGlzdCk6IFVzZSBjcmVhdGUgaW5zdGVhZCBvZiBuZXcsIGZpeGluZworICAgICAgICBhIHN0
b3JhZ2UgbGVhay4KKworICAgICAgICAqIGVkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFu
ZDo6aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwpOgorICAgICAgICBSZW1vdmVkICJXaXRoVHlw
ZSIgZnJvbSBmdW5jdGlvbiBuYW1lLiBVc2UgY3JlYXRlIGluc3RlYWQgb2YgbmV3LCBmaXhpbmcg
YQorICAgICAgICBzdG9yYWdlIGxlYWsuCisgICAgICAgIChXZWJDb3JlOjpEZWNyZWFzZVNlbGVj
dGlvbkxpc3RMZXZlbENvbW1hbmQ6OmRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKTogVXNlCisg
ICAgICAgIGNyZWF0ZSBpbnN0ZWFkIG9mIG5ldywgZml4aW5nIGEgc3RvcmFnZSBsZWFrLgorCisg
ICAgICAgICogc3RvcmFnZS9JbmRleGVkRGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkluZGV4ZWREYXRhYmFzZUltcGw6OmNyZWF0ZSk6IFVzZSBhZG9wdFJlZiwgZml4aW5nIGEg
c3RvcmFnZSBsZWFrLgorCisgICAgICAgICogZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2
ZWwuaDogQWRkZWQgY3JlYXRlIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGh0bWwvSFRNTEFuY2hv
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OkhUTUxB
bmNob3JFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OkhUTUxGcmFtZU93bmVy
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OkhUTUxNZXRlckVsZW1lbnQpOgorICAgICAgICAq
IGh0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJv
Z3Jlc3NFbGVtZW50OjpIVE1MUHJvZ3Jlc3NFbGVtZW50KToKKyAgICAgICAgUmVtb3ZlZCBjb2Rl
IHRvIGV4cGxpY2l0bHkgcGFzcyBDcmVhdGVIVE1MRWxlbWVudCBjb25zdHJ1Y3Rpb24gdHlwZSBz
aW5jZSB0aGF0J3MKKyAgICAgICAgbm93IHRoZSB0eXBlIHVzZWQgZm9yIGFsbCBIVE1MIGVsZW1l
bnRzLgorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxGb3JtQ29udHJvbEVsZW1l
bnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICBS
ZW1vdmVkIGNvbnN0cnVjdGlvbiB0eXBlIGFyZ3VtZW50LCBzaW5jZSBDcmVhdGVIVE1MRWxlbWVu
dCBpcyBub3cgdGhlIHR5cGUgdXNlZAorICAgICAgICBmb3IgYWxsIEhUTUwgZWxlbWVudHMuCisK
KyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
YXRoTUxFbGVtZW50OjpNYXRoTUxFbGVtZW50KTogUmVtb3ZlZCBjb25zdHJ1Y3Rpb24gdHlwZSBv
ZgorICAgICAgICBDcmVhdGVTdHlsZWRFbGVtZW50WmVyb1JlZkNvdW50IHNvIHdlJ2xsIHVzZSB0
aGUgZGVmYXVsdCBjb25zdHJ1Y3Rpb24KKyAgICAgICAgdHlwZSwgQ3JlYXRlU3R5bGVkRWxlbWVu
dC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OmNyZWF0ZSk6IFVzZSBhZG9wdFJl
Zi4KKworICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50Lmg6IE1hZGUgaXNNYXRoTUxFbGVt
ZW50IGZ1bmN0aW9uIHByaXZhdGUgYW5kCisgICAgICAgIHJlbW92ZWQgdW5uZWVkZWQgb3ZlcnJp
ZGUgb2YgY3JlYXRlUmVuZGVyZXIsIGJlY2F1c2UgaXQgZGlkIHRoZQorICAgICAgICBzYW1lIHRo
aW5nIGFzIHRoZSBiYXNlIGNsYXNzJ3MgY3JlYXRlUmVuZGVyZXIgZnVuY3Rpb24uCisKKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUpOiBVc2UgYWRvcHRS
ZWYuCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcik6CisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcmlseSBpbml0aWFsaXphdGlv
biBvZiBsb2NhbCB2YXJpYWJsZSBhbmQgcmVtb3ZlZCB0aGUKKyAgICAgICAgY2FzZSBmb3IgbWF0
aFRhZywgc2luY2UgdGhhdCB1c2VzIGEgZGlmZmVyZW50IGRlcml2ZWQgY2xhc3MuCisKKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oOiBNYWRlIGNyZWF0ZVJl
bmRlcnJlciBvdmVycmlkZQorICAgICAgICBwcml2YXRlLgorCisgICAgICAgICogbWF0aG1sL01h
dGhNTE1hdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50
OjpNYXRoTUxNYXRoRWxlbWVudCk6IE1hcmtlZCBpbmxpbmUgc2luY2UKKyAgICAgICAgaXQgaXMg
Y2FsbGVkIGluIG9ubHkgb25lIHBsYWNlLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVs
ZW1lbnQ6OmNyZWF0ZSk6IFVzZSBhZG9wdFJlZi4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1h
dGhFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6IEFkZGVkLiBDcmVhdGVzIGEKKyAgICAgICAgUmVu
ZGVyTWF0aE1MTWF0aCBvYmplY3QuCisKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWF0aEVsZW1l
bnQuaDogTWFkZSBjb25zdHJ1Y3RvciBwcml2YXRlIGFuZCBhZGRlZCBhCisgICAgICAgIHByaXZh
dGUgb3ZlcnJpZGUgb2YgY3JlYXRlUmVuZGVyZXIuCisKKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVGV4dEVsZW1lbnQ6Ok1h
dGhNTFRleHRFbGVtZW50KTogTWFya2VkIGlubGluZSBzaW5jZQorICAgICAgICBpdCBpcyBjYWxs
ZWQgaW4gb25seSBvbmUgcGxhY2UuCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0RWxlbWVu
dDo6Y3JlYXRlKTogVXNlIGFkb3B0UmVmLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVGV4dEVs
ZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKTogQ2hhbmdlZCB0byBjYWxsIHRocm91Z2gKKyAgICAgICAg
dG8gdGhlIGJhc2UgY2xhc3MgaW5zdGVhZCBvZiBjYWxsaW5nIFJlbmRlck9iamVjdDo6Y3JlYXRl
T2JqZWN0IGRpcmVjdGx5LgorCisgICAgICAgICogbWF0aG1sL01hdGhNTFRleHRFbGVtZW50Lmg6
IE1hZGUgdGhlIGNvbnN0cnVjdG9yIGFuZCBjcmVhdGVSZW5kZXJlcgorICAgICAgICBmdW5jdGlv
biBwcml2YXRlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9s
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpSZW5kZXJG
aWxlVXBsb2FkQ29udHJvbCk6CisgICAgICAgIFJlbW92ZWQgYW4gdW5uZWVkZWQgaW5pdGlhbGl6
ZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwOiBUd2Vha2VkIGlu
Y2x1ZGVzLgorCisgICAgICAgICogcmVuZGVyaW5nL1NoYWRvd0VsZW1lbnQuY3BwOiBBZGRlZCBh
ICJ1c2luZyBuYW1lc3BhY2UiIGRpcmVjdGl2ZS4KKyAgICAgICAgKiByZW5kZXJpbmcvU2hhZG93
RWxlbWVudC5oOiBUd2Vha2VkIGZvcm1hdHRpbmcuIE1hZGUgbW9yZSBmdW5jdGlvbnMKKyAgICAg
ICAgcHJpdmF0ZS4KKworICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRlbGV0ZUJ1dHRvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxB
dWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF1ZGlvRWxlbWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckpTQ29u
c3RydWN0b3IpOgorICAgICAgICAqIGh0bWwvSFRNTEJSRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQlJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEJhc2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCYXNlRWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEJhc2VGb250RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxCbG9j
a3F1b3RlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQmxvY2txdW90ZUVsZW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRN
TEJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hU
TUxETGlzdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERMaXN0RWxlbWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxEYXRhR3JpZENlbGxFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxEYXRhR3JpZENlbGxFbGVtZW50OjpjcmVhdGUpOgorICAgICAg
ICAqIGh0bWwvSFRNTERhdGFHcmlkQ29sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRGF0YUdyaWRDb2xFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTERhdGFH
cmlkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGF0YUdyaWRFbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTERhdGFHcmlkUm93RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRGF0YUdyaWRSb3dFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAq
IGh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGF0
YUxpc3RFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTERpdkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTERpdkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICog
aHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRWxlbWVudDo6SFRNTEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEZvbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb250RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGcmFtZVNldEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSFJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxIUkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogaHRtbC9IVE1MSGVhZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEhlYWRF
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxIZWFkaW5nRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAg
KiBodG1sL0hUTUxIdG1sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSHRtbEVs
ZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKToKKyAgICAgICAg
KiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxJc0luZGV4RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSXNJbmRleEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MS2V5
Z2VuRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxMSUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTExJRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1s
L0hUTUxMYWJlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExhYmVsRWxlbWVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxMZWdlbmRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwv
SFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNYXBFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1hcnF1
ZWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZW51RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVudUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWV0YUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTE1vZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTm9TY3JpcHRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxOb1NjcmlwdEVsZW1lbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxPTGlzdEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MT3B0R3JvdXBFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRHcm91cEVsZW1lbnQ6OmNyZWF0ZSk6
CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRp
b25FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxQ
YXJhZ3JhcGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJhZ3JhcGhFbGVt
ZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MUGFyYW1FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwv
SFRNTFByZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByZUVsZW1lbnQ6OmNy
ZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MUXVvdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxRdW90ZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFNv
dXJjZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNvdXJjZUVsZW1lbnQ6OmNy
ZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGFi
bGVDYXB0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDYXB0aW9u
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNlbGxFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVGFibGVDb2xFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGFibGVSb3dFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxl
U2VjdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRs
ZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxVTGlzdEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICog
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0Vs
ZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICog
cmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1l
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5u
ZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRSZXN1bHRz
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkQ2Fu
Y2VsQnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25F
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICBVc2UgYWRvcHRSZWYuCisKIDIwMTAtMDYtMTMgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhl
eSBQcm9za3VyeWFrb3YuCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gNjEwOTQpCisrKyBXZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5OCw3ICsxMDk4LDcgQEAgdm9p
ZCBFbGVtZW50OjpkaXNwYXRjaEF0dHJSZW1vdmFsRXZlbnQoQQogICAgIGlmICghZG9jdW1lbnQo
KS0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01BVFRSTU9ESUZJRURfTElTVEVORVIpKQog
ICAgICAgICByZXR1cm47CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZGlzcGF0Y2hF
dmVudChuZXcgTXV0YXRpb25FdmVudChET01BdHRyTW9kaWZpZWRFdmVudCwgdHJ1ZSwgZmFsc2Us
IGF0dHIsIGF0dHItPnZhbHVlKCksCisgICAgZGlzcGF0Y2hFdmVudChNdXRhdGlvbkV2ZW50Ojpj
cmVhdGUoRE9NQXR0ck1vZGlmaWVkRXZlbnQsIHRydWUsIGF0dHIsIGF0dHItPnZhbHVlKCksCiAg
ICAgICAgIGF0dHItPnZhbHVlKCksIGRvY3VtZW50KCktPmF0dHJOYW1lKGF0dHItPmlkKCkpLCBN
dXRhdGlvbkV2ZW50OjpSRU1PVkFMKSwgZWMpOwogI2VuZGlmCiB9CkBAIC0xMTExLDcgKzExMTEs
NyBAQCB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoQXR0ckFkZGl0aW9uRXZlbnQoCiAgICAgaWYgKCFk
b2N1bWVudCgpLT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkRPTUFUVFJNT0RJRklFRF9MSVNU
RU5FUikpCiAgICAgICAgIHJldHVybjsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBk
aXNwYXRjaEV2ZW50KG5ldyBNdXRhdGlvbkV2ZW50KERPTUF0dHJNb2RpZmllZEV2ZW50LCB0cnVl
LCBmYWxzZSwgYXR0ciwgYXR0ci0+dmFsdWUoKSwKKyAgICBkaXNwYXRjaEV2ZW50KE11dGF0aW9u
RXZlbnQ6OmNyZWF0ZShET01BdHRyTW9kaWZpZWRFdmVudCwgdHJ1ZSwgYXR0ciwgYXR0ci0+dmFs
dWUoKSwKICAgICAgICAgYXR0ci0+dmFsdWUoKSwgZG9jdW1lbnQoKS0+YXR0ck5hbWUoYXR0ci0+
aWQoKSksIE11dGF0aW9uRXZlbnQ6OkFERElUSU9OKSwgZWMpOwogI2VuZGlmCiB9CkluZGV4OiBX
ZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZS5oCShyZXZp
c2lvbiA2MTA5NCkKKysrIFdlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjU0
LDcgKzY1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckZsYWcoTm9kZUZsYWdzIG1hc2sp
IGNvbnN0IHsgbV9ub2RlRmxhZ3MgJj0gfm1hc2s7IH0gCiAKIHByb3RlY3RlZDoKLSAgICAvLyBD
cmVhdGVFbGVtZW50WmVyb1JlZkNvdW50IGlzIGRlcHJlY2F0ZWQgYW5kIGNhbiBiZSByZW1vdmVk
IG9uY2Ugd2UgY29udmVydCBhbGwgZWxlbWVudAorICAgIC8vIENyZWF0ZVdpdGhaZXJvUmVmQ291
bnRGbGFnIGlzIGRlcHJlY2F0ZWQgYW5kIGNhbiBiZSByZW1vdmVkIG9uY2Ugd2UgY29udmVydCBh
bGwgZWxlbWVudAogICAgIC8vIGNsYXNzZXMgdG8gc3RhcnQgd2l0aCBhIHJlZmVyZW5jZSBjb3Vu
dCBvZiAxLgogICAgIGVudW0gQ29uc3RydWN0aW9uVHlwZSB7IAogICAgICAgICBDcmVhdGVPdGhl
ciA9IERlZmF1bHROb2RlRmxhZ3MsCkBAIC02NjIsMTEgKzY2Miw5IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgQ3JlYXRlQ29tbWVudCA9IERlZmF1bHROb2RlRmxhZ3MgfCBJc0NvbW1lbnRGbGFnLAog
ICAgICAgICBDcmVhdGVDb250YWluZXIgPSBEZWZhdWx0Tm9kZUZsYWdzIHwgSXNDb250YWluZXJG
bGFnLCAKICAgICAgICAgQ3JlYXRlRWxlbWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRWxlbWVu
dEZsYWcsIAotICAgICAgICBDcmVhdGVFbGVtZW50WmVyb1JlZkNvdW50ID0gSXNFbGVtZW50Rmxh
ZyB8IENyZWF0ZVdpdGhaZXJvUmVmQ291bnRGbGFnLCAKICAgICAgICAgQ3JlYXRlU3R5bGVkRWxl
bWVudCA9IENyZWF0ZUVsZW1lbnQgfCBJc1N0eWxlZEVsZW1lbnRGbGFnLCAKICAgICAgICAgQ3Jl
YXRlU3R5bGVkRWxlbWVudFplcm9SZWZDb3VudCA9ICBDcmVhdGVTdHlsZWRFbGVtZW50IHwgQ3Jl
YXRlV2l0aFplcm9SZWZDb3VudEZsYWcsIAogICAgICAgICBDcmVhdGVIVE1MRWxlbWVudCA9IENy
ZWF0ZVN0eWxlZEVsZW1lbnQgfCBJc0hUTUxGbGFnLCAKLSAgICAgICAgQ3JlYXRlSFRNTEVsZW1l
bnRaZXJvUmVmQ291bnQgPSBDcmVhdGVIVE1MRWxlbWVudCB8IENyZWF0ZVdpdGhaZXJvUmVmQ291
bnRGbGFnLAogICAgICAgICBDcmVhdGVTVkdFbGVtZW50ID0gQ3JlYXRlU3R5bGVkRWxlbWVudCB8
IElzU1ZHRmxhZywgCiAgICAgICAgIENyZWF0ZVNWR0VsZW1lbnRaZXJvUmVmQ291bnQgPSBDcmVh
dGVTVkdFbGVtZW50IHwgQ3JlYXRlV2l0aFplcm9SZWZDb3VudEZsYWcsCiAgICAgfTsKSW5kZXg6
IFdlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZWRpdGluZy9EZWxldGVCdXR0b24uY3BwCShyZXZpc2lvbiA2MTA5NCkKKysrIFdlYkNvcmUvZWRp
dGluZy9EZWxldGVCdXR0b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIGlu
bGluZSBEZWxldGVCdXR0b246OkRlbGV0ZUJ1dHRvbihEb2N1bWUKIAogUGFzc1JlZlB0cjxEZWxl
dGVCdXR0b24+IERlbGV0ZUJ1dHRvbjo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAg
ICByZXR1cm4gbmV3IERlbGV0ZUJ1dHRvbihkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBEZWxldGVCdXR0b24oZG9jdW1lbnQpKTsKIH0KIAogdm9pZCBEZWxldGVCdXR0b246OmRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0lu
c2VydExpc3RDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0
TGlzdENvbW1hbmQuY3BwCShyZXZpc2lvbiA2MTA5NCkKKysrIFdlYkNvcmUvZWRpdGluZy9JbnNl
cnRMaXN0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBJ
bnNlcnRMaXN0Q29tbWFuZDo6aW5zZXJ0TGlzdChEb2N1bWVudCogZG9jdW1lbnQsIFR5cGUgdHlw
ZSkKIHsKLSAgICBSZWZQdHI8SW5zZXJ0TGlzdENvbW1hbmQ+IGluc2VydENvbW1hbmQgPSBuZXcg
SW5zZXJ0TGlzdENvbW1hbmQoZG9jdW1lbnQsIHR5cGUpOworICAgIFJlZlB0cjxJbnNlcnRMaXN0
Q29tbWFuZD4gaW5zZXJ0Q29tbWFuZCA9IGNyZWF0ZShkb2N1bWVudCwgdHlwZSk7CiAgICAgaW5z
ZXJ0Q29tbWFuZC0+YXBwbHkoKTsKICAgICByZXR1cm4gaW5zZXJ0Q29tbWFuZC0+bV9saXN0RWxl
bWVudDsKIH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2
ZWwuY3BwCShyZXZpc2lvbiA2MTA5NCkKKysrIFdlYkNvcmUvZWRpdGluZy9Nb2RpZnlTZWxlY3Rp
b25MaXN0TGV2ZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksMjggKzIwOSwyOCBAQCBib29s
IEluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZDo6CiAgICAgcmV0dXJuIGNhbkluY3Jl
YXNlTGlzdExldmVsKGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCks
IHN0YXJ0TGlzdENoaWxkLCBlbmRMaXN0Q2hpbGQpOwogfQogCi1QYXNzUmVmUHRyPE5vZGU+IElu
Y3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZDo6aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2
ZWxXaXRoVHlwZShEb2N1bWVudCogZG9jdW1lbnQsIFR5cGUgbGlzdFR5cGUpCitQYXNzUmVmUHRy
PE5vZGU+IEluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZDo6aW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWwoRG9jdW1lbnQqIGRvY3VtZW50LCBUeXBlIHR5cGUpCiB7CiAgICAgQVNTRVJU
KGRvY3VtZW50KTsKICAgICBBU1NFUlQoZG9jdW1lbnQtPmZyYW1lKCkpOwotICAgIFJlZlB0cjxJ
bmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ+IG1vZENvbW1hbmQgPSBuZXcgSW5jcmVh
c2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kKGRvY3VtZW50LCBsaXN0VHlwZSk7Ci0gICAgbW9k
Q29tbWFuZC0+YXBwbHkoKTsKLSAgICByZXR1cm4gbW9kQ29tbWFuZC0+bV9saXN0RWxlbWVudDsK
KyAgICBSZWZQdHI8SW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kPiBjb21tYW5kID0g
Y3JlYXRlKGRvY3VtZW50LCB0eXBlKTsKKyAgICBjb21tYW5kLT5hcHBseSgpOworICAgIHJldHVy
biBjb21tYW5kLT5tX2xpc3RFbGVtZW50OwogfQogCiBQYXNzUmVmUHRyPE5vZGU+IEluY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZDo6aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoRG9j
dW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZl
bFdpdGhUeXBlKGRvY3VtZW50LCBJbmhlcml0ZWRMaXN0VHlwZSk7CisgICAgcmV0dXJuIGluY3Jl
YXNlU2VsZWN0aW9uTGlzdExldmVsKGRvY3VtZW50LCBJbmhlcml0ZWRMaXN0VHlwZSk7CiB9CiAK
IFBhc3NSZWZQdHI8Tm9kZT4gSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kOjppbmNy
ZWFzZVNlbGVjdGlvbkxpc3RMZXZlbE9yZGVyZWQoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAg
IHJldHVybiBpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbFdpdGhUeXBlKGRvY3VtZW50LCBPcmRl
cmVkTGlzdCk7CisgICAgcmV0dXJuIGluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKGRvY3VtZW50
LCBPcmRlcmVkTGlzdCk7CiB9CiAKIFBhc3NSZWZQdHI8Tm9kZT4gSW5jcmVhc2VTZWxlY3Rpb25M
aXN0TGV2ZWxDb21tYW5kOjppbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbFVub3JkZXJlZChEb2N1
bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIGluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVs
V2l0aFR5cGUoZG9jdW1lbnQsIFVub3JkZXJlZExpc3QpOworICAgIHJldHVybiBpbmNyZWFzZVNl
bGVjdGlvbkxpc3RMZXZlbChkb2N1bWVudCwgVW5vcmRlcmVkTGlzdCk7CiB9CiAKIERlY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZDo6RGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21t
YW5kKERvY3VtZW50KiBkb2N1bWVudCkgCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBEZWNyZWFz
ZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6OgogewogICAgIEFTU0VSVChkb2N1bWVudCk7CiAg
ICAgQVNTRVJUKGRvY3VtZW50LT5mcmFtZSgpKTsKLSAgICBhcHBseUNvbW1hbmQobmV3IERlY3Jl
YXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZChkb2N1bWVudCkpOworICAgIGFwcGx5Q29tbWFu
ZChjcmVhdGUoZG9jdW1lbnQpKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL01vZGlm
eVNlbGVjdGlvbkxpc3RMZXZlbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9Nb2Rp
ZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaAkocmV2aXNpb24gNjEwOTQpCisrKyBXZWJDb3JlL2VkaXRp
bmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NTUsOSArNTUsMTUgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGVudW0gVHlwZSB7IEluaGVy
aXRlZExpc3RUeXBlLCBPcmRlcmVkTGlzdCwgVW5vcmRlcmVkTGlzdCB9OwotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE5vZGU+IGluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsV2l0aFR5cGUoRG9jdW1l
bnQqLCBUeXBlIGxpc3RUeXBlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb2RlPiBpbmNyZWFz
ZVNlbGVjdGlvbkxpc3RMZXZlbChEb2N1bWVudCosIFR5cGUpOwogCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50LCBUeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZChkb2N1bWVudCwgdHlwZSkpOworICAg
IH0KKyAgICAKICAgICBJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQoRG9jdW1lbnQq
LCBUeXBlKTsKKwogICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCk7CiAKICAgICBUeXBlIG1fbGlz
dFR5cGU7CkBAIC03MSw3ICs3NywxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVjcmVh
c2VTZWxlY3Rpb25MaXN0TGV2ZWwoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxEZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ+IGNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlY3Jl
YXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZChkb2N1bWVudCkpOworICAgIH0KKwogICAgIERl
Y3JlYXNlU2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZChEb2N1bWVudCopOworCiAgICAgdmlydHVh
bCB2b2lkIGRvQXBwbHkoKTsKIH07CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cAkocmV2aXNpb24gNjEwOTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEhUTUxBbmNob3JFbGVtZW50OjpIVE1MQW5jaG9y
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
Ci0gICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRlSFRNTEVsZW1lbnQp
CisgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fd2FzU2hpZnRL
ZXlEb3duT25Nb3VzZURvd24oZmFsc2UpCiAgICAgLCBtX2xpbmtSZWxhdGlvbnMoMCkKIHsKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMiArNDMs
MTIgQEAgSFRNTEF1ZGlvRWxlbWVudDo6SFRNTEF1ZGlvRWxlbWVudChjb25zdAogCiBQYXNzUmVm
UHRyPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5l
dyBIVE1MQXVkaW9FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxBdWRpb0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogUGFzc1Jl
ZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0
cnVjdG9yKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBzcmMpCiB7Ci0gICAgUmVm
UHRyPEhUTUxBdWRpb0VsZW1lbnQ+IGF1ZGlvID0gbmV3IEhUTUxBdWRpb0VsZW1lbnQoYXVkaW9U
YWcsIGRvY3VtZW50KTsKKyAgICBSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gYXVkaW8gPSBhZG9w
dFJlZihuZXcgSFRNTEF1ZGlvRWxlbWVudChhdWRpb1RhZywgZG9jdW1lbnQpKTsKICAgICBhdWRp
by0+c2V0UHJlbG9hZCgiYXV0byIpOwogICAgIGlmICghc3JjLmlzTnVsbCgpKSB7CiAgICAgICAg
IGF1ZGlvLT5zZXRTcmMoc3JjKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAJKHJldmlzaW9u
IDYxMDk0KQorKysgV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCwxMiArNDAsMTIgQEAgSFRNTEJSRWxlbWVudDo6SFRNTEJSRWxlbWVudChjb25zdCBR
dWFsaQogCiBQYXNzUmVmUHRyPEhUTUxCUkVsZW1lbnQ+IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MQlJFbGVtZW50KGJyVGFn
LCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQlJFbGVtZW50KGJyVGFn
LCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxCUkVsZW1lbnQ+IEhUTUxCUkVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MQlJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxCUkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKIH0KIAogYm9vbCBIVE1MQlJFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdApJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxCYXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9odG1s
L0hUTUxCYXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgaW5s
aW5lIEhUTUxCYXNlRWxlbWVudDo6SFRNTEJhc2VFbGVtZW50KAogCiBQYXNzUmVmUHRyPEhUTUxC
YXNlRWxlbWVudD4gSFRNTEJhc2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEJhc2VF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxC
YXNlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiB2b2lkIEhUTUxCYXNlRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MQmFzZUZvbnRFbGVtZW50LmNwcAkocmV2aXNpb24gNjEwOTQpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTEJhc2VGb250RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAg
aW5saW5lIEhUTUxCYXNlRm9udEVsZW1lbnQ6OkhUTUxCYXNlRm9udAogCiBQYXNzUmVmUHRyPEhU
TUxCYXNlRm9udEVsZW1lbnQ+IEhUTUxCYXNlRm9udEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5l
dyBIVE1MQmFzZUZvbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEhUTUxCYXNlRm9udEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAog
aW50IEhUTUxCYXNlRm9udEVsZW1lbnQ6OnNpemUoKSBjb25zdApJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxCbG9ja3F1b3RlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxCbG9ja3F1b3RlRWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9odG1s
L0hUTUxCbG9ja3F1b3RlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEyICszNywx
MiBAQCBIVE1MQmxvY2txdW90ZUVsZW1lbnQ6OkhUTUxCbG9ja3F1b3RlRWxlCiAKIFBhc3NSZWZQ
dHI8SFRNTEJsb2NrcXVvdGVFbGVtZW50PiBIVE1MQmxvY2txdW90ZUVsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MQmxvY2txdW90ZUVsZW1l
bnQoYmxvY2txdW90ZVRhZywgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TEJsb2NrcXVvdGVFbGVtZW50KGJsb2NrcXVvdGVUYWcsIGRvY3VtZW50KSk7CiB9CiAKIFBhc3NS
ZWZQdHI8SFRNTEJsb2NrcXVvdGVFbGVtZW50PiBIVE1MQmxvY2txdW90ZUVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBIVE1MQmxvY2txdW90ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEJsb2NrcXVvdGVFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCShyZXZpc2lv
biA2MTA5NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NywxMiArNDcsMTIgQEAgSFRNTEJvZHlFbGVtZW50OjpIVE1MQm9keUVsZW1lbnQo
Y29uc3QgUQogCiBQYXNzUmVmUHRyPEhUTUxCb2R5RWxlbWVudD4gSFRNTEJvZHlFbGVtZW50Ojpj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEJvZHlFbGVt
ZW50KGJvZHlUYWcsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxCb2R5
RWxlbWVudChib2R5VGFnLCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxCb2R5RWxl
bWVudD4gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEJvZHlFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxCb2R5RWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBIVE1MQm9keUVsZW1lbnQ6On5IVE1MQm9k
eUVsZW1lbnQoKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiA2
MTA5NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDcgKzUwLDcgQEAgaW5saW5lIEhUTUxCdXR0b25FbGVtZW50OjpIVE1MQnV0dG9u
RWxlbQogCiBQYXNzUmVmUHRyPEhUTUxCdXR0b25FbGVtZW50PiBIVE1MQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwg
SFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewotICAgIHJldHVybiBuZXcgSFRNTEJ1dHRvbkVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TEJ1dHRvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pKTsKIH0KIAogUmVuZGVyT2Jq
ZWN0KiBIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHlsZSopCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlz
aW9uIDYxMDk0KQorKysgV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjUsMTIgKzY1LDEyIEBAIEhUTUxDYW52YXNFbGVtZW50OjpIVE1MQ2FudmFz
RWxlbWVudChjb24KIAogUGFzc1JlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4gSFRNTENhbnZhc0Vs
ZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1M
Q2FudmFzRWxlbWVudChjYW52YXNUYWcsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEhUTUxDYW52YXNFbGVtZW50KGNhbnZhc1RhZywgZG9jdW1lbnQpKTsKIH0KIAogUGFzc1Jl
ZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4gSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJu
IG5ldyBIVE1MQ2FudmFzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBIVE1MQ2FudmFzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBI
VE1MQ2FudmFzRWxlbWVudDo6fkhUTUxDYW52YXNFbGVtZW50KCkKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MRExpc3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERM
aXN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9odG1sL0hUTUxETGlz
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGlubGluZSBIVE1M
RExpc3RFbGVtZW50OjpIVE1MRExpc3RFbGVtZW4KIAogUGFzc1JlZlB0cjxIVE1MRExpc3RFbGVt
ZW50PiBIVE1MRExpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTERMaXN0RWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRExpc3RF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wgSFRNTERMaXN0RWxlbWVudDo6
Y29tcGFjdCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERhdGFHcmlkQ2VsbEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRDZWxsRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZENlbGxF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgSFRNTERh
dGFHcmlkQ2VsbEVsZW1lbnQ6OkhUTUxEYXRhCiAKIFBhc3NSZWZQdHI8SFRNTERhdGFHcmlkQ2Vs
bEVsZW1lbnQ+IEhUTUxEYXRhR3JpZENlbGxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTERh
dGFHcmlkQ2VsbEVsZW1lbnQobmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTERhdGFHcmlkQ2VsbEVsZW1lbnQobmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogU3RyaW5n
IEhUTUxEYXRhR3JpZENlbGxFbGVtZW50OjpsYWJlbCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTERhdGFHcmlkQ29sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxEYXRhR3JpZENvbEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MTA5NCkKKysrIFdlYkNvcmUv
aHRtbC9IVE1MRGF0YUdyaWRDb2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQCBpbmxpbmUgSFRNTERhdGFHcmlkQ29sRWxlbWVudDo6SFRNTERhdGFHCiAKIFBhc3NS
ZWZQdHI8SFRNTERhdGFHcmlkQ29sRWxlbWVudD4gSFRNTERhdGFHcmlkQ29sRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAg
ICByZXR1cm4gbmV3IEhUTUxEYXRhR3JpZENvbEVsZW1lbnQobmFtZSwgZG9jdW1lbnQpOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERhdGFHcmlkQ29sRWxlbWVudChuYW1lLCBkb2N1bWVu
dCkpOwogfQogCiBIVE1MRGF0YUdyaWRFbGVtZW50KiBIVE1MRGF0YUdyaWRDb2xFbGVtZW50Ojpm
aW5kRGF0YUdyaWRBbmNlc3RvcigpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERhdGFH
cmlkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA2MTA5NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgSFRNTERh
dGFHcmlkRWxlbWVudDo6SFRNTERhdGFHcmlkCiAKIFBhc3NSZWZQdHI8SFRNTERhdGFHcmlkRWxl
bWVudD4gSFRNTERhdGFHcmlkRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxEYXRhR3Jp
ZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TERhdGFHcmlkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBIVE1MRGF0YUdyaWRF
bGVtZW50Ojp+SFRNTERhdGFHcmlkRWxlbWVudCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERh
dGFHcmlkUm93RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxEYXRh
R3JpZFJvd0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2MTA5NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
RGF0YUdyaWRSb3dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBp
bmxpbmUgSFRNTERhdGFHcmlkUm93RWxlbWVudDo6SFRNTERhdGFHCiAKIFBhc3NSZWZQdHI8SFRN
TERhdGFHcmlkUm93RWxlbWVudD4gSFRNTERhdGFHcmlkUm93RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4g
bmV3IEhUTUxEYXRhR3JpZFJvd0VsZW1lbnQobmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSFRNTERhdGFHcmlkUm93RWxlbWVudChuYW1lLCBkb2N1bWVudCkpOwogfQog
CiBib29sIEhUTUxEYXRhR3JpZFJvd0VsZW1lbnQ6OmNoZWNrRFREKGNvbnN0IE5vZGUqIG5ld0No
aWxkKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcAkocmV2aXNpb24gNjEw
OTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDcgKzQ0LDcgQEAgaW5saW5lIEhUTUxEYXRhTGlzdEVsZW1lbnQ6OkhUTUxEYXRh
TGlzdAogCiBQYXNzUmVmUHRyPEhUTUxEYXRhTGlzdEVsZW1lbnQ+IEhUTUxEYXRhTGlzdEVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MRGF0YUxpc3RFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxEYXRhTGlzdEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KIAogYm9vbCBIVE1MRGF0YUxpc3RFbGVtZW50OjpjaGVja0RURChj
b25zdCBOb2RlKiBuZXdDaGlsZCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAkocmV2aXNp
b24gNjEwOTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MCwxMiArNDAsMTIgQEAgSFRNTERpdkVsZW1lbnQ6OkhUTUxEaXZFbGVtZW50KGNv
bnN0IFF1YQogCiBQYXNzUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBIVE1MRGl2RWxlbWVudDo6Y3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxEaXZFbGVtZW50
KGRpdlRhZywgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERpdkVsZW1l
bnQoZGl2VGFnLCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxEaXZFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxEaXZFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wgSFRNTERpdkVsZW1lbnQ6Om1hcFRvRW50cnkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQp
IGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCB1
c2luZyBzdGQ6Om1heDsKIAogUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTEVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwg
Q3JlYXRlSFRNTEVsZW1lbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIFN0cmluZyBIVE1MRWxlbWVudDo6bm9kZU5hbWUo
KSBjb25zdApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIGFkZEhUTUxBbGlnbm1lbnRUb1N0eWxlZEVsZW1lbnQoU3R5bGVk
RWxlbWVudCosIEF0dHJpYnV0ZSopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSFRNTEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0g
Q3JlYXRlSFRNTEVsZW1lbnRaZXJvUmVmQ291bnQpOworICAgIEhUTUxFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7CiAKICAgICB2b2lkIGFkZEhUTUxBbGln
bm1lbnQoQXR0cmlidXRlKik7CiAKQEAgLTExMSw4ICsxMTEsOCBAQCBwcml2YXRlOgogICAgIE5v
ZGUqIGluc2VydEFkamFjZW50KGNvbnN0IFN0cmluZyYgd2hlcmUsIE5vZGUqIG5ld0NoaWxkLCBF
eGNlcHRpb25Db2RlJik7CiB9OwogCi1pbmxpbmUgSFRNTEVsZW1lbnQ6OkhUTUxFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0
aW9uVHlwZSB0eXBlKQotICAgIDogU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgdHlw
ZSkKK2lubGluZSBIVE1MRWxlbWVudDo6SFRNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogU3R5bGVkRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCwgQ3JlYXRlSFRNTEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKHRhZ05hbWUubG9j
YWxOYW1lKCkuaW1wbCgpKTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIGlubGluZSBIVE1MRmllbGRTZXRF
bGVtZW50OjpIVE1MRmllbGRTZXQKIAogUGFzc1JlZlB0cjxIVE1MRmllbGRTZXRFbGVtZW50PiBI
VE1MRmllbGRTZXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiB7Ci0gICAgcmV0dXJu
IG5ldyBIVE1MRmllbGRTZXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGaWVsZFNldEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQs
IGZvcm0pKTsKIH0KIAogYm9vbCBIVE1MRmllbGRTZXRFbGVtZW50OjpjaGVja0RURChjb25zdCBO
b2RlKiBuZXdDaGlsZCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2
MTA5NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0Miw3IEBAIEhUTUxGb250RWxlbWVudDo6SFRNTEZvbnRFbGVtZW50KGNvbnN0
IFEKIAogUGFzc1JlZlB0cjxIVE1MRm9udEVsZW1lbnQ+IEhUTUxGb250RWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAg
ICByZXR1cm4gbmV3IEhUTUxGb250RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIVE1MRm9udEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0K
IAogLy8gQWxsb3dzIGxlYWRpbmcgc3BhY2VzLgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcAkocmV2aXNpb24gNjEwOTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1IVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MsIEhUTUxGb3JtRWxlbWVudCogZiwgQ29uc3RydWN0
aW9uVHlwZSBjb25zdHJ1Y3Rpb25UeXBlKQotICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9j
LCBjb25zdHJ1Y3Rpb25UeXBlKQotICAgICwgbV9mb3JtKGYpCitIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQorICAgIDogSFRNTEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCisgICAgLCBtX2Zvcm0oZm9ybSkKICAgICAsIG1fZGlz
YWJsZWQoZmFsc2UpCiAgICAgLCBtX3JlYWRPbmx5KGZhbHNlKQogICAgICwgbV9yZXF1aXJlZChm
YWxzZSkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAkocmV2aXNpb24g
NjEwOTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw4IEBAIGNsYXNzIFJlbmRlclRleHRDb250cm9sOwogY2xhc3Mg
VmFsaWRpdHlTdGF0ZTsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAKKy8vIEZJWE1FOiBUaGUg
SFRNTDUgc3BlY2lmaWNhdGlvbiBjYWxscyB0aGVzZSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMu
CisvLyBTbyBjb25zaWRlciByZW5hbWluZyB0aGlzIHRvIEhUTUxGb3JtQXNzb2NpYXRlZEVsZW1l
bnQuCiBjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbnRyb2xFbGVtZW50KCk7CkBAIC00NCw3
ICs0Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGZvcm1Ob1ZhbGlkYXRlKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRGb3JtTm9WYWxpZGF0ZShib29sKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXNldCgp
IHt9CisgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZm9y
bUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVNYXRj
aGVzUmVuZGVyZXI7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNo
ZXNSZW5kZXJlcihib29sIGIpIHsgbV92YWx1ZU1hdGNoZXNSZW5kZXJlciA9IGI7IH0KQEAgLTc3
LDkgKzc5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1JhZGlvQnV0dG9uKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuVHJpZ2dlckltcGxpY2l0
U3VibWlzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICAvKiBPdmVycmlkZSBp
biBkZXJpdmVkIGNsYXNzZXMgdG8gZ2V0IHRoZSBlbmNvZGVkIG5hbWU9dmFsdWUgcGFpciBmb3Ig
c3VibWl0dGluZy4KLSAgICAgKiBSZXR1cm4gdHJ1ZSBmb3IgYSBzdWNjZXNzZnVsIGNvbnRyb2wg
KHNlZSBIVE1MNC0xNy4xMy4yKS4KLSAgICAgKi8KKyAgICAvLyBPdmVycmlkZSBpbiBkZXJpdmVk
IGNsYXNzZXMgdG8gZ2V0IHRoZSBlbmNvZGVkIG5hbWU9dmFsdWUgcGFpciBmb3Igc3VibWl0dGlu
Zy4KKyAgICAvLyBSZXR1cm4gdHJ1ZSBmb3IgYSBzdWNjZXNzZnVsIGNvbnRyb2wgKHNlZSBIVE1M
NC0xNy4xMy4yKS4KICAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0
JiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1Y2Nlc3Nm
dWxTdWJtaXRCdXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTA0LDcgKzEwNSw3
IEBAIHB1YmxpYzoKICAgICBib29sIHJlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9yZWFkT25s
eTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCosIENvbnN0cnVj
dGlvblR5cGUgPSBDcmVhdGVIVE1MRWxlbWVudFplcm9SZWZDb3VudCk7CisgICAgSFRNTEZvcm1D
b250cm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCosIEhU
TUxGb3JtRWxlbWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKQEAgLTEyMCw2ICsxMjEs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KCk7CiAK
ICAgICB2b2lkIHJlbW92ZUZyb21Gb3JtKCk7CisKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVk
IGFueSB0aW1lIHRoZSByZXN1bHQgb2Ygd2lsbFZhbGlkYXRlKCkgaGFzIGNoYW5nZWQuCiAgICAg
dm9pZCBzZXROZWVkc1dpbGxWYWxpZGF0ZUNoZWNrKCk7CiAgICAgdmlydHVhbCBib29sIHJlY2Fs
Y1dpbGxWYWxpZGF0ZSgpIGNvbnN0OwpAQCAtMTQ3LDE2ICsxNDksMTkgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fcmVhZE9ubHkgOiAxOwogICAgIGJvb2wgbV9yZXF1aXJlZCA6IDE7CiAgICAgYm9v
bCBtX3ZhbHVlTWF0Y2hlc1JlbmRlcmVyIDogMTsKLSAgICAvLyBUaGUgaW5pdGlhbCB2YWx1ZSBv
ZiBtX3dpbGxWYWxpZGF0ZSBkZXBlbmRzIG9uIGEgc3ViY2xhc3MsIGFuZCB3ZSBjYW4ndAorCisg
ICAgLy8gVGhlIGluaXRpYWwgdmFsdWUgb2YgbV93aWxsVmFsaWRhdGUgZGVwZW5kcyBvbiB0aGUg
ZGVyaXZlZCBjbGFzcy4gV2UgY2FuJ3QKICAgICAvLyBpbml0aWFsaXplIGl0IHdpdGggYSB2aXJ0
dWFsIGZ1bmN0aW9uIGluIHRoZSBjb25zdHJ1Y3Rvci4gbV93aWxsVmFsaWRhdGUKLSAgICAvLyBp
cyBub3QgZGV0ZXJtaW5pc3RpYyBkdXJpbmcgbV93aWxsVmFsaWRhdGVJbml0aWFsaXplZD1mYWxz
ZS4KKyAgICAvLyBpcyBub3QgZGV0ZXJtaW5pc3RpYyBhcyBsb25nIGFzIG1fd2lsbFZhbGlkYXRl
SW5pdGlhbGl6ZWQgaXMgZmFsc2UuCiAgICAgbXV0YWJsZSBib29sIG1fd2lsbFZhbGlkYXRlSW5p
dGlhbGl6ZWQ6IDE7CiAgICAgbXV0YWJsZSBib29sIG1fd2lsbFZhbGlkYXRlIDogMTsKKwogICAg
IC8vIENhY2hlIG9mIHZhbGlkaXR5KCktPnZhbGlkKCkuCi0gICAgLy8gImNhbmRpZGF0ZSBmb3Ig
Y29uc3RyYWludCB2YWxpZGF0aW9uIiBkb2Vzbid0IGFmZmVjdCB0byBtX2lzVmFsaWQuCisgICAg
Ly8gQnV0ICJjYW5kaWRhdGUgZm9yIGNvbnN0cmFpbnQgdmFsaWRhdGlvbiIgZG9lc24ndCBhZmZl
Y3QgbV9pc1ZhbGlkLgogICAgIGJvb2wgbV9pc1ZhbGlkIDogMTsKIH07CiAKKy8vIEZJWE1FOiBH
aXZlIHRoaXMgY2xhc3MgaXRzIG93biBoZWFkZXIgZmlsZS4KIGNsYXNzIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnRXaXRoU3RhdGUgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSgpOwpAQCAt
MTc1LDYgKzE4MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdD
aGlsZHJlbigpOwogfTsKIAorLy8gRklYTUU6IEdpdmUgdGhpcyBjbGFzcyBpdHMgb3duIGhlYWRl
ciBmaWxlLgogY2xhc3MgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgOiBwdWJsaWMgSFRNTEZv
cm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQoKTsKQEAgLTIwNiwxNCArMjEyLDE1IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBpbnQgY2FjaGVkU2VsZWN0aW9uU3RhcnQoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBpbnQgY2FjaGVkU2VsZWN0aW9uRW5kKCkgY29uc3QgPSAwOwogCi0gICAgLy8gQSBzdWJj
bGFzcyBzaG91bGQgcmV0dXJuIHRydWUgaWYgcGxhY2Vob2xkZXIgcHJvY2Vzc2luZyBpcyBuZWVk
ZWQuCisgICAgLy8gVGhlIGRlcml2ZWQgY2xhc3Mgc2hvdWxkIHJldHVybiB0cnVlIGlmIHBsYWNl
aG9sZGVyIHByb2Nlc3NpbmcgaXMgbmVlZGVkLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bs
YWNlaG9sZGVyKCkgY29uc3QgPSAwOwotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB1c2VyLWVkaXRh
YmxlIHZhbHVlIGlzIGVtcHR5LiAgVGhpcyBpcyB1c2VkIHRvIGNoZWNrIHBsYWNlaG9sZGVyIHZp
c2liaWxpdHkuCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHVzZXItZWRpdGFibGUgdmFsdWUgaXMg
ZW1wdHkuIFVzZWQgdG8gY2hlY2sgcGxhY2Vob2xkZXIgdmlzaWJpbGl0eS4KICAgICB2aXJ0dWFs
IGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgPSAwOwogICAgIC8vIENhbGxlZCBpbiBkaXNwYXRj
aEZvY3VzRXZlbnQoKSwgYWZ0ZXIgcGxhY2Vob2xkZXIgcHJvY2VzcywgYmVmb3JlIGNhbGxpbmcg
cGFyZW50J3MgZGlzcGF0Y2hGb2N1c0V2ZW50KCkuCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUZv
Y3VzRXZlbnQoKSB7IH0KICAgICAvLyBDYWxsZWQgaW4gZGlzcGF0Y2hCbHVyRXZlbnQoKSwgYWZ0
ZXIgcGxhY2Vob2xkZXIgcHJvY2VzcywgYmVmb3JlIGNhbGxpbmcgcGFyZW50J3MgZGlzcGF0Y2hC
bHVyRXZlbnQoKS4KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmx1ckV2ZW50KCkgeyB9CisKICAg
ICBSZW5kZXJUZXh0Q29udHJvbCogdGV4dFJlbmRlcmVyQWZ0ZXJVcGRhdGVMYXlvdXQoKTsKIH07
CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MTA5NCkKKysrIFdl
YkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NiwxMiAr
ODYsMTIgQEAgSFRNTEZvcm1FbGVtZW50OjpIVE1MRm9ybUVsZW1lbnQoY29uc3QgUQogCiBQYXNz
UmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gSFRNTEZvcm1FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEZvcm1FbGVtZW50KGZvcm1UYWcsIGRv
Y3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGb3JtRWxlbWVudChmb3JtVGFn
LCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gSFRNTEZvcm1F
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEZvcm1FbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGb3JtRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkpOwogfQogCiBIVE1MRm9ybUVsZW1lbnQ6On5IVE1MRm9ybUVsZW1lbnQoKQpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQor
KysgV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSFRNTEZyYW1lT3duZXJF
bGVtZW50OjpIVE1MRnJhbWVPd25lckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQsIENyZWF0ZUhUTUxFbGVtZW50KQorICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiAgICAgLCBtX2NvbnRlbnRGcmFtZSgwKQogICAgICwgbV9zYW5kYm94RmxhZ3MoU2FuZGJv
eE5vbmUpCiB7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCShyZXZpc2lv
biA2MTA5NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBIVE1MRnJhbWVTZXRFbGVtZW50OjpIVE1MRnJhbWVT
ZXRFbGVtZW50CiAKIFBhc3NSZWZQdHI8SFRNTEZyYW1lU2V0RWxlbWVudD4gSFRNTEZyYW1lU2V0
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxGcmFtZVNldEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZyYW1lU2V0RWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBib29sIEhUTUxGcmFtZVNldEVsZW1lbnQ6OmNoZWNr
RFREKGNvbnN0IE5vZGUqIG5ld0NoaWxkKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcAkocmV2
aXNpb24gNjEwOTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDEyICs0MCwxMiBAQCBIVE1MSFJFbGVtZW50OjpIVE1MSFJFbGVtZW50KGNv
bnN0IFF1YWxpCiAKIFBhc3NSZWZQdHI8SFRNTEhSRWxlbWVudD4gSFRNTEhSRWxlbWVudDo6Y3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxIUkVsZW1lbnQo
aHJUYWcsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxIUkVsZW1lbnQo
aHJUYWcsIGRvY3VtZW50KSk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEhSRWxlbWVudD4gSFRNTEhS
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxIUkVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEhSRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQogCiBib29sIEhUTUxIUkVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0Cklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmNwcAkocmV2aXNpb24gNjEwOTQpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTEhlYWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTIgKzM5LDEy
IEBAIEhUTUxIZWFkRWxlbWVudDo6SFRNTEhlYWRFbGVtZW50KGNvbnN0IFEKIAogUGFzc1JlZlB0
cjxIVE1MSGVhZEVsZW1lbnQ+IEhUTUxIZWFkRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxIZWFkRWxlbWVudChoZWFkVGFnLCBkb2N1bWVu
dCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSGVhZEVsZW1lbnQoaGVhZFRhZywgZG9j
dW1lbnQpKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MSGVhZEVsZW1lbnQ+IEhUTUxIZWFkRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxIZWFkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSGVhZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpKTsKIH0KIAogU3RyaW5nIEhUTUxIZWFkRWxlbWVudDo6cHJvZmlsZSgpIGNvbnN0CkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gNjEwOTQpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNyBAQCBpbmxpbmUgSFRNTEhlYWRpbmdFbGVtZW50OjpIVE1MSGVhZGluZ0VsCiAKIFBhc3NS
ZWZQdHI8SFRNTEhlYWRpbmdFbGVtZW50PiBIVE1MSGVhZGluZ0VsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0
dXJuIG5ldyBIVE1MSGVhZGluZ0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSFRNTEhlYWRpbmdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9
CiAKIGJvb2wgSFRNTEhlYWRpbmdFbGVtZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGls
ZCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MTA5NCkKKysrIFdl
YkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiAr
NDIsMTIgQEAgSFRNTEh0bWxFbGVtZW50OjpIVE1MSHRtbEVsZW1lbnQoY29uc3QgUQogCiBQYXNz
UmVmUHRyPEhUTUxIdG1sRWxlbWVudD4gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEh0bWxFbGVtZW50KGh0bWxUYWcsIGRv
Y3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxIdG1sRWxlbWVudChodG1sVGFn
LCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxIdG1sRWxlbWVudD4gSFRNTEh0bWxF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTEh0bWxFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxIdG1sRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkpOwogfQogCiBTdHJpbmcgSFRNTEh0bWxFbGVtZW50Ojp2ZXJzaW9uKCkgY29uc3QK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMiAr
NTUsMTIgQEAgSFRNTEltYWdlRWxlbWVudDo6SFRNTEltYWdlRWxlbWVudChjb25zdAogCiBQYXNz
UmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVu
dCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MSW1hZ2VFbGVtZW50KGltZ1RhZywg
ZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEltYWdlRWxlbWVudChpbWdU
YWcsIGRvY3VtZW50KSk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gSFRNTElt
YWdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewotICAgIHJldHVybiBuZXcgSFRN
TEltYWdlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVE1MSW1hZ2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKSk7CiB9CiAK
IEhUTUxJbWFnZUVsZW1lbnQ6On5IVE1MSW1hZ2VFbGVtZW50KCkKQEAgLTcxLDcgKzcxLDcgQEAg
SFRNTEltYWdlRWxlbWVudDo6fkhUTUxJbWFnZUVsZW1lbnQoKQogCiBQYXNzUmVmUHRyPEhUTUxJ
bWFnZUVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBpbnQqIG9wdGlvbmFsV2lkdGgsIGNvbnN0IGludCogb3B0
aW9uYWxIZWlnaHQpCiB7Ci0gICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gbmV3
IEhUTUxJbWFnZUVsZW1lbnQoaW1nVGFnLCBkb2N1bWVudCk7CisgICAgUmVmUHRyPEhUTUxJbWFn
ZUVsZW1lbnQ+IGltYWdlID0gYWRvcHRSZWYobmV3IEhUTUxJbWFnZUVsZW1lbnQoaW1nVGFnLCBk
b2N1bWVudCkpOwogICAgIGlmIChvcHRpb25hbFdpZHRoKQogICAgICAgICBpbWFnZS0+c2V0V2lk
dGgoKm9wdGlvbmFsV2lkdGgpOwogICAgIGlmIChvcHRpb25hbEhlaWdodCA+IDApCkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MTA5NCkKKysrIFdlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw3IEBA
IEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQoY29uc3QKIAogUGFzc1JlZlB0cjxI
VE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0p
CiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MSW5wdXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBm
b3JtKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxJbnB1dEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQsIGZvcm0pKTsKIH0KIAogSFRNTElucHV0RWxlbWVudDo6fkhUTUxJbnB1dEVsZW1l
bnQoKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJc0luZGV4RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJc0luZGV4RWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0
KQorKysgV2ViQ29yZS9odG1sL0hUTUxJc0luZGV4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDEyICs0MSwxMiBAQCBIVE1MSXNJbmRleEVsZW1lbnQ6OkhUTUxJc0luZGV4RWxlbWVu
dChjCiAKIFBhc3NSZWZQdHI8SFRNTElzSW5kZXhFbGVtZW50PiBIVE1MSXNJbmRleEVsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIHsKLSAg
ICByZXR1cm4gbmV3IEhUTUxJc0luZGV4RWxlbWVudChpc2luZGV4VGFnLCBkb2N1bWVudCwgZm9y
bSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSXNJbmRleEVsZW1lbnQoaXNpbmRleFRh
ZywgZG9jdW1lbnQsIGZvcm0pKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MSXNJbmRleEVsZW1lbnQ+
IEhUTUxJc0luZGV4RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewotICAgIHJldHVy
biBuZXcgSFRNTElzSW5kZXhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxJc0luZGV4RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwg
Zm9ybSkpOwogfQogCiB2b2lkIEhUTUxJc0luZGV4RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA2MTA5NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgaW5saW5lIEhUTUxLZXlnZW5FbGVtZW50OjpI
VE1MS2V5Z2VuRWxlbQogCiBQYXNzUmVmUHRyPEhUTUxLZXlnZW5FbGVtZW50PiBIVE1MS2V5Z2Vu
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewotICAgIHJldHVybiBuZXcgSFRNTEtl
eWdlbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSFRNTEtleWdlbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pKTsKIH0KIAog
Y29uc3QgQXRvbWljU3RyaW5nJiBIVE1MS2V5Z2VuRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkg
Y29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIs
MTIgQEAgSFRNTExJRWxlbWVudDo6SFRNTExJRWxlbWVudChjb25zdCBRdWFsaQogCiBQYXNzUmVm
UHRyPEhUTUxMSUVsZW1lbnQ+IEhUTUxMSUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1l
bnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MTElFbGVtZW50KGxpVGFnLCBkb2N1bWVudCk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTElFbGVtZW50KGxpVGFnLCBkb2N1bWVudCkpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxMSUVsZW1lbnQ+IEhUTUxMSUVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0
dXJuIG5ldyBIVE1MTElFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEhUTUxMSUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogYm9vbCBI
VE1MTElFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBN
YXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdApJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxMYWJlbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTGFiZWxF
bGVtZW50LmNwcAkocmV2aXNpb24gNjEwOTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgaW5saW5lIEhUTUxMYWJl
bEVsZW1lbnQ6OkhUTUxMYWJlbEVsZW1lbgogCiBQYXNzUmVmUHRyPEhUTUxMYWJlbEVsZW1lbnQ+
IEhUTUxMYWJlbEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MTGFiZWxFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxMYWJlbEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogYm9vbCBIVE1MTGFiZWxFbGVtZW50Ojppc0Zv
Y3VzYWJsZSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAJKHJldmlz
aW9uIDYxMDk0KQorKysgV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBpbmxpbmUgSFRNTExlZ2VuZEVsZW1lbnQ6OkhUTUxM
ZWdlbmRFbGVtCiAKIFBhc3NSZWZQdHI8SFRNTExlZ2VuZEVsZW1lbnQ+IEhUTUxMZWdlbmRFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MTGVnZW5k
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MTGVnZW5kRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwogfQogCiBib29s
IEhUTUxMZWdlbmRFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2MTA5NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIGlubGluZSBIVE1M
TGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudCgKIAogUGFzc1JlZlB0cjxIVE1MTGlua0VsZW1l
bnQ+IEhUTUxMaW5rRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiB7Ci0gICAgcmV0dXJu
IG5ldyBIVE1MTGlua0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcik7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTGlua0VsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQsIGNyZWF0ZWRCeVBhcnNlcikpOwogfQogCiBIVE1MTGlua0VsZW1lbnQ6On5IVE1MTGlua0Vs
ZW1lbnQoKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MTA5NCkKKysr
IFdlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEy
ICs0NiwxMiBAQCBIVE1MTWFwRWxlbWVudDo6SFRNTE1hcEVsZW1lbnQoY29uc3QgUXVhCiAKIFBh
c3NSZWZQdHI8SFRNTE1hcEVsZW1lbnQ+IEhUTUxNYXBFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTE1hcEVsZW1lbnQobWFwVGFnLCBkb2N1
bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTWFwRWxlbWVudChtYXBUYWcsIGRv
Y3VtZW50KSk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTE1hcEVsZW1lbnQ+IEhUTUxNYXBFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQogewotICAgIHJldHVybiBuZXcgSFRNTE1hcEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOwor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE1hcEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKIH0KIAogSFRNTE1hcEVsZW1lbnQ6On5IVE1MTWFwRWxlbWVudCgpCkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTE1hcnF1ZWVFbGVtZW50LmNwcAkocmV2aXNpb24gNjEwOTQpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTE1hcnF1ZWVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBp
bmxpbmUgSFRNTE1hcnF1ZWVFbGVtZW50OjpIVE1MTWFycXVlZUVsCiAKIFBhc3NSZWZQdHI8SFRN
TE1hcnF1ZWVFbGVtZW50PiBIVE1MTWFycXVlZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBI
VE1MTWFycXVlZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSFRNTE1hcnF1ZWVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wg
SFRNTE1hcnF1ZWVFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdApJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxNZW51RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxN
ZW51RWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9odG1sL0hUTUxNZW51
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgaW5saW5lIEhUTUxN
ZW51RWxlbWVudDo6SFRNTE1lbnVFbGVtZW50KAogCiBQYXNzUmVmUHRyPEhUTUxNZW51RWxlbWVu
dD4gSFRNTE1lbnVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTE1lbnVFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxNZW51RWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBib29sIEhUTUxNZW51RWxlbWVudDo6Y29tcGFj
dCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAkocmV2aXNpb24gNjEwOTQp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksNyBAQCBpbmxpbmUgSFRNTE1ldGFFbGVtZW50OjpIVE1MTWV0YUVsZW1lbnQoCiAK
IFBhc3NSZWZQdHI8SFRNTE1ldGFFbGVtZW50PiBIVE1MTWV0YUVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0
dXJuIG5ldyBIVE1MTWV0YUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSFRNTE1ldGFFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIHZv
aWQgSFRNTE1ldGFFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIp
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MTA5NCkKKysrIFdl
YkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCAr
MzYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCisvLyBGSVhNRTogVGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgdGFrZSBhbiBleHBsaWNpdCBm
b3JtIGVsZW1lbnQgcG9pbnRlciBwYXNzZWQgZnJvbSB0aGUKKy8vIHBhcnNlciBsaWtlIHRoZSBj
b25zdHJ1Y3RvcnMgZm9yIGFsbCB0aGUgb3RoZXIgY2xhc3NlcyBkZXJpdmVkIGZyb20gSFRNTEZv
cm1Db250cm9sRWxlbWVudC4KIEhUTUxNZXRlckVsZW1lbnQ6OkhUTUxNZXRlckVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRN
TEZvcm1Db250cm9sRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgMCwgQ3JlYXRlSFRNTEVsZW1l
bnQpCisgICAgOiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCAwKQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKG1ldGVyVGFnKSk7CiB9CkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTE1vZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTW9k
RWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBpbmxpbmUgSFRNTE1vZEVs
ZW1lbnQ6OkhUTUxNb2RFbGVtZW50KGNvCiAKIFBhc3NSZWZQdHI8SFRNTE1vZEVsZW1lbnQ+IEhU
TUxNb2RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTE1vZEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE1vZEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KIAogU3RyaW5nIEhUTUxNb2RFbGVtZW50OjpjaXRlKCkgY29uc3QK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTm9TY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQor
KysgV2ViQ29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw3ICszOSw3IEBAIGlubGluZSBIVE1MTm9TY3JpcHRFbGVtZW50OjpIVE1MTm9TY3JpcHQK
IAogUGFzc1JlZlB0cjxIVE1MTm9TY3JpcHRFbGVtZW50PiBIVE1MTm9TY3JpcHRFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQog
ewotICAgIHJldHVybiBuZXcgSFRNTE5vU2NyaXB0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTm9TY3JpcHRFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CiB9CiAKIGJvb2wgSFRNTE5vU2NyaXB0RWxlbWVudDo6Y2hlY2tEVEQoY29uc3Qg
Tm9kZSogbmV3Q2hpbGQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCShyZXZpc2lv
biA2MTA5NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsMTIgKzQyLDEyIEBAIEhUTUxPTGlzdEVsZW1lbnQ6OkhUTUxPTGlzdEVsZW1l
bnQoY29uc3QKIAogUGFzc1JlZlB0cjxIVE1MT0xpc3RFbGVtZW50PiBIVE1MT0xpc3RFbGVtZW50
OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTE9MaXN0
RWxlbWVudChvbFRhZywgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE9M
aXN0RWxlbWVudChvbFRhZywgZG9jdW1lbnQpKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MT0xpc3RF
bGVtZW50PiBIVE1MT0xpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTE9MaXN0RWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT0xp
c3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wgSFRNTE9MaXN0RWxlbWVu
dDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmli
dXRlRW50cnkmIHJlc3VsdCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIGlubGluZSBIVE1MT3B0R3Jv
dXBFbGVtZW50OjpIVE1MT3B0R3JvdXAKIAogUGFzc1JlZlB0cjxIVE1MT3B0R3JvdXBFbGVtZW50
PiBIVE1MT3B0R3JvdXBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiB7Ci0gICAgcmV0
dXJuIG5ldyBIVE1MT3B0R3JvdXBFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxPcHRHcm91cEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQsIGZvcm0pKTsKIH0KIAogYm9vbCBIVE1MT3B0R3JvdXBFbGVtZW50OjpzdXBwb3J0c0ZvY3Vz
KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gNjEw
OTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MCwxOCArNTAsMTggQEAgSFRNTE9wdGlvbkVsZW1lbnQ6OkhUTUxPcHRpb25FbGVtZW50
KGNvbgogCiBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewotICAg
IHJldHVybiBuZXcgSFRNTE9wdGlvbkVsZW1lbnQob3B0aW9uVGFnLCBkb2N1bWVudCwgZm9ybSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudChvcHRpb25UYWcsIGRv
Y3VtZW50LCBmb3JtKSk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IEhUTUxP
cHRpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiB7Ci0gICAgcmV0dXJuIG5ldyBI
VE1MT3B0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3Jl
YXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0
YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwKICAgICAgICAgYm9vbCBkZWZhdWx0U2VsZWN0ZWQsIGJv
b2wgc2VsZWN0ZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxIVE1MT3B0aW9u
RWxlbWVudD4gZWxlbWVudCA9IG5ldyBIVE1MT3B0aW9uRWxlbWVudChvcHRpb25UYWcsIGRvY3Vt
ZW50KTsKKyAgICBSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihu
ZXcgSFRNTE9wdGlvbkVsZW1lbnQob3B0aW9uVGFnLCBkb2N1bWVudCkpOwogCiAgICAgUmVmUHRy
PFRleHQ+IHRleHQgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIGRhdGEuaXNOdWxsKCkgPyAiIiA6
IGRhdGEpOwogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAJKHJldmlz
aW9uIDYxMDk0KQorKysgV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBpbmxpbmUgSFRNTFBhcmFncmFwaEVsZW1lbnQ6
OkhUTUxQYXJhZ3JhCiAKIFBhc3NSZWZQdHI8SFRNTFBhcmFncmFwaEVsZW1lbnQ+IEhUTUxQYXJh
Z3JhcGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTFBhcmFncmFwaEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFBhcmFncmFwaEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogYm9vbCBIVE1MUGFyYWdyYXBoRWxlbWVu
dDo6Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TFBhcmFtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA2MTA5NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBpbmxpbmUgSFRNTFBhcmFt
RWxlbWVudDo6SFRNTFBhcmFtRWxlbWVuCiAKIFBhc3NSZWZQdHI8SFRNTFBhcmFtRWxlbWVudD4g
SFRNTFBhcmFtRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxQYXJhbUVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFBhcmFtRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiB2b2lkIEhUTUxQYXJhbUVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
UHJlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50
LmNwcAkocmV2aXNpb24gNjEwOTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGlubGluZSBIVE1MUHJlRWxlbWVudDo6
SFRNTFByZUVsZW1lbnQoY28KIAogUGFzc1JlZlB0cjxIVE1MUHJlRWxlbWVudD4gSFRNTFByZUVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MUHJlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MUHJlRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQogCiBib29sIEhUTUxQcmVFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdApJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAkocmV2aXNpb24gNjEwOTQpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAogSFRNTFByb2dyZXNzRWxlbWVudDo6SFRNTFByb2dyZXNzRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVu
dCogZm9ybSkKLSAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQs
IGZvcm0sIENyZWF0ZUhUTUxFbGVtZW50KQorICAgIDogSFRNTEZvcm1Db250cm9sRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShwcm9ncmVz
c1RhZykpOwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmNwcAkocmV2aXNpb24gNjEw
OTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDcgKzM4LDcgQEAgaW5saW5lIEhUTUxRdW90ZUVsZW1lbnQ6OkhUTUxRdW90ZUVsZW1l
bgogCiBQYXNzUmVmUHRyPEhUTUxRdW90ZUVsZW1lbnQ+IEhUTUxRdW90ZUVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBIVE1MUXVvdGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxRdW90ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
IH0KIAogdm9pZCBIVE1MUXVvdGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUs
NyBAQCBpbmxpbmUgSFRNTFNjcmlwdEVsZW1lbnQ6OkhUTUxTY3JpcHRFbGVtCiAKIFBhc3NSZWZQ
dHI8SFRNTFNjcmlwdEVsZW1lbnQ+IEhUTUxTY3JpcHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBh
cnNlcikKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxTY3JpcHRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCBjcmVhdGVkQnlQYXJzZXIpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFNjcmlw
dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpOwogfQogCiBib29s
IEhUTUxTY3JpcHRFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpIGNvbnN0
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysg
V2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUs
NyArNTUsNyBAQCBIVE1MU2VsZWN0RWxlbWVudDo6SFRNTFNlbGVjdEVsZW1lbnQoY29uCiBQYXNz
UmVmUHRyPEhUTUxTZWxlY3RFbGVtZW50PiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVt
ZW50KiBmb3JtKQogewogICAgIEFTU0VSVCh0YWdOYW1lLm1hdGNoZXMoc2VsZWN0VGFnKSk7Ci0g
ICAgcmV0dXJuIG5ldyBIVE1MU2VsZWN0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MU2VsZWN0RWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCwgZm9ybSkpOwogfQogCiBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpjaGVja0RURChjb25z
dCBOb2RlKiBuZXdDaGlsZCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAkocmV2
aXNpb24gNjEwOTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIGlubGluZSBIVE1MU291cmNlRWxlbWVudDo6SFRN
TFNvdXJjZUVsZW0KIAogUGFzc1JlZlB0cjxIVE1MU291cmNlRWxlbWVudD4gSFRNTFNvdXJjZUVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MU291cmNlRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MU291cmNlRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCiB2b2lkIEhUTUxTb3VyY2VFbGVtZW50OjppbnNlcnRlZEludG9E
b2N1bWVudCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MTA5
NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgSFRNTFN0eWxlRWxlbWVudDo6SFRNTFN0eWxlRWxlbWVu
CiAKIFBhc3NSZWZQdHI8SFRNTFN0eWxlRWxlbWVudD4gSFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBj
cmVhdGVkQnlQYXJzZXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MU3R5bGVFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTFN0eWxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyKSk7CiB9
CiAKIC8vIG90aGVyIHN0dWZmLi4uCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlv
bkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9u
RWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNh
cHRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBpbmxpbmUg
SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6OkhUTUxUYWJsCiAKIFBhc3NSZWZQdHI8SFRNTFRhYmxl
Q2FwdGlvbkVsZW1lbnQ+IEhUTUxUYWJsZUNhcHRpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBu
ZXcgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKIH0KIAogYm9vbCBIVE1MVGFibGVDYXB0aW9uRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29u
c3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAkocmV2aXNpb24gNjEw
OTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw3ICs1Myw3IEBAIGlubGluZSBIVE1MVGFibGVDZWxsRWxlbWVudDo6SFRNTFRh
YmxlQ2UKIAogUGFzc1JlZlB0cjxIVE1MVGFibGVDZWxsRWxlbWVudD4gSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MVGFibGVDZWxsRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVGFibGVDZWxsRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBpbnQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNlbGxJ
bmRleCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCShyZXZp
c2lvbiA2MTA5NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBpbmxpbmUgSFRNTFRhYmxlQ29sRWxlbWVudDo6
SFRNTFRhYmxlQ29sCiAKIFBhc3NSZWZQdHI8SFRNTFRhYmxlQ29sRWxlbWVudD4gSFRNTFRhYmxl
Q29sRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IEhUTUxUYWJsZUNvbEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFRhYmxlQ29sRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBIVE1MVGFnU3RhdHVzIEhUTUxUYWJsZUNvbEVs
ZW1lbnQ6OmVuZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
VGFibGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMiArNTUsMTIgQEAgSFRNTFRhYmxlRWxlbWVu
dDo6SFRNTFRhYmxlRWxlbWVudChjb25zdAogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+
IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0
dXJuIG5ldyBIVE1MVGFibGVFbGVtZW50KHRhYmxlVGFnLCBkb2N1bWVudCk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIVE1MVGFibGVFbGVtZW50KHRhYmxlVGFnLCBkb2N1bWVudCkpOwogfQog
CiBQYXNzUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAg
cmV0dXJuIG5ldyBIVE1MVGFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEhUTUxUYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0K
IAogYm9vbCBIVE1MVGFibGVFbGVtZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQor
KysgV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NiwxMiArNDYsMTIgQEAgSFRNTFRhYmxlUm93RWxlbWVudDo6SFRNTFRhYmxlUm93RWxlbWVu
dAogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZVJvd0VsZW1lbnQ+IEhUTUxUYWJsZVJvd0VsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MVGFibGVS
b3dFbGVtZW50KHRyVGFnLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1M
VGFibGVSb3dFbGVtZW50KHRyVGFnLCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxU
YWJsZVJvd0VsZW1lbnQ+IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBI
VE1MVGFibGVSb3dFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxUYWJsZVJvd0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogYm9v
bCBIVE1MVGFibGVSb3dFbGVtZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24gNjEw
OTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGlubGluZSBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6
SFRNTFRhYmwKIAogUGFzc1JlZlB0cjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4gSFRNTFRhYmxl
U2VjdGlvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MVGFibGVTZWN0aW9uRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVGFibGVT
ZWN0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBib29sIEhUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkKSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3
IEBAIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OkhUTUxUZXh0QXJlYUVsZW1lbnQKIAogUGFzc1JlZlB0
cjxIVE1MVGV4dEFyZWFFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1l
bnQqIGZvcm0pCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MVGV4dEFyZWFFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50LCBmb3JtKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUZXh0QXJlYUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5n
JiBIVE1MVGV4dEFyZWFFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdApJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MVGl0bGVFbGVtZW50LmNwcAkocmV2aXNpb24gNjEwOTQpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTFRpdGxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgaW5s
aW5lIEhUTUxUaXRsZUVsZW1lbnQ6OkhUTUxUaXRsZUVsZW1lbgogCiBQYXNzUmVmUHRyPEhUTUxU
aXRsZUVsZW1lbnQ+IEhUTUxUaXRsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MVGl0
bGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhU
TUxUaXRsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAogdm9pZCBIVE1MVGl0bGVF
bGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFVM
aXN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1l
bnQuY3BwCShyZXZpc2lvbiA2MTA5NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTIgKzM5LDEyIEBAIEhUTUxVTGlzdEVsZW1lbnQ6
OkhUTUxVTGlzdEVsZW1lbnQoY29uc3QKIAogUGFzc1JlZlB0cjxIVE1MVUxpc3RFbGVtZW50PiBI
VE1MVUxpc3RFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVy
biBuZXcgSFRNTFVMaXN0RWxlbWVudCh1bFRhZywgZG9jdW1lbnQpOworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTFVMaXN0RWxlbWVudCh1bFRhZywgZG9jdW1lbnQpKTsKIH0KIAogUGFzc1Jl
ZlB0cjxIVE1MVUxpc3RFbGVtZW50PiBIVE1MVUxpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBu
ZXcgSFRNTFVMaXN0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVE1MVUxpc3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wg
SFRNTFVMaXN0RWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIGlubGluZSBIVE1M
VmlkZW9FbGVtZW50OjpIVE1MVmlkZW9FbGVtZW4KIAogUGFzc1JlZlB0cjxIVE1MVmlkZW9FbGVt
ZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBuZXcgSFRNTFZpZGVvRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVmlkZW9F
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIApJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VE
b2N1bWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogCiBp
bmxpbmUgUGFzc1JlZlB0cjxJbWFnZURvY3VtZW50RWxlbWVudD4gSW1hZ2VEb2N1bWVudEVsZW1l
bnQ6OmNyZWF0ZShJbWFnZURvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IElt
YWdlRG9jdW1lbnRFbGVtZW50KGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IElt
YWdlRG9jdW1lbnRFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKIC8vIC0tLS0tLS0tCkluZGV4OiBX
ZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21h
dGhtbC9NYXRoTUxFbGVtZW50LmNwcAkocmV2aXNpb24gNjEwOTQpCisrKyBXZWJDb3JlL21hdGht
bC9NYXRoTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcs
MjAgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxO
YW1lczsKICAgICAKIE1hdGhNTEVsZW1lbnQ6Ok1hdGhNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogU3R5bGVkRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRlU3R5bGVkRWxlbWVudFplcm9SZWZDb3VudCkKKyAgICA6
IFN0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiB9CiAgICAgCiBQYXNzUmVmUHRy
PE1hdGhNTEVsZW1lbnQ+IE1hdGhNTEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBNYXRoTUxF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hdGhN
TEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KLQotUmVuZGVyT2JqZWN0KiBNYXRoTUxF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKiBzdHlsZSkK
LXsKLSAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOwot
fQotICAgIAogICAgIAogfQogCkluZGV4OiBXZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCShyZXZpc2lvbiA2
MTA5NCkKKysrIFdlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAo
YWxleEBtaWxvd3NraS5jb20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzAsMTggKzMxLDE2IEBACiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVu
dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKIGNsYXNzIE1hdGhNTEVsZW1lbnQg
OiBwdWJsaWMgU3R5bGVkRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWF0aE1MRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50Kik7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGlzTWF0aE1MRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KLSAgICAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotICAgIAorCiBwcm90ZWN0ZWQ6CiAg
ICAgTWF0aE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCop
OwotICAgIAorCitwcml2YXRlOiAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTUxFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogfTsKICAgICAKIH0KSW5kZXg6IFdlYkNvcmUvbWF0
aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MTA5
NCkKKysrIFdlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBB
bGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMyw2IEBACiAjaW5jbHVkZSAi
TWF0aE1MTmFtZXMuaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxCbG9jay5oIgogI2luY2x1ZGUg
IlJlbmRlck1hdGhNTEZyYWN0aW9uLmgiCi0jaW5jbHVkZSAiUmVuZGVyTWF0aE1MTWF0aC5oIgog
I2luY2x1ZGUgIlJlbmRlck1hdGhNTFJvb3QuaCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxSb3cu
aCIKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxTcXVhcmVSb290LmgiCkBAIC01MCwxNiArNTAsMTQg
QEAgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6TWF0aE1MSW5saQogCiBQYXNzUmVmUHRy
PE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ+IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBNYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJl
bmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKK1JlbmRlck9iamVjdCogTWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSogc3R5bGUpCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSAwOworICAgIFJlbmRlck9i
amVjdCogb2JqZWN0OwogICAgIGlmIChoYXNMb2NhbE5hbWUoTWF0aE1MTmFtZXM6Om1yb3dUYWcp
KQogICAgICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxSb3codGhpcyk7Ci0g
ICAgZWxzZSBpZiAoaGFzTG9jYWxOYW1lKE1hdGhNTE5hbWVzOjptYXRoVGFnKSkKLSAgICAgICAg
b2JqZWN0ID0gbmV3IChhcmVuYSkgUmVuZGVyTWF0aE1MTWF0aCh0aGlzKTsKICAgICBlbHNlIGlm
IChoYXNMb2NhbE5hbWUoTWF0aE1MTmFtZXM6Om1zdWJUYWcpKQogICAgICAgICBvYmplY3QgPSBu
ZXcgKGFyZW5hKSBSZW5kZXJNYXRoTUxTdWJTdXAodGhpcyk7CiAgICAgZWxzZSBpZiAoaGFzTG9j
YWxOYW1lKE1hdGhNTE5hbWVzOjptc3VwVGFnKSkKQEAgLTgzLDkgKzgxLDcgQEAgUmVuZGVyT2Jq
ZWN0KiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZQogICAgIG9iamVjdC0+c2V0U3R5bGUoc3R5
bGUpOwogICAgIHJldHVybiBvYmplY3Q7CiB9Ci0gICAgCi0gICAgCisKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShNQVRITUwpCi0KSW5kZXg6IFdlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVD
b250YWluZXJFbGVtZW50LmgJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9tYXRobWwvTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tp
LmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNSwxMSArMzYsMTEgQEAgY2xhc3MgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCA6
IHB1YgogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1hdGhNTElubGluZUNvbnRhaW5l
ckVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCop
OwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKTsKLQogcHJvdGVjdGVkOgogICAgIE1hdGhNTElubGluZUNvbnRhaW5l
ckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAorcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqLCBSZW5kZXJTdHlsZSopOwogfTsKICAgICAKIH0KSW5kZXg6IFdlYkNvcmUvbWF0aG1sL01h
dGhNTE1hdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRoTUxN
YXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9tYXRobWwvTWF0aE1M
TWF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwyMSAr
MzAsMjUgQEAKIAogI2luY2x1ZGUgIk1hdGhNTE1hdGhFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJN
YXRoTUxOYW1lcy5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRl
ck1hdGhNTE1hdGguaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotdXNpbmcgbmFtZXNw
YWNlIE1hdGhNTE5hbWVzOwogCi1NYXRoTUxNYXRoRWxlbWVudDo6TWF0aE1MTWF0aEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQoraW5saW5l
IE1hdGhNTE1hdGhFbGVtZW50OjpNYXRoTUxNYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBNYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogfQogCiBQYXNzUmVmUHRyPE1hdGhNTE1h
dGhFbGVtZW50PiBNYXRoTUxNYXRoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IE1hdGhNTE1h
dGhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1h
dGhNTE1hdGhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Cit9CisKK1JlbmRlck9iamVjdCog
TWF0aE1MTWF0aEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqIHN0eWxlKQoreworICAgIFJlbmRlck1hdGhNTE1hdGgqIHJlbmRlcmVyID0gbmV3
IChhcmVuYSkgUmVuZGVyTWF0aE1MTWF0aCh0aGlzKTsKKyAgICByZW5kZXJlci0+c2V0U3R5bGUo
c3R5bGUpOworICAgIHJldHVybiByZW5kZXJlcjsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9tYXRo
bWwvTWF0aE1MTWF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRo
TUxNYXRoRWxlbWVudC5oCShyZXZpc2lvbiA2MTA5NCkKKysrIFdlYkNvcmUvbWF0aG1sL01hdGhN
TE1hdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDE0ICsz
MSwxNSBAQAogI2luY2x1ZGUgIk1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiBjbGFzcyBNYXRoTUxNYXRoRWxlbWVudCA6IHB1Ymxp
YyBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNYXRoTUxNYXRoRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50Kik7Ci0gICAgCi1wcm90ZWN0ZWQ6CisKK3ByaXZhdGU6CiAgICAgTWF0
aE1MTWF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsK
LSAgICAKKworICAgIHZpcnR1YWwgY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogfTsKICAgICAKIH0KSW5kZXg6IFdlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwxNCArMzcsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogCi1N
YXRoTUxUZXh0RWxlbWVudDo6TWF0aE1MVGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQoraW5saW5lIE1hdGhNTFRleHRFbGVtZW50OjpN
YXRoTUxUZXh0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBNYXRoTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogfQog
CiBQYXNzUmVmUHRyPE1hdGhNTFRleHRFbGVtZW50PiBNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAg
ICByZXR1cm4gbmV3IE1hdGhNTFRleHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1hdGhNTFRleHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CiAKIFJlbmRlck9iamVjdCogTWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQpAQCAtNTQsMTEgKzU1LDkgQEAg
UmVuZGVyT2JqZWN0KiBNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlUgogICAgICAgICByZXR1cm4g
b2JqZWN0OwogICAgIH0KIAotICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCh0
aGlzLCBzdHlsZSk7CisgICAgcmV0dXJuIE1hdGhNTEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKGFy
ZW5hLCBzdHlsZSk7CiB9CiAKLSAgICAKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCi0K
SW5kZXg6IFdlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaAkocmV2aXNpb24gNjEwOTQpCisrKyBX
ZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1p
bG93c2tpLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNSwxMSArMzYsMTAgQEAgY2xhc3MgTWF0aE1MVGV4dEVsZW1lbnQgOiBwdWJs
aWMgTWF0aE1MRQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1hdGhNTFRleHRFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAot
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7Ci0gICAgCi1wcm90ZWN0ZWQ6Citwcml2YXRlOgogICAgIE1hdGhNTFRleHRF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7Ci0gICAgCisK
KyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOwogfTsKICAgICAKIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL01lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3
IEBAIGlubGluZSBNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVudDo6TWUKIAogUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVudD4gTWVkaWFDb250cm9sU2hhZG93Um9vdEVs
ZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCiB7Ci0gICAgUmVm
UHRyPE1lZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVtZW50PiBlbGVtZW50ID0gbmV3IE1lZGlhQ29u
dHJvbFNoYWRvd1Jvb3RFbGVtZW50KG1lZGlhRWxlbWVudCk7CisgICAgUmVmUHRyPE1lZGlhQ29u
dHJvbFNoYWRvd1Jvb3RFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJv
bFNoYWRvd1Jvb3RFbGVtZW50KG1lZGlhRWxlbWVudCkpOwogCiAgICAgUmVmUHRyPFJlbmRlclN0
eWxlPiByb290U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAgICAgcm9vdFN0eWxlLT5p
bmhlcml0RnJvbShtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCkpOwpAQCAtMTMwLDcg
KzEzMCw3IEBAIE1lZGlhQ29udHJvbEVsZW1lbnQ6Ok1lZGlhQ29udHJvbEVsZW1lbnQKIAogUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xFbGVtZW50PiBNZWRpYUNvbnRyb2xFbGVtZW50OjpjcmVhdGUo
SFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9TdHlsZUlkKQog
ewotICAgIHJldHVybiBuZXcgTWVkaWFDb250cm9sRWxlbWVudChtZWRpYUVsZW1lbnQsIHBzZXVk
b1N0eWxlSWQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRWxlbWVudCht
ZWRpYUVsZW1lbnQsIHBzZXVkb1N0eWxlSWQpKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xFbGVt
ZW50OjphdHRhY2hUb1BhcmVudChFbGVtZW50KiBwYXJlbnQpCkBAIC0yMjIsNyArMjIyLDcgQEAg
aW5saW5lIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbQogCiBQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sVGltZWxpbmVD
b250YWluZXJFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQog
ewotICAgIHJldHVybiBuZXcgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KG1l
ZGlhRWxlbWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xUaW1lbGlu
ZUNvbnRhaW5lckVsZW1lbnQobWVkaWFFbGVtZW50KSk7CiB9CiAKIGJvb2wgTWVkaWFDb250cm9s
VGltZWxpbmVDb250YWluZXJFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBz
dHlsZSkKQEAgLTI1Miw3ICsyNTIsNyBAQCBpbmxpbmUgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
Q29udGFpbmVyCiAKIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVy
RWxlbWVudD4gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRl
KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKIHsKLSAgICByZXR1cm4gbmV3IE1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQobWVkaWFFbGVtZW50KTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1l
bnQobWVkaWFFbGVtZW50KSk7CiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IE1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnN0eWxlRm9yRWxlbWVudCgpCkBAIC0y
OTgsNyArMjk4LDcgQEAgaW5saW5lIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50Ogog
CiBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRy
b2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxl
bWVudCkKIHsKLSAgICByZXR1cm4gbmV3IE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50
KG1lZGlhRWxlbWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xTdGF0
dXNEaXNwbGF5RWxlbWVudChtZWRpYUVsZW1lbnQpKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xT
dGF0dXNEaXNwbGF5RWxlbWVudDo6dXBkYXRlKCkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBpbmxpbmUg
TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6Ok1lCiAKIFBhc3NSZWZQdHI8TWVkaWFDb250
cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpjcmVh
dGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQogewotICAgIHJldHVybiBuZXcgTWVk
aWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkpOwog
fQogCiB2b2lkIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50KiBldmVudCkKQEAgLTUwOCw3ICs1MDgsNyBAQCBpbmxpbmUgTWVkaWFDb250cm9s
UGxheUJ1dHRvbkVsZW1lbnQ6Ok1lCiAKIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRv
bkVsZW1lbnQ+IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlh
RWxlbWVudCogbWVkaWFFbGVtZW50KQogewotICAgIHJldHVybiBuZXcgTWVkaWFDb250cm9sUGxh
eUJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1l
ZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkpOwogfQogCiB2b2lkIE1l
ZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKQEAgLTUzNyw3ICs1MzcsNyBAQCBpbmxpbmUgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVs
ZW1lbnQ6Ok1lCiAKIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ+IE1l
ZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9TdHlsZUlkKQogewotICAgIHJldHVybiBuZXcgTWVk
aWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50LCBwc2V1ZG9TdHlsZUlkKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50KG1l
ZGlhRWxlbWVudCwgcHNldWRvU3R5bGVJZCkpOwogfQogCiBpbmxpbmUgYm9vbCBNZWRpYUNvbnRy
b2xTZWVrQnV0dG9uRWxlbWVudDo6aXNGb3J3YXJkQnV0dG9uKCkgY29uc3QKQEAgLTYwMSw3ICs2
MDEsNyBAQCBpbmxpbmUgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6CiAKIFBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sUmV3aW5k
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKIHsK
LSAgICByZXR1cm4gbmV3IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQobWVkaWFFbGVt
ZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVs
ZW1lbnQobWVkaWFFbGVtZW50KSk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9u
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkBAIC02MjMsNyArNjIz
LDcgQEAgaW5saW5lIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0bwogCiBQYXNzUmVm
UHRyPE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRy
b2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQq
IG1lZGlhRWxlbWVudCkKIHsKLSAgICByZXR1cm4gbmV3IE1lZGlhQ29udHJvbFJldHVyblRvUmVh
bHRpbWVCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQp
KTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkBAIC02NDUsNyArNjQ1LDcgQEAgaW5s
aW5lIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQgogCiBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sVG9n
Z2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50KQogewotICAgIHJldHVybiBuZXcgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2Vk
Q2FwdGlvbnNCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQobWVkaWFF
bGVtZW50KSk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0
b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKQEAgLTY3Miw3ICs2
NzIsNyBAQCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6Ok1lZGlhQ29udHJvCiAKIFBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lbGluZUVs
ZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCiB7Ci0gICAgcmV0
dXJuIG5ldyBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQobWVkaWFFbGVtZW50KTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudChtZWRpYUVsZW1l
bnQpKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2ZW50KQpAQCAtNzI1LDcgKzcyNSw3IEBAIGlubGluZSBNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjoKIAogUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUo
SFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQogewotICAgIHJldHVybiBuZXcgTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyRWxlbWVudChtZWRpYUVsZW1lbnQpOworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudChtZWRpYUVsZW1lbnQpKTsK
IH0KIAogdm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKQEAgLTc2Nyw3ICs3NjcsNyBAQCBpbmxpbmUgTWVkaWFDb250
cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lCiAKIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNj
cmVlbkJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50Ojpj
cmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQogewotICAgIHJldHVybiBuZXcg
TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KG1l
ZGlhRWxlbWVudCkpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKQEAgLTc5MCw3ICs3OTAsNyBA
QCBpbmxpbmUgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OjpNCiAKIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVs
ZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIFBzZXVkb0lkIHBz
ZXVkb1N0eWxlSWQpCiB7Ci0gICAgcmV0dXJuIG5ldyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVs
ZW1lbnQobWVkaWFFbGVtZW50LCBwc2V1ZG9TdHlsZUlkKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChtZWRpYUVsZW1lbnQsIHBzZXVkb1N0
eWxlSWQpKTsKIH0KIAogUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gTWVkaWFDb250cm9sVGltZURp
c3BsYXlFbGVtZW50OjpzdHlsZUZvckVsZW1lbnQoKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAkocmV2aXNpb24gNjEwOTQpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDcgKzUzLDYgQEAgY29uc3QgaW50IGJ1dHRvblNoYWRvd0hlaWdodCA9IDI7CiAKIFJl
bmRlckZpbGVVcGxvYWRDb250cm9sOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbChIVE1MSW5wdXRF
bGVtZW50KiBpbnB1dCkKICAgICA6IFJlbmRlckJsb2NrKGlucHV0KQotICAgICwgbV9idXR0b24o
MCkKIHsKICAgICBGaWxlTGlzdCogbGlzdCA9IGlucHV0LT5maWxlcygpOwogICAgIFZlY3RvcjxT
dHJpbmc+IGZpbGVuYW1lczsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAJ
KHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMSArMjMsMTEgQEAKICNpZiBFTkFCTEUoUFJPR1JFU1Nf
VEFHKQogCiAjaW5jbHVkZSAiUmVuZGVyUHJvZ3Jlc3MuaCIKLSNpbmNsdWRlICJTaGFkb3dFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisKICNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NF
bGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCisjaW5jbHVkZSAiU2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2xpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
bGlkZXIuY3BwCShyZXZpc2lvbiA2MTA5NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNs
aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDYgQEAgc3RhdGljIGRvdWJsZSBz
bGlkZXJQb3NpdGlvbihIVE1MSW5wdXRFbAogICAgIHJldHVybiByYW5nZS5wcm9wb3J0aW9uRnJv
bVZhbHVlKHJhbmdlLnZhbHVlRnJvbUVsZW1lbnQoZWxlbWVudCkpOwogfQogCi0vLyBGSVhNRTog
Q291bGQgc2hhcmUgY29kZSB3aXRoIHRoZSBTbGlkZXJEaXZFbGVtZW50IGNsYXNzIGluIFJlbmRl
clByb2dyZXNzLgogY2xhc3MgU2xpZGVyVGh1bWJFbGVtZW50IDogcHVibGljIFNoYWRvd0Jsb2Nr
RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2xpZGVyVGh1bWJFbGVt
ZW50PiBjcmVhdGUoTm9kZSogc2hhZG93UGFyZW50KTsKQEAgLTY0LDcgKzYzLDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOiAgICAgICAgCiAgICAgU2xpZGVyVGh1bWJFbGVtZW50KE5vZGUqIHNoYWRv
d1BhcmVudCk7Ci0gICAgCisKICAgICBGbG9hdFBvaW50IG1fb2Zmc2V0VG9UaHVtYjsKICAgICBi
b29sIG1faW5EcmFnTW9kZTsKIH07CkBAIC03Nyw3ICs3Niw3IEBAIGlubGluZSBTbGlkZXJUaHVt
YkVsZW1lbnQ6OlNsaWRlclRodW1iRWwKIAogaW5saW5lIFBhc3NSZWZQdHI8U2xpZGVyVGh1bWJF
bGVtZW50PiBTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZShOb2RlKiBzaGFkb3dQYXJlbnQpCiB7
Ci0gICAgcmV0dXJuIG5ldyBTbGlkZXJUaHVtYkVsZW1lbnQoc2hhZG93UGFyZW50KTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNsaWRlclRodW1iRWxlbWVudChzaGFkb3dQYXJlbnQpKTsKIH0K
IAogdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2
ZW50KQpAQCAtMTA3LDcgKzEwNiw3IEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW4KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBtX2luRHJhZ01v
ZGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmV2ZW50SGFu
ZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoc2hhZG93UGFyZW50Tm9kZSgpKTsK
KyAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+c2V0
Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKHNoYWRvd1BhcmVudCgpKTsKICAgICAgICAgICAgICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TaGFkb3dFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TaGFkb3dFbGVtZW50LmNwcAkocmV2aXNp
b24gNjEwOTQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TaGFkb3dFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsMTMgKzI1LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogUGFzc1JlZlB0cjxTaGFkb3dCbG9ja0VsZW1lbnQ+
IFNoYWRvd0Jsb2NrRWxlbWVudDo6Y3JlYXRlKE5vZGUqIHNoYWRvd1BhcmVudCkKIHsKICAgICBy
ZXR1cm4gbmV3IFNoYWRvd0Jsb2NrRWxlbWVudChzaGFkb3dQYXJlbnQpOwogfQogCiBTaGFkb3dC
bG9ja0VsZW1lbnQ6OlNoYWRvd0Jsb2NrRWxlbWVudChOb2RlKiBzaGFkb3dQYXJlbnQpCi0gICAg
OiBTaGFkb3dFbGVtZW50PEhUTUxEaXZFbGVtZW50PihIVE1MTmFtZXM6OmRpdlRhZywgc2hhZG93
UGFyZW50KQorICAgIDogU2hhZG93RWxlbWVudDxIVE1MRGl2RWxlbWVudD4oZGl2VGFnLCBzaGFk
b3dQYXJlbnQpCiB7CiB9CiAKQEAgLTQxLDcgKzQzLDcgQEAgUGFzc1JlZlB0cjxTaGFkb3dJbnB1
dEVsZW1lbnQ+IFNoYWRvd0lucAogfQogCiBTaGFkb3dJbnB1dEVsZW1lbnQ6OlNoYWRvd0lucHV0
RWxlbWVudChOb2RlKiBzaGFkb3dQYXJlbnQpCi0gICAgOiBTaGFkb3dFbGVtZW50PEhUTUxJbnB1
dEVsZW1lbnQ+KEhUTUxOYW1lczo6aW5wdXRUYWcsIHNoYWRvd1BhcmVudCkKKyAgICA6IFNoYWRv
d0VsZW1lbnQ8SFRNTElucHV0RWxlbWVudD4oaW5wdXRUYWcsIHNoYWRvd1BhcmVudCkKIHsKIH0K
IApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU2hhZG93RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL1NoYWRvd0VsZW1lbnQuaAkocmV2aXNpb24gNjEwOTQpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9TaGFkb3dFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEy
ICs0MCwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgU2hhZG93RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBOb2RlKiBzaGFkb3dQYXJlbnQpCiAgICAgICAgIDogQmFzZUVsZW1lbnQobmFt
ZSwgc2hhZG93UGFyZW50LT5kb2N1bWVudCgpKQogICAgICAgICAsIG1fc2hhZG93UGFyZW50KHNo
YWRvd1BhcmVudCkKLSAgICB7fQorICAgIHsKKyAgICB9CiAKKyAgICBOb2RlKiBzaGFkb3dQYXJl
bnQoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1BhcmVudDsgfQorCitwcml2YXRlOgogICAgIHZp
cnR1YWwgYm9vbCBpc1NoYWRvd05vZGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCBOb2RlKiBzaGFkb3dQYXJlbnROb2RlKCkgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQ7IH0K
IAotcHJpdmF0ZToKICAgICBOb2RlKiBtX3NoYWRvd1BhcmVudDsKIH07CiAKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkocmV2aXNpb24g
NjEwOTQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIFRleHRDb250cm9sSW5uZXJFbGVtZW50
OjpUZXh0Q29udHJvbElubmUKIAogUGFzc1JlZlB0cjxUZXh0Q29udHJvbElubmVyRWxlbWVudD4g
VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmNyZWF0ZShOb2RlKiBzaGFkb3dQYXJlbnQpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBUZXh0Q29udHJvbElubmVyRWxlbWVudChzaGFkb3dQYXJlbnQtPmRvY3Vt
ZW50KCksIHNoYWRvd1BhcmVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0Q29udHJv
bElubmVyRWxlbWVudChzaGFkb3dQYXJlbnQtPmRvY3VtZW50KCksIHNoYWRvd1BhcmVudCkpOwog
fQogCiB2b2lkIFRleHRDb250cm9sSW5uZXJFbGVtZW50OjphdHRhY2hJbm5lckVsZW1lbnQoTm9k
ZSogcGFyZW50LCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgUmVuZGVyQXJlbmEqIGFy
ZW5hKQpAQCAtMTI2LDcgKzEyNiw3IEBAIGlubGluZSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQ6OlRleHQKIAogUGFzc1JlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IFRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSog
c2hhZG93UGFyZW50KQogewotICAgIHJldHVybiBuZXcgVGV4dENvbnRyb2xJbm5lclRleHRFbGVt
ZW50KGRvY3VtZW50LCBzaGFkb3dQYXJlbnQpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4
dENvbnRyb2xJbm5lclRleHRFbGVtZW50KGRvY3VtZW50LCBzaGFkb3dQYXJlbnQpKTsKIH0KIAog
dm9pZCBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqIGV2ZW50KQpAQCAtMTYyLDcgKzE2Miw3IEBAIGlubGluZSBTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b25FbGVtZW50OjoKIAogUGFzc1JlZlB0cjxTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVt
ZW50PiBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRv
Y3VtZW50KQogewotICAgIHJldHVybiBuZXcgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVu
dChkb2N1bWVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b25FbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKIHZvaWQgU2VhcmNoRmllbGRSZXN1bHRzQnV0
dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkBAIC0xOTQsNyAr
MTk0LDcgQEAgaW5saW5lIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6UwogCiBQYXNz
UmVmUHRyPFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudD4gU2VhcmNoRmllbGRDYW5jZWxC
dXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBu
ZXcgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50KGRvY3VtZW50KTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudChkb2N1bWVudCkpOwog
fQogCiB2b2lkIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6ZGV0YWNoKCkKQEAgLTI1
MSw3ICsyNTEsNyBAQCBpbmxpbmUgU3BpbkJ1dHRvbkVsZW1lbnQ6OlNwaW5CdXR0b25FbGVtCiAK
IFBhc3NSZWZQdHI8U3BpbkJ1dHRvbkVsZW1lbnQ+IFNwaW5CdXR0b25FbGVtZW50OjpjcmVhdGUo
Tm9kZSogc2hhZG93UGFyZW50KQogewotICAgIHJldHVybiBuZXcgU3BpbkJ1dHRvbkVsZW1lbnQo
c2hhZG93UGFyZW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNwaW5CdXR0b25FbGVtZW50
KHNoYWRvd1BhcmVudCkpOwogfQogCiB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50KiBldmVudCkKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9JbmRleGVkRGF0
YWJhc2VJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvSW5kZXhlZERhdGFi
YXNlSW1wbC5jcHAJKHJldmlzaW9uIDYxMDk0KQorKysgV2ViQ29yZS9zdG9yYWdlL0luZGV4ZWRE
YXRhYmFzZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbmRleGVkRGF0YWJhc2VJbXBsPiBJbmRleGVkRGF0
YWJhc2VJbXBsOjpjcmVhdGUoKQogewotICAgIHJldHVybiBuZXcgSW5kZXhlZERhdGFiYXNlSW1w
bCgpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5kZXhlZERhdGFiYXNlSW1wbCk7CiB9CiAK
IEluZGV4ZWREYXRhYmFzZUltcGw6OkluZGV4ZWREYXRhYmFzZUltcGwoKQo=
</data>
<flag name="review"
          id="44967"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="44968"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>