<?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>211090</bug_id>
          
          <creation_ts>2020-04-27 13:11:19 -0700</creation_ts>
          <short_desc>Make HistoryController an inner class of FrameLoader</short_desc>
          <delta_ts>2020-04-28 02:12: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>New Bugs</component>
          <version>Safari Technology Preview</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Rob Buis">rbuis</reporter>
          <assigned_to name="Rob Buis">rbuis</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1646158</commentid>
    <comment_count>0</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-04-27 13:11:19 -0700</bug_when>
    <thetext>Make HistoryController an inner class of FrameLoader, this allows us to move some methods
only used by HistoryController out of the FrameLoader public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646160</commentid>
    <comment_count>1</comment_count>
      <attachid>397725</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-04-27 13:15:26 -0700</bug_when>
    <thetext>Created attachment 397725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646212</commentid>
    <comment_count>2</comment_count>
      <attachid>397725</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-04-27 14:24:31 -0700</bug_when>
    <thetext>Comment on attachment 397725
Patch

PTAL. If this kind of design is acceptable I&apos;d like to do the same for PolicyChecker and DocumentLoader, as especially the latter adds a lot of public API to FrameLoader that is only used by DocumentLoader, which could be made private. These classes all look tightly coupled to me BTW.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646215</commentid>
    <comment_count>3</comment_count>
      <attachid>397725</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-27 14:30:38 -0700</bug_when>
    <thetext>Comment on attachment 397725
Patch

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

&gt; Source/WebCore/loader/HistoryController.h:32
&gt; -#include &quot;FrameLoaderTypes.h&quot;
&gt; +#include &quot;FrameLoader.h&quot;

I’d think you could remove many of the includes below after making this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646416</commentid>
    <comment_count>4</comment_count>
      <attachid>397819</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-04-28 01:19:12 -0700</bug_when>
    <thetext>Created attachment 397819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646424</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-28 02:11:50 -0700</bug_when>
    <thetext>Committed r260812: &lt;https://trac.webkit.org/changeset/260812&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 397819.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646425</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-28 02:12:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/62499688&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397725</attachid>
            <date>2020-04-27 13:15:26 -0700</date>
            <delta_ts>2020-04-28 01:19:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211090-20200427221524.patch</filename>
            <type>text/plain</type>
            <size>20899</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzM1YmMxNThiMGExNGQ0
