<?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>137106</bug_id>
          
          <creation_ts>2014-09-24 22:28:33 -0700</creation_ts>
          <short_desc>Stop using legacy NODE_TYPE_CASTS() macro in svg/</short_desc>
          <delta_ts>2014-09-25 10:25:55 -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>SVG</component>
          <version>528+ (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>
          <dependson>137056</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1037162</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-24 22:28:33 -0700</bug_when>
    <thetext>Stop using legacy NODE_TYPE_CAST() in svg/ and use the new SPECIALIZE_TYPE_TRAITS_*() macro instead so that is&lt;&gt;() / downcast&lt;&gt;() can be used for those types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037165</commentid>
    <comment_count>1</comment_count>
      <attachid>238644</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-24 23:42:27 -0700</bug_when>
    <thetext>Created attachment 238644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037166</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-24 23:44:30 -0700</bug_when>
    <thetext>Attachment 238644 did not pass style-queue:


ERROR: Source/WebCore/svg/animation/SVGSMILElement.h:242:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/svg/SVGGraphicsElement.h:87:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/svg/SVGPolyElement.h:67:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/svg/SVGAnimateElement.h:83:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/svg/SVGTextContentElement.h:124:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h:87:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 6 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037245</commentid>
    <comment_count>3</comment_count>
      <attachid>238644</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-25 10:25:50 -0700</bug_when>
    <thetext>Comment on attachment 238644
Patch

Clearing flags on attachment: 238644

Committed r173970: &lt;http://trac.webkit.org/changeset/173970&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037246</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-25 10:25:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238644</attachid>
            <date>2014-09-24 23:42:27 -0700</date>
            <delta_ts>2014-09-25 10:25:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137106-20140924234225.patch</filename>
            <type>text/plain</type>
            <size>46387</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczOTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTcyYjE1MTZkNjExYzg3
NjJmNTMwMjE0ZjIxNWYyYzljOTYxZGZhYS4uNzliNWMzMzRlYzU3OWI5MWUyYzFiOGMzY2MyYmVh
YmM1MjlmNTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEzNyBAQAogMjAxNC0wOS0yNCAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgU3RvcCB1c2luZyBs
ZWdhY3kgTk9ERV9UWVBFX0NBU1RTKCkgbWFjcm8gaW4gc3ZnLworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MTA2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCB1c2luZyBsZWdhY3kgTk9ERV9UWVBF
X0NBU1RTKCkgaW4gc3ZnLyBhbmQgdXNlIHRoZSBuZXcKKyAgICAgICAgU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU18qKCkgbWFjcm8gaW5zdGVhZCBzbyB0aGF0IGlzPD4oKSAvIGRvd25jYXN0PD4oKQor
ICAgICAgICBjYW4gYmUgdXNlZCBmb3IgdGhvc2UgdHlwZXMuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OnByb3BlcnR5VmFsdWUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzKToKKyAgICAgICAgKiBkb20vbWFrZV9u
YW1lcy5wbDoKKyAgICAgICAgKHByaW50VHlwZUhlbHBlcnMpOgorICAgICAgICAqIGh0bWwvSFRN
TEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0xhYmVsYWJs
ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOgorICAgICAgICBS
ZW5hbWUgTm9kZVR5cGVDYXN0VHJhaXRzOjppcygpIHRvIE5vZGVUeXBlQ2FzdFRyYWl0czo6aXNU
eXBlKCkgdG8KKyAgICAgICAgYXZvaWQgbmFtaW5nIGNvbmZsaWN0IHdpdGggdGhlIGdsb2JhbCBp
czw+KCkgZnVuY3Rpb24uIFRoaXMgd2FzIGFuCisgICAgICAgIGlzc3VlIHdoZW4gaXM8PigpIHdh
cyBjYWxsZWQgZnJvbSBvbmUgb2YgdGhlIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucy4KKworICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0Jsb2NrOjpncmFwaGljc0VsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R0dyYWRpZW50U3RvcDo6Z3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpn
cmFwaGljc0VsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBl
cjo6cGF0aE9ubHlDbGlwcGluZyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUNvbnRhaW5lcjo6dHJhbnNmb3JtT25Ob25TY2FsaW5nU3Ryb2tlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdT
aGFwZTo6Z3JhcGhpY3NFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RyYW5zZm9ybWFibGVDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3VwcG9ydDo6dXBk
YXRlTWFza2VkQW5jZXN0b3JTaG91bGRJc29sYXRlQmxlbmRpbmcpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVy
U1ZHQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dGFyZ2V0UmVmZXJlbmNlRnJvbVJlc291cmNlKToKKyAgICAgICAg
KiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NWR0FuaW1hdGVFbGVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSB3aGVyZSBhcHByb3ByaWF0ZS4KKwor
ICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6aXNT
VkdBbmltYXRlRWxlbWVudCk6CisgICAgICAgIFVzZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTXyoo
KSBpbnN0ZWFkIG9mIE5PREVfVFlQRV9DQVNUUygpIGFuZCBhZGQKKyAgICAgICAgb3ZlcmxvYWQg
Zm9yIGlzU1ZHQW5pbWF0ZUVsZW1lbnQoKSB0YWtpbmcgYW4gU1ZHRWxlbWVudCBpbiBhcmd1bWVu
dCB0bworICAgICAgICBieXBhc3MgdGhlIGlzPFNWR0VsZW1lbnQ+KCkgY2hlY2sgd2hlbiB0aGUg
aW5wdXQgdHlwZSBpcyBhbiBTVkdFbGVtZW50LgorCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6Y3Vy
cmVudFZhbHVlc0ZvclZhbHVlc0FuaW1hdGlvbik6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6Z2V0Qm91bmRpbmdCb3gpOgorICAg
ICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIHdoZXJlIGFwcHJvcHJpYXRlLgorCisgICAg
ICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgIFVzZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
XyooKSBpbnN0ZWFkIG9mIE5PREVfVFlQRV9DQVNUUygpIGFuZCBkcm9wCisgICAgICAgIHRoZSBw
cmUtZXhpc3RpbmcgTm9kZVR5cGVDYXN0VHJhaXRzIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGFz
IGl0IGlzCisgICAgICAgIG5vdyBnZW5lcmF0ZWQgYnkgdGhlIG1hY3JvLgorCisgICAgICAgICog
c3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1NWR0dyYWRp
ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdHcmFkaWVudEVsZW1lbnQpOgorICAgICAgICBVc2Ug
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU18qKCkgaW5zdGVhZCBvZiBOT0RFX1RZUEVfQ0FTVFMoKSBh
bmQgYWRkCisgICAgICAgIG92ZXJsb2FkIGZvciBpc1NWR0FuaW1hdGVFbGVtZW50KCkgdGFraW5n
IGFuIFNWR0VsZW1lbnQgaW4gYXJndW1lbnQgdG8KKyAgICAgICAgYnlwYXNzIHRoZSBpczxTVkdF
bGVtZW50PigpIGNoZWNrIHdoZW4gdGhlIGlucHV0IHR5cGUgaXMgYW4gU1ZHRWxlbWVudC4KKwor
ICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
U1ZHR3JhcGhpY3NFbGVtZW50KToKKyAgICAgICAgVXNlIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
KigpIGluc3RlYWQgb2YgTk9ERV9UWVBFX0NBU1RTKCkuCisKKyAgICAgICAgKiBzdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudDo6Y29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NW
R0xvY2F0YWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMb2NhdGFibGU6OmdldFRyYW5z
Zm9ybVRvRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1BvbHlFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVBvaW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6bG9va3VwT3JDcmVhdGVQb2ludHNXcmFwcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmlzU1ZHUG9seUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICBV
c2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIHdoZXJlIGFwcHJvcHJpYXRlLgorCisgICAgICAgICog
c3ZnL1NWR1BvbHlFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjppc1NWR1BvbHlFbGVtZW50
KToKKyAgICAgICAgVXNlIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfKigpIGluc3RlYWQgb2YgTk9E
RV9UWVBFX0NBU1RTKCkgYW5kIGFkZAorICAgICAgICBvdmVybG9hZCBmb3IgaXNQb2x5RWxlbWVu
dCgpIHRha2luZyBhbiBTVkdFbGVtZW50IGluIGFyZ3VtZW50IHRvCisgICAgICAgIGJ5cGFzcyB0
aGUgaXM8U1ZHRWxlbWVudD4oKSBjaGVjayB3aGVuIHRoZSBpbnB1dCB0eXBlIGlzIGFuIFNWR0Vs
ZW1lbnQuCisKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6Y29sbGVjdEdyYWRpZW50
QXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplVGV4dExl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6Omxvb2t1cE9y
Q3JlYXRlVGV4dExlbmd0aFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRl
bnRFbGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKToKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRv
d25jYXN0PD4oKSB3aGVyZSBhcHByb3ByaWF0ZS4KKworICAgICAgICAqIHN2Zy9TVkdUZXh0Q29u
dGVudEVsZW1lbnQuaDoKKyAgICAgICAgV2ViQ29yZTo6aXNTVkdUZXh0Q29udGVudEVsZW1lbnQp
OgorICAgICAgICBVc2UgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU18qKCkgaW5zdGVhZCBvZiBOT0RF
X1RZUEVfQ0FTVFMoKS4KKworICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRvQ2xpcFBhdGgpOgorICAgICAgICBVc2UgaXM8
PigpIC8gZG93bmNhc3Q8PigpIHdoZXJlIGFwcHJvcHJpYXRlLiBBbHNvIHVzZSB0aWdodGVyIHR5
cGluZworICAgICAgICBmb3IgdmFsdWUgcmV0dXJuZWQgYnkgc2hhZG93VHJlZUVsZW1lbnQoKS4K
KworICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpjb25uZWN0Q29uZGl0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVjdENvbmRpdGlvbnMpOgorICAgICAgICBV
c2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIHdoZXJlIGFwcHJvcHJpYXRlLgorCisgICAgICAgICog
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdT
TUlMRWxlbWVudCk6CisgICAgICAgIFVzZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTXyooKSBpbnN0
ZWFkIG9mIE5PREVfVFlQRV9DQVNUUygpIGFuZCBkcm9wCisgICAgICAgIHRoZSBwcmUtZXhpc3Rp
bmcgTm9kZVR5cGVDYXN0VHJhaXRzIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGFzIGl0IGlzCisg
ICAgICAgIG5vdyBnZW5lcmF0ZWQgYnkgdGhlIG1hY3JvLgorCisyMDE0LTA5LTI0ICBDaHJpc3Rv
cGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBVc2UgdGlnaHRlciB0eXBp
bmcgZm9yIHJlbmRlciBvYmplY3RzIGluIFJlbmRlckdlb21ldHJ5TWFwCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcxMDIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBiMmYx
MDQxNGE1ZGI5ZTYyODc5MDFmNTU1ZjdkOTE5MDk3Yjk1NjFmLi44MmI2NWJhNDkzZTExNWNjYzhj
OGQyOTdkY2MwNTVjOTY4MzM4NGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTcxMiw3ICsxNzEyLDcgQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnQKIAogICAgICAgICByZW5kZXJlciA9IHN0eWxlZE5vZGUtPnJlbmRl
cmVyKCk7CiAKLSAgICAgICAgaWYgKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlEaXNwbGF5ICYm
ICFyZW5kZXJlciAmJiBpc1NWR0VsZW1lbnQoKnN0eWxlZE5vZGUpICYmICFkb3duY2FzdDxTVkdF
bGVtZW50Pigqc3R5bGVkTm9kZSkuaXNWYWxpZCgpKQorICAgICAgICBpZiAocHJvcGVydHlJRCA9
PSBDU1NQcm9wZXJ0eURpc3BsYXkgJiYgIXJlbmRlcmVyICYmIGlzPFNWR0VsZW1lbnQ+KCpzdHls
ZWROb2RlKSAmJiAhZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnN0eWxlZE5vZGUpLmlzVmFsaWQoKSkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHN0eWxlID0gY29tcHV0ZVJl
bmRlclN0eWxlRm9yUHJvcGVydHkoc3R5bGVkTm9kZSwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVy
LCBwcm9wZXJ0eUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDI4OTJiZGZhOGFhNTBlMGQ3Yzk2
ODM2YjE3NjIzYjcyYmY3ODA0NWYuLjUyMzkzNTU0NGFlNjRkZWU0MTUwODYxYjlmYmNjODY2Yjkx
MTU5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNjcyLDcgKzY3Miw3IEBAIE5PREVfVFlQRV9D
QVNUUyhFbGVtZW50KQogCiB0ZW1wbGF0ZSA8Pgogc3RydWN0IE5vZGVUeXBlQ2FzdFRyYWl0czxj
b25zdCBFbGVtZW50LCBjb25zdCBOb2RlPiB7Ci0gICAgc3RhdGljIGJvb2wgaXMoY29uc3QgTm9k
ZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCk7IH0KKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCk7
IH0KIH07CiAKIGlubGluZSBib29sIE5vZGU6Omhhc0F0dHJpYnV0ZXMoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKaW5kZXggYzg4MTcyNTI2NTkyOWZhYWM1MGRlNGU4YzM3NTdhMDNjMWYyYmMwYi4uN2M4YTlh
Njg1ZTM5N2IyY2RiZDc5NjQ0ZGEwNzQ2ZWY2NTJkYjEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC03NDEs
MTIgKzc0MSwxMiBAQCBpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZUd1YXJh
bnRlZWRIb3N0RnJlZSgpIGNvbnN0CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFeHBlY3RlZFR5cGUs
IHR5cGVuYW1lIEFyZ1R5cGU+CiBzdHJ1Y3QgTm9kZVR5cGVDYXN0VHJhaXRzIHsKLSAgICBzdGF0
aWMgYm9vbCBpcyhBcmdUeXBlJik7CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKEFyZ1R5cGUmKTsK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFeHBlY3RlZFR5cGU+CiBzdHJ1Y3QgTm9kZVR5cGVD
YXN0VHJhaXRzPEV4cGVjdGVkVHlwZSwgRXhwZWN0ZWRUeXBlPiB7Ci0gICAgc3RhdGljIGJvb2wg
aXMoRXhwZWN0ZWRUeXBlJikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShFeHBlY3RlZFR5cGUmKSB7IHJldHVybiB0cnVlOyB9CiB9OwogCiAvLyBUeXBlIGNoZWNraW5n
IGZ1bmN0aW9uIGZvciBOb2RlcywgdG8gdXNlIGJlZm9yZSBjYXN0aW5nIHdpdGggZG93bmNhc3Q8
PigpLgpAQCAtNzU0LDcgKzc1NCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBFeHBlY3RlZFR5cGUs
IHR5cGVuYW1lIEFyZ1R5cGU+CiBpbmxpbmUgYm9vbCBpcyhBcmdUeXBlJiBub2RlKQogewogICAg
IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxFeHBlY3RlZFR5cGUsIEFyZ1R5cGU+Ojp2
YWx1ZSwgIlVubmVjZXNzYXJ5IHR5cGUgY2hlY2siKTsKLSAgICByZXR1cm4gTm9kZVR5cGVDYXN0
VHJhaXRzPGNvbnN0IEV4cGVjdGVkVHlwZSwgY29uc3QgQXJnVHlwZT46OmlzKG5vZGUpOworICAg
IHJldHVybiBOb2RlVHlwZUNhc3RUcmFpdHM8Y29uc3QgRXhwZWN0ZWRUeXBlLCBjb25zdCBBcmdU
eXBlPjo6aXNUeXBlKG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBl
LCB0eXBlbmFtZSBBcmdUeXBlPgpAQCAtNzYyLDcgKzc2Miw3IEBAIGlubGluZSBib29sIGlzKEFy
Z1R5cGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwogICAgIHN0YXRpY19hc3NlcnQoIXN0
ZDo6aXNfYmFzZV9vZjxFeHBlY3RlZFR5cGUsIEFyZ1R5cGU+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5
IHR5cGUgY2hlY2siKTsKLSAgICByZXR1cm4gTm9kZVR5cGVDYXN0VHJhaXRzPGNvbnN0IEV4cGVj
dGVkVHlwZSwgY29uc3QgQXJnVHlwZT46OmlzKCpub2RlKTsKKyAgICByZXR1cm4gTm9kZVR5cGVD
YXN0VHJhaXRzPGNvbnN0IEV4cGVjdGVkVHlwZSwgY29uc3QgQXJnVHlwZT46OmlzVHlwZSgqbm9k
ZSk7CiB9CiAKIC8vIERvd25jYXN0aW5nIGZ1bmN0aW9ucyBmb3IgTm9kZSB0eXBlcy4KQEAgLTc4
NSw3ICs3ODUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4g
aW5saW5lIHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOgogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBBcmdUeXBlPiBcCiAgICAgY2xhc3MgTm9kZVR5cGVDYXN0VHJhaXRzPGNvbnN0IENsYXNz
TmFtZSwgQXJnVHlwZT4geyBcCiAgICAgcHVibGljOiBcCi0gICAgICAgIHN0YXRpYyBib29sIGlz
KEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIGlzIyNDbGFzc05hbWUobm9kZSk7IH0gXAorICAgICAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoQXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gaXMjI0NsYXNzTmFt
ZShub2RlKTsgfSBcCiAgICAgcHJpdmF0ZToKIAogI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBs
IGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKaW5kZXggYWU5ZGMzYmIxZTcxNjgy
MWI3MWM4ZDJjNjNmNzgwMmJhYjMwNWEzMC4uNzk1N2VhNDRiZTY5NmQ0YjczOTQ3YTkwODBkYzcw
ZTUzNzEzZjQ1NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKQEAgLTYzOCw3ICs2MzgsNyBA
QCBjbGFzcyAkY2xhc3M7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KIGNsYXNzIE5vZGVU
eXBlQ2FzdFRyYWl0czxjb25zdCAkY2xhc3MsIEFyZ1R5cGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgYm9vbCBpcyhBcmdUeXBlJiBub2RlKSB7IHJldHVybiBjaGVja1RhZ05hbWUobm9kZSk7IH0K
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoQXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gY2hlY2tUYWdO
YW1lKG5vZGUpOyB9CiBwcml2YXRlOgogRU5ECiAgICAgICAgOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5oCmluZGV4IDZmODIzYTBlNmQyYmFlODBmZDA4MzIwMTFjNjMyMzM2NTM3Mzk4OTkuLjg3
ZjJmZGI3ZDIzZDk0OGRhNTgzZWY4NWE1NzA1Nzg3ODFjMWU1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBpbmxpbmUgYm9vbCBpc0hUTUxFbGVtZW50
KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNIVE1MRWxlbWVudCgpOyB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPgogc3RydWN0IE5vZGVUeXBlQ2FzdFRyYWl0czxjb25z
dCBIVE1MRWxlbWVudCwgQXJnVHlwZT4gewotICAgIHN0YXRpYyBib29sIGlzKEFyZ1R5cGUmIG5v
ZGUpIHsgcmV0dXJuIGlzSFRNTEVsZW1lbnQobm9kZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoQXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gaXNIVE1MRWxlbWVudChub2RlKTsgfQogfTsKIAog
Tk9ERV9UWVBFX0NBU1RTKEhUTUxFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAppbmRleCAyOWI3MDAzYWZmMzUxZmNiNThmN2VhZDA2ZDcwNTQ2OWNmOWRkOGFlLi4y
OGI5MjU2ZjRjMWEzNzM5MzFjMDEyYmY5MDU1NTk0ODU4YjhlYzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTE2LDcgKzkxNiw3IEBAIGlubGluZSBib29sIGlz
SFRNTE1lZGlhRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzRWxlbWVu
dE5vZGUoKSAmCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPgogc3RydWN0IE5vZGVUeXBl
Q2FzdFRyYWl0czxjb25zdCBIVE1MTWVkaWFFbGVtZW50LCBBcmdUeXBlPiB7Ci0gICAgc3RhdGlj
IGJvb2wgaXMoQXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gaXNIVE1MTWVkaWFFbGVtZW50KG5vZGUp
OyB9CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIGlzSFRN
TE1lZGlhRWxlbWVudChub2RlKTsgfQogfTsKIAogTk9ERV9UWVBFX0NBU1RTKEhUTUxNZWRpYUVs
ZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmlu
ZGV4IGQzMDA0ZmU0M2VmNTU1OWM4N2MzYWJjY2I1NjQwOTY0MWFmOGZkN2QuLmE5ZWVlODRhM2Nk
MDJjNzcxNjI4NDFjMjMyNjg5ZGIxODVmM2M1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC0xNjMsNyArMTYzLDcgQEAgaW5saW5lIGJvb2wg
aXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUu
aXNQbHVnaW5FbGUKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEFyZ1R5cGU+CiBzdHJ1Y3QgTm9kZVR5
cGVDYXN0VHJhaXRzPGNvbnN0IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQsIEFyZ1R5cGU+IHsKLSAg
ICBzdGF0aWMgYm9vbCBpcyhBcmdUeXBlJiBub2RlKSB7IHJldHVybiBpc0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQobm9kZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoQXJnVHlwZSYgbm9kZSkg
eyByZXR1cm4gaXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KG5vZGUpOyB9CiB9OwogCiBOT0RFX1RZ
UEVfQ0FTVFMoSFRNTFBsdWdJbkltYWdlRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFi
bGVFbGVtZW50LmgKaW5kZXggNDg5NTY3MjUzNTRmY2Q3NzcwNmQyOTljMzAzNTFjNzI0Njg1MTQz
YS4uM2NlNmQwNDhmMTNiYzQyMjg1YmRkYzU5MDkwNzkyNzdhYWJjYzZjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgaW5saW5lIGJvb2wg
aXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNIVE1M
RWxlbWVudCgpICYKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEFyZ1R5cGU+CiBzdHJ1Y3QgTm9kZVR5
cGVDYXN0VHJhaXRzPGNvbnN0IExhYmVsYWJsZUVsZW1lbnQsIEFyZ1R5cGU+IHsKLSAgICBzdGF0
aWMgYm9vbCBpcyhBcmdUeXBlJiBub2RlKSB7IHJldHVybiBpc0xhYmVsYWJsZUVsZW1lbnQobm9k
ZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoQXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gaXNM
YWJlbGFibGVFbGVtZW50KG5vZGUpOyB9CiB9OwogCiBOT0RFX1RZUEVfQ0FTVFMoTGFiZWxhYmxl
RWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCmluZGV4IDZkMDVkYmY2
NjI3MGNmZjA4YTdiYTNlNTU5ODBlMjM4YTE3NTlmMmQuLjY3Y2FiN2JkMGIzMGNkMzQ4ZTE0MjYy
MjEyNzEzNzBhYzY0Y2MxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaApA
QCAtNzgsNyArNzgsNyBAQCBpbmxpbmUgYm9vbCBpc01hdGhNTEVsZW1lbnQoY29uc3QgTm9kZSYg
bm9kZSkgeyByZXR1cm4gbm9kZS5pc01hdGhNTEVsZW1lbnQoKTsgfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQXJnVHlwZT4KIHN0cnVjdCBOb2RlVHlwZUNhc3RUcmFpdHM8Y29uc3QgTWF0aE1MRWxl
bWVudCwgQXJnVHlwZT4gewotICAgIHN0YXRpYyBib29sIGlzKEFyZ1R5cGUmIG5vZGUpIHsgcmV0
dXJuIGlzTWF0aE1MRWxlbWVudChub2RlKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShBcmdU
eXBlJiBub2RlKSB7IHJldHVybiBpc01hdGhNTEVsZW1lbnQobm9kZSk7IH0KIH07CiAKIE5PREVf
VFlQRV9DQVNUUyhNYXRoTUxFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdCbG9jay5oCmluZGV4IDlkMThlN2ZhZGMwMzlhMGU4NzdmNTIxYjFiYzljNzc4
MDUyZGFmNzMuLjdhNGZkZjhiNTM2OTg2ZjJlOGQxMzJjMzM2ODQwMmI0ZDFkNTJkZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKQEAgLTMyLDcg
KzMyLDcgQEAgY2xhc3MgUmVuZGVyU1ZHQmxvY2sgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFJlY3QgdmlzdWFsT3ZlcmZsb3dSZWN0KCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICBTVkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRvU1ZHR3JhcGhpY3NFbGVtZW50KG5vZGVGb3JOb25Bbm9u
eW1vdXMoKSk7IH0KKyAgICBTVkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4obm9kZUZvck5vbkFub255
bW91cygpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyU1ZHQmxvY2soU1ZHR3JhcGhpY3NF
bGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwCmluZGV4IDNhMTkyYTE2
Y2I5ODU1M2FjZDUwMDRkOTUyZjNkOWNiMTI0ZDlhZTEuLmUxMTQ2NGZlZTIwNTk2OWI2Y2Q4YTc3
NDE1MzZjNzU0NTIyYTAyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5jcHAKQEAgLTY3LDggKzY3LDggQEAgdm9pZCBS
ZW5kZXJTVkdHcmFkaWVudFN0b3A6OmxheW91dCgpCiAKIFNWR0dyYWRpZW50RWxlbWVudCogUmVu
ZGVyU1ZHR3JhZGllbnRTdG9wOjpncmFkaWVudEVsZW1lbnQoKQogewotICAgIGlmIChlbGVtZW50
KCkucGFyZW50RWxlbWVudCgpICYmIGlzU1ZHR3JhZGllbnRFbGVtZW50KCplbGVtZW50KCkucGFy
ZW50RWxlbWVudCgpKSkKLSAgICAgICAgcmV0dXJuICZ0b1NWR0dyYWRpZW50RWxlbWVudCgqZWxl
bWVudCgpLnBhcmVudEVsZW1lbnQoKSk7CisgICAgaWYgKGVsZW1lbnQoKS5wYXJlbnRFbGVtZW50
KCkgJiYgaXM8U1ZHR3JhZGllbnRFbGVtZW50PigqZWxlbWVudCgpLnBhcmVudEVsZW1lbnQoKSkp
CisgICAgICAgIHJldHVybiAmZG93bmNhc3Q8U1ZHR3JhZGllbnRFbGVtZW50PigqZWxlbWVudCgp
LnBhcmVudEVsZW1lbnQoKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCmluZGV4IDQxODM5ZGZhODIy
MjJiYmE4MjdhYTQyNDgwZjhjZTIwODM4NjA0MWMuLmU1ZGExNDVhZDBkMWIxYWRiYTdkYmZmM2Nh
NWZhODEyMjQ0NDk4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmUuaApAQCAtMzAsNyArMzAsNyBAQCBjbGFzcyBSZW5kZXJTVkdJbmxpbmUgOiBw
dWJsaWMgUmVuZGVySW5saW5lIHsKIHB1YmxpYzoKICAgICBSZW5kZXJTVkdJbmxpbmUoU1ZHR3Jh
cGhpY3NFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwogCi0gICAgU1ZHR3JhcGhpY3NF
bGVtZW50JiBncmFwaGljc0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0b1NWR0dyYXBoaWNzRWxl
bWVudChub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CisgICAgU1ZHR3JhcGhpY3NFbGVtZW50JiBn
cmFwaGljc0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdHcmFwaGljc0VsZW1l
bnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1l
bnQoKSBjb25zdCA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCBhMDM5YzNiNGZkYTE1
ZjdhZGYwYmM3ZDJkYzE5ZDU4ZWI2ZTU3ODVjLi4zMDJiYmY5ZmViM2E4MjIxNWE4Y2U4NzE1MjA0
MTgxZmRiNzRjODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGJvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpwYXRoT25seUNsaXBwaW5nKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYg
KCFjaGlsZE5vZGUtPmlzU1ZHRWxlbWVudCgpIHx8ICFkb3duY2FzdDxTVkdFbGVtZW50PigqY2hp
bGROb2RlKS5pc1NWR0dyYXBoaWNzRWxlbWVudCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIFNWR0dyYXBoaWNzRWxlbWVudCYgc3R5bGVkID0gdG9TVkdHcmFwaGljc0VsZW1lbnQo
KmNoaWxkTm9kZSk7CisgICAgICAgIFNWR0dyYXBoaWNzRWxlbWVudCYgc3R5bGVkID0gZG93bmNh
c3Q8U1ZHR3JhcGhpY3NFbGVtZW50PigqY2hpbGROb2RlKTsKICAgICAgICAgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgICAgIGlmIChzdHlsZS5kaXNw
bGF5KCkgPT0gTk9ORSB8fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKICAgICAgICAg
ICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAKaW5kZXggNmFlNTIxNzMzOWQ0M2E5
YTk2MDVjNjQyMjVlNDYzZGNhYmU3YzE4NC4uMzZlNzQ3ZjdkOTcxNzJhNzYyZWU0MjgwY2U5MjVk
ODVjMjNjN2ZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCBB
ZmZpbmVUcmFuc2Zvcm0gUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OnRyYW5zZm9ybU9uTm9u
U2NhbGluZ1N0cm9rZShSZW5kZXJPYgogICAgIGlmICghb2JqZWN0LT5pc1NWR1NoYXBlKCkpCiAg
ICAgICAgIHJldHVybiByZXNvdXJjZVRyYW5zZm9ybTsKIAotICAgIFNWR0dyYXBoaWNzRWxlbWVu
dCogZWxlbWVudCA9IHRvU1ZHR3JhcGhpY3NFbGVtZW50KG9iamVjdC0+bm9kZSgpKTsKKyAgICBT
VkdHcmFwaGljc0VsZW1lbnQqIGVsZW1lbnQgPSBkb3duY2FzdDxTVkdHcmFwaGljc0VsZW1lbnQ+
KG9iamVjdC0+bm9kZSgpKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gZWxlbWVu
dC0+Z2V0U2NyZWVuQ1RNKFNWR0xvY2F0YWJsZTo6RGlzYWxsb3dTdHlsZVVwZGF0ZSk7CiAgICAg
dHJhbnNmb3JtICo9IHJlc291cmNlVHJhbnNmb3JtOwogICAgIHJldHVybiB0cmFuc2Zvcm07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKaW5kZXggN2Ez
Nzc1MjNhNWQwNjIwOWExMGRhYWI0ODA1OTJiMWRmMjkwZTZjYS4uNWVmNDhiMDMyZmNkZTc0ZTk4
NTZmNGQwOTg2MjNkODc3ZTA0OTI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVy
U1ZHU2hhcGUoU1ZHR3JhcGhpY3NFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIFBhdGgq
LCBib29sKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdTaGFwZSgpOwogCi0gICAgU1ZHR3JhcGhp
Y3NFbGVtZW50JiBncmFwaGljc0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0b1NWR0dyYXBoaWNz
RWxlbWVudChSZW5kZXJTVkdNb2RlbE9iamVjdDo6ZWxlbWVudCgpKTsgfQorICAgIFNWR0dyYXBo
aWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZH
R3JhcGhpY3NFbGVtZW50PihSZW5kZXJTVkdNb2RlbE9iamVjdDo6ZWxlbWVudCgpKTsgfQogCiAg
ICAgdm9pZCBzZXROZWVkc1NoYXBlVXBkYXRlKCkgeyBtX25lZWRzU2hhcGVVcGRhdGUgPSB0cnVl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpIG92ZXJyaWRl
IGZpbmFsIHsgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUgPSB0cnVlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWlu
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJs
ZUNvbnRhaW5lci5oCmluZGV4IGJlYmUzOTQ2OWVjMDVmZjBiZTQ0YzU4YzQ5MWNlZjUyNzZlZGU4
ODEuLmUxZDkwMDdkNzgyYmZjODVhYmNkYmNmODFiNzE0ZTY0MzAxYTMzZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRh
aW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNm
b3JtYWJsZUNvbnRhaW5lci5oCkBAIC0zMCw3ICszMCw3IEBAIGNsYXNzIFNWR0dyYXBoaWNzRWxl
bWVudDsKIGNsYXNzIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIgZmluYWwgOiBwdWJs
aWMgUmVuZGVyU1ZHQ29udGFpbmVyIHsKIHB1YmxpYzoKICAgICBSZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyKFNWR0dyYXBoaWNzRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsK
LSAgICBTVkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCgpIHsgcmV0dXJuIHRvU1ZH
R3JhcGhpY3NFbGVtZW50KFJlbmRlclNWR0NvbnRhaW5lcjo6ZWxlbWVudCgpKTsgfQorICAgIFNW
R0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50KCkgeyByZXR1cm4gZG93bmNhc3Q8U1ZH
R3JhcGhpY3NFbGVtZW50PihSZW5kZXJTVkdDb250YWluZXI6OmVsZW1lbnQoKSk7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBpc1NWR1RyYW5zZm9ybWFibGVDb250YWluZXIoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJl
bnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCAy
NzdkMmIzYTgzY2U1MGY3YWYxY2FkYzhjZGEwYzZhOGFhZWJjOTIxLi5mMzhkMjk2OGVmNzg4MDdk
MzI3Y2EzNzMyYWI2ZjEzMWM4OGQ3NWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIFNW
R1JlbmRlclN1cHBvcnQ6OnVwZGF0ZU1hc2tlZEFuY2VzdG9yU2hvdWxkSXNvbGF0ZUJsZW5kaW5n
KGNvbnN0IFJlbmRlckVsZQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGFu
Y2VzdG9yLT5jb21wdXRlZFN0eWxlKCktPnN2Z1N0eWxlKCkuaGFzTWFza2VyKCkpCi0gICAgICAg
ICAgICB0b1NWR0dyYXBoaWNzRWxlbWVudCgqYW5jZXN0b3IpLnNldFNob3VsZElzb2xhdGVCbGVu
ZGluZyhtYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyk7CisgICAgICAgICAgICBk
b3duY2FzdDxTVkdHcmFwaGljc0VsZW1lbnQ+KCphbmNlc3Rvcikuc2V0U2hvdWxkSXNvbGF0ZUJs
ZW5kaW5nKG1hc2tlZEFuY2VzdG9yU2hvdWxkSXNvbGF0ZUJsZW5kaW5nKTsKIAogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggNDM4NmM4Y2FjMmE3YWQ3MjFmNDFmOWFiYWYyODU3
NzQxZDM2MjNmMS4uZjI1ZTM0OWI5MWE5Y2Q5NGM2OGYxYjA4ZmRjNDYxMmM2MmYwZDYxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1Rl
eHQuY3BwCkBAIC0zNDMsOCArMzQzLDggQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlclNWR1NoYXBlJiBzaGFwZSkKICAgICAgICAgd3Jp
dGVOYW1lVmFsdWVQYWlyKHRzLCAiY3giLCBlbGVtZW50LmN4KCkudmFsdWUobGVuZ3RoQ29udGV4
dCkpOwogICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJjeSIsIGVsZW1lbnQuY3koKS52
YWx1ZShsZW5ndGhDb250ZXh0KSk7CiAgICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywgInIi
LCBlbGVtZW50LnIoKS52YWx1ZShsZW5ndGhDb250ZXh0KSk7Ci0gICAgfSBlbHNlIGlmIChzdmdF
bGVtZW50Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBvbHlnb25UYWcpIHx8IHN2Z0VsZW1lbnQuaGFz
VGFnTmFtZShTVkdOYW1lczo6cG9seWxpbmVUYWcpKSB7Ci0gICAgICAgIGNvbnN0IFNWR1BvbHlF
bGVtZW50JiBlbGVtZW50ID0gdG9TVkdQb2x5RWxlbWVudChzdmdFbGVtZW50KTsKKyAgICB9IGVs
c2UgaWYgKGlzPFNWR1BvbHlFbGVtZW50PihzdmdFbGVtZW50KSkgeworICAgICAgICBjb25zdCBT
VkdQb2x5RWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PFNWR1BvbHlFbGVtZW50PihzdmdFbGVt
ZW50KTsKICAgICAgICAgd3JpdGVOYW1lQW5kUXVvdGVkVmFsdWUodHMsICJwb2ludHMiLCBlbGVt
ZW50LnBvaW50TGlzdCgpLnZhbHVlQXNTdHJpbmcoKSk7CiAgICAgfSBlbHNlIGlmIChpczxTVkdQ
YXRoRWxlbWVudD4oc3ZnRWxlbWVudCkpIHsKICAgICAgICAgY29uc3QgU1ZHUGF0aEVsZW1lbnQm
IGVsZW1lbnQgPSBkb3duY2FzdDxTVkdQYXRoRWxlbWVudD4oc3ZnRWxlbWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCAwZTBjYTJlOGIzOTJkMTJmMWIzZDMzZjQ0MWIyZjBlZmNhNmYzN2Y1Li45ZjUxMjYxMDk5
MTVlMTIxOWJlZjg5YzljYmIyZmM4N2QwYTc2OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEwNSw4ICsxMDUs
OCBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFBhaQogICAgIGJvb2wgaXNvbGF0ZU1hc2tGb3JCbGVu
ZGluZyA9IGZhbHNlOwogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAgICBpZiAoc3Zn
U3R5bGUuaGFzTWFza2VyKCkgJiYgZG93bmNhc3Q8U1ZHRWxlbWVudD4ocmVuZGVyZXIuZWxlbWVu
dCgpKS0+aXNTVkdHcmFwaGljc0VsZW1lbnQoKSkgewotICAgICAgICBTVkdHcmFwaGljc0VsZW1l
bnQmIGdyYXBoaWNzRWxlbWVudCA9IHRvU1ZHR3JhcGhpY3NFbGVtZW50KCpyZW5kZXJlci5lbGVt
ZW50KCkpOworICAgIGlmIChzdmdTdHlsZS5oYXNNYXNrZXIoKSAmJiBpczxTVkdHcmFwaGljc0Vs
ZW1lbnQ+KGRvd25jYXN0PFNWR0VsZW1lbnQ+KHJlbmRlcmVyLmVsZW1lbnQoKSkpKSB7CisgICAg
ICAgIFNWR0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50ID0gZG93bmNhc3Q8U1ZHR3Jh
cGhpY3NFbGVtZW50PigqcmVuZGVyZXIuZWxlbWVudCgpKTsKICAgICAgICAgaXNvbGF0ZU1hc2tG
b3JCbGVuZGluZyA9IGdyYXBoaWNzRWxlbWVudC5zaG91bGRJc29sYXRlQmxlbmRpbmcoKTsKICAg
ICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVzb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2Vz
LmNwcAppbmRleCA1NzA5ODZlYjAxZjI4M2U4NzFjNzFmMWQzYzYxYTg3NjBlM2E1ZmNlLi41Njlk
MmFlYTVhYTA0MTViZjMwMjMzYmQ4YjQxOTZkYmRjYzYyOGUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCkBAIC0xNDMsOCArMTQzLDggQEAgc3Rh
dGljIGlubGluZSBTdHJpbmcgdGFyZ2V0UmVmZXJlbmNlRnJvbVJlc291cmNlKFNWR0VsZW1lbnQm
IGVsZW1lbnQpCiAgICAgU3RyaW5nIHRhcmdldDsKICAgICBpZiAoaXM8U1ZHUGF0dGVybkVsZW1l
bnQ+KGVsZW1lbnQpKQogICAgICAgICB0YXJnZXQgPSBkb3duY2FzdDxTVkdQYXR0ZXJuRWxlbWVu
dD4oZWxlbWVudCkuaHJlZigpOwotICAgIGVsc2UgaWYgKGlzU1ZHR3JhZGllbnRFbGVtZW50KGVs
ZW1lbnQpKQotICAgICAgICB0YXJnZXQgPSB0b1NWR0dyYWRpZW50RWxlbWVudChlbGVtZW50KS5o
cmVmKCk7CisgICAgZWxzZSBpZiAoaXM8U1ZHR3JhZGllbnRFbGVtZW50PihlbGVtZW50KSkKKyAg
ICAgICAgdGFyZ2V0ID0gZG93bmNhc3Q8U1ZHR3JhZGllbnRFbGVtZW50PihlbGVtZW50KS5ocmVm
KCk7CiAgICAgZWxzZSBpZiAoaXM8U1ZHRmlsdGVyRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAg
IHRhcmdldCA9IGRvd25jYXN0PFNWR0ZpbHRlckVsZW1lbnQ+KGVsZW1lbnQpLmhyZWYoKTsKICAg
ICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAppbmRleCAwNjUyYWJjNmUwYjY5ZGZi
MDFlNjA3OGYwMTNhMzYzMzg4YjJjMDY0Li40ZWNmNTJiZmJiNDIyZmM4ZDMwNmQ1Y2FlMjdiNmQ5
ZmM5MDQ3MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKQEAgLTE2MCw4ICsxNjAs
OCBAQCB2b2lkIFNWR0FFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkK
IAogICAgICAgICAgICAgaWYgKHVybFswXSA9PSAnIycpIHsKICAgICAgICAgICAgICAgICBFbGVt
ZW50KiB0YXJnZXRFbGVtZW50ID0gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQodXJsLnN1YnN0
cmluZ1NoYXJpbmdJbXBsKDEpKTsKLSAgICAgICAgICAgICAgICBpZiAodGFyZ2V0RWxlbWVudCAm
JiBpc1NWR1NNSUxFbGVtZW50KCp0YXJnZXRFbGVtZW50KSkgewotICAgICAgICAgICAgICAgICAg
ICB0b1NWR1NNSUxFbGVtZW50KCp0YXJnZXRFbGVtZW50KS5iZWdpbkJ5TGlua0FjdGl2YXRpb24o
KTsKKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0RWxlbWVudCAmJiBpczxTVkdTTUlMRWxlbWVu
dD4oKnRhcmdldEVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGRvd25jYXN0PFNWR1NN
SUxFbGVtZW50PigqdGFyZ2V0RWxlbWVudCkuYmVnaW5CeUxpbmtBY3RpdmF0aW9uKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlRWxlbWVudC5jcHAKaW5kZXggY2QwOWJmM2Q0NDIzNjI0NTBmNWU2Y2NmZTY2YzRjZTA5
YmQ1NWU3Yy4uNjM1NDk2OGUxYTEzNzUyNTczZDIwNjQyMjY5M2YyNDZlMTUxZmQ0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAg
dm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJj
ZW50YWdlLCB1bnNpZ25lZCByZXBlYXQKICAgICBBU1NFUlQobV9mcm9tVHlwZS0+dHlwZSgpID09
IG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOwogICAgIEFTU0VSVChtX3RvVHlwZSk7CiAKLSAgICBT
VkdBbmltYXRlRWxlbWVudCYgcmVzdWx0QW5pbWF0aW9uRWxlbWVudCA9IHRvU1ZHQW5pbWF0ZUVs
ZW1lbnQoKnJlc3VsdEVsZW1lbnQpOworICAgIFNWR0FuaW1hdGVFbGVtZW50JiByZXN1bHRBbmlt
YXRpb25FbGVtZW50ID0gZG93bmNhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQ+KCpyZXN1bHRFbGVtZW50
KTsKICAgICBBU1NFUlQocmVzdWx0QW5pbWF0aW9uRWxlbWVudC5tX2FuaW1hdGVkVHlwZSk7CiAg
ICAgQVNTRVJUKHJlc3VsdEFuaW1hdGlvbkVsZW1lbnQubV9hbmltYXRlZFByb3BlcnR5VHlwZSA9
PSBtX2FuaW1hdGVkUHJvcGVydHlUeXBlKTsKIApAQCAtNDU5LDEyICs0NTksNCBAQCBTVkdBbmlt
YXRlZFR5cGVBbmltYXRvciogU1ZHQW5pbWF0ZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdG9yKCkKICAg
ICByZXR1cm4gbV9hbmltYXRvci5nZXQoKTsKIH0KIAotYm9vbCBpc1NWR0FuaW1hdGVFbGVtZW50
KGNvbnN0IE5vZGUmIG5vZGUpCi17Ci0gICAgcmV0dXJuIG5vZGUuaGFzVGFnTmFtZShTVkdOYW1l
czo6YW5pbWF0ZVRhZykKLSAgICAgICAgfHwgbm9kZS5oYXNUYWdOYW1lKFNWR05hbWVzOjphbmlt
YXRlQ29sb3JUYWcpCi0gICAgICAgIHx8IG5vZGUuaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0
ZVRyYW5zZm9ybVRhZykKLSAgICAgICAgfHwgbm9kZS5oYXNUYWdOYW1lKFNWR05hbWVzOjpzZXRU
YWcpOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCmluZGV4IGI4
NmQ5YjI3ZmMxODY5NDg1NTAyYzE0ZjY5N2ZkNTIwZGQxZGJmOWIuLjY0MWJmZjNjN2EzNWVjNDEw
ZjIyOWMzMjRkZGFkMTdkYjdmYWQ1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxl
bWVudC5oCkBAIC03NCw5ICs3NCwxNCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
VkdBbmltYXRlZFR5cGVBbmltYXRvcj4gbV9hbmltYXRvcjsKIH07CiAKLXZvaWQgaXNTVkdBbmlt
YXRlRWxlbWVudChjb25zdCBTVkdBbmltYXRlRWxlbWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2Fy
eSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgotYm9vbCBpc1NW
R0FuaW1hdGVFbGVtZW50KGNvbnN0IE5vZGUmKTsKLU5PREVfVFlQRV9DQVNUUyhTVkdBbmltYXRl
RWxlbWVudCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oU1ZHQW5pbWF0ZUVsZW1lbnQp
CisgICAgc3RhdGljIGJvb2wgaXNTVkdBbmltYXRlRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBl
bGVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1l
czo6YW5pbWF0ZVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlQ29s
b3JUYWcpCisgICAgICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1h
dGVUcmFuc2Zvcm1UYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1lczo6c2V0VGFnKTsK
KyAgICB9CisgICAgc3RhdGljIGJvb2wgaXNTVkdBbmltYXRlRWxlbWVudChjb25zdCBOb2RlJiBu
b2RlKSB7IHJldHVybiBpczxTVkdFbGVtZW50Pihub2RlKSAmJiBpc1NWR0FuaW1hdGVFbGVtZW50
KGRvd25jYXN0PFNWR0VsZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRpb25FbGVtZW50LmNwcAppbmRleCA1NGFjYzA4NTQ4OWYyY2VlOTVhN2MzMzQxMWVkY2Fk
NWUwZmFhOGI0Li5kMWYzNTg5OTQ1YTNiYjBmMTIxZTg1YTFmMzgzMGI5ZDdjOTMwYmJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCkBAIC01MDgsNyArNTA4
LDcgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpjdXJyZW50VmFsdWVzRm9yVmFsdWVzQW5p
bWF0aW9uKGZsb2F0IHBlcmNlbnQsIGZsb2F0JgogCiAgICAgQ2FsY01vZGUgY2FsY01vZGUgPSB0
aGlzLT5jYWxjTW9kZSgpOwogICAgIGlmIChoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVGFn
KSB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlQ29sb3JUYWcpKSB7Ci0gICAgICAgIEFu
aW1hdGVkUHJvcGVydHlUeXBlIGF0dHJpYnV0ZVR5cGUgPSB0b1NWR0FuaW1hdGVFbGVtZW50KCp0
aGlzKS5kZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KCkpOworICAg
ICAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBhdHRyaWJ1dGVUeXBlID0gZG93bmNhc3Q8U1ZHQW5p
bWF0ZUVsZW1lbnQ+KCp0aGlzKS5kZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRF
bGVtZW50KCkpOwogICAgICAgICAvLyBGYWxsIGJhY2sgdG8gZGlzY3JldGUgYW5pbWF0aW9ucyBm
b3IgU3RyaW5ncy4KICAgICAgICAgaWYgKGF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRCb29sZWFu
CiAgICAgICAgICAgICB8fCBhdHRyaWJ1dGVUeXBlID09IEFuaW1hdGVkRW51bWVyYXRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA3MDY1NWFkZWY5ZjZhNjk1NjYwMjFhMGQzNjhj
MWU4ZTkxMGVkNDJjLi5iMjMxM2U2ZjczMTE3MWM2ZTZjNGEzYTdhNjcwNTEzYTAxN2QzODI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC00NTIsOCArNDUyLDggQEAgY29uc3QgSGFz
aFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiYgU1ZHRWxlbWVudDo6aW5zdGFuY2VzRm9yRWxlbWVu
dCgpIGNvbnN0CiAKIGJvb2wgU1ZHRWxlbWVudDo6Z2V0Qm91bmRpbmdCb3goRmxvYXRSZWN0JiBy
ZWN0LCBTVkdMb2NhdGFibGU6OlN0eWxlVXBkYXRlU3RyYXRlZ3kgc3R5bGVVcGRhdGVTdHJhdGVn
eSkKIHsKLSAgICBpZiAoaXNTVkdHcmFwaGljc0VsZW1lbnQoKSkgewotICAgICAgICByZWN0ID0g
dG9TVkdHcmFwaGljc0VsZW1lbnQoKnRoaXMpLmdldEJCb3goc3R5bGVVcGRhdGVTdHJhdGVneSk7
CisgICAgaWYgKGlzPFNWR0dyYXBoaWNzRWxlbWVudD4oKnRoaXMpKSB7CisgICAgICAgIHJlY3Qg
PSBkb3duY2FzdDxTVkdHcmFwaGljc0VsZW1lbnQ+KCp0aGlzKS5nZXRCQm94KHN0eWxlVXBkYXRl
U3RyYXRlZ3kpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggY2RkYTk5ODVmMzlmMGExMDQzYjY2NWVlN2Mw
NzUyMjdkYzMwNjQ2My4uOWEyZTk2YzhmYzFiZGVjOTFjMmU3MGE5ZDhmMDc1NTlkZjBjMjIzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0yMjEsMTUgKzIyMSw5IEBAIHN0cnVjdCBTVkdB
dHRyaWJ1dGVIYXNoVHJhbnNsYXRvciB7CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYikgeyByZXR1cm4gYS5tYXRjaGVz
KGIpOyB9CiB9OwogCi12b2lkIGlzU1ZHRWxlbWVudChjb25zdCBTVkdFbGVtZW50Jik7IC8vIENh
dGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRp
bWUuCi1pbmxpbmUgYm9vbCBpc1NWR0VsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4g
bm9kZS5pc1NWR0VsZW1lbnQoKTsgfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KLXN0
cnVjdCBOb2RlVHlwZUNhc3RUcmFpdHM8Y29uc3QgU1ZHRWxlbWVudCwgQXJnVHlwZT4gewotICAg
IHN0YXRpYyBib29sIGlzKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIGlzU1ZHRWxlbWVudChub2Rl
KTsgfQotfTsKLQotTk9ERV9UWVBFX0NBU1RTKFNWR0VsZW1lbnQpCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFNWR0VsZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNTVkdFbGVtZW50KGNv
bnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNTVkdFbGVtZW50KCk7IH0KK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogaW5saW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFtZShjb25z
dCBTVkdRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCmluZGV4
IDRmNzc4OTU3Y2ZjYzAxYTk5NzkzMDg5ZWQ2YThjMThlMWZjNDZiNmIuLjBjYjE5ZWZlM2U2MzIx
MzQwYTg2OTA5ZTA3MWJkNDQyMTU4MWM3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAgLTgyLDE3
ICs4MiwxMCBAQCBwcml2YXRlOgogCiB2b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJl
bnQoU1ZHRWxlbWVudCopOwogCi12b2lkIGlzU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzKGNvbnN0IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyYpOyAvLyBD
YXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0
aW1lLgotaW5saW5lIGJvb2wgaXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMo
Y29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc0ZpbHRlckVmZmVj
dCgpOyB9Ci1pbmxpbmUgYm9vbCBpc1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cyhjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzU1ZHRWxlbWVudCgpICYmIGRvd25j
YXN0PFNWR0VsZW1lbnQ+KG5vZGUpLmlzRmlsdGVyRWZmZWN0KCk7IH0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIEFyZ1R5cGU+Ci1zdHJ1Y3QgTm9kZVR5cGVDYXN0VHJhaXRzPGNvbnN0IFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgQXJnVHlwZT4gewotICAgIHN0YXRpYyBib29s
IGlzKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIGlzU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKG5vZGUpOyB9Ci19OwotCi1OT0RFX1RZUEVfQ0FTVFMoU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQotCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKKyAgICBzdGF0aWMgYm9vbCBpc1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBTVkdFbGVtZW50JiBlbGVt
ZW50KSB7IHJldHVybiBlbGVtZW50LmlzRmlsdGVyRWZmZWN0KCk7IH0KKyAgICBzdGF0aWMgYm9v
bCBpc1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBOb2RlJiBub2Rl
KSB7IHJldHVybiBpczxTVkdFbGVtZW50Pihub2RlKSAmJiBpc1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyhkb3duY2FzdDxTVkdFbGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IDQ4YzE2YjUwNDhkNWU0N2Rh
ODlmYTcyMDEyNzZjZmE0ZjQ5YzlmZjEuLjU0M2VlZjM2M2Q4ZGZiMDNiY2JiNjBjMzQ4ZjgwODFj
N2JhMmUwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCkBA
IC0xNjAsOSArMTYwLDQgQEAgVmVjdG9yPEdyYWRpZW50OjpDb2xvclN0b3A+IFNWR0dyYWRpZW50
RWxlbWVudDo6YnVpbGRTdG9wcygpCiAgICAgcmV0dXJuIHN0b3BzOwogfQogCi1ib29sIGlzU1ZH
R3JhZGllbnRFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpCi17Ci0gICAgcmV0dXJuIG5vZGUuaGFz
VGFnTmFtZShTVkdOYW1lczo6cmFkaWFsR3JhZGllbnRUYWcpIHx8IG5vZGUuaGFzVGFnTmFtZShT
VkdOYW1lczo6bGluZWFyR3JhZGllbnRUYWcpOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhZGllbnRFbGVtZW50LmgKaW5kZXggMDYzNGQyNzNmOWQ2YzBiN2E0MDFlMTEwODkzY2U3NTU3
MWIyMTIzNy4uNTMzODA4ZmM4MWJjZjlmYmE0NjdlMDllNDVmYjExNzE0ODFiNmQyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaApAQCAtMTA3LDkgKzEwNywxNiBAQCBw
cml2YXRlOgogICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKLXZvaWQg
aXNTVkdHcmFkaWVudEVsZW1lbnQoY29uc3QgU1ZHR3JhZGllbnRFbGVtZW50Jik7IC8vIENhdGNo
IHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUu
Ci1ib29sIGlzU1ZHR3JhZGllbnRFbGVtZW50KGNvbnN0IE5vZGUmKTsKLU5PREVfVFlQRV9DQVNU
UyhTVkdHcmFkaWVudEVsZW1lbnQpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFNWR0dy
YWRpZW50RWxlbWVudCkKK3N0YXRpYyBib29sIGlzU1ZHR3JhZGllbnRFbGVtZW50KGNvbnN0IFNW
R0VsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShTVkdO
YW1lczo6cmFkaWFsR3JhZGllbnRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1lczo6
bGluZWFyR3JhZGllbnRUYWcpOworfQorc3RhdGljIGJvb2wgaXNTVkdHcmFkaWVudEVsZW1lbnQo
Y29uc3QgTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4gaXM8U1ZHRWxlbWVudD4obm9kZSkgJiYg
aXNTVkdHcmFkaWVudEVsZW1lbnQoZG93bmNhc3Q8U1ZHRWxlbWVudD4obm9kZSkpOworfQorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAppbmRleCAwNjQyNTA0YThjMWM5YTcz
ZmMzZTY5ODFkZjE5MDA0YjcxNDEwMWM3Li40MzNmMzFjMDA5NzNhZDhiOTFlMmI3ZGMxYmQ2MDVi
YWFiOWM4ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCkBAIC04
MiwxMCArODIsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkSXNvbGF0ZUJsZW5kaW5n
OwogfTsKIAotdm9pZCBpc1NWR0dyYXBoaWNzRWxlbWVudChjb25zdCBTVkdHcmFwaGljc0VsZW1l
bnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0
IGNvbXBpbGUgdGltZS4KLWlubGluZSBib29sIGlzU1ZHR3JhcGhpY3NFbGVtZW50KGNvbnN0IFNW
R0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNTVkdHcmFwaGljc0VsZW1lbnQo
KTsgfQotaW5saW5lIGJvb2wgaXNTVkdHcmFwaGljc0VsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkg
eyByZXR1cm4gbm9kZS5pc1NWR0VsZW1lbnQoKSAmJiBkb3duY2FzdDxTVkdFbGVtZW50Pihub2Rl
KS5pc1NWR0dyYXBoaWNzRWxlbWVudCgpOyB9Ci1OT0RFX1RZUEVfQ0FTVFMoU1ZHR3JhcGhpY3NF
bGVtZW50KQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihTVkdHcmFwaGljc0VsZW1lbnQp
CisgICAgc3RhdGljIGJvb2wgaXNTVkdHcmFwaGljc0VsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYg
ZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1NWR0dyYXBoaWNzRWxlbWVudCgpOyB9CisgICAg
c3RhdGljIGJvb2wgaXNTVkdHcmFwaGljc0VsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1
cm4gaXM8U1ZHRWxlbWVudD4obm9kZSkgJiYgaXNTVkdHcmFwaGljc0VsZW1lbnQoZG93bmNhc3Q8
U1ZHRWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50LmNwcAppbmRleCAyNTEzNDU2ZDUxMmQyMThmNmZkNDliM2UyZjUyZjUw
ZGU5ZWI5ZjgzLi5kYzRmMmIyMzIyYzE3ODRjZWIyYzc5MDdlZTc0NDRkZTI3YzI5MDhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcApAQCAt
MTczLDggKzE3Myw4IEBAIGJvb2wgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Ojpjb2xsZWN0R3Jh
ZGllbnRBdHRyaWJ1dGVzKExpbmVhckdyYWRpZW50QXR0cmlidXRlCiAgICAgd2hpbGUgKHRydWUp
IHsKICAgICAgICAgLy8gUmVzcGVjdCB4bGluazpocmVmLCB0YWtlIGF0dHJpYnV0ZXMgZnJvbSBy
ZWZlcmVuY2VkIGVsZW1lbnQKICAgICAgICAgTm9kZSogcmVmTm9kZSA9IFNWR1VSSVJlZmVyZW5j
ZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoY3VycmVudC0+aHJlZigpLCBkb2N1bWVudCgp
KTsKLSAgICAgICAgaWYgKHJlZk5vZGUgJiYgaXNTVkdHcmFkaWVudEVsZW1lbnQoKnJlZk5vZGUp
KSB7Ci0gICAgICAgICAgICBjdXJyZW50ID0gdG9TVkdHcmFkaWVudEVsZW1lbnQocmVmTm9kZSk7
CisgICAgICAgIGlmIChyZWZOb2RlICYmIGlzPFNWR0dyYWRpZW50RWxlbWVudD4oKnJlZk5vZGUp
KSB7CisgICAgICAgICAgICBjdXJyZW50ID0gZG93bmNhc3Q8U1ZHR3JhZGllbnRFbGVtZW50Pihy
ZWZOb2RlKTsKIAogICAgICAgICAgICAgLy8gQ3ljbGUgZGV0ZWN0aW9uCiAgICAgICAgICAgICBp
ZiAocHJvY2Vzc2VkR3JhZGllbnRzLmNvbnRhaW5zKGN1cnJlbnQpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TG9jYXRhYmxlLmNwcAppbmRleCBhZjE3MTExMmIwNDM2ZjdhZDhlYmZmODU3NjNkZWZiYTU3MDll
MDEwLi5mZmM0YjZjYTYyZmI1ZDc2ZTJmYmNiY2MyNmNjYjhkYTUwNjc1MzE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcApAQCAtMTAxLDggKzEwMSw4IEBAIEFmZmluZVRyYW5zZm9y
bSBTVkdMb2NhdGFibGU6OmdldFRyYW5zZm9ybVRvRWxlbWVudChTVkdFbGVtZW50KiB0YXJnZXQs
IEV4Y2VwdGlvCiB7CiAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IGdldENUTShzdHlsZVVwZGF0
ZVN0cmF0ZWd5KTsKIAotICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc1NWR0dyYXBoaWNzRWxl
bWVudCgpKSB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0YXJnZXRDVE0gPSB0b1NWR0dyYXBo
aWNzRWxlbWVudCgqdGFyZ2V0KS5nZXRDVE0oc3R5bGVVcGRhdGVTdHJhdGVneSk7CisgICAgaWYg
KHRhcmdldCAmJiBpczxTVkdHcmFwaGljc0VsZW1lbnQ+KHRhcmdldCkpIHsKKyAgICAgICAgQWZm
aW5lVHJhbnNmb3JtIHRhcmdldENUTSA9IGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4oKnRh
cmdldCkuZ2V0Q1RNKHN0eWxlVXBkYXRlU3RyYXRlZ3kpOwogICAgICAgICBpZiAoIXRhcmdldENU
TS5pc0ludmVydGlibGUoKSkgewogICAgICAgICAgICAgZWMgPSBTVkdFeGNlcHRpb246OlNWR19N
QVRSSVhfTk9UX0lOVkVSVEFCTEU7CiAgICAgICAgICAgICByZXR1cm4gY3RtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKaW5kZXggMTEyYzIwZjAwNzAwMWI4ZWFkMWQ3MTQyYmJm
NjQwNzJhMGQzMWEzOC4uNDg0ZGY4OTc5MzdjM2M2ZGQxYWU0OTc1ZWM3M2JlYmRhNWZlNmFiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAg
dm9pZCBTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9uaXplUG9pbnRzKFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogewogICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7
Ci0gICAgU1ZHUG9seUVsZW1lbnQmIG93bmVyVHlwZSA9IHRvU1ZHUG9seUVsZW1lbnQoKmNvbnRl
eHRFbGVtZW50KTsKKyAgICBTVkdQb2x5RWxlbWVudCYgb3duZXJUeXBlID0gZG93bmNhc3Q8U1ZH
UG9seUVsZW1lbnQ+KCpjb250ZXh0RWxlbWVudCk7CiAgICAgaWYgKCFvd25lclR5cGUubV9wb2lu
dHMuc2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVybjsKICAgICBvd25lclR5cGUubV9w
b2ludHMuc3luY2hyb25pemUoJm93bmVyVHlwZSwgcG9pbnRzUHJvcGVydHlJbmZvKCktPmF0dHJp
YnV0ZU5hbWUsIG93bmVyVHlwZS5tX3BvaW50cy52YWx1ZS52YWx1ZUFzU3RyaW5nKCkpOwpAQCAt
MTQxLDcgKzE0MSw3IEBAIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9uaXplUG9pbnRzKFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5
PiBTVkdQb2x5RWxlbWVudDo6bG9va3VwT3JDcmVhdGVQb2ludHNXcmFwcGVyKFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50KQogewogICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7Ci0gICAgU1ZH
UG9seUVsZW1lbnQmIG93bmVyVHlwZSA9IHRvU1ZHUG9seUVsZW1lbnQoKmNvbnRleHRFbGVtZW50
KTsKKyAgICBTVkdQb2x5RWxlbWVudCYgb3duZXJUeXBlID0gZG93bmNhc3Q8U1ZHUG9seUVsZW1l
bnQ+KCpjb250ZXh0RWxlbWVudCk7CiAgICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxv
b2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdQb2x5RWxlbWVudCwgU1ZHQW5pbWF0ZWRQb2ludExpc3Qs
IFNWR1BvaW50TGlzdD4KICAgICAgICAgKCZvd25lclR5cGUsIHBvaW50c1Byb3BlcnR5SW5mbygp
LCBvd25lclR5cGUubV9wb2ludHMudmFsdWUpOwogfQpAQCAtMTU4LDkgKzE1OCw0IEBAIFNWR0xp
c3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiogU1ZHUG9seUVsZW1lbnQ6OmFuaW1hdGVk
UG9pbnRzKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxT
VkdQb2ludExpc3Q+Kj4oc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdBbmltYXRlZFBvaW50TGlzdD4o
bG9va3VwT3JDcmVhdGVQb2ludHNXcmFwcGVyKHRoaXMpKS0+YW5pbVZhbCgpKTsKIH0KIAotYm9v
bCBpc1NWR1BvbHlFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpCi17Ci0gICAgcmV0dXJuIG5vZGUu
aGFzVGFnTmFtZShTVkdOYW1lczo6cG9seWdvblRhZykgfHwgbm9kZS5oYXNUYWdOYW1lKFNWR05h
bWVzOjpwb2x5bGluZVRhZyk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQb2x5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgK
aW5kZXggZDUyZWQwMjVmMjQ3MGEzNTE3ZTA2MzAwNDE3ZWMzZTBhNTZkYjllOC4uMDA5YWU2NjJi
MTA5N2E0Mzc4MWE4MGIxNTlkOTE0NTI4N2Y3NzIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlF
bGVtZW50LmgKQEAgLTYyLDkgKzYyLDEwIEBAIHByb3RlY3RlZDoKICAgICBtdXRhYmxlIFNWR1N5
bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdQb2ludExpc3Q+IG1fcG9pbnRzOwogfTsK
IAotdm9pZCBpc1NWR1BvbHlFbGVtZW50KGNvbnN0IFNWR1BvbHlFbGVtZW50Jik7IC8vIENhdGNo
IHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUu
Ci1ib29sIGlzU1ZHUG9seUVsZW1lbnQoY29uc3QgTm9kZSYpOwotTk9ERV9UWVBFX0NBU1RTKFNW
R1BvbHlFbGVtZW50KQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihTVkdQb2x5RWxlbWVu
dCkKKyAgICBzdGF0aWMgYm9vbCBpc1NWR1BvbHlFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGVs
ZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1lczo6cG9seWdvblRhZykg
fHwgZWxlbWVudC5oYXNUYWdOYW1lKFNWR05hbWVzOjpwb2x5bGluZVRhZyk7IH0KKyAgICBzdGF0
aWMgYm9vbCBpc1NWR1BvbHlFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFNW
R0VsZW1lbnQ+KG5vZGUpICYmIGlzU1ZHUG9seUVsZW1lbnQoZG93bmNhc3Q8U1ZHRWxlbWVudD4o
bm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50LmNwcAppbmRleCA1NWI5NjRiN2YyMTQzZmVkNTE4NTM4MWEwOWM5NmVhN2Y5MTg5N2YyLi5i
MWY1OTZmODdjYzZiNTU4ZWQxNzMwNzYzMDU0NGU1ZTFmYmFlOTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcApAQCAtMTkxLDggKzE5MSw4
IEBAIGJvb2wgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Ojpjb2xsZWN0R3JhZGllbnRBdHRyaWJ1
dGVzKFJhZGlhbEdyYWRpZW50QXR0cmlidXRlCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAg
Ly8gUmVzcGVjdCB4bGluazpocmVmLCB0YWtlIGF0dHJpYnV0ZXMgZnJvbSByZWZlcmVuY2VkIGVs
ZW1lbnQKICAgICAgICAgTm9kZSogcmVmTm9kZSA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxl
bWVudEZyb21JUklTdHJpbmcoY3VycmVudC0+aHJlZigpLCBkb2N1bWVudCgpKTsKLSAgICAgICAg
aWYgKHJlZk5vZGUgJiYgaXNTVkdHcmFkaWVudEVsZW1lbnQoKnJlZk5vZGUpKSB7Ci0gICAgICAg
ICAgICBjdXJyZW50ID0gdG9TVkdHcmFkaWVudEVsZW1lbnQocmVmTm9kZSk7CisgICAgICAgIGlm
IChyZWZOb2RlICYmIGlzPFNWR0dyYWRpZW50RWxlbWVudD4oKnJlZk5vZGUpKSB7CisgICAgICAg
ICAgICBjdXJyZW50ID0gZG93bmNhc3Q8U1ZHR3JhZGllbnRFbGVtZW50PihyZWZOb2RlKTsKIAog
ICAgICAgICAgICAgLy8gQ3ljbGUgZGV0ZWN0aW9uCiAgICAgICAgICAgICBpZiAocHJvY2Vzc2Vk
R3JhZGllbnRzLmNvbnRhaW5zKGN1cnJlbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dENvbnRlbnRFbGVtZW50LmNwcAppbmRleCAyYzRhMzE2MmYwMzA0NTgzYmVkZWMwYzcwYWM4ZDBh
MWY5YTU3ZGMyLi43MTc0ODhhNTQ0NzJlYWFhMzdmMmM2ZmZkOGQ2NjY4Mzc2NzUzNWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcApAQCAtNzUsNyAr
NzUsNyBAQCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR1RleHRDb250ZW50RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bQogdm9pZCBTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OnN5bmNocm9uaXplVGV4dExlbmd0aChTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKIHsK
ICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwotICAgIFNWR1RleHRDb250ZW50RWxlbWVudCYg
b3duZXJUeXBlID0gdG9TVkdUZXh0Q29udGVudEVsZW1lbnQoKmNvbnRleHRFbGVtZW50KTsKKyAg
ICBTVkdUZXh0Q29udGVudEVsZW1lbnQmIG93bmVyVHlwZSA9IGRvd25jYXN0PFNWR1RleHRDb250
ZW50RWxlbWVudD4oKmNvbnRleHRFbGVtZW50KTsKICAgICBpZiAoIW93bmVyVHlwZS5tX3RleHRM
ZW5ndGguc2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVybjsKICAgICBBdG9taWNTdHJp
bmcgdmFsdWUoU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoPjo6dG9TdHJpbmcob3duZXJUeXBl
Lm1fc3BlY2lmaWVkVGV4dExlbmd0aCkpOwpAQCAtODUsNyArODUsNyBAQCB2b2lkIFNWR1RleHRD
b250ZW50RWxlbWVudDo6c3luY2hyb25pemVUZXh0TGVuZ3RoKFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50KQogUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlVGV4dExlbmd0aFdyYXBwZXIoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICBTVkdUZXh0Q29u
dGVudEVsZW1lbnQmIG93bmVyVHlwZSA9IHRvU1ZHVGV4dENvbnRlbnRFbGVtZW50KCpjb250ZXh0
RWxlbWVudCk7CisgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50JiBvd25lclR5cGUgPSBkb3duY2Fz
dDxTVkdUZXh0Q29udGVudEVsZW1lbnQ+KCpjb250ZXh0RWxlbWVudCk7CiAgICAgcmV0dXJuIFNW
R0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdUZXh0Q29udGVudEVs
ZW1lbnQsIFNWR0FuaW1hdGVkTGVuZ3RoLCBTVkdMZW5ndGg+CiAgICAgICAgICgmb3duZXJUeXBl
LCB0ZXh0TGVuZ3RoUHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS5tX3RleHRMZW5ndGgudmFsdWUp
OwogfQpAQCAtMjk2LDEwICsyOTYsMTAgQEAgU1ZHVGV4dENvbnRlbnRFbGVtZW50KiBTVkdUZXh0
Q29udGVudEVsZW1lbnQ6OmVsZW1lbnRGcm9tUmVuZGVyZXIoUmVuZGVyT2JqZWN0KgogICAgIFNW
R0VsZW1lbnQqIGVsZW1lbnQgPSBkb3duY2FzdDxTVkdFbGVtZW50PihyZW5kZXJlci0+bm9kZSgp
KTsKICAgICBBU1NFUlQoZWxlbWVudCk7CiAKLSAgICBpZiAoIWVsZW1lbnQtPmlzVGV4dENvbnRl
bnQoKSkKKyAgICBpZiAoIWlzPFNWR1RleHRDb250ZW50RWxlbWVudD4oZWxlbWVudCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHRvU1ZHVGV4dENvbnRlbnRFbGVtZW50
KGVsZW1lbnQpOworICAgIHJldHVybiBkb3duY2FzdDxTVkdUZXh0Q29udGVudEVsZW1lbnQ+KGVs
ZW1lbnQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50
LmgKaW5kZXggZmUzNmUxZGZmZDRjMzNmZTBjZjYxZjRjZGY1MjNlNzM5ZWZkMGVkNy4uYTU5MmFi
ZTcyNTNjZTljNzAzY2JlNjEwOGQzZjYwN2RiMDNmOTVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaApAQCAtMTE5LDEwICsxMTksMTAgQEAgcHJpdmF0ZToK
ICAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCi12b2lkIGlzU1ZHVGV4
dENvbnRlbnRFbGVtZW50KGNvbnN0IFNWR1RleHRDb250ZW50RWxlbWVudCYpOyAvLyBDYXRjaCB1
bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgot
aW5saW5lIGJvb2wgaXNTVkdUZXh0Q29udGVudEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZWxl
bWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1RleHRDb250ZW50KCk7IH0KLWlubGluZSBib29sIGlz
U1ZHVGV4dENvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNT
VkdFbGVtZW50KCkgJiYgZG93bmNhc3Q8U1ZHRWxlbWVudD4obm9kZSkuaXNUZXh0Q29udGVudCgp
OyB9Ci1OT0RFX1RZUEVfQ0FTVFMoU1ZHVGV4dENvbnRlbnRFbGVtZW50KQorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihTVkdUZXh0Q29udGVudEVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wg
aXNTVkdUZXh0Q29udGVudEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1
cm4gZWxlbWVudC5pc1RleHRDb250ZW50KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1NWR1RleHRD
b250ZW50RWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxTVkdFbGVtZW50Pihu
b2RlKSAmJiBpc1NWR1RleHRDb250ZW50RWxlbWVudChkb3duY2FzdDxTVkdFbGVtZW50Pihub2Rl
KSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggYTM5NDQwNTQ5NWI1
MmVhNTVmNDdkZjA2NWI4MWJmODE3ODMwMDlmOC4uODQ5ZGY4OWRlZTFiNGE0YmM1ODhjYTMwYmQ0
ODdiMjNiMWM3MDM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtNTQz
LDE2ICs1NDMsMTYgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojp0b0NsaXBQYXRoKFBhdGgmIHBhdGgp
CiB7CiAgICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsKIAotICAgIE5vZGUqIG5vZGUgPSBtX3Rh
cmdldEVsZW1lbnRJbnN0YW5jZSA/IG1fdGFyZ2V0RWxlbWVudEluc3RhbmNlLT5zaGFkb3dUcmVl
RWxlbWVudCgpIDogbnVsbHB0cjsKLSAgICBpZiAoIW5vZGUpCisgICAgU1ZHRWxlbWVudCogZWxl
bWVudCA9IG1fdGFyZ2V0RWxlbWVudEluc3RhbmNlID8gbV90YXJnZXRFbGVtZW50SW5zdGFuY2Ut
PnNoYWRvd1RyZWVFbGVtZW50KCkgOiBudWxscHRyOworICAgIGlmICghZWxlbWVudCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKG5vZGUtPmlzU1ZHRWxlbWVudCgpICYmIGRvd25jYXN0PFNW
R0VsZW1lbnQ+KCpub2RlKS5pc1NWR0dyYXBoaWNzRWxlbWVudCgpKSB7Ci0gICAgICAgIGlmICgh
aXNEaXJlY3RSZWZlcmVuY2UoZG93bmNhc3Q8U1ZHRWxlbWVudD4oKm5vZGUpKSkgeworICAgIGlm
IChpczxTVkdHcmFwaGljc0VsZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAgIGlmICghaXNEaXJl
Y3RSZWZlcmVuY2UoKmVsZW1lbnQpKSB7CiAgICAgICAgICAgICAvLyBTcGVjOiBJbmRpcmVjdCBy
ZWZlcmVuY2VzIGFyZSBhbiBlcnJvciAoMTQuMy41KQogICAgICAgICAgICAgZG9jdW1lbnQoKS5h
Y2Nlc3NTVkdFeHRlbnNpb25zKCkucmVwb3J0RXJyb3IoIk5vdCBhbGxvd2VkIHRvIHVzZSBpbmRp
cmVjdCByZWZlcmVuY2UgaW4gPGNsaXAtcGF0aD4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHRvU1ZHR3JhcGhpY3NFbGVtZW50KCpub2RlKS50b0NsaXBQYXRoKHBhdGgpOworICAg
ICAgICAgICAgZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50PigqZWxlbWVudCkudG9DbGlwUGF0
aChwYXRoKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBdm9pZCBtYW51YWwgcmVzb2x1dGlvbiBv
ZiB4L3kgaGVyZS4gSXRzIHBvdGVudGlhbGx5IGhhcm1mdWwuCiAgICAgICAgICAgICBTVkdMZW5n
dGhDb250ZXh0IGxlbmd0aENvbnRleHQodGhpcyk7CiAgICAgICAgICAgICBwYXRoLnRyYW5zbGF0
ZShGbG9hdFNpemUoeCgpLnZhbHVlKGxlbmd0aENvbnRleHQpLCB5KCkudmFsdWUobGVuZ3RoQ29u
dGV4dCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01J
TEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVu
dC5jcHAKaW5kZXggZjBhMDg1MTI2NzZjMzFmNjEzNTQwYjFkMTFhNTU3YTgxMGMwMWRiNy4uMTA0
OWU2YjQxOTZmZTI4MGRmNzRkZGMwNDVhNWE0OTU5MDI2NjViYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTE2OCw3ICsxNjgsNyBA
QCB2b2lkIFNWR1NNSUxFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgICAgIHRh
cmdldCA9IHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRv
RWxlbWVudChwYXJlbnROb2RlKCkpIDogbnVsbHB0cjsKICAgICBlbHNlCiAgICAgICAgIHRhcmdl
dCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoaHJlZiwgZG9j
dW1lbnQoKSwgJmlkKTsKLSAgICBTVkdFbGVtZW50KiBzdmdUYXJnZXQgPSB0YXJnZXQgJiYgdGFy
Z2V0LT5pc1NWR0VsZW1lbnQoKSA/IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHRhcmdldCkgOiBudWxs
cHRyOworICAgIFNWR0VsZW1lbnQqIHN2Z1RhcmdldCA9IHRhcmdldCAmJiBpczxTVkdFbGVtZW50
Pih0YXJnZXQpID8gZG93bmNhc3Q8U1ZHRWxlbWVudD4odGFyZ2V0KSA6IG51bGxwdHI7CiAKICAg
ICBpZiAoc3ZnVGFyZ2V0ICYmICFzdmdUYXJnZXQtPmluRG9jdW1lbnQoKSkKICAgICAgICAgc3Zn
VGFyZ2V0ID0gbnVsbHB0cjsKQEAgLTUzNiwxMSArNTM2LDExIEBAIHZvaWQgU1ZHU01JTEVsZW1l
bnQ6OmNvbm5lY3RDb25kaXRpb25zKCkKICAgICAgICAgICAgIGNvbmRpdGlvbi5tX3N5bmNiYXNl
ID0gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQoY29uZGl0aW9uLm1fYmFzZUlEKTsKICAgICAg
ICAgICAgIGlmICghY29uZGl0aW9uLm1fc3luY2Jhc2UpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBpZiAoIWlzU1ZHU01JTEVsZW1lbnQoKmNvbmRpdGlvbi5tX3N5bmNi
YXNlKSkgeworICAgICAgICAgICAgaWYgKCFpczxTVkdTTUlMRWxlbWVudD4oKmNvbmRpdGlvbi5t
X3N5bmNiYXNlKSkgewogICAgICAgICAgICAgICAgIGNvbmRpdGlvbi5tX3N5bmNiYXNlID0gbnVs
bHB0cjsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHRvU1ZHU01JTEVsZW1lbnQoKmNvbmRpdGlvbi5tX3N5bmNiYXNlKS5hZGRUaW1lRGVwZW5k
ZW50KHRoaXMpOworICAgICAgICAgICAgZG93bmNhc3Q8U1ZHU01JTEVsZW1lbnQ+KCpjb25kaXRp
b24ubV9zeW5jYmFzZSkuYWRkVGltZURlcGVuZGVudCh0aGlzKTsKICAgICAgICAgfQogICAgIH0K
IH0KQEAgLTU2OCw3ICs1NjgsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpkaXNjb25uZWN0Q29u
ZGl0aW9ucygpCiAgICAgICAgICAgICBjb25kaXRpb24ubV9ldmVudExpc3RlbmVyID0gbnVsbHB0
cjsKICAgICAgICAgfSBlbHNlIGlmIChjb25kaXRpb24ubV90eXBlID09IENvbmRpdGlvbjo6U3lu
Y2Jhc2UpIHsKICAgICAgICAgICAgIGlmIChjb25kaXRpb24ubV9zeW5jYmFzZSkKLSAgICAgICAg
ICAgICAgICB0b1NWR1NNSUxFbGVtZW50KGNvbmRpdGlvbi5tX3N5bmNiYXNlLmdldCgpKS0+cmVt
b3ZlVGltZURlcGVuZGVudCh0aGlzKTsKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxTVkdTTUlM
RWxlbWVudD4oY29uZGl0aW9uLm1fc3luY2Jhc2UuZ2V0KCkpLT5yZW1vdmVUaW1lRGVwZW5kZW50
KHRoaXMpOwogICAgICAgICB9CiAgICAgICAgIGNvbmRpdGlvbi5tX3N5bmNiYXNlID0gbnVsbHB0
cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NN
SUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50
LmgKaW5kZXggNjM3YTA1NjhkNTdiNDgzNjdhMzU2NTBiNWE3NjY1MWQ0MzhlYTUyNC4uNGQ4YzMx
YjY3Njg1Y2E4MzE5NDJlM2E1YmI0ZDAzNjY2YmRjYWM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaApAQCAtMjM3LDE3ICsyMzcsMTAgQEAgcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29uZGl0aW9uRXZlbnRMaXN0ZW5lcjsKIH07CiAKLXZv
aWQgaXNTVkdTTUlMRWxlbWVudChjb25zdCBTVkdTTUlMRWxlbWVudCYpOyAvLyBDYXRjaCB1bm5l
Y2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgotaW5s
aW5lIGJvb2wgaXNTVkdTTUlMRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KSB7IHJl
dHVybiBlbGVtZW50LmlzU01JTEVsZW1lbnQoKTsgfQotaW5saW5lIGJvb2wgaXNTVkdTTUlMRWxl
bWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzU1ZHRWxlbWVudCgpICYmIGRv
d25jYXN0PFNWR0VsZW1lbnQ+KG5vZGUpLmlzU01JTEVsZW1lbnQoKTsgfQotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgQXJnVHlwZT4KLXN0cnVjdCBOb2RlVHlwZUNhc3RUcmFpdHM8Y29uc3QgU1ZHU01J
TEVsZW1lbnQsIEFyZ1R5cGU+IHsKLSAgICBzdGF0aWMgYm9vbCBpcyhBcmdUeXBlJiBub2RlKSB7
IHJldHVybiBpc1NWR1NNSUxFbGVtZW50KG5vZGUpOyB9Ci19OwotCi0KLU5PREVfVFlQRV9DQVNU
UyhTVkdTTUlMRWxlbWVudCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oU1ZHU01JTEVs
ZW1lbnQpCisgICAgc3RhdGljIGJvb2wgaXNTVkdTTUlMRWxlbWVudChjb25zdCBTVkdFbGVtZW50
JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzU01JTEVsZW1lbnQoKTsgfQorICAgIHN0YXRp
YyBib29sIGlzU1ZHU01JTEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8U1ZH
RWxlbWVudD4obm9kZSkgJiYgaXNTVkdTTUlMRWxlbWVudChkb3duY2FzdDxTVkdFbGVtZW50Pihu
b2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>