<?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>159793</bug_id>
          
          <creation_ts>2016-07-14 16:05:19 -0700</creation_ts>
          <short_desc>Use fastGetAttribute() / setAttributeWithoutSynchronization() when possible</short_desc>
          <delta_ts>2016-07-15 15:31:18 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1211193</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-14 16:05:19 -0700</bug_when>
    <thetext>Use fastGetAttribute() / setAttributeWithoutSynchronization() when possible, for performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211213</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-14 16:28:37 -0700</bug_when>
    <thetext>P.S: We should really rename fastGetAttribute() to getAttributeWithoutSynchronization() at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211226</commentid>
    <comment_count>2</comment_count>
      <attachid>283707</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-14 16:36:13 -0700</bug_when>
    <thetext>Created attachment 283707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211561</commentid>
    <comment_count>3</comment_count>
      <attachid>283707</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-15 14:11:09 -0700</bug_when>
    <thetext>Comment on attachment 283707
Patch

Rejecting attachment 283707 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 283707, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ching file Source/WebKit/win/DOMHTMLClasses.cpp
patching file Source/WebKit2/WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm
patching file Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm
patching file Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm
patching file Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Ryosuke Niwa&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/1687515</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211562</commentid>
    <comment_count>4</comment_count>
      <attachid>283790</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-15 14:13:46 -0700</bug_when>
    <thetext>Created attachment 283790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211574</commentid>
    <comment_count>5</comment_count>
      <attachid>283790</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-15 14:36:31 -0700</bug_when>
    <thetext>Comment on attachment 283790
Patch

Clearing flags on attachment: 283790

Committed r203302: &lt;http://trac.webkit.org/changeset/203302&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211575</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-15 14:36:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211605</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-07-15 15:31:18 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; P.S: We should really rename fastGetAttribute() to
&gt; getAttributeWithoutSynchronization() at some point.

Or maybe attributeWithoutSynchronization.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283707</attachid>
            <date>2016-07-14 16:36:13 -0700</date>
            <delta_ts>2016-07-15 14:13:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159793-20160714163525.patch</filename>
            <type>text/plain</type>
            <size>95278</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQzM2VkYTRlMmNjMGM2