ZmVkZjU2ZTZmZDI3NjE4MmI4MDY2ODA3Ni4uODY4Zjc3OTcxZWVmYTcxNGEyNGQxMzcwYWE5Y2Uy
NjE3YjBlZThkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA0LTI3ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBIaXN0b3J5Q29udHJvbGxl
ciBhbiBpbm5lciBjbGFzcyBvZiBGcmFtZUxvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBIaXN0b3J5Q29udHJvbGxlciBhbiBpbm5lciBj
bGFzcyBvZiBGcmFtZUxvYWRlciwgdGhpcyBhbGxvd3MKKyAgICAgICAgdXMgdG8gbW92ZSBzb21l
IG1ldGhvZHMgb25seSB1c2VkIGJ5IEhpc3RvcnlDb250cm9sbGVyIG91dCBvZiB0aGUKKyAgICAg
ICAgRnJhbWVMb2FkZXIgcHVibGljIEFQSS4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAgICog
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmg6CisKIDIwMjAtMDQtMjcgIERhbmllbCBCYXRlcyAg
PGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIENhcmV0IG1heSBiZSBwbGFjZWQgaW4gdGhl
IHdyb25nIHNwb3QgZm9yIHRleHQgaW5wdXQgY29udGV4dCB0aGF0IGlzIGEgZm9ybSBjb250cm9s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDg1MWFhZDNlNDZhYTVjZTkyNzU0
YTk4Mzg1Mjk0NDFhMzVhNjQ3ZDIuLjIxM2EwNzUxM2YzODg0NTc1ZGI3NmExNDVhMjA1NzM5M2Y2
OWE0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC03Miw3ICs3Miw2IEBA
IGNsYXNzIEZvcm1TdWJtaXNzaW9uOwogY2xhc3MgRnJhbWVMb2FkUmVxdWVzdDsKIGNsYXNzIEZy
YW1lTG9hZGVyQ2xpZW50OwogY2xhc3MgRnJhbWVOZXR3b3JraW5nQ29udGV4dDsKLWNsYXNzIEhp
c3RvcnlDb250cm9sbGVyOwogY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBOYXZpZ2F0aW9uQWN0
aW9uOwogY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CkBAIC0xMTIsNiArMTExLDggQEAgcHVibGlj
OgogICAgIEZyYW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KIAogICAgIFBv
bGljeUNoZWNrZXImIHBvbGljeUNoZWNrZXIoKSBjb25zdCB7IHJldHVybiAqbV9wb2xpY3lDaGVj
a2VyOyB9CisKKyAgICBjbGFzcyBIaXN0b3J5Q29udHJvbGxlcjsKICAgICBIaXN0b3J5Q29udHJv
bGxlciYgaGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuICptX2hpc3Rvcnk7IH0KICAgICBSZXNvdXJj
ZUxvYWROb3RpZmllciYgbm90aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWVyOyB9CiAK
QEAgLTEzOSw4ICsxNDAsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxv
YWRXaXRoT3ZlcnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcpOwog
CiAgICAgdm9pZCBvcGVuKENhY2hlZEZyYW1lQmFzZSYpOwotICAgIHZvaWQgbG9hZEl0ZW0oSGlz
dG9yeUl0ZW0mLCBIaXN0b3J5SXRlbSogZnJvbUl0ZW0sIEZyYW1lTG9hZFR5cGUsIFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCk7Ci0gICAgSGlzdG9yeUl0ZW0qIHJlcXVlc3RlZEhpc3RvcnlJ
dGVtKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRIaXN0b3J5SXRlbS5nZXQoKTsgfQogCiAg
ICAgdm9pZCByZXRyeUFmdGVyRmFpbGVkQ2FjaGVPbmx5TWFpblJlc291cmNlTG9hZCgpOwogCkBA
IC0yOTgsOCArMjk3LDYgQEAgcHVibGljOgogICAgIGJvb2wgcXVpY2tSZWRpcmVjdENvbWluZygp
IGNvbnN0IHsgcmV0dXJuIG1fcXVpY2tSZWRpcmVjdENvbWluZzsgfQogCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBzaG91bGRDbG9zZSgpOwotICAgIAotICAgIHZvaWQgc3RhcnRlZCgpOwogCiAg
ICAgZW51bSBjbGFzcyBQYWdlRGlzbWlzc2FsVHlwZSB7IE5vbmUsIEJlZm9yZVVubG9hZCwgUGFn
ZUhpZGUsIFVubG9hZCB9OwogICAgIFBhZ2VEaXNtaXNzYWxUeXBlIHBhZ2VEaXNtaXNzYWxFdmVu
dEJlaW5nRGlzcGF0Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZURpc21pc3NhbEV2ZW50QmVp
bmdEaXNwYXRjaGVkOyB9CkBAIC00MjUsNyArNDIyLDEzIEBAIHByaXZhdGU6CiAgICAgZW51bSBj
bGFzcyBMb2FkQ29udGludWluZ1N0YXRlIDogdWludDhfdCB7IE5vdENvbnRpbnVpbmcsIENvbnRp
bnVpbmdXaXRoUmVxdWVzdCwgQ29udGludWluZ1dpdGhIaXN0b3J5SXRlbSB9OwogICAgIGJvb2wg
c2hvdWxkVHJlYXRDdXJyZW50TG9hZEFzQ29udGludWluZ0xvYWQoKSBjb25zdCB7IHJldHVybiBt
X2N1cnJlbnRMb2FkQ29udGludWluZ1N0YXRlICE9IExvYWRDb250aW51aW5nU3RhdGU6Ok5vdENv
bnRpbnVpbmc7IH0KIAorICAgIC8vIEhpc3RvcnlDb250cm9sbGVyIHNwZWNpZmljLgorICAgIHZv
aWQgbG9hZEl0ZW0oSGlzdG9yeUl0ZW0mLCBIaXN0b3J5SXRlbSogZnJvbUl0ZW0sIEZyYW1lTG9h
ZFR5cGUsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCk7CisgICAgSGlzdG9yeUl0ZW0qIHJl
cXVlc3RlZEhpc3RvcnlJdGVtKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRIaXN0b3J5SXRl
bS5nZXQoKTsgfQorCisgICAgLy8gU3ViZnJhbWVMb2FkZXIgc3BlY2lmaWMuCiAgICAgdm9pZCBs
b2FkVVJMSW50b0NoaWxkRnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBG
cmFtZSopOworICAgIHZvaWQgc3RhcnRlZCgpOwogCiAgICAgRnJhbWUmIG1fZnJhbWU7CiAgICAg
VW5pcXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IDUxOWNmN2JlMTY4ZWI2NjE4ZmI0MDU5
MTU5N2VmMmJkYjFlNTM2ZjMuLjc2YjM4NjQyZGIyYTczMDIxYjUyZDIwYzk3YTkyNDY3ZGMyOWJj
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAt
NTksMTYgKzU5LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRWaXNpdGVkTGluayhQYWdlJiBw
YWdlLCBjb25zdCBVUkwmIHVybCkKICAgICBwYWdlLnZpc2l0ZWRMaW5rU3RvcmUoKS5hZGRWaXNp
dGVkTGluayhwYWdlLCBjb21wdXRlU2hhcmVkU3RyaW5nSGFzaCh1cmwuc3RyaW5nKCkpKTsKIH0K
IAotSGlzdG9yeUNvbnRyb2xsZXI6Okhpc3RvcnlDb250cm9sbGVyKEZyYW1lJiBmcmFtZSkKK0Zy
YW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6SGlzdG9yeUNvbnRyb2xsZXIoRnJhbWUmIGZy
YW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1fZnJhbWVMb2FkQ29tcGxldGUodHJ1
ZSkKICAgICAsIG1fZGVmZXJzTG9hZGluZyhmYWxzZSkKIHsKIH0KIAotSGlzdG9yeUNvbnRyb2xs
ZXI6On5IaXN0b3J5Q29udHJvbGxlcigpID0gZGVmYXVsdDsKK0ZyYW1lTG9hZGVyOjpIaXN0b3J5
Q29udHJvbGxlcjo6fkhpc3RvcnlDb250cm9sbGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oSGlzdG9y
eUl0ZW0qIGl0ZW0pCit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZVNj
cm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogewogICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFtZS52aWV3KCk7CiAgICAgaWYgKCFpdGVtIHx8
ICFmcmFtZVZpZXcpCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNh
dmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAg
ICBpdGVtLT5ub3RpZnlDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OmNs
ZWFyU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKQordm9pZCBGcmFtZUxvYWRlcjo6SGlzdG9y
eUNvbnRyb2xsZXI6OmNsZWFyU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKQogewogICAgIGlm
ICghbV9jdXJyZW50SXRlbSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE5LDcgKzExOSw3IEBAIHZv
aWQgSGlzdG9yeUNvbnRyb2xsZXI6OmNsZWFyU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKQog
IDIpIElmIHRoZSBsYXlvdXQgaGFwcGVucyBhZnRlciB0aGUgbG9hZCBjb21wbGV0ZXMsIHRoZSBh
dHRlbXB0IHRvIHJlc3RvcmUgYXQgbG9hZCBjb21wbGV0aW9uIHRpbWUgc2lsZW50bHkKICBmYWls
cy4gIFdlIHRoZW4gc3VjY2Vzc2Z1bGx5IHJlc3RvcmUgaXQgd2hlbiB0aGUgbGF5b3V0IGhhcHBl
bnMuCiAqLwotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5k
Vmlld1N0YXRlKCkKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3Jl
U2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKQogewogICAgIGlmICghbV9mcmFtZS5sb2FkZXIo
KS5zdGF0ZU1hY2hpbmUoKS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTc3LDEyICsxNzcsMTIgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
cmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCkKICNlbmRpZgogfQogCi12b2lkIEhp
c3RvcnlDb250cm9sbGVyOjp1cGRhdGVCYWNrRm9yd2FyZExpc3RGb3JGcmFnbWVudFNjcm9sbCgp
Cit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlQmFja0ZvcndhcmRM
aXN0Rm9yRnJhZ21lbnRTY3JvbGwoKQogewogICAgIHVwZGF0ZUJhY2tGb3J3YXJkTGlzdENsaXBw
ZWRBdFRhcmdldChmYWxzZSk7CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVEb2N1
bWVudFN0YXRlKCkKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjpzYXZlRG9j
dW1lbnRTdGF0ZSgpCiB7CiAgICAgLy8gRklYTUU6IFJlYWRpbmcgdGhpcyBiaXQgb2YgRnJhbWVM
b2FkZXIgc3RhdGUgaGVyZSBpcyB1bmZvcnR1bmF0ZS4gIEkgbmVlZCB0byBzdHVkeQogICAgIC8v
IHRoaXMgbW9yZSB0byBzZWUgaWYgd2UgY2FuIHJlbW92ZSB0aGlzIGRlcGVuZGVuY3kuCkBAIC0y
MTcsNyArMjE3LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50U3RhdGUo
KQogCiAvLyBXYWxrIHRoZSBmcmFtZSB0cmVlLCB0ZWxsaW5nIGFsbCBmcmFtZXMgdG8gc2F2ZSB0
aGVpciBmb3JtIHN0YXRlIGludG8gdGhlaXIgY3VycmVudAogLy8gaGlzdG9yeSBpdGVtLgotdm9p
ZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGUoKQordm9pZCBG
cmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRl
KCkKIHsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX2ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgmbV9mcmFtZSkpIHsKICAgICAgICAgZnJhbWUtPmxv
YWRlcigpLmhpc3RvcnkoKS5zYXZlRG9jdW1lbnRTdGF0ZSgpOwpAQCAtMjI1LDcgKzIyNSw3IEBA
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKCkKICAg
ICB9CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlc3RvcmVEb2N1bWVudFN0YXRlKCkK
K3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3JlRG9jdW1lbnRTdGF0
ZSgpCiB7CiAgICAgc3dpdGNoIChtX2ZyYW1lLmxvYWRlcigpLmxvYWRUeXBlKCkpIHsKICAgICBj
YXNlIEZyYW1lTG9hZFR5cGU6OlJlbG9hZDoKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjpyZXN0b3JlRG9jdW1lbnRTdGF0ZSgpCiAgICAgbV9mcmFtZS5kb2N1bWVu
dCgpLT5zZXRTdGF0ZUZvck5ld0Zvcm1FbGVtZW50cyhtX2N1cnJlbnRJdGVtLT5kb2N1bWVudFN0
YXRlKCkpOwogfQogCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbnZhbGlkYXRlQ3VycmVudEl0
ZW1DYWNoZWRQYWdlKCkKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjppbnZh
bGlkYXRlQ3VycmVudEl0ZW1DYWNoZWRQYWdlKCkKIHsKICAgICBpZiAoIWN1cnJlbnRJdGVtKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjppbnZhbGlkYXRlQ3VycmVudEl0ZW1DYWNoZWRQYWdlKCkKICAgICB9CiB9CiAKLWJvb2wg
SGlzdG9yeUNvbnRyb2xsZXI6OnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9y
eUl0ZW0mIHRhcmdldEl0ZW0pIGNvbnN0Citib29sIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJv
bGxlcjo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSYgdGFyZ2V0
SXRlbSkgY29uc3QKIHsKICAgICBpZiAoIW1fY3VycmVudEl0ZW0pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBib29sIEhpc3RvcnlDb250cm9sbGVyOjpzaG91bGRT
dG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtJiB0YXJnZXRJdGVtKQogCiAvLyBN
YWluIGZ1bm5lbCBmb3IgbmF2aWdhdGluZyB0byBhIHByZXZpb3VzIGxvY2F0aW9uIChiYWNrL2Zv
cndhcmQsIG5vbi1zZWFyY2ggc25hcC1iYWNrKQogLy8gVGhpcyBpbmNsdWRlcyByZWN1cnNpb24g
dG8gaGFuZGxlIGxvYWRpbmcgaW50byBmcmFtZXNldHMgcHJvcGVybHkKLXZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OmdvVG9JdGVtKEhpc3RvcnlJdGVtJiB0YXJnZXRJdGVtLCBGcmFtZUxvYWRUeXBl
IHR5cGUsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQpCit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0oSGlz
dG9yeUl0ZW0mIHRhcmdldEl0ZW0sIEZyYW1lTG9hZFR5cGUgdHlwZSwgU2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCkKIHsKICAgICBMT0coSGlz
dG9yeSwgIkhpc3RvcnlDb250cm9sbGVyICVwIGdvVG9JdGVtICVwIHR5cGU9JWQiLCB0aGlzLCAm
dGFyZ2V0SXRlbSwgc3RhdGljX2Nhc3Q8aW50Pih0eXBlKSk7CiAKQEAgLTMyOCw3ICszMjgsNyBA
QCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpnb1RvSXRlbShIaXN0b3J5SXRlbSYgdGFyZ2V0SXRl
bSwgRnJhbWVMb2FkVHlwZSB0eXBlLCBTaAogICAgIHJlY3Vyc2l2ZUdvVG9JdGVtKHRhcmdldEl0
ZW0sIGN1cnJlbnRJdGVtLmdldCgpLCB0eXBlLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQp
OwogfQogCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVm
ZXIpCit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6c2V0RGVmZXJzTG9hZGlu
Zyhib29sIGRlZmVyKQogewogICAgIG1fZGVmZXJzTG9hZGluZyA9IGRlZmVyOwogICAgIGlmICgh
ZGVmZXIgJiYgbV9kZWZlcnJlZEl0ZW0pIHsKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXIpCiAgICAgfQogfQogCi12
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24oKQor
dm9pZCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckJhY2tGb3J3YXJk
TmF2aWdhdGlvbigpCiB7CiAgICAgTE9HKEhpc3RvcnksICJIaXN0b3J5Q29udHJvbGxlciAlcCB1
cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb246IFVwZGF0aW5nIEhpc3RvcnkgZm9yIGJhY2sv
Zm9yd2FyZCBuYXZpZ2F0aW9uIGluIGZyYW1lICVwIChtYWluIGZyYW1lICVkKSAlcyIsIHRoaXMs
ICZtX2ZyYW1lLCBtX2ZyYW1lLmlzTWFpbkZyYW1lKCksIG1fZnJhbWUubG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKSA/IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKIApAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgSGlz
dG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckJhY2tGb3J3YXJkTmF2aWdhdGlvbigpCiAgICAgdXBk
YXRlQ3VycmVudEl0ZW0oKTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9y
UmVsb2FkKCkKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JS
ZWxvYWQoKQogewogICAgIExPRyhIaXN0b3J5LCAiSGlzdG9yeUNvbnRyb2xsZXIgJXAgdXBkYXRl
Rm9yUmVsb2FkOiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWxvYWQgaW4gZnJhbWUgJXAgKG1haW4g
ZnJhbWUgJWQpICVzIiwgdGhpcywgJm1fZnJhbWUsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSwgbV9m
cmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpID8gbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVu
dExvYWRlcigpLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpIDogIiIpOwogCkBAIC0zNzUs
NyArMzc1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVsb2FkKCkKIC8v
ICAgICAyKSBHbG9iYWwgaGlzdG9yeTogSGFuZGxlZCBieSB0aGUgY2xpZW50LgogLy8gICAgIDMp
IFZpc2l0ZWQgbGlua3M6IEhhbmRsZWQgYnkgdGhlIFBhZ2VHcm91cC4KIAotdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2FkKEhpc3RvcnlVcGRhdGVUeXBlIHVwZGF0
ZVR5cGUpCit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3Rh
bmRhcmRMb2FkKEhpc3RvcnlVcGRhdGVUeXBlIHVwZGF0ZVR5cGUpCiB7CiAgICAgTE9HKEhpc3Rv
cnksICJIaXN0b3J5Q29udHJvbGxlciAlcCB1cGRhdGVGb3JTdGFuZGFyZExvYWQ6IFVwZGF0aW5n
IEhpc3RvcnkgZm9yIHN0YW5kYXJkIGxvYWQgaW4gZnJhbWUgJXAgKG1haW4gZnJhbWUgJWQpICVz
IiwgdGhpcywgJm1fZnJhbWUsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSwgbV9mcmFtZS5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAKQEAg
LTQwOSw3ICs0MDksNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFy
ZExvYWQoSGlzdG9yeVVwZGF0ZVR5cGUgdXBkYXRlVHlwZSkKICAgICB9CiB9CiAKLXZvaWQgSGlz
dG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlz
dCgpCit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJl
Y3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KCkKIHsKICAgICBMT0coSGlzdG9yeSwgIkhpc3Rv
cnlDb250cm9sbGVyICVwIHVwZGF0ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlz
dDogVXBkYXRpbmcgSGlzdG9yeSBmb3IgcmVkaXJlY3QgbG9hZCBpbiBmcmFtZSAlcCAobWFpbiBm
cmFtZSAlZCkgJXMiLCB0aGlzLCAmbV9mcmFtZSwgbV9mcmFtZS5pc01haW5GcmFtZSgpLCBtX2Zy
YW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgPyBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCktPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkgOiAiIik7CiAgICAgCkBAIC00
NDUsNyArNDQ1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RX
aXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KCkKICAgICB9CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KCkKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3Rv
cnlDb250cm9sbGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCgpCiB7CiAgICAgTE9HKEhpc3Rv
cnksICJIaXN0b3J5Q29udHJvbGxlciAlcCB1cGRhdGVGb3JDbGllbnRSZWRpcmVjdDogVXBkYXRp
bmcgSGlzdG9yeSBmb3IgY2xpZW50IHJlZGlyZWN0IGluIGZyYW1lICVwIChtYWluIGZyYW1lICVk
KSAlcyIsIHRoaXMsICZtX2ZyYW1lLCBtX2ZyYW1lLmlzTWFpbkZyYW1lKCksIG1fZnJhbWUubG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSA/IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKIApAQCAtNDY1LDcgKzQ2NSw3
IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KCkKICAg
ICB9CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNvbW1pdCgpCit2b2lk
IEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KCkKIHsKICAg
ICBGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpOwogICAgIExPRyhI
aXN0b3J5LCAiSGlzdG9yeUNvbnRyb2xsZXIgJXAgdXBkYXRlRm9yQ29tbWl0OiBVcGRhdGluZyBI
aXN0b3J5IGZvciBjb21taXQgaW4gZnJhbWUgJXAgKG1haW4gZnJhbWUgJWQpICVzIiwgdGhpcywg
Jm1fZnJhbWUsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSwgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVu
dExvYWRlcigpID8gbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpIDogIiIpOwpAQCAtNDk1LDE5ICs0OTUsMTkgQEAgdm9pZCBIaXN0
b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KCkKICAgICB9CiB9CiAKLWJvb2wgSGlzdG9y
eUNvbnRyb2xsZXI6OmlzUmVwbGFjZUxvYWRUeXBlV2l0aFByb3Zpc2lvbmFsSXRlbShGcmFtZUxv
YWRUeXBlIHR5cGUpCitib29sIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6aXNSZXBs
YWNlTG9hZFR5cGVXaXRoUHJvdmlzaW9uYWxJdGVtKEZyYW1lTG9hZFR5cGUgdHlwZSkKIHsKICAg
ICAvLyBHb2luZyBiYWNrIHRvIGFuIGVycm9yIHBhZ2UgaW4gYSBzdWJmcmFtZSBjYW4gdHJpZ2dl
ciBhIEZyYW1lTG9hZFR5cGU6OlJlcGxhY2UKICAgICAvLyB3aGlsZSBtX3Byb3Zpc2lvbmFsSXRl
bSBpcyBzZXQsIHNvIHdlIG5lZWQgdG8gY29tbWl0IGl0LgogICAgIHJldHVybiB0eXBlID09IEZy
YW1lTG9hZFR5cGU6OlJlcGxhY2UgJiYgbV9wcm92aXNpb25hbEl0ZW07CiB9CiAKLWJvb2wgSGlz
dG9yeUNvbnRyb2xsZXI6OmlzUmVsb2FkVHlwZVdpdGhQcm92aXNpb25hbEl0ZW0oRnJhbWVMb2Fk
VHlwZSB0eXBlKQorYm9vbCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OmlzUmVsb2Fk
VHlwZVdpdGhQcm92aXNpb25hbEl0ZW0oRnJhbWVMb2FkVHlwZSB0eXBlKQogewogICAgIHJldHVy
biAodHlwZSA9PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQgfHwgdHlwZSA9PSBGcmFtZUxvYWRUeXBl
OjpSZWxvYWRGcm9tT3JpZ2luKSAmJiBtX3Byb3Zpc2lvbmFsSXRlbTsKIH0KIAotdm9pZCBIaXN0
b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0KCkKK3ZvaWQgRnJhbWVMb2Fk
ZXI6Okhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVVcGRhdGVGb3JDb21taXQoKQogewogICAg
IC8vIFRoZSBmcmFtZSB0aGF0IG5hdmlnYXRlZCB3aWxsIG5vdyBoYXZlIGEgbnVsbCBwcm92aXNp
b25hbCBpdGVtLgogICAgIC8vIElnbm9yZSBpdCBhbmQgaXRzIGNoaWxkcmVuLgpAQCAtNTQyLDcg
KzU0Miw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVVwZGF0ZUZvckNvbW1p
dCgpCiAgICAgICAgIGNoaWxkLT5sb2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlVXBkYXRlRm9y
Q29tbWl0KCk7CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclNhbWVEb2N1
bWVudE5hdmlnYXRpb24oKQordm9pZCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OnVw
ZGF0ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oKQogewogICAgIGlmIChtX2ZyYW1lLmRvY3Vt
ZW50KCktPnVybCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTY0LDcgKzU2NCw3
IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRp
b24oKQogICAgIH0KIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRl
Rm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29u
dHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCiB7CiAg
ICAgLy8gVGhlIGZyYW1lIHRoYXQgbmF2aWdhdGVkIHdpbGwgbm93IGhhdmUgYSBudWxsIHByb3Zp
c2lvbmFsIGl0ZW0uCiAgICAgLy8gSWdub3JlIGl0IGFuZCBpdHMgY2hpbGRyZW4uCkBAIC01ODYs
NyArNTg2LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbigpCiAgICAgICAgIGNoaWxkLT5sb2FkZXIoKS5oaXN0b3J5KCku
cmVjdXJzaXZlVXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpOwogfQogCi12b2lkIEhp
c3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JGcmFtZUxvYWRDb21wbGV0ZWQoKQordm9pZCBGcmFt
ZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckZyYW1lTG9hZENvbXBsZXRlZCgp
CiB7CiAgICAgLy8gRXZlbiBpZiBhbHJlYWR5IGNvbXBsZXRlLCB3ZSBtaWdodCBoYXZlIHNldCBh
IHByZXZpb3VzIGl0ZW0gb24gYSBmcmFtZSB0aGF0CiAgICAgLy8gZGlkbid0IGRvIGFueSBkYXRh
IGxvYWRpbmcgb24gdGhlIHBhc3QgdHJhbnNhY3Rpb24uIE1ha2Ugc3VyZSB0byB0cmFjayB0aGF0
CkBAIC01OTQsMjEgKzU5NCwyMSBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JG
cmFtZUxvYWRDb21wbGV0ZWQoKQogICAgIG1fZnJhbWVMb2FkQ29tcGxldGUgPSB0cnVlOwogfQog
Ci12b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSYgaXRl
bSkKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjpzZXRDdXJyZW50SXRlbShI
aXN0b3J5SXRlbSYgaXRlbSkKIHsKICAgICBtX2ZyYW1lTG9hZENvbXBsZXRlID0gZmFsc2U7CiAg
ICAgbV9wcmV2aW91c0l0ZW0gPSBtX2N1cnJlbnRJdGVtOwogICAgIG1fY3VycmVudEl0ZW0gPSAm
aXRlbTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0Q3VycmVudEl0ZW1UaXRsZShj
b25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3Rv
cnlDb250cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mIHRpdGxlKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgdGhlIHRpdGxlJ3MgZGly
ZWN0aW9uLgogICAgIGlmIChtX2N1cnJlbnRJdGVtKQogICAgICAgICBtX2N1cnJlbnRJdGVtLT5z
ZXRUaXRsZSh0aXRsZS5zdHJpbmcpOwogfQogCi1ib29sIEhpc3RvcnlDb250cm9sbGVyOjpjdXJy
ZW50SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdAorYm9vbCBGcmFtZUxvYWRlcjo6SGlzdG9y
eUNvbnRyb2xsZXI6OmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCgpIGNvbnN0CiB7CiAgICAg
Ly8gRnJvbSB0aGUgSFRNTDUgc3BlYyBmb3IgbG9jYXRpb24uYXNzaWduKCk6CiAgICAgLy8gICJJ
ZiB0aGUgYnJvd3NpbmcgY29udGV4dCdzIHNlc3Npb24gaGlzdG9yeSBjb250YWlucyBvbmx5IG9u
ZSBEb2N1bWVudCwKQEAgLTYxNywxOSArNjE3LDE5IEBAIGJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6
OmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY3VycmVu
dEl0ZW0gJiYgIW1fcHJldmlvdXNJdGVtICYmIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobV9jdXJy
ZW50SXRlbS0+dXJsU3RyaW5nKCksIGFib3V0QmxhbmtVUkwoKS5zdHJpbmcoKSk7CiB9CiAKLXZv
aWQgSGlzdG9yeUNvbnRyb2xsZXI6OmNsZWFyUHJldmlvdXNJdGVtKCkKK3ZvaWQgRnJhbWVMb2Fk
ZXI6Okhpc3RvcnlDb250cm9sbGVyOjpjbGVhclByZXZpb3VzSXRlbSgpCiB7CiAgICAgbV9wcmV2
aW91c0l0ZW0gPSBudWxscHRyOwogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gbV9mcmFtZS50cmVl
KCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5n
KCkpCiAgICAgICAgIGNoaWxkLT5sb2FkZXIoKS5oaXN0b3J5KCkuY2xlYXJQcmV2aW91c0l0ZW0o
KTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0UHJvdmlzaW9uYWxJdGVtKEhpc3Rv
cnlJdGVtKiBpdGVtKQordm9pZCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OnNldFBy
b3Zpc2lvbmFsSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKIHsKICAgICBtX3Byb3Zpc2lvbmFsSXRl
bSA9IGl0ZW07CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OmluaXRpYWxpemVJdGVtKEhp
c3RvcnlJdGVtJiBpdGVtKQordm9pZCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6Omlu
aXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtJiBpdGVtKQogewogICAgIERvY3VtZW50TG9hZGVyKiBk
b2N1bWVudExvYWRlciA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBB
U1NFUlQoZG9jdW1lbnRMb2FkZXIpOwpAQCAtNjc0LDcgKzY3NCw3IEBAIHZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OmluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtJiBpdGVtKQogICAgIGl0ZW0uc2V0
Rm9ybUluZm9Gcm9tUmVxdWVzdChkb2N1bWVudExvYWRlci0+cmVxdWVzdCgpKTsKIH0KIAotUmVm
PEhpc3RvcnlJdGVtPiBIaXN0b3J5Q29udHJvbGxlcjo6Y3JlYXRlSXRlbSgpCitSZWY8SGlzdG9y
eUl0ZW0+IEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6Y3JlYXRlSXRlbSgpCiB7CiAg
ICAgUmVmPEhpc3RvcnlJdGVtPiBpdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZSgpOwogICAgIGlu
aXRpYWxpemVJdGVtKGl0ZW0pOwpAQCAtNjg1LDcgKzY4NSw3IEBAIFJlZjxIaXN0b3J5SXRlbT4g
SGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW0oKQogICAgIHJldHVybiBpdGVtOwogfQogCi1S
ZWY8SGlzdG9yeUl0ZW0+IEhpc3RvcnlDb250cm9sbGVyOjpjcmVhdGVJdGVtVHJlZShGcmFtZSYg
dGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KQorUmVmPEhpc3RvcnlJdGVtPiBGcmFtZUxv
YWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW1UcmVlKEZyYW1lJiB0YXJnZXRGcmFt
ZSwgYm9vbCBjbGlwQXRUYXJnZXQpCiB7CiAgICAgUmVmPEhpc3RvcnlJdGVtPiBiZkl0ZW0gPSBj
cmVhdGVJdGVtKCk7CiAgICAgaWYgKCFtX2ZyYW1lTG9hZENvbXBsZXRlKQpAQCAtNzI3LDcgKzcy
Nyw3IEBAIFJlZjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW1UcmVl
KEZyYW1lJiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlwCiAvLyB0cmFja2luZyB3aGV0aGVyIGVhY2gg
ZnJhbWUgYWxyZWFkeSBoYXMgdGhlIGNvbnRlbnQgdGhlIGl0ZW0gcmVxdWVzdHMuICBJZiB0aGVy
ZSBpcwogLy8gYSBtYXRjaCwgd2Ugc2V0IHRoZSBwcm92aXNpb25hbCBpdGVtIGFuZCByZWN1cnNl
LiAgT3RoZXJ3aXNlIHdlIHdpbGwgcmVsb2FkIHRoYXQKIC8vIGZyYW1lIGFuZCBhbGwgaXRzIGtp
ZHMgaW4gcmVjdXJzaXZlR29Ub0l0ZW0uCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNp
dmVTZXRQcm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVtKiBmcm9t
SXRlbSkKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVTZXRQ
cm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVtKiBmcm9tSXRlbSkK
IHsKICAgICBpZiAoIWl0ZW1zQXJlQ2xvbmVzKGl0ZW0sIGZyb21JdGVtKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNzQ5LDcgKzc0OSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2
ZVNldFByb3Zpc2lvbmFsSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0CiAKIC8vIFdl
IG5vdyB0cmF2ZXJzZSB0aGUgZnJhbWUgdHJlZSBhbmQgaXRlbSB0cmVlIGEgc2Vjb25kIHRpbWUs
IGxvYWRpbmcgZnJhbWVzIHRoYXQKIC8vIGRvIGhhdmUgdGhlIGNvbnRlbnQgdGhlIGl0ZW0gcmVx
dWVzdHMuCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVHb1RvSXRlbShIaXN0b3J5
SXRlbSYgaXRlbSwgSGlzdG9yeUl0ZW0qIGZyb21JdGVtLCBGcmFtZUxvYWRUeXBlIHR5cGUsIFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQpCit2
b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlR29Ub0l0ZW0oSGlz
dG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVtKiBmcm9tSXRlbSwgRnJhbWVMb2FkVHlwZSB0eXBl
LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
KQogewogICAgIGlmICghaXRlbXNBcmVDbG9uZXMoaXRlbSwgZnJvbUl0ZW0pKSB7CiAgICAgICAg
IG1fZnJhbWUubG9hZGVyKCkubG9hZEl0ZW0oaXRlbSwgZnJvbUl0ZW0sIHR5cGUsIHNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCk7CkBAIC03NjgsNyArNzY4LDcgQEAgdm9pZCBIaXN0b3J5Q29u
dHJvbGxlcjo6cmVjdXJzaXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVt
KiBmcm9tSXQKIH0KIAogLy8gVGhlIGZvbGxvd2luZyBsb2dpYyBtdXN0IGJlIGtlcHQgaW4gc3lu
YyB3aXRoIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzQ2xvbmUoKS4KLWJv
b2wgSGlzdG9yeUNvbnRyb2xsZXI6Oml0ZW1zQXJlQ2xvbmVzKEhpc3RvcnlJdGVtJiBpdGVtMSwg
SGlzdG9yeUl0ZW0qIGl0ZW0yKSBjb25zdAorYm9vbCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRy
b2xsZXI6Oml0ZW1zQXJlQ2xvbmVzKEhpc3RvcnlJdGVtJiBpdGVtMSwgSGlzdG9yeUl0ZW0qIGl0
ZW0yKSBjb25zdAogewogICAgIC8vIElmIHRoZSBpdGVtIHdlJ3JlIGdvaW5nIHRvIGlzIGEgY2xv
bmUgb2YgdGhlIGl0ZW0gd2UncmUgYXQsIHRoZW4gd2UgZG8KICAgICAvLyBub3QgbmVlZCB0byBs
b2FkIGl0IGFnYWluLiAgVGhlIGN1cnJlbnQgZnJhbWUgdHJlZSBhbmQgdGhlIGZyYW1lIHRyZWUK
QEAgLTc4NSw3ICs3ODUsNyBAQCBib29sIEhpc3RvcnlDb250cm9sbGVyOjppdGVtc0FyZUNsb25l
cyhIaXN0b3J5SXRlbSYgaXRlbTEsIEhpc3RvcnlJdGVtKiBpdGVtMikgYwogfQogCiAvLyBIZWxw
ZXIgbWV0aG9kIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjdXJyZW50IGZyYW1lIHRyZWUg
bWF0Y2hlcyBnaXZlbiBoaXN0b3J5IGl0ZW0ncy4KLWJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6OmN1
cnJlbnRGcmFtZXNNYXRjaEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0pIGNvbnN0Citib29sIEZyYW1l
TG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6Y3VycmVudEZyYW1lc01hdGNoSXRlbShIaXN0b3J5
SXRlbSYgaXRlbSkgY29uc3QKIHsKICAgICBpZiAoKCFtX2ZyYW1lLnRyZWUoKS51bmlxdWVOYW1l
KCkuaXNFbXB0eSgpIHx8ICFpdGVtLnRhcmdldCgpLmlzRW1wdHkoKSkgJiYgbV9mcmFtZS50cmVl
KCkudW5pcXVlTmFtZSgpICE9IGl0ZW0udGFyZ2V0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTgwMiw3ICs4MDIsNyBAQCBib29sIEhpc3RvcnlDb250cm9sbGVyOjpjdXJyZW50RnJhbWVz
TWF0Y2hJdGVtKEhpc3RvcnlJdGVtJiBpdGVtKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVCYWNrRm9yd2FyZExpc3RDbGlwcGVkQXRU
YXJnZXQoYm9vbCBkb0NsaXApCit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6
dXBkYXRlQmFja0ZvcndhcmRMaXN0Q2xpcHBlZEF0VGFyZ2V0KGJvb2wgZG9DbGlwKQogewogICAg
IC8vIEluIHRoZSBjYXNlIG9mIHNhdmluZyBzdGF0ZSBhYm91dCBhIHBhZ2Ugd2l0aCBmcmFtZXMs
IHdlIHN0b3JlIGEgdHJlZSBvZiBpdGVtcyB0aGF0IG1pcnJvcnMgdGhlIGZyYW1lIHRyZWUuICAK
ICAgICAvLyBUaGUgaXRlbSB0aGF0IHdhcyB0aGUgdGFyZ2V0IG9mIHRoZSB1c2VyJ3MgbmF2aWdh
dGlvbiBpcyBkZXNpZ25hdGVkIGFzIHRoZSAidGFyZ2V0SXRlbSIuICAKQEAgLTgyNCw3ICs4MjQs
NyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVCYWNrRm9yd2FyZExpc3RDbGlwcGVk
QXRUYXJnZXQoYm9vbCBkb0NsaXApCiAgICAgcGFnZS0+YmFja0ZvcndhcmQoKS5hZGRJdGVtKFdU
Rk1vdmUodG9wSXRlbSkpOwogfQogCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVDdXJy
ZW50SXRlbSgpCit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlQ3Vy
cmVudEl0ZW0oKQogewogICAgIGlmICghbV9jdXJyZW50SXRlbSkKICAgICAgICAgcmV0dXJuOwpA
QCAtODQ5LDcgKzg0OSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUN1cnJlbnRJ
dGVtKCkKICAgICB9CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZShSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIHN0YXRlT2JqZWN0LCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlD
b250cm9sbGVyOjpwdXNoU3RhdGUoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzdGF0
ZU9iamVjdCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7
CiAgICAgaWYgKCFtX2N1cnJlbnRJdGVtKQogICAgICAgICByZXR1cm47CkBAIC04ODAsNyArODgw
LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cHVzaFN0YXRlKFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+JiYgc3RhdGVPYmplY3QsIGMKICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVu
dCgpLnVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
cmVwbGFjZVN0YXRlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc3RhdGVPYmplY3Qs
IGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQordm9pZCBGcmFt
ZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZShSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiYmIHN0YXRlT2JqZWN0LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIHVybFN0cmluZykKIHsKICAgICBpZiAoIW1fY3VycmVudEl0ZW0pCiAgICAgICAgIHJl
dHVybjsKQEAgLTkwMiw3ICs5MDIsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZXBsYWNl
U3RhdGUoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzdGF0ZU9iamVjdAogICAgIG1f
ZnJhbWUubG9hZGVyKCkuY2xpZW50KCkudXBkYXRlR2xvYmFsSGlzdG9yeSgpOwogfQogCi12b2lk
IEhpc3RvcnlDb250cm9sbGVyOjpyZXBsYWNlQ3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0p
Cit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVwbGFjZUN1cnJlbnRJdGVt
KEhpc3RvcnlJdGVtKiBpdGVtKQogewogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAppbmRleCBkOTUyNTJjZjcz
M2ZkMTI1NjNhNmRlMGJmMjdjMmM1YjI0ZTliOTJjLi40YTNjZWEyMmU5ZTYzNGY3NWRmODc4YTNk
ZjU1ZmJmOWM4OTJmZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9y
eUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xs
ZXIuaApAQCAtMjksNyArMjksNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZyYW1l
TG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTQ0LDcgKzQ0LDcgQEAgZW51bSBjbGFzcyBTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQgOiBib29sOwogCiBzdHJ1Y3QgU3RyaW5nV2l0aERpcmVjdGlvbjsKIAot
Y2xhc3MgSGlzdG9yeUNvbnRyb2xsZXIgeworY2xhc3MgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250
cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIaXN0b3J5Q29udHJvbGxlcik7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397819</attachid>
            <date>2020-04-28 01:19:12 -0700</date>
            <delta_ts>2020-04-28 02:11:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211090-20200428101910.patch</filename>
            <type>text/plain</type>
            <size>21375</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzM1YmMxNThiMGExNGQ0