ZTQyOTQ5ODQyMGU3YmNhZGM0M2JjMDRiNy4uMGUwNGU1NWEyYjIyZGI2ZWIxNjI1YjUxZGNhN2E0
YWRiMTJjYjNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MiBAQAorMjAxNi0wNy0xNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBmYXN0R2V0QXR0cmli
dXRlKCkgLyBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKCkgd2hlbiBwb3NzaWJs
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Nzkz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGZh
c3RHZXRBdHRyaWJ1dGUoKSAvIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oKSB3
aGVuIHBvc3NpYmxlLCBmb3IgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdp
bnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OllvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KToKKyAgICAgICAgKiBkb20v
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SWRBdHRyaWJ1dGUpOgor
ICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aGFzTm9BdHRyaWJ1dGVPck9ubHlTdHlsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb250RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFu
ZDo6YXBwbHlJbmxpbmVTdHlsZUNoYW5nZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjplbGVtZW50SXNTdHlsZWRT
cGFuT3JIVE1MRXF1aXZhbGVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAg
ICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc01haWxQYXN0ZUFzUXVvdGF0aW9uTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjppc0lubGlu
ZU5vZGVXaXRoU3R5bGUpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdl
KToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVRhYlNwYW5FbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2Vk
QmFzZVdyaXRpbmdEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpXZWJDb250
ZW50UmVhZGVyOjpyZWFkVVJMKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwpOgor
ICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZy
YWdtZW50RnJvbVRleHQpOgorICAgICAgICAqIGh0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCYXNlQnV0dG9uSW5wdXRUeXBlOjpzZXRWYWx1ZSk6CisgICAg
ICAgICogaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJhc2VDaGVja2FibGVJbnB1dFR5cGU6OnNldFZhbHVlKToKKyAgICAgICAgKiBodG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3Vt
ZW50UGFyc2VyOjphcHBlbmRFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcjo6Y3JlYXRlVERGb3JGaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUJhc2ljRG9jdW1l
bnQpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OmhyZWYpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFu
Y2hvckVsZW1lbnQ6OnNldEhyZWYpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1l
bnQ6OnRhcmdldCk6CisgICAgICAgICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50Ojp0YXJnZXQpOgorICAgICAgICAqIGh0bWwvSFRN
TEJhc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCYXNlRWxlbWVudDo6c2V0
SHJlZik6CisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudDo6c2V0VHlwZSk6CisgICAgICAgICogaHRtbC9IVE1M
RGV0YWlsc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50
OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRh
aWxzRWxlbWVudDo6dG9nZ2xlT3Blbik6CisgICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpzZXRCZ0NvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6c2V0RmdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRG9jdW1lbnQ6OnNldEFsaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3Vt
ZW50OjpzZXRMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpzZXRW
bGlua0NvbG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxFbGVtZW50OjpzZXREaXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnQ6OnNldENvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6
c2V0RHJhZ2dhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRTcGVsbGNo
ZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRUcmFuc2xhdGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRGb3JtRW5jdHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRGb3JtTWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEF1dG9jb3JyZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEF1dG9jYXBpdGFsaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEF1dG9jb21wbGV0ZSk6
CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1FbGVtZW50OjpzZXRBdXRvY29ycmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Rm9ybUVsZW1lbnQ6OnNldEF1dG9jYXBpdGFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtRWxlbWVudDo6c2V0QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVu
dDo6c2V0RW5jdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnNldE1l
dGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnRhcmdldCk6CisgICAg
ICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJ
bWFnZUVsZW1lbnQ6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6
OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpzZXRTcmMpOgor
ICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpzZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OnVwZGF0ZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
YWx0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXREZWZhdWx0
VmFsdWUpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6aHJlZik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlu
a0VsZW1lbnQ6OnRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnR5
cGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRTcmMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0UHJlbG9hZCk6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6Om1pbik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpzZXRNaW4pOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1ldGVyRWxlbWVudDo6bWF4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1l
bnQ6OnNldE1heCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50Ojp2YWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpzZXRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50Ojpsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1ldGVyRWxlbWVudDo6c2V0TG93KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1l
bnQ6OmhpZ2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6c2V0SGlnaCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpvcHRpbXVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OnNldE9wdGltdW0pOgorICAgICAgICAqIGh0bWwv
SFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1l
bnQ6OmNvbnRhaW5zSmF2YUFwcGxldCk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlRm9ySlND
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6c2V0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnNldExhYmVsKToKKyAg
ICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFByb2dyZXNzRWxlbWVudDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBy
b2dyZXNzRWxlbWVudDo6c2V0TWF4KToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50Ojp0eXBlQXR0cmlidXRl
VmFsdWUpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldE11bHRpcGxlKToKKyAgICAgICAgKiBodG1s
L0hUTUxTb3VyY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVt
ZW50OjpzZXRTcmMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNvdXJjZUVsZW1lbnQ6Om1lZGlh
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVtZW50OjpzZXRNZWRpYSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU291cmNlRWxlbWVudDo6dHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU291cmNlRWxlbWVudDo6c2V0VHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxl
bWVudDo6c2V0QWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQ6OnNldENoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Ojpj
aE9mZik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6c2V0Q2hP
ZmYpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnNldFZBbGln
bik6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlSW5uZXJUZXh0
RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwpOgor
ICAgICAgICAqIGh0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhp
ZGRlbklucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SGlkZGVuSW5wdXRUeXBlOjpzZXRWYWx1ZSk6CisgICAgICAgICogaHRtbC9NZWRpYURvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURv
Y3VtZW50U3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRG9jdW1lbnQ6OnJlcGxh
Y2VNZWRpYUVsZW1lbnRUaW1lckZpcmVkKToKKyAgICAgICAgKiBodG1sL1BsdWdpbkRvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1
bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVBdXRvRmlsbEJ1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZUF1dG9GaWxs
QnV0dG9uKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzSXNpbmRleFN0YXJ0VGFnRm9y
SW5Cb2R5KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVs
ZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUVs
ZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQYW5lbFZvbHVt
ZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1l
bnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVu
dE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1h
Yzo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jv
b3RFbGVtZW50TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQ29udHJvbHNSb290RWxl
bWVudDo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxlbWVudDo6Y3JlYXRlRXF1aXZhbGVudEhUTUxF
bGVtZW50KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJWVFRUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbik6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpjcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRG9jdW1l
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1lKToKKyAg
ICAgICAgKiBtYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNYXRoTUxTZWxlY3RFbGVtZW50Ojp0b2dnbGUpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZy
YW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJEZXRhaWxzTWFya2VyOjppc09wZW4pOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzZXRYbWxi
YXNlKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTVkdFbGVtZW50OjpzZXRDb250ZW50U2NyaXB0VHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTVkdFbGVtZW50OjpzZXRDb250ZW50U3R5bGVUeXBlKToKKyAgICAgICAgKiBzdmcvU1ZH
U3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6c2V0
TWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50OjpzZXRUaXRsZSk6CisK
IDIwMTYtMDctMTQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bWFnZUJ1ZmZlcidzIHN1Y2NlcyBmbGFnIHNob3VsZCBiZSBzZXQgdG8gZmFsc2UgYXQgdGhlIHZl
cnkgYmVnaW5uaW5nIG9mIHRoZSBjJ3Rvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBlMWNiMWZjYzA3
ZTA0MzdkNTllODliYjgwNDRmMzRkYzc4ZTVlNDQ1Li45MjNlMmIwM2IzMjcwNDc4MjRmYmY1NGQy
YTQyMDVjNzVjODRkZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYt
MDctMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgZmFz
dEdldEF0dHJpYnV0ZSgpIC8gc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbigpIHdo
ZW4gcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1OTc5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBmYXN0R2V0QXR0cmlidXRlKCkgLyBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKCkgd2hlbiBwb3NzaWJsZSwgZm9yIHBlcmZvcm1hbmNlLgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgIChtYXRjaExhYmVsc0FnYWlu
c3RFbGVtZW50KToKKwogMjAxNi0wNy0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBTb2NrZXRQcm92aWRlciB0byBjcmVhdGUgU29j
a2V0U3RyZWFtSGFuZGxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGJkYzhmYTE0OWMzNDA1MzYwM2Fk
NjM4MzM2MGE3MTUxYmFlOGI4MmQuLmFlNzkwYTIxM2U0OTRjNDJlZjAzZWYzNmY4ZDMzZTYwNTIz
ZjJlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wNy0xNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBmYXN0R2V0QXR0cmli
dXRlKCkgLyBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKCkgd2hlbiBwb3NzaWJs
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Nzkz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGZh
c3RHZXRBdHRyaWJ1dGUoKSAvIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oKSB3
aGVuIHBvc3NpYmxlLCBmb3IgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBET01IVE1MQ2xhc3Nl
cy5jcHA6CisgICAgICAgIChET01IVE1MRWxlbWVudDo6aWROYW1lKToKKwogMjAxNi0wNy0xNCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVz
ZSBTb2NrZXRQcm92aWRlciB0byBjcmVhdGUgU29ja2V0U3RyZWFtSGFuZGxlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDYxNDQxNWY1MzdkZjk1ZGRlNmY0NWExNTQyYzcwYmQwMzdmMTI4MzguLjQxNWU1NTZkNTVm
ODBlYTU2ODZlODUzMzZiZGYxY2ZjZWE5ZTVmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBA
QAorMjAxNi0wNy0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFVzZSBmYXN0R2V0QXR0cmlidXRlKCkgLyBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKCkgd2hlbiBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5NzkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXNlIGZhc3RHZXRBdHRyaWJ1dGUoKSAvIHNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oKSB3aGVuIHBvc3NpYmxlLCBmb3IgcGVyZm9ybWFuY2UuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW06CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpj
cmVhdGVQYXNzd29yZEVudHJ5Rm9ybSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5Bbm5v
dGF0aW9uOjphdHRhY2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQ2hvaWNl
QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQpOgorCiAyMDE2LTA3LTE0ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgQXV0b21hdGlv
bjogRnJhbWVOb3RGb3VuZCBlcnJvcnMgaGFwcGVuIGEgbG90IGZvciB0aGUgbWFpbiBmcmFtZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcAppbmRleCA5MDdmYzBhYThiYjQzNTExZmQxOTkzMTM1N2RjZWRi
NmZjZGUwNTBjLi4xZmFmODlkZmYxYjgwOTlhMWRmNDA2MDFmZGFkOWQyYjg1MjUyNWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcApAQCAtODUsMTkgKzg1LDE5IEBAIGJvb2wgWW91VHViZVBsdWdp
blJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCYgcm9vdCkKIAogICAg
IGF1dG8gaWZyYW1lRWxlbWVudCA9IEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVz
OjppZnJhbWVUYWcsIG1fcGFyZW50RWxlbWVudC0+ZG9jdW1lbnQoKSk7CiAgICAgaWYgKG1fYXR0
cmlidXRlcy5jb250YWlucygid2lkdGgiKSkKLSAgICAgICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0
cmlidXRlKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9taWNTdHJpbmcoIjEwMCUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIGlmcmFtZUVsZW1lbnQtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0
b21pY1N0cmluZygiMTAwJSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
ICAgICAKICAgICBjb25zdCBhdXRvJiBoZWlnaHRWYWx1ZSA9IG1fYXR0cmlidXRlcy5maW5kKCJo
ZWlnaHQiKTsKICAgICBpZiAoaGVpZ2h0VmFsdWUgIT0gbV9hdHRyaWJ1dGVzLmVuZCgpKSB7CiAg
ICAgICAgIGlmcmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwg
QXRvbWljU3RyaW5nKCJtYXgtaGVpZ2h0OiAxMDAlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOwotICAgICAgICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjpoZWlnaHRBdHRyLCBoZWlnaHRWYWx1ZS0+dmFsdWUpOworICAgICAgICBpZnJhbWVFbGVt
ZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6aGVpZ2h0
QXR0ciwgaGVpZ2h0VmFsdWUtPnZhbHVlKTsKICAgICB9CiAKLSAgICBpZnJhbWVFbGVtZW50LT5z
ZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzcmNBdHRyLCB5b3VUdWJlVVJMKG1fYXR0cmlidXRlcy5n
ZXQoInNyYyIpKSk7Ci0gICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
ZnJhbWVib3JkZXJBdHRyLCBBdG9taWNTdHJpbmcoIjAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIHlvdVR1YmVVUkwobV9hdHRyaWJ1dGVz
LmdldCgic3JjIikpKTsKKyAgICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6ZnJhbWVib3JkZXJBdHRyLCBBdG9taWNTdHJpbmcoIjAi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgCiAgICAgLy8gRGlz
YWJsZSBmcmFtZSBmbGF0dGVuaW5nIGZvciB0aGlzIGlmcmFtZS4KLSAgICBpZnJhbWVFbGVtZW50
LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzY3JvbGxpbmdBdHRyLCBBdG9taWNTdHJpbmcoIm5v
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIGlmcmFtZUVsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzY3JvbGxp
bmdBdHRyLCBBdG9taWNTdHJpbmcoIm5vIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwogICAgIG1fZW1iZWRTaGFkb3dFbGVtZW50LT5hcHBlbmRDaGlsZChpZnJhbWVFbGVt
ZW50KTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggOTVhNmQ5YWE2
MTc5YmQ5NGE1MWZlNjk4OGVmNzMwNmRiYjc1MGE5MC4uNjJmNzk2ZjAwYTJkZDBjMGY3Nzg2MjU5
ZmE2MDZkNDJlNTI2ZWI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC03NCw3ICs3NCw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbWljU3RyaW5nJiBn
ZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CiAgICAgdm9p
ZCBzZXRTeW5jaHJvbml6ZWRMYXp5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKICAgICBib29sIHJlbW92ZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAKQEAgLTcwNSw3ICs3MDUsNyBAQCBpbmxpbmUgY29uc3QgQXRvbWlj
U3RyaW5nJiBFbGVtZW50OjpnZXROYW1lQXR0cmlidXRlKCkgY29uc3QKIAogaW5saW5lIHZvaWQg
RWxlbWVudDo6c2V0SWRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICBzZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppZEF0dHIsIHZhbHVlKTsKKyAgICBzZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6aWRBdHRyLCB2YWx1ZSk7CiB9CiAK
IGlubGluZSBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBFbGVtZW50OjpjbGFzc05hbWVzKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXgg
MjY3Zjk1MDVjNTFjNDdlZWQxZGVhZDAwMGRkOGQ4OGYwOWZhN2JhMC4uMzhiOTc4NGE0MjMyYzk2
YWJkMjY4NTg3N2IzNjZjY2EwMTM5NDRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
cHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIGJvb2wgaGFzTm9B
dHRyaWJ1dGVPck9ubHlTdHlsZUF0dHJpYnV0ZShjb25zdCBTdHlsZWRFbGVtZW50KiBlbGVtZW50
LCBTaG8KICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICB1bnNpZ25lZCBtYXRjaGVkQXR0cmli
dXRlcyA9IDA7Ci0gICAgaWYgKGVsZW1lbnQtPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpID09IHN0
eWxlU3BhbkNsYXNzU3RyaW5nKCkpCisgICAgaWYgKGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUo
Y2xhc3NBdHRyKSA9PSBzdHlsZVNwYW5DbGFzc1N0cmluZygpKQogICAgICAgICBtYXRjaGVkQXR0
cmlidXRlcysrOwogICAgIGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGUoc3R5bGVBdHRyKSAmJiAo
c2hvdWxkU3R5bGVBdHRyaWJ1dGVCZUVtcHR5ID09IEFsbG93Tm9uRW1wdHlTdHlsZUF0dHJpYnV0
ZQogICAgICAgICB8fCAhZWxlbWVudC0+aW5saW5lU3R5bGUoKSB8fCBlbGVtZW50LT5pbmxpbmVT
dHlsZSgpLT5pc0VtcHR5KCkpKQpAQCAtMTE0LDcgKzExNCw3IEBAIGJvb2wgaXNFbXB0eUZvbnRU
YWcoY29uc3QgRWxlbWVudCogZWxlbWVudCwgU2hvdWxkU3R5bGVBdHRyaWJ1dGVCZUVtcHR5IHNo
b3VsZFN0CiAgICAgcmV0dXJuIGhhc05vQXR0cmlidXRlT3JPbmx5U3R5bGVBdHRyaWJ1dGUoZG93
bmNhc3Q8SFRNTEZvbnRFbGVtZW50PihlbGVtZW50KSwgc2hvdWxkU3R5bGVBdHRyaWJ1dGVCZUVt
cHR5KTsKIH0KIAotc3RhdGljIFJlZlB0cjxFbGVtZW50PiBjcmVhdGVGb250RWxlbWVudChEb2N1
bWVudCYgZG9jdW1lbnQpCitzdGF0aWMgUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVGb250RWxl
bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUhUTUxFbGVtZW50
KGRvY3VtZW50LCBmb250VGFnKTsKIH0KQEAgLTE0NjEsMTMgKzE0NjEsMTMgQEAgdm9pZCBBcHBs
eVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZUNoYW5nZShQYXNzUmVmUHRyPE5vZGU+IHBh
c3NlZFN0YXJ0LCBQYXMKICAgICAgICAgICAgIGlmIChzdHlsZUNoYW5nZS5hcHBseUZvbnRTaXpl
KCkpCiAgICAgICAgICAgICAgICAgc2V0Tm9kZUF0dHJpYnV0ZShmb250Q29udGFpbmVyLCBzaXpl
QXR0ciwgc3R5bGVDaGFuZ2UuZm9udFNpemUoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBSZWZQdHI8RWxlbWVudD4gZm9udEVsZW1lbnQgPSBjcmVhdGVGb250RWxlbWVudChkb2N1
bWVudCgpKTsKKyAgICAgICAgICAgIGF1dG8gZm9udEVsZW1lbnQgPSBjcmVhdGVGb250RWxlbWVu
dChkb2N1bWVudCgpKTsKICAgICAgICAgICAgIGlmIChzdHlsZUNoYW5nZS5hcHBseUZvbnRDb2xv
cigpKQotICAgICAgICAgICAgICAgIGZvbnRFbGVtZW50LT5zZXRBdHRyaWJ1dGUoY29sb3JBdHRy
LCBzdHlsZUNoYW5nZS5mb250Q29sb3IoKSk7CisgICAgICAgICAgICAgICAgZm9udEVsZW1lbnQt
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29sb3JBdHRyLCBzdHlsZUNoYW5n
ZS5mb250Q29sb3IoKSk7CiAgICAgICAgICAgICBpZiAoc3R5bGVDaGFuZ2UuYXBwbHlGb250RmFj
ZSgpKQotICAgICAgICAgICAgICAgIGZvbnRFbGVtZW50LT5zZXRBdHRyaWJ1dGUoZmFjZUF0dHIs
IHN0eWxlQ2hhbmdlLmZvbnRGYWNlKCkpOworICAgICAgICAgICAgICAgIGZvbnRFbGVtZW50LT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZhY2VBdHRyLCBzdHlsZUNoYW5nZS5m
b250RmFjZSgpKTsKICAgICAgICAgICAgIGlmIChzdHlsZUNoYW5nZS5hcHBseUZvbnRTaXplKCkp
Ci0gICAgICAgICAgICAgICAgZm9udEVsZW1lbnQtPnNldEF0dHJpYnV0ZShzaXplQXR0ciwgc3R5
bGVDaGFuZ2UuZm9udFNpemUoKSk7CisgICAgICAgICAgICAgICAgZm9udEVsZW1lbnQtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc2l6ZUF0dHIsIHN0eWxlQ2hhbmdlLmZvbnRT
aXplKCkpOwogICAgICAgICAgICAgc3Vycm91bmROb2RlUmFuZ2VXaXRoRWxlbWVudChzdGFydE5v
ZGUsIGVuZE5vZGUsIGZvbnRFbGVtZW50LmdldCgpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCBlYzdlN2ViNzcyYTcxZDI5Yjlk
YjgxZjEzZjgwOWEyMjFkMmY3MTdjLi43OTFkNzA4Nzc1OWYyYWI3OTNiNjBkNmZlMzBhNDhiNjQ1
OWIxMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC0xMDUw
LDcgKzEwNTAsNyBAQCBib29sIEVkaXRpbmdTdHlsZTo6ZWxlbWVudElzU3R5bGVkU3Bhbk9ySFRN
TEVxdWl2YWxlbnQoY29uc3QgSFRNTEVsZW1lbnQqIGVsZW1lbgogICAgIGlmICghZWxlbWVudElz
U3Bhbk9yRWxlbWVudEVxdWl2YWxlbnQgJiYgIW1hdGNoZWRBdHRyaWJ1dGVzKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7IC8vIGVsZW1lbnQgaXMgbm90IGEgc3BhbiwgYSBodG1sIGVsZW1lbnQgZXF1
aXZhbGVudCwgb3IgZm9udCBlbGVtZW50LgogICAgIAotICAgIGlmIChlbGVtZW50LT5nZXRBdHRy
aWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIpID09IEFwcGxlU3R5bGVTcGFuQ2xhc3MpCisgICAg
aWYgKGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIpID09IEFw
cGxlU3R5bGVTcGFuQ2xhc3MpCiAgICAgICAgIG1hdGNoZWRBdHRyaWJ1dGVzKys7CiAKICAgICBp
ZiAoZWxlbWVudC0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDFjODBmZDE4MzhlNDk5MjhkM2UwOTJiMTRlMjE3YjFj
YWVlY2EwMjIuLjkzOWY1OGVhZmE3YjBhNzVlYjc0MmQ5ZTIyNTgyYWU3ZDg1NGQ1YjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTE2NjEsNyArMTY2MSw3IEBAIHZvaWQgRWRpdG9y
OjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAg
ICBpZiAoaXM8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGZvY3VzZWRFbGVtZW50KSkgewog
ICAgICAgICBpZiAoZGlyZWN0aW9uID09IE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dD4oKmZvY3VzZWRFbGVtZW50KS5zZXRBdHRyaWJ1dGUoZGlyQXR0ciwgZGlyZWN0aW9uID09IExl
ZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA/ICJsdHIiIDogInJ0bCIpOworICAgICAgICBkb3du
Y2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKmZvY3VzZWRFbGVtZW50KS5zZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRpckF0dHIsIGRpcmVjdGlvbiA9PSBMZWZ0VG9S
aWdodFdyaXRpbmdEaXJlY3Rpb24gPyAibHRyIiA6ICJydGwiKTsKICAgICAgICAgZm9jdXNlZEVs
ZW1lbnQtPmRpc3BhdGNoSW5wdXRFdmVudCgpOwogICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZVN0
eWxlSWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA0OTQ0MDVlMjQyZmE3ODZh
NTdkMjFkMmM3MWZjYWM4MjdkYTU1NTkxLi41MDQ5YjQzNTQxMGZkMjM5ZGM4Nzc5MDMyODMwZDJm
OGY3ODc2ZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcApAQCAtNDM2LDcgKzQzNiw3IEBAIGJvb2wgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OnNob3VsZE1lcmdlRW5kKGJvb2wgc2VsZWN0aW9uRW5kV2FzRW5kT2ZQYXJhZ3Jh
cGgpCiAKIHN0YXRpYyBib29sIGlzTWFpbFBhc3RlQXNRdW90YXRpb25Ob2RlKGNvbnN0IE5vZGUq
IG5vZGUpCiB7Ci0gICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShibG9ja3F1b3Rl
VGFnKSAmJiBkb3duY2FzdDxFbGVtZW50Pihub2RlKS0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikg
PT0gQXBwbGVQYXN0ZUFzUXVvdGF0aW9uOworICAgIHJldHVybiBub2RlICYmIG5vZGUtPmhhc1Rh
Z05hbWUoYmxvY2txdW90ZVRhZykgJiYgZG93bmNhc3Q8RWxlbWVudD4obm9kZSktPmZhc3RHZXRB
dHRyaWJ1dGUoY2xhc3NBdHRyKSA9PSBBcHBsZVBhc3RlQXNRdW90YXRpb247CiB9CiAKIHN0YXRp
YyBib29sIGlzSGVhZGVyRWxlbWVudChjb25zdCBOb2RlKiBhKQpAQCAtODk0LDcgKzg5NCw3IEBA
IHN0YXRpYyBib29sIGlzSW5saW5lTm9kZVdpdGhTdHlsZShjb25zdCBOb2RlKiBub2RlKQogICAg
IC8vIFdlIGNhbiBza2lwIG92ZXIgZWxlbWVudHMgd2hvc2UgY2xhc3MgYXR0cmlidXRlIGlzCiAg
ICAgLy8gb25lIG9mIG91ciBpbnRlcm5hbCBjbGFzc2VzLgogICAgIGNvbnN0IEhUTUxFbGVtZW50
KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVsZW1lbnQqPihub2RlKTsKLSAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGNsYXNzQXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LT5nZXRBdHRy
aWJ1dGUoY2xhc3NBdHRyKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzQXR0cmlidXRl
VmFsdWUgPSBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGNsYXNzQXR0cik7CiAgICAgaWYgKGNs
YXNzQXR0cmlidXRlVmFsdWUgPT0gQXBwbGVUYWJTcGFuQ2xhc3MKICAgICAgICAgfHwgY2xhc3NB
dHRyaWJ1dGVWYWx1ZSA9PSBBcHBsZUNvbnZlcnRlZFNwYWNlCiAgICAgICAgIHx8IGNsYXNzQXR0
cmlidXRlVmFsdWUgPT0gQXBwbGVQYXN0ZUFzUXVvdGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCmluZGV4IGQwODA1YmY5M2EzNjQ1NzcwYTRh
NTVmMWIzYzNkODkxZTAwYjhlMzguLmVkNTk2M2ZlNmQyN2VkMjk5M2M5ZTVlNjRmMzkxZGM0MmE5
ODNiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW0KQEAgLTYzNCw5ICs2MzQsOSBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250
ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShuZXdU
ZXh0Tm9kZSkpOwogICAgICAgICAgICAgLy8gQWRkIGEgc3BlY2lhbCBhdHRyaWJ1dGUgdG8gbWFy
ayB0aGlzIFVSTGlmaWNhdGlvbiBhcyB0aGUgcmVzdWx0IG9mIGRhdGEgZGV0ZWN0b3JzLgotICAg
ICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmlidXRlKHhfYXBwbGVfZGF0YV9kZXRlY3Rv
cnNBdHRyLCAidHJ1ZSIpOwotICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmlidXRl
KHhfYXBwbGVfZGF0YV9kZXRlY3RvcnNfdHlwZUF0dHIsIGRhdGFEZXRlY3RvclR5cGVGb3JDYXRl
Z29yeShzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFJlc3VsdEdldENhdGVnb3J5KGNvcmVS
ZXN1bHQpKSk7Ci0gICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRBdHRyaWJ1dGUoeF9hcHBs
ZV9kYXRhX2RldGVjdG9yc19yZXN1bHRBdHRyLCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGFu
Y2hvckVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oeF9hcHBsZV9k
YXRhX2RldGVjdG9yc0F0dHIsIEF0b21pY1N0cmluZygidHJ1ZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oeF9hcHBsZV9kYXRhX2RldGVjdG9yc190eXBlQXR0
ciwgZGF0YURldGVjdG9yVHlwZUZvckNhdGVnb3J5KHNvZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3Jl
X0REUmVzdWx0R2V0Q2F0ZWdvcnkoY29yZVJlc3VsdCkpKTsKKyAgICAgICAgICAgIGFuY2hvckVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oeF9hcHBsZV9kYXRhX2Rl
dGVjdG9yc19yZXN1bHRBdHRyLCBpZGVudGlmaWVyKTsKIAogICAgICAgICAgICAgcGFyZW50Tm9k
ZS0+aW5zZXJ0QmVmb3JlKFdURk1vdmUoYW5jaG9yRWxlbWVudCksICZjdXJyZW50VGV4dE5vZGUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IGI0MDc5MDg4Njky
Y2RmMDk1MWQ5NDgzZWJhZmQ3Yzg1ZjQ3NzkwYTAuLmQ5YmQ2MGJmNThjMzRhNWQ2M2U1MDk5NGQ2
ODcwNGQ1MmE3N2M3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVk
aXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBA
IC05MzEsNyArOTMxLDcgQEAgc3RhdGljIFJlZjxFbGVtZW50PiBjcmVhdGVUYWJTcGFuRWxlbWVu
dChEb2N1bWVudCYgZG9jdW1lbnQsIFRleHQmIHRhYlRleHROb2RlKQogewogICAgIGF1dG8gc3Bh
bkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHNwYW5UYWcsIGZhbHNlKTsKIAotICAg
IHNwYW5FbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBcHBsZVRhYlNwYW5DbGFzcyk7
CisgICAgc3BhbkVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xh
c3NBdHRyLCBBcHBsZVRhYlNwYW5DbGFzcyk7CiAgICAgc3BhbkVsZW1lbnQtPnNldEF0dHJpYnV0
ZShzdHlsZUF0dHIsICJ3aGl0ZS1zcGFjZTpwcmUiKTsKIAogICAgIHNwYW5FbGVtZW50LT5hcHBl
bmRDaGlsZCh0YWJUZXh0Tm9kZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggZTk4YWRjZTk1M2NmZTA5NTExZWNhZDBmNjZi
ZmEyZjllMmVmYzEzMC4uNWI0ZDM4YTBlMDI5NWMxNjU5MmYyM2MyMTc3N2EwNjk0YTkwNTI2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtMTY2LDcgKzE2Niw3
IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGly
ZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyCiAgICAgICAgICAgICB8fCBkb3duY2FzdDxIVE1M
SW5wdXRFbGVtZW50PigqZm9jdXNlZEVsZW1lbnQpLmlzU2VhcmNoRmllbGQoKSkpKSkgewogICAg
ICAgICBpZiAoZGlyZWN0aW9uID09IE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBkb3duY2FzdDxIVE1MRWxlbWVudD4oKmZvY3VzZWRFbGVtZW50
KS5zZXRBdHRyaWJ1dGUoYWxpZ25BdHRyLCBuZXdWYWx1ZSk7CisgICAgICAgIGRvd25jYXN0PEhU
TUxFbGVtZW50PigqZm9jdXNlZEVsZW1lbnQpLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oYWxpZ25BdHRyLCBuZXdWYWx1ZSk7CiAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+
dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDkwLDcg
KzQ5MCw3IEBAIGJvb2wgRWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmKQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAg
YXV0byBhbmNob3IgPSBmcmFtZS5kb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6
YVRhZywgZmFsc2UpOwotICAgICAgICBhbmNob3ItPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6Omhy
ZWZBdHRyLCB1cmwuc3RyaW5nKCkpOworICAgICAgICBhbmNob3ItPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpocmVmQXR0ciwgdXJsLnN0cmluZygpKTsKICAg
ICAgICAgYW5jaG9yLT5hcHBlbmRDaGlsZChmcmFtZS5kb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9k
ZShbWyhOU1VSTCAqKXVybCBhYnNvbHV0ZVN0cmluZ10gcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fu
b25pY2FsTWFwcGluZ10pKTsKIAogICAgICAgICBhdXRvIG5ld0ZyYWdtZW50ID0gZnJhbWUuZG9j
dW1lbnQoKS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCmluZGV4IDI5YjFmNjM5Y2RiYTBhYzFlODM1M2E1NDllMjZkMjg1NzU5
ZTVmYWIuLjc2NWIyYmQ4NmVhZDNhZDViZWZkY2JkYTM0NDdlNzExYWI1YmFjYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTU5OCw3ICs1OTgsNyBAQCBib29s
IEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byBhbmNob3Ig
PSBmcmFtZS5kb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6YVRhZywgZmFsc2Up
OwotICAgIGFuY2hvci0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIsIHVybC5zdHJp
bmcoKSk7CisgICAgYW5jaG9yLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6aHJlZkF0dHIsIHVybC5zdHJpbmcoKSk7CiAgICAgYW5jaG9yLT5hcHBlbmRDaGls
ZChmcmFtZS5kb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZShbdGl0bGUgcHJlY29tcG9zZWRTdHJp
bmdXaXRoQ2Fub25pY2FsTWFwcGluZ10pKTsKIAogICAgIGZyYWdtZW50ID0gZnJhbWUuZG9jdW1l
bnQoKS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CmluZGV4IDcyM2UwMDRhMzJmYWViMzUzMmM5OGU1NzUzMTFiNWUwYmE1M2FmM2UuLjE1YTk1ZDhi
MjA2YTVhNTRhZjc5YTU3NGFhNjkwMzE0YjgyOWIwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKQEAgLTc5Niw3ICs3OTYsNyBAQCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJh
Z21lbnRGcm9tVGV4dChSYW5nZSYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgICAg
ICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyaW5nKSwg
QVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIGlmIChzdHJpbmcuZW5kc1dpdGgoJ1xuJykp
IHsKICAgICAgICAgICAgIGF1dG8gZWxlbWVudCA9IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7Ci0gICAgICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBcHBs
ZUludGVyY2hhbmdlTmV3bGluZSk7ICAgICAgICAgICAgCisgICAgICAgICAgICBlbGVtZW50LT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNo
YW5nZU5ld2xpbmUpOwogICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQs
IEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmcmFnbWVu
dDsKQEAgLTgyOCw3ICs4MjgsNyBAQCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChSYW5nZSYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgICAgICBp
ZiAocy5pc0VtcHR5KCkgJiYgaSArIDEgPT0gbnVtTGluZXMpIHsKICAgICAgICAgICAgIC8vIEZv
ciBsYXN0IGxpbmUsIHVzZSB0aGUgIm1hZ2ljIEJSIiByYXRoZXIgdGhhbiBhIFAuCiAgICAgICAg
ICAgICBlbGVtZW50ID0gSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAg
ICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEFwcGxlSW50ZXJjaGFuZ2VOZXds
aW5lKTsKKyAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oY2xhc3NBdHRyLCBBcHBsZUludGVyY2hhbmdlTmV3bGluZSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAodXNlTGluZUJyZWFrKSB7CiAgICAgICAgICAgICBlbGVtZW50ID0gSFRNTEJSRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICAgICAgICAgIGZpbGxDb250YWluZXJGcm9tU3RyaW5n
KGZyYWdtZW50LCBzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRv
bklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUu
Y3BwCmluZGV4IGU3NWE4MGFlZmQxMTRkMDRlNWZlOTgyZTJmZmFlMmYwNjAzZWY0ZTEuLjQwMjFj
NmVmNzJhNDUzMDI3ZmJlODYzNzJjZjlmMTYzZWVmYzYxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBib29sIEJhc2VC
dXR0b25JbnB1dFR5cGU6OnN0b3Jlc1ZhbHVlU2VwYXJhdGVGcm9tQXR0cmlidXRlKCkKIAogdm9p
ZCBCYXNlQnV0dG9uSW5wdXRUeXBlOjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHNhbml0aXplZFZh
bHVlLCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKQogewotICAgIGVsZW1lbnQoKS5zZXRB
dHRyaWJ1dGUodmFsdWVBdHRyLCBzYW5pdGl6ZWRWYWx1ZSk7CisgICAgZWxlbWVudCgpLnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odmFsdWVBdHRyLCBzYW5pdGl6ZWRWYWx1ZSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCmluZGV4IGViN2FlZmUyZDExNTBiOTNhY2NiODM3Yzg1
NmEzNDlmZDMwM2Q0MjcuLmJhNWE5OTFkNzNiNTAyNDM0MDUxMDRmMzUzYmRlODA0ODJlY2Q5NTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcApA
QCAtMTAzLDcgKzEwMyw3IEBAIGJvb2wgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6c3RvcmVzVmFs
dWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKQogCiB2b2lkIEJhc2VDaGVja2FibGVJbnB1dFR5cGU6
OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgc2FuaXRpemVkVmFsdWUsIGJvb2wsIFRleHRGaWVsZEV2
ZW50QmVoYXZpb3IpCiB7Ci0gICAgZWxlbWVudCgpLnNldEF0dHJpYnV0ZSh2YWx1ZUF0dHIsIHNh
bml0aXplZFZhbHVlKTsKKyAgICBlbGVtZW50KCkuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbih2YWx1ZUF0dHIsIHNhbml0aXplZFZhbHVlKTsKIH0KIAogYm9vbCBCYXNlQ2hlY2th
YmxlSW5wdXRUeXBlOjppc0NoZWNrYWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGly
ZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDdkZTNkODA3MzBiNjMzMmE1MzhlMGYwZmU1MDc2NThh
NGM0ZTMzODEuLmRiZDhjNzNmMmM3MmE3NzZkM2VhZGQ2MDRiYzgyODlkYmYyYzczNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0xMDEsMjkg
KzEwMSwyOSBAQCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6RlRQRGlyZWN0b3J5RG9jdW1l
bnRQYXJzZXIoSFRNTERvY3VtZW50JiBkb2N1bWVudCkKIAogdm9pZCBGVFBEaXJlY3RvcnlEb2N1
bWVudFBhcnNlcjo6YXBwZW5kRW50cnkoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBzaXplLCBjb25zdCBTdHJpbmcmIGRhdGUsIGJvb2wgaXNEaXJlY3RvcnkpCiB7Ci0gICAg
UmVmUHRyPEVsZW1lbnQ+IHJvd0VsZW1lbnQgPSBtX3RhYmxlRWxlbWVudC0+aW5zZXJ0Um93KC0x
LCBJR05PUkVfRVhDRVBUSU9OKTsKLSAgICByb3dFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjpjbGFzc0F0dHIsICJmdHBEaXJlY3RvcnlFbnRyeVJvdyIpOworICAgIGF1dG8gcm93RWxl
bWVudCA9IG1fdGFibGVFbGVtZW50LT5pbnNlcnRSb3coLTEsIElHTk9SRV9FWENFUFRJT04pOwor
ICAgIHJvd0VsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjpjbGFzc0F0dHIsIEF0b21pY1N0cmluZygiZnRwRGlyZWN0b3J5RW50cnlSb3ciLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKICAgICBhdXRvIHR5cGVFbGVtZW50
ID0gZG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVudCh0ZFRhZywgZmFsc2UpOwogICAgIHR5cGVFbGVt
ZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoKmRvY3VtZW50KCksIFN0cmluZygmbm9CcmVh
a1NwYWNlLCAxKSksIElHTk9SRV9FWENFUFRJT04pOwogICAgIGlmIChpc0RpcmVjdG9yeSkKLSAg
ICAgICAgdHlwZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgImZ0
cERpcmVjdG9yeUljb24gZnRwRGlyZWN0b3J5VHlwZURpcmVjdG9yeSIpOworICAgICAgICB0eXBl
RWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNs
YXNzQXR0ciwgQXRvbWljU3RyaW5nKCJmdHBEaXJlY3RvcnlJY29uIGZ0cERpcmVjdG9yeVR5cGVE
aXJlY3RvcnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgZWxz
ZQotICAgICAgICB0eXBlRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRy
LCAiZnRwRGlyZWN0b3J5SWNvbiBmdHBEaXJlY3RvcnlUeXBlRmlsZSIpOworICAgICAgICB0eXBl
RWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNs
YXNzQXR0ciwgQXRvbWljU3RyaW5nKCJmdHBEaXJlY3RvcnlJY29uIGZ0cERpcmVjdG9yeVR5cGVG
aWxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJvd0VsZW1l
bnQtPmFwcGVuZENoaWxkKHR5cGVFbGVtZW50LCBJR05PUkVfRVhDRVBUSU9OKTsKIAogICAgIGF1
dG8gbmFtZUVsZW1lbnQgPSBjcmVhdGVUREZvckZpbGVuYW1lKGZpbGVuYW1lKTsKLSAgICBuYW1l
RWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAiZnRwRGlyZWN0b3J5
RmlsZU5hbWUiKTsKKyAgICBuYW1lRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJmdHBEaXJlY3RvcnlG
aWxlTmFtZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICByb3dF
bGVtZW50LT5hcHBlbmRDaGlsZChuYW1lRWxlbWVudCwgSUdOT1JFX0VYQ0VQVElPTik7CiAKICAg
ICBhdXRvIGRhdGVFbGVtZW50ID0gZG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVudCh0ZFRhZywgZmFs
c2UpOwogICAgIGRhdGVFbGVtZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoKmRvY3VtZW50
KCksIGRhdGUpLCBJR05PUkVfRVhDRVBUSU9OKTsKLSAgICBkYXRlRWxlbWVudC0+c2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAiZnRwRGlyZWN0b3J5RmlsZURhdGUiKTsKKyAgICBk
YXRlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6
OmNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJmdHBEaXJlY3RvcnlGaWxlRGF0ZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICByb3dFbGVtZW50LT5hcHBlbmRDaGls
ZChkYXRlRWxlbWVudCwgSUdOT1JFX0VYQ0VQVElPTik7CiAKICAgICBhdXRvIHNpemVFbGVtZW50
ID0gZG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVudCh0ZFRhZywgZmFsc2UpOwogICAgIHNpemVFbGVt
ZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoKmRvY3VtZW50KCksIHNpemUpLCBJR05PUkVf
RVhDRVBUSU9OKTsKLSAgICBzaXplRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xh
c3NBdHRyLCAiZnRwRGlyZWN0b3J5RmlsZVNpemUiKTsKKyAgICBzaXplRWxlbWVudC0+c2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQXRvbWlj
U3RyaW5nKCJmdHBEaXJlY3RvcnlGaWxlU2l6ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKICAgICByb3dFbGVtZW50LT5hcHBlbmRDaGlsZChzaXplRWxlbWVudCwgSUdO
T1JFX0VYQ0VQVElPTik7CiB9CiAKQEAgLTEzNiw3ICsxMzYsNyBAQCBSZWY8RWxlbWVudD4gRlRQ
RGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZVRERm9yRmlsZW5hbWUoY29uc3QgU3RyaW5n
JiBmaWxlbgogICAgICAgICBmdWxsVVJMID0gZnVsbFVSTCArICcvJyArIGZpbGVuYW1lOwogCiAg
ICAgYXV0byBhbmNob3JFbGVtZW50ID0gZG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVudChhVGFnLCBm
YWxzZSk7Ci0gICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0
dHIsIGZ1bGxVUkwpOworICAgIGFuY2hvckVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpocmVmQXR0ciwgZnVsbFVSTCk7CiAgICAgYW5jaG9yRWxl
bWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKCpkb2N1bWVudCgpLCBmaWxlbmFtZSksIElH
Tk9SRV9FWENFUFRJT04pOwogCiAgICAgUmVmPEVsZW1lbnQ+IHRkRWxlbWVudCA9IGRvY3VtZW50
KCktPmNyZWF0ZUVsZW1lbnQodGRUYWcsIGZhbHNlKTsKQEAgLTMwNiw3ICszMDYsNyBAQCBib29s
IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiAgICAg
Ly8gT3RoZXJ3aXNlIGNyZWF0ZSBvbmUgbWFudWFsbHkKICAgICB0YWJsZUVsZW1lbnQgPSBkb2N1
bWVudCgpLT5jcmVhdGVFbGVtZW50KHRhYmxlVGFnLCBmYWxzZSk7CiAgICAgbV90YWJsZUVsZW1l
bnQgPSBkb3duY2FzdDxIVE1MVGFibGVFbGVtZW50Pih0YWJsZUVsZW1lbnQuZ2V0KCkpOwotICAg
IG1fdGFibGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppZEF0dHIsICJmdHBEaXJl
Y3RvcnlUYWJsZSIpOworICAgIG1fdGFibGVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6aWRBdHRyLCBBdG9taWNTdHJpbmcoImZ0cERpcmVjdG9y
eVRhYmxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogCiAgICAgLy8g
SWYgd2UgZGlkbid0IGZpbmQgdGhlIHRhYmxlIGVsZW1lbnQsIGxldHMgdHJ5IHRvIGFwcGVuZCBv
dXIgb3duIHRvIHRoZSBib2R5CiAgICAgLy8gSWYgdGhhdCBmYWlscyBmb3Igc29tZSByZWFzb24s
IGNyYW0gaXQgb24gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQgYXMgYSBsYXN0CkBAIC0zMzEsOCAr
MzMxLDggQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6Y3JlYXRlQmFzaWNEb2N1
bWVudCgpCiAKICAgICBhdXRvIHRhYmxlRWxlbWVudCA9IGRvY3VtZW50KCktPmNyZWF0ZUVsZW1l
bnQodGFibGVUYWcsIGZhbHNlKTsKICAgICBtX3RhYmxlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxU
YWJsZUVsZW1lbnQ+KHRhYmxlRWxlbWVudC5wdHIoKSk7Ci0gICAgbV90YWJsZUVsZW1lbnQtPnNl
dEF0dHJpYnV0ZShIVE1MTmFtZXM6OmlkQXR0ciwgImZ0cERpcmVjdG9yeVRhYmxlIik7Ci0gICAg
bV90YWJsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwgIndpZHRo
OjEwMCUiKTsKKyAgICBtX3RhYmxlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihIVE1MTmFtZXM6OmlkQXR0ciwgQXRvbWljU3RyaW5nKCJmdHBEaXJlY3RvcnlUYWJs
ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBtX3RhYmxlRWxl
bWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyLCBBdG9taWNTdHJpbmcoIndp
ZHRoOjEwMCUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKICAgICBi
b2R5RWxlbWVudC0+YXBwZW5kQ2hpbGQodGFibGVFbGVtZW50LCBJR05PUkVfRVhDRVBUSU9OKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCA2YzViMzU3
ZTUwYzkxMzlhYmIzMDJkOGNiMjIyMjJiMWQ2YjdkZDc4Li5hY2ZmYTM1MjEyMDAyNjgwYWYwZGU1
Njc2ZmUwNTlmYTk1Yzc0ZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
bmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcApAQCAtMjg2LDEyICsyODYsMTIgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6ZHJh
Z2dhYmxlKCkgY29uc3QKIAogVVJMIEhUTUxBbmNob3JFbGVtZW50OjpocmVmKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMoZ2V0QXR0cmlidXRlKGhyZWZBdHRyKSkpOworICAgIHJldHVybiBkb2N1bWVu
dCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhmYXN0R2V0
QXR0cmlidXRlKGhyZWZBdHRyKSkpOwogfQogCiB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRI
cmVmKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgc2V0QXR0cmlidXRlKGhyZWZB
dHRyLCB2YWx1ZSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihocmVm
QXR0ciwgdmFsdWUpOwogfQogCiBib29sIEhUTUxBbmNob3JFbGVtZW50OjpoYXNSZWwodWludDMy
X3QgcmVsYXRpb24pIGNvbnN0CkBAIC0zMTksNyArMzE5LDcgQEAgaW50IEhUTUxBbmNob3JFbGVt
ZW50Ojp0YWJJbmRleCgpIGNvbnN0CiAKIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6dGFyZ2V0
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKHRhcmdldEF0dHIpOworICAgIHJl
dHVybiBmYXN0R2V0QXR0cmlidXRlKHRhcmdldEF0dHIpOwogfQogCiBTdHJpbmcgSFRNTEFuY2hv
ckVsZW1lbnQ6Om9yaWdpbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVu
dC5jcHAKaW5kZXggZGVhYTQ2YjgzZTFkYWJhZjM3MWI1NzM0MDI3YWY4OGUzOWYxNTUzOC4uYzA2
MzY5YzI3ODU2YjMyOWZhOTBjYjQ5YWZjNGQ4MzZiNDRjNzMyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFyZWFFbGVtZW50LmNwcApAQCAtMjUxLDcgKzI1MSw3IEBAIGJvb2wgSFRNTEFyZWFF
bGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKIAogU3RyaW5nIEhUTUxBcmVhRWxlbWVudDo6
dGFyZ2V0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKHRhcmdldEF0dHIpOwor
ICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKHRhcmdldEF0dHIpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKaW5kZXggZjNlMjlkMDIxYzQyNmI2ZDc0ZTU3
ZGU4YzkxMDIyZmM0ODdkODllNi4uMGVhZjE1ODExNWUwODI1MWY3MjUxYTA1ZDg1ZTlkOGEyNTZj
YzIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcApAQCAtOTgsNyAr
OTgsNyBAQCBVUkwgSFRNTEJhc2VFbGVtZW50OjpocmVmKCkgY29uc3QKIAogdm9pZCBIVE1MQmFz
ZUVsZW1lbnQ6OnNldEhyZWYoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBzZXRB
dHRyaWJ1dGUoaHJlZkF0dHIsIHZhbHVlKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGhyZWZBdHRyLCB2YWx1ZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQnV0dG9uRWxlbWVudC5jcHAKaW5kZXggZTc5NWY0NDA3ODgzZDc2MzNmNzkyYWFiNGI0NmMz
ZTZhM2E0YzI2OS4uM2U4Nzg2YmI0MWExZGE2NDVjNzBiZjAwNTZjMWY0OTAxMGQ3ZWJkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgUmVmPEhUTUxCdXR0b25FbGVtZW50PiBIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKIAogdm9pZCBIVE1MQnV0dG9uRWxlbWVudDo6c2V0
VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCiB7Ci0gICAgc2V0QXR0cmlidXRlKHR5cGVB
dHRyLCB0eXBlKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVB
dHRyLCB0eXBlKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxCdXR0b25FbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERl
dGFpbHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50
LmNwcAppbmRleCA3N2U2NDU2ZWJiMTI5ZWE3N2EyYmRkNzE1ZWY4ZDBmODI5YTlmYjBhLi5jNTU1
M2UyZmVkNDdlZmQ4ZDBiN2QzMzJkNTAyNDc1OGUwZDU2ZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCkBAIC05NSw3ICs5NSw3IEBAIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmCiB2b2lkIEhUTUxEZXRhaWxzRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hh
ZG93Um9vdChTaGFkb3dSb290KiByb290KQogewogICAgIGF1dG8gc3VtbWFyeVNsb3QgPSBIVE1M
U2xvdEVsZW1lbnQ6OmNyZWF0ZShzbG90VGFnLCBkb2N1bWVudCgpKTsKLSAgICBzdW1tYXJ5U2xv
dC0+c2V0QXR0cmlidXRlKG5hbWVBdHRyLCBzdW1tYXJ5U2xvdE5hbWUoKSk7CisgICAgc3VtbWFy
eVNsb3QtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obmFtZUF0dHIsIHN1bW1h
cnlTbG90TmFtZSgpKTsKICAgICBtX3N1bW1hcnlTbG90ID0gc3VtbWFyeVNsb3QucHRyKCk7CiAK
ICAgICBhdXRvIGRlZmF1bHRTdW1tYXJ5ID0gSFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGUoc3Vt
bWFyeVRhZywgZG9jdW1lbnQoKSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBIVE1MRGV0YWls
c0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1MKIAogdm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OnRvZ2dsZU9wZW4oKQogewotICAg
IHNldEF0dHJpYnV0ZShvcGVuQXR0ciwgbV9pc09wZW4gPyBudWxsQXRvbSA6IGVtcHR5QXRvbSk7
CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihvcGVuQXR0ciwgbV9pc09w
ZW4gPyBudWxsQXRvbSA6IGVtcHR5QXRvbSk7CiAKICAgICAvLyBXZSBuZWVkIHRvIHBvc3QgdG8g
dGhlIGRvY3VtZW50IGJlY2F1c2UgdG9nZ2xpbmcgdGhpcyBlbGVtZW50IHdpbGwgZGVsZXRlIGl0
LgogICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRvY3VtZW50KCkuZXhpc3RpbmdBWE9i
amVjdENhY2hlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggYTIwM2Vl
M2FjOTIyMDZiNDdhNjdlZTM0Y2ZiZGNjOTNmMTM2ODExNi4uMzk5Mzc1OWYxMDYxNWRlMDQ5ZjBl
YTJkOGY3OWI3NzY4MWJiMzcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApA
QCAtMTUwLDcgKzE1MCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50OjpiZ0Nv
bG9yKCkgY29uc3QKIHZvaWQgSFRNTERvY3VtZW50OjpzZXRCZ0NvbG9yKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIGJvZHlFbGVtZW50ID0gYm9keSgpKQotICAgICAgICBi
b2R5RWxlbWVudC0+c2V0QXR0cmlidXRlKGJnY29sb3JBdHRyLCB2YWx1ZSk7CisgICAgICAgIGJv
ZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGJnY29sb3JBdHRy
LCB2YWx1ZSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50OjpmZ0NvbG9y
KCkgY29uc3QKQEAgLTE2NCw3ICsxNjQsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1
bWVudDo6ZmdDb2xvcigpIGNvbnN0CiB2b2lkIEhUTUxEb2N1bWVudDo6c2V0RmdDb2xvcihjb25z
dCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChhdXRvKiBib2R5RWxlbWVudCA9IGJvZHkoKSkK
LSAgICAgICAgYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZSh0ZXh0QXR0ciwgdmFsdWUpOworICAg
ICAgICBib2R5RWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0ZXh0
QXR0ciwgdmFsdWUpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1bWVudDo6YWxp
bmtDb2xvcigpIGNvbnN0CkBAIC0xNzgsNyArMTc4LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBI
VE1MRG9jdW1lbnQ6OmFsaW5rQ29sb3IoKSBjb25zdAogdm9pZCBIVE1MRG9jdW1lbnQ6OnNldEFs
aW5rQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogYm9keUVsZW1l
bnQgPSBib2R5KCkpCi0gICAgICAgIGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUoYWxpbmtBdHRy
LCB2YWx1ZSk7CisgICAgICAgIGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGFsaW5rQXR0ciwgdmFsdWUpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhU
TUxEb2N1bWVudDo6bGlua0NvbG9yKCkgY29uc3QKQEAgLTE5Miw3ICsxOTIsNyBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIEhUTUxEb2N1bWVudDo6bGlua0NvbG9yKCkgY29uc3QKIHZvaWQgSFRNTERv
Y3VtZW50OjpzZXRMaW5rQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAoYXV0
byogYm9keUVsZW1lbnQgPSBib2R5KCkpCi0gICAgICAgIGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1
dGUobGlua0F0dHIsIHZhbHVlKTsKKyAgICAgICAgYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24obGlua0F0dHIsIHZhbHVlKTsKIH0KIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBIVE1MRG9jdW1lbnQ6OnZsaW5rQ29sb3IoKSBjb25zdApAQCAtMjA2LDcgKzIwNiw3
IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50Ojp2bGlua0NvbG9yKCkgY29uc3QK
IHZvaWQgSFRNTERvY3VtZW50OjpzZXRWbGlua0NvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7
CiAgICAgaWYgKGF1dG8qIGJvZHlFbGVtZW50ID0gYm9keSgpKQotICAgICAgICBib2R5RWxlbWVu
dC0+c2V0QXR0cmlidXRlKHZsaW5rQXR0ciwgdmFsdWUpOworICAgICAgICBib2R5RWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih2bGlua0F0dHIsIHZhbHVlKTsKIH0K
IAogdm9pZCBIVE1MRG9jdW1lbnQ6OmNhcHR1cmVFdmVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAppbmRleCAzOWVjODcxNDcwMTJlZWQzMjljODExYWQ2Yjg3ODhmM2Q1Nzg5NmZi
Li4xYjhhOTY0MDdjYzQyYjg4MTFmMTRlOTUzMjU4OTljMzYxMTk1MGRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcApAQCAtNTQxLDcgKzU0MSw3IEBAIGNvbnN0IEF0b21pY1N0cmlu
ZyYgSFRNTEVsZW1lbnQ6OmRpcigpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldERpcihj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIHNldEF0dHJpYnV0ZShkaXJBdHRyLCB2
YWx1ZSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkaXJBdHRyLCB2
YWx1ZSk7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldElubmVyVGV4dChjb25zdCBTdHJpbmcm
IHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNzY0LDExICs3NjQsMTEgQEAgU3RyaW5nIEhU
TUxFbGVtZW50Ojpjb250ZW50RWRpdGFibGUoKSBjb25zdAogdm9pZCBIVE1MRWxlbWVudDo6c2V0
Q29udGVudEVkaXRhYmxlKGNvbnN0IFN0cmluZyYgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJ0cnVl
IikpCi0gICAgICAgIHNldEF0dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyLCBBdG9taWNTdHJp
bmcoInRydWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAg
IHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29udGVudGVkaXRhYmxlQXR0ciwg
QXRvbWljU3RyaW5nKCJ0cnVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJm
YWxzZSIpKQotICAgICAgICBzZXRBdHRyaWJ1dGUoY29udGVudGVkaXRhYmxlQXR0ciwgQXRvbWlj
U3RyaW5nKCJmYWxzZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb250ZW50ZWRpdGFibGVB
dHRyLCBBdG9taWNTdHJpbmcoImZhbHNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJs
ZWQsICJwbGFpbnRleHQtb25seSIpKQotICAgICAgICBzZXRBdHRyaWJ1dGUoY29udGVudGVkaXRh
YmxlQXR0ciwgQXRvbWljU3RyaW5nKCJwbGFpbnRleHQtb25seSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihjb250ZW50ZWRpdGFibGVBdHRyLCBBdG9taWNTdHJpbmcoInBsYWludGV4dC1vbmx5
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIGVsc2UgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJpbmhlcml0IikpCiAgICAgICAg
IHJlbW92ZUF0dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyKTsKICAgICBlbHNlCkBAIC03ODIs
NyArNzgyLDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6ZHJhZ2dhYmxlKCkgY29uc3QKIAogdm9pZCBI
VE1MRWxlbWVudDo6c2V0RHJhZ2dhYmxlKGJvb2wgdmFsdWUpCiB7Ci0gICAgc2V0QXR0cmlidXRl
KGRyYWdnYWJsZUF0dHIsIHZhbHVlCisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihkcmFnZ2FibGVBdHRyLCB2YWx1ZQogICAgICAgICA/IEF0b21pY1N0cmluZygidHJ1ZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpCiAgICAgICAgIDogQXRvbWljU3Ry
aW5nKCJmYWxzZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIH0KQEAg
LTc5NCw3ICs3OTQsNyBAQCBib29sIEhUTUxFbGVtZW50OjpzcGVsbGNoZWNrKCkgY29uc3QKIAog
dm9pZCBIVE1MRWxlbWVudDo6c2V0U3BlbGxjaGVjayhib29sIGVuYWJsZSkKIHsKLSAgICBzZXRB
dHRyaWJ1dGUoc3BlbGxjaGVja0F0dHIsIGVuYWJsZQorICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oc3BlbGxjaGVja0F0dHIsIGVuYWJsZQogICAgICAgICA/IEF0b21pY1N0
cmluZygidHJ1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpCiAgICAgICAg
IDogQXRvbWljU3RyaW5nKCJmYWxzZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKIH0KQEAgLTg1MSw3ICs4NTEsNyBAQCBib29sIEhUTUxFbGVtZW50Ojp0cmFuc2xhdGUo
KSBjb25zdAogCiB2b2lkIEhUTUxFbGVtZW50OjpzZXRUcmFuc2xhdGUoYm9vbCBlbmFibGUpCiB7
Ci0gICAgc2V0QXR0cmlidXRlKHRyYW5zbGF0ZUF0dHIsIGVuYWJsZSA/ICJ5ZXMiIDogIm5vIik7
CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0cmFuc2xhdGVBdHRyLCBl
bmFibGUgPyAieWVzIiA6ICJubyIpOwogfQogCiBib29sIEhUTUxFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDZkYzE4NzEzYzUwZjI4ZDdiNzFlYTkx
YjhhMGIwNDA4ZjE3MzYwN2IuLjc2MGZiMmY2MjRmZmM2ZDNkZmE3YzE1Njc5YWJiMTg2NzE3MzMy
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cApAQCAtODUsNyArODUsNyBAQCBTdHJpbmcgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Zm9ybUVu
Y3R5cGUoKSBjb25zdAogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEZvcm1FbmN0
eXBlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgc2V0QXR0cmlidXRlKGZvcm1lbmN0eXBl
QXR0ciwgdmFsdWUpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9y
bWVuY3R5cGVBdHRyLCB2YWx1ZSk7CiB9CiAKIFN0cmluZyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
Ojpmb3JtTWV0aG9kKCkgY29uc3QKQEAgLTk4LDcgKzk4LDcgQEAgU3RyaW5nIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmZvcm1NZXRob2QoKSBjb25zdAogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OnNldEZvcm1NZXRob2QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBzZXRBdHRy
aWJ1dGUoZm9ybW1ldGhvZEF0dHIsIHZhbHVlKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGZvcm1tZXRob2RBdHRyLCB2YWx1ZSk7CiB9CiAKIGJvb2wgSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6Zm9ybU5vVmFsaWRhdGUoKSBjb25zdApAQCAtNTgwLDcgKzU4MCw3IEBA
IGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0b2NvcnJlY3QoKSBjb25zdAogCiB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEF1dG9jb3JyZWN0KGJvb2wgYXV0b2NvcnJlY3Qp
CiB7Ci0gICAgc2V0QXR0cmlidXRlKGF1dG9jb3JyZWN0QXR0ciwgYXV0b2NvcnJlY3QgPyBBdG9t
aWNTdHJpbmcoIm9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkgOiBBdG9t
aWNTdHJpbmcoIm9mZiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGF1dG9jb3JyZWN0QXR0ciwgYXV0
b2NvcnJlY3QgPyBBdG9taWNTdHJpbmcoIm9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkgOiBBdG9taWNTdHJpbmcoIm9mZiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKIH0KIAogV2ViQXV0b2NhcGl0YWxpemVUeXBlIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OmF1dG9jYXBpdGFsaXplVHlwZSgpIGNvbnN0CkBAIC02MDAsNyArNjAwLDcgQEAgY29u
c3QgQXRvbWljU3RyaW5nJiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdXRvY2FwaXRhbGl6ZSgp
IGNvbnN0CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0QXV0b2NhcGl0YWxpemUo
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUoYXV0b2NhcGl0
YWxpemVBdHRyLCB2YWx1ZSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihhdXRvY2FwaXRhbGl6ZUF0dHIsIHZhbHVlKTsKIH0KIAogI2VuZGlmCkBAIC02MjEsNyArNjIx
LDcgQEAgU3RyaW5nIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF1dG9jb21wbGV0ZSgpIGNvbnN0
CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0QXV0b2NvbXBsZXRlKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7Ci0gICAgc2V0QXR0cmlidXRlKGF1dG9jb21wbGV0ZUF0dHIsIHZhbHVl
KTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGF1dG9jb21wbGV0ZUF0
dHIsIHZhbHVlKTsKIH0KIAogQXV0b2ZpbGxNYW50bGUgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6
YXV0b2ZpbGxNYW50bGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
Y3BwCmluZGV4IDdlNjRlMDIwODkyYzlkM2Q0ZWNmMDI0MjJjYmI5NmE3MzhmMzlmMzkuLmVhZmI5
OTcyNjk3NTg0ZTBiYmUxYzFjMWM5MTFlNjVjZjZlZGY5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTQwNiw3ICs0MDYsNyBAQCBib29sIEhUTUxGb3JtRWxl
bWVudDo6YXV0b2NvcnJlY3QoKSBjb25zdAogCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6c2V0QXV0
b2NvcnJlY3QoYm9vbCBhdXRvY29ycmVjdCkKIHsKLSAgICBzZXRBdHRyaWJ1dGUoYXV0b2NvcnJl
Y3RBdHRyLCBhdXRvY29ycmVjdCA/IEF0b21pY1N0cmluZygib24iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSA6IEF0b21pY1N0cmluZygib2ZmIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oYXV0b2NvcnJlY3RBdHRyLCBhdXRvY29ycmVjdCA/IEF0b21pY1N0cmluZygib24iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSA6IEF0b21pY1N0cmluZygib2ZmIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogfQogCiBXZWJBdXRvY2FwaXRh
bGl6ZVR5cGUgSFRNTEZvcm1FbGVtZW50OjphdXRvY2FwaXRhbGl6ZVR5cGUoKSBjb25zdApAQCAt
NDIxLDcgKzQyMSw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTEZvcm1FbGVtZW50OjphdXRv
Y2FwaXRhbGl6ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpzZXRBdXRvY2FwaXRh
bGl6ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIHNldEF0dHJpYnV0ZShhdXRv
Y2FwaXRhbGl6ZUF0dHIsIHZhbHVlKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGF1dG9jYXBpdGFsaXplQXR0ciwgdmFsdWUpOwogfQogCiAjZW5kaWYKQEAgLTY4Nywx
MiArNjg3LDEyIEBAIFN0cmluZyBIVE1MRm9ybUVsZW1lbnQ6OmFjdGlvbigpIGNvbnN0CiAKIHZv
aWQgSFRNTEZvcm1FbGVtZW50OjpzZXRBY3Rpb24oY29uc3QgU3RyaW5nICZ2YWx1ZSkKIHsKLSAg
ICBzZXRBdHRyaWJ1dGUoYWN0aW9uQXR0ciwgdmFsdWUpOworICAgIHNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oYWN0aW9uQXR0ciwgdmFsdWUpOwogfQogCiB2b2lkIEhUTUxGb3Jt
RWxlbWVudDo6c2V0RW5jdHlwZShjb25zdCBTdHJpbmcgJnZhbHVlKQogewotICAgIHNldEF0dHJp
YnV0ZShlbmN0eXBlQXR0ciwgdmFsdWUpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oZW5jdHlwZUF0dHIsIHZhbHVlKTsKIH0KIAogU3RyaW5nIEhUTUxGb3JtRWxlbWVu
dDo6bWV0aG9kKCkgY29uc3QKQEAgLTcwMiwxMiArNzAyLDEyIEBAIFN0cmluZyBIVE1MRm9ybUVs
ZW1lbnQ6Om1ldGhvZCgpIGNvbnN0CiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpzZXRNZXRob2Qo
Y29uc3QgU3RyaW5nICZ2YWx1ZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUobWV0aG9kQXR0ciwgdmFs
dWUpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWV0aG9kQXR0ciwg
dmFsdWUpOwogfQogCiBTdHJpbmcgSFRNTEZvcm1FbGVtZW50Ojp0YXJnZXQoKSBjb25zdAogewot
ICAgIHJldHVybiBnZXRBdHRyaWJ1dGUodGFyZ2V0QXR0cik7CisgICAgcmV0dXJuIGZhc3RHZXRB
dHRyaWJ1dGUodGFyZ2V0QXR0cik7CiB9CiAKIGJvb2wgSFRNTEZvcm1FbGVtZW50Ojp3YXNVc2Vy
U3VibWl0dGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3Bw
CmluZGV4IDM2ZTNjZGU2OTQ2ZGQ5MzcxY2QzMDg3YWY4NmM1NWYwMDU1MjliMjkuLjU2M2I5Yjg4
YjRmYjZlYmFjZWNmZTI3NTE2MjM4MzQ0ZjI0YWUxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMzc1LDcgKzM3NSw3IEBAIGludCBIVE1MSW1hZ2VFbGVt
ZW50Ojp3aWR0aChib29sIGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykKICAgICBpZiAoIXJlbmRl
cmVyKCkpIHsKICAgICAgICAgLy8gY2hlY2sgdGhlIGF0dHJpYnV0ZSBmaXJzdCBmb3IgYW4gZXhw
bGljaXQgcGl4ZWwgdmFsdWUKICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgaW50IHdpZHRoID0g
Z2V0QXR0cmlidXRlKHdpZHRoQXR0cikudG9JbnQoJm9rKTsKKyAgICAgICAgaW50IHdpZHRoID0g
ZmFzdEdldEF0dHJpYnV0ZSh3aWR0aEF0dHIpLnRvSW50KCZvayk7CiAgICAgICAgIGlmIChvaykK
ICAgICAgICAgICAgIHJldHVybiB3aWR0aDsKIApAQCAtNDAxLDcgKzQwMSw3IEBAIGludCBIVE1M
SW1hZ2VFbGVtZW50OjpoZWlnaHQoYm9vbCBpZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMpCiAgICAg
aWYgKCFyZW5kZXJlcigpKSB7CiAgICAgICAgIC8vIGNoZWNrIHRoZSBhdHRyaWJ1dGUgZmlyc3Qg
Zm9yIGFuIGV4cGxpY2l0IHBpeGVsIHZhbHVlCiAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGlu
dCBoZWlnaHQgPSBnZXRBdHRyaWJ1dGUoaGVpZ2h0QXR0cikudG9JbnQoJm9rKTsKKyAgICAgICAg
aW50IGhlaWdodCA9IGZhc3RHZXRBdHRyaWJ1dGUoaGVpZ2h0QXR0cikudG9JbnQoJm9rKTsKICAg
ICAgICAgaWYgKG9rKQogICAgICAgICAgICAgcmV0dXJuIGhlaWdodDsKIApAQCAtNTA3LDcgKzUw
Nyw3IEBAIFVSTCBIVE1MSW1hZ2VFbGVtZW50OjpzcmMoKSBjb25zdAogCiB2b2lkIEhUTUxJbWFn
ZUVsZW1lbnQ6OnNldFNyYyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHNldEF0dHJpYnV0
ZShzcmNBdHRyLCB2YWx1ZSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihzcmNBdHRyLCB2YWx1ZSk7CiB9CiAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0V2lkdGgo
aW50IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXgg
MzRiNGNjY2FlZDdiOWYzNThhOTczNjg5ZTNiMDc2YWI1N2FlNTdlMC4uZmY2MGNiMzA1Y2RkYjQ3
YzhhNjdkNGIzMTg4NzhiODU5N2ExNmEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpo
YW5kbGVCbHVyRXZlbnQoKQogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFR5cGUoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlKQogewotICAgIHNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgdHlwZSk7
CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgdHlwZSk7
CiB9CiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSgpCkBAIC00NTYsNyArNDU2
LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICBpZiAoaGFkVHlw
ZSAmJiAhbmV3VHlwZS0+Y2FuQ2hhbmdlRnJvbUFub3RoZXJUeXBlKCkpIHsKICAgICAgICAgLy8g
U2V0IHRoZSBhdHRyaWJ1dGUgYmFjayB0byB0aGUgb2xkIHZhbHVlLgogICAgICAgICAvLyBVc2Vm
dWwgaW4gY2FzZSB3ZSB3ZXJlIGNhbGxlZCBmcm9tIGluc2lkZSBwYXJzZUF0dHJpYnV0ZS4KLSAg
ICAgICAgc2V0QXR0cmlidXRlKHR5cGVBdHRyLCB0eXBlKCkpOworICAgICAgICBzZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCB0eXBlKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1
cGRhdGVUeXBlKCkKICAgICBib29sIHdpbGxTdG9yZVZhbHVlID0gbV9pbnB1dFR5cGUtPnN0b3Jl
c1ZhbHVlU2VwYXJhdGVGcm9tQXR0cmlidXRlKCk7CiAKICAgICBpZiAoZGlkU3RvcmVWYWx1ZSAm
JiAhd2lsbFN0b3JlVmFsdWUgJiYgaGFzRGlydHlWYWx1ZSgpKSB7Ci0gICAgICAgIHNldEF0dHJp
YnV0ZSh2YWx1ZUF0dHIsIG1fdmFsdWVJZkRpcnR5KTsKKyAgICAgICAgc2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbih2YWx1ZUF0dHIsIG1fdmFsdWVJZkRpcnR5KTsKICAgICAgICAg
bV92YWx1ZUlmRGlydHkgPSBTdHJpbmcoKTsKICAgICB9CiAgICAgaWYgKCFkaWRTdG9yZVZhbHVl
ICYmIHdpbGxTdG9yZVZhbHVlKSB7CkBAIC04MDgsNyArODA4LDcgQEAgU3RyaW5nIEhUTUxJbnB1
dEVsZW1lbnQ6OmFsdFRleHQoKSBjb25zdAogICAgIFN0cmluZyBhbHQgPSBmYXN0R2V0QXR0cmli
dXRlKGFsdEF0dHIpOwogICAgIC8vIGZhbGwgYmFjayB0byB0aXRsZSBhdHRyaWJ1dGUKICAgICBp
ZiAoYWx0LmlzTnVsbCgpKQotICAgICAgICBhbHQgPSBnZXRBdHRyaWJ1dGUodGl0bGVBdHRyKTsK
KyAgICAgICAgYWx0ID0gZmFzdEdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpOwogICAgIGlmIChhbHQu
aXNOdWxsKCkpCiAgICAgICAgIGFsdCA9IGZhc3RHZXRBdHRyaWJ1dGUodmFsdWVBdHRyKTsKICAg
ICBpZiAoYWx0LmlzRW1wdHkoKSkKQEAgLTEyMDcsNyArMTIwNyw3IEBAIFN0cmluZyBIVE1MSW5w
dXRFbGVtZW50OjpkZWZhdWx0VmFsdWUoKSBjb25zdAogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OnNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcgJnZhbHVlKQogewotICAgIHNldEF0dHJpYnV0
ZSh2YWx1ZUF0dHIsIHZhbHVlKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHZhbHVlQXR0ciwgdmFsdWUpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNSRkMyNjE2
VG9rZW5DaGFyYWN0ZXIoVUNoYXIgY2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHAKaW5kZXggNTUxY2U3NmZjZGNlNTVkNThlNzgzNzdhNWY2ZGViNzBjZTIyYjQwNS4uOGI4
ZDgxNWE1ZTYyMGY3ZDJmZGVlOTg2YjhjYmQzOTZlZWNjMjU2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNDc4LDcgKzQ3OCw3IEBAIHZvaWQgSFRNTExpbmtF
bGVtZW50OjpoYW5kbGVDbGljayhFdmVudCYgZXZlbnQpCiAKIFVSTCBIVE1MTGlua0VsZW1lbnQ6
OmhyZWYoKSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGdldEF0
dHJpYnV0ZShocmVmQXR0cikpOworICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGZh
c3RHZXRBdHRyaWJ1dGUoaHJlZkF0dHIpKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1M
TGlua0VsZW1lbnQ6OnJlbCgpIGNvbnN0CkBAIC00ODgsMTIgKzQ4OCwxMiBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIEhUTUxMaW5rRWxlbWVudDo6cmVsKCkgY29uc3QKIAogU3RyaW5nIEhUTUxMaW5r
RWxlbWVudDo6dGFyZ2V0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKHRhcmdl
dEF0dHIpOworICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKHRhcmdldEF0dHIpOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIEhUTUxMaW5rRWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGdldEF0dHJpYnV0ZSh0eXBlQXR0cik7CisgICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1
dGUodHlwZUF0dHIpOwogfQogCiBPcHRpb25hbDxMaW5rSWNvblR5cGU+IEhUTUxMaW5rRWxlbWVu
dDo6aWNvblR5cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKaW5kZXggNDBlMjI5ZmQwZGM5MDAzMWZhMTYwYmYxYzc1ODkyMDZhYjRkODRhMy4uNWY4ZDhi
Yjg4Yzg0OWZkMDdhNjc4YTY0OTg0YWZkMmI0YmY1ODBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC05OTYsNyArOTk2LDcgQEAgTWVkaWFFcnJvciogSFRN
TE1lZGlhRWxlbWVudDo6ZXJyb3IoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFNyYyhjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBzZXRBdHRyaWJ1dGUoc3JjQXR0ciwgdXJs
KTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIHVybCk7
CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtMzA0Nyw3ICszMDQ3LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQcmVsb2FkKGNvbnN0IFN0cmluZyYgcHJlbG9hZCkKICAg
ICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBzZXRBdHRyaWJ1dGUocHJlbG9hZEF0dHIsIHBy
ZWxvYWQpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocHJlbG9hZEF0
dHIsIHByZWxvYWQpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkoUGxheVByb21p
c2UmJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKaW5k
ZXggNWY2MDE5ZGJiMGVkNDViMGMzMDI1MDExMDc3Yjk3OTVhNTY0YTkzZi4uZGEyNzZhNDZjMzZl
ODkwOWYzMzJlMTg1NGViZGI3MWMyNjQ3YzRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZXRlckVsZW1lbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
CiAKIGRvdWJsZSBIVE1MTWV0ZXJFbGVtZW50OjptaW4oKSBjb25zdAogewotICAgIHJldHVybiBw
YXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShnZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOworICAg
IHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShmYXN0R2V0QXR0cmlidXRlKG1pbkF0
dHIpLCAwKTsKIH0KIAogdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpzZXRNaW4oZG91YmxlIG1pbiwg
RXhjZXB0aW9uQ29kZSYgZWMpCkBAIC04OSwxMiArODksMTIgQEAgdm9pZCBIVE1MTWV0ZXJFbGVt
ZW50OjpzZXRNaW4oZG91YmxlIG1pbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGVjID0g
Tk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2V0QXR0cmli
dXRlKG1pbkF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKG1pbikpOworICAgIHNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWluQXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIobWlu
KSk7CiB9CiAKIGRvdWJsZSBIVE1MTWV0ZXJFbGVtZW50OjptYXgoKSBjb25zdAogewotICAgIHJl
dHVybiBzdGQ6Om1heChwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShnZXRBdHRyaWJ1dGUobWF4
QXR0ciksIHN0ZDo6bWF4KDEuMCwgbWluKCkpKSwgbWluKCkpOworICAgIHJldHVybiBzdGQ6Om1h
eChwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShmYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBz
dGQ6Om1heCgxLjAsIG1pbigpKSksIG1pbigpKTsKIH0KIAogdm9pZCBIVE1MTWV0ZXJFbGVtZW50
OjpzZXRNYXgoZG91YmxlIG1heCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMDMsMTIgKzEwMywx
MiBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnNldE1heChkb3VibGUgbWF4LCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBzZXRBdHRyaWJ1dGUobWF4QXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIo
bWF4KSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtYXhBdHRyLCBB
dG9taWNTdHJpbmc6Om51bWJlcihtYXgpKTsKIH0KIAogZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6
OnZhbHVlKCkgY29uc3QKIHsKLSAgICBkb3VibGUgdmFsdWUgPSBwYXJzZVRvRG91YmxlRm9yTnVt
YmVyVHlwZShnZXRBdHRyaWJ1dGUodmFsdWVBdHRyKSwgMCk7CisgICAgZG91YmxlIHZhbHVlID0g
cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZmFzdEdldEF0dHJpYnV0ZSh2YWx1ZUF0dHIpLCAw
KTsKICAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptYXgodmFsdWUsIG1pbigpKSwgbWF4KCkpOwog
fQogCkBAIC0xMTgsMTIgKzExOCwxMiBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnNldFZhbHVl
KGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGVjID0gTk9UX1NVUFBP
UlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2V0QXR0cmlidXRlKHZhbHVl
QXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIodmFsdWUpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHZhbHVlQXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIodmFsdWUp
KTsKIH0KIAogZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6OmxvdygpIGNvbnN0CiB7Ci0gICAgZG91
YmxlIGxvdyA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGdldEF0dHJpYnV0ZShsb3dBdHRy
KSwgbWluKCkpOworICAgIGRvdWJsZSBsb3cgPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShm
YXN0R2V0QXR0cmlidXRlKGxvd0F0dHIpLCBtaW4oKSk7CiAgICAgcmV0dXJuIHN0ZDo6bWluKHN0
ZDo6bWF4KGxvdywgbWluKCkpLCBtYXgoKSk7CiB9CiAKQEAgLTEzMywxMiArMTMzLDEyIEBAIHZv
aWQgSFRNTE1ldGVyRWxlbWVudDo6c2V0TG93KGRvdWJsZSBsb3csIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIHNldEF0dHJpYnV0ZShsb3dBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihsb3cpKTsK
KyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGxvd0F0dHIsIEF0b21pY1N0
cmluZzo6bnVtYmVyKGxvdykpOwogfQogCiBkb3VibGUgSFRNTE1ldGVyRWxlbWVudDo6aGlnaCgp
IGNvbnN0CiB7Ci0gICAgZG91YmxlIGhpZ2ggPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShn
ZXRBdHRyaWJ1dGUoaGlnaEF0dHIpLCBtYXgoKSk7CisgICAgZG91YmxlIGhpZ2ggPSBwYXJzZVRv
RG91YmxlRm9yTnVtYmVyVHlwZShmYXN0R2V0QXR0cmlidXRlKGhpZ2hBdHRyKSwgbWF4KCkpOwog
ICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heChoaWdoLCBsb3coKSksIG1heCgpKTsKIH0KIApA
QCAtMTQ4LDEyICsxNDgsMTIgQEAgdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpzZXRIaWdoKGRvdWJs
ZSBoaWdoLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VS
UjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzZXRBdHRyaWJ1dGUoaGlnaEF0dHIsIEF0
b21pY1N0cmluZzo6bnVtYmVyKGhpZ2gpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGhpZ2hBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihoaWdoKSk7CiB9CiAKIGRv
dWJsZSBIVE1MTWV0ZXJFbGVtZW50OjpvcHRpbXVtKCkgY29uc3QKIHsKLSAgICBkb3VibGUgb3B0
aW11bSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGdldEF0dHJpYnV0ZShvcHRpbXVtQXR0
ciksIChtYXgoKSArIG1pbigpKSAvIDIpOworICAgIGRvdWJsZSBvcHRpbXVtID0gcGFyc2VUb0Rv
dWJsZUZvck51bWJlclR5cGUoZmFzdEdldEF0dHJpYnV0ZShvcHRpbXVtQXR0ciksIChtYXgoKSAr
IG1pbigpKSAvIDIpOwogICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heChvcHRpbXVtLCBtaW4o
KSksIG1heCgpKTsKIH0KIApAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgSFRNTE1ldGVyRWxlbWVu
dDo6c2V0T3B0aW11bShkb3VibGUgb3B0aW11bSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2V0
QXR0cmlidXRlKG9wdGltdW1BdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihvcHRpbXVtKSk7Cisg
ICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihvcHRpbXVtQXR0ciwgQXRvbWlj
U3RyaW5nOjpudW1iZXIob3B0aW11bSkpOwogfQogCiBIVE1MTWV0ZXJFbGVtZW50OjpHYXVnZVJl
Z2lvbiBIVE1MTWV0ZXJFbGVtZW50OjpnYXVnZVJlZ2lvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDFhZjA4ODFkZmVhNTM5NDE3N2ViNTZi
OTU4ZDRkNDQzODkyMjVjMDMuLmVkM2Y0NDA3YWQ3YzE0NmZiMTI4NWJjNmQzMzgzZmIzMjc3NTIx
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC00NzAs
MTIgKzQ3MCwxMiBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50Ojp1cGRhdGVEb2NOYW1lZEl0ZW0o
KQogCiBib29sIEhUTUxPYmplY3RFbGVtZW50Ojpjb250YWluc0phdmFBcHBsZXQoKSBjb25zdAog
ewotICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShnZXRBdHRy
aWJ1dGUodHlwZUF0dHIpKSkKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0
TUlNRVR5cGUoZmFzdEdldEF0dHJpYnV0ZSh0eXBlQXR0cikpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxFbGVtZW50PigqdGhp
cykpIHsKICAgICAgICAgaWYgKGNoaWxkLmhhc1RhZ05hbWUocGFyYW1UYWcpICYmIGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNoaWxkLmdldE5hbWVBdHRyaWJ1dGUoKSwgInR5cGUiKQot
ICAgICAgICAgICAgJiYgTUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUoY2hp
bGQuZ2V0QXR0cmlidXRlKHZhbHVlQXR0cikuc3RyaW5nKCkpKQorICAgICAgICAgICAgJiYgTUlN
RVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUoY2hpbGQuZmFzdEdldEF0dHJpYnV0
ZSh2YWx1ZUF0dHIpLnN0cmluZygpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBpZiAoY2hpbGQuaGFzVGFnTmFtZShvYmplY3RUYWcpICYmIGRvd25jYXN0PEhUTUxPYmplY3RF
bGVtZW50PihjaGlsZCkuY29udGFpbnNKYXZhQXBwbGV0KCkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggODJm
Y2RjMDE5MGJkNTE5ZTc2MTM5ZWMzM2NkNWI4ZmM4MzY5YzNlMS4uYzc5Y2NhMTg2MzU0YjkwM2Rl
ZTZhYmQzNjU2MTA3ODNhYmM3MjFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBI
VE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCYgZG8KICAg
ICBpZiAoIXZhbHVlLmlzTnVsbCgpKQogICAgICAgICBlbGVtZW50LT5zZXRWYWx1ZSh2YWx1ZSk7
CiAgICAgaWYgKGRlZmF1bHRTZWxlY3RlZCkKLSAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRl
KHNlbGVjdGVkQXR0ciwgZW1wdHlBdG9tKTsKKyAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihzZWxlY3RlZEF0dHIsIGVtcHR5QXRvbSk7CiAgICAgZWxl
bWVudC0+c2V0U2VsZWN0ZWQoc2VsZWN0ZWQpOwogCiAgICAgcmV0dXJuIFdURk1vdmUoZWxlbWVu
dCk7CkBAIC0yMDIsNyArMjAyLDcgQEAgU3RyaW5nIEhUTUxPcHRpb25FbGVtZW50Ojp2YWx1ZSgp
IGNvbnN0CiAKIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7Ci0gICAgc2V0QXR0cmlidXRlKHZhbHVlQXR0ciwgdmFsdWUpOworICAgIHNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odmFsdWVBdHRyLCB2YWx1ZSk7CiB9CiAKIGJv
b2wgSFRNTE9wdGlvbkVsZW1lbnQ6OnNlbGVjdGVkKCkKQEAgLTI4MCw3ICsyODAsNyBAQCBTdHJp
bmcgSFRNTE9wdGlvbkVsZW1lbnQ6OmxhYmVsKCkgY29uc3QKIAogdm9pZCBIVE1MT3B0aW9uRWxl
bWVudDo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBzZXRBdHRyaWJ1dGUo
bGFiZWxBdHRyLCBsYWJlbCk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihsYWJlbEF0dHIsIGxhYmVsKTsKIH0KIAogdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6d2lsbFJl
c2V0Q29tcHV0ZWRTdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
cm9ncmVzc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVt
ZW50LmNwcAppbmRleCAzNTRiODI3ZWIyOGEwODEyNTEyMDhjYzQzNjVhOGEzNzU3YWQ2YjYwLi44
ZWFhMDYzZmJlNzExNmMxOTdlNWQ1ZDA0NjU2MzNlOWEwMWQ3ZmQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lk
IEhUTUxQcm9ncmVzc0VsZW1lbnQ6OnNldFZhbHVlKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgc2V0QXR0cmlidXRlKHZhbHVlQXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIo
dmFsdWUgPj0gMCA/IHZhbHVlIDogMCkpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24odmFsdWVBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcih2YWx1ZSA+PSAwID8gdmFs
dWUgOiAwKSk7CiB9CiAKIGRvdWJsZSBIVE1MUHJvZ3Jlc3NFbGVtZW50OjptYXgoKSBjb25zdApA
QCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSFRNTFByb2dyZXNzRWxlbWVudDo6c2V0TWF4KGRvdWJs
ZSBtYXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJS
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHNldEF0dHJpYnV0ZShtYXhBdHRyLCBBdG9t
aWNTdHJpbmc6Om51bWJlcihtYXggPiAwID8gbWF4IDogMSkpOworICAgIHNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24obWF4QXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIobWF4ID4g
MCA/IG1heCA6IDEpKTsKIH0KIAogZG91YmxlIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OnBvc2l0aW9u
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXgg
M2IxMGQ2N2FjMzVlMjQ4MzhhMjk1YzE3NjNlNWZhNmE4NWMzNGEzZC4uMmYzYzdkNjNmMWE5NDQz
ZTdjNGUwNGQ2ZDlmZDM3NzdjZGM5NzBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBTdHJpbmcgSFRNTFNjcmlwdEVsZW1l
bnQ6OmNoYXJzZXRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0CiAKIFN0cmluZyBIVE1MU2NyaXB0RWxl
bWVudDo6dHlwZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0QXR0cmli
dXRlKHR5cGVBdHRyKS5zdHJpbmcoKTsKKyAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZSh0eXBl
QXR0cikuc3RyaW5nKCk7CiB9CiAKIFN0cmluZyBIVE1MU2NyaXB0RWxlbWVudDo6bGFuZ3VhZ2VB
dHRyaWJ1dGVWYWx1ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwCmluZGV4IGNjM2JmZTI1NmYyYjgzYTBiOWQ0MzM0YmY1MDA1MDhiOGU2MGIyN2YuLmE0
NTk5MzI5M2QwMWMwOTJhNDQ3Yjg1MzRhYTFkY2YwOGVhODcxOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6c2V0TXVsdGlwbGUoYm9vbCBtdWx0aXBsZSkKIHsKICAgICBib29sIG9s
ZE11bHRpcGxlID0gdGhpcy0+bXVsdGlwbGUoKTsKICAgICBpbnQgb2xkU2VsZWN0ZWRJbmRleCA9
IHNlbGVjdGVkSW5kZXgoKTsKLSAgICBzZXRBdHRyaWJ1dGUobXVsdGlwbGVBdHRyLCBtdWx0aXBs
ZSA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtdWx0
aXBsZUF0dHIsIG11bHRpcGxlID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogCiAgICAgLy8gUmVz
dG9yZSBzZWxlY3RlZEluZGV4IGFmdGVyIGNoYW5naW5nIHRoZSBtdWx0aXBsZSBmbGFnIHRvIHBy
ZXNlcnZlCiAgICAgLy8gc2VsZWN0aW9uIGFzIHNpbmdsZS1saW5lIGFuZCBtdWx0aS1saW5lIGhh
cyBkaWZmZXJlbnQgZGVmYXVsdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTb3VyY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1l
bnQuY3BwCmluZGV4IDVhNDI4YjJiMTdhYjdiNzMwNTdjZjY1NWYwNTAzMGU0ZWEwZDNkN2IuLjFl
NzJlNDFjYWUzYTgzNzZmMjNmNGNjOTc1ZTRiMzdiYzQ0ZDgxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCkBAIC05MSwyNyArOTEsMjcgQEAgdm9pZCBIVE1M
U291cmNlRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgcmVtb3ZhbFJvb3QpCiAK
IHZvaWQgSFRNTFNvdXJjZUVsZW1lbnQ6OnNldFNyYyhjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAg
ICBzZXRBdHRyaWJ1dGUoc3JjQXR0ciwgdXJsKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKHNyY0F0dHIsIHVybCk7CiB9CiAKIFN0cmluZyBIVE1MU291cmNlRWxlbWVu
dDo6bWVkaWEoKSBjb25zdAogewotICAgIHJldHVybiBnZXRBdHRyaWJ1dGUobWVkaWFBdHRyKTsK
KyAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZShtZWRpYUF0dHIpOwogfQogCiB2b2lkIEhUTUxT
b3VyY2VFbGVtZW50OjpzZXRNZWRpYShjb25zdCBTdHJpbmcmIG1lZGlhKQogewotICAgIHNldEF0
dHJpYnV0ZShtZWRpYUF0dHIsIG1lZGlhKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKG1lZGlhQXR0ciwgbWVkaWEpOwogfQogCiBTdHJpbmcgSFRNTFNvdXJjZUVsZW1l
bnQ6OnR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBnZXRBdHRyaWJ1dGUodHlwZUF0dHIpOwor
ICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKHR5cGVBdHRyKTsKIH0KIAogdm9pZCBIVE1MU291
cmNlRWxlbWVudDo6c2V0VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgc2V0QXR0cmli
dXRlKHR5cGVBdHRyLCB0eXBlKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHR5cGVBdHRyLCB0eXBlKTsKIH0KIAogdm9pZCBIVE1MU291cmNlRWxlbWVudDo6c2NoZWR1
bGVFcnJvckV2ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
U2VjdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9u
RWxlbWVudC5jcHAKaW5kZXggY2EzMGVkMjdjZjFmOTE1ZDg4MzBiODZjZjkyMTkxZjdlM2I1NmJh
My4uMGFhNWJlNzJmOWQwYTk2YWUwOGVjODU2MGVmMWM3Mzc4YjRkODAxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKQEAgLTExNyw3ICsx
MTcsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjphbGln
bigpIGNvbnN0CiAKIHZvaWQgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnNldEFsaWduKGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgc2V0QXR0cmlidXRlKGFsaWduQXR0ciwgdmFs
dWUpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYWxpZ25BdHRyLCB2
YWx1ZSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6
OmNoKCkgY29uc3QKQEAgLTEyNywxNyArMTI3LDE3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQ6OmNoKCkgY29uc3QKIAogdm9pZCBIVE1MVGFibGVTZWN0aW9u
RWxlbWVudDo6c2V0Q2goY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBzZXRBdHRy
aWJ1dGUoY2hhckF0dHIsIHZhbHVlKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGNoYXJBdHRyLCB2YWx1ZSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQ6OmNoT2ZmKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0QXR0cmli
dXRlKGNoYXJvZmZBdHRyKTsKKyAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZShjaGFyb2ZmQXR0
cik7CiB9CiAKIHZvaWQgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnNldENoT2ZmKGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgc2V0QXR0cmlidXRlKGNoYXJvZmZBdHRyLCB2YWx1
ZSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjaGFyb2ZmQXR0ciwg
dmFsdWUpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50
Ojp2QWxpZ24oKSBjb25zdApAQCAtMTQ3LDcgKzE0Nyw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYg
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnZBbGlnbigpIGNvbnN0CiAKIHZvaWQgSFRNTFRhYmxl
U2VjdGlvbkVsZW1lbnQ6OnNldFZBbGlnbihjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewot
ICAgIHNldEF0dHJpYnV0ZSh2YWxpZ25BdHRyLCB2YWx1ZSk7CisgICAgc2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbih2YWxpZ25BdHRyLCB2YWx1ZSk7CiB9CiAKIFJlZjxIVE1MQ29s
bGVjdGlvbj4gSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnJvd3MoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA4NDgzOTU2
MDM1N2MzODUxNjdhMjg4YzA0OWRmY2IxOTdlZDQyODQzLi4yMzhlZjFhOTkwZWU1NzZhZDMwM2Jm
MmMxYzJlYTNjMmJmNWM0NjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnJlYWRPbmx5QXR0cmlidXRlQ2hhbmdlZCgpCiB2b2lkIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxp
dHkoKQogewogICAgIGlmIChUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQqIGlubmVyVGV4dCA9
IGlubmVyVGV4dEVsZW1lbnQoKSkKLSAgICAgICAgaW5uZXJUZXh0LT5zZXRBdHRyaWJ1dGUoY29u
dGVudGVkaXRhYmxlQXR0ciwgaXNEaXNhYmxlZE9yUmVhZE9ubHkoKSA/ICJmYWxzZSIgOiAicGxh
aW50ZXh0LW9ubHkiKTsKKyAgICAgICAgaW5uZXJUZXh0LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0dHIsIGlzRGlzYWJsZWRPclJlYWRPbmx5KCkg
PyAiZmFsc2UiIDogInBsYWludGV4dC1vbmx5Iik7CiB9CiAKIGJvb2wgSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6Omxhc3RDaGFuZ2VXYXNVc2VyRWRpdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCAzNTYxNDc5YzljOGUxN2FmMTBhNGY4ZWRm
MmY0NDdjMGEwMzkwN2M4Li5lMDM3ZDliNWVkZTM2ZjkwZGNjZDYxMjQzN2U5MjJhMTNiMjc2ZWVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTIxMyw3ICsy
MTMsNyBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJp
YnV0ZSYgYXR0cmlidXRlKSBjb25zdAogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxWaWRlb0Vs
ZW1lbnQ6OmltYWdlU291cmNlVVJMKCkgY29uc3QKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHVybCA9IGdldEF0dHJpYnV0ZShwb3N0ZXJBdHRyKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHVybCA9IGZhc3RHZXRBdHRyaWJ1dGUocG9zdGVyQXR0cik7CiAgICAgaWYgKCFzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModXJsKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB1
cmw7CiAgICAgcmV0dXJuIG1fZGVmYXVsdFBvc3RlclVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSGlk
ZGVuSW5wdXRUeXBlLmNwcAppbmRleCBlNmY3MzJmMDAwMjVmOGY5ZTgzOGQ5YmViZTgyZDVmZWFi
MmVkOWZhLi4yMWUwYTEyYzk4ZTcxYzY2YWJiNWNjMjU0OGM4OGNmMTJmYzY0ODE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCkBAIC01OSw3ICs1OSw3IEBAIEZvcm1D
b250cm9sU3RhdGUgSGlkZGVuSW5wdXRUeXBlOjpzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0
CiAKIHZvaWQgSGlkZGVuSW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBG
b3JtQ29udHJvbFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBlbGVtZW50KCkuc2V0QXR0cmlidXRlKHZh
bHVlQXR0ciwgc3RhdGVbMF0pOworICAgIGVsZW1lbnQoKS5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKHZhbHVlQXR0ciwgc3RhdGVbMF0pOwogfQogCiBib29sIEhpZGRlbklucHV0
VHlwZTo6c3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3QKQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBI
aWRkZW5JbnB1dFR5cGU6OnN0b3Jlc1ZhbHVlU2VwYXJhdGVGcm9tQXR0cmlidXRlKCkKIAogdm9p
ZCBIaWRkZW5JbnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgc2FuaXRpemVkVmFsdWUs
IGJvb2wsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpCiB7Ci0gICAgZWxlbWVudCgpLnNldEF0dHJp
YnV0ZSh2YWx1ZUF0dHIsIHNhbml0aXplZFZhbHVlKTsKKyAgICBlbGVtZW50KCkuc2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih2YWx1ZUF0dHIsIHNhbml0aXplZFZhbHVlKTsKIH0K
IAogYm9vbCBIaWRkZW5JbnB1dFR5cGU6OmlzSGlkZGVuVHlwZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYURvY3VtZW50LmNwcAppbmRleCBkODQyOTZkMjIxOWIyYTZlODBmZjY3MzEwZThk
NWRiNGI1MmJkNjA0Li4yMzRjNDkxZDMwMDYxNGFmN2Q2NjZmYjc2ZTJlOWIzYzdmZTY2ZDNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKQEAgLTkyLDggKzkyLDggQEAgdm9p
ZCBNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgcm9v
dEVsZW1lbnQtPmFwcGVuZENoaWxkKGhlYWRFbGVtZW50LCBJR05PUkVfRVhDRVBUSU9OKTsKIAog
ICAgIGF1dG8gbWV0YUVsZW1lbnQgPSBkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KG1ldGFUYWcs
IGZhbHNlKTsKLSAgICBtZXRhRWxlbWVudC0+c2V0QXR0cmlidXRlKG5hbWVBdHRyLCAidmlld3Bv
cnQiKTsKLSAgICBtZXRhRWxlbWVudC0+c2V0QXR0cmlidXRlKGNvbnRlbnRBdHRyLCAid2lkdGg9
ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSx1c2VyLXNjYWxhYmxlPW5vIik7CisgICAgbWV0
YUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obmFtZUF0dHIsIEF0
b21pY1N0cmluZygidmlld3BvcnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgbWV0YUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
Y29udGVudEF0dHIsIEF0b21pY1N0cmluZygid2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2Nh
bGU9MSx1c2VyLXNjYWxhYmxlPW5vIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOwogICAgIGhlYWRFbGVtZW50LT5hcHBlbmRDaGlsZChtZXRhRWxlbWVudCwgSUdOT1JFX0VY
Q0VQVElPTik7CiAjZW5kaWYKIApAQCAtMTAzLDEwICsxMDMsMTAgQEAgdm9pZCBNZWRpYURvY3Vt
ZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgYXV0byBtZWRpYUVsZW1l
bnQgPSBkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KHZpZGVvVGFnLCBmYWxzZSk7CiAKICAgICBt
X21lZGlhRWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KG1lZGlhRWxlbWVudC5w
dHIoKSk7Ci0gICAgbV9tZWRpYUVsZW1lbnQtPnNldEF0dHJpYnV0ZShjb250cm9sc0F0dHIsIGVt
cHR5QXRvbSk7Ci0gICAgbV9tZWRpYUVsZW1lbnQtPnNldEF0dHJpYnV0ZShhdXRvcGxheUF0dHIs
IGVtcHR5QXRvbSk7CisgICAgbV9tZWRpYUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oY29udHJvbHNBdHRyLCBlbXB0eUF0b20pOworICAgIG1fbWVkaWFFbGVtZW50
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGF1dG9wbGF5QXR0ciwgZW1wdHlB
dG9tKTsKIAotICAgIG1fbWVkaWFFbGVtZW50LT5zZXRBdHRyaWJ1dGUobmFtZUF0dHIsICJtZWRp
YSIpOworICAgIG1fbWVkaWFFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKG5hbWVBdHRyLCBBdG9taWNTdHJpbmcoIm1lZGlhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwogCiAgICAgU3RyaW5nQnVpbGRlciBlbGVtZW50U3R5bGU7CiAgICAg
ZWxlbWVudFN0eWxlLmFwcGVuZExpdGVyYWwoIm1heC13aWR0aDogMTAwJTsgbWF4LWhlaWdodDog
MTAwJTsiKTsKQEAgLTIzNywyMiArMjM3LDIyIEBAIHZvaWQgTWVkaWFEb2N1bWVudDo6cmVwbGFj
ZU1lZGlhRWxlbWVudFRpbWVyRmlyZWQoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBTZXQg
Ym9keSBtYXJnaW4gd2lkdGggYW5kIGhlaWdodCB0byAwIGFzIHRoYXQgaXMgd2hhdCBhIFBsdWdp
bkRvY3VtZW50IHVzZXMuCi0gICAgaHRtbEJvZHktPnNldEF0dHJpYnV0ZShtYXJnaW53aWR0aEF0
dHIsICIwIik7Ci0gICAgaHRtbEJvZHktPnNldEF0dHJpYnV0ZShtYXJnaW5oZWlnaHRBdHRyLCAi
MCIpOworICAgIGh0bWxCb2R5LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1h
cmdpbndpZHRoQXR0ciwgQXRvbWljU3RyaW5nKCIwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIGh0bWxCb2R5LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKG1hcmdpbmhlaWdodEF0dHIsIEF0b21pY1N0cmluZygiMCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAogICAgIGlmIChIVE1MVmlkZW9FbGVtZW50KiB2aWRl
b0VsZW1lbnQgPSBkZXNjZW5kYW50VmlkZW9FbGVtZW50KCpodG1sQm9keSkpIHsKICAgICAgICAg
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChlbWJlZFRh
ZywgZmFsc2UpOwogICAgICAgICBIVE1MRW1iZWRFbGVtZW50JiBlbWJlZEVsZW1lbnQgPSBkb3du
Y2FzdDxIVE1MRW1iZWRFbGVtZW50PigqZWxlbWVudCk7CiAKLSAgICAgICAgZW1iZWRFbGVtZW50
LnNldEF0dHJpYnV0ZSh3aWR0aEF0dHIsICIxMDAlIik7Ci0gICAgICAgIGVtYmVkRWxlbWVudC5z
ZXRBdHRyaWJ1dGUoaGVpZ2h0QXR0ciwgIjEwMCUiKTsKLSAgICAgICAgZW1iZWRFbGVtZW50LnNl
dEF0dHJpYnV0ZShuYW1lQXR0ciwgInBsdWdpbiIpOwotICAgICAgICBlbWJlZEVsZW1lbnQuc2V0
QXR0cmlidXRlKHNyY0F0dHIsIHVybCgpLnN0cmluZygpKTsKKyAgICAgICAgZW1iZWRFbGVtZW50
LnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyLCBBdG9taWNTdHJp
bmcoIjEwMCUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAg
IGVtYmVkRWxlbWVudC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhlaWdodEF0
dHIsIEF0b21pY1N0cmluZygiMTAwJSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICAgICAgZW1iZWRFbGVtZW50LnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24obmFtZUF0dHIsIEF0b21pY1N0cmluZygicGx1Z2luIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBlbWJlZEVsZW1lbnQuc2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyLCB1cmwoKS5zdHJpbmcoKSk7CiAKICAgICAgICAg
RG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbG9hZGVyKCk7CiAgICAgICAgIEFTU0VS
VChkb2N1bWVudExvYWRlcik7CiAgICAgICAgIGlmIChkb2N1bWVudExvYWRlcikKLSAgICAgICAg
ICAgIGVtYmVkRWxlbWVudC5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsIGRvY3VtZW50TG9hZGVyLT53
cml0ZXIoKS5taW1lVHlwZSgpKTsKKyAgICAgICAgICAgIGVtYmVkRWxlbWVudC5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCBkb2N1bWVudExvYWRlci0+d3JpdGVy
KCkubWltZVR5cGUoKSk7CiAKICAgICAgICAgdmlkZW9FbGVtZW50LT5wYXJlbnROb2RlKCktPnJl
cGxhY2VDaGlsZChlbWJlZEVsZW1lbnQsICp2aWRlb0VsZW1lbnQsIElHTk9SRV9FWENFUFRJT04p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKaW5kZXggNWY1MTJl
YTI0NDc0YWQ0Y2IxZDA0YzZjMWY1YzdhY2YxMTIyYzUxNy4uMjk4ZDdkMDhmZWFkMzQyYjE1OTc4
ZGZkMTU4MmQ0ZGUwNWZiYzQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5j
cHAKQEAgLTgwLDggKzgwLDggQEAgdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUoKQogI2VuZGlmCiAKICAgICBhdXRvIGJvZHkgPSBkb2N1bWVudCgpLT5j
cmVhdGVFbGVtZW50KGJvZHlUYWcsIGZhbHNlKTsKLSAgICBib2R5LT5zZXRBdHRyaWJ1dGUobWFy
Z2lud2lkdGhBdHRyLCBBdG9taWNTdHJpbmcoIjAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7Ci0gICAgYm9keS0+c2V0QXR0cmlidXRlKG1hcmdpbmhlaWdodEF0dHIsIEF0
b21pY1N0cmluZygiMCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBib2R5LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1hcmdpbndpZHRoQXR0
ciwgQXRvbWljU3RyaW5nKCIwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIGJvZHktPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWFyZ2luaGVp
Z2h0QXR0ciwgQXRvbWljU3RyaW5nKCIwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBib2R5LT5zZXRBdHRyaWJ1dGUoc3R5bGVB
dHRyLCBBdG9taWNTdHJpbmcoImJhY2tncm91bmQtY29sb3I6IHJnYigyMTcsMjI0LDIzMykiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAjZWxzZQpAQCAtOTMsMTYgKzkz
LDE2IEBAIHZvaWQgUGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJl
KCkKICAgICBhdXRvIGVtYmVkRWxlbWVudCA9IGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQoZW1i
ZWRUYWcsIGZhbHNlKTsKICAgICAgICAgCiAgICAgbV9lbWJlZEVsZW1lbnQgPSBkb3duY2FzdDxI
VE1MRW1iZWRFbGVtZW50PihlbWJlZEVsZW1lbnQucHRyKCkpOwotICAgIG1fZW1iZWRFbGVtZW50
LT5zZXRBdHRyaWJ1dGUod2lkdGhBdHRyLCAiMTAwJSIpOwotICAgIG1fZW1iZWRFbGVtZW50LT5z
ZXRBdHRyaWJ1dGUoaGVpZ2h0QXR0ciwgIjEwMCUiKTsKKyAgICBtX2VtYmVkRWxlbWVudC0+c2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3aWR0aEF0dHIsIEF0b21pY1N0cmluZygi
MTAwJSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBtX2VtYmVk
RWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoZWlnaHRBdHRyLCBB
dG9taWNTdHJpbmcoIjEwMCUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CiAgICAgCi0gICAgbV9lbWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0ZShuYW1lQXR0ciwgInBsdWdp
biIpOwotICAgIG1fZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3JjQXR0ciwgZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nKCkpOworICAgIG1fZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKG5hbWVBdHRyLCBBdG9taWNTdHJpbmcoInBsdWdpbiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBtX2VtYmVkRWxlbWVudC0+c2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyLCBkb2N1bWVudCgpLT51cmwo
KS5zdHJpbmcoKSk7CiAgICAgCiAgICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGRvY3VtZW50
KCktPmxvYWRlcigpOwogICAgIEFTU0VSVChsb2FkZXIpOwogICAgIGlmIChsb2FkZXIpCi0gICAg
ICAgIG1fZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsIGxvYWRlci0+d3JpdGVy
KCkubWltZVR5cGUoKSk7CisgICAgICAgIG1fZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCBsb2FkZXItPndyaXRlcigpLm1pbWVUeXBlKCkp
OwogCiAgICAgZG93bmNhc3Q8UGx1Z2luRG9jdW1lbnQ+KCpkb2N1bWVudCgpKS5zZXRQbHVnaW5F
bGVtZW50KG1fZW1iZWRFbGVtZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJ
bnB1dFR5cGUuY3BwCmluZGV4IDI2Njg4MTM5MThkZjZlMWRlN2Q1OTM4NzM2OGExMjhjM2IxOTJk
OGYuLjY3NDUwZjcxMzZlNjJiNjJmNTk2NzI1YWJjZjNkNDBkMGNlYWY5NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTY2NCw4ICs2NjQsOCBAQCB2
b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlQXV0b0ZpbGxCdXR0b24oQXV0b0ZpbGxCdXR0
b25UeXBlIGF1dG9GaWxsQnV0dG9uVAogCiAgICAgbV9hdXRvRmlsbEJ1dHRvbiA9IEF1dG9GaWxs
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS5kb2N1bWVudCgpLCAqdGhpcyk7CiAgICAg
bV9hdXRvRmlsbEJ1dHRvbi0+c2V0UHNldWRvKGF1dG9GaWxsQnV0dG9uVHlwZVRvQXV0b0ZpbGxC
dXR0b25Qc2V1ZG9DbGFzc05hbWUoYXV0b0ZpbGxCdXR0b25UeXBlKSk7Ci0gICAgbV9hdXRvRmls
bEJ1dHRvbi0+c2V0QXR0cmlidXRlKHJvbGVBdHRyLCAiYnV0dG9uIik7Ci0gICAgbV9hdXRvRmls
bEJ1dHRvbi0+c2V0QXR0cmlidXRlKGFyaWFfbGFiZWxBdHRyLCBhdXRvRmlsbEJ1dHRvblR5cGVU
b0FjY2Vzc2liaWxpdHlMYWJlbChhdXRvRmlsbEJ1dHRvblR5cGUpKTsKKyAgICBtX2F1dG9GaWxs
QnV0dG9uLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJvbGVBdHRyLCBBdG9t
aWNTdHJpbmcoImJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBtX2F1dG9GaWxsQnV0dG9uLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KGFyaWFfbGFiZWxBdHRyLCBhdXRvRmlsbEJ1dHRvblR5cGVUb0FjY2Vzc2liaWxpdHlMYWJlbChh
dXRvRmlsbEJ1dHRvblR5cGUpKTsKICAgICBtX2NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoKm1fYXV0
b0ZpbGxCdXR0b24sIElHTk9SRV9FWENFUFRJT04pOwogfQogCkBAIC02ODIsNyArNjgyLDcgQEAg
dm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZUF1dG9GaWxsQnV0dG9uKCkKICAgICAgICAg
Ym9vbCBzaG91bGRVcGRhdGVBdXRvRmlsbEJ1dHRvblR5cGUgPSBpc0F1dG9GaWxsQnV0dG9uVHlw
ZUNoYW5nZWQoYXR0cmlidXRlLCBlbGVtZW50KCkuYXV0b0ZpbGxCdXR0b25UeXBlKCkpOwogICAg
ICAgICBpZiAoc2hvdWxkVXBkYXRlQXV0b0ZpbGxCdXR0b25UeXBlKSB7CiAgICAgICAgICAgICBt
X2F1dG9GaWxsQnV0dG9uLT5zZXRQc2V1ZG8oYXV0b0ZpbGxCdXR0b25UeXBlVG9BdXRvRmlsbEJ1
dHRvblBzZXVkb0NsYXNzTmFtZShlbGVtZW50KCkuYXV0b0ZpbGxCdXR0b25UeXBlKCkpKTsKLSAg
ICAgICAgICAgIG1fYXV0b0ZpbGxCdXR0b24tPnNldEF0dHJpYnV0ZShhcmlhX2xhYmVsQXR0ciwg
YXV0b0ZpbGxCdXR0b25UeXBlVG9BY2Nlc3NpYmlsaXR5TGFiZWwoZWxlbWVudCgpLmF1dG9GaWxs
QnV0dG9uVHlwZSgpKSk7CisgICAgICAgICAgICBtX2F1dG9GaWxsQnV0dG9uLT5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfbGFiZWxBdHRyLCBhdXRvRmlsbEJ1dHRvblR5
cGVUb0FjY2Vzc2liaWxpdHlMYWJlbChlbGVtZW50KCkuYXV0b0ZpbGxCdXR0b25UeXBlKCkpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2F1dG9GaWxsQnV0dG9uLT5zZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVCbG9jaywgdHJ1ZSk7CiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3Bw
CmluZGV4IDlmMDJiYmQ4ODM4ZWJlYWY5YjQ3NjUyZGU4YjlkNjhjNjE4M2UyMDEuLjdjZDZjNWQw
M2VjYjU3MWY3ZTJhNDUwNmQ5Mzk0ZWZiZWM1MzkxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIHZvaWQg
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzSXNpbmRleFN0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hU
TUxUb2tlbiYgdG9rZW4pCiAgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gQWNrbm93bGVkZ2Ugc2Vs
Zi1jbG9zaW5nIGZsYWcKICAgICBwcm9jZXNzRmFrZVN0YXJ0VGFnKGZvcm1UYWcpOwogICAgIGlm
IChBdHRyaWJ1dGUqIGFjdGlvbkF0dHJpYnV0ZSA9IGZpbmRBdHRyaWJ1dGUodG9rZW4uYXR0cmli
dXRlcygpLCBhY3Rpb25BdHRyKSkKLSAgICAgICAgbV90cmVlLmZvcm0oKS0+c2V0QXR0cmlidXRl
KGFjdGlvbkF0dHIsIGFjdGlvbkF0dHJpYnV0ZS0+dmFsdWUoKSk7CisgICAgICAgIG1fdHJlZS5m
b3JtKCktPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYWN0aW9uQXR0ciwgYWN0
aW9uQXR0cmlidXRlLT52YWx1ZSgpKTsKICAgICBwcm9jZXNzRmFrZVN0YXJ0VGFnKGhyVGFnKTsK
ICAgICBwcm9jZXNzRmFrZVN0YXJ0VGFnKGxhYmVsVGFnKTsKICAgICBpZiAoQXR0cmlidXRlKiBw
cm9tcHRBdHRyaWJ1dGUgPSBmaW5kQXR0cmlidXRlKHRva2VuLmF0dHJpYnV0ZXMoKSwgcHJvbXB0
QXR0cikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAKaW5kZXggMWE5ZWQzM2M2Mzc3NTAwZjAxZWZkZTAyYWZiZjYwNWVhNjNkYmUy
MC4uYmVhNmYwNmJjNjdmNDU3Zjk3ZDM0NGI2OTNhNGJlMTM3N2IyNDY5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAt
NjU2LDcgKzY1Niw3IEBAIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVu
dDo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFCiBSZWY8TWVkaWFDb250cm9s
Q2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9u
c0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgUmVm
PE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVudD4gZWxlbWVudCA9IGFk
b3B0UmVmKCpuZXcgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50KGRv
Y3VtZW50KSk7Ci0gICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKGRpckF0dHIsICJhdXRvIik7Cisg
ICAgZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkaXJBdHRyLCBB
dG9taWNTdHJpbmcoImF1dG8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CiAgICAgZWxlbWVudC0+aGlkZSgpOwogICAgIHJldHVybiBlbGVtZW50OwogfQpAQCAtODM4LDcg
KzgzOCw3IEBAIFJlZjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IE1lZGlhQ29udHJvbFRp
bWVsaW5lRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkCiAgICAgUmVmPE1lZGlhQ29udHJvbFRp
bWVsaW5lRWxlbWVudD4gdGltZWxpbmUgPSBhZG9wdFJlZigqbmV3IE1lZGlhQ29udHJvbFRpbWVs
aW5lRWxlbWVudChkb2N1bWVudCwgY29udHJvbHMpKTsKICAgICB0aW1lbGluZS0+ZW5zdXJlVXNl
ckFnZW50U2hhZG93Um9vdCgpOwogICAgIHRpbWVsaW5lLT5zZXRUeXBlKCJyYW5nZSIpOwotICAg
IHRpbWVsaW5lLT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciwgImZsb2F0Iik7CisgICAgdGlt
ZWxpbmUtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocHJlY2lzaW9uQXR0ciwg
QXRvbWljU3RyaW5nKCJmbG9hdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKICAgICByZXR1cm4gdGltZWxpbmU7CiB9CiAKQEAgLTkwNCw4ICs5MDQsOCBAQCBSZWY8TWVk
aWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xQYW5lbFZvbHVt
ZVNsaWRlckVsZW1lbnQ6OgogICAgIFJlZjxNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVs
ZW1lbnQ+IHNsaWRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlk
ZXJFbGVtZW50KGRvY3VtZW50KSk7CiAgICAgc2xpZGVyLT5lbnN1cmVVc2VyQWdlbnRTaGFkb3dS
b290KCk7CiAgICAgc2xpZGVyLT5zZXRUeXBlKCJyYW5nZSIpOwotICAgIHNsaWRlci0+c2V0QXR0
cmlidXRlKHByZWNpc2lvbkF0dHIsICJmbG9hdCIpOwotICAgIHNsaWRlci0+c2V0QXR0cmlidXRl
KG1heEF0dHIsICIxIik7CisgICAgc2xpZGVyLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKHByZWNpc2lvbkF0dHIsIEF0b21pY1N0cmluZygiZmxvYXQiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc2xpZGVyLT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKG1heEF0dHIsIEF0b21pY1N0cmluZygiMSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICByZXR1cm4gc2xpZGVyOwogfQogCkBAIC05MjIs
OCArOTIyLDggQEAgUmVmPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50
PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGUKICAgICBSZWY8TWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IGFkb3B0UmVmKCpuZXcgTWVk
aWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBz
bGlkZXItPmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKICAgICBzbGlkZXItPnNldFR5cGUo
InJhbmdlIik7Ci0gICAgc2xpZGVyLT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciwgImZsb2F0
Iik7Ci0gICAgc2xpZGVyLT5zZXRBdHRyaWJ1dGUobWF4QXR0ciwgIjEiKTsKKyAgICBzbGlkZXIt
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocHJlY2lzaW9uQXR0ciwgQXRvbWlj
U3RyaW5nKCJmbG9hdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBzbGlkZXItPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWF4QXR0ciwgQXRv
bWljU3RyaW5nKCIxIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAg
IHJldHVybiBzbGlkZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDlmYzhkYTJhMTk0NjYwMjRl
MzUzYjZkNDEwZTBiY2M2ZmNhMDZlZGEuLmMwMjMyOWU5MzRiZjI1YzBlZjliNGMyODZhNWU4ZjRk
OWRlMzlmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMjEyLDkgKzIxMiw5IEBAIGlubGluZSBTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVu
dChEb2N1bWVudCYKIHsKICAgICBzZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LXNlYXJj
aC1jYW5jZWwtYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwog
I2lmICFQTEFURk9STShJT1MpCi0gICAgc2V0QXR0cmlidXRlKGFyaWFfbGFiZWxBdHRyLCBBWFNl
YXJjaEZpZWxkQ2FuY2VsQnV0dG9uVGV4dCgpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGFyaWFfbGFiZWxBdHRyLCBBWFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uVGV4
dCgpKTsKICNlbmRpZgotICAgIHNldEF0dHJpYnV0ZShyb2xlQXR0ciwgQXRvbWljU3RyaW5nKCJi
dXR0b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihyb2xlQXR0ciwgQXRvbWljU3RyaW5nKCJidXR0
b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiB9CiAKIFJlZjxTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ+IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVu
dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMu
Y3BwCmluZGV4IDIxMjM2OGZkMTIyNTFkZWM5YTBlODk4NDg3OTZiYTRlNzU0ZGNjMGUuLjFkZjM4
M2Q2YjRmMmI3ZGNhNjBjZTRjZDhmZTk3NGY1YzIyNGEzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25F
bGVtZW50TWFjLmNwcApAQCAtOTYsNyArOTYsNyBAQCBSZWZQdHI8SW1hZ2VDb250cm9sc0J1dHRv
bkVsZW1lbnRNYWM+IEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjp0cnlDcmVhdGUoRAog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gYnV0dG9uID0gYWRvcHRSZWYoKm5l
dyBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYyhkb2N1bWVudCkpOwotICAgIGJ1dHRvbi0+
c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAieC13ZWJraXQtaW1hZ2UtY29udHJv
bHMtYnV0dG9uIik7CisgICAgYnV0dG9uLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoIngtd2Via2l0LWltYWdlLWNv
bnRyb2xzLWJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAog
ICAgIEludFNpemUgcG9zaXRpb25PZmZzZXQgPSBkb2N1bWVudC5wYWdlKCktPnRoZW1lKCkuaW1h
Z2VDb250cm9sc0J1dHRvblBvc2l0aW9uT2Zmc2V0KCk7CiAgICAgYnV0dG9uLT5zZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBwb3NpdGlvbk9mZnNldC5oZWlnaHQoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwCmluZGV4
IGRjNWU4YzMwNDFiNGQ0YmY4NTlmZmFiNTE0ZDZjNWM4YzJjMDE0ZGMuLmY0NzlkMjg4MDgwMTI0
NGRmZjg3ZGI3MzdiMjgxYWRjZmI5NDY2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIFJlZlB0cjxJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnQ+IEltYWdl
Q29udHJvbHNSb290RWxlbWVudDo6dHJ5Q3JlYXRlKERvY3VtZW50JiBkCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgUmVmPEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYz4gY29udHJv
bHMgPSBhZG9wdFJlZigqbmV3IEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYyhkb2N1bWVudCkp
OwotICAgIGNvbnRyb2xzLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJ4LXdl
YmtpdC1pbWFnZS1jb250cm9scyIpOworICAgIGNvbnRyb2xzLT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoIngtd2Vi
a2l0LWltYWdlLWNvbnRyb2xzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OwogCiAgICAgaWYgKFJlZlB0cjxJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYz4gYnV0dG9u
ID0gSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OnRyeUNyZWF0ZShkb2N1bWVudCkpCiAg
ICAgICAgIGNvbnRyb2xzLT5hcHBlbmRDaGlsZCgqYnV0dG9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCmluZGV4IDA3ZGE1MTIxY2Q4NzFmMzA2NjMyODVm
OTJlNzU2YWJmZmU1Y2YzOTguLjM5NTkxMzU5NGI3OTBiNWZiM2UxMGVkNTIyNTlmMmMxMGMyYmJh
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcApAQCAt
OTYsOCArOTYsOCBAQCBSZWY8SFRNTEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZUVxdWl2
YWxlbnRIVE1MRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgY2FzZSBXZWJWVFROb2Rl
VHlwZUxhbmd1YWdlOgogICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVWb2ljZToKICAgICAgICAgaHRt
bEVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQoSFRNTE5hbWVzOjpz
cGFuVGFnLCBkb2N1bWVudCk7Ci0gICAgICAgIGh0bWxFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRN
TE5hbWVzOjp0aXRsZUF0dHIsIGdldEF0dHJpYnV0ZSh2b2ljZUF0dHJpYnV0ZU5hbWUoKSkpOwot
ICAgICAgICBodG1sRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6bGFuZ0F0dHIsIGdl
dEF0dHJpYnV0ZShsYW5nQXR0cmlidXRlTmFtZSgpKSk7CisgICAgICAgIGh0bWxFbGVtZW50LT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6dGl0bGVBdHRyLCBm
YXN0R2V0QXR0cmlidXRlKHZvaWNlQXR0cmlidXRlTmFtZSgpKSk7CisgICAgICAgIGh0bWxFbGVt
ZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6bGFuZ0F0
dHIsIGZhc3RHZXRBdHRyaWJ1dGUobGFuZ0F0dHJpYnV0ZU5hbWUoKSkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFdlYlZUVE5vZGVUeXBlSXRhbGljOgogICAgICAgICBodG1sRWxlbWVudCA9
IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChIVE1MTmFtZXM6OmlUYWcsIGRvY3Vt
ZW50KTsKQEAgLTExOCw3ICsxMTgsNyBAQCBSZWY8SFRNTEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6
OmNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAKICAgICBB
U1NFUlQoaHRtbEVsZW1lbnQpOwogICAgIGlmIChodG1sRWxlbWVudCkKLSAgICAgICAgaHRtbEVs
ZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgZmFzdEdldEF0dHJpYnV0
ZShIVE1MTmFtZXM6OmNsYXNzQXR0cikpOworICAgICAgICBodG1sRWxlbWVudC0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNsYXNzQXR0ciwgZmFzdEdldEF0
dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0cikpOwogICAgIHJldHVybiBodG1sRWxlbWVudC5y
ZWxlYXNlTm9uTnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBh
cnNlci5jcHAKaW5kZXggZmZmMDQ1NjRlOWUyMzlkYzkyZDU2ZThlNGIzZjI0YmFlMjg3NTBiMC4u
M2Y3ODVmOGYzODY5ZDJmMzEzOTMzYzI3NDI1MmQxMTMxZDUxZjBmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtNTUxLDEzICs1NTEsMTMgQEAgdm9p
ZCBXZWJWVFRUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbihEb2N1bWVudCYgZG9j
dW1lbnQpCiAKICAgICAgICAgYXV0byBjaGlsZCA9IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZShub2Rl
VHlwZSwgZG9jdW1lbnQpOwogICAgICAgICBpZiAoIW1fdG9rZW4uY2xhc3NlcygpLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGNoaWxkLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBtX3Rva2VuLmNs
YXNzZXMoKSk7CisgICAgICAgICAgICBjaGlsZC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihjbGFzc0F0dHIsIG1fdG9rZW4uY2xhc3NlcygpKTsKIAogICAgICAgICBpZiAobm9k
ZVR5cGUgPT0gV2ViVlRUTm9kZVR5cGVWb2ljZSkKLSAgICAgICAgICAgIGNoaWxkLT5zZXRBdHRy
aWJ1dGUoV2ViVlRURWxlbWVudDo6dm9pY2VBdHRyaWJ1dGVOYW1lKCksIG1fdG9rZW4uYW5ub3Rh
dGlvbigpKTsKKyAgICAgICAgICAgIGNoaWxkLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKFdlYlZUVEVsZW1lbnQ6OnZvaWNlQXR0cmlidXRlTmFtZSgpLCBtX3Rva2VuLmFubm90
YXRpb24oKSk7CiAgICAgICAgIGVsc2UgaWYgKG5vZGVUeXBlID09IFdlYlZUVE5vZGVUeXBlTGFu
Z3VhZ2UpIHsKICAgICAgICAgICAgIG1fbGFuZ3VhZ2VTdGFjay5hcHBlbmQobV90b2tlbi5hbm5v
dGF0aW9uKCkpOwotICAgICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0ZShXZWJWVFRFbGVtZW50
OjpsYW5nQXR0cmlidXRlTmFtZSgpLCBtX2xhbmd1YWdlU3RhY2subGFzdCgpKTsKKyAgICAgICAg
ICAgIGNoaWxkLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYlZUVEVsZW1l
bnQ6OmxhbmdBdHRyaWJ1dGVOYW1lKCksIG1fbGFuZ3VhZ2VTdGFjay5sYXN0KCkpOwogICAgICAg
ICB9CiAgICAgICAgIGlmICghbV9sYW5ndWFnZVN0YWNrLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IGNoaWxkLT5zZXRMYW5ndWFnZShtX2xhbmd1YWdlU3RhY2subGFzdCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IGM3YzZkNmY0ZTY5
NzBlYWExZGVhMzU5ZjFiN2NlODY4YjE1YTU5ZjEuLjAyMWRjYmRmNDI1NGM2YTQ0NjRmZDU4YzM3
ZmRmMzE5NTQ4NjFlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmNwcApAQCAtNzc5LDcgKzc3OSw3IEBAIEluc3BlY3RvclN0eWxlU2hlZXQqIElu
c3BlY3RvckNTU0FnZW50OjpjcmVhdGVJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRG9jdW1lbnQoRG9j
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmPEVsZW1lbnQ+IHN0eWxlRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoSFRNTE5hbWVzOjpzdHlsZVRhZywgZmFsc2UpOwot
ICAgIHN0eWxlRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6dHlwZUF0dHIsICJ0ZXh0
L2NzcyIpOworICAgIHN0eWxlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihIVE1MTmFtZXM6OnR5cGVBdHRyLCBBdG9taWNTdHJpbmcoInRleHQvY3NzIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogCiAgICAgQ29udGFpbmVyTm9kZSogdGFy
Z2V0Tm9kZTsKICAgICAvLyBIRUFEIGlzIGFic2VudCBpbiBJbWFnZURvY3VtZW50cywgZm9yIGV4
YW1wbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCmluZGV4IDE5M2I1OTgwMDMxMjEyOTdlMTg1Yjg4NTliNDA3OTI4MWQyNTNjZDYuLjdhYmNm
Nzc4NjY2ZTYyZTgyODEwNjdhYTAxYWY3ZDljNzRhZTY3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC05MjYsNyArOTI2LDcgQEAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lPiBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnIKICAgICBpZiAoZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7
CiAgICAgICAgIFN0cmluZyBuYW1lID0gZnJhbWUtPm93bmVyRWxlbWVudCgpLT5nZXROYW1lQXR0
cmlidXRlKCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG5hbWUg
PSBmcmFtZS0+b3duZXJFbGVtZW50KCktPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmlkQXR0cik7
CisgICAgICAgICAgICBuYW1lID0gZnJhbWUtPm93bmVyRWxlbWVudCgpLT5mYXN0R2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6aWRBdHRyKTsKICAgICAgICAgZnJhbWVPYmplY3QtPnNldE5hbWUobmFt
ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2Vs
ZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVu
dC5jcHAKaW5kZXggODEwNzJhZDQ0NDEwMWIzY2Y0YzI1ZDliMDhhZjZkNGQyNGJjNjg4NC4uNTMx
ZjJlNzI5MzY1MzFjYTQzN2I3Mzg4NjE4NDMxMDFkNTk3ZmQwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIHZv
aWQgTWF0aE1MU2VsZWN0RWxlbWVudDo6dG9nZ2xlKCkKIAogICAgIC8vIFdlIHVwZGF0ZSB0aGUg
YXR0cmlidXRlIHZhbHVlIG9mIHRoZSBzZWxlY3Rpb24gYXR0cmlidXRlLgogICAgIC8vIFRoaXMg
d2lsbCBhbHNvIGNhbGwgTWF0aE1MU2VsZWN0RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCB0byB1
cGRhdGUgdGhlIHNlbGVjdGVkIGNoaWxkLgotICAgIHNldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6
c2VsZWN0aW9uQXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIobmV3U2VsZWN0ZWRDaGlsZEluZGV4
KSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihNYXRoTUxOYW1lczo6
c2VsZWN0aW9uQXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIobmV3U2VsZWN0ZWRDaGlsZEluZGV4
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggYzFj
OGQxMDVkMDRkMjBlNWE2NTgwNGFjZTY0NWRjMGFhNDliNTI1OS4uMDk2MmE1NTI2ODc2ZWQ5MmM3
OGM2ZGRkNGUwNjA4ODgzZDk3NDVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVG
cmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIH0gZWxzZSBpZiAoaXM8SFRNTExpbmtFbGVtZW50
PihlbGVtZW50KSkgewogICAgICAgICAgICAgSFRNTExpbmtFbGVtZW50JiBsaW5rRWxlbWVudCA9
IGRvd25jYXN0PEhUTUxMaW5rRWxlbWVudD4oZWxlbWVudCk7CiAgICAgICAgICAgICBpZiAoQ1NT
U3R5bGVTaGVldCogc2hlZXQgPSBsaW5rRWxlbWVudC5zaGVldCgpKSB7Ci0gICAgICAgICAgICAg
ICAgVVJMIHVybCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChsaW5rRWxlbWVudC5nZXRBdHRyaWJ1
dGUoSFRNTE5hbWVzOjpocmVmQXR0cikpOworICAgICAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1
bWVudC0+Y29tcGxldGVVUkwobGlua0VsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6
OmhyZWZBdHRyKSk7CiAgICAgICAgICAgICAgICAgc2VyaWFsaXplQ1NTU3R5bGVTaGVldChzaGVl
dCwgdXJsKTsKICAgICAgICAgICAgICAgICBBU1NFUlQobV9yZXNvdXJjZVVSTHMuY29udGFpbnMo
dXJsKSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRGV0YWlsc01hcmtlci5jcHAKaW5kZXggNjk1NWQzNDk5ZmNjYTBhMDkxM2Y2NDBiNDc0OWEw
OTRmODYyZDIwZC4uYzFkZDgwZTE0ZDYwMDY4OTRkZTk1Y2E1ZWZhYTJjY2ExZTUzMmM4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcApA
QCAtMTQ0LDcgKzE0NCw3IEBAIGJvb2wgUmVuZGVyRGV0YWlsc01hcmtlcjo6aXNPcGVuKCkgY29u
c3QKICAgICAgICAgaWYgKCFyZW5kZXJlci0+bm9kZSgpKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGlmIChpczxIVE1MRGV0YWlsc0VsZW1lbnQ+KCpyZW5kZXJlci0+bm9kZSgpKSkK
LSAgICAgICAgICAgIHJldHVybiAhZG93bmNhc3Q8SFRNTERldGFpbHNFbGVtZW50PigqcmVuZGVy
ZXItPm5vZGUoKSkuZ2V0QXR0cmlidXRlKG9wZW5BdHRyKS5pc051bGwoKTsKKyAgICAgICAgICAg
IHJldHVybiAhZG93bmNhc3Q8SFRNTERldGFpbHNFbGVtZW50PigqcmVuZGVyZXItPm5vZGUoKSku
ZmFzdEdldEF0dHJpYnV0ZShvcGVuQXR0cikuaXNOdWxsKCk7CiAgICAgICAgIGlmIChpczxIVE1M
SW5wdXRFbGVtZW50PigqcmVuZGVyZXItPm5vZGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCmluZGV4IDk3OWFjMWZjN2ZiMTBiMmJhY2M0NWRjNzRk
ZmI4MDFlMjU2OWY1NmIuLmFjMDNkNGRhOTQ1MGYxYTAxYTQ5ZGVkZTA1MDZmMjg4N2Q1MDliZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RnJhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MRnJhY3Rpb24uY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJh
Y3Rpb246OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAvLyBUaGUgTWF0aE1MMyByZWNvbW1lbmRh
dGlvbiBzdGF0ZXMgdGhhdCAibWVkaXVtIiBpcyB0aGUgZGVmYXVsdCB0aGlja25lc3MuCiAgICAg
Ly8gSG93ZXZlciwgaXQgb25seSBzdGF0ZXMgdGhhdCAidGhpbiIgYW5kICJ0aGljayIgYXJlIHJl
c3BlY3RpdmVseSB0aGluZXIgYW5kIHRoaWNrZXIuCiAgICAgLy8gVGhlIE1hdGhNTCBpbiBIVE1M
NSBpbXBsZW1lbnRhdGlvbiBub3RlIHN1Z2dlc3RzIDUwJSBhbmQgMjAwJSBhbmQgdGhlc2UgdmFs
dWVzIGFyZSBhbHNvIHVzZWQgaW4gR2Vja28uCi0gICAgU3RyaW5nIHRoaWNrbmVzcyA9IGVsZW1l
bnQoKS5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmxpbmV0aGlja25lc3NBdHRyKTsKKyAgICBT
dHJpbmcgdGhpY2tuZXNzID0gZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6
OmxpbmV0aGlja25lc3NBdHRyKTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UodGhpY2tuZXNzLCAidGhpbiIpKQogICAgICAgICBtX2xpbmVUaGlja25lc3MgPSBtX2RlZmF1
bHRMaW5lVGhpY2tuZXNzIC8gMjsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSh0aGlja25lc3MsICJtZWRpdW0iKSkKQEAgLTEzOSw4ICsxMzksOCBAQCB2b2lkIFJl
bmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgfQogCiAgICAgLy8g
UGFyc2UgYWxpZ25tZW50IGF0dHJpYnV0ZXMuCi0gICAgbV9udW1lcmF0b3JBbGlnbiA9IHBhcnNl
QWxpZ25tZW50QXR0cmlidXRlKGVsZW1lbnQoKS5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6Om51
bWFsaWduQXR0cikpOwotICAgIG1fZGVub21pbmF0b3JBbGlnbiA9IHBhcnNlQWxpZ25tZW50QXR0
cmlidXRlKGVsZW1lbnQoKS5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmRlbm9tYWxpZ25BdHRy
KSk7CisgICAgbV9udW1lcmF0b3JBbGlnbiA9IHBhcnNlQWxpZ25tZW50QXR0cmlidXRlKGVsZW1l
bnQoKS5mYXN0R2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpudW1hbGlnbkF0dHIpKTsKKyAgICBt
X2Rlbm9taW5hdG9yQWxpZ24gPSBwYXJzZUFsaWdubWVudEF0dHJpYnV0ZShlbGVtZW50KCkuZmFz
dEdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6ZGVub21hbGlnbkF0dHIpKTsKIH0KIAogdm9pZCBS
ZW5kZXJNYXRoTUxGcmFjdGlvbjo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYs
IGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApp
bmRleCA1YWE5MTdlYzBmYjQwNTA2NWEyMzk0YWE1N2FkMmNiOWIwMDRkNDhlLi40MmM2Y2QxYWNi
YzU2YjUzODhhMzMwOWE4NTQzNTY4NTdmN2Q3ZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCkBAIC0zNzQsNyArMzc0LDcgQEAgU3RyaW5nIFNWR0VsZW1lbnQ6OnhtbGJhc2UoKSBjb25z
dAogCiB2b2lkIFNWR0VsZW1lbnQ6OnNldFhtbGJhc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhj
ZXB0aW9uQ29kZSYpCiB7Ci0gICAgc2V0QXR0cmlidXRlKFhNTE5hbWVzOjpiYXNlQXR0ciwgdmFs
dWUpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oWE1MTmFtZXM6OmJh
c2VBdHRyLCB2YWx1ZSk7CiB9CiAKIHZvaWQgU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFp
bmVyTm9kZSYgcm9vdFBhcmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRl
eCA3ODhjMWZjNzFlZmVjMTNiYzBkZmE3YjU5NDg2YTYxNWM3NjQ1MDI4Li40NTczNzljZTc0YzBm
ZjhiOGUwZGNiZGI3NDg2NzgxZTRjNGFmMTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBTVkdTVkdFbGVt
ZW50Ojpjb250ZW50U2NyaXB0VHlwZSgpIGNvbnN0CiAKIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0
Q29udGVudFNjcmlwdFR5cGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKQogewotICAgIHNldEF0
dHJpYnV0ZShTVkdOYW1lczo6Y29udGVudFNjcmlwdFR5cGVBdHRyLCB0eXBlKTsKKyAgICBzZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpjb250ZW50U2NyaXB0VHlw
ZUF0dHIsIHR5cGUpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1NWR0VsZW1lbnQ6OmNv
bnRlbnRTdHlsZVR5cGUoKSBjb25zdApAQCAtMTE5LDcgKzExOSw3IEBAIGNvbnN0IEF0b21pY1N0
cmluZyYgU1ZHU1ZHRWxlbWVudDo6Y29udGVudFN0eWxlVHlwZSgpIGNvbnN0CiAKIHZvaWQgU1ZH
U1ZHRWxlbWVudDo6c2V0Q29udGVudFN0eWxlVHlwZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUp
CiB7Ci0gICAgc2V0QXR0cmlidXRlKFNWR05hbWVzOjpjb250ZW50U3R5bGVUeXBlQXR0ciwgdHlw
ZSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6Y29u
dGVudFN0eWxlVHlwZUF0dHIsIHR5cGUpOwogfQogCiBGbG9hdFJlY3QgU1ZHU1ZHRWxlbWVudDo6
dmlld3BvcnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAppbmRl
eCAwNDVhZTZkMWZjZWNlMjJhZDkyNzJkNGRkZWIzN2I4MDVkNWZlZjVhLi5jNWI3MGRiMjczMTBl
N2Q3MDE0MWRjNmNmNzA3NTE5NWMxMzIyYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3R5bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVF
bGVtZW50LmNwcApAQCAtODEsNyArODEsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1N0eWxl
RWxlbWVudDo6bWVkaWEoKSBjb25zdAogCiB2b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0TWVkaWEo
Y29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYSwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgc2V0QXR0
cmlidXRlKFNWR05hbWVzOjptZWRpYUF0dHIsIG1lZGlhKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjptZWRpYUF0dHIsIG1lZGlhKTsKIH0KIAogU3Ry
aW5nIFNWR1N0eWxlRWxlbWVudDo6dGl0bGUoKSBjb25zdApAQCAtOTEsNyArOTEsNyBAQCBTdHJp
bmcgU1ZHU3R5bGVFbGVtZW50Ojp0aXRsZSgpIGNvbnN0CiAKIHZvaWQgU1ZHU3R5bGVFbGVtZW50
OjpzZXRUaXRsZShjb25zdCBBdG9taWNTdHJpbmcmIHRpdGxlLCBFeGNlcHRpb25Db2RlJikKIHsK
LSAgICBzZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnRpdGxlQXR0ciwgdGl0bGUpOworICAgIHNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnRpdGxlQXR0ciwgdGl0bGUp
OwogfQogCiB2b2lkIFNWR1N0eWxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggYTQzNzg5
MGQ0MGU3OGU3M2I2MWU3MzAwODE1NTRmMWQ3M2RmOTlmMi4uYzQwNWQxNzIwNzY0OTlmODFkNjE1
Y2NlYTM1ZmI3YmQ3OTQ1MzE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTUyMCwxMSArNTIwLDExIEBAIHN0YXRpYyBO
U1N0cmluZyogbWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVudChOU0FycmF5KiBsYWJlbHMsIEVsZW1l
bnQqIGVsZW1lbnQpCiB7CiAgICAgLy8gTWF0Y2ggYWdhaW5zdCB0aGUgbmFtZSBlbGVtZW50LCB0
aGVuIGFnYWluc3QgdGhlIGlkIGVsZW1lbnQgaWYgbm8gbWF0Y2ggaXMgZm91bmQgZm9yIHRoZSBu
YW1lIGVsZW1lbnQuCiAgICAgLy8gU2VlIDc1MzgzMzAgZm9yIG9uZSBwb3B1bGFyIHNpdGUgdGhh
dCBiZW5lZml0cyBmcm9tIHRoZSBpZCBlbGVtZW50IGNoZWNrLgotICAgIFN0cmluZyByZXN1bHRG
cm9tTmFtZUF0dHJpYnV0ZSA9IG1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyhsYWJlbHMsIGVsZW1l
bnQtPmdldEF0dHJpYnV0ZShuYW1lQXR0cikpOworICAgIFN0cmluZyByZXN1bHRGcm9tTmFtZUF0
dHJpYnV0ZSA9IG1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyhsYWJlbHMsIGVsZW1lbnQtPmZhc3RH
ZXRBdHRyaWJ1dGUobmFtZUF0dHIpKTsKICAgICBpZiAoIXJlc3VsdEZyb21OYW1lQXR0cmlidXRl
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdEZyb21OYW1lQXR0cmlidXRlOwogICAg
IAotICAgIHJldHVybiBtYXRjaExhYmVsc0FnYWluc3RTdHJpbmcobGFiZWxzLCBlbGVtZW50LT5n
ZXRBdHRyaWJ1dGUoaWRBdHRyKSk7CisgICAgcmV0dXJuIG1hdGNoTGFiZWxzQWdhaW5zdFN0cmlu
ZyhsYWJlbHMsIGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoaWRBdHRyKSk7CiB9CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwIGIvU291cmNlL1dl
YktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCmluZGV4IGU0ODFkMGQxZGM4YmY1Zjg0ZTY3OWRj
M2U2MGE2NGFiNjg5OWQ5MjcuLjg1MjJlYzQxNzlmZTMwZGMxNmVkNDRjZjI4MjVjMzgyMmVhZDk2
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKQEAgLTQyOSw3ICs0MjksNyBA
QCBIUkVTVUxUIERPTUhUTUxFbGVtZW50OjppZE5hbWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJl
c3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIEFTU0VSVChpczxIVE1MRWxl
bWVudD4obV9lbGVtZW50KSk7Ci0gICAgU3RyaW5nIGlkU3RyaW5nID0gZG93bmNhc3Q8SFRNTEVs
ZW1lbnQ+KG1fZWxlbWVudCktPmdldEF0dHJpYnV0ZShpZEF0dHIpOworICAgIFN0cmluZyBpZFN0
cmluZyA9IGRvd25jYXN0PEhUTUxFbGVtZW50PihtX2VsZW1lbnQpLT5mYXN0R2V0QXR0cmlidXRl
KGlkQXR0cik7CiAgICAgKnJlc3VsdCA9IEJTdHJpbmcoaWRTdHJpbmcpLnJlbGVhc2UoKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQppbmRleCAxMjIzZjQ5YzUw
ODQ0MDdhNGQwOGZjMzUxMWNhNDYyNWQyMDdlYjA4Li44YmIzZTNmMTFkMzk5YzVmM2JkMTBhZjlj
ZTc1YTMzY2E4OWYxOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tCkBAIC01MjMsNyArNTIz
LDcgQEAgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUqIGZyYW1lKQogICAgIGlmIChzdXBw
b3J0c0Zvcm1zKCkpIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gd2ViRnJhbWUoKS0+
Y29yZUZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgICAgIG1fYW5ub3RhdGlvbkNvbnRhaW5lciA9
IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KGRpdlRhZywgZmFsc2UpOwotICAgICAgICBtX2Fubm90
YXRpb25Db250YWluZXItPnNldEF0dHJpYnV0ZShpZEF0dHIsICJhbm5vdGF0aW9uQ29udGFpbmVy
Iik7CisgICAgICAgIG1fYW5ub3RhdGlvbkNvbnRhaW5lci0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihpZEF0dHIsIEF0b21pY1N0cmluZygiYW5ub3RhdGlvbkNvbnRhaW5lciIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAogICAgICAgICBhdXRvIGFu
bm90YXRpb25TdHlsZUVsZW1lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChzdHlsZVRhZywg
ZmFsc2UpOwogICAgICAgICBhbm5vdGF0aW9uU3R5bGVFbGVtZW50LT5zZXRUZXh0Q29udGVudChh
bm5vdGF0aW9uU3R5bGUsIEFTU0VSVF9OT19FWENFUFRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCAxM2NlYmIyNjM4
OGFmYjZlMjBjYjJiMGM0MmRkNDg0MmIyN2FmMzEzLi5kYjRlYzNlNDEyOTlmNjkyOTYxZjc0ZGQy
MTZjOTdjNmRhNDYxMjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtNzk1LDcgKzc5NSw3IEBAIHZvaWQgUERGUGx1Z2lu
OjpjcmVhdGVQYXNzd29yZEVudHJ5Rm9ybSgpCiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB3
ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBtX3Bhc3N3b3JkQ29udGFp
bmVyID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoZGl2VGFnLCBmYWxzZSk7Ci0gICAgbV9wYXNz
d29yZENvbnRhaW5lci0+c2V0QXR0cmlidXRlKGlkQXR0ciwgInBhc3N3b3JkQ29udGFpbmVyIik7
CisgICAgbV9wYXNzd29yZENvbnRhaW5lci0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihpZEF0dHIsIEF0b21pY1N0cmluZygicGFzc3dvcmRDb250YWluZXIiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKICAgICBtX3Bhc3N3b3JkRmllbGQgPSBQREZQ
bHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGUobV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCksIHRo
aXMpOwogICAgIG1fcGFzc3dvcmRGaWVsZC0+YXR0YWNoKG1fcGFzc3dvcmRDb250YWluZXIuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW5Bbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCmluZGV4IGQyMTRmYTQ1OWYyOWQwOTI1YTgzNjdj
YzA4OTQxYzgzMmFmMmFiYmUuLmE3MzIwMzM3MDRkMGE5YjBiNDZjZWFlODA4ZTkwMWRlMDM3MTFm
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luQW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBQREZQ
bHVnaW5Bbm5vdGF0aW9uOjphdHRhY2goRWxlbWVudCogcGFyZW50KQogICAgIG1fcGFyZW50ID0g
cGFyZW50OwogICAgIG1fZWxlbWVudCA9IGNyZWF0ZUFubm90YXRpb25FbGVtZW50KCk7CiAKLSAg
ICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsICJhbm5vdGF0aW9uIik7CisgICAg
bV9lbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNzQXR0ciwg
QXRvbWljU3RyaW5nKCJhbm5vdGF0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwogICAgIG1fZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2hh
bmdlRXZlbnQsICptX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKICAgICBtX2VsZW1lbnQtPmFkZEV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgKm1fZXZlbnRMaXN0ZW5lciwgZmFs
c2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KaW5kZXggNTUwMTIzNGFm
OTY0NjA1YWMwYTkzMDVjODVjMzRhMmQzOGMwNjU2Ni4uZjQ2YWYxNmY1NzFhOWUwNzUyZWMzZjZm
ZDBkMWMwMDczNGU0MmQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQpA
QCAtODcsMTEgKzg3LDExIEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luQ2hvaWNlQW5u
b3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogCiAgICAgZm9yIChOU1N0cmluZyAq
Y2hvaWNlIGluIGNob2ljZXMpIHsKICAgICAgICAgYXV0byBjaG9pY2VPcHRpb24gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KG9wdGlvblRhZywgZmFsc2UpOwotICAgICAgICBjaG9pY2VPcHRpb24t
PnNldEF0dHJpYnV0ZSh2YWx1ZUF0dHIsIGNob2ljZSk7CisgICAgICAgIGNob2ljZU9wdGlvbi0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih2YWx1ZUF0dHIsIGNob2ljZSk7CiAg
ICAgICAgIGNob2ljZU9wdGlvbi0+c2V0VGV4dENvbnRlbnQoY2hvaWNlLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKIAogICAgICAgICBpZiAoY2hvaWNlID09IHNlbGVjdGVkQ2hvaWNlKQotICAgICAg
ICAgICAgY2hvaWNlT3B0aW9uLT5zZXRBdHRyaWJ1dGUoc2VsZWN0ZWRBdHRyLCAic2VsZWN0ZWQi
KTsKKyAgICAgICAgICAgIGNob2ljZU9wdGlvbi0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihzZWxlY3RlZEF0dHIsIEF0b21pY1N0cmluZygic2VsZWN0ZWQiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKICAgICAgICAgc3R5bGVkRWxlbWVudC0+YXBw
ZW5kQ2hpbGQoY2hvaWNlT3B0aW9uKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283790</attachid>
            <date>2016-07-15 14:13:46 -0700</date>
            <delta_ts>2016-07-15 14:36:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159793-20160715141257.patch</filename>
            <type>text/plain</type>
            <size>93610</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQ3YzQ2MzQzZDc5ZjNh