ZmVkZjU2ZTZmZDI3NjE4MmI4MDY2ODA3Ni4uZTQzMDMxNTA0MDc4NjhlYWNiZjdlN2I0YzZhY2Rh
MWEzM2E4Yzg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA0LTI3ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBIaXN0b3J5Q29udHJvbGxl
ciBhbiBpbm5lciBjbGFzcyBvZiBGcmFtZUxvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgTWFrZSBIaXN0b3J5Q29udHJvbGxlciBhbiBpbm5lciBjbGFz
cyBvZiBGcmFtZUxvYWRlciwgdGhpcyBhbGxvd3MKKyAgICAgICAgdXMgdG8gbW92ZSBzb21lIG1l
dGhvZHMgb25seSB1c2VkIGJ5IEhpc3RvcnlDb250cm9sbGVyIG91dCBvZiB0aGUKKyAgICAgICAg
RnJhbWVMb2FkZXIgcHVibGljIEFQSS4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAgICogbG9h
ZGVyL0hpc3RvcnlDb250cm9sbGVyLmg6CisKIDIwMjAtMDQtMjcgIERhbmllbCBCYXRlcyAgPGRh
YmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIENhcmV0IG1heSBiZSBwbGFjZWQgaW4gdGhlIHdy
b25nIHNwb3QgZm9yIHRleHQgaW5wdXQgY29udGV4dCB0aGF0IGlzIGEgZm9ybSBjb250cm9sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDg1MWFhZDNlNDZhYTVjZTkyNzU0YTk4
Mzg1Mjk0NDFhMzVhNjQ3ZDIuLjIxM2EwNzUxM2YzODg0NTc1ZGI3NmExNDVhMjA1NzM5M2Y2OWE0
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC03Miw3ICs3Miw2IEBAIGNs
YXNzIEZvcm1TdWJtaXNzaW9uOwogY2xhc3MgRnJhbWVMb2FkUmVxdWVzdDsKIGNsYXNzIEZyYW1l
TG9hZGVyQ2xpZW50OwogY2xhc3MgRnJhbWVOZXR3b3JraW5nQ29udGV4dDsKLWNsYXNzIEhpc3Rv
cnlDb250cm9sbGVyOwogY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9u
OwogY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CkBAIC0xMTIsNiArMTExLDggQEAgcHVibGljOgog
ICAgIEZyYW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KIAogICAgIFBvbGlj
eUNoZWNrZXImIHBvbGljeUNoZWNrZXIoKSBjb25zdCB7IHJldHVybiAqbV9wb2xpY3lDaGVja2Vy
OyB9CisKKyAgICBjbGFzcyBIaXN0b3J5Q29udHJvbGxlcjsKICAgICBIaXN0b3J5Q29udHJvbGxl
ciYgaGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuICptX2hpc3Rvcnk7IH0KICAgICBSZXNvdXJjZUxv
YWROb3RpZmllciYgbm90aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWVyOyB9CiAKQEAg
LTEzOSw4ICsxNDAsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWRX
aXRoT3ZlcnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcpOwogCiAg
ICAgdm9pZCBvcGVuKENhY2hlZEZyYW1lQmFzZSYpOwotICAgIHZvaWQgbG9hZEl0ZW0oSGlzdG9y
eUl0ZW0mLCBIaXN0b3J5SXRlbSogZnJvbUl0ZW0sIEZyYW1lTG9hZFR5cGUsIFNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCk7Ci0gICAgSGlzdG9yeUl0ZW0qIHJlcXVlc3RlZEhpc3RvcnlJdGVt
KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRIaXN0b3J5SXRlbS5nZXQoKTsgfQogCiAgICAg
dm9pZCByZXRyeUFmdGVyRmFpbGVkQ2FjaGVPbmx5TWFpblJlc291cmNlTG9hZCgpOwogCkBAIC0y
OTgsOCArMjk3LDYgQEAgcHVibGljOgogICAgIGJvb2wgcXVpY2tSZWRpcmVjdENvbWluZygpIGNv
bnN0IHsgcmV0dXJuIG1fcXVpY2tSZWRpcmVjdENvbWluZzsgfQogCiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzaG91bGRDbG9zZSgpOwotICAgIAotICAgIHZvaWQgc3RhcnRlZCgpOwogCiAgICAg
ZW51bSBjbGFzcyBQYWdlRGlzbWlzc2FsVHlwZSB7IE5vbmUsIEJlZm9yZVVubG9hZCwgUGFnZUhp
ZGUsIFVubG9hZCB9OwogICAgIFBhZ2VEaXNtaXNzYWxUeXBlIHBhZ2VEaXNtaXNzYWxFdmVudEJl
aW5nRGlzcGF0Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdE
aXNwYXRjaGVkOyB9CkBAIC00MjUsNyArNDIyLDEzIEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFz
cyBMb2FkQ29udGludWluZ1N0YXRlIDogdWludDhfdCB7IE5vdENvbnRpbnVpbmcsIENvbnRpbnVp
bmdXaXRoUmVxdWVzdCwgQ29udGludWluZ1dpdGhIaXN0b3J5SXRlbSB9OwogICAgIGJvb2wgc2hv
dWxkVHJlYXRDdXJyZW50TG9hZEFzQ29udGludWluZ0xvYWQoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRMb2FkQ29udGludWluZ1N0YXRlICE9IExvYWRDb250aW51aW5nU3RhdGU6Ok5vdENvbnRp
bnVpbmc7IH0KIAorICAgIC8vIEhpc3RvcnlDb250cm9sbGVyIHNwZWNpZmljLgorICAgIHZvaWQg
bG9hZEl0ZW0oSGlzdG9yeUl0ZW0mLCBIaXN0b3J5SXRlbSogZnJvbUl0ZW0sIEZyYW1lTG9hZFR5
cGUsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCk7CisgICAgSGlzdG9yeUl0ZW0qIHJlcXVl
c3RlZEhpc3RvcnlJdGVtKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRIaXN0b3J5SXRlbS5n
ZXQoKTsgfQorCisgICAgLy8gU3ViZnJhbWVMb2FkZXIgc3BlY2lmaWMuCiAgICAgdm9pZCBsb2Fk
VVJMSW50b0NoaWxkRnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGcmFt
ZSopOworICAgIHZvaWQgc3RhcnRlZCgpOwogCiAgICAgRnJhbWUmIG1fZnJhbWU7CiAgICAgVW5p
cXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IDUxOWNmN2JlMTY4ZWI2NjE4ZmI0MDU5MTU5
N2VmMmJkYjFlNTM2ZjMuLjc2YjM4NjQyZGIyYTczMDIxYjUyZDIwYzk3YTkyNDY3ZGMyOWJjZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtNTks
MTYgKzU5LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRWaXNpdGVkTGluayhQYWdlJiBwYWdl
LCBjb25zdCBVUkwmIHVybCkKICAgICBwYWdlLnZpc2l0ZWRMaW5rU3RvcmUoKS5hZGRWaXNpdGVk
TGluayhwYWdlLCBjb21wdXRlU2hhcmVkU3RyaW5nSGFzaCh1cmwuc3RyaW5nKCkpKTsKIH0KIAot
SGlzdG9yeUNvbnRyb2xsZXI6Okhpc3RvcnlDb250cm9sbGVyKEZyYW1lJiBmcmFtZSkKK0ZyYW1l
TG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6SGlzdG9yeUNvbnRyb2xsZXIoRnJhbWUmIGZyYW1l
KQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1fZnJhbWVMb2FkQ29tcGxldGUodHJ1ZSkK
ICAgICAsIG1fZGVmZXJzTG9hZGluZyhmYWxzZSkKIHsKIH0KIAotSGlzdG9yeUNvbnRyb2xsZXI6
On5IaXN0b3J5Q29udHJvbGxlcigpID0gZGVmYXVsdDsKK0ZyYW1lTG9hZGVyOjpIaXN0b3J5Q29u
dHJvbGxlcjo6fkhpc3RvcnlDb250cm9sbGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oSGlzdG9yeUl0
ZW0qIGl0ZW0pCit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZVNjcm9s
bFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogewogICAgIEZy
YW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFtZS52aWV3KCk7CiAgICAgaWYgKCFpdGVtIHx8ICFm
cmFtZVZpZXcpCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVT
Y3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICBp
dGVtLT5ub3RpZnlDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OmNsZWFy
U2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKQordm9pZCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNv
bnRyb2xsZXI6OmNsZWFyU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKQogewogICAgIGlmICgh
bV9jdXJyZW50SXRlbSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQg
SGlzdG9yeUNvbnRyb2xsZXI6OmNsZWFyU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKQogIDIp
IElmIHRoZSBsYXlvdXQgaGFwcGVucyBhZnRlciB0aGUgbG9hZCBjb21wbGV0ZXMsIHRoZSBhdHRl
bXB0IHRvIHJlc3RvcmUgYXQgbG9hZCBjb21wbGV0aW9uIHRpbWUgc2lsZW50bHkKICBmYWlscy4g
IFdlIHRoZW4gc3VjY2Vzc2Z1bGx5IHJlc3RvcmUgaXQgd2hlbiB0aGUgbGF5b3V0IGhhcHBlbnMu
CiAqLwotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmll
d1N0YXRlKCkKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3JlU2Ny
b2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKQogewogICAgIGlmICghbV9mcmFtZS5sb2FkZXIoKS5z
dGF0ZU1hY2hpbmUoKS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTc3LDEyICsxNzcsMTIgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVz
dG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCkKICNlbmRpZgogfQogCi12b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjp1cGRhdGVCYWNrRm9yd2FyZExpc3RGb3JGcmFnbWVudFNjcm9sbCgpCit2
b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlQmFja0ZvcndhcmRMaXN0
Rm9yRnJhZ21lbnRTY3JvbGwoKQogewogICAgIHVwZGF0ZUJhY2tGb3J3YXJkTGlzdENsaXBwZWRB
dFRhcmdldChmYWxzZSk7CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVEb2N1bWVu
dFN0YXRlKCkKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjpzYXZlRG9jdW1l
bnRTdGF0ZSgpCiB7CiAgICAgLy8gRklYTUU6IFJlYWRpbmcgdGhpcyBiaXQgb2YgRnJhbWVMb2Fk
ZXIgc3RhdGUgaGVyZSBpcyB1bmZvcnR1bmF0ZS4gIEkgbmVlZCB0byBzdHVkeQogICAgIC8vIHRo
aXMgbW9yZSB0byBzZWUgaWYgd2UgY2FuIHJlbW92ZSB0aGlzIGRlcGVuZGVuY3kuCkBAIC0yMTcs
NyArMjE3LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50U3RhdGUoKQog
CiAvLyBXYWxrIHRoZSBmcmFtZSB0cmVlLCB0ZWxsaW5nIGFsbCBmcmFtZXMgdG8gc2F2ZSB0aGVp
ciBmb3JtIHN0YXRlIGludG8gdGhlaXIgY3VycmVudAogLy8gaGlzdG9yeSBpdGVtLgotdm9pZCBI
aXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGUoKQordm9pZCBGcmFt
ZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKCkK
IHsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX2ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgmbV9mcmFtZSkpIHsKICAgICAgICAgZnJhbWUtPmxvYWRl
cigpLmhpc3RvcnkoKS5zYXZlRG9jdW1lbnRTdGF0ZSgpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHZv
aWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKCkKICAgICB9
CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlc3RvcmVEb2N1bWVudFN0YXRlKCkKK3Zv
aWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3JlRG9jdW1lbnRTdGF0ZSgp
CiB7CiAgICAgc3dpdGNoIChtX2ZyYW1lLmxvYWRlcigpLmxvYWRUeXBlKCkpIHsKICAgICBjYXNl
IEZyYW1lTG9hZFR5cGU6OlJlbG9hZDoKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpyZXN0b3JlRG9jdW1lbnRTdGF0ZSgpCiAgICAgbV9mcmFtZS5kb2N1bWVudCgp
LT5zZXRTdGF0ZUZvck5ld0Zvcm1FbGVtZW50cyhtX2N1cnJlbnRJdGVtLT5kb2N1bWVudFN0YXRl
KCkpOwogfQogCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbnZhbGlkYXRlQ3VycmVudEl0ZW1D
YWNoZWRQYWdlKCkKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjppbnZhbGlk
YXRlQ3VycmVudEl0ZW1DYWNoZWRQYWdlKCkKIHsKICAgICBpZiAoIWN1cnJlbnRJdGVtKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVy
OjppbnZhbGlkYXRlQ3VycmVudEl0ZW1DYWNoZWRQYWdlKCkKICAgICB9CiB9CiAKLWJvb2wgSGlz
dG9yeUNvbnRyb2xsZXI6OnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0
ZW0mIHRhcmdldEl0ZW0pIGNvbnN0Citib29sIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxl
cjo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSYgdGFyZ2V0SXRl
bSkgY29uc3QKIHsKICAgICBpZiAoIW1fY3VycmVudEl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBib29sIEhpc3RvcnlDb250cm9sbGVyOjpzaG91bGRTdG9w
TG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtJiB0YXJnZXRJdGVtKQogCiAvLyBNYWlu
IGZ1bm5lbCBmb3IgbmF2aWdhdGluZyB0byBhIHByZXZpb3VzIGxvY2F0aW9uIChiYWNrL2Zvcndh
cmQsIG5vbi1zZWFyY2ggc25hcC1iYWNrKQogLy8gVGhpcyBpbmNsdWRlcyByZWN1cnNpb24gdG8g
aGFuZGxlIGxvYWRpbmcgaW50byBmcmFtZXNldHMgcHJvcGVybHkKLXZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OmdvVG9JdGVtKEhpc3RvcnlJdGVtJiB0YXJnZXRJdGVtLCBGcmFtZUxvYWRUeXBlIHR5
cGUsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQpCit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0oSGlzdG9y
eUl0ZW0mIHRhcmdldEl0ZW0sIEZyYW1lTG9hZFR5cGUgdHlwZSwgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCkKIHsKICAgICBMT0coSGlzdG9y
eSwgIkhpc3RvcnlDb250cm9sbGVyICVwIGdvVG9JdGVtICVwIHR5cGU9JWQiLCB0aGlzLCAmdGFy
Z2V0SXRlbSwgc3RhdGljX2Nhc3Q8aW50Pih0eXBlKSk7CiAKQEAgLTMyOCw3ICszMjgsNyBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjpnb1RvSXRlbShIaXN0b3J5SXRlbSYgdGFyZ2V0SXRlbSwg
RnJhbWVMb2FkVHlwZSB0eXBlLCBTaAogICAgIHJlY3Vyc2l2ZUdvVG9JdGVtKHRhcmdldEl0ZW0s
IGN1cnJlbnRJdGVtLmdldCgpLCB0eXBlLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQpOwog
fQogCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXIp
Cit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6c2V0RGVmZXJzTG9hZGluZyhi
b29sIGRlZmVyKQogewogICAgIG1fZGVmZXJzTG9hZGluZyA9IGRlZmVyOwogICAgIGlmICghZGVm
ZXIgJiYgbV9kZWZlcnJlZEl0ZW0pIHsKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXIpCiAgICAgfQogfQogCi12b2lk
IEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24oKQordm9p
ZCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckJhY2tGb3J3YXJkTmF2
aWdhdGlvbigpCiB7CiAgICAgTE9HKEhpc3RvcnksICJIaXN0b3J5Q29udHJvbGxlciAlcCB1cGRh
dGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb246IFVwZGF0aW5nIEhpc3RvcnkgZm9yIGJhY2svZm9y
d2FyZCBuYXZpZ2F0aW9uIGluIGZyYW1lICVwIChtYWluIGZyYW1lICVkKSAlcyIsIHRoaXMsICZt
X2ZyYW1lLCBtX2ZyYW1lLmlzTWFpbkZyYW1lKCksIG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKSA/IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKIApAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgSGlzdG9y
eUNvbnRyb2xsZXI6OnVwZGF0ZUZvckJhY2tGb3J3YXJkTmF2aWdhdGlvbigpCiAgICAgdXBkYXRl
Q3VycmVudEl0ZW0oKTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVs
b2FkKCkKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWxv
YWQoKQogewogICAgIExPRyhIaXN0b3J5LCAiSGlzdG9yeUNvbnRyb2xsZXIgJXAgdXBkYXRlRm9y
UmVsb2FkOiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWxvYWQgaW4gZnJhbWUgJXAgKG1haW4gZnJh
bWUgJWQpICVzIiwgdGhpcywgJm1fZnJhbWUsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSwgbV9mcmFt
ZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpID8gbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpIDogIiIpOwogCkBAIC0zNzUsNyAr
Mzc1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVsb2FkKCkKIC8vICAg
ICAyKSBHbG9iYWwgaGlzdG9yeTogSGFuZGxlZCBieSB0aGUgY2xpZW50LgogLy8gICAgIDMpIFZp
c2l0ZWQgbGlua3M6IEhhbmRsZWQgYnkgdGhlIFBhZ2VHcm91cC4KIAotdm9pZCBIaXN0b3J5Q29u
dHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2FkKEhpc3RvcnlVcGRhdGVUeXBlIHVwZGF0ZVR5
cGUpCit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRh
cmRMb2FkKEhpc3RvcnlVcGRhdGVUeXBlIHVwZGF0ZVR5cGUpCiB7CiAgICAgTE9HKEhpc3Rvcnks
ICJIaXN0b3J5Q29udHJvbGxlciAlcCB1cGRhdGVGb3JTdGFuZGFyZExvYWQ6IFVwZGF0aW5nIEhp
c3RvcnkgZm9yIHN0YW5kYXJkIGxvYWQgaW4gZnJhbWUgJXAgKG1haW4gZnJhbWUgJWQpICVzIiwg
dGhpcywgJm1fZnJhbWUsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSwgbV9mcmFtZS5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAKQEAgLTQw
OSw3ICs0MDksNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExv
YWQoSGlzdG9yeVVwZGF0ZVR5cGUgdXBkYXRlVHlwZSkKICAgICB9CiB9CiAKLXZvaWQgSGlzdG9y
eUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCgp
Cit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RX
aXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KCkKIHsKICAgICBMT0coSGlzdG9yeSwgIkhpc3RvcnlD
b250cm9sbGVyICVwIHVwZGF0ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDog
VXBkYXRpbmcgSGlzdG9yeSBmb3IgcmVkaXJlY3QgbG9hZCBpbiBmcmFtZSAlcCAobWFpbiBmcmFt
ZSAlZCkgJXMiLCB0aGlzLCAmbV9mcmFtZSwgbV9mcmFtZS5pc01haW5GcmFtZSgpLCBtX2ZyYW1l
LmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgPyBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCktPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkgOiAiIik7CiAgICAgCkBAIC00NDUs
NyArNDQ1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RXaXRo
TG9ja2VkQmFja0ZvcndhcmRMaXN0KCkKICAgICB9CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xs
ZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KCkKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlD
b250cm9sbGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCgpCiB7CiAgICAgTE9HKEhpc3Rvcnks
ICJIaXN0b3J5Q29udHJvbGxlciAlcCB1cGRhdGVGb3JDbGllbnRSZWRpcmVjdDogVXBkYXRpbmcg
SGlzdG9yeSBmb3IgY2xpZW50IHJlZGlyZWN0IGluIGZyYW1lICVwIChtYWluIGZyYW1lICVkKSAl
cyIsIHRoaXMsICZtX2ZyYW1lLCBtX2ZyYW1lLmlzTWFpbkZyYW1lKCksIG1fZnJhbWUubG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKSA/IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKIApAQCAtNDY1LDcgKzQ2NSw3IEBA
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KCkKICAgICB9
CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNvbW1pdCgpCit2b2lkIEZy
YW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KCkKIHsKICAgICBG
cmFtZUxvYWRlciYgZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpOwogICAgIExPRyhIaXN0
b3J5LCAiSGlzdG9yeUNvbnRyb2xsZXIgJXAgdXBkYXRlRm9yQ29tbWl0OiBVcGRhdGluZyBIaXN0
b3J5IGZvciBjb21taXQgaW4gZnJhbWUgJXAgKG1haW4gZnJhbWUgJWQpICVzIiwgdGhpcywgJm1f
ZnJhbWUsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSwgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpID8gbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpIDogIiIpOwpAQCAtNDk1LDE5ICs0OTUsMTkgQEAgdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KCkKICAgICB9CiB9CiAKLWJvb2wgSGlzdG9yeUNv
bnRyb2xsZXI6OmlzUmVwbGFjZUxvYWRUeXBlV2l0aFByb3Zpc2lvbmFsSXRlbShGcmFtZUxvYWRU
eXBlIHR5cGUpCitib29sIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6aXNSZXBsYWNl
TG9hZFR5cGVXaXRoUHJvdmlzaW9uYWxJdGVtKEZyYW1lTG9hZFR5cGUgdHlwZSkKIHsKICAgICAv
LyBHb2luZyBiYWNrIHRvIGFuIGVycm9yIHBhZ2UgaW4gYSBzdWJmcmFtZSBjYW4gdHJpZ2dlciBh
IEZyYW1lTG9hZFR5cGU6OlJlcGxhY2UKICAgICAvLyB3aGlsZSBtX3Byb3Zpc2lvbmFsSXRlbSBp
cyBzZXQsIHNvIHdlIG5lZWQgdG8gY29tbWl0IGl0LgogICAgIHJldHVybiB0eXBlID09IEZyYW1l
TG9hZFR5cGU6OlJlcGxhY2UgJiYgbV9wcm92aXNpb25hbEl0ZW07CiB9CiAKLWJvb2wgSGlzdG9y
eUNvbnRyb2xsZXI6OmlzUmVsb2FkVHlwZVdpdGhQcm92aXNpb25hbEl0ZW0oRnJhbWVMb2FkVHlw
ZSB0eXBlKQorYm9vbCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OmlzUmVsb2FkVHlw
ZVdpdGhQcm92aXNpb25hbEl0ZW0oRnJhbWVMb2FkVHlwZSB0eXBlKQogewogICAgIHJldHVybiAo
dHlwZSA9PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQgfHwgdHlwZSA9PSBGcmFtZUxvYWRUeXBlOjpS
ZWxvYWRGcm9tT3JpZ2luKSAmJiBtX3Byb3Zpc2lvbmFsSXRlbTsKIH0KIAotdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0KCkKK3ZvaWQgRnJhbWVMb2FkZXI6
Okhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVVcGRhdGVGb3JDb21taXQoKQogewogICAgIC8v
IFRoZSBmcmFtZSB0aGF0IG5hdmlnYXRlZCB3aWxsIG5vdyBoYXZlIGEgbnVsbCBwcm92aXNpb25h
bCBpdGVtLgogICAgIC8vIElnbm9yZSBpdCBhbmQgaXRzIGNoaWxkcmVuLgpAQCAtNTQyLDcgKzU0
Miw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVVwZGF0ZUZvckNvbW1pdCgp
CiAgICAgICAgIGNoaWxkLT5sb2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlVXBkYXRlRm9yQ29t
bWl0KCk7CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclNhbWVEb2N1bWVu
dE5hdmlnYXRpb24oKQordm9pZCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0
ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oKQogewogICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50
KCktPnVybCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTY0LDcgKzU2NCw3IEBA
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24o
KQogICAgIH0KIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9y
U2FtZURvY3VtZW50TmF2aWdhdGlvbigpCit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJv
bGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCiB7CiAgICAg
Ly8gVGhlIGZyYW1lIHRoYXQgbmF2aWdhdGVkIHdpbGwgbm93IGhhdmUgYSBudWxsIHByb3Zpc2lv
bmFsIGl0ZW0uCiAgICAgLy8gSWdub3JlIGl0IGFuZCBpdHMgY2hpbGRyZW4uCkBAIC01ODYsNyAr
NTg2LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yU2FtZURv
Y3VtZW50TmF2aWdhdGlvbigpCiAgICAgICAgIGNoaWxkLT5sb2FkZXIoKS5oaXN0b3J5KCkucmVj
dXJzaXZlVXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpOwogfQogCi12b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjp1cGRhdGVGb3JGcmFtZUxvYWRDb21wbGV0ZWQoKQordm9pZCBGcmFtZUxv
YWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckZyYW1lTG9hZENvbXBsZXRlZCgpCiB7
CiAgICAgLy8gRXZlbiBpZiBhbHJlYWR5IGNvbXBsZXRlLCB3ZSBtaWdodCBoYXZlIHNldCBhIHBy
ZXZpb3VzIGl0ZW0gb24gYSBmcmFtZSB0aGF0CiAgICAgLy8gZGlkbid0IGRvIGFueSBkYXRhIGxv
YWRpbmcgb24gdGhlIHBhc3QgdHJhbnNhY3Rpb24uIE1ha2Ugc3VyZSB0byB0cmFjayB0aGF0CkBA
IC01OTQsMjEgKzU5NCwyMSBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JGcmFt
ZUxvYWRDb21wbGV0ZWQoKQogICAgIG1fZnJhbWVMb2FkQ29tcGxldGUgPSB0cnVlOwogfQogCi12
b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSkK
K3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjpzZXRDdXJyZW50SXRlbShIaXN0
b3J5SXRlbSYgaXRlbSkKIHsKICAgICBtX2ZyYW1lTG9hZENvbXBsZXRlID0gZmFsc2U7CiAgICAg
bV9wcmV2aW91c0l0ZW0gPSBtX2N1cnJlbnRJdGVtOwogICAgIG1fY3VycmVudEl0ZW0gPSAmaXRl
bTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0Q3VycmVudEl0ZW1UaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlD
b250cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
IHRpdGxlKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgdGhlIHRpdGxlJ3MgZGlyZWN0
aW9uLgogICAgIGlmIChtX2N1cnJlbnRJdGVtKQogICAgICAgICBtX2N1cnJlbnRJdGVtLT5zZXRU
aXRsZSh0aXRsZS5zdHJpbmcpOwogfQogCi1ib29sIEhpc3RvcnlDb250cm9sbGVyOjpjdXJyZW50
SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdAorYm9vbCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNv
bnRyb2xsZXI6OmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCgpIGNvbnN0CiB7CiAgICAgLy8g
RnJvbSB0aGUgSFRNTDUgc3BlYyBmb3IgbG9jYXRpb24uYXNzaWduKCk6CiAgICAgLy8gICJJZiB0
aGUgYnJvd3NpbmcgY29udGV4dCdzIHNlc3Npb24gaGlzdG9yeSBjb250YWlucyBvbmx5IG9uZSBE
b2N1bWVudCwKQEAgLTYxNywxOSArNjE3LDE5IEBAIGJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6OmN1
cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY3VycmVudEl0
ZW0gJiYgIW1fcHJldmlvdXNJdGVtICYmIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobV9jdXJyZW50
SXRlbS0+dXJsU3RyaW5nKCksIGFib3V0QmxhbmtVUkwoKS5zdHJpbmcoKSk7CiB9CiAKLXZvaWQg
SGlzdG9yeUNvbnRyb2xsZXI6OmNsZWFyUHJldmlvdXNJdGVtKCkKK3ZvaWQgRnJhbWVMb2FkZXI6
Okhpc3RvcnlDb250cm9sbGVyOjpjbGVhclByZXZpb3VzSXRlbSgpCiB7CiAgICAgbV9wcmV2aW91
c0l0ZW0gPSBudWxscHRyOwogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gbV9mcmFtZS50cmVlKCku
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkp
CiAgICAgICAgIGNoaWxkLT5sb2FkZXIoKS5oaXN0b3J5KCkuY2xlYXJQcmV2aW91c0l0ZW0oKTsK
IH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJ
dGVtKiBpdGVtKQordm9pZCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OnNldFByb3Zp
c2lvbmFsSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKIHsKICAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9
IGl0ZW07CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OmluaXRpYWxpemVJdGVtKEhpc3Rv
cnlJdGVtJiBpdGVtKQordm9pZCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OmluaXRp
YWxpemVJdGVtKEhpc3RvcnlJdGVtJiBpdGVtKQogewogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1
bWVudExvYWRlciA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBBU1NF
UlQoZG9jdW1lbnRMb2FkZXIpOwpAQCAtNjc0LDcgKzY3NCw3IEBAIHZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OmluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtJiBpdGVtKQogICAgIGl0ZW0uc2V0Rm9y
bUluZm9Gcm9tUmVxdWVzdChkb2N1bWVudExvYWRlci0+cmVxdWVzdCgpKTsKIH0KIAotUmVmPEhp
c3RvcnlJdGVtPiBIaXN0b3J5Q29udHJvbGxlcjo6Y3JlYXRlSXRlbSgpCitSZWY8SGlzdG9yeUl0
ZW0+IEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6Y3JlYXRlSXRlbSgpCiB7CiAgICAg
UmVmPEhpc3RvcnlJdGVtPiBpdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZSgpOwogICAgIGluaXRp
YWxpemVJdGVtKGl0ZW0pOwpAQCAtNjg1LDcgKzY4NSw3IEBAIFJlZjxIaXN0b3J5SXRlbT4gSGlz
dG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW0oKQogICAgIHJldHVybiBpdGVtOwogfQogCi1SZWY8
SGlzdG9yeUl0ZW0+IEhpc3RvcnlDb250cm9sbGVyOjpjcmVhdGVJdGVtVHJlZShGcmFtZSYgdGFy
Z2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KQorUmVmPEhpc3RvcnlJdGVtPiBGcmFtZUxvYWRl
cjo6SGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW1UcmVlKEZyYW1lJiB0YXJnZXRGcmFtZSwg
Ym9vbCBjbGlwQXRUYXJnZXQpCiB7CiAgICAgUmVmPEhpc3RvcnlJdGVtPiBiZkl0ZW0gPSBjcmVh
dGVJdGVtKCk7CiAgICAgaWYgKCFtX2ZyYW1lTG9hZENvbXBsZXRlKQpAQCAtNzI3LDcgKzcyNyw3
IEBAIFJlZjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW1UcmVlKEZy
YW1lJiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlwCiAvLyB0cmFja2luZyB3aGV0aGVyIGVhY2ggZnJh
bWUgYWxyZWFkeSBoYXMgdGhlIGNvbnRlbnQgdGhlIGl0ZW0gcmVxdWVzdHMuICBJZiB0aGVyZSBp
cwogLy8gYSBtYXRjaCwgd2Ugc2V0IHRoZSBwcm92aXNpb25hbCBpdGVtIGFuZCByZWN1cnNlLiAg
T3RoZXJ3aXNlIHdlIHdpbGwgcmVsb2FkIHRoYXQKIC8vIGZyYW1lIGFuZCBhbGwgaXRzIGtpZHMg
aW4gcmVjdXJzaXZlR29Ub0l0ZW0uCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVT
ZXRQcm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVtKiBmcm9tSXRl
bSkKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVTZXRQcm92
aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVtKiBmcm9tSXRlbSkKIHsK
ICAgICBpZiAoIWl0ZW1zQXJlQ2xvbmVzKGl0ZW0sIGZyb21JdGVtKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNzQ5LDcgKzc0OSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVNl
dFByb3Zpc2lvbmFsSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0CiAKIC8vIFdlIG5v
dyB0cmF2ZXJzZSB0aGUgZnJhbWUgdHJlZSBhbmQgaXRlbSB0cmVlIGEgc2Vjb25kIHRpbWUsIGxv
YWRpbmcgZnJhbWVzIHRoYXQKIC8vIGRvIGhhdmUgdGhlIGNvbnRlbnQgdGhlIGl0ZW0gcmVxdWVz
dHMuCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVHb1RvSXRlbShIaXN0b3J5SXRl
bSYgaXRlbSwgSGlzdG9yeUl0ZW0qIGZyb21JdGVtLCBGcmFtZUxvYWRUeXBlIHR5cGUsIFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQpCit2b2lk
IEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlR29Ub0l0ZW0oSGlzdG9y
eUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVtKiBmcm9tSXRlbSwgRnJhbWVMb2FkVHlwZSB0eXBlLCBT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkKQog
ewogICAgIGlmICghaXRlbXNBcmVDbG9uZXMoaXRlbSwgZnJvbUl0ZW0pKSB7CiAgICAgICAgIG1f
ZnJhbWUubG9hZGVyKCkubG9hZEl0ZW0oaXRlbSwgZnJvbUl0ZW0sIHR5cGUsIHNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCk7CkBAIC03NjgsNyArNzY4LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJv
bGxlcjo6cmVjdXJzaXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVtKiBm
cm9tSXQKIH0KIAogLy8gVGhlIGZvbGxvd2luZyBsb2dpYyBtdXN0IGJlIGtlcHQgaW4gc3luYyB3
aXRoIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzQ2xvbmUoKS4KLWJvb2wg
SGlzdG9yeUNvbnRyb2xsZXI6Oml0ZW1zQXJlQ2xvbmVzKEhpc3RvcnlJdGVtJiBpdGVtMSwgSGlz
dG9yeUl0ZW0qIGl0ZW0yKSBjb25zdAorYm9vbCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xs
ZXI6Oml0ZW1zQXJlQ2xvbmVzKEhpc3RvcnlJdGVtJiBpdGVtMSwgSGlzdG9yeUl0ZW0qIGl0ZW0y
KSBjb25zdAogewogICAgIC8vIElmIHRoZSBpdGVtIHdlJ3JlIGdvaW5nIHRvIGlzIGEgY2xvbmUg
b2YgdGhlIGl0ZW0gd2UncmUgYXQsIHRoZW4gd2UgZG8KICAgICAvLyBub3QgbmVlZCB0byBsb2Fk
IGl0IGFnYWluLiAgVGhlIGN1cnJlbnQgZnJhbWUgdHJlZSBhbmQgdGhlIGZyYW1lIHRyZWUKQEAg
LTc4NSw3ICs3ODUsNyBAQCBib29sIEhpc3RvcnlDb250cm9sbGVyOjppdGVtc0FyZUNsb25lcyhI
aXN0b3J5SXRlbSYgaXRlbTEsIEhpc3RvcnlJdGVtKiBpdGVtMikgYwogfQogCiAvLyBIZWxwZXIg
bWV0aG9kIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjdXJyZW50IGZyYW1lIHRyZWUgbWF0
Y2hlcyBnaXZlbiBoaXN0b3J5IGl0ZW0ncy4KLWJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6OmN1cnJl
bnRGcmFtZXNNYXRjaEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0pIGNvbnN0Citib29sIEZyYW1lTG9h
ZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6Y3VycmVudEZyYW1lc01hdGNoSXRlbShIaXN0b3J5SXRl
bSYgaXRlbSkgY29uc3QKIHsKICAgICBpZiAoKCFtX2ZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCku
aXNFbXB0eSgpIHx8ICFpdGVtLnRhcmdldCgpLmlzRW1wdHkoKSkgJiYgbV9mcmFtZS50cmVlKCku
dW5pcXVlTmFtZSgpICE9IGl0ZW0udGFyZ2V0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTgwMiw3ICs4MDIsNyBAQCBib29sIEhpc3RvcnlDb250cm9sbGVyOjpjdXJyZW50RnJhbWVzTWF0
Y2hJdGVtKEhpc3RvcnlJdGVtJiBpdGVtKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVCYWNrRm9yd2FyZExpc3RDbGlwcGVkQXRUYXJn
ZXQoYm9vbCBkb0NsaXApCit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBk
YXRlQmFja0ZvcndhcmRMaXN0Q2xpcHBlZEF0VGFyZ2V0KGJvb2wgZG9DbGlwKQogewogICAgIC8v
IEluIHRoZSBjYXNlIG9mIHNhdmluZyBzdGF0ZSBhYm91dCBhIHBhZ2Ugd2l0aCBmcmFtZXMsIHdl
IHN0b3JlIGEgdHJlZSBvZiBpdGVtcyB0aGF0IG1pcnJvcnMgdGhlIGZyYW1lIHRyZWUuICAKICAg
ICAvLyBUaGUgaXRlbSB0aGF0IHdhcyB0aGUgdGFyZ2V0IG9mIHRoZSB1c2VyJ3MgbmF2aWdhdGlv
biBpcyBkZXNpZ25hdGVkIGFzIHRoZSAidGFyZ2V0SXRlbSIuICAKQEAgLTgyNCw3ICs4MjQsNyBA
QCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVCYWNrRm9yd2FyZExpc3RDbGlwcGVkQXRU
YXJnZXQoYm9vbCBkb0NsaXApCiAgICAgcGFnZS0+YmFja0ZvcndhcmQoKS5hZGRJdGVtKFdURk1v
dmUodG9wSXRlbSkpOwogfQogCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVDdXJyZW50
SXRlbSgpCit2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlQ3VycmVu
dEl0ZW0oKQogewogICAgIGlmICghbV9jdXJyZW50SXRlbSkKICAgICAgICAgcmV0dXJuOwpAQCAt
ODQ5LDcgKzg0OSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUN1cnJlbnRJdGVt
KCkKICAgICB9CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZShSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIHN0YXRlT2JqZWN0LCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3ZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250
cm9sbGVyOjpwdXNoU3RhdGUoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzdGF0ZU9i
amVjdCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAg
ICAgaWYgKCFtX2N1cnJlbnRJdGVtKQogICAgICAgICByZXR1cm47CkBAIC04ODAsNyArODgwLDcg
QEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cHVzaFN0YXRlKFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+JiYgc3RhdGVPYmplY3QsIGMKICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgp
LnVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVw
bGFjZVN0YXRlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc3RhdGVPYmplY3QsIGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQordm9pZCBGcmFtZUxv
YWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZShSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmIHN0YXRlT2JqZWN0LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZykKIHsKICAgICBpZiAoIW1fY3VycmVudEl0ZW0pCiAgICAgICAgIHJldHVy
bjsKQEAgLTkwMiw3ICs5MDIsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZXBsYWNlU3Rh
dGUoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzdGF0ZU9iamVjdAogICAgIG1fZnJh
bWUubG9hZGVyKCkuY2xpZW50KCkudXBkYXRlR2xvYmFsSGlzdG9yeSgpOwogfQogCi12b2lkIEhp
c3RvcnlDb250cm9sbGVyOjpyZXBsYWNlQ3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCit2
b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVwbGFjZUN1cnJlbnRJdGVtKEhp
c3RvcnlJdGVtKiBpdGVtKQogewogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAppbmRleCBkOTUyNTJjZjczM2Zk
MTI1NjNhNmRlMGJmMjdjMmM1YjI0ZTliOTJjLi42ZDVkZTg0ZjIxNzk4ODYzYmE4ZWVkZThiNjQ2
ZmU5NDhhNDU4ODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIu
aApAQCAtMjksMTAgKzI5LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJGcmFtZUxv
YWRlclR5cGVzLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsNyArNDEsNyBAQCBl
bnVtIGNsYXNzIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiAKIHN0cnVjdCBT
dHJpbmdXaXRoRGlyZWN0aW9uOwogCi1jbGFzcyBIaXN0b3J5Q29udHJvbGxlciB7CitjbGFzcyBG
cmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEhpc3RvcnlDb250cm9sbGVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKaW5kZXggYTJjZTliOTYwMDc2
NWU0MjYxOGMyZTZiNDQwOGYwOWYzNjMwNzE1My4uMDNjMzg1Y2NjZGVkODI0MGY5YjQwYjBlYzhh
YzFjOWU0OTQ2ZjUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1l
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKQEAg
LTMxLDkgKzMxLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIK
LSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>