NTQwNjIzYTkzODIwMjZhZGE5MmFjZWEyZS4uYTJjZDYyNmJiYTQ0MGVkOTFiOGRjOGEyMWU2ZDJl
OTdkZjYwMTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MiBAQAorMjAxNi0wNy0xNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBmYXN0R2V0QXR0cmli
dXRlKCkgLyBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKCkgd2hlbiBwb3NzaWJs
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5Nzkz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFVzZSBmYXN0
R2V0QXR0cmlidXRlKCkgLyBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKCkgd2hl
biBwb3NzaWJsZSwgZm9yIHBlcmZvcm1hbmNlLgorCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5z
L1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpZb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudCk6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldElkQXR0cmlidXRlKToKKyAg
ICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Omhhc05vQXR0cmlidXRlT3JPbmx5U3R5bGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6
OmFwcGx5SW5saW5lU3R5bGVDaGFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6ZWxlbWVudElzU3R5bGVkU3Bh
bk9ySFRNTEVxdWl2YWxlbnQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24pOgorICAgICAgICAq
IGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aXNNYWlsUGFzdGVBc1F1b3RhdGlvbk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNJbmxpbmVO
b2RlV2l0aFN0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW06
CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZSk6
CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVUYWJTcGFuRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJh
c2VXcml0aW5nRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFVSTCk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKToKKyAg
ICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFn
bWVudEZyb21UZXh0KToKKyAgICAgICAgKiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzZUJ1dHRvbklucHV0VHlwZTo6c2V0VmFsdWUpOgorICAgICAg
ICAqIGh0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
YXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpzZXRWYWx1ZSk6CisgICAgICAgICogaHRtbC9GVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVu
dFBhcnNlcjo6YXBwZW5kRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9j
dW1lbnRQYXJzZXI6OmNyZWF0ZVRERm9yRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RlRQ
RGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpjcmVhdGVCYXNpY0RvY3VtZW50
KToKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBbmNob3JFbGVtZW50OjpocmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNo
b3JFbGVtZW50OjpzZXRIcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50
Ojp0YXJnZXQpOgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDo6dGFyZ2V0KToKKyAgICAgICAgKiBodG1sL0hUTUxC
YXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQmFzZUVsZW1lbnQ6OnNldEhy
ZWYpOgorICAgICAgICAqIGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQ6OnNldFR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTERl
dGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxzRWxlbWVudDo6
ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWls
c0VsZW1lbnQ6OnRvZ2dsZU9wZW4pOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6c2V0QmdDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OnNldEZnQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50OjpzZXRBbGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVu
dDo6c2V0TGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6c2V0Vmxp
bmtDb2xvcik6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRWxlbWVudDo6c2V0RGlyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
OjpzZXRDb250ZW50RWRpdGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNl
dERyYWdnYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0U3BlbGxjaGVj
ayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0VHJhbnNsYXRlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Rm9ybUVuY3R5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Rm9ybU1ldGhvZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRBdXRvY29ycmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRBdXRvY2FwaXRhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRBdXRvY29tcGxldGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtRWxlbWVudDo6c2V0QXV0b2NvcnJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZv
cm1FbGVtZW50OjpzZXRBdXRvY2FwaXRhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUVsZW1lbnQ6OnNldEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6
OnNldEVuY3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpzZXRNZXRo
b2QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojp0YXJnZXQpOgorICAgICAg
ICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1h
Z2VFbGVtZW50Ojp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpo
ZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6c2V0U3JjKToKKyAg
ICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6c2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50Ojp1cGRhdGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmFs
dFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0RGVmYXVsdFZh
bHVlKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTGlua0VsZW1lbnQ6OmhyZWYpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtF
bGVtZW50Ojp0YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojp0eXBl
KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0U3JjKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNldFByZWxvYWQpOgorICAgICAgICAqIGh0bWwvSFRNTE1ldGVyRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjptaW4pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6c2V0TWluKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZXRlckVsZW1lbnQ6Om1heCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50
OjpzZXRNYXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6dmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6c2V0VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6bG93KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZXRlckVsZW1lbnQ6OnNldExvdyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50
OjpoaWdoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OnNldEhpZ2gpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6b3B0aW11bSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpzZXRPcHRpbXVtKToKKyAgICAgICAgKiBodG1sL0hU
TUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50
Ojpjb250YWluc0phdmFBcHBsZXQpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZUZvckpTQ29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnNldFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50OjpzZXRMYWJlbCk6CisgICAg
ICAgICogaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQcm9ncmVzc0VsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9n
cmVzc0VsZW1lbnQ6OnNldE1heCk6CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6dHlwZUF0dHJpYnV0ZVZh
bHVlKToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZXRNdWx0aXBsZSk6CisgICAgICAgICogaHRtbC9I
VE1MU291cmNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlRWxlbWVu
dDo6c2V0U3JjKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVtZW50OjptZWRpYSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlRWxlbWVudDo6c2V0TWVkaWEpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNvdXJjZUVsZW1lbnQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFNvdXJjZUVsZW1lbnQ6OnNldFR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQ6OnNldEFsaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50
OjpzZXRDaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6Y2hP
ZmYpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnNldENoT2Zm
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpzZXRWQWxpZ24p
OgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZUlubmVyVGV4dEVs
ZW1lbnRFZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmltYWdlU291cmNlVVJMKToKKyAg
ICAgICAgKiBodG1sL0hpZGRlbklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaWRk
ZW5JbnB1dFR5cGU6OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhpZGRlbklucHV0VHlwZTo6c2V0VmFsdWUpOgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1
bWVudFN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50OjpyZXBsYWNl
TWVkaWFFbGVtZW50VGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1l
bnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlQXV0b0ZpbGxCdXR0b24p
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVBdXRvRmlsbEJ1
dHRvbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0lzaW5kZXhTdGFydFRhZ0Zvcklu
Qm9keSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVt
ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZWxpbmVFbGVt
ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxWb2x1bWVT
bGlkZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVs
bHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRN
YWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6
OnRyeUNyZWF0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290
RWxlbWVudE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNvbnRyb2xzUm9vdEVsZW1l
bnQ6OnRyeUNyZWF0ZSk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYlZUVEVsZW1lbnQ6OmNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxl
bWVudCk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViVlRUVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4pOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6Y3JlYXRlSW5zcGVjdG9yU3R5bGVTaGVldEZvckRvY3VtZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZSk6CisgICAg
ICAgICogbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWF0aE1MU2VsZWN0RWxlbWVudDo6dG9nZ2xlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFt
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRGV0YWlsc01hcmtlcjo6aXNPcGVuKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgICogc3Zn
L1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c2V0WG1sYmFz
ZSk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU1ZHRWxlbWVudDo6c2V0Q29udGVudFNjcmlwdFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU1ZHRWxlbWVudDo6c2V0Q29udGVudFN0eWxlVHlwZSk6CisgICAgICAgICogc3ZnL1NWR1N0
eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZUVsZW1lbnQ6OnNldE1l
ZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6c2V0VGl0bGUpOgorCiAy
MDE2LTA3LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTGV0
IHRoZSBjb21waWxlciBnZW5lcmF0ZSBRdWFsaWZpZWROYW1lIGNvcHkgY29uc3RydWN0b3IgYW5k
IGFzc2lnbm1lbnQgb3BlcmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBlMWNiMWZjYzA3ZTA0Mzdk
NTllODliYjgwNDRmMzRkYzc4ZTVlNDQ1Li41Zjk2MjlhNjdlYjg0OGUwMDJjMjJiMmI1NzU1OGI5
Y2Y3YTUyODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDctMTQg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgZmFzdEdldEF0
dHJpYnV0ZSgpIC8gc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbigpIHdoZW4gcG9z
c2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
OTc5MworCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBVc2Ug
ZmFzdEdldEF0dHJpYnV0ZSgpIC8gc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbigp
IHdoZW4gcG9zc2libGUsIGZvciBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIFdlYlZpZXcvV2Vi
SFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAobWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVu
dCk6CisKIDIwMTYtMDctMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBVc2UgU29ja2V0UHJvdmlkZXIgdG8gY3JlYXRlIFNvY2tldFN0cmVh
bUhhbmRsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBlNzU2N2NjNDFjZjk3OTBiOGE3ZThkNjQ5Mjg2
NzhlNDNlZWJlZGY3Li4wYWUwOTE5NWU5OTlmMTY1ZDI3MWZiMTY2NTRhMjFkMDQ4ZTViNmI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTYtMDctMTQgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBVc2UgZmFzdEdldEF0dHJpYnV0ZSgpIC8g
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbigpIHdoZW4gcG9zc2libGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTc5MworCisgICAg
ICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBVc2UgZmFzdEdldEF0dHJp
YnV0ZSgpIC8gc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbigpIHdoZW4gcG9zc2li
bGUsIGZvciBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIERPTUhUTUxDbGFzc2VzLmNwcDoKKyAg
ICAgICAgKERPTUhUTUxFbGVtZW50OjppZE5hbWUpOgorCisyMDE2LTA3LTE0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgVXNlIGVtcHR5U3RyaW5nKCkgaW5zdGVh
ZCBvZiAiIiB3aGVuIHBvc3NpYmxlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTk3ODkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDcxZDIxOTlhYzY4MmQ3YWZiYWJl
ODkyNjZlNjczZmFjZmYyNDMwMmMuLjJjMWQ1ZTgwMTlmMTM1ZGFjOGUwMGMwNTlkM2M4ZjQzNDBl
MDAzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNi0wNy0xNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBmYXN0R2V0QXR0cmlidXRlKCkg
LyBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKCkgd2hlbiBwb3NzaWJsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NzkzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFVzZSBmYXN0R2V0QXR0
cmlidXRlKCkgLyBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKCkgd2hlbiBwb3Nz
aWJsZSwgZm9yIHBlcmZvcm1hbmNlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9EZXByZWNhdGVkUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OlBE
RlBsdWdpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y3JlYXRlUGFzc3dvcmRFbnRyeUZvcm0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQW5ub3RhdGlvbjo6YXR0YWNoKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkNob2ljZUFubm90YXRpb246OmNyZWF0ZUFubm90YXRp
b25FbGVtZW50KToKKwogMjAxNi0wNy0xNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBEaXNhYmxlIGN1c3RvbSBlbGVtZW50cyBpbiBTYWZhcmkgVGVjaCBQcmV2
aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDkwN2ZjMGFhOGJiNDM1MTFmZDE5OTMxMzU3
ZGNlZGI2ZmNkZTA1MGMuLjFmYWY4OWRmZjFiODA5OWExZGY0MDYwMWZkYWQ5ZDJiODUyNTI1ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2lu
UmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC04NSwxOSArODUsMTkgQEAgYm9vbCBZb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290JiByb290KQog
CiAgICAgYXV0byBpZnJhbWVFbGVtZW50ID0gSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZShIVE1M
TmFtZXM6OmlmcmFtZVRhZywgbV9wYXJlbnRFbGVtZW50LT5kb2N1bWVudCgpKTsKICAgICBpZiAo
bV9hdHRyaWJ1dGVzLmNvbnRhaW5zKCJ3aWR0aCIpKQotICAgICAgICBpZnJhbWVFbGVtZW50LT5z
ZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21pY1N0cmluZygiMTAwJSIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgaWZyYW1lRWxlbWVu
dC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0
ciwgQXRvbWljU3RyaW5nKCIxMDAlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOwogICAgIAogICAgIGNvbnN0IGF1dG8mIGhlaWdodFZhbHVlID0gbV9hdHRyaWJ1dGVzLmZp
bmQoImhlaWdodCIpOwogICAgIGlmIChoZWlnaHRWYWx1ZSAhPSBtX2F0dHJpYnV0ZXMuZW5kKCkp
IHsKICAgICAgICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVB
dHRyLCBBdG9taWNTdHJpbmcoIm1heC1oZWlnaHQ6IDEwMCUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgICAgIGlmcmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShI
VE1MTmFtZXM6OmhlaWdodEF0dHIsIGhlaWdodFZhbHVlLT52YWx1ZSk7CisgICAgICAgIGlmcmFt
ZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpo
ZWlnaHRBdHRyLCBoZWlnaHRWYWx1ZS0+dmFsdWUpOwogICAgIH0KIAotICAgIGlmcmFtZUVsZW1l
bnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnNyY0F0dHIsIHlvdVR1YmVVUkwobV9hdHRyaWJ1
dGVzLmdldCgic3JjIikpKTsKLSAgICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjpmcmFtZWJvcmRlckF0dHIsIEF0b21pY1N0cmluZygiMCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgeW91VHViZVVSTChtX2F0dHJp
YnV0ZXMuZ2V0KCJzcmMiKSkpOworICAgIGlmcmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpmcmFtZWJvcmRlckF0dHIsIEF0b21pY1N0cmlu
ZygiMCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICAKICAgICAv
LyBEaXNhYmxlIGZyYW1lIGZsYXR0ZW5pbmcgZm9yIHRoaXMgaWZyYW1lLgotICAgIGlmcmFtZUVs
ZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnNjcm9sbGluZ0F0dHIsIEF0b21pY1N0cmlu
Zygibm8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgaWZyYW1l
RWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNj
cm9sbGluZ0F0dHIsIEF0b21pY1N0cmluZygibm8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CiAgICAgbV9lbWJlZFNoYWRvd0VsZW1lbnQtPmFwcGVuZENoaWxkKGlmcmFt
ZUVsZW1lbnQpOwogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA5NWE2
ZDlhYTYxNzliZDk0YTUxZmU2OTg4ZWY3MzA2ZGJiNzUwYTkwLi42MmY3OTZmMDBhMmRkMGMwZjc3
ODYyNTlmYTYwNmQ0MmU1MjZlYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTc0LDcgKzc0LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9taWNTdHJp
bmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKICAg
ICB2b2lkIHNldFN5bmNocm9uaXplZExhenlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwogICAgIGJvb2wgcmVtb3ZlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKIApAQCAtNzA1LDcgKzcwNSw3IEBAIGlubGluZSBjb25zdCBB
dG9taWNTdHJpbmcmIEVsZW1lbnQ6OmdldE5hbWVBdHRyaWJ1dGUoKSBjb25zdAogCiBpbmxpbmUg
dm9pZCBFbGVtZW50OjpzZXRJZEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQog
ewotICAgIHNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmlkQXR0ciwgdmFsdWUpOworICAgIHNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjppZEF0dHIsIHZhbHVlKTsK
IH0KIAogaW5saW5lIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIEVsZW1lbnQ6OmNsYXNzTmFtZXMo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApp
bmRleCAyNjdmOTUwNWM1MWM0N2VlZDFkZWFkMDAwZGQ4ZDg4ZjA5ZmE3YmEwLi4zOGI5Nzg0YTQy
MzJjOTZhYmQyNjg1ODc3YjM2NmNjYTAxMzk0NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgYm9vbCBo
YXNOb0F0dHJpYnV0ZU9yT25seVN0eWxlQXR0cmlidXRlKGNvbnN0IFN0eWxlZEVsZW1lbnQqIGVs
ZW1lbnQsIFNobwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHVuc2lnbmVkIG1hdGNoZWRB
dHRyaWJ1dGVzID0gMDsKLSAgICBpZiAoZWxlbWVudC0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikg
PT0gc3R5bGVTcGFuQ2xhc3NTdHJpbmcoKSkKKyAgICBpZiAoZWxlbWVudC0+ZmFzdEdldEF0dHJp
YnV0ZShjbGFzc0F0dHIpID09IHN0eWxlU3BhbkNsYXNzU3RyaW5nKCkpCiAgICAgICAgIG1hdGNo
ZWRBdHRyaWJ1dGVzKys7CiAgICAgaWYgKGVsZW1lbnQtPmhhc0F0dHJpYnV0ZShzdHlsZUF0dHIp
ICYmIChzaG91bGRTdHlsZUF0dHJpYnV0ZUJlRW1wdHkgPT0gQWxsb3dOb25FbXB0eVN0eWxlQXR0
cmlidXRlCiAgICAgICAgIHx8ICFlbGVtZW50LT5pbmxpbmVTdHlsZSgpIHx8IGVsZW1lbnQtPmlu
bGluZVN0eWxlKCktPmlzRW1wdHkoKSkpCkBAIC0xMTQsNyArMTE0LDcgQEAgYm9vbCBpc0VtcHR5
Rm9udFRhZyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBTaG91bGRTdHlsZUF0dHJpYnV0ZUJlRW1w
dHkgc2hvdWxkU3QKICAgICByZXR1cm4gaGFzTm9BdHRyaWJ1dGVPck9ubHlTdHlsZUF0dHJpYnV0
ZShkb3duY2FzdDxIVE1MRm9udEVsZW1lbnQ+KGVsZW1lbnQpLCBzaG91bGRTdHlsZUF0dHJpYnV0
ZUJlRW1wdHkpOwogfQogCi1zdGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUZvbnRFbGVtZW50
KERvY3VtZW50JiBkb2N1bWVudCkKK3N0YXRpYyBSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUZv
bnRFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gY3JlYXRlSFRNTEVs
ZW1lbnQoZG9jdW1lbnQsIGZvbnRUYWcpOwogfQpAQCAtMTQ2MSwxMyArMTQ2MSwxMyBAQCB2b2lk
IEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlQ2hhbmdlKFBhc3NSZWZQdHI8Tm9k
ZT4gcGFzc2VkU3RhcnQsIFBhcwogICAgICAgICAgICAgaWYgKHN0eWxlQ2hhbmdlLmFwcGx5Rm9u
dFNpemUoKSkKICAgICAgICAgICAgICAgICBzZXROb2RlQXR0cmlidXRlKGZvbnRDb250YWluZXIs
IHNpemVBdHRyLCBzdHlsZUNoYW5nZS5mb250U2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBmb250RWxlbWVudCA9IGNyZWF0ZUZvbnRFbGVtZW50
KGRvY3VtZW50KCkpOworICAgICAgICAgICAgYXV0byBmb250RWxlbWVudCA9IGNyZWF0ZUZvbnRF
bGVtZW50KGRvY3VtZW50KCkpOwogICAgICAgICAgICAgaWYgKHN0eWxlQ2hhbmdlLmFwcGx5Rm9u
dENvbG9yKCkpCi0gICAgICAgICAgICAgICAgZm9udEVsZW1lbnQtPnNldEF0dHJpYnV0ZShjb2xv
ckF0dHIsIHN0eWxlQ2hhbmdlLmZvbnRDb2xvcigpKTsKKyAgICAgICAgICAgICAgICBmb250RWxl
bWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb2xvckF0dHIsIHN0eWxl
Q2hhbmdlLmZvbnRDb2xvcigpKTsKICAgICAgICAgICAgIGlmIChzdHlsZUNoYW5nZS5hcHBseUZv
bnRGYWNlKCkpCi0gICAgICAgICAgICAgICAgZm9udEVsZW1lbnQtPnNldEF0dHJpYnV0ZShmYWNl
QXR0ciwgc3R5bGVDaGFuZ2UuZm9udEZhY2UoKSk7CisgICAgICAgICAgICAgICAgZm9udEVsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZmFjZUF0dHIsIHN0eWxlQ2hh
bmdlLmZvbnRGYWNlKCkpOwogICAgICAgICAgICAgaWYgKHN0eWxlQ2hhbmdlLmFwcGx5Rm9udFNp
emUoKSkKLSAgICAgICAgICAgICAgICBmb250RWxlbWVudC0+c2V0QXR0cmlidXRlKHNpemVBdHRy
LCBzdHlsZUNoYW5nZS5mb250U2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBmb250RWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzaXplQXR0ciwgc3R5bGVDaGFuZ2Uu
Zm9udFNpemUoKSk7CiAgICAgICAgICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KHN0
YXJ0Tm9kZSwgZW5kTm9kZSwgZm9udEVsZW1lbnQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IGVjN2U3ZWI3NzJhNzFk
MjliOWRiODFmMTNmODA5YTIyMWQyZjcxN2MuLjc5MWQ3MDg3NzU5ZjJhYjc5M2I2MGQ2ZmUzMGE0
OGI2NDU5YjExMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0
eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAg
LTEwNTAsNyArMTA1MCw3IEBAIGJvb2wgRWRpdGluZ1N0eWxlOjplbGVtZW50SXNTdHlsZWRTcGFu
T3JIVE1MRXF1aXZhbGVudChjb25zdCBIVE1MRWxlbWVudCogZWxlbWVuCiAgICAgaWYgKCFlbGVt
ZW50SXNTcGFuT3JFbGVtZW50RXF1aXZhbGVudCAmJiAhbWF0Y2hlZEF0dHJpYnV0ZXMpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsgLy8gZWxlbWVudCBpcyBub3QgYSBzcGFuLCBhIGh0bWwgZWxlbWVu
dCBlcXVpdmFsZW50LCBvciBmb250IGVsZW1lbnQuCiAgICAgCi0gICAgaWYgKGVsZW1lbnQtPmdl
dEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0cikgPT0gQXBwbGVTdHlsZVNwYW5DbGFzcykK
KyAgICBpZiAoZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0cikg
PT0gQXBwbGVTdHlsZVNwYW5DbGFzcykKICAgICAgICAgbWF0Y2hlZEF0dHJpYnV0ZXMrKzsKIAog
ICAgIGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMWM4MGZkMTgzOGU0OTkyOGQzZTA5MmIxNGUy
MTdiMWNhZWVjYTAyMi4uOTM5ZjU4ZWFmYTdiMGE3NWViNzQyZDllMjI1ODJhZTdkODU0ZDViNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTY2MSw3ICsxNjYxLDcgQEAgdm9pZCBF
ZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9u
KQogICAgIGlmIChpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oZm9jdXNlZEVsZW1lbnQp
KSB7CiAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pCiAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50PigqZm9jdXNlZEVsZW1lbnQpLnNldEF0dHJpYnV0ZShkaXJBdHRyLCBkaXJlY3Rpb24g
PT0gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uID8gImx0ciIgOiAicnRsIik7CisgICAgICAg
IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PigqZm9jdXNlZEVsZW1lbnQpLnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGlyQXR0ciwgZGlyZWN0aW9uID09IExl
ZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA/ICJsdHIiIDogInJ0bCIpOwogICAgICAgICBmb2N1
c2VkRWxlbWVudC0+ZGlzcGF0Y2hJbnB1dEV2ZW50KCk7CiAgICAgICAgIGRvY3VtZW50KCkudXBk
YXRlU3R5bGVJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDQ5NDQwNWUyNDJm
YTc4NmE1N2QyMWQyYzcxZmNhYzgyN2RhNTU1OTEuLjUwNDliNDM1NDEwZmQyMzlkYzg3NzkwMzI4
MzBkMmY4Zjc4NzZlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC00MzYsNyArNDM2LDcgQEAgYm9vbCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6c2hvdWxkTWVyZ2VFbmQoYm9vbCBzZWxlY3Rpb25FbmRXYXNFbmRPZlBh
cmFncmFwaCkKIAogc3RhdGljIGJvb2wgaXNNYWlsUGFzdGVBc1F1b3RhdGlvbk5vZGUoY29uc3Qg
Tm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGJsb2Nr
cXVvdGVUYWcpICYmIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLT5nZXRBdHRyaWJ1dGUoY2xhc3NB
dHRyKSA9PSBBcHBsZVBhc3RlQXNRdW90YXRpb247CisgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+
aGFzVGFnTmFtZShibG9ja3F1b3RlVGFnKSAmJiBkb3duY2FzdDxFbGVtZW50Pihub2RlKS0+ZmFz
dEdldEF0dHJpYnV0ZShjbGFzc0F0dHIpID09IEFwcGxlUGFzdGVBc1F1b3RhdGlvbjsKIH0KIAog
c3RhdGljIGJvb2wgaXNIZWFkZXJFbGVtZW50KGNvbnN0IE5vZGUqIGEpCkBAIC04OTQsNyArODk0
LDcgQEAgc3RhdGljIGJvb2wgaXNJbmxpbmVOb2RlV2l0aFN0eWxlKGNvbnN0IE5vZGUqIG5vZGUp
CiAgICAgLy8gV2UgY2FuIHNraXAgb3ZlciBlbGVtZW50cyB3aG9zZSBjbGFzcyBhdHRyaWJ1dGUg
aXMKICAgICAvLyBvbmUgb2Ygb3VyIGludGVybmFsIGNsYXNzZXMuCiAgICAgY29uc3QgSFRNTEVs
ZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRWxlbWVudCo+KG5vZGUpOwot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NBdHRyaWJ1dGVWYWx1ZSA9IGVsZW1lbnQtPmdl
dEF0dHJpYnV0ZShjbGFzc0F0dHIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NBdHRy
aWJ1dGVWYWx1ZSA9IGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKTsKICAgICBp
ZiAoY2xhc3NBdHRyaWJ1dGVWYWx1ZSA9PSBBcHBsZVRhYlNwYW5DbGFzcwogICAgICAgICB8fCBj
bGFzc0F0dHJpYnV0ZVZhbHVlID09IEFwcGxlQ29udmVydGVkU3BhY2UKICAgICAgICAgfHwgY2xh
c3NBdHRyaWJ1dGVWYWx1ZSA9PSBBcHBsZVBhc3RlQXNRdW90YXRpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggZDA4MDViZjkzYTM2NDU3
NzBhNGE1NWYxYjNjM2Q4OTFlMDBiOGUzOC4uZWQ1OTYzZmU2ZDI3ZWQyOTkzYzllNWU2NGYzOTFk
YzQyYTk4M2JiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRh
RGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5tbQpAQCAtNjM0LDkgKzYzNCw5IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVj
dENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURlCiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBhbmNob3JFbGVtZW50LT5hcHBlbmRDaGlsZChXVEZNb3Zl
KG5ld1RleHROb2RlKSk7CiAgICAgICAgICAgICAvLyBBZGQgYSBzcGVjaWFsIGF0dHJpYnV0ZSB0
byBtYXJrIHRoaXMgVVJMaWZpY2F0aW9uIGFzIHRoZSByZXN1bHQgb2YgZGF0YSBkZXRlY3RvcnMu
Ci0gICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRBdHRyaWJ1dGUoeF9hcHBsZV9kYXRhX2Rl
dGVjdG9yc0F0dHIsICJ0cnVlIik7Ci0gICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRBdHRy
aWJ1dGUoeF9hcHBsZV9kYXRhX2RldGVjdG9yc190eXBlQXR0ciwgZGF0YURldGVjdG9yVHlwZUZv
ckNhdGVnb3J5KHNvZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3JlX0REUmVzdWx0R2V0Q2F0ZWdvcnko
Y29yZVJlc3VsdCkpKTsKLSAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldEF0dHJpYnV0ZSh4
X2FwcGxlX2RhdGFfZGV0ZWN0b3JzX3Jlc3VsdEF0dHIsIGlkZW50aWZpZXIpOworICAgICAgICAg
ICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih4X2Fw
cGxlX2RhdGFfZGV0ZWN0b3JzQXR0ciwgQXRvbWljU3RyaW5nKCJ0cnVlIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih4X2FwcGxlX2RhdGFfZGV0ZWN0b3JzX3R5
cGVBdHRyLCBkYXRhRGV0ZWN0b3JUeXBlRm9yQ2F0ZWdvcnkoc29mdExpbmtfRGF0YURldGVjdG9y
c0NvcmVfRERSZXN1bHRHZXRDYXRlZ29yeShjb3JlUmVzdWx0KSkpOworICAgICAgICAgICAgYW5j
aG9yRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih4X2FwcGxlX2Rh
dGFfZGV0ZWN0b3JzX3Jlc3VsdEF0dHIsIGlkZW50aWZpZXIpOwogCiAgICAgICAgICAgICBwYXJl
bnROb2RlLT5pbnNlcnRCZWZvcmUoV1RGTW92ZShhbmNob3JFbGVtZW50KSwgJmN1cnJlbnRUZXh0
Tm9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggYjQwNzkw
ODg2OTJjZGYwOTUxZDk0ODNlYmFmZDdjODVmNDc3OTBhMC4uZDliZDYwYmY1OGMzNGE1ZDYzZTUw
OTk0ZDY4NzA0ZDUyYTc3YzcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9o
dG1sZWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5j
cHAKQEAgLTkzMSw3ICs5MzEsNyBAQCBzdGF0aWMgUmVmPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5F
bGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgVGV4dCYgdGFiVGV4dE5vZGUpCiB7CiAgICAgYXV0
byBzcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoc3BhblRhZywgZmFsc2UpOwog
Ci0gICAgc3BhbkVsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEFwcGxlVGFiU3BhbkNs
YXNzKTsKKyAgICBzcGFuRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihjbGFzc0F0dHIsIEFwcGxlVGFiU3BhbkNsYXNzKTsKICAgICBzcGFuRWxlbWVudC0+c2V0QXR0
cmlidXRlKHN0eWxlQXR0ciwgIndoaXRlLXNwYWNlOnByZSIpOwogCiAgICAgc3BhbkVsZW1lbnQt
PmFwcGVuZENoaWxkKHRhYlRleHROb2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCBlOThhZGNlOTUzY2ZlMDk1MTFlY2Fk
MGY2NmJmYTJmOWUyZWZjMTMwLi41YjRkMzhhMGUwMjk1YzE2NTkyZjIzYzIxNzc3YTA2OTRhOTA1
MjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC0xNjYsNyAr
MTY2LDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRp
bmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgICAgIHx8IGRvd25jYXN0
PEhUTUxJbnB1dEVsZW1lbnQ+KCpmb2N1c2VkRWxlbWVudCkuaXNTZWFyY2hGaWVsZCgpKSkpKSB7
CiAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGRvd25jYXN0PEhUTUxFbGVtZW50PigqZm9jdXNlZEVs
ZW1lbnQpLnNldEF0dHJpYnV0ZShhbGlnbkF0dHIsIG5ld1ZhbHVlKTsKKyAgICAgICAgZG93bmNh
c3Q8SFRNTEVsZW1lbnQ+KCpmb2N1c2VkRWxlbWVudCkuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihhbGlnbkF0dHIsIG5ld1ZhbHVlKTsKICAgICAgICAgbV9mcmFtZS5kb2N1bWVu
dCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00
OTAsNyArNDkwLDcgQEAgYm9vbCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAg
ICAgICBhdXRvIGFuY2hvciA9IGZyYW1lLmRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQoSFRNTE5h
bWVzOjphVGFnLCBmYWxzZSk7Ci0gICAgICAgIGFuY2hvci0+c2V0QXR0cmlidXRlKEhUTUxOYW1l
czo6aHJlZkF0dHIsIHVybC5zdHJpbmcoKSk7CisgICAgICAgIGFuY2hvci0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhyZWZBdHRyLCB1cmwuc3RyaW5nKCkp
OwogICAgICAgICBhbmNob3ItPmFwcGVuZENoaWxkKGZyYW1lLmRvY3VtZW50KCktPmNyZWF0ZVRl
eHROb2RlKFtbKE5TVVJMICopdXJsIGFic29sdXRlU3RyaW5nXSBwcmVjb21wb3NlZFN0cmluZ1dp
dGhDYW5vbmljYWxNYXBwaW5nXSkpOwogCiAgICAgICAgIGF1dG8gbmV3RnJhZ21lbnQgPSBmcmFt
ZS5kb2N1bWVudCgpLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMjliMWY2MzljZGJhMGFjMWU4MzUzYTU0OWUyNmQy
ODU3NTllNWZhYi4uNzY1YjJiZDg2ZWFkM2FkNWJlZmRjYmRhMzQ0N2U3MTFhYjViYWNhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtNTk4LDcgKzU5OCw3IEBA
IGJvb2wgRWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGFu
Y2hvciA9IGZyYW1lLmRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQoSFRNTE5hbWVzOjphVGFnLCBm
YWxzZSk7Ci0gICAgYW5jaG9yLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0ciwgdXJs
LnN0cmluZygpKTsKKyAgICBhbmNob3ItPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjpocmVmQXR0ciwgdXJsLnN0cmluZygpKTsKICAgICBhbmNob3ItPmFwcGVu
ZENoaWxkKGZyYW1lLmRvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKFt0aXRsZSBwcmVjb21wb3Nl
ZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXSkpOwogCiAgICAgZnJhZ21lbnQgPSBmcmFtZS5k
b2N1bWVudCgpLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKaW5kZXggNzIzZTAwNGEzMmZhZWIzNTMyYzk4ZTU3NTMxMWI1ZTBiYTUzYWYzZS4uMTVh
OTVkOGIyMDZhNWE1NGFmNzlhNTc0YWE2OTAzMTRiODI5YjBmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcApAQCAtNzk2LDcgKzc5Niw3IEBAIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVh
dGVGcmFnbWVudEZyb21UZXh0KFJhbmdlJiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpCiAg
ICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHJp
bmcpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgaWYgKHN0cmluZy5lbmRzV2l0aCgn
XG4nKSkgewogICAgICAgICAgICAgYXV0byBlbGVtZW50ID0gSFRNTEJSRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKLSAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIs
IEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsgICAgICAgICAgICAKKyAgICAgICAgICAgIGVsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xhc3NBdHRyLCBBcHBsZUlu
dGVyY2hhbmdlTmV3bGluZSk7CiAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZWxl
bWVudCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZy
YWdtZW50OwpAQCAtODI4LDcgKzgyOCw3IEBAIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVG
cmFnbWVudEZyb21UZXh0KFJhbmdlJiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAg
ICAgIGlmIChzLmlzRW1wdHkoKSAmJiBpICsgMSA9PSBudW1MaW5lcykgewogICAgICAgICAgICAg
Ly8gRm9yIGxhc3QgbGluZSwgdXNlIHRoZSAibWFnaWMgQlIiIHJhdGhlciB0aGFuIGEgUC4KICAg
ICAgICAgICAgIGVsZW1lbnQgPSBIVE1MQlJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAg
ICAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNoYW5n
ZU5ld2xpbmUpOworICAgICAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihjbGFzc0F0dHIsIEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsKICAgICAgICAg
fSBlbHNlIGlmICh1c2VMaW5lQnJlYWspIHsKICAgICAgICAgICAgIGVsZW1lbnQgPSBIVE1MQlJF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICAgICAgZmlsbENvbnRhaW5lckZyb21T
dHJpbmcoZnJhZ21lbnQsIHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNl
QnV0dG9uSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0
VHlwZS5jcHAKaW5kZXggZTc1YTgwYWVmZDExNGQwNGU1ZmU5ODJlMmZmYWUyZjA2MDNlZjRlMS4u
NDAyMWM2ZWY3MmE0NTMwMjdmYmU4NjM3MmNmOWYxNjNlZWZjNjE4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGJvb2wg
QmFzZUJ1dHRvbklucHV0VHlwZTo6c3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKQog
CiB2b2lkIEJhc2VCdXR0b25JbnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgc2FuaXRp
emVkVmFsdWUsIGJvb2wsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpCiB7Ci0gICAgZWxlbWVudCgp
LnNldEF0dHJpYnV0ZSh2YWx1ZUF0dHIsIHNhbml0aXplZFZhbHVlKTsKKyAgICBlbGVtZW50KCku
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih2YWx1ZUF0dHIsIHNhbml0aXplZFZh
bHVlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAKaW5kZXggZWI3YWVmZTJkMTE1MGI5M2FjY2I4
MzdjODU2YTM0OWZkMzAzZDQyNy4uYmE1YTk5MWQ3M2I1MDI0MzQwNTEwNGYzNTNiZGU4MDQ4MmVj
ZDk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUu
Y3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgYm9vbCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpzdG9y
ZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpCiAKIHZvaWQgQmFzZUNoZWNrYWJsZUlucHV0
VHlwZTo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiBzYW5pdGl6ZWRWYWx1ZSwgYm9vbCwgVGV4dEZp
ZWxkRXZlbnRCZWhhdmlvcikKIHsKLSAgICBlbGVtZW50KCkuc2V0QXR0cmlidXRlKHZhbHVlQXR0
ciwgc2FuaXRpemVkVmFsdWUpOworICAgIGVsZW1lbnQoKS5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKHZhbHVlQXR0ciwgc2FuaXRpemVkVmFsdWUpOwogfQogCiBib29sIEJhc2VD
aGVja2FibGVJbnB1dFR5cGU6OmlzQ2hlY2thYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggN2RlM2Q4MDczMGI2MzMyYTUzOGUwZjBmZTUw
NzY1OGE0YzRlMzM4MS4uZGJkOGM3M2YyYzcyYTc3NmQzZWFkZDYwNGJjODI4OWRiZjJjNzM3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTEw
MSwyOSArMTAxLDI5IEBAIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQmIGRvY3VtZW50KQogCiB2b2lkIEZUUERpcmVjdG9y
eURvY3VtZW50UGFyc2VyOjphcHBlbmRFbnRyeShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIHNpemUsIGNvbnN0IFN0cmluZyYgZGF0ZSwgYm9vbCBpc0RpcmVjdG9yeSkKIHsK
LSAgICBSZWZQdHI8RWxlbWVudD4gcm93RWxlbWVudCA9IG1fdGFibGVFbGVtZW50LT5pbnNlcnRS
b3coLTEsIElHTk9SRV9FWENFUFRJT04pOwotICAgIHJvd0VsZW1lbnQtPnNldEF0dHJpYnV0ZShI
VE1MTmFtZXM6OmNsYXNzQXR0ciwgImZ0cERpcmVjdG9yeUVudHJ5Um93Iik7CisgICAgYXV0byBy
b3dFbGVtZW50ID0gbV90YWJsZUVsZW1lbnQtPmluc2VydFJvdygtMSwgSUdOT1JFX0VYQ0VQVElP
Tik7CisgICAgcm93RWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihI
VE1MTmFtZXM6OmNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJmdHBEaXJlY3RvcnlFbnRyeVJvdyIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAogICAgIGF1dG8gdHlwZUVs
ZW1lbnQgPSBkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KHRkVGFnLCBmYWxzZSk7CiAgICAgdHlw
ZUVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgU3RyaW5nKCZu
b0JyZWFrU3BhY2UsIDEpKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgaWYgKGlzRGlyZWN0b3J5
KQotICAgICAgICB0eXBlRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRy
LCAiZnRwRGlyZWN0b3J5SWNvbiBmdHBEaXJlY3RvcnlUeXBlRGlyZWN0b3J5Iik7CisgICAgICAg
IHR5cGVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6Y2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoImZ0cERpcmVjdG9yeUljb24gZnRwRGlyZWN0b3J5
VHlwZURpcmVjdG9yeSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAg
ICBlbHNlCi0gICAgICAgIHR5cGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFz
c0F0dHIsICJmdHBEaXJlY3RvcnlJY29uIGZ0cERpcmVjdG9yeVR5cGVGaWxlIik7CisgICAgICAg
IHR5cGVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6Y2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoImZ0cERpcmVjdG9yeUljb24gZnRwRGlyZWN0b3J5
VHlwZUZpbGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgcm93
RWxlbWVudC0+YXBwZW5kQ2hpbGQodHlwZUVsZW1lbnQsIElHTk9SRV9FWENFUFRJT04pOwogCiAg
ICAgYXV0byBuYW1lRWxlbWVudCA9IGNyZWF0ZVRERm9yRmlsZW5hbWUoZmlsZW5hbWUpOwotICAg
IG5hbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJmdHBEaXJl
Y3RvcnlGaWxlTmFtZSIpOworICAgIG5hbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoImZ0cERpcmVj
dG9yeUZpbGVOYW1lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAg
IHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKG5hbWVFbGVtZW50LCBJR05PUkVfRVhDRVBUSU9OKTsK
IAogICAgIGF1dG8gZGF0ZUVsZW1lbnQgPSBkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KHRkVGFn
LCBmYWxzZSk7CiAgICAgZGF0ZUVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZSgqZG9j
dW1lbnQoKSwgZGF0ZSksIElHTk9SRV9FWENFUFRJT04pOwotICAgIGRhdGVFbGVtZW50LT5zZXRB
dHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJmdHBEaXJlY3RvcnlGaWxlRGF0ZSIpOwor
ICAgIGRhdGVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxO
YW1lczo6Y2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoImZ0cERpcmVjdG9yeUZpbGVEYXRlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJvd0VsZW1lbnQtPmFwcGVu
ZENoaWxkKGRhdGVFbGVtZW50LCBJR05PUkVfRVhDRVBUSU9OKTsKIAogICAgIGF1dG8gc2l6ZUVs
ZW1lbnQgPSBkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KHRkVGFnLCBmYWxzZSk7CiAgICAgc2l6
ZUVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgc2l6ZSksIElH
Tk9SRV9FWENFUFRJT04pOwotICAgIHNpemVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVz
OjpjbGFzc0F0dHIsICJmdHBEaXJlY3RvcnlGaWxlU2l6ZSIpOworICAgIHNpemVFbGVtZW50LT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBB
dG9taWNTdHJpbmcoImZ0cERpcmVjdG9yeUZpbGVTaXplIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKHNpemVFbGVtZW50
LCBJR05PUkVfRVhDRVBUSU9OKTsKIH0KIApAQCAtMTM2LDcgKzEzNiw3IEBAIFJlZjxFbGVtZW50
PiBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6Y3JlYXRlVERGb3JGaWxlbmFtZShjb25zdCBT
dHJpbmcmIGZpbGVuCiAgICAgICAgIGZ1bGxVUkwgPSBmdWxsVVJMICsgJy8nICsgZmlsZW5hbWU7
CiAKICAgICBhdXRvIGFuY2hvckVsZW1lbnQgPSBkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KGFU
YWcsIGZhbHNlKTsKLSAgICBhbmNob3JFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpo
cmVmQXR0ciwgZnVsbFVSTCk7CisgICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhyZWZBdHRyLCBmdWxsVVJMKTsKICAgICBhbmNo
b3JFbGVtZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoKmRvY3VtZW50KCksIGZpbGVuYW1l
KSwgSUdOT1JFX0VYQ0VQVElPTik7CiAKICAgICBSZWY8RWxlbWVudD4gdGRFbGVtZW50ID0gZG9j
dW1lbnQoKS0+Y3JlYXRlRWxlbWVudCh0ZFRhZywgZmFsc2UpOwpAQCAtMzA2LDcgKzMwNiw3IEBA
IGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKCkK
ICAgICAvLyBPdGhlcndpc2UgY3JlYXRlIG9uZSBtYW51YWxseQogICAgIHRhYmxlRWxlbWVudCA9
IGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQodGFibGVUYWcsIGZhbHNlKTsKICAgICBtX3RhYmxl
RWxlbWVudCA9IGRvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KHRhYmxlRWxlbWVudC5nZXQoKSk7
Ci0gICAgbV90YWJsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmlkQXR0ciwgImZ0
cERpcmVjdG9yeVRhYmxlIik7CisgICAgbV90YWJsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjppZEF0dHIsIEF0b21pY1N0cmluZygiZnRwRGly
ZWN0b3J5VGFibGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKICAg
ICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCB0aGUgdGFibGUgZWxlbWVudCwgbGV0cyB0cnkgdG8gYXBw
ZW5kIG91ciBvd24gdG8gdGhlIGJvZHkKICAgICAvLyBJZiB0aGF0IGZhaWxzIGZvciBzb21lIHJl
YXNvbiwgY3JhbSBpdCBvbiB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudCBhcyBhIGxhc3QKQEAgLTMz
MSw4ICszMzEsOCBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpjcmVhdGVCYXNp
Y0RvY3VtZW50KCkKIAogICAgIGF1dG8gdGFibGVFbGVtZW50ID0gZG9jdW1lbnQoKS0+Y3JlYXRl
RWxlbWVudCh0YWJsZVRhZywgZmFsc2UpOwogICAgIG1fdGFibGVFbGVtZW50ID0gZG93bmNhc3Q8
SFRNTFRhYmxlRWxlbWVudD4odGFibGVFbGVtZW50LnB0cigpKTsKLSAgICBtX3RhYmxlRWxlbWVu
dC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aWRBdHRyLCAiZnRwRGlyZWN0b3J5VGFibGUiKTsK
LSAgICBtX3RhYmxlRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyLCAi
d2lkdGg6MTAwJSIpOworICAgIG1fdGFibGVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6aWRBdHRyLCBBdG9taWNTdHJpbmcoImZ0cERpcmVjdG9y
eVRhYmxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIG1fdGFi
bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIsIEF0b21pY1N0cmlu
Zygid2lkdGg6MTAwJSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAog
ICAgIGJvZHlFbGVtZW50LT5hcHBlbmRDaGlsZCh0YWJsZUVsZW1lbnQsIElHTk9SRV9FWENFUFRJ
T04pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDZj
NWIzNTdlNTBjOTEzOWFiYjMwMmQ4Y2IyMjIyMmIxZDZiN2RkNzguLmFjZmZhMzUyMTIwMDI2ODBh
ZjBkZTU2NzZmZTA1OWZhOTVjNzRkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hv
ckVsZW1lbnQuY3BwCkBAIC0yODYsMTIgKzI4NiwxMiBAQCBib29sIEhUTUxBbmNob3JFbGVtZW50
OjpkcmFnZ2FibGUoKSBjb25zdAogCiBVUkwgSFRNTEFuY2hvckVsZW1lbnQ6OmhyZWYoKSBjb25z
dAogewotICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRy
YWlsaW5nSFRNTFNwYWNlcyhnZXRBdHRyaWJ1dGUoaHJlZkF0dHIpKSk7CisgICAgcmV0dXJuIGRv
Y3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGZh
c3RHZXRBdHRyaWJ1dGUoaHJlZkF0dHIpKSk7CiB9CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6
OnNldEhyZWYoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUo
aHJlZkF0dHIsIHZhbHVlKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KGhyZWZBdHRyLCB2YWx1ZSk7CiB9CiAKIGJvb2wgSFRNTEFuY2hvckVsZW1lbnQ6Omhhc1JlbCh1
aW50MzJfdCByZWxhdGlvbikgY29uc3QKQEAgLTMxOSw3ICszMTksNyBAQCBpbnQgSFRNTEFuY2hv
ckVsZW1lbnQ6OnRhYkluZGV4KCkgY29uc3QKIAogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojp0
YXJnZXQoKSBjb25zdAogewotICAgIHJldHVybiBnZXRBdHRyaWJ1dGUodGFyZ2V0QXR0cik7Cisg
ICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUodGFyZ2V0QXR0cik7CiB9CiAKIFN0cmluZyBIVE1M
QW5jaG9yRWxlbWVudDo6b3JpZ2luKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFF
bGVtZW50LmNwcAppbmRleCBkZWFhNDZiODNlMWRhYmFmMzcxYjU3MzQwMjdhZjg4ZTM5ZjE1NTM4
Li5jMDYzNjljMjc4NTZiMzI5ZmE5MGNiNDlhZmM0ZDgzNmI0NGM3MzI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgYm9vbCBIVE1M
QXJlYUVsZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdAogCiBTdHJpbmcgSFRNTEFyZWFFbGVt
ZW50Ojp0YXJnZXQoKSBjb25zdAogewotICAgIHJldHVybiBnZXRBdHRyaWJ1dGUodGFyZ2V0QXR0
cik7CisgICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUodGFyZ2V0QXR0cik7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcAppbmRleCBmM2UyOWQwMjFjNDI2YjZk
NzRlNTdkZThjOTEwMjJmYzQ4N2Q4OWU2Li4wZWFmMTU4MTE1ZTA4MjUxZjcyNTFhMDVkODVlOWQ4
YTI1NmNjMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCkBAIC05
OCw3ICs5OCw3IEBAIFVSTCBIVE1MQmFzZUVsZW1lbnQ6OmhyZWYoKSBjb25zdAogCiB2b2lkIEhU
TUxCYXNlRWxlbWVudDo6c2V0SHJlZihjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAg
IHNldEF0dHJpYnV0ZShocmVmQXR0ciwgdmFsdWUpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oaHJlZkF0dHIsIHZhbHVlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAppbmRleCBlNzk1ZjQ0MDc4ODNkNzYzM2Y3OTJhYWI0
YjQ2YzNlNmEzYTRjMjY5Li4zZTg3ODZiYjQxYTFkYTY0NWM3MGJmMDA1NmMxZjQ5MDEwZDdlYmQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcApAQCAtNTMsNyAr
NTMsNyBAQCBSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+IEhUTUxCdXR0b25FbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogCiB2b2lkIEhUTUxCdXR0b25FbGVtZW50
OjpzZXRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUo
dHlwZUF0dHIsIHR5cGUpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
dHlwZUF0dHIsIHR5cGUpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEJ1dHRv
bkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuY3BwCmluZGV4IDc3ZTY0NTZlYmIxMjllYTc3YTJiZGQ3MTVlZjhkMGY4MjlhOWZiMGEu
LmM1NTUzZTJmZWQ0N2VmZDhkMGI3ZDMzMmQ1MDI0NzU4ZTBkNTZkZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYKIHZvaWQgSFRNTERldGFpbHNFbGVtZW50OjpkaWRBZGRVc2VyQWdl
bnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiB7CiAgICAgYXV0byBzdW1tYXJ5U2xvdCA9
IEhUTUxTbG90RWxlbWVudDo6Y3JlYXRlKHNsb3RUYWcsIGRvY3VtZW50KCkpOwotICAgIHN1bW1h
cnlTbG90LT5zZXRBdHRyaWJ1dGUobmFtZUF0dHIsIHN1bW1hcnlTbG90TmFtZSgpKTsKKyAgICBz
dW1tYXJ5U2xvdC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihuYW1lQXR0ciwg
c3VtbWFyeVNsb3ROYW1lKCkpOwogICAgIG1fc3VtbWFyeVNsb3QgPSBzdW1tYXJ5U2xvdC5wdHIo
KTsKIAogICAgIGF1dG8gZGVmYXVsdFN1bW1hcnkgPSBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0
ZShzdW1tYXJ5VGFnLCBkb2N1bWVudCgpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEhUTUxE
ZXRhaWxzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljUwogCiB2b2lkIEhUTUxEZXRhaWxzRWxlbWVudDo6dG9nZ2xlT3BlbigpCiB7
Ci0gICAgc2V0QXR0cmlidXRlKG9wZW5BdHRyLCBtX2lzT3BlbiA/IG51bGxBdG9tIDogZW1wdHlB
dG9tKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG9wZW5BdHRyLCBt
X2lzT3BlbiA/IG51bGxBdG9tIDogZW1wdHlBdG9tKTsKIAogICAgIC8vIFdlIG5lZWQgdG8gcG9z
dCB0byB0aGUgZG9jdW1lbnQgYmVjYXVzZSB0b2dnbGluZyB0aGlzIGVsZW1lbnQgd2lsbCBkZWxl
dGUgaXQuCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlzdGlu
Z0FYT2JqZWN0Q2FjaGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCBh
MjAzZWUzYWM5MjIwNmI0N2E2N2VlMzRjZmJkY2M5M2YxMzY4MTE2Li4zOTkzNzU5ZjEwNjE1ZGUw
NDlmMGVhMmQ4Zjc5Yjc3NjgxYmIzNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
Y3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6
OmJnQ29sb3IoKSBjb25zdAogdm9pZCBIVE1MRG9jdW1lbnQ6OnNldEJnQ29sb3IoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAoYXV0byogYm9keUVsZW1lbnQgPSBib2R5KCkpCi0gICAg
ICAgIGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUoYmdjb2xvckF0dHIsIHZhbHVlKTsKKyAgICAg
ICAgYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYmdjb2xv
ckF0dHIsIHZhbHVlKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OmZn
Q29sb3IoKSBjb25zdApAQCAtMTY0LDcgKzE2NCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRN
TERvY3VtZW50OjpmZ0NvbG9yKCkgY29uc3QKIHZvaWQgSFRNTERvY3VtZW50OjpzZXRGZ0NvbG9y
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIGJvZHlFbGVtZW50ID0gYm9k
eSgpKQotICAgICAgICBib2R5RWxlbWVudC0+c2V0QXR0cmlidXRlKHRleHRBdHRyLCB2YWx1ZSk7
CisgICAgICAgIGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KHRleHRBdHRyLCB2YWx1ZSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50
OjphbGlua0NvbG9yKCkgY29uc3QKQEAgLTE3OCw3ICsxNzgsNyBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIEhUTUxEb2N1bWVudDo6YWxpbmtDb2xvcigpIGNvbnN0CiB2b2lkIEhUTUxEb2N1bWVudDo6
c2V0QWxpbmtDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChhdXRvKiBib2R5
RWxlbWVudCA9IGJvZHkoKSkKLSAgICAgICAgYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZShhbGlu
a0F0dHIsIHZhbHVlKTsKKyAgICAgICAgYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oYWxpbmtBdHRyLCB2YWx1ZSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgSFRNTERvY3VtZW50OjpsaW5rQ29sb3IoKSBjb25zdApAQCAtMTkyLDcgKzE5Miw3IEBAIGNv
bnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50OjpsaW5rQ29sb3IoKSBjb25zdAogdm9pZCBI
VE1MRG9jdW1lbnQ6OnNldExpbmtDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlm
IChhdXRvKiBib2R5RWxlbWVudCA9IGJvZHkoKSkKLSAgICAgICAgYm9keUVsZW1lbnQtPnNldEF0
dHJpYnV0ZShsaW5rQXR0ciwgdmFsdWUpOworICAgICAgICBib2R5RWxlbWVudC0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihsaW5rQXR0ciwgdmFsdWUpOwogfQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIEhUTUxEb2N1bWVudDo6dmxpbmtDb2xvcigpIGNvbnN0CkBAIC0yMDYsNyAr
MjA2LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OnZsaW5rQ29sb3IoKSBj
b25zdAogdm9pZCBIVE1MRG9jdW1lbnQ6OnNldFZsaW5rQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBpZiAoYXV0byogYm9keUVsZW1lbnQgPSBib2R5KCkpCi0gICAgICAgIGJvZHlF
bGVtZW50LT5zZXRBdHRyaWJ1dGUodmxpbmtBdHRyLCB2YWx1ZSk7CisgICAgICAgIGJvZHlFbGVt
ZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHZsaW5rQXR0ciwgdmFsdWUp
OwogfQogCiB2b2lkIEhUTUxEb2N1bWVudDo6Y2FwdHVyZUV2ZW50cygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCmluZGV4IDM5ZWM4NzE0NzAxMmVlZDMyOWM4MTFhZDZiODc4OGYzZDU3
ODk2ZmIuLjFiOGE5NjQwN2NjNDJiODgxMWYxNGU5NTMyNTg5OWMzNjExOTUwZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC01NDEsNyArNTQxLDcgQEAgY29uc3QgQXRvbWlj
U3RyaW5nJiBIVE1MRWxlbWVudDo6ZGlyKCkgY29uc3QKIAogdm9pZCBIVE1MRWxlbWVudDo6c2V0
RGlyKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgc2V0QXR0cmlidXRlKGRpckF0
dHIsIHZhbHVlKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRpckF0
dHIsIHZhbHVlKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC03NjQsMTEgKzc2NCwxMSBAQCBTdHJp
bmcgSFRNTEVsZW1lbnQ6OmNvbnRlbnRFZGl0YWJsZSgpIGNvbnN0CiB2b2lkIEhUTUxFbGVtZW50
OjpzZXRDb250ZW50RWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbmFibGVkLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZW5hYmxlZCwg
InRydWUiKSkKLSAgICAgICAgc2V0QXR0cmlidXRlKGNvbnRlbnRlZGl0YWJsZUF0dHIsIEF0b21p
Y1N0cmluZygidHJ1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb250ZW50ZWRpdGFibGVB
dHRyLCBBdG9taWNTdHJpbmcoInRydWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZW5hYmxl
ZCwgImZhbHNlIikpCi0gICAgICAgIHNldEF0dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyLCBB
dG9taWNTdHJpbmcoImZhbHNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRlbnRlZGl0
YWJsZUF0dHIsIEF0b21pY1N0cmluZygiZmFsc2UiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
ZW5hYmxlZCwgInBsYWludGV4dC1vbmx5IikpCi0gICAgICAgIHNldEF0dHJpYnV0ZShjb250ZW50
ZWRpdGFibGVBdHRyLCBBdG9taWNTdHJpbmcoInBsYWludGV4dC1vbmx5IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0dHIsIEF0b21pY1N0cmluZygicGxhaW50ZXh0
LW9ubHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgZWxzZSBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZW5hYmxlZCwgImluaGVyaXQiKSkKICAg
ICAgICAgcmVtb3ZlQXR0cmlidXRlKGNvbnRlbnRlZGl0YWJsZUF0dHIpOwogICAgIGVsc2UKQEAg
LTc4Miw3ICs3ODIsNyBAQCBib29sIEhUTUxFbGVtZW50OjpkcmFnZ2FibGUoKSBjb25zdAogCiB2
b2lkIEhUTUxFbGVtZW50OjpzZXREcmFnZ2FibGUoYm9vbCB2YWx1ZSkKIHsKLSAgICBzZXRBdHRy
aWJ1dGUoZHJhZ2dhYmxlQXR0ciwgdmFsdWUKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGRyYWdnYWJsZUF0dHIsIHZhbHVlCiAgICAgICAgID8gQXRvbWljU3RyaW5nKCJ0
cnVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkKICAgICAgICAgOiBBdG9t
aWNTdHJpbmcoImZhbHNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwog
fQpAQCAtNzk0LDcgKzc5NCw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OnNwZWxsY2hlY2soKSBjb25z
dAogCiB2b2lkIEhUTUxFbGVtZW50OjpzZXRTcGVsbGNoZWNrKGJvb2wgZW5hYmxlKQogewotICAg
IHNldEF0dHJpYnV0ZShzcGVsbGNoZWNrQXR0ciwgZW5hYmxlCisgICAgc2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihzcGVsbGNoZWNrQXR0ciwgZW5hYmxlCiAgICAgICAgID8gQXRv
bWljU3RyaW5nKCJ0cnVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkKICAg
ICAgICAgOiBBdG9taWNTdHJpbmcoImZhbHNlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOwogfQpAQCAtODUxLDcgKzg1MSw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OnRyYW5z
bGF0ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZShib29sIGVuYWJs
ZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUodHJhbnNsYXRlQXR0ciwgZW5hYmxlID8gInllcyIgOiAi
bm8iKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHRyYW5zbGF0ZUF0
dHIsIGVuYWJsZSA/ICJ5ZXMiIDogIm5vIik7CiB9CiAKIGJvb2wgSFRNTEVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggNmRjMTg3MTNjNTBmMjhkN2I3
MWVhOTFiOGEwYjA0MDhmMTczNjA3Yi4uNzYwZmIyZjYyNGZmYzZkM2RmYTdjMTU2NzlhYmIxODY3
MTczMzI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFN0cmluZyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpm
b3JtRW5jdHlwZSgpIGNvbnN0CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Rm9y
bUVuY3R5cGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUoZm9ybWVu
Y3R5cGVBdHRyLCB2YWx1ZSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihmb3JtZW5jdHlwZUF0dHIsIHZhbHVlKTsKIH0KIAogU3RyaW5nIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OmZvcm1NZXRob2QoKSBjb25zdApAQCAtOTgsNyArOTgsNyBAQCBTdHJpbmcgSFRNTEZv
cm1Db250cm9sRWxlbWVudDo6Zm9ybU1ldGhvZCgpIGNvbnN0CiAKIHZvaWQgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6c2V0Rm9ybU1ldGhvZChjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHNl
dEF0dHJpYnV0ZShmb3JtbWV0aG9kQXR0ciwgdmFsdWUpOworICAgIHNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oZm9ybW1ldGhvZEF0dHIsIHZhbHVlKTsKIH0KIAogYm9vbCBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Ojpmb3JtTm9WYWxpZGF0ZSgpIGNvbnN0CkBAIC01ODAsNyArNTgw
LDcgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdXRvY29ycmVjdCgpIGNvbnN0CiAK
IHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0QXV0b2NvcnJlY3QoYm9vbCBhdXRvY29y
cmVjdCkKIHsKLSAgICBzZXRBdHRyaWJ1dGUoYXV0b2NvcnJlY3RBdHRyLCBhdXRvY29ycmVjdCA/
IEF0b21pY1N0cmluZygib24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSA6
IEF0b21pY1N0cmluZygib2ZmIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvcnJlY3RBdHRy
LCBhdXRvY29ycmVjdCA/IEF0b21pY1N0cmluZygib24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSA6IEF0b21pY1N0cmluZygib2ZmIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwogfQogCiBXZWJBdXRvY2FwaXRhbGl6ZVR5cGUgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6YXV0b2NhcGl0YWxpemVUeXBlKCkgY29uc3QKQEAgLTYwMCw3ICs2MDAsNyBA
QCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF1dG9jYXBpdGFs
aXplKCkgY29uc3QKIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRBdXRvY2FwaXRh
bGl6ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIHNldEF0dHJpYnV0ZShhdXRv
Y2FwaXRhbGl6ZUF0dHIsIHZhbHVlKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGF1dG9jYXBpdGFsaXplQXR0ciwgdmFsdWUpOwogfQogCiAjZW5kaWYKQEAgLTYyMSw3
ICs2MjEsNyBAQCBTdHJpbmcgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0b2NvbXBsZXRlKCkg
Y29uc3QKIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRBdXRvY29tcGxldGUoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUoYXV0b2NvbXBsZXRlQXR0ciwg
dmFsdWUpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvbXBs
ZXRlQXR0ciwgdmFsdWUpOwogfQogCiBBdXRvZmlsbE1hbnRsZSBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjphdXRvZmlsbE1hbnRsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5jcHAKaW5kZXggN2U2NGUwMjA4OTJjOWQzZDRlY2YwMjQyMmNiYjk2YTczOGYzOWYzOS4u
ZWFmYjk5NzI2OTc1ODRlMGJiZTFjMWMxYzkxMWU2NWNmNmVkZjk0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtNDA2LDcgKzQwNiw3IEBAIGJvb2wgSFRNTEZv
cm1FbGVtZW50OjphdXRvY29ycmVjdCgpIGNvbnN0CiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50Ojpz
ZXRBdXRvY29ycmVjdChib29sIGF1dG9jb3JyZWN0KQogewotICAgIHNldEF0dHJpYnV0ZShhdXRv
Y29ycmVjdEF0dHIsIGF1dG9jb3JyZWN0ID8gQXRvbWljU3RyaW5nKCJvbiIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpIDogQXRvbWljU3RyaW5nKCJvZmYiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihhdXRvY29ycmVjdEF0dHIsIGF1dG9jb3JyZWN0ID8gQXRvbWljU3RyaW5nKCJv
biIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpIDogQXRvbWljU3RyaW5nKCJv
ZmYiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiB9CiAKIFdlYkF1dG9j
YXBpdGFsaXplVHlwZSBIVE1MRm9ybUVsZW1lbnQ6OmF1dG9jYXBpdGFsaXplVHlwZSgpIGNvbnN0
CkBAIC00MjEsNyArNDIxLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRm9ybUVsZW1lbnQ6
OmF1dG9jYXBpdGFsaXplKCkgY29uc3QKIAogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnNldEF1dG9j
YXBpdGFsaXplKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgc2V0QXR0cmlidXRl
KGF1dG9jYXBpdGFsaXplQXR0ciwgdmFsdWUpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oYXV0b2NhcGl0YWxpemVBdHRyLCB2YWx1ZSk7CiB9CiAKICNlbmRpZgpAQCAt
Njg3LDEyICs2ODcsMTIgQEAgU3RyaW5nIEhUTUxGb3JtRWxlbWVudDo6YWN0aW9uKCkgY29uc3QK
IAogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnNldEFjdGlvbihjb25zdCBTdHJpbmcgJnZhbHVlKQog
ewotICAgIHNldEF0dHJpYnV0ZShhY3Rpb25BdHRyLCB2YWx1ZSk7CisgICAgc2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihhY3Rpb25BdHRyLCB2YWx1ZSk7CiB9CiAKIHZvaWQgSFRN
TEZvcm1FbGVtZW50OjpzZXRFbmN0eXBlKGNvbnN0IFN0cmluZyAmdmFsdWUpCiB7Ci0gICAgc2V0
QXR0cmlidXRlKGVuY3R5cGVBdHRyLCB2YWx1ZSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihlbmN0eXBlQXR0ciwgdmFsdWUpOwogfQogCiBTdHJpbmcgSFRNTEZvcm1F
bGVtZW50OjptZXRob2QoKSBjb25zdApAQCAtNzAyLDEyICs3MDIsMTIgQEAgU3RyaW5nIEhUTUxG
b3JtRWxlbWVudDo6bWV0aG9kKCkgY29uc3QKIAogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnNldE1l
dGhvZChjb25zdCBTdHJpbmcgJnZhbHVlKQogewotICAgIHNldEF0dHJpYnV0ZShtZXRob2RBdHRy
LCB2YWx1ZSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtZXRob2RB
dHRyLCB2YWx1ZSk7CiB9CiAKIFN0cmluZyBIVE1MRm9ybUVsZW1lbnQ6OnRhcmdldCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGdldEF0dHJpYnV0ZSh0YXJnZXRBdHRyKTsKKyAgICByZXR1cm4gZmFz
dEdldEF0dHJpYnV0ZSh0YXJnZXRBdHRyKTsKIH0KIAogYm9vbCBIVE1MRm9ybUVsZW1lbnQ6Ondh
c1VzZXJTdWJtaXR0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAKaW5kZXggMzZlM2NkZTY5NDZkZDkzNzFjZDMwODdhZjg2YzU1ZjAwNTUyOWIyOS4uNTYz
YjliODhiNGZiNmViYWNlY2ZlMjc1MTYyMzgzNDRmMjRhZTEwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0zNzUsNyArMzc1LDcgQEAgaW50IEhUTUxJbWFn
ZUVsZW1lbnQ6OndpZHRoKGJvb2wgaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKQogICAgIGlmICgh
cmVuZGVyZXIoKSkgewogICAgICAgICAvLyBjaGVjayB0aGUgYXR0cmlidXRlIGZpcnN0IGZvciBh
biBleHBsaWNpdCBwaXhlbCB2YWx1ZQogICAgICAgICBib29sIG9rOwotICAgICAgICBpbnQgd2lk
dGggPSBnZXRBdHRyaWJ1dGUod2lkdGhBdHRyKS50b0ludCgmb2spOworICAgICAgICBpbnQgd2lk
dGggPSBmYXN0R2V0QXR0cmlidXRlKHdpZHRoQXR0cikudG9JbnQoJm9rKTsKICAgICAgICAgaWYg
KG9rKQogICAgICAgICAgICAgcmV0dXJuIHdpZHRoOwogCkBAIC00MDEsNyArNDAxLDcgQEAgaW50
IEhUTUxJbWFnZUVsZW1lbnQ6OmhlaWdodChib29sIGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykK
ICAgICBpZiAoIXJlbmRlcmVyKCkpIHsKICAgICAgICAgLy8gY2hlY2sgdGhlIGF0dHJpYnV0ZSBm
aXJzdCBmb3IgYW4gZXhwbGljaXQgcGl4ZWwgdmFsdWUKICAgICAgICAgYm9vbCBvazsKLSAgICAg
ICAgaW50IGhlaWdodCA9IGdldEF0dHJpYnV0ZShoZWlnaHRBdHRyKS50b0ludCgmb2spOworICAg
ICAgICBpbnQgaGVpZ2h0ID0gZmFzdEdldEF0dHJpYnV0ZShoZWlnaHRBdHRyKS50b0ludCgmb2sp
OwogICAgICAgICBpZiAob2spCiAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0OwogCkBAIC01MDcs
NyArNTA3LDcgQEAgVVJMIEhUTUxJbWFnZUVsZW1lbnQ6OnNyYygpIGNvbnN0CiAKIHZvaWQgSFRN
TEltYWdlRWxlbWVudDo6c2V0U3JjKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgc2V0QXR0
cmlidXRlKHNyY0F0dHIsIHZhbHVlKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKHNyY0F0dHIsIHZhbHVlKTsKIH0KIAogdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRX
aWR0aChpbnQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApp
bmRleCAzNGI0Y2NjYWVkN2I5ZjM1OGE5NzM2ODllM2IwNzZhYjU3YWU1N2UwLi5mZjYwY2IzMDVj
ZGRiNDdjOGE2N2Q0YjMxODg3OGI4NTk3YTE2YTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKQEAgLTQ0MSw3ICs0NDEsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OmhhbmRsZUJsdXJFdmVudCgpCiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0VHlwZShj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCiB7Ci0gICAgc2V0QXR0cmlidXRlKHR5cGVBdHRyLCB0
eXBlKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCB0
eXBlKTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKQEAgLTQ1Niw3
ICs0NTYsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUoKQogICAgIGlmICho
YWRUeXBlICYmICFuZXdUeXBlLT5jYW5DaGFuZ2VGcm9tQW5vdGhlclR5cGUoKSkgewogICAgICAg
ICAvLyBTZXQgdGhlIGF0dHJpYnV0ZSBiYWNrIHRvIHRoZSBvbGQgdmFsdWUuCiAgICAgICAgIC8v
IFVzZWZ1bCBpbiBjYXNlIHdlIHdlcmUgY2FsbGVkIGZyb20gaW5zaWRlIHBhcnNlQXR0cmlidXRl
LgotICAgICAgICBzZXRBdHRyaWJ1dGUodHlwZUF0dHIsIHR5cGUoKSk7CisgICAgICAgIHNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHlwZUF0dHIsIHR5cGUoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTQ3OCw3ICs0NzgsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OnVwZGF0ZVR5cGUoKQogICAgIGJvb2wgd2lsbFN0b3JlVmFsdWUgPSBtX2lucHV0VHlwZS0+
c3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKTsKIAogICAgIGlmIChkaWRTdG9yZVZh
bHVlICYmICF3aWxsU3RvcmVWYWx1ZSAmJiBoYXNEaXJ0eVZhbHVlKCkpIHsKLSAgICAgICAgc2V0
QXR0cmlidXRlKHZhbHVlQXR0ciwgbV92YWx1ZUlmRGlydHkpOworICAgICAgICBzZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHZhbHVlQXR0ciwgbV92YWx1ZUlmRGlydHkpOwogICAg
ICAgICBtX3ZhbHVlSWZEaXJ0eSA9IFN0cmluZygpOwogICAgIH0KICAgICBpZiAoIWRpZFN0b3Jl
VmFsdWUgJiYgd2lsbFN0b3JlVmFsdWUpIHsKQEAgLTgwOCw3ICs4MDgsNyBAQCBTdHJpbmcgSFRN
TElucHV0RWxlbWVudDo6YWx0VGV4dCgpIGNvbnN0CiAgICAgU3RyaW5nIGFsdCA9IGZhc3RHZXRB
dHRyaWJ1dGUoYWx0QXR0cik7CiAgICAgLy8gZmFsbCBiYWNrIHRvIHRpdGxlIGF0dHJpYnV0ZQog
ICAgIGlmIChhbHQuaXNOdWxsKCkpCi0gICAgICAgIGFsdCA9IGdldEF0dHJpYnV0ZSh0aXRsZUF0
dHIpOworICAgICAgICBhbHQgPSBmYXN0R2V0QXR0cmlidXRlKHRpdGxlQXR0cik7CiAgICAgaWYg
KGFsdC5pc051bGwoKSkKICAgICAgICAgYWx0ID0gZmFzdEdldEF0dHJpYnV0ZSh2YWx1ZUF0dHIp
OwogICAgIGlmIChhbHQuaXNFbXB0eSgpKQpAQCAtMTIwNyw3ICsxMjA3LDcgQEAgU3RyaW5nIEhU
TUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRWYWx1ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6c2V0RGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyAmdmFsdWUpCiB7Ci0gICAgc2V0QXR0
cmlidXRlKHZhbHVlQXR0ciwgdmFsdWUpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24odmFsdWVBdHRyLCB2YWx1ZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1JG
QzI2MTZUb2tlbkNoYXJhY3RlcihVQ2hhciBjaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcAppbmRleCA1NTFjZTc2ZmNkY2U1NWQ1OGU3ODM3N2E1ZjZkZWI3MGNlMjJiNDA1
Li44YjhkODE1YTVlNjIwZjdkMmZkZWU5ODZiOGNiZDM5NmVlY2MyNTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBIVE1M
TGlua0VsZW1lbnQ6OmhhbmRsZUNsaWNrKEV2ZW50JiBldmVudCkKIAogVVJMIEhUTUxMaW5rRWxl
bWVudDo6aHJlZigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwo
Z2V0QXR0cmlidXRlKGhyZWZBdHRyKSk7CisgICAgcmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVV
UkwoZmFzdEdldEF0dHJpYnV0ZShocmVmQXR0cikpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IEhUTUxMaW5rRWxlbWVudDo6cmVsKCkgY29uc3QKQEAgLTQ4OCwxMiArNDg4LDEyIEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgSFRNTExpbmtFbGVtZW50OjpyZWwoKSBjb25zdAogCiBTdHJpbmcgSFRN
TExpbmtFbGVtZW50Ojp0YXJnZXQoKSBjb25zdAogewotICAgIHJldHVybiBnZXRBdHRyaWJ1dGUo
dGFyZ2V0QXR0cik7CisgICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUodGFyZ2V0QXR0cik7CiB9
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTExpbmtFbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKHR5cGVBdHRyKTsKKyAgICByZXR1cm4gZmFzdEdldEF0
dHJpYnV0ZSh0eXBlQXR0cik7CiB9CiAKIE9wdGlvbmFsPExpbmtJY29uVHlwZT4gSFRNTExpbmtF
bGVtZW50OjppY29uVHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAppbmRleCA0MGUyMjlmZDBkYzkwMDMxZmExNjBiZjFjNzU4OTIwNmFiNGQ4NGEzLi41
ZjhkOGJiODhjODQ5ZmQwN2E2NzhhNjQ5ODRhZmQyYjRiZjU4MGNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTk5Niw3ICs5OTYsNyBAQCBNZWRpYUVycm9y
KiBIVE1MTWVkaWFFbGVtZW50OjplcnJvcigpIGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0U3JjKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIHNldEF0dHJpYnV0ZShzcmNBdHRy
LCB1cmwpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwg
dXJsKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC0zMDQ3LDcgKzMwNDcsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFByZWxvYWQoY29uc3QgU3RyaW5nJiBwcmVsb2Fk
KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgIHNldEF0dHJpYnV0ZShwcmVsb2FkQXR0
ciwgcHJlbG9hZCk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihwcmVs
b2FkQXR0ciwgcHJlbG9hZCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheShQbGF5
UHJvbWlzZSYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZXRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNw
cAppbmRleCA1ZjYwMTlkYmIwZWQ0NWIwYzMwMjUwMTEwNzdiOTc5NWE1NjRhOTNmLi5kYTI3NmE0
NmMzNmU4OTA5ZjMzMmUxODU0ZWJkYjcxYzI2NDdjNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1ldGVyRWxlbWVudC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBIVE1MTWV0ZXJFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHIKIAogZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6Om1pbigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7
CisgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGZhc3RHZXRBdHRyaWJ1dGUo
bWluQXR0ciksIDApOwogfQogCiB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnNldE1pbihkb3VibGUg
bWluLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTg5LDEyICs4OSwxMiBAQCB2b2lkIEhUTUxNZXRl
ckVsZW1lbnQ6OnNldE1pbihkb3VibGUgbWluLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzZXRB
dHRyaWJ1dGUobWluQXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIobWluKSk7CisgICAgc2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtaW5BdHRyLCBBdG9taWNTdHJpbmc6Om51bWJl
cihtaW4pKTsKIH0KIAogZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6Om1heCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWF4KHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGdldEF0dHJpYnV0
ZShtYXhBdHRyKSwgc3RkOjptYXgoMS4wLCBtaW4oKSkpLCBtaW4oKSk7CisgICAgcmV0dXJuIHN0
ZDo6bWF4KHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0
ciksIHN0ZDo6bWF4KDEuMCwgbWluKCkpKSwgbWluKCkpOwogfQogCiB2b2lkIEhUTUxNZXRlckVs
ZW1lbnQ6OnNldE1heChkb3VibGUgbWF4LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTEwMywxMiAr
MTAzLDEyIEBAIHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6c2V0TWF4KGRvdWJsZSBtYXgsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIHNldEF0dHJpYnV0ZShtYXhBdHRyLCBBdG9taWNTdHJpbmc6Om51
bWJlcihtYXgpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1heEF0
dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKG1heCkpOwogfQogCiBkb3VibGUgSFRNTE1ldGVyRWxl
bWVudDo6dmFsdWUoKSBjb25zdAogewotICAgIGRvdWJsZSB2YWx1ZSA9IHBhcnNlVG9Eb3VibGVG
b3JOdW1iZXJUeXBlKGdldEF0dHJpYnV0ZSh2YWx1ZUF0dHIpLCAwKTsKKyAgICBkb3VibGUgdmFs
dWUgPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShmYXN0R2V0QXR0cmlidXRlKHZhbHVlQXR0
ciksIDApOwogICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heCh2YWx1ZSwgbWluKCkpLCBtYXgo
KSk7CiB9CiAKQEAgLTExOCwxMiArMTE4LDEyIEBAIHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6c2V0
VmFsdWUoZG91YmxlIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgZWMgPSBOT1Rf
U1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzZXRBdHRyaWJ1dGUo
dmFsdWVBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcih2YWx1ZSkpOworICAgIHNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odmFsdWVBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcih2
YWx1ZSkpOwogfQogCiBkb3VibGUgSFRNTE1ldGVyRWxlbWVudDo6bG93KCkgY29uc3QKIHsKLSAg
ICBkb3VibGUgbG93ID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKGxv
d0F0dHIpLCBtaW4oKSk7CisgICAgZG91YmxlIGxvdyA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJU
eXBlKGZhc3RHZXRBdHRyaWJ1dGUobG93QXR0ciksIG1pbigpKTsKICAgICByZXR1cm4gc3RkOjpt
aW4oc3RkOjptYXgobG93LCBtaW4oKSksIG1heCgpKTsKIH0KIApAQCAtMTMzLDEyICsxMzMsMTIg
QEAgdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpzZXRMb3coZG91YmxlIGxvdywgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgc2V0QXR0cmlidXRlKGxvd0F0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKGxv
dykpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obG93QXR0ciwgQXRv
bWljU3RyaW5nOjpudW1iZXIobG93KSk7CiB9CiAKIGRvdWJsZSBIVE1MTWV0ZXJFbGVtZW50Ojpo
aWdoKCkgY29uc3QKIHsKLSAgICBkb3VibGUgaGlnaCA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJU
eXBlKGdldEF0dHJpYnV0ZShoaWdoQXR0ciksIG1heCgpKTsKKyAgICBkb3VibGUgaGlnaCA9IHBh
cnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGZhc3RHZXRBdHRyaWJ1dGUoaGlnaEF0dHIpLCBtYXgo
KSk7CiAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KGhpZ2gsIGxvdygpKSwgbWF4KCkpOwog
fQogCkBAIC0xNDgsMTIgKzE0OCwxMiBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnNldEhpZ2go
ZG91YmxlIGhpZ2gsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBlYyA9IE5PVF9TVVBQT1JU
RURfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHNldEF0dHJpYnV0ZShoaWdoQXR0
ciwgQXRvbWljU3RyaW5nOjpudW1iZXIoaGlnaCkpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oaGlnaEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKGhpZ2gpKTsKIH0K
IAogZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6Om9wdGltdW0oKSBjb25zdAogewotICAgIGRvdWJs
ZSBvcHRpbXVtID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKG9wdGlt
dW1BdHRyKSwgKG1heCgpICsgbWluKCkpIC8gMik7CisgICAgZG91YmxlIG9wdGltdW0gPSBwYXJz
ZVRvRG91YmxlRm9yTnVtYmVyVHlwZShmYXN0R2V0QXR0cmlidXRlKG9wdGltdW1BdHRyKSwgKG1h
eCgpICsgbWluKCkpIC8gMik7CiAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KG9wdGltdW0s
IG1pbigpKSwgbWF4KCkpOwogfQogCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBIVE1MTWV0ZXJF
bGVtZW50OjpzZXRPcHRpbXVtKGRvdWJsZSBvcHRpbXVtLCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBzZXRBdHRyaWJ1dGUob3B0aW11bUF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKG9wdGltdW0p
KTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG9wdGltdW1BdHRyLCBB
dG9taWNTdHJpbmc6Om51bWJlcihvcHRpbXVtKSk7CiB9CiAKIEhUTUxNZXRlckVsZW1lbnQ6Okdh
dWdlUmVnaW9uIEhUTUxNZXRlckVsZW1lbnQ6OmdhdWdlUmVnaW9uKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggMWFmMDg4MWRmZWE1Mzk0MTc3
ZWI1NmI5NThkNGQ0NDM4OTIyNWMwMy4uZWQzZjQ0MDdhZDdjMTQ2ZmIxMjg1YmM2ZDMzODNmYjMy
Nzc1MjExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAg
LTQ3MCwxMiArNDcwLDEyIEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZURvY05hbWVk
SXRlbSgpCiAKIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6OmNvbnRhaW5zSmF2YUFwcGxldCgpIGNv
bnN0CiB7Ci0gICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1JTUVUeXBlKGdl
dEF0dHJpYnV0ZSh0eXBlQXR0cikpKQorICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFB
cHBsZXRNSU1FVHlwZShmYXN0R2V0QXR0cmlidXRlKHR5cGVBdHRyKSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+
KCp0aGlzKSkgewogICAgICAgICBpZiAoY2hpbGQuaGFzVGFnTmFtZShwYXJhbVRhZykgJiYgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY2hpbGQuZ2V0TmFtZUF0dHJpYnV0ZSgpLCAidHlw
ZSIpCi0gICAgICAgICAgICAmJiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlw
ZShjaGlsZC5nZXRBdHRyaWJ1dGUodmFsdWVBdHRyKS5zdHJpbmcoKSkpCisgICAgICAgICAgICAm
JiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShjaGlsZC5mYXN0R2V0QXR0
cmlidXRlKHZhbHVlQXR0cikuc3RyaW5nKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIGlmIChjaGlsZC5oYXNUYWdOYW1lKG9iamVjdFRhZykgJiYgZG93bmNhc3Q8SFRNTE9i
amVjdEVsZW1lbnQ+KGNoaWxkKS5jb250YWluc0phdmFBcHBsZXQoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAppbmRl
eCA4MmZjZGMwMTkwYmQ1MTllNzYxMzllYzMzY2Q1YjhmYzgzNjljM2UxLi5jNzljY2ExODYzNTRi
OTAzZGVlNmFiZDM2NTYxMDc4M2FiYzcyMWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25FbGVtZW50LmNwcApAQCAtODEsNyArODEsNyBAQCBSZWZQdHI8SFRNTE9wdGlvbkVsZW1l
bnQ+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50JiBk
bwogICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIGVsZW1lbnQtPnNldFZhbHVlKHZh
bHVlKTsKICAgICBpZiAoZGVmYXVsdFNlbGVjdGVkKQotICAgICAgICBlbGVtZW50LT5zZXRBdHRy
aWJ1dGUoc2VsZWN0ZWRBdHRyLCBlbXB0eUF0b20pOworICAgICAgICBlbGVtZW50LT5zZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNlbGVjdGVkQXR0ciwgZW1wdHlBdG9tKTsKICAg
ICBlbGVtZW50LT5zZXRTZWxlY3RlZChzZWxlY3RlZCk7CiAKICAgICByZXR1cm4gV1RGTW92ZShl
bGVtZW50KTsKQEAgLTIwMiw3ICsyMDIsNyBAQCBTdHJpbmcgSFRNTE9wdGlvbkVsZW1lbnQ6OnZh
bHVlKCkgY29uc3QKIAogdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0VmFsdWUoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUodmFsdWVBdHRyLCB2YWx1ZSk7CisgICAg
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih2YWx1ZUF0dHIsIHZhbHVlKTsKIH0K
IAogYm9vbCBIVE1MT3B0aW9uRWxlbWVudDo6c2VsZWN0ZWQoKQpAQCAtMjgwLDcgKzI4MCw3IEBA
IFN0cmluZyBIVE1MT3B0aW9uRWxlbWVudDo6bGFiZWwoKSBjb25zdAogCiB2b2lkIEhUTUxPcHRp
b25FbGVtZW50OjpzZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIHNldEF0dHJp
YnV0ZShsYWJlbEF0dHIsIGxhYmVsKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGxhYmVsQXR0ciwgbGFiZWwpOwogfQogCiB2b2lkIEhUTUxPcHRpb25FbGVtZW50Ojp3
aWxsUmVzZXRDb21wdXRlZFN0eWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFByb2dyZXNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVz
c0VsZW1lbnQuY3BwCmluZGV4IDM1NGI4MjdlYjI4YTA4MTI1MTIwOGNjNDM2NWE4YTM3NTdhZDZi
NjAuLjhlYWEwNjNmYmU3MTE2YzE5N2U1ZDVkMDQ2NTYzM2U5YTAxZDdmZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBA
IHZvaWQgSFRNTFByb2dyZXNzRWxlbWVudDo6c2V0VmFsdWUoZG91YmxlIHZhbHVlLCBFeGNlcHRp
b25Db2RlJiBlYykKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBzZXRBdHRyaWJ1dGUodmFsdWVBdHRyLCBBdG9taWNTdHJpbmc6Om51
bWJlcih2YWx1ZSA+PSAwID8gdmFsdWUgOiAwKSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbih2YWx1ZUF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKHZhbHVlID49IDAg
PyB2YWx1ZSA6IDApKTsKIH0KIAogZG91YmxlIEhUTUxQcm9ncmVzc0VsZW1lbnQ6Om1heCgpIGNv
bnN0CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBIVE1MUHJvZ3Jlc3NFbGVtZW50OjpzZXRNYXgo
ZG91YmxlIG1heCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2V0QXR0cmlidXRlKG1heEF0dHIs
IEF0b21pY1N0cmluZzo6bnVtYmVyKG1heCA+IDAgPyBtYXggOiAxKSk7CisgICAgc2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtYXhBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlciht
YXggPiAwID8gbWF4IDogMSkpOwogfQogCiBkb3VibGUgSFRNTFByb2dyZXNzRWxlbWVudDo6cG9z
aXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcApp
bmRleCAzYjEwZDY3YWMzNWUyNDgzOGEyOTVjMTc2M2U1ZmE2YTg1YzM0YTNkLi4yZjNjN2Q2M2Yx
YTk0NDNlN2M0ZTA0ZDZkOWZkMzc3N2NkYzk3MGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTY3JpcHRFbGVtZW50LmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIFN0cmluZyBIVE1MU2NyaXB0
RWxlbWVudDo6Y2hhcnNldEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKIAogU3RyaW5nIEhUTUxTY3Jp
cHRFbGVtZW50Ojp0eXBlQXR0cmlidXRlVmFsdWUoKSBjb25zdAogewotICAgIHJldHVybiBnZXRB
dHRyaWJ1dGUodHlwZUF0dHIpLnN0cmluZygpOworICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRl
KHR5cGVBdHRyKS5zdHJpbmcoKTsKIH0KIAogU3RyaW5nIEhUTUxTY3JpcHRFbGVtZW50OjpsYW5n
dWFnZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5jcHAKaW5kZXggY2MzYmZlMjU2ZjJiODNhMGI5ZDQzMzRiZjUwMDUwOGI4ZTYwYjI3
Zi4uYTQ1OTkzMjkzZDAxYzA5MmE0NDdiODUzNGFhMWRjZjA4ZWE4NzE5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lk
IEhUTUxTZWxlY3RFbGVtZW50OjpzZXRNdWx0aXBsZShib29sIG11bHRpcGxlKQogewogICAgIGJv
b2wgb2xkTXVsdGlwbGUgPSB0aGlzLT5tdWx0aXBsZSgpOwogICAgIGludCBvbGRTZWxlY3RlZElu
ZGV4ID0gc2VsZWN0ZWRJbmRleCgpOwotICAgIHNldEF0dHJpYnV0ZShtdWx0aXBsZUF0dHIsIG11
bHRpcGxlID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KG11bHRpcGxlQXR0ciwgbXVsdGlwbGUgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7CiAKICAgICAv
LyBSZXN0b3JlIHNlbGVjdGVkSW5kZXggYWZ0ZXIgY2hhbmdpbmcgdGhlIG11bHRpcGxlIGZsYWcg
dG8gcHJlc2VydmUKICAgICAvLyBzZWxlY3Rpb24gYXMgc2luZ2xlLWxpbmUgYW5kIG11bHRpLWxp
bmUgaGFzIGRpZmZlcmVudCBkZWZhdWx0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNl
RWxlbWVudC5jcHAKaW5kZXggNWE0MjhiMmIxN2FiN2I3MzA1N2NmNjU1ZjA1MDMwZTRlYTBkM2Q3
Yi4uMWU3MmU0MWNhZTNhODM3NmYyM2Y0Y2M5NzVlNGIzN2JjNDRkODFiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKQEAgLTkxLDI3ICs5MSwyNyBAQCB2b2lk
IEhUTUxTb3VyY2VFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiByZW1vdmFsUm9v
dCkKIAogdm9pZCBIVE1MU291cmNlRWxlbWVudDo6c2V0U3JjKGNvbnN0IFN0cmluZyYgdXJsKQog
ewotICAgIHNldEF0dHJpYnV0ZShzcmNBdHRyLCB1cmwpOworICAgIHNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgdXJsKTsKIH0KIAogU3RyaW5nIEhUTUxTb3VyY2VF
bGVtZW50OjptZWRpYSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEF0dHJpYnV0ZShtZWRpYUF0
dHIpOworICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKG1lZGlhQXR0cik7CiB9CiAKIHZvaWQg
SFRNTFNvdXJjZUVsZW1lbnQ6OnNldE1lZGlhKGNvbnN0IFN0cmluZyYgbWVkaWEpCiB7Ci0gICAg
c2V0QXR0cmlidXRlKG1lZGlhQXR0ciwgbWVkaWEpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24obWVkaWFBdHRyLCBtZWRpYSk7CiB9CiAKIFN0cmluZyBIVE1MU291cmNl
RWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEF0dHJpYnV0ZSh0eXBlQXR0
cik7CisgICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUodHlwZUF0dHIpOwogfQogCiB2b2lkIEhU
TUxTb3VyY2VFbGVtZW50OjpzZXRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBzZXRB
dHRyaWJ1dGUodHlwZUF0dHIsIHR5cGUpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24odHlwZUF0dHIsIHR5cGUpOwogfQogCiB2b2lkIEhUTUxTb3VyY2VFbGVtZW50Ojpz
Y2hlZHVsZUVycm9yRXZlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVTZWN0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50LmNwcAppbmRleCBjYTMwZWQyN2NmMWY5MTVkODgzMGI4NmNmOTIxOTFmN2Uz
YjU2YmEzLi4wYWE1YmU3MmY5ZDBhOTZhZTA4ZWM4NTYwZWYxYzczNzhiNGQ4MDEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcApAQCAtMTE3
LDcgKzExNyw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6
OmFsaWduKCkgY29uc3QKIAogdm9pZCBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6c2V0QWxpZ24o
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUoYWxpZ25BdHRy
LCB2YWx1ZSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhbGlnbkF0
dHIsIHZhbHVlKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MVGFibGVTZWN0aW9uRWxl
bWVudDo6Y2goKSBjb25zdApAQCAtMTI3LDE3ICsxMjcsMTcgQEAgY29uc3QgQXRvbWljU3RyaW5n
JiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6Y2goKSBjb25zdAogCiB2b2lkIEhUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50OjpzZXRDaChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIHNl
dEF0dHJpYnV0ZShjaGFyQXR0ciwgdmFsdWUpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oY2hhckF0dHIsIHZhbHVlKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBI
VE1MVGFibGVTZWN0aW9uRWxlbWVudDo6Y2hPZmYoKSBjb25zdAogewotICAgIHJldHVybiBnZXRB
dHRyaWJ1dGUoY2hhcm9mZkF0dHIpOworICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKGNoYXJv
ZmZBdHRyKTsKIH0KIAogdm9pZCBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6c2V0Q2hPZmYoY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUoY2hhcm9mZkF0dHIs
IHZhbHVlKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNoYXJvZmZB
dHRyLCB2YWx1ZSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQ6OnZBbGlnbigpIGNvbnN0CkBAIC0xNDcsNyArMTQ3LDcgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6dkFsaWduKCkgY29uc3QKIAogdm9pZCBIVE1M
VGFibGVTZWN0aW9uRWxlbWVudDo6c2V0VkFsaWduKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CiB7Ci0gICAgc2V0QXR0cmlidXRlKHZhbGlnbkF0dHIsIHZhbHVlKTsKKyAgICBzZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHZhbGlnbkF0dHIsIHZhbHVlKTsKIH0KIAogUmVmPEhU
TUxDb2xsZWN0aW9uPiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93cygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDg0
ODM5NTYwMzU3YzM4NTE2N2EyODhjMDQ5ZGZjYjE5N2VkNDI4NDMuLjIzOGVmMWE5OTBlZTU3NmFk
MzAzYmYyYzFjMmVhM2MyYmY1YzQ2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cmVhZE9ubHlBdHRyaWJ1dGVDaGFuZ2VkKCkKIHZv
aWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0
YWJpbGl0eSgpCiB7CiAgICAgaWYgKFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCogaW5uZXJU
ZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpKQotICAgICAgICBpbm5lclRleHQtPnNldEF0dHJpYnV0
ZShjb250ZW50ZWRpdGFibGVBdHRyLCBpc0Rpc2FibGVkT3JSZWFkT25seSgpID8gImZhbHNlIiA6
ICJwbGFpbnRleHQtb25seSIpOworICAgICAgICBpbm5lclRleHQtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oY29udGVudGVkaXRhYmxlQXR0ciwgaXNEaXNhYmxlZE9yUmVhZE9u
bHkoKSA/ICJmYWxzZSIgOiAicGxhaW50ZXh0LW9ubHkiKTsKIH0KIAogYm9vbCBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6bGFzdENoYW5nZVdhc1VzZXJFZGl0KCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDM1NjE0NzljOWM4ZTE3YWYxMGE0
ZjhlZGYyZjQ0N2MwYTAzOTA3YzguLmUwMzdkOWI1ZWRlMzZmOTBkY2NkNjEyNDM3ZTkyMmExM2Iy
NzZlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMjEz
LDcgKzIxMyw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFZp
ZGVvRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdXJsID0gZ2V0QXR0cmlidXRlKHBvc3RlckF0dHIpOworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdXJsID0gZmFzdEdldEF0dHJpYnV0ZShwb3N0ZXJBdHRyKTsKICAgICBpZiAoIXN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmwpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHVybDsKICAgICByZXR1cm4gbV9kZWZhdWx0UG9zdGVyVVJMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IaWRkZW5JbnB1dFR5cGUuY3BwCmluZGV4IGU2ZjczMmYwMDAyNWY4ZjllODM4ZDliZWJlODJk
NWZlYWIyZWQ5ZmEuLjIxZTBhMTJjOThlNzFjNjZhYmI1Y2MyNTQ4Yzg4Y2YxMmZjNjQ4MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAg
Rm9ybUNvbnRyb2xTdGF0ZSBIaWRkZW5JbnB1dFR5cGU6OnNhdmVGb3JtQ29udHJvbFN0YXRlKCkg
Y29uc3QKIAogdm9pZCBIaWRkZW5JbnB1dFR5cGU6OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNv
bnN0IEZvcm1Db250cm9sU3RhdGUmIHN0YXRlKQogewotICAgIGVsZW1lbnQoKS5zZXRBdHRyaWJ1
dGUodmFsdWVBdHRyLCBzdGF0ZVswXSk7CisgICAgZWxlbWVudCgpLnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24odmFsdWVBdHRyLCBzdGF0ZVswXSk7CiB9CiAKIGJvb2wgSGlkZGVu
SW5wdXRUeXBlOjpzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdApAQCAtODksNyArODksNyBAQCBi
b29sIEhpZGRlbklucHV0VHlwZTo6c3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKQog
CiB2b2lkIEhpZGRlbklucHV0VHlwZTo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiBzYW5pdGl6ZWRW
YWx1ZSwgYm9vbCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikKIHsKLSAgICBlbGVtZW50KCkuc2V0
QXR0cmlidXRlKHZhbHVlQXR0ciwgc2FuaXRpemVkVmFsdWUpOworICAgIGVsZW1lbnQoKS5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHZhbHVlQXR0ciwgc2FuaXRpemVkVmFsdWUp
OwogfQogCiBib29sIEhpZGRlbklucHV0VHlwZTo6aXNIaWRkZW5UeXBlKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCmluZGV4IGQ4NDI5NmQyMjE5YjJhNmU4MGZmNjcz
MTBlOGQ1ZGI0YjUyYmQ2MDQuLjIzNGM0OTFkMzAwNjE0YWY3ZDY2NmZiNzZlMmU5YjNjN2ZlNjZk
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcApAQCAtOTIsOCArOTIsOCBA
QCB2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAg
ICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoaGVhZEVsZW1lbnQsIElHTk9SRV9FWENFUFRJT04p
OwogCiAgICAgYXV0byBtZXRhRWxlbWVudCA9IGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQobWV0
YVRhZywgZmFsc2UpOwotICAgIG1ldGFFbGVtZW50LT5zZXRBdHRyaWJ1dGUobmFtZUF0dHIsICJ2
aWV3cG9ydCIpOwotICAgIG1ldGFFbGVtZW50LT5zZXRBdHRyaWJ1dGUoY29udGVudEF0dHIsICJ3
aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xLHVzZXItc2NhbGFibGU9bm8iKTsKKyAg
ICBtZXRhRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihuYW1lQXR0
ciwgQXRvbWljU3RyaW5nKCJ2aWV3cG9ydCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBtZXRhRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihjb250ZW50QXR0ciwgQXRvbWljU3RyaW5nKCJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlh
bC1zY2FsZT0xLHVzZXItc2NhbGFibGU9bm8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CiAgICAgaGVhZEVsZW1lbnQtPmFwcGVuZENoaWxkKG1ldGFFbGVtZW50LCBJR05P
UkVfRVhDRVBUSU9OKTsKICNlbmRpZgogCkBAIC0xMDMsMTAgKzEwMywxMCBAQCB2b2lkIE1lZGlh
RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICBhdXRvIG1lZGlh
RWxlbWVudCA9IGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQodmlkZW9UYWcsIGZhbHNlKTsKIAog
ICAgIG1fbWVkaWFFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4obWVkaWFFbGVt
ZW50LnB0cigpKTsKLSAgICBtX21lZGlhRWxlbWVudC0+c2V0QXR0cmlidXRlKGNvbnRyb2xzQXR0
ciwgZW1wdHlBdG9tKTsKLSAgICBtX21lZGlhRWxlbWVudC0+c2V0QXR0cmlidXRlKGF1dG9wbGF5
QXR0ciwgZW1wdHlBdG9tKTsKKyAgICBtX21lZGlhRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihjb250cm9sc0F0dHIsIGVtcHR5QXRvbSk7CisgICAgbV9tZWRpYUVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b3BsYXlBdHRyLCBl
bXB0eUF0b20pOwogCi0gICAgbV9tZWRpYUVsZW1lbnQtPnNldEF0dHJpYnV0ZShuYW1lQXR0ciwg
Im1lZGlhIik7CisgICAgbV9tZWRpYUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24obmFtZUF0dHIsIEF0b21pY1N0cmluZygibWVkaWEiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGVsZW1lbnRTdHlsZTsK
ICAgICBlbGVtZW50U3R5bGUuYXBwZW5kTGl0ZXJhbCgibWF4LXdpZHRoOiAxMDAlOyBtYXgtaGVp
Z2h0OiAxMDAlOyIpOwpAQCAtMjM3LDIyICsyMzcsMjIgQEAgdm9pZCBNZWRpYURvY3VtZW50Ojpy
ZXBsYWNlTWVkaWFFbGVtZW50VGltZXJGaXJlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IFNldCBib2R5IG1hcmdpbiB3aWR0aCBhbmQgaGVpZ2h0IHRvIDAgYXMgdGhhdCBpcyB3aGF0IGEg
UGx1Z2luRG9jdW1lbnQgdXNlcy4KLSAgICBodG1sQm9keS0+c2V0QXR0cmlidXRlKG1hcmdpbndp
ZHRoQXR0ciwgIjAiKTsKLSAgICBodG1sQm9keS0+c2V0QXR0cmlidXRlKG1hcmdpbmhlaWdodEF0
dHIsICIwIik7CisgICAgaHRtbEJvZHktPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24obWFyZ2lud2lkdGhBdHRyLCBBdG9taWNTdHJpbmcoIjAiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgaHRtbEJvZHktPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24obWFyZ2luaGVpZ2h0QXR0ciwgQXRvbWljU3RyaW5nKCIwIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogCiAgICAgaWYgKEhUTUxWaWRlb0VsZW1lbnQq
IHZpZGVvRWxlbWVudCA9IGRlc2NlbmRhbnRWaWRlb0VsZW1lbnQoKmh0bWxCb2R5KSkgewogICAg
ICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGVt
YmVkVGFnLCBmYWxzZSk7CiAgICAgICAgIEhUTUxFbWJlZEVsZW1lbnQmIGVtYmVkRWxlbWVudCA9
IGRvd25jYXN0PEhUTUxFbWJlZEVsZW1lbnQ+KCplbGVtZW50KTsKIAotICAgICAgICBlbWJlZEVs
ZW1lbnQuc2V0QXR0cmlidXRlKHdpZHRoQXR0ciwgIjEwMCUiKTsKLSAgICAgICAgZW1iZWRFbGVt
ZW50LnNldEF0dHJpYnV0ZShoZWlnaHRBdHRyLCAiMTAwJSIpOwotICAgICAgICBlbWJlZEVsZW1l
bnQuc2V0QXR0cmlidXRlKG5hbWVBdHRyLCAicGx1Z2luIik7Ci0gICAgICAgIGVtYmVkRWxlbWVu
dC5zZXRBdHRyaWJ1dGUoc3JjQXR0ciwgdXJsKCkuc3RyaW5nKCkpOworICAgICAgICBlbWJlZEVs
ZW1lbnQuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3aWR0aEF0dHIsIEF0b21p
Y1N0cmluZygiMTAwJSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICAgICAgZW1iZWRFbGVtZW50LnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaGVp
Z2h0QXR0ciwgQXRvbWljU3RyaW5nKCIxMDAlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgICAgICBlbWJlZEVsZW1lbnQuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihuYW1lQXR0ciwgQXRvbWljU3RyaW5nKCJwbHVnaW4iLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIGVtYmVkRWxlbWVudC5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIHVybCgpLnN0cmluZygpKTsKIAogICAg
ICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXIoKTsKICAgICAgICAg
QVNTRVJUKGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgaWYgKGRvY3VtZW50TG9hZGVyKQotICAg
ICAgICAgICAgZW1iZWRFbGVtZW50LnNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgZG9jdW1lbnRMb2Fk
ZXItPndyaXRlcigpLm1pbWVUeXBlKCkpOworICAgICAgICAgICAgZW1iZWRFbGVtZW50LnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHlwZUF0dHIsIGRvY3VtZW50TG9hZGVyLT53
cml0ZXIoKS5taW1lVHlwZSgpKTsKIAogICAgICAgICB2aWRlb0VsZW1lbnQtPnBhcmVudE5vZGUo
KS0+cmVwbGFjZUNoaWxkKGVtYmVkRWxlbWVudCwgKnZpZGVvRWxlbWVudCwgSUdOT1JFX0VYQ0VQ
VElPTik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcAppbmRleCA1
ZjUxMmVhMjQ0NzRhZDRjYjFkMDRjNmMxZjVjN2FjZjExMjJjNTE3Li4yOThkN2QwOGZlYWQzNDJi
MTU5NzhkZmQxNTgyZDRkZTA1ZmJjNDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1BsdWdpbkRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3Vt
ZW50LmNwcApAQCAtODAsOCArODAsOCBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjpjcmVh
dGVEb2N1bWVudFN0cnVjdHVyZSgpCiAjZW5kaWYKIAogICAgIGF1dG8gYm9keSA9IGRvY3VtZW50
KCktPmNyZWF0ZUVsZW1lbnQoYm9keVRhZywgZmFsc2UpOwotICAgIGJvZHktPnNldEF0dHJpYnV0
ZShtYXJnaW53aWR0aEF0dHIsIEF0b21pY1N0cmluZygiMCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKLSAgICBib2R5LT5zZXRBdHRyaWJ1dGUobWFyZ2luaGVpZ2h0QXR0
ciwgQXRvbWljU3RyaW5nKCIwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIGJvZHktPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWFyZ2lud2lk
dGhBdHRyLCBBdG9taWNTdHJpbmcoIjAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgYm9keS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtYXJn
aW5oZWlnaHRBdHRyLCBBdG9taWNTdHJpbmcoIjAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvZHktPnNldEF0dHJpYnV0ZShz
dHlsZUF0dHIsIEF0b21pY1N0cmluZygiYmFja2dyb3VuZC1jb2xvcjogcmdiKDIxNywyMjQsMjMz
KSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICNlbHNlCkBAIC05Mywx
NiArOTMsMTYgQEAgdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1
Y3R1cmUoKQogICAgIGF1dG8gZW1iZWRFbGVtZW50ID0gZG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVu
dChlbWJlZFRhZywgZmFsc2UpOwogICAgICAgICAKICAgICBtX2VtYmVkRWxlbWVudCA9IGRvd25j
YXN0PEhUTUxFbWJlZEVsZW1lbnQ+KGVtYmVkRWxlbWVudC5wdHIoKSk7Ci0gICAgbV9lbWJlZEVs
ZW1lbnQtPnNldEF0dHJpYnV0ZSh3aWR0aEF0dHIsICIxMDAlIik7Ci0gICAgbV9lbWJlZEVsZW1l
bnQtPnNldEF0dHJpYnV0ZShoZWlnaHRBdHRyLCAiMTAwJSIpOworICAgIG1fZW1iZWRFbGVtZW50
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHdpZHRoQXR0ciwgQXRvbWljU3Ry
aW5nKCIxMDAlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIG1f
ZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhlaWdodEF0
dHIsIEF0b21pY1N0cmluZygiMTAwJSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKICAgICAKLSAgICBtX2VtYmVkRWxlbWVudC0+c2V0QXR0cmlidXRlKG5hbWVBdHRyLCAi
cGx1Z2luIik7Ci0gICAgbV9lbWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0ZShzcmNBdHRyLCBkb2N1
bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgbV9lbWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obmFtZUF0dHIsIEF0b21pY1N0cmluZygicGx1Z2luIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIG1fZW1iZWRFbGVtZW50
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIGRvY3VtZW50KCkt
PnVybCgpLnN0cmluZygpKTsKICAgICAKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZG9j
dW1lbnQoKS0+bG9hZGVyKCk7CiAgICAgQVNTRVJUKGxvYWRlcik7CiAgICAgaWYgKGxvYWRlcikK
LSAgICAgICAgbV9lbWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgbG9hZGVyLT53
cml0ZXIoKS5taW1lVHlwZSgpKTsKKyAgICAgICAgbV9lbWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHlwZUF0dHIsIGxvYWRlci0+d3JpdGVyKCkubWltZVR5
cGUoKSk7CiAKICAgICBkb3duY2FzdDxQbHVnaW5Eb2N1bWVudD4oKmRvY3VtZW50KCkpLnNldFBs
dWdpbkVsZW1lbnQobV9lbWJlZEVsZW1lbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHAKaW5kZXggMjY2ODgxMzkxOGRmNmUxZGU3ZDU5Mzg3MzY4YTEyOGMz
YjE5MmQ4Zi4uNjc0NTBmNzEzNmU2MmI2MmY1OTY3MjVhYmNmM2Q0MGQwY2VhZjk3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNjY0LDggKzY2NCw4
IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVBdXRvRmlsbEJ1dHRvbihBdXRvRmls
bEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25UCiAKICAgICBtX2F1dG9GaWxsQnV0dG9uID0gQXV0
b0ZpbGxCdXR0b25FbGVtZW50OjpjcmVhdGUoZWxlbWVudCgpLmRvY3VtZW50KCksICp0aGlzKTsK
ICAgICBtX2F1dG9GaWxsQnV0dG9uLT5zZXRQc2V1ZG8oYXV0b0ZpbGxCdXR0b25UeXBlVG9BdXRv
RmlsbEJ1dHRvblBzZXVkb0NsYXNzTmFtZShhdXRvRmlsbEJ1dHRvblR5cGUpKTsKLSAgICBtX2F1
dG9GaWxsQnV0dG9uLT5zZXRBdHRyaWJ1dGUocm9sZUF0dHIsICJidXR0b24iKTsKLSAgICBtX2F1
dG9GaWxsQnV0dG9uLT5zZXRBdHRyaWJ1dGUoYXJpYV9sYWJlbEF0dHIsIGF1dG9GaWxsQnV0dG9u
VHlwZVRvQWNjZXNzaWJpbGl0eUxhYmVsKGF1dG9GaWxsQnV0dG9uVHlwZSkpOworICAgIG1fYXV0
b0ZpbGxCdXR0b24tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocm9sZUF0dHIs
IEF0b21pY1N0cmluZygiYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIG1fYXV0b0ZpbGxCdXR0b24tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oYXJpYV9sYWJlbEF0dHIsIGF1dG9GaWxsQnV0dG9uVHlwZVRvQWNjZXNzaWJpbGl0eUxh
YmVsKGF1dG9GaWxsQnV0dG9uVHlwZSkpOwogICAgIG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZCgq
bV9hdXRvRmlsbEJ1dHRvbiwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKQEAgLTY4Miw3ICs2ODIs
NyBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlQXV0b0ZpbGxCdXR0b24oKQogICAg
ICAgICBib29sIHNob3VsZFVwZGF0ZUF1dG9GaWxsQnV0dG9uVHlwZSA9IGlzQXV0b0ZpbGxCdXR0
b25UeXBlQ2hhbmdlZChhdHRyaWJ1dGUsIGVsZW1lbnQoKS5hdXRvRmlsbEJ1dHRvblR5cGUoKSk7
CiAgICAgICAgIGlmIChzaG91bGRVcGRhdGVBdXRvRmlsbEJ1dHRvblR5cGUpIHsKICAgICAgICAg
ICAgIG1fYXV0b0ZpbGxCdXR0b24tPnNldFBzZXVkbyhhdXRvRmlsbEJ1dHRvblR5cGVUb0F1dG9G
aWxsQnV0dG9uUHNldWRvQ2xhc3NOYW1lKGVsZW1lbnQoKS5hdXRvRmlsbEJ1dHRvblR5cGUoKSkp
OwotICAgICAgICAgICAgbV9hdXRvRmlsbEJ1dHRvbi0+c2V0QXR0cmlidXRlKGFyaWFfbGFiZWxB
dHRyLCBhdXRvRmlsbEJ1dHRvblR5cGVUb0FjY2Vzc2liaWxpdHlMYWJlbChlbGVtZW50KCkuYXV0
b0ZpbGxCdXR0b25UeXBlKCkpKTsKKyAgICAgICAgICAgIG1fYXV0b0ZpbGxCdXR0b24tPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9sYWJlbEF0dHIsIGF1dG9GaWxsQnV0
dG9uVHlwZVRvQWNjZXNzaWJpbGl0eUxhYmVsKGVsZW1lbnQoKS5hdXRvRmlsbEJ1dHRvblR5cGUo
KSkpOwogICAgICAgICB9CiAgICAgICAgIG1fYXV0b0ZpbGxCdXR0b24tPnNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUJsb2NrLCB0cnVlKTsKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRy
ZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5jcHAKaW5kZXggOWYwMmJiZDg4MzhlYmVhZjliNDc2NTJkZThiOWQ2OGM2MTgzZTIwMS4uN2Nk
NmM1ZDAzZWNiNTcxZjdlMmE0NTA2ZDkzOTRlZmJlYzUzOTEzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NJc2luZGV4U3RhcnRUYWdGb3JJbkJvZHkoQXRv
bWljSFRNTFRva2VuJiB0b2tlbikKICAgICBub3RJbXBsZW1lbnRlZCgpOyAvLyBBY2tub3dsZWRn
ZSBzZWxmLWNsb3NpbmcgZmxhZwogICAgIHByb2Nlc3NGYWtlU3RhcnRUYWcoZm9ybVRhZyk7CiAg
ICAgaWYgKEF0dHJpYnV0ZSogYWN0aW9uQXR0cmlidXRlID0gZmluZEF0dHJpYnV0ZSh0b2tlbi5h
dHRyaWJ1dGVzKCksIGFjdGlvbkF0dHIpKQotICAgICAgICBtX3RyZWUuZm9ybSgpLT5zZXRBdHRy
aWJ1dGUoYWN0aW9uQXR0ciwgYWN0aW9uQXR0cmlidXRlLT52YWx1ZSgpKTsKKyAgICAgICAgbV90
cmVlLmZvcm0oKS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhY3Rpb25BdHRy
LCBhY3Rpb25BdHRyaWJ1dGUtPnZhbHVlKCkpOwogICAgIHByb2Nlc3NGYWtlU3RhcnRUYWcoaHJU
YWcpOwogICAgIHByb2Nlc3NGYWtlU3RhcnRUYWcobGFiZWxUYWcpOwogICAgIGlmIChBdHRyaWJ1
dGUqIHByb21wdEF0dHJpYnV0ZSA9IGZpbmRBdHRyaWJ1dGUodG9rZW4uYXR0cmlidXRlcygpLCBw
cm9tcHRBdHRyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAppbmRleCAxYTllZDMzYzYzNzc1MDBmMDFlZmRlMDJhZmJmNjA1ZWE2
M2RiZTIwLi5iZWE2ZjA2YmM2N2Y0NTdmOTdkMzQ0YjY5M2E0YmUxMzc3YjI0NjkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
CkBAIC02NTYsNyArNjU2LDcgQEAgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJF
bGVtZW50OjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckUKIFJlZjxNZWRpYUNv
bnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbENsb3NlZENh
cHRpb25zQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAg
ICBSZWY8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50PiBlbGVtZW50
ID0gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1l
bnQoZG9jdW1lbnQpKTsKLSAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoZGlyQXR0ciwgImF1dG8i
KTsKKyAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRpckF0
dHIsIEF0b21pY1N0cmluZygiYXV0byIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKICAgICBlbGVtZW50LT5oaWRlKCk7CiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CkBAIC04
MzgsNyArODM4LDcgQEAgUmVmPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gTWVkaWFDb250
cm9sVGltZWxpbmVFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGQKICAgICBSZWY8TWVkaWFDb250
cm9sVGltZWxpbmVFbGVtZW50PiB0aW1lbGluZSA9IGFkb3B0UmVmKCpuZXcgTWVkaWFDb250cm9s
VGltZWxpbmVFbGVtZW50KGRvY3VtZW50LCBjb250cm9scykpOwogICAgIHRpbWVsaW5lLT5lbnN1
cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CiAgICAgdGltZWxpbmUtPnNldFR5cGUoInJhbmdlIik7
Ci0gICAgdGltZWxpbmUtPnNldEF0dHJpYnV0ZShwcmVjaXNpb25BdHRyLCAiZmxvYXQiKTsKKyAg
ICB0aW1lbGluZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihwcmVjaXNpb25B
dHRyLCBBdG9taWNTdHJpbmcoImZsb2F0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwogICAgIHJldHVybiB0aW1lbGluZTsKIH0KIApAQCAtOTA0LDggKzkwNCw4IEBAIFJl
ZjxNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFBhbmVs
Vm9sdW1lU2xpZGVyRWxlbWVudDo6CiAgICAgUmVmPE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xp
ZGVyRWxlbWVudD4gc2xpZGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYUNvbnRyb2xQYW5lbFZvbHVt
ZVNsaWRlckVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBzbGlkZXItPmVuc3VyZVVzZXJBZ2VudFNo
YWRvd1Jvb3QoKTsKICAgICBzbGlkZXItPnNldFR5cGUoInJhbmdlIik7Ci0gICAgc2xpZGVyLT5z
ZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciwgImZsb2F0Iik7Ci0gICAgc2xpZGVyLT5zZXRBdHRy
aWJ1dGUobWF4QXR0ciwgIjEiKTsKKyAgICBzbGlkZXItPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24ocHJlY2lzaW9uQXR0ciwgQXRvbWljU3RyaW5nKCJmbG9hdCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzbGlkZXItPnNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24obWF4QXR0ciwgQXRvbWljU3RyaW5nKCIxIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHJldHVybiBzbGlkZXI7CiB9CiAKQEAg
LTkyMiw4ICs5MjIsOCBAQCBSZWY8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVs
ZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZQogICAgIFJlZjxNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudD4gc2xpZGVyID0gYWRvcHRSZWYoKm5l
dyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChkb2N1bWVudCkpOwog
ICAgIHNsaWRlci0+ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIHNsaWRlci0+c2V0
VHlwZSgicmFuZ2UiKTsKLSAgICBzbGlkZXItPnNldEF0dHJpYnV0ZShwcmVjaXNpb25BdHRyLCAi
ZmxvYXQiKTsKLSAgICBzbGlkZXItPnNldEF0dHJpYnV0ZShtYXhBdHRyLCAiMSIpOworICAgIHNs
aWRlci0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihwcmVjaXNpb25BdHRyLCBB
dG9taWNTdHJpbmcoImZsb2F0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHNsaWRlci0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtYXhBdHRy
LCBBdG9taWNTdHJpbmcoIjEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CiAgICAgcmV0dXJuIHNsaWRlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggOWZjOGRhMmExOTQ2
NjAyNGUzNTNiNmQ0MTBlMGJjYzZmY2EwNmVkYS4uYzAyMzI5ZTkzNGJmMjVjMGVmOWI0YzI4NmE1
ZThmNGQ5ZGUzOWY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0yMTIsOSArMjEyLDkgQEAgaW5saW5l
IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25F
bGVtZW50KERvY3VtZW50JgogewogICAgIHNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQt
c2VhcmNoLWNhbmNlbC1idXR0b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICBzZXRBdHRyaWJ1dGUoYXJpYV9sYWJlbEF0dHIs
IEFYU2VhcmNoRmllbGRDYW5jZWxCdXR0b25UZXh0KCkpOworICAgIHNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oYXJpYV9sYWJlbEF0dHIsIEFYU2VhcmNoRmllbGRDYW5jZWxCdXR0
b25UZXh0KCkpOwogI2VuZGlmCi0gICAgc2V0QXR0cmlidXRlKHJvbGVBdHRyLCBBdG9taWNTdHJp
bmcoImJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBz
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJvbGVBdHRyLCBBdG9taWNTdHJpbmco
ImJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIH0KIAogUmVm
PFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudD4gU2VhcmNoRmllbGRDYW5jZWxCdXR0b25F
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVu
dE1hYy5jcHAKaW5kZXggMjEyMzY4ZmQxMjI1MWRlYzlhMGU4OTg0ODc5NmJhNGU3NTRkY2MwZS4u
MWRmMzgzZDZiNGYyYjdkY2E2MGNlNGNkOGZlOTc0ZjVjMjI0YTNkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1
dHRvbkVsZW1lbnRNYWMuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFJlZlB0cjxJbWFnZUNvbnRyb2xz
QnV0dG9uRWxlbWVudE1hYz4gSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OnRyeUNyZWF0
ZShECiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBidXR0b24gPSBhZG9wdFJl
ZigqbmV3IEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjKGRvY3VtZW50KSk7Ci0gICAgYnV0
dG9uLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJ4LXdlYmtpdC1pbWFnZS1j
b250cm9scy1idXR0b24iKTsKKyAgICBidXR0b24tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21pY1N0cmluZygieC13ZWJraXQtaW1h
Z2UtY29udHJvbHMtYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OwogCiAgICAgSW50U2l6ZSBwb3NpdGlvbk9mZnNldCA9IGRvY3VtZW50LnBhZ2UoKS0+dGhlbWUo
KS5pbWFnZUNvbnRyb2xzQnV0dG9uUG9zaXRpb25PZmZzZXQoKTsKICAgICBidXR0b24tPnNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHBvc2l0aW9uT2Zmc2V0LmhlaWdodCgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAK
aW5kZXggZGM1ZThjMzA0MWI0ZDRiZjg1OWZmYWI1MTRkNmM1YzhjMmMwMTRkYy4uZjQ3OWQyODgw
ODAxMjQ0ZGZmODdkYjczN2IyODFhZGNmYjk0NjZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1h
Yy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgUmVmUHRyPEltYWdlQ29udHJvbHNSb290RWxlbWVudD4g
SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50Ojp0cnlDcmVhdGUoRG9jdW1lbnQmIGQKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWY8SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjPiBj
b250cm9scyA9IGFkb3B0UmVmKCpuZXcgSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjKGRvY3Vt
ZW50KSk7Ci0gICAgY29udHJvbHMtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwg
Ingtd2Via2l0LWltYWdlLWNvbnRyb2xzIik7CisgICAgY29udHJvbHMtPnNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21pY1N0cmluZygi
eC13ZWJraXQtaW1hZ2UtY29udHJvbHMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CiAKICAgICBpZiAoUmVmUHRyPEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjPiBi
dXR0b24gPSBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6dHJ5Q3JlYXRlKGRvY3VtZW50
KSkKICAgICAgICAgY29udHJvbHMtPmFwcGVuZENoaWxkKCpidXR0b24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKaW5kZXggMDdkYTUxMjFjZDg3MWYzMDY2
MzI4NWY5MmU3NTZhYmZmZTVjZjM5OC4uMzk1OTEzNTk0Yjc5MGI1ZmIzZTEwZWQ1MjI1OWYyYzEw
YzJiYmE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3Bw
CkBAIC05Niw4ICs5Niw4IEBAIFJlZjxIVE1MRWxlbWVudD4gV2ViVlRURWxlbWVudDo6Y3JlYXRl
RXF1aXZhbGVudEhUTUxFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICBjYXNlIFdlYlZU
VE5vZGVUeXBlTGFuZ3VhZ2U6CiAgICAgY2FzZSBXZWJWVFROb2RlVHlwZVZvaWNlOgogICAgICAg
ICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChIVE1MTmFt
ZXM6OnNwYW5UYWcsIGRvY3VtZW50KTsKLSAgICAgICAgaHRtbEVsZW1lbnQtPnNldEF0dHJpYnV0
ZShIVE1MTmFtZXM6OnRpdGxlQXR0ciwgZ2V0QXR0cmlidXRlKHZvaWNlQXR0cmlidXRlTmFtZSgp
KSk7Ci0gICAgICAgIGh0bWxFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpsYW5nQXR0
ciwgZ2V0QXR0cmlidXRlKGxhbmdBdHRyaWJ1dGVOYW1lKCkpKTsKKyAgICAgICAgaHRtbEVsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp0aXRsZUF0
dHIsIGZhc3RHZXRBdHRyaWJ1dGUodm9pY2VBdHRyaWJ1dGVOYW1lKCkpKTsKKyAgICAgICAgaHRt
bEVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjps
YW5nQXR0ciwgZmFzdEdldEF0dHJpYnV0ZShsYW5nQXR0cmlidXRlTmFtZSgpKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVJdGFsaWM6CiAgICAgICAgIGh0bWxFbGVt
ZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6aVRhZywg
ZG9jdW1lbnQpOwpAQCAtMTE4LDcgKzExOCw3IEBAIFJlZjxIVE1MRWxlbWVudD4gV2ViVlRURWxl
bWVudDo6Y3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKIAog
ICAgIEFTU0VSVChodG1sRWxlbWVudCk7CiAgICAgaWYgKGh0bWxFbGVtZW50KQotICAgICAgICBo
dG1sRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBmYXN0R2V0QXR0
cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyKSk7CisgICAgICAgIGh0bWxFbGVtZW50LT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBmYXN0
R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyKSk7CiAgICAgcmV0dXJuIGh0bWxFbGVt
ZW50LnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRUUGFyc2VyLmNwcAppbmRleCBmZmYwNDU2NGU5ZTIzOWRjOTJkNTZlOGU0YjNmMjRiYWUyODc1
MGIwLi4zZjc4NWY4ZjM4NjlkMmYzMTM5MzNjMjc0MjUyZDExMzFkNTFmMGYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC01NTEsMTMgKzU1MSwxMyBA
QCB2b2lkIFdlYlZUVFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50
JiBkb2N1bWVudCkKIAogICAgICAgICBhdXRvIGNoaWxkID0gV2ViVlRURWxlbWVudDo6Y3JlYXRl
KG5vZGVUeXBlLCBkb2N1bWVudCk7CiAgICAgICAgIGlmICghbV90b2tlbi5jbGFzc2VzKCkuaXNF
bXB0eSgpKQotICAgICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIG1fdG9r
ZW4uY2xhc3NlcygpKTsKKyAgICAgICAgICAgIGNoaWxkLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGNsYXNzQXR0ciwgbV90b2tlbi5jbGFzc2VzKCkpOwogCiAgICAgICAgIGlm
IChub2RlVHlwZSA9PSBXZWJWVFROb2RlVHlwZVZvaWNlKQotICAgICAgICAgICAgY2hpbGQtPnNl
dEF0dHJpYnV0ZShXZWJWVFRFbGVtZW50Ojp2b2ljZUF0dHJpYnV0ZU5hbWUoKSwgbV90b2tlbi5h
bm5vdGF0aW9uKCkpOworICAgICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oV2ViVlRURWxlbWVudDo6dm9pY2VBdHRyaWJ1dGVOYW1lKCksIG1fdG9rZW4u
YW5ub3RhdGlvbigpKTsKICAgICAgICAgZWxzZSBpZiAobm9kZVR5cGUgPT0gV2ViVlRUTm9kZVR5
cGVMYW5ndWFnZSkgewogICAgICAgICAgICAgbV9sYW5ndWFnZVN0YWNrLmFwcGVuZChtX3Rva2Vu
LmFubm90YXRpb24oKSk7Ci0gICAgICAgICAgICBjaGlsZC0+c2V0QXR0cmlidXRlKFdlYlZUVEVs
ZW1lbnQ6OmxhbmdBdHRyaWJ1dGVOYW1lKCksIG1fbGFuZ3VhZ2VTdGFjay5sYXN0KCkpOworICAg
ICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViVlRU
RWxlbWVudDo6bGFuZ0F0dHJpYnV0ZU5hbWUoKSwgbV9sYW5ndWFnZVN0YWNrLmxhc3QoKSk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCFtX2xhbmd1YWdlU3RhY2suaXNFbXB0eSgpKQogICAgICAg
ICAgICAgY2hpbGQtPnNldExhbmd1YWdlKG1fbGFuZ3VhZ2VTdGFjay5sYXN0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggYzdjNmQ2
ZjRlNjk3MGVhYTFkZWEzNTlmMWI3Y2U4NjhiMTVhNTlmMS4uMDIxZGNiZGY0MjU0YzZhNDQ2NGZk
NThjMzdmZGYzMTk1NDg2MWVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC03NzksNyArNzc5LDcgQEAgSW5zcGVjdG9yU3R5bGVTaGVl
dCogSW5zcGVjdG9yQ1NTQWdlbnQ6OmNyZWF0ZUluc3BlY3RvclN0eWxlU2hlZXRGb3JEb2N1bWVu
dChEb2MKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWY8RWxlbWVudD4gc3R5bGVF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChIVE1MTmFtZXM6OnN0eWxlVGFnLCBmYWxz
ZSk7Ci0gICAgc3R5bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0eXBlQXR0ciwg
InRleHQvY3NzIik7CisgICAgc3R5bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKEhUTUxOYW1lczo6dHlwZUF0dHIsIEF0b21pY1N0cmluZygidGV4dC9jc3MiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKICAgICBDb250YWluZXJOb2Rl
KiB0YXJnZXROb2RlOwogICAgIC8vIEhFQUQgaXMgYWJzZW50IGluIEltYWdlRG9jdW1lbnRzLCBm
b3IgZXhhbXBsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKaW5kZXggMTkzYjU5ODAwMzEyMTI5N2UxODViODg1OWI0MDc5MjgxZDI1M2NkNi4u
N2FiY2Y3Nzg2NjZlNjJlODI4MTA2N2FhMDFhZjdkOWM3NGFlNjc4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTkyNiw3ICs5MjYs
NyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IEluc3BlY3RvclBhZ2VB
Z2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZShGcgogICAgIGlmIChmcmFtZS0+b3duZXJFbGVtZW50
KCkpIHsKICAgICAgICAgU3RyaW5nIG5hbWUgPSBmcmFtZS0+b3duZXJFbGVtZW50KCktPmdldE5h
bWVBdHRyaWJ1dGUoKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bmFtZSA9IGZyYW1lLT5vd25lckVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aWRB
dHRyKTsKKyAgICAgICAgICAgIG5hbWUgPSBmcmFtZS0+b3duZXJFbGVtZW50KCktPmZhc3RHZXRB
dHRyaWJ1dGUoSFRNTE5hbWVzOjppZEF0dHIpOwogICAgICAgICBmcmFtZU9iamVjdC0+c2V0TmFt
ZShuYW1lKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RF
bGVtZW50LmNwcAppbmRleCA4MTA3MmFkNDQ0MTAxYjNjZjRjMjVkOWIwOGFmNmQ0ZDI0YmM2ODg0
Li41MzFmMmU3MjkzNjUzMWNhNDM3YjczODg2MTg0MzEwMWQ1OTdmZDA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0yMzgsNyArMjM4LDcg
QEAgdm9pZCBNYXRoTUxTZWxlY3RFbGVtZW50Ojp0b2dnbGUoKQogCiAgICAgLy8gV2UgdXBkYXRl
IHRoZSBhdHRyaWJ1dGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiBhdHRyaWJ1dGUuCiAgICAgLy8g
VGhpcyB3aWxsIGFsc28gY2FsbCBNYXRoTUxTZWxlY3RFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2Vk
IHRvIHVwZGF0ZSB0aGUgc2VsZWN0ZWQgY2hpbGQuCi0gICAgc2V0QXR0cmlidXRlKE1hdGhNTE5h
bWVzOjpzZWxlY3Rpb25BdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihuZXdTZWxlY3RlZENoaWxk
SW5kZXgpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKE1hdGhNTE5h
bWVzOjpzZWxlY3Rpb25BdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihuZXdTZWxlY3RlZENoaWxk
SW5kZXgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2Vy
aWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRl
eCBjMWM4ZDEwNWQwNGQyMGU1YTY1ODA0YWNlNjQ1ZGMwYWE0OWI1MjU5Li4wOTYyYTU1MjY4NzZl
ZDkyYzc4YzZkZGQ0ZTA2MDg4ODNkOTc0NWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlh
bGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgfSBlbHNlIGlmIChpczxIVE1MTGlua0Vs
ZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBIVE1MTGlua0VsZW1lbnQmIGxpbmtFbGVt
ZW50ID0gZG93bmNhc3Q8SFRNTExpbmtFbGVtZW50PihlbGVtZW50KTsKICAgICAgICAgICAgIGlm
IChDU1NTdHlsZVNoZWV0KiBzaGVldCA9IGxpbmtFbGVtZW50LnNoZWV0KCkpIHsKLSAgICAgICAg
ICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKGxpbmtFbGVtZW50LmdldEF0
dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyKSk7CisgICAgICAgICAgICAgICAgVVJMIHVybCA9
IGRvY3VtZW50LT5jb21wbGV0ZVVSTChsaW5rRWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKEhUTUxO
YW1lczo6aHJlZkF0dHIpKTsKICAgICAgICAgICAgICAgICBzZXJpYWxpemVDU1NTdHlsZVNoZWV0
KHNoZWV0LCB1cmwpOwogICAgICAgICAgICAgICAgIEFTU0VSVChtX3Jlc291cmNlVVJMcy5jb250
YWlucyh1cmwpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAppbmRleCA2OTU1ZDM0OTlmY2NhMGEwOTEzZjY0MGI0
NzQ5YTA5NGY4NjJkMjBkLi5jMWRkODBlMTRkNjAwNjg5NGRlOTVjYTVlZmFhMmNjYTFlNTMyYzgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIu
Y3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBSZW5kZXJEZXRhaWxzTWFya2VyOjppc09wZW4o
KSBjb25zdAogICAgICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgaWYgKGlzPEhUTUxEZXRhaWxzRWxlbWVudD4oKnJlbmRlcmVyLT5ub2Rl
KCkpKQotICAgICAgICAgICAgcmV0dXJuICFkb3duY2FzdDxIVE1MRGV0YWlsc0VsZW1lbnQ+KCpy
ZW5kZXJlci0+bm9kZSgpKS5nZXRBdHRyaWJ1dGUob3BlbkF0dHIpLmlzTnVsbCgpOworICAgICAg
ICAgICAgcmV0dXJuICFkb3duY2FzdDxIVE1MRGV0YWlsc0VsZW1lbnQ+KCpyZW5kZXJlci0+bm9k
ZSgpKS5mYXN0R2V0QXR0cmlidXRlKG9wZW5BdHRyKS5pc051bGwoKTsKICAgICAgICAgaWYgKGlz
PEhUTUxJbnB1dEVsZW1lbnQ+KCpyZW5kZXJlci0+bm9kZSgpKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA1YWE5MTdlYzBm
YjQwNTA2NWEyMzk0YWE1N2FkMmNiOWIwMDRkNDhlLi40MmM2Y2QxYWNiYzU2YjUzODhhMzMwOWE4
NTQzNTY4NTdmN2Q3ZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0zNzQsNyAr
Mzc0LDcgQEAgU3RyaW5nIFNWR0VsZW1lbnQ6OnhtbGJhc2UoKSBjb25zdAogCiB2b2lkIFNWR0Vs
ZW1lbnQ6OnNldFhtbGJhc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpCiB7
Ci0gICAgc2V0QXR0cmlidXRlKFhNTE5hbWVzOjpiYXNlQXR0ciwgdmFsdWUpOworICAgIHNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oWE1MTmFtZXM6OmJhc2VBdHRyLCB2YWx1ZSk7
CiB9CiAKIHZvaWQgU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgcm9vdFBh
cmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCA3ODhjMWZjNzFlZmVj
MTNiYzBkZmE3YjU5NDg2YTYxNWM3NjQ1MDI4Li40NTczNzljZTc0YzBmZjhiOGUwZGNiZGI3NDg2
NzgxZTRjNGFmMTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0xMDcs
NyArMTA3LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBTVkdTVkdFbGVtZW50Ojpjb250ZW50U2Ny
aXB0VHlwZSgpIGNvbnN0CiAKIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Q29udGVudFNjcmlwdFR5
cGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKQogewotICAgIHNldEF0dHJpYnV0ZShTVkdOYW1l
czo6Y29udGVudFNjcmlwdFR5cGVBdHRyLCB0eXBlKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpjb250ZW50U2NyaXB0VHlwZUF0dHIsIHR5cGUpOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1NWR0VsZW1lbnQ6OmNvbnRlbnRTdHlsZVR5cGUo
KSBjb25zdApAQCAtMTE5LDcgKzExOSw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU1ZHRWxl
bWVudDo6Y29udGVudFN0eWxlVHlwZSgpIGNvbnN0CiAKIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0
Q29udGVudFN0eWxlVHlwZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCiB7Ci0gICAgc2V0QXR0
cmlidXRlKFNWR05hbWVzOjpjb250ZW50U3R5bGVUeXBlQXR0ciwgdHlwZSk7CisgICAgc2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6Y29udGVudFN0eWxlVHlwZUF0
dHIsIHR5cGUpOwogfQogCiBGbG9hdFJlY3QgU1ZHU1ZHRWxlbWVudDo6dmlld3BvcnQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAppbmRleCAwNDVhZTZkMWZjZWNl
MjJhZDkyNzJkNGRkZWIzN2I4MDVkNWZlZjVhLi5jNWI3MGRiMjczMTBlN2Q3MDE0MWRjNmNmNzA3
NTE5NWMxMzIyYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcApAQCAt
ODEsNyArODEsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1N0eWxlRWxlbWVudDo6bWVkaWEo
KSBjb25zdAogCiB2b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0TWVkaWEoY29uc3QgQXRvbWljU3Ry
aW5nJiBtZWRpYSwgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgc2V0QXR0cmlidXRlKFNWR05hbWVz
OjptZWRpYUF0dHIsIG1lZGlhKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKFNWR05hbWVzOjptZWRpYUF0dHIsIG1lZGlhKTsKIH0KIAogU3RyaW5nIFNWR1N0eWxlRWxl
bWVudDo6dGl0bGUoKSBjb25zdApAQCAtOTEsNyArOTEsNyBAQCBTdHJpbmcgU1ZHU3R5bGVFbGVt
ZW50Ojp0aXRsZSgpIGNvbnN0CiAKIHZvaWQgU1ZHU3R5bGVFbGVtZW50OjpzZXRUaXRsZShjb25z
dCBBdG9taWNTdHJpbmcmIHRpdGxlLCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBzZXRBdHRyaWJ1
dGUoU1ZHTmFtZXM6OnRpdGxlQXR0ciwgdGl0bGUpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnRpdGxlQXR0ciwgdGl0bGUpOwogfQogCiB2b2lkIFNW
R1N0eWxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggYTQzNzg5MGQ0MGU3OGU3M2I2MWU3
MzAwODE1NTRmMWQ3M2RmOTlmMi4uYzQwNWQxNzIwNzY0OTlmODFkNjE1Y2NlYTM1ZmI3YmQ3OTQ1
MzE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW0KQEAgLTUyMCwxMSArNTIwLDExIEBAIHN0YXRpYyBOU1N0cmluZyogbWF0Y2hM
YWJlbHNBZ2FpbnN0RWxlbWVudChOU0FycmF5KiBsYWJlbHMsIEVsZW1lbnQqIGVsZW1lbnQpCiB7
CiAgICAgLy8gTWF0Y2ggYWdhaW5zdCB0aGUgbmFtZSBlbGVtZW50LCB0aGVuIGFnYWluc3QgdGhl
IGlkIGVsZW1lbnQgaWYgbm8gbWF0Y2ggaXMgZm91bmQgZm9yIHRoZSBuYW1lIGVsZW1lbnQuCiAg
ICAgLy8gU2VlIDc1MzgzMzAgZm9yIG9uZSBwb3B1bGFyIHNpdGUgdGhhdCBiZW5lZml0cyBmcm9t
IHRoZSBpZCBlbGVtZW50IGNoZWNrLgotICAgIFN0cmluZyByZXN1bHRGcm9tTmFtZUF0dHJpYnV0
ZSA9IG1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyhsYWJlbHMsIGVsZW1lbnQtPmdldEF0dHJpYnV0
ZShuYW1lQXR0cikpOworICAgIFN0cmluZyByZXN1bHRGcm9tTmFtZUF0dHJpYnV0ZSA9IG1hdGNo
TGFiZWxzQWdhaW5zdFN0cmluZyhsYWJlbHMsIGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUobmFt
ZUF0dHIpKTsKICAgICBpZiAoIXJlc3VsdEZyb21OYW1lQXR0cmlidXRlLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHJlc3VsdEZyb21OYW1lQXR0cmlidXRlOwogICAgIAotICAgIHJldHVybiBt
YXRjaExhYmVsc0FnYWluc3RTdHJpbmcobGFiZWxzLCBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoaWRB
dHRyKSk7CisgICAgcmV0dXJuIG1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyhsYWJlbHMsIGVsZW1l
bnQtPmZhc3RHZXRBdHRyaWJ1dGUoaWRBdHRyKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NSFRN
TENsYXNzZXMuY3BwCmluZGV4IGU0ODFkMGQxZGM4YmY1Zjg0ZTY3OWRjM2U2MGE2NGFiNjg5OWQ5
MjcuLjg1MjJlYzQxNzlmZTMwZGMxNmVkNDRjZjI4MjVjMzgyMmVhZDk2ZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKQEAgLTQyOSw3ICs0MjksNyBAQCBIUkVTVUxUIERPTUhU
TUxFbGVtZW50OjppZE5hbWUoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKICAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIEFTU0VSVChpczxIVE1MRWxlbWVudD4obV9lbGVtZW50
KSk7Ci0gICAgU3RyaW5nIGlkU3RyaW5nID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG1fZWxlbWVu
dCktPmdldEF0dHJpYnV0ZShpZEF0dHIpOworICAgIFN0cmluZyBpZFN0cmluZyA9IGRvd25jYXN0
PEhUTUxFbGVtZW50PihtX2VsZW1lbnQpLT5mYXN0R2V0QXR0cmlidXRlKGlkQXR0cik7CiAgICAg
KnJlc3VsdCA9IEJTdHJpbmcoaWRTdHJpbmcpLnJlbGVhc2UoKTsKICAgICByZXR1cm4gU19PSzsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVw
cmVjYXRlZFBERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQppbmRleCAxMjIzZjQ5YzUwODQ0MDdhNGQwOGZjMzUx
MWNhNDYyNWQyMDdlYjA4Li44YmIzZTNmMTFkMzk5YzVmM2JkMTBhZjljZTc1YTMzY2E4OWYxOTE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJl
Y2F0ZWRQREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tCkBAIC01MjMsNyArNTIzLDcgQEAgUERGUGx1Z2lu
OjpQREZQbHVnaW4oV2ViRnJhbWUqIGZyYW1lKQogICAgIGlmIChzdXBwb3J0c0Zvcm1zKCkpIHsK
ICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gd2ViRnJhbWUoKS0+Y29yZUZyYW1lKCktPmRv
Y3VtZW50KCk7CiAgICAgICAgIG1fYW5ub3RhdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LT5jcmVh
dGVFbGVtZW50KGRpdlRhZywgZmFsc2UpOwotICAgICAgICBtX2Fubm90YXRpb25Db250YWluZXIt
PnNldEF0dHJpYnV0ZShpZEF0dHIsICJhbm5vdGF0aW9uQ29udGFpbmVyIik7CisgICAgICAgIG1f
YW5ub3RhdGlvbkNvbnRhaW5lci0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihp
ZEF0dHIsIEF0b21pY1N0cmluZygiYW5ub3RhdGlvbkNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAogICAgICAgICBhdXRvIGFubm90YXRpb25TdHlsZUVs
ZW1lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChzdHlsZVRhZywgZmFsc2UpOwogICAgICAg
ICBhbm5vdGF0aW9uU3R5bGVFbGVtZW50LT5zZXRUZXh0Q29udGVudChhbm5vdGF0aW9uU3R5bGUs
IEFTU0VSVF9OT19FWENFUFRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCAxM2NlYmIyNjM4OGFmYjZlMjBjYjJiMGM0
MmRkNDg0MmIyN2FmMzEzLi5kYjRlYzNlNDEyOTlmNjkyOTYxZjc0ZGQyMTZjOTdjNmRhNDYxMjM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQpAQCAtNzk1LDcgKzc5NSw3IEBAIHZvaWQgUERGUGx1Z2luOjpjcmVhdGVQYXNzd29y
ZEVudHJ5Rm9ybSgpCiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJGcmFtZSgpLT5jb3Jl
RnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBtX3Bhc3N3b3JkQ29udGFpbmVyID0gZG9jdW1lbnQt
PmNyZWF0ZUVsZW1lbnQoZGl2VGFnLCBmYWxzZSk7Ci0gICAgbV9wYXNzd29yZENvbnRhaW5lci0+
c2V0QXR0cmlidXRlKGlkQXR0ciwgInBhc3N3b3JkQ29udGFpbmVyIik7CisgICAgbV9wYXNzd29y
ZENvbnRhaW5lci0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihpZEF0dHIsIEF0
b21pY1N0cmluZygicGFzc3dvcmRDb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CiAKICAgICBtX3Bhc3N3b3JkRmllbGQgPSBQREZQbHVnaW5QYXNzd29yZEZp
ZWxkOjpjcmVhdGUobV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCksIHRoaXMpOwogICAgIG1fcGFz
c3dvcmRGaWVsZC0+YXR0YWNoKG1fcGFzc3dvcmRDb250YWluZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0
aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5B
bm5vdGF0aW9uLm1tCmluZGV4IGQyMTRmYTQ1OWYyOWQwOTI1YTgzNjdjYzA4OTQxYzgzMmFmMmFi
YmUuLmE3MzIwMzM3MDRkMGE5YjBiNDZjZWFlODA4ZTkwMWRlMDM3MTFmY2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bkFubm90YXRpb24ubW0KQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBQREZQbHVnaW5Bbm5vdGF0aW9u
OjphdHRhY2goRWxlbWVudCogcGFyZW50KQogICAgIG1fcGFyZW50ID0gcGFyZW50OwogICAgIG1f
ZWxlbWVudCA9IGNyZWF0ZUFubm90YXRpb25FbGVtZW50KCk7CiAKLSAgICBtX2VsZW1lbnQtPnNl
dEF0dHJpYnV0ZShjbGFzc0F0dHIsICJhbm5vdGF0aW9uIik7CisgICAgbV9lbGVtZW50LT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJh
bm5vdGF0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIG1f
ZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQsICptX2V2
ZW50TGlzdGVuZXIsIGZhbHNlKTsKICAgICBtX2VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmJsdXJFdmVudCwgKm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2lj
ZUFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KaW5kZXggNTUwMTIzNGFmOTY0NjA1YWMwYTkzMDVj
ODVjMzRhMmQzOGMwNjU2Ni4uZjQ2YWYxNmY1NzFhOWUwNzUyZWMzZjZmZDBkMWMwMDczNGU0MmQ3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQpAQCAtODcsMTEgKzg3LDEx
IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y3JlYXRl
QW5ub3RhdGlvbkVsZW1lbnQoKQogCiAgICAgZm9yIChOU1N0cmluZyAqY2hvaWNlIGluIGNob2lj
ZXMpIHsKICAgICAgICAgYXV0byBjaG9pY2VPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KG9wdGlvblRhZywgZmFsc2UpOwotICAgICAgICBjaG9pY2VPcHRpb24tPnNldEF0dHJpYnV0ZSh2
YWx1ZUF0dHIsIGNob2ljZSk7CisgICAgICAgIGNob2ljZU9wdGlvbi0+c2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbih2YWx1ZUF0dHIsIGNob2ljZSk7CiAgICAgICAgIGNob2ljZU9w
dGlvbi0+c2V0VGV4dENvbnRlbnQoY2hvaWNlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAogICAg
ICAgICBpZiAoY2hvaWNlID09IHNlbGVjdGVkQ2hvaWNlKQotICAgICAgICAgICAgY2hvaWNlT3B0
aW9uLT5zZXRBdHRyaWJ1dGUoc2VsZWN0ZWRBdHRyLCAic2VsZWN0ZWQiKTsKKyAgICAgICAgICAg
IGNob2ljZU9wdGlvbi0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzZWxlY3Rl
ZEF0dHIsIEF0b21pY1N0cmluZygic2VsZWN0ZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CiAKICAgICAgICAgc3R5bGVkRWxlbWVudC0+YXBwZW5kQ2hpbGQoY2hvaWNl
T3B0aW9uKTsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